<?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=SteveL</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=SteveL"/>
	<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Special:Contributions/SteveL"/>
	<updated>2026-04-30T11:52:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Location_Settings&amp;diff=18373</id>
		<title>Location Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Location_Settings&amp;diff=18373"/>
		<updated>2016-04-11T20:07:15Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* &amp;quot;ambient_light&amp;quot; */ + bug using 0 0 0 for 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 it&#039;s 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;8 8 8&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 the portal you want as a boundary.  &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 an info_locationseparator touching the portal (more like 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>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Objectives&amp;diff=18309</id>
		<title>Objectives</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Objectives&amp;diff=18309"/>
		<updated>2015-11-23T17:46:23Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Notes on using INVALID status */ typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Original_Reference|Ishtvan|4121}} &#039;&#039;additions by greebo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 This article covers details of the objectives system. Note that mappers can use &lt;br /&gt;
 DarkRadiant&#039;s [[Objectives Editor]] to make it easier to create objectives.&lt;br /&gt;
&lt;br /&gt;
The objectives system exists to determine when the player has completed the mission. At the highest level, a mission consists of a list of objectives to be completed and boolean logic to determine when the mission has succeeded or failed based on which of the objectives are complete. At the objective level, an objective consists of individual components and boolean logic to determine when the objective is completed or failed. At the component level, each component has a type, a specifier, and arguments. These will be explained fully in the components section.&lt;br /&gt;
&lt;br /&gt;
= Mission =&lt;br /&gt;
Objectives are stored by entities named [[target_tdm_addobjectives]]. Your mission can have several of these but typically you will only want one for all your objectives.&lt;br /&gt;
&lt;br /&gt;
By default these entities self-trigger (activates themselves) at mission start. If you need to delay this and activate it later (via any trigger entity that can have a target spawnarg) then add the spawnarg &#039;&#039;wait_for_trigger&#039;&#039; with a value of 1.&lt;br /&gt;
&lt;br /&gt;
When triggered, these entities add objectives to the mission based on their spawnargs.&lt;br /&gt;
&lt;br /&gt;
Spawnargs governing mission level behavior may be entered on any target_addobjectives. Non-empty spawnargs will be overwritten by the most recently triggered target_addobjectives (FM authors may want to do this if they add an objective later on and want to change the mission success logic to include that objective, for example). The following is a list of the mission-level spawnargs and what they mean:&lt;br /&gt;
&lt;br /&gt;
== Success/Failure Logic ==&lt;br /&gt;
By default, all mandatory objectives need to be completed for mission success. However, it&#039;s possible to define a custom success and failure logic string on an objective entity. Be sure to have this addobjectives entity active at map start so that the logic is parsed right at map load.&lt;br /&gt;
&lt;br /&gt;
=== Default Logic ===&lt;br /&gt;
*;&amp;lt;tt&amp;gt;mission_logic_success&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:A string of boolean logic applied to individual objective states to determine if the mission succeeds. AND, OR, NOT and parenthesis are available. The FM author can construct strings using these and the integer index for an objective. For example: &amp;quot;1 OR (NOT(2) AND 3)&amp;quot; would complete the mission if either objective 1 is true, or if 2 is false and 3 is true. By default, a mission succeeds when all mandatory objectives are completed.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;mission_logic_failure&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:Boolean logic applied to individual objective component states to determine if the mission has failed. By default, if any mandatory objective fails, the mission fails.&lt;br /&gt;
&lt;br /&gt;
=== Difficulty Dependent Logic ===&lt;br /&gt;
The above spawnargs apply to all difficulty levels. It&#039;s of course possible to override this default for a given difficulty level, by setting these spawnargs. The index N is referring to the difficulty level number (starting from 0 = Easy):&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;mission_logic_success_diff_N&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:Defines the success logic for the difficulty level N (override the default logic), e.g. &amp;quot;1 AND 2 AND 3&amp;quot;.&lt;br /&gt;
*;&amp;lt;tt&amp;gt;mission_logic_failure_diff_N&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:Defines the failure logic for the difficulty level N (override the default logic). When this condition is fulfilled, the mission has failed.&lt;br /&gt;
&lt;br /&gt;
If specific logic is not specified for a certain difficulty level, the default spawnargs (without _diff_*) will be used.&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Objectives added by the target_addobjectives each have a unique integer index, starting with objective 1, the first objective. The spawnargs associated with an objective are prefixed in the following manner:&lt;br /&gt;
 obj&amp;lt;objective index&amp;gt;_&amp;lt;spawnarg name&amp;gt;&lt;br /&gt;
Example: &#039;&#039;obj3_desc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The spawnargs (minus prefix) and meanings for objective attributes are listed below. Each objective also includes a list of components and their attributes, which will be covered in the next section.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_desc&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:The description of this objective. This is used to display the objective in the GUI - the user will never see the objective number, only this string. The default value is an empty string.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_state&amp;lt;/tt&amp;gt; (int) Defines the state of the objective at map start. &lt;br /&gt;
:&#039;&#039;&#039;Possible Objective States:&#039;&#039;&#039;&lt;br /&gt;
:* 0 = STATE_INCOMPLETE&lt;br /&gt;
:* 1 = STATE_COMPLETE&lt;br /&gt;
:* 2 = STATE_INVALID&lt;br /&gt;
:* 3 = STATE_FAILED&lt;br /&gt;
:Code defaults to 0 = incomplete.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_mandatory&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:Set to 0 for optional objective that doesn&#039;t fail the mission if you fail it. Objective must be completed to complete the mission if 1. Code defaults to 1.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_irreversible&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:Irreversible objectives lock their state once they&#039;re changed to COMPLETE or FAILED. Irreversible components will only change state once and then stay in that state. (Note: There are scriptfunctions to reset irreversible objectives and components if the FM author wants to let them change again for some reason). Code defaults to 0.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_ongoing&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:If true, this objective is not marked as complete and the player is not informed that it&#039;s complete until the end of the mission. Typically used for &amp;quot;do not kill&amp;quot; type objectives, because technically they would be complete right from the beginning, but we don&#039;t want to mark them off or tell the player they&#039;re complete right at the beginning. Could also be used for &amp;quot;have some item with you when you complete the mission.&amp;quot; Code defaults to 0.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_visible&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:Whether the objective appears in the player&#039;s Objectives GUI. Use invalidated and hidden objectives to queue up objectives for later, or hidden but valid objectives as another way of scripting events when the player does a certain thing, since objectives can launch an arbitrary script after they&#039;re completed. Code defaults to 1.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_difficulty&amp;lt;/tt&amp;gt; (integer)&lt;br /&gt;
:Space delimited list of difficulty levels that should include this objective. For example, &amp;quot;2 3&amp;quot; would enable this objective at difficulty levels 2 and 3, but not for other difficulty levels. Default value is empty - the objective applies to all difficulty levels.&lt;br /&gt;
:&#039;&#039;Note:&#039;&#039; When the objective is not active for a given difficutly, it is invalidated and hidden, but it still exists, so the numbering of the next objective should still increase by 1. E.g., objective 5 only appears on hard difficulty, but you still have to call the next objective objective 6, you can&#039;t call it objective 5 only appearing on easy or medium difficulty.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_enabling_objs&amp;lt;/tt&amp;gt; (space-delimited integers) &lt;br /&gt;
:This is a list of objectives which must be completed &#039;&#039;before&#039;&#039; this objective can be completed. For example, we shouldn&#039;t mark &amp;quot;objective complete&amp;quot; for exiting the mission until all the other mission goals have been completed. An example value for this spawnarg would be &amp;quot;4 6&amp;quot; to let this objective depend on objectives #4 and #6.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_script_complete&amp;lt;/tt&amp;gt; (string)&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_script_failed&amp;lt;/tt&amp;gt; (string)&lt;br /&gt;
:Name of a script to call when this objective is completed or failed. For example, this could be used in campaigns to set up optional objectives in one mission that effect other missions. This feature could also be used as a general scripting aide if the author wants to set up the conditions for something happening using a hidden objective.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_target_complete&amp;lt;/tt&amp;gt; (string)&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_target_failed&amp;lt;/tt&amp;gt; (string)&lt;br /&gt;
:Name of a target entity to [[Triggers|trigger]] when this objective is completed or failed, similar to the completion/failure script. Only one entity name is allowed here. If you need to trigger multiple entities on objective state change, use a [[Triggers#trigger_relay|trigger_relay]] entity.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_logic_success&amp;lt;/tt&amp;gt; (string)&lt;br /&gt;
:Boolean logic applied to individual objective component states to determine if the objective is complete. The same boolean logic options are available as in the mission-level logic described above. By default, all of the components must be true to complete the objective. In other words, all components are ANDed together (1 AND 2 AND 3...).&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_logic_failure&amp;lt;/tt&amp;gt; (string)&lt;br /&gt;
:Boolean logic applied to individual objective component states to determine if the objective is failed. By default, if an objective is ongoing, and any opponent becomes false, that objective will fail.&lt;br /&gt;
&lt;br /&gt;
= Objective Components =&lt;br /&gt;
Each objective has an associated list of components and spawnargs defining the attributes of those components. These component spawnargs associated with a given objective are prefixed in the following manner:&lt;br /&gt;
 obj&amp;lt;objective index&amp;gt;_&amp;lt;component index&amp;gt;_&amp;lt;spawnarg name&amp;gt;&lt;br /&gt;
Example: &#039;&#039;obj1_2_state&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the following, the index N defines the objective number and M refers to the component number. Programmers beware that both numbers start from the value 1.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_state&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:Defines the state of the component at map start, which can only be &amp;quot;1&amp;quot; (complete) or &amp;quot;0&amp;quot; (incomplete). Code defaults to 0.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_player_responsible&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:When true, the player must be responsible for the events that satisfy this component. Events the player is not responsible for are not counted. (e.g., the player kills an AI vs. another AI killing an AI). Code defaults to 1.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_not&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:Code defaults to 0. If true, this component is logically NOTed, so when the conditions described by the type and speifiers are not met, the component state is true, and when they are met, it is false.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_irreversible&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:When the component state changes from its initial state, it will stay in its new state regardless of what happens later. (There is a script event to &amp;quot;unlatch&amp;quot; a latched objective component if needed). Code defaults to 0.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_type&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:Defines the type of this objective component. See the section [[#Component_Types|Component Types]] below for detailed information.&lt;br /&gt;
:&#039;&#039;&#039;Possible &#039;Objective Component&#039; Types:&#039;&#039;&#039;&lt;br /&gt;
:* kill (also includes non-living things being destroyed)&lt;br /&gt;
:* ko&lt;br /&gt;
:* ai_find_item (not implemented)&lt;br /&gt;
:* ai_find_body (not implemented)&lt;br /&gt;
:* alert&lt;br /&gt;
:* destroy (inanimate item destroyed (&amp;quot;killed&amp;quot;))&lt;br /&gt;
:* item (picked up or dropped an inventory item)&lt;br /&gt;
:* pickpocket (inventory item acquired from conscious AI)&lt;br /&gt;
:* location (Item A at location B, where &amp;quot;A&amp;quot; is any entity that must have the key &amp;quot;objective_ent&amp;quot; set to &amp;quot;1&amp;quot; on it, and location B is a special entity info_objective_location. Later on we may support using the D3 location system as well)&lt;br /&gt;
:* custom (custom component that is set true/false by a map script)&lt;br /&gt;
:These components are triggered every N milliseconds by a system clock:&lt;br /&gt;
:* custom_clocked (runs a custom map script that should check something and set the objective)&lt;br /&gt;
:* info_location (Item A at info_location area B) - TODO: more information needed&lt;br /&gt;
:* distance (distance between the origin of entity X and that of entity Y)&lt;br /&gt;
&lt;br /&gt;
Any component can have up to two specifiers, each of which can carry a value. Here, K refers to the number of the specifier, e.g. (&amp;quot;obj2_1_spec4&amp;quot; &amp;quot;name&amp;quot;).&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_specK&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:&#039;&#039;&#039;Specification Methods:&#039;&#039;&#039;&lt;br /&gt;
:Specification methods determine what the objective component is looking for. Does it look at how many AI of a specific team you&#039;ve KO&#039;d, how many humans, how many overall, or whether you&#039;ve KO&#039;d an AI with a certain name? Each objective component can have up to two of the following specifiers (Not all components can take two specifiers, and not all specifiers make sense for all component types, future documentation will cover that). See the section [[#Specifiers|Specifiers]] below for a detailed description.&lt;br /&gt;
:&#039;&#039;&#039;The following apply to both AIs and items:&#039;&#039;&#039;&lt;br /&gt;
:* none&lt;br /&gt;
:* name (name of entity)&lt;br /&gt;
:* overall (overall count of something: kills, loot, kos, etc)&lt;br /&gt;
:* group (inventory group)&lt;br /&gt;
:* classname (soft/scripting classname)&lt;br /&gt;
:* spawnclass (hard / SDK classname, e.g. &amp;quot;idPlayer&amp;quot;)&lt;br /&gt;
:&#039;&#039;&#039;The following specification methods apply only to AI:&#039;&#039;&#039;&lt;br /&gt;
:* ai_type (human, beast, undead, bot, etc)&lt;br /&gt;
:* ai_team (mapper defined team of the AI)&lt;br /&gt;
:* ai_innocence (For distinguishing noncombatants)&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_spec_valK&amp;lt;/tt&amp;gt;&lt;br /&gt;
:Value that the Kth specifier should match in order to count towards this component. (E.g., an entity name if we specify by name.)&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_args&amp;lt;/tt&amp;gt; (space-delimited string) &lt;br /&gt;
:&#039;&#039;&#039;Integer and String Arguments:&#039;&#039;&#039;&lt;br /&gt;
:A component can have an arbitrary number of int and string arguments that are fed in space delimited lists. The type of component and specifier determines which args it will use and what it will do with them. For example, the first integer arg is often used to determine how many times something can happen, e.g., the player is only allowed 4 KOs, or must get 500 loot. Not all events are counted up though. The only things that are counted up are things in the mission statistics like loot and kills, so everything else is pretty much a one shot deal where it happens once. Future documentation will detail which objective events are counted up and which are one shots.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_clock_interval&amp;lt;/tt&amp;gt; (float/seconds)&lt;br /&gt;
:For clocked components like &amp;quot;custom_clocked&amp;quot; this determines how often they are updated. The value is to be set in seconds.&lt;br /&gt;
&lt;br /&gt;
== Component Types ==&lt;br /&gt;
=== AI-Related Components ===&lt;br /&gt;
The following specifiers are termed &amp;quot;Standard AI Specifiers&amp;quot;: All specifiers minus the &amp;lt;tt&amp;gt;group&amp;lt;/tt&amp;gt; specifier.&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;kill&amp;lt;/tt&amp;gt;&lt;br /&gt;
:An AI must be killed to satisfy this component.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_KILL&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (object that must be killed)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: Standard AI Specifiers&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of kills required)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;ko&amp;lt;/tt&amp;gt; (Knockout)&lt;br /&gt;
:An AI must be knocked out by any means (gas, blackjack, other).&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_KO&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (AI that must be KO&#039;d)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: Standard AI Specifiers&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of KOs required)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;ai_find_item&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&#039;&#039;not yet implemented&#039;&#039;&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_AI_FIND_ITEM&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: --&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: --&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: --&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;ai_find_body&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&#039;&#039;not yet implemented&#039;&#039; An AI must find a body. Currently, the specifiers apply to the bodies found, and any AI finding the bodies triggers this component. Future revisions might add another specifier for the AI that finds the body.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_AI_FIND_BODY&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (Type of body that must be found)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: Standard AI Specifiers&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of bodies that must be found)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt;&lt;br /&gt;
:True if an AI or type of AI is alerted. Use the player_responsible flag to determine if this should count alerts not caused by the player&#039;s actions (e.g., enemy AI being sighted)&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_ALERT&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (AI that must be alerted)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: Standard AI Specifiers&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of alerts required), int (minimum alert level that counts: 1-5 with 5 being the combat state)&lt;br /&gt;
&lt;br /&gt;
=== Non-AI Components ===&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;destroy&amp;lt;/tt&amp;gt;&lt;br /&gt;
:An inanimate item must be destroyed (damage it until its health is lower than zero).&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_DESTROY&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (item to be destroyed)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: all&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of items to be destroyed)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;item&amp;lt;/tt&amp;gt;&lt;br /&gt;
:Completed when the player has this inventory item or loot.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_ITEM&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (item the player must have)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: All except AI type, team and innocence.&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of items to have, 1 by default)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;pickpocket&amp;lt;/tt&amp;gt;&lt;br /&gt;
:An inventory item must be taken from a conscious AI. Note that it doesn&#039;t matter what happens to the item after it is pickpocketed. It could be destroyed or dropped, but as long as it was originally pickpocketed, it counts.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_PICKPOCKET&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (Item the player must pickpocket)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: All except AI type, team and innocence&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of items to pickpocket, 1 by default)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;location&amp;lt;/tt&amp;gt; Object in location brush (using info_tdm_objective_location brush)&lt;br /&gt;
:A particular item must be in a particular location, defined by an info_objective_location brush. For optimization reasons, the entity or entities to be checked must also have this spawnarg: &amp;quot;objective_ent&amp;quot; set to &amp;quot;1&amp;quot;. NOTE: Multiple objects in a single location are not counted up for this component, this is a single-shot objective. If you want the player to put more than one object in a location, you must currently create several of these components, specifying by name, and OR them together in the objective logic.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_LOCATION&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 2 (object entity to check, location entity to check)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: For the object to check, all specifiers apply, but multiple objects are not counted up. Typically the objects will be specified by name. For the location to check, it will either be specified by name or by group.&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: None (if both specifiers match, the objective is completed).&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;info_location&amp;lt;/tt&amp;gt; Object in location area (using info_location entities)&lt;br /&gt;
:A particular item must be in a particular location, defined by an info_location area (see vanilla D3 documentation for info_location). Multiple objects in a single location are not counted up for this component, this is a single-shot objective. If you want the player to put more than one object in a location, you must currently create several of these components, specifying by name, and OR them together in the objective logic.&lt;br /&gt;
:This check is done periodically. Set spawnarg &amp;lt;tt&amp;gt;clock_interval&amp;lt;/tt&amp;gt; to the time in seconds between periodic checks.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_INFO_LOCATION&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 2 (object entity to check, location entity to check)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: For the object to check, all specifiers apply, but multiple objects are not counted up. Typically the objects will be specified by name. For the location to check, it will either be specified by name or by group.&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: None (if both specifiers match, the objective is completed).&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;custom&amp;lt;/tt&amp;gt;&lt;br /&gt;
:This custom objective component is only changed when an external script changes it. Otherwise it does nothing.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_CUSTOM_ASYNC&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: none&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: none&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;custom_clocked&amp;lt;/tt&amp;gt;&lt;br /&gt;
:This component calls a custom script periodically to check some condition. When run, the script is expected to this component true or false based on the custom check. This objective component could also be used as a convenient method to periodically call a script that has nothing to do with objectives.&lt;br /&gt;
:Set spawnarg &amp;lt;tt&amp;gt;clock_interval&amp;lt;/tt&amp;gt; to the time in seconds between periodic calls of the script.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_CUSTOM_CLOCKED&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: none&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: none&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: string (name of the script to call periodically)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;distance&amp;lt;/tt&amp;gt;&lt;br /&gt;
:Two entities must be sufficiently close to eachother to satisfy this component. The distance check is done between the origin of the first object and that of the second object. If this distance is below the input maximum distance, the component is set to true.&lt;br /&gt;
:This check is done periodically. Set spawnarg &amp;quot;clock_interval&amp;quot; to the time in seconds between periodic checks.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_DISTANCE&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: none (see arguments below)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: none&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: string (name of first entity), string (name of second entity), int (maximum distance in doom units). If one of the entities is the player, use the string &#039;player1&#039;.&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;readable_opened&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&#039;&#039;available since TDM 1.02&#039;&#039;&lt;br /&gt;
:The player must open a named readable to satisfy this component. This doesn&#039;t refer to a specific page, just opening the readable is enough.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_READABLE_OPENED&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (The name of the readable)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: name&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;readable_closed&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&#039;&#039;available since TDM 1.02&#039;&#039;&lt;br /&gt;
:The player must close a named readable to satisfy this component. This doesn&#039;t check whether the player has finished reading all pages, just closing the previously opened readable is enough.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_READABLE_CLOSED&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (The name of the readable)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: name&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;readable_page_reached&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&#039;&#039;available since TDM 1.02&#039;&#039;&lt;br /&gt;
:The player must open/read a specific page of a named readable to fulfil this component. Scrolling to the page is enough to trigger this event.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_READABLE_PAGE_REACHED&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (The name of the readable)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: name&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (the page number which should be reached, the number 1 refers to the first page)&lt;br /&gt;
&lt;br /&gt;
== Specifiers ==&lt;br /&gt;
;*&amp;lt;tt&amp;gt;none&amp;lt;/tt&amp;gt; &lt;br /&gt;
:No specifier. Component will be completed as soon as any event of that component type happens. (E.g., if you set a KO component type, with specifier none, it would be set to true as soon as soon as the player KO&#039;s anyone). This is the default specifier if none is entered. Not very useful, except for blanket &amp;quot;don&#039;t do this&amp;quot; objectives. Even then, it is better to use &amp;quot;overall&amp;quot; described below.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_NONE&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: No spec argument needed since we don&#039;t have to match anything.&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; &lt;br /&gt;
:Name of the entity&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_NAME&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: string&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;overall&amp;lt;/tt&amp;gt; &lt;br /&gt;
:In the context of inventory item objectives, this refers to overall loot. In the context of AI objectives, this refers to all AI, regardless of team, type, etc.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_OVERALL&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: No spec argument needed since we don&#039;t have to match anything.&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;Group&amp;lt;/tt&amp;gt; &lt;br /&gt;
:For inventory items, the item&#039;s &amp;lt;tt&amp;gt;inv_name&amp;lt;/tt&amp;gt; spawnarg value will be used here. For example, if you want the player to get 5 flashbombs, you would use this with group equal to the &amp;lt;tt&amp;gt;inv_name&amp;lt;/tt&amp;gt; of flashbombs. As opposed to getting a specific flashbomb in the map, where you would use the &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; specifier instead. If an inventory item is loot, the loot group is used here instead (e.g., &amp;lt;tt&amp;gt;loot_gold&amp;lt;/tt&amp;gt;).&lt;br /&gt;
:Group is also used for other component types as a convenient way to group things, such as info_objective_location or info_location entities checked by COMP_LOCATION and COMP_INFO_LOCATION, respectively.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_GROUP&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: string&lt;br /&gt;
:&#039;&#039;&#039;Loot group names:&#039;&#039;&#039; &amp;lt;tt&amp;gt;loot_gold&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;loot_goods&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;loot_jewels&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;loot_total&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;Classname&amp;lt;/tt&amp;gt; &lt;br /&gt;
:The entityDef classname of the entity. For example: atdm:ai_builder_guard&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_CLASSNAME&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: string&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;Spawnclass&amp;lt;/tt&amp;gt; &lt;br /&gt;
: The SDK classname of the entity. For example: idAI&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_SPAWNCLASS&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: string&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;ai_type&amp;lt;/tt&amp;gt; &lt;br /&gt;
:Type of AI: human, beast, undead, steambot, etc. (reads m_AIType in the SDK, which is set by the &amp;quot;type&amp;quot; spawnarg on idActors. Not sure if this is implemented yet).&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_AI_TYPE&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: int&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;ai_team&amp;lt;/tt&amp;gt; &lt;br /&gt;
:The AI&#039;s team integer. This can be set up by the mapper to put AI on arbitrary teams. Mapper can also team up AI for objective purposes, and use this team specifier as a fast way of saying &amp;quot;KO any of these 5 AI.&amp;quot; Alternatively, one could use the name specifier and put in multiple components for each of those 5 AI, then OR all the components in the objective success logic. Making a new team may save time over that method.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_AI_TEAM&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: int&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;ai_innocence&amp;lt;/tt&amp;gt; &lt;br /&gt;
:Differentiates between combatants and non-combatants. A value of 1 = non-combatant, a value of 0 =&amp;gt; non-combatant, or otherwise not deemed &amp;quot;innocent&amp;quot; by the FM author.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_AI_INNOCENCE&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: int (1 = innocent, 0 = not)&lt;br /&gt;
&lt;br /&gt;
= Objective Conditions =&lt;br /&gt;
With the campaign code added to TDM 1.06 a new set of spawnargs can be used to let objectives depend on those in a previous mission. These spawnargs are starting with the &amp;lt;tt&amp;gt;obj_condition&amp;lt;/tt&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
Each condition defines the &amp;quot;source&amp;quot; mission and the source objective by number, plus the state of the source objective. It also needs to specify the &amp;quot;target&amp;quot; objective (which is always in the current mission) by number and which action to take. Right now, three different actions are supported: &lt;br /&gt;
* Change Objective State (complete, failed, etc.)&lt;br /&gt;
* Change the Objective&#039;s Visibility (hide or show)&lt;br /&gt;
* Change the Objective&#039;s Mandatory Flag&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;obj_condition_N_src_mission&amp;lt;/tt&amp;gt; (integer) &lt;br /&gt;
:Defines the source mission the condition depends on. The integer is 0-based, i.e. the first mission has the number 0. The placeholder N is the number of the condition.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;obj_condition_N_src_obj&amp;lt;/tt&amp;gt; (integer) &lt;br /&gt;
:Defines the number of the source objective in the source mission. The integer is 0-based, i.e. the first objective has the number 0. The placeholder N is the number of the condition.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;obj_condition_N_src_state&amp;lt;/tt&amp;gt; (integer) &lt;br /&gt;
:Defines the state the source objective needs to be in for this condition to apply. The value can be in the same range as the objN_state spawnarg above:&lt;br /&gt;
:* 0 = STATE_INCOMPLETE&lt;br /&gt;
:* 1 = STATE_COMPLETE&lt;br /&gt;
:* 2 = STATE_INVALID&lt;br /&gt;
:* 3 = STATE_FAILED&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;obj_condition_N_target_obj&amp;lt;/tt&amp;gt; (integer) &lt;br /&gt;
:Defines the number of the target objective in the current mission. The integer is 0-based, i.e. the first objective has the number 0. The placeholder N is the number of the condition.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;obj_condition_N_type&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:Defines the action to take if the condition applies. There are three possible action types available:&lt;br /&gt;
:* &amp;quot;changestate&amp;quot; Change the state of the target objective.&lt;br /&gt;
:* &amp;quot;changevisibility&amp;quot; Change the visibility of the target objective.&lt;br /&gt;
:* &amp;quot;changemandatory&amp;quot; Change the mandatory flag of the target objective.&lt;br /&gt;
:The combination of this &amp;quot;type&amp;quot; spawnarg and the &amp;quot;value&amp;quot; spawnarg below defines exactly what action is performed on the target objective.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;obj_condition_N_value&amp;lt;/tt&amp;gt; (integer) &lt;br /&gt;
:The meaning and possible values of this spawnarg depend on the &amp;quot;type&amp;quot; spawnarg above. It is used as &amp;quot;parameter&amp;quot; or &amp;quot;argument&amp;quot; for the above action, e.g. the &amp;quot;changevisibility&amp;quot; action needs to know whether to show or hide the target objective. The possible values are listed below:&lt;br /&gt;
:* For type &amp;quot;changestate&amp;quot;&lt;br /&gt;
:** 0: set to incomplete&lt;br /&gt;
:** 1: set to complete&lt;br /&gt;
:** 2: set to invalid&lt;br /&gt;
:** 3: set to failed&lt;br /&gt;
:* For type &amp;quot;changevisibility&amp;quot;&lt;br /&gt;
:** 0: set to invisible&lt;br /&gt;
:** 1: set to visible&lt;br /&gt;
:* For type &amp;quot;changemandatory&amp;quot;&lt;br /&gt;
:** 0: clear mandatory flag&lt;br /&gt;
:** 1: set mandatory flag&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
Using components that combine component types with up to 2 entity arguments and 2 specifier types, plus objectives that are a boolean combination of those components should hopefully allow for a variety of different objectives.&lt;br /&gt;
&lt;br /&gt;
= Using Objectives Creatively =&lt;br /&gt;
&lt;br /&gt;
==A method for using objectives to change AI patrols when alert.==&lt;br /&gt;
&lt;br /&gt;
This works beautifully. The AI are placed at the seats just like in the card player prefab. Each player have &amp;quot;sitting 1&amp;quot; so they sit down at map start. AI&#039;s have no targets.&lt;br /&gt;
&lt;br /&gt;
Then I have one unseen objective per player:&lt;br /&gt;
Objective component is only &amp;quot;AI is alerted&amp;quot;, with the single entity card playing AI name. I can set the minimum alert level required for the AI to react. I set that to 3, so if the AI search actively, he won&#039;t be playing cards anymore, but goes patrolling instead.&lt;br /&gt;
Basically the objective component says: &amp;quot;Alert entity cardgamer1 1 times to a minimum alert level of 3.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And when that gets satisfied, the objective has completion target gopatrol_start, which is an ordinary trigger_once. This in turn targets a func_static which gives all the cardgamers new targets to their patrol routes. &lt;br /&gt;
&lt;br /&gt;
This is done as follows: Choose any kind of func_static. Open it in the Stim&amp;amp;Response editor. Add response trigger. Add an effect to this response. Choose &amp;quot;Add Target.&amp;quot; Put in the entity box the name of the AI. Put in the target box the name of the path_node where the AI should go.&lt;br /&gt;
&lt;br /&gt;
When I make one objective for each player, alerting any single one of them will make everyone of them to go for patrol. And once the trigger_once is gone, further alerting of the AI has no effect.&lt;br /&gt;
&lt;br /&gt;
==A way to replace AI when others are knocked out or killed.==&lt;br /&gt;
&lt;br /&gt;
Have spare AIs isolated in an inaccessible place either of your map, or room off in the void, targeting a path_waitfortrigger which then carries on their path.  Have the AI subject to substitution on a unique team in your map (or identify another way), as well as the spare AIs.  An objective is set up like the usual fail if you knock out or kill an AI, but not visible, set to the appropriate team.  I found I needed multiple Objective Components, the first no knock/no kill set to an amount of one.  Then two and three, etc.  Take note of what objective number the objective is and plan on not altering that.  Set the failure target to a trigger relay, which targets as many trigger_counts as you have replacement AI.  That&#039;s it for setting up the objective part.&lt;br /&gt;
&lt;br /&gt;
Add the aforementioned trigger relay, trigger_counts, and a target_setobjective_state.  Setup the target_setobjective_state with &amp;quot;Obj_id0&amp;quot; #, where # is the objective number noted earlier, and set &amp;quot;obj_state&amp;quot; to &amp;quot;0&amp;quot;.  Add a matching number of atdm:teleport (in target/) as trigger_counts, each teleport targeting one of the stored AI.  The first trigger_count is set to 1, and targets the first teleport and AI (to release it from the path_waitfortrigger).  The second trigger_count is set to 2, and targets the next teleport and AI, etc.  The trigger_relay targets all the trigger_counts and the target_setobjective_state.&lt;br /&gt;
&lt;br /&gt;
So when the initial AI is knocked out or killed, the objective failure triggers the relay.  It in turns increments the counts and resets the objective to work again.  The first count activates the teleport and triggers the AI to move off it&#039;s path_waitfortrigger on to the next path node.  Test and voilà!&lt;br /&gt;
&lt;br /&gt;
==Having the player place multiple interchangeable items in varied places.==&lt;br /&gt;
&lt;br /&gt;
In &amp;quot;{{TDM-FM|83|Inn Business}}&amp;quot;, the player has to place a number of markers in any of several places.  However it was key to not permit multiple markers being placed in the same place, and not all places are required, between half and two-thirds so there&#039;s flexibility for various players and their styles.&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;item is in location&amp;quot; with &amp;quot;group identifier&amp;quot; component was used, so each spot (info_tdm_objective_location) had the same spawnarg &amp;quot;objective_group&amp;quot;, &amp;quot;drops&amp;quot;.  Also &amp;quot;interval&amp;quot; was set to &amp;quot;0.3&amp;quot;, with no noticeable performance issue while being responsive enough for player feedback.  These locations were separate enough, but limited in size, to meet the restrictions below.&lt;br /&gt;
&lt;br /&gt;
So a number of objectives matching the number of inventory items were made, with several components.  &lt;br /&gt;
* let the target entity &#039;&#039;marker1&#039;&#039; be at location 0 of &#039;&#039;drops&#039;&#039;&lt;br /&gt;
* Do NOT let the entity &#039;&#039;marker1&#039;&#039; and &#039;&#039;marker2&#039;&#039; get within 150 units (check interval 0.3)&lt;br /&gt;
* Do NOT let the entity &#039;&#039;marker1&#039;&#039; and &#039;&#039;marker3&#039;&#039; get within 150 units (check interval 0.3)&lt;br /&gt;
* Do NOT let the entity &#039;&#039;marker1&#039;&#039; and &#039;&#039;marker4&#039;&#039; get within 150 units (check interval 0.3)&lt;br /&gt;
* etc., depending how many marker entities there are&lt;br /&gt;
&lt;br /&gt;
The other objectives were set up the same way but for their own &#039;&#039;marker#&#039;&#039;.  (IE, don&#039;t let 2 and 1 get within..., don&#039;t let 2 and 3, etc.)  In this manner, the objective checks if the marker is within the area, but unchecks if the maker rolls out or is removed by the player, and rechecks when they put it back in.  &lt;br /&gt;
&lt;br /&gt;
Finally, another objective was created to complete when all had been placed which is not visible but irreversible.  It has Enabling Objectives of the former objectives AND together.  IE, &amp;quot;9 AND 10 AND 11 AND 12&amp;quot; if there are four.  It has a completion target of a [[Triggers#trigger_relay|trigger relay]] entity which targeted several &amp;quot;atdm:target_setobjective_visibility&amp;quot; to turn off all the marker objectives and enable other mission specific things.&lt;br /&gt;
&lt;br /&gt;
The components match the markers, again using the group identifier:&lt;br /&gt;
* let the target entity &#039;&#039;marker1&#039;&#039; be at location 0 of &#039;&#039;drops&#039;&#039;&lt;br /&gt;
* let the target entity &#039;&#039;marker2&#039;&#039; be at location 0 of &#039;&#039;drops&#039;&#039;&lt;br /&gt;
* let the target entity &#039;&#039;marker#etc...&#039;&#039; be at location 0 of &#039;&#039;drops&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
So if all the marker objectives are complete (all items dropped in separate spots), then this completes and fires the trigger, which removes all the marker objectives from display (which the player had for feedback of progress) and moves on with objectives, perhaps displaying a dummy completed objective &amp;quot;All markers placed.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note: It&#039;s important for the marker objective numbers in the objective editor not to change, or update the non visible completion objective AND logic accordingly.&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t hurt AI script ==&lt;br /&gt;
&lt;br /&gt;
To have a mission fail if an AI is simply hurt (not just knocked out/killed), this script may be used:&lt;br /&gt;
&lt;br /&gt;
 void checkHarm()&lt;br /&gt;
  {&lt;br /&gt;
   float JackHealth = $Jack.getHealth();&lt;br /&gt;
   float JillHealth = $Jill.getHealth();&amp;lt;br&amp;gt;&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&amp;lt;br&amp;gt;&lt;br /&gt;
    if(JackHealth - $Jack.getHealth() &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
     $FailHarmObjective.activate($player1);&lt;br /&gt;
    }&amp;lt;br&amp;gt;&lt;br /&gt;
    if(JillHealth - $Jill.getHealth() &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
     $FailHarmObjective.activate($player1);&lt;br /&gt;
    }&amp;lt;br&amp;gt;&lt;br /&gt;
   sys.wait(1);&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
You would just need to add one variable/if statement for each AI to be affected and run it from the start of the level (i.e. in the void main just have a line that says &amp;quot;thread checkHarm()&amp;quot;). The &amp;quot;FailHarmObjective&amp;quot; is an actual entity in the map which would then fail the relevant objective.&lt;br /&gt;
&lt;br /&gt;
==Notes on using INVALID status==&lt;br /&gt;
&lt;br /&gt;
The INVALID state on an objective:&lt;br /&gt;
&lt;br /&gt;
* prevents any &#039;&#039;timed&#039;&#039; components from being checked (e.g. check every 0.3 seconds whether item A is in place B )&lt;br /&gt;
* prevents the objective itself from being checked for completion&lt;br /&gt;
* allows objectives that are dependent on the invalid objective to complete&lt;br /&gt;
* allows the mission to complete&lt;br /&gt;
* is used as the status for missing or malformed objectives&lt;br /&gt;
* is used for non-applicable objectives, e.g. the loot goal for a different difficulty setting&lt;br /&gt;
&lt;br /&gt;
You can use INVALID for objectives that don&#039;t apply at map start, but then activate them later by setting them to status INCOMPLETE. &lt;br /&gt;
Note that:&lt;br /&gt;
* The mission and any dependent objectives can still be completed, whether or not the invalid objective has been completed.&lt;br /&gt;
* Players can still complete individual components of your invalid objective. This can cause unexpected behaviour. If the player completes all of the components of an invalid objective and then you set the objective to &amp;quot;incomplete&amp;quot; status, the objective will be marked completed, but not right away: it&#039;ll be marked complete the next time any &#039;&#039;other&#039;&#039; objective gets an update. That&#039;s because any objective getting an update causes all objectives to be re-tested for completeness.&lt;br /&gt;
&lt;br /&gt;
If you need to avoid the second scenario, you can use a target_setobjective_component_state to uncheck the components when you re-enable the objective.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Objectives&amp;diff=18246</id>
		<title>Objectives</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Objectives&amp;diff=18246"/>
		<updated>2015-10-08T21:20:13Z</updated>

		<summary type="html">&lt;p&gt;SteveL: + Notes on using INVALID status&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Original_Reference|Ishtvan|4121}} &#039;&#039;additions by greebo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 This article covers details of the objectives system. Note that mappers can use &lt;br /&gt;
 DarkRadiant&#039;s [[Objectives Editor]] to make it easier to create objectives.&lt;br /&gt;
&lt;br /&gt;
The objectives system exists to determine when the player has completed the mission. At the highest level, a mission consists of a list of objectives to be completed and boolean logic to determine when the mission has succeeded or failed based on which of the objectives are complete. At the objective level, an objective consists of individual components and boolean logic to determine when the objective is completed or failed. At the component level, each component has a type, a specifier, and arguments. These will be explained fully in the components section.&lt;br /&gt;
&lt;br /&gt;
= Mission =&lt;br /&gt;
Objectives are stored by entities named [[target_tdm_addobjectives]]. Your mission can have several of these but typically you will only want one for all your objectives.&lt;br /&gt;
&lt;br /&gt;
By default these entities self-trigger (activates themselves) at mission start. If you need to delay this and activate it later (via any trigger entity that can have a target spawnarg) then add the spawnarg &#039;&#039;wait_for_trigger&#039;&#039; with a value of 1.&lt;br /&gt;
&lt;br /&gt;
When triggered, these entities add objectives to the mission based on their spawnargs.&lt;br /&gt;
&lt;br /&gt;
Spawnargs governing mission level behavior may be entered on any target_addobjectives. Non-empty spawnargs will be overwritten by the most recently triggered target_addobjectives (FM authors may want to do this if they add an objective later on and want to change the mission success logic to include that objective, for example). The following is a list of the mission-level spawnargs and what they mean:&lt;br /&gt;
&lt;br /&gt;
== Success/Failure Logic ==&lt;br /&gt;
By default, all mandatory objectives need to be completed for mission success. However, it&#039;s possible to define a custom success and failure logic string on an objective entity. Be sure to have this addobjectives entity active at map start so that the logic is parsed right at map load.&lt;br /&gt;
&lt;br /&gt;
=== Default Logic ===&lt;br /&gt;
*;&amp;lt;tt&amp;gt;mission_logic_success&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:A string of boolean logic applied to individual objective states to determine if the mission succeeds. AND, OR, NOT and parenthesis are available. The FM author can construct strings using these and the integer index for an objective. For example: &amp;quot;1 OR (NOT(2) AND 3)&amp;quot; would complete the mission if either objective 1 is true, or if 2 is false and 3 is true. By default, a mission succeeds when all mandatory objectives are completed.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;mission_logic_failure&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:Boolean logic applied to individual objective component states to determine if the mission has failed. By default, if any mandatory objective fails, the mission fails.&lt;br /&gt;
&lt;br /&gt;
=== Difficulty Dependent Logic ===&lt;br /&gt;
The above spawnargs apply to all difficulty levels. It&#039;s of course possible to override this default for a given difficulty level, by setting these spawnargs. The index N is referring to the difficulty level number (starting from 0 = Easy):&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;mission_logic_success_diff_N&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:Defines the success logic for the difficulty level N (override the default logic), e.g. &amp;quot;1 AND 2 AND 3&amp;quot;.&lt;br /&gt;
*;&amp;lt;tt&amp;gt;mission_logic_failure_diff_N&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:Defines the failure logic for the difficulty level N (override the default logic). When this condition is fulfilled, the mission has failed.&lt;br /&gt;
&lt;br /&gt;
If specific logic is not specified for a certain difficulty level, the default spawnargs (without _diff_*) will be used.&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Objectives added by the target_addobjectives each have a unique integer index, starting with objective 1, the first objective. The spawnargs associated with an objective are prefixed in the following manner:&lt;br /&gt;
 obj&amp;lt;objective index&amp;gt;_&amp;lt;spawnarg name&amp;gt;&lt;br /&gt;
Example: &#039;&#039;obj3_desc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The spawnargs (minus prefix) and meanings for objective attributes are listed below. Each objective also includes a list of components and their attributes, which will be covered in the next section.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_desc&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:The description of this objective. This is used to display the objective in the GUI - the user will never see the objective number, only this string. The default value is an empty string.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_state&amp;lt;/tt&amp;gt; (int) Defines the state of the objective at map start. &lt;br /&gt;
:&#039;&#039;&#039;Possible Objective States:&#039;&#039;&#039;&lt;br /&gt;
:* 0 = STATE_INCOMPLETE&lt;br /&gt;
:* 1 = STATE_COMPLETE&lt;br /&gt;
:* 2 = STATE_INVALID&lt;br /&gt;
:* 3 = STATE_FAILED&lt;br /&gt;
:Code defaults to 0 = incomplete.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_mandatory&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:Set to 0 for optional objective that doesn&#039;t fail the mission if you fail it. Objective must be completed to complete the mission if 1. Code defaults to 1.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_irreversible&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:Irreversible objectives lock their state once they&#039;re changed to COMPLETE or FAILED. Irreversible components will only change state once and then stay in that state. (Note: There are scriptfunctions to reset irreversible objectives and components if the FM author wants to let them change again for some reason). Code defaults to 0.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_ongoing&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:If true, this objective is not marked as complete and the player is not informed that it&#039;s complete until the end of the mission. Typically used for &amp;quot;do not kill&amp;quot; type objectives, because technically they would be complete right from the beginning, but we don&#039;t want to mark them off or tell the player they&#039;re complete right at the beginning. Could also be used for &amp;quot;have some item with you when you complete the mission.&amp;quot; Code defaults to 0.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_visible&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:Whether the objective appears in the player&#039;s Objectives GUI. Use invalidated and hidden objectives to queue up objectives for later, or hidden but valid objectives as another way of scripting events when the player does a certain thing, since objectives can launch an arbitrary script after they&#039;re completed. Code defaults to 1.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_difficulty&amp;lt;/tt&amp;gt; (integer)&lt;br /&gt;
:Space delimited list of difficulty levels that should include this objective. For example, &amp;quot;2 3&amp;quot; would enable this objective at difficulty levels 2 and 3, but not for other difficulty levels. Default value is empty - the objective applies to all difficulty levels.&lt;br /&gt;
:&#039;&#039;Note:&#039;&#039; When the objective is not active for a given difficutly, it is invalidated and hidden, but it still exists, so the numbering of the next objective should still increase by 1. E.g., objective 5 only appears on hard difficulty, but you still have to call the next objective objective 6, you can&#039;t call it objective 5 only appearing on easy or medium difficulty.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_enabling_objs&amp;lt;/tt&amp;gt; (space-delimited integers) &lt;br /&gt;
:This is a list of objectives which must be completed &#039;&#039;before&#039;&#039; this objective can be completed. For example, we shouldn&#039;t mark &amp;quot;objective complete&amp;quot; for exiting the mission until all the other mission goals have been completed. An example value for this spawnarg would be &amp;quot;4 6&amp;quot; to let this objective depend on objectives #4 and #6.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_script_complete&amp;lt;/tt&amp;gt; (string)&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_script_failed&amp;lt;/tt&amp;gt; (string)&lt;br /&gt;
:Name of a script to call when this objective is completed or failed. For example, this could be used in campaigns to set up optional objectives in one mission that effect other missions. This feature could also be used as a general scripting aide if the author wants to set up the conditions for something happening using a hidden objective.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_target_complete&amp;lt;/tt&amp;gt; (string)&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_target_failed&amp;lt;/tt&amp;gt; (string)&lt;br /&gt;
:Name of a target entity to [[Triggers|trigger]] when this objective is completed or failed, similar to the completion/failure script. Only one entity name is allowed here. If you need to trigger multiple entities on objective state change, use a [[Triggers#trigger_relay|trigger_relay]] entity.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_logic_success&amp;lt;/tt&amp;gt; (string)&lt;br /&gt;
:Boolean logic applied to individual objective component states to determine if the objective is complete. The same boolean logic options are available as in the mission-level logic described above. By default, all of the components must be true to complete the objective. In other words, all components are ANDed together (1 AND 2 AND 3...).&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_logic_failure&amp;lt;/tt&amp;gt; (string)&lt;br /&gt;
:Boolean logic applied to individual objective component states to determine if the objective is failed. By default, if an objective is ongoing, and any opponent becomes false, that objective will fail.&lt;br /&gt;
&lt;br /&gt;
= Objective Components =&lt;br /&gt;
Each objective has an associated list of components and spawnargs defining the attributes of those components. These component spawnargs associated with a given objective are prefixed in the following manner:&lt;br /&gt;
 obj&amp;lt;objective index&amp;gt;_&amp;lt;component index&amp;gt;_&amp;lt;spawnarg name&amp;gt;&lt;br /&gt;
Example: &#039;&#039;obj1_2_state&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the following, the index N defines the objective number and M refers to the component number. Programmers beware that both numbers start from the value 1.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_state&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:Defines the state of the component at map start, which can only be &amp;quot;1&amp;quot; (complete) or &amp;quot;0&amp;quot; (incomplete). Code defaults to 0.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_player_responsible&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:When true, the player must be responsible for the events that satisfy this component. Events the player is not responsible for are not counted. (e.g., the player kills an AI vs. another AI killing an AI). Code defaults to 1.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_not&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:Code defaults to 0. If true, this component is logically NOTed, so when the conditions described by the type and speifiers are not met, the component state is true, and when they are met, it is false.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_irreversible&amp;lt;/tt&amp;gt; (1/0) &lt;br /&gt;
:When the component state changes from its initial state, it will stay in its new state regardless of what happens later. (There is a script event to &amp;quot;unlatch&amp;quot; a latched objective component if needed). Code defaults to 0.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_type&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:Defines the type of this objective component. See the section [[#Component_Types|Component Types]] below for detailed information.&lt;br /&gt;
:&#039;&#039;&#039;Possible &#039;Objective Component&#039; Types:&#039;&#039;&#039;&lt;br /&gt;
:* kill (also includes non-living things being destroyed)&lt;br /&gt;
:* ko&lt;br /&gt;
:* ai_find_item (not implemented)&lt;br /&gt;
:* ai_find_body (not implemented)&lt;br /&gt;
:* alert&lt;br /&gt;
:* destroy (inanimate item destroyed (&amp;quot;killed&amp;quot;))&lt;br /&gt;
:* item (picked up or dropped an inventory item)&lt;br /&gt;
:* pickpocket (inventory item acquired from conscious AI)&lt;br /&gt;
:* location (Item A at location B, where &amp;quot;A&amp;quot; is any entity that must have the key &amp;quot;objective_ent&amp;quot; set to &amp;quot;1&amp;quot; on it, and location B is a special entity info_objective_location. Later on we may support using the D3 location system as well)&lt;br /&gt;
:* custom (custom component that is set true/false by a map script)&lt;br /&gt;
:These components are triggered every N milliseconds by a system clock:&lt;br /&gt;
:* custom_clocked (runs a custom map script that should check something and set the objective)&lt;br /&gt;
:* info_location (Item A at info_location area B) - TODO: more information needed&lt;br /&gt;
:* distance (distance between the origin of entity X and that of entity Y)&lt;br /&gt;
&lt;br /&gt;
Any component can have up to two specifiers, each of which can carry a value. Here, K refers to the number of the specifier, e.g. (&amp;quot;obj2_1_spec4&amp;quot; &amp;quot;name&amp;quot;).&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_specK&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:&#039;&#039;&#039;Specification Methods:&#039;&#039;&#039;&lt;br /&gt;
:Specification methods determine what the objective component is looking for. Does it look at how many AI of a specific team you&#039;ve KO&#039;d, how many humans, how many overall, or whether you&#039;ve KO&#039;d an AI with a certain name? Each objective component can have up to two of the following specifiers (Not all components can take two specifiers, and not all specifiers make sense for all component types, future documentation will cover that). See the section [[#Specifiers|Specifiers]] below for a detailed description.&lt;br /&gt;
:&#039;&#039;&#039;The following apply to both AIs and items:&#039;&#039;&#039;&lt;br /&gt;
:* none&lt;br /&gt;
:* name (name of entity)&lt;br /&gt;
:* overall (overall count of something: kills, loot, kos, etc)&lt;br /&gt;
:* group (inventory group)&lt;br /&gt;
:* classname (soft/scripting classname)&lt;br /&gt;
:* spawnclass (hard / SDK classname, e.g. &amp;quot;idPlayer&amp;quot;)&lt;br /&gt;
:&#039;&#039;&#039;The following specification methods apply only to AI:&#039;&#039;&#039;&lt;br /&gt;
:* ai_type (human, beast, undead, bot, etc)&lt;br /&gt;
:* ai_team (mapper defined team of the AI)&lt;br /&gt;
:* ai_innocence (For distinguishing noncombatants)&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_spec_valK&amp;lt;/tt&amp;gt;&lt;br /&gt;
:Value that the Kth specifier should match in order to count towards this component. (E.g., an entity name if we specify by name.)&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_args&amp;lt;/tt&amp;gt; (space-delimited string) &lt;br /&gt;
:&#039;&#039;&#039;Integer and String Arguments:&#039;&#039;&#039;&lt;br /&gt;
:A component can have an arbitrary number of int and string arguments that are fed in space delimited lists. The type of component and specifier determines which args it will use and what it will do with them. For example, the first integer arg is often used to determine how many times something can happen, e.g., the player is only allowed 4 KOs, or must get 500 loot. Not all events are counted up though. The only things that are counted up are things in the mission statistics like loot and kills, so everything else is pretty much a one shot deal where it happens once. Future documentation will detail which objective events are counted up and which are one shots.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;objN_M_clock_interval&amp;lt;/tt&amp;gt; (float/seconds)&lt;br /&gt;
:For clocked components like &amp;quot;custom_clocked&amp;quot; this determines how often they are updated. The value is to be set in seconds.&lt;br /&gt;
&lt;br /&gt;
== Component Types ==&lt;br /&gt;
=== AI-Related Components ===&lt;br /&gt;
The following specifiers are termed &amp;quot;Standard AI Specifiers&amp;quot;: All specifiers minus the &amp;lt;tt&amp;gt;group&amp;lt;/tt&amp;gt; specifier.&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;kill&amp;lt;/tt&amp;gt;&lt;br /&gt;
:An AI must be killed to satisfy this component.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_KILL&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (object that must be killed)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: Standard AI Specifiers&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of kills required)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;ko&amp;lt;/tt&amp;gt; (Knockout)&lt;br /&gt;
:An AI must be knocked out by any means (gas, blackjack, other).&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_KO&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (AI that must be KO&#039;d)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: Standard AI Specifiers&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of KOs required)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;ai_find_item&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&#039;&#039;not yet implemented&#039;&#039;&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_AI_FIND_ITEM&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: --&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: --&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: --&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;ai_find_body&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&#039;&#039;not yet implemented&#039;&#039; An AI must find a body. Currently, the specifiers apply to the bodies found, and any AI finding the bodies triggers this component. Future revisions might add another specifier for the AI that finds the body.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_AI_FIND_BODY&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (Type of body that must be found)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: Standard AI Specifiers&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of bodies that must be found)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt;&lt;br /&gt;
:True if an AI or type of AI is alerted. Use the player_responsible flag to determine if this should count alerts not caused by the player&#039;s actions (e.g., enemy AI being sighted)&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_ALERT&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (AI that must be alerted)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: Standard AI Specifiers&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of alerts required), int (minimum alert level that counts: 1-5 with 5 being the combat state)&lt;br /&gt;
&lt;br /&gt;
=== Non-AI Components ===&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;destroy&amp;lt;/tt&amp;gt;&lt;br /&gt;
:An inanimate item must be destroyed (damage it until its health is lower than zero).&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_DESTROY&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (item to be destroyed)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: all&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of items to be destroyed)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;item&amp;lt;/tt&amp;gt;&lt;br /&gt;
:Completed when the player has this inventory item or loot.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_ITEM&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (item the player must have)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: All except AI type, team and innocence.&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of items to have, 1 by default)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;pickpocket&amp;lt;/tt&amp;gt;&lt;br /&gt;
:An inventory item must be taken from a conscious AI. Note that it doesn&#039;t matter what happens to the item after it is pickpocketed. It could be destroyed or dropped, but as long as it was originally pickpocketed, it counts.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_PICKPOCKET&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (Item the player must pickpocket)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: All except AI type, team and innocence&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (number of items to pickpocket, 1 by default)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;location&amp;lt;/tt&amp;gt; Object in location brush (using info_tdm_objective_location brush)&lt;br /&gt;
:A particular item must be in a particular location, defined by an info_objective_location brush. For optimization reasons, the entity or entities to be checked must also have this spawnarg: &amp;quot;objective_ent&amp;quot; set to &amp;quot;1&amp;quot;. NOTE: Multiple objects in a single location are not counted up for this component, this is a single-shot objective. If you want the player to put more than one object in a location, you must currently create several of these components, specifying by name, and OR them together in the objective logic.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_LOCATION&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 2 (object entity to check, location entity to check)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: For the object to check, all specifiers apply, but multiple objects are not counted up. Typically the objects will be specified by name. For the location to check, it will either be specified by name or by group.&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: None (if both specifiers match, the objective is completed).&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;info_location&amp;lt;/tt&amp;gt; Object in location area (using info_location entities)&lt;br /&gt;
:A particular item must be in a particular location, defined by an info_location area (see vanilla D3 documentation for info_location). Multiple objects in a single location are not counted up for this component, this is a single-shot objective. If you want the player to put more than one object in a location, you must currently create several of these components, specifying by name, and OR them together in the objective logic.&lt;br /&gt;
:This check is done periodically. Set spawnarg &amp;lt;tt&amp;gt;clock_interval&amp;lt;/tt&amp;gt; to the time in seconds between periodic checks.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_INFO_LOCATION&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 2 (object entity to check, location entity to check)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: For the object to check, all specifiers apply, but multiple objects are not counted up. Typically the objects will be specified by name. For the location to check, it will either be specified by name or by group.&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: None (if both specifiers match, the objective is completed).&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;custom&amp;lt;/tt&amp;gt;&lt;br /&gt;
:This custom objective component is only changed when an external script changes it. Otherwise it does nothing.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_CUSTOM_ASYNC&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: none&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: none&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;custom_clocked&amp;lt;/tt&amp;gt;&lt;br /&gt;
:This component calls a custom script periodically to check some condition. When run, the script is expected to this component true or false based on the custom check. This objective component could also be used as a convenient method to periodically call a script that has nothing to do with objectives.&lt;br /&gt;
:Set spawnarg &amp;lt;tt&amp;gt;clock_interval&amp;lt;/tt&amp;gt; to the time in seconds between periodic calls of the script.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_CUSTOM_CLOCKED&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: none&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: none&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: string (name of the script to call periodically)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;distance&amp;lt;/tt&amp;gt;&lt;br /&gt;
:Two entities must be sufficiently close to eachother to satisfy this component. The distance check is done between the origin of the first object and that of the second object. If this distance is below the input maximum distance, the component is set to true.&lt;br /&gt;
:This check is done periodically. Set spawnarg &amp;quot;clock_interval&amp;quot; to the time in seconds between periodic checks.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_DISTANCE&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: none (see arguments below)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: none&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: string (name of first entity), string (name of second entity), int (maximum distance in doom units)&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;readable_opened&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&#039;&#039;available since TDM 1.02&#039;&#039;&lt;br /&gt;
:The player must open a named readable to satisfy this component. This doesn&#039;t refer to a specific page, just opening the readable is enough.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_READABLE_OPENED&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (The name of the readable)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: name&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;readable_closed&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&#039;&#039;available since TDM 1.02&#039;&#039;&lt;br /&gt;
:The player must close a named readable to satisfy this component. This doesn&#039;t check whether the player has finished reading all pages, just closing the previously opened readable is enough.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_READABLE_CLOSED&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (The name of the readable)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: name&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;readable_page_reached&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&#039;&#039;available since TDM 1.02&#039;&#039;&lt;br /&gt;
:The player must open/read a specific page of a named readable to fulfil this component. Scrolling to the page is enough to trigger this event.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: COMP_READABLE_PAGE_REACHED&lt;br /&gt;
:&#039;&#039;&#039;Number of Specificatons&#039;&#039;&#039;: 1 (The name of the readable)&lt;br /&gt;
:&#039;&#039;&#039;Applicable Specifiers&#039;&#039;&#039;: name&lt;br /&gt;
:&#039;&#039;&#039;Expected Arguments&#039;&#039;&#039;: int (the page number which should be reached, the number 1 refers to the first page)&lt;br /&gt;
&lt;br /&gt;
== Specifiers ==&lt;br /&gt;
;*&amp;lt;tt&amp;gt;none&amp;lt;/tt&amp;gt; &lt;br /&gt;
:No specifier. Component will be completed as soon as any event of that component type happens. (E.g., if you set a KO component type, with specifier none, it would be set to true as soon as soon as the player KO&#039;s anyone). This is the default specifier if none is entered. Not very useful, except for blanket &amp;quot;don&#039;t do this&amp;quot; objectives. Even then, it is better to use &amp;quot;overall&amp;quot; described below.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_NONE&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: No spec argument needed since we don&#039;t have to match anything.&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; &lt;br /&gt;
:Name of the entity&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_NAME&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: string&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;overall&amp;lt;/tt&amp;gt; &lt;br /&gt;
:In the context of inventory item objectives, this refers to overall loot. In the context of AI objectives, this refers to all AI, regardless of team, type, etc.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_OVERALL&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: No spec argument needed since we don&#039;t have to match anything.&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;Group&amp;lt;/tt&amp;gt; &lt;br /&gt;
:For inventory items, the item&#039;s &amp;lt;tt&amp;gt;inv_name&amp;lt;/tt&amp;gt; spawnarg value will be used here. For example, if you want the player to get 5 flashbombs, you would use this with group equal to the &amp;lt;tt&amp;gt;inv_name&amp;lt;/tt&amp;gt; of flashbombs. As opposed to getting a specific flashbomb in the map, where you would use the &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; specifier instead. If an inventory item is loot, the loot group is used here instead (e.g., &amp;lt;tt&amp;gt;loot_gold&amp;lt;/tt&amp;gt;).&lt;br /&gt;
:Group is also used for other component types as a convenient way to group things, such as info_objective_location or info_location entities checked by COMP_LOCATION and COMP_INFO_LOCATION, respectively.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_GROUP&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: string&lt;br /&gt;
:&#039;&#039;&#039;Loot group names:&#039;&#039;&#039; &amp;lt;tt&amp;gt;loot_gold&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;loot_goods&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;loot_jewels&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;loot_total&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;Classname&amp;lt;/tt&amp;gt; &lt;br /&gt;
:The entityDef classname of the entity. For example: atdm:ai_builder_guard&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_CLASSNAME&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: string&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;Spawnclass&amp;lt;/tt&amp;gt; &lt;br /&gt;
: The SDK classname of the entity. For example: idAI&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_SPAWNCLASS&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: string&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;ai_type&amp;lt;/tt&amp;gt; &lt;br /&gt;
:Type of AI: human, beast, undead, steambot, etc. (reads m_AIType in the SDK, which is set by the &amp;quot;type&amp;quot; spawnarg on idActors. Not sure if this is implemented yet).&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_AI_TYPE&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: int&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;ai_team&amp;lt;/tt&amp;gt; &lt;br /&gt;
:The AI&#039;s team integer. This can be set up by the mapper to put AI on arbitrary teams. Mapper can also team up AI for objective purposes, and use this team specifier as a fast way of saying &amp;quot;KO any of these 5 AI.&amp;quot; Alternatively, one could use the name specifier and put in multiple components for each of those 5 AI, then OR all the components in the objective success logic. Making a new team may save time over that method.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_AI_TEAM&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: int&lt;br /&gt;
&lt;br /&gt;
;*&amp;lt;tt&amp;gt;ai_innocence&amp;lt;/tt&amp;gt; &lt;br /&gt;
:Differentiates between combatants and non-combatants. A value of 1 = non-combatant, a value of 0 =&amp;gt; non-combatant, or otherwise not deemed &amp;quot;innocent&amp;quot; by the FM author.&lt;br /&gt;
:&#039;&#039;&#039;SDK Name&#039;&#039;&#039;: SPEC_AI_INNOCENCE&lt;br /&gt;
:&#039;&#039;&#039;Specifier Argument Type Expected&#039;&#039;&#039;: int (1 = innocent, 0 = not)&lt;br /&gt;
&lt;br /&gt;
= Objective Conditions =&lt;br /&gt;
With the campaign code added to TDM 1.06 a new set of spawnargs can be used to let objectives depend on those in a previous mission. These spawnargs are starting with the &amp;lt;tt&amp;gt;obj_condition&amp;lt;/tt&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
Each condition defines the &amp;quot;source&amp;quot; mission and the source objective by number, plus the state of the source objective. It also needs to specify the &amp;quot;target&amp;quot; objective (which is always in the current mission) by number and which action to take. Right now, three different actions are supported: &lt;br /&gt;
* Change Objective State (complete, failed, etc.)&lt;br /&gt;
* Change the Objective&#039;s Visibility (hide or show)&lt;br /&gt;
* Change the Objective&#039;s Mandatory Flag&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;obj_condition_N_src_mission&amp;lt;/tt&amp;gt; (integer) &lt;br /&gt;
:Defines the source mission the condition depends on. The integer is 0-based, i.e. the first mission has the number 0. The placeholder N is the number of the condition.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;obj_condition_N_src_obj&amp;lt;/tt&amp;gt; (integer) &lt;br /&gt;
:Defines the number of the source objective in the source mission. The integer is 0-based, i.e. the first objective has the number 0. The placeholder N is the number of the condition.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;obj_condition_N_src_state&amp;lt;/tt&amp;gt; (integer) &lt;br /&gt;
:Defines the state the source objective needs to be in for this condition to apply. The value can be in the same range as the objN_state spawnarg above:&lt;br /&gt;
:* 0 = STATE_INCOMPLETE&lt;br /&gt;
:* 1 = STATE_COMPLETE&lt;br /&gt;
:* 2 = STATE_INVALID&lt;br /&gt;
:* 3 = STATE_FAILED&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;obj_condition_N_target_obj&amp;lt;/tt&amp;gt; (integer) &lt;br /&gt;
:Defines the number of the target objective in the current mission. The integer is 0-based, i.e. the first objective has the number 0. The placeholder N is the number of the condition.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;obj_condition_N_type&amp;lt;/tt&amp;gt; (string) &lt;br /&gt;
:Defines the action to take if the condition applies. There are three possible action types available:&lt;br /&gt;
:* &amp;quot;changestate&amp;quot; Change the state of the target objective.&lt;br /&gt;
:* &amp;quot;changevisibility&amp;quot; Change the visibility of the target objective.&lt;br /&gt;
:* &amp;quot;changemandatory&amp;quot; Change the mandatory flag of the target objective.&lt;br /&gt;
:The combination of this &amp;quot;type&amp;quot; spawnarg and the &amp;quot;value&amp;quot; spawnarg below defines exactly what action is performed on the target objective.&lt;br /&gt;
&lt;br /&gt;
*;&amp;lt;tt&amp;gt;obj_condition_N_value&amp;lt;/tt&amp;gt; (integer) &lt;br /&gt;
:The meaning and possible values of this spawnarg depend on the &amp;quot;type&amp;quot; spawnarg above. It is used as &amp;quot;parameter&amp;quot; or &amp;quot;argument&amp;quot; for the above action, e.g. the &amp;quot;changevisibility&amp;quot; action needs to know whether to show or hide the target objective. The possible values are listed below:&lt;br /&gt;
:* For type &amp;quot;changestate&amp;quot;&lt;br /&gt;
:** 0: set to incomplete&lt;br /&gt;
:** 1: set to complete&lt;br /&gt;
:** 2: set to invalid&lt;br /&gt;
:** 3: set to failed&lt;br /&gt;
:* For type &amp;quot;changevisibility&amp;quot;&lt;br /&gt;
:** 0: set to invisible&lt;br /&gt;
:** 1: set to visible&lt;br /&gt;
:* For type &amp;quot;changemandatory&amp;quot;&lt;br /&gt;
:** 0: clear mandatory flag&lt;br /&gt;
:** 1: set mandatory flag&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
Using components that combine component types with up to 2 entity arguments and 2 specifier types, plus objectives that are a boolean combination of those components should hopefully allow for a variety of different objectives.&lt;br /&gt;
&lt;br /&gt;
= Using Objectives Creatively =&lt;br /&gt;
&lt;br /&gt;
==A method for using objectives to change AI patrols when alert.==&lt;br /&gt;
&lt;br /&gt;
This works beautifully. The AI are placed at the seats just like in the card player prefab. Each player have &amp;quot;sitting 1&amp;quot; so they sit down at map start. AI&#039;s have no targets.&lt;br /&gt;
&lt;br /&gt;
Then I have one unseen objective per player:&lt;br /&gt;
Objective component is only &amp;quot;AI is alerted&amp;quot;, with the single entity card playing AI name. I can set the minimum alert level required for the AI to react. I set that to 3, so if the AI search actively, he won&#039;t be playing cards anymore, but goes patrolling instead.&lt;br /&gt;
Basically the objective component says: &amp;quot;Alert entity cardgamer1 1 times to a minimum alert level of 3.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And when that gets satisfied, the objective has completion target gopatrol_start, which is an ordinary trigger_once. This in turn targets a func_static which gives all the cardgamers new targets to their patrol routes. &lt;br /&gt;
&lt;br /&gt;
This is done as follows: Choose any kind of func_static. Open it in the Stim&amp;amp;Response editor. Add response trigger. Add an effect to this response. Choose &amp;quot;Add Target.&amp;quot; Put in the entity box the name of the AI. Put in the target box the name of the path_node where the AI should go.&lt;br /&gt;
&lt;br /&gt;
When I make one objective for each player, alerting any single one of them will make everyone of them to go for patrol. And once the trigger_once is gone, further alerting of the AI has no effect.&lt;br /&gt;
&lt;br /&gt;
==A way to replace AI when others are knocked out or killed.==&lt;br /&gt;
&lt;br /&gt;
Have spare AIs isolated in an inaccessible place either of your map, or room off in the void, targeting a path_waitfortrigger which then carries on their path.  Have the AI subject to substitution on a unique team in your map (or identify another way), as well as the spare AIs.  An objective is set up like the usual fail if you knock out or kill an AI, but not visible, set to the appropriate team.  I found I needed multiple Objective Components, the first no knock/no kill set to an amount of one.  Then two and three, etc.  Take note of what objective number the objective is and plan on not altering that.  Set the failure target to a trigger relay, which targets as many trigger_counts as you have replacement AI.  That&#039;s it for setting up the objective part.&lt;br /&gt;
&lt;br /&gt;
Add the aforementioned trigger relay, trigger_counts, and a target_setobjective_state.  Setup the target_setobjective_state with &amp;quot;Obj_id0&amp;quot; #, where # is the objective number noted earlier, and set &amp;quot;obj_state&amp;quot; to &amp;quot;0&amp;quot;.  Add a matching number of atdm:teleport (in target/) as trigger_counts, each teleport targeting one of the stored AI.  The first trigger_count is set to 1, and targets the first teleport and AI (to release it from the path_waitfortrigger).  The second trigger_count is set to 2, and targets the next teleport and AI, etc.  The trigger_relay targets all the trigger_counts and the target_setobjective_state.&lt;br /&gt;
&lt;br /&gt;
So when the initial AI is knocked out or killed, the objective failure triggers the relay.  It in turns increments the counts and resets the objective to work again.  The first count activates the teleport and triggers the AI to move off it&#039;s path_waitfortrigger on to the next path node.  Test and voilà!&lt;br /&gt;
&lt;br /&gt;
==Having the player place multiple interchangeable items in varied places.==&lt;br /&gt;
&lt;br /&gt;
In &amp;quot;{{TDM-FM|83|Inn Business}}&amp;quot;, the player has to place a number of markers in any of several places.  However it was key to not permit multiple markers being placed in the same place, and not all places are required, between half and two-thirds so there&#039;s flexibility for various players and their styles.&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;item is in location&amp;quot; with &amp;quot;group identifier&amp;quot; component was used, so each spot (info_tdm_objective_location) had the same spawnarg &amp;quot;objective_group&amp;quot;, &amp;quot;drops&amp;quot;.  Also &amp;quot;interval&amp;quot; was set to &amp;quot;0.3&amp;quot;, with no noticeable performance issue while being responsive enough for player feedback.  These locations were separate enough, but limited in size, to meet the restrictions below.&lt;br /&gt;
&lt;br /&gt;
So a number of objectives matching the number of inventory items were made, with several components.  &lt;br /&gt;
* let the target entity &#039;&#039;marker1&#039;&#039; be at location 0 of &#039;&#039;drops&#039;&#039;&lt;br /&gt;
* Do NOT let the entity &#039;&#039;marker1&#039;&#039; and &#039;&#039;marker2&#039;&#039; get within 150 units (check interval 0.3)&lt;br /&gt;
* Do NOT let the entity &#039;&#039;marker1&#039;&#039; and &#039;&#039;marker3&#039;&#039; get within 150 units (check interval 0.3)&lt;br /&gt;
* Do NOT let the entity &#039;&#039;marker1&#039;&#039; and &#039;&#039;marker4&#039;&#039; get within 150 units (check interval 0.3)&lt;br /&gt;
* etc., depending how many marker entities there are&lt;br /&gt;
&lt;br /&gt;
The other objectives were set up the same way but for their own &#039;&#039;marker#&#039;&#039;.  (IE, don&#039;t let 2 and 1 get within..., don&#039;t let 2 and 3, etc.)  In this manner, the objective checks if the marker is within the area, but unchecks if the maker rolls out or is removed by the player, and rechecks when they put it back in.  &lt;br /&gt;
&lt;br /&gt;
Finally, another objective was created to complete when all had been placed which is not visible but irreversible.  It has Enabling Objectives of the former objectives AND together.  IE, &amp;quot;9 AND 10 AND 11 AND 12&amp;quot; if there are four.  It has a completion target of a [[Triggers#trigger_relay|trigger relay]] entity which targeted several &amp;quot;atdm:target_setobjective_visibility&amp;quot; to turn off all the marker objectives and enable other mission specific things.&lt;br /&gt;
&lt;br /&gt;
The components match the markers, again using the group identifier:&lt;br /&gt;
* let the target entity &#039;&#039;marker1&#039;&#039; be at location 0 of &#039;&#039;drops&#039;&#039;&lt;br /&gt;
* let the target entity &#039;&#039;marker2&#039;&#039; be at location 0 of &#039;&#039;drops&#039;&#039;&lt;br /&gt;
* let the target entity &#039;&#039;marker#etc...&#039;&#039; be at location 0 of &#039;&#039;drops&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
So if all the marker objectives are complete (all items dropped in separate spots), then this completes and fires the trigger, which removes all the marker objectives from display (which the player had for feedback of progress) and moves on with objectives, perhaps displaying a dummy completed objective &amp;quot;All markers placed.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note: It&#039;s important for the marker objective numbers in the objective editor not to change, or update the non visible completion objective AND logic accordingly.&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t hurt AI script ==&lt;br /&gt;
&lt;br /&gt;
To have a mission fail if an AI is simply hurt (not just knocked out/killed), this script may be used:&lt;br /&gt;
&lt;br /&gt;
 void checkHarm()&lt;br /&gt;
  {&lt;br /&gt;
   float JackHealth = $Jack.getHealth();&lt;br /&gt;
   float JillHealth = $Jill.getHealth();&amp;lt;br&amp;gt;&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&amp;lt;br&amp;gt;&lt;br /&gt;
    if(JackHealth - $Jack.getHealth() &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
     $FailHarmObjective.activate($player1);&lt;br /&gt;
    }&amp;lt;br&amp;gt;&lt;br /&gt;
    if(JillHealth - $Jill.getHealth() &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
     $FailHarmObjective.activate($player1);&lt;br /&gt;
    }&amp;lt;br&amp;gt;&lt;br /&gt;
   sys.wait(1);&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
You would just need to add one variable/if statement for each AI to be affected and run it from the start of the level (i.e. in the void main just have a line that says &amp;quot;thread checkHarm()&amp;quot;). The &amp;quot;FailHarmObjective&amp;quot; is an actual entity in the map which would then fail the relevant objective.&lt;br /&gt;
&lt;br /&gt;
==Notes on using INVALID status==&lt;br /&gt;
&lt;br /&gt;
The INVALID state on an objective:&lt;br /&gt;
&lt;br /&gt;
* prevents any &#039;&#039;timed&#039;&#039; components from being checked (e.g. check every 0.3 seconds whether item A is in place B )&lt;br /&gt;
* prevents the objective itself from being checked for completion&lt;br /&gt;
* allows objectives that are dependent on the invalid objective to complete&lt;br /&gt;
* allows the mission to complete&lt;br /&gt;
* is used as the status for missing or malformed objectives&lt;br /&gt;
* is used for non-applicable objectives, e.g. the loot goal for a different difficulty setting&lt;br /&gt;
&lt;br /&gt;
You can use INVALID for objectives that don&#039;t apply at map start, but then activate them later by setting them to status INCOMPLETE. &lt;br /&gt;
Note that:&lt;br /&gt;
* The mission and any dependent objectives can still be completed, whether or not the invalid objective has been completed.&lt;br /&gt;
* Players can still complete individual components of your invalid objective. This can cause unexpected behaviour. If the player completes all of the components of an invalid objective and then you set the objective to &amp;quot;incomplete&amp;quot; status, the objective will be marked completed, but not eright asway: it&#039;ll be marked complete the next time any &#039;&#039;other&#039;&#039; objective gets an update. That&#039;s because any objective getting an update causes all objectives to be re-tested for completeness.&lt;br /&gt;
&lt;br /&gt;
If you need to avoid the second scenario, you can use a target_setobjective_component_state to uncheck the components when you re-enable the objective.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Objectives_Editor&amp;diff=18245</id>
		<title>Objectives Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Objectives_Editor&amp;diff=18245"/>
		<updated>2015-10-08T17:36:57Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* How to directly trigger an objective or component to complete */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Written by HappyCheeze and Fidcal. Small additions by Sotha and Springheel.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
The objectives editor is a very useful tool located inside Darkradiant (Version 0.9.7 or later) that allows the map author to set objectives or goals that the player must do in order to win the level. The opposite is also true, the author can set restrictions that the player must adhere to, or will fail the mission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Adding Objectives Entities==&lt;br /&gt;
&lt;br /&gt;
 IMPORTANT: The add objectives entity has been renamed to atdm:target_addobjectives so ignore any reference to the old name target_tdm_addobjectives in the images.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To access the objectives editor once inside Darkradiant, click the pull-down menu Map&amp;gt;Objectives... &lt;br /&gt;
[[Image:Objmenu.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Upon clicking you will see a separate window that looks like this. &lt;br /&gt;
[[Image:Objedblank.png|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
To start things off, click the &lt;br /&gt;
[[Image:%2Badd.png]]Button&lt;br /&gt;
&lt;br /&gt;
[[Image:Msnobjadd.png]]&lt;br /&gt;
&lt;br /&gt;
This will create an Entity that stores all of the objectives information that will you be editing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we&#039;ve spawned our objectives entity,&lt;br /&gt;
{{clear}}&lt;br /&gt;
[[Image:Objentity.png]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
Notice the numbers in the “[]”&#039;s. Those are the entities&#039; coordinates on the map. These numbers will most likely be different from yours.  When the objectives entity spawns it is placed randomly around the origin (As of 0.9.7 this is how it is, it might change in future versions, but for now this is how it is).&lt;br /&gt;
&lt;br /&gt;
 *Note:Be mindful that sometimes this entity will spawn outside your map and into the void. This will cause a leak, so look around the origin.&lt;br /&gt;
&lt;br /&gt;
 **Alternatively you can right-click in an orthogonal view, create entity, Targets/atdm:target_addobjectives. This will create a small yellow box like placing any entity or object. Then when you open the objectives editor it will be in the list. Good to do this where the players starts, it will always be easy to find.&lt;br /&gt;
&lt;br /&gt;
==Adding Objectives==&lt;br /&gt;
&lt;br /&gt;
Now we&#039;re ready to start adding some objectives.&lt;br /&gt;
&lt;br /&gt;
Click the second [[Image:%2Badd.png]] Button&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Newobj1.png|left]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
Under Objectives you&#039;ll notice there&#039;s a new Objective. You can add more as needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Editing Objectives==&lt;br /&gt;
&lt;br /&gt;
Click an objective in the list than click [[Image:Edit.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will bring up this window.&lt;br /&gt;
{{clear}}&lt;br /&gt;
[[Image:Editobj.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we&#039;re editing our first objective. It may seem a little confusing at a first glance but a lot of it is self explanitory and a little practice will take you a long way.&lt;br /&gt;
&lt;br /&gt;
So what do all these various lines and checkboxes do? &lt;br /&gt;
They effect the objective components at the bottom.&lt;br /&gt;
&lt;br /&gt;
What do they all mean?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: This what the player will read in the objectives menu. For example: “Steal the scepter”, “Don&#039;t kill any guards”, “Get back to where you entered the warehouse”. Its explaining what you want to player read so he/she knows what to do. A good rule to follow is to make them short and to the point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;:These refer to Easy/Medium/Hard difficulty levels. If the author wishes, they can be different for each difficulty. For example: on Hard difficulty the player will have to avoid being seen. On Easy the player will only have to steal 200 gold at the minimum. All Levels means that the objectives that are checked under this will be there regardless of difficulty. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Initial State&#039;&#039;&#039;:This is the condition of the objective at mission start. There are four options. Complete, Incomplete, Invalid, Failed. Typically the objective will be incomplete and the player has to complete it in-game to fulfil the objective.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flags&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Mandatory&#039;&#039; means the objective in question is necessary to complete the game. If it is unchecked than the objective will be optional. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ongoing&#039;&#039; means that the objective won&#039;t show completion until the end of the mission. Use this with do NOT type objectives, eg, do NOT kill.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Irreversible&#039;&#039; means that once the objective is done it will not UNcheck even if logically in the game it becomes no longer true. Example: get a special object. If the player later drops it normally the objective will then UNcheck because the player no longer has got it. But sometimes you don&#039;t want it to reverse. Example: get magic skull. New objective: throw it in magic pool. Player no longer has &#039;got&#039; the skull so normally it would then UNcheck the objective. Make it irreversible and it won&#039;t. Another example is to go to a location. If the player then leaves it would UNcheck so make it irreversible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Visible&#039;&#039; means that objective will be visible in the objectives menu ingame. If unchecked than there will be no objective shown. (The objective will still work, it just won&#039;t show up in the menu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enabling Objectives:&#039;&#039;&#039;&lt;br /&gt;
These are other objectives that must be completed before this objective can be done. Example: &#039;&#039;&amp;quot;When you have completed your main objectives, escape from the castle.&amp;quot;&#039;&#039; So, those main objectives would be the enabling objectives and if the player escapes the castle without doing them first then the escape objective does not check off either.&lt;br /&gt;
&lt;br /&gt;
You can list them as &amp;quot;1 AND 2&amp;quot; if objectives 1&amp;amp;2 need to be completed first.&lt;br /&gt;
&lt;br /&gt;
Or, if there are 3 different objectives for each difficulty (as in most loot objectives) the following will work:  1 AND (2 OR 3 OR 4).  (where 2,3&amp;amp;4 are the loot objectives)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Logic Success:&#039;&#039;&#039;&lt;br /&gt;
These are only needed if you have more than one type component. For example, if you can escape the castle by either of two routes this would be an objective with two go to &#039;&#039;location&#039;&#039; components. These components would be numbered 1 and 2 so the logic success would be &amp;quot;1 or 2&amp;quot; since either would work. If however you wanted say the player to escape the castle via a special corridor then the player has to go to both corridor location and exit castle location so that would be logic success 1 AND 2. Those components need not necessarily be the same type - the player might be required to pull a lever AND escape for example (even though he could escape without pulling the lever but you don&#039;t want him to.)&lt;br /&gt;
&lt;br /&gt;
Note:  I needed to make the &amp;quot;or&amp;quot; lower-case for it to work for me in 2.01.  -RJFerret&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scripts&#039;&#039;&#039;: Under Construction&lt;br /&gt;
&lt;br /&gt;
==Components==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Components&#039;&#039;&#039;: These are the type of objective you want, eg, steal, kill - or rather &#039;types&#039; because each objective can have more than one (eg, go to exit A or go to exit B or it could be go to exit A AND go to exit B! - see logic success) These type components are used by the editor to specify what objectives need to be done. The map author can choose from a variety of options under &#039;&#039;&#039;Type&#039;&#039;&#039; with varying degrees of specification. For example: Knocking out an AI named &amp;quot;Roy&amp;quot;. Not being seen by the ANY enemy. (less examples, should cover this in the coming up tutorial.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Components Flags&#039;&#039;&#039;: Components have their own special flags as well. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Satisfied at Start&#039;&#039;: For some objectives it makes sense to have them done at start. For example: Not killing anyone.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Irreversible&#039;&#039;: Once the objective has reached a certain state, it will stay that way and not change. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Boolean NOT&#039;&#039;: Adds &amp;quot;NOT&amp;quot; to your component so the player has to do the opposite of said objective. For example: Do NOT kill any AI on team 2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Player Responsible&#039;&#039;: The player MUST follow through with the objective himself. For example:The player must kill the zombie to complete the objective, instead of letting something else take care of it.&lt;br /&gt;
&lt;br /&gt;
Now it might seem a bit crazy trying to take all of this in at once, so lets start with something easy.&lt;br /&gt;
&lt;br /&gt;
== Tutorial ==&lt;br /&gt;
&lt;br /&gt;
 *Note:This tutorial is assuming you&#039;ve learned the basics for using Darkradiant.&lt;br /&gt;
&lt;br /&gt;
You should already be in Darkradiant. Start a new map if you&#039;re in an existing one. &lt;br /&gt;
&lt;br /&gt;
We&#039;ll start with the basic cube room. Nothing fancy, just make a room, stick in a player start, a light and plaster on some textures.&lt;br /&gt;
[[Image:cube.png|left]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
For this tutorial, our player is going to have to knock out a guard and steal a trophy.&lt;br /&gt;
&lt;br /&gt;
So lets start with adding the AI, I chose atdm:ai_citywatch. Select him, go into the entity editor (&amp;quot;N&amp;quot;) and change his NAME to &amp;quot;Roy&amp;quot; (without quotes).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now its time to open up our objectives editor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Objmenu.png|left]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
Now as you just learned, click add, click the atdm:target_addobjectives_1 and click add again.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Edit Objective&#039;&#039; window should be open now. Clear the text under &#039;&#039;&#039;Description&#039;&#039;&#039; and type in &amp;quot;Knock out the guard&amp;quot;. Set the initial state to &#039;Complete&#039;. Check the &#039;&#039;&#039;Mandatory&#039;&#039;&#039; and &#039;&#039;&#039;Visible&#039;&#039;&#039; flags.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Time for a new step, click the [[Image:%2Badd.png]] button under &#039;&#039;&#039;Components&#039;&#039;&#039; and the word &amp;quot;Kill&amp;quot; should appear. Select it and you will see some more options. Under &#039;&#039;&#039;Type&#039;&#039;&#039; select &amp;quot;AI is knocked out&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
under &#039;&#039;&#039;Knockout target:&#039;&#039;&#039; select &amp;quot;Name of single entity&amp;quot; and type in the box to the right of it, &amp;quot;roy&amp;quot; (without quotes). Set amount to 1.&lt;br /&gt;
&lt;br /&gt;
Now compare your screen to this, it should be the same.&lt;br /&gt;
[[Image:Editprogress.png|left|]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
If all looks good than click OK.&lt;br /&gt;
&lt;br /&gt;
Its always a good idea to test things to make sure everything is running right. So save your map, get into TDM and load your map.&lt;br /&gt;
&lt;br /&gt;
First, hit ESC and click &#039;&#039;Objectives&#039;&#039;. You should see your objective onscreen.&lt;br /&gt;
[[Image:Onjyes.png]]&lt;br /&gt;
 *NOTE:If you don&#039;t see it on screen, you probably forgot to check the &#039;&#039;&#039;Visible&#039;&#039;&#039; box.&lt;br /&gt;
&lt;br /&gt;
Now its time to test your objective. Exit out of the objectives menu and launch a gas arrow or use the blackjack on poor Roy. When he goes down you should see the words &amp;quot;Objective Complete&amp;quot; appear onscreen and since thats the only objective we&#039;ve added so far you&#039;ll win the mission.&lt;br /&gt;
 *NOTE:If you don&#039;t win nor see the on screen message, go back and try to figure what you did wrong.&lt;br /&gt;
&lt;br /&gt;
If all is well than its time to move on. Exit TDM and go back into Darkradiant. &lt;br /&gt;
&lt;br /&gt;
Now it is time to add the trophy. In your map add a trophy somewhere, I used the entity loot&amp;gt;atdm:loot_trophy_old&lt;br /&gt;
change its name to &amp;quot;trophy&amp;quot; and go back into objectives editor.&lt;br /&gt;
&lt;br /&gt;
Add another objective and edit it. &lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039; should be &#039;&#039;Steal the Trophy&#039;&#039;. State is &#039;&#039;Complete&#039;&#039;, &#039;&#039;&#039;Flags&#039;&#039;&#039; should be &#039;&#039;Mandatory&#039;&#039; and &#039;&#039;Visible&#039;&#039;. Click ADD and select &#039;&#039;&#039;Player possesses item&#039;&#039;. Change &#039;&#039;&#039;Item:&#039;&#039;&#039; to &#039;&#039;Name of single entity&#039;&#039; and type in the box to right, &amp;quot;trophy&amp;quot;. Change the amount to &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Your objective should look like this.&lt;br /&gt;
[[Image:Trophyedit.PNG|left]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
Since this is a tutorial this map is very small and very basic so we are tossing all pre-thought and planning for the objectives out the window. As maps get bigger, more elaborate, complex, so too will the objectives be to suit the level. You might want to the trophy in a vault. Maybe the guards will be patrolling. &lt;br /&gt;
&lt;br /&gt;
Save your map and load it up in TDM. Look at the objectives menu to see if the fresh addition is there. And than take it and see if it completes the objective.&lt;br /&gt;
&lt;br /&gt;
Congratulations!&lt;br /&gt;
&lt;br /&gt;
You now have a basic understanding of how the objectives editor works. For more advanced work, look for more tutorials in the future or go on the forums.&lt;br /&gt;
&lt;br /&gt;
== FAQs &amp;amp; Examples ==&lt;br /&gt;
&lt;br /&gt;
===KO objective but AI already dead!===&lt;br /&gt;
&lt;br /&gt;
;*If I kill the guard I don&#039;t fail the mission, but I can&#039;t complete it either.&lt;br /&gt;
:Answer: I&#039;ll quote Ishtvan for this one. &lt;br /&gt;
:&#039;&#039;&amp;quot;The system is not smart enough to know automatically that someone who&#039;s killed can&#039;t be KO&#039;d later, so if you want it to fail when they&#039;re killed, you have to put that in specifically. Note that this doesn&#039;t have to be a whole &#039;nother objective, it can be a component of the KO objective, so you have two components, KO them, and don&#039;t kill them. We could potentially make this automatic later on, but that&#039;s the way it is right now.&amp;quot;&#039;&#039;&lt;br /&gt;
:Until this is fixed, I&#039;d recommend making a knockout objective optional, unless you want to put in the kill component.&lt;br /&gt;
&lt;br /&gt;
===Kill objective thwarted by another AI===&lt;br /&gt;
&lt;br /&gt;
;*I put a monster in my map and he killed the guard, yet I still passed/failed the objective.&lt;br /&gt;
: Answer: Check the &#039;&#039;&#039;Player Responsible&#039;&#039;&#039; Flag, this means that the player MUST do it himself in order to get credit.&lt;br /&gt;
&lt;br /&gt;
===Leak caused by Objectives Entity===&lt;br /&gt;
&lt;br /&gt;
;*Help! My objectives entity is outside the map and I have a leak! I can&#039;t find it! I even used the pointfile!! help!!!!&lt;br /&gt;
: Answer: The objectives entity is a very small, yellow cube that is spawned around the origin. Its about the size of a light entity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===How to directly trigger an objective or component to complete===&lt;br /&gt;
If the actions that the player has to do in a mission are not directly covered by the normal objectives properties, for example, the player must open a door, then objectives can be triggered to complete by any target entity.&lt;br /&gt;
&lt;br /&gt;
In the objectives editor, to your objective add a component type : custom script. (this might just say &#039;custom&#039; or similar.) The objective now just awaits some external trigger or script in the game to set it complete. To do this with a trigger...&lt;br /&gt;
&lt;br /&gt;
* Create a new entity : &#039;&#039;target_tdm_setobjectivestate&#039;&#039;&lt;br /&gt;
* Give it the properties/values...&amp;lt;br&amp;gt;obj_idN O &amp;lt;br&amp;gt;... where O is the objective number and N is simply the obj_id number if you want several on the same entity. Just use obj_id1 if you only want one.&amp;lt;br&amp;gt; obj_state 1&lt;br /&gt;
&lt;br /&gt;
You must then target that from some [[Triggers|triggering entity]] like a button, lever, door (see [[Doors]]) or you can trigger it from stims &amp;amp; responses or from a custom script.&lt;br /&gt;
&lt;br /&gt;
In a similar way, you can trigger individual components using entity target_tdm_setobjective_component_state. In this give it the properties/values...&lt;br /&gt;
&lt;br /&gt;
* Create a new entity : target_tdm_setobjective_component_state&lt;br /&gt;
* Give it the properties/values...&amp;lt;br&amp;gt;comp_idN C&amp;lt;br&amp;gt;... where N is just this ID number and C is the component number.&amp;lt;br&amp;gt;obj_state 1&lt;br /&gt;
&lt;br /&gt;
Again, trigger that as above.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;obj_state&amp;quot; sets whether the target will mark the objectives or components complete (&amp;quot;1&amp;quot;) or uncheck them, that is make them incomplete (&amp;quot;0&amp;quot;). A target can handle multiple objectives, but it can have only one &amp;quot;obj_state&amp;quot; spawnarg, so it will either check or uncheck all its objectives.&lt;br /&gt;
&lt;br /&gt;
===How to make my invisible objective become visible to the player later===&lt;br /&gt;
&lt;br /&gt;
There are two methods. One way &#039;&#039;adds&#039;&#039; a new objective at the end of the current list of objectives. The other way makes an existing objective visible. This is the one for general use because it appears in the position in the list where you first put it rather than on the end. It makes sense to have your objectives in some kind of order so for example, you might have right at the end of the list &#039;when all else is done, escape from Castle...&#039;&lt;br /&gt;
 &lt;br /&gt;
====To make an invisible objective visible later====&lt;br /&gt;
&lt;br /&gt;
* Create a new entity : &#039;&#039;atdm:target_setobjective_visibility&#039;&#039;&lt;br /&gt;
* Give it the properties/values...&amp;lt;br&amp;gt;obj_idN O &amp;lt;br&amp;gt;... where O is the objective number and N is simply the obj_id number if you want several on the same entity. Just use obj_id1 if you only want one.&lt;br /&gt;
&lt;br /&gt;
You must then target that from some triggering entity like a button, lever, door (see [[Doors]]) or you can trigger it from stims &amp;amp; responses or from a custom script. Note that sometimes it helps to put in a delay (see below.) It will by default then become visible. You can do it the other way round and make an objective become invisible (remember it is still active by default) by changing the spawnarg value 1 to...&lt;br /&gt;
&lt;br /&gt;
obj_visibility 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====To add a new objective on the end of the list====&lt;br /&gt;
&lt;br /&gt;
* In the objectives editor use the top Add button to create a new &#039;&#039;atdm:target_addobjectives&#039;&#039; entity.&lt;br /&gt;
* Add the new objective(s) just as described above&lt;br /&gt;
* Find the atdm:target_addobjectives entity in the map (you normally need to check it is not in the void anyway plus you might like to place it near where it makes sense the new objective shows.&lt;br /&gt;
* Add to the atdm:target_addobjectives entity the property &#039;&#039;wait_for_trigger&#039;&#039; and the value 1. Otherwise it will show right at the start of the game.&lt;br /&gt;
* You then need to target that atdm:target_addobjectives from some triggering entity like a button, lever, door (see [[Doors]]) or you can trigger it from stims &amp;amp; responses or from a custom script. Note that it may help to include a delay (see below.)&lt;br /&gt;
* The new objective(s) will show as added at the end of the list of objectives when triggered.&lt;br /&gt;
&lt;br /&gt;
====Inserting a delay before new objective shows====&lt;br /&gt;
&lt;br /&gt;
It often helps to include a delay from triggering before the &#039;&#039;New Objective&#039;&#039; message shows. To do this:&lt;br /&gt;
&lt;br /&gt;
* Create a &#039;&#039;trigger_relay&#039;&#039; entity.&lt;br /&gt;
* Give it the properties:&lt;br /&gt;
** &#039;&#039;wait -1&#039;&#039;&lt;br /&gt;
** &#039;&#039;delay N&#039;&#039; (replace N with delay time in seconds)&lt;br /&gt;
** &#039;&#039;target&#039;&#039; &amp;lt;the name of the atdm:target_addobjectives&amp;gt;&lt;br /&gt;
** Make your original trigger target this relay instead of the atdm:target_addobjectives directly.&lt;br /&gt;
&lt;br /&gt;
===Completing Objective Components in a Certain Order===&lt;br /&gt;
&lt;br /&gt;
Suppose you want the player to complete two or more parts of an objective but in a certain order. Example : &amp;quot;Close the office door then open the safe.&amp;quot; In that example you want the player to close the door first not just do both in any order. If you just make the two components they default to a Success Logic of 1 AND 2 which means the player must do both to complete the objective but it does not matter which order. So if the player opens the safe and then closes the office door then the objective will check off - perhaps not what you want. This is how to do it if you want to force the order in which the player does the components...&lt;br /&gt;
&lt;br /&gt;
There are two possible outcomes :&lt;br /&gt;
&lt;br /&gt;
If you want the mission to &#039;&#039;&#039;fail&#039;&#039;&#039; set the failure logic for that objective to&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOT(1) AND 2&#039;&#039;, i.e., door is open AND safe is open.&lt;br /&gt;
&lt;br /&gt;
But if you just want the objective to not complete (so the player can try again)...&lt;br /&gt;
&lt;br /&gt;
Make &#039;&#039;&#039;two&#039;&#039;&#039; objectives, both using the door and safe components - the first is invisible but still active:&lt;br /&gt;
&lt;br /&gt;
# Objective 1: success logic: Door closed, safe not open = 1 AND NOT(2)&lt;br /&gt;
# Objective 2: success logic: Door closed, safe open = 1 AND 2&amp;lt;br&amp;gt;(Objective 2 enabling objectives = 1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===An Objective to place an object in a Certain Location===&lt;br /&gt;
&lt;br /&gt;
To make an objective where an object (body, junk object, readable, or even the player) has to be placed somewhere:&lt;br /&gt;
&lt;br /&gt;
* Create a brush where you want the object to be put. This might be the size of a room, a street, or a chest or wherever you want the object.  Better to make it too large than too small--the origin point of the object needs to be inside the brush to activate it.&lt;br /&gt;
* Texture it with common &amp;gt; clip&lt;br /&gt;
* With the brush selected, Create entity &amp;gt; info &amp;gt; info_tdm_objective_location &lt;br /&gt;
* Give this entity a name you can remember like BodyDrop. Write it down or in a text editor&lt;br /&gt;
* Give your object, eg, a ragdoll, a name, eg, JakesCorpse and note it down.&lt;br /&gt;
* If it is not the player, then give it the property &amp;quot;objective_ent&amp;quot; and set it to &amp;quot;1&amp;quot;&lt;br /&gt;
* Menu &amp;gt; Map &amp;gt; Objectives&lt;br /&gt;
* If you haven&#039;t yet got any objectives then click the + Add button at top right.  This creates a atdm:target_addobjectives entity so later make sure it is not in the void or you get a leak. Put it somewhere convenient. It is not visible in game.&lt;br /&gt;
* Select the atdm:target_addobjectives in the Objectives entities list top left&lt;br /&gt;
* In the objectives list below click the +Add button on the right.&lt;br /&gt;
* This creates a new objective in the objectives list. Select it.&lt;br /&gt;
* Click the edit button on the right.&lt;br /&gt;
* Type a description near the top, eg, Carry Jake&#039;s body back to X and drop it in the soandso&lt;br /&gt;
* In the components list further down click the +Add button on the right.&lt;br /&gt;
* This creates a default Kill objective. Select it. Click the Edit button.&lt;br /&gt;
* Just below it click the Type bar and from the list that show select &#039;Item is in location&#039; (&#039;&#039;&#039;NOT&#039;&#039;&#039; Item is in &#039;&#039;&#039;info&#039;&#039;&#039;_location!!)&lt;br /&gt;
* Further down click the bar below &#039;Entity&#039; and select &#039;Name of single entity&#039;&lt;br /&gt;
* On the right of that type or paste in the name of the object (eg ragdoll) entity eg, JakesCorpse&lt;br /&gt;
* Below, click the bar below Location and select &#039;Name of single entity&#039;&lt;br /&gt;
* On the right of that type or paste in the location entity name you gave above, eg, BodyDrop&lt;br /&gt;
* Click the OK button and OK again and save your map.&lt;br /&gt;
&lt;br /&gt;
=== Classic &amp;quot;Get X Loot&amp;quot; Objectives ===&lt;br /&gt;
&lt;br /&gt;
Use the &amp;quot;overall (component specific)&amp;quot; option of &amp;quot;Player posess item&amp;quot; for loot.&lt;br /&gt;
&lt;br /&gt;
How do you find out how much loot is in your map?  The easiest way is to set up an easy objective to lead to mission success.  On the Mission Statistics screen, it will list your loot total.&lt;br /&gt;
&lt;br /&gt;
=== Optional &#039;No alerts&#039;, KO&#039;s, and Kills ===&lt;br /&gt;
&lt;br /&gt;
It is recommended that &#039;No alerts&#039;, KO&#039;s, and Kills be optional or at least provide a separate difficulty level that approximates another where these are enforced. Many players find these restrictions limiting and often very annoying. Some will abandon an FM in frustration if they find they can barely move without triggering an alert - mission failed.&lt;br /&gt;
&lt;br /&gt;
To create a &amp;quot;NOT&amp;quot; objective (do NOT kill X, do NOT find more than 3 potions, etc), you need to select the &amp;quot;Boolean&amp;quot; checkbox.  This will turn the objective into its opposite (&amp;quot;Kill 3 AI&amp;quot; turns into &amp;quot;Do NOT kill 3 AI&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;:  No kill objectives need be set as &amp;quot;Satisfied at Game Start&amp;quot; and &amp;quot;ongoing&amp;quot; or they will not work!&lt;br /&gt;
&lt;br /&gt;
=== Using Objectives to trigger things ===&lt;br /&gt;
&lt;br /&gt;
You can use objectives like a trigger.  Don&#039;t put the target spawnarg on the objective entity, however; you have to use the Objective Editor.  The &amp;quot;Completion Target&amp;quot; and &amp;quot;Failure Target&amp;quot; fields can take any kind of entity that can normally be triggered, like a speaker or an atdm:teleport.&lt;br /&gt;
&lt;br /&gt;
You can trigger more than one thing, but then you must create a trigger_relay entity.  Put the name of that entity in the &amp;quot;Completion Target&amp;quot; field, and then target your other triggers from the relay.&lt;br /&gt;
&lt;br /&gt;
=== The standard &amp;quot;exit here when you&#039;re done objective&amp;quot; ===&lt;br /&gt;
* Place a (large!) brush in the location you want to work as the exit.&lt;br /&gt;
* Give it texture textures/common/clip&lt;br /&gt;
* Make the thing into an entity info_tdm_objective_location&lt;br /&gt;
* Give it name player_exit&lt;br /&gt;
* Go to objectives editor and make an objective &amp;quot;After you&#039;re done, go to the exit&amp;quot; or something like that. Set it to be INCOMPLETE and mandatory.&lt;br /&gt;
* Set enabling objectives. Here you need to set which objectives need to be complete for the exit to work. If you have objective numbers 1 and 2 must be completed in order the player to exit, you need to put text &amp;quot;1 AND 2&amp;quot; in the enabling objectives box. If you need to have objectives 1,2 and 5 completed you need to put &amp;quot;1 AND 2 AND 5&amp;quot;  If you have some objectives that only appear under certain difficulty levels (like loot objectives), you can do this:  Enabling objectives: 1 AND (2 OR 3 OR 4)&lt;br /&gt;
You can check the objective numbers in the objective editor window under &amp;quot;#&amp;quot; mark.&lt;br /&gt;
* set the component to be:&lt;br /&gt;
* Type: item in location  &#039;&#039;&#039;(NOT item in info_location!!)&#039;&#039;&#039;&lt;br /&gt;
* Entity: any entity with SDK-level spawnclass idPlayer  (Note the capital &amp;quot;P&amp;quot;--won&#039;t work without!!)&lt;br /&gt;
* Location: name of single entity player_exit&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;:  You must make the brush for the info_tdm_objective_location &#039;&#039;&#039;large&#039;&#039;&#039;!  I have had this objective completely fail when using a vaguely player-sized brush.  Expanding the brush to fill the entire room made the objective work.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
My objective doesn&#039;t work, what&#039;s wrong?  Can&#039;t count the number of times I had to ask that.  Here are a list of helpful suggestions:&lt;br /&gt;
&lt;br /&gt;
* Case sensitivity.  I had an objective that didn&#039;t work because I had &amp;quot;idplayer&amp;quot; instead of &amp;quot;idPlayer&amp;quot;.&lt;br /&gt;
* The most common error with the exit objective is using the &#039;in info_location&#039; component rather than the &#039;in location&#039; component.&lt;br /&gt;
* The info_tdm_objective_location entity uses the spawnarg interval with 1 second as default. This might not be long enough for a small volume if the player (or other entity) can pass through in less. It should be as high as possible for performance but not so high the player might pass through in less.&lt;br /&gt;
* No kill objectives need be set as &amp;quot;Satisfied at Game Start&amp;quot; or they will not work!&lt;br /&gt;
&lt;br /&gt;
===Technical info===&lt;br /&gt;
&lt;br /&gt;
;*I have some other questions about objectives&lt;br /&gt;
: Answer:This article talks about more specific, more technical and advanced work. [[Objectives]]&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}} {{darkradiant}}&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Lightning&amp;diff=18243</id>
		<title>Lightning</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Lightning&amp;diff=18243"/>
		<updated>2015-09-07T19:48:27Z</updated>

		<summary type="html">&lt;p&gt;SteveL: +Flashing decals&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;written by Flanders&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Prefab and settings==&lt;br /&gt;
&lt;br /&gt;
Here we use func_fx’s to simulate random interval lightning. Start by loading up the tdm_sky_storm_thunder prefab in prefabs/nature/skyboxes. The func_fx underneath the [[skybox]] is used to create a light and a sound inside your map. Move it to a position high in your map where you want the flash to appear. The func_fx in the [[skybox]] makes a flash in the sky.&lt;br /&gt;
&lt;br /&gt;
To trigger the lightning a trigger_timer is used. The time between triggering is a random time between “wait” ± “random” in seconds. The trigger_timer targets the func_fx’s. The fx effects are defined in thunder.fx in the fx folder. The fx that is used can be set with the “fx” property.&lt;br /&gt;
&lt;br /&gt;
* fx/thunder.fx for standard lightning&lt;br /&gt;
* fx/thunder_distant.fx for distant lightning (dim light, long time between flash and sound)&lt;br /&gt;
* fx/thunder_close.fx for close lightning (bright light, immediate sound)&lt;br /&gt;
&lt;br /&gt;
These are for the fx inside the [[skybox]]:&lt;br /&gt;
&lt;br /&gt;
* fx/thunder_skylight.fx &lt;br /&gt;
* fx/thunder_skylight_distant.fx&lt;br /&gt;
* fx/thunder_skylight_close.fx&lt;br /&gt;
&lt;br /&gt;
==Skybox==&lt;br /&gt;
&lt;br /&gt;
Here there is a short explanation on how to change the appearance of the used [[skybox]].&lt;br /&gt;
&lt;br /&gt;
To change the colour of the sky select the big light and edit its properties. To change the colour of the small lights in the sky edit the two smaller lights. To make the clouds move at a different speed select the func_static  with the cloud texture and add “shaderparm3” to it and give it a value (0.5 ~ 3). You can change the size of the clouds with the surface inspector, as long as you make sure it fits a rounded number of times so that there are no seams when the texture scrolls. As you can see, the whole [[skybox]] can be edited by editing the objects in the prefab [[skybox]]. The sky that is used in your map is just a projection of the stuff surrounding the info_portalsky.&lt;br /&gt;
&lt;br /&gt;
==Flashing decals, webs==&lt;br /&gt;
&lt;br /&gt;
Decals like spider webs that get lit by nearby lights might flash in the lightning even when they are deep in an underground cave. To fix this, you need to place a visportal that&#039;s been forced shut, in between the decal and the thunder_fx entity. There are 2 ways to force a portal shut: put a closed door in it, or a closed func_portal. If you don&#039;t want to use an auto-closing door to fix your scene, use a func_portal that&#039;s set to close when the player is a short distance away.&lt;br /&gt;
&lt;br /&gt;
The problem happens because webs and other translucent-but-lit decals don&#039;t ever get shadowed. So the surrounding walls don&#039;t shadow them from the lightning flash. A portal that&#039;s been shut by a door or func_portal effectively seals off the visleafs behind from all lights the other side. &lt;br /&gt;
&lt;br /&gt;
{{editing}}&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Light_Properties&amp;diff=18215</id>
		<title>Light Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Light_Properties&amp;diff=18215"/>
		<updated>2015-06-26T19:32:28Z</updated>

		<summary type="html">&lt;p&gt;SteveL: + Other light settings / ai_see spawnarg, plus regularise formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction == &lt;br /&gt;
&lt;br /&gt;
For Doom 3 (and subsequently, The Dark Mod), there are 4 different types of lights at our disposal. Each has their own advantages and drawbacks, and hopefully this article will help to familiarize The Dark Mod hopefuls with their use. For information on creating lights and a lot of other useful information, see [[A - Z Beginner Full Guide Start Here!]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Light Volume Properties==&lt;br /&gt;
&lt;br /&gt;
=== Point Light ===&lt;br /&gt;
&lt;br /&gt;
A point light is the default light (also the default for fog). No option must be checked to make a light a point light. A point light casts light, and subsequently shadows in all directions evenly, falling off after a distance defined by the light texture. This works best for most small indoor and outdoor lighting, like lamps, candles, fireplaces etc. For this reason, it is going to be the most used type.&lt;br /&gt;
&lt;br /&gt;
* Note, a misconception about Point Light is that they project spherically. The box shaped bounding volume in Dark Radiant is no mere simplification, it is the literal area affected by the light for calculation purposes. Point Light volumes should be perceived as cylindrical prisms that on one axis are shaped by the silhouette of the [[Light_Properties#Lighting_Textures | projection texture]] (think of a stack of cheese cut with a cookie cutter) and the other axis (z-axis) traditionally determines the distance from origin brightness (usually vertical... or how tall you make your cheese stack) with the LightFalloffImage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projected Light ===&lt;br /&gt;
&lt;br /&gt;
Projected light is just as the name suggests. It is probably more intuitive and easier to use than a parallel light and is better for things like projecting a window-shaped light on the floor of a room or a spotlight on a wall. To make one, select projected instead of the default omni option at the top of the light inspector. &lt;br /&gt;
&lt;br /&gt;
This creates a triangular prism as the bounding box for the light (instead of a rectangular prism like a regular light), with the point ending right at the entity itself. This can be rotated using any of the XYZ rotation buttons or manually using DarkRadiant’s rotation tool (shortcut R). &lt;br /&gt;
&lt;br /&gt;
You can also manipulate the projected light via the vertices (shortcut V to enable vertices dragging). By dragging the vertices in the center of the projected square, you can lengthen and change the angle of the projection while keeping the projected square the same size. To resize the projection, use the two side vertices in the correct XYZ grid view. Making the bounding box flat against a surface (like a floor) is usually unnecessary (for example, making a moonlight window light on a floor or wall), because with shadows enabled and making the projection long enough to intersect the plane on which the shadow is to be cast, the full shadow will be cast (its simple geometry and just requires minor toying). &lt;br /&gt;
&lt;br /&gt;
As with all the lights, projected lights have a full range of color and texture options to let the mapper find just the effect they need, allowing you to create a great atmosphere for your map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parallel Light ===&lt;br /&gt;
&lt;br /&gt;
A light is said to be parallel when the parallel checkbox is checked in the light inspector. It is subject to all the same options as a point light, but it has a few distinct differences. A parallel light tends to not care exactly where the entity itself is placed. The most important thing is where the light_center vertex is placed and where the light entities bounding box intersects with elements in your map. &lt;br /&gt;
&lt;br /&gt;
The light_center vertex starts right in the middle of the entity. The main difference between the parallel and point lights is that a parallel light does not radiate from the origin around the entity itself. What controls the direction that shadows are cast is the placement of the light_center vertex. Shadows will run parallel (hence the name) to a line between this vertices and the light entity itself. As such, this makes it an excellent choice for sunlight or moonlight. As such, it has some of the elements of a point light and a projected light, it can seem to radiate in a circle (if you use the appropriate texture) whilst casting a shadow in any direction preferred. &lt;br /&gt;
&lt;br /&gt;
Switch to Vertex mode in [[DarkRadiant]] to drag the light_center vertex of your selected light entity.&lt;br /&gt;
&lt;br /&gt;
 Posted by Greebo: Also, note that a parallel light will only light surfaces &amp;quot;matching&amp;quot; the direction of the &amp;quot;light vector&amp;quot; &amp;lt;br&amp;gt;(origin minus light_center). All other surfaces will stay completely unlit, therefore it should be combined with an ambient light to &amp;lt;br&amp;gt;achieve good lighting effects. [http://modetwo.net/darkmod/index.php?s=&amp;amp;showtopic=8091&amp;amp;view=findpost&amp;amp;p=159842]&lt;br /&gt;
&lt;br /&gt;
What this means is, you can draw a line from the center vertex to the light entity&#039;s origin and on from there, and only objects in the direction of that line will be lit. The light won&#039;t light 4 walls of a room and the floor, it would only light one of the walls or the floor (or ceiling)&lt;br /&gt;
&lt;br /&gt;
==== Troubleshooting Parallel Lights ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I added a parallel light but I can’t see any light at all!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Parallel lights can have some quirks. The light seems to fail and do nothing when intersecting multiple walls that are parallel to the face the light is actually casting on. It seems the light will work as long as it doesn’t intersect a face parallel to the one it is casting light on. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I have a parallel light but it casts a jagged light on my floor!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to above, a parallel light can sometimes have anomalies when intersecting multiple walls and a floor. Since having the light intersect multiple walls when it can only cast on one of them, having a massive bounding box is pointless anyways so pay attention to what the light is touching and you should be fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Light Interaction Properties==&lt;br /&gt;
&lt;br /&gt;
=== Normal Light ===&lt;br /&gt;
&lt;br /&gt;
This is the default light type. It performs all the surface interaction stages and shadow calculations. It has the heaviest performance impact.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ambient Light ===&lt;br /&gt;
&lt;br /&gt;
Ambient light is really just a lighting texture, but it is also a specific item that is needed in practically every map, so for those purposes it will be treated as if it were its own subset of lights.&lt;br /&gt;
&lt;br /&gt;
Properties: No shadows, No specular, Bumpmapping or Directionality (Note: The &amp;quot;Enhance Ambient&amp;quot; does add Bumpmapping )&lt;br /&gt;
&lt;br /&gt;
Use the ambientLight keyword.&lt;br /&gt;
&lt;br /&gt;
An ambient light can be any form: it can be a point, parallel or even projected (though projected would probably be useless). &lt;br /&gt;
&lt;br /&gt;
The only requirement of an ambient light is to use one of the available ambient light textures, accessible by opening the light inspector (with the shortcut L in DarkRadiant, and get used to using it), and selecting ambientlightnfo from the list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ambient Light is covered in more detail in [[A_-_Z_Beginner_Full_Guide_Page_2#Ambient_Light:_Gloom_not_Doom| Ambient Light: Gloom not Doom]]&lt;br /&gt;
&lt;br /&gt;
* To understand The Dark Mod&#039;s unique ambient light detection system see: [[Virtual Darkness]]&lt;br /&gt;
&lt;br /&gt;
* Ambient Light can be set to automatically adjust color and brightness per &amp;quot;location&amp;quot; see: [[Location Settings]] and [[Dynamic ambient light]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fog Light ===&lt;br /&gt;
&lt;br /&gt;
This applies Doom 3&#039;s style distance fog to a light volume. The texture applied will become more opaque with distance away from the viewer. There is a variant called No Portal Fog which will not apply opaque fog to Portal areas in view. ( [[A_-_Z_Beginner_Full_Guide_Page_3#Fog|Beginner Tutorial: Fog]] )&lt;br /&gt;
&lt;br /&gt;
In rare cases, you may wish for some surface inside a fog-volume to be fog-free. You can use the &amp;quot;noFog&amp;quot; keyword in the material definition for the texture applied to this surface to keep it from being &amp;quot;fogged&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Very thin fog (or BlendLight ) can also be used to soften the apparent light interactions near surfaces in a similar manner to the Post Process shader effect but with more mapper control. You can fake certain radiosity effects simply by amplifying small ambient light with small thin fog volumes.     &lt;br /&gt;
&lt;br /&gt;
Use the fogLight keyword.&lt;br /&gt;
&lt;br /&gt;
==== noFogBoundary ====&lt;br /&gt;
&lt;br /&gt;
Fog lights don&#039;t actually paint mist in the air, which would slow down performance quite a bit. They achieve their effect by fogging out the colour of the surfaces that they hit, proportionate to the depth of fog that lies between the player and the surface. In addition, if there is no surface between the player and the edge of the fog volume, they paint fog on the invisible walls of their own bounding volume. That&#039;s needed for a large open scene, for example, where there might be no surface between the player and the edge of the fog volume. If you&#039;re in a misty forest, and there happened to be no tree visible in a certain direction, you&#039;d expect to see grey fog rather than clear space between the fogged trees.&lt;br /&gt;
&lt;br /&gt;
Sometimes you don&#039;t want that to happen, for example if you&#039;re using a very large but very light fog to simulate atmospheric perspective in a town. You want the colour and detail of buildings to fade with distance, but you don&#039;t want heavy fog blocking the view of the sky in the gaps between buildings where you see to the very edge of the big fog light. You can use spawnarg &amp;quot;noFogBoundary&amp;quot; for that. It lets fog paint on solid surfaces, while leaving empty space and caulk sky free of fog effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Blend Light ===&lt;br /&gt;
&lt;br /&gt;
Blend lights can be considered to be like volumetric decals. They do not perform most of the interaction shader operations and merely apply a texture to a volume using an [http://web.archive.org/web/20110111010457/http://www.modwiki.net/wiki/Blend_%28Material_stage_keyword%29 OpenGL Blend Mode]. Blend lights have the least performance impact. Blend lights can also be used to create [http://www.doom3world.org/phpbb2/viewtopic.php?f=1&amp;amp;t=12256&amp;amp;start=0&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a &amp;quot;negative light&amp;quot;]. &lt;br /&gt;
&lt;br /&gt;
Example negative light shader:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lights/bdog_testBlendLight2&lt;br /&gt;
{&lt;br /&gt;
 blendLight&lt;br /&gt;
 lightFalloffImage makeintensity( textures/blackdog/blendlight_falloff_inverse.tga )&lt;br /&gt;
 {&lt;br /&gt;
 blend gl_zero, gl_one_minus_src_color&lt;br /&gt;
 map textures/blackdog/blackdog_icon_inverse.tga&lt;br /&gt;
 zeroclamp&lt;br /&gt;
 //alphazeroclamp&lt;br /&gt;
 colored&lt;br /&gt;
 } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the blendLight keyword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Spectrum ===&lt;br /&gt;
&lt;br /&gt;
You may use the &amp;quot;spectrum&amp;quot; keyword to isolate specific lights to specific materials which have the same spectrum value in their material definition.&lt;br /&gt;
[http://web.archive.org/web/20080704080454/http://www.modwiki.net/wiki/Spectrum_%28Material_global_keyword%29 Spectrum Keyword at Modwiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Light Settings ==&lt;br /&gt;
&lt;br /&gt;
There are several settings with which to customize your lights. These settings allow the mapper to customize the look of a light (or a combination of lights) into a near infinity of looks. All are accessed through the light inspector (shortcut of L in DarkRadiant)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Color ===&lt;br /&gt;
&lt;br /&gt;
The color palette allows the mapper to pick the color of the light emitted, arguably one of the most useful controls the mapper has over a light. To access it, click the button under the “Colour” heading. From there, adjust the settings until you find a correct color (can take some trial and error). In a game like The Dark Mod or Doom 3, where darkness is often more prevalent than light, the color picked often needs to be darker than expected. Without a direct brightness option, the color takes on this task. For a low level ambient light, the color picked would be almost pitch black. A pitch black light would not cast any light, but anything less than pitch black will cast a faint light. As such, it can take some trial and error to find the correct light for a situation, as intiailly, one is likely to pick a seemingly correct color only to find it is far too bright. &lt;br /&gt;
&lt;br /&gt;
 Remember: changing light settings or adding lights (and models) does not require re-compiling the map!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Radius ===&lt;br /&gt;
&lt;br /&gt;
The &#039;radius&#039; of your light can be changed by dragging its corners around in the 2d windows. Doom 3 lights do not have an actual radius, they are actually square lights and will light up everything they touch inside their bounding box in the editor. They will evenly light everything to their edges. While square lights might seem fairly odd there are options to make them more believable and have a nice fade, namely the &#039;texture&#039; applied.&lt;br /&gt;
&lt;br /&gt;
 Tip: you can rotate a light so only one corner will touch a wall and make a triangular shaped light. &lt;br /&gt;
&lt;br /&gt;
 Or rotate it so 2 corners touch a wall and make a line of light.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changing Radius of Light Entity:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you put a premade light entity into your map, the radius of the light won&#039;t be visible.  &lt;br /&gt;
&lt;br /&gt;
To change it, use the following syntax (and whichever value you wish):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;set _color on flame&amp;quot; &amp;quot;0.9 0.8 0.7&amp;quot;&lt;br /&gt;
 &amp;quot;set light_radius on flame&amp;quot; &amp;quot;250 250 250&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With lanterns and such use &#039;light&#039; and with torches and candles etc use &#039;flame&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;set _color on light&amp;quot; &amp;quot;0.9 0.8 0.7&amp;quot;&lt;br /&gt;
 &amp;quot;set light_radius on light&amp;quot; &amp;quot;250 250 250&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Copied from Baddcog&#039;s old &amp;quot;Lighting A to Z&amp;quot; article)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parallel === &lt;br /&gt;
&lt;br /&gt;
Selecting this option turns the light into a parallel light (as opposed to a point or projected light). See [[Light Properties#Parallel Light|Parallel Light]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Do not cast shadows (fast) ===&lt;br /&gt;
&lt;br /&gt;
As the name suggests, this setting causes the light to not cast shadows on any object. This can cause the light itself to not be confined by walls, which can sometimes be beneficial and sometimes not. The main purpose of enabling this option is performance. Shadows are processor intensive and are not needed in some cases, so removing them wherever not beneficial to gameplay can vastly improve performance. Note that ambient lights never cast any shadows. Another way to improve performance similarly is to set the entity property on a model or func_static (this doesn’t work on worldspawn) &amp;lt;tt&amp;gt;noshadows&amp;lt;/tt&amp;gt; to 1.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Further details&#039;&#039;&#039;: [[Turning Shadows Off]] , [[Noselfshadows]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skip Specular Lighting ===&lt;br /&gt;
&lt;br /&gt;
Specular Lighting refers to a texture&#039;s specular map, wherein a flat surface (such as a wall) is painted with a texture that has a specular component. This causes a surface to have shinier and duller parts on a flat surface based on the darkness of the corresponding location on the specular map. Not all textures have specular maps. Checking this option could improve performance or remove the effect if it is not wanted. [http://www.modwiki.net/wiki/Texturing#Specular_maps]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skip Diffuse Lighting ===&lt;br /&gt;
&lt;br /&gt;
Like Specular lighting, diffuse lighting also references an attribute of a texture, the Diffuse Map. Diffuse Maps determine the intensity and color of the light reflected off of the different elements of a texture (an example being the difference between bricks and the mortar in between, as well as different bricks having different properties as well giving a less bland appearance). &lt;br /&gt;
[http://www.modwiki.net/wiki/Texturing#Diffuse_maps]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other light settings ==&lt;br /&gt;
&lt;br /&gt;
=== AI sight ===&lt;br /&gt;
&lt;br /&gt;
Spawnarg &#039;&#039;&#039;ai_see&#039;&#039;&#039; controls whether the light is visible to AI. It defaults to &amp;quot;1&amp;quot;, i.e. the light does help AI to see. You can set this spawnarg to &amp;quot;0&amp;quot; to make accent lights that will (1) not affect the player&#039;s lightgem, and (2) won&#039;t make suspicious objects like rope arrows more visible to AI. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Chandeliers ==&lt;br /&gt;
&lt;br /&gt;
Typically chandeliers are setup with multiple particle flames, but just one light entity (for better performance).  Bind the candles to the chandelier, then if one is doused, all will extinguish.  (See the prefab for an example.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lighting Textures ==&lt;br /&gt;
&lt;br /&gt;
[[Image:LT_Projectedlight.png|400px|thumb|Rich_is_Bored&#039;s Example]]&lt;br /&gt;
&lt;br /&gt;
The lighting textures are also accessed in the light inspector. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lights can be modified by two different texture types:&lt;br /&gt;
&lt;br /&gt;
* Projection Image - This is the texture that is projected on the surface&lt;br /&gt;
* LightFalloffImage - This texture varies the intensity of the light through the volume along the Z Axis &lt;br /&gt;
* (Notes: While the Falloff Image is a 2D texture it is rendered as 1D (one dimensional). You will notice that almost all Falloff Images are thin strips with perpendicular stripes. Traditionally, Falloff will be used to diminish the light with distance to the source but you can violate the physics of real lights and have the intensity increase with distance or vary intensity from bright to dim to bright... etc. )&lt;br /&gt;
&lt;br /&gt;
These textures allow the mapper to change the intensity and falloff of a light. &lt;br /&gt;
&lt;br /&gt;
Light textures with the addition of material keywords like [https://modwiki.xnet.fi/Scroll_%28Material_stage_keyword%29 scroll],[https://modwiki.xnet.fi/Rotate_%28Material_stage_keyword%29 rotate], etc. will grant lights the ability to animate and produce special effects such as; &lt;br /&gt;
&lt;br /&gt;
* A moving light for a fireplace &lt;br /&gt;
* A candle or torch&lt;br /&gt;
* A light flickering along with sound volume. &lt;br /&gt;
&lt;br /&gt;
One can also apply a fog texture to the light (the only way built into Doom 3 to create fog). Color is of a similar concern when [[A_-_Z_Beginner_Full_Guide_Page_3#Fog|creating fog]], as noted in [[Light Properties#Color|Color]]&lt;br /&gt;
&lt;br /&gt;
* A typical &amp;quot;Light Shader&amp;quot; [http://www.iddevnet.com/doom3/materials.php material] definition&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lights/My_Custom_Light1&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  lightFalloffImage makeIntensity( textures/My_Custom_Light1_Z ) // Falloff Image&lt;br /&gt;
&lt;br /&gt;
  { &lt;br /&gt;
  forceHighQuality&lt;br /&gt;
  map textures/My_Custom_Light1_XY // Z-Projection Image&lt;br /&gt;
  zeroClamp&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
(For advanced detail and techniques see [[Light Textures and Falloff Images]] )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further reading == &lt;br /&gt;
&lt;br /&gt;
* [[Performance:_Essential_Must-Knows#Lighting_Performance_Options|Lighting Performance Options]]&lt;br /&gt;
* [[Relighting Lights]]&lt;br /&gt;
* A great tutorial on outdoor lighting can be found here: http://www.katsbits.com/htm/tutorials/doom_3_lighting_outdoor.htm&lt;br /&gt;
* Modwiki&#039;s summarized Doom 3 lighting article: [http://www.modwiki.net/wiki/Light Light]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;br /&gt;
[[Category:Lighting]]&lt;br /&gt;
[[Category:Ambient Light]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Light_Properties&amp;diff=18214</id>
		<title>Light Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Light_Properties&amp;diff=18214"/>
		<updated>2015-06-26T19:20:37Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Fog Light */ +noFogBoundary spawnarg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;NOTE: &amp;lt;br&amp;gt;This is a first-draft article. It has not yet undergone quality control, so take information with a grain of salt &amp;lt;br&amp;gt; as it is subject to change &#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Introduction == &lt;br /&gt;
&lt;br /&gt;
For Doom 3 (and subsequently, The Dark Mod), there are 4 different types of lights at our disposal. Each has their own advantages and drawbacks, and hopefully this article will help to familiarize The Dark Mod hopefuls with their use. For information on creating lights and a lot of other useful information, see [[A - Z Beginner Full Guide Start Here!]]&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
==Light Volume Properties==&lt;br /&gt;
&lt;br /&gt;
=== Point Light ===&lt;br /&gt;
&lt;br /&gt;
A point light is the default light (also the default for fog). No option must be checked to make a light a point light. A point light casts light, and subsequently shadows in all directions evenly, falling off after a distance defined by the light texture. This works best for most small indoor and outdoor lighting, like lamps, candles, fireplaces etc. For this reason, it is going to be the most used type.&lt;br /&gt;
&lt;br /&gt;
* Note, a misconception about Point Light is that they project spherically. The box shaped bounding volume in Dark Radiant is no mere simplification, it is the literal area affected by the light for calculation purposes. Point Light volumes should be perceived as cylindrical prisms that on one axis are shaped by the silhouette of the [[Light_Properties#Lighting_Textures | projection texture]] (think of a stack of cheese cut with a cookie cutter) and the other axis (z-axis) traditionally determines the distance from origin brightness (usually vertical... or how tall you make your cheese stack) with the LightFalloffImage.&lt;br /&gt;
&lt;br /&gt;
=== Projected Light ===&lt;br /&gt;
&lt;br /&gt;
Projected light is just as the name suggests. It is probably more intuitive and easier to use than a parallel light and is better for things like projecting a window-shaped light on the floor of a room or a spotlight on a wall. To make one, select projected instead of the default omni option at the top of the light inspector. &lt;br /&gt;
&lt;br /&gt;
This creates a triangular prism as the bounding box for the light (instead of a rectangular prism like a regular light), with the point ending right at the entity itself. This can be rotated using any of the XYZ rotation buttons or manually using DarkRadiant’s rotation tool (shortcut R). &lt;br /&gt;
&lt;br /&gt;
You can also manipulate the projected light via the vertices (shortcut V to enable vertices dragging). By dragging the vertices in the center of the projected square, you can lengthen and change the angle of the projection while keeping the projected square the same size. To resize the projection, use the two side vertices in the correct XYZ grid view. Making the bounding box flat against a surface (like a floor) is usually unnecessary (for example, making a moonlight window light on a floor or wall), because with shadows enabled and making the projection long enough to intersect the plane on which the shadow is to be cast, the full shadow will be cast (its simple geometry and just requires minor toying). &lt;br /&gt;
&lt;br /&gt;
As with all the lights, projected lights have a full range of color and texture options to let the mapper find just the effect they need, allowing you to create a great atmosphere for your map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parallel Light ===&lt;br /&gt;
&lt;br /&gt;
A light is said to be parallel when the parallel checkbox is checked in the light inspector. It is subject to all the same options as a point light, but it has a few distinct differences. A parallel light tends to not care exactly where the entity itself is placed. The most important thing is where the light_center vertex is placed and where the light entities bounding box intersects with elements in your map. &lt;br /&gt;
&lt;br /&gt;
The light_center vertex starts right in the middle of the entity. The main difference between the parallel and point lights is that a parallel light does not radiate from the origin around the entity itself. What controls the direction that shadows are cast is the placement of the light_center vertex. Shadows will run parallel (hence the name) to a line between this vertices and the light entity itself. As such, this makes it an excellent choice for sunlight or moonlight. As such, it has some of the elements of a point light and a projected light, it can seem to radiate in a circle (if you use the appropriate texture) whilst casting a shadow in any direction preferred. &lt;br /&gt;
&lt;br /&gt;
Switch to Vertex mode in [[DarkRadiant]] to drag the light_center vertex of your selected light entity.&lt;br /&gt;
&lt;br /&gt;
 Posted by Greebo: Also, note that a parallel light will only light surfaces &amp;quot;matching&amp;quot; the direction of the &amp;quot;light vector&amp;quot; &amp;lt;br&amp;gt;(origin minus light_center). All other surfaces will stay completely unlit, therefore it should be combined with an ambient light to &amp;lt;br&amp;gt;achieve good lighting effects. [http://modetwo.net/darkmod/index.php?s=&amp;amp;showtopic=8091&amp;amp;view=findpost&amp;amp;p=159842]&lt;br /&gt;
&lt;br /&gt;
What this means is, you can draw a line from the center vertex to the light entity&#039;s origin and on from there, and only objects in the direction of that line will be lit. The light won&#039;t light 4 walls of a room and the floor, it would only light one of the walls or the floor (or ceiling)&lt;br /&gt;
&lt;br /&gt;
==== Troubleshooting Parallel Lights ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I added a parallel light but I can’t see any light at all!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Parallel lights can have some quirks. The light seems to fail and do nothing when intersecting multiple walls that are parallel to the face the light is actually casting on. It seems the light will work as long as it doesn’t intersect a face parallel to the one it is casting light on. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I have a parallel light but it casts a jagged light on my floor!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to above, a parallel light can sometimes have anomalies when intersecting multiple walls and a floor. Since having the light intersect multiple walls when it can only cast on one of them, having a massive bounding box is pointless anyways so pay attention to what the light is touching and you should be fine.&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
==Light Interaction Properties==&lt;br /&gt;
&lt;br /&gt;
=== Normal Light ===&lt;br /&gt;
&lt;br /&gt;
This is the default light type. It performs all the surface interaction stages and shadow calculations. It has the heaviest performance impact.&lt;br /&gt;
&lt;br /&gt;
=== Ambient Light ===&lt;br /&gt;
&lt;br /&gt;
Ambient light is really just a lighting texture, but it is also a specific item that is needed in practically every map, so for those purposes it will be treated as if it were its own subset of lights.&lt;br /&gt;
&lt;br /&gt;
Properties: No shadows, No specular, Bumpmapping or Directionality (Note: The &amp;quot;Enhance Ambient&amp;quot; does add Bumpmapping )&lt;br /&gt;
&lt;br /&gt;
Use the ambientLight keyword.&lt;br /&gt;
&lt;br /&gt;
An ambient light can be any form: it can be a point, parallel or even projected (though projected would probably be useless). &lt;br /&gt;
&lt;br /&gt;
The only requirement of an ambient light is to use one of the available ambient light textures, accessible by opening the light inspector (with the shortcut L in DarkRadiant, and get used to using it), and selecting ambientlightnfo from the list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ambient Light is covered in more detail in [[A_-_Z_Beginner_Full_Guide_Page_2#Ambient_Light:_Gloom_not_Doom| Ambient Light: Gloom not Doom]]&lt;br /&gt;
&lt;br /&gt;
* To understand The Dark Mod&#039;s unique ambient light detection system see: [[Virtual Darkness]]&lt;br /&gt;
&lt;br /&gt;
* Ambient Light can be set to automatically adjust color and brightness per &amp;quot;location&amp;quot; see: [[Location Settings]] and [[Dynamic ambient light]]&lt;br /&gt;
&lt;br /&gt;
=== Fog Light ===&lt;br /&gt;
&lt;br /&gt;
This applies Doom 3&#039;s style distance fog to a light volume. The texture applied will become more opaque with distance away from the viewer. There is a variant called No Portal Fog which will not apply opaque fog to Portal areas in view. ( [[A_-_Z_Beginner_Full_Guide_Page_3#Fog|Beginner Tutorial: Fog]] )&lt;br /&gt;
&lt;br /&gt;
In rare cases, you may wish for some surface inside a fog-volume to be fog-free. You can use the &amp;quot;noFog&amp;quot; keyword in the material definition for the texture applied to this surface to keep it from being &amp;quot;fogged&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Very thin fog (or BlendLight ) can also be used to soften the apparent light interactions near surfaces in a similar manner to the Post Process shader effect but with more mapper control. You can fake certain radiosity effects simply by amplifying small ambient light with small thin fog volumes.     &lt;br /&gt;
&lt;br /&gt;
Use the fogLight keyword.&lt;br /&gt;
&lt;br /&gt;
==== noFogBoundary ====&lt;br /&gt;
Fog lights don&#039;t actually paint mist in the air, which would slow down performance quite a bit. They achieve their effect by fogging out the colour of the surfaces that they hit, proportionate to the depth of fog that lies between the player and the surface. In addition, if there is no surface between the player and the edge of the fog volume, they paint fog on the invisible walls of their own bounding volume. That&#039;s needed for a large open scene, for example, where there might be no surface between the player and the edge of the fog volume. If you&#039;re in a misty forest, and there happened to be no tree visible in a certain direction, you&#039;d expect to see grey fog rather than clear space between the fogged trees.&lt;br /&gt;
&lt;br /&gt;
Sometimes you don&#039;t want that to happen, for example if you&#039;re using a very large but very light fog to simulate atmospheric perspective in a town. You want the colour and detail of buildings to fade with distance, but you don&#039;t want heavy fog blocking the view of the sky in the gaps between buildings where you see to the very edge of the big fog light. You can use spawnarg &amp;quot;noFogBoundary&amp;quot; for that. It lets fog paint on solid surfaces, while leaving empty space and caulk sky free of fog effects.&lt;br /&gt;
&lt;br /&gt;
=== Blend Light ===&lt;br /&gt;
&lt;br /&gt;
Blend lights can be considered to be like volumetric decals. They do not perform most of the interaction shader operations and merely apply a texture to a volume using an [http://web.archive.org/web/20110111010457/http://www.modwiki.net/wiki/Blend_%28Material_stage_keyword%29 OpenGL Blend Mode]. Blend lights have the least performance impact. Blend lights can also be used to create [http://www.doom3world.org/phpbb2/viewtopic.php?f=1&amp;amp;t=12256&amp;amp;start=0&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a &amp;quot;negative light&amp;quot;]. &lt;br /&gt;
&lt;br /&gt;
Example negative light shader:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lights/bdog_testBlendLight2&lt;br /&gt;
{&lt;br /&gt;
 blendLight&lt;br /&gt;
 lightFalloffImage makeintensity( textures/blackdog/blendlight_falloff_inverse.tga )&lt;br /&gt;
 {&lt;br /&gt;
 blend gl_zero, gl_one_minus_src_color&lt;br /&gt;
 map textures/blackdog/blackdog_icon_inverse.tga&lt;br /&gt;
 zeroclamp&lt;br /&gt;
 //alphazeroclamp&lt;br /&gt;
 colored&lt;br /&gt;
 } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the blendLight keyword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Spectrum ===&lt;br /&gt;
&lt;br /&gt;
You may use the &amp;quot;spectrum&amp;quot; keyword to isolate specific lights to specific materials which have the same spectrum value in their material definition.&lt;br /&gt;
[http://web.archive.org/web/20080704080454/http://www.modwiki.net/wiki/Spectrum_%28Material_global_keyword%29 Spectrum Keyword at Modwiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Light Settings ==&lt;br /&gt;
There are several settings with which to customize your lights. These settings allow the mapper to customize the look of a light (or a combination of lights) into a near infinity of looks. All are accessed through the light inspector (shortcut of L in DarkRadiant)&lt;br /&gt;
&lt;br /&gt;
=== Color ===&lt;br /&gt;
&lt;br /&gt;
The color palette allows the mapper to pick the color of the light emitted, arguably one of the most useful controls the mapper has over a light. To access it, click the button under the “Colour” heading. From there, adjust the settings until you find a correct color (can take some trial and error). In a game like The Dark Mod or Doom 3, where darkness is often more prevalent than light, the color picked often needs to be darker than expected. Without a direct brightness option, the color takes on this task. For a low level ambient light, the color picked would be almost pitch black. A pitch black light would not cast any light, but anything less than pitch black will cast a faint light. As such, it can take some trial and error to find the correct light for a situation, as intiailly, one is likely to pick a seemingly correct color only to find it is far too bright. &lt;br /&gt;
&lt;br /&gt;
 Remember: changing light settings or adding lights (and models) does not require re-compiling the map!&lt;br /&gt;
&lt;br /&gt;
=== Radius ===&lt;br /&gt;
The &#039;radius&#039; of your light can be changed by dragging its corners around in the 2d windows. Doom 3 lights do not have an actual radius, they are actually square lights and will light up everything they touch inside their bounding box in the editor. They will evenly light everything to their edges. While square lights might seem fairly odd there are options to make them more believable and have a nice fade, namely the &#039;texture&#039; applied.&lt;br /&gt;
&lt;br /&gt;
 Tip: you can rotate a light so only one corner will touch a wall and make a triangular shaped light. &lt;br /&gt;
&lt;br /&gt;
 Or rotate it so 2 corners touch a wall and make a line of light.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changing Radius of Light Entity:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you put a premade light entity into your map, the radius of the light won&#039;t be visible.  &lt;br /&gt;
&lt;br /&gt;
To change it, use the following syntax (and whichever value you wish):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;set _color on flame&amp;quot; &amp;quot;0.9 0.8 0.7&amp;quot;&lt;br /&gt;
 &amp;quot;set light_radius on flame&amp;quot; &amp;quot;250 250 250&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With lanterns and such use &#039;light&#039; and with torches and candles etc use &#039;flame&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;set _color on light&amp;quot; &amp;quot;0.9 0.8 0.7&amp;quot;&lt;br /&gt;
 &amp;quot;set light_radius on light&amp;quot; &amp;quot;250 250 250&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Copied from Baddcog&#039;s old &amp;quot;Lighting A to Z&amp;quot; article)&lt;br /&gt;
&lt;br /&gt;
=== Parallel === &lt;br /&gt;
&lt;br /&gt;
Selecting this option turns the light into a parallel light (as opposed to a point or projected light). See [[Light Properties#Parallel Light|Parallel Light]]&lt;br /&gt;
&lt;br /&gt;
=== Do not cast shadows (fast) ===&lt;br /&gt;
&lt;br /&gt;
As the name suggests, this setting causes the light to not cast shadows on any object. This can cause the light itself to not be confined by walls, which can sometimes be beneficial and sometimes not. The main purpose of enabling this option is performance. Shadows are processor intensive and are not needed in some cases, so removing them wherever not beneficial to gameplay can vastly improve performance. Note that ambient lights never cast any shadows. Another way to improve performance similarly is to set the entity property on a model or func_static (this doesn’t work on worldspawn) &amp;lt;tt&amp;gt;noshadows&amp;lt;/tt&amp;gt; to 1.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Further details&#039;&#039;&#039;: [[Turning Shadows Off]] , [[Noselfshadows]]&lt;br /&gt;
&lt;br /&gt;
=== Skip Specular Lighting ===&lt;br /&gt;
&lt;br /&gt;
Specular Lighting refers to a texture&#039;s specular map, wherein a flat surface (such as a wall) is painted with a texture that has a specular component. This causes a surface to have shinier and duller parts on a flat surface based on the darkness of the corresponding location on the specular map. Not all textures have specular maps. Checking this option could improve performance or remove the effect if it is not wanted. [http://www.modwiki.net/wiki/Texturing#Specular_maps]&lt;br /&gt;
&lt;br /&gt;
=== Skip Diffuse Lighting ===&lt;br /&gt;
&lt;br /&gt;
Like Specular lighting, diffuse lighting also references an attribute of a texture, the Diffuse Map. Diffuse Maps determine the intensity and color of the light reflected off of the different elements of a texture (an example being the difference between bricks and the mortar in between, as well as different bricks having different properties as well giving a less bland appearance). &lt;br /&gt;
[http://www.modwiki.net/wiki/Texturing#Diffuse_maps]&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Chandeliers ==&lt;br /&gt;
&lt;br /&gt;
Typically chandeliers are setup with multiple particle flames, but just one light entity (for better performance).  Bind the candles to the chandelier, then if one is doused, all will extinguish.  (See the prefab for an example.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lighting Textures ==&lt;br /&gt;
&lt;br /&gt;
[[Image:LT_Projectedlight.png|400px|thumb|Rich_is_Bored&#039;s Example]]&lt;br /&gt;
&lt;br /&gt;
The lighting textures are also accessed in the light inspector. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lights can be modified by two different texture types:&lt;br /&gt;
&lt;br /&gt;
* Projection Image - This is the texture that is projected on the surface&lt;br /&gt;
* LightFalloffImage - This texture varies the intensity of the light through the volume along the Z Axis &lt;br /&gt;
* (Notes: While the Falloff Image is a 2D texture it is rendered as 1D (one dimensional). You will notice that almost all Falloff Images are thin strips with perpendicular stripes. Traditionally, Falloff will be used to diminish the light with distance to the source but you can violate the physics of real lights and have the intensity increase with distance or vary intensity from bright to dim to bright... etc. )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These textures allow the mapper to change the intensity and falloff of a light. &lt;br /&gt;
&lt;br /&gt;
Light textures with the addition of material keywords like [https://modwiki.xnet.fi/Scroll_%28Material_stage_keyword%29 scroll],[https://modwiki.xnet.fi/Rotate_%28Material_stage_keyword%29 rotate], etc. will grant lights the ability to animate and produce special effects such as; &lt;br /&gt;
&lt;br /&gt;
* A moving light for a fireplace &lt;br /&gt;
* A candle or torch&lt;br /&gt;
* A light flickering along with sound volume. &lt;br /&gt;
&lt;br /&gt;
One can also apply a fog texture to the light (the only way built into Doom 3 to create fog). Color is of a similar concern when [[A_-_Z_Beginner_Full_Guide_Page_3#Fog|creating fog]], as noted in [[Light Properties#Color|Color]]&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
* A typical &amp;quot;Light Shader&amp;quot; [http://www.iddevnet.com/doom3/materials.php material] definition&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lights/My_Custom_Light1&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  lightFalloffImage makeIntensity( textures/My_Custom_Light1_Z ) // Falloff Image&lt;br /&gt;
&lt;br /&gt;
  { &lt;br /&gt;
  forceHighQuality&lt;br /&gt;
  map textures/My_Custom_Light1_XY // Z-Projection Image&lt;br /&gt;
  zeroClamp&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
(For advanced detail and techniques see [[Light Textures and Falloff Images]] )&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Further reading == &lt;br /&gt;
&lt;br /&gt;
* [[Performance:_Essential_Must-Knows#Lighting_Performance_Options|Lighting Performance Options]]&lt;br /&gt;
* [[Relighting Lights]]&lt;br /&gt;
* A great tutorial on outdoor lighting can be found here: http://www.katsbits.com/htm/tutorials/doom_3_lighting_outdoor.htm&lt;br /&gt;
* Modwiki&#039;s summarized Doom 3 lighting article: [http://www.modwiki.net/wiki/Light Light]&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;br /&gt;
[[Category:Lighting]]&lt;br /&gt;
[[Category:Ambient Light]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Loading_Screen_Text&amp;diff=18209</id>
		<title>Loading Screen Text</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Loading_Screen_Text&amp;diff=18209"/>
		<updated>2015-06-20T18:14:26Z</updated>

		<summary type="html">&lt;p&gt;SteveL: + 2.04 changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: &#039;&#039;In TDM 2.03 and before, this works only on a fresh game start, not when loading a saved game. It&#039;ll be changed in TDM 2.04.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It&#039;s common to add flavour text to a loading screen to help set the mood and give the player something to read while the map is loading.  &lt;br /&gt;
&lt;br /&gt;
Mappers can now add a random selection of text, so players will see a different bit of text each time they load the map.&lt;br /&gt;
&lt;br /&gt;
Use the following GUI event to read out the &amp;quot;gui::random_value&amp;quot; state variable. The event will be fired by the SDK code as soon as the random_value is set.  Just copy and paste into your loading screen .gui.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 onNamedEvent OnRandomValueInitialised&lt;br /&gt;
 {&lt;br /&gt;
    if (&amp;quot;gui::random_value&amp;quot; &amp;lt; 0.1)&lt;br /&gt;
    {&lt;br /&gt;
       set &amp;quot;TextLoading::text&amp;quot; &amp;quot;Text1&amp;quot;;     // Replace &amp;quot;TextLoading&amp;quot; with the name of your text windowdef.&lt;br /&gt;
    }&lt;br /&gt;
    else if (&amp;quot;gui::random_value&amp;quot; &amp;lt; 0.2)&lt;br /&gt;
    {&lt;br /&gt;
       set &amp;quot;TextLoading::text&amp;quot; &amp;quot;Text2&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else if (&amp;quot;gui::random_value&amp;quot; &amp;lt; 0.3)&lt;br /&gt;
    {&lt;br /&gt;
       set &amp;quot;TextLoading::text&amp;quot; &amp;quot;Text3&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else if (&amp;quot;gui::random_value&amp;quot; &amp;lt; 0.4)&lt;br /&gt;
    {&lt;br /&gt;
       set &amp;quot;TextLoading::text&amp;quot; &amp;quot;Text4&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else if (&amp;quot;gui::random_value&amp;quot; &amp;lt; 0.5)&lt;br /&gt;
    {&lt;br /&gt;
       set &amp;quot;TextLoading::text&amp;quot; &amp;quot;Text5&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else if (&amp;quot;gui::random_value&amp;quot; &amp;lt; 0.6)&lt;br /&gt;
    {&lt;br /&gt;
       set &amp;quot;TextLoading::text&amp;quot; &amp;quot;Text6&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else if (&amp;quot;gui::random_value&amp;quot; &amp;lt; 0.7)&lt;br /&gt;
    {&lt;br /&gt;
       set &amp;quot;TextLoading::text&amp;quot; &amp;quot;Text7&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else if (&amp;quot;gui::random_value&amp;quot; &amp;lt; 0.8)&lt;br /&gt;
    {&lt;br /&gt;
       set &amp;quot;TextLoading::text&amp;quot; &amp;quot;Text8&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else if (&amp;quot;gui::random_value&amp;quot; &amp;lt; 0.9)&lt;br /&gt;
    {&lt;br /&gt;
       set &amp;quot;TextLoading::text&amp;quot; &amp;quot;Text9&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       set &amp;quot;TextLoading::text&amp;quot; &amp;quot;Text10&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(The indentation has been screwed by the forum code block). This is just an example supporting 10 different texts of roughly equal probability in a &amp;quot;TextLoading&amp;quot; windowDef. The &amp;quot;gui::random_value&amp;quot; will be in the range [0..1), so if you need more or less than 10 values as in the example, you need to adjust the if () clauses in the GUI code accordingly.&lt;br /&gt;
&lt;br /&gt;
===Changes in TDM 2.04===&lt;br /&gt;
In TDM 2.03, the &amp;quot;OnRandomValueInitialised&amp;quot; GUI code is activated only on new mission starts, not when the player is loading a saved game. In TDM 2.04, the GUI event will be activated during save game loads too, including for quick loads.&lt;br /&gt;
&lt;br /&gt;
Quick loads can be very fast, so you might want to suppress your text (or other random GUI actions) during quickloading. TDM 2.04 will add another flag to the state information available to your gui: &amp;quot;gui::quickloading&amp;quot; which will be set to 1 when quickloading or 0 when not.&lt;br /&gt;
&lt;br /&gt;
Example usage:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 onNamedEvent OnRandomValueInitialised&lt;br /&gt;
 {&lt;br /&gt;
    if (&amp;quot;gui::quickloading&amp;quot; == 0)    // Don&#039;t display text when quickloading&lt;br /&gt;
    {&lt;br /&gt;
       if (&amp;quot;gui::random_value&amp;quot; &amp;lt; 0.1)&lt;br /&gt;
       {&lt;br /&gt;
          set &amp;quot;TextLoading::text&amp;quot; &amp;quot;Text1&amp;quot;;     // Replace &amp;quot;TextLoading&amp;quot; with the name of your text windowdef.&lt;br /&gt;
       }&lt;br /&gt;
       else if (&amp;quot;gui::random_value&amp;quot; &amp;lt; 0.2)&lt;br /&gt;
       {&lt;br /&gt;
       ... etc etc &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18166</id>
		<title>World Particle System</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18166"/>
		<updated>2015-03-17T23:29:44Z</updated>

		<summary type="html">&lt;p&gt;SteveL: update other parts of article  for func_smoke&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The world particle system allows particles to exist in the world independent of any emitter entity. It enables effects like trailing smoke where the emitted smoke rises naturally instead of moving with the emitter, as well as fine-grained control of the emission of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
TDM 2.03 supports 3 particle systems: weather patches, that emit particles like rain or snow from a wide surface; func_emitters, entities that emit particles from a point; and the world particle system that&#039;s controlled by func_smokes and scripts. If you want a particle effect to be emitted from a stationary spot, use a func_emitter or a weather patch. If you want a particle that should always move with its emitter, for example a lamp glare, use a func_emitter bound to the light source. World particles are for effects that once released take their own path independent of the movement of any emitter, like trailing smoke, or for effects where you need fine-grained control of the release of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
===Func_smoke===&lt;br /&gt;
Func_smoke entities use the world particle system. Use them like a func_emitter, except that the particle effect is specified by the &amp;quot;smoke&amp;quot; spawnarg instead of &amp;quot;model&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Func_smokes can be triggered on and off like func_emitters. They also support the &amp;quot;start_off&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
If bound to a moving object, func_smokes will leave their particles trailing behind them. The two flasks in the video are bound to rotating gears and have the same particle attached (mcu_lilpipesmoke.prt): the left one uses a func_emitter, the right one a func_smoke. &lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/B_PQ5TO3VE4 Video demo of the difference]&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
Script event sys.emitParticle is used for world particle system emissions.&lt;br /&gt;
&lt;br /&gt;
From the script reference:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;scriptEvent float &#039;&#039;emitParticle&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle);&#039;&#039;&#039;&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;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;origin&amp;quot; is where the quad will be released from. You can use an entity origin as reference: using $player1.getOrigin(), for example, will emit the quad from between the player&#039;s feet. Using $guard2.getEyePos() will emit it from guard2&#039;s eyes.&lt;br /&gt;
&lt;br /&gt;
Once you have emitted a particle quad, you have no further control over it. It will go its own way according to the path specified in the [[Particle_Editor|particle decl]].&lt;br /&gt;
&lt;br /&gt;
The script event is designed to be called every frame if you want to achieve &amp;quot;normal&amp;quot; particle emission as specified in the particle decl. It needs to be given a start time, which it uses to determine whether it should emit a quad or not right now. &lt;br /&gt;
&lt;br /&gt;
====Single quad emission====&lt;br /&gt;
Calling emitParticle with the current time -- sys.getTime() -- as the startTime parameter will always emit a quad, the first that would be emitted by the specified particle effect. That&#039;s because particle effects always emit their first quad as soon as they start up no matter what timing is specified in the particle decl.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Natural&amp;quot; timing====&lt;br /&gt;
To make sys.emitParticle emit particle quads just like a func_smoke does, using the timings specified in the particle decl, call it with the same &amp;quot;startTime&amp;quot; every frame. Typically your script will start with the current time, and store that time so that you can pass the same time in every frame. Your code will continue doing that until emitParticle returns false (0), meaning that all quads for the particle effect have now been released:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if you are using a particle effect that emits one quad every second, and you call sys.emitParticle every frame, i.e. 60 times per second, then it will emit 1 particle every 60th call. The 59 calls in between will not emit anything.&lt;br /&gt;
&lt;br /&gt;
Unlike func_emitters and func_smokes, emitParticle does not support cycling particle effects. If you want your emissions to carry on forever, you have to repeat the above instructions for ever in your script, e.g:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;while (1) // cycle for ever&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    {&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    }&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The following script emits a trailing smoke particle effect from an extinguished candle using the &amp;quot;natural&amp;quot; timing method and without cycling.&lt;br /&gt;
&lt;br /&gt;
This is an exaggerated version of the standard 2.03 candle smoke effect, where the particle decl has been tweaked to increase the number, size, and duration of the particle quads.&lt;br /&gt;
&lt;br /&gt;
The script runs through the particle effect once without cycling. The only change from the script given above is that it calculates the origin of the candle top every frame from the origin of the candle base and its current orientation, so if the player is moving the candle during the effect, the smoke comes out of the right place.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float candle_height = 17; // height of wick above candle holder &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector candle_top = sys.angToUp( $candle_holder.getAngles() ) * candle_height;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector smoke_origin = $candle_holder.getOrigin() + candle_top;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video of the result ===&lt;br /&gt;
[http://youtu.be/OdctCfJjv8g YouTube video]&lt;br /&gt;
&lt;br /&gt;
==Performance considerations==&lt;br /&gt;
Particles emitted by weather patches and func_emitters are rendered only if the particle effect might appear in some area of the map that the player can see. Particle effects on the far side of the map will be &amp;quot;turned off&amp;quot;. World particles are different: they are rendered every frame no matter whether the player has any chance of seeing them or not. They won&#039;t actually be drawn if not in view -- i.e. converted to screen pixels and coloured in -- but their positions will be calculated and passed to the graphics card every frame. If you have a thousand trailing particle emitters in your map, using a variety of different particle effects, you are likely to see an impact on FPS.&lt;br /&gt;
&lt;br /&gt;
On the other hand, world particles enjoy some performance advantages over other types of particle. Weather patches and func_emitters each generate their own individual draw call every frame that they are in view. If you have two smoking torches next to one another, that&#039;s 2 draw calls each frame for the smoke.&lt;br /&gt;
&lt;br /&gt;
All world particles of the same kind will be drawn in a single draw call, no matter how spread out they are in the map. So adding more world smoke emitters will increase calculations a bit, but it won&#039;t add more draw calls.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18165</id>
		<title>World Particle System</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18165"/>
		<updated>2015-03-17T23:28:06Z</updated>

		<summary type="html">&lt;p&gt;SteveL: rv &amp;quot;not available until TDM 2.03&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The world particle system allows particles to exist in the world independent of any emitter entity. It enables effects like trailing smoke where the emitted smoke rises naturally instead of moving with the emitter, as well as fine-grained control of the emission of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
In TDM 2.03, the world particle system is usable only via scripting. We plan to add more user-friendly methods for mappers in 2.04, as well as to add it to some stock entities.&lt;br /&gt;
&lt;br /&gt;
TDM 2.03 supports 3 particle systems: weather patches, that emit particles like rain or snow from a wide surface; func_emitters, entities that emit particles from a point; and the world particle system that&#039;s controlled by scripts. If you want a particle effect to be emitted from a stationary spot, use a func_emitter or a weather patch. If you want a particle that should always move with its emitter, for example a lamp glare, use a func_emitter bound to the light source. World particles are for effects that once released take their own path independent of the movement of any emitter, like trailing smoke, or for effects where you need fine-grained control of the release of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
===Func_smoke===&lt;br /&gt;
Func_smoke entities use the world particle system. Use them like a func_emitter, except that the particle effect is specified by the &amp;quot;smoke&amp;quot; spawnarg instead of &amp;quot;model&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Func_smokes can be triggered on and off like func_emitters. They also support the &amp;quot;start_off&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
If bound to a moving object, func_smokes will leave their particles trailing behind them. The two flasks in the video are bound to rotating gears and have the same particle attached (mcu_lilpipesmoke.prt): the left one uses a func_emitter, the right one a func_smoke. &lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/B_PQ5TO3VE4 Video demo of the difference]&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
Script event sys.emitParticle is used for world particle system emissions.&lt;br /&gt;
&lt;br /&gt;
From the script reference:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;scriptEvent float &#039;&#039;emitParticle&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle);&#039;&#039;&#039;&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;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;origin&amp;quot; is where the quad will be released from. You can use an entity origin as reference: using $player1.getOrigin(), for example, will emit the quad from between the player&#039;s feet. Using $guard2.getEyePos() will emit it from guard2&#039;s eyes.&lt;br /&gt;
&lt;br /&gt;
Once you have emitted a particle quad, you have no further control over it. It will go its own way according to the path specified in the [[Particle_Editor|particle decl]].&lt;br /&gt;
&lt;br /&gt;
The script event is designed to be called every frame if you want to achieve &amp;quot;normal&amp;quot; particle emission as specified in the particle decl. It needs to be given a start time, which it uses to determine whether it should emit a quad or not right now. &lt;br /&gt;
&lt;br /&gt;
====Single quad emission====&lt;br /&gt;
Calling emitParticle with the current time -- sys.getTime() -- as the startTime parameter will always emit a quad, the first that would be emitted by the specified particle effect. That&#039;s because particle effects always emit their first quad as soon as they start up no matter what timing is specified in the particle decl.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Natural&amp;quot; timing====&lt;br /&gt;
To make sys.emitParticle emit particle quads just like a func_smoke does, using the timings specified in the particle decl, call it with the same &amp;quot;startTime&amp;quot; every frame. Typically your script will start with the current time, and store that time so that you can pass the same time in every frame. Your code will continue doing that until emitParticle returns false (0), meaning that all quads for the particle effect have now been released:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if you are using a particle effect that emits one quad every second, and you call sys.emitParticle every frame, i.e. 60 times per second, then it will emit 1 particle every 60th call. The 59 calls in between will not emit anything.&lt;br /&gt;
&lt;br /&gt;
Unlike func_emitters and func_smokes, emitParticle does not support cycling particle effects. If you want your emissions to carry on forever, you have to repeat the above instructions for ever in your script, e.g:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;while (1) // cycle for ever&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    {&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    }&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The following script emits a trailing smoke particle effect from an extinguished candle using the &amp;quot;natural&amp;quot; timing method and without cycling.&lt;br /&gt;
&lt;br /&gt;
This is an exaggerated version of the standard 2.03 candle smoke effect, where the particle decl has been tweaked to increase the number, size, and duration of the particle quads.&lt;br /&gt;
&lt;br /&gt;
The script runs through the particle effect once without cycling. The only change from the script given above is that it calculates the origin of the candle top every frame from the origin of the candle base and its current orientation, so if the player is moving the candle during the effect, the smoke comes out of the right place.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float candle_height = 17; // height of wick above candle holder &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector candle_top = sys.angToUp( $candle_holder.getAngles() ) * candle_height;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector smoke_origin = $candle_holder.getOrigin() + candle_top;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video of the result ===&lt;br /&gt;
[http://youtu.be/OdctCfJjv8g YouTube video]&lt;br /&gt;
&lt;br /&gt;
==Performance considerations==&lt;br /&gt;
Particles emitted by weather patches and func_emitters are rendered only if the particle effect might appear in some area of the map that the player can see. Particle effects on the far side of the map will be &amp;quot;turned off&amp;quot;. World particles are different: they are rendered every frame no matter whether the player has any chance of seeing them or not. They won&#039;t actually be drawn if not in view -- i.e. converted to screen pixels and coloured in -- but their positions will be calculated and passed to the graphics card every frame. If you have a thousand trailing particle emitters in your map, using a variety of different particle effects, you are likely to see an impact on FPS.&lt;br /&gt;
&lt;br /&gt;
On the other hand, world particles enjoy some performance advantages over other types of particle. Weather patches and func_emitters each generate their own individual draw call every frame that they are in view. If you have two smoking torches next to one another, that&#039;s 2 draw calls each frame for the smoke.&lt;br /&gt;
&lt;br /&gt;
All world particles of the same kind will be drawn in a single draw call, no matter how spread out they are in the map. So adding more world smoke emitters will increase calculations a bit, but it won&#039;t add more draw calls.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18164</id>
		<title>World Particle System</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18164"/>
		<updated>2015-03-17T23:27:20Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Usage */ + func_smoke&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;This article describes a feature that will become available in TDM 2.03.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The world particle system allows particles to exist in the world independent of any emitter entity. It enables effects like trailing smoke where the emitted smoke rises naturally instead of moving with the emitter, as well as fine-grained control of the emission of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
In TDM 2.03, the world particle system is usable only via scripting. We plan to add more user-friendly methods for mappers in 2.04, as well as to add it to some stock entities.&lt;br /&gt;
&lt;br /&gt;
TDM 2.03 supports 3 particle systems: weather patches, that emit particles like rain or snow from a wide surface; func_emitters, entities that emit particles from a point; and the world particle system that&#039;s controlled by scripts. If you want a particle effect to be emitted from a stationary spot, use a func_emitter or a weather patch. If you want a particle that should always move with its emitter, for example a lamp glare, use a func_emitter bound to the light source. World particles are for effects that once released take their own path independent of the movement of any emitter, like trailing smoke, or for effects where you need fine-grained control of the release of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
===Func_smoke===&lt;br /&gt;
Func_smoke entities use the world particle system. Use them like a func_emitter, except that the particle effect is specified by the &amp;quot;smoke&amp;quot; spawnarg instead of &amp;quot;model&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Func_smokes can be triggered on and off like func_emitters. They also support the &amp;quot;start_off&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
If bound to a moving object, func_smokes will leave their particles trailing behind them. The two flasks in the video are bound to rotating gears and have the same particle attached (mcu_lilpipesmoke.prt): the left one uses a func_emitter, the right one a func_smoke. &lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/B_PQ5TO3VE4 Video demo of the difference]&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
Script event sys.emitParticle is used for world particle system emissions.&lt;br /&gt;
&lt;br /&gt;
From the script reference:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;scriptEvent float &#039;&#039;emitParticle&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle);&#039;&#039;&#039;&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;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;origin&amp;quot; is where the quad will be released from. You can use an entity origin as reference: using $player1.getOrigin(), for example, will emit the quad from between the player&#039;s feet. Using $guard2.getEyePos() will emit it from guard2&#039;s eyes.&lt;br /&gt;
&lt;br /&gt;
Once you have emitted a particle quad, you have no further control over it. It will go its own way according to the path specified in the [[Particle_Editor|particle decl]].&lt;br /&gt;
&lt;br /&gt;
The script event is designed to be called every frame if you want to achieve &amp;quot;normal&amp;quot; particle emission as specified in the particle decl. It needs to be given a start time, which it uses to determine whether it should emit a quad or not right now. &lt;br /&gt;
&lt;br /&gt;
====Single quad emission====&lt;br /&gt;
Calling emitParticle with the current time -- sys.getTime() -- as the startTime parameter will always emit a quad, the first that would be emitted by the specified particle effect. That&#039;s because particle effects always emit their first quad as soon as they start up no matter what timing is specified in the particle decl.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Natural&amp;quot; timing====&lt;br /&gt;
To make sys.emitParticle emit particle quads just like a func_smoke does, using the timings specified in the particle decl, call it with the same &amp;quot;startTime&amp;quot; every frame. Typically your script will start with the current time, and store that time so that you can pass the same time in every frame. Your code will continue doing that until emitParticle returns false (0), meaning that all quads for the particle effect have now been released:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if you are using a particle effect that emits one quad every second, and you call sys.emitParticle every frame, i.e. 60 times per second, then it will emit 1 particle every 60th call. The 59 calls in between will not emit anything.&lt;br /&gt;
&lt;br /&gt;
Unlike func_emitters and func_smokes, emitParticle does not support cycling particle effects. If you want your emissions to carry on forever, you have to repeat the above instructions for ever in your script, e.g:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;while (1) // cycle for ever&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    {&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    }&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The following script emits a trailing smoke particle effect from an extinguished candle using the &amp;quot;natural&amp;quot; timing method and without cycling.&lt;br /&gt;
&lt;br /&gt;
This is an exaggerated version of the standard 2.03 candle smoke effect, where the particle decl has been tweaked to increase the number, size, and duration of the particle quads.&lt;br /&gt;
&lt;br /&gt;
The script runs through the particle effect once without cycling. The only change from the script given above is that it calculates the origin of the candle top every frame from the origin of the candle base and its current orientation, so if the player is moving the candle during the effect, the smoke comes out of the right place.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float candle_height = 17; // height of wick above candle holder &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector candle_top = sys.angToUp( $candle_holder.getAngles() ) * candle_height;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector smoke_origin = $candle_holder.getOrigin() + candle_top;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video of the result ===&lt;br /&gt;
[http://youtu.be/OdctCfJjv8g YouTube video]&lt;br /&gt;
&lt;br /&gt;
==Performance considerations==&lt;br /&gt;
Particles emitted by weather patches and func_emitters are rendered only if the particle effect might appear in some area of the map that the player can see. Particle effects on the far side of the map will be &amp;quot;turned off&amp;quot;. World particles are different: they are rendered every frame no matter whether the player has any chance of seeing them or not. They won&#039;t actually be drawn if not in view -- i.e. converted to screen pixels and coloured in -- but their positions will be calculated and passed to the graphics card every frame. If you have a thousand trailing particle emitters in your map, using a variety of different particle effects, you are likely to see an impact on FPS.&lt;br /&gt;
&lt;br /&gt;
On the other hand, world particles enjoy some performance advantages over other types of particle. Weather patches and func_emitters each generate their own individual draw call every frame that they are in view. If you have two smoking torches next to one another, that&#039;s 2 draw calls each frame for the smoke.&lt;br /&gt;
&lt;br /&gt;
All world particles of the same kind will be drawn in a single draw call, no matter how spread out they are in the map. So adding more world smoke emitters will increase calculations a bit, but it won&#039;t add more draw calls.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Template:Tdm-scripting-reference-intro&amp;diff=18155</id>
		<title>Template:Tdm-scripting-reference-intro</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Template:Tdm-scripting-reference-intro&amp;diff=18155"/>
		<updated>2015-03-02T02:12:58Z</updated>

		<summary type="html">&lt;p&gt;SteveL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;General utility functions not related to specific entities are listed under idThread. They&#039;re accessed in scripts using the dummy &amp;quot;sys&amp;quot; object, e.g. &#039;&#039;sys.waitFrame()&#039;&#039;, or &#039;&#039;float brown_position = sys.strFind(&amp;quot;The quick brown fox&amp;quot;, &amp;quot;brown&amp;quot;, 0, 0, -1)&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Template:Tdm-scripting-reference-intro&amp;diff=18154</id>
		<title>Template:Tdm-scripting-reference-intro</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Template:Tdm-scripting-reference-intro&amp;diff=18154"/>
		<updated>2015-03-02T02:11:50Z</updated>

		<summary type="html">&lt;p&gt;SteveL: General utility functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;General utility functions not related to specific entities are listed under idThread. They&#039;re accessed in scripts using the dummy &amp;quot;sys&amp;quot; object, e.g. &#039;&#039;sys.waitFrame()&#039;&#039;, or &#039;&#039;float brown_position = sys.strFind(&amp;quot;The quick brown fox&amp;quot;, &amp;quot;brown&amp;quot;)&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference&amp;diff=18106</id>
		<title>TDM Script Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference&amp;diff=18106"/>
		<updated>2015-02-14T12:43:20Z</updated>

		<summary type="html">&lt;p&gt;SteveL: Updating for 2.03&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been generated automatically by the tdm_gen_script_event_doc console command, with [[Talk:TDM_Script_Reference/2.03|manual amendments]].&lt;br /&gt;
&lt;br /&gt;
Generated by The Dark Mod 2.03, code revision 6439, last update: 2015-01-01 23:22&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_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;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;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;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;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): 	&lt;br /&gt;
::{|&lt;br /&gt;
|-&lt;br /&gt;
|gamePlayTime||gameplay time in seconds&lt;br /&gt;
|-&lt;br /&gt;
|damageDealt||damage dealt to enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|damageReceived||damage received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|healthReceived||health received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|pocketsPicked||pockets picked by player 	&lt;br /&gt;
|-&lt;br /&gt;
|foundLoot||loot found by player 	&lt;br /&gt;
|-&lt;br /&gt;
|missionLoot||total loot available in mission 	&lt;br /&gt;
|-&lt;br /&gt;
|totalTimePlayerSeen||total time the player was seen by enemies in seconds 	&lt;br /&gt;
|-&lt;br /&gt;
|numberTimesPlayerSeen||number of times player was seen by enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|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.	&lt;br /&gt;
|-&lt;br /&gt;
|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.&lt;br /&gt;
|-&lt;br /&gt;
|sightingScore||sighting score (number of times player was seen * weight) 	&lt;br /&gt;
|-&lt;br /&gt;
|stealthScore||stealth score (sighting score + alerts * weights) 	&lt;br /&gt;
|-&lt;br /&gt;
|killedByPlayer||number of enemies killed by player 	&lt;br /&gt;
|-&lt;br /&gt;
|knockedOutByPlayer||number of enemies knocked out by player 	&lt;br /&gt;
|-&lt;br /&gt;
|bodiesFound||number of times enemies have spotted a body &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&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;
: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 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&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;
: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;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;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;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;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;
=== 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;
: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 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;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&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;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;
=== 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;
=== 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 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;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 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 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): 	&lt;br /&gt;
::{|&lt;br /&gt;
|-&lt;br /&gt;
|gamePlayTime||gameplay time in seconds&lt;br /&gt;
|-&lt;br /&gt;
|damageDealt||damage dealt to enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|damageReceived||damage received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|healthReceived||health received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|pocketsPicked||pockets picked by player 	&lt;br /&gt;
|-&lt;br /&gt;
|foundLoot||loot found by player 	&lt;br /&gt;
|-&lt;br /&gt;
|missionLoot||total loot available in mission 	&lt;br /&gt;
|-&lt;br /&gt;
|totalTimePlayerSeen||total time the player was seen by enemies in seconds 	&lt;br /&gt;
|-&lt;br /&gt;
|numberTimesPlayerSeen||number of times player was seen by enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|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.	&lt;br /&gt;
|-&lt;br /&gt;
|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.&lt;br /&gt;
|-&lt;br /&gt;
|sightingScore||sighting score (number of times player was seen * weight) 	&lt;br /&gt;
|-&lt;br /&gt;
|stealthScore||stealth score (sighting score + alerts * weights) 	&lt;br /&gt;
|-&lt;br /&gt;
|killedByPlayer||number of enemies killed by player 	&lt;br /&gt;
|-&lt;br /&gt;
|knockedOutByPlayer||number of enemies knocked out by player 	&lt;br /&gt;
|-&lt;br /&gt;
|bodiesFound||number of times enemies have spotted a body &lt;br /&gt;
|}&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;
=== 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;
=== 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;
: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>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=A_-_Z_Beginner_Full_Guide_Start_Here!&amp;diff=18105</id>
		<title>A - Z Beginner Full Guide Start Here!</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=A_-_Z_Beginner_Full_Guide_Start_Here!&amp;diff=18105"/>
		<updated>2015-02-12T21:03:28Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Changing a Light&amp;#039;s Brightness */ updating &amp;quot;Value&amp;quot; to read  &amp;quot;Lum:&amp;quot; to match latest DR&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{A-Z Beginner Guide TOC}}&lt;br /&gt;
 &#039;&#039;&#039;&#039;&#039;PLEASE NOTE: &amp;lt;br&amp;gt;THIS GUIDE CONTAINS SPOILERS FOR THE &amp;quot;THIEF&#039;S DEN&amp;quot; DEMO MISSION RELEASED JAN 18TH, 2008.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Since writing this I&#039;ve created a [[Startpack Mappers&#039; Guide]] which is a ready made FM template with a set of ready made components to make it even easier to make a Dark Mod FM because it already includes things like objectives, briefing, readables, etc. etc and you just modify them and concentrate on building. However, I recommend you first follow this guide so you have some understanding of the basics and then the startpack will make more sense.&lt;br /&gt;
&lt;br /&gt;
This is an easy guide for complete beginners to Dark Mod. It will lead you from start to finish, &#039;push that button, click that menu&#039; and at the end you will have a fully working (but tiny) Dark Mod mission with all the main essential features including objectives all zipped up. You will be able to include variations of your own as you progress if you wish. Links to more detailed info is included but ignore those first time if you wish. Creating this mission is a learning process: although others will be able to play it, it will be too simple for that purpose - though it might be fun to see how varied the results might be from different players following the same instructions! When finished you can modify it and customise it to learn more or just shelve it for reference while you start your &#039;&#039;real&#039;&#039; mission!&lt;br /&gt;
&lt;br /&gt;
This tutorial does not describe how to make your mission architecturally beautiful - just the opposite; the build may be as crude, quick, and ugly as you like. Nor does it advise how to design for good gameplay, etc. For that you should go to [[Mission Design Tips]] after you have mastered the basics. This is a &#039;&#039;method&#039;&#039; tutorial, not a &#039;&#039;design&#039;&#039; tutorial. Nor can it answer every question. It will merely present the most basic information for making a complete mission.&lt;br /&gt;
&lt;br /&gt;
Feel free to experiment, add to, or even skip parts you already know or seem obvious, especially if you have a background producing Doom or Quake maps.&lt;br /&gt;
&lt;br /&gt;
This guide was inspired by Komag&#039;s famous tutorial which helped a great many Dromeders (including myself) to get started producing Thief 2 FMs. If you are or were a Dromeder then you might first like to browse quickly through [[Dromed - Dark Mod Differences]] before proceeding - though it is not essential for this tutorial as I am trying to make few assumptions of prior knowledge. It will refer to default keys/mouse settings in Dard Radiant (editor - see later) so if you have changed any hot keys in Dark Radiant&#039;s help menu then keep that in mind. Also note that any screenshots might be in a different colour to your settings of course.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes that you have Dark Mod already installed. If not, please refer to [http://www.thedarkmod.com The Dark Mod] website for information.&lt;br /&gt;
&lt;br /&gt;
Alternatively you can use the limited Dark Mod resources provided by the pre-release demo mission [[Thief&#039;s Den]]&lt;br /&gt;
&lt;br /&gt;
== The Dark Mod Editor ==&lt;br /&gt;
&lt;br /&gt;
To edit Dark Mod missions you will need a game editor. &#039;&#039;&#039;This tutorial is based on the [[Dark Radiant]] editor&#039;&#039;&#039; (hereinafter may be called DR) but you can possibly follow most of it in other editors like DoomEd. Variations might be shown where possible but it will mainly assume Dark Radiant. If you haven&#039;t got Dark Radiant yet, consult the [[Dark Radiant]] sections, install it and set it up how you like it. If you want to use DoomEd then you need to look elsewhere first. DoomEd of course is supplied with Doom.&lt;br /&gt;
&lt;br /&gt;
You might wish to open the [[Dark Radiant Controls, Keys &amp;amp; Mouse|DR Controls]] page in a new window in your web browser for quick reference while following this tutorial. I&#039;ll try to make it so you don&#039;t need to!&lt;br /&gt;
&lt;br /&gt;
Make sure you can run Dark Mod and your editor before proceeding. In particular remember you can undo your last step(s) (edit menu or {{key|CTRL}}+{{key|Z}})&lt;br /&gt;
&lt;br /&gt;
== Your First Mission ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s get started.&lt;br /&gt;
&lt;br /&gt;
* Open Dark Radiant (hereinafter DR) and also open Dark Mod for quick testing.&lt;br /&gt;
* If you have a mission already open in DR then select File menu &amp;gt; New Map to clear it.&lt;br /&gt;
* Save it now as any suitable name. You might prefer to save later but I always do it immediately. All missions must go (with exceptions I will describe later in [[A - Z Beginner Full Guide Page 5#Managing your Mission Files|Managing your Mission Files]]) in the darkmod\maps folder or a folder within that. I urge you to create a new folder for each project within that maps folder. In this case:&lt;br /&gt;
# Open File Menu &amp;gt; Save As&lt;br /&gt;
# Make sure you are in the &#039;maps&#039; folder.&lt;br /&gt;
# Select &#039;Create Folder&#039; and type in say &#039;tutorial&#039;. You might prefer &#039;Tut&#039; or even &#039;T&#039; because you have to keep typing it over and over in the Dark Mod console when testing!&lt;br /&gt;
# Select that folder&lt;br /&gt;
# Enter the name of your mission at the top.&lt;br /&gt;
* The game will be saved as a &#039;map&#039; file with a .map suffix and is commonly called a &#039;map&#039; in Doom circles. But I will use the term &#039;mission&#039; or &#039;FM&#039; (Fan Mission) or maybe &#039;game&#039; for the map file to try to avoid confusion with actual &#039;city&#039; or &#039;treasure&#039; maps within the mission.&lt;br /&gt;
&lt;br /&gt;
First, let&#039;s consider our rough storyline so we have some idea what to build...&lt;br /&gt;
&lt;br /&gt;
== Story, Briefing ==&lt;br /&gt;
&lt;br /&gt;
Formal mission objectives will be described much later in this tutorial. But before you begin your mission you will obviously need to have at least some idea of storyline and plot else you will have no idea what to build. You might have a detailed story or just some simple ideas which you can develop later.&lt;br /&gt;
&lt;br /&gt;
Ultimately, you will need to brief the player with information about the story, characters, and the main purpose of the mission. It probably makes sense to write that fully when you are nearly finished the mission because new ideas or even technical difficulties might make you change your story. However, in this tutorial I&#039;ll describe it early so as you build the mission the layout and objects make sense.&lt;br /&gt;
&lt;br /&gt;
Your briefing text should eventually be entered as described at [[Briefing]] but temporarily you might just write it in a plain text document for reference.&lt;br /&gt;
&lt;br /&gt;
This mini tutorial mission is called &#039;Thief&#039;s Den&#039; so here is an example briefing (&#039;&#039;&#039;not&#039;&#039;&#039; in correct format for the gui or .xd file):&lt;br /&gt;
&lt;br /&gt;
&amp;quot;I had a nice haul the other night including a grand scepter from Lord Frothley. But a low-life named Creep who had given me the info, then stole it from ME! Never trust a thief I say. But I know where he lives...&lt;br /&gt;
&lt;br /&gt;
I also still have his message in his own hand, giving the low-down. If I can dispose of Creep and drop the message nearby then he should take the heat for the heist diverting all suspicion from me.&lt;br /&gt;
&lt;br /&gt;
Creep is a nasty piece of work who is handy with a blade. He can be dangerous and may be expecting me - may even have recruited a thug or two as back up - but he has badly underestimated my stealth skills...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Preparing to Build ==&lt;br /&gt;
&lt;br /&gt;
When you open Dark Radiant it will default to a grid size (in the XYZ orthoview) of 8 units by 8 (changeable from version 0.9.5 onwards.) These [[Conversion of Game Units|units]] are 1.1 inches. Check your preference (default key P) in DR as it will be easier during this tutorial if you have the following checked (ticked) in Preferences &amp;gt; Orthoview...&lt;br /&gt;
&lt;br /&gt;
* Show Grid&lt;br /&gt;
* Show Size Info&lt;br /&gt;
* Show Coordinates&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; It is recommend you generally build with the grid set reasonably to a large size such as the default 8 or 16 for all walls, floors, etc. This makes alignment easier. You can reduce this in the grid menu for fine placement but don&#039;t leave it like that generally or you will have complexity problems. Snap to grid ([[Image:DRsnapGrid.jpg]], {{key|CTRL}}+{{key|G}}) will re-align a selection to the current grid size.&lt;br /&gt;
&lt;br /&gt;
We&#039;ll mostly be working in the XYZ grid orthoview but if you have room for the camera view at the side so much the better. The camera view does a rough render in 3D (F3 toggles a better rendering with lighting etc but keep that off if it slows things down which it is likely to and just use it now and again.)&lt;br /&gt;
&lt;br /&gt;
* Note the origin icon of the &#039;world&#039; at 0,0,0 in the grid view&lt;br /&gt;
* Zoom in and out with the mouse wheel&lt;br /&gt;
* Right mouse drag the grid view to scroll around (zoom out further to scroll around faster)&lt;br /&gt;
* Use &#039;&#039;Change views&#039;&#039; tool ([[Image:DRnextViewBut.jpg]], {{key|CTRL}}+{{key|Tab}}) to toggle between top (XY), front (XZ), and side (YZ) views (you can open aditional windows using menu &amp;lt;tt&amp;gt;View &amp;gt; New XY view&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The blank windows in the grid and camera views can be regarded as empty void - the space in which we shall build. We have to build in bubbles sealed off from that void like an airtight spaceship or a submarine. Any gaps will cause leaks and crash your game so it&#039;s obviously the first major rule to learn: always build inner spaces sealed off from the outer void&lt;br /&gt;
&lt;br /&gt;
Apart from special materials like water and weather, all the raw material you will use is &#039;solid&#039; to form different shapes. So we can make panels and place them together to form lots of floating airtight boxes and these can be linked together. The entire game then takes place inside those boxes. One box can hold a tiny cupboard or an entire cathedral and a lot of boxes can hold a city. Inside those boxes you cannot see the void.&lt;br /&gt;
&lt;br /&gt;
A shortcut to putting panels together is to make one solid block and hollow it out to form a box and this is what we are going to do now to form our first room.&lt;br /&gt;
&lt;br /&gt;
== Making Your First Room ==&lt;br /&gt;
&lt;br /&gt;
First we make a rough solid block...&lt;br /&gt;
&lt;br /&gt;
* Select the top view (XY) in the grid view (toggle with [[Image:DRnextViewBut.jpg]]).&lt;br /&gt;
* Left mouse drag out a rectangle any few grid units across in the middle somewhere.&lt;br /&gt;
* This rectangle is called a &#039;brush&#039; and used to define raw shapes for walls, floors etc.&lt;br /&gt;
* Left drag &#039;&#039;within&#039;&#039; that brush to drag the brush around&lt;br /&gt;
* Select the &#039;&#039;Resize&#039;&#039; tool ([[Image:DRdragResize.jpg]], {{key|Q}}).&lt;br /&gt;
* Now left drag &#039;&#039;outside&#039;&#039; that brush to resize it.&lt;br /&gt;
&lt;br /&gt;
Now we adjust its top view area...&lt;br /&gt;
&lt;br /&gt;
* Left drag outside that brush to resize it to 256 across left to right (X direction) by 192 up and down (Y direction in top view.) You should see those dimensions at the sides of the rectangle if you have &#039;Show Size Info&#039; set in Edit &amp;gt; Preferences &amp;gt; Orthoview. The position of the top left corner is in brackets at top left.&lt;br /&gt;
* Left drag within the brush to move it so its sides fit on the bigger grid. If all sides don&#039;t fit then check your dimensions and that you are still in grid size 8 (see grid menu.)&lt;br /&gt;
* I prefer to build up in the top right corner from the world 0,0,0 so none of the values are negatives but you decide for yourself. Move it where you want but ideally so the sides are on the big grid.&lt;br /&gt;
&lt;br /&gt;
Now we adjust its height to get our finished block (brush)...&lt;br /&gt;
&lt;br /&gt;
* Use [[Image:DRnextViewBut.jpg]] ({{key|CTRL}}+{{key|Tab}}) to switch to side (YZ) or front (XZ) view and left drag outside the brush to change its height to 128&lt;br /&gt;
* Left drag inside the brush to move it up and down so its sides are on a big grid same as you did in the top view.&lt;br /&gt;
* You should now have brush 256 x 192 x 128  (see [[Conversion of Game Units#Tips|Unit Tips]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:AZblock.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Selecting and DEselecting ==&lt;br /&gt;
&lt;br /&gt;
We only have one item in our view but eventually many. Operations only work on what is currently selected. When you have just created something as we just have it is automatically the current selection and should be highlighted in your views (see DR Preferences for colour.) &lt;br /&gt;
&lt;br /&gt;
* To DEselect it, point your mouse at it in either the grid or camera view and use {{key|SHIFT}}+{{key|ALT}}+{{LMB}} (or just press the {{key|Esc}} key.)&lt;br /&gt;
*To select it again, point your mouse at it and use {{key|SHIFT}}+{{key|ALT}}+{{LMB}} again.&lt;br /&gt;
&lt;br /&gt;
Selecting is something you&#039;ll do a lot of so get familiar with that {{key|SHIFT}}+{{key|ALT}}+{{LMB}}. It&#039;s an exclusive select to get just one item. There are other selects I&#039;ll describe later. The {{key|Esc}} key always deselects and it is vitally important to get into the habit of DEselecting before you select or create something new or in some cases you will have multiple selections without knowing it and can delete or change something you didn&#039;t want to. This is why the {{key|SHIFT}}+{{key|ALT}}+{{LMB}} is the safest select as it is exclusive and will automatically DEselect anything else that was left selected. But it won&#039;t protect an item when creating. Yes, it is possible to have say a brush selected, forget it is selected, then create say, a new light. Oh! what happened to the brush? It&#039;s gone - replaced by the light. Develop a nervous habit of keep hitting {{key|Esc}} to deselect when you go to create!&lt;br /&gt;
&lt;br /&gt;
From now on I&#039;ll use LMB, MMB, and RMB to refer to the mouse buttons.&lt;br /&gt;
&lt;br /&gt;
== Camera View ==&lt;br /&gt;
&lt;br /&gt;
You should be able to see this block in the camera view. If the camera view is just black remember {{key|F3}} toggles true light rendering and we don&#039;t yet have a light so hit {{key|F3}} to get a constant bright test light throughout. I won&#039;t go into details of all the camera controls suffice to say use the arrow keys and {{key|D}} and {{key|C}} to move vertically. But scroll down to &#039;camera&#039; in [[Dark Radiant Controls, Keys &amp;amp; Mouse]] and you will see a fantastic amount of control you have in DR&#039;s camera view - especially with the mouse. It will take time to get used to them all so for now perhaps just learn enough to move around to see what you&#039;ve done so far.&lt;br /&gt;
&lt;br /&gt;
If you can see your block(brush) in the camera view then it is likely not to have any particular texture unless you were doing something before this tutorial. Close up you may see it is covered in a checkered blue &#039;shader not found&#039; message. Don&#039;t worry if it&#039;s covered in something else like stone or wood though. Since it will eventually be hollowed out to form a room, let&#039;s paint it now with some material more suitable to the Dark Mod universe...&lt;br /&gt;
&lt;br /&gt;
== Materials, Textures, Painting the Block ==&lt;br /&gt;
&lt;br /&gt;
This is the tiny home of a cheap thief so we&#039;ll use some old stonework.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve mentioned &#039;textures&#039;, &#039;shaders&#039;, and &#039;materials&#039;; what do these terms mean? A &#039;material&#039; or &#039;shader&#039; is the properties of a surface, including (but not necessarily) texture, sound, and others. To &#039;paint&#039; our block we...&lt;br /&gt;
&lt;br /&gt;
* Select the Media Browser. This is one of the tabs on a panel. Pressing N or T hides/shows the whole panel but I guess most people leave the panel showing all the time and just select the tab they want. &lt;br /&gt;
* Allow a few seconds for DR to read in the media first time and then you should see &#039;textures&#039; listed&lt;br /&gt;
* Click &#039;textures&#039; and it opens up to show all available textures. Many of the ones you see are Doom textures. Scroll down and select &#039;darkmod&#039; which reveals the ones most suitable for our use. Scroll down to stone, open it, then cobblestones and select blocks_mixed_multicolour. Right click it and select &#039;Apply to selection&#039;. This covers all surfaces of the block because we have still got selected the whole block not just one surface. You should see this in the camera view. Use this throughout the house (and eventually on its outside surface for consistency.)&lt;br /&gt;
* Select the Texture Browser. This is one of the tabs on the same panel as Media Browser.  The Texture Browser only shows recently used textures. You should see only the one texture you selected so it&#039;s handy for future use. Odds are you will want to re-use the same textures. It will also show other textures if you clicked on them in the media browser plus any others if you were using DR before this tutorial. You can also copy and paste textures onto single or multiple surfaces (see later.)&lt;br /&gt;
* Hover the mouse over the four little buttons at the top of the Texture Browser and read the text so you have some idea of what features are there for the future. For now, click on the one that says &#039;Flush and Reload Shaders&#039; and it should clear all of them except the one we put on our brush. As we add others they will appear in the texture browser so you can get to them more quickly.&lt;br /&gt;
* Now, press S for Surface Inspector (or View menu)&lt;br /&gt;
* If you have only one face selected (more about this later) you can set Horiz and Vert scale. Value like 0.3 makes it harder for the player to see any pattern repetition (in this situation and in my opinion - use your own judgement with other textures and wall sizes.) In the mean time you can use arrow buttons to adjust the scale for the whole selected brush. Whatever scale you use, generally you should be consistent with it for the same texture wherever used in a mission. If you use copy and paste then it will transfer the scale as well which is far easier.&lt;br /&gt;
* There will be more on texture adjustment later in this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Hollowing out a Room from the Block ==&lt;br /&gt;
&lt;br /&gt;
Building to a large grid size helps performance. The outside of our block will never be seen in the game. Once we hollow it out then the player will only see the inside so that is the surface that is rendered and that we need to align to the large grid. There are two tools to hollow out a block, both activated by a button on the left button bar: one called &#039;hollow&#039; and the other &#039;room&#039;.  Don&#039;t use &#039;hollow&#039; as it reduces the internal sides so they don&#039;t fit the big grid AND it overlaps the corners which can cause rendering errors like so....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;center&amp;gt;BAD!&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:AZhollow.jpg]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead use the &#039;room&#039; button which does the job right (note the increased size so the &#039;&#039;internal&#039;&#039; dimensions will be the same as our original block and align to the big grid...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;center&amp;gt;GOOD!&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:AZroom.jpg]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All brushes in Doom must be convex. They cannot have any inward angles (like an L shape which would have to be two brushes together) and cannot actually be hollow. The above tools really create new side panel brushes to replace the original brush. In the case of our six-sided block that is six new brushes positioned as walls, floor, and ceiling. &#039;&#039;The walls they create are one small grid line wide so their width will vary depending on your grid size setting.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Examine the block in the camera view and zoom right inside so you can see it internally which is where it will be seen in game. Note the texture aligns nicely because we stuck to a big grid size. The stone is appropriate for all four walls (which is why I textured the whole block in one go rather than one surface at a time) but now we need different textures for floor and ceiling...&lt;br /&gt;
&lt;br /&gt;
== Selecting and Texturing Individual Surfaces ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You cannot select a surface in the grid view&#039;&#039;&#039; so move inside the room in the camera view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To texture the floor...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Press Esc to make sure everything is DEselected&lt;br /&gt;
* Point at the floor and use {{key|SHIFT}}+{{LMB}}. Repeat a few times and you will see it selects/DEselects the surface. Keep it selected.&lt;br /&gt;
* Select the Media Browser again (on the tabbed panel)&lt;br /&gt;
* In the darkmod section select say stone/cobblestones or maybe you would like some wood/boards/worn_01 ? You choose but something like carpet might need special alignment so stick with stones or boards maybe for now? Remember - RIGHT click the texture name and select &#039;Apply to Selection&#039;&lt;br /&gt;
* Alternatively you can click on several possibles then select them with one LMB in the Texture Browser on the other tab. In the Texture Browser you can enlarge the textures if preferred to see them better.&lt;br /&gt;
* Esc to DEselect so you can see it better in camera view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To texture the ceiling...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Press Esc to make sure everything is DEselected&lt;br /&gt;
* Point at the ceiling and use {{key|SHIFT}}+{{LMB}} again to select its surface.&lt;br /&gt;
* Select the Media Browser again (on the tabbed panel)&lt;br /&gt;
* In the darkmod section select say plaster/plaster01 and apply it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you change your mind about the walls you can change them to something else...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Press Esc to make sure everything is DEselected&lt;br /&gt;
* Point at one wall and use {{key|SHIFT}}+{{LMB}} again to select its surface.&lt;br /&gt;
* Point at another wall use {{key|SHIFT}}+{{LMB}} again so now both surfaces are selected&lt;br /&gt;
* &#039;Accidentally&#039; select the ceiling. No problem. Just use {{key|SHIFT}}+{{LMB}} on it again to DEselect it but the walls are still selected. In this way you can select which surfaces you want to select.&lt;br /&gt;
* Select the Media Browser again and just apply another type of stone, perhaps brick, to the walls if you want or just leave it as it is.&lt;br /&gt;
&lt;br /&gt;
Now press {{key|CTRL}}+{{key|S}} to resave the mission or use the File menu. Get into the habit of doing this often unless you have autosave set. Now and again you can also save with a new name so you can go back to an earlier one if you totally mess up. Note: There is also a backup file made automatically by DR.&lt;br /&gt;
&lt;br /&gt;
== Adding the Player&#039;s Start Point ==&lt;br /&gt;
&lt;br /&gt;
One more thing is &#039;&#039;essential&#039;&#039; to play this in Dark Mod and that is the Player&#039;s starting position.&lt;br /&gt;
&lt;br /&gt;
* Press Esc to DEselect everything.&lt;br /&gt;
* In the TOP grid view, point the mouse in the middle of the room and RMB to get a pop up menu. This menu is important so glance at some of the other items on it while you&#039;re here. &#039;Entities&#039; are special function items and the player start is amongst them but there is a shortcut on the menu so instead...&lt;br /&gt;
* Select &amp;quot;Create Player Start here&amp;quot; on the menu. This will create the playerstart entity (red box) and put it where you clicked. Drag the entity around to the point where you want the player to start.&lt;br /&gt;
* You should see an arrow on the red box indicating the way the player will face at the start. If you cannot see the arrow then menu &amp;lt;tt&amp;gt;View &amp;gt; Show &amp;gt; Show Angles&amp;lt;/tt&amp;gt; will reveal it. You can rotate the player by selecting &#039;&#039;Rotate&#039;&#039; tool ([[Image:DRrotate.jpg]], {{key|R}}) and dragging with the mouse.&lt;br /&gt;
* Use {{key|CTRL}}+{{key|Tab}} to switch to the side view (YZ) and use LMB to drag the &#039;&#039;inside&#039;&#039; of the player start box so its base is on the floor of the room (you can also use &#039;&#039;Translate&#039;&#039; tool, [[Image:DRtranslate.jpg]], {{key|W}}). Make sure you do not go below or the floor or the player might be stuck with his feet in concrete! Tip: In Thief games it was common to start just dropping over a wall with this player start a few feet above the ground. You might note that entities do not directly resize like brushes so LMB dragging on the &#039;&#039;outside&#039;&#039; of the box does nothing (unless you have selected the &#039;&#039;Translate&#039;&#039; tool).&lt;br /&gt;
* RMB in the grid view again and you will see there is now a &#039;&#039;Move player start here&#039;&#039; option so you can quickly move its position while testing different areas of your mission. But always remember to check both the side and top view when moving things around, to make sure the vertical position is also valid. (Also note that &#039;&#039;Move player start here&#039;&#039; does not &#039;&#039;select&#039;&#039; the player start - you will need to select it if you need to adjust its position by dragging.)&lt;br /&gt;
* With the player start still selected you can select the Entity Inspector (on the panel, or {{key|N}} to hide/show it) and see the properties of your first entity.&lt;br /&gt;
&lt;br /&gt;
The game could now be played but it will be totally dark so we need to create at least one light.....&lt;br /&gt;
&lt;br /&gt;
== Creating a Light ==&lt;br /&gt;
&lt;br /&gt;
* Press Esc to DEselect everything.&lt;br /&gt;
* In the TOP grid view, point the mouse in the &#039;&#039;middle&#039;&#039; of the room and RMB to get the pop up menu.&lt;br /&gt;
* Select &amp;quot;Create Light&amp;quot; on the menu.&lt;br /&gt;
* A large red box appears with diagonals representing the light&#039;s centre and its rough &#039;radius&#039;. The default light is more like six pyramids pointing out to their peaks in the centre of each side of the box. This gives a rough impression of a sphere of light and helps performance. &lt;br /&gt;
* {{key|CTRL}}+{{key|TAB}} to get a side view and LMB drag &#039;&#039;right in the centre of the light&#039;&#039; to move it up/down to centre it in the room if it is not already. Just dragging inside the radius box won&#039;t move it - you have to point at the centre.&lt;br /&gt;
&lt;br /&gt;
== Resizing a Light ==&lt;br /&gt;
&lt;br /&gt;
Resizing a light is awkward because dragging any side moves the centre (this might be changed in a later Dark Radiant.) Two ways of dealing with this. Just roughly drag it about and keep moving the light back to where you want it. But if you have very precisely positioned a light then you don&#039;t want to have to keep doing that so this is what I do...&lt;br /&gt;
&lt;br /&gt;
* Select the Entity Inspector on the panel&lt;br /&gt;
* You should see it has a light radius property with three values for XYZ for the three dimensions. They are north and south for Y, east and west for X, and up and down for Z. (those are the compass directions in game by the way.)&lt;br /&gt;
* Click on the light radius property to highlight it.&lt;br /&gt;
* Note that its values appear in a choice of inputs at the bottom - You can type new values in a line with a space in between then click the check(tick) button or enter them as separate values or even use the little scrolly buttons at the side and then click the Apply button.&lt;br /&gt;
* The room interior is 192 x 256 x 128 (in XYZ order) so give the light radius the values 200 260 133 so it protrudes outside the walls (we&#039;re setting radius - so the light diameter will be twice that size). We may well change this again later if we want the light to spill out through a doorway or something.&lt;br /&gt;
* You can now toggle light rendering in the preview using {{Key|F3}} (or an icon in the preview toolbar) to see how the light affects the walls.&lt;br /&gt;
&lt;br /&gt;
The light radius is not just a cut-off point. It can be regarded as a &#039;fade to zero point&#039;. What this means is that the light is at maximum brightness at its centre and fades to zero at the limit of the radius. So in a big open area, if you extend the radius you will &#039;stretch the brightness&#039; further. Imagine the scale from max to min compacted in a small radius or expanded in a large one. More on this later when we place wall torches.&lt;br /&gt;
&lt;br /&gt;
== Changing a Light&#039;s Brightness ==&lt;br /&gt;
&lt;br /&gt;
The light may be a little bright. To change it...&lt;br /&gt;
&lt;br /&gt;
* Press L (or View menu)* to call up the Light Inspector&lt;br /&gt;
* Click on the white rectangle button just below where it says &#039;Colour&#039;&lt;br /&gt;
* The brightness value is called &#039;Lum:&#039; (luminosity) and should default to 100. Reduce it to 90, by overtyping it or using the slider to the far right. It might not matter. I&#039;m just showing you where the control is for now.&lt;br /&gt;
* Fool around with the colours if you want - there are extensive features I won&#039;t cover here.&lt;br /&gt;
&lt;br /&gt;
Hey! We should have your first working mission! Do a {{key|CTRL}}+{{key|S}} to save it and then follow the next sections in Dark Mod itself not in Dark Radiant.....&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
There is no need to do anything special about &#039;&#039;hearing&#039;&#039; sounds such as footsteps, collision sounds, etc. at this stage as it will work automatically. Adding custom sounds will be dealt with later.&lt;br /&gt;
&lt;br /&gt;
== Pathfinding ==&lt;br /&gt;
&lt;br /&gt;
Pathfinding data to tell the AI characters where they can move is created by dmap by default when compiling in the next section...&lt;br /&gt;
&lt;br /&gt;
== Dmap: Compiling the Mission ==&lt;br /&gt;
&lt;br /&gt;
* Your mission file cannot be played itself; it is simply the directions to create a game file. To do this...&lt;br /&gt;
* From any Dark Mod menu go to the console. By default, the console is {{key|CTRL}}+{{key|ALT}}+{{key|~}} (US Keyboards) or {{key|CTRL}}+{{key|ALT}}+{{key|&#039;}} (UK Keyboards). This key is the top left below Esc and to the left of &amp;quot;1&amp;quot; on all keyboards I believe.  But most people set up a shortcut to just use the ~ (` in UK) on its own so:&lt;br /&gt;
&lt;br /&gt;
 For single key click to get the console:&lt;br /&gt;
 In your desktop shortcut to Doom3.exe add this argument to its properties (right click shortcut): &#039;&#039;&#039;&#039;&#039;+set com_allowConsole 1&#039;&#039;&#039;&#039;&#039; so the target line would be something like:&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&#039;&#039;C:\Doom3\doom3.exe +set com_allowConsole 1&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 (plus any other arguments you might want)&lt;br /&gt;
* In the console type and Enter dmap Tut/T001 where you should substitute your subfolder name for Tut and your mission filename for T001. So, if you created your mission file directly in the maps folder then you do not need a folder name and can put dmap T001. If you made a subfolder in maps called MyMaps and named your mission MissionImpossible999.map then enter dmap MyMaps/MissionImpossible999. I recommend you do not use upper case in filenames in Doom as I think it can cause problems on other platforms.&lt;br /&gt;
* Wait while dmap compiles the mission. This should only be a few seconds with this tiny mission but will be much longer for big missions.&lt;br /&gt;
* If you get a &#039;leaked&#039; error or some other serious red warning then recheck your work; look for gaps in the wall or a wrong texture like nodraw or have you got an entity outside in the void? See [[Performance: Essential Must-Knows#How to detect and fix leaks|HERE]] for more about fixing leaks but at this stage of this tutorial it might be easier just to redo. What I have laboured over is basically make a block, texture it, hollow it, stick in a player start and a light. As you get more proficient you can do it in less than a minute.&lt;br /&gt;
* Assuming there were no dmap red &amp;quot;ERROR&amp;quot;s then you should be returned to the Dark Mod menus and are now able to play the mission.&lt;br /&gt;
* Return to the console.&lt;br /&gt;
* Type and Enter map Tut/T001. Tip: Press the up arrow key toggles back through the history of what you have typed before so your dmap should re-appear. Just press the Home key and delete the &#039;d&#039;. An alternative is to use &#039;testmap&#039; instead of dmap which does both dmap and map but I prefer to see dmap&#039;s results.&lt;br /&gt;
* You should now be able to walk around in the room. If you have a player shadow set then you might notice that walking through that light looks odd so keep that in mind for light placement. But most lights you will place close to a visible source like a gaslight or wall torch.&lt;br /&gt;
&lt;br /&gt;
That&#039;s the first part done!&lt;br /&gt;
&lt;br /&gt;
{{A-Z Beginner Guide TOC}}&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=LOD&amp;diff=18090</id>
		<title>LOD</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=LOD&amp;diff=18090"/>
		<updated>2015-02-08T10:46:06Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Customizing AI models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;Level of Detail&#039;&#039;&#039; (LOD) system can be used to bring more details to the screen while still speeding up rendering. See [http://en.wikipedia.org/wiki/Level_of_detail Wikipedia] for an introduction.&lt;br /&gt;
&lt;br /&gt;
== The new LOD System - Overview ==&lt;br /&gt;
&lt;br /&gt;
[[Image:TheDarkMod LOD System Overview.png]]&lt;br /&gt;
&lt;br /&gt;
SVG version of the above graphic [http://bloodgate.com/mirrors/tdm/TheDarkMod_LOD_System.svg here].&lt;br /&gt;
&lt;br /&gt;
{{infobox|Note: Fade in and fade out &#039;&#039;&#039;only&#039;&#039;&#039; work via &#039;&#039;[[alpha-fading]]&#039;&#039;, so on materials that use an alpha blend and don&#039;t respond to lighting.|bg=#f09090|fg=yellow}}&lt;br /&gt;
&lt;br /&gt;
== How to use LOD in your TDM map ==&lt;br /&gt;
&lt;br /&gt;
To enable the LOD system, use either one of the pre-made LOD-enabled entities in your map (most of these are defined in &#039;&#039;&#039;def/tdm_lod.def&#039;&#039;&#039;) or set &#039;&#039;&#039;dist_check_period&#039;&#039;&#039; to a number greater than 0.&lt;br /&gt;
&lt;br /&gt;
Note: The &#039;&#039;&#039;dist_check_period&#039;&#039;&#039; spawnarg needs to be combined with one of &amp;quot;hide_distance&amp;quot; or &amp;quot;lod_X_distance&amp;quot; and &amp;quot;model_lod_X&amp;quot;, &amp;quot;skin_lod_X&amp;quot; or &amp;quot;noshadows_lod_X&amp;quot; to have any effect!&lt;br /&gt;
&lt;br /&gt;
See also &#039;&#039;&#039;[[LOD Bias]]&#039;&#039;&#039; for how to hide individual entities depending on the menu setting.&lt;br /&gt;
 &lt;br /&gt;
== GUI Setting ==&lt;br /&gt;
&lt;br /&gt;
There is a new GUI setting, called [[Object detail| &#039;&#039;&#039;Object detail&#039;&#039;&#039; ]]. You&#039;ll find it under &amp;lt;tt&amp;gt;&#039;&#039;&#039;Settings - Video - Advanced&#039;&#039;&#039;&amp;lt;/tt&amp;gt;. It consist of multiple levels, where &#039;&#039;&#039;Normal&#039;&#039;&#039; is the default. Lower settings cause the LOD distances to shrink, meaning entities switch sooner to the low-quality version and vanish sooner. Higher settings are the opposite, increasing the quality, but may be decreasing the FPS.&lt;br /&gt;
&lt;br /&gt;
Mappers should design and test their map with the &#039;&#039;&#039;Normal&#039;&#039;&#039; setting on a typical modern PC (e.g. not too old and not high-end gaming rig either), and preferable also test on some slower and faster machines.&lt;br /&gt;
&lt;br /&gt;
== Entities ==&lt;br /&gt;
&lt;br /&gt;
Supported entity types:&lt;br /&gt;
* Models that don&#039;t move (i.e. func static models)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;From TDM version 2.03:&#039;&#039;&lt;br /&gt;
* Animated models like waving flags and laundry (i.e. anything with spawnclass idAnimated)&lt;br /&gt;
* AI&lt;br /&gt;
* Animated attachments to AI&lt;br /&gt;
&lt;br /&gt;
=== Example entities ===&lt;br /&gt;
&lt;br /&gt;
* atdm:nature_pine_skeleton (just the tree trunk)&lt;br /&gt;
* atdm:nature_pine (Pine + particle leaves slowly swaying)&lt;br /&gt;
* atdm:nature_tree_stump&lt;br /&gt;
&lt;br /&gt;
More can be found in the &amp;quot;Nature&amp;quot; folder with the DarkRadiant &amp;quot;Create entity&amp;quot; command.&lt;br /&gt;
&lt;br /&gt;
== Spawnargs ==&lt;br /&gt;
&lt;br /&gt;
=== min_lod_bias/max_lod_bias ===&lt;br /&gt;
&lt;br /&gt;
See [[LOD Bias]] for how to hide individual entities depending on the menu setting.&lt;br /&gt;
&lt;br /&gt;
=== hide_distance ===&lt;br /&gt;
&lt;br /&gt;
In D3 units. When set to a value &amp;gt; 0, then the entity will be hidden if it is further away than this distance from the player.&lt;br /&gt;
&lt;br /&gt;
Note: This might cause &amp;quot;popping&amp;quot;, e.g. the entity will suddenly vanish or appear. See &#039;&#039;&#039;lod_fadeout_range&#039;&#039;&#039; for how to avoid this.&lt;br /&gt;
&lt;br /&gt;
The actual value used from this spawnarg is modified by the menu setting &amp;quot;Object detail&amp;quot;, so make to sure to test with this setting at &amp;quot;Normal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== lod_normal_distance ===&lt;br /&gt;
&lt;br /&gt;
From TDM v1.05 onwards: This spawnarg defines a &#039;&#039;&#039;minimum&#039;&#039;&#039; distance from the player where the entity will ignore settings lower than &#039;&#039;&#039;Normal&#039;&#039;&#039;. This can be used to enforce a certain minimum distance so that players who set the detail level to &#039;&#039;&#039;Low&#039;&#039;&#039; or &#039;&#039;&#039;Lowest&#039;&#039;&#039; still do not experience entities popping in and out when being very close.&lt;br /&gt;
&lt;br /&gt;
If this spawnarg is not set, it defaults to &#039;&#039;&#039;500 units&#039;&#039;&#039;. Avoid setting this spawnarg too high or even equal or higher than &amp;quot;hide_distance&amp;quot;. This would only result in the menu setting &amp;quot;Object detail&amp;quot; being fixed at &amp;quot;Normal&amp;quot;, e.g. players could never lower the quality settings to achive better frame rates. Do so only in rare cases where important entities would otherwise vanish in front of the eyes of the player.&lt;br /&gt;
&lt;br /&gt;
=== lod_hide_probability ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;lod_hide_distance&#039;&#039;&#039; is true, this spawnarg controls what the probabiliy of this entity vanishing is. Values range from 0.0 (will never vanish) to 1.0 (will certainly vanish). Whether a particular entity vanishes is computed at map start, so an entity either stays or vanishes, but does not change during the map play time.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;lod_hide_probability&amp;quot; &amp;quot;0.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you place X identical entities, about 20% of them will vanish at the &#039;&#039;&#039;hide_distance&#039;&#039;&#039; and 80% will stay.&lt;br /&gt;
&lt;br /&gt;
This can be used to &amp;quot;thin out&amp;quot; forests at a distance without having them vanish completely.&lt;br /&gt;
&lt;br /&gt;
=== lod_X_distance ===&lt;br /&gt;
&lt;br /&gt;
In D3 units. Sets the distance from where on LOD X is used. Will be valid until the next defined lod_(X+1)_distance, or infinty if there is no further LOD distance set.&lt;br /&gt;
&lt;br /&gt;
To change the appearance of the entity inside this LOD, use the following spawnargs with a matching X:&lt;br /&gt;
&lt;br /&gt;
==== model_lod_X ====&lt;br /&gt;
&lt;br /&gt;
Set the model the entity displays inside this LOD. If not set, uses the model from LOD 0 e.g. the one from the &amp;quot;model&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;From TDM version 2.03:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A special value &amp;quot;be_still&amp;quot; is supported for animated models. Setting model_lod_X to &amp;quot;be_still&amp;quot; for a LOD level means: stop the animation but don&#039;t switch model.&lt;br /&gt;
&lt;br /&gt;
==== skin_lod_X ====&lt;br /&gt;
&lt;br /&gt;
Set the skin the entity displays uses this LOD. If not set, uses the skin from LOD 0 e.g. the one from the &amp;quot;skin&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
==== noshadows_lod_X ====&lt;br /&gt;
&lt;br /&gt;
Boolean. If set, the entity casts no shadows while in this LOD zone.&lt;br /&gt;
&lt;br /&gt;
==== offset_lod_X ====&lt;br /&gt;
Vector. Origin offset that can be applied to the replacement model if it doesn&#039;t naturally line up with the original.&lt;br /&gt;
&lt;br /&gt;
==== lod_fadein_range ====&lt;br /&gt;
&lt;br /&gt;
{{infobox|Note: Fade in and fade out only work via &#039;&#039;[[alpha-fading]]&#039;&#039;, so on materials that use an alpha blend and don&#039;t respond to lighting.|bg=#f09090|fg=yellow}}&lt;br /&gt;
&lt;br /&gt;
In D3 units. If set to non-zero, then the object will start hidden and begin to fade in at &#039;&#039;&#039;lod_1_distance&#039;&#039;&#039; - &#039;&#039;&#039;lod_fadein_range&#039;&#039;&#039; and be completely (100% opacity) visible at &#039;&#039;&#039;lod_1_distance&#039;&#039;&#039;. This can be used to create entities that only appear in some distance but not close up.&lt;br /&gt;
&lt;br /&gt;
==== lod_fadeout_range ====&lt;br /&gt;
&lt;br /&gt;
{{infobox|Note: Fade in and fade out only work via &#039;&#039;[[alpha-fading]]&#039;&#039;, so on materials that use an alpha blend and don&#039;t respond to lighting.|bg=#f09090|fg=yellow}}&lt;br /&gt;
&lt;br /&gt;
In D3 units. If set to non-zero, then the object will not vanish suddenly at &#039;&#039;&#039;hide_distance&#039;&#039;&#039;, but start to fade out and be completely invisible at &#039;&#039;&#039;hide_distance&#039;&#039;&#039; + &#039;&#039;&#039;lod_fadeoutrange&#039;&#039;&#039;. Defaults to 0.&lt;br /&gt;
&lt;br /&gt;
=== no_lod ===&lt;br /&gt;
:&#039;&#039;This spawnarg will be available in TDM version 2.03&#039;&#039;&lt;br /&gt;
Set &amp;quot;no_lod&amp;quot; &amp;quot;1&amp;quot; to disable LOD completely on an entity. Useful if you want to make use of a LOD entity but use a custom setup.&lt;br /&gt;
&lt;br /&gt;
== Increasing the LOD steps ==&lt;br /&gt;
&lt;br /&gt;
The number of possible LOD steps is fixed in code and defined in &#039;&#039;&#039;game/misc.h&#039;&#039;&#039; as a constant. The current&lt;br /&gt;
value is 7, meaning that there are 5 different rendering possibilities beside level 0 (the original) and level 6 (the object is hidden). That should be enough even for huge outdoor maps.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
Profiling showed that 3000 thinking entities consume about 7% CPU time. So if you use only a few hundred or thousand LOD entities, the performance of the extra thinking time is very small compared to the benefits of having only a few entities actually visible around the player. &lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
At it&#039;s simplest, model, dist_check_period, hide_distance, lod_1_distance and model_lod_1 are used:&lt;br /&gt;
[[File:Lod_test2.png|thumb|right|click for full size]]&lt;br /&gt;
* &#039;&#039;&#039;model &#039;&#039;RegularModelName&#039;&#039;&#039;&#039;&#039; -- point this to the fully detailed model&lt;br /&gt;
* &#039;&#039;&#039;dist_check_period 0.5&#039;&#039;&#039; -- time in seconds between distance checks&lt;br /&gt;
* &#039;&#039;&#039;hide_distance 400&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;lod_1_distance 100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;model_lod_1 &#039;&#039;LessDetailedModelName&#039;&#039;&#039;&#039;&#039; -- lower detail model&lt;br /&gt;
* &#039;&#039;&#039;lod_2_distance 200&#039;&#039;&#039; -- (optional further step)&lt;br /&gt;
* &#039;&#039;&#039;model_lod_2 &#039;&#039;LowerDetailModelName&#039;&#039;&#039;&#039;&#039; -- even lower detail model (optional further step)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Customizing AI models ==&lt;br /&gt;
From TDM 2.03, many of the common AI models use LOD. This is automatic. They are much more detailed than in 2.02 when seen close up, and are lower-poly when seen in the distance.&lt;br /&gt;
&lt;br /&gt;
If you want to switch an AI&#039;s model, for example to make a Builder archer from a citywatch archer by changing the model def and the vocal set and team, then you have a choice: you can change all the different model_lod_* stages to match the ones used by your target Builder; or you can change only the &amp;quot;model&amp;quot; spawnarg, which will work ok but note that LOD will be switched off for that AI. That&#039;s because you won&#039;t your Builder archer to revert to a citywatch model when distant. &lt;br /&gt;
&lt;br /&gt;
This rule was applied so that existing maps with custom models on AI woudn&#039;t get broken by the new AI LOD feature. The rules are: if the mapper overrides the &amp;quot;model&amp;quot; spawnarg but doesn&#039;t override any &amp;quot;model_lod&amp;quot; spawnargs, LOD is disabled on the entity. If the mapper overrides at least one &amp;quot;model_lod&amp;quot; spawnarg too, that shows they have it in hand so LOD remains enabled on the entity.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
Doom3 did not have any LOD system at all. The first steps of such a system were added in TDM by supporting a &#039;&#039;&#039;hide_distance&#039;&#039;&#039; spawnarg, which made entities hide or portals close once they were further away than this distance. The LOD system in TDM was totally rewritten for v1.04. &lt;br /&gt;
&lt;br /&gt;
Support for animated models and AI was added in TDM version 2.03. More details are available on the [http://bugs.thedarkmod.com/view.php?id=3770 bugtracker].&lt;br /&gt;
&lt;br /&gt;
=== Comparison ===&lt;br /&gt;
&lt;br /&gt;
Here we compare the new (v1.04) to the old system (until v1.02):&lt;br /&gt;
&lt;br /&gt;
* The old system had only two levels: 0 (original model), and 1 (entity is hidden)&lt;br /&gt;
* Due to a typo, all thinking for the LOD entities happened in the first half of the interval. That means if you set the intervall to 1 s, all entities did their distance check between 0 and 0.5 seconds, and none between 0.5 and 1 second and so on. This lead to fluctuating frame rates.&lt;br /&gt;
&lt;br /&gt;
The new system:&lt;br /&gt;
&lt;br /&gt;
* Supports up to 7 levels (last is &#039;&#039;hide&#039;&#039;), more can easily be done with a recompile&lt;br /&gt;
* You can use less levels if you want&lt;br /&gt;
* Thinking is distributed over the entire interval&lt;br /&gt;
* makes scenes with thousands of entities possible&lt;br /&gt;
* Can not only switch the model, but also change the skin (f.i. use less expensive glass shaders) and turn shadows off&lt;br /&gt;
* Can hide only a fraction of all entities of the same class (&#039;&#039;thinning out&#039;&#039;)&lt;br /&gt;
* Allows the player (via the settings menu) to control the quality vs. speed&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[LOD Bias]]&lt;br /&gt;
* [[Creating LOD Models]] with only Gimp/Photoshop and DarkRadiant&lt;br /&gt;
* [[List of LOD Models]]&lt;br /&gt;
* [[SEED]] - Random entity placement and distant culling&lt;br /&gt;
&lt;br /&gt;
{{editing}} {{scripting}}&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=LOD&amp;diff=18089</id>
		<title>LOD</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=LOD&amp;diff=18089"/>
		<updated>2015-02-08T10:45:44Z</updated>

		<summary type="html">&lt;p&gt;SteveL: + Customizing AI models&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;Level of Detail&#039;&#039;&#039; (LOD) system can be used to bring more details to the screen while still speeding up rendering. See [http://en.wikipedia.org/wiki/Level_of_detail Wikipedia] for an introduction.&lt;br /&gt;
&lt;br /&gt;
== The new LOD System - Overview ==&lt;br /&gt;
&lt;br /&gt;
[[Image:TheDarkMod LOD System Overview.png]]&lt;br /&gt;
&lt;br /&gt;
SVG version of the above graphic [http://bloodgate.com/mirrors/tdm/TheDarkMod_LOD_System.svg here].&lt;br /&gt;
&lt;br /&gt;
{{infobox|Note: Fade in and fade out &#039;&#039;&#039;only&#039;&#039;&#039; work via &#039;&#039;[[alpha-fading]]&#039;&#039;, so on materials that use an alpha blend and don&#039;t respond to lighting.|bg=#f09090|fg=yellow}}&lt;br /&gt;
&lt;br /&gt;
== How to use LOD in your TDM map ==&lt;br /&gt;
&lt;br /&gt;
To enable the LOD system, use either one of the pre-made LOD-enabled entities in your map (most of these are defined in &#039;&#039;&#039;def/tdm_lod.def&#039;&#039;&#039;) or set &#039;&#039;&#039;dist_check_period&#039;&#039;&#039; to a number greater than 0.&lt;br /&gt;
&lt;br /&gt;
Note: The &#039;&#039;&#039;dist_check_period&#039;&#039;&#039; spawnarg needs to be combined with one of &amp;quot;hide_distance&amp;quot; or &amp;quot;lod_X_distance&amp;quot; and &amp;quot;model_lod_X&amp;quot;, &amp;quot;skin_lod_X&amp;quot; or &amp;quot;noshadows_lod_X&amp;quot; to have any effect!&lt;br /&gt;
&lt;br /&gt;
See also &#039;&#039;&#039;[[LOD Bias]]&#039;&#039;&#039; for how to hide individual entities depending on the menu setting.&lt;br /&gt;
 &lt;br /&gt;
== GUI Setting ==&lt;br /&gt;
&lt;br /&gt;
There is a new GUI setting, called [[Object detail| &#039;&#039;&#039;Object detail&#039;&#039;&#039; ]]. You&#039;ll find it under &amp;lt;tt&amp;gt;&#039;&#039;&#039;Settings - Video - Advanced&#039;&#039;&#039;&amp;lt;/tt&amp;gt;. It consist of multiple levels, where &#039;&#039;&#039;Normal&#039;&#039;&#039; is the default. Lower settings cause the LOD distances to shrink, meaning entities switch sooner to the low-quality version and vanish sooner. Higher settings are the opposite, increasing the quality, but may be decreasing the FPS.&lt;br /&gt;
&lt;br /&gt;
Mappers should design and test their map with the &#039;&#039;&#039;Normal&#039;&#039;&#039; setting on a typical modern PC (e.g. not too old and not high-end gaming rig either), and preferable also test on some slower and faster machines.&lt;br /&gt;
&lt;br /&gt;
== Entities ==&lt;br /&gt;
&lt;br /&gt;
Supported entity types:&lt;br /&gt;
* Models that don&#039;t move (i.e. func static models)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;From TDM version 2.03:&#039;&#039;&lt;br /&gt;
* Animated models like waving flags and laundry (i.e. anything with spawnclass idAnimated)&lt;br /&gt;
* AI&lt;br /&gt;
* Animated attachments to AI&lt;br /&gt;
&lt;br /&gt;
=== Example entities ===&lt;br /&gt;
&lt;br /&gt;
* atdm:nature_pine_skeleton (just the tree trunk)&lt;br /&gt;
* atdm:nature_pine (Pine + particle leaves slowly swaying)&lt;br /&gt;
* atdm:nature_tree_stump&lt;br /&gt;
&lt;br /&gt;
More can be found in the &amp;quot;Nature&amp;quot; folder with the DarkRadiant &amp;quot;Create entity&amp;quot; command.&lt;br /&gt;
&lt;br /&gt;
== Spawnargs ==&lt;br /&gt;
&lt;br /&gt;
=== min_lod_bias/max_lod_bias ===&lt;br /&gt;
&lt;br /&gt;
See [[LOD Bias]] for how to hide individual entities depending on the menu setting.&lt;br /&gt;
&lt;br /&gt;
=== hide_distance ===&lt;br /&gt;
&lt;br /&gt;
In D3 units. When set to a value &amp;gt; 0, then the entity will be hidden if it is further away than this distance from the player.&lt;br /&gt;
&lt;br /&gt;
Note: This might cause &amp;quot;popping&amp;quot;, e.g. the entity will suddenly vanish or appear. See &#039;&#039;&#039;lod_fadeout_range&#039;&#039;&#039; for how to avoid this.&lt;br /&gt;
&lt;br /&gt;
The actual value used from this spawnarg is modified by the menu setting &amp;quot;Object detail&amp;quot;, so make to sure to test with this setting at &amp;quot;Normal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== lod_normal_distance ===&lt;br /&gt;
&lt;br /&gt;
From TDM v1.05 onwards: This spawnarg defines a &#039;&#039;&#039;minimum&#039;&#039;&#039; distance from the player where the entity will ignore settings lower than &#039;&#039;&#039;Normal&#039;&#039;&#039;. This can be used to enforce a certain minimum distance so that players who set the detail level to &#039;&#039;&#039;Low&#039;&#039;&#039; or &#039;&#039;&#039;Lowest&#039;&#039;&#039; still do not experience entities popping in and out when being very close.&lt;br /&gt;
&lt;br /&gt;
If this spawnarg is not set, it defaults to &#039;&#039;&#039;500 units&#039;&#039;&#039;. Avoid setting this spawnarg too high or even equal or higher than &amp;quot;hide_distance&amp;quot;. This would only result in the menu setting &amp;quot;Object detail&amp;quot; being fixed at &amp;quot;Normal&amp;quot;, e.g. players could never lower the quality settings to achive better frame rates. Do so only in rare cases where important entities would otherwise vanish in front of the eyes of the player.&lt;br /&gt;
&lt;br /&gt;
=== lod_hide_probability ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;lod_hide_distance&#039;&#039;&#039; is true, this spawnarg controls what the probabiliy of this entity vanishing is. Values range from 0.0 (will never vanish) to 1.0 (will certainly vanish). Whether a particular entity vanishes is computed at map start, so an entity either stays or vanishes, but does not change during the map play time.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;lod_hide_probability&amp;quot; &amp;quot;0.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you place X identical entities, about 20% of them will vanish at the &#039;&#039;&#039;hide_distance&#039;&#039;&#039; and 80% will stay.&lt;br /&gt;
&lt;br /&gt;
This can be used to &amp;quot;thin out&amp;quot; forests at a distance without having them vanish completely.&lt;br /&gt;
&lt;br /&gt;
=== lod_X_distance ===&lt;br /&gt;
&lt;br /&gt;
In D3 units. Sets the distance from where on LOD X is used. Will be valid until the next defined lod_(X+1)_distance, or infinty if there is no further LOD distance set.&lt;br /&gt;
&lt;br /&gt;
To change the appearance of the entity inside this LOD, use the following spawnargs with a matching X:&lt;br /&gt;
&lt;br /&gt;
==== model_lod_X ====&lt;br /&gt;
&lt;br /&gt;
Set the model the entity displays inside this LOD. If not set, uses the model from LOD 0 e.g. the one from the &amp;quot;model&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;From TDM version 2.03:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A special value &amp;quot;be_still&amp;quot; is supported for animated models. Setting model_lod_X to &amp;quot;be_still&amp;quot; for a LOD level means: stop the animation but don&#039;t switch model.&lt;br /&gt;
&lt;br /&gt;
==== skin_lod_X ====&lt;br /&gt;
&lt;br /&gt;
Set the skin the entity displays uses this LOD. If not set, uses the skin from LOD 0 e.g. the one from the &amp;quot;skin&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
==== noshadows_lod_X ====&lt;br /&gt;
&lt;br /&gt;
Boolean. If set, the entity casts no shadows while in this LOD zone.&lt;br /&gt;
&lt;br /&gt;
==== offset_lod_X ====&lt;br /&gt;
Vector. Origin offset that can be applied to the replacement model if it doesn&#039;t naturally line up with the original.&lt;br /&gt;
&lt;br /&gt;
==== lod_fadein_range ====&lt;br /&gt;
&lt;br /&gt;
{{infobox|Note: Fade in and fade out only work via &#039;&#039;[[alpha-fading]]&#039;&#039;, so on materials that use an alpha blend and don&#039;t respond to lighting.|bg=#f09090|fg=yellow}}&lt;br /&gt;
&lt;br /&gt;
In D3 units. If set to non-zero, then the object will start hidden and begin to fade in at &#039;&#039;&#039;lod_1_distance&#039;&#039;&#039; - &#039;&#039;&#039;lod_fadein_range&#039;&#039;&#039; and be completely (100% opacity) visible at &#039;&#039;&#039;lod_1_distance&#039;&#039;&#039;. This can be used to create entities that only appear in some distance but not close up.&lt;br /&gt;
&lt;br /&gt;
==== lod_fadeout_range ====&lt;br /&gt;
&lt;br /&gt;
{{infobox|Note: Fade in and fade out only work via &#039;&#039;[[alpha-fading]]&#039;&#039;, so on materials that use an alpha blend and don&#039;t respond to lighting.|bg=#f09090|fg=yellow}}&lt;br /&gt;
&lt;br /&gt;
In D3 units. If set to non-zero, then the object will not vanish suddenly at &#039;&#039;&#039;hide_distance&#039;&#039;&#039;, but start to fade out and be completely invisible at &#039;&#039;&#039;hide_distance&#039;&#039;&#039; + &#039;&#039;&#039;lod_fadeoutrange&#039;&#039;&#039;. Defaults to 0.&lt;br /&gt;
&lt;br /&gt;
=== no_lod ===&lt;br /&gt;
:&#039;&#039;This spawnarg will be available in TDM version 2.03&#039;&#039;&lt;br /&gt;
Set &amp;quot;no_lod&amp;quot; &amp;quot;1&amp;quot; to disable LOD completely on an entity. Useful if you want to make use of a LOD entity but use a custom setup.&lt;br /&gt;
&lt;br /&gt;
== Increasing the LOD steps ==&lt;br /&gt;
&lt;br /&gt;
The number of possible LOD steps is fixed in code and defined in &#039;&#039;&#039;game/misc.h&#039;&#039;&#039; as a constant. The current&lt;br /&gt;
value is 7, meaning that there are 5 different rendering possibilities beside level 0 (the original) and level 6 (the object is hidden). That should be enough even for huge outdoor maps.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
Profiling showed that 3000 thinking entities consume about 7% CPU time. So if you use only a few hundred or thousand LOD entities, the performance of the extra thinking time is very small compared to the benefits of having only a few entities actually visible around the player. &lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
At it&#039;s simplest, model, dist_check_period, hide_distance, lod_1_distance and model_lod_1 are used:&lt;br /&gt;
[[File:Lod_test2.png|thumb|right|click for full size]]&lt;br /&gt;
* &#039;&#039;&#039;model &#039;&#039;RegularModelName&#039;&#039;&#039;&#039;&#039; -- point this to the fully detailed model&lt;br /&gt;
* &#039;&#039;&#039;dist_check_period 0.5&#039;&#039;&#039; -- time in seconds between distance checks&lt;br /&gt;
* &#039;&#039;&#039;hide_distance 400&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;lod_1_distance 100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;model_lod_1 &#039;&#039;LessDetailedModelName&#039;&#039;&#039;&#039;&#039; -- lower detail model&lt;br /&gt;
* &#039;&#039;&#039;lod_2_distance 200&#039;&#039;&#039; -- (optional further step)&lt;br /&gt;
* &#039;&#039;&#039;model_lod_2 &#039;&#039;LowerDetailModelName&#039;&#039;&#039;&#039;&#039; -- even lower detail model (optional further step)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Customizing AI models ==&lt;br /&gt;
From TDM 2.03, many of the common AI models use LOD. This is automatic. They are much more detailed that in 2.02 when seen close up, and are lower-poly when seen in the distance.&lt;br /&gt;
&lt;br /&gt;
If you want to switch an AI&#039;s model, for example to make a Builder archer from a citywatch archer by changing the model def and the vocal set and team, then you have a choice: you can change all the different model_lod_* stages to match the ones used by your target Builder; or you can change only the &amp;quot;model&amp;quot; spawnarg, which will work ok but note that LOD will be switched off for that AI. That&#039;s because you won&#039;t your Builder archer to revert to a citywatch model when distant. &lt;br /&gt;
&lt;br /&gt;
This rule was applied so that existing maps with custom models on AI woudn&#039;t get broken by the new AI LOD feature. The rules are: if the mapper overrides the &amp;quot;model&amp;quot; spawnarg but doesn&#039;t override any &amp;quot;model_lod&amp;quot; spawnargs, LOD is disabled on the entity. If the mapper overrides at least one &amp;quot;model_lod&amp;quot; spawnarg too, that shows they have it in hand so LOD remains enabled on the entity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
Doom3 did not have any LOD system at all. The first steps of such a system were added in TDM by supporting a &#039;&#039;&#039;hide_distance&#039;&#039;&#039; spawnarg, which made entities hide or portals close once they were further away than this distance. The LOD system in TDM was totally rewritten for v1.04. &lt;br /&gt;
&lt;br /&gt;
Support for animated models and AI was added in TDM version 2.03. More details are available on the [http://bugs.thedarkmod.com/view.php?id=3770 bugtracker].&lt;br /&gt;
&lt;br /&gt;
=== Comparison ===&lt;br /&gt;
&lt;br /&gt;
Here we compare the new (v1.04) to the old system (until v1.02):&lt;br /&gt;
&lt;br /&gt;
* The old system had only two levels: 0 (original model), and 1 (entity is hidden)&lt;br /&gt;
* Due to a typo, all thinking for the LOD entities happened in the first half of the interval. That means if you set the intervall to 1 s, all entities did their distance check between 0 and 0.5 seconds, and none between 0.5 and 1 second and so on. This lead to fluctuating frame rates.&lt;br /&gt;
&lt;br /&gt;
The new system:&lt;br /&gt;
&lt;br /&gt;
* Supports up to 7 levels (last is &#039;&#039;hide&#039;&#039;), more can easily be done with a recompile&lt;br /&gt;
* You can use less levels if you want&lt;br /&gt;
* Thinking is distributed over the entire interval&lt;br /&gt;
* makes scenes with thousands of entities possible&lt;br /&gt;
* Can not only switch the model, but also change the skin (f.i. use less expensive glass shaders) and turn shadows off&lt;br /&gt;
* Can hide only a fraction of all entities of the same class (&#039;&#039;thinning out&#039;&#039;)&lt;br /&gt;
* Allows the player (via the settings menu) to control the quality vs. speed&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[LOD Bias]]&lt;br /&gt;
* [[Creating LOD Models]] with only Gimp/Photoshop and DarkRadiant&lt;br /&gt;
* [[List of LOD Models]]&lt;br /&gt;
* [[SEED]] - Random entity placement and distant culling&lt;br /&gt;
&lt;br /&gt;
{{editing}} {{scripting}}&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Particles&amp;diff=18088</id>
		<title>Particles</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Particles&amp;diff=18088"/>
		<updated>2015-02-08T10:29:09Z</updated>

		<summary type="html">&lt;p&gt;SteveL: + particle decl keywords&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Particles are VERY flexible - they can function as rain, snow, falling leaves, oscillating leaves and foliage, smoke, mist, flame, trickling sand, trickling water, drips, waterfall, spray, fountain - anything that can be made up of particles, big or small, fast or slow.&lt;br /&gt;
&lt;br /&gt;
There are already many particle effects available to the Dark Mod mapper. This tutorial is just the basics of how to get particle effects, new or old, into your mission...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting Particle effects into your game ==&lt;br /&gt;
&lt;br /&gt;
First, all that is assumed is you know the essentials described in [[Dark Radiant Must Know Basic Intro]]&lt;br /&gt;
&lt;br /&gt;
Like so many things - it&#039;s easy when you know how. Let me describe by example. Say you want to have some smoke coming out of a chimney in your mission...&lt;br /&gt;
&lt;br /&gt;
* Right click and select Create Entity.  Select func_emitter from the list.&lt;br /&gt;
* Add the property : model &lt;br /&gt;
* If you select the model property then you see two buttons at the bottom - Choose Model and Choose Particle.&lt;br /&gt;
* Select the Choose Particles button (see below for information on Choose Model)&lt;br /&gt;
* Select a particles effect from the list. For chimney smoke there are a couple of Doom ones - admin_hall_smk_cone.prt and mc2_hall_smk_cone.prt though they are a little bright (but could be modified in the Particles Editor and resaved as a new particles effect.) There are also a couple of Dark Mod ones - chimney_smoke1.prt and chimney_smoke2.prt at this time. Other DM stuff is under tdm_ but it&#039;s worth exploring the whole list to see what is available.&lt;br /&gt;
* All that remains is to position your func_emitter over a chimney.&lt;br /&gt;
* Note that there is a DR bug that does not allow you to rotate the func_emitter on the X or Y planes; however, there&#039;s some question whether most particles care about where the emitter is rotated.&lt;br /&gt;
&lt;br /&gt;
That will give you a start. Try out some of the others so you see what is available and what is possible and then you can move on to more advanced stuff...&lt;br /&gt;
&lt;br /&gt;
* Note that &#039;Choose Model&#039; does not assign a model or models to be emitted such as a leaf or snowflake (see [[Particle Editor]]) No, if you choose model then it just assigns a visible model shape to the entity in the normal way. I guess one could use a chimney pot in our example but the particle effect would have to be customised to line up so we shall create a separate particle effect and just place it over a chimney. Depends on what you are doing whether you need a model at the position of the particle effect. It does save on entities, but it is less flexible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Switching Particles on and off==&lt;br /&gt;
&lt;br /&gt;
func_emitter can be turned on and off by using target from any targetting entity eg a button or lever.&lt;br /&gt;
&lt;br /&gt;
Particle effects can also be created using the [[Stim/Response]] system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Starting OFF at game start==&lt;br /&gt;
&lt;br /&gt;
To start a particle effect OFF at game start give the func_emitter the property and value...&lt;br /&gt;
&lt;br /&gt;
start_off 1&lt;br /&gt;
&lt;br /&gt;
You can then make it start when you want by using target from any targetting entity eg a button or lever.&lt;br /&gt;
&lt;br /&gt;
Note that the particle effect may be very briefly visible at game start then turn off within a second. This is normal and I don&#039;t think can be avoided. In most cases this doesn&#039;t matter if the effect is not in the player&#039;s view right at game start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating Your Own Particle Effects ==&lt;br /&gt;
&lt;br /&gt;
You can create your own particle effects - or even easier - modify existing ones. To do this read [[Particle Editor]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Soft Particles ==&lt;br /&gt;
Beginning in TDM 2.03, particle effects are softened where they intersect solid objects. There&#039;s no longer any need to move lamp glares away from walls, and dust/fog/smoke will appear to be shapeless 3d volumes instead of 2d images cut off at the floor and walls. &lt;br /&gt;
&lt;br /&gt;
Soft particles start to fade out where they get close to solid objects. And when they intersect solid objects, they continue to draw over the top for a short distance. This &amp;quot;rubs out&amp;quot; any hard edges belonging to the 2d images that make up the particle effect, which stops the eye getting a fix on exactly where those images are and restores the illusion of a 3d volume. &lt;br /&gt;
&lt;br /&gt;
The range over which the particle fades out -- and is allow to draw over solid stuff -- is proportional to the &amp;quot;radius&amp;quot; of the particle volume being represented. By default, it&#039;s 0.4 times the diameter of the particle stages&#039; quads.&lt;br /&gt;
&lt;br /&gt;
Soft particles can be toggled on and off using the cvar r_useSoftParticles. &lt;br /&gt;
&lt;br /&gt;
Mappers don&#039;t have to do anything to take advantage of this -- it&#039;s enabled by default and will &amp;quot;just work&amp;quot; in 99% of cases -- but mappers can control the effect more precisely if they wish using the &amp;quot;SofteningRadius&amp;quot; keyword documented below. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Particle decl keywords ==&lt;br /&gt;
Most particle settings are applied using the particle editor, but there are a few more keywords that can be added manually to the decl generated by the editor.&lt;br /&gt;
&lt;br /&gt;
=== WorldAxis ===&lt;br /&gt;
Added in 2.03 to enable better candle smoke. If a particle stage has an offset to its origin, or if it moves in any way independent of gravity, WorldAxis will make that offset and movement use the world axis instead of the emitter&#039;s axis. Particles also have a WorldGravity keyword that&#039;s set using the particle editor. WorldGravity affects only movement under gravity. WorldAxis affects other kinds of movement plus offsets. Added so that candle smoke can rise upright at a constant rate no matter how the player turns the candle.&lt;br /&gt;
&lt;br /&gt;
Example: the new candle smoke in 2.03 starts with a narrow plume of smoke emitted from the candle&#039;s wick (which is where the emitter is placed), followed by a wider volume of wispy smoke that spreads out from the top of the narrow plume. Both stages use WorldAxis: the first stage so that it can rise upright from a knocked-over candle at a constant rate; the second stage so that it always starts from a point &#039;&#039;above&#039;&#039; the candle even if the candle is on its side.&lt;br /&gt;
&lt;br /&gt;
=== DepthHack ===&lt;br /&gt;
This is a primitive way of avoiding some particle intersections, the only one that was available in the original idTech4 engine. It&#039;s a keyword placed at the top of the particle decl and applies to all stages of the particle: it can&#039;t be applied separately to individual stages. It causes the particle to draw in front of solid objects by up to the specified number of units, e.g. &amp;quot;depthHack 20&amp;quot; was used in lamp glares to make them draw over things by up to 20 units. &lt;br /&gt;
&lt;br /&gt;
DepthHack is overridden by the new soft particle technique in TDM 2.03. The keyword and its value are ignored, unless the particle decl turns off the new soft particles effect.&lt;br /&gt;
&lt;br /&gt;
=== SofteningRadius ===&lt;br /&gt;
New particle stage keyword for TDM 2.03. Add this to individual particle &#039;&#039;stages&#039;&#039; to change the behaviour of soft particles. Accepted values are:&lt;br /&gt;
* -1: Turn off soft particles and draw this particle stage the old way, including using DepthHack if it&#039;s specified in the decl.&lt;br /&gt;
* 0: Turn off soft particles AND Depthhack.&lt;br /&gt;
* Any positive number: sets the particle &amp;quot;radius&amp;quot;, which is the amount it&#039;s allowed to draw in front of anything solid that intersects it. Defaults to 0.4 times the max particle quad size for the stage. If you have a tricky particle that&#039;s showing through a wall, you can reduce the radius a bit. For example: a tdm_dustfog_03 with a max quad size of 100 will have a default radius of 40. If you want to put it in a confined space where it ends up showing through a wall, you could add &amp;quot;softeningRadius 30&amp;quot; to the stage to stop that happening.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Tutorial]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Particle_Editor&amp;diff=18087</id>
		<title>Particle Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Particle_Editor&amp;diff=18087"/>
		<updated>2015-02-08T10:12:35Z</updated>

		<summary type="html">&lt;p&gt;SteveL: +Particle settings not set by the editor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beginners and those who just want to use the already existing particle effects might like to first read [[Particles for Beginners]].&lt;br /&gt;
&lt;br /&gt;
==Editing the particles themselves (size etc):==&lt;br /&gt;
The particle editor in DR is under menu option Entity &amp;gt; Particle Editor&lt;br /&gt;
&lt;br /&gt;
[[Image:Ptcl editor.png|728px]]&lt;br /&gt;
&lt;br /&gt;
:Note: this article refers to the older Doom3 particle editor, and the editor layout has been updated since. The options do the same things so the information is still valid.&lt;br /&gt;
&lt;br /&gt;
Now to explain a few things. At the top you have the particle name next to &amp;quot;particle&amp;quot;, next to it you have new, save, and save as. Now, for easiest editing of particles, load up an existing particle, such as the leaf one in the example, modify it and then use &amp;quot;save as&amp;quot;. I will explain a bit more further down.&lt;br /&gt;
&lt;br /&gt;
Firstly, and most importantly, we have material. This is the path to your material; not the image file but the material for your custom leaf. So for example you can see the example above has textures/particles/tdm_leaves_01. If you know the name of your material (for example textures/particles/green_leaves) then you can type that in there and press enter and it will find it by itself showing the changes in the render view.&lt;br /&gt;
&lt;br /&gt;
Now that you can see your custom material we can continue on to the size of the leaves etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bunching&#039;&#039;&#039; this determines how much the particles tend to bunch together, 0 meaning they want to spread out as evenly as possible, while 1 means that they bunch together a bit. The effect is not actually that noticeable mind.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Count&#039;&#039;&#039; controls how many particles there are, so basically the example shown has 32 particles in total. Obviously the more you have, the more dense the tree. This is a slider so slide it around as necessary. Alternatively you can input a value into the box and then press apply down the bottom right.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cycles&#039;&#039;&#039; this is how long the effect will last in seconds, If you set &amp;quot;cycles 0.000&amp;quot;, it is endless, otherwise repeated so many times. In my case I am creating some ceiling dust that is triggered so am going with 1 or 2 cycles. &lt;br /&gt;
&lt;br /&gt;
To see the changes you are making, center your camera in the render view on the tree and press {{key|F7}} and {{key|F6}}. {{key|F7}} rebuilds everything and {{key|F6}} enables animations. Leave it in render view and move the particle editor to the side so you can see the render view (to watch the changes you are making as you make them).&lt;br /&gt;
&lt;br /&gt;
You will also notice the &amp;quot;time&amp;quot; input beneath it. This is the lifespan of a particle in seconds. If I may suggest, don&#039;t mess with this, as putting it too low will make the particle lifespan visible, as in you&#039;ll notice them appearing/disappearing etc. If you put it to something ridiculous, like 99999, then it will load for extremely long, and sometimes not at all. It&#039;s best to leave it at 300 (5 minute), as you won&#039;t notice the tree leaves changing around every 5 minutes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Distribution&#039;&#039;&#039; This is where things get a little more annoying. You&#039;ll notice 3 check dots - rect, cylinder, and sphere. Realistically you&#039;d want to use sphere, but for some reason the algorithm for distribution in the sphere (at least for the leaves) does not work correctly and you get several particles occupying the same spot, which results in z-fighting and generally looks really bad. Now, the rectangle distribution works perfect; particles are properly distributed and there is no z-fighting, but it&#039;s a rectangular shape, but can look ok if not too many particles are used. Another alternative is the cylinder distribution. Cylinder distribution works well but annoyingly enough the particles get distributed only on the walls of the cylinder, which means a hole in the middle, so you need to adjust the particle size and cylinder size so that there is no hole in the middle.&lt;br /&gt;
&lt;br /&gt;
The values to the right are the size values in doom units, so change that to roughly be the size you want the leaves to cover. If you selected cylindrical distribution, don&#039;t bother adding a ring value as it just makes it larger in diameter, so leave it at 0.&lt;br /&gt;
&lt;br /&gt;
The offset is the offset from the center of the particle entity. Try keeping the leaves centered on the particle emitter, as Doom 3&#039;s light rendering system calculates whether or not to light the particles by checking whether the particle emitter is inside the boundary of the light; if yes then applies the lighting to it, but if not then it leaves the particle unaffected, ID did this for performance reasons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random Distribution&#039;&#039;&#039; is just what it says, so you may want to leave that ticked.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speed&#039;&#039;&#039; leave that at 0 for the leaves as that is the speed at which the particles move away from the center of the emitter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Size&#039;&#039;&#039; is self-explanatory; it&#039;s the size of each particle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rotation&#039;&#039;&#039; is rotation speed of the particle and aspect stretches the particle from the center of the emitter. So leave these 2 alone for leaves.&lt;br /&gt;
&lt;br /&gt;
Notice that each of these has 2 sliders. This is for time based particles, so one slider is &amp;quot;from&amp;quot; and the second is &amp;quot;to&amp;quot;. This is governed over the lifespan, so for example a particle that has sizes 0 to 50 and a lifespan of 10 would mean that it would gradually increase it&#039;s size to 50 from 0 over a span of 10 seconds. So for leaves this means that you leave both sliders at the same value. The other values below the speed, size, rotation, and aspect sliders do various things and you can mess around with them if you wish but they are not useful for leaves.&lt;br /&gt;
&lt;br /&gt;
Now that you know what each value does, just mess around with them until you reach something that looks good.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Saving&#039;&#039;&#039; &lt;br /&gt;
- Press save as (presuming you modified one of the existing leaf particles) and it will come up with a dialog asking for the particle name. &lt;br /&gt;
- Enter the name you wish (for example green_leaves_01) and press {{ok}}. &lt;br /&gt;
- Now it comes up with a path dialog. Browse to the Doom3/base/particles folder (if there is no particles folder create one) and name it as what you want (this is the file name, not the particle name), for example something like &amp;quot;mymap_particles&amp;quot; and then press ok. [[Make sure you save it into doom3/base/particles as saving it into doom3/darkmod/particles WILL NOT WORK]]. &lt;br /&gt;
&lt;br /&gt;
[EDIT - Someone check me but I tested this and it does seem you can save it direct in the darkmod/particles folder but if you save it in base/particles then it goes in darkmod/particles anyway. Also note that if you select an existing file it will &#039;&#039;append&#039;&#039; it - it does not overwrite but adds new particles definitions to existing files if selected. - Fidcal] Once you save it there you will find the particle file (in this case &amp;quot;mymap_particles.prt&amp;quot;) in the doom3/darkmod/particles folder; strange, yes, but it saves it there due to the way Doom 3 mod-loading works.&lt;br /&gt;
&lt;br /&gt;
Now in DarkRadiant you should be able to find your new leaf particle when browsing through the particle list.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tutorial by Dram&#039;&#039; - updated by Bikerdude&lt;br /&gt;
&lt;br /&gt;
== Particle settings not set by the editor ==&lt;br /&gt;
There are a few tweaks that can be added to particle decls manually, and that can&#039;t be set in the editor. See the [[Particles]] article for details. &lt;br /&gt;
&lt;br /&gt;
{{editing}}[[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Particles&amp;diff=18086</id>
		<title>Particles</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Particles&amp;diff=18086"/>
		<updated>2015-02-08T10:08:18Z</updated>

		<summary type="html">&lt;p&gt;SteveL: tidying up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Particles are VERY flexible - they can function as rain, snow, falling leaves, oscillating leaves and foliage, smoke, mist, flame, trickling sand, trickling water, drips, waterfall, spray, fountain - anything that can be made up of particles, big or small, fast or slow.&lt;br /&gt;
&lt;br /&gt;
There are already many particle effects available to the Dark Mod mapper. This tutorial is just the basics of how to get particle effects, new or old, into your mission...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting Particle effects into your game ==&lt;br /&gt;
&lt;br /&gt;
First, all that is assumed is you know the essentials described in [[Dark Radiant Must Know Basic Intro]]&lt;br /&gt;
&lt;br /&gt;
Like so many things - it&#039;s easy when you know how. Let me describe by example. Say you want to have some smoke coming out of a chimney in your mission...&lt;br /&gt;
&lt;br /&gt;
* Right click and select Create Entity.  Select func_emitter from the list.&lt;br /&gt;
* Add the property : model &lt;br /&gt;
* If you select the model property then you see two buttons at the bottom - Choose Model and Choose Particle.&lt;br /&gt;
* Select the Choose Particles button (see below for information on Choose Model)&lt;br /&gt;
* Select a particles effect from the list. For chimney smoke there are a couple of Doom ones - admin_hall_smk_cone.prt and mc2_hall_smk_cone.prt though they are a little bright (but could be modified in the Particles Editor and resaved as a new particles effect.) There are also a couple of Dark Mod ones - chimney_smoke1.prt and chimney_smoke2.prt at this time. Other DM stuff is under tdm_ but it&#039;s worth exploring the whole list to see what is available.&lt;br /&gt;
* All that remains is to position your func_emitter over a chimney.&lt;br /&gt;
* Note that there is a DR bug that does not allow you to rotate the func_emitter on the X or Y planes; however, there&#039;s some question whether most particles care about where the emitter is rotated.&lt;br /&gt;
&lt;br /&gt;
That will give you a start. Try out some of the others so you see what is available and what is possible and then you can move on to more advanced stuff...&lt;br /&gt;
&lt;br /&gt;
* Note that &#039;Choose Model&#039; does not assign a model or models to be emitted such as a leaf or snowflake (see [[Particle Editor]]) No, if you choose model then it just assigns a visible model shape to the entity in the normal way. I guess one could use a chimney pot in our example but the particle effect would have to be customised to line up so we shall create a separate particle effect and just place it over a chimney. Depends on what you are doing whether you need a model at the position of the particle effect. It does save on entities, but it is less flexible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Switching Particles on and off==&lt;br /&gt;
&lt;br /&gt;
func_emitter can be turned on and off by using target from any targetting entity eg a button or lever.&lt;br /&gt;
&lt;br /&gt;
Particle effects can also be created using the [[Stim/Response]] system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Starting OFF at game start==&lt;br /&gt;
&lt;br /&gt;
To start a particle effect OFF at game start give the func_emitter the property and value...&lt;br /&gt;
&lt;br /&gt;
start_off 1&lt;br /&gt;
&lt;br /&gt;
You can then make it start when you want by using target from any targetting entity eg a button or lever.&lt;br /&gt;
&lt;br /&gt;
Note that the particle effect may be very briefly visible at game start then turn off within a second. This is normal and I don&#039;t think can be avoided. In most cases this doesn&#039;t matter if the effect is not in the player&#039;s view right at game start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating Your Own Particle Effects ==&lt;br /&gt;
&lt;br /&gt;
You can create your own particle effects - or even easier - modify existing ones. To do this read [[Particle Editor]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Soft particles ==&lt;br /&gt;
Beginning in TDM 2.03, particle effects are softened where they intersect solid objects. There&#039;s no longer any need to move lamp glares away from walls, and dust/fog/smoke will appear to be shapeless 3d volumes instead of 2d images cut off into the floor and walls. &lt;br /&gt;
&lt;br /&gt;
Soft particles start to fade out where they get close to solid objects. And when they intersect solid objects, they continue to draw over the top for a short distance. This &amp;quot;rubs out&amp;quot; any hard edges belonging to the 2d images that make up the particle effect, which stops the eye getting a fix on exactly where those images are and restores the illusion of a 3d volume. &lt;br /&gt;
&lt;br /&gt;
The range over which the particle fades out -- and is allow to draw over solid stuff -- is proportional to the &amp;quot;radius&amp;quot; of the particle volume being represented. By default, it&#039;s 0.4 times the diameter of the particle stages&#039; quads.&lt;br /&gt;
&lt;br /&gt;
Soft particles can be toggled on and off using the cvar r_useSoftParticles.&lt;br /&gt;
&lt;br /&gt;
Mappers don&#039;t have to do anything to take advantage of this -- it&#039;s enabled by default and will &amp;quot;just work&amp;quot; in 99% of cases -- but there are a couple of relevant particle decl keywords, including one new keyword for tricky spots:&lt;br /&gt;
&lt;br /&gt;
=== DepthHack ===&lt;br /&gt;
This is a more primitive way of avoiding some particle intersections, the only one that was available in the original idTech4 engine. It&#039;s a keyword placed at the top of the particle decl and applies to all stages of the particle: it can&#039;t be applied separately to individual stages. It causes the particle to draw in front of solid objects by up to the specified number of units, e.g. &amp;quot;depthHack 20&amp;quot; was used in lamp glares to make them draw over things by up to 20 units. &lt;br /&gt;
&lt;br /&gt;
DepthHack is overridden by the new soft particle technique in TDM 2.03. The keyword and its value are ignored, unless the particle decl turns off the new soft particles effect.&lt;br /&gt;
&lt;br /&gt;
=== SofteningRadius ===&lt;br /&gt;
New particle stage keyword for TDM 2.03. Add this to individual particle &#039;&#039;stages&#039;&#039; to change the behaviour of soft particles. Accepted values are:&lt;br /&gt;
* -1: Turn off soft particles and draw this particle stage the old way, including using DepthHack if it&#039;s specified in the decl.&lt;br /&gt;
* 0: Turn off soft particles AND Depthhack.&lt;br /&gt;
* Any positive number: sets the particle &amp;quot;radius&amp;quot;, which is the amount it&#039;s allowed to draw in front of anything solid that intersects it. Defaults to 0.4 times the max particle quad size for the stage. If you have a tricky particle that&#039;s showing through a wall, you can reduce the radius a bit. For example: a tdm_dustfog_03 with a max quad size of 100 will have a default radius of 40. If you want to put it in a confined space where it ends up showing through a wall, you could add &amp;quot;softeningRadius 30&amp;quot; to the stage to stop that happening.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Tutorial]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Particles&amp;diff=18085</id>
		<title>Particles</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Particles&amp;diff=18085"/>
		<updated>2015-02-08T10:07:12Z</updated>

		<summary type="html">&lt;p&gt;SteveL: + soft particles&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;
Particles are VERY flexible - they can function as rain, snow, falling leaves, oscillating leaves and foliage, smoke, mist, flame, trickling sand, trickling water, drips, waterfall, spray, fountain - anything that can be made up of particles, big or small, fast or slow.&lt;br /&gt;
&lt;br /&gt;
There are already many particle effects available to the Dark Mod mapper. This tutorial is just the basics of how to get particle effects, new or old, into your mission...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting Particle effects into your game ==&lt;br /&gt;
&lt;br /&gt;
First, all that is assumed is you know the essentials described in [[Dark Radiant Must Know Basic Intro]]&lt;br /&gt;
&lt;br /&gt;
Like so many things - it&#039;s easy when you know how. Let me describe by example. Say you want to have some smoke coming out of a chimney in your mission...&lt;br /&gt;
&lt;br /&gt;
* Right click and select Create Entity.  Select func_emitter from the list.&lt;br /&gt;
* Add the property : model &lt;br /&gt;
* If you select the model property then you see two buttons at the bottom - Choose Model and Choose Particle.&lt;br /&gt;
* Select the Choose Particles button (see below for information on Choose Model)&lt;br /&gt;
* Select a particles effect from the list. For chimney smoke there are a couple of Doom ones - admin_hall_smk_cone.prt and mc2_hall_smk_cone.prt though they are a little bright (but could be modified in the Particles Editor and resaved as a new particles effect.) There are also a couple of Dark Mod ones - chimney_smoke1.prt and chimney_smoke2.prt at this time. Other DM stuff is under tdm_ but it&#039;s worth exploring the whole list to see what is available.&lt;br /&gt;
* All that remains is to position your func_emitter over a chimney.&lt;br /&gt;
* Note that there is a DR bug that does not allow you to rotate the func_emitter on the X or Y planes; however, there&#039;s some question whether most particles care about where the emitter is rotated.&lt;br /&gt;
&lt;br /&gt;
That will give you a start. Try out some of the others so you see what is available and what is possible and then you can move on to more advanced stuff...&lt;br /&gt;
&lt;br /&gt;
* Note that &#039;Choose Model&#039; does not assign a model or models to be emitted such as a leaf or snowflake (see [[Particle Editor]]) No, if you choose model then it just assigns a visible model shape to the entity in the normal way. I guess one could use a chimney pot in our example but the particle effect would have to be customised to line up so we shall create a separate particle effect and just place it over a chimney. Depends on what you are doing whether you need a model at the position of the particle effect. It does save on entities, but it is less flexible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Switching Particles on and off==&lt;br /&gt;
&lt;br /&gt;
func_emitter can be turned on and off by using target from any targetting entity eg a button or lever.&lt;br /&gt;
&lt;br /&gt;
Particle effects can also be created using the [[Stim/Response]] system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Starting OFF at game start==&lt;br /&gt;
&lt;br /&gt;
To start a particle effect OFF at game start give the func_emitter the property and value...&lt;br /&gt;
&lt;br /&gt;
start_off 1&lt;br /&gt;
&lt;br /&gt;
You can then make it start when you want by using target from any targetting entity eg a button or lever.&lt;br /&gt;
&lt;br /&gt;
Note that the particle effect may be very briefly visible at game start then turn off within a second. This is normal and I don&#039;t think can be avoided. In most cases this doesn&#039;t matter if the effect is not in the player&#039;s view right at game start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating Your Own Particle Effects ==&lt;br /&gt;
&lt;br /&gt;
You can create your own particle effects - or even easier - modify existing ones. To do this read [[Particle Editor]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Tutorial]][[Category:Particles]]&lt;br /&gt;
&lt;br /&gt;
== Soft particles ==&lt;br /&gt;
Beginning in TDM 2.03, particle effects are softened where they intersect solid objects. There&#039;s no longer any need to move lamp glares away from walls, and dust/fog/smoke will appear to be shapeless 3d volumes instead of 2d images cut off into the floor and walls. &lt;br /&gt;
&lt;br /&gt;
Soft particles start to fade out where they get close to solid objects. And when they intersect solid objects, they continue to draw over the top for a short distance. This &amp;quot;rubs out&amp;quot; any hard edges belonging to the 2d images that make up the particle effect, which stops the eye getting a fix on exactly where those images are and restores the illusion of a 3d volume. &lt;br /&gt;
&lt;br /&gt;
The range over which the particle fades out -- and is allow to draw over solid stuff -- is proportional to the &amp;quot;radius&amp;quot; of the particle volume being represented. By default, it&#039;s 0.4 times the diameter of the particle stages&#039; quads.&lt;br /&gt;
&lt;br /&gt;
Soft particles can be toggled on and off using the cvar r_useSoftParticles.&lt;br /&gt;
&lt;br /&gt;
Mappers don&#039;t have to do anything to take advantage of this -- it&#039;s enabled by default and will &amp;quot;just work&amp;quot; in 99% of cases -- but there are a couple of relevant particle decl keywords, including one new keyword for tricky spots:&lt;br /&gt;
&lt;br /&gt;
=== DepthHack ===&lt;br /&gt;
This is a more primitive way of avoiding some particle intersections, the only one that was available in the original idTech4 engine. It&#039;s a keyword placed at the top of the particle decl and applies to all stages of the particle: it can&#039;t be applied separately to individual stages. It causes the particle to draw in front of solid objects by up to the specified number of units, e.g. &amp;quot;depthHack 20&amp;quot; was used in lamp glares to make them draw over things by up to 20 units. &lt;br /&gt;
&lt;br /&gt;
DepthHack is overridden by the new soft particle technique in TDM 2.03. The keyword and its value are ignored, unless the particle decl turns off the new soft particles effect.&lt;br /&gt;
&lt;br /&gt;
=== SofteningRadius ===&lt;br /&gt;
New particle stage keyword for TDM 2.03. Add this to individual particle &#039;&#039;stages&#039;&#039; to change the behaviour of soft particles. Accepted values are:&lt;br /&gt;
* -1: Turn off soft particles and draw this particle stage the old way, including using DepthHack if it&#039;s specified in the decl.&lt;br /&gt;
* 0: Turn off soft particles AND Depthhack.&lt;br /&gt;
* Any positive number: sets the particle &amp;quot;radius&amp;quot;, which is the amount it&#039;s allowed to draw in front of anything solid that intersects it. Defaults to 0.4 times the max particle quad size for the stage. If you have a tricky particle that&#039;s showing through a wall, you can reduce the radius a bit. For example: a tdm_dustfog_03 with a max quad size of 100 will have a default radius of 40. If you want to put it in a confined space where it ends up showing through a wall, you could add &amp;quot;softeningRadius 30&amp;quot; to the stage to stop that happening.&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Cube_maps&amp;diff=18084</id>
		<title>Cube maps</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Cube_maps&amp;diff=18084"/>
		<updated>2015-02-08T07:24:20Z</updated>

		<summary type="html">&lt;p&gt;SteveL: Doom3 -&amp;gt; TDM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;written by angua&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- keywords: cubemap reflective specular --&amp;gt;&lt;br /&gt;
How to create a cube map (also called environmental map) of your environment using the envshot command in TDM.&lt;br /&gt;
&lt;br /&gt;
Cube maps can be used to fake reflections e.g on water and highly reflective tiles, etc. The advantage is that rendering is faster. &lt;br /&gt;
&lt;br /&gt;
You can also find more inflormation on Cube maps in the modwiki: [http://web.archive.org/web/20080607193940/http://www.modwiki.net/wiki/Cube_maps Wayback archive]&lt;br /&gt;
&lt;br /&gt;
==Create your room==&lt;br /&gt;
Create the room you want to have your pseudo-reflective water in. Add all the large parts, but you can leave small details (and of course the AI) out. Your room might for example look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map empty.jpg|320px|Example room]]&lt;br /&gt;
&lt;br /&gt;
==Create your images==&lt;br /&gt;
* Set the screen resolution of TDM to 640 x 480. If you don&#039;t, parts of your images will be cut off and they will not fit together any more. You will have to restart TDM or use console command vid_restart for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
* Open your map in TDM and get to the position of your water (at the center of the water source, about surface level, you can use noclip if you can&#039;t get there by walking).&lt;br /&gt;
&lt;br /&gt;
* In the console, type&lt;br /&gt;
&lt;br /&gt;
 envshot [prefix] [size]&lt;br /&gt;
&lt;br /&gt;
[prefix] is how the images are going to be named. The size should be in powers of two. For example, your command could look like this:&lt;br /&gt;
&lt;br /&gt;
 envshot water_pool 512&lt;br /&gt;
 &lt;br /&gt;
Press enter, and you will see some flickering on the screen while your images are created, and a message in the console will appear saying &lt;br /&gt;
&lt;br /&gt;
 Wrote env/water_pool_nz.tga,etc.&lt;br /&gt;
&lt;br /&gt;
You might want to make a few more envshots at slightly different positions, so that you don&#039;t have to repeat the whole procedure if your images are not appropriate. The direction at which you are facing during the shots is not important.&lt;br /&gt;
&lt;br /&gt;
* You should now see six new images in your /env folder:&lt;br /&gt;
&lt;br /&gt;
 water_pool_nx.tga&lt;br /&gt;
 water_pool_ny.tga&lt;br /&gt;
 water_pool_nz.tga&lt;br /&gt;
 water_pool_px.tga&lt;br /&gt;
 water_pool_py.tga&lt;br /&gt;
 water_pool_pz.tga&lt;br /&gt;
&lt;br /&gt;
looking like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map.jpg|320px|Cube map after shot]]&lt;br /&gt;
&lt;br /&gt;
You can of course also move them to a different folder if you want.&lt;br /&gt;
&lt;br /&gt;
==Edit your images==&lt;br /&gt;
:&#039;&#039;This section won&#039;t be necessary in TDM 2.04. The images will be named and oriented correctly.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you leave the images like this, they will not work ingame. You have to rename them and there is also some rotating and flipping required. (Note that this works for me if the reflecting surface is located at the bottom facing upwards, the required procedure might be different if the reflection is located at the walls or the ceiling).&lt;br /&gt;
&lt;br /&gt;
* Rename water_pool_nx to water_pool_back. Rotate it 90° counter clock wise and flip it horizontally. This is going to be located at the west.&lt;br /&gt;
* Rename water_pool_ny to water_pool_right. Flip it horizontally. This is going to be located at the south.&lt;br /&gt;
* Rename water_pool_nz to water_pool_down. You don&#039;t have to manipulate the direction here, since it is located at the bottom and will not be visible anyway.&lt;br /&gt;
* Rename water_pool_px to water_pool_forward. Rotate it 90° clock wise and flip it horizontally. This is going to be located at the east.&lt;br /&gt;
* Rename water_pool_py to water_pool_left. Rotate it 180° and flip it horizontally. This is going to be located at the north.&lt;br /&gt;
* Rename water_pool_pz to water_pool_up. Flip it horizontally and rotate it 90° counter clock wise.&lt;br /&gt;
&lt;br /&gt;
*Rename water_pool_nz to water_pool_down. You don&#039;t have to manipulate the direction here, since it is located at the bottom and will not be visible anyway.&lt;br /&gt;
&lt;br /&gt;
You should now have six files in your /env folder (or wherever you moved them) called&lt;br /&gt;
&lt;br /&gt;
 water_pool_back&lt;br /&gt;
 water_pool_right&lt;br /&gt;
 water_pool_down&lt;br /&gt;
 water_pool_forward&lt;br /&gt;
 water_pool_left&lt;br /&gt;
 water_pool_up&lt;br /&gt;
&lt;br /&gt;
looking like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map processed.jpg|320px|Cube maps processed]]&lt;br /&gt;
&lt;br /&gt;
You can also add some blurryness if you want. That makes it less obvious that the reflection is faked by a static image.&lt;br /&gt;
&lt;br /&gt;
==Write a material shader==&lt;br /&gt;
Open an already existing material file or create a new one. Add the following shader:&lt;br /&gt;
&lt;br /&gt;
 textures/env/water_pool&lt;br /&gt;
 {&lt;br /&gt;
     qer_editorimage env/water_pool_up.tga&lt;br /&gt;
 &lt;br /&gt;
     noFragment&lt;br /&gt;
     noshadows&lt;br /&gt;
     noimpact&lt;br /&gt;
     nooverlays&lt;br /&gt;
     forceOpaque&lt;br /&gt;
     nonsolid&lt;br /&gt;
     &lt;br /&gt;
     {&lt;br /&gt;
   	forceHighQuality&lt;br /&gt;
 	blend add&lt;br /&gt;
 	cameraCubeMap env/water_pool&lt;br /&gt;
 	texgen reflect&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you have forceOpaque in your shader, the texture will be opaque and you will not be able to see the ground. If you leave it out, it will be semi-transparent and you can see the ground also.&lt;br /&gt;
If you moved the images to a different folder, make sure that the correct paths are entered at the qer_editorimage and the cameraCubemap lines. (The path entered in the name of the shader (before the { ) is for the folder the texture will appear in Darkradiant. It can be different from the path the images are in.)&lt;br /&gt;
&lt;br /&gt;
==Get your enviromental map ingame==&lt;br /&gt;
&lt;br /&gt;
* Open DarkRadiant (if you already have it open you might have to close and reopen it to be able to see the texture).&lt;br /&gt;
* Draw a brush that is going to be your water. Texture it with common/nodraw.&lt;br /&gt;
* Go to the media browser. You should find your texture in the /env folder. (If you wrote another path in the name of your shader, it will appear there.)&lt;br /&gt;
[[Image:Cubemap1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
* Apply it to the top face of the water brush. You should now see the water_pool_up image as editor image (that&#039;s what the qer_editorimage line in the shader was for). Scale and position of the texture is not important.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap2.jpg|300px]]&lt;br /&gt;
* Convert the brush to a func_liquid. (You don&#039;t want to be able to walk on water, do you? That would happen if you didn&#039;t convert your brush.) For more detailed information on water creation, you can also look at the [[Swimmable Water]] tutorial.&lt;br /&gt;
&lt;br /&gt;
* you should now be able to see your water ingame. &lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap3.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
It will still look flat, like a mirror, and you will see that it is a static image (the torch is not flickering) so you might want to add a patch slightly above the water textured with, e.g. water_clear (or any other water texture that produces water waves).&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap4.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Here you can see the same pool textured with true reflective water for comparison:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap5.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
You have to take into consideration that in contrast to a true reflection, the cube map texture will not react to changes in the environment. So if you for example put the torch out, it will still be lit in the cube map.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap6.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
So it would be more practical to have non-extinguishable lights and no large moveables near the water.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;br /&gt;
[[Category:Skybox]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Cube_maps&amp;diff=18083</id>
		<title>Cube maps</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Cube_maps&amp;diff=18083"/>
		<updated>2015-02-08T07:23:52Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Create your images */ Doom3 -&amp;gt; TDM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;written by angua&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- keywords: cubemap reflective specular --&amp;gt;&lt;br /&gt;
How to create a cube map (also called environmental map) of your environment using the envshot command in Doom3.&lt;br /&gt;
&lt;br /&gt;
Cube maps can be used to fake reflections e.g on water and highly reflective tiles, etc. The advantage is that rendering is faster. &lt;br /&gt;
&lt;br /&gt;
You can also find more inflormation on Cube maps in the modwiki: [http://web.archive.org/web/20080607193940/http://www.modwiki.net/wiki/Cube_maps Wayback archive]&lt;br /&gt;
&lt;br /&gt;
==Create your room==&lt;br /&gt;
Create the room you want to have your pseudo-reflective water in. Add all the large parts, but you can leave small details (and of course the AI) out. Your room might for example look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map empty.jpg|320px|Example room]]&lt;br /&gt;
&lt;br /&gt;
==Create your images==&lt;br /&gt;
* Set the screen resolution of TDM to 640 x 480. If you don&#039;t, parts of your images will be cut off and they will not fit together any more. You will have to restart TDM or use console command vid_restart for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
* Open your map in TDM and get to the position of your water (at the center of the water source, about surface level, you can use noclip if you can&#039;t get there by walking).&lt;br /&gt;
&lt;br /&gt;
* In the console, type&lt;br /&gt;
&lt;br /&gt;
 envshot [prefix] [size]&lt;br /&gt;
&lt;br /&gt;
[prefix] is how the images are going to be named. The size should be in powers of two. For example, your command could look like this:&lt;br /&gt;
&lt;br /&gt;
 envshot water_pool 512&lt;br /&gt;
 &lt;br /&gt;
Press enter, and you will see some flickering on the screen while your images are created, and a message in the console will appear saying &lt;br /&gt;
&lt;br /&gt;
 Wrote env/water_pool_nz.tga,etc.&lt;br /&gt;
&lt;br /&gt;
You might want to make a few more envshots at slightly different positions, so that you don&#039;t have to repeat the whole procedure if your images are not appropriate. The direction at which you are facing during the shots is not important.&lt;br /&gt;
&lt;br /&gt;
* You should now see six new images in your /env folder:&lt;br /&gt;
&lt;br /&gt;
 water_pool_nx.tga&lt;br /&gt;
 water_pool_ny.tga&lt;br /&gt;
 water_pool_nz.tga&lt;br /&gt;
 water_pool_px.tga&lt;br /&gt;
 water_pool_py.tga&lt;br /&gt;
 water_pool_pz.tga&lt;br /&gt;
&lt;br /&gt;
looking like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map.jpg|320px|Cube map after shot]]&lt;br /&gt;
&lt;br /&gt;
You can of course also move them to a different folder if you want.&lt;br /&gt;
&lt;br /&gt;
==Edit your images==&lt;br /&gt;
:&#039;&#039;This section won&#039;t be necessary in TDM 2.04. The images will be named and oriented correctly.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you leave the images like this, they will not work ingame. You have to rename them and there is also some rotating and flipping required. (Note that this works for me if the reflecting surface is located at the bottom facing upwards, the required procedure might be different if the reflection is located at the walls or the ceiling).&lt;br /&gt;
&lt;br /&gt;
* Rename water_pool_nx to water_pool_back. Rotate it 90° counter clock wise and flip it horizontally. This is going to be located at the west.&lt;br /&gt;
* Rename water_pool_ny to water_pool_right. Flip it horizontally. This is going to be located at the south.&lt;br /&gt;
* Rename water_pool_nz to water_pool_down. You don&#039;t have to manipulate the direction here, since it is located at the bottom and will not be visible anyway.&lt;br /&gt;
* Rename water_pool_px to water_pool_forward. Rotate it 90° clock wise and flip it horizontally. This is going to be located at the east.&lt;br /&gt;
* Rename water_pool_py to water_pool_left. Rotate it 180° and flip it horizontally. This is going to be located at the north.&lt;br /&gt;
* Rename water_pool_pz to water_pool_up. Flip it horizontally and rotate it 90° counter clock wise.&lt;br /&gt;
&lt;br /&gt;
*Rename water_pool_nz to water_pool_down. You don&#039;t have to manipulate the direction here, since it is located at the bottom and will not be visible anyway.&lt;br /&gt;
&lt;br /&gt;
You should now have six files in your /env folder (or wherever you moved them) called&lt;br /&gt;
&lt;br /&gt;
 water_pool_back&lt;br /&gt;
 water_pool_right&lt;br /&gt;
 water_pool_down&lt;br /&gt;
 water_pool_forward&lt;br /&gt;
 water_pool_left&lt;br /&gt;
 water_pool_up&lt;br /&gt;
&lt;br /&gt;
looking like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map processed.jpg|320px|Cube maps processed]]&lt;br /&gt;
&lt;br /&gt;
You can also add some blurryness if you want. That makes it less obvious that the reflection is faked by a static image.&lt;br /&gt;
&lt;br /&gt;
==Write a material shader==&lt;br /&gt;
Open an already existing material file or create a new one. Add the following shader:&lt;br /&gt;
&lt;br /&gt;
 textures/env/water_pool&lt;br /&gt;
 {&lt;br /&gt;
     qer_editorimage env/water_pool_up.tga&lt;br /&gt;
 &lt;br /&gt;
     noFragment&lt;br /&gt;
     noshadows&lt;br /&gt;
     noimpact&lt;br /&gt;
     nooverlays&lt;br /&gt;
     forceOpaque&lt;br /&gt;
     nonsolid&lt;br /&gt;
     &lt;br /&gt;
     {&lt;br /&gt;
   	forceHighQuality&lt;br /&gt;
 	blend add&lt;br /&gt;
 	cameraCubeMap env/water_pool&lt;br /&gt;
 	texgen reflect&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you have forceOpaque in your shader, the texture will be opaque and you will not be able to see the ground. If you leave it out, it will be semi-transparent and you can see the ground also.&lt;br /&gt;
If you moved the images to a different folder, make sure that the correct paths are entered at the qer_editorimage and the cameraCubemap lines. (The path entered in the name of the shader (before the { ) is for the folder the texture will appear in Darkradiant. It can be different from the path the images are in.)&lt;br /&gt;
&lt;br /&gt;
==Get your enviromental map ingame==&lt;br /&gt;
&lt;br /&gt;
* Open DarkRadiant (if you already have it open you might have to close and reopen it to be able to see the texture).&lt;br /&gt;
* Draw a brush that is going to be your water. Texture it with common/nodraw.&lt;br /&gt;
* Go to the media browser. You should find your texture in the /env folder. (If you wrote another path in the name of your shader, it will appear there.)&lt;br /&gt;
[[Image:Cubemap1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
* Apply it to the top face of the water brush. You should now see the water_pool_up image as editor image (that&#039;s what the qer_editorimage line in the shader was for). Scale and position of the texture is not important.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap2.jpg|300px]]&lt;br /&gt;
* Convert the brush to a func_liquid. (You don&#039;t want to be able to walk on water, do you? That would happen if you didn&#039;t convert your brush.) For more detailed information on water creation, you can also look at the [[Swimmable Water]] tutorial.&lt;br /&gt;
&lt;br /&gt;
* you should now be able to see your water ingame. &lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap3.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
It will still look flat, like a mirror, and you will see that it is a static image (the torch is not flickering) so you might want to add a patch slightly above the water textured with, e.g. water_clear (or any other water texture that produces water waves).&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap4.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Here you can see the same pool textured with true reflective water for comparison:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap5.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
You have to take into consideration that in contrast to a true reflection, the cube map texture will not react to changes in the environment. So if you for example put the torch out, it will still be lit in the cube map.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap6.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
So it would be more practical to have non-extinguishable lights and no large moveables near the water.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;br /&gt;
[[Category:Skybox]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Cube_maps&amp;diff=18082</id>
		<title>Cube maps</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Cube_maps&amp;diff=18082"/>
		<updated>2015-02-08T07:23:24Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Create your images */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;written by angua&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- keywords: cubemap reflective specular --&amp;gt;&lt;br /&gt;
How to create a cube map (also called environmental map) of your environment using the envshot command in Doom3.&lt;br /&gt;
&lt;br /&gt;
Cube maps can be used to fake reflections e.g on water and highly reflective tiles, etc. The advantage is that rendering is faster. &lt;br /&gt;
&lt;br /&gt;
You can also find more inflormation on Cube maps in the modwiki: [http://web.archive.org/web/20080607193940/http://www.modwiki.net/wiki/Cube_maps Wayback archive]&lt;br /&gt;
&lt;br /&gt;
==Create your room==&lt;br /&gt;
Create the room you want to have your pseudo-reflective water in. Add all the large parts, but you can leave small details (and of course the AI) out. Your room might for example look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map empty.jpg|320px|Example room]]&lt;br /&gt;
&lt;br /&gt;
==Create your images==&lt;br /&gt;
* Set the screen resolution of Doom3 to 640 x 480. If you don&#039;t, parts of your images willbe cut off and they will not fit together any more. You will have to restart TDM or use console command vid_restart for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
* Open your map in TDM and get to the position of your water (at the center of the water source, about surface level, you can use noclip if you can&#039;t get there by walking).&lt;br /&gt;
&lt;br /&gt;
* In the console, type&lt;br /&gt;
&lt;br /&gt;
 envshot [prefix] [size]&lt;br /&gt;
&lt;br /&gt;
[prefix] is how the images are going to be named. The size should be in powers of two. For example, your command could look like this:&lt;br /&gt;
&lt;br /&gt;
 envshot water_pool 512&lt;br /&gt;
 &lt;br /&gt;
Press enter, and you will see some flickering on the screen while your images are created, and a message in the console will appear saying &lt;br /&gt;
&lt;br /&gt;
 Wrote env/water_pool_nz.tga,etc.&lt;br /&gt;
&lt;br /&gt;
You might want to make a few more envshots at slightly different positions, so that you don&#039;t have to repeat the whole procedure if your images are not appropriate. The direction at which you are facing during the shots is not important.&lt;br /&gt;
&lt;br /&gt;
* You should now see six new images in your /env folder:&lt;br /&gt;
&lt;br /&gt;
 water_pool_nx.tga&lt;br /&gt;
 water_pool_ny.tga&lt;br /&gt;
 water_pool_nz.tga&lt;br /&gt;
 water_pool_px.tga&lt;br /&gt;
 water_pool_py.tga&lt;br /&gt;
 water_pool_pz.tga&lt;br /&gt;
&lt;br /&gt;
looking like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map.jpg|320px|Cube map after shot]]&lt;br /&gt;
&lt;br /&gt;
You can of course also move them to a different folder if you want.&lt;br /&gt;
&lt;br /&gt;
==Edit your images==&lt;br /&gt;
:&#039;&#039;This section won&#039;t be necessary in TDM 2.04. The images will be named and oriented correctly.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you leave the images like this, they will not work ingame. You have to rename them and there is also some rotating and flipping required. (Note that this works for me if the reflecting surface is located at the bottom facing upwards, the required procedure might be different if the reflection is located at the walls or the ceiling).&lt;br /&gt;
&lt;br /&gt;
* Rename water_pool_nx to water_pool_back. Rotate it 90° counter clock wise and flip it horizontally. This is going to be located at the west.&lt;br /&gt;
* Rename water_pool_ny to water_pool_right. Flip it horizontally. This is going to be located at the south.&lt;br /&gt;
* Rename water_pool_nz to water_pool_down. You don&#039;t have to manipulate the direction here, since it is located at the bottom and will not be visible anyway.&lt;br /&gt;
* Rename water_pool_px to water_pool_forward. Rotate it 90° clock wise and flip it horizontally. This is going to be located at the east.&lt;br /&gt;
* Rename water_pool_py to water_pool_left. Rotate it 180° and flip it horizontally. This is going to be located at the north.&lt;br /&gt;
* Rename water_pool_pz to water_pool_up. Flip it horizontally and rotate it 90° counter clock wise.&lt;br /&gt;
&lt;br /&gt;
*Rename water_pool_nz to water_pool_down. You don&#039;t have to manipulate the direction here, since it is located at the bottom and will not be visible anyway.&lt;br /&gt;
&lt;br /&gt;
You should now have six files in your /env folder (or wherever you moved them) called&lt;br /&gt;
&lt;br /&gt;
 water_pool_back&lt;br /&gt;
 water_pool_right&lt;br /&gt;
 water_pool_down&lt;br /&gt;
 water_pool_forward&lt;br /&gt;
 water_pool_left&lt;br /&gt;
 water_pool_up&lt;br /&gt;
&lt;br /&gt;
looking like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map processed.jpg|320px|Cube maps processed]]&lt;br /&gt;
&lt;br /&gt;
You can also add some blurryness if you want. That makes it less obvious that the reflection is faked by a static image.&lt;br /&gt;
&lt;br /&gt;
==Write a material shader==&lt;br /&gt;
Open an already existing material file or create a new one. Add the following shader:&lt;br /&gt;
&lt;br /&gt;
 textures/env/water_pool&lt;br /&gt;
 {&lt;br /&gt;
     qer_editorimage env/water_pool_up.tga&lt;br /&gt;
 &lt;br /&gt;
     noFragment&lt;br /&gt;
     noshadows&lt;br /&gt;
     noimpact&lt;br /&gt;
     nooverlays&lt;br /&gt;
     forceOpaque&lt;br /&gt;
     nonsolid&lt;br /&gt;
     &lt;br /&gt;
     {&lt;br /&gt;
   	forceHighQuality&lt;br /&gt;
 	blend add&lt;br /&gt;
 	cameraCubeMap env/water_pool&lt;br /&gt;
 	texgen reflect&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you have forceOpaque in your shader, the texture will be opaque and you will not be able to see the ground. If you leave it out, it will be semi-transparent and you can see the ground also.&lt;br /&gt;
If you moved the images to a different folder, make sure that the correct paths are entered at the qer_editorimage and the cameraCubemap lines. (The path entered in the name of the shader (before the { ) is for the folder the texture will appear in Darkradiant. It can be different from the path the images are in.)&lt;br /&gt;
&lt;br /&gt;
==Get your enviromental map ingame==&lt;br /&gt;
&lt;br /&gt;
* Open DarkRadiant (if you already have it open you might have to close and reopen it to be able to see the texture).&lt;br /&gt;
* Draw a brush that is going to be your water. Texture it with common/nodraw.&lt;br /&gt;
* Go to the media browser. You should find your texture in the /env folder. (If you wrote another path in the name of your shader, it will appear there.)&lt;br /&gt;
[[Image:Cubemap1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
* Apply it to the top face of the water brush. You should now see the water_pool_up image as editor image (that&#039;s what the qer_editorimage line in the shader was for). Scale and position of the texture is not important.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap2.jpg|300px]]&lt;br /&gt;
* Convert the brush to a func_liquid. (You don&#039;t want to be able to walk on water, do you? That would happen if you didn&#039;t convert your brush.) For more detailed information on water creation, you can also look at the [[Swimmable Water]] tutorial.&lt;br /&gt;
&lt;br /&gt;
* you should now be able to see your water ingame. &lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap3.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
It will still look flat, like a mirror, and you will see that it is a static image (the torch is not flickering) so you might want to add a patch slightly above the water textured with, e.g. water_clear (or any other water texture that produces water waves).&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap4.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Here you can see the same pool textured with true reflective water for comparison:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap5.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
You have to take into consideration that in contrast to a true reflection, the cube map texture will not react to changes in the environment. So if you for example put the torch out, it will still be lit in the cube map.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap6.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
So it would be more practical to have non-extinguishable lights and no large moveables near the water.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;br /&gt;
[[Category:Skybox]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Cube_maps&amp;diff=18081</id>
		<title>Cube maps</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Cube_maps&amp;diff=18081"/>
		<updated>2015-02-08T07:22:08Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Create your images */ removing instruction that player must be in fullscreen mode. That&amp;#039;s not necessary.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;written by angua&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- keywords: cubemap reflective specular --&amp;gt;&lt;br /&gt;
How to create a cube map (also called environmental map) of your environment using the envshot command in Doom3.&lt;br /&gt;
&lt;br /&gt;
Cube maps can be used to fake reflections e.g on water and highly reflective tiles, etc. The advantage is that rendering is faster. &lt;br /&gt;
&lt;br /&gt;
You can also find more inflormation on Cube maps in the modwiki: [http://web.archive.org/web/20080607193940/http://www.modwiki.net/wiki/Cube_maps Wayback archive]&lt;br /&gt;
&lt;br /&gt;
==Create your room==&lt;br /&gt;
Create the room you want to have your pseudo-reflective water in. Add all the large parts, but you can leave small details (and of course the AI) out. Your room might for example look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map empty.jpg|320px|Example room]]&lt;br /&gt;
&lt;br /&gt;
==Create your images==&lt;br /&gt;
* Set the screen resolution of Doom3 to 640 x 480. If you don&#039;t, part of your images might be cut off and they will not fit together any more. You might have to close and reopen Doom3 for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
* Open your map in Doom3 and get to the position of your water (at the center of the water source, about surface level, you can use noclip if you can&#039;t get there by walking).&lt;br /&gt;
&lt;br /&gt;
* In the console, type&lt;br /&gt;
&lt;br /&gt;
 envshot [prefix] [size]&lt;br /&gt;
&lt;br /&gt;
[prefix] is how the images are going to be named. The size should be in powers of two. For example, your command could look like this:&lt;br /&gt;
&lt;br /&gt;
 envshot water_pool 512&lt;br /&gt;
 &lt;br /&gt;
Press enter, and you will see some flickering on the screen while your images are created, and a message in the console will appear saying &lt;br /&gt;
&lt;br /&gt;
 Wrote env/water_pool_nz.tga,etc.&lt;br /&gt;
&lt;br /&gt;
You might want to make a few more envshots at slightly different positions, so that you don&#039;t have to repeat the whole procedure if your images are not appropriate. The direction at which you are facing during the shots is not important.&lt;br /&gt;
&lt;br /&gt;
* You should now see six new images in your /env folder:&lt;br /&gt;
&lt;br /&gt;
 water_pool_nx.tga&lt;br /&gt;
 water_pool_ny.tga&lt;br /&gt;
 water_pool_nz.tga&lt;br /&gt;
 water_pool_px.tga&lt;br /&gt;
 water_pool_py.tga&lt;br /&gt;
 water_pool_pz.tga&lt;br /&gt;
&lt;br /&gt;
looking like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map.jpg|320px|Cube map after shot]]&lt;br /&gt;
&lt;br /&gt;
You can of course also move them to a different folder if you want.&lt;br /&gt;
&lt;br /&gt;
==Edit your images==&lt;br /&gt;
:&#039;&#039;This section won&#039;t be necessary in TDM 2.04. The images will be named and oriented correctly.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you leave the images like this, they will not work ingame. You have to rename them and there is also some rotating and flipping required. (Note that this works for me if the reflecting surface is located at the bottom facing upwards, the required procedure might be different if the reflection is located at the walls or the ceiling).&lt;br /&gt;
&lt;br /&gt;
* Rename water_pool_nx to water_pool_back. Rotate it 90° counter clock wise and flip it horizontally. This is going to be located at the west.&lt;br /&gt;
* Rename water_pool_ny to water_pool_right. Flip it horizontally. This is going to be located at the south.&lt;br /&gt;
* Rename water_pool_nz to water_pool_down. You don&#039;t have to manipulate the direction here, since it is located at the bottom and will not be visible anyway.&lt;br /&gt;
* Rename water_pool_px to water_pool_forward. Rotate it 90° clock wise and flip it horizontally. This is going to be located at the east.&lt;br /&gt;
* Rename water_pool_py to water_pool_left. Rotate it 180° and flip it horizontally. This is going to be located at the north.&lt;br /&gt;
* Rename water_pool_pz to water_pool_up. Flip it horizontally and rotate it 90° counter clock wise.&lt;br /&gt;
&lt;br /&gt;
*Rename water_pool_nz to water_pool_down. You don&#039;t have to manipulate the direction here, since it is located at the bottom and will not be visible anyway.&lt;br /&gt;
&lt;br /&gt;
You should now have six files in your /env folder (or wherever you moved them) called&lt;br /&gt;
&lt;br /&gt;
 water_pool_back&lt;br /&gt;
 water_pool_right&lt;br /&gt;
 water_pool_down&lt;br /&gt;
 water_pool_forward&lt;br /&gt;
 water_pool_left&lt;br /&gt;
 water_pool_up&lt;br /&gt;
&lt;br /&gt;
looking like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map processed.jpg|320px|Cube maps processed]]&lt;br /&gt;
&lt;br /&gt;
You can also add some blurryness if you want. That makes it less obvious that the reflection is faked by a static image.&lt;br /&gt;
&lt;br /&gt;
==Write a material shader==&lt;br /&gt;
Open an already existing material file or create a new one. Add the following shader:&lt;br /&gt;
&lt;br /&gt;
 textures/env/water_pool&lt;br /&gt;
 {&lt;br /&gt;
     qer_editorimage env/water_pool_up.tga&lt;br /&gt;
 &lt;br /&gt;
     noFragment&lt;br /&gt;
     noshadows&lt;br /&gt;
     noimpact&lt;br /&gt;
     nooverlays&lt;br /&gt;
     forceOpaque&lt;br /&gt;
     nonsolid&lt;br /&gt;
     &lt;br /&gt;
     {&lt;br /&gt;
   	forceHighQuality&lt;br /&gt;
 	blend add&lt;br /&gt;
 	cameraCubeMap env/water_pool&lt;br /&gt;
 	texgen reflect&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you have forceOpaque in your shader, the texture will be opaque and you will not be able to see the ground. If you leave it out, it will be semi-transparent and you can see the ground also.&lt;br /&gt;
If you moved the images to a different folder, make sure that the correct paths are entered at the qer_editorimage and the cameraCubemap lines. (The path entered in the name of the shader (before the { ) is for the folder the texture will appear in Darkradiant. It can be different from the path the images are in.)&lt;br /&gt;
&lt;br /&gt;
==Get your enviromental map ingame==&lt;br /&gt;
&lt;br /&gt;
* Open DarkRadiant (if you already have it open you might have to close and reopen it to be able to see the texture).&lt;br /&gt;
* Draw a brush that is going to be your water. Texture it with common/nodraw.&lt;br /&gt;
* Go to the media browser. You should find your texture in the /env folder. (If you wrote another path in the name of your shader, it will appear there.)&lt;br /&gt;
[[Image:Cubemap1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
* Apply it to the top face of the water brush. You should now see the water_pool_up image as editor image (that&#039;s what the qer_editorimage line in the shader was for). Scale and position of the texture is not important.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap2.jpg|300px]]&lt;br /&gt;
* Convert the brush to a func_liquid. (You don&#039;t want to be able to walk on water, do you? That would happen if you didn&#039;t convert your brush.) For more detailed information on water creation, you can also look at the [[Swimmable Water]] tutorial.&lt;br /&gt;
&lt;br /&gt;
* you should now be able to see your water ingame. &lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap3.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
It will still look flat, like a mirror, and you will see that it is a static image (the torch is not flickering) so you might want to add a patch slightly above the water textured with, e.g. water_clear (or any other water texture that produces water waves).&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap4.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Here you can see the same pool textured with true reflective water for comparison:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap5.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
You have to take into consideration that in contrast to a true reflection, the cube map texture will not react to changes in the environment. So if you for example put the torch out, it will still be lit in the cube map.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap6.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
So it would be more practical to have non-extinguishable lights and no large moveables near the water.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;br /&gt;
[[Category:Skybox]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Cube_maps&amp;diff=18080</id>
		<title>Cube maps</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Cube_maps&amp;diff=18080"/>
		<updated>2015-02-08T07:20:42Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Edit your images */ This section won&amp;#039;t be necessary in TDM 2.04&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;written by angua&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- keywords: cubemap reflective specular --&amp;gt;&lt;br /&gt;
How to create a cube map (also called environmental map) of your environment using the envshot command in Doom3.&lt;br /&gt;
&lt;br /&gt;
Cube maps can be used to fake reflections e.g on water and highly reflective tiles, etc. The advantage is that rendering is faster. &lt;br /&gt;
&lt;br /&gt;
You can also find more inflormation on Cube maps in the modwiki: [http://web.archive.org/web/20080607193940/http://www.modwiki.net/wiki/Cube_maps Wayback archive]&lt;br /&gt;
&lt;br /&gt;
==Create your room==&lt;br /&gt;
Create the room you want to have your pseudo-reflective water in. Add all the large parts, but you can leave small details (and of course the AI) out. Your room might for example look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map empty.jpg|320px|Example room]]&lt;br /&gt;
&lt;br /&gt;
==Create your images==&lt;br /&gt;
* Set the screen resolution of Doom3 to 640 x 480. If you don&#039;t, part of your images might be cut off and they will not fit together any more. You might have to close and reopen Doom3 for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
* Make sure you are on full screen before you take your images. (If you don&#039;t, you can see the windows task bar and it doesn&#039;t look that good ingame.) If you are in windowed mode, you can change to full screen by pressing Alt + Enter.&lt;br /&gt;
&lt;br /&gt;
* Open your map in Doom3 and get to the position of your water (at the center of the water source, about surface level, you can use noclip if you can&#039;t get there by walking).&lt;br /&gt;
&lt;br /&gt;
* In the console, type&lt;br /&gt;
&lt;br /&gt;
 envshot [prefix] [size]&lt;br /&gt;
&lt;br /&gt;
[prefix] is how the images are going to be named. The size should be in powers of two. For example, your command could look like this:&lt;br /&gt;
&lt;br /&gt;
 envshot water_pool 512&lt;br /&gt;
 &lt;br /&gt;
Press enter, and you will see some flickering on the screen while your images are created, and a message in the console will appear saying &lt;br /&gt;
&lt;br /&gt;
 Wrote env/water_pool_nz.tga,etc.&lt;br /&gt;
&lt;br /&gt;
You might want to make a few more envshots at slightly different positions, so that you don&#039;t have to repeat the whole procedure if your images are not appropriate. The direction at which you are facing during the shots is not important.&lt;br /&gt;
&lt;br /&gt;
* You should now see six new images in your /env folder:&lt;br /&gt;
&lt;br /&gt;
 water_pool_nx.tga&lt;br /&gt;
 water_pool_ny.tga&lt;br /&gt;
 water_pool_nz.tga&lt;br /&gt;
 water_pool_px.tga&lt;br /&gt;
 water_pool_py.tga&lt;br /&gt;
 water_pool_pz.tga&lt;br /&gt;
&lt;br /&gt;
looking like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map.jpg|320px|Cube map after shot]]&lt;br /&gt;
&lt;br /&gt;
You can of course also move them to a different folder if you want.&lt;br /&gt;
&lt;br /&gt;
==Edit your images==&lt;br /&gt;
:&#039;&#039;This section won&#039;t be necessary in TDM 2.04. The images will be named and oriented correctly.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you leave the images like this, they will not work ingame. You have to rename them and there is also some rotating and flipping required. (Note that this works for me if the reflecting surface is located at the bottom facing upwards, the required procedure might be different if the reflection is located at the walls or the ceiling).&lt;br /&gt;
&lt;br /&gt;
* Rename water_pool_nx to water_pool_back. Rotate it 90° counter clock wise and flip it horizontally. This is going to be located at the west.&lt;br /&gt;
* Rename water_pool_ny to water_pool_right. Flip it horizontally. This is going to be located at the south.&lt;br /&gt;
* Rename water_pool_nz to water_pool_down. You don&#039;t have to manipulate the direction here, since it is located at the bottom and will not be visible anyway.&lt;br /&gt;
* Rename water_pool_px to water_pool_forward. Rotate it 90° clock wise and flip it horizontally. This is going to be located at the east.&lt;br /&gt;
* Rename water_pool_py to water_pool_left. Rotate it 180° and flip it horizontally. This is going to be located at the north.&lt;br /&gt;
* Rename water_pool_pz to water_pool_up. Flip it horizontally and rotate it 90° counter clock wise.&lt;br /&gt;
&lt;br /&gt;
*Rename water_pool_nz to water_pool_down. You don&#039;t have to manipulate the direction here, since it is located at the bottom and will not be visible anyway.&lt;br /&gt;
&lt;br /&gt;
You should now have six files in your /env folder (or wherever you moved them) called&lt;br /&gt;
&lt;br /&gt;
 water_pool_back&lt;br /&gt;
 water_pool_right&lt;br /&gt;
 water_pool_down&lt;br /&gt;
 water_pool_forward&lt;br /&gt;
 water_pool_left&lt;br /&gt;
 water_pool_up&lt;br /&gt;
&lt;br /&gt;
looking like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cube map processed.jpg|320px|Cube maps processed]]&lt;br /&gt;
&lt;br /&gt;
You can also add some blurryness if you want. That makes it less obvious that the reflection is faked by a static image.&lt;br /&gt;
&lt;br /&gt;
==Write a material shader==&lt;br /&gt;
Open an already existing material file or create a new one. Add the following shader:&lt;br /&gt;
&lt;br /&gt;
 textures/env/water_pool&lt;br /&gt;
 {&lt;br /&gt;
     qer_editorimage env/water_pool_up.tga&lt;br /&gt;
 &lt;br /&gt;
     noFragment&lt;br /&gt;
     noshadows&lt;br /&gt;
     noimpact&lt;br /&gt;
     nooverlays&lt;br /&gt;
     forceOpaque&lt;br /&gt;
     nonsolid&lt;br /&gt;
     &lt;br /&gt;
     {&lt;br /&gt;
   	forceHighQuality&lt;br /&gt;
 	blend add&lt;br /&gt;
 	cameraCubeMap env/water_pool&lt;br /&gt;
 	texgen reflect&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you have forceOpaque in your shader, the texture will be opaque and you will not be able to see the ground. If you leave it out, it will be semi-transparent and you can see the ground also.&lt;br /&gt;
If you moved the images to a different folder, make sure that the correct paths are entered at the qer_editorimage and the cameraCubemap lines. (The path entered in the name of the shader (before the { ) is for the folder the texture will appear in Darkradiant. It can be different from the path the images are in.)&lt;br /&gt;
&lt;br /&gt;
==Get your enviromental map ingame==&lt;br /&gt;
&lt;br /&gt;
* Open DarkRadiant (if you already have it open you might have to close and reopen it to be able to see the texture).&lt;br /&gt;
* Draw a brush that is going to be your water. Texture it with common/nodraw.&lt;br /&gt;
* Go to the media browser. You should find your texture in the /env folder. (If you wrote another path in the name of your shader, it will appear there.)&lt;br /&gt;
[[Image:Cubemap1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
* Apply it to the top face of the water brush. You should now see the water_pool_up image as editor image (that&#039;s what the qer_editorimage line in the shader was for). Scale and position of the texture is not important.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap2.jpg|300px]]&lt;br /&gt;
* Convert the brush to a func_liquid. (You don&#039;t want to be able to walk on water, do you? That would happen if you didn&#039;t convert your brush.) For more detailed information on water creation, you can also look at the [[Swimmable Water]] tutorial.&lt;br /&gt;
&lt;br /&gt;
* you should now be able to see your water ingame. &lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap3.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
It will still look flat, like a mirror, and you will see that it is a static image (the torch is not flickering) so you might want to add a patch slightly above the water textured with, e.g. water_clear (or any other water texture that produces water waves).&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap4.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Here you can see the same pool textured with true reflective water for comparison:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap5.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
You have to take into consideration that in contrast to a true reflection, the cube map texture will not react to changes in the environment. So if you for example put the torch out, it will still be lit in the cube map.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cubemap6.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
So it would be more practical to have non-extinguishable lights and no large moveables near the water.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;br /&gt;
[[Category:Skybox]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18063</id>
		<title>World Particle System</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18063"/>
		<updated>2015-01-11T22:21:36Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* &amp;quot;Natural&amp;quot; timing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;This article describes a feature that will become available in TDM 2.03.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The world particle system allows particles to exist in the world independent of any emitter entity. It enables effects like trailing smoke where the emitted smoke rises naturally instead of moving with the emitter, as well as fine-grained control of the emission of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
In TDM 2.03, the world particle system is usable only via scripting. We plan to add more user-friendly methods for mappers in 2.04, as well as to add it to some stock entities.&lt;br /&gt;
&lt;br /&gt;
TDM 2.03 supports 3 particle systems: weather patches, that emit particles like rain or snow from a wide surface; func_emitters, entities that emit particles from a point; and the world particle system that&#039;s controlled by scripts. If you want a particle effect to be emitted from a stationary spot, use a func_emitter or a weather patch. If you want a particle that should always move with its emitter, for example a lamp glare, use a func_emitter bound to the light source. World particles are for effects that once released take their own path independent of the movement of any emitter, like trailing smoke, or for effects where you need fine-grained control of the release of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Script event sys.emitParticle is used for all world particle system emissions.&lt;br /&gt;
&lt;br /&gt;
From the script reference:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;scriptEvent float &#039;&#039;emitParticle&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle);&#039;&#039;&#039;&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;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;origin&amp;quot; is where the quad will be released from. You can use an entity origin as reference: using $player1.getOrigin(), for example, will emit the quad from between the player&#039;s feet. Using $guard2.getEyePos() will emit it from guard2&#039;s eyes.&lt;br /&gt;
&lt;br /&gt;
Once you have emitted a particle quad, you have no further control over it. It will go its own way according to the path specified in the [[Particle_Editor|particle decl]].&lt;br /&gt;
&lt;br /&gt;
The script event is designed to be called every frame if you want to achieve &amp;quot;normal&amp;quot; particle emission as specified in the particle decl. It needs to be given a start time, which it uses to determine whether it should emit a quad or not right now. &lt;br /&gt;
&lt;br /&gt;
===Single quad emission===&lt;br /&gt;
Calling emitParticle with the current time -- sys.getTime() -- as the startTime parameter will always emit a quad, the first that would be emitted by the specified particle effect. That&#039;s because particle effects always emit their first quad as soon as they start up no matter what timing is specified in the particle decl.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Natural&amp;quot; timing===&lt;br /&gt;
To make sys.emitParticle emit particle quads just like a func_emitter would, using the timings specified in the particle decl, call it with the same &amp;quot;startTime&amp;quot; every frame. Typically your script will start with the current time, and store that time so that you can pass the same time in every frame. Your code will continue doing that until emitParticle returns false (0), meaning that all quads for the particle effect have now been released:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if you are using a particle effect that emits one quad every second, and you call sys.emitParticle every frame, i.e. 60 times per second, then it will emit 1 particle every 60th call. The 59 calls in between will not emit anything.&lt;br /&gt;
&lt;br /&gt;
Unlike func_emitters, emitParticle does not support cycling particle effects. If you want your emissions to carry on forever, you have to repeat the above instructions for ever in your script, e.g:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;while (1) // cycle for ever&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    {&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    }&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The following script emits a trailing smoke particle effect from an extinguished candle using the &amp;quot;natural&amp;quot; timing method and without cycling.&lt;br /&gt;
&lt;br /&gt;
This is an exaggerated version of the standard 2.03 candle smoke effect, where the particle decl has been tweaked to increase the number, size, and duration of the particle quads.&lt;br /&gt;
&lt;br /&gt;
The script runs through the particle effect once without cycling. The only change from the script given above is that it calculates the origin of the candle top every frame from the origin of the candle base and its current orientation, so if the player is moving the candle during the effect, the smoke comes out of the right place.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float candle_height = 17; // height of wick above candle holder &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector candle_top = sys.angToUp( $candle_holder.getAngles() ) * candle_height;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector smoke_origin = $candle_holder.getOrigin() + candle_top;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video of the result ===&lt;br /&gt;
[http://youtu.be/OdctCfJjv8g YouTube video]&lt;br /&gt;
&lt;br /&gt;
==Performance considerations==&lt;br /&gt;
Particles emitted by weather patches and func_emitters are rendered only if the particle effect might appear in some area of the map that the player can see. Particle effects on the far side of the map will be &amp;quot;turned off&amp;quot;. World particles are different: they are rendered every frame no matter whether the player has any chance of seeing them or not. They won&#039;t actually be drawn if not in view -- i.e. converted to screen pixels and coloured in -- but their positions will be calculated and passed to the graphics card every frame. If you have a thousand trailing particle emitters in your map, using a variety of different particle effects, you are likely to see an impact on FPS.&lt;br /&gt;
&lt;br /&gt;
On the other hand, world particles enjoy some performance advantages over other types of particle. Weather patches and func_emitters each generate their own individual draw call every frame that they are in view. If you have two smoking torches next to one another, that&#039;s 2 draw calls each frame for the smoke.&lt;br /&gt;
&lt;br /&gt;
All world particles of the same kind will be drawn in a single draw call, no matter how spread out they are in the map. So adding more world smoke emitters will increase calculations a bit, but it won&#039;t add more draw calls.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18062</id>
		<title>World Particle System</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18062"/>
		<updated>2015-01-11T22:19:02Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;This article describes a feature that will become available in TDM 2.03.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The world particle system allows particles to exist in the world independent of any emitter entity. It enables effects like trailing smoke where the emitted smoke rises naturally instead of moving with the emitter, as well as fine-grained control of the emission of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
In TDM 2.03, the world particle system is usable only via scripting. We plan to add more user-friendly methods for mappers in 2.04, as well as to add it to some stock entities.&lt;br /&gt;
&lt;br /&gt;
TDM 2.03 supports 3 particle systems: weather patches, that emit particles like rain or snow from a wide surface; func_emitters, entities that emit particles from a point; and the world particle system that&#039;s controlled by scripts. If you want a particle effect to be emitted from a stationary spot, use a func_emitter or a weather patch. If you want a particle that should always move with its emitter, for example a lamp glare, use a func_emitter bound to the light source. World particles are for effects that once released take their own path independent of the movement of any emitter, like trailing smoke, or for effects where you need fine-grained control of the release of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Script event sys.emitParticle is used for all world particle system emissions.&lt;br /&gt;
&lt;br /&gt;
From the script reference:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;scriptEvent float &#039;&#039;emitParticle&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle);&#039;&#039;&#039;&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;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;origin&amp;quot; is where the quad will be released from. You can use an entity origin as reference: using $player1.getOrigin(), for example, will emit the quad from between the player&#039;s feet. Using $guard2.getEyePos() will emit it from guard2&#039;s eyes.&lt;br /&gt;
&lt;br /&gt;
Once you have emitted a particle quad, you have no further control over it. It will go its own way according to the path specified in the [[Particle_Editor|particle decl]].&lt;br /&gt;
&lt;br /&gt;
The script event is designed to be called every frame if you want to achieve &amp;quot;normal&amp;quot; particle emission as specified in the particle decl. It needs to be given a start time, which it uses to determine whether it should emit a quad or not right now. &lt;br /&gt;
&lt;br /&gt;
===Single quad emission===&lt;br /&gt;
Calling emitParticle with the current time -- sys.getTime() -- as the startTime parameter will always emit a quad, the first that would be emitted by the specified particle effect. That&#039;s because particle effects always emit their first quad as soon as they start up no matter what timing is specified in the particle decl.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Natural&amp;quot; timing===&lt;br /&gt;
To make sys.emitParticle emit particle quads just like a func_emitter would, using the timings specified in the particle decl, call it with the same &amp;quot;startTime&amp;quot; every frame. Typically your script will start with the current time, and store that time so that you can pass the same time in every frame. Your code will continue doing that until emitParticle returns false (0), meaning that all quads for the particle effect have now been released:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if you are using a particle effect that emits one quad every second, and you call sys.EmitParticle every frame, i.e. 60 times per second, then it will emit 1 particle every 60th call. The 59 calls in between will not emit anything.&lt;br /&gt;
&lt;br /&gt;
Unlike func_emitters, emitParticle does not support cycling particle effects. If you want your emissions to carry on forever, you have to repeat the above instructions for ever in your script, e.g:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;while (1) // cycle for ever&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    {&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    }&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The following script emits a trailing smoke particle effect from an extinguished candle using the &amp;quot;natural&amp;quot; timing method and without cycling.&lt;br /&gt;
&lt;br /&gt;
This is an exaggerated version of the standard 2.03 candle smoke effect, where the particle decl has been tweaked to increase the number, size, and duration of the particle quads.&lt;br /&gt;
&lt;br /&gt;
The script runs through the particle effect once without cycling. The only change from the script given above is that it calculates the origin of the candle top every frame from the origin of the candle base and its current orientation, so if the player is moving the candle during the effect, the smoke comes out of the right place.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float candle_height = 17; // height of wick above candle holder &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector candle_top = sys.angToUp( $candle_holder.getAngles() ) * candle_height;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector smoke_origin = $candle_holder.getOrigin() + candle_top;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video of the result ===&lt;br /&gt;
[http://youtu.be/OdctCfJjv8g YouTube video]&lt;br /&gt;
&lt;br /&gt;
==Performance considerations==&lt;br /&gt;
Particles emitted by weather patches and func_emitters are rendered only if the particle effect might appear in some area of the map that the player can see. Particle effects on the far side of the map will be &amp;quot;turned off&amp;quot;. World particles are different: they are rendered every frame no matter whether the player has any chance of seeing them or not. They won&#039;t actually be drawn if not in view -- i.e. converted to screen pixels and coloured in -- but their positions will be calculated and passed to the graphics card every frame. If you have a thousand trailing particle emitters in your map, using a variety of different particle effects, you are likely to see an impact on FPS.&lt;br /&gt;
&lt;br /&gt;
On the other hand, world particles enjoy some performance advantages over other types of particle. Weather patches and func_emitters each generate their own individual draw call every frame that they are in view. If you have two smoking torches next to one another, that&#039;s 2 draw calls each frame for the smoke.&lt;br /&gt;
&lt;br /&gt;
All world particles of the same kind will be drawn in a single draw call, no matter how spread out they are in the map. So adding more world smoke emitters will increase calculations a bit, but it won&#039;t add more draw calls.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18061</id>
		<title>World Particle System</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18061"/>
		<updated>2015-01-11T22:04:41Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Performance considerations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;This article describes a feature that will become available in TDM 2.03.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The world particle system allows particles to exist in the world independent of any emitter entity. It enables effects like trailing smoke where the emitted smoke rises naturally instead of moving with the emitter, as well as fine-grained control of the emission of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
In TDM 2.03, the world particle system is usable only via scripting. We plan to add more user-friendly methods for mappers in 2.04, as well as to add it to some stock entities.&lt;br /&gt;
&lt;br /&gt;
TDM 2.03 supports 3 particle systems: weather patches, that emit particles like rain or snow from a wide surface; func_emitters, entities that emit particles from a point; and the world particle system that&#039;s controlled by scripts. If you want a particle effect to be emitted from a stationary spot, use a func_emitter or a weather patch. If you want a particle that should always move with its emitter, for example a lamp glare, use a func_emitter bound to the light source. World particles are for effects that once released take their own path independent of the movement of any emitter, like trailing smoke, or for effects where you need fine-grained control of the release of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Script event sys.EmitParticle is used for all world particle system emissions.&lt;br /&gt;
&lt;br /&gt;
From the script reference:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;scriptEvent float &#039;&#039;emitParticle&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle);&#039;&#039;&#039;&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;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;origin&amp;quot; is where the quad will be released from. You can use an entity origin as reference: using $player1.getOrigin(), for example, will emit the quad from between the player&#039;s feet. Using $guard2.getEyePos() will emit it from guard2&#039;s eyes.&lt;br /&gt;
&lt;br /&gt;
Once you have emitted a particle quad, you have no further control over it. It will go its own way according to the path specified in the [[Particle_Editor|particle decl]].&lt;br /&gt;
&lt;br /&gt;
The script event is designed to be called every frame if you want to achieve &amp;quot;normal&amp;quot; particle emission as specified in the particle decl. It needs to be given a start time, which it uses to determine whether it should emit a quad or not right now. &lt;br /&gt;
&lt;br /&gt;
===Single quad emission===&lt;br /&gt;
Calling emitParticle with the current time -- sys.getTime() -- as the startTime parameter will always emit a quad, the first that would be emitted by the specified particle effect. That&#039;s because particle effects always emit their first quad as soon as they start up no matter what timing is specified in the particle decl.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Natural&amp;quot; timing===&lt;br /&gt;
To make sys.emitParticle emit particle quads just like a func_emitter would, using the timings specified in the particle decl, call it with the same &amp;quot;startTime&amp;quot; every frame. Typically your script will start with the current time, and store that time so that you can pass the same time in every frame. Your code will continue doing that until emitParticle returns false (0), meaning that all quads for the particle effect have now been released:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if you are using a particle effect that emits one quad every second, and you call sys.EmitParticle every frame, i.e. 60 times per second, then it will emit 1 particle every 60th call. The 59 calls in between will not emit anything.&lt;br /&gt;
&lt;br /&gt;
Unlike func_emitters, emitParticle does not support cycling particle effects. If you want your emissions to carry on forever, you have to repeat the above instructions for ever in your script, e.g:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;while (1) // cycle for ever&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    {&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    }&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The following script emits a trailing smoke particle effect from an extinguished candle using the &amp;quot;natural&amp;quot; timing method and without cycling.&lt;br /&gt;
&lt;br /&gt;
This is an exaggerated version of the standard 2.03 candle smoke effect, where the particle decl has been tweaked to increase the number, size, and duration of the particle quads.&lt;br /&gt;
&lt;br /&gt;
The script runs through the particle effect once without cycling. The only change from the script given above is that it calculates the origin of the candle top every frame from the origin of the candle base and its current orientation, so if the player is moving the candle during the effect, the smoke comes out of the right place.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float candle_height = 17; // height of wick above candle holder &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector candle_top = sys.angToUp( $candle_holder.getAngles() ) * candle_height;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector smoke_origin = $candle_holder.getOrigin() + candle_top;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video of the result ===&lt;br /&gt;
[http://youtu.be/OdctCfJjv8g YouTube video]&lt;br /&gt;
&lt;br /&gt;
==Performance considerations==&lt;br /&gt;
Particles emitted by weather patches and func_emitters are rendered only if the particle effect might appear in some area of the map that the player can see. Particle effects on the far side of the map will be &amp;quot;turned off&amp;quot;. World particles are different: they are rendered every frame no matter whether the player has any chance of seeing them or not. They won&#039;t actually be drawn if not in view -- i.e. converted to screen pixels and coloured in -- but their positions will be calculated and passed to the graphics card every frame. If you have a thousand trailing particle emitters in your map, using a variety of different particle effects, you are likely to see an impact on FPS.&lt;br /&gt;
&lt;br /&gt;
On the other hand, world particles enjoy some performance advantages over other types of particle. Weather patches and func_emitters each generate their own individual draw call every frame that they are in view. If you have two smoking torches next to one another, that&#039;s 2 draw calls each frame for the smoke.&lt;br /&gt;
&lt;br /&gt;
All world particles of the same kind will be drawn in a single draw call, no matter how spread out they are in the map. So adding more world smoke emitters will increase calculations a bit, but it won&#039;t add more draw calls.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18060</id>
		<title>World Particle System</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18060"/>
		<updated>2015-01-11T22:01:18Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;This article describes a feature that will become available in TDM 2.03.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The world particle system allows particles to exist in the world independent of any emitter entity. It enables effects like trailing smoke where the emitted smoke rises naturally instead of moving with the emitter, as well as fine-grained control of the emission of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
In TDM 2.03, the world particle system is usable only via scripting. We plan to add more user-friendly methods for mappers in 2.04, as well as to add it to some stock entities.&lt;br /&gt;
&lt;br /&gt;
TDM 2.03 supports 3 particle systems: weather patches, that emit particles like rain or snow from a wide surface; func_emitters, entities that emit particles from a point; and the world particle system that&#039;s controlled by scripts. If you want a particle effect to be emitted from a stationary spot, use a func_emitter or a weather patch. If you want a particle that should always move with its emitter, for example a lamp glare, use a func_emitter bound to the light source. World particles are for effects that once released take their own path independent of the movement of any emitter, like trailing smoke, or for effects where you need fine-grained control of the release of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Script event sys.EmitParticle is used for all world particle system emissions.&lt;br /&gt;
&lt;br /&gt;
From the script reference:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;scriptEvent float &#039;&#039;emitParticle&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle);&#039;&#039;&#039;&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;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;origin&amp;quot; is where the quad will be released from. You can use an entity origin as reference: using $player1.getOrigin(), for example, will emit the quad from between the player&#039;s feet. Using $guard2.getEyePos() will emit it from guard2&#039;s eyes.&lt;br /&gt;
&lt;br /&gt;
Once you have emitted a particle quad, you have no further control over it. It will go its own way according to the path specified in the [[Particle_Editor|particle decl]].&lt;br /&gt;
&lt;br /&gt;
The script event is designed to be called every frame if you want to achieve &amp;quot;normal&amp;quot; particle emission as specified in the particle decl. It needs to be given a start time, which it uses to determine whether it should emit a quad or not right now. &lt;br /&gt;
&lt;br /&gt;
===Single quad emission===&lt;br /&gt;
Calling emitParticle with the current time -- sys.getTime() -- as the startTime parameter will always emit a quad, the first that would be emitted by the specified particle effect. That&#039;s because particle effects always emit their first quad as soon as they start up no matter what timing is specified in the particle decl.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Natural&amp;quot; timing===&lt;br /&gt;
To make sys.emitParticle emit particle quads just like a func_emitter would, using the timings specified in the particle decl, call it with the same &amp;quot;startTime&amp;quot; every frame. Typically your script will start with the current time, and store that time so that you can pass the same time in every frame. Your code will continue doing that until emitParticle returns false (0), meaning that all quads for the particle effect have now been released:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if you are using a particle effect that emits one quad every second, and you call sys.EmitParticle every frame, i.e. 60 times per second, then it will emit 1 particle every 60th call. The 59 calls in between will not emit anything.&lt;br /&gt;
&lt;br /&gt;
Unlike func_emitters, emitParticle does not support cycling particle effects. If you want your emissions to carry on forever, you have to repeat the above instructions for ever in your script, e.g:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;while (1) // cycle for ever&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    {&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    }&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The following script emits a trailing smoke particle effect from an extinguished candle using the &amp;quot;natural&amp;quot; timing method and without cycling.&lt;br /&gt;
&lt;br /&gt;
This is an exaggerated version of the standard 2.03 candle smoke effect, where the particle decl has been tweaked to increase the number, size, and duration of the particle quads.&lt;br /&gt;
&lt;br /&gt;
The script runs through the particle effect once without cycling. The only change from the script given above is that it calculates the origin of the candle top every frame from the origin of the candle base and its current orientation, so if the player is moving the candle during the effect, the smoke comes out of the right place.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float candle_height = 17; // height of wick above candle holder &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector candle_top = sys.angToUp( $candle_holder.getAngles() ) * candle_height;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector smoke_origin = $candle_holder.getOrigin() + candle_top;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video of the result ===&lt;br /&gt;
[http://youtu.be/OdctCfJjv8g YouTube video]&lt;br /&gt;
&lt;br /&gt;
==Performance considerations==&lt;br /&gt;
Particles emitted by weather patches and func_emitters are rendered only if the particle effect might appear in some area of the map that the player can see. Particle effects on the far side of the map will be &amp;quot;turned off&amp;quot;. World particles are different: they are rendered every frame no matter whether the player has any chance of seeing them or not. They won&#039;t actually be drawn if not in view -- i.e. converted to screen pixels and coloured in -- but their positions will be calculated and passed to the graphics card every frame. If you have a thousand trailing particle emitters in your map, using a variety of different particle effects, you are likely to see an impact on FPS.&lt;br /&gt;
&lt;br /&gt;
On the other hand, world particles enjoy some performance advantages over other types of particle. Weather patches and func_emitters each generate their own individual draw call every frame that they are in view. If you have two smoking torches next to one another, that&#039;s 2 draw calls each frame for the smoke.&lt;br /&gt;
&lt;br /&gt;
All world particles that use the same texture will be drawn in a single draw call, no matter how spread out they are in the map. So adding more world smoke emitters will increase calculations a bit, but it won&#039;t add more draw calls.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18059</id>
		<title>World Particle System</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18059"/>
		<updated>2015-01-11T21:59:31Z</updated>

		<summary type="html">&lt;p&gt;SteveL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;This article describes a feature that will become available in TDM 2.03.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The world particle system allows particles to exist in the world independent of any emitter entity. It enables effects like trailing smoke where the emitted smoke rises naturally instead of moving with the emitter, as well as fine-grained control of the emission of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
In TDM 2.03, the world particle system is usable only via scripting. We plan to add more user-friendly methods for mappers in 2.04, as well as to add it to some stock entities.&lt;br /&gt;
&lt;br /&gt;
TDM 2.03 supports 3 particle systems: weather patches, that emit particles like rain or snow from a wide surface; func_emitters, entities that emit particles from a point; and the world particle system that&#039;s controlled by scripts. If you want a particle effect to be emitted from a stationary spot, use a func_emitter or a weather patch. If you want a particle that should always move with its emitter, for example a lamp glare, use a func_emitter bound to the light source. World particles are for effects that once released take their own path independent of the movement of any emitter, like trailing smoke, or for effects where you need fine-grained control of the release of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Script event sys.EmitParticle is used for all world particle system emissions.&lt;br /&gt;
&lt;br /&gt;
From the script reference:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;scriptEvent float &#039;&#039;emitParticle&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle);&#039;&#039;&#039;&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;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;origin&amp;quot; is where the quad will be released from. You can use an entity origin as reference: using $player1.getOrigin(), for example, will emit the quad from between the player&#039;s feet. Using $guard2.getEyePos() will emit it from the guard2&#039;s eyes.&lt;br /&gt;
&lt;br /&gt;
Once you have emitted a particle quad, you have no further control over it. It will go its own way according to the path specified in the [[Particle_Editor|particle decl]].&lt;br /&gt;
&lt;br /&gt;
The script event is designed to be called every frame if you want to achieve &amp;quot;normal&amp;quot; particle emission as specified in the particle decl. It needs to be given a start time, which it uses to determine whether it should emit a quad or not right now. &lt;br /&gt;
&lt;br /&gt;
===Single quad emission===&lt;br /&gt;
Calling emitParticle with the current time -- sys.getTime() -- as the startTime parameter will always emit a quad, the first that would be emitted by the specified particle effect. That&#039;s because particle effects always emit their first quad as soon as they start up no matter what timing is specified in the particle decl.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Natural&amp;quot; timing===&lt;br /&gt;
To make sys.emitParticle emit particle quads just like a func_emitter would, using the timings specified in the particle decl, call it with the same &amp;quot;startTime&amp;quot; every frame. Typically your script will start with the current time, and store that time so that you can pass the same time in every frame. Your code will continue doing that until emitParticle returns false (0), meaning that all quads for the particle effect have now been released:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if you are using a particle effect that emits one quad every second, and you call sys.EmitParticle every frame, i.e. 60 times per second, then it will emit 1 particle every 60th call. The 59 calls in between will not emit anything.&lt;br /&gt;
&lt;br /&gt;
Unlike func_emitters, emitParticle does not support cycling particle effects. If you want your emissions to carry on forever, you have to repeat the above instructions for ever in your script, e.g:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;while (1) // cycle for ever&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    {&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    }&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The following script emits a trailing smoke particle effect from an extinguished candle using the &amp;quot;natural&amp;quot; timing method and without cycling.&lt;br /&gt;
&lt;br /&gt;
This is an exaggerated version of the standard 2.03 candle smoke effect, where the particle decl has been tweaked to increase the number, size, and duration of the particle quads.&lt;br /&gt;
&lt;br /&gt;
The script runs through the particle effect once without cycling. The only change from the script given above is that it calculates the origin of the candle top every frame from the origin of the candle base and its current orientation, so if the player is moving the candle during the effect, the smoke comes out of the right place.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float candle_height = 17; // height of wick above candle holder &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector candle_top = sys.angToUp( $candle_holder.getAngles() ) * candle_height;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector smoke_origin = $candle_holder.getOrigin() + candle_top;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video of the result ===&lt;br /&gt;
[http://youtu.be/OdctCfJjv8g YouTube video]&lt;br /&gt;
&lt;br /&gt;
==Performance considerations==&lt;br /&gt;
Particles emitted by weather patches and func_emitters are rendered only if the particle effect might appear in some area of the map that the player can see. Particle effects on the far side of the map will be &amp;quot;turned off&amp;quot;. World particles are different: they are rendered every frame no matter whether the player has any chance of seeing them or not. They won&#039;t actually be drawn if not in view -- i.e. converted to screen pixels and coloured in -- but their positions will be calculated and passed to the graphics card every frame. If you have a thousand trailing particle emitters in your map, using a variety of different particle effects, you are likely to see an impact on FPS.&lt;br /&gt;
&lt;br /&gt;
On the other hand, world particles enjoy some performance advantages over other types of particle. Weather patches and func_emitters each generate their own individual draw call every frame that they are in view. If you have two smoking torches next to one another, that&#039;s 2 draw calls each frame for the smoke.&lt;br /&gt;
&lt;br /&gt;
All world particles that use the same texture will be drawn in a single draw call, no matter how spread out they are in the map. So adding more world smoke emitters will increase calculations a bit, but it won&#039;t add more draw calls.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18058</id>
		<title>World Particle System</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18058"/>
		<updated>2015-01-11T21:54:19Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Performance considerations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;This article describes a feature that will become available in TDM 2.03.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The world particle system allows particles to exist in the world independent of any emitter entity. It enables effects like trailing smoke where the emitted smoke rises naturally instead of moving with the emitter, as well as fine-grained control of the emission of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
In TDM 2.03, the world particle system is usable only via scripting. We plan to add more user-friendly methods for mappers in 2.04, as well as to add it to some stock entities.&lt;br /&gt;
&lt;br /&gt;
TDM 2.03 supports 3 particle systems: weather patches, that emit particles like rain or snow from a wide surface; func_emitters, entities that emit particles from a point; and the world particle system that&#039;s controlled by scripts. If you want a particle effect to be emitted from a stationary spot, use a func_emitter or a weather patch. If you want a particle that should always move with its emitter, for example a lamp glare, use a func_emitter bound to the light source. World particles are for effects that once released take their own path independent of the movement of the emitter, like trailing smoke, or for effects where you need fine-grained control of the release of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Script event sys.EmitParticle is used for all world particle system emissions.&lt;br /&gt;
&lt;br /&gt;
From the script reference:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;scriptEvent float &#039;&#039;emitParticle&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle);&#039;&#039;&#039;&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;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;origin&amp;quot; is where the quad will be released from. You can use an entity origin as reference: using $player1.getOrigin(), for example, will emit the quad from between the player&#039;s feet. Using $guard2.getEyePos() will emit it from the guard2&#039;s eyes.&lt;br /&gt;
&lt;br /&gt;
Once you have emitted a particle quad, you have no further control over it. It will go its own way according to the path specified in the [[Particle_Editor|particle decl]].&lt;br /&gt;
&lt;br /&gt;
The script event is designed to be called every frame if you want to achieve &amp;quot;normal&amp;quot; particle emission as specified in the particle decl. It needs to be given a start time, which it uses to determine whether it should emit a quad or not right now. &lt;br /&gt;
&lt;br /&gt;
===Single quad emission===&lt;br /&gt;
Calling emitParticle with the current time -- sys.getTime() -- as the startTime parameter will always emit a quad, the first that would be emitted by the specified particle effect. That&#039;s because particle effects always emit their first quad as soon as they start up no matter what timing is specified in the particle decl.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Natural&amp;quot; timing===&lt;br /&gt;
To make sys.emitParticle emit particle quads just like a func_emitter would, using the timings specified in the particle decl, call it with the same &amp;quot;startTime&amp;quot; every frame. Typically your script will start with the current time, and store that time so that you can pass the same time in every frame. Your code will continue doing that until emitParticle returns false (0), meaning that all quads for the particle effect have now been released:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if you are using a particle effect that emits one quad every second, and you call sys.EmitParticle every frame, i.e. 60 times per second, then it will emit 1 particle every 60th call. The 59 calls in between will not emit anything.&lt;br /&gt;
&lt;br /&gt;
Unlike func_emitters, emitParticle does not support cycling particle effects. If you want your emissions to carry on forever, you have to repeat the above instructions for ever in your script, e.g:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;while (1) // cycle for ever&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    {&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    }&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The following script emits a trailing smoke particle effect from an extinguished candle using the &amp;quot;natural&amp;quot; timing method and without cycling.&lt;br /&gt;
&lt;br /&gt;
This is an exaggerated version of the standard 2.03 candle smoke effect, where the particle decl has been tweaked to increase the number, size, and duration of the particle quads.&lt;br /&gt;
&lt;br /&gt;
The script runs through the particle effect once without cycling. The only change from the script given above is that it calculates the origin of the candle top every frame from the origin of the candle base and its current orientation, so if the player is moving the candle during the effect, the smoke comes out of the right place.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float candle_height = 17; // height of wick above candle holder &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector candle_top = sys.angToUp( $candle_holder.getAngles() ) * candle_height;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector smoke_origin = $candle_holder.getOrigin() + candle_top;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video of the result ===&lt;br /&gt;
[http://youtu.be/OdctCfJjv8g YouTube video]&lt;br /&gt;
&lt;br /&gt;
==Performance considerations==&lt;br /&gt;
Particles emitted by weather patches and func_emitters are rendered only if the particle effect might appear in some area of the map that the player can see. Particle effects on the far side of the map will be &amp;quot;turned off&amp;quot;. World particles are different: they are rendered every frame no matter whether the player has any chance of seeing them or not. They won&#039;t actually be drawn if not in view -- i.e. converted to screen pixels and coloured in -- but their positions will be calculated and passed to the graphics card every frame. If you have a thousand trailing particle emitters in your map, using a variety of different particle effects, you are likely to see an impact on FPS.&lt;br /&gt;
&lt;br /&gt;
On the other hand, world particles enjoy some performance advantages over other types of particle. Weather patches and func_emitters each generate their own individual draw call every frame that they are in view. If you have two smoking torches next to one another, that&#039;s 2 draw calls each frame for the smoke.&lt;br /&gt;
&lt;br /&gt;
All world particles that use the same texture will be drawn in a single draw call, no matter how spread out they are in the map. So adding more world smoke emitters will increase calculations a bit, but it won&#039;t add more draw calls.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18057</id>
		<title>World Particle System</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=World_Particle_System&amp;diff=18057"/>
		<updated>2015-01-11T21:53:49Z</updated>

		<summary type="html">&lt;p&gt;SteveL: Creating article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;This article describes a feature that will become available in TDM 2.03.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The world particle system allows particles to exist in the world independent of any emitter entity. It enables effects like trailing smoke where the emitted smoke rises naturally instead of moving with the emitter, as well as fine-grained control of the emission of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
In TDM 2.03, the world particle system is usable only via scripting. We plan to add more user-friendly methods for mappers in 2.04, as well as to add it to some stock entities.&lt;br /&gt;
&lt;br /&gt;
TDM 2.03 supports 3 particle systems: weather patches, that emit particles like rain or snow from a wide surface; func_emitters, entities that emit particles from a point; and the world particle system that&#039;s controlled by scripts. If you want a particle effect to be emitted from a stationary spot, use a func_emitter or a weather patch. If you want a particle that should always move with its emitter, for example a lamp glare, use a func_emitter bound to the light source. World particles are for effects that once released take their own path independent of the movement of the emitter, like trailing smoke, or for effects where you need fine-grained control of the release of individual particle quads.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Script event sys.EmitParticle is used for all world particle system emissions.&lt;br /&gt;
&lt;br /&gt;
From the script reference:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;scriptEvent float &#039;&#039;emitParticle&#039;&#039;(string particle, float startTime, float diversity, vector origin, vector angle);&#039;&#039;&#039;&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;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;origin&amp;quot; is where the quad will be released from. You can use an entity origin as reference: using $player1.getOrigin(), for example, will emit the quad from between the player&#039;s feet. Using $guard2.getEyePos() will emit it from the guard2&#039;s eyes.&lt;br /&gt;
&lt;br /&gt;
Once you have emitted a particle quad, you have no further control over it. It will go its own way according to the path specified in the [[Particle_Editor|particle decl]].&lt;br /&gt;
&lt;br /&gt;
The script event is designed to be called every frame if you want to achieve &amp;quot;normal&amp;quot; particle emission as specified in the particle decl. It needs to be given a start time, which it uses to determine whether it should emit a quad or not right now. &lt;br /&gt;
&lt;br /&gt;
===Single quad emission===&lt;br /&gt;
Calling emitParticle with the current time -- sys.getTime() -- as the startTime parameter will always emit a quad, the first that would be emitted by the specified particle effect. That&#039;s because particle effects always emit their first quad as soon as they start up no matter what timing is specified in the particle decl.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Natural&amp;quot; timing===&lt;br /&gt;
To make sys.emitParticle emit particle quads just like a func_emitter would, using the timings specified in the particle decl, call it with the same &amp;quot;startTime&amp;quot; every frame. Typically your script will start with the current time, and store that time so that you can pass the same time in every frame. Your code will continue doing that until emitParticle returns false (0), meaning that all quads for the particle effect have now been released:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if you are using a particle effect that emits one quad every second, and you call sys.EmitParticle every frame, i.e. 60 times per second, then it will emit 1 particle every 60th call. The 59 calls in between will not emit anything.&lt;br /&gt;
&lt;br /&gt;
Unlike func_emitters, emitParticle does not support cycling particle effects. If you want your emissions to carry on forever, you have to repeat the above instructions for ever in your script, e.g:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;while (1) // cycle for ever&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    {&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;        sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    }&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The following script emits a trailing smoke particle effect from an extinguished candle using the &amp;quot;natural&amp;quot; timing method and without cycling.&lt;br /&gt;
&lt;br /&gt;
This is an exaggerated version of the standard 2.03 candle smoke effect, where the particle decl has been tweaked to increase the number, size, and duration of the particle quads.&lt;br /&gt;
&lt;br /&gt;
The script runs through the particle effect once without cycling. The only change from the script given above is that it calculates the origin of the candle top every frame from the origin of the candle base and its current orientation, so if the player is moving the candle during the effect, the smoke comes out of the right place.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;float candle_height = 17; // height of wick above candle holder &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float starttime = sys.getTime();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;float more_to_come = 1;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;while ( more_to_come )&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector candle_top = sys.angToUp( $candle_holder.getAngles() ) * candle_height;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    vector smoke_origin = $candle_holder.getOrigin() + candle_top;&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    more_to_come = sys.emitParticle(&amp;quot;tdm_smoke_candleout&amp;quot;, starttime, sys.random(1), smoke_origin, &#039;0 0 0&#039;);&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;    sys.waitFrame();&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video of the result ===&lt;br /&gt;
[http://youtu.be/OdctCfJjv8g YouTube video]&lt;br /&gt;
&lt;br /&gt;
==Performance considerations==&lt;br /&gt;
Particles emitted by weather patches and func_emitters are rendered only if the particle effect might appear in some area of the map that the player can see. Particle effects on the far side of the map will be &amp;quot;turned off&amp;quot;. World particles are different: they are rendered every frame no matter whether the player has any chance of seeing them or not. They won&#039;t actually be drawn if not in view -- i.e. converted to screen pixels and coloured in -- but their positions will be calculated and passed to the graphics card every frame. If you have a thousand trailing particle emitters in your map, using a variety of different particle effects, you are likely to see an impact on FPS.&lt;br /&gt;
&lt;br /&gt;
On the other hand, world particles enjoy some performance advantages over other types of particle. Weather patches and func_emitters each generate their own individual draw call every frame that they are in view. If you have two smoking torches next to one another, that&#039;s 2 draw calls each frame for the smoke.&lt;br /&gt;
&lt;br /&gt;
All world particles that use the same texture will be drawn in a single draw call, no matter how spread out they are in the map. So adding more world smoke emitters will increase calculations a bit, but it won&#039;t add more draw calls.&lt;br /&gt;
&lt;br /&gt;
[[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Particle_Editor&amp;diff=18056</id>
		<title>Particle Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Particle_Editor&amp;diff=18056"/>
		<updated>2015-01-11T18:24:58Z</updated>

		<summary type="html">&lt;p&gt;SteveL: Adding Category:Particles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beginners and those who just want to use the already existing particle effects might like to first read [[Particles for Beginners]].&lt;br /&gt;
&lt;br /&gt;
===Editing the particles themselves (size etc):===&lt;br /&gt;
The particle editor in DR is under menu option Entity &amp;gt; Particle Editor&lt;br /&gt;
&lt;br /&gt;
[[Image:Ptcl editor.png|728px]]&lt;br /&gt;
&lt;br /&gt;
:Note: this article refers to the older Doom3 particle editor, and the editor layout has been updated since. The options do the same things so the information is still valid.&lt;br /&gt;
&lt;br /&gt;
Now to explain a few things. At the top you have the particle name next to &amp;quot;particle&amp;quot;, next to it you have new, save, and save as. Now, for easiest editing of particles, load up an existing particle, such as the leaf one in the example, modify it and then use &amp;quot;save as&amp;quot;. I will explain a bit more further down.&lt;br /&gt;
&lt;br /&gt;
Firstly, and most importantly, we have material. This is the path to your material; not the image file but the material for your custom leaf. So for example you can see the example above has textures/particles/tdm_leaves_01. If you know the name of your material (for example textures/particles/green_leaves) then you can type that in there and press enter and it will find it by itself showing the changes in the render view.&lt;br /&gt;
&lt;br /&gt;
Now that you can see your custom material we can continue on to the size of the leaves etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bunching&#039;&#039;&#039; this determines how much the particles tend to bunch together, 0 meaning they want to spread out as evenly as possible, while 1 means that they bunch together a bit. The effect is not actually that noticeable mind.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Count&#039;&#039;&#039; controls how many particles there are, so basically the example shown has 32 particles in total. Obviously the more you have, the more dense the tree. This is a slider so slide it around as necessary. Alternatively you can input a value into the box and then press apply down the bottom right.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cycles&#039;&#039;&#039; this is how long the effect will last in seconds, If you set &amp;quot;cycles 0.000&amp;quot;, it is endless, otherwise repeated so many times. In my case I am creating some ceiling dust that is triggered so am going with 1 or 2 cycles. &lt;br /&gt;
&lt;br /&gt;
To see the changes you are making, center your camera in the render view on the tree and press {{key|F7}} and {{key|F6}}. {{key|F7}} rebuilds everything and {{key|F6}} enables animations. Leave it in render view and move the particle editor to the side so you can see the render view (to watch the changes you are making as you make them).&lt;br /&gt;
&lt;br /&gt;
You will also notice the &amp;quot;time&amp;quot; input beneath it. This is the lifespan of a particle in seconds. If I may suggest, don&#039;t mess with this, as putting it too low will make the particle lifespan visible, as in you&#039;ll notice them appearing/disappearing etc. If you put it to something ridiculous, like 99999, then it will load for extremely long, and sometimes not at all. It&#039;s best to leave it at 300 (5 minute), as you won&#039;t notice the tree leaves changing around every 5 minutes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Distribution&#039;&#039;&#039; This is where things get a little more annoying. You&#039;ll notice 3 check dots - rect, cylinder, and sphere. Realistically you&#039;d want to use sphere, but for some reason the algorithm for distribution in the sphere (at least for the leaves) does not work correctly and you get several particles occupying the same spot, which results in z-fighting and generally looks really bad. Now, the rectangle distribution works perfect; particles are properly distributed and there is no z-fighting, but it&#039;s a rectangular shape, but can look ok if not too many particles are used. Another alternative is the cylinder distribution. Cylinder distribution works well but annoyingly enough the particles get distributed only on the walls of the cylinder, which means a hole in the middle, so you need to adjust the particle size and cylinder size so that there is no hole in the middle.&lt;br /&gt;
&lt;br /&gt;
The values to the right are the size values in doom units, so change that to roughly be the size you want the leaves to cover. If you selected cylindrical distribution, don&#039;t bother adding a ring value as it just makes it larger in diameter, so leave it at 0.&lt;br /&gt;
&lt;br /&gt;
The offset is the offset from the center of the particle entity. Try keeping the leaves centered on the particle emitter, as Doom 3&#039;s light rendering system calculates whether or not to light the particles by checking whether the particle emitter is inside the boundary of the light; if yes then applies the lighting to it, but if not then it leaves the particle unaffected, ID did this for performance reasons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random Distribution&#039;&#039;&#039; is just what it says, so you may want to leave that ticked.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speed&#039;&#039;&#039; leave that at 0 for the leaves as that is the speed at which the particles move away from the center of the emitter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Size&#039;&#039;&#039; is self-explanatory; it&#039;s the size of each particle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rotation&#039;&#039;&#039; is rotation speed of the particle and aspect stretches the particle from the center of the emitter. So leave these 2 alone for leaves.&lt;br /&gt;
&lt;br /&gt;
Notice that each of these has 2 sliders. This is for time based particles, so one slider is &amp;quot;from&amp;quot; and the second is &amp;quot;to&amp;quot;. This is governed over the lifespan, so for example a particle that has sizes 0 to 50 and a lifespan of 10 would mean that it would gradually increase it&#039;s size to 50 from 0 over a span of 10 seconds. So for leaves this means that you leave both sliders at the same value. The other values below the speed, size, rotation, and aspect sliders do various things and you can mess around with them if you wish but they are not useful for leaves.&lt;br /&gt;
&lt;br /&gt;
Now that you know what each value does, just mess around with them until you reach something that looks good.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Saving&#039;&#039;&#039; &lt;br /&gt;
- Press save as (presuming you modified one of the existing leaf particles) and it will come up with a dialog asking for the particle name. &lt;br /&gt;
- Enter the name you wish (for example green_leaves_01) and press {{ok}}. &lt;br /&gt;
- Now it comes up with a path dialog. Browse to the Doom3/base/particles folder (if there is no particles folder create one) and name it as what you want (this is the file name, not the particle name), for example something like &amp;quot;mymap_particles&amp;quot; and then press ok. [[Make sure you save it into doom3/base/particles as saving it into doom3/darkmod/particles WILL NOT WORK]]. &lt;br /&gt;
&lt;br /&gt;
[EDIT - Someone check me but I tested this and it does seem you can save it direct in the darkmod/particles folder but if you save it in base/particles then it goes in darkmod/particles anyway. Also note that if you select an existing file it will &#039;&#039;append&#039;&#039; it - it does not overwrite but adds new particles definitions to existing files if selected. - Fidcal] Once you save it there you will find the particle file (in this case &amp;quot;mymap_particles.prt&amp;quot;) in the doom3/darkmod/particles folder; strange, yes, but it saves it there due to the way Doom 3 mod-loading works.&lt;br /&gt;
&lt;br /&gt;
Now in DarkRadiant you should be able to find your new leaf particle when browsing through the particle list.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tutorial by Dram&#039;&#039; - updated by Bikerdude&lt;br /&gt;
&lt;br /&gt;
{{editing}}[[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Particles&amp;diff=18055</id>
		<title>Particles</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Particles&amp;diff=18055"/>
		<updated>2015-01-11T18:24:05Z</updated>

		<summary type="html">&lt;p&gt;SteveL: Adding Category:Particles&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;
Particles are VERY flexible - they can function as rain, snow, falling leaves, oscillating leaves and foliage, smoke, mist, flame, trickling sand, trickling water, drips, waterfall, spray, fountain - anything that can be made up of particles, big or small, fast or slow.&lt;br /&gt;
&lt;br /&gt;
There are already many particle effects available to the Dark Mod mapper. This tutorial is just the basics of how to get particle effects, new or old, into your mission...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting Particle effects into your game ==&lt;br /&gt;
&lt;br /&gt;
First, all that is assumed is you know the essentials described in [[Dark Radiant Must Know Basic Intro]]&lt;br /&gt;
&lt;br /&gt;
Like so many things - it&#039;s easy when you know how. Let me describe by example. Say you want to have some smoke coming out of a chimney in your mission...&lt;br /&gt;
&lt;br /&gt;
* Right click and select Create Entity.  Select func_emitter from the list.&lt;br /&gt;
* Add the property : model &lt;br /&gt;
* If you select the model property then you see two buttons at the bottom - Choose Model and Choose Particle.&lt;br /&gt;
* Select the Choose Particles button (see below for information on Choose Model)&lt;br /&gt;
* Select a particles effect from the list. For chimney smoke there are a couple of Doom ones - admin_hall_smk_cone.prt and mc2_hall_smk_cone.prt though they are a little bright (but could be modified in the Particles Editor and resaved as a new particles effect.) There are also a couple of Dark Mod ones - chimney_smoke1.prt and chimney_smoke2.prt at this time. Other DM stuff is under tdm_ but it&#039;s worth exploring the whole list to see what is available.&lt;br /&gt;
* All that remains is to position your func_emitter over a chimney.&lt;br /&gt;
* Note that there is a DR bug that does not allow you to rotate the func_emitter on the X or Y planes; however, there&#039;s some question whether most particles care about where the emitter is rotated.&lt;br /&gt;
&lt;br /&gt;
That will give you a start. Try out some of the others so you see what is available and what is possible and then you can move on to more advanced stuff...&lt;br /&gt;
&lt;br /&gt;
* Note that &#039;Choose Model&#039; does not assign a model or models to be emitted such as a leaf or snowflake (see [[Particle Editor]]) No, if you choose model then it just assigns a visible model shape to the entity in the normal way. I guess one could use a chimney pot in our example but the particle effect would have to be customised to line up so we shall create a separate particle effect and just place it over a chimney. Depends on what you are doing whether you need a model at the position of the particle effect. It does save on entities, but it is less flexible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Switching Particles on and off==&lt;br /&gt;
&lt;br /&gt;
func_emitter can be turned on and off by using target from any targetting entity eg a button or lever.&lt;br /&gt;
&lt;br /&gt;
Particle effects can also be created using the [[Stim/Response]] system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Starting OFF at game start==&lt;br /&gt;
&lt;br /&gt;
To start a particle effect OFF at game start give the func_emitter the property and value...&lt;br /&gt;
&lt;br /&gt;
start_off 1&lt;br /&gt;
&lt;br /&gt;
You can then make it start when you want by using target from any targetting entity eg a button or lever.&lt;br /&gt;
&lt;br /&gt;
Note that the particle effect may be very briefly visible at game start then turn off within a second. This is normal and I don&#039;t think can be avoided. In most cases this doesn&#039;t matter if the effect is not in the player&#039;s view right at game start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating Your Own Particle Effects ==&lt;br /&gt;
&lt;br /&gt;
You can create your own particle effects - or even easier - modify existing ones. To do this read [[Particle Editor]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Tutorial]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Category:Particles&amp;diff=18054</id>
		<title>Category:Particles</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Category:Particles&amp;diff=18054"/>
		<updated>2015-01-11T18:23:57Z</updated>

		<summary type="html">&lt;p&gt;SteveL: Creating Category:Particles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=18045</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=18045"/>
		<updated>2015-01-02T21:34:11Z</updated>

		<summary type="html">&lt;p&gt;SteveL: Lord Edgar&amp;#039;s Bathhouse is not The Accountant 2&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://modetwo.net/darkmod/wiki/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;12%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;9%&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;4%&amp;quot;|Size (MB)&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|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;
|&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|La Banque Bienveillante}}&lt;br /&gt;
|Airship Ballet&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-22&lt;br /&gt;
|70&lt;br /&gt;
|Bienveillante&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;
|HSC 2014&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&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;
|HSC 2014&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&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;
|&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;
|&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;
|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://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;
|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;
|&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;
|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;
|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|84|A Noble Home}}&lt;br /&gt;
|Goldwell, Bikerdude&lt;br /&gt;
|{{Mirrorlink|http://www18.zippyshare.com/v/48473186/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16085-fan-mission-80-a-noble-home-the-accountant-prologue-by-goldwell-bikerdude-20140314/}}&lt;br /&gt;
|2014-03-14&lt;br /&gt;
|23&lt;br /&gt;
|The Accountant&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|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;
|&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;
|William Steele 3&lt;br /&gt;
|Sewer / Prison&lt;br /&gt;
|none&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;
|William Steele 2&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|none&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;
|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;
|&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;
|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;
|[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;
|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;
|&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;
|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;
|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;
|&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;
|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;
|&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;
|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;
|&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;
|&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;
|William Steele 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|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;
|&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;
|&lt;br /&gt;
|Pagan/Outdoor Missions&lt;br /&gt;
|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;
|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;
|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;
|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|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;
|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;
|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;
|&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;
|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}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|antr.pk4}}{{Mirrorlink|http://www.mediafire.com/?d4hch59m4nef3dc}} {{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;
|32&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;
|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;
|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://modetwo.net/darkmod/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;
|&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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|&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://modetwo.net/darkmod/index.php?/topic/12850-fan-mission-alberics-curse-by-b1k3rdude-20062011/}}&lt;br /&gt;
|2011-06-20&lt;br /&gt;
|29&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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/index.php?/topic/12846-fm-rake-off-19-06-2011/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|8&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://modetwo.net/darkmod/index.php?/topic/12690-seasons-contest-entry-winter-harvest-by-shadowhide/}}&lt;br /&gt;
|2011-05-08&lt;br /&gt;
|10&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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/index.php?/topic/12575-fan-mission-mandrasola-by-sotha-20110410/}}&lt;br /&gt;
|2011-04-10&lt;br /&gt;
|10&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.gamefront.com/files/20167184/yantdm1.1.pk4 Q4 Conversion: Yan&#039;s Test]&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Mirrorlink|http://www.mediafire.com/?2nona089nzi00sv}} {{Mirrorlink|http://www.gamefront.com/files/20167184/yantdm1.1.pk4}} {{Forumlink|1=http://modetwo.net/darkmod/index.php?/topic/12506-fan-mission-q4-map-conversion-yantdm1-280311/}}&lt;br /&gt;
|2011-03-28&lt;br /&gt;
|28&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://modetwo.net/darkmod/index.php?/topic/12408-fan-mission-the-transaction-by-sotha-20110304/}}&lt;br /&gt;
|2011-03-04&lt;br /&gt;
|10&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;(v2.0 2011/03/01)&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Bloodgate|ReturnToTheCityV2.pk4}}{{Forumlink|1=http://modetwo.net/darkmod/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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/index.php?/topic/11991-fm-flakebridge-monastery-by-jesps/}}&lt;br /&gt;
|2010-12-05&lt;br /&gt;
|16&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://modetwo.net/darkmod/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;
|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;
|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://modetwo.net/darkmod/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;
|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|1=http://modetwo.net/darkmod/index.php?/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;
|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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|&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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|&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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|&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.2.0, 2013/10/16)&lt;br /&gt;
|Goldchocobo, RailGun, Mortem Desino&lt;br /&gt;
|{{Mirrorlink|http://tinyurl.com/2a9mdcs}}{{Forumlink|1=http://modetwo.net/darkmod/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;
|144&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, 2010/04/12)&lt;br /&gt;
|Fidcal, Baddcog&lt;br /&gt;
|{{Bloodgate|heart.pk4}} {{Forumlink|1=http://modetwo.net/darkmod/index.php?/topic/10878-fan-mission-the-heart-of-lone-salvation-by-fidcal-baddcog-20100402/}} {{Walkthrough|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog}} {{loot|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog}}&lt;br /&gt;
|2010-04-02&lt;br /&gt;
|41&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://modetwo.net/darkmod/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;
|&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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|&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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/index.php?/topic/10286-fm-the-thieves-nov-2509/}}&lt;br /&gt;
|2009-11-26&lt;br /&gt;
|9&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://modetwo.net/darkmod/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;
|&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://modetwo.net/darkmod/index.php?/topic/9932-fm-training-mission-17-oct-09/}}&lt;br /&gt;
|2009-10-17&lt;br /&gt;
|6&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://modetwo.net/darkmod/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;
|&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}}&lt;br /&gt;
|Fidcal&lt;br /&gt;
|{{Bloodgate|chalice.pk4}} {{Forumlink|1=http://modetwo.net/darkmod/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;
|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://modetwo.net/darkmod/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;
|&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|Tears of Saint Lucia, The}}&amp;lt;br&amp;gt;(v.1.01, 2010/04/29)&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|saintlucia.pk4}} {{Forumlink|1=http://modetwo.net/darkmod/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;
|18&lt;br /&gt;
|&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;
|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://modetwo.net/darkmod/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;
|Thief&#039;s Den 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the aforementioned download links are down, [http://www.southquarter.com/downloads/missions_view.php South Quarter] has some TDM missions (-2011) as well as a link to it&#039;s TTLG forum thread. Just click the &#039;game column&#039; to sort the list with TDM.&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;
&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://modetwo.net/darkmod/wiki/images/b/be/Icon_forum.png http://modetwo.net/darkmod/wiki/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>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.03&amp;diff=18042</id>
		<title>TDM Script Reference/2.03</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.03&amp;diff=18042"/>
		<updated>2015-01-01T23:37:49Z</updated>

		<summary type="html">&lt;p&gt;SteveL: header  for pre-release version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been generated automatically by the tdm_gen_script_event_doc console command, with [[Talk:TDM_Script_Reference/2.03|manual amendments]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is a pre-release page for TDM 2.03: Not all script events on this page are available in the current TDM version 2.02.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Generated by The Dark Mod 2.03, code revision 6439, last update: 2015-01-01 23:22&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_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;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;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;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;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): 	&lt;br /&gt;
::{|&lt;br /&gt;
|-&lt;br /&gt;
|gamePlayTime||gameplay time in seconds&lt;br /&gt;
|-&lt;br /&gt;
|damageDealt||damage dealt to enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|damageReceived||damage received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|healthReceived||health received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|pocketsPicked||pockets picked by player 	&lt;br /&gt;
|-&lt;br /&gt;
|foundLoot||loot found by player 	&lt;br /&gt;
|-&lt;br /&gt;
|missionLoot||total loot available in mission 	&lt;br /&gt;
|-&lt;br /&gt;
|totalTimePlayerSeen||total time the player was seen by enemies in seconds 	&lt;br /&gt;
|-&lt;br /&gt;
|numberTimesPlayerSeen||number of times player was seen by enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|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.	&lt;br /&gt;
|-&lt;br /&gt;
|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.&lt;br /&gt;
|-&lt;br /&gt;
|sightingScore||sighting score (number of times player was seen * weight) 	&lt;br /&gt;
|-&lt;br /&gt;
|stealthScore||stealth score (sighting score + alerts * weights) 	&lt;br /&gt;
|-&lt;br /&gt;
|killedByPlayer||number of enemies killed by player 	&lt;br /&gt;
|-&lt;br /&gt;
|knockedOutByPlayer||number of enemies knocked out by player 	&lt;br /&gt;
|-&lt;br /&gt;
|bodiesFound||number of times enemies have spotted a body &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&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;
: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 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&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;
: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;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;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;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;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;
=== 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;
: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 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;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&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;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;
=== 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;
=== 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 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;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 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 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): 	&lt;br /&gt;
::{|&lt;br /&gt;
|-&lt;br /&gt;
|gamePlayTime||gameplay time in seconds&lt;br /&gt;
|-&lt;br /&gt;
|damageDealt||damage dealt to enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|damageReceived||damage received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|healthReceived||health received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|pocketsPicked||pockets picked by player 	&lt;br /&gt;
|-&lt;br /&gt;
|foundLoot||loot found by player 	&lt;br /&gt;
|-&lt;br /&gt;
|missionLoot||total loot available in mission 	&lt;br /&gt;
|-&lt;br /&gt;
|totalTimePlayerSeen||total time the player was seen by enemies in seconds 	&lt;br /&gt;
|-&lt;br /&gt;
|numberTimesPlayerSeen||number of times player was seen by enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|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.	&lt;br /&gt;
|-&lt;br /&gt;
|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.&lt;br /&gt;
|-&lt;br /&gt;
|sightingScore||sighting score (number of times player was seen * weight) 	&lt;br /&gt;
|-&lt;br /&gt;
|stealthScore||stealth score (sighting score + alerts * weights) 	&lt;br /&gt;
|-&lt;br /&gt;
|killedByPlayer||number of enemies killed by player 	&lt;br /&gt;
|-&lt;br /&gt;
|knockedOutByPlayer||number of enemies knocked out by player 	&lt;br /&gt;
|-&lt;br /&gt;
|bodiesFound||number of times enemies have spotted a body &lt;br /&gt;
|}&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;
=== 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;
=== 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;
: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>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.03&amp;diff=18041</id>
		<title>TDM Script Reference/2.03</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.03&amp;diff=18041"/>
		<updated>2015-01-01T23:35:05Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* scriptEvent float getMissionStatistic(string statisticName); */ formatting&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;
&#039;&#039;&#039;This is a pre-release page for TDM 2.03: Not all script events on this page are available in the current TDM version 2.02 and this page does &#039;&#039;not&#039;&#039; have the manual amendments to the current documentation.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Generated by The Dark Mod 2.03, code revision 6439, last update: 2015-01-01 23:22&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_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;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;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;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;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): 	&lt;br /&gt;
::{|&lt;br /&gt;
|-&lt;br /&gt;
|gamePlayTime||gameplay time in seconds&lt;br /&gt;
|-&lt;br /&gt;
|damageDealt||damage dealt to enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|damageReceived||damage received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|healthReceived||health received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|pocketsPicked||pockets picked by player 	&lt;br /&gt;
|-&lt;br /&gt;
|foundLoot||loot found by player 	&lt;br /&gt;
|-&lt;br /&gt;
|missionLoot||total loot available in mission 	&lt;br /&gt;
|-&lt;br /&gt;
|totalTimePlayerSeen||total time the player was seen by enemies in seconds 	&lt;br /&gt;
|-&lt;br /&gt;
|numberTimesPlayerSeen||number of times player was seen by enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|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.	&lt;br /&gt;
|-&lt;br /&gt;
|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.&lt;br /&gt;
|-&lt;br /&gt;
|sightingScore||sighting score (number of times player was seen * weight) 	&lt;br /&gt;
|-&lt;br /&gt;
|stealthScore||stealth score (sighting score + alerts * weights) 	&lt;br /&gt;
|-&lt;br /&gt;
|killedByPlayer||number of enemies killed by player 	&lt;br /&gt;
|-&lt;br /&gt;
|knockedOutByPlayer||number of enemies knocked out by player 	&lt;br /&gt;
|-&lt;br /&gt;
|bodiesFound||number of times enemies have spotted a body &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&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;
: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 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&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;
: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;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;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;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;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;
=== 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;
: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 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;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&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;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;
=== 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;
=== 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 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;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 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 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): 	&lt;br /&gt;
::{|&lt;br /&gt;
|-&lt;br /&gt;
|gamePlayTime||gameplay time in seconds&lt;br /&gt;
|-&lt;br /&gt;
|damageDealt||damage dealt to enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|damageReceived||damage received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|healthReceived||health received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|pocketsPicked||pockets picked by player 	&lt;br /&gt;
|-&lt;br /&gt;
|foundLoot||loot found by player 	&lt;br /&gt;
|-&lt;br /&gt;
|missionLoot||total loot available in mission 	&lt;br /&gt;
|-&lt;br /&gt;
|totalTimePlayerSeen||total time the player was seen by enemies in seconds 	&lt;br /&gt;
|-&lt;br /&gt;
|numberTimesPlayerSeen||number of times player was seen by enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|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.	&lt;br /&gt;
|-&lt;br /&gt;
|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.&lt;br /&gt;
|-&lt;br /&gt;
|sightingScore||sighting score (number of times player was seen * weight) 	&lt;br /&gt;
|-&lt;br /&gt;
|stealthScore||stealth score (sighting score + alerts * weights) 	&lt;br /&gt;
|-&lt;br /&gt;
|killedByPlayer||number of enemies killed by player 	&lt;br /&gt;
|-&lt;br /&gt;
|knockedOutByPlayer||number of enemies knocked out by player 	&lt;br /&gt;
|-&lt;br /&gt;
|bodiesFound||number of times enemies have spotted a body &lt;br /&gt;
|}&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;
=== 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;
=== 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;
: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>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.03&amp;diff=18040</id>
		<title>TDM Script Reference/2.03</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.03&amp;diff=18040"/>
		<updated>2015-01-01T23:34:29Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* scriptEvent float getMissionStatistic(string statisticName); */  formatting&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;
&#039;&#039;&#039;This is a pre-release page for TDM 2.03: Not all script events on this page are available in the current TDM version 2.02 and this page does &#039;&#039;not&#039;&#039; have the manual amendments to the current documentation.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Generated by The Dark Mod 2.03, code revision 6439, last update: 2015-01-01 23:22&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_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;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;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;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;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): 	&lt;br /&gt;
::{|&lt;br /&gt;
|-&lt;br /&gt;
|gamePlayTime||gameplay time in seconds&lt;br /&gt;
|-&lt;br /&gt;
|damageDealt||damage dealt to enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|damageReceived||damage received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|healthReceived||health received by player 	&lt;br /&gt;
|-&lt;br /&gt;
|pocketsPicked||pockets picked by player 	&lt;br /&gt;
|-&lt;br /&gt;
|foundLoot||loot found by player 	&lt;br /&gt;
|-&lt;br /&gt;
|missionLoot||total loot available in mission 	&lt;br /&gt;
|-&lt;br /&gt;
|totalTimePlayerSeen||total time the player was seen by enemies in seconds 	&lt;br /&gt;
|-&lt;br /&gt;
|numberTimesPlayerSeen||number of times player was seen by enemies 	&lt;br /&gt;
|-&lt;br /&gt;
|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.	&lt;br /&gt;
|-&lt;br /&gt;
|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.&lt;br /&gt;
|-&lt;br /&gt;
|sightingScore||sighting score (number of times player was seen * weight) 	&lt;br /&gt;
|-&lt;br /&gt;
|stealthScore||stealth score (sighting score + alerts * weights) 	&lt;br /&gt;
|-&lt;br /&gt;
|killedByPlayer||number of enemies killed by player 	&lt;br /&gt;
|-&lt;br /&gt;
|knockedOutByPlayer||number of enemies knocked out by player 	&lt;br /&gt;
|-&lt;br /&gt;
|bodiesFound||number of times enemies have spotted a body &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Spawnclasses responding to this event: &#039;&#039;idThread&#039;&#039;&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;
: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 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&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;
: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;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;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;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;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;
=== 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;
: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 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;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&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;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;
=== 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;
=== 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 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;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 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 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;
=== 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;
=== 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;
: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>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Talk:TDM_Script_Reference/2.03&amp;diff=18039</id>
		<title>Talk:TDM Script Reference/2.03</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Talk:TDM_Script_Reference/2.03&amp;diff=18039"/>
		<updated>2015-01-01T23:32:51Z</updated>

		<summary type="html">&lt;p&gt;SteveL: Manual amendments to the generated text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Manual amendments to the generated text ==&lt;br /&gt;
# Added a table to format the parameter description of idThread.GetMissionStatistic(). The information is too complex to format readably in the source code, given that 3 output methods are supported so no markup can be used. [[User:SteveL|SteveL]] ([[User talk:SteveL|talk]]) 23:32, 1 January 2015 (UTC)&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.03&amp;diff=18038</id>
		<title>TDM Script Reference/2.03</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=TDM_Script_Reference/2.03&amp;diff=18038"/>
		<updated>2015-01-01T23:25:21Z</updated>

		<summary type="html">&lt;p&gt;SteveL: updating for release&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;
&#039;&#039;&#039;This is a pre-release page for TDM 2.03: Not all script events on this page are available in the current TDM version 2.02 and this page does &#039;&#039;not&#039;&#039; have the manual amendments to the current documentation.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Generated by The Dark Mod 2.03, code revision 6439, last update: 2015-01-01 23:22&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_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;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;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;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;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 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&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;
: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;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;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;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;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;
=== 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;
: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 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;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&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;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;
=== 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;
=== 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 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;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 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 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;
=== 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;
=== 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;
: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>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Console_Useful_Controls&amp;diff=18026</id>
		<title>Console Useful Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Console_Useful_Controls&amp;diff=18026"/>
		<updated>2014-12-17T00:01:21Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* In-game information */  + condump &amp;quot;unwrap&amp;quot; option&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
This is a list of common console commands and cvars that are of use to Dark Mod mappers and developers for testing etc. It is in order of key words and meaning. &lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
* Where a cvar or command is followed by a 1 (parameter) it can be taken that it is enabled by 1 and disabled by 0 unless otherwise stated. &#039;&#039;&#039;N&#039;&#039;&#039; indicates a range of values.&lt;br /&gt;
* The current value of a cvar can be shown by entering its name without a value.&lt;br /&gt;
* Parameters can be toggled between values by preceding the control with &#039;toggle&#039; and following it with eg, 1 0. Example : toggle r_showtris 3 0&lt;br /&gt;
* Controls can be bound to keys to be used in-game, including the toggle command, eg, &amp;lt;tt&amp;gt;bind &amp;quot;v&amp;quot; &amp;quot;toggle r_showportals 1 0&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Many controls can be included in the file &#039;&#039;&#039;Doomconfig.cfg&#039;&#039;&#039; in the darkmod folder so they are automatically effective.&lt;br /&gt;
* Some controls are disabled on exit from a map; others are permanent until manually changed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-color: grey; border-collapse: collapse; font-size: 92%; margin-left: 1em&amp;quot; cellspacing=0 cellpadding=3&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#ffdead|Command&lt;br /&gt;
!bgcolor=#ffdead|Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|noclip&lt;br /&gt;
|Player flies through everything.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|notarget&lt;br /&gt;
|enemy AI will not attack player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|god&lt;br /&gt;
|Player cannot be harmed.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|killmonsters&lt;br /&gt;
|Removes all AI from a map.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|tdm_show_loot&lt;br /&gt;
|Shows loot items through walls for a short time.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|g_dragentity 1&lt;br /&gt;
|Aim at entity and hold attack control then pull back&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|pm_noclipspeed N&lt;br /&gt;
|Changed the speed of player noclip movement&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|g_fov N&lt;br /&gt;
|N=angle of field of view, eg, &#039;&#039;&#039;&amp;lt;code&amp;gt;g_fov 30&amp;lt;/code&amp;gt;&#039;&#039;&#039; = zoom in to restrict field of view to 30 degrees. Default = 90&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|g_showEntityInfo 1&lt;br /&gt;
|Show info about near entities (as box with classname)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|com_showfps 1&lt;br /&gt;
|Show fps to test performance.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|g_frametime 1&lt;br /&gt;
|Timing info for each frame, see [[Profiling#g_frametime|Profiling]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|r_showPrimitives 1&lt;br /&gt;
|Show info about number of [[drawcalls]] and tris/shadow tris rendered.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|r_showskel 1&lt;br /&gt;
|Shows skeleton in-game with joints names&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|g_showCollisionModels 1&lt;br /&gt;
|Shows collision models. Use &#039;&#039;&#039;g_maxShowDistance N&#039;&#039;&#039; to increase the distance where they are shown to.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|r_showtris N&lt;br /&gt;
|(1) Shows triangles being rendered directly&amp;lt;br&amp;gt;(2) shows overdrawn tri&#039;s&amp;lt;br&amp;gt;(3) shows all tri&#039;s in scene, direct and indirect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|r_showportals 1&lt;br /&gt;
|Shows all portals in scene (red=closed,green=open) If your portals dont show up they are most likely not sealing.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|r_showlightcount 1&lt;br /&gt;
|Using colours shows the number of lights hitting a surface, black = 0, red = 1, blue = 2... etc&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|seta tdm_showsprop 1&lt;br /&gt;
|Shows the volume of sounds heard by AI.  &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|tdm_ai_showbark 1&lt;br /&gt;
|Gives the def name (not the soundshader) of barks used by AI&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|tdm_ai_showalert 1&lt;br /&gt;
|Shows the AI&#039;s current alert total and alert state.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|tdm_ai_showdest 1&lt;br /&gt;
|Shows the AI&#039;s current path destination.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|bind &amp;quot;f1&amp;quot; &amp;quot;_impulse27&amp;quot; &lt;br /&gt;
|Pressing F1 shows the AAS regions.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|timescale 2&lt;br /&gt;
|Double speed, good for testing pathing, 1 = normal speed, 2 = double, 0.5 = half speed&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Spawning entities ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-color: grey; border-collapse: collapse; font-size: 92%; margin-left: 1em&amp;quot; cellspacing=0 cellpadding=3&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#ffdead|Command&lt;br /&gt;
!bgcolor=#ffdead|Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:weapon_blackjack&lt;br /&gt;
|Spawns blackjack in front of the player. Look up if entity gets spawned under the floor.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:weapon_shortsword&lt;br /&gt;
|Spawns a sword.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_broadhead&lt;br /&gt;
|Spawns one arrow.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_broadhead inv_ammo_amount 50&lt;br /&gt;
|Spawns 50 arrows (one entity with 50 ammo). Simillar technique can be used for other ammo types.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_firearrow&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_gasarrow&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_mossarrow&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_noisemaker&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_ropearrow&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_waterarrow&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
With the Doom 3 console you can press tab after typing something to autocomplete, for example &amp;lt;tt&amp;gt;spawn atdm:&amp;lt;tab&amp;gt;&amp;lt;/tt&amp;gt; will cycle through the various spawnables. You can also add additional spawnargs using the following syntax: &amp;lt;tt&amp;gt;spawn classname [key value] [key value] ...&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Diagnostic information ==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-color: grey; border-collapse: collapse; font-size: 92%; margin-left: 1em&amp;quot; cellspacing=0 cellpadding=3&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#ffdead|Command&lt;br /&gt;
!bgcolor=#ffdead|Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|listEntities&lt;br /&gt;
|lists all current entities followed by a count.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|countEntities&lt;br /&gt;
|displays a count of entities by class. &#039;&#039;TDM 2.03+&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|condump [unwrap] &#039;&#039;filename.txt&#039;&#039;&lt;br /&gt;
|Writes the text content of the console to text file &#039;&#039;filename.txt&#039;&#039; (you can use any file name). If optional keyword &#039;&#039;unwrap&#039;&#039; is used, full lines from the console will be stitched together with the following line. Useful when exporting long file paths from the console, that have been broken up by its width limit. &#039;&#039;TDM 2.03+&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
[[Cvars in The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{editing}}&lt;br /&gt;
&lt;br /&gt;
[[Category:CVARS]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Console_Useful_Controls&amp;diff=18021</id>
		<title>Console Useful Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Console_Useful_Controls&amp;diff=18021"/>
		<updated>2014-11-22T09:26:43Z</updated>

		<summary type="html">&lt;p&gt;SteveL: + list and count entity commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
This is a list of common console commands and cvars that are of use to Dark Mod mappers and developers for testing etc. It is in order of key words and meaning. &lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
* Where a cvar or command is followed by a 1 (parameter) it can be taken that it is enabled by 1 and disabled by 0 unless otherwise stated. &#039;&#039;&#039;N&#039;&#039;&#039; indicates a range of values.&lt;br /&gt;
* The current value of a cvar can be shown by entering its name without a value.&lt;br /&gt;
* Parameters can be toggled between values by preceding the control with &#039;toggle&#039; and following it with eg, 1 0. Example : toggle r_showtris 3 0&lt;br /&gt;
* Controls can be bound to keys to be used in-game, including the toggle command, eg, &amp;lt;tt&amp;gt;bind &amp;quot;v&amp;quot; &amp;quot;toggle r_showportals 1 0&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Many controls can be included in the file &#039;&#039;&#039;Doomconfig.cfg&#039;&#039;&#039; in the darkmod folder so they are automatically effective.&lt;br /&gt;
* Some controls are disabled on exit from a map; others are permanent until manually changed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-color: grey; border-collapse: collapse; font-size: 92%; margin-left: 1em&amp;quot; cellspacing=0 cellpadding=3&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#ffdead|Command&lt;br /&gt;
!bgcolor=#ffdead|Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|noclip&lt;br /&gt;
|Player flies through everything.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|notarget&lt;br /&gt;
|enemy AI will not attack player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|god&lt;br /&gt;
|Player cannot be harmed.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|killmonsters&lt;br /&gt;
|Removes all AI from a map.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|tdm_show_loot&lt;br /&gt;
|Shows loot items through walls for a short time.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|g_dragentity 1&lt;br /&gt;
|Aim at entity and hold attack control then pull back&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|pm_noclipspeed N&lt;br /&gt;
|Changed the speed of player noclip movement&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|g_fov N&lt;br /&gt;
|N=angle of field of view, eg, &#039;&#039;&#039;&amp;lt;code&amp;gt;g_fov 30&amp;lt;/code&amp;gt;&#039;&#039;&#039; = zoom in to restrict field of view to 30 degrees. Default = 90&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|g_showEntityInfo 1&lt;br /&gt;
|Show info about near entities (as box with classname)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|com_showfps 1&lt;br /&gt;
|Show fps to test performance.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|g_frametime 1&lt;br /&gt;
|Timing info for each frame, see [[Profiling#g_frametime|Profiling]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|r_showPrimitives 1&lt;br /&gt;
|Show info about number of [[drawcalls]] and tris/shadow tris rendered.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|r_showskel 1&lt;br /&gt;
|Shows skeleton in-game with joints names&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|g_showCollisionModels 1&lt;br /&gt;
|Shows collision models. Use &#039;&#039;&#039;g_maxShowDistance N&#039;&#039;&#039; to increase the distance where they are shown to.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|r_showtris N&lt;br /&gt;
|(1) Shows triangles being rendered directly&amp;lt;br&amp;gt;(2) shows overdrawn tri&#039;s&amp;lt;br&amp;gt;(3) shows all tri&#039;s in scene, direct and indirect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|r_showportals 1&lt;br /&gt;
|Shows all portals in scene (red=closed,green=open) If your portals dont show up they are most likely not sealing.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|r_showlightcount 1&lt;br /&gt;
|Using colours shows the number of lights hitting a surface, black = 0, red = 1, blue = 2... etc&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|seta tdm_showsprop 1&lt;br /&gt;
|Shows the volume of sounds heard by AI.  &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|tdm_ai_showbark 1&lt;br /&gt;
|Gives the def name (not the soundshader) of barks used by AI&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|tdm_ai_showalert 1&lt;br /&gt;
|Shows the AI&#039;s current alert total and alert state.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|tdm_ai_showdest 1&lt;br /&gt;
|Shows the AI&#039;s current path destination.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|bind &amp;quot;f1&amp;quot; &amp;quot;_impulse27&amp;quot; &lt;br /&gt;
|Pressing F1 shows the AAS regions.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|timescale 2&lt;br /&gt;
|Double speed, good for testing pathing, 1 = normal speed, 2 = double, 0.5 = half speed&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Spawning entities ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-color: grey; border-collapse: collapse; font-size: 92%; margin-left: 1em&amp;quot; cellspacing=0 cellpadding=3&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#ffdead|Command&lt;br /&gt;
!bgcolor=#ffdead|Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:weapon_blackjack&lt;br /&gt;
|Spawns blackjack in front of the player. Look up if entity gets spawned under the floor.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:weapon_shortsword&lt;br /&gt;
|Spawns a sword.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_broadhead&lt;br /&gt;
|Spawns one arrow.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_broadhead inv_ammo_amount 50&lt;br /&gt;
|Spawns 50 arrows (one entity with 50 ammo). Simillar technique can be used for other ammo types.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_firearrow&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_gasarrow&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_mossarrow&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_noisemaker&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_ropearrow&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|spawn atdm:ammo_waterarrow&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
With the Doom 3 console you can press tab after typing something to autocomplete, for example &amp;lt;tt&amp;gt;spawn atdm:&amp;lt;tab&amp;gt;&amp;lt;/tt&amp;gt; will cycle through the various spawnables. You can also add additional spawnargs using the following syntax: &amp;lt;tt&amp;gt;spawn classname [key value] [key value] ...&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== In-game information ==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-color: grey; border-collapse: collapse; font-size: 92%; margin-left: 1em&amp;quot; cellspacing=0 cellpadding=3&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#ffdead|Command&lt;br /&gt;
!bgcolor=#ffdead|Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|listEntities&lt;br /&gt;
|lists all current entities followed by a count.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|countEntities&lt;br /&gt;
|displays a count of entities by class. &#039;&#039;TDM 2.03+&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
[[Cvars in The Dark Mod]]&lt;br /&gt;
&lt;br /&gt;
{{editing}}&lt;br /&gt;
&lt;br /&gt;
[[Category:CVARS]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Particles_for_Beginners&amp;diff=18020</id>
		<title>Particles for Beginners</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Particles_for_Beginners&amp;diff=18020"/>
		<updated>2014-11-20T18:53:27Z</updated>

		<summary type="html">&lt;p&gt;SteveL: SteveL moved page Particles for Beginners to Particles: This is the only article on particles and I plan to add more info, so removing &amp;quot;for beginners&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Particles]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Particles&amp;diff=18019</id>
		<title>Particles</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Particles&amp;diff=18019"/>
		<updated>2014-11-20T18:53:27Z</updated>

		<summary type="html">&lt;p&gt;SteveL: SteveL moved page Particles for Beginners to Particles: This is the only article on particles and I plan to add more info, so removing &amp;quot;for beginners&amp;quot;&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;
Particles are VERY flexible - they can function as rain, snow, falling leaves, oscillating leaves and foliage, smoke, mist, flame, trickling sand, trickling water, drips, waterfall, spray, fountain - anything that can be made up of particles, big or small, fast or slow.&lt;br /&gt;
&lt;br /&gt;
There are already many particle effects available to the Dark Mod mapper. This tutorial is just the basics of how to get particle effects, new or old, into your mission...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting Particle effects into your game ==&lt;br /&gt;
&lt;br /&gt;
First, all that is assumed is you know the essentials described in [[Dark Radiant Must Know Basic Intro]]&lt;br /&gt;
&lt;br /&gt;
Like so many things - it&#039;s easy when you know how. Let me describe by example. Say you want to have some smoke coming out of a chimney in your mission...&lt;br /&gt;
&lt;br /&gt;
* Right click and select Create Entity.  Select func_emitter from the list.&lt;br /&gt;
* Add the property : model &lt;br /&gt;
* If you select the model property then you see two buttons at the bottom - Choose Model and Choose Particle.&lt;br /&gt;
* Select the Choose Particles button (see below for information on Choose Model)&lt;br /&gt;
* Select a particles effect from the list. For chimney smoke there are a couple of Doom ones - admin_hall_smk_cone.prt and mc2_hall_smk_cone.prt though they are a little bright (but could be modified in the Particles Editor and resaved as a new particles effect.) There are also a couple of Dark Mod ones - chimney_smoke1.prt and chimney_smoke2.prt at this time. Other DM stuff is under tdm_ but it&#039;s worth exploring the whole list to see what is available.&lt;br /&gt;
* All that remains is to position your func_emitter over a chimney.&lt;br /&gt;
* Note that there is a DR bug that does not allow you to rotate the func_emitter on the X or Y planes; however, there&#039;s some question whether most particles care about where the emitter is rotated.&lt;br /&gt;
&lt;br /&gt;
That will give you a start. Try out some of the others so you see what is available and what is possible and then you can move on to more advanced stuff...&lt;br /&gt;
&lt;br /&gt;
* Note that &#039;Choose Model&#039; does not assign a model or models to be emitted such as a leaf or snowflake (see [[Particle Editor]]) No, if you choose model then it just assigns a visible model shape to the entity in the normal way. I guess one could use a chimney pot in our example but the particle effect would have to be customised to line up so we shall create a separate particle effect and just place it over a chimney. Depends on what you are doing whether you need a model at the position of the particle effect. It does save on entities, but it is less flexible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Switching Particles on and off==&lt;br /&gt;
&lt;br /&gt;
func_emitter can be turned on and off by using target from any targetting entity eg a button or lever.&lt;br /&gt;
&lt;br /&gt;
Particle effects can also be created using the [[Stim/Response]] system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Starting OFF at game start==&lt;br /&gt;
&lt;br /&gt;
To start a particle effect OFF at game start give the func_emitter the property and value...&lt;br /&gt;
&lt;br /&gt;
start_off 1&lt;br /&gt;
&lt;br /&gt;
You can then make it start when you want by using target from any targetting entity eg a button or lever.&lt;br /&gt;
&lt;br /&gt;
Note that the particle effect may be very briefly visible at game start then turn off within a second. This is normal and I don&#039;t think can be avoided. In most cases this doesn&#039;t matter if the effect is not in the player&#039;s view right at game start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating Your Own Particle Effects ==&lt;br /&gt;
&lt;br /&gt;
You can create your own particle effects - or even easier - modify existing ones. To do this read [[Particle Editor]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Particle_Editor&amp;diff=18018</id>
		<title>Particle Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Particle_Editor&amp;diff=18018"/>
		<updated>2014-11-20T18:50:41Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* Editing the particles themselves (size etc): */ Adding new image for DR&amp;#039;s particle editor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beginners and those who just want to use the already existing particle effects might like to first read [[Particles for Beginners]].&lt;br /&gt;
&lt;br /&gt;
===Editing the particles themselves (size etc):===&lt;br /&gt;
The particle editor in DR is under menu option Entity &amp;gt; Particle Editor&lt;br /&gt;
&lt;br /&gt;
[[Image:Ptcl editor.png|728px]]&lt;br /&gt;
&lt;br /&gt;
:Note: this article refers to the older Doom3 particle editor, and the editor layout has been updated since. The options do the same things so the information is still valid.&lt;br /&gt;
&lt;br /&gt;
Now to explain a few things. At the top you have the particle name next to &amp;quot;particle&amp;quot;, next to it you have new, save, and save as. Now, for easiest editing of particles, load up an existing particle, such as the leaf one in the example, modify it and then use &amp;quot;save as&amp;quot;. I will explain a bit more further down.&lt;br /&gt;
&lt;br /&gt;
Firstly, and most importantly, we have material. This is the path to your material; not the image file but the material for your custom leaf. So for example you can see the example above has textures/particles/tdm_leaves_01. If you know the name of your material (for example textures/particles/green_leaves) then you can type that in there and press enter and it will find it by itself showing the changes in the render view.&lt;br /&gt;
&lt;br /&gt;
Now that you can see your custom material we can continue on to the size of the leaves etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bunching&#039;&#039;&#039; this determines how much the particles tend to bunch together, 0 meaning they want to spread out as evenly as possible, while 1 means that they bunch together a bit. The effect is not actually that noticeable mind.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Count&#039;&#039;&#039; controls how many particles there are, so basically the example shown has 32 particles in total. Obviously the more you have, the more dense the tree. This is a slider so slide it around as necessary. Alternatively you can input a value into the box and then press apply down the bottom right.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cycles&#039;&#039;&#039; this is how long the effect will last in seconds, If you set &amp;quot;cycles 0.000&amp;quot;, it is endless, otherwise repeated so many times. In my case I am creating some ceiling dust that is triggered so am going with 1 or 2 cycles. &lt;br /&gt;
&lt;br /&gt;
To see the changes you are making, center your camera in the render view on the tree and press {{key|F7}} and {{key|F6}}. {{key|F7}} rebuilds everything and {{key|F6}} enables animations. Leave it in render view and move the particle editor to the side so you can see the render view (to watch the changes you are making as you make them).&lt;br /&gt;
&lt;br /&gt;
You will also notice the &amp;quot;time&amp;quot; input beneath it. This is the lifespan of a particle in seconds. If I may suggest, don&#039;t mess with this, as putting it too low will make the particle lifespan visible, as in you&#039;ll notice them appearing/disappearing etc. If you put it to something ridiculous, like 99999, then it will load for extremely long, and sometimes not at all. It&#039;s best to leave it at 300 (5 minute), as you won&#039;t notice the tree leaves changing around every 5 minutes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Distribution&#039;&#039;&#039; This is where things get a little more annoying. You&#039;ll notice 3 check dots - rect, cylinder, and sphere. Realistically you&#039;d want to use sphere, but for some reason the algorithm for distribution in the sphere (at least for the leaves) does not work correctly and you get several particles occupying the same spot, which results in z-fighting and generally looks really bad. Now, the rectangle distribution works perfect; particles are properly distributed and there is no z-fighting, but it&#039;s a rectangular shape, but can look ok if not too many particles are used. Another alternative is the cylinder distribution. Cylinder distribution works well but annoyingly enough the particles get distributed only on the walls of the cylinder, which means a hole in the middle, so you need to adjust the particle size and cylinder size so that there is no hole in the middle.&lt;br /&gt;
&lt;br /&gt;
The values to the right are the size values in doom units, so change that to roughly be the size you want the leaves to cover. If you selected cylindrical distribution, don&#039;t bother adding a ring value as it just makes it larger in diameter, so leave it at 0.&lt;br /&gt;
&lt;br /&gt;
The offset is the offset from the center of the particle entity. Try keeping the leaves centered on the particle emitter, as Doom 3&#039;s light rendering system calculates whether or not to light the particles by checking whether the particle emitter is inside the boundary of the light; if yes then applies the lighting to it, but if not then it leaves the particle unaffected, ID did this for performance reasons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random Distribution&#039;&#039;&#039; is just what it says, so you may want to leave that ticked.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speed&#039;&#039;&#039; leave that at 0 for the leaves as that is the speed at which the particles move away from the center of the emitter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Size&#039;&#039;&#039; is self-explanatory; it&#039;s the size of each particle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rotation&#039;&#039;&#039; is rotation speed of the particle and aspect stretches the particle from the center of the emitter. So leave these 2 alone for leaves.&lt;br /&gt;
&lt;br /&gt;
Notice that each of these has 2 sliders. This is for time based particles, so one slider is &amp;quot;from&amp;quot; and the second is &amp;quot;to&amp;quot;. This is governed over the lifespan, so for example a particle that has sizes 0 to 50 and a lifespan of 10 would mean that it would gradually increase it&#039;s size to 50 from 0 over a span of 10 seconds. So for leaves this means that you leave both sliders at the same value. The other values below the speed, size, rotation, and aspect sliders do various things and you can mess around with them if you wish but they are not useful for leaves.&lt;br /&gt;
&lt;br /&gt;
Now that you know what each value does, just mess around with them until you reach something that looks good.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Saving&#039;&#039;&#039; &lt;br /&gt;
- Press save as (presuming you modified one of the existing leaf particles) and it will come up with a dialog asking for the particle name. &lt;br /&gt;
- Enter the name you wish (for example green_leaves_01) and press {{ok}}. &lt;br /&gt;
- Now it comes up with a path dialog. Browse to the Doom3/base/particles folder (if there is no particles folder create one) and name it as what you want (this is the file name, not the particle name), for example something like &amp;quot;mymap_particles&amp;quot; and then press ok. [[Make sure you save it into doom3/base/particles as saving it into doom3/darkmod/particles WILL NOT WORK]]. &lt;br /&gt;
&lt;br /&gt;
[EDIT - Someone check me but I tested this and it does seem you can save it direct in the darkmod/particles folder but if you save it in base/particles then it goes in darkmod/particles anyway. Also note that if you select an existing file it will &#039;&#039;append&#039;&#039; it - it does not overwrite but adds new particles definitions to existing files if selected. - Fidcal] Once you save it there you will find the particle file (in this case &amp;quot;mymap_particles.prt&amp;quot;) in the doom3/darkmod/particles folder; strange, yes, but it saves it there due to the way Doom 3 mod-loading works.&lt;br /&gt;
&lt;br /&gt;
Now in DarkRadiant you should be able to find your new leaf particle when browsing through the particle list.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tutorial by Dram&#039;&#039; - updated by Bikerdude&lt;br /&gt;
&lt;br /&gt;
{{editing}}&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=File:Ptcl_editor.png&amp;diff=18017</id>
		<title>File:Ptcl editor.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=File:Ptcl_editor.png&amp;diff=18017"/>
		<updated>2014-11-20T18:44:43Z</updated>

		<summary type="html">&lt;p&gt;SteveL: SteveL uploaded a new version of &amp;amp;quot;File:Ptcl editor.png&amp;amp;quot;: Corrected first tab which wasn&amp;#039;t showing on original&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Particle editor in DR 2.1&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=File:Ptcl_editor.png&amp;diff=18016</id>
		<title>File:Ptcl editor.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=File:Ptcl_editor.png&amp;diff=18016"/>
		<updated>2014-11-20T18:39:56Z</updated>

		<summary type="html">&lt;p&gt;SteveL: Particle editor in DR 2.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Particle editor in DR 2.1&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=LOD&amp;diff=17900</id>
		<title>LOD</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=LOD&amp;diff=17900"/>
		<updated>2014-09-22T17:36:34Z</updated>

		<summary type="html">&lt;p&gt;SteveL: /* History */ for version 2.03&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;Level of Detail&#039;&#039;&#039; (LOD) system can be used to bring more details to the screen while still speeding up rendering. See [http://en.wikipedia.org/wiki/Level_of_detail Wikipedia] for an introduction.&lt;br /&gt;
&lt;br /&gt;
== The new LOD System - Overview ==&lt;br /&gt;
&lt;br /&gt;
[[Image:TheDarkMod LOD System Overview.png]]&lt;br /&gt;
&lt;br /&gt;
SVG version of the above graphic [http://bloodgate.com/mirrors/tdm/TheDarkMod_LOD_System.svg here].&lt;br /&gt;
&lt;br /&gt;
{{infobox|Note: Fade in and fade out &#039;&#039;&#039;only&#039;&#039;&#039; work via &#039;&#039;[[alpha-fading]]&#039;&#039;, so on materials that use an alpha blend and don&#039;t respond to lighting.|bg=#f09090|fg=yellow}}&lt;br /&gt;
&lt;br /&gt;
== How to use LOD in your TDM map ==&lt;br /&gt;
&lt;br /&gt;
To enable the LOD system, use either one of the pre-made LOD-enabled entities in your map (most of these are defined in &#039;&#039;&#039;def/tdm_lod.def&#039;&#039;&#039;) or set &#039;&#039;&#039;dist_check_period&#039;&#039;&#039; to a number greater than 0.&lt;br /&gt;
&lt;br /&gt;
Note: The &#039;&#039;&#039;dist_check_period&#039;&#039;&#039; spawnarg needs to be combined with one of &amp;quot;hide_distance&amp;quot; or &amp;quot;lod_X_distance&amp;quot; and &amp;quot;model_lod_X&amp;quot;, &amp;quot;skin_lod_X&amp;quot; or &amp;quot;noshadows_lod_X&amp;quot; to have any effect!&lt;br /&gt;
&lt;br /&gt;
See also &#039;&#039;&#039;[[LOD Bias]]&#039;&#039;&#039; for how to hide individual entities depending on the menu setting.&lt;br /&gt;
 &lt;br /&gt;
== GUI Setting ==&lt;br /&gt;
&lt;br /&gt;
There is a new GUI setting, called [[Object detail| &#039;&#039;&#039;Object detail&#039;&#039;&#039; ]]. You&#039;ll find it under &amp;lt;tt&amp;gt;&#039;&#039;&#039;Settings - Video - Advanced&#039;&#039;&#039;&amp;lt;/tt&amp;gt;. It consist of multiple levels, where &#039;&#039;&#039;Normal&#039;&#039;&#039; is the default. Lower settings cause the LOD distances to shrink, meaning entities switch sooner to the low-quality version and vanish sooner. Higher settings are the opposite, increasing the quality, but may be decreasing the FPS.&lt;br /&gt;
&lt;br /&gt;
Mappers should design and test their map with the &#039;&#039;&#039;Normal&#039;&#039;&#039; setting on a typical modern PC (e.g. not too old and not high-end gaming rig either), and preferable also test on some slower and faster machines.&lt;br /&gt;
&lt;br /&gt;
== Entities ==&lt;br /&gt;
&lt;br /&gt;
Supported entity types:&lt;br /&gt;
* Models that don&#039;t move (i.e. func static models)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;From TDM version 2.03:&#039;&#039;&lt;br /&gt;
* Animated models like waving flags and laundry (i.e. anything with spawnclass idAnimated)&lt;br /&gt;
* AI&lt;br /&gt;
* Animated attachments to AI&lt;br /&gt;
&lt;br /&gt;
=== Example entities ===&lt;br /&gt;
&lt;br /&gt;
* atdm:nature_pine_skeleton (just the tree trunk)&lt;br /&gt;
* atdm:nature_pine (Pine + particle leaves slowly swaying)&lt;br /&gt;
* atdm:nature_tree_stump&lt;br /&gt;
&lt;br /&gt;
More can be found in the &amp;quot;Nature&amp;quot; folder with the DarkRadiant &amp;quot;Create entity&amp;quot; command.&lt;br /&gt;
&lt;br /&gt;
== Spawnargs ==&lt;br /&gt;
&lt;br /&gt;
=== min_lod_bias/max_lod_bias ===&lt;br /&gt;
&lt;br /&gt;
See [[LOD Bias]] for how to hide individual entities depending on the menu setting.&lt;br /&gt;
&lt;br /&gt;
=== hide_distance ===&lt;br /&gt;
&lt;br /&gt;
In D3 units. When set to a value &amp;gt; 0, then the entity will be hidden if it is further away than this distance from the player.&lt;br /&gt;
&lt;br /&gt;
Note: This might cause &amp;quot;popping&amp;quot;, e.g. the entity will suddenly vanish or appear. See &#039;&#039;&#039;lod_fadeout_range&#039;&#039;&#039; for how to avoid this.&lt;br /&gt;
&lt;br /&gt;
The actual value used from this spawnarg is modified by the menu setting &amp;quot;Object detail&amp;quot;, so make to sure to test with this setting at &amp;quot;Normal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== lod_normal_distance ===&lt;br /&gt;
&lt;br /&gt;
From TDM v1.05 onwards: This spawnarg defines a &#039;&#039;&#039;minimum&#039;&#039;&#039; distance from the player where the entity will ignore settings lower than &#039;&#039;&#039;Normal&#039;&#039;&#039;. This can be used to enforce a certain minimum distance so that players who set the detail level to &#039;&#039;&#039;Low&#039;&#039;&#039; or &#039;&#039;&#039;Lowest&#039;&#039;&#039; still do not experience entities popping in and out when being very close.&lt;br /&gt;
&lt;br /&gt;
If this spawnarg is not set, it defaults to &#039;&#039;&#039;500 units&#039;&#039;&#039;. Avoid setting this spawnarg too high or even equal or higher than &amp;quot;hide_distance&amp;quot;. This would only result in the menu setting &amp;quot;Object detail&amp;quot; being fixed at &amp;quot;Normal&amp;quot;, e.g. players could never lower the quality settings to achive better frame rates. Do so only in rare cases where important entities would otherwise vanish in front of the eyes of the player.&lt;br /&gt;
&lt;br /&gt;
=== lod_hide_probability ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;lod_hide_distance&#039;&#039;&#039; is true, this spawnarg controls what the probabiliy of this entity vanishing is. Values range from 0.0 (will never vanish) to 1.0 (will certainly vanish). Whether a particular entity vanishes is computed at map start, so an entity either stays or vanishes, but does not change during the map play time.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;lod_hide_probability&amp;quot; &amp;quot;0.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you place X identical entities, about 20% of them will vanish at the &#039;&#039;&#039;hide_distance&#039;&#039;&#039; and 80% will stay.&lt;br /&gt;
&lt;br /&gt;
This can be used to &amp;quot;thin out&amp;quot; forests at a distance without having them vanish completely.&lt;br /&gt;
&lt;br /&gt;
=== lod_X_distance ===&lt;br /&gt;
&lt;br /&gt;
In D3 units. Sets the distance from where on LOD X is used. Will be valid until the next defined lod_(X+1)_distance, or infinty if there is no further LOD distance set.&lt;br /&gt;
&lt;br /&gt;
To change the appearance of the entity inside this LOD, use the following spawnargs with a matching X:&lt;br /&gt;
&lt;br /&gt;
==== model_lod_X ====&lt;br /&gt;
&lt;br /&gt;
Set the model the entity displays inside this LOD. If not set, uses the model from LOD 0 e.g. the one from the &amp;quot;model&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;From TDM version 2.03:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A special value &amp;quot;be_still&amp;quot; is supported for animated models. Setting model_lod_X to &amp;quot;be_still&amp;quot; for a LOD level means: stop the animation but don&#039;t switch model.&lt;br /&gt;
&lt;br /&gt;
==== skin_lod_X ====&lt;br /&gt;
&lt;br /&gt;
Set the skin the entity displays uses this LOD. If not set, uses the skin from LOD 0 e.g. the one from the &amp;quot;skin&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
==== noshadows_lod_X ====&lt;br /&gt;
&lt;br /&gt;
Boolean. If set, the entity casts no shadows while in this LOD zone.&lt;br /&gt;
&lt;br /&gt;
==== offset_lod_X ====&lt;br /&gt;
Vector. Origin offset that can be applied to the replacement model if it doesn&#039;t naturally line up with the original.&lt;br /&gt;
&lt;br /&gt;
==== lod_fadein_range ====&lt;br /&gt;
&lt;br /&gt;
{{infobox|Note: Fade in and fade out only work via &#039;&#039;[[alpha-fading]]&#039;&#039;, so on materials that use an alpha blend and don&#039;t respond to lighting.|bg=#f09090|fg=yellow}}&lt;br /&gt;
&lt;br /&gt;
In D3 units. If set to non-zero, then the object will start hidden and begin to fade in at &#039;&#039;&#039;lod_1_distance&#039;&#039;&#039; - &#039;&#039;&#039;lod_fadein_range&#039;&#039;&#039; and be completely (100% opacity) visible at &#039;&#039;&#039;lod_1_distance&#039;&#039;&#039;. This can be used to create entities that only appear in some distance but not close up.&lt;br /&gt;
&lt;br /&gt;
==== lod_fadeout_range ====&lt;br /&gt;
&lt;br /&gt;
{{infobox|Note: Fade in and fade out only work via &#039;&#039;[[alpha-fading]]&#039;&#039;, so on materials that use an alpha blend and don&#039;t respond to lighting.|bg=#f09090|fg=yellow}}&lt;br /&gt;
&lt;br /&gt;
In D3 units. If set to non-zero, then the object will not vanish suddenly at &#039;&#039;&#039;hide_distance&#039;&#039;&#039;, but start to fade out and be completely invisible at &#039;&#039;&#039;hide_distance&#039;&#039;&#039; + &#039;&#039;&#039;lod_fadeoutrange&#039;&#039;&#039;. Defaults to 0.&lt;br /&gt;
&lt;br /&gt;
=== no_lod ===&lt;br /&gt;
:&#039;&#039;This spawnarg will be available in TDM version 2.03&#039;&#039;&lt;br /&gt;
Set &amp;quot;no_lod&amp;quot; &amp;quot;1&amp;quot; to disable LOD completely on an entity. Useful if you want to make use of a LOD entity but use a custom setup.&lt;br /&gt;
&lt;br /&gt;
== Increasing the LOD steps ==&lt;br /&gt;
&lt;br /&gt;
The number of possible LOD steps is fixed in code and defined in &#039;&#039;&#039;game/misc.h&#039;&#039;&#039; as a constant. The current&lt;br /&gt;
value is 7, meaning that there are 5 different rendering possibilities beside level 0 (the original) and level 6 (the object is hidden). That should be enough even for huge outdoor maps.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
Profiling showed that 3000 thinking entities consume about 7% CPU time. So if you use only a few hundred or thousand LOD entities, the performance of the extra thinking time is very small compared to the benefits of having only a few entities actually visible around the player. &lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
At it&#039;s simplest, model, dist_check_period, hide_distance, lod_1_distance and model_lod_1 are used:&lt;br /&gt;
[[File:Lod_test2.png|thumb|right|click for full size]]&lt;br /&gt;
* &#039;&#039;&#039;model &#039;&#039;RegularModelName&#039;&#039;&#039;&#039;&#039; -- point this to the fully detailed model&lt;br /&gt;
* &#039;&#039;&#039;dist_check_period 0.5&#039;&#039;&#039; -- time in seconds between distance checks&lt;br /&gt;
* &#039;&#039;&#039;hide_distance 400&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;lod_1_distance 100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;model_lod_1 &#039;&#039;LessDetailedModelName&#039;&#039;&#039;&#039;&#039; -- lower detail model&lt;br /&gt;
* &#039;&#039;&#039;lod_2_distance 200&#039;&#039;&#039; -- (optional further step)&lt;br /&gt;
* &#039;&#039;&#039;model_lod_2 &#039;&#039;LowerDetailModelName&#039;&#039;&#039;&#039;&#039; -- even lower detail model (optional further step)&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
Doom3 did not have any LOD system at all. The first steps of such a system were added in TDM by supporting a &#039;&#039;&#039;hide_distance&#039;&#039;&#039; spawnarg, which made entities hide or portals close once they were further away than this distance. The LOD system in TDM was totally rewritten for v1.04. &lt;br /&gt;
&lt;br /&gt;
Support for animated models and AI was added in TDM version 2.03. More details are available on the [http://bugs.thedarkmod.com/view.php?id=3770 bugtracker].&lt;br /&gt;
&lt;br /&gt;
=== Comparison ===&lt;br /&gt;
&lt;br /&gt;
Here we compare the new (v1.04) to the old system (until v1.02):&lt;br /&gt;
&lt;br /&gt;
* The old system had only two levels: 0 (original model), and 1 (entity is hidden)&lt;br /&gt;
* Due to a typo, all thinking for the LOD entities happened in the first half of the interval. That means if you set the intervall to 1 s, all entities did their distance check between 0 and 0.5 seconds, and none between 0.5 and 1 second and so on. This lead to fluctuating frame rates.&lt;br /&gt;
&lt;br /&gt;
The new system:&lt;br /&gt;
&lt;br /&gt;
* Supports up to 7 levels (last is &#039;&#039;hide&#039;&#039;), more can easily be done with a recompile&lt;br /&gt;
* You can use less levels if you want&lt;br /&gt;
* Thinking is distributed over the entire interval&lt;br /&gt;
* makes scenes with thousands of entities possible&lt;br /&gt;
* Can not only switch the model, but also change the skin (f.i. use less expensive glass shaders) and turn shadows off&lt;br /&gt;
* Can hide only a fraction of all entities of the same class (&#039;&#039;thinning out&#039;&#039;)&lt;br /&gt;
* Allows the player (via the settings menu) to control the quality vs. speed&lt;br /&gt;
&lt;br /&gt;
Note: The new system still works only for &#039;&#039;&#039;func_static&#039;&#039;&#039; (e.g. not for lights, AI etc)!&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[LOD Bias]]&lt;br /&gt;
* [[Creating LOD Models]] with only Gimp/Photoshop and DarkRadiant&lt;br /&gt;
* [[List of LOD Models]]&lt;br /&gt;
* [[SEED]] - Random entity placement and distant culling&lt;br /&gt;
&lt;br /&gt;
{{editing}} {{scripting}}&lt;/div&gt;</summary>
		<author><name>SteveL</name></author>
	</entry>
</feed>