<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.hard-light.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=M%21m</id>
	<title>FreeSpace Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hard-light.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=M%21m"/>
	<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php/Special:Contributions/M!m"/>
	<updated>2026-11-15T10:42:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=63311</id>
		<title>Dynamic SEXPs</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=63311"/>
		<updated>2021-04-11T12:23:19Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add missing types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tables}}&lt;br /&gt;
Since version 3.8.2 FSO supports adding custom SEXPs to a mod which have a user defined effect. Currently there is only one way to add such a SEXP but more may be added in the future.&lt;br /&gt;
&lt;br /&gt;
Dynamic SEXPs are only added in modular table files which end with &amp;lt;tt&amp;gt;-sexp.tbm&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Table syntax=&lt;br /&gt;
This section will describe the syntax and effects of the individual options.&lt;br /&gt;
&lt;br /&gt;
==#Lua SEXPs==&lt;br /&gt;
&lt;br /&gt;
Specifies a list of dynamic SEXPs implemented using a Lua function (see [[#Lua interface|Lua interface]] for how to use the implementation function). This section must end with &amp;lt;tt&amp;gt;#End&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Operator:===&lt;br /&gt;
*Adds a new SEXP operator with the specified name. The name may not contain the following characters: &amp;lt;tt&amp;gt;()\&amp;quot;&#039;&amp;lt;/tt&amp;gt;. Furthermore, any whitespace (tab characters or spaces) are also not permitted. This is the name under which this operator will appear in the SEXP code. While the name is mostly up to you it would be a good idea to keep it in line with how the other SEXPs are named. To avoid conflicts with other custom SEXPs you should also use a unique prefix. For example, if you want to  have some SEXP operators that control a cloaking script then you could use &amp;lt;tt&amp;gt;cloak-&amp;lt;/tt&amp;gt; as the common prefix for all the operators that are related to this system. A SEXP that disables the cloak system could be named something like &amp;lt;tt&amp;gt;cloak-disable&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This name must be unique among all operators that are known to the SEXP system. That includes built-in SEXPs and operators added before. If there is a conflict then the new operator definition will be ignored. Built-in operators always take precedence.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Category:===&lt;br /&gt;
*Specifies in which category this SEXP will appear in the context menu in the FRED event editor. Only one of the existing categories may be used. These are all the currently defined categories:&lt;br /&gt;
**Objectives&lt;br /&gt;
**Time&lt;br /&gt;
**Logical&lt;br /&gt;
**Arithmetic&lt;br /&gt;
**Status&lt;br /&gt;
**Change&lt;br /&gt;
**Conditionals&lt;br /&gt;
**Ai goals&lt;br /&gt;
**Event/Goals&lt;br /&gt;
**Training&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Subcategory:===&lt;br /&gt;
*Specifies into which subcategory this SEXP should be put. This is the second level in the context menu of the FRED event editor. New subcategories can be added by specifying a new name here but all subcategory names must be globally unique (you can&#039;t have the same subcategory name under two different categories).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Minimum Arguments:===&lt;br /&gt;
*Specifies ht minimum number of parameters this SEXP needs to work. If less parameters are specified then the SEXP parser will treat this as an error.&lt;br /&gt;
*Must be at least 0.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Maximum Arguments:===&lt;br /&gt;
*Specifies the maximum number of parameters this SEXP can process.&lt;br /&gt;
*Optional. If this option is not present then the SEXP can process an unlimited number of parameters.&lt;br /&gt;
*Must be at least 0 and greater or equal to $Minimum Arguments.&lt;br /&gt;
&lt;br /&gt;
===$Return Type:===&lt;br /&gt;
*Specifies what data type this SEXP will return when invoked. Can be one of the following:&lt;br /&gt;
**; number: The SEXP will return an integer. The scripting function needs to return a number value.&lt;br /&gt;
**; boolean: The SEXP will return a boolean. The scripting function must return a boolean value.&lt;br /&gt;
**; nothing: The SEXP will return nothing. The scripting function may not return anything.&lt;br /&gt;
*Optional. Defaults to &#039;&#039;nothing&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Description:===&lt;br /&gt;
*Sets the help text displayed in the FRED help box. This should be the generic description of what this SEXP does but should not include the documentation for the individual parameters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Repeat===&lt;br /&gt;
*This option must be combined with the parameter documentation below to specify a repeating pattern in a SEXP with a variable number of parameters. See the example below for how exactly this will work. All parameters specified after this option will be grouped together. The script will receive these groups of parameters as a single entity (see [[#Lua interface|Lua interface]]) to make it easier to use the values without having to separate them again in the script.&lt;br /&gt;
&lt;br /&gt;
===$Parameter:===&lt;br /&gt;
*Adds documentation for the parameters and specifies what type they need to have. This option may appear multiple times and should match the number of parameters specified by &amp;lt;tt&amp;gt;$Minimum Arguments&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$Maximum Arguments&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This option has no value.&lt;br /&gt;
&lt;br /&gt;
====+Description:====&lt;br /&gt;
*Sets the description of this parameter. This will be used for the documentation text.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Type:====&lt;br /&gt;
*Sets the type this parameter requires. The currently supported types are:&lt;br /&gt;
**; number: This parameter is a number. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; boolean: This parameter is a boolean. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; ship: This parameter is the name of a ship. The script will receive this value as a &amp;lt;tt&amp;gt;ship&amp;lt;/tt&amp;gt; handle. If the name provided by the mission is invalid (if the ship has not arrived yet or if it is not present anymore) then the script will receive an invalid &amp;lt;tt&amp;gt;ship&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; string: This parameter is a generic string with no special format. In Unicode mode this string may contain Unicode characters.&lt;br /&gt;
**; team: This parameter is a handle to a specific team. The script will receive this value as a &amp;lt;tt&amp;gt;team&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; waypointpath: This parameter is a reference to a specific waypoint path. The script will receive this as a &amp;lt;tt&amp;gt;waypointlist&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; variable: This is a reference to a SEXP variable. This is a reference to the actual variable and not its contents. The script will receive this as a &amp;lt;tt&amp;gt;sexpvariable&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; message: This is a reference to a mission message. The script will receive it as a &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; wing: This is a reference to a wing in the mission. The script will receive it as a &amp;lt;tt&amp;gt;wing&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; shipclass: This is a reference to a table ship class. The script will receive it as a &amp;lt;tt&amp;gt;shipclass&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; weaponclass: This is a reference to a table weapon class. The script will receive it as a &amp;lt;tt&amp;gt;weaponclass&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; soundentry: This is a reference to a table defined game sound. The script will receive it as a &amp;lt;tt&amp;gt;soundentry&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Lua SEXPs&lt;br /&gt;
&lt;br /&gt;
$Operator: dynamic-sexp&lt;br /&gt;
$Category: Change&lt;br /&gt;
$Subcategory: Scripted&lt;br /&gt;
$Minimum Arguments: 3&lt;br /&gt;
; No maximum arguments means that it accepts a variable number of arguments&lt;br /&gt;
$Return Type: Nothing&lt;br /&gt;
$Description: This is a dynamic parameter test SEXP&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Ship parameter&lt;br /&gt;
	+Type: Ship&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable name parameter&lt;br /&gt;
	+Type: variable&lt;br /&gt;
$Repeat ; This starts the part of the parameter list where the parameter pattern repeats&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable string parameter&lt;br /&gt;
	+Type: string&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lua interface=&lt;br /&gt;
So far, all the SEXP table has done is specify that a new Lua SEXP exists but there is no actual action which will be executed when the SEXP is called. For the Lua language this can be done using the &amp;lt;tt&amp;gt;mn.LuaSEXPs&amp;lt;/tt&amp;gt; variable. This is a variable which can be indexed using the SEXP name. The returned value is of type &amp;lt;tt&amp;gt;LuaSEXP&amp;lt;/tt&amp;gt; which only has a single field, &amp;lt;tt&amp;gt;Action&amp;lt;/tt&amp;gt;. This is the function that will be executed once the SEXP is called in a mission. You can use it to retrieve the function of a LuaSEXP but the more common use case is that it is written in the &amp;lt;tt&amp;gt;$On Game Init&amp;lt;/tt&amp;gt; hook to set the action function.&lt;br /&gt;
&lt;br /&gt;
The action function will receive the values as normal parameters. If the SEXP will receive a variable number of parameters then you can use &amp;lt;tt&amp;gt;...&amp;lt;/tt&amp;gt; as the last parameter to also capture these values. If a parameter is optional and not specified by the SEXP invocation then it will be &amp;lt;tt&amp;gt;nil&amp;lt;/tt&amp;gt; in the script. Parameters in the repeat pattern of the parameter list will be grouped into a array of arrays where each array instance contains the individual values. See below for an example of how this can be handled in the Lua code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Conditional Hooks&lt;br /&gt;
&lt;br /&gt;
$Application: FS2_Open&lt;br /&gt;
$On Game Init: [&lt;br /&gt;
mn.LuaSEXPs[&amp;quot;dynamic-sexp&amp;quot;].Action = function (arg1, arg2, arg3, ...)&lt;br /&gt;
	ba.print(tostring(arg1)&lt;br /&gt;
	ba.print(arg2.Name)&lt;br /&gt;
	ba.print(tostring(arg3.Value))&lt;br /&gt;
&lt;br /&gt;
	for val in {...} do&lt;br /&gt;
		ba.print(val[1])&lt;br /&gt;
		ba.print(tostring(val[2]))&lt;br /&gt;
	done&lt;br /&gt;
end&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Action_System&amp;diff=63212</id>
		<title>Action System</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Action_System&amp;diff=63212"/>
		<updated>2021-02-28T15:16:03Z</updated>

		<summary type="html">&lt;p&gt;M!m: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The dynamic action system is an SCP addition that provides a way for mods to create custom sequences of events that should happen when a certain event occurs. This system is designed to be highly flexible to allow mods complete control over what effects to trigger and where to place them.&lt;br /&gt;
&lt;br /&gt;
This page will describe the basic ideas behind the system and describe how to use it.&lt;br /&gt;
&lt;br /&gt;
==Basic functionality==&lt;br /&gt;
The basic functionality of the action system is to take a list of &amp;quot;Actions&amp;quot; and execute them over the span of an arbitrary amount of game-frames. This allows a mod to specify quite complex operations without hard-coding that into the engine. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$On Beam Warmdown: ; This defines a &amp;quot;program&amp;quot; to run once a beam weapon has finished firing&lt;br /&gt;
	; Timing for effects is important so this allows to delay the execution of the remaining actions by 5 (in-mission) seconds&lt;br /&gt;
	+Wait: 5&lt;br /&gt;
&lt;br /&gt;
	; Some actions simply update some internal data which can be used by later actions&lt;br /&gt;
	; This data will be kept until it is set again and can be used by an unlimited number of actions&lt;br /&gt;
	+Set Position: (8.0 0.0 0.0)&lt;br /&gt;
	+Set Direction: (1.0 -1.0 1.0)&lt;br /&gt;
&lt;br /&gt;
	; All positions and directions are local to the attached subobject (turret02 in this case) and will respect animations&lt;br /&gt;
&lt;br /&gt;
	; These actions actually cause some external &amp;quot;thing&amp;quot; by using the previously set &amp;quot;local&amp;quot; data&lt;br /&gt;
	+Start Particle Effect: &amp;quot;Beam Warmdown Effect&amp;quot;&lt;br /&gt;
	+Play 3D Sound: &amp;quot;18&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	+Set Position: locals.position + (3.0 0.0 0.0)&lt;br /&gt;
	+Start Particle Effect: &amp;quot;Beam Warmdown Effect&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	+Wait: 3.0&lt;br /&gt;
&lt;br /&gt;
	; Programs are attached to the object that triggered them so if the object dies before this can run then the sound will not be played&lt;br /&gt;
	; The position is still (8, 0, 0) from the previous setting so no need to set it here again&lt;br /&gt;
	+Play 3D Sound: &amp;quot;19&amp;quot; ; Actions can be used multiple times with different parameters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sequence of actions will be called a &amp;quot;program&amp;quot; in this document. When the corresponding event is triggered, the program is started which creates a &amp;quot;program instance&amp;quot;. Every instance of a program is completely separate from each other and will also execute concurrently. This means that a &amp;quot;+Wait:&amp;quot; instruction in one program will not have any effect on another program wanting to trigger a sound effect or something similar.&lt;br /&gt;
&lt;br /&gt;
When a program is started it will have some parameters specified at that point. These parameters are used for attaching an action to a specific object and subobject depending on where it has been triggered. A program attached to an object will only execute for as long as that object is present in the mission and will be stopped once the object is gone. If a program instance is attached to a subobject then all operations will be local to that subobject. Offsets and directions specified in actions will be relative to the selected subobject. However, a program instance will not be stopped if a subobject is destroyed.&lt;br /&gt;
&lt;br /&gt;
In tables, an action option (&amp;quot;$On Beam Warmdown:&amp;quot; in the above example) can also be used several times in sequence. This will collect all those programs and when the event is triggered, every program is started at the same time with the same parameters. This allows to separate different effects into their own programs in order to make management of these actions a bit easier.&lt;br /&gt;
&lt;br /&gt;
The points where these action programs can be used are documented in the relevant tables.&lt;br /&gt;
&lt;br /&gt;
==Action expressions==&lt;br /&gt;
The value used for actions (&amp;quot;locals.position + (3.0 0.0 0.0)&amp;quot; for &amp;quot;+Set Position: locals.position + (3.0 0.0 0.0)&amp;quot; above) is a so called &amp;quot;Action expression&amp;quot;. This is a simple language for expressing mathematical expressions which is used for every parameter of an action. The language follows the usual mathematical rules with some special parts that will be described here.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;~(&amp;lt;left&amp;gt; &amp;lt;right&amp;gt;)&#039;&#039;&#039;: Will evaluate to a random value uniformly distributed without the range between &amp;lt;left&amp;gt; and &amp;lt;right&amp;gt;.&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;&amp;lt;name&amp;gt;&amp;quot;&#039;&#039;&#039;: Is a string value. This is necessary for actions taking names of other tables as parameters. For example &amp;quot;+Start Particle Effect&amp;quot;.&lt;br /&gt;
*&#039;&#039;&#039;(&amp;lt;x&amp;gt; &amp;lt;y&amp;gt; &amp;lt;z&amp;gt;)&#039;&#039;&#039;: Will create a 3D vector value. Used for positions and directions. Each of the x, y, and z values can themselves be expressions again.&lt;br /&gt;
&lt;br /&gt;
===Variables===&lt;br /&gt;
Every program instance will have some &amp;quot;local&amp;quot; variables assigned to it. This is a set of values that can be changed by the program and used by other actions for altering their behavior. These values are available within expressions:&lt;br /&gt;
*&#039;&#039;&#039;locals.position&#039;&#039;&#039;: A vector value specifying an offset from the host of the program instance. Can be changed with &amp;quot;+Set Position&amp;quot;.&lt;br /&gt;
*&#039;&#039;&#039;locals.direction&#039;&#039;&#039;: A vector value specifying a direction. Can be changed with &amp;quot;+Set Direction&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Available actions==&lt;br /&gt;
All of these listed actions can generally be combined freely with each other.&lt;br /&gt;
&lt;br /&gt;
===+Wait:===&lt;br /&gt;
Will delay the execution of subsequent actions by the specified amount of in-game seconds.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameter type:&#039;&#039;&#039; &#039;&#039;Floating point number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Set Position:===&lt;br /&gt;
Will alter the value of &amp;quot;locals.position&amp;quot; to the specified value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameter type:&#039;&#039;&#039; &#039;&#039;3D Vector&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Set Direction:===&lt;br /&gt;
Will alter the value of &amp;quot;locals.direction&amp;quot; to the specified value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameter type:&#039;&#039;&#039; &#039;&#039;3D Vector&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Move To Subobject:===&lt;br /&gt;
Will alter what subobject the program instance is attached to. A value of &amp;quot;&amp;lt;parent&amp;gt;&amp;quot; will move to the parent subobject of the current one. Otherwise the name of any other subobject may be specified.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameter type:&#039;&#039;&#039; &#039;&#039;String&#039;&#039; &amp;quot;&amp;lt;none&amp;gt;&amp;quot; or a valid subobject name.&lt;br /&gt;
&lt;br /&gt;
===+Start Particle Effect:===&lt;br /&gt;
Triggers a [[Particle Effects|particle effect]] with the specified name. Will use &amp;quot;locals.position&amp;quot; as an offset and &amp;quot;locals.direction&amp;quot; to orient the effect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameter type:&#039;&#039;&#039; &#039;&#039;String&#039;&#039; The name of a particle effect to trigger.&lt;br /&gt;
&lt;br /&gt;
===+Play 3D Sound:===&lt;br /&gt;
Plays the specified 3D sound. Will use &amp;quot;locals.position&amp;quot; as an offset to compute the global position of the sound.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameter type:&#039;&#039;&#039; &#039;&#039;String&#039;&#039; The name of the sound as specified in [[Sounds.tbl]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Weapons.tbl&amp;diff=63208</id>
		<title>Weapons.tbl</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Weapons.tbl&amp;diff=63208"/>
		<updated>2021-02-28T13:51:41Z</updated>

		<summary type="html">&lt;p&gt;M!m: Added $On Create:&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TableVersionGit|2017-08-25|2039815}}&lt;br /&gt;
{{Tables}}&lt;br /&gt;
The &#039;&#039;&#039;weapons.tbl&#039;&#039;&#039; defines all of the weapon classes used in FSO.&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-wep.tbm&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The weapons.tbl is responsible for defining the behavior of the numerous weapon effects used in FSO, including the amount of damage dealt, the firing rate, and graphical effects.&lt;br /&gt;
&lt;br /&gt;
This wiki page goes over all of the entries used exclusively in the weapons.tbl file. Hyperlinks to individual weapon creation/editing tutorials are provided when appropriate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Special Case Weapons==&lt;br /&gt;
===Beam Cannons===&lt;br /&gt;
&#039;&#039;&#039;REQUIRES:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;beam&amp;quot;&#039;&#039;&#039; flag&lt;br /&gt;
*&#039;&#039;&#039;[[weapons.tbl#$BeamInfo:|$BeamInfo:]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
See also: [http://www.hard-light.net/wiki/index.php/Tutorial_-_Beam_Weapons Tutorial - Beam Weapons]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Flak Guns===&lt;br /&gt;
&#039;&#039;&#039;REQUIRES:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;flak&amp;quot;&#039;&#039;&#039; flag&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;particle spew&amp;quot;&#039;&#039;&#039; flag&lt;br /&gt;
*Must have inner and outer radius defined to have any effect.&lt;br /&gt;
*A &#039;&#039;&#039;.pof&#039;&#039;&#039; model must be defined ( usually &#039;&#039;&#039;Hornet.pof&#039;&#039;&#039; )&lt;br /&gt;
**Note: the model is not actually used... Instead, it uses [[Weapons.tbl#$Pspew:|particle spew]]. Trails may also be added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==General Format==&lt;br /&gt;
*The weapons table consist of several sections&lt;br /&gt;
*All sections beginning with &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; need &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;End&#039;&#039;&#039; before the next section.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Primary Weapons&#039;&#039;&#039;&lt;br /&gt;
***Defines all &#039;&#039;&#039;standard primaries weapons&#039;&#039;&#039; as well as &#039;&#039;&#039;beam cannons&#039;&#039;&#039; and &#039;&#039;&#039;flak cannons&#039;&#039;&#039;.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Secondary Weapons&#039;&#039;&#039;&lt;br /&gt;
***Defines all &#039;&#039;&#039;secondary weapons&#039;&#039;&#039;.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Beam Weapons&#039;&#039;&#039;&lt;br /&gt;
***I haven&#039;t got any ideas for this one.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;[[Weapons.tbl#Countermeasures|Countermeasures]]&#039;&#039;&#039;&lt;br /&gt;
***Defines the used countermeasure.&lt;br /&gt;
**&#039;&#039;&#039;$Player Weapon Precedence&#039;&#039;&#039;&lt;br /&gt;
***Player Weapon Precedence is used in weapon selection when a default specified by the mission designer is not available to the player. The next weapon on the list is used in its place (assuming that weapon is allowed for the player).&lt;br /&gt;
&lt;br /&gt;
==Core Table==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Name:===&lt;br /&gt;
*This is the name of the weapon. If it&#039;s going to be used by the player, keep it under 12 characters so it doesn&#039;t spill over the HUD box.&amp;lt;br&amp;gt;Two special characters can be used in the name: &#039;&#039;&#039;#&#039;&#039;&#039; and &#039;&#039;&#039;@&#039;&#039;&#039;. Their usage details are the very same than inside the [[Ships.tbl#.24Name:_2|$Name field from Ships.tbl]].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====+nocreate====&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*In [[Modular Tables]] name can be followed by line &#039;&#039;&#039;+nocreate&#039;&#039;&#039; that prevent game from creating an incomplete entry by leaving the entry unread unless it already exists (either in Weapons.tbl or in earlier parsed *-wep.tbm files) by the time the *-wep.tbm is read.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Alt Name:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*An alternative name that can be referenced instead of $Name:&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Subtype:===&lt;br /&gt;
{{Table3610| &lt;br /&gt;
Specifies the weapon &#039;s subtype. Overrides the default subtype as specified by the #-section it is in (#Primary, #Secondary, #Beam Weapon, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
:Since the weapon subtype is already specified by the #-section it is in, this option is not particularly useful when the weapon is inside a #Primary or #Secondary section. However, it may be used to specify the weapon slot it uses on fighters/bombers for weapons that are normally capship only (such as beam cannons).}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Valid Entries: &lt;br /&gt;
:Primary&lt;br /&gt;
:Secondary}}&lt;br /&gt;
&lt;br /&gt;
===+Title:===&lt;br /&gt;
*This is the title of the weapon in the Weapons loadout screen. Only needed for player allowed weapons. Title may be anything.  Numerical value is a reference to translations in [[Tstrings.tbl]]&lt;br /&gt;
*Syntax: XSTR(&#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039;, -1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Description:===&lt;br /&gt;
*This is the description you see in the weapons loadout screen. Again, these aren&#039;t based on any hard numbers, just approximations. Only needed for player allowed weapons. Numerical value is a reference to translations in [[Tstrings.tbl]]&lt;br /&gt;
*Must be followed by &#039;&#039;&#039;$end_multi_text&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSTR(&lt;br /&gt;
&amp;quot;&#039;&#039;Standard Issue&lt;br /&gt;
&#039;&#039;Level 3 Hull Damage&lt;br /&gt;
&#039;&#039;Level 2 Shield Damage&#039;&#039;&amp;quot;, -1)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===+Tech Title:===&lt;br /&gt;
*Title of the weapon in the Tech room. Only needed for player allowed weapons.&lt;br /&gt;
*Syntax: XSTR(&#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039;, -1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Tech Anim:===&lt;br /&gt;
*Animation used for the weapon in the Tech room. Only needed for player allowed weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, animation filename&lt;br /&gt;
**Example: &#039;&#039;Tech_Subach_HL-7&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Tech Description:===&lt;br /&gt;
*Descriptive text you see in the tech room. Only needed for player allowed weapons. Numerical value is a reference to translations in [[Tstrings.tbl]]&lt;br /&gt;
*Must be followed by &#039;&#039;&#039;$end_multi_text&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSTR(&lt;br /&gt;
&amp;quot;&#039;&#039;The Subach-Innes HL-7...&#039;&#039;&amp;quot;, 3245)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Tech Model:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines model used in wing loadout screen for the weapon. 3D weapon models in the tech room have not yet been implemented.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
====+Closeup_Pos:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*How the model will show on the Loadout Screen. The position of the camera relative to the model center.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, three &#039;&#039;&#039;floats&#039;&#039;&#039;, x, y and z values respectively}}&lt;br /&gt;
&lt;br /&gt;
====+Closeup_Zoom:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*How the model will show on the Loadout Screen. How far the camera&#039;s zoomed in, defines camera&#039;s FOV.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, radians}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Selection Effect:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines which selection effect to use when the -weapon_choice_3d commandline flag is enabled or no ani can be found for the selected weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, either &amp;quot;FS1&amp;quot;, or &amp;quot;Off&amp;quot;. This defaults to the FS2 effect.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$HUD Image:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the picture used to represent the weapon in HUD loadout list&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Model File:===&lt;br /&gt;
*Filename of the model file (.pof) at data/models folder. Additional fields beginning from &#039;&#039;&#039;&#039;&#039;@Laser Bitmap:&#039;&#039;&#039;&#039;&#039; and ending to &#039;&#039;&#039;&#039;&#039;@Laser Tail Radius:&#039;&#039;&#039;&#039;&#039; are not needed if a model has been defined for the weapon.&lt;br /&gt;
*Standard primaries and beam cannons do not use specific models so for those the name is &#039;none&#039;.&lt;br /&gt;
*Flak weapons and secondaries use models, though the exact model is not important with the flak weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039; or &#039;&#039;none&#039;&#039;, model filename&lt;br /&gt;
**Example: &#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$POF target LOD:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the LOD (Level-Of-Detail) of the model used in HUD targeting view&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Detail Distance:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the distance where the change between different Levels-Of-Details (LODs) occurs&lt;br /&gt;
*Take notice that these are base values. Model detail in Detail options, (within game press F2), applies a multiplier to these values. These multipliers are (from left to right): 1/8, 1/4, 1, 4, 8&lt;br /&gt;
*Optional.  If not defined the game uses the formula ((radius * 20.0 + 20.0) * LOD)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;(Detail Distances)&#039;&#039;&#039;&#039;&#039; , list of &#039;&#039;&#039;integers&#039;&#039;&#039; (same amount as LODs), distances from the model in meters&lt;br /&gt;
**Example: &#039;&#039;(0, 80, 300, 900)&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$External Model File:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the models shown on the gunpoint, used with Bobb&#039;s external-visible-weapon code.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Submodel Rotation Speed:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the rotation speed of the subobject, with the $gun_rotation property defined, in the external weapon model.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Note: weapon fire will be delayed by the time it takes for the weapon to spin up to this speed (using $Submodel Rotation Acceleration or its default value), regardless of whether an external model is used or not.&lt;br /&gt;
}}&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Note: It&#039;s no longer required that the ship actually have external models enabled (whether or not this weapon has one defined) for the spin up delay to occur.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Submodel Rotation Acceleration:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the rotation acceleration of the external weapon model.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default value: 10}}&lt;br /&gt;
&lt;br /&gt;
===@Laser===&lt;br /&gt;
In the event a 3D model is not defined for the weapon, FSO creates an object similar to a glowpoint. Essentially, it is a 2D plane that always faces the player&#039;s camera with an additive texture applied to it, and may or may not have an omnilight follow it.&lt;br /&gt;
&lt;br /&gt;
As suggested by its name, this option group is normally used for lasers and similar primaries, but it may also be used for other weapon types as well.&lt;br /&gt;
&lt;br /&gt;
Unless said otherwise, the graphic files used within this group may be of any compatible type (.DDS, .PCX, .TGA, etc.), however a .DDS is recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Bitmap:====&lt;br /&gt;
Defines the graphic file to be used as the weapon effect.&lt;br /&gt;
&lt;br /&gt;
Blending type: additive&lt;br /&gt;
&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Bitmap: my_laser_bitmap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Glow:====&lt;br /&gt;
Defines the graphic file to be used for the glowmap of the weapon effect.&lt;br /&gt;
&lt;br /&gt;
Blending type: additive&lt;br /&gt;
&lt;br /&gt;
*This file is &#039;multiplied&#039; by a value between Color and Color2.&lt;br /&gt;
*The physical dimensions of the glowmap in-game is 2x the size of the bitmap.&lt;br /&gt;
&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Glow: my_laser_glowmap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Color:====&lt;br /&gt;
The RGB color of the glow effect.&lt;br /&gt;
&lt;br /&gt;
*The color is applied both to the glowmap and the omnilight that follows the effect.&lt;br /&gt;
&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue respectively, 8-bit value from 0 to 255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Color: 255, 0, 0    ; Red glow effect at the start of the effect&#039;s lifetime&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Color2:====&lt;br /&gt;
The RGB color of the glow effect at the end of the effect&#039;s lifetime (at its maximum range).&lt;br /&gt;
&lt;br /&gt;
*The color is applied both to the glowmap and the omnilight that follows the effect.&lt;br /&gt;
*The actual color of the glow effect is somewhere in between the values defined by Color and Color2. Essentially, the actual color &amp;quot;fades&amp;quot; from Color to Color2 over its lifetime.&lt;br /&gt;
**If Color is not defined, then a default value of 255, 255, 255 is assumed for its initial color.&lt;br /&gt;
&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue respectively, 8-bit value from 0 to 255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Color2:  0, 0, 255    ; Blue glow effect at the end of the effect&#039;s lifetime.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Color: 255, 0,   0    ; Start with a Red glow effect, and fade into...&lt;br /&gt;
@Laser Color2:  0, 0, 255    ; a Blue glow effect over the lifetime of the effect.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Length:====&lt;br /&gt;
Defines the length of the weapon effect.&lt;br /&gt;
*This option stretches the 2D plane &amp;quot;away&amp;quot; from its origin.&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Length:  1.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Head Radius:====&lt;br /&gt;
Defines the width of the leading edge, or &amp;quot;head,&amp;quot; of the weapon effect.&lt;br /&gt;
*The edge of the 2D plane farthest away from its origin is the leading edge.&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Head Radius: 0.75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Tail Radius:====&lt;br /&gt;
Defines the width of the trailing edge, or &amp;quot;tail&amp;quot; of the weapon effect.&lt;br /&gt;
*The edge of the 2D plane that is closest to its origin is the trailing edge.&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Tail Radius: 0.75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Collision Radius Override:===&lt;br /&gt;
{{Table202|&lt;br /&gt;
*Weapon - weapon collisions are treated as two spheres, where a laser&#039;s sphere&#039;s radius is equal to its Head Radius, and a missile&#039;s is the radius of its associated model (possibly doubled). Using this will override either of those values.&lt;br /&gt;
*NOTE: If the weapon is interceptable, such as a bomb or has been given hitpoints, this value will &#039;&#039;still&#039;&#039; be doubled, unless the &amp;quot;no radius doubling&amp;quot; flag is used.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Mass:===&lt;br /&gt;
*How much of a kinetic effect this weapon has on its target. 3+ gives you the Flail effect. Set it to 10 and you can knock cruisers around.&lt;br /&gt;
*This is multiplied by the speed. ie &#039;&#039;$Mass: 3&#039;&#039; and &#039;&#039;$Velocity: 200&#039;&#039; has much weaker kinetic effect than &#039;&#039;$Mass: 3&#039;&#039; and &#039;&#039;$Velocity: 1000&#039;&#039;. Also $Mass is used to calculate intensity of &amp;quot;shudder&amp;quot; effect if flagged.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, blast effect&lt;br /&gt;
&lt;br /&gt;
===$Velocity:===&lt;br /&gt;
*How fast the weapon travels. Is also used to define the weapon range, &#039;&#039;&#039;&#039;&#039;$Velocity x $Lifetime = range&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
*Beams travel instantly so this field has effect only on weapon range and AI beam targeting with certain beam types. $Velocity of beam also applies to its kinetic effect along with $Mass.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Fire Wait:===&lt;br /&gt;
*Time in seconds between firings&lt;br /&gt;
*Note that Fire wait will be reset to 1 if it is set over 5 for non turreted primary weapons (doesn&#039;t apply to 3.6.14+)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
====+Max Delay:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Defines the maximum amount of time it takes to refire a weapon in a random fire delay range.&lt;br /&gt;
**This must be used with +Min Delay: to have any effect.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
====+Min Delay:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Defines the minimum amount of time it takes to refire a weapon in a random fire delay range.&lt;br /&gt;
**This must be used with +Max Delay: to have any effect.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
===$Damage:===&lt;br /&gt;
*Base damage this weapon does. The actual damage is this number multiplied by the factors below.&lt;br /&gt;
*Base damage this beam does is continuous damage, damage is approximately 5.88 times the damage value per second. The actual damage is this number multiplied by one of the factors below.&lt;br /&gt;
*The exact factor to multiply by is 100/17, or one &#039;pulse&#039; of damage every 170 seconds. The generally used wisdom of 5.5 times may have been generally accurate before beam damage was made continuous and frame-rate independent, but is now out of date information.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage&lt;br /&gt;
*Note: adding an inner and/or outer radius to a weapon doubles its effective damage to the target (i.e. 1x impact, 1x area effect)&lt;br /&gt;
&lt;br /&gt;
===$Damage Time:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*This sets a time from the end of the weapons lifetime that damage will start to attenuate at. &#039;&#039;&#039;&#039;&#039;Example: Weapon lifetime is 2.0 seconds and the desired effect is to attenuate after 0.5 seconds have passed, set this to 1.5 seconds.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds. Defaults to 0.0.&lt;br /&gt;
**Note: If neither +Min Damage: nor +Max Damage: is set, the damage will always attenuate to zero at max range.&lt;br /&gt;
***If both +Min Damage: and +Max Damage: are set, both are defaulted to 0.0 and damage will be attenuated to zero.}}&lt;br /&gt;
&lt;br /&gt;
====+Attenuation Damage:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*This sets the damage a weapon will attenuate to after reaching $Damage Time:.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage.}}&lt;br /&gt;
&lt;br /&gt;
====+Min Damage:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*This sets the lowest amount of damage possible assuming damage attenuation is taking place. &#039;&#039;&#039;&#039;&#039;This has been deprecated, please use +Attenuation Damage: instead.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage. Defaults to 0.0.}}&lt;br /&gt;
&lt;br /&gt;
====+Max Damage:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*This sets the highest amount of damage possible assuming damage attenuation is taking place. &#039;&#039;&#039;&#039;&#039;This has been deprecated, please use +Attenuation Damage: instead.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage. Defaults to 0.0.}}&lt;br /&gt;
&lt;br /&gt;
===$Angle of Incidence Damage Multiplier:===&lt;br /&gt;
{{Table212|&lt;br /&gt;
*Causes the weapon&#039;s damage to be multiplied by these factors depending on the angle of incidence. &lt;br /&gt;
*It is &#039;&#039;not&#039;&#039; linear, it is based on the sine of the angle to the surface. If the factors are 1x for minimum, and 2x for maximum, at an angle of 45° the multiplier is 1.707x, for instance.&lt;br /&gt;
====+Min:====&lt;br /&gt;
*The damage multiplier at a perfectly glancing hit, parallel to the surface (although not technically possible).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
====+Max:====&lt;br /&gt;
*The damage multiplier when hit straight on, perpendicular to the surface.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Damage Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
Defines the damage type that this weapon uses. All armor effects are applied after shield and have no function against shockwave or subsystem damage.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;REQUIRES:&#039;&#039;&#039; [[armor.tbl]]&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the damage type ( as defined by [[armor.tbl#$Damage Type:|$Damage Type]] )}}&lt;br /&gt;
&lt;br /&gt;
===$Arm time:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the time after the launch that is required before the weapon comes hot&lt;br /&gt;
*If the time has not been reached when the weapon detonates the Dinky explosion is used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Arm distance:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the distance from the firing ships that is required before the weapon comes hot&lt;br /&gt;
*If the distance has not been reached when the weapon detonates the Dinky explosion is used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This parameter is also applied to flak weapons. Previous behaviour was to arm weapons after 10 meters of travel.}}&lt;br /&gt;
&lt;br /&gt;
===$Arm radius:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the distance from the target where the weapon will arm itself&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
===$Detonation Range:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the distance from the point in space that the weapon was launched where the weapon will detonate&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Detonation Radius:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the distance between the target center point point and the weapon which detonates the weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave damage:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Override for the damage caused by shockwaves (default is [[#$Damage:]])&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage&lt;br /&gt;
*Note: adding a shockwave to a weapon doubles its effective damage to the target (i.e. 1x impact, 1x shockwave)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Shockwave Damage Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;REQUIRES ADDITIONAL TABLE&#039;&#039;&#039;. Defines the damage type used for the weapon explosions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name as defined in [[armor.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
===$Flak Detonation Accuracy:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Normally, flak weapons detonate at a range of 65 to 99 meters from their intended target, depending on the firing ships&#039; weapon subsystem health. This parameter can be used to adjust this behaviour, as it defines the base range used to determine this detonation range. Standard value is 65.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, range in meters}}&lt;br /&gt;
&lt;br /&gt;
===$Flak Targeting Accuracy:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Turret-fired flak weapons are normally firing in a cone around the target&#039;s predicted position. This parameter can be used to adjust the size of this cones&#039; base radius. Standard is 60 meters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, radius in meters}}&lt;br /&gt;
&lt;br /&gt;
===$Untargeted Flak Range Penalty:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*If a flak weapon is fired without a target selected, this parameter defines the range penalty applied to that weapon. Standard is 20 meters, meaning an untargeted flak weapon will detonate after travelling its max range - 20 meters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, penalty in meters.}}&lt;br /&gt;
&lt;br /&gt;
===$Blast Force:===&lt;br /&gt;
*The intensity of the kinetic blast effect when ship is within the outer radius of the explosion. Comes in effect only if inner and outer radius are defined.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, blast effect&lt;br /&gt;
&lt;br /&gt;
===$Inner Radius:===&lt;br /&gt;
*Radius at which the full explosion damage is done. Marks the line where damage attenuation begins. Damage is reduced by the square of the distance between the inner radius and outer radius.  i.e. half way between inner and outer results in 1/4 damage&lt;br /&gt;
*Note: adding an inner and/or outer radius to a weapon doubles its effective damage to the target (i.e. 1x impact, 1x area effect)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
===$Outer Radius:===&lt;br /&gt;
*Maximum radius at which any damage is done.  See $Inner Radius for the attenuation formula.&lt;br /&gt;
*Also defines the size of the shockwave (if shockwave speed is &amp;gt; 0)&lt;br /&gt;
*Note: adding an inner and/or outer radius to a weapon doubles its effective damage to the target (i.e. 1x impact, 1x area effect)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
===$Shockwave Speed:===&lt;br /&gt;
*Speed shockwave expands at. Zero means no shockwave and that any area-effect damage is applied immediately&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second&lt;br /&gt;
&lt;br /&gt;
===$Shockwave rotation:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines how the 3D shockwave is rotated. Random, if left undefined.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Angle&#039;&#039;&#039;&#039;&#039;, three values, pitch, bank, heading respectively, in degrees}}&lt;br /&gt;
&lt;br /&gt;
===$Shockwave model:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the model file (.pof) used as a shockwave for the 3D shockwaves.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave name:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the name of the animation used for the 2D shockwave&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Dinky shockwave:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Dinky shockwave are used if the weapon is shot down before arming or if the conditions marked at &#039;&#039;&#039;Arm time&#039;&#039;&#039; and &#039;&#039;&#039;Arm distance&#039;&#039;&#039; are not reached before impact&lt;br /&gt;
*It uses exactly same entries as the standard shockwaves&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave damage:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave damage type:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Blast Force:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Inner Radius:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Outer Radius:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave Speed:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave Rotation:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave Model:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave Name:&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Armor Factor:===&lt;br /&gt;
*Multiplier for the damage done to armor&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage multiplier&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shield Factor:===&lt;br /&gt;
*Multiplier for the damage done to shields&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage multiplier&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Subsystem Factor:===&lt;br /&gt;
*Multiplier for the damage done to subsystems&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage multiplier&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Lifetime Min:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the minimum lifetime of the weapon&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Lifetime Max:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the maximum lifetime of the weapon&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Lifetime:===&lt;br /&gt;
*Time before the standard primaries fizzle out and secondaries self destruct. Multiply this by the speed to get the range. If values are too low (below framerate) then the collision detection and graphic effects may suffer.&lt;br /&gt;
*This field has no effect for the beams apart from weapon range and AI beam targeting with certain beam types&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Energy Consumed:===&lt;br /&gt;
*The amount of energy each bolt drains firing ship. Has no effect on turretted weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Cargo Size:===&lt;br /&gt;
*Cargo size, is not used with non-ballistic primaries.&lt;br /&gt;
*Amount of missiles available = Bank capacity / Cargo Size.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Homing:===&lt;br /&gt;
&#039;&#039;&#039;This option is exclusive to secondaries.&#039;&#039;&#039;&lt;br /&gt;
{{Table212|&#039;&#039;&#039;This option may now be applied to primaries&#039;&#039;&#039;. They may only use heat seeking. For optimal results the &amp;quot;no homing speed ramp&amp;quot; flag may be used.}}&lt;br /&gt;
&lt;br /&gt;
Defines if the bolts/missiles in question is homing&lt;br /&gt;
&lt;br /&gt;
If set to NO, then following fields are not required in the table.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, yes or no&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Type:&#039;&#039;&#039;====&lt;br /&gt;
Defines the homing method&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, &#039;&#039;ASPECT&#039;&#039; or &#039;&#039;HEAT&#039;&#039;&lt;br /&gt;
{{Table3610| An additional option, &#039;&#039;JAVELIN&#039;&#039;, has been added.  This behaves like an aspect missile but automatically only locks onto the engines of a target, and only if the engines are in sight.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Turn Time:&#039;&#039;&#039;====&lt;br /&gt;
Determines how quickly the missile can turn. Ostensibly the number of seconds it takes the missile to do a 360 degree circle at full turn speed, but for complicated reasons this is only true if [[Game_settings.tbl#.2BAI_respect_tabled_turn_time_and_rotdamp|AI respect tabled turn time and rotdamp]] is enabled.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Turning Acceleration Time:&#039;&#039;&#039;====&lt;br /&gt;
{{Table202|&lt;br /&gt;
Determines how quickly the missile reaches its maximum turn speed.&lt;br /&gt;
*Note: Requires [[Game_settings.tbl#.24AI_use_framerate_independent_turning:|$AI use framerate independent turning]] in game_settings.tbl&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+View Cone:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;Heat-seeking missiles only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the width of the weapon&#039;s viewing cone, given in degrees. Objects outside this cone are effectively invisible to the missile. The value / 2 gives the angle from the missile&#039;s centerline to the edge of the viewing cone.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, degrees&lt;br /&gt;
{{Table3610| Has been enabled also to aspect seekers as an option.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Min Lock Time:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;For aspect/javelin missiles only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The minimum number of seconds to gain a target lock.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Lock Pixels/Sec:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;For aspect/javelin missiles only&#039;&#039;&#039;&lt;br /&gt;
The number of pixels the aspect triangle moves per second while attempting lock-on.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, pixels per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Catch-up Pixels/Sec:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;For aspect/javelin missiles only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number of pixels moved per second while attempting to catch up to the target.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, pixels per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Catch-up Penalty:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;For aspect/javelin missiles only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Extra pixels to move after catching up. (Needs verification )&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, pixels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Seeker Strength:&#039;&#039;&#039;====&lt;br /&gt;
{{Table3610|&lt;br /&gt;
Defines the seeking ability of the homing system. Default of heat seekers is 3.0 and for aspect seekers 2.0. Spoofing chance is defined as &#039;&#039;&#039;[[#$Countermeasure:|cm type effectiveness]]&#039;&#039;&#039;/&#039;&#039;&#039;seeker strength&#039;&#039;&#039; (missile must be within the countermeasures &#039;&#039;&#039;[[#$Countermeasure:|+Effective Radius:]]&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seeker strength}}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Target Lead Scaler:&#039;&#039;&#039;====&lt;br /&gt;
{{Table3611|&lt;br /&gt;
Defines the type of pursuit course the missile tries to obtain.&lt;br /&gt;
*Values &amp;lt; 0 give lag pursuit, values ~ 0 give pure pursuit, values &amp;gt; 0 give lead pursuit.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, default for heat seekers: 0, default for aspect or javelin seekers: 1.}}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Target Lock Restriction:&#039;&#039;&#039;====&lt;br /&gt;
{{Table202|&lt;br /&gt;
Defines if the missile can lock onto ships besides the current target&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the behavior, default is &#039;&#039;current target only&#039;&#039;;.&lt;br /&gt;
*&#039;&#039;Current target only&#039;&#039; As normal, can only acquire locks on the targeted ship&lt;br /&gt;
*&#039;&#039;Any target&#039;&#039; Missile will lock on any valid target. Missile locking is still disabled in certain cases, such as when a friendly is the player&#039;s target&lt;br /&gt;
*&#039;&#039;Current target, any subsystem&#039;&#039; Targeting is restricted to the current ship, but will pick turrets and subsystems on that ship. }}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Independent Seekers:&#039;&#039;&#039;====&lt;br /&gt;
{{Table202|&lt;br /&gt;
Defines the ability for a missile to target multiple objects at once.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, yes or no, default is no.}}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Trigger Hold:&#039;&#039;&#039;====&lt;br /&gt;
{{Table202|&lt;br /&gt;
Defines the ability to hold the trigger to lock and release to fire.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, yes or no, default is no.}}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Reset On Launch:&#039;&#039;&#039;====&lt;br /&gt;
{{Table202|&lt;br /&gt;
Defines the ability for locks to reset upon missiles being fired.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, yes or no, default is no.}}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Max Seekers Per Target:&#039;&#039;&#039;====&lt;br /&gt;
{{Table202|&lt;br /&gt;
Defines the maximum number of seekers that can target a single object.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of seekers.}}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Max Active Seekers:&#039;&#039;&#039;====&lt;br /&gt;
{{Table202|&lt;br /&gt;
Defines the maximum number of total seekers for the weapon to have.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of seekers.}}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Ship Types:&#039;&#039;&#039;====&lt;br /&gt;
{{Table202|&lt;br /&gt;
Defines the ship types that this missile can target. In order for a ship to be targetable it must be able to match one of the listed types, if some of the below lists are also specified, it must match into those as well.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(&amp;quot;String&amp;quot; &amp;quot;String&amp;quot;)&#039;&#039;&#039;, ship types.}}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Ship Classes:&#039;&#039;&#039;====&lt;br /&gt;
{{Table202|&lt;br /&gt;
Defines the ship classes that this missile can target. In order for a ship to be targetable it must be able to match one of the listed classes, if some of the above/below lists are also specified, it must match into those as well.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(&amp;quot;String&amp;quot; &amp;quot;String&amp;quot;)&#039;&#039;&#039;, ship classes.}}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Species:&#039;&#039;&#039;====&lt;br /&gt;
{{Table202|&lt;br /&gt;
Defines the species whose ships this missile can target. In order for a ship to be targetable it must be able to match one of the listed Species, if some of the above/below lists are also specified, it must match into those as well.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(&amp;quot;String&amp;quot; &amp;quot;String&amp;quot;)&#039;&#039;&#039;, species.}}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+IFFs:&#039;&#039;&#039;====&lt;br /&gt;
{{Table202|&lt;br /&gt;
Defines the IFF&#039;s whose ships this missile can target. In order for a ship to be targetable it must be able to match one of the listed IFFs, if some of the above lists are also specified, it must match into those as well.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(&amp;quot;String&amp;quot; &amp;quot;String&amp;quot;)&#039;&#039;&#039;, IFFs.}}&lt;br /&gt;
&lt;br /&gt;
===$Swarm:===&lt;br /&gt;
*The number of missiles to fire per volley if it&#039;s a swarm missile&lt;br /&gt;
*Can be issued to Standard primaries also. Causes single part turrets to malfunction but causes multi part turrets to fire only on their barrel line. Can be used for &#039;burst fire weapons&#039;. Does not work with player weapons.&lt;br /&gt;
*Is incompatible with &amp;quot;Corkscrew&amp;quot; option.&lt;br /&gt;
*Swarm will negatively affect the missile&#039;s ability to hit its target and will not lead its target even with  [[Weapons.tbl#.2BTarget_Lead_Scaler:|Target Lead Scaler]] defined unless [[Game_settings.tbl#.24Swarmers_Lead_Targets:|$Swarmers Lead Targets]] is enabled.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of shots in a swarm&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+SwarmWait:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time between weapons fired in a swarm&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
***Default: 0.150&lt;br /&gt;
***Max: 0.5 (Resets to default if set over 0.5)}}&lt;br /&gt;
&lt;br /&gt;
===$Acceleration Time:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines how long it takes for a secondary weapon to attain full speed. Takes precedence over $Free Flight Time (see below) in terms of the weapon&#039;s velocity, and affects both locked-on and dumbfired secondaries.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
**Default: 0.0}}&lt;br /&gt;
&lt;br /&gt;
===$Velocity Inherit:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines how much of the parent ship&#039;s velocity to inherit, if [[Ai_profiles.tbl#.24use_additive_weapon_velocity:]] is used.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, percents&lt;br /&gt;
**Default: 100.0}}&lt;br /&gt;
&lt;br /&gt;
===$Free Flight Time:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the free flight time of homing weapons. During this time weapon flies at 1/4 of its velocity + firing ships velocity in a straight line.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
**Default: 0.25}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; due to dumbfires never changing their speed, using this on a dumbfire missile will have it stuck at freeflight speed even after the end of the freeflight time.&lt;br /&gt;
&lt;br /&gt;
===$Free Flight Speed:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the speed that the weapon will be travelling at during the free flight segment (see above).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, Multiplier for the actual speed, minimum 0.01.&lt;br /&gt;
**Default: 0.25&lt;br /&gt;
{{Note| This feature was never implemented correctly and was removed in r8867. FSO parses but doesn&#039;t use the value, and prints a warning in the log. This feature has subsequently been reimplemented, see $Free Flight Speed Factor: below}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Free Flight Speed Factor:===&lt;br /&gt;
{{Table202|&lt;br /&gt;
*Defines the speed that the weapon will be traveling at during the free flight segment (see above).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, Multiplier for the actual speed, minimum 0.01.&lt;br /&gt;
**Default: 0.25&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$PreLaunchSnd:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the one-shot sound effect to play at the beginning of a firing stream. Currently only has an effect on primary weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
**Default: No Sound}}&lt;br /&gt;
&lt;br /&gt;
===+PreLaunchSnd Min Interval:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines  Minimum interval between when the player stops firing and the next time the pre-launch sound can play, as a limiter in case the player is pumping the trigger.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, Minimum delay in milliseconds between the end of the previous firing sequence and the next time the pre-launch sound effect will be played.&lt;br /&gt;
**Default: 0 (play pre-launch sound at the beginning of every firing sequence, if present)}}&lt;br /&gt;
&lt;br /&gt;
===$LaunchSnd:===&lt;br /&gt;
*Corresponding sound effect when the weapon is launched.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$ImpactSnd:===&lt;br /&gt;
*Sound the weapon makes when it hits a hull.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Disarmed ImpactSnd:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Sound the weapon makes when it hits a hull before being armed.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$FlyBySnd:===&lt;br /&gt;
*The sound this weapon makes if it narrowly misses you. -1 is no sound.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]], usually -1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$TrackingSnd===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*The looping sound played when this weapon tracks a target.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$LockedSnd===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*The sound played when this weapon has locked onto its target.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$InFlightSnd===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*The looping sound played when the missile is currently flying.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+Inflight sound type&#039;&#039;&#039;&lt;br /&gt;
**Specifies when the in flight sound is played.&lt;br /&gt;
**The value can be one of the following values which are matched case-insensitively:&lt;br /&gt;
***&#039;&#039;&#039;&#039;&#039;&#039;TARGETED&#039;&#039;&#039;&#039;&#039;&#039;: The sound is played when the missile tracks a target&lt;br /&gt;
***&#039;&#039;&#039;&#039;&#039;&#039;UNTARGETED&#039;&#039;&#039;&#039;&#039;&#039;: The sound is played when the missile is currently not tracking a target&lt;br /&gt;
***&#039;&#039;&#039;&#039;&#039;&#039;ALWAYS&#039;&#039;&#039;&#039;&#039;&#039;: The sound is played always}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Model:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines used model file. Included for compatibility with countermeasures as they have been merged with weapons in the code.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Rearm Rate:===&lt;br /&gt;
*Defines the frequency that weapons are loaded to the ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, How many times per second the weapons are loaded.&lt;br /&gt;
**Example: 2.0 will reload every half second.  0.1 will load every ten seconds.&lt;br /&gt;
&lt;br /&gt;
===$Rearm Ammo Increment:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Defines how many missiles or how much ballistic ammo is loaded per load sound.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, how many bullets or missiles are loaded.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Weapon Range:===&lt;br /&gt;
*Defines the range to the target where the weapons under AI will start firing.  This also affects the [[Hud_gauges.tbl#Lead_Indicator|Lead Indicator]]&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
===+Weapon Min Range:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the minimum range to the target where the weapons under AI will still fire.&lt;br /&gt;
*Implemented before FS_Open 3.6.5&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Flags:===&lt;br /&gt;
*See [[Weapons.tbl#Weapons.tbl_Flags|below]]&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;, names of the flags assigned to the weapon&lt;br /&gt;
**Example: ( &amp;quot;Player allowed&amp;quot; &amp;quot;in tech database&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Can be followed by &#039;&#039;&#039;+override&#039;&#039;&#039; option in order to reset the weapon flags before parsing in the new ones&lt;br /&gt;
*Using this option will erase all &#039;&#039;&#039;homing&#039;&#039;&#039;-related flags as well as &#039;&#039;&#039;swarm&#039;&#039;&#039;, &#039;&#039;&#039;variable lead&#039;&#039;&#039;, &#039;&#039;&#039;trail&#039;&#039;&#039;, &#039;&#039;&#039;TAG&#039;&#039;&#039;, and &#039;&#039;&#039;transparent&#039;&#039;&#039; settings in addition to the listed flags. All these should be set again - if they are required - when this option is used.&lt;br /&gt;
&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;+override&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Trail:===&lt;br /&gt;
*This is used if you want your weapon to have a trail. Trail is often used only with secondaries though it works with standard primaries as well.&lt;br /&gt;
*&#039;&#039;&#039;+Start Width:&#039;&#039;&#039;&lt;br /&gt;
**How wide the head of the trail is.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+End Width:&#039;&#039;&#039;&lt;br /&gt;
**How wide the tail of the trail is.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Start Alpha:&#039;&#039;&#039;&lt;br /&gt;
**The opacity of the trail head.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value between 0 and 1&lt;br /&gt;
*&#039;&#039;&#039;+End Alpha:&#039;&#039;&#039;&lt;br /&gt;
**The opacity of the trail tail.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value between 0 and 1&lt;br /&gt;
{{Table212|&lt;br /&gt;
*&#039;&#039;&#039;+Alpha Decay Exponent:&#039;&#039;&#039;&lt;br /&gt;
**Causes the trail to fade away non-linearly. The 1 -&amp;gt; 0 progress through the trail&#039;s life is taken to the power of the provided number when being used for trail alpha purposes&lt;br /&gt;
**Smaller numbers below 1 cause the trail to fade away very slowly at first, and then suddenly at the end. Larger numbers above 1 cause it to fade away quickly at first, and then slow down for most of its life.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, positive}}&lt;br /&gt;
*&#039;&#039;&#039;+Max Life:&#039;&#039;&#039;&lt;br /&gt;
**How long the trail lasts.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
{{Table202|&lt;br /&gt;
*&#039;&#039;&#039;+Spread:&#039;&#039;&#039;&lt;br /&gt;
**Causes the trail points to diffuse and drift apart at this speed over time.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second}}&lt;br /&gt;
*&#039;&#039;&#039;+Bitmap:&#039;&#039;&#039;&lt;br /&gt;
**The graphic file to use for the trail.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
{{Table212|&lt;br /&gt;
*&#039;&#039;&#039;+Bitmap Stretch:&#039;&#039;&#039;&lt;br /&gt;
**Multiplies how far the bitmap is stretched over each trail segment.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*&#039;&#039;&#039;+Faded Out Sections:&#039;&#039;&#039;&lt;br /&gt;
**Defines the number of the trail sections (counting from the leading edge) which are gradually faded out.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of trail sections}}&lt;br /&gt;
&lt;br /&gt;
===$Icon:===&lt;br /&gt;
*Loadout icon used in the weapons selection screen.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Anim:===&lt;br /&gt;
*Green grid animation used on the weapons screen.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Collide Ship:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Has been replaced with &#039;&#039;&#039;#Conditional Hooks&#039;&#039;&#039;, see [[Scripting.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Collide Weapon:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Has been replaced with &#039;&#039;&#039;#Conditional Hooks&#039;&#039;&#039;, see [[Scripting.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
===$Impact Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the [[Particle Effects|particle effect]] which will be used for impacts of this weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*If this option is specified then &#039;&#039;$Impact Explosion&#039;&#039; and &#039;&#039;$Impact Explosion Radius&#039;&#039; are not valid options!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Impact Explosion:===&lt;br /&gt;
*Impact explosion used. Must be defined in weapon_expl.tbl,&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename or &#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Impact Explosion Radius:===&lt;br /&gt;
*Radius of the defined impact explosion.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters, default 1.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shield Impact Explosion Radius:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Radius of the shield impact explosion, see [[Ships.tbl#.24Shield_Impact_Explosion:]].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters, defaults to value of $Impact Explosion Radius}}&lt;br /&gt;
&lt;br /&gt;
===$Dinky Impact Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the [[Particle Effects|particle effect]] which will be used for Dinky (not armed) explosions of this weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*If this option is specified then &#039;&#039;$Dinky Impact Explosion&#039;&#039; and &#039;&#039;$Dinky Impact Explosion Radius&#039;&#039; are not valid options!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Dinky Impact Explosion:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Same as Impact Explosion but for Dinky (not armed) explosions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename or &#039;&#039;none&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Dinky Impact Explosion Radius:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Same as Impact Explosion Radius but for Dinky explosions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the [[Particle Effects|particle effect]] which will be used for piercing impacts.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*If this option is specified then piercing impact options below are not valid!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Explosion:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the effect used for events when weapon pierces the target&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename or &#039;&#039;none&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Radius:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the base radius of the effect used for piercing weapon impacts&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Velocity:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the base velocity for the particles piercing the target&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Splash Velocity:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the base velocity for the particles splashing from the target (secondary piercing effects&lt;br /&gt;
*Negative value causes the second batch or particles to splash to opposite direction&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Variance:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the variance added to the particles&lt;br /&gt;
*Values near 0 cause very little variance and values close to 1 cause extreme dispersal.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Life:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the lifetime of the effect for single frame effects&lt;br /&gt;
*For multiple frame effects the lifetime is the lifetime of the animation used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Particles:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the number of particles released per impact&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Draw Modifier:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the multiplier applied to the ships piercing effect limit percentage&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
*Option removed in 3.6.12. Use [[armor.tbl]] to finetune piercing effects.&lt;br /&gt;
&lt;br /&gt;
===$Inflight Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the inflight [[Particle Effects|particle effect]] which is used when the laser is active. This is only used by laser weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
}}&lt;br /&gt;
===$Freeflight Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the [[Particle Effects|particle effect]] which is used when the missile is in the free flight phase. See [[#$Free Flight Time:|$Free Flight Time]] for more information.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*This option is only valid for missile weapons&lt;br /&gt;
}}&lt;br /&gt;
===$Ignition Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the ignition [[Particle Effects|particle effect]] which is used when the missile is transitioning from free flight to homed or unhomed flight.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*This option is only valid for missile weapons&lt;br /&gt;
}}&lt;br /&gt;
===$Homed Flight Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the ignition [[Particle Effects|particle effect]] which is used when the missile is in homed flight mode.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*This option is only valid for missile weapons&lt;br /&gt;
}}&lt;br /&gt;
===$Unhomed Flight Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the ignition [[Particle Effects|particle effect]] which is used when the missile is in unhomed flight mode.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*This option is only valid for missile weapons&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Muzzleflash:===&lt;br /&gt;
*Normally only with flak cannons.&lt;br /&gt;
*Defines the muzzle flash the weapon uses&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, muzzleflash name, as defined in [[mflash.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$EMP Intensity:===&lt;br /&gt;
*If it has an EMP effect, how deeply it scrambles your electronics&lt;br /&gt;
*Basically a percentage, a value of 250 results in a 25% chance of something getting scrambled each frame. &lt;br /&gt;
*Maximum value of 500&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$EMP Time:===&lt;br /&gt;
**Duration of the EMP effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
===$Recoil Modifier:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Multiplies the recoil force of a weapon by this value, use a value greater than 1.0 to increase the force, use a value between 1.0 and 0.0 to decrease.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (defaults to 1.0)&lt;br /&gt;
{{Note| The &amp;quot;apply recoil&amp;quot; weapon flag must be set for this to be valid. If the flag is not set, FSO will throw a warning and automatically set it at runtime.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Leech Weapon:===&lt;br /&gt;
**The amount of weapon energy to drain with each hit (a flat value, not a percentage)&lt;br /&gt;
**Needs the [[#Esuck|Esuck]] flag set to have any effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (defaults to 10.0)&lt;br /&gt;
&lt;br /&gt;
===$Leech Afterburner:===&lt;br /&gt;
**The amount of afterburner fuel to drain with each hit (a flat value, not a percentage)&lt;br /&gt;
**Needs the [[#Esuck|Esuck]] flag set to have any effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (defaults to 10.0)&lt;br /&gt;
&lt;br /&gt;
===$Corkscrew:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Allow corkscrew parameters to be defined&lt;br /&gt;
*&#039;&#039;&#039;+Num Fired:&#039;&#039;&#039;&lt;br /&gt;
**Defines the number of weapons fired in sequence. Same as the standard swarm entry but for corkscrew missiles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of missiles&lt;br /&gt;
*&#039;&#039;&#039;+Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the radius used in the corkscrew motion&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Fire Delay:&#039;&#039;&#039;&lt;br /&gt;
**Defines the delay between missile firings&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Counter rotate:&#039;&#039;&#039;&lt;br /&gt;
**Defines if every other missile rotates to a different direction (clockwise / anticlockwise)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, &#039;&#039;0&#039;&#039; or &#039;&#039;1&#039;&#039;, no or yes&lt;br /&gt;
*&#039;&#039;&#039;+Twist:&#039;&#039;&#039;&lt;br /&gt;
**Defines the speed of rotation movement on the radius of corkscrew motion.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, radians per second}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Electronics:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapons effect against electronics. Requires [[weapons.tbl#&amp;quot;Electronics&amp;quot;|&amp;quot;electronics&amp;quot;]] flag. &#039;&#039;&#039;+New Style:&#039;&#039;&#039; and &#039;&#039;&#039;+Old Style:&#039;&#039;&#039; options are mutually exclusive.&lt;br /&gt;
*&#039;&#039;&#039;+New Style:&#039;&#039;&#039;&lt;br /&gt;
**Defines that the electronics use the new style which enables more options.&lt;br /&gt;
*&#039;&#039;&#039;+Old Style:&#039;&#039;&#039;&lt;br /&gt;
**Defines that the electronics use the old style.  The old style was the way the D-Missile worked in Descent: FreeSpace.&lt;br /&gt;
}}&lt;br /&gt;
{{Table371|&lt;br /&gt;
*&#039;&#039;&#039;+Area Of Effect&#039;&#039;&#039;&lt;br /&gt;
**If specified, allows the electronics effect to apply to every ship hit by this weapon&#039;s blast or shockwave (the &amp;quot;Electronics&amp;quot; flag isn&#039;t necessary with this option).&lt;br /&gt;
}}&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Intensity:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. &#039;&#039;&#039;&#039;&#039;Has been deprecated&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Engine Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. Defines how much longer the disruption effect lasts for engine subsystems.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Weapon Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. Defines how much longer the disruption effect lasts for non-beam turrets.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Turret Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. Defines how much longer the disruption effect lasts for beam turrets.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Sensors Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. Defines how much longer the disruption effect lasts for sensor subsystems.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Randomness Time:&#039;&#039;&#039;&lt;br /&gt;
**Defines the randomness of duration target suffers from the electronics hit. A random number between 0 and this time will be added or subtracted from the disruption time.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
&lt;br /&gt;
* Without any electronics parameters, a weapon with the &amp;quot;electronics&amp;quot; flag will default to the &#039;&#039;Old Style&#039;&#039; mode with a lifetime of 6000 milliseconds and a randomness of 4000 milliseconds.  Thus any ship that gets hit can get disrupted for anywhere between 2 to 10 seconds.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Spawn Angle:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the cone (with an angle) where the spawned weapons appear. &#039;&#039;Value&#039;&#039; gives the angle from the missile&#039;s centerline.  The maximum possible angle between any two child weapons would be &#039;&#039;Value*2&#039;&#039;.&lt;br /&gt;
*Like all spawn options, Spawn Angle should be defined as many times as the carrier weapon has child weapons defined for it (up to 5), before moving to the next option.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, degrees, default is 180}}&lt;br /&gt;
&lt;br /&gt;
===$Spawn Minimum Angle:===&lt;br /&gt;
{{Table202|&lt;br /&gt;
*Defines an inner angle for the cone within which the spawned weapons appear. &#039;&#039;Value&#039;&#039; gives the angle from the missile&#039;s centerline. &lt;br /&gt;
*Like all spawn options, Spawn Minimum Angle should be defined as many times as the carrier weapon has child weapons defined for it (up to 5), before moving to the next option.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, degrees, default is 0}}&lt;br /&gt;
&lt;br /&gt;
===$Spawn Interval:===&lt;br /&gt;
{{Table202|&lt;br /&gt;
*Causes the associated spawn event to happen continuously at this time interval. Enabling this will prevent the spawn event from triggering on detonation.&lt;br /&gt;
*NOTE: Having very large numbers of total children (low interval and/or high count) can cause issues for multiplayer, and you will be warned in multiplayer if the ttotal count is greater then 300.&lt;br /&gt;
*Like all spawn options, Spawn Interval (and its associated Delay) should be defined as many times as the carrier weapon has child weapons defined for it (up to 5), before moving to the next option.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds, minimum is 0.1, &#039;&#039;&#039;You will not be warned for a negative spawn interval. &#039;&#039;&#039; The value will be ignored and the spawn will be treated as a regular detonate spawn if negative. This is on purpose so that continuous/detonate spawns can be set regardless of the order in which they are defined in the flags.}}&lt;br /&gt;
&lt;br /&gt;
====+Delay:====&lt;br /&gt;
{{Table202|&lt;br /&gt;
*Continuous spawn will not begin until this has elapsed.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds, default is 0}}&lt;br /&gt;
&lt;br /&gt;
===$Spawn Effect:===&lt;br /&gt;
{{Table202|&lt;br /&gt;
*Specifies the [[Particle Effects|particle effect]] which will be used for continuous spawns of this weapon. Will not be used for detonation.&lt;br /&gt;
*Like all spawn options, Spawn Effect should be defined as many times as the carrier weapon has child weapons defined for it (up to 5), before moving to the next option.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, the particle effect name}}&lt;br /&gt;
&lt;br /&gt;
===$Local SSM:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the local SSM (Subspace Missile). In effect missile moves via subspace to a position close to the target and starts homing.&lt;br /&gt;
*Weapon must be &#039;&#039;&#039;&#039;&#039;aspect seeking missile&#039;&#039;&#039;&#039;&#039; and must have &#039;&#039;&#039;&#039;&#039;[[Weapons.tbl#&amp;quot;local ssm&amp;quot;|local ssm]]&#039;&#039;&#039;&#039;&#039; flag.&lt;br /&gt;
*&#039;&#039;&#039;+Warpout Delay:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time between the missile launch and the subspace jump.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Warpin Delay:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time missile stays in subspace before exiting.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Stage 5 Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Defines the velocity of the missile after the subspace jump.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second&lt;br /&gt;
*&#039;&#039;&#039;+Warpin Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines how far from the SSM will appear from the outer radius of the target.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Lock Range:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum range where SSM can achieve target lock&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Countermeasure:===&lt;br /&gt;
&lt;br /&gt;
*Defines the countermeasure effectiveness, radius, etc&lt;br /&gt;
{{note| &lt;br /&gt;
*Spoofing chance is defined as &#039;&#039;&#039;cm type effectiveness&#039;&#039;&#039;/&#039;&#039;&#039;[[#+Seeker Strength:|seeker strength]]&#039;&#039;&#039; (missile must be within the countermeasures &#039;&#039;&#039;+Effective Radius:&#039;&#039;&#039;).&lt;br /&gt;
*All countermeasures in the mission perform tests to spoof missiles for two frames after &#039;&#039;&#039;any countermeasure&#039;&#039;&#039; is created in the mission. No, this doesn&#039;t seem to make much sense.&lt;br /&gt;
{{Table382|The global frame counter can be bypassed by using &#039;&#039;&#039;[[#+Pulse Interval:|pulse interval]]&#039;&#039;&#039;.}}&lt;br /&gt;
*&#039;&#039;&#039;Provisional&#039;&#039;&#039;; Countermeasures are only given one chance to spoof any individual missile. This makes tuning seeker strength/effectiveness meaningful.&lt;br /&gt;
**Previously some record of which countermeasures had been seen by each missile was kept, but it broke when multiple countermeasures were involved. A good chance of breaking with two countermeasures, and a guaranteed chance of breaking with three or more. This reduced the impact of the seeker strength/effectiveness ratio, but was partly cancelled out by the 2 frames thing.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table3610|&lt;br /&gt;
====&#039;&#039;&#039;+Heat Effectiveness:&#039;&#039;&#039;====&lt;br /&gt;
*Defines the countermeasures effectiveness against heat seeking missiles&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, cm effectiveness&lt;br /&gt;
**Default: 1.0&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Aspect Effectiveness:&#039;&#039;&#039;====&lt;br /&gt;
*Defines the countermeasures effectiveness against aspect seeking missiles&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, cm effectiveness&lt;br /&gt;
*Default: 1.0&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Effective Radius:&#039;&#039;&#039;====&lt;br /&gt;
*Defines the countermeasures effective radius&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
**Default: 300.0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table373|&lt;br /&gt;
====+Missile Detonation Radius:====&lt;br /&gt;
*Defines the radius within which a missile homing on this countermeasure will trigger a detonation (see &#039;&#039;&#039;+Single Missile Kill:&#039;&#039;&#039;)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
**Default: 40.0&lt;br /&gt;
{{note| only affects missiles homing on countermeasures, i.e. heat or aspect with &amp;quot;pulls aspect seekers&amp;quot; flag}}&lt;br /&gt;
&lt;br /&gt;
====+Single Missile Kill:====&lt;br /&gt;
*Defines if countermeasures will detonate only the missile homing on this countermeasure, or every missile within &#039;&#039;&#039;+Missile Detonation Radius:&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default: false&lt;br /&gt;
{{note| only affects missiles homing on countermeasures, i.e. heat or aspect with &amp;quot;pulls aspect seekers&amp;quot; flag}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table382|&lt;br /&gt;
====+Pulse Interval:====&lt;br /&gt;
*Defines how much time passes between each pulse of this countermeasure.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
**Default: 0&lt;br /&gt;
{{note| any value less than or equal to 0 means the countermeasure doesn&#039;t pulse, and uses the global 2-frame counter after any countermeasure is fired.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table212|&lt;br /&gt;
====+Use Fire Wait:====&lt;br /&gt;
*Makes the countermeasure fire wait use what is specified in the &#039;&#039;&#039;$Fire Wait:&#039;&#039;&#039; section of the weapon.&lt;br /&gt;
*Default countermeasure fire wait is 333 milliseconds, regardless of that value was set in &#039;&#039;&#039;$Fire Wait:&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====+Failure Launch Delay Multiplier for AI:====&lt;br /&gt;
*After a failed countermeasure launch the game waits a certain time interval before attempting another launch.&lt;br /&gt;
*Previously, the amount of time was calculated as (&#039;fire wait&#039; + 2000 * &#039;countermeasure firing chance&#039;).&lt;br /&gt;
*If set to a non negative number, this value will be multiplied to the fire wait value to determine the amount of time before another countermeasure can be attempted.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default: -1&lt;br /&gt;
{{note| any value less than 0 means the default formula will be used.}}&lt;br /&gt;
&lt;br /&gt;
====+Successful Launch Delay Multiplier for AI:====	&lt;br /&gt;
*After a successful countermeasure launch the game waits a certain time interval before attempting another launch.&lt;br /&gt;
*This value is multiplied to the fire wait value to determine the amount of time before another countermeasure can be attempted.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default: 2&lt;br /&gt;
{{note| any value less than 0 means the default value will be used.}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$BeamInfo:===&lt;br /&gt;
*&#039;&#039;&#039;+Type:&#039;&#039;&#039;&lt;br /&gt;
**Defines the type of beam in question. Beam types: 0 is a standard non-slashing type beam. 1 is a slashing type beam. 2 is a targeting beam that is used to trigger SSMs. 3 is a beam type that fires pulses in anti-fighter role and acts like type 0 beam in other roles. 4 is a beam that is restricted to what is directly in front of it, along turrets firepoints normal.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;,, only values from 0 to 4 are legal&lt;br /&gt;
*&#039;&#039;&#039;+Life:&#039;&#039;&#039;&lt;br /&gt;
**How long it lasts once the beam is actually firing.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
*&#039;&#039;&#039;+Warmup:&#039;&#039;&#039;&lt;br /&gt;
**Warmup time&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Warmdown:&#039;&#039;&#039;&lt;br /&gt;
**Warmdown time&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Radius:&#039;&#039;&#039;&lt;br /&gt;
**Muzzle glow radius&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+PCount:&#039;&#039;&#039;&lt;br /&gt;
**Particles spewed every interval. ??&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+PRadius:&#039;&#039;&#039;&lt;br /&gt;
**Particle radius&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+PAngle:&#039;&#039;&#039;&lt;br /&gt;
**Defines the random &amp;quot;cone&amp;quot; where the particles are generated&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, angle of the cone&lt;br /&gt;
*&#039;&#039;&#039;+PAni:&#039;&#039;&#039;&lt;br /&gt;
**Animation used to represent the particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+Miss Factor:&#039;&#039;&#039;&lt;br /&gt;
**The higher the numbers, the more likely that this beam will miss. One value for every difficulty level&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Miss Factor&#039;&#039;&#039;&#039;&#039;, five &#039;&#039;&#039;floats&#039;&#039;&#039;, very easy, easy, moderate, hard, insane, respectively.&lt;br /&gt;
***Example: 0.5 0.975 1.35 1.875 2.5&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;IFF specific miss factors&#039;&#039;&#039;&lt;br /&gt;
**Identical to the preceding entry but IFF specific. Replace the &amp;lt;IFF&amp;gt; with the name of the IFF from [[iff_defs.tbl]]&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;+&amp;lt;IFF&amp;gt; Miss Factor:&#039;&#039;&#039;&#039;&#039;, five &#039;&#039;&#039;floats&#039;&#039;&#039;, very easy, easy, moderate, hard, insane, respectively.&lt;br /&gt;
***Example: 0.5 0.975 1.35 1.875 2.5}}&lt;br /&gt;
*&#039;&#039;&#039;+BeamSound:&#039;&#039;&#039;&lt;br /&gt;
**Corresponding looping sound effect when the beam is firing.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+WarmupSound:&#039;&#039;&#039;&lt;br /&gt;
**Corresponding sound effect when the beam is beam warmed up.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+WarmdownSound:&#039;&#039;&#039;&lt;br /&gt;
**Corresponding sound effect when the beam is warming down.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+Muzzleglow:&#039;&#039;&#039;&lt;br /&gt;
**Defines the bitmap used to create the muzzle glow&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
{{Table372|&lt;br /&gt;
*&#039;&#039;&#039;+Directional Glow:&#039;&#039;&#039;&lt;br /&gt;
**Defines the length to stretch the muzzleglow along the beam.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, length in meters, the muzzleglow is rendered along (in the same plane) as the beam instead of perpendicular to the camera.}}&lt;br /&gt;
*&#039;&#039;&#039;+Shots:&#039;&#039;&#039;&lt;br /&gt;
**Defines into how may invidual shots the type 3 (AAA) beams are divided. Note total firing is the same as the +Life:&lt;br /&gt;
**ALSO AFFECTS FIGHTER BEAMS. If greater than 0, fires from up to that many fire points at a time before cycling. 1 mimics the behavior of weapons with the &amp;quot;cycle&amp;quot; flag, 0 fires from all available fire points like normal weapons.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, Default: 1&lt;br /&gt;
*&#039;&#039;&#039;+ShrinkFactor:&#039;&#039;&#039;&lt;br /&gt;
**How much of the beam&#039;s life is remaining before it starts to shrink in width. (0.1 means 10% life left)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value from 0 to 1&lt;br /&gt;
*&#039;&#039;&#039;+ShrinkPct:&#039;&#039;&#039;&lt;br /&gt;
**What factor of beam&#039;s width is subtracted per second.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value from 0 to 1&lt;br /&gt;
{{Table202|&lt;br /&gt;
*&#039;&#039;&#039;+GrowFactor:&#039;&#039;&#039;&lt;br /&gt;
**How much of the beam&#039;s life is remaining before it starts to grow in width. (1.0 means as soon as the beam fires)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value from 0 to 1&lt;br /&gt;
*&#039;&#039;&#039;+GrowPct:&#039;&#039;&#039;&lt;br /&gt;
**What factor of beam&#039;s width is added per second.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value from 0 to 1&lt;br /&gt;
*&#039;&#039;&#039;+Initial Width Factor:&#039;&#039;&#039;&lt;br /&gt;
**What factor of the beam&#039;s maximum width it starts with.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value from 0 to 1}}&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Range:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum range where the beam still has any effect.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Attenuation:&#039;&#039;&#039;&lt;br /&gt;
**Defines the point where the damage caused by the beam starts to attenuate. At maximum range damage is zero.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, from 0 - firing point to 1 - no effect&lt;br /&gt;
***Default: 1}}&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*&#039;&#039;&#039;+BeamWidth:&#039;&#039;&#039;&lt;br /&gt;
**Defines the width of the beam for collision test purposes instead of using widest beam section.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&lt;br /&gt;
{{Table38|&lt;br /&gt;
*&#039;&#039;&#039;+Beam Flash Particle Effect:&#039;&#039;&#039;&lt;br /&gt;
**Specifies the beam flash [[Particle Effects|particle effect]].&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, particle effect name&lt;br /&gt;
**If this is specified then &#039;&#039;&#039;+Beam Flash Effect&#039;&#039;&#039; and &#039;&#039;&#039;+Beam Flash Radius&#039;&#039;&#039; are not valid options!&lt;br /&gt;
}}&lt;br /&gt;
*&#039;&#039;&#039;+Beam Flash Effect:&#039;&#039;&#039;&lt;br /&gt;
**Defines the additional impact flash effect for the beam.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+Beam Flash Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the radius for the additional impact flash effect.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Effect:&#039;&#039;&#039;&lt;br /&gt;
**Defines the beam piercing (bursting flames) effect for the beam.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the average radius used for the beam piercing effects.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Effect Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Defines the base velocity for the piercing effects&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Splash Effect Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Defines the base velocity for the secondary piercing effects&lt;br /&gt;
**Negative velocity causes the particles to move to opposite direction&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Effect Variance:&#039;&#039;&#039;&lt;br /&gt;
**Defines the variances of the particles from the main path&lt;br /&gt;
**Values close to 0 cause minimum variance, higher values cause higher variances&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;$Section:&#039;&#039;&#039;&lt;br /&gt;
**Beams are made up of up to five sections layered atop one another to create the effect. Each section has its own parameters.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
:*&#039;&#039;&#039;+Index:&#039;&#039;&#039;&lt;br /&gt;
:**Field used to define with [[Modular Tables]] the beam section which is edited.&lt;br /&gt;
:**Only valid when editing beam sections that already exist in other tables. Attempting to index new sections will generate warnings, adding new sections is the default behavior for un-indexed sections.&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, index number legal values are from 0 to 5&lt;br /&gt;
:*&#039;&#039;&#039;+remove&#039;&#039;&#039;&lt;br /&gt;
:**Removes the set beam section.&lt;br /&gt;
:*&#039;&#039;&#039;+nocreate&#039;&#039;&#039;&lt;br /&gt;
:**Does not create new section for the beam}}&lt;br /&gt;
&lt;br /&gt;
:*&#039;&#039;&#039;+Width:&#039;&#039;&#039;&lt;br /&gt;
:**Width of the section&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
:*&#039;&#039;&#039;+Texture:&#039;&#039;&#039;&lt;br /&gt;
:**Texture for the section&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
:*&#039;&#039;&#039;+RGBA Inner:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the color and transparency of the center of the section&lt;br /&gt;
{{Table3613|:**Not used in current builds. Settings entered here will have no effect.}}&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue, alpha, respectively, value from 0 to 255&lt;br /&gt;
:***Example: 255 255 255 255&lt;br /&gt;
:*&#039;&#039;&#039;+RGBA Outer:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the color and transparency of the edges of the section&lt;br /&gt;
{{Table3613|:**Not used in current builds. Settings entered here will have no effect.}}&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue, alpha, respectively, value from 0 to 255&lt;br /&gt;
:***Example: 150 150 150 10&lt;br /&gt;
:*&#039;&#039;&#039;+Flicker:&#039;&#039;&#039;&lt;br /&gt;
:**Defines how much the section flickers&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value from 0 to 1&lt;br /&gt;
:*&#039;&#039;&#039;+Zadd:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the &#039;thickness&#039; of the section. The higher the Zadd, the closer the section appears to be. (Zadd can be safely ignored; it actually does nothing.)&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
{{Table3610|&lt;br /&gt;
:*&#039;&#039;&#039;+Tile Factor:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the beam texture tiling factor. Second number defines the tiling type. Type 0 tiles the graphic in the beam as many times as defined by the 1st number. Type 1 uses the 1st value as the lenght of the tile.&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:*&#039;&#039;&#039;+Translation:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the speed of translation of the beam, a positive value moves from the impact point to the firing point, while a negative value moves away from the firing point towards the impact point. Measured in tiles per second, where the tile count is defined in the &amp;quot;+Tile Factor:&amp;quot; field above.&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Pspew:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines a particle spew effect for the given weapon&lt;br /&gt;
}}{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;+Index:&#039;&#039;&#039;&lt;br /&gt;
**indicates which spewer to add/edit/delete. may be 0-3. used for xmt compatibility.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Remove&#039;&#039;&#039;&lt;br /&gt;
**removes spewer at +Index: (requires +index:)&lt;br /&gt;
*&#039;&#039;&#039;+Type:&#039;&#039;&#039;&lt;br /&gt;
**type of particle spew&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;, Default, Helix, Sparkler, Ring, or Plume &#039;&#039;&#039;&lt;br /&gt;
}}{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Count:&#039;&#039;&#039;&lt;br /&gt;
**Defines how many particles are spawn when they are ready to be created (at each +Time: interval)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Time:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time in milliseconds between next particle(s) spewed&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Vel:&#039;&#039;&#039;&lt;br /&gt;
**Defines the created particles velocity as percentage of the weapons velocity&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the size of the created particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Life:&#039;&#039;&#039;&lt;br /&gt;
**Defines how long the particles last.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
*&#039;&#039;&#039;+Scale:&#039;&#039;&#039;&lt;br /&gt;
**Defines the particle spread. Small value will make particles group together&lt;br /&gt;
**typically controls how big the effect is or how fast it moves away from the weapon path on a perpendicular (or sometimes arbitrary) axis. &lt;br /&gt;
**helical spews and rings use this value to control how fast the particle helix moves away from the central axis.&lt;br /&gt;
**sparklers use this to control how fast particles move away from the spawn point, in any direction&lt;br /&gt;
**plumes use this to set the diameter of the disk across which particles are spawned&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;+Z Scale:&#039;&#039;&#039;&lt;br /&gt;
**for sparklers, allows you to elongate the effect to surround other effects, like lasers. essentially a length multiplier&lt;br /&gt;
**for plume, it multiplies against +scale to set the plume to spread or converge, zero would be full convergence, 1 would be straight flight, and bigger numbers would cause particles to diverge from the disk.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Rotation Rate:&#039;&#039;&#039;&lt;br /&gt;
**used only by helical spews, controls how many rotations per second the helix makes&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;, may be negative, useful for setting up 2 spews that spin in opposite directions&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Offset:&#039;&#039;&#039;&lt;br /&gt;
**position of effect with regards to the weapon center&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Initial Velocity:&#039;&#039;&#039;&lt;br /&gt;
**to indicate both direction and speed of particle effects regards to the weapon velocity and +scale:&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Bitmap:&lt;br /&gt;
**Defines the animation used to create the particle spew effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Tag:===&lt;br /&gt;
*Allowed for secondary weapons&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Allowed for primary weapons and secondary weapons}}&lt;br /&gt;
&lt;br /&gt;
*Sets this weapon as a TAG missile, level 1, 2, or 3. The second number is the duration in seconds.&lt;br /&gt;
*TAG Level 1 will illuminate hidden targets such as stealth fighters or ships normally obscured by nebula conditions.&lt;br /&gt;
*TAG Level 2 illiminates targets much like TAG Level 1, but turrets will prefer to shoot at them over other ships.&lt;br /&gt;
*TAG Level 3 has no effect in retail.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*TAG Level 3 allows the weapon to trigger [[Weapon.tbl#$SSM:|SSMs]]}}&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, TAG level and seconds respectively&lt;br /&gt;
*&#039;&#039;&#039;Note&#039;&#039;&#039;: TAG will not trigger unless the weapon in question has a non-zero damage value.&lt;br /&gt;
&lt;br /&gt;
===$SSM:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapons SSM index number.&lt;br /&gt;
*Requires [[Weapons.tbl#$Tag:|TAG level 3]] or a targeting beam.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Now also accepts SSM strike names.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$FOF:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the field of fire for the weapon. Causes weapon to fire into a firing cone instead of direct firing line thus causing light inaccuracy&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, degrees}}&lt;br /&gt;
&lt;br /&gt;
====+FOF Spread Rate:====&lt;br /&gt;
{{Table37|&lt;br /&gt;
*Defines the spread rate of the field of fire. This controls how the FOF increases over time while the weapon is firing.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&#039;, rate}}&lt;br /&gt;
&lt;br /&gt;
====+FOF Reset Rate:====&lt;br /&gt;
{{Table37|&lt;br /&gt;
*Rate at which the spread decreases if the weapon isn&#039;t firing.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&#039;, rate&lt;br /&gt;
*This is required if &#039;&#039;&#039;+FOF Spread Rate:&#039;&#039;&#039; is present}}&lt;br /&gt;
&lt;br /&gt;
====+Max FOF:====&lt;br /&gt;
{{Table37|&lt;br /&gt;
*The maximum FOF. After the FOF reaches this value it will not increase any further.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&#039;, degrees. Must be greater than or equal to zero.&lt;br /&gt;
*This is required if &#039;&#039;&#039;+FOF Spread Rate:&#039;&#039;&#039; is present}}&lt;br /&gt;
&lt;br /&gt;
===$Shots:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the number of shots every time the weapon is fired.&lt;br /&gt;
*Works only for primary weapons&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of shots}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$decal:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines impact decals if they are in use&lt;br /&gt;
*&#039;&#039;&#039;+texture:&#039;&#039;&#039;&lt;br /&gt;
**Defines the texture used for impact decals (can use &#039;&#039;&#039;&#039;&#039;-burn&#039;&#039;&#039;&#039;&#039; and &#039;&#039;&#039;&#039;&#039;-glow&#039;&#039;&#039;&#039;&#039; textures)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+backface texture:&#039;&#039;&#039;&lt;br /&gt;
**Defines ???&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the size of the impact decals on target&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+burn time:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time the &#039;&#039;&#039;&#039;&#039;-burn&#039;&#039;&#039;&#039;&#039; texture appears on the target&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds}}&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Feature removed - table parsing retained to maintain compatibility}}&lt;br /&gt;
&lt;br /&gt;
===$Impact decal:===&lt;br /&gt;
{{Table190|&lt;br /&gt;
*Defines an impact decal (think bullet impact/scorch mark) using the new system introduced in FSO 19.0.0.&lt;br /&gt;
**Syntax:  &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, this must match to one of the entries in a [[Decals|decal tbm]].&lt;br /&gt;
*&#039;&#039;&#039;+Radius:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, Radius of the impact decal; default is 1.0&lt;br /&gt;
*&#039;&#039;&#039;+Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: Either &#039;&#039;&#039;&#039;&#039;Eternal&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, lifetime in seconds&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Transparent:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines weapon effect as transparent. Enables optional fields for &#039;alpha animations&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Alpha:&#039;&#039;&#039;&lt;br /&gt;
**Defines the strenght of the alpha (transparency). And also the maximum value for the alpha cycle option&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, from 0 to 1&lt;br /&gt;
*&#039;&#039;&#039;+Alpha Min:&#039;&#039;&#039;&lt;br /&gt;
**Defines the minimum alpha value for alpha cycle option&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, from 0 to 1&lt;br /&gt;
*&#039;&#039;&#039;+Alpha Cycle:&#039;&#039;&#039;&lt;br /&gt;
**Defines the change in alpha per frame, between &#039;&#039;&#039;Alpha&#039;&#039;&#039; and &#039;&#039;&#039;Alpha Min&#039;&#039;&#039; values&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Weapon Hitpoints:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the amount of hitpoints a weapon has.&lt;br /&gt;
*Weapons with &#039;&#039;&#039;&amp;quot;bomb&amp;quot;&#039;&#039;&#039; flag have 50 hitpoints by default&lt;br /&gt;
*Giving weapon hitpoints makes it possible for the weapon to be shot down or be destroyed by EMP.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Armor Type:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*REQUIRES ADDITIONAL TABLE. Defines the armor type for the weapon. This works exactly like ship armor types.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the armor as defined in [[armor.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Burst Shots:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the number of shots in a burst&lt;br /&gt;
*Shots in a burst use shorter ( &#039;&#039;&#039;$Burst Delay:&#039;&#039;&#039; ) delay than usually&lt;br /&gt;
*If this weapon is cycling each individual firing event counts as one burst shot, so bursts end sooner in time for large banks than small.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Burst Delay:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the time in milliseconds between the shots in a burst&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Burst Flags:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the flags used to define the burst firing behaviour&lt;br /&gt;
**Syntax: ( &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039; ), list of flags&lt;br /&gt;
**Available burst flags:&lt;br /&gt;
***&#039;&#039;&#039;&amp;quot;fast firing&amp;quot;&#039;&#039;&#039;, acts as if &#039;&#039;&#039;same turret cooldown&#039;&#039;&#039; flag would be used between the shots in the burst.&lt;br /&gt;
***&#039;&#039;&#039;&amp;quot;random length&amp;quot;&#039;&#039;&#039;, makes AI to fire burst of random length (from 1 to burst shots).}}&lt;br /&gt;
{{Table202|&#039;&#039;&#039;&amp;quot;resets&amp;quot;&#039;&#039;&#039;, as long as a full fire wait has passed since last fired, the burst is reset and can be fired in full again.}}&lt;br /&gt;
&lt;br /&gt;
===$Thruster Flame Effect:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the filename of the effect used on the modeled thruster of the missile&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Thruster Glow Effect:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the filename of the effect used on the glow type effect of the missile&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Thruster Glow Radius Factor:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the radius multiplier for the thruster&#039;s glow type effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$On Create:===&lt;br /&gt;
{{Table212|&lt;br /&gt;
*Defines an [[Action System|action system]] program set to be executed when a weapon of this type is created. Only applicable to laser and missile style weapons.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Substitute:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
Defines a pattern of ammo to substitute for primary or secondary weapons. &#039;&#039;&#039;$Substitute:&#039;&#039;&#039; can be repeated any number of times (so you could make something like a rainbow laser with several ammo substitutions, for example). If neither &#039;&#039;+period&#039;&#039; or &#039;&#039;+index&#039;&#039; is specified, it is assumed to be equivalent to &#039;&#039;+index: &#039;&#039;&#039;0&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Weapon Name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Swarm missiles act in a strange way when used with $Substitute, use at your own risk.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Table3615|&lt;br /&gt;
Turrets can use $Substitute as well.&lt;br /&gt;
}}&lt;br /&gt;
====+period:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
FSO will substitute &#039;&#039;&#039;Weapon Name&#039;&#039;&#039; every &#039;&#039;period&#039;&#039; shots.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Positive Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;You may not define both +period and +index for the same $Substitute entry&#039;&#039;&#039;}}&lt;br /&gt;
=====+offset:=====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
A suboption of +period, offsets the substitute pattern according to the launched ammo. For example, an offset of 3 and a period of 4 will substitute on the 3rd ammo launched, and then every 4th ammo after that.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Positive Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
====+index:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
FSO will substitute the &#039;&#039;&#039;Weapon Name&#039;&#039;&#039; at firepoint &#039;&#039;index&#039;&#039; in the shot pattern. Similar to carefully using both +period and +offset, but is not affected by ships with different firepoint numbers. i.e. Firepoint &#039;&#039;index&#039;&#039; will always have the substitution, while +period and +offset will cycle at different rates dependant on the number of firepoints.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Positive Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;You may not define both +period and +index for the same $Substitute entry&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
==Weapons.tbl Flags==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Electronics&amp;quot;===&lt;br /&gt;
*Will seize up the weapons and engines systems of any ship for a short period of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Spawn &#039;&#039;Name&#039;&#039;,&#039;&#039;Value&#039;&#039;&amp;quot;===&lt;br /&gt;
*Will spawn the specified number of defined missiles upon detonation.&lt;br /&gt;
*The flag will parse without a value, using a default of 10.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Multiple spawn types can be defined for a single &#039;carrier&#039; weapon up to maximum of 5 different weapons}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Remote Detonate&amp;quot;===&lt;br /&gt;
*Can be triggered remotely via a second press on the trigger&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Big Ship&amp;quot;===&lt;br /&gt;
*These weapons cannot be mounted on small ships like fighters, bombers, sentry guns etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Huge&amp;quot;===&lt;br /&gt;
*Allows this weapon to do the final 10% damage to a ship with the &amp;quot;Big Damage&amp;quot; flag. Also the AI will not try to hit fighters with it, but only if the weapon is in a turret or is a secondary. If the weapon is a primary in a fighter then there are no targeting restrictions. See [[Weapons.tbl#.22capital.2B.22|capital+]] instead.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Supercap&amp;quot;===&lt;br /&gt;
*Allows this weapon to do the final 75% damage to a ship with the &amp;quot;supercap&amp;quot; flag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Bomber+&amp;quot;===&lt;br /&gt;
*The AI will prefer to use this weapon against bombers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;child&amp;quot;===&lt;br /&gt;
*Cannot be set as a weapon on any ship, but is instead a child of a weapon. Usually defined with &amp;quot;Spawn &#039;&#039;Name&#039;&#039;,&#039;&#039;Value&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Bomb&amp;quot;===&lt;br /&gt;
*Makes this weapon target-able with the B key and interceptable by AIs&lt;br /&gt;
** Has been long thought to make the AI prefer this weapon against large ships, but in fact has no effect on AI weapon selection.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;No Dumbfire&amp;quot;===&lt;br /&gt;
*Missile will not fire without a lock&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;in tech database&amp;quot;===&lt;br /&gt;
*Has the weapon in the tech database at the start of the campaign&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Player allowed&amp;quot;===&lt;br /&gt;
*Allows this weapon as a player weapon.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;EXTREMELY IMPORTANT NOTE:&#039;&#039;&#039;&lt;br /&gt;
**Whenever you plan to use a weapon as a player one in your campaign or missions, &#039;&#039;&#039;USE THIS FLAG&#039;&#039;&#039;.&lt;br /&gt;
**Not using it can cause problems within fs_open and it&#039;s a BAD MOD DESIGN.&lt;br /&gt;
**In the future, fs_open will maybe be able to avoid these problems but, nevertheless, it&#039;s still a BAD DESIGN.&lt;br /&gt;
**As another possible example: be careful to update &amp;quot;retail&amp;quot; tables if you plan to use Shivan weapons in player fighters.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Particle Spew&amp;quot;===&lt;br /&gt;
*Makes the weapon projectile spew out particles&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Can be defined with [[Weapons.tbl#$Pspew:|Particle Spew parameters]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;EMP&amp;quot;===&lt;br /&gt;
*This weapon will have an EMP effect on any ship within the blast radius&lt;br /&gt;
*Can be defined with [[Weapons.tbl#$EMP_Intensity:|EMP Intensity]] and [[Weapons.tbl#$EMP_Time:|EMP Time]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Esuck&amp;quot;===&lt;br /&gt;
*Drains the target&#039;s energy banks&lt;br /&gt;
*Can be defined with [[Weapons.tbl#$Leech_Weapon:|Leech Weapon]] and [[Weapons.tbl#$Leech_Afterburner:|Leech Afterburner]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Flak&amp;quot;===&lt;br /&gt;
*Makes this weapon a [[weapons.tbl#Flak_Guns|flak gun]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Corkscrew&amp;quot;===&lt;br /&gt;
*Makes this weapon spiral AND swarm 4.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Can be defined with [[Weapons.tbl#$Corkscrew:|Corkscrew parameters]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shudder&amp;quot;===&lt;br /&gt;
*Makes your ship shudder while you&#039;re firing the weapon&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;lockarm&amp;quot;===&lt;br /&gt;
*Requires a target lock in order to arm its warhead. In other words weapon causes less damage if it hits the target without target lock.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;beam&amp;quot;===&lt;br /&gt;
*Makes this weapon a [[weapons.tbl#Beam Cannons|beam cannon]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;stream&amp;quot;===&lt;br /&gt;
* Does nothing&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;puncture&amp;quot;===&lt;br /&gt;
*Reduces hull damage by 75%&lt;br /&gt;
The AI will prefer these weapons for anti-subsystem use&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;countermeasure&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapon as a countermeasure}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Ballistic&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapon as a ballistic weapon that needs ammunition.&lt;br /&gt;
*Make sure you define the size and reload rate for ballistic weapons}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;pierce shields&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Causes weapons to penetrate shield without causing damage to it.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no pierce shields&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Prevents weapons (beams) from piercing shields causing shields to be damaged by weapons first.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;local ssm&amp;quot;===&lt;br /&gt;
{{Table3610| }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;tagged only&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Weapon can only be fired at tagged targets}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;beam no whack&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Disables beam whacking (push). Practically same as setting beam mass to zero.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;cycle&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Causes weapon to alternate between firing points}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;small only&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Causes AI to use the weapon only on small targets (fighters, bombers etc.) Only applies to the target selection of turrets, has no effect on the behavior of fighters picking primary and secondary bank weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;same turret cooldown&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Forces the turrets to fire on the designated rate of fire on all difficulty levels and all AI levels}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;apply no light&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Prevents light from being applied to the weapon model.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;training&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Sets weapon to be of training weapon type. ?}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;smart spawn&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Forces turret fired spawn weapon of this type to be fired like normal weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;inherit parent target&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Sets spawned &#039;child&#039; weapons to use parent weapon&#039;s target.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no emp kill&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the weapon (with hitpoints) to be immune to automatic EMP destruction.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;untargeted heat seeker&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the weapon as a heatseeker type missile which acquires its target by itself.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no radius doubling&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Prevents weapon radius from being doubled when doing collision test. Makes bombs harder to intercept.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no subsystem homing&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Prevents weapon from acquiring a subsystem as its target. Missile homing points are spread over the target ship.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no lifeleft penalty&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Prevents weapon lifetime from being penalized if the angle to the target is too big.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;can be targeted&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Allows weapon to be targeted by player. Does not influence AI}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;show on radar&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Allows weapon to be visible on the radar}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;show friendly on radar&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Allows friendly, otherwise visible to radar weapon, to be visible on player radar}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;capital+&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Tells AI to use this weapon only on capital ships}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;chain external model fps&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Tells game to keep switching external model firingpoints when firing}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;external model launcher&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Tells game that the external model is a launcher so that it would be kept static without loading motion}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;takes blast damage&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Weapon takes damage from weapon blasts}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;takes shockwave damage&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Weapon takes damage from shockwaves}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;ciws&amp;quot;===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Weapon can deal shockwave/blast damage to bombs, regardless of whether the target weapons have the &amp;quot;take blast/shockwave damage&amp;quot; flags.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;render flak&amp;quot;===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Normally, flak shells are not rendered. This flag switches rendering on for those weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;anti-subsystem beam&amp;quot;===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Beam weapons with this flag can target subsystems on enemy ships, just like normal weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no primary linking&amp;quot;===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Primary weapons with this flag can not be linked with other weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;same emp time for capships&amp;quot;===&lt;br /&gt;
{{Table37|&lt;br /&gt;
*capships affected by this weapon will use the tabled EMP time rather than the fixed retail value (7.5 secs)}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no primary linked penalty&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Primary weapons with this flag do not incur the retail linked fire penalty}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no homing speed ramp&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Locked homing weapons will not perform the standard 1 second long acceleration when fired. Note that use of $Acceleration Time is &#039;&#039;&#039;not&#039;&#039;&#039; affected by this flag.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;pulls aspect seekers&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*If an aspect seeker is grabbed by this countermeasure the missile will follow the countermeasure instead of going into dumbfire mode.&lt;br /&gt;
&#039;&#039;&#039;Only valid for countermeasures!&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;turret interceptable&amp;quot;===&lt;br /&gt;
===&amp;quot;fighter interceptable&amp;quot;===&lt;br /&gt;
===&amp;quot;interceptable&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Allows turrets/fighters/both (respectively) to shoot at this weapon without requiring it to be a bomb. If this is the first time this weapon has been defined, it also gives it a default of 25 hitpoints so that it can be shot down.&lt;br /&gt;
&#039;&#039;&#039;If you use a TBM to give this flag to an existing weapon, you&#039;ll need to specify hitpoints manually (unless you want it to be unkillable but still draw defensive fire).&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;apply recoil&amp;quot;===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*A ship that fires a weapon with this flag will experience a recoil effect, slowing the ship down and, with lighter strikecraft, inducing some rotation if the firing points are offset from the center of mass.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;don&#039;t spawn if shot&amp;quot;===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Prevents parent weapons from spawning children in the even of the parent weapon being shot down.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;die on lost lock&amp;quot;===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Aspect seeking missiles (only, not heat seekers) will detonate upon losing their lock. Currently they only lose lock if decoyed by a countermeasure, AND &amp;quot;pulls aspect seekers&amp;quot; or similar is not set. The detonation will use their &amp;quot;dinky&amp;quot; explosion (i.e. same as if ran out of lifetime).}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no doublefire&amp;quot;===&lt;br /&gt;
{{Table202|&lt;br /&gt;
*Prevents dual-firing of secondary weapons. If the ship tries to dual-fire a weapon with this flag they are set back to single fire.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;require exact los&amp;quot;===&lt;br /&gt;
{{Table202|&lt;br /&gt;
*Prevent AI form firing this weapon from a turret or as a secondary weapon if there is no clear line of sight from the weapons firing point to its targeted ship (center). Note that this may keep the weapon trained on a target out of sight while another target may be available to shoot.}}&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
*Usually not altered. Only one can exist&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*More than one can exist}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Name:===&lt;br /&gt;
*Name of the countermeasure&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Velocity:===&lt;br /&gt;
*Defines the speed of the countermeasure, relative to the ship.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meter per second&lt;br /&gt;
&lt;br /&gt;
===$Fire Wait:===&lt;br /&gt;
*Definies the minumum time between the countermeasure launches&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lifetime===&lt;br /&gt;
*Countermeasure&#039;s life time is defined between with minimum and maximum lifetime&lt;br /&gt;
*&#039;&#039;&#039;$Lifetime Min:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
*&#039;&#039;&#039;$Lifetime Max:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$LaunchSnd:===&lt;br /&gt;
*Defines the sound for the countermeasure launch&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Model:===&lt;br /&gt;
*Defines the used model file (.pof)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Player Weapon Precedence==&lt;br /&gt;
*First the primary weapons are defined, from most powerful to least powerful, and then the same for secondaries&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot; &amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039;), names of the weapons&lt;br /&gt;
*Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Player Weapon Precedence: (&lt;br /&gt;
     &amp;quot;UD-8 Kayser&amp;quot;&lt;br /&gt;
     &amp;quot;Prometheus R&amp;quot;&lt;br /&gt;
     &amp;quot;Subach HL-7&amp;quot;&lt;br /&gt;
     &amp;quot;Harpoon&amp;quot;&lt;br /&gt;
     &amp;quot;Tempest&amp;quot;&lt;br /&gt;
     &amp;quot;Rockeye&amp;quot;   )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sample==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Primary Weapons&lt;br /&gt;
&lt;br /&gt;
$Name:                            @Subach HL-7&lt;br /&gt;
   +Title:                           XSTR(&amp;quot;GTW Subach HL-7&amp;quot;, 3243)&lt;br /&gt;
   +Description:&lt;br /&gt;
XSTR( &amp;quot;Standard Issue&lt;br /&gt;
Level 3 Hull Damage&lt;br /&gt;
Level 2 Shield Damage&amp;quot;, 3244)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
   +Tech Title:                      XSTR(&amp;quot;Subach HL-7&amp;quot;, 146)&lt;br /&gt;
   +Tech Anim:                       Tech_Subach_HL-7&lt;br /&gt;
   +Tech Description:&lt;br /&gt;
XSTR(&lt;br /&gt;
&amp;quot;Descriptive text...&amp;quot;, -1)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
$Model File:                      none&lt;br /&gt;
   @Laser Bitmap:                    newglo9&lt;br /&gt;
   @Laser Glow:                      2_laserglow03&lt;br /&gt;
   @Laser Color:                     250, 0, 0&lt;br /&gt;
   @Laser Color2:                    0, 0, 250&lt;br /&gt;
   @Laser Length:                    10.0&lt;br /&gt;
   @Laser Head Radius:               0.90&lt;br /&gt;
   @Laser Tail Radius:               0.90&lt;br /&gt;
$Mass:                            0.2&lt;br /&gt;
$Velocity:                        450.0&lt;br /&gt;
$Fire Wait:                       0.2&lt;br /&gt;
$Damage:                          15&lt;br /&gt;
$Armor Factor:                    0.9&lt;br /&gt;
$Shield Factor:                   0.7&lt;br /&gt;
$Subsystem Factor:                0.3&lt;br /&gt;
$Lifetime:                        2.0&lt;br /&gt;
$Energy Consumed:                 0.20&lt;br /&gt;
$Cargo Size:                      0.0&lt;br /&gt;
$Homing:                          NO&lt;br /&gt;
$LaunchSnd:                       76&lt;br /&gt;
$ImpactSnd:                       85&lt;br /&gt;
$Flags:                           (  &amp;quot;in tech database&amp;quot;&lt;br /&gt;
                                     &amp;quot;player allowed&amp;quot;&lt;br /&gt;
                                     &amp;quot;stream&amp;quot;)&lt;br /&gt;
$Icon:                            iconSD4&lt;br /&gt;
$Anim:                            SD4&lt;br /&gt;
$Impact Explosion:                none&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Secondary Weapons&lt;br /&gt;
&lt;br /&gt;
$Name:                            EMP Adv.&lt;br /&gt;
   +Title:                           XSTR(&amp;quot;GTM-14 EMP Adv.&amp;quot;, 3396)&lt;br /&gt;
   +Description:&lt;br /&gt;
XSTR( &amp;quot;Advanced Missile&lt;br /&gt;
Electromagnetic Pulse Weapon&lt;br /&gt;
General Purpose Suppression&amp;quot;, 3397)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
   +Tech Title:                      XSTR(&amp;quot;GTM-14 EM Pulse Adv.&amp;quot;, 3398)&lt;br /&gt;
   +Tech Anim:                       Tech_EMP&lt;br /&gt;
   +Tech Description:&lt;br /&gt;
XSTR(&lt;br /&gt;
&amp;quot;Descriptive text...&amp;quot;, -1)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
$Model File:                      EMPulse2.pof&lt;br /&gt;
$Mass:                            15.0&lt;br /&gt;
$Velocity:                        275.0&lt;br /&gt;
$Fire Wait:                       2.0&lt;br /&gt;
$Damage:                          45&lt;br /&gt;
$Blast Force:                     20.0&lt;br /&gt;
$Inner Radius:                    80.0&lt;br /&gt;
$Outer Radius:                    300.0&lt;br /&gt;
$Shockwave Speed:                 120.0&lt;br /&gt;
$Armor Factor:                    1.0&lt;br /&gt;
$Shield Factor:                   0.8&lt;br /&gt;
$Subsystem Factor:                0.5&lt;br /&gt;
$Lifetime:                        5.0&lt;br /&gt;
$Energy Consumed:                 0.0&lt;br /&gt;
$Cargo Size:                      4.0&lt;br /&gt;
$Homing:                          YES&lt;br /&gt;
   +Type:                            ASPECT&lt;br /&gt;
   +Turn Time:                       1.0&lt;br /&gt;
   +Min Lock Time:                   2.0&lt;br /&gt;
   +Lock Pixels/Sec:                 70&lt;br /&gt;
   +Catch-up Pixels/Sec:             100&lt;br /&gt;
   +Catch-up Penalty:                30&lt;br /&gt;
$LaunchSnd:                       118&lt;br /&gt;
$ImpactSnd:                       88&lt;br /&gt;
$FlyBySnd:                        -1&lt;br /&gt;
$Rearm Rate:                      2.0&lt;br /&gt;
$Flags:                           (  &amp;quot;player allowed&amp;quot;&lt;br /&gt;
                                     &amp;quot;EMP&amp;quot;)&lt;br /&gt;
$Trail:&lt;br /&gt;
   +Start Width:                     0.25&lt;br /&gt;
   +End Width:                       0.75&lt;br /&gt;
   +Start Alpha:                     1.0&lt;br /&gt;
   +End Alpha:                       0.0&lt;br /&gt;
   +Max Life:                        1.5&lt;br /&gt;
   +Bitmap:                          MissileTrail04&lt;br /&gt;
$Icon:                            iconEMPulse&lt;br /&gt;
$Anim:                            ecm&lt;br /&gt;
$Impact Explosion:                ExpMissileHit1&lt;br /&gt;
$Impact Explosion Radius:         10.0&lt;br /&gt;
$EMP Intensity:                   375.0&lt;br /&gt;
$EMP Time:                        20.0&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&lt;br /&gt;
$Player Weapon Precedence: (&lt;br /&gt;
     &amp;quot;Subach HL-7&amp;quot;&lt;br /&gt;
     &amp;quot;EMP Adv.&amp;quot;   )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Subsystem&amp;diff=63207</id>
		<title>Subsystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Subsystem&amp;diff=63207"/>
		<updated>2021-02-28T13:49:05Z</updated>

		<summary type="html">&lt;p&gt;M!m: Added  $On Beam Warmdown:&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Fileversion|7119}}&lt;br /&gt;
&lt;br /&gt;
*All subsystems ship can have must be defined in ships model file (.pof).&lt;br /&gt;
&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*[[Animation_Code|Animation Code]] can be applied to the subsystems that consist of submodels, like multi-part turrets.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==$Subsystem:==&lt;br /&gt;
*The name of the subsystem as defined in .pof file, % of ship&#039;s total hitpoints the subsystem has and rotation time (360 degrees) for multi-part turrets. Note: Assigning zero to the %-hitpoint entry causes the subsystem to be without hitpoints, like fighterbays on some capital ships.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, name of the subsystem followed by the subsystem hitpoints as % of ships hitpoints and seconds per 360 degree turn. Subsystem name must be the same as described in model file (.pof).&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Entries can be left empty in which case game uses default values}}&lt;br /&gt;
**Example: communications, 5, 0.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Alt Subsystem Name:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the alternate name for the subsystem. This name is shown for example in the targeting window when subsystem is targeted.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Option to use pipe character &#039;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&#039; to force line breaks into the alt subsystem name}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Alt Damage Popup Subsystem Name:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the alternate name for the subsystem when it is displayed on the &#039;&#039;&#039;damaged systems&#039;&#039;&#039; popup.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Armor Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
* &#039;&#039;&#039;REQUIRES ADDITIONAL TABLE&#039;&#039;&#039;. Defines armor type used for the subsystem. If subsystem armor type is not defined ships armor type is used instead.&lt;br /&gt;
* Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, as defined in [[armor.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Default PBanks:===&lt;br /&gt;
*Defines default primary weapon for the turret&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
**Example: ( &#039;&#039;&amp;quot;Subach HL-7&amp;quot;&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$PBank Capacity:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines ammunition capacity of turrets ballistic primary weapon.&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; )}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Default SBanks:===&lt;br /&gt;
*Defines default secondary weapon for the turret&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$SBank Capacity:===&lt;br /&gt;
*Defines ammunition capacity of turrets secondary weapon.&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Engine Wash:===&lt;br /&gt;
*All engines may use information concerning the engine wash. Engine washes are usually used only with larger vessels.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name as defined in Engine Wash section in [[ships.tbl]]&lt;br /&gt;
**Example: &#039;&#039;Default1000&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$AliveSnd:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Specifies a sound to play from the subsystem while it is not destroyed.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$DeadSnd:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Specifies a sound to play from the subsystem while it is destroyed.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$RotationSnd:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Can be used to define a sound that is played when this subsystem rotates.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
===$Turret Base RotationSnd:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the sound which is played when the turrets base rotates&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret Gun RotationSnd:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the sound which is played when the turrets guns change their elevation&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret BaseSnd Volume:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the multiplier for the sound volume for turret base rotations&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret GunSnd Volume:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the multiplier for the sound volume for turret guns change their elevation&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$AWACS:===&lt;br /&gt;
*Sets this subsystem&#039;s effective AWACS range. (AWACS reveals stealthed ships, cuts through nebula fog.)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, the maximum range of the AWACS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Maximum Barrel Elevation:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the maximum barrel elevation for the turret&lt;br /&gt;
*Basically &#039;inverse FOV&#039;.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, from 0 to 90}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret Base FOV:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the FOV of the turret&#039;s base.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, from 0 to 359}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret Reset Delay:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the time after losing the target before the turret begins to reset itself&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, in milliseconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret Optimum Range:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the optimum range for the turret&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret Direction Preference:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the turrets preference to keep targeting targets based how far the turret should turn instead of nearest target&lt;br /&gt;
*The higher the value the higher the preference to keep targeting targets close to previous targets direction&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, from 0 to 100, 0 disables the preference setup}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Target Priority:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the target priorities, and their order for the turret&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String list&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Max Turrets per Bomb:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Limits the number of turrets that can be targeting the same bomb.&lt;br /&gt;
*When this is set, when this turret tries to target a bomb, it will check to see how many turrets are already targeting it and only choose it as a target if there are less than this number.&lt;br /&gt;
*This allows control over the default behavior, where every turret will fire at the leading bomb.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Max Turrets per Target:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Limits the number of turrets that can be targeting the same target.&lt;br /&gt;
*&#039;&#039;&#039;ONLY AFFECTS SMALL TARGETS&#039;&#039;&#039; such as fighters and bombers. This limit does &#039;&#039;&#039;NOT&#039;&#039;&#039; apply vs large ships.&lt;br /&gt;
*When this is set, when this turret tries to target a ship, it will check to see how many turrets are already targeting it and only choose it as a target if there are less than this number.&lt;br /&gt;
*This helps turrets spread their efforts out among multiple targets. &lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$ROF:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the modifier applied to the turret rate of fire (ROF).&lt;br /&gt;
&lt;br /&gt;
====+Use firingpoints====&lt;br /&gt;
*Modifies (multiplies) the rate of fire by the number of firingpoints the turret has.&lt;br /&gt;
&lt;br /&gt;
====+Multiplier:====&lt;br /&gt;
*Checked only if &#039;&#039;+Use firingpoints&#039;&#039; has not been defined&lt;br /&gt;
*If set to larger than 0 the value acts as multiplier&lt;br /&gt;
*If set to 1.0 the feature is disabled&lt;br /&gt;
*If set to equal to or smaller than 0 it as if &#039;&#039;+Use firingpoints&#039;&#039; option would have been enabled&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Flags:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Can be used to sets additional subsystem related properties&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot; &amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
*List of available flags:&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;untargetable&amp;quot;====&lt;br /&gt;
*Subsystem cannot be targeted&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;carry no damage&amp;quot;====&lt;br /&gt;
*Damage caused to the subsystem will not carry over to the parent ship&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;use multiple guns&amp;quot;====&lt;br /&gt;
*Enables the turret to fire all equipped weapons, picking a not-in-use firing point at each trigger. Not to be confused with &#039;Salvo mode&#039;.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;fire down normals&amp;quot;====&lt;br /&gt;
*Forces the turret to fire along the turret normals - regardless of the swarm setting.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;check hull&amp;quot;====&lt;br /&gt;
*Forces the firing turret to check against the parent model if valid line of sight exists between the firingpoint and the target.}}&lt;br /&gt;
&lt;br /&gt;
{{Table3611|&lt;br /&gt;
====&amp;quot;fixed firingpoints&amp;quot;====&lt;br /&gt;
*Forces the firing turret to retain the firingpoints of their weapons: if the turret has multiple banks, the first bank will only fire from the first firepoint, the second bank only from the second firepoint, and so on. Maximum number of weapons is the same as maximum number of weapons in turret (3 primary, 4 secondary)&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;salvo mode&amp;quot;====&lt;br /&gt;
*Forces the firing turret to use only the first weapon defined for it but fires it simultaneously from all the firing points. Not to be confused with &#039;use multiple guns&#039;&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;no subsystem targeting&amp;quot;====&lt;br /&gt;
*Prevents the firing turret from targeting targets subsystems - instead forces the turret to fire randomly at the targets hull.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;fire on target&amp;quot;====&lt;br /&gt;
*Prevents the turret from firing unless the turret barrels (firingpoints) and targets are aligned.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;reset when idle&amp;quot;====&lt;br /&gt;
*Forces the turret to reset to its initial position if it has no targets.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;carry shockwave&amp;quot;====&lt;br /&gt;
*Forces the turret to carry damage caused by shockwaves to the hull regardless of other flags.}}&lt;br /&gt;
&lt;br /&gt;
{{Table3613|&lt;br /&gt;
====&amp;quot;allow landing&amp;quot;====&lt;br /&gt;
*Defines the subsystem as something on which player can attempt to land on&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;target requires fov&amp;quot;====&lt;br /&gt;
*Prevents turret from accidentally selecting target out of it field of view (fov) when acquiring targets&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;fov edge checks&amp;quot;====&lt;br /&gt;
*If the predicted target point of the turret falls outside of the field of view this flag but according to ship radius and dot product the target should still be partially visible then this flag attempts to turn the turret to the edge of the FOV closest to the targeted position and allow it to fire along that direction.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;no replace&amp;quot;====&lt;br /&gt;
*Tells game not to use the replacement submodel (-destroyed) when the subsystem loses all of it&#039;s hitpoints.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;no live debris&amp;quot;====&lt;br /&gt;
*Prevents the subsystem from releasing live debris pieces when destroyed&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;ignore if dead&amp;quot;====&lt;br /&gt;
*When subsystem has been destroyed prevents homing weapons from attempting to hit the now destroyed submodel and instead tells them to home on the main hull of the target&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;allow vanishing&amp;quot;====&lt;br /&gt;
*Allow subsystem to be destroyed from the ship without sound or graphical effects&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;damage as hull&amp;quot;====&lt;br /&gt;
*Treats subsystem as if it were hull when applying damage.  &lt;br /&gt;
&lt;br /&gt;
====&amp;quot;starts locked&amp;quot;====&lt;br /&gt;
*Turret starts locked and won&#039;t shoot until you use a turret-free or turret-free-all SEXP on it.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;no aggregate&amp;quot;====&lt;br /&gt;
*Freespace keeps track of a ships overall functionality (such as if a ship is sensorless, disarmed or disabled) via a total hitpoint count of the associated subsystems. For example if a ship has three engines with 100HP each, the &#039;engines&#039; count will be at 300HP. Shooting at any of the subsystems with the keyword &#039;engine&#039; in them will decrement this total, and when it is at 0 then the ship becomes disabled.&lt;br /&gt;
*This flag tells FS to ignore the associated subsystem and not count it towards those totals. For example, if a ship had three 100HP engines with one set to &#039;no aggregate&#039; then the &#039;engines&#039; count will be 200HP. Shooting the &#039;no aggregate&#039; engine will not decrement the &#039;engines&#039; count, and so in other words the status of this engine is irrelevant to whether or not the ship is disabled. In the same way when applied to a turret, the turret&#039;s status is irrelevant to whether the ship is  disarmed or not.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;wait for animation&amp;quot;====&lt;br /&gt;
*When this flag is active, a turret will only fire after any associated subsystem animations (such as a turret hatch opening) have played out.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;play fire sound for player&amp;quot;====&lt;br /&gt;
*If this turret is on a player ship, play its associated sounds.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;only target if can fire&amp;quot;====&lt;br /&gt;
*Do additional checks to make sure that a turret which cannot fire at its target releases that target. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table3615|&lt;br /&gt;
====&amp;quot;no disappear&amp;quot;====&lt;br /&gt;
*If this subsystem is a physical subsystem, it won&#039;t disappear nor switch to the -destroyed model when destroyed.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;collide submodel&amp;quot;====&lt;br /&gt;
*If this subsystem is a physical subsystem, it will only take damage from hits which impact the submodel. By default damage is taken from all hits within the submodel&#039;s radius*2. Does not affect area damage such as shockwaves.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;allow destroyed rotation&amp;quot;====&lt;br /&gt;
*Allows a rotating subobject to continue to rotate even when it has been destroyed&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table373|&lt;br /&gt;
====&amp;quot;turret use ammo&amp;quot;====&lt;br /&gt;
*If the subsystem is a turret, it will use ammo.&lt;br /&gt;
**Note: If the turret does not have ammo, it will not fire. Remember that the maximum ammo a turret can hold is the Capacity of the Bank divided by the Cargo Size of the weapon.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;share fire direction&amp;quot;====&lt;br /&gt;
*If this subsystem is a turret, whenever the turret fires it will make all of the firing points shoot their weapon in the same direction instead of at the same point or set of points on a target.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table381|&lt;br /&gt;
====&amp;quot;no damage spew&amp;quot;====&lt;br /&gt;
*If this subsystem is hit then there will be no damage spew particles emitted.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;no impact debris&amp;quot;====&lt;br /&gt;
*If this subsystem is hit then no impact debris will be generated.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===[[Animation Code]]===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Option for animating the submodels}}&lt;br /&gt;
&lt;br /&gt;
===$On Beam Warmdown:===&lt;br /&gt;
{{Table212|&lt;br /&gt;
Specifies an [[Action System|action system]] program set to be executed when a beam attached to this subsystem is starting its warmdown sequence.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Case Specific Entries==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Turret===&lt;br /&gt;
*All turrets require information concerning the weapon mounted to the turret. The entry can be either &#039;&#039;&#039;$Default PBanks&#039;&#039;&#039; for turret primaries (including beams) or &#039;&#039;&#039;$Default SBanks&#039;&#039;&#039; for turret secondaries&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*[[Animation_Code#Setting_Turret_Angle|Animation Code]] can be used with multi-part turrets.&lt;br /&gt;
*Multiple defined weapons will all fire but the targeting is handled by the first weapon in the list. &#039;&#039;&#039;Multiple beams are not possible&#039;&#039;&#039;. All weapons alternate between the firingpoints of the turret so turrets do not need to have more than one weapon defined no matter how many barrels or firingpoints they have.}}&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Subsystem: turret01, 1.0, 1.0&lt;br /&gt;
$Default PBanks: ( &amp;quot;Terran Turret&amp;quot; )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Engine===&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Subsystem: engine01, 5.0, 0.0&lt;br /&gt;
$Engine Wash: Default1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=List_of_modding-related_articles&amp;diff=63206</id>
		<title>List of modding-related articles</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=List_of_modding-related_articles&amp;diff=63206"/>
		<updated>2021-02-28T13:43:37Z</updated>

		<summary type="html">&lt;p&gt;M!m: /* Tabling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a &#039;&#039;&#039;list of articles related to modding&#039;&#039;&#039;, including modeling, texturing, and conversion.&lt;br /&gt;
&lt;br /&gt;
For information about mission design, see the [[Portal:FRED|FRED portal]].&lt;br /&gt;
&lt;br /&gt;
For coding, see [[:Category:Source Code Project|the Source Code Project]] category.&lt;br /&gt;
&lt;br /&gt;
==Modeling==&lt;br /&gt;
*[[Detail box]]&lt;br /&gt;
*[[Hierarchy]]&lt;br /&gt;
*[[Rampage&#039;s Post Modding Guide]]&lt;br /&gt;
*[[Subobject and subsystem properties]]&lt;br /&gt;
*[[Turret setup]]&lt;br /&gt;
*[[User-made Ships|List of user-made ships]]&lt;br /&gt;
&lt;br /&gt;
===Applications===&lt;br /&gt;
*[[3D Studio Max]]&lt;br /&gt;
*[[Blender]]&lt;br /&gt;
*[[Lithium Unwrap]]&lt;br /&gt;
*[[Maja]]&lt;br /&gt;
*[[ModelView]]&lt;br /&gt;
*[[POF Constructor Suite]]&lt;br /&gt;
*[[POF Constructor Suite 2]]&lt;br /&gt;
*[[trueSpace]]&lt;br /&gt;
&lt;br /&gt;
===Texturing===&lt;br /&gt;
*:&#039;&#039;[[Texturing|Index]]&#039;&#039;&lt;br /&gt;
*&#039;&#039;[[Goober5000&#039;s Orion nameplate tutorial]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Conversion===&lt;br /&gt;
*[[Blender to POF Conversions|Blender to POF conversion]]&lt;br /&gt;
*[[Collada Importer]]&lt;br /&gt;
*[[Styxx&#039;s POF Conversion plugin for 3D Studio Max]]&lt;br /&gt;
&lt;br /&gt;
==[[Tables|Tabling]]==&lt;br /&gt;
:&#039;&#039;[[:Category:Tables|List of table files]]&#039;&#039;&lt;br /&gt;
*[[Animation Code|Animation code]]&lt;br /&gt;
*[[Tutorial - Beam Weapons|Beam weapon tutorial]]&lt;br /&gt;
*[[Modular Tables|Modular table]]&lt;br /&gt;
*[[Ship Templates|Ship template]]&lt;br /&gt;
*[[Subsystem]]&lt;br /&gt;
*[[Technical Terms and Definitions|Terminology]]&lt;br /&gt;
*[[Action System]]&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous==&lt;br /&gt;
*[[Custom HUD elements (basics)]]&lt;br /&gt;
*[[FS2 Data Structure|FreeSpace 2 data structure]]&lt;br /&gt;
*[[:Category:File Types|File types]]&lt;br /&gt;
*[[Five things you&#039;ll forget to do before you release]]&lt;br /&gt;
*[[Installing Mods for FS2 Open|Installing mods for FreeSpace 2 Open]]&lt;br /&gt;
*[[Karajorma&#039;s FreeSpace FAQ: General Questions]]&lt;br /&gt;
*[[mod.ini]]&lt;br /&gt;
*[[Squadron insignia]]&lt;br /&gt;
*[[User-made effects]]&lt;br /&gt;
**[[Lightspeed&#039;s Nebula Pack]]&lt;br /&gt;
*[[User-made music]]&lt;br /&gt;
&lt;br /&gt;
===VP files===&lt;br /&gt;
*[[QuickVP]]&lt;br /&gt;
*[[VPMage]]&lt;br /&gt;
**[[Using VPMage]]&lt;br /&gt;
*[[VPmake]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Lists]]&lt;br /&gt;
[[Category:Modding|*]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Action_System&amp;diff=63205</id>
		<title>Action System</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Action_System&amp;diff=63205"/>
		<updated>2021-02-28T13:43:32Z</updated>

		<summary type="html">&lt;p&gt;M!m: Created page with &amp;quot;The dynamic action system is an SCP addition that provides a way for mods to create custom sequences of events that should happen when a certain event occurs. This system is d...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The dynamic action system is an SCP addition that provides a way for mods to create custom sequences of events that should happen when a certain event occurs. This system is designed to be highly flexible to allow mods complete control over what effects to trigger and where to place them.&lt;br /&gt;
&lt;br /&gt;
This page will describe the basic ideas behind the system and describe how to use it.&lt;br /&gt;
&lt;br /&gt;
==Basic functionality==&lt;br /&gt;
The basic functionality of the action system is to take a list of &amp;quot;Actions&amp;quot; and execute them over the span of an arbitrary amount of game-frames. This allows a mod to specify quite complex operations without hard-coding that into the engine. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$On Beam Warmdown: ; This defines a &amp;quot;program&amp;quot; to run once a beam weapon has finished firing&lt;br /&gt;
	; Timing for effects is important so this allows to delay the execution of the remaining actions by 5 (in-mission) seconds&lt;br /&gt;
	+Wait: 5&lt;br /&gt;
&lt;br /&gt;
	; Some actions simply update some internal data which can be used by later actions&lt;br /&gt;
	; This data will be kept until it is set again and can be used by an unlimited number of actions&lt;br /&gt;
	+Set Position: (8.0 0.0 0.0)&lt;br /&gt;
	+Set Direction: (1.0 -1.0 1.0)&lt;br /&gt;
&lt;br /&gt;
	; All positions and directions are local to the attached subobject (turret02 in this case) and will respect animations&lt;br /&gt;
&lt;br /&gt;
	; These actions actually cause some external &amp;quot;thing&amp;quot; by using the previously set &amp;quot;local&amp;quot; data&lt;br /&gt;
	+Start Particle Effect: &amp;quot;Beam Warmdown Effect&amp;quot;&lt;br /&gt;
	+Play 3D Sound: &amp;quot;18&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	+Set Position: locals.position + (3.0 0.0 0.0)&lt;br /&gt;
	+Start Particle Effect: &amp;quot;Beam Warmdown Effect&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	+Wait: 3.0&lt;br /&gt;
&lt;br /&gt;
	; Programs are attached to the object that triggered them so if the object dies before this can run then the sound will not be played&lt;br /&gt;
	; The position is still (8, 0, 0) from the previous setting so no need to set it here again&lt;br /&gt;
	+Play 3D Sound: &amp;quot;19&amp;quot; ; Actions can be used multiple times with different parameters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sequence of actions will be called a &amp;quot;program&amp;quot; in this document. When the corresponding event is triggered, the program is started which creates a &amp;quot;program instance&amp;quot;. Every instance of a program is completely separate from each other and will also execute concurrently. This means that a &amp;quot;+Wait:&amp;quot; instruction in one program will not have any effect on another program wanting to trigger a sound effect or something similar.&lt;br /&gt;
&lt;br /&gt;
When a program is started it will have some parameters specified at that point. These parameters are used for attaching an action to a specific object and subobject depending on where it has been triggered. A program attached to an object will only execute for as long as that object is present in the mission and will be stopped once the object is gone. If a program instance is attached to a subobject then all operations will be local to that subobject. Offsets and directions specified in actions will be relative to the selected subobject. However, a program instance will not be stopped if a subobject is destroyed.&lt;br /&gt;
&lt;br /&gt;
In tables, an action option (&amp;quot;$On Beam Warmdown:&amp;quot; in the above example) can also be used several times in sequence. This will collect all those programs and when the event is triggered, every program is started at the same time with the same parameters. This allows to separate different effects into their own programs in order to make management of these actions a bit easier.&lt;br /&gt;
&lt;br /&gt;
==Action expressions==&lt;br /&gt;
The value used for actions (&amp;quot;locals.position + (3.0 0.0 0.0)&amp;quot; for &amp;quot;+Set Position: locals.position + (3.0 0.0 0.0)&amp;quot; above) is a so called &amp;quot;Action expression&amp;quot;. This is a simple language for expressing mathematical expressions which is used for every parameter of an action. The language follows the usual mathematical rules with some special parts that will be described here.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;~(&amp;lt;left&amp;gt; &amp;lt;right&amp;gt;)&#039;&#039;&#039;: Will evaluate to a random value uniformly distributed without the range between &amp;lt;left&amp;gt; and &amp;lt;right&amp;gt;.&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;&amp;lt;name&amp;gt;&amp;quot;&#039;&#039;&#039;: Is a string value. This is necessary for actions taking names of other tables as parameters. For example &amp;quot;+Start Particle Effect&amp;quot;.&lt;br /&gt;
*&#039;&#039;&#039;(&amp;lt;x&amp;gt; &amp;lt;y&amp;gt; &amp;lt;z&amp;gt;)&#039;&#039;&#039;: Will create a 3D vector value. Used for positions and directions. Each of the x, y, and z values can themselves be expressions again.&lt;br /&gt;
&lt;br /&gt;
===Variables===&lt;br /&gt;
Every program instance will have some &amp;quot;local&amp;quot; variables assigned to it. This is a set of values that can be changed by the program and used by other actions for altering their behavior. These values are available within expressions:&lt;br /&gt;
*&#039;&#039;&#039;locals.position&#039;&#039;&#039;: A vector value specifying an offset from the host of the program instance. Can be changed with &amp;quot;+Set Position&amp;quot;.&lt;br /&gt;
*&#039;&#039;&#039;locals.direction&#039;&#039;&#039;: A vector value specifying a direction. Can be changed with &amp;quot;+Set Direction&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Available actions==&lt;br /&gt;
All of these listed actions can generally be combined freely with each other.&lt;br /&gt;
&lt;br /&gt;
===+Wait:===&lt;br /&gt;
Will delay the execution of subsequent actions by the specified amount of in-game seconds.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameter type:&#039;&#039;&#039; &#039;&#039;Floating point number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Set Position:===&lt;br /&gt;
Will alter the value of &amp;quot;locals.position&amp;quot; to the specified value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameter type:&#039;&#039;&#039; &#039;&#039;3D Vector&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Set Direction:===&lt;br /&gt;
Will alter the value of &amp;quot;locals.direction&amp;quot; to the specified value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameter type:&#039;&#039;&#039; &#039;&#039;3D Vector&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Move To Subobject:===&lt;br /&gt;
Will alter what subobject the program instance is attached to. A value of &amp;quot;&amp;lt;parent&amp;gt;&amp;quot; will move to the parent subobject of the current one. Otherwise the name of any other subobject may be specified.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameter type:&#039;&#039;&#039; &#039;&#039;String&#039;&#039; &amp;quot;&amp;lt;none&amp;gt;&amp;quot; or a valid subobject name.&lt;br /&gt;
&lt;br /&gt;
===+Start Particle Effect:===&lt;br /&gt;
Triggers a [[Particle Effects|particle effect]] with the specified name. Will use &amp;quot;locals.position&amp;quot; as an offset and &amp;quot;locals.direction&amp;quot; to orient the effect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameter type:&#039;&#039;&#039; &#039;&#039;String&#039;&#039; The name of a particle effect to trigger.&lt;br /&gt;
&lt;br /&gt;
===+Play 3D Sound:===&lt;br /&gt;
Plays the specified 3D sound. Will use &amp;quot;locals.position&amp;quot; as an offset to compute the global position of the sound.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameter type:&#039;&#039;&#039; &#039;&#039;String&#039;&#039; The name of the sound as specified in [[Sounds.tbl]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Scripting&amp;diff=61474</id>
		<title>Scripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Scripting&amp;diff=61474"/>
		<updated>2020-08-08T09:18:16Z</updated>

		<summary type="html">&lt;p&gt;M!m: Added link to debugging guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
Scripting allows a modder to run custom code in the engine that can read and modify the game state to produce new features.&lt;br /&gt;
&lt;br /&gt;
Scripts are either specified via [[Scripting.tbl]] or as standalone lua files.&lt;br /&gt;
&lt;br /&gt;
==General Info==&lt;br /&gt;
*Scripting hooks are &#039;&#039;&#039;not&#039;&#039;&#039; executed on a separate thread (at least as of this writing). They are executed at given points in the code, and all other execution will not take place until a scripting hook has finished. Therefore, large and complicated scripts will most likely cause noticeable lag or slowdown when executed.&lt;br /&gt;
{{Template:Note|1=Information on this page does not apply to pre-3.6.10 builds}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Useful references==&lt;br /&gt;
*&#039;&#039;&#039;[[FS2 Open Lua Scripting]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Scripting API]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;!---*&#039;&#039;&#039;[http://fs2source.warpcore.org/temp/scripting.html Scripting.html]&#039;&#039;&#039; - Link OOA ---&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;[[Scripting functions]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Command-Line_Reference#-output_scripting|Command-Line Reference for creating scripting.html]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Debugging Lua scripts]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[http://lua-users.org/wiki/ Lua-Users Wiki]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[http://www.lua.org/manual/5.1/ Reference manual for Lua 5.1]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Standalone Lua scripts==&lt;br /&gt;
Since writing Lua scripts using the table can lead to some issues while developing scripts (such as wrong syntax highlighting or wrong line numbers in error messages) the engine also supports loading Lua scripts directly and executing them when the initial game data has been loaded. Since that alone does not allow to register hooks, there is a scripting API that allows to do that from Lua code. See engine.addHook in scripting.html.&lt;br /&gt;
&lt;br /&gt;
This allows to write a non-trivial script without using the global namespace which always risks contamination by other other scripts writing to the same global variables. Since the hook functions are defined in the same file as the other hook functions they can use the &#039;&#039;local&#039;&#039; variables declared in the top level scope without having to expose them to the global namespace.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Frames===&lt;br /&gt;
One of the most important things to understand when reading this guide is the concept of &amp;quot;frames&amp;quot;. (Experienced modders can probably skip this part) In gameplay, motion is achieved by making incremental changes every fraction of a second. A ship will be moved slightly, and then drawn to the screen. This happens 30-120 times a second; anything lower, and the game will become choppy and difficult to play.&lt;br /&gt;
&lt;br /&gt;
There is also a difference in the moving of objects in-game, and the moving of objects onscreen. All ships are first &amp;quot;moved&amp;quot;, in memory. This probably consists of physics calculations, that change the ship&#039;s position based on if their engines are turned on, or if they run into another object. After this, the game then renders the now-moved ships to what is referred to as a &amp;quot;backbuffer&amp;quot; - a place in memory that takes the place of the computer screen. Once rendering has finished, the backbuffer is instantly drawn to the screen. This prevents objects from flickering as they are drawn. You do not have to worry about flipping the backbuffer in scripting; FS2_Open will take care of that for you.&lt;br /&gt;
&lt;br /&gt;
For scripting, &#039;&#039;&#039;it is important to understand that each block of code will therefore be executed several times a second, but only once per frame&#039;&#039;&#039;. However, the exact number of times per second will depend on how much work the computer has to do (And therefore how much time it takes) for each frame. To determine how much time you should consider to have passed, you must use the ba.getFrametime() function; which will return the approximate time the frame will take, in seconds. In addition, if you &amp;quot;move&amp;quot; a ship after it has already been rendered, the change will not become apparent until the next frame.&lt;br /&gt;
&lt;br /&gt;
This does mean that if you want to make a block of text move across the screen, at a rate of 5 pixels per second, all you have to do is multiply the speed by the frametime:&lt;br /&gt;
&amp;lt;pre&amp;gt;#Global Hooks&lt;br /&gt;
$Global: [&lt;br /&gt;
   --If the g_WheeXPosition variable does not exist,&lt;br /&gt;
   --it means we are on the first frame.&lt;br /&gt;
   --If that is the case, set it to zero.&lt;br /&gt;
   if not g_WheeXPosition then&lt;br /&gt;
      g_WheeXPosition = 0&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   --Move the text&lt;br /&gt;
   g_WheeXPosition = g_WheeXPosition + (5 * ba.getFrametime())&lt;br /&gt;
&lt;br /&gt;
   --Draw &amp;quot;WHEE!!!&amp;quot;&lt;br /&gt;
   gr.drawString(&amp;quot;WHEE!!!&amp;quot;, g_WheeXPosition, 10)&lt;br /&gt;
]&lt;br /&gt;
#End&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Hooks===&lt;br /&gt;
Scripting &amp;quot;hooks&amp;quot; form the basis of the scripting system. A &amp;quot;hook&amp;quot; simply refers to a point in the code where code to execute scripting has been added. The hook may then be added to a table, or added to a SEXP. In general usage, &amp;quot;hook&amp;quot; refers to an entry in scripting.tbl.&lt;br /&gt;
&lt;br /&gt;
All hooks take the form of an identifer (such as $Global:), followed by brackets to determine what type of scripting is being executed. A lack of brackets also indicates a type of scripting execution. All current bracket configurations are listed below. Note that &amp;quot;$Hook:&amp;quot; is used merely as a placeholder, and should be replaced with the actual hook name ($Global:, $HUD:, $On Frame:, etc).&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: scripting&amp;lt;/pre&amp;gt;Specifies one line of LUA scripting. In addition, the return value of that line will be passed to the interpreter and used (if applicable). Specifying a variable or value on this line will result in it being returned, as well.&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: [scripting]&amp;lt;/pre&amp;gt;A single set of brackets specifies a block of LUA scripting. Does not return a value unless explicitly specified. (Explicit specification is not possible at this time; but may be implemented in the future if/when more future hooks take a return value.)&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: [[scriptfilename.lua]]&amp;lt;/pre&amp;gt;Double brackets specify a file. This file is read out of the data/scripts directory, and must include the file extension. You may specify a compiled lua file as a target as well; this may result in crossplatform issues for a mod, however.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====+Override====&lt;br /&gt;
Some hooks additionally take a +Override: field. This field uses the same bracket configurations as above. If a hook includes a +Override field, this hook always determines whether the default FS2_Open behavior that the hook is associated with will function, or will be disabled. This should be used in cases where scripting will replace the original FS2_Open behavior. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;$HUD: [&lt;br /&gt;
    gr.setColor(255, 255, 255, 255)&lt;br /&gt;
    gr.drawString(&amp;quot;HUD Disabled&amp;quot;, 50, 50)&lt;br /&gt;
 ]&lt;br /&gt;
    +Override: true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, override hooks are (by convention) executed before FS2_Open behavior. The HUD hook override, for example, is executed before any part of the HUD is actually drawn.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Asynchronous operations==&lt;br /&gt;
{{Table382| This feature is currently only available in nightly builds.}}&lt;br /&gt;
As already laid out in the previous sections, Lua code is executed &#039;&#039;synchronously&#039;&#039; when the engine invokes a hook. That means that the engine will stop doing what it does, execute some Lua code and then continue on. However, if you want to have some behaviour happen over multiple frames (e.g. you want to smoothly move text from one side of the screen to the other) you have to break up that operation into multiple &amp;quot;On Frame&amp;quot; hooks calls and somehow restore the operation state in each hook call. This is bothersome and gets increasingly more complicated when scripts get more complex. For this reason, the scripting API supports the concept of &amp;quot;Promises&amp;quot; and &#039;&#039;asynchronous coroutines&#039;&#039;. Let&#039;s look at Promises first since they are important for the coroutines.&lt;br /&gt;
&lt;br /&gt;
===Promise===&lt;br /&gt;
&#039;&#039;Promise&#039;&#039; is a JavaScript concept that exists in various other languages with various names but the basic idea is that it is a handle to a value that will be available in the future. For example, you could have a function that returns when a specific ship arrives in a mission and gives you a handle to that ship. Such a function could not be run synchronously since it would block the engine making it impossible for it to actually warp in that ship.&lt;br /&gt;
&lt;br /&gt;
However, a function could return a promise that will &#039;&#039;resolve&#039;&#039; to the ship handle once that ship has arrived. Then a script could just register itself to be called when the promise has been resolved and not worry about keeping track of new arrivals via different hooks or something like that.&lt;br /&gt;
&lt;br /&gt;
For this reason, promises has one important operation: &amp;quot;continueWith&amp;quot; (in JavaScript it would be &amp;quot;then&amp;quot; but that is a keywork in Lua). That function gets called with a function as its first parameter. This function will be called when the promise resolves with the resolve values as its parameters.&lt;br /&gt;
&lt;br /&gt;
In addition to resolving, promises can also go into an &amp;quot;error&amp;quot; state. This means that whatever operation the promise represents has failed for some reason. In our example, ending the mission would also cause an error for the promise since it is impossible for a new ship to arrive in the mission we were in. This case can be handled with the &amp;quot;catch&amp;quot; function. Similar to &amp;quot;continueWith&amp;quot;, you pass it a function but this will only be called when the promise ends in an error. The function returns another promise that will (successfully) resolve with the return value of the &amp;quot;catch&amp;quot; function so you can handle an error in a promise and still continue.&lt;br /&gt;
&lt;br /&gt;
===Asynchronous Coroutines===&lt;br /&gt;
A normal function has a very strict life cycle. It gets called, does some stuff, and then returns a value. A coroutine expands that concept by allowing the function to &amp;quot;suspend&amp;quot; at certain points in its runtime. Then the calling function can &amp;quot;resume&amp;quot; the coroutine at a later point until the function is actually finished and reaches a &amp;quot;return&amp;quot; statement. This is a very common concept in several programming languages but Lua has built-in support for that. That covers the &amp;quot;Coroutine&amp;quot; part. Now let&#039;s look at the asynchronous part.&lt;br /&gt;
&lt;br /&gt;
Consider again our promise from above where we want to wait for a ship to arrive. What we want to do is to apply some battle damage to the ship once it arrives. However, this ship isn&#039;t here yet. We could use the &amp;quot;continueWith&amp;quot; function from the returned promise but that is a bit bothersome expecially if you have some more complicated control flow. Instead, we can use our coroutines to start a function, maybe do some setup, and then &amp;quot;suspend&amp;quot; until the promise resolves:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
async.run(function()&lt;br /&gt;
	mn.sendPlainMessage(&amp;quot;Waiting for GTVA Collosus&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local ship = async.await(mn.waitForShipAsync(&amp;quot;GTVA Collosus&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
	applyBattleDamage(ship)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
There are two interesting functions here. &#039;&#039;async.run&#039;&#039; and &#039;&#039;async.await&#039;&#039;. &#039;&#039;async.run&#039;&#039; will execute the specified function as a Lua coroutine and return a promise that will resolve with the return value of the function or error out if one of the awaited promises returns an error.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;async.await&#039;&#039; takes a promise as its parameter and uses the coroutine character of the function and suspends the function until the promise resolves or causes an error. It will then resume the function an return the resolve value of the promise. This way, we can write code that looks just like normal synchronous code but still do stuff across several frames.&lt;br /&gt;
&lt;br /&gt;
===Advanced promise features===&lt;br /&gt;
These coroutines are a very powerful feature but without anything to produce promises it is not very helpful. The engine can maybe provide you with some functions that return coroutines but the point of Lua is to allow modders to do their own thing. For this reason, there is the basic building block &#039;&#039;async.promise&#039;&#039;. This function can create a promise for which the Lua code can determine when it resolves or errors. To do this, you pass &#039;&#039;async.promise&#039;&#039; a function that takes up to two parameters. Both parameters will be functions. Calling the first parameter &#039;&#039;resolve&#039;&#039; will resolve the original promise with the passed parameters. &#039;&#039;reject&#039;&#039; will similarly cause the promise to transition into the error state with the passed parameters as the error values.&lt;br /&gt;
&lt;br /&gt;
This feature is very useful to &amp;quot;promisify&amp;quot; code that uses the &amp;quot;old&amp;quot; way of doing asynchronous operations since it allows to create the promise at one point and then store the resolve and reject functions so that they can be called at a later point.&lt;br /&gt;
&lt;br /&gt;
For a more detailed and step by step guide on how this feature can be used, please see [[Tutorial:Custom Promises]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Debugging_Lua_scripts&amp;diff=61473</id>
		<title>Debugging Lua scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Debugging_Lua_scripts&amp;diff=61473"/>
		<updated>2020-08-08T09:17:45Z</updated>

		<summary type="html">&lt;p&gt;M!m: Created page with &amp;quot;When a script reaches a certain complexity it becomes more and more difficult to determine what exactly that script does. Finding errors can be done by using &amp;quot;ba.print&amp;quot; statem...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When a script reaches a certain complexity it becomes more and more difficult to determine what exactly that script does. Finding errors can be done by using &amp;quot;ba.print&amp;quot; statements to log the values of certain variables at runtime but that is a crude way of figuring things out.&lt;br /&gt;
&lt;br /&gt;
Fortunately, Lua provides some basic building blocks for implementing an interactive debugger where you can tell it to stop the program at a certain point, take a look at variable values, and stepping to the next execution line.&lt;br /&gt;
&lt;br /&gt;
This page will explain how to set that up for debugging Lua script in FSO.&lt;br /&gt;
&lt;br /&gt;
== EmmyLua ==&lt;br /&gt;
This is a useful suite of plugins that allows both to do interactive debugging and having enhanced code assistance if configured correctly. There are two variants, one for the IntelliJ family of IDEs and one for VisualStudio Code.&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ plugin ===&lt;br /&gt;
Installing the plugin is as easy as going to the plugin page in the settings and searching for &amp;quot;EmmyLua&amp;quot;. Restart the IDE and you are good to go.&lt;br /&gt;
&lt;br /&gt;
==== Project setup ====&lt;br /&gt;
Select the &amp;quot;EmmyLua&amp;quot; type under the &amp;quot;Other&amp;quot; section and enter the path to your mod folder:&lt;br /&gt;
&lt;br /&gt;
[[File:EmmyLua_NewProject.png]]&lt;br /&gt;
&lt;br /&gt;
That is enough and you should now see your mod project including your scripts. Since EmmyLua has no idea about our special scripting tables, this would be a good point to either use a standalone script file or to separate your script into a Lua module so that you can work with pure .lua files.&lt;br /&gt;
EmmyLua can also use the API definitions generated by FSO to give you more assistance with the FSO scripting API. Simply use the tool from [https://www.hard-light.net/forums/index.php?topic=96658.0 this thread] to generate the API definition for the plugin to use.&lt;br /&gt;
&lt;br /&gt;
==== Debugging setup ====&lt;br /&gt;
Now that you have your project, you can click &amp;quot;Add configurations...&amp;quot; in the top left corner. Click the small &amp;quot;+&amp;quot; and select &amp;quot;Emmy Debugger(NEW)&amp;quot; (name might have changed by the time you read this but it should still be similar):&lt;br /&gt;
&lt;br /&gt;
[[File:EmmyLua DebuggerSetup.png]]&lt;br /&gt;
&lt;br /&gt;
The two relevant items here are the &amp;quot;Connection&amp;quot; value and the script the IDE shows you. Since the debugger works by doing some (local) network communication you need to specify in which order the debugger and FSO will be launched. If you select &amp;quot;Tcp (IDE connect debugger)&amp;quot; then you need to launch FSO first and then launch the debugging session. &amp;quot;Tcp (Debugger connect IDE)&amp;quot; is the reverse, there you first need to launch the debugger configuration and then launch FSO. Choose whichever works better for you. For advanced users, you can also create a combined launch configuration that automatically launches FSO as well but that will not be covered here.&lt;br /&gt;
&lt;br /&gt;
Now that you have chosen, simply copy the script the IDE displays to you and place it as &amp;quot;zzzdebugger-sct.lua&amp;quot; in your data/tables folder. The weird name ensures that the script will be executed first before any other script and will allow you to debug all Lua code that you have in your mod. Please not that this script is specific to your machine and will also break your mod if there is no debugger on the system so it should neither be checked into Git/SVN (if you have that) or included in the final mod release.&lt;br /&gt;
&lt;br /&gt;
And now you are done. Set breakpoints where you would like the debugger to halt. Breakpoints can be placed by clicking to the right of the line numbers and a visual indicator will show that a breakpoint now exists there and if your script reaches that point execution will suspend and you can look at both local and global variables.&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=File:EmmyLua_DebuggerSetup.png&amp;diff=61472</id>
		<title>File:EmmyLua DebuggerSetup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=File:EmmyLua_DebuggerSetup.png&amp;diff=61472"/>
		<updated>2020-08-08T09:08:28Z</updated>

		<summary type="html">&lt;p&gt;M!m: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=File:EmmyLua_NewProject.png&amp;diff=61471</id>
		<title>File:EmmyLua NewProject.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=File:EmmyLua_NewProject.png&amp;diff=61471"/>
		<updated>2020-08-08T08:01:39Z</updated>

		<summary type="html">&lt;p&gt;M!m: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Scripting&amp;diff=60526</id>
		<title>Scripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Scripting&amp;diff=60526"/>
		<updated>2020-05-29T20:54:59Z</updated>

		<summary type="html">&lt;p&gt;M!m: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
Scripting allows a modder to run custom code in the engine that can read and modify the game state to produce new features.&lt;br /&gt;
&lt;br /&gt;
Scripts are either specified via [[Scripting.tbl]] or as standalone lua files.&lt;br /&gt;
&lt;br /&gt;
==General Info==&lt;br /&gt;
*Scripting hooks are &#039;&#039;&#039;not&#039;&#039;&#039; executed on a separate thread (at least as of this writing). They are executed at given points in the code, and all other execution will not take place until a scripting hook has finished. Therefore, large and complicated scripts will most likely cause noticeable lag or slowdown when executed.&lt;br /&gt;
{{Template:Note|1=Information on this page does not apply to pre-3.6.10 builds}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Useful references==&lt;br /&gt;
*&#039;&#039;&#039;[[FS2 Open Lua Scripting]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Scripting API]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;!---*&#039;&#039;&#039;[http://fs2source.warpcore.org/temp/scripting.html Scripting.html]&#039;&#039;&#039; - Link OOA ---&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;[[Scripting functions]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Command-Line_Reference#-output_scripting|Command-Line Reference for creating scripting.html]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[http://lua-users.org/wiki/ Lua-Users Wiki]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[http://www.lua.org/manual/5.1/ Reference manual for Lua 5.1]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Standalone Lua scripts==&lt;br /&gt;
Since writing Lua scripts using the table can lead to some issues while developing scripts (such as wrong syntax highlighting or wrong line numbers in error messages) the engine also supports loading Lua scripts directly and executing them when the initial game data has been loaded. Since that alone does not allow to register hooks, there is a scripting API that allows to do that from Lua code. See engine.addHook in scripting.html.&lt;br /&gt;
&lt;br /&gt;
This allows to write a non-trivial script without using the global namespace which always risks contamination by other other scripts writing to the same global variables. Since the hook functions are defined in the same file as the other hook functions they can use the &#039;&#039;local&#039;&#039; variables declared in the top level scope without having to expose them to the global namespace.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Frames===&lt;br /&gt;
One of the most important things to understand when reading this guide is the concept of &amp;quot;frames&amp;quot;. (Experienced modders can probably skip this part) In gameplay, motion is achieved by making incremental changes every fraction of a second. A ship will be moved slightly, and then drawn to the screen. This happens 30-120 times a second; anything lower, and the game will become choppy and difficult to play.&lt;br /&gt;
&lt;br /&gt;
There is also a difference in the moving of objects in-game, and the moving of objects onscreen. All ships are first &amp;quot;moved&amp;quot;, in memory. This probably consists of physics calculations, that change the ship&#039;s position based on if their engines are turned on, or if they run into another object. After this, the game then renders the now-moved ships to what is referred to as a &amp;quot;backbuffer&amp;quot; - a place in memory that takes the place of the computer screen. Once rendering has finished, the backbuffer is instantly drawn to the screen. This prevents objects from flickering as they are drawn. You do not have to worry about flipping the backbuffer in scripting; FS2_Open will take care of that for you.&lt;br /&gt;
&lt;br /&gt;
For scripting, &#039;&#039;&#039;it is important to understand that each block of code will therefore be executed several times a second, but only once per frame&#039;&#039;&#039;. However, the exact number of times per second will depend on how much work the computer has to do (And therefore how much time it takes) for each frame. To determine how much time you should consider to have passed, you must use the ba.getFrametime() function; which will return the approximate time the frame will take, in seconds. In addition, if you &amp;quot;move&amp;quot; a ship after it has already been rendered, the change will not become apparent until the next frame.&lt;br /&gt;
&lt;br /&gt;
This does mean that if you want to make a block of text move across the screen, at a rate of 5 pixels per second, all you have to do is multiply the speed by the frametime:&lt;br /&gt;
&amp;lt;pre&amp;gt;#Global Hooks&lt;br /&gt;
$Global: [&lt;br /&gt;
   --If the g_WheeXPosition variable does not exist,&lt;br /&gt;
   --it means we are on the first frame.&lt;br /&gt;
   --If that is the case, set it to zero.&lt;br /&gt;
   if not g_WheeXPosition then&lt;br /&gt;
      g_WheeXPosition = 0&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   --Move the text&lt;br /&gt;
   g_WheeXPosition = g_WheeXPosition + (5 * ba.getFrametime())&lt;br /&gt;
&lt;br /&gt;
   --Draw &amp;quot;WHEE!!!&amp;quot;&lt;br /&gt;
   gr.drawString(&amp;quot;WHEE!!!&amp;quot;, g_WheeXPosition, 10)&lt;br /&gt;
]&lt;br /&gt;
#End&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Hooks===&lt;br /&gt;
Scripting &amp;quot;hooks&amp;quot; form the basis of the scripting system. A &amp;quot;hook&amp;quot; simply refers to a point in the code where code to execute scripting has been added. The hook may then be added to a table, or added to a SEXP. In general usage, &amp;quot;hook&amp;quot; refers to an entry in scripting.tbl.&lt;br /&gt;
&lt;br /&gt;
All hooks take the form of an identifer (such as $Global:), followed by brackets to determine what type of scripting is being executed. A lack of brackets also indicates a type of scripting execution. All current bracket configurations are listed below. Note that &amp;quot;$Hook:&amp;quot; is used merely as a placeholder, and should be replaced with the actual hook name ($Global:, $HUD:, $On Frame:, etc).&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: scripting&amp;lt;/pre&amp;gt;Specifies one line of LUA scripting. In addition, the return value of that line will be passed to the interpreter and used (if applicable). Specifying a variable or value on this line will result in it being returned, as well.&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: [scripting]&amp;lt;/pre&amp;gt;A single set of brackets specifies a block of LUA scripting. Does not return a value unless explicitly specified. (Explicit specification is not possible at this time; but may be implemented in the future if/when more future hooks take a return value.)&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: [[scriptfilename.lua]]&amp;lt;/pre&amp;gt;Double brackets specify a file. This file is read out of the data/scripts directory, and must include the file extension. You may specify a compiled lua file as a target as well; this may result in crossplatform issues for a mod, however.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====+Override====&lt;br /&gt;
Some hooks additionally take a +Override: field. This field uses the same bracket configurations as above. If a hook includes a +Override field, this hook always determines whether the default FS2_Open behavior that the hook is associated with will function, or will be disabled. This should be used in cases where scripting will replace the original FS2_Open behavior. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;$HUD: [&lt;br /&gt;
    gr.setColor(255, 255, 255, 255)&lt;br /&gt;
    gr.drawString(&amp;quot;HUD Disabled&amp;quot;, 50, 50)&lt;br /&gt;
 ]&lt;br /&gt;
    +Override: true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, override hooks are (by convention) executed before FS2_Open behavior. The HUD hook override, for example, is executed before any part of the HUD is actually drawn.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Asynchronous operations==&lt;br /&gt;
{{Table382| This feature is not yet available in FSO builds and is still in code review.}}&lt;br /&gt;
As already laid out in the previous sections, Lua code is executed &#039;&#039;synchronously&#039;&#039; when the engine invokes a hook. That means that the engine will stop doing what it does, execute some Lua code and then continue on. However, if you want to have some behaviour happen over multiple frames (e.g. you want to smoothly move text from one side of the screen to the other) you have to break up that operation into multiple &amp;quot;On Frame&amp;quot; hooks calls and somehow restore the operation state in each hook call. This is bothersome and gets increasingly more complicated when scripts get more complex. For this reason, the scripting API supports the concept of &amp;quot;Promises&amp;quot; and &#039;&#039;asynchronous coroutines&#039;&#039;. Let&#039;s look at Promises first since they are important for the coroutines.&lt;br /&gt;
&lt;br /&gt;
===Promise===&lt;br /&gt;
&#039;&#039;Promise&#039;&#039; is a JavaScript concept that exists in various other languages with various names but the basic idea is that it is a handle to a value that will be available in the future. For example, you could have a function that returns when a specific ship arrives in a mission and gives you a handle to that ship. Such a function could not be run synchronously since it would block the engine making it impossible for it to actually warp in that ship.&lt;br /&gt;
&lt;br /&gt;
However, a function could return a promise that will &#039;&#039;resolve&#039;&#039; to the ship handle once that ship has arrived. Then a script could just register itself to be called when the promise has been resolved and not worry about keeping track of new arrivals via different hooks or something like that.&lt;br /&gt;
&lt;br /&gt;
For this reason, promises has one important operation: &amp;quot;continueWith&amp;quot; (in JavaScript it would be &amp;quot;then&amp;quot; but that is a keywork in Lua). That function gets called with a function as its first parameter. This function will be called when the promise resolves with the resolve values as its parameters.&lt;br /&gt;
&lt;br /&gt;
In addition to resolving, promises can also go into an &amp;quot;error&amp;quot; state. This means that whatever operation the promise represents has failed for some reason. In our example, ending the mission would also cause an error for the promise since it is impossible for a new ship to arrive in the mission we were in. This case can be handled with the &amp;quot;catch&amp;quot; function. Similar to &amp;quot;continueWith&amp;quot;, you pass it a function but this will only be called when the promise ends in an error. The function returns another promise that will (successfully) resolve with the return value of the &amp;quot;catch&amp;quot; function so you can handle an error in a promise and still continue.&lt;br /&gt;
&lt;br /&gt;
===Asynchronous Coroutines===&lt;br /&gt;
A normal function has a very strict life cycle. It gets called, does some stuff, and then returns a value. A coroutine expands that concept by allowing the function to &amp;quot;suspend&amp;quot; at certain points in its runtime. Then the calling function can &amp;quot;resume&amp;quot; the coroutine at a later point until the function is actually finished and reaches a &amp;quot;return&amp;quot; statement. This is a very common concept in several programming languages but Lua has built-in support for that. That covers the &amp;quot;Coroutine&amp;quot; part. Now let&#039;s look at the asynchronous part.&lt;br /&gt;
&lt;br /&gt;
Consider again our promise from above where we want to wait for a ship to arrive. What we want to do is to apply some battle damage to the ship once it arrives. However, this ship isn&#039;t here yet. We could use the &amp;quot;continueWith&amp;quot; function from the returned promise but that is a bit bothersome expecially if you have some more complicated control flow. Instead, we can use our coroutines to start a function, maybe do some setup, and then &amp;quot;suspend&amp;quot; until the promise resolves:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
async.run(function()&lt;br /&gt;
	mn.sendPlainMessage(&amp;quot;Waiting for GTVA Collosus&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local ship = async.await(mn.waitForShipAsync(&amp;quot;GTVA Collosus&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
	applyBattleDamage(ship)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
There are two interesting functions here. &#039;&#039;async.run&#039;&#039; and &#039;&#039;async.await&#039;&#039;. &#039;&#039;async.run&#039;&#039; will execute the specified function as a Lua coroutine and return a promise that will resolve with the return value of the function or error out if one of the awaited promises returns an error.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;async.await&#039;&#039; takes a promise as its parameter and uses the coroutine character of the function and suspends the function until the promise resolves or causes an error. It will then resume the function an return the resolve value of the promise. This way, we can write code that looks just like normal synchronous code but still do stuff across several frames.&lt;br /&gt;
&lt;br /&gt;
===Advanced promise features===&lt;br /&gt;
These coroutines are a very powerful feature but without anything to produce promises it is not very helpful. The engine can maybe provide you with some functions that return coroutines but the point of Lua is to allow modders to do their own thing. For this reason, there is the basic building block &#039;&#039;async.promise&#039;&#039;. This function can create a promise for which the Lua code can determine when it resolves or errors. To do this, you pass &#039;&#039;async.promise&#039;&#039; a function that takes up to two parameters. Both parameters will be functions. Calling the first parameter &#039;&#039;resolve&#039;&#039; will resolve the original promise with the passed parameters. &#039;&#039;reject&#039;&#039; will similarly cause the promise to transition into the error state with the passed parameters as the error values.&lt;br /&gt;
&lt;br /&gt;
This feature is very useful to &amp;quot;promisify&amp;quot; code that uses the &amp;quot;old&amp;quot; way of doing asynchronous operations since it allows to create the promise at one point and then store the resolve and reject functions so that they can be called at a later point.&lt;br /&gt;
&lt;br /&gt;
For a more detailed and step by step guide on how this feature can be used, please see [[Tutorial:Custom Promises]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Tutorial:Custom_Promises&amp;diff=60525</id>
		<title>Tutorial:Custom Promises</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Tutorial:Custom_Promises&amp;diff=60525"/>
		<updated>2020-05-29T20:54:54Z</updated>

		<summary type="html">&lt;p&gt;M!m: Created page with &amp;quot;This tutorial will walk you through using &amp;#039;&amp;#039;async.promise&amp;#039;&amp;#039; for creating promises from Lua code so that you can await custom conditions in &amp;#039;&amp;#039;async.run&amp;#039;&amp;#039;.  A relatively common...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial will walk you through using &#039;&#039;async.promise&#039;&#039; for creating promises from Lua code so that you can await custom conditions in &#039;&#039;async.run&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A relatively common operation in missions is to have an event happen when a ship has arrived in mission. This could be done via very complicated usages of the &amp;quot;On Warp In&amp;quot; hook that involve a lot of global variables. However, here we will create a [https://www.tutorialspoint.com/lua/lua_modules.htm Lua Module] that exposes the function &amp;quot;waitForShipAsync(ship_name)&amp;quot; that returns a promise which resolves to the ship handle when the specified ship has arrived in the mission or errors when the mission has ended. So, let&#039;s start with a simple template that exposes exactly that function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local module = {}&lt;br /&gt;
&lt;br /&gt;
function module.waitForShipAsync(ship_name)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return module&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Not very useful but a good start nonetheless. If you save this as &amp;quot;missionPromise.lua&amp;quot; in your &amp;quot;scripts&amp;quot; folder it will be available for use with &#039;&#039;require&#039;&#039;.&lt;br /&gt;
For the rest of the tutorial we will be using the same main script so you can save this as &#039;&#039;tutorial-sct.lua&#039;&#039; in your &amp;quot;tables&amp;quot; folder.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local mnProm = require(&amp;quot;missionPromise&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
engine.addHook(&amp;quot;On Gameplay Start&amp;quot;, function()&lt;br /&gt;
	async.run(function()&lt;br /&gt;
		mn.sendPlainMessage(&amp;quot;Start of the coroutine!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		local ship = async.await(mnProm.waitForShipAsync(&amp;quot;TestShip&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
		mn.sendPlainMessage(&amp;quot;Ship has arrived! Name: &amp;quot; .. ship.Name)&lt;br /&gt;
	end)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Since you will also need a mission to test this in you can use this [https://gist.github.com/asarium/3678172e71a522b5e07e26ee347cd81e#file-async_test-fs2 simple test mission] that has a few ships set up that will arrive when either &amp;quot;1&amp;quot; or &amp;quot;2&amp;quot; is pressed.&lt;br /&gt;
&lt;br /&gt;
If you run this now it will immediately cause a Lua error since &#039;&#039;waitForShipAsync&#039;&#039; does not return a value yet which is not accepted by async.await. Since this is about &#039;&#039;async.promise&#039;&#039; let&#039;s call it and see what happens:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function module.waitForShipAsync(ship_name)&lt;br /&gt;
	return async.promise(function(resolve, reject) end)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will now no longer cause an error upon starting a mission. However, you will also never see the &amp;quot;Ship has arrived!&amp;quot; message since the promise that is waited on will never resolve. To see something happen let&#039;s make a small change to the module function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function module.waitForShipAsync(ship_name)&lt;br /&gt;
	return async.promise(function(resolve, reject)&lt;br /&gt;
		resolve(hv.Player)&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you start the mission now you will immediately see the message &amp;quot;Ship has arrived! Name: Alpha 1&amp;quot;.&lt;br /&gt;
So, we now have a function that returns a promise which will immediately resolve to the player ship handle. However, that is not the handle to the correct ship since we expect to get a handle to &amp;quot;TestShip&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Next, we need to add an engine hook for when a ship has arrived in the mission since that is exactly the event we want to wait for. This can be done with &#039;&#039;engine.addHook&#039;&#039;. You pass as the first parameter the name of the hook and a function that will be executed on that hook as the second parameter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
engine.addHook(&amp;quot;On Warp In&amp;quot;, function()&lt;br /&gt;
end)&lt;br /&gt;
&lt;br /&gt;
function module.waitForShipAsync(ship_name)&lt;br /&gt;
	return async.promise(function(resolve, reject)&lt;br /&gt;
		resolve(hv.Player)&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this hook we can check &#039;&#039;hv.Self&#039;&#039; to get a handle of the ship that is arriving. What we want to happen in that function is that if we have created a promise before this point with the &#039;&#039;ship_name&#039;&#039; set to the same value as the name of the arriving ship, we want to resolve that promise. The actual way we want to do that is to actually save the &#039;&#039;resolve&#039;&#039; callback we got in the promise constructor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local arrivalListeners = {}&lt;br /&gt;
engine.addHook(&amp;quot;On Warp In&amp;quot;, function()&lt;br /&gt;
end)&lt;br /&gt;
&lt;br /&gt;
function module.waitForShipAsync(ship_name)&lt;br /&gt;
	return async.promise(function(resolve, reject)&lt;br /&gt;
		arrivalListeners[ship_name] = resolve -- &amp;lt;--&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We now have &#039;&#039;arrivalListeners&#039;&#039; as a table which maps ship name to the desired resolve function. In the warp in hook we can now simply check if we have a pending promise for that ship name and if so, resolve it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
engine.addHook(&amp;quot;On Warp In&amp;quot;, function()&lt;br /&gt;
	local resolver = arrivalListeners[hv.Self.Name]&lt;br /&gt;
&lt;br /&gt;
	if resolver then&lt;br /&gt;
		resolver(hv.Self)&lt;br /&gt;
	end&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Try it out now. If you press &amp;quot;1&amp;quot; in the mission you will see &amp;quot;Ship has arrived! Name: TestShip&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
That is it. You just created your first promise!&lt;br /&gt;
&lt;br /&gt;
That code will work reasonably well but will break in subtle ways when used a bit more extensively. For example, if two coroutines want to wait for the same ship, only one will be notified since the previous resolve function will be overwritten. Also, if a ship has already arrived then the function will never resolve since we will never see the &amp;quot;On Warp In&amp;quot; event. Here is a [https://gist.github.com/asarium/3678172e71a522b5e07e26ee347cd81e#file-missionpromiseextended-lua &amp;quot;production ready&amp;quot;] version of this script that will handle these edge cases properly. It will also cause the promises to reject when the mission ends so that promises waiting for ships that will never arrive do not stick around forever.&lt;br /&gt;
&lt;br /&gt;
Thank you for joining this tutorial! If you have any questions, don&#039;t hesitate to ask them either on discord in the #scp channel or in the scripting subforum.&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Scripting&amp;diff=60148</id>
		<title>Scripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Scripting&amp;diff=60148"/>
		<updated>2020-05-24T19:57:21Z</updated>

		<summary type="html">&lt;p&gt;M!m: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
Scripting allows a modder to run custom code in the engine that can read and modify the game state to produce new features.&lt;br /&gt;
&lt;br /&gt;
Scripts are either specified via [[Scripting.tbl]] or as standalone lua files.&lt;br /&gt;
&lt;br /&gt;
==General Info==&lt;br /&gt;
*Scripting hooks are &#039;&#039;&#039;not&#039;&#039;&#039; executed on a separate thread (at least as of this writing). They are executed at given points in the code, and all other execution will not take place until a scripting hook has finished. Therefore, large and complicated scripts will most likely cause noticeable lag or slowdown when executed.&lt;br /&gt;
{{Template:Note|1=Information on this page does not apply to pre-3.6.10 builds}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Useful references==&lt;br /&gt;
*&#039;&#039;&#039;[[FS2 Open Lua Scripting]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Scripting API]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;!---*&#039;&#039;&#039;[http://fs2source.warpcore.org/temp/scripting.html Scripting.html]&#039;&#039;&#039; - Link OOA ---&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;[[Scripting functions]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Command-Line_Reference#-output_scripting|Command-Line Reference for creating scripting.html]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[http://lua-users.org/wiki/ Lua-Users Wiki]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[http://www.lua.org/manual/5.1/ Reference manual for Lua 5.1]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Standalone Lua scripts==&lt;br /&gt;
Since writing Lua scripts using the table can lead to some issues while developing scripts (such as wrong syntax highlighting or wrong line numbers in error messages) the engine also supports loading Lua scripts directly and executing them when the initial game data has been loaded. Since that alone does not allow to register hooks, there is a scripting API that allows to do that from Lua code. See engine.addHook in scripting.html.&lt;br /&gt;
&lt;br /&gt;
This allows to write a non-trivial script without using the global namespace which always risks contamination by other other scripts writing to the same global variables. Since the hook functions are defined in the same file as the other hook functions they can use the &#039;&#039;local&#039;&#039; variables declared in the top level scope without having to expose them to the global namespace.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Frames===&lt;br /&gt;
One of the most important things to understand when reading this guide is the concept of &amp;quot;frames&amp;quot;. (Experienced modders can probably skip this part) In gameplay, motion is achieved by making incremental changes every fraction of a second. A ship will be moved slightly, and then drawn to the screen. This happens 30-120 times a second; anything lower, and the game will become choppy and difficult to play.&lt;br /&gt;
&lt;br /&gt;
There is also a difference in the moving of objects in-game, and the moving of objects onscreen. All ships are first &amp;quot;moved&amp;quot;, in memory. This probably consists of physics calculations, that change the ship&#039;s position based on if their engines are turned on, or if they run into another object. After this, the game then renders the now-moved ships to what is referred to as a &amp;quot;backbuffer&amp;quot; - a place in memory that takes the place of the computer screen. Once rendering has finished, the backbuffer is instantly drawn to the screen. This prevents objects from flickering as they are drawn. You do not have to worry about flipping the backbuffer in scripting; FS2_Open will take care of that for you.&lt;br /&gt;
&lt;br /&gt;
For scripting, &#039;&#039;&#039;it is important to understand that each block of code will therefore be executed several times a second, but only once per frame&#039;&#039;&#039;. However, the exact number of times per second will depend on how much work the computer has to do (And therefore how much time it takes) for each frame. To determine how much time you should consider to have passed, you must use the ba.getFrametime() function; which will return the approximate time the frame will take, in seconds. In addition, if you &amp;quot;move&amp;quot; a ship after it has already been rendered, the change will not become apparent until the next frame.&lt;br /&gt;
&lt;br /&gt;
This does mean that if you want to make a block of text move across the screen, at a rate of 5 pixels per second, all you have to do is multiply the speed by the frametime:&lt;br /&gt;
&amp;lt;pre&amp;gt;#Global Hooks&lt;br /&gt;
$Global: [&lt;br /&gt;
   --If the g_WheeXPosition variable does not exist,&lt;br /&gt;
   --it means we are on the first frame.&lt;br /&gt;
   --If that is the case, set it to zero.&lt;br /&gt;
   if not g_WheeXPosition then&lt;br /&gt;
      g_WheeXPosition = 0&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   --Move the text&lt;br /&gt;
   g_WheeXPosition = g_WheeXPosition + (5 * ba.getFrametime())&lt;br /&gt;
&lt;br /&gt;
   --Draw &amp;quot;WHEE!!!&amp;quot;&lt;br /&gt;
   gr.drawString(&amp;quot;WHEE!!!&amp;quot;, g_WheeXPosition, 10)&lt;br /&gt;
]&lt;br /&gt;
#End&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Hooks===&lt;br /&gt;
Scripting &amp;quot;hooks&amp;quot; form the basis of the scripting system. A &amp;quot;hook&amp;quot; simply refers to a point in the code where code to execute scripting has been added. The hook may then be added to a table, or added to a SEXP. In general usage, &amp;quot;hook&amp;quot; refers to an entry in scripting.tbl.&lt;br /&gt;
&lt;br /&gt;
All hooks take the form of an identifer (such as $Global:), followed by brackets to determine what type of scripting is being executed. A lack of brackets also indicates a type of scripting execution. All current bracket configurations are listed below. Note that &amp;quot;$Hook:&amp;quot; is used merely as a placeholder, and should be replaced with the actual hook name ($Global:, $HUD:, $On Frame:, etc).&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: scripting&amp;lt;/pre&amp;gt;Specifies one line of LUA scripting. In addition, the return value of that line will be passed to the interpreter and used (if applicable). Specifying a variable or value on this line will result in it being returned, as well.&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: [scripting]&amp;lt;/pre&amp;gt;A single set of brackets specifies a block of LUA scripting. Does not return a value unless explicitly specified. (Explicit specification is not possible at this time; but may be implemented in the future if/when more future hooks take a return value.)&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: [[scriptfilename.lua]]&amp;lt;/pre&amp;gt;Double brackets specify a file. This file is read out of the data/scripts directory, and must include the file extension. You may specify a compiled lua file as a target as well; this may result in crossplatform issues for a mod, however.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====+Override====&lt;br /&gt;
Some hooks additionally take a +Override: field. This field uses the same bracket configurations as above. If a hook includes a +Override field, this hook always determines whether the default FS2_Open behavior that the hook is associated with will function, or will be disabled. This should be used in cases where scripting will replace the original FS2_Open behavior. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;$HUD: [&lt;br /&gt;
    gr.setColor(255, 255, 255, 255)&lt;br /&gt;
    gr.drawString(&amp;quot;HUD Disabled&amp;quot;, 50, 50)&lt;br /&gt;
 ]&lt;br /&gt;
    +Override: true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, override hooks are (by convention) executed before FS2_Open behavior. The HUD hook override, for example, is executed before any part of the HUD is actually drawn.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Asynchronous operations==&lt;br /&gt;
{{Table382| This feature is not yet available in FSO builds and is still in code review.}}&lt;br /&gt;
As already laid out in the previous sections, Lua code is executed &#039;&#039;synchronously&#039;&#039; when the engine invokes a hook. That means that the engine will stop doing what it does, execute some Lua code and then continue on. However, if you want to have some behaviour happen over multiple frames (e.g. you want to smoothly move text from one side of the screen to the other) you have to break up that operation into multiple &amp;quot;On Frame&amp;quot; hooks calls and somehow restore the operation state in each hook call. This is bothersome and gets increasingly more complicated when scripts get more complex. For this reason, the scripting API supports the concept of &amp;quot;Promises&amp;quot; and &#039;&#039;asynchronous coroutines&#039;&#039;. Let&#039;s look at Promises first since they are important for the coroutines.&lt;br /&gt;
&lt;br /&gt;
===Promise===&lt;br /&gt;
&#039;&#039;Promise&#039;&#039; is a JavaScript concept that exists in various other languages with various names but the basic idea is that it is a handle to a value that will be available in the future. For example, you could have a function that returns when a specific ship arrives in a mission and gives you a handle to that ship. Such a function could not be run synchronously since it would block the engine making it impossible for it to actually warp in that ship.&lt;br /&gt;
&lt;br /&gt;
However, a function could return a promise that will &#039;&#039;resolve&#039;&#039; to the ship handle once that ship has arrived. Then a script could just register itself to be called when the promise has been resolved and not worry about keeping track of new arrivals via different hooks or something like that.&lt;br /&gt;
&lt;br /&gt;
For this reason, promises has one important operation: &amp;quot;continueWith&amp;quot; (in JavaScript it would be &amp;quot;then&amp;quot; but that is a keywork in Lua). That function gets called with a function as its first parameter. This function will be called when the promise resolves with the resolve values as its parameters.&lt;br /&gt;
&lt;br /&gt;
In addition to resolving, promises can also go into an &amp;quot;error&amp;quot; state. This means that whatever operation the promise represents has failed for some reason. In our example, ending the mission would also cause an error for the promise since it is impossible for a new ship to arrive in the mission we were in. This case can be handled with the &amp;quot;catch&amp;quot; function. Similar to &amp;quot;continueWith&amp;quot;, you pass it a function but this will only be called when the promise ends in an error. The function returns another promise that will (successfully) resolve with the return value of the &amp;quot;catch&amp;quot; function so you can handle an error in a promise and still continue.&lt;br /&gt;
&lt;br /&gt;
===Asynchronous Coroutines===&lt;br /&gt;
A normal function has a very strict life cycle. It gets called, does some stuff, and then returns a value. A coroutine expands that concept by allowing the function to &amp;quot;suspend&amp;quot; at certain points in its runtime. Then the calling function can &amp;quot;resume&amp;quot; the coroutine at a later point until the function is actually finished and reaches a &amp;quot;return&amp;quot; statement. This is a very common concept in several programming languages but Lua has built-in support for that. That covers the &amp;quot;Coroutine&amp;quot; part. Now let&#039;s look at the asynchronous part.&lt;br /&gt;
&lt;br /&gt;
Consider again our promise from above where we want to wait for a ship to arrive. What we want to do is to apply some battle damage to the ship once it arrives. However, this ship isn&#039;t here yet. We could use the &amp;quot;continueWith&amp;quot; function from the returned promise but that is a bit bothersome expecially if you have some more complicated control flow. Instead, we can use our coroutines to start a function, maybe do some setup, and then &amp;quot;suspend&amp;quot; until the promise resolves:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
async.run(function()&lt;br /&gt;
	mn.sendPlainMessage(&amp;quot;Waiting for GTVA Collosus&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local ship = async.await(mn.waitForShipAsync(&amp;quot;GTVA Collosus&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
	applyBattleDamage(ship)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
There are two interesting functions here. &#039;&#039;async.run&#039;&#039; and &#039;&#039;async.await&#039;&#039;. &#039;&#039;async.run&#039;&#039; will execute the specified function as a Lua coroutine and return a promise that will resolve with the return value of the function or error out if one of the awaited promises returns an error.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;async.await&#039;&#039; takes a promise as its parameter and uses the coroutine character of the function and suspends the function until the promise resolves or causes an error. It will then resume the function an return the resolve value of the promise. This way, we can write code that looks just like normal synchronous code but still do stuff across several frames.&lt;br /&gt;
&lt;br /&gt;
===Advanced promise features===&lt;br /&gt;
These coroutines are a very powerful feature but without anything to produce promises it is not very helpful. The engine can maybe provide you with some functions that return coroutines but the point of Lua is to allow modders to do their own thing. For this reason, there is the basic building block &#039;&#039;async.promise&#039;&#039;. This function can create a promise for which the Lua code can determine when it resolves or errors. To do this, you pass &#039;&#039;async.promise&#039;&#039; a function that takes up to two parameters. Both parameters will be functions. Calling the first parameter &#039;&#039;resolve&#039;&#039; will resolve the original promise with the passed parameters. &#039;&#039;reject&#039;&#039; will similarly cause the promise to transition into the error state with the passed parameters as the error values.&lt;br /&gt;
&lt;br /&gt;
This feature is very useful to &amp;quot;promisify&amp;quot; code that uses the &amp;quot;old&amp;quot; way of doing asynchronous operations since it allows to create the promise at one point and then store the resolve and reject functions so that they can be called at a later point.&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Scripting&amp;diff=60147</id>
		<title>Scripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Scripting&amp;diff=60147"/>
		<updated>2020-05-24T19:56:34Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add initial documentation for asynchronous coroutines&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
Scripting allows a modder to run custom code in the engine that can read and modify the game state to produce new features.&lt;br /&gt;
&lt;br /&gt;
Scripts are either specified via [[Scripting.tbl]] or as standalone lua files.&lt;br /&gt;
&lt;br /&gt;
==General Info==&lt;br /&gt;
*Scripting hooks are &#039;&#039;&#039;not&#039;&#039;&#039; executed on a separate thread (at least as of this writing). They are executed at given points in the code, and all other execution will not take place until a scripting hook has finished. Therefore, large and complicated scripts will most likely cause noticeable lag or slowdown when executed.&lt;br /&gt;
{{Template:Note|1=Information on this page does not apply to pre-3.6.10 builds}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Useful references==&lt;br /&gt;
*&#039;&#039;&#039;[[FS2 Open Lua Scripting]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Scripting API]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;!---*&#039;&#039;&#039;[http://fs2source.warpcore.org/temp/scripting.html Scripting.html]&#039;&#039;&#039; - Link OOA ---&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;[[Scripting functions]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Command-Line_Reference#-output_scripting|Command-Line Reference for creating scripting.html]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[http://lua-users.org/wiki/ Lua-Users Wiki]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[http://www.lua.org/manual/5.1/ Reference manual for Lua 5.1]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Standalone Lua scripts==&lt;br /&gt;
Since writing Lua scripts using the table can lead to some issues while developing scripts (such as wrong syntax highlighting or wrong line numbers in error messages) the engine also supports loading Lua scripts directly and executing them when the initial game data has been loaded. Since that alone does not allow to register hooks, there is a scripting API that allows to do that from Lua code. See engine.addHook in scripting.html.&lt;br /&gt;
&lt;br /&gt;
This allows to write a non-trivial script without using the global namespace which always risks contamination by other other scripts writing to the same global variables. Since the hook functions are defined in the same file as the other hook functions they can use the &#039;&#039;local&#039;&#039; variables declared in the top level scope without having to expose them to the global namespace.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
===Frames===&lt;br /&gt;
One of the most important things to understand when reading this guide is the concept of &amp;quot;frames&amp;quot;. (Experienced modders can probably skip this part) In gameplay, motion is achieved by making incremental changes every fraction of a second. A ship will be moved slightly, and then drawn to the screen. This happens 30-120 times a second; anything lower, and the game will become choppy and difficult to play.&lt;br /&gt;
&lt;br /&gt;
There is also a difference in the moving of objects in-game, and the moving of objects onscreen. All ships are first &amp;quot;moved&amp;quot;, in memory. This probably consists of physics calculations, that change the ship&#039;s position based on if their engines are turned on, or if they run into another object. After this, the game then renders the now-moved ships to what is referred to as a &amp;quot;backbuffer&amp;quot; - a place in memory that takes the place of the computer screen. Once rendering has finished, the backbuffer is instantly drawn to the screen. This prevents objects from flickering as they are drawn. You do not have to worry about flipping the backbuffer in scripting; FS2_Open will take care of that for you.&lt;br /&gt;
&lt;br /&gt;
For scripting, &#039;&#039;&#039;it is important to understand that each block of code will therefore be executed several times a second, but only once per frame&#039;&#039;&#039;. However, the exact number of times per second will depend on how much work the computer has to do (And therefore how much time it takes) for each frame. To determine how much time you should consider to have passed, you must use the ba.getFrametime() function; which will return the approximate time the frame will take, in seconds. In addition, if you &amp;quot;move&amp;quot; a ship after it has already been rendered, the change will not become apparent until the next frame.&lt;br /&gt;
&lt;br /&gt;
This does mean that if you want to make a block of text move across the screen, at a rate of 5 pixels per second, all you have to do is multiply the speed by the frametime:&lt;br /&gt;
&amp;lt;pre&amp;gt;#Global Hooks&lt;br /&gt;
$Global: [&lt;br /&gt;
   --If the g_WheeXPosition variable does not exist,&lt;br /&gt;
   --it means we are on the first frame.&lt;br /&gt;
   --If that is the case, set it to zero.&lt;br /&gt;
   if not g_WheeXPosition then&lt;br /&gt;
      g_WheeXPosition = 0&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   --Move the text&lt;br /&gt;
   g_WheeXPosition = g_WheeXPosition + (5 * ba.getFrametime())&lt;br /&gt;
&lt;br /&gt;
   --Draw &amp;quot;WHEE!!!&amp;quot;&lt;br /&gt;
   gr.drawString(&amp;quot;WHEE!!!&amp;quot;, g_WheeXPosition, 10)&lt;br /&gt;
]&lt;br /&gt;
#End&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Hooks===&lt;br /&gt;
Scripting &amp;quot;hooks&amp;quot; form the basis of the scripting system. A &amp;quot;hook&amp;quot; simply refers to a point in the code where code to execute scripting has been added. The hook may then be added to a table, or added to a SEXP. In general usage, &amp;quot;hook&amp;quot; refers to an entry in scripting.tbl.&lt;br /&gt;
&lt;br /&gt;
All hooks take the form of an identifer (such as $Global:), followed by brackets to determine what type of scripting is being executed. A lack of brackets also indicates a type of scripting execution. All current bracket configurations are listed below. Note that &amp;quot;$Hook:&amp;quot; is used merely as a placeholder, and should be replaced with the actual hook name ($Global:, $HUD:, $On Frame:, etc).&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: scripting&amp;lt;/pre&amp;gt;Specifies one line of LUA scripting. In addition, the return value of that line will be passed to the interpreter and used (if applicable). Specifying a variable or value on this line will result in it being returned, as well.&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: [scripting]&amp;lt;/pre&amp;gt;A single set of brackets specifies a block of LUA scripting. Does not return a value unless explicitly specified. (Explicit specification is not possible at this time; but may be implemented in the future if/when more future hooks take a return value.)&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: [[scriptfilename.lua]]&amp;lt;/pre&amp;gt;Double brackets specify a file. This file is read out of the data/scripts directory, and must include the file extension. You may specify a compiled lua file as a target as well; this may result in crossplatform issues for a mod, however.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====+Override====&lt;br /&gt;
Some hooks additionally take a +Override: field. This field uses the same bracket configurations as above. If a hook includes a +Override field, this hook always determines whether the default FS2_Open behavior that the hook is associated with will function, or will be disabled. This should be used in cases where scripting will replace the original FS2_Open behavior. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;$HUD: [&lt;br /&gt;
    gr.setColor(255, 255, 255, 255)&lt;br /&gt;
    gr.drawString(&amp;quot;HUD Disabled&amp;quot;, 50, 50)&lt;br /&gt;
 ]&lt;br /&gt;
    +Override: true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, override hooks are (by convention) executed before FS2_Open behavior. The HUD hook override, for example, is executed before any part of the HUD is actually drawn.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Asynchronous operations==&lt;br /&gt;
{{Table3614| This feature is not yet available in FSO builds and is still in code review.}}&lt;br /&gt;
As already laid out in the previous sections, Lua code is executed &#039;&#039;synchronously&#039;&#039; when the engine invokes a hook. That means that the engine will stop doing what it does, execute some Lua code and then continue on. However, if you want to have some behaviour happen over multiple frames (e.g. you want to smoothly move text from one side of the screen to the other) you have to break up that operation into multiple &amp;quot;On Frame&amp;quot; hooks calls and somehow restore the operation state in each hook call. This is bothersome and gets increasingly more complicated when scripts get more complex. For this reason, the scripting API supports the concept of &amp;quot;Promises&amp;quot; and &#039;&#039;asynchronous coroutines&#039;&#039;. Let&#039;s look at Promises first since they are important for the coroutines.&lt;br /&gt;
&lt;br /&gt;
===Promise===&lt;br /&gt;
&#039;&#039;Promise&#039;&#039; is a JavaScript concept that exists in various other languages with various names but the basic idea is that it is a handle to a value that will be available in the future. For example, you could have a function that returns when a specific ship arrives in a mission and gives you a handle to that ship. Such a function could not be run synchronously since it would block the engine making it impossible for it to actually warp in that ship.&lt;br /&gt;
&lt;br /&gt;
However, a function could return a promise that will &#039;&#039;resolve&#039;&#039; to the ship handle once that ship has arrived. Then a script could just register itself to be called when the promise has been resolved and not worry about keeping track of new arrivals via different hooks or something like that.&lt;br /&gt;
&lt;br /&gt;
For this reason, promises has one important operation: &amp;quot;continueWith&amp;quot; (in JavaScript it would be &amp;quot;then&amp;quot; but that is a keywork in Lua). That function gets called with a function as its first parameter. This function will be called when the promise resolves with the resolve values as its parameters.&lt;br /&gt;
&lt;br /&gt;
In addition to resolving, promises can also go into an &amp;quot;error&amp;quot; state. This means that whatever operation the promise represents has failed for some reason. In our example, ending the mission would also cause an error for the promise since it is impossible for a new ship to arrive in the mission we were in. This case can be handled with the &amp;quot;catch&amp;quot; function. Similar to &amp;quot;continueWith&amp;quot;, you pass it a function but this will only be called when the promise ends in an error. The function returns another promise that will (successfully) resolve with the return value of the &amp;quot;catch&amp;quot; function so you can handle an error in a promise and still continue.&lt;br /&gt;
&lt;br /&gt;
===Asynchronous Coroutines===&lt;br /&gt;
A normal function has a very strict life cycle. It gets called, does some stuff, and then returns a value. A coroutine expands that concept by allowing the function to &amp;quot;suspend&amp;quot; at certain points in its runtime. Then the calling function can &amp;quot;resume&amp;quot; the coroutine at a later point until the function is actually finished and reaches a &amp;quot;return&amp;quot; statement. This is a very common concept in several programming languages but Lua has built-in support for that. That covers the &amp;quot;Coroutine&amp;quot; part. Now let&#039;s look at the asynchronous part.&lt;br /&gt;
&lt;br /&gt;
Consider again our promise from above where we want to wait for a ship to arrive. What we want to do is to apply some battle damage to the ship once it arrives. However, this ship isn&#039;t here yet. We could use the &amp;quot;continueWith&amp;quot; function from the returned promise but that is a bit bothersome expecially if you have some more complicated control flow. Instead, we can use our coroutines to start a function, maybe do some setup, and then &amp;quot;suspend&amp;quot; until the promise resolves:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
async.run(function()&lt;br /&gt;
	mn.sendPlainMessage(&amp;quot;Waiting for GTVA Collosus&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local ship = async.await(mn.waitForShipAsync(&amp;quot;GTVA Collosus&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
	applyBattleDamage(ship)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
There are two interesting functions here. &#039;&#039;async.run&#039;&#039; and &#039;&#039;async.await&#039;&#039;. &#039;&#039;async.run&#039;&#039; will execute the specified function as a Lua coroutine and return a promise that will resolve with the return value of the function or error out if one of the awaited promises returns an error.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;async.await&#039;&#039; takes a promise as its parameter and uses the coroutine character of the function and suspends the function until the promise resolves or causes an error. It will then resume the function an return the resolve value of the promise. This way, we can write code that looks just like normal synchronous code but still do stuff across several frames.&lt;br /&gt;
&lt;br /&gt;
===Advanced promise features===&lt;br /&gt;
These coroutines are a very powerful feature but without anything to produce promises it is not very helpful. The engine can maybe provide you with some functions that return coroutines but the point of Lua is to allow modders to do their own thing. For this reason, there is the basic building block &#039;&#039;async.promise&#039;&#039;. This function can create a promise for which the Lua code can determine when it resolves or errors. To do this, you pass &#039;&#039;async.promise&#039;&#039; a function that takes up to two parameters. Both parameters will be functions. Calling the first parameter &#039;&#039;resolve&#039;&#039; will resolve the original promise with the passed parameters. &#039;&#039;reject&#039;&#039; will similarly cause the promise to transition into the error state with the passed parameters as the error values.&lt;br /&gt;
&lt;br /&gt;
This feature is very useful to &amp;quot;promisify&amp;quot; code that uses the &amp;quot;old&amp;quot; way of doing asynchronous operations since it allows to create the promise at one point and then store the resolve and reject functions so that they can be called at a later point.&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Portal:Modding&amp;diff=60141</id>
		<title>Portal:Modding</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Portal:Modding&amp;diff=60141"/>
		<updated>2020-05-24T16:40:27Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add scripting link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=0 align=center cellpadding=4 cellspacing=0 width=95% style=&amp;quot;margin: 0 0 1em 1em; background: #202020; border: 1px #AA2020 solid; border-collapse: collapse; font-size: 95%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; background: #512020; 70%;&amp;quot;|&#039;&#039;&#039;The Freespace Modding Portal&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=0 align=right cellpadding=4 cellspacing=1 width=30% style=&amp;quot;margin: 0 0 1em 1em; background: #202020; border: 1px #AA2020 solid; border-collapse: collapse; font-size: 95%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; background: #512020; 70%;&amp;quot;|&#039;&#039;&#039;&#039;&#039;General&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[FS2 Data Structure|Data Structure]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[File Types]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[List of FRED-related topics|Mission design]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[Modelling]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[Tables]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[Texturing]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[PBR Reference Guide]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[Scripting]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; background: #512020; 70%;&amp;quot;|&#039;&#039;&#039;&#039;&#039;Tutorials and Downloads&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[:Category:Tools|Modding Tools]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[Tutorial - Beam Weapons|Beam Weapons reference]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[Styxx&#039;s POF Conversion plugin for 3D Studio Max|3DS Max Exporter]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[:Category:Tutorials|Tutorials Category]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[:Category:Scripting Examples|Scripting Examples]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[Video Tutorials]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; background: #512020; 70%;&amp;quot;|&#039;&#039;&#039;&#039;&#039;Released Content&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[User-made Campaigns]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[User-made standalone missions]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;color: white; height: 30px; 70%;&amp;quot;|[[User-made Ships]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Welcome to the FreeSpace Modding portal. Though presently unfinished, the FS Modding portal will come to be the central hub of all modding-related information on the FS Wiki. It will, of course, have strong links to the SCP-related areas of the Wiki, but for now is reasonably isolated. Please help expand this portal by editing and adding to pages linked from it.&lt;br /&gt;
&lt;br /&gt;
For a complete list of modding-related articles, click [[List of modding-related articles|here]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding|*]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Scripting.tbl&amp;diff=60140</id>
		<title>Scripting.tbl</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Scripting.tbl&amp;diff=60140"/>
		<updated>2020-05-24T16:39:45Z</updated>

		<summary type="html">&lt;p&gt;M!m: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersion|11242}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;scripting.tbl&#039;&#039;&#039; is used for scripting special features like alternate HUDs or ship viewer into the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-sct.tbm&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
==General Info==&lt;br /&gt;
*Scripting table consist of several sections identified by a hash mark preceding the section name (i.g. #Global Hooks)&lt;br /&gt;
*All sections &#039;&#039;must&#039;&#039; end with #&#039;&#039;&#039;End&#039;&#039;&#039;&lt;br /&gt;
*All sections are optional&lt;br /&gt;
*Most entries are optional&lt;br /&gt;
{{Template:Note|1=Information on this page does not apply to pre-3.6.10 builds}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sections==&lt;br /&gt;
&lt;br /&gt;
===#Global Hooks===&lt;br /&gt;
&#039;&#039;&#039;DEPRECATED:&#039;&#039;&#039; Global hooks have been deprecated in favour of state hooks since they are more flexible and can be specified multiple times.&lt;br /&gt;
&lt;br /&gt;
Global hooks are the simplest form of scripting hooks available. They are at preset locations in the code, and are generally executed every time that point is reached. Exceptions to this rule (such as the HUD hook) only depend on one or two variables to determine execution. All other scripting execution is determined by the modder.&lt;br /&gt;
Note that, as with other tables, the game expects these entries in precisely the order given here; if this is not followed, the parser will throw an error.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====$Global:====&lt;br /&gt;
Script in this section is executed almost immediately before each frame is drawn. This means that any scripting elements will be drawn, or take effect, after everything else, except for the &amp;quot;On Frame&amp;quot; conditional hook. It is not used with the standalone server. In addition, note that use of this hook should generally be avoided, since all scripting will have to be processed every frame.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====$Splash:====&lt;br /&gt;
This hook is executed once, when the splash images (PreLoad and PreLoadLogo) would be drawn. This hook should generally be used only for drawing the splash screen; any initialization could should be placed in GameInit. This hook is executed before virtually any other subsystem has been loaded, aside from the graphics and filesystem subsystems, so scripting elements such as the table and mission libraries will be nonfunctional.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====+Override:=====&lt;br /&gt;
Executed just before default splash images are loaded and displayed. Note that the frame is still drawn regardless; it is not necessary to flip the backbuffer manually.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====$GameInit:====&lt;br /&gt;
This hook is executed once, after all of the Freespace2 subsystems have been initialized. It is executed before the game switches to the main hall or, in the case of standalone server mode, begins the game.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====$Simulation:====&lt;br /&gt;
This hook is executed only during missions. It is executed after all damage, movement, physics, SEXPs, and other &amp;quot;physical&amp;quot; in-game changes have been applied. It is executed before anything has been rendered. This hook should be used only for damage, movement, and physics related scripting, as if the game needs to be rendered without any in-game time having been passed, this function will not be called.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====$HUD:====&lt;br /&gt;
The HUD hook is executed after the HUD has been drawn. Note that if the HUD is turned off, this hook will be disabled as well, until the HUD is turned back on.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====+Override:=====&lt;br /&gt;
Executed immediately before anything on the HUD is drawn, and controls whether the default FS2_Open is drawn.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===#State Hooks===&lt;br /&gt;
In Freespace2, a &amp;quot;state&amp;quot; more or less refers to a room. It may also refer to a separate mode - playing a mission is the GS_STATE_GAME_PLAY state. The main menu is the GS_STATE_MAIN_MENU state. This section should only exist in 3.6.9. It is included here for the sake of documentation; it has since been removed (Dec 2006) and superseded by the conditional hook system.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====$State:=====&lt;br /&gt;
Specifies the state name. A full list of states is located here: &#039;&#039;[[List of Game States]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====$Hook:=====&lt;br /&gt;
Executed after all of the state code has been executed, but before the game frame is actually drawn.&lt;br /&gt;
&lt;br /&gt;
======+Override:======&lt;br /&gt;
Determines whether the specified state is handled at all by Freespace. If true, then none of the loading or exit code for the state will be specified as well.&lt;br /&gt;
&lt;br /&gt;
===#Conditional Hooks===&lt;br /&gt;
Scripting hooks have been available since Sep 2006. They consist of any number of conditions, followed by any number of actions. All available conditions and actions are located in the file generated by -output_scripting.&lt;br /&gt;
&lt;br /&gt;
One way to think of conditional scripting is like this: The condition specifies the object that the action will apply to, or the place that the action will occur in. All conditions must be met for their associated actions to execute. Actions are associated with a set of conditions by simply adding them after that set of conditions. (Obviously, you may want to space out each pair of action/condition sets in the TBL to make it easier to read.)&lt;br /&gt;
&lt;br /&gt;
The flexibility of conditional scripting comes in due to its inherent scalability. If you specify a mission and ship condition with a warpin action, that script will only be executed when the ship warps in on that particular mission. Removing the mission field will make that warpin scripting apply to the ship for all missions; or removing the ship field will make the warpin scripting apply to all ships in that mission.&lt;br /&gt;
&lt;br /&gt;
This prompts the question: if this is all conditional scripting does, why not just use the global hook? &lt;br /&gt;
#Organization - conditional scripting is generally easier to read and modify because it is grouped in a standardized manner.&lt;br /&gt;
#Speed - All conditions can be evaluated by FS2_Open itself, without invoking the Lua interpreter at all.&lt;br /&gt;
#Scalability - As of the time of this writing, you can only have one global hook. Modular tables will simply replace it. With conditional scripting, if you want to specify additional actions for a set of conditions in a modular table file, you may do so.&lt;br /&gt;
&lt;br /&gt;
;Format&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;$Condition:&#039;&#039;&#039;: Where &amp;quot;$Condition:&amp;quot; is one of several conditions specified in scripting.html, such as $State: or $Ship:. Takes a value representing the object the condition should be checked against (such as a state, ship, or mission name)&lt;br /&gt;
;&#039;&#039;&#039;$Condition:&#039;&#039;&#039;: ...&lt;br /&gt;
;&#039;&#039;&#039;...&#039;&#039;&#039;:&lt;br /&gt;
;&#039;&#039;&#039;$Action:&#039;&#039;&#039;: Where &amp;quot;$Action:&amp;quot; is one of several actions specified in scripting.html, such as $On Frame or $On Warp In. Takes a scripting hook, using the bracket configuration outlined at the top of this article.&lt;br /&gt;
;&#039;&#039;&#039;$Condition:&#039;&#039;&#039;: ...&lt;br /&gt;
;&#039;&#039;&#039;...&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
A brief description of all Conditions and Actions at the time of this writing:&lt;br /&gt;
&lt;br /&gt;
====Conditions====&lt;br /&gt;
&lt;br /&gt;
=====$Application:=====&lt;br /&gt;
Specifies which application the execution will apply to. Can be &#039;&#039;&#039;FS2_Open&#039;&#039;&#039; or &#039;&#039;&#039;FRED2_Open&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=====$State:=====&lt;br /&gt;
Controls execution based on what state FS2_Open is in, such as the main hall, options screen, or in a mission.&lt;br /&gt;
*The full list of states can be found here: &#039;&#039;[[List of Game States]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====$Campaign:=====&lt;br /&gt;
Controls execution based on the current campaign&#039;s filename. (It is under consideration to change this to the campaign&#039;s name, instead).&lt;br /&gt;
&lt;br /&gt;
=====$Mission:=====&lt;br /&gt;
Controls execution based on the filename of the last mission to have started. This condition will remain true even after the mission has been exited until another mission is started.&lt;br /&gt;
&lt;br /&gt;
=====$Object Type:=====&lt;br /&gt;
Defines a specific object type that the action will apply for, such as a &amp;quot;Ship&amp;quot;, &amp;quot;Asteroid&amp;quot;, or &amp;quot;Jump Node&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=====$Ship:=====&lt;br /&gt;
Defines a specific ship (name) that the action will apply for.&lt;br /&gt;
&lt;br /&gt;
=====$Ship class:=====&lt;br /&gt;
Defines a specific ship class (name) that the action will apply for.&lt;br /&gt;
&lt;br /&gt;
=====$Ship type:=====&lt;br /&gt;
Defines a specific ship type (name) that the action will apply for.&lt;br /&gt;
&lt;br /&gt;
=====$Weapon class:=====&lt;br /&gt;
Defines a specific weapon class (name) that the action will apply for.&lt;br /&gt;
&lt;br /&gt;
=====$KeyPress:=====&lt;br /&gt;
Defines a specific key that the action will apply for.&lt;br /&gt;
*Experimental.&lt;br /&gt;
&lt;br /&gt;
=====$Action:=====&lt;br /&gt;
{{Table371|&lt;br /&gt;
Defines a specific control that the action will apply for. For example &amp;quot;Fire Primary Weapon&amp;quot; or &amp;quot;Match Target Speed&amp;quot;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====Actions====&lt;br /&gt;
&lt;br /&gt;
=====$On Game Init:=====&lt;br /&gt;
Executes immediately after game has been started.&lt;br /&gt;
::* No associated hook variables.&lt;br /&gt;
&lt;br /&gt;
=====$On Splash Screen:=====&lt;br /&gt;
Executes when initial game splash screen is shown&lt;br /&gt;
::* No associated hook variables.&lt;br /&gt;
&lt;br /&gt;
=====$On State Start:=====&lt;br /&gt;
Executed when specified game state starts&lt;br /&gt;
::* No associated hook variables.&lt;br /&gt;
&lt;br /&gt;
=====$On Frame:=====&lt;br /&gt;
Executes immediately after the global scripting hook, which is right before the frame is drawn.&lt;br /&gt;
::* No associated hook variables.&lt;br /&gt;
&lt;br /&gt;
=====$On Key Pressed:=====&lt;br /&gt;
Executed when specified key is pressed&lt;br /&gt;
::* &#039;&#039;&#039;Key&#039;&#039;&#039;, The pressed key&lt;br /&gt;
&lt;br /&gt;
=====$On Key Released:=====&lt;br /&gt;
Executed when specified key is released&lt;br /&gt;
::* &#039;&#039;&#039;Key&#039;&#039;&#039;, The released key&lt;br /&gt;
&lt;br /&gt;
=====$On Mouse Moved:=====&lt;br /&gt;
Executed when mouse is moved&lt;br /&gt;
::* No associated hook variables.&lt;br /&gt;
&lt;br /&gt;
=====$On Mouse Pressed:=====&lt;br /&gt;
Executed when mouse button is pressed&lt;br /&gt;
::* No associated hook variables.&lt;br /&gt;
&lt;br /&gt;
=====$On Mouse Released:=====&lt;br /&gt;
Executed when mouse button is released&lt;br /&gt;
::* No associated hook variables.&lt;br /&gt;
&lt;br /&gt;
=====$On State End:=====&lt;br /&gt;
Executed when specified game state ends&lt;br /&gt;
::* No associated hook variables.&lt;br /&gt;
&lt;br /&gt;
=====$On Mission Start:=====&lt;br /&gt;
Executed when mission starts&lt;br /&gt;
::* No associated hook variables.&lt;br /&gt;
&lt;br /&gt;
=====$On Gameplay Start:=====&lt;br /&gt;
{{Table3615|&lt;br /&gt;
Executed when the gameplay part of a mission starts&lt;br /&gt;
::* No associated hook variables.}}&lt;br /&gt;
&lt;br /&gt;
=====$On HUD Draw:=====&lt;br /&gt;
Executed after the HUD has been drawn. Note that if the HUD is turned off, this hook will be disabled as well, until the HUD is turned back on&lt;br /&gt;
::* &#039;&#039;&#039;Self&#039;&#039;&#039;, the viewer (object)&lt;br /&gt;
&lt;br /&gt;
=====$On Ship Collision:=====&lt;br /&gt;
Executes when the specified object collides with a ship. Sets a handle in the HookVariables library with the name of the object type (&amp;quot;Weapon&amp;quot;, &amp;quot;Debris&amp;quot;, and so on) with the type of the object. If both objects are ships, the other object gains the name &amp;quot;ShipB&amp;quot;. (If both ship objects define a collision hook, the variables will be swapped for the other ship, so the ship that the script is executing for will always be called &amp;quot;Script&amp;quot;.) The override will disable FS2_Open code, as well as the other object&#039;s collision code. If both objects have an override set, only one of the objects&#039; hooks will be used (Chosen arbitrarily). Note that the override receives the same variables.&lt;br /&gt;
::* When colliding something other than other ship:&lt;br /&gt;
::** &#039;&#039;&#039;Ship&#039;&#039;&#039;, the ship (object)&lt;br /&gt;
::** &#039;&#039;&#039;Debris&#039;&#039;&#039;, &#039;&#039;&#039;Asteroid&#039;&#039;&#039;, &#039;&#039;&#039;Weapon&#039;&#039;&#039;, depending what it collided with (object)&lt;br /&gt;
::** &#039;&#039;&#039;Self&#039;&#039;&#039;, the object referred by the condition (object)&lt;br /&gt;
::** &#039;&#039;&#039;Object&#039;&#039;&#039;, the ship (object)&lt;br /&gt;
::* When colliding with other ship:&lt;br /&gt;
::** &#039;&#039;&#039;Ship&#039;&#039;&#039;, the ship (object) referred by the condition (object)&lt;br /&gt;
::** &#039;&#039;&#039;ShipB&#039;&#039;&#039;, the other ship (object)&lt;br /&gt;
::** &#039;&#039;&#039;Self&#039;&#039;&#039;, the ship (object) referred by the condition (object)&lt;br /&gt;
::** &#039;&#039;&#039;Object&#039;&#039;&#039;, the other ship (object)&lt;br /&gt;
&lt;br /&gt;
=====$On Weapon Collision:=====&lt;br /&gt;
Like the ship collision hook, but for weapons.&lt;br /&gt;
::* When colliding something other than other weapon:&lt;br /&gt;
::** &#039;&#039;&#039;Weapon&#039;&#039;&#039;, the weapon (object)&lt;br /&gt;
::** &#039;&#039;&#039;Debris&#039;&#039;&#039;, &#039;&#039;&#039;Asteroid&#039;&#039;&#039;, &#039;&#039;&#039;Ship&#039;&#039;&#039;, depending what it collided with (object)&lt;br /&gt;
::** &#039;&#039;&#039;Self&#039;&#039;&#039;, the object the weapon collided with (object)&lt;br /&gt;
::** &#039;&#039;&#039;Object&#039;&#039;&#039;, the weapon (object)&lt;br /&gt;
::* When colliding with other weapon:&lt;br /&gt;
::** &#039;&#039;&#039;Weapon&#039;&#039;&#039;, the weapon (object) referred by the condition&lt;br /&gt;
::** &#039;&#039;&#039;WeaponB&#039;&#039;&#039;, the other weapon (object)&lt;br /&gt;
::** &#039;&#039;&#039;Self&#039;&#039;&#039;, the weapon (object) referred by the condition&lt;br /&gt;
::** &#039;&#039;&#039;Object&#039;&#039;&#039;, the other weapon (object)&lt;br /&gt;
&lt;br /&gt;
=====$On Debris Collision:=====&lt;br /&gt;
Like the ship collision hook, except for debris.&lt;br /&gt;
::* &#039;&#039;&#039;Debris&#039;&#039;&#039;, the debris (object)&lt;br /&gt;
::* &#039;&#039;&#039;Weapon&#039;&#039;&#039;, &#039;&#039;&#039;Ship&#039;&#039;&#039;, depending what it collided with (object)&lt;br /&gt;
::* &#039;&#039;&#039;Self&#039;&#039;&#039;, the object the debris collided with (object)&lt;br /&gt;
::* &#039;&#039;&#039;Object&#039;&#039;&#039;, the debris (object)&lt;br /&gt;
&lt;br /&gt;
=====$On Asteroid Collision:=====&lt;br /&gt;
Like the ship collision hook, only for asteroids.&lt;br /&gt;
::* &#039;&#039;&#039;Asteroid&#039;&#039;&#039;, the asteroid (object)&lt;br /&gt;
::* &#039;&#039;&#039;Weapon&#039;&#039;&#039;, &#039;&#039;&#039;Ship&#039;&#039;&#039;, depending what it collided with (object)&lt;br /&gt;
::* &#039;&#039;&#039;Self&#039;&#039;&#039;, the object the asteroid collided with (object)&lt;br /&gt;
::* &#039;&#039;&#039;Object&#039;&#039;&#039;, the asteroid (object)&lt;br /&gt;
&lt;br /&gt;
=====$On Object Render:=====&lt;br /&gt;
Executes when the specified object is rendered. The override is run before the object is rendered, and both the hook and its override receive an &amp;quot;Object&amp;quot; variable of the object to be rendered.&lt;br /&gt;
::* &#039;&#039;&#039;Self&#039;&#039;&#039;, the object rendered (object)&lt;br /&gt;
&lt;br /&gt;
=====$On Warp In:=====&lt;br /&gt;
Run when a ship has begun warping in, immediately after everything has been set up for per-frame processing. This hook is only executed once, when the ship begins warping in. An override will disable _all_ behavior related to warpin. Both the hook and an override receive an &amp;quot;Object&amp;quot; handle in the HookVariables library, with the type of the object that is warping in.&lt;br /&gt;
::* &#039;&#039;&#039;Self&#039;&#039;&#039;, the object warping in (object)&lt;br /&gt;
&lt;br /&gt;
=====$On Warp Out:=====&lt;br /&gt;
Same as warping in, except for warping out.&lt;br /&gt;
::* &#039;&#039;&#039;Self&#039;&#039;&#039;, the object warping out (object)&lt;br /&gt;
&lt;br /&gt;
=====$On Death:=====&lt;br /&gt;
*Currently only valid for ships.&lt;br /&gt;
Receives &amp;quot;Self&amp;quot; and &amp;quot;Killer&amp;quot; variables of the object and killer, respectively. Overriding it will override all default death behavior.&lt;br /&gt;
::* For asteroids:&lt;br /&gt;
::** &#039;&#039;&#039;Self&#039;&#039;&#039;, the asteroid (object)&lt;br /&gt;
::* For ships:&lt;br /&gt;
::** &#039;&#039;&#039;Self&#039;&#039;&#039;, the ship (object)&lt;br /&gt;
::** &#039;&#039;&#039;Killer&#039;&#039;&#039;, the other object (object) - NOTE, not guaranteed to exists&lt;br /&gt;
&lt;br /&gt;
=====$On Mission End:=====&lt;br /&gt;
Run on mission end.&lt;br /&gt;
::* No associated hook variables.&lt;br /&gt;
=====$On Weapon Equipped:=====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
Runs once each frame, for every ship that has the weapon defined in the $Weapon class condition equipped.&lt;br /&gt;
::* &#039;&#039;&#039;User&#039;&#039;&#039;, the ship carrying the weapon&lt;br /&gt;
::* &#039;&#039;&#039;Target&#039;&#039;&#039;, the ships&#039; current target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Weapon Fired:=====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
Runs once when a ship fires a weapon defined in the $Weapon class condition&lt;br /&gt;
::* &#039;&#039;&#039;User&#039;&#039;&#039;, the ship carrying the weapon&lt;br /&gt;
::* &#039;&#039;&#039;Target&#039;&#039;&#039;, the ships&#039; current target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Weapon Selected:=====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
Runs once when a bank with a weapon defined in the $Weapon class condition is selected&lt;br /&gt;
::* &#039;&#039;&#039;User&#039;&#039;&#039;, the ship carrying the weapon&lt;br /&gt;
::* &#039;&#039;&#039;Target&#039;&#039;&#039;, the ships&#039; current target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Weapon Deselected:=====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
Runs once when a bank with a weapon defined in the $Weapon class condition is deselected&lt;br /&gt;
::* &#039;&#039;&#039;User&#039;&#039;&#039;, the ship carrying the weapon&lt;br /&gt;
::* &#039;&#039;&#039;Target&#039;&#039;&#039;, the ships&#039; current target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Turret Fired:=====&lt;br /&gt;
{{Table3615|&lt;br /&gt;
Executed when a turret fires.&lt;br /&gt;
::* &#039;&#039;&#039;Ship&#039;&#039;&#039;, the parent ship&lt;br /&gt;
::* &#039;&#039;&#039;Weapon&#039;&#039;&#039;, the weapon which was fired&lt;br /&gt;
::* &#039;&#039;&#039;Target&#039;&#039;&#039;, the intended target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Ship Arrive:=====&lt;br /&gt;
{{Table371|&lt;br /&gt;
Executed when a ship arrives.&lt;br /&gt;
::* &#039;&#039;&#039;Ship&#039;&#039;&#039;, the arriving ship&lt;br /&gt;
::* &#039;&#039;&#039;Parent&#039;&#039;&#039;, the ship acting as the anchor when arrival location is &amp;quot;in front of ship&amp;quot;, &amp;quot;near ship&amp;quot; or &amp;quot;docking bay&amp;quot;; nil or invalid handle otherwise&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Action:=====&lt;br /&gt;
{{Table371|&lt;br /&gt;
Executed when an action is triggered, regardless of which key or button it is bound to. Does currently not trigger on mouse or joystick movements.&lt;br /&gt;
::* &#039;&#039;&#039;Action&#039;&#039;&#039;, the textual description of the action (for example &amp;quot;Fire Primary Weapon&amp;quot; or &amp;quot;Match Target Speed&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Action Stopped:=====&lt;br /&gt;
{{Table371|&lt;br /&gt;
Executed when a continuous action is released (for example &amp;quot;Fire Primary Weapon&amp;quot;, &amp;quot;Turn Left&amp;quot; or &amp;quot;Afterburner&amp;quot;).&lt;br /&gt;
::* &#039;&#039;&#039;Action&#039;&#039;&#039;, the textual description of the action&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Message Received:=====&lt;br /&gt;
{{Table371|&lt;br /&gt;
Executed when the player receives a message.&lt;br /&gt;
::* &#039;&#039;&#039;Name&#039;&#039;&#039;, the message name that was received. The message handle can be accessed with mn.Messages[hv.Name]&lt;br /&gt;
::* &#039;&#039;&#039;Message&#039;&#039;&#039;, the message text that would be displayed on the message gauge. Takes in account scrambled messages and variable replacements.&lt;br /&gt;
::* &#039;&#039;&#039;SenderString&#039;&#039;&#039;, the displayed string that shows the origin of the message.&lt;br /&gt;
::* &#039;&#039;&#039;Builtin&#039;&#039;&#039;, boolean, true if the message was a builtin message (eg: automatic messages from Command or wingmen)&lt;br /&gt;
::* &#039;&#039;&#039;Sender&#039;&#039;&#039;, object handle of the ship that sent the message. This might not always be valid, so check is :isValid() if you need to use it&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On HUD Message Received:=====&lt;br /&gt;
{{Table371|&lt;br /&gt;
Executed when the HUD should display a message. This is similar to $On Message Received but it will also receive messages that were not generated by a message (e.g &amp;quot;Firing artillery&amp;quot; for SSM strikes).&lt;br /&gt;
::* &#039;&#039;&#039;Text&#039;&#039;&#039;, the plain text of the message&lt;br /&gt;
::* &#039;&#039;&#039;SourceType&#039;&#039;&#039;, a number representing the type of the sender. The number can be one of the following:&lt;br /&gt;
:::* &#039;&#039;0&#039;&#039; A message sent by the computer&lt;br /&gt;
:::* &#039;&#039;1&#039;&#039; A training message&lt;br /&gt;
:::* &#039;&#039;2&#039;&#039; A message from a hidden source&lt;br /&gt;
:::* &#039;&#039;3&#039;&#039; An important message (this type is currently unused)&lt;br /&gt;
:::* &#039;&#039;4&#039;&#039; An failed message (this type is currently unused)&lt;br /&gt;
:::* &#039;&#039;5&#039;&#039; An satisfied message (this type is currently unused)&lt;br /&gt;
:::* &#039;&#039;6&#039;&#039; An message sent by (Terran) command&lt;br /&gt;
:::* &#039;&#039;7&#039;&#039; A multiplayer message&lt;br /&gt;
:::* &#039;&#039;&amp;amp;ge;8&#039;&#039; When the type is greater or equal to 8 then the source is one of the teams in the mission. You can get a team handle using mn.Team[hv.SourceType - 7] (as lua uses 1 based indexes)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Afterburner Engage:=====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Executed when a ship engages its afterburner.&lt;br /&gt;
::* &#039;&#039;&#039;Ship&#039;&#039;&#039;, the ship object of the ship engaging its afterburner&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Afterburner End:=====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Executed when a ship stops its afterburner.&lt;br /&gt;
::* &#039;&#039;&#039;Ship&#039;&#039;&#039;, the ship object of the ship stopping its afterburner&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Beam Collision:=====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Executed when a beam hits something.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If the beam hit a ship:&#039;&#039;&#039;&lt;br /&gt;
::* &#039;&#039;&#039;Self&#039;&#039;&#039;, the target ship that the beam hit&lt;br /&gt;
::* &#039;&#039;&#039;Object&#039;&#039;&#039;, the beam object that was fired&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If the beam hit an asteroid:&#039;&#039;&#039;&lt;br /&gt;
::* &#039;&#039;&#039;Object&#039;&#039;&#039;, the beam object that was fired&lt;br /&gt;
::* &#039;&#039;&#039;Self&#039;&#039;&#039;, the asteroid that was hit by the beam&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If the beam hit a weapon, such as a torpedo:&#039;&#039;&#039;&lt;br /&gt;
::* &#039;&#039;&#039;Object&#039;&#039;&#039;, the beam object that was fired&lt;br /&gt;
::* &#039;&#039;&#039;Self&#039;&#039;&#039;, the weapon object that was hit by the beam&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If the beam hit a piece of debris:&#039;&#039;&#039;&lt;br /&gt;
::* &#039;&#039;&#039;Object&#039;&#039;&#039;, the beam object that was fired&lt;br /&gt;
::* &#039;&#039;&#039;Self&#039;&#039;&#039;, the debris object that was hit by the beam&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Beam Fire:=====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Executed when a beam is fired. This will occur after warm up is complete, as the beam starts to render and give damage.&lt;br /&gt;
::* &#039;&#039;&#039;Beam&#039;&#039;&#039;, the beam object being fired&lt;br /&gt;
::* &#039;&#039;&#039;User&#039;&#039;&#039;, the parent ship object firing the beam&lt;br /&gt;
::* &#039;&#039;&#039;Target&#039;&#039;&#039;, the target object that the beam is trying to hit. Not guaranteed to exist!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Campaign Mission Accept:=====&lt;br /&gt;
{{Table381|&lt;br /&gt;
Executed when the outcome of a campaign mission is accepted.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Ship Depart:=====&lt;br /&gt;
{{Table381|&lt;br /&gt;
Executed when a ship departs the mission. This hook accounts for all departure types and it is not limited to only warping.&lt;br /&gt;
::* &#039;&#039;&#039;Ship&#039;&#039;&#039;, the ship departing&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Waypoints Done:=====&lt;br /&gt;
{{Table382|&lt;br /&gt;
Executed when a ship or wing completes a waypoint path.&lt;br /&gt;
::* &#039;&#039;&#039;Ship&#039;&#039;&#039;, the ship that completed the waypoint path&lt;br /&gt;
::* &#039;&#039;&#039;Wing&#039;&#039;&#039;, the wing that completed the waypoint path; nil or invalid handle otherwise&lt;br /&gt;
::* &#039;&#039;&#039;Waypointlist&#039;&#039;&#039;, the waypointlist that was completed&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Subsystem Destroyed:=====&lt;br /&gt;
{{Table382|&lt;br /&gt;
Executed when a subsystem is destroyed.&lt;br /&gt;
::* &#039;&#039;&#039;Ship&#039;&#039;&#039;, the parent ship of the destroyed subsystem&lt;br /&gt;
::* &#039;&#039;&#039;Subsystem&#039;&#039;&#039;, the name of the subsystem that was destroyed (string)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=====$On Goals Cleared:=====&lt;br /&gt;
{{Table382|&lt;br /&gt;
Executed when a ship&#039;s goals are cleared via the clear-goals sexp or scripting function. &lt;br /&gt;
::* &#039;&#039;&#039;Ship&#039;&#039;&#039;, the ship that had it&#039;s goals cleared&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Misc. Hook Variables:==&lt;br /&gt;
&lt;br /&gt;
===Viewer===&lt;br /&gt;
*Active if (non-player) viewing object is valid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Player===&lt;br /&gt;
*Active if player obj is valid &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
See [[:Category:Scripting Examples|Scripting Examples category]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Scripting&amp;diff=60139</id>
		<title>Scripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Scripting&amp;diff=60139"/>
		<updated>2020-05-24T16:39:15Z</updated>

		<summary type="html">&lt;p&gt;M!m: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
Scripting allows a modder to run custom code in the engine that can read and modify the game state to produce new features.&lt;br /&gt;
&lt;br /&gt;
Scripts are either specified via [[Scripting.tbl]] or as standalone lua files.&lt;br /&gt;
&lt;br /&gt;
==General Info==&lt;br /&gt;
*Scripting hooks are &#039;&#039;&#039;not&#039;&#039;&#039; executed on a separate thread (at least as of this writing). They are executed at given points in the code, and all other execution will not take place until a scripting hook has finished. Therefore, large and complicated scripts will most likely cause noticeable lag or slowdown when executed.&lt;br /&gt;
{{Template:Note|1=Information on this page does not apply to pre-3.6.10 builds}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Useful references==&lt;br /&gt;
*&#039;&#039;&#039;[[FS2 Open Lua Scripting]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Scripting API]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;!---*&#039;&#039;&#039;[http://fs2source.warpcore.org/temp/scripting.html Scripting.html]&#039;&#039;&#039; - Link OOA ---&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;[[Scripting functions]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Command-Line_Reference#-output_scripting|Command-Line Reference for creating scripting.html]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[http://lua-users.org/wiki/ Lua-Users Wiki]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[http://www.lua.org/manual/5.1/ Reference manual for Lua 5.1]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Standalone Lua scripts==&lt;br /&gt;
Since writing Lua scripts using the table can lead to some issues while developing scripts (such as wrong syntax highlighting or wrong line numbers in error messages) the engine also supports loading Lua scripts directly and executing them when the initial game data has been loaded. Since that alone does not allow to register hooks, there is a scripting API that allows to do that from Lua code. See engine.addHook in scripting.html.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
===Frames===&lt;br /&gt;
One of the most important things to understand when reading this guide is the concept of &amp;quot;frames&amp;quot;. (Experienced modders can probably skip this part) In gameplay, motion is achieved by making incremental changes every fraction of a second. A ship will be moved slightly, and then drawn to the screen. This happens 30-120 times a second; anything lower, and the game will become choppy and difficult to play.&lt;br /&gt;
&lt;br /&gt;
There is also a difference in the moving of objects in-game, and the moving of objects onscreen. All ships are first &amp;quot;moved&amp;quot;, in memory. This probably consists of physics calculations, that change the ship&#039;s position based on if their engines are turned on, or if they run into another object. After this, the game then renders the now-moved ships to what is referred to as a &amp;quot;backbuffer&amp;quot; - a place in memory that takes the place of the computer screen. Once rendering has finished, the backbuffer is instantly drawn to the screen. This prevents objects from flickering as they are drawn. You do not have to worry about flipping the backbuffer in scripting; FS2_Open will take care of that for you.&lt;br /&gt;
&lt;br /&gt;
For scripting, &#039;&#039;&#039;it is important to understand that each block of code will therefore be executed several times a second, but only once per frame&#039;&#039;&#039;. However, the exact number of times per second will depend on how much work the computer has to do (And therefore how much time it takes) for each frame. To determine how much time you should consider to have passed, you must use the ba.getFrametime() function; which will return the approximate time the frame will take, in seconds. In addition, if you &amp;quot;move&amp;quot; a ship after it has already been rendered, the change will not become apparent until the next frame.&lt;br /&gt;
&lt;br /&gt;
This does mean that if you want to make a block of text move across the screen, at a rate of 5 pixels per second, all you have to do is multiply the speed by the frametime:&lt;br /&gt;
&amp;lt;pre&amp;gt;#Global Hooks&lt;br /&gt;
$Global: [&lt;br /&gt;
   --If the g_WheeXPosition variable does not exist,&lt;br /&gt;
   --it means we are on the first frame.&lt;br /&gt;
   --If that is the case, set it to zero.&lt;br /&gt;
   if not g_WheeXPosition then&lt;br /&gt;
      g_WheeXPosition = 0&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   --Move the text&lt;br /&gt;
   g_WheeXPosition = g_WheeXPosition + (5 * ba.getFrametime())&lt;br /&gt;
&lt;br /&gt;
   --Draw &amp;quot;WHEE!!!&amp;quot;&lt;br /&gt;
   gr.drawString(&amp;quot;WHEE!!!&amp;quot;, g_WheeXPosition, 10)&lt;br /&gt;
]&lt;br /&gt;
#End&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Hooks===&lt;br /&gt;
Scripting &amp;quot;hooks&amp;quot; form the basis of the scripting system. A &amp;quot;hook&amp;quot; simply refers to a point in the code where code to execute scripting has been added. The hook may then be added to a table, or added to a SEXP. In general usage, &amp;quot;hook&amp;quot; refers to an entry in scripting.tbl.&lt;br /&gt;
&lt;br /&gt;
All hooks take the form of an identifer (such as $Global:), followed by brackets to determine what type of scripting is being executed. A lack of brackets also indicates a type of scripting execution. All current bracket configurations are listed below. Note that &amp;quot;$Hook:&amp;quot; is used merely as a placeholder, and should be replaced with the actual hook name ($Global:, $HUD:, $On Frame:, etc).&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: scripting&amp;lt;/pre&amp;gt;Specifies one line of LUA scripting. In addition, the return value of that line will be passed to the interpreter and used (if applicable). Specifying a variable or value on this line will result in it being returned, as well.&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: [scripting]&amp;lt;/pre&amp;gt;A single set of brackets specifies a block of LUA scripting. Does not return a value unless explicitly specified. (Explicit specification is not possible at this time; but may be implemented in the future if/when more future hooks take a return value.)&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: [[scriptfilename.lua]]&amp;lt;/pre&amp;gt;Double brackets specify a file. This file is read out of the data/scripts directory, and must include the file extension. You may specify a compiled lua file as a target as well; this may result in crossplatform issues for a mod, however.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====+Override====&lt;br /&gt;
Some hooks additionally take a +Override: field. This field uses the same bracket configurations as above. If a hook includes a +Override field, this hook always determines whether the default FS2_Open behavior that the hook is associated with will function, or will be disabled. This should be used in cases where scripting will replace the original FS2_Open behavior. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;$HUD: [&lt;br /&gt;
    gr.setColor(255, 255, 255, 255)&lt;br /&gt;
    gr.drawString(&amp;quot;HUD Disabled&amp;quot;, 50, 50)&lt;br /&gt;
 ]&lt;br /&gt;
    +Override: true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, override hooks are (by convention) executed before FS2_Open behavior. The HUD hook override, for example, is executed before any part of the HUD is actually drawn.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Scripting&amp;diff=60138</id>
		<title>Scripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Scripting&amp;diff=60138"/>
		<updated>2020-05-24T16:38:22Z</updated>

		<summary type="html">&lt;p&gt;M!m: Created page with &amp;quot;{{SCP_table}}  Scripting allows a modder to run custom code in the engine that can read and modify the game state to produce new features.  Scripts are either specified via ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
Scripting allows a modder to run custom code in the engine that can read and modify the game state to produce new features.&lt;br /&gt;
&lt;br /&gt;
Scripts are either specified via [[Scripting.tbl]] or as standalone lua files.&lt;br /&gt;
&lt;br /&gt;
==General Info==&lt;br /&gt;
*Scripting table consist of several sections identified by a hash mark preceeding the section name (i.g. #Global Hooks)&lt;br /&gt;
*All sections &#039;&#039;must&#039;&#039; end with #&#039;&#039;&#039;End&#039;&#039;&#039;&lt;br /&gt;
*All sections are optional&lt;br /&gt;
*Most entries are optional&lt;br /&gt;
*Scripting hooks are &#039;&#039;&#039;not&#039;&#039;&#039; executed on a separate thread (at least as of this writing). They are executed at given points in the code, and all other execution will not take place until a scripting hook has finished. Therefore, large and complicated scripts will most likely cause noticeable lag or slowdown when executed.&lt;br /&gt;
{{Template:Note|1=Information on this page does not apply to pre-3.6.10 builds}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Useful references==&lt;br /&gt;
*&#039;&#039;&#039;[[FS2 Open Lua Scripting]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Scripting API]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;!---*&#039;&#039;&#039;[http://fs2source.warpcore.org/temp/scripting.html Scripting.html]&#039;&#039;&#039; - Link OOA ---&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;[[Scripting functions]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Command-Line_Reference#-output_scripting|Command-Line Reference for creating scripting.html]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[http://lua-users.org/wiki/ Lua-Users Wiki]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[http://www.lua.org/manual/5.1/ Reference manual for Lua 5.1]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Standalone Lua scripts==&lt;br /&gt;
Since writing Lua scripts using the table can lead to some issues while developing scripts (such as wrong syntax highlighting or wrong line numbers in error messages) the engine also supports loading Lua scripts directly and executing them when the initial game data has been loaded. Since that alone does not allow to register hooks, there is a scripting API that allows to do that from Lua code. See engine.addHook in scripting.html.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
===Frames===&lt;br /&gt;
One of the most important things to understand when reading this guide is the concept of &amp;quot;frames&amp;quot;. (Experienced modders can probably skip this part) In gameplay, motion is achieved by making incremental changes every fraction of a second. A ship will be moved slightly, and then drawn to the screen. This happens 30-120 times a second; anything lower, and the game will become choppy and difficult to play.&lt;br /&gt;
&lt;br /&gt;
There is also a difference in the moving of objects in-game, and the moving of objects onscreen. All ships are first &amp;quot;moved&amp;quot;, in memory. This probably consists of physics calculations, that change the ship&#039;s position based on if their engines are turned on, or if they run into another object. After this, the game then renders the now-moved ships to what is referred to as a &amp;quot;backbuffer&amp;quot; - a place in memory that takes the place of the computer screen. Once rendering has finished, the backbuffer is instantly drawn to the screen. This prevents objects from flickering as they are drawn. You do not have to worry about flipping the backbuffer in scripting; FS2_Open will take care of that for you.&lt;br /&gt;
&lt;br /&gt;
For scripting, &#039;&#039;&#039;it is important to understand that each block of code will therefore be executed several times a second, but only once per frame&#039;&#039;&#039;. However, the exact number of times per second will depend on how much work the computer has to do (And therefore how much time it takes) for each frame. To determine how much time you should consider to have passed, you must use the ba.getFrametime() function; which will return the approximate time the frame will take, in seconds. In addition, if you &amp;quot;move&amp;quot; a ship after it has already been rendered, the change will not become apparent until the next frame.&lt;br /&gt;
&lt;br /&gt;
This does mean that if you want to make a block of text move across the screen, at a rate of 5 pixels per second, all you have to do is multiply the speed by the frametime:&lt;br /&gt;
&amp;lt;pre&amp;gt;#Global Hooks&lt;br /&gt;
$Global: [&lt;br /&gt;
   --If the g_WheeXPosition variable does not exist,&lt;br /&gt;
   --it means we are on the first frame.&lt;br /&gt;
   --If that is the case, set it to zero.&lt;br /&gt;
   if not g_WheeXPosition then&lt;br /&gt;
      g_WheeXPosition = 0&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   --Move the text&lt;br /&gt;
   g_WheeXPosition = g_WheeXPosition + (5 * ba.getFrametime())&lt;br /&gt;
&lt;br /&gt;
   --Draw &amp;quot;WHEE!!!&amp;quot;&lt;br /&gt;
   gr.drawString(&amp;quot;WHEE!!!&amp;quot;, g_WheeXPosition, 10)&lt;br /&gt;
]&lt;br /&gt;
#End&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Hooks===&lt;br /&gt;
Scripting &amp;quot;hooks&amp;quot; form the basis of the scripting system. A &amp;quot;hook&amp;quot; simply refers to a point in the code where code to execute scripting has been added. The hook may then be added to a table, or added to a SEXP. In general usage, &amp;quot;hook&amp;quot; refers to an entry in scripting.tbl.&lt;br /&gt;
&lt;br /&gt;
All hooks take the form of an identifer (such as $Global:), followed by brackets to determine what type of scripting is being executed. A lack of brackets also indicates a type of scripting execution. All current bracket configurations are listed below. Note that &amp;quot;$Hook:&amp;quot; is used merely as a placeholder, and should be replaced with the actual hook name ($Global:, $HUD:, $On Frame:, etc).&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: scripting&amp;lt;/pre&amp;gt;Specifies one line of LUA scripting. In addition, the return value of that line will be passed to the interpreter and used (if applicable). Specifying a variable or value on this line will result in it being returned, as well.&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: [scripting]&amp;lt;/pre&amp;gt;A single set of brackets specifies a block of LUA scripting. Does not return a value unless explicitly specified. (Explicit specification is not possible at this time; but may be implemented in the future if/when more future hooks take a return value.)&lt;br /&gt;
#&amp;lt;pre&amp;gt;$Hook: [[scriptfilename.lua]]&amp;lt;/pre&amp;gt;Double brackets specify a file. This file is read out of the data/scripts directory, and must include the file extension. You may specify a compiled lua file as a target as well; this may result in crossplatform issues for a mod, however.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====+Override====&lt;br /&gt;
Some hooks additionally take a +Override: field. This field uses the same bracket configurations as above. If a hook includes a +Override field, this hook always determines whether the default FS2_Open behavior that the hook is associated with will function, or will be disabled. This should be used in cases where scripting will replace the original FS2_Open behavior. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;$HUD: [&lt;br /&gt;
    gr.setColor(255, 255, 255, 255)&lt;br /&gt;
    gr.drawString(&amp;quot;HUD Disabled&amp;quot;, 50, 50)&lt;br /&gt;
 ]&lt;br /&gt;
    +Override: true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, override hooks are (by convention) executed before FS2_Open behavior. The HUD hook override, for example, is executed before any part of the HUD is actually drawn.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=58660</id>
		<title>Particle Effects</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=58660"/>
		<updated>2019-02-09T11:08:51Z</updated>

		<summary type="html">&lt;p&gt;M!m: Added documentation for &amp;quot;effects per second feature&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2016-09-02|417eb20}}&lt;br /&gt;
&lt;br /&gt;
Particle Effects is a SCP feature which allows to define custom particle effects that can be assigned to various engine properties.&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-part.tbm. This table type does not have a main table like the other types. All particle effects must be specified in modular tables. Currently there is no support for the usual &#039;&#039;+nocreate&#039;&#039; ability the other modular tables have but that will be added in the future. Parts of this documentation are written with with &#039;&#039;+nocreate&#039;&#039; in mind for when that is implemented.&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=General Info=&lt;br /&gt;
*Begins with #Particle Effects&lt;br /&gt;
*Contains zero or more particle effect definitions&lt;br /&gt;
*Ends with #End&lt;br /&gt;
&lt;br /&gt;
Particle effects are created by specifying a name and a type. The type dictates which values are valid and will be described below.&lt;br /&gt;
&lt;br /&gt;
==$Effect:==&lt;br /&gt;
*Creates a new effect and specifies its name. The name must be at least one character long.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Type:===&lt;br /&gt;
*Sets the type of this effect. See [[#Effect Types|Effect Types]] for possible values.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Effect Types=&lt;br /&gt;
There are multiple different types of effects. They are specified by passing the given name to &#039;&#039;$Type&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Single==&lt;br /&gt;
This effect type creates exactly one particle per processing step.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Effects per second:===&lt;br /&gt;
*Specifies how many times per second this effect is triggered. If this is not specified then the effect is triggered every frame. &amp;quot;Triggering&amp;quot; an effect means that one instance of the effect with the properties from above is created. If this is specified then the amount of triggers per second is always the same regardless of the FPS the game is running at. Values higher than the FPS (e.g. 120 if the game is running at 60 FPS) are handled correctly and will trigger the effect multiple times per frame if necessary.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;number&#039;&#039;. Must be greater than 0.&lt;br /&gt;
&lt;br /&gt;
==Composite==&lt;br /&gt;
A composite effects contains multiple other effects which are all displayed at the same time. This is useful if you want to create complex effects that require more than one individual particle effect. The amount of child effects is not limited. This type currently does not support &#039;&#039;+nocreate&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===+Child effect:===&lt;br /&gt;
*This specifies a child effect that should be added to the composite effect. The effect is specified using [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Cone==&lt;br /&gt;
This effects creates multiple particles which travel in a cone around a specific direction. The particles are created in a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution] around the direction vector. That means that more particle are created along the direction vector than far away from it. The velocity of a particle is scaled based on the angle it is away from the direction vector. This may be changed in the future to allow different effects.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Deviation:===&lt;br /&gt;
*Sets the standard deviation from the direction vector.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;, in degrees&lt;br /&gt;
&lt;br /&gt;
===+Velocity===&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Number===&lt;br /&gt;
*Sets the amount of particles created for every frame the effect is active. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Direction===&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it is currently facing.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal vector of the particle source. This data may not exist for all sources. The debug log file will contain the warning message &amp;quot;&amp;lt;tt&amp;gt;Effect &#039;&amp;lt;EffectName&amp;gt;&#039; tried to use normal direction for source without a normal!&amp;lt;/tt&amp;gt;&amp;quot; if an effect tries to use the normal vector without it existing.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot. This direction requires the normal for work properly so the same warning message as above may appear in your log if the source has no normal vector assigned to it.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Effects per second:===&lt;br /&gt;
*Specifies how many times per second this effect is triggered. If this is not specified then the effect is triggered every frame. &amp;quot;Triggering&amp;quot; an effect means that one instance of the effect with the properties from above is created. If this is specified then the amount of triggers per second is always the same regardless of the FPS the game is running at. Values higher than the FPS (e.g. 120 if the game is running at 60 FPS) are handled correctly and will trigger the effect multiple times per frame if necessary.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;number&#039;&#039;. Must be greater than 0.&lt;br /&gt;
&lt;br /&gt;
===+Trail effect:===&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Sphere==&lt;br /&gt;
This effect creates particles in a sphere shape around the center.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Velocity===&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Number===&lt;br /&gt;
*Sets the amount of particles created for every frame the effect is active. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Direction===&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it is currently facing.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal vector of the particle source. This data may not exist for all sources. The debug log file will contain the warning message &amp;quot;&amp;lt;tt&amp;gt;Effect &#039;&amp;lt;EffectName&amp;gt;&#039; tried to use normal direction for source without a normal!&amp;lt;/tt&amp;gt;&amp;quot; if an effect tries to use the normal vector without it existing.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot. This direction requires the normal for work properly so the same warning message as above may appear in your log if the source has no normal vector assigned to it.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Effects per second:===&lt;br /&gt;
*Specifies how many times per second this effect is triggered. If this is not specified then the effect is triggered every frame. &amp;quot;Triggering&amp;quot; an effect means that one instance of the effect with the properties from above is created. If this is specified then the amount of triggers per second is always the same regardless of the FPS the game is running at. Values higher than the FPS (e.g. 120 if the game is running at 60 FPS) are handled correctly and will trigger the effect multiple times per frame if necessary.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;number&#039;&#039;. Must be greater than 0.&lt;br /&gt;
&lt;br /&gt;
===+Trail effect:===&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Inline effect creation==&lt;br /&gt;
At some places in this table a particle effect may be created within another particle effect. This is used for composite effects and particle trails. If inline creation is valid for an option then you may either specify a name of a previously defined effect or use &#039;&#039;&#039;$New Effect&#039;&#039;&#039; which will create a new, unnamed effect. If a name is specified then that effect must be already defined. In order to ensure that the effect is always defined no matter in which order the effect tables are parsed the effect should be defined in the same table. Some options using this construct require a specific type of effect. That will be noted in the documentation of the option.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;$New Effect&#039;&#039;&#039; is used then a new unnamed effect is created. If the surrounding option has not forced an effect type then you can specify it using the standard syntax described above. All options are the same as if the effect would have been parsed in the normal way. &#039;&#039;+nocreate&#039;&#039; is not valid within this element.&lt;br /&gt;
&lt;br /&gt;
==Random range==&lt;br /&gt;
The particle effect system uses randomization to provide variation to the created particles. This is implemented by letting the mod author specify the values for the random distribution. There are different types of distributions which are explained below.&lt;br /&gt;
&lt;br /&gt;
===Uniform random range===&lt;br /&gt;
*This accepts 1 or 2 values. If one value is used then the random range always returns that value. If two values are specified then a uniformly distributed random value will be picked from the range.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Random values)&#039;&#039;&#039;, a list of floating point values. Either one or two values. If only one value is specified then the parentheses are optional.&lt;br /&gt;
**Example: &#039;&#039;(4 20)&#039;&#039;&lt;br /&gt;
**Example: &#039;&#039;4&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Normal distribution random range===&lt;br /&gt;
*This accepts 1 or 2 values. This random range generates values according to a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution]. The first value specified the mean value of the distribution. The second value specifies the standard deviation of the distribution, this defaults to 1.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Random values)&#039;&#039;&#039;, a list of floating point values. Either one or two values.&lt;br /&gt;
**Example: &#039;&#039;(4 20)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Particle Effects&lt;br /&gt;
&lt;br /&gt;
$Effect: MassDriverImpact&lt;br /&gt;
$Type: Cone&lt;br /&gt;
	+Filename: exp05&lt;br /&gt;
	+Size: (5 7)&lt;br /&gt;
	+Lifetime: (0.6)&lt;br /&gt;
	+Deviation: 5&lt;br /&gt;
	+Velocity: (500 700)&lt;br /&gt;
	+Number: (20 30)&lt;br /&gt;
	+Direction: Reflected&lt;br /&gt;
	+Trail effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp20&lt;br /&gt;
			+Size: (10)&lt;br /&gt;
			+Lifetime: (1)&lt;br /&gt;
			+Duration: Always&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$Effect: ApocalypseIgnition&lt;br /&gt;
$Type: Single&lt;br /&gt;
	+Filename: exp20&lt;br /&gt;
	+Size: (10 20)&lt;br /&gt;
	&lt;br /&gt;
$Effect: ApocalypseHomed&lt;br /&gt;
$Type: Composite&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp05&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp06b&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
			+Delay: (8 15)&lt;br /&gt;
			+Effects per second: 20&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=58659</id>
		<title>Particle Effects</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=58659"/>
		<updated>2019-02-09T11:02:54Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add documentation for optional parentheses.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2016-09-02|417eb20}}&lt;br /&gt;
&lt;br /&gt;
Particle Effects is a SCP feature which allows to define custom particle effects that can be assigned to various engine properties.&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-part.tbm. This table type does not have a main table like the other types. All particle effects must be specified in modular tables. Currently there is no support for the usual &#039;&#039;+nocreate&#039;&#039; ability the other modular tables have but that will be added in the future. Parts of this documentation are written with with &#039;&#039;+nocreate&#039;&#039; in mind for when that is implemented.&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=General Info=&lt;br /&gt;
*Begins with #Particle Effects&lt;br /&gt;
*Contains zero or more particle effect definitions&lt;br /&gt;
*Ends with #End&lt;br /&gt;
&lt;br /&gt;
Particle effects are created by specifying a name and a type. The type dictates which values are valid and will be described below.&lt;br /&gt;
&lt;br /&gt;
==$Effect:==&lt;br /&gt;
*Creates a new effect and specifies its name. The name must be at least one character long.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Type:===&lt;br /&gt;
*Sets the type of this effect. See [[#Effect Types|Effect Types]] for possible values.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Effect Types=&lt;br /&gt;
There are multiple different types of effects. They are specified by passing the given name to &#039;&#039;$Type&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Single==&lt;br /&gt;
This effect type creates exactly one particle per processing step.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Composite==&lt;br /&gt;
A composite effects contains multiple other effects which are all displayed at the same time. This is useful if you want to create complex effects that require more than one individual particle effect. The amount of child effects is not limited. This type currently does not support &#039;&#039;+nocreate&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===+Child effect:===&lt;br /&gt;
*This specifies a child effect that should be added to the composite effect. The effect is specified using [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Cone==&lt;br /&gt;
This effects creates multiple particles which travel in a cone around a specific direction. The particles are created in a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution] around the direction vector. That means that more particle are created along the direction vector than far away from it. The velocity of a particle is scaled based on the angle it is away from the direction vector. This may be changed in the future to allow different effects.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Deviation:===&lt;br /&gt;
*Sets the standard deviation from the direction vector.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;, in degrees&lt;br /&gt;
&lt;br /&gt;
===+Velocity===&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Number===&lt;br /&gt;
*Sets the amount of particles created for every frame the effect is active. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Direction===&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it is currently facing.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal vector of the particle source. This data may not exist for all sources. The debug log file will contain the warning message &amp;quot;&amp;lt;tt&amp;gt;Effect &#039;&amp;lt;EffectName&amp;gt;&#039; tried to use normal direction for source without a normal!&amp;lt;/tt&amp;gt;&amp;quot; if an effect tries to use the normal vector without it existing.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot. This direction requires the normal for work properly so the same warning message as above may appear in your log if the source has no normal vector assigned to it.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Trail effect:===&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Sphere==&lt;br /&gt;
This effect creates particles in a sphere shape around the center.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Velocity===&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Number===&lt;br /&gt;
*Sets the amount of particles created for every frame the effect is active. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Direction===&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it is currently facing.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal vector of the particle source. This data may not exist for all sources. The debug log file will contain the warning message &amp;quot;&amp;lt;tt&amp;gt;Effect &#039;&amp;lt;EffectName&amp;gt;&#039; tried to use normal direction for source without a normal!&amp;lt;/tt&amp;gt;&amp;quot; if an effect tries to use the normal vector without it existing.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot. This direction requires the normal for work properly so the same warning message as above may appear in your log if the source has no normal vector assigned to it.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Trail effect:===&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Inline effect creation==&lt;br /&gt;
At some places in this table a particle effect may be created within another particle effect. This is used for composite effects and particle trails. If inline creation is valid for an option then you may either specify a name of a previously defined effect or use &#039;&#039;&#039;$New Effect&#039;&#039;&#039; which will create a new, unnamed effect. If a name is specified then that effect must be already defined. In order to ensure that the effect is always defined no matter in which order the effect tables are parsed the effect should be defined in the same table. Some options using this construct require a specific type of effect. That will be noted in the documentation of the option.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;$New Effect&#039;&#039;&#039; is used then a new unnamed effect is created. If the surrounding option has not forced an effect type then you can specify it using the standard syntax described above. All options are the same as if the effect would have been parsed in the normal way. &#039;&#039;+nocreate&#039;&#039; is not valid within this element.&lt;br /&gt;
&lt;br /&gt;
==Random range==&lt;br /&gt;
The particle effect system uses randomization to provide variation to the created particles. This is implemented by letting the mod author specify the values for the random distribution. There are different types of distributions which are explained below.&lt;br /&gt;
&lt;br /&gt;
===Uniform random range===&lt;br /&gt;
*This accepts 1 or 2 values. If one value is used then the random range always returns that value. If two values are specified then a uniformly distributed random value will be picked from the range.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Random values)&#039;&#039;&#039;, a list of floating point values. Either one or two values. If only one value is specified then the parentheses are optional.&lt;br /&gt;
**Example: &#039;&#039;(4 20)&#039;&#039;&lt;br /&gt;
**Example: &#039;&#039;4&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Normal distribution random range===&lt;br /&gt;
*This accepts 1 or 2 values. This random range generates values according to a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution]. The first value specified the mean value of the distribution. The second value specifies the standard deviation of the distribution, this defaults to 1.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Random values)&#039;&#039;&#039;, a list of floating point values. Either one or two values.&lt;br /&gt;
**Example: &#039;&#039;(4 20)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Particle Effects&lt;br /&gt;
&lt;br /&gt;
$Effect: MassDriverImpact&lt;br /&gt;
$Type: Cone&lt;br /&gt;
	+Filename: exp05&lt;br /&gt;
	+Size: (5 7)&lt;br /&gt;
	+Lifetime: (0.6)&lt;br /&gt;
	+Deviation: 5&lt;br /&gt;
	+Velocity: (500 700)&lt;br /&gt;
	+Number: (20 30)&lt;br /&gt;
	+Direction: Reflected&lt;br /&gt;
	+Trail effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp20&lt;br /&gt;
			+Size: (10)&lt;br /&gt;
			+Lifetime: (1)&lt;br /&gt;
			+Duration: Always&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$Effect: ApocalypseIgnition&lt;br /&gt;
$Type: Single&lt;br /&gt;
	+Filename: exp20&lt;br /&gt;
	+Size: (10 20)&lt;br /&gt;
	&lt;br /&gt;
$Effect: ApocalypseHomed&lt;br /&gt;
$Type: Composite&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp05&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp06b&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
			+Delay: (8 15)&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=58587</id>
		<title>Particle Effects</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=58587"/>
		<updated>2018-12-23T12:40:44Z</updated>

		<summary type="html">&lt;p&gt;M!m: Updated location of trail effect option location&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2016-09-02|417eb20}}&lt;br /&gt;
&lt;br /&gt;
Particle Effects is a SCP feature which allows to define custom particle effects that can be assigned to various engine properties.&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-part.tbm. This table type does not have a main table like the other types. All particle effects must be specified in modular tables. Currently there is no support for the usual &#039;&#039;+nocreate&#039;&#039; ability the other modular tables have but that will be added in the future. Parts of this documentation are written with with &#039;&#039;+nocreate&#039;&#039; in mind for when that is implemented.&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=General Info=&lt;br /&gt;
*Begins with #Particle Effects&lt;br /&gt;
*Contains zero or more particle effect definitions&lt;br /&gt;
*Ends with #End&lt;br /&gt;
&lt;br /&gt;
Particle effects are created by specifying a name and a type. The type dictates which values are valid and will be described below.&lt;br /&gt;
&lt;br /&gt;
==$Effect:==&lt;br /&gt;
*Creates a new effect and specifies its name. The name must be at least one character long.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Type:===&lt;br /&gt;
*Sets the type of this effect. See [[#Effect Types|Effect Types]] for possible values.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Effect Types=&lt;br /&gt;
There are multiple different types of effects. They are specified by passing the given name to &#039;&#039;$Type&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Single==&lt;br /&gt;
This effect type creates exactly one particle per processing step.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Composite==&lt;br /&gt;
A composite effects contains multiple other effects which are all displayed at the same time. This is useful if you want to create complex effects that require more than one individual particle effect. The amount of child effects is not limited. This type currently does not support &#039;&#039;+nocreate&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===+Child effect:===&lt;br /&gt;
*This specifies a child effect that should be added to the composite effect. The effect is specified using [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Cone==&lt;br /&gt;
This effects creates multiple particles which travel in a cone around a specific direction. The particles are created in a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution] around the direction vector. That means that more particle are created along the direction vector than far away from it. The velocity of a particle is scaled based on the angle it is away from the direction vector. This may be changed in the future to allow different effects.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Deviation:===&lt;br /&gt;
*Sets the standard deviation from the direction vector.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;, in degrees&lt;br /&gt;
&lt;br /&gt;
===+Velocity===&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Number===&lt;br /&gt;
*Sets the amount of particles created for every frame the effect is active. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Direction===&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it is currently facing.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal vector of the particle source. This data may not exist for all sources. The debug log file will contain the warning message &amp;quot;&amp;lt;tt&amp;gt;Effect &#039;&amp;lt;EffectName&amp;gt;&#039; tried to use normal direction for source without a normal!&amp;lt;/tt&amp;gt;&amp;quot; if an effect tries to use the normal vector without it existing.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot. This direction requires the normal for work properly so the same warning message as above may appear in your log if the source has no normal vector assigned to it.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Trail effect:===&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Sphere==&lt;br /&gt;
This effect creates particles in a sphere shape around the center.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Velocity===&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Number===&lt;br /&gt;
*Sets the amount of particles created for every frame the effect is active. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Direction===&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it is currently facing.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal vector of the particle source. This data may not exist for all sources. The debug log file will contain the warning message &amp;quot;&amp;lt;tt&amp;gt;Effect &#039;&amp;lt;EffectName&amp;gt;&#039; tried to use normal direction for source without a normal!&amp;lt;/tt&amp;gt;&amp;quot; if an effect tries to use the normal vector without it existing.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot. This direction requires the normal for work properly so the same warning message as above may appear in your log if the source has no normal vector assigned to it.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Trail effect:===&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Inline effect creation==&lt;br /&gt;
At some places in this table a particle effect may be created within another particle effect. This is used for composite effects and particle trails. If inline creation is valid for an option then you may either specify a name of a previously defined effect or use &#039;&#039;&#039;$New Effect&#039;&#039;&#039; which will create a new, unnamed effect. If a name is specified then that effect must be already defined. In order to ensure that the effect is always defined no matter in which order the effect tables are parsed the effect should be defined in the same table. Some options using this construct require a specific type of effect. That will be noted in the documentation of the option.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;$New Effect&#039;&#039;&#039; is used then a new unnamed effect is created. If the surrounding option has not forced an effect type then you can specify it using the standard syntax described above. All options are the same as if the effect would have been parsed in the normal way. &#039;&#039;+nocreate&#039;&#039; is not valid within this element.&lt;br /&gt;
&lt;br /&gt;
==Random range==&lt;br /&gt;
The particle effect system uses randomization to provide variation to the created particles. This is implemented by letting the mod author specify the values for the random distribution. There are different types of distributions which are explained below.&lt;br /&gt;
&lt;br /&gt;
===Uniform random range===&lt;br /&gt;
*This accepts 1 or 2 values. If one value is used then the random range always returns that value. If two values are specified then a uniformly distributed random value will be picked from the range.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Random values)&#039;&#039;&#039;, a list of floating point values. Either one or two values.&lt;br /&gt;
**Example: &#039;&#039;(4 20)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Normal distribution random range===&lt;br /&gt;
*This accepts 1 or 2 values. This random range generates values according to a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution]. The first value specified the mean value of the distribution. The second value specifies the standard deviation of the distribution, this defaults to 1.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Random values)&#039;&#039;&#039;, a list of floating point values. Either one or two values.&lt;br /&gt;
**Example: &#039;&#039;(4 20)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Particle Effects&lt;br /&gt;
&lt;br /&gt;
$Effect: MassDriverImpact&lt;br /&gt;
$Type: Cone&lt;br /&gt;
	+Filename: exp05&lt;br /&gt;
	+Size: (5 7)&lt;br /&gt;
	+Lifetime: (0.6)&lt;br /&gt;
	+Deviation: 5&lt;br /&gt;
	+Velocity: (500 700)&lt;br /&gt;
	+Number: (20 30)&lt;br /&gt;
	+Direction: Reflected&lt;br /&gt;
	+Trail effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp20&lt;br /&gt;
			+Size: (10)&lt;br /&gt;
			+Lifetime: (1)&lt;br /&gt;
			+Duration: Always&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$Effect: ApocalypseIgnition&lt;br /&gt;
$Type: Single&lt;br /&gt;
	+Filename: exp20&lt;br /&gt;
	+Size: (10 20)&lt;br /&gt;
	&lt;br /&gt;
$Effect: ApocalypseHomed&lt;br /&gt;
$Type: Composite&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp05&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp06b&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
			+Delay: (8 15)&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=58537</id>
		<title>Particle Effects</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=58537"/>
		<updated>2018-12-16T19:20:57Z</updated>

		<summary type="html">&lt;p&gt;M!m: Clarify how +Number works&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2016-09-02|417eb20}}&lt;br /&gt;
&lt;br /&gt;
Particle Effects is a SCP feature which allows to define custom particle effects that can be assigned to various engine properties.&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-part.tbm. This table type does not have a main table like the other types. All particle effects must be specified in modular tables. Currently there is no support for the usual &#039;&#039;+nocreate&#039;&#039; ability the other modular tables have but that will be added in the future. Parts of this documentation are written with with &#039;&#039;+nocreate&#039;&#039; in mind for when that is implemented.&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=General Info=&lt;br /&gt;
*Begins with #Particle Effects&lt;br /&gt;
*Contains zero or more particle effect definitions&lt;br /&gt;
*Ends with #End&lt;br /&gt;
&lt;br /&gt;
Particle effects are created by specifying a name and a type. The type dictates which values are valid and will be described below.&lt;br /&gt;
&lt;br /&gt;
==$Effect:==&lt;br /&gt;
*Creates a new effect and specifies its name. The name must be at least one character long.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Type:===&lt;br /&gt;
*Sets the type of this effect. See [[#Effect Types|Effect Types]] for possible values.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Effect Types=&lt;br /&gt;
There are multiple different types of effects. They are specified by passing the given name to &#039;&#039;$Type&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Single==&lt;br /&gt;
This effect type creates exactly one particle per processing step.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Composite==&lt;br /&gt;
A composite effects contains multiple other effects which are all displayed at the same time. This is useful if you want to create complex effects that require more than one individual particle effect. The amount of child effects is not limited. This type currently does not support &#039;&#039;+nocreate&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===+Child effect:===&lt;br /&gt;
*This specifies a child effect that should be added to the composite effect. The effect is specified using [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Cone==&lt;br /&gt;
This effects creates multiple particles which travel in a cone around a specific direction. The particles are created in a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution] around the direction vector. That means that more particle are created along the direction vector than far away from it. The velocity of a particle is scaled based on the angle it is away from the direction vector. This may be changed in the future to allow different effects.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Deviation:===&lt;br /&gt;
*Sets the standard deviation from the direction vector.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;, in degrees&lt;br /&gt;
&lt;br /&gt;
===+Velocity===&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Number===&lt;br /&gt;
*Sets the amount of particles created for every frame the effect is active. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Direction===&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it is currently facing.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal vector of the particle source. This data may not exist for all sources. The debug log file will contain the warning message &amp;quot;&amp;lt;tt&amp;gt;Effect &#039;&amp;lt;EffectName&amp;gt;&#039; tried to use normal direction for source without a normal!&amp;lt;/tt&amp;gt;&amp;quot; if an effect tries to use the normal vector without it existing.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot. This direction requires the normal for work properly so the same warning message as above may appear in your log if the source has no normal vector assigned to it.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
===+Trail effect:===&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sphere==&lt;br /&gt;
This effect creates particles in a sphere shape around the center.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Velocity===&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Number===&lt;br /&gt;
*Sets the amount of particles created for every frame the effect is active. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Direction===&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it is currently facing.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal vector of the particle source. This data may not exist for all sources. The debug log file will contain the warning message &amp;quot;&amp;lt;tt&amp;gt;Effect &#039;&amp;lt;EffectName&amp;gt;&#039; tried to use normal direction for source without a normal!&amp;lt;/tt&amp;gt;&amp;quot; if an effect tries to use the normal vector without it existing.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot. This direction requires the normal for work properly so the same warning message as above may appear in your log if the source has no normal vector assigned to it.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
===+Trail effect:===&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Inline effect creation==&lt;br /&gt;
At some places in this table a particle effect may be created within another particle effect. This is used for composite effects and particle trails. If inline creation is valid for an option then you may either specify a name of a previously defined effect or use &#039;&#039;&#039;$New Effect&#039;&#039;&#039; which will create a new, unnamed effect. If a name is specified then that effect must be already defined. In order to ensure that the effect is always defined no matter in which order the effect tables are parsed the effect should be defined in the same table. Some options using this construct require a specific type of effect. That will be noted in the documentation of the option.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;$New Effect&#039;&#039;&#039; is used then a new unnamed effect is created. If the surrounding option has not forced an effect type then you can specify it using the standard syntax described above. All options are the same as if the effect would have been parsed in the normal way. &#039;&#039;+nocreate&#039;&#039; is not valid within this element.&lt;br /&gt;
&lt;br /&gt;
==Random range==&lt;br /&gt;
The particle effect system uses randomization to provide variation to the created particles. This is implemented by letting the mod author specify the values for the random distribution. There are different types of distributions which are explained below.&lt;br /&gt;
&lt;br /&gt;
===Uniform random range===&lt;br /&gt;
*This accepts 1 or 2 values. If one value is used then the random range always returns that value. If two values are specified then a uniformly distributed random value will be picked from the range.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Random values)&#039;&#039;&#039;, a list of floating point values. Either one or two values.&lt;br /&gt;
**Example: &#039;&#039;(4 20)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Normal distribution random range===&lt;br /&gt;
*This accepts 1 or 2 values. This random range generates values according to a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution]. The first value specified the mean value of the distribution. The second value specifies the standard deviation of the distribution, this defaults to 1.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Random values)&#039;&#039;&#039;, a list of floating point values. Either one or two values.&lt;br /&gt;
**Example: &#039;&#039;(4 20)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Particle Effects&lt;br /&gt;
&lt;br /&gt;
$Effect: MassDriverImpact&lt;br /&gt;
$Type: Cone&lt;br /&gt;
	+Filename: exp05&lt;br /&gt;
	+Size: (5 7)&lt;br /&gt;
	+Lifetime: (0.6)&lt;br /&gt;
	+Deviation: 5&lt;br /&gt;
	+Velocity: (500 700)&lt;br /&gt;
	+Number: (20 30)&lt;br /&gt;
	+Direction: Reflected&lt;br /&gt;
	+Trail effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp20&lt;br /&gt;
			+Size: (10)&lt;br /&gt;
			+Lifetime: (1)&lt;br /&gt;
			+Duration: Always&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$Effect: ApocalypseIgnition&lt;br /&gt;
$Type: Single&lt;br /&gt;
	+Filename: exp20&lt;br /&gt;
	+Size: (10 20)&lt;br /&gt;
	&lt;br /&gt;
$Effect: ApocalypseHomed&lt;br /&gt;
$Type: Composite&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp05&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp06b&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
			+Delay: (8 15)&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Subsystem&amp;diff=58487</id>
		<title>Subsystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Subsystem&amp;diff=58487"/>
		<updated>2018-10-27T17:03:12Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add documentation for &amp;quot;no damage spew&amp;quot; and &amp;quot;no impact debris&amp;quot; flags.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Fileversion|7119}}&lt;br /&gt;
&lt;br /&gt;
*All subsystems ship can have must be defined in ships model file (.pof).&lt;br /&gt;
&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*[[Animation_Code|Animation Code]] can be applied to the subsystems that consist of submodels, like multi-part turrets.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==$Subsystem:==&lt;br /&gt;
*The name of the subsystem as defined in .pof file, % of ship&#039;s total hitpoints the subsystem has and rotation time (360 degrees) for multi-part turrets. Note: Assigning zero to the %-hitpoint entry causes the subsystem to be without hitpoints, like fighterbays on some capital ships.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, name of the subsystem followed by the subsystem hitpoints as % of ships hitpoints and seconds per 360 degree turn. Subsystem name must be the same as described in model file (.pof).&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Entries can be left empty in which case game uses default values}}&lt;br /&gt;
**Example: communications, 5, 0.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Alt Subsystem Name:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the alternate name for the subsystem. This name is shown for example in the targeting window when subsystem is targeted.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Option to use pipe character &#039;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&#039; to force line breaks into the alt subsystem name}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Alt Damage Popup Subsystem Name:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the alternate name for the subsystem when it is displayed on the &#039;&#039;&#039;damaged systems&#039;&#039;&#039; popup.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Armor Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
* &#039;&#039;&#039;REQUIRES ADDITIONAL TABLE&#039;&#039;&#039;. Defines armor type used for the subsystem. If subsystem armor type is not defined ships armor type is used instead.&lt;br /&gt;
* Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, as defined in [[armor.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Default PBanks:===&lt;br /&gt;
*Defines default primary weapon for the turret&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
**Example: ( &#039;&#039;&amp;quot;Subach HL-7&amp;quot;&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$PBank Capacity:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines ammunition capacity of turrets ballistic primary weapon.&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; )}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Default SBanks:===&lt;br /&gt;
*Defines default secondary weapon for the turret&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$SBank Capacity:===&lt;br /&gt;
*Defines ammunition capacity of turrets secondary weapon.&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Engine Wash:===&lt;br /&gt;
*All engines may use information concerning the engine wash. Engine washes are usually used only with larger vessels.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name as defined in Engine Wash section in [[ships.tbl]]&lt;br /&gt;
**Example: &#039;&#039;Default1000&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$AliveSnd:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Specifies a sound to play from the subsystem while it is not destroyed.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$DeadSnd:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Specifies a sound to play from the subsystem while it is destroyed.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$RotationSnd:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Can be used to define a sound that is played when this subsystem rotates.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
===$Turret Base RotationSnd:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the sound which is played when the turrets base rotates&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret Gun RotationSnd:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the sound which is played when the turrets guns change their elevation&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret BaseSnd Volume:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the multiplier for the sound volume for turret base rotations&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret GunSnd Volume:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the multiplier for the sound volume for turret guns change their elevation&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$AWACS:===&lt;br /&gt;
*Sets this subsystem&#039;s effective AWACS range. (AWACS reveals stealthed ships, cuts through nebula fog.)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, the maximum range of the AWACS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Maximum Barrel Elevation:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the maximum barrel elevation for the turret&lt;br /&gt;
*Basically &#039;inverse FOV&#039;.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, from 0 to 90}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret Base FOV:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the FOV of the turret&#039;s base.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, from 0 to 359}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret Reset Delay:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the time after losing the target before the turret begins to reset itself&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, in milliseconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret Optimum Range:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the optimum range for the turret&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Turret Direction Preference:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the turrets preference to keep targeting targets based how far the turret should turn instead of nearest target&lt;br /&gt;
*The higher the value the higher the preference to keep targeting targets close to previous targets direction&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, from 0 to 100, 0 disables the preference setup}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Target Priority:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the target priorities, and their order for the turret&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String list&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Max Turrets per Bomb:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Limits the number of turrets that can be targeting the same bomb.&lt;br /&gt;
*When this is set, when this turret tries to target a bomb, it will check to see how many turrets are already targeting it and only choose it as a target if there are less than this number.&lt;br /&gt;
*This allows control over the default behavior, where every turret will fire at the leading bomb.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Max Turrets per Target:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Limits the number of turrets that can be targeting the same target.&lt;br /&gt;
*&#039;&#039;&#039;ONLY AFFECTS SMALL TARGETS&#039;&#039;&#039; such as fighters and bombers. This limit does &#039;&#039;&#039;NOT&#039;&#039;&#039; apply vs large ships.&lt;br /&gt;
*When this is set, when this turret tries to target a ship, it will check to see how many turrets are already targeting it and only choose it as a target if there are less than this number.&lt;br /&gt;
*This helps turrets spread their efforts out among multiple targets. &lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$ROF:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the modifier applied to the turret rate of fire (ROF).&lt;br /&gt;
&lt;br /&gt;
====+Use firingpoints====&lt;br /&gt;
*Modifies (multiplies) the rate of fire by the number of firingpoints the turret has.&lt;br /&gt;
&lt;br /&gt;
====+Multiplier:====&lt;br /&gt;
*Checked only if &#039;&#039;+Use firingpoints&#039;&#039; has not been defined&lt;br /&gt;
*If set to larger than 0 the value acts as multiplier&lt;br /&gt;
*If set to 1.0 the feature is disabled&lt;br /&gt;
*If set to equal to or smaller than 0 it as if &#039;&#039;+Use firingpoints&#039;&#039; option would have been enabled&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Flags:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Can be used to sets additional subsystem related properties&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot; &amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
*List of available flags:&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;untargetable&amp;quot;====&lt;br /&gt;
*Subsystem cannot be targeted&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;carry no damage&amp;quot;====&lt;br /&gt;
*Damage caused to the subsystem will not carry over to the parent ship&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;use multiple guns&amp;quot;====&lt;br /&gt;
*Enables the turret to fire all equipped weapons, picking a not-in-use firing point at each trigger. Not to be confused with &#039;Salvo mode&#039;.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;fire down normals&amp;quot;====&lt;br /&gt;
*Forces the turret to fire along the turret normals - regardless of the swarm setting.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;check hull&amp;quot;====&lt;br /&gt;
*Forces the firing turret to check against the parent model if valid line of sight exists between the firingpoint and the target.}}&lt;br /&gt;
&lt;br /&gt;
{{Table3611|&lt;br /&gt;
====&amp;quot;fixed firingpoints&amp;quot;====&lt;br /&gt;
*Forces the firing turret to retain the firingpoints of their weapons: if the turret has multiple banks, the first bank will only fire from the first firepoint, the second bank only from the second firepoint, and so on. Maximum number of weapons is the same as maximum number of weapons in turret (3 primary, 4 secondary)&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;salvo mode&amp;quot;====&lt;br /&gt;
*Forces the firing turret to use only the first weapon defined for it but fires it simultaneously from all the firing points. Not to be confused with &#039;use multiple guns&#039;&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;no subsystem targeting&amp;quot;====&lt;br /&gt;
*Prevents the firing turret from targeting targets subsystems - instead forces the turret to fire randomly at the targets hull.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;fire on target&amp;quot;====&lt;br /&gt;
*Prevents the turret from firing unless the turret barrels (firingpoints) and targets are aligned.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;reset when idle&amp;quot;====&lt;br /&gt;
*Forces the turret to reset to its initial position if it has no targets.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;carry shockwave&amp;quot;====&lt;br /&gt;
*Forces the turret to carry damage caused by shockwaves to the hull regardless of other flags.}}&lt;br /&gt;
&lt;br /&gt;
{{Table3613|&lt;br /&gt;
====&amp;quot;allow landing&amp;quot;====&lt;br /&gt;
*Defines the subsystem as something on which player can attempt to land on&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;target requires fov&amp;quot;====&lt;br /&gt;
*Prevents turret from accidentally selecting target out of it field of view (fov) when acquiring targets&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;fov edge checks&amp;quot;====&lt;br /&gt;
*If the predicted target point of the turret falls outside of the field of view this flag but according to ship radius and dot product the target should still be partially visible then this flag attempts to turn the turret to the edge of the FOV closest to the targeted position and allow it to fire along that direction.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;no replace&amp;quot;====&lt;br /&gt;
*Tells game not to use the replacement submodel (-destroyed) when the subsystem loses all of it&#039;s hitpoints.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;no live debris&amp;quot;====&lt;br /&gt;
*Prevents the subsystem from releasing live debris pieces when destroyed&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;ignore if dead&amp;quot;====&lt;br /&gt;
*When subsystem has been destroyed prevents homing weapons from attempting to hit the now destroyed submodel and instead tells them to home on the main hull of the target&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;allow vanishing&amp;quot;====&lt;br /&gt;
*Allow subsystem to be destroyed from the ship without sound or graphical effects&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;damage as hull&amp;quot;====&lt;br /&gt;
*Treats subsystem as if it were hull when applying damage.  &lt;br /&gt;
&lt;br /&gt;
====&amp;quot;starts locked&amp;quot;====&lt;br /&gt;
*Turret starts locked and won&#039;t shoot until you use a turret-free or turret-free-all SEXP on it.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;no aggregate&amp;quot;====&lt;br /&gt;
*Freespace keeps track of a ships overall functionality (such as if a ship is sensorless, disarmed or disabled) via a total hitpoint count of the associated subsystems. For example if a ship has three engines with 100HP each, the &#039;engines&#039; count will be at 300HP. Shooting at any of the subsystems with the keyword &#039;engine&#039; in them will decrement this total, and when it is at 0 then the ship becomes disabled.&lt;br /&gt;
*This flag tells FS to ignore the associated subsystem and not count it towards those totals. For example, if a ship had three 100HP engines with one set to &#039;no aggregate&#039; then the &#039;engines&#039; count will be 200HP. Shooting the &#039;no aggregate&#039; engine will not decrement the &#039;engines&#039; count, and so in other words the status of this engine is irrelevant to whether or not the ship is disabled. In the same way when applied to a turret, the turret&#039;s status is irrelevant to whether the ship is  disarmed or not.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;wait for animation&amp;quot;====&lt;br /&gt;
*When this flag is active, a turret will only fire after any associated subsystem animations (such as a turret hatch opening) have played out.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;play fire sound for player&amp;quot;====&lt;br /&gt;
*If this turret is on a player ship, play its associated sounds.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;only target if can fire&amp;quot;====&lt;br /&gt;
*Do additional checks to make sure that a turret which cannot fire at its target releases that target. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table3615|&lt;br /&gt;
====&amp;quot;no disappear&amp;quot;====&lt;br /&gt;
*If this subsystem is a physical subsystem, it won&#039;t disappear nor switch to the -destroyed model when destroyed.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;collide submodel&amp;quot;====&lt;br /&gt;
*If this subsystem is a physical subsystem, it will only take damage from hits which impact the submodel. By default damage is taken from all hits within the submodel&#039;s radius*2. Does not affect area damage such as shockwaves.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;allow destroyed rotation&amp;quot;====&lt;br /&gt;
*Allows a rotating subobject to continue to rotate even when it has been destroyed&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table373|&lt;br /&gt;
====&amp;quot;turret use ammo&amp;quot;====&lt;br /&gt;
*If the subsystem is a turret, it will use ammo.&lt;br /&gt;
**Note: If the turret does not have ammo, it will not fire. Remember that the maximum ammo a turret can hold is the Capacity of the Bank divided by the Cargo Size of the weapon.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;share fire direction&amp;quot;====&lt;br /&gt;
*If this subsystem is a turret, whenever the turret fires it will make all of the firing points shoot their weapon in the same direction instead of at the same point or set of points on a target.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table381|&lt;br /&gt;
====&amp;quot;no damage spew&amp;quot;====&lt;br /&gt;
*If this subsystem is hit then there will be no damage spew particles emitted.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;no impact debris&amp;quot;====&lt;br /&gt;
*If this subsystem is hit then no impact debris will be generated.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===[[Animation Code]]===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Option for animating the submodels}}&lt;br /&gt;
&lt;br /&gt;
==Case Specific Entries==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Turret===&lt;br /&gt;
*All turrets require information concerning the weapon mounted to the turret. The entry can be either &#039;&#039;&#039;$Default PBanks&#039;&#039;&#039; for turret primaries (including beams) or &#039;&#039;&#039;$Default SBanks&#039;&#039;&#039; for turret secondaries&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*[[Animation_Code#Setting_Turret_Angle|Animation Code]] can be used with multi-part turrets.&lt;br /&gt;
*Multiple defined weapons will all fire but the targeting is handled by the first weapon in the list. &#039;&#039;&#039;Multiple beams are not possible&#039;&#039;&#039;. All weapons alternate between the firingpoints of the turret so turrets do not need to have more than one weapon defined no matter how many barrels or firingpoints they have.}}&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Subsystem: turret01, 1.0, 1.0&lt;br /&gt;
$Default PBanks: ( &amp;quot;Terran Turret&amp;quot; )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Engine===&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Subsystem: engine01, 5.0, 0.0&lt;br /&gt;
$Engine Wash: Default1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=58259</id>
		<title>Particle Effects</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=58259"/>
		<updated>2018-07-24T03:14:24Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add missing documentation for specifying effect timing information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2016-09-02|417eb20}}&lt;br /&gt;
&lt;br /&gt;
Particle Effects is a SCP feature which allows to define custom particle effects that can be assigned to various engine properties.&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-part.tbm. This table type does not have a main table like the other types. All particle effects must be specified in modular tables. Currently there is no support for the usual &#039;&#039;+nocreate&#039;&#039; ability the other modular tables have but that will be added in the future. Parts of this documentation are written with with &#039;&#039;+nocreate&#039;&#039; in mind for when that is implemented.&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=General Info=&lt;br /&gt;
*Begins with #Particle Effects&lt;br /&gt;
*Contains zero or more particle effect definitions&lt;br /&gt;
*Ends with #End&lt;br /&gt;
&lt;br /&gt;
Particle effects are created by specifying a name and a type. The type dictates which values are valid and will be described below.&lt;br /&gt;
&lt;br /&gt;
==$Effect:==&lt;br /&gt;
*Creates a new effect and specifies its name. The name must be at least one character long.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Type:===&lt;br /&gt;
*Sets the type of this effect. See [[#Effect Types|Effect Types]] for possible values.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Effect Types=&lt;br /&gt;
There are multiple different types of effects. They are specified by passing the given name to &#039;&#039;$Type&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Single==&lt;br /&gt;
This effect type creates exactly one particle per processing step.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Composite==&lt;br /&gt;
A composite effects contains multiple other effects which are all displayed at the same time. This is useful if you want to create complex effects that require more than one individual particle effect. The amount of child effects is not limited. This type currently does not support &#039;&#039;+nocreate&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===+Child effect:===&lt;br /&gt;
*This specifies a child effect that should be added to the composite effect. The effect is specified using [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Cone==&lt;br /&gt;
This effects creates multiple particles which travel in a cone around a specific direction. The particles are created in a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution] around the direction vector. That means that more particle are created along the direction vector than far away from it. The velocity of a particle is scaled based on the angle it is away from the direction vector. This may be changed in the future to allow different effects.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Deviation:===&lt;br /&gt;
*Sets the standard deviation from the direction vector.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;, in degrees&lt;br /&gt;
&lt;br /&gt;
===+Velocity===&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Number===&lt;br /&gt;
*Sets the amount of created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Direction===&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it is currently facing.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal vector of the particle source. This data may not exist for all sources. The debug log file will contain the warning message &amp;quot;&amp;lt;tt&amp;gt;Effect &#039;&amp;lt;EffectName&amp;gt;&#039; tried to use normal direction for source without a normal!&amp;lt;/tt&amp;gt;&amp;quot; if an effect tries to use the normal vector without it existing.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot. This direction requires the normal for work properly so the same warning message as above may appear in your log if the source has no normal vector assigned to it.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
===+Trail effect:===&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sphere==&lt;br /&gt;
This effect creates particles in a sphere shape around the center.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Velocity===&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Number===&lt;br /&gt;
*Sets the amount of created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Direction===&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it is currently facing.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal vector of the particle source. This data may not exist for all sources. The debug log file will contain the warning message &amp;quot;&amp;lt;tt&amp;gt;Effect &#039;&amp;lt;EffectName&amp;gt;&#039; tried to use normal direction for source without a normal!&amp;lt;/tt&amp;gt;&amp;quot; if an effect tries to use the normal vector without it existing.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot. This direction requires the normal for work properly so the same warning message as above may appear in your log if the source has no normal vector assigned to it.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
===+Trail effect:===&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Inline effect creation==&lt;br /&gt;
At some places in this table a particle effect may be created within another particle effect. This is used for composite effects and particle trails. If inline creation is valid for an option then you may either specify a name of a previously defined effect or use &#039;&#039;&#039;$New Effect&#039;&#039;&#039; which will create a new, unnamed effect. If a name is specified then that effect must be already defined. In order to ensure that the effect is always defined no matter in which order the effect tables are parsed the effect should be defined in the same table. Some options using this construct require a specific type of effect. That will be noted in the documentation of the option.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;$New Effect&#039;&#039;&#039; is used then a new unnamed effect is created. If the surrounding option has not forced an effect type then you can specify it using the standard syntax described above. All options are the same as if the effect would have been parsed in the normal way. &#039;&#039;+nocreate&#039;&#039; is not valid within this element.&lt;br /&gt;
&lt;br /&gt;
==Random range==&lt;br /&gt;
The particle effect system uses randomization to provide variation to the created particles. This is implemented by letting the mod author specify the values for the random distribution. There are different types of distributions which are explained below.&lt;br /&gt;
&lt;br /&gt;
===Uniform random range===&lt;br /&gt;
*This accepts 1 or 2 values. If one value is used then the random range always returns that value. If two values are specified then a uniformly distributed random value will be picked from the range.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Random values)&#039;&#039;&#039;, a list of floating point values. Either one or two values.&lt;br /&gt;
**Example: &#039;&#039;(4 20)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Normal distribution random range===&lt;br /&gt;
*This accepts 1 or 2 values. This random range generates values according to a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution]. The first value specified the mean value of the distribution. The second value specifies the standard deviation of the distribution, this defaults to 1.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Random values)&#039;&#039;&#039;, a list of floating point values. Either one or two values.&lt;br /&gt;
**Example: &#039;&#039;(4 20)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Particle Effects&lt;br /&gt;
&lt;br /&gt;
$Effect: MassDriverImpact&lt;br /&gt;
$Type: Cone&lt;br /&gt;
	+Filename: exp05&lt;br /&gt;
	+Size: (5 7)&lt;br /&gt;
	+Lifetime: (0.6)&lt;br /&gt;
	+Deviation: 5&lt;br /&gt;
	+Velocity: (500 700)&lt;br /&gt;
	+Number: (20 30)&lt;br /&gt;
	+Direction: Reflected&lt;br /&gt;
	+Trail effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp20&lt;br /&gt;
			+Size: (10)&lt;br /&gt;
			+Lifetime: (1)&lt;br /&gt;
			+Duration: Always&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$Effect: ApocalypseIgnition&lt;br /&gt;
$Type: Single&lt;br /&gt;
	+Filename: exp20&lt;br /&gt;
	+Size: (10 20)&lt;br /&gt;
	&lt;br /&gt;
$Effect: ApocalypseHomed&lt;br /&gt;
$Type: Composite&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp05&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp06b&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
			+Delay: (8 15)&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Tables&amp;diff=56133</id>
		<title>Tables</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Tables&amp;diff=56133"/>
		<updated>2018-01-15T13:26:30Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add link to the dynamic SEXPs page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Tables&#039;&#039;&#039; are the major data files in [[Portal:FreeSpace 1|FreeSpace]] and [[Portal:FreeSpace 2|FreeSpace 2]]. Compared with many other games, they are highly intuitive and easy to edit, requiring no special tools other than Notepad. For more detail on specific tables, see the links below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Full list of active tables can be found below. &amp;lt;br&amp;gt;In-depth modular tables info can be found in [[Modular Tables]] page.&lt;br /&gt;
&lt;br /&gt;
Information on how FreeSpace uses tables can be found on the [[FreeSpace 2 directory structure|FreeSpace 2 directory structure]] page.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| border=0 align=right cellpadding=2 cellspacing=1 style=&amp;quot;margin: 0 0 1em 1em; background: #202020; border: 1px #AA2020 solid; border-collapse: collapse; font-size: 95%;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;color: white; height: 30px; background: #512020; 70%;&amp;quot;|&#039;&#039;&#039;&#039;&#039;Active tables files and related code files&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;color: white; height: 30px; background: #512020; 70%;&amp;quot;|&#039;&#039;&#039;* Notes [[Modular Tables]]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;color: white; height: 30px; background: #512020; 70%;&amp;quot;|&#039;&#039;&#039;** Notes tables which only use modular tables&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Ai.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/ai/&#039;&#039;&#039;aicode.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Ai_profiles.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/ai/&#039;&#039;&#039;ai_profiles.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Armor.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/ship/&#039;&#039;&#039;ship.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Asteroid.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/asteroid/&#039;&#039;&#039;asteroid.cpp &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Autopilot.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/autopilot/&#039;&#039;&#039;autopilot.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Colors.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/globalincs/&#039;&#039;&#039;alphacolors.cpp	&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Controlconfigdefaults.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/controlconfig/&#039;&#039;&#039;controlsconfigcommon.cpp	&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Credits.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/menuui/&#039;&#039;&#039;credits.cpp	&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Cutscenes.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/cutscene/&#039;&#039;&#039;cutscenes.cpp &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Fireball.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/fireball/&#039;&#039;&#039;fireballs.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Fonts.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/graphics/&#039;&#039;&#039;font.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Game_settings.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/mod_table/&#039;&#039;&#039;mod_table.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Glowpoints.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/model/&#039;&#039;&#039;modelread.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Help.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/gamehelp/&#039;&#039;&#039;contexthelp.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Hud_gauges.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/hud/&#039;&#039;&#039;hudparse.cpp &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Icons.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/mission/&#039;&#039;&#039;missionbriefcommon.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Iff_defs.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/iff_defs/&#039;&#039;&#039;iff_defs.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Lightning.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/nebula/&#039;&#039;&#039;neblightning.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Mainhall.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/menuui/&#039;&#039;&#039;mainhallmenu.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Medals.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/stats/&#039;&#039;&#039;medals.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Messages.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/mission/&#039;&#039;&#039;missionmessage.cpp		&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Mflash.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/weapon/&#039;&#039;&#039;muzzleflash.cpp &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Music.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/gamesnd/&#039;&#039;&#039;eventmusic.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Nebula.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/nebula/&#039;&#039;&#039;neb.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Objecttypes.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/ship/&#039;&#039;&#039;ship.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Pixels.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/palman/&#039;&#039;&#039;palman.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Post_processing.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/graphics/&#039;&#039;&#039;gropenglpostprocessing.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Rank.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/stats/&#039;&#039;&#039;scoring.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Scripting.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/parse/&#039;&#039;&#039;scripting.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Ships.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/ship/&#039;&#039;&#039;ship.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Dynamic SEXPs|Sexps.tbl]]**&lt;br /&gt;
| &#039;&#039;&#039;/parse/sexp/&#039;&#039;&#039;sexp_lookup.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Sounds.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/gamesnd/&#039;&#039;&#039;gamesnd.cpp	&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Species_defs.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/species_defs/&#039;&#039;&#039;species_defs.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Species.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/menuui/&#039;&#039;&#039;techmenu.cpp	&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Ssm.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/hud/&#039;&#039;&#039;hudartillery.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Stars.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/starfield/&#039;&#039;&#039;starfield.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Strings.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/localization/&#039;&#039;&#039;localize.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Tips.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/menuui/&#039;&#039;&#039;playermenu.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Traitor.tbl]]&lt;br /&gt;
| &#039;&#039;&#039;/missionui/&#039;&#039;&#039;missiondebrief.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Tstrings.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/localization/&#039;&#039;&#039;localize.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Weapon_expl.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/weapon/&#039;&#039;&#039;weapons.cpp&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| [[Weapons.tbl]]*&lt;br /&gt;
| &#039;&#039;&#039;/weapon/&#039;&#039;&#039;weapons.cpp&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Accessing table files==&lt;br /&gt;
Volition used a special kind of packaging method called .vp (Volition Pack) for the FreeSpace games. Table files are stored in Root_fs2.vp. To open and extract files from a VP, you must use a VP editing program such as [[VPView32]]. For more details about VP files and how to work with them, consult [[*.VP|this article]].&lt;br /&gt;
&lt;br /&gt;
For some further information about where to put modified files, consult [[FreeSpace 2 directory structure]].&lt;br /&gt;
&lt;br /&gt;
==Table files==&lt;br /&gt;
Table files are customarily edited using Notepad, but any text editor that can save in a pure text format will do.&lt;br /&gt;
&lt;br /&gt;
===.tbl files===&lt;br /&gt;
&lt;br /&gt;
These files are the basic FreeSpace table used for defining various aspects of the game. Game reads only single .tbl choosing the one it encounters first while parsing the game directories.&lt;br /&gt;
&lt;br /&gt;
===.tbm files===&lt;br /&gt;
These files are modular table files. They can be used for adding content to the &#039;base&#039; tables or to modify the data from those files. For usage info and important notes, see [[Modular Tables]].&lt;br /&gt;
&lt;br /&gt;
==Notes of certain table files==&lt;br /&gt;
&lt;br /&gt;
===Hardcoded table files===&lt;br /&gt;
&lt;br /&gt;
Some of the table files are not actually required as the basic version has been written directly to the code. However these can be overridden by table files present in game directories.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;These files are not present in standard FreeSpace 2 .vp files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*[[Ai_profiles.tbl]]&lt;br /&gt;
*[[Autopilot.tbl]]&lt;br /&gt;
*[[Colors.tbl]]&lt;br /&gt;
*[[Iff_defs.tbl]]&lt;br /&gt;
*[[Objecttypes.tbl]]&lt;br /&gt;
*[[Species_defs.tbl]]&lt;br /&gt;
&lt;br /&gt;
===Optional table files===&lt;br /&gt;
&lt;br /&gt;
Certain tables are not found from the code nor do they belong to the basic table set. These tables are parsed if game detects them&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;These files are not present in standard FreeSpace 2 .vp files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*[[Armor.tbl]]&lt;br /&gt;
*[[Controlconfigdefaults.tbl]]&lt;br /&gt;
*[[Scripting.tbl]]&lt;br /&gt;
&lt;br /&gt;
===Obsolete table files===&lt;br /&gt;
&lt;br /&gt;
Some table files have since been &#039;retired&#039; and they are no longer needed with FreeSpace Open&lt;br /&gt;
&lt;br /&gt;
*[[Hud.tbl]]&lt;br /&gt;
*[[Launchhelp.tbl]]&lt;br /&gt;
*[[Menu.tbl]]&lt;br /&gt;
*[[Tooltips.tbl]]&lt;br /&gt;
&lt;br /&gt;
===Theoretical table files===&lt;br /&gt;
&lt;br /&gt;
These tables are documentations of possible future tables for use with FreeSpace Open&lt;br /&gt;
&lt;br /&gt;
*[[Interface.tbl]]&lt;br /&gt;
&lt;br /&gt;
==Important notes==&lt;br /&gt;
&lt;br /&gt;
===Table entries must be ordered===&lt;br /&gt;
&lt;br /&gt;
*As a general rule, &#039;&#039;&#039;&#039;&#039;all the table entries must be ordered&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
*Keep the order shown in the following help sections for each table in both normal tables (tbl files) and [[Modular Tables]] (tbm files). If you don&#039;t do it, you can get parser errors on FS2 or FRED2 loading when they are reading them.&lt;br /&gt;
** In other words, you don&#039;t have to have all of these details/attributes for a given weapon/ship/etc (or a modification of a weapon/etc)--few, if any, have them all, and many have a mere fraction of these--but the ones you do have must be kept in the same relative order. If, for example, your weapon doesn&#039;t have/need any of the 30-or-so attributes between &#039;Lifetime&#039; and &#039;ImpactSnd&#039;, you can probably leave them out altogether, but be sure to place your entry for &#039;ImpactSnd&#039; after your entry for &#039;Lifetime&#039; on the weapon in question. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Brief descriptions of table files==&lt;br /&gt;
&lt;br /&gt;
*In all the table help pages, SCP added entries are usually marked with infoboxes that mark the branch there the particular feature has added to.&lt;br /&gt;
:*&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;{{Table3610| text}}&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039; gives 3.6.10 box&lt;br /&gt;
{{Table3610| text}}&lt;br /&gt;
:*&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;{{Table3612| text}}&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039; gives 3.6.12 box&lt;br /&gt;
{{Table3612| text}}&lt;br /&gt;
:*&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;{{Table3614| text}}&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039; gives 3.6.14 box&lt;br /&gt;
{{Table3614| text}}&lt;br /&gt;
:*&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;{{Table3616| text}}&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039; gives 3.6.16 box&lt;br /&gt;
{{Table3616| text}}&lt;br /&gt;
:*&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;{{Table37| text}}&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039; gives 3.7.0 box&lt;br /&gt;
{{Table37| text}}&lt;br /&gt;
:*&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;{{Table372| text}}&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039; gives 3.7.2 box&lt;br /&gt;
{{Table372| text}}&lt;br /&gt;
*For full list of table related pages and links see [[:Category:Tables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables|*]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;br /&gt;
&lt;br /&gt;
[[Category:File Types]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Multimedia_Files&amp;diff=55716</id>
		<title>Multimedia Files</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Multimedia_Files&amp;diff=55716"/>
		<updated>2018-01-03T11:26:54Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add some documentation on the new cutscene player&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The FreeSpace 2 Open engine is able to use several different &#039;&#039;&#039;multimedia file formats&#039;&#039;&#039; for audio, animation and video playback. Retail FreeSpace 2 used the [[Wikipedia:Wav|WAV]] and &#039;&#039;&#039;ANI&#039;&#039;&#039; file formats, but the currently the FreeSpace 2 Open supports several [[Wikipedia:Ogg|Ogg]] container files as well. Support for the [[Wikipedia:Mp3|MP3]] file format was removed in favor of Ogg. The game engine also supports the custom &#039;&#039;&#039;.EFF&#039;&#039;&#039; animation format, as well as [[Wikipedia:APNG|APNG]] (as of commit 76ffc2668 / 3.8.0).&lt;br /&gt;
&lt;br /&gt;
==Ogg==&lt;br /&gt;
&#039;&#039;&#039;Ogg&#039;&#039;&#039; is a file format for compressed multimedia files.  Unlike MP3, Ogg is an open-source, open-standard container format with a permissive license, both of which allow it to be incorporated into the FS2_Open source code.  Also unlike MP3, Ogg is a [[Wikipedia:Container_format|container format]], meaning that it can contain video data (via the [[Wikipedia:Theora|Theora codec ]]) in addition to audio data (via the [[Wikipedia:Vorbis|Vorbis codec]]).&lt;br /&gt;
&lt;br /&gt;
Since Ogg delivers significantly smaller file sizes than [[Wikipedia:Wav|WAV]], while retaining substantially the same level of audio quality, it is becoming more and more frequently used in FSO-targeted mods.  Ogg Vorbis is not, however, a lossless format -- i.e., it is not possible to exactly reconstruct the original data from an Ogg Vorbis file because some is &amp;quot;lost&amp;quot; in the conversion process.  This is not usually a problem, however, because a high-quality Ogg Vorbis file is usually indistinguishable from the source.  The lossless counterpart to Ogg Vorbis is [[Wikipedia:Free_Lossless_Audio_Codec|FLAC]], which can be contained in Ogg also.&lt;br /&gt;
&lt;br /&gt;
Vorbis uses a quality parameter between -1 and 10 as a measure of quality. 5 is the default, giving around 160kbps. The higher the number, the higher the quality, but anything over 5 is probably pointless.&lt;br /&gt;
&lt;br /&gt;
Audacity and Goldwave are two popular programs that allow WAV files to be converted to Ogg Vorbis audio.  Audacity is Free Software, while Goldwave is shareware that ceases to function after a period of time.&lt;br /&gt;
&lt;br /&gt;
Please note that this is a fso feature and is not supported by the original retail FreeSpace 2.&lt;br /&gt;
&lt;br /&gt;
==WAV==&lt;br /&gt;
The most common sound file format. WAVs are uncompressed and take up a larger amount of space than almost any other sound file type, so consider converting them to the [[*.OGG|Ogg]] Vorbis format (supported only by SCP) before including them in your campaign. Audacity and Goldwave are two examples of programs that can make this conversion. [http://www.rarewares.org/ogg-oggdropxpd.php oggdropXPd] is an useful drag-and-drop encoder.&lt;br /&gt;
&lt;br /&gt;
==ANI==  &lt;br /&gt;
FreeSpace uses the ANI format for animation effects. It can be used either for an effect (explosions, etc.), an interface animation, or as a ship texture.&lt;br /&gt;
&lt;br /&gt;
===Creating an ANI file===&lt;br /&gt;
&lt;br /&gt;
Using [http://www.descent-network.com/cgi-bin/descman.cgi?module=anibuilder AniBuilder], one can create new ANI files from AVI movies or rendered frames.&lt;br /&gt;
&lt;br /&gt;
To create your own ANI:&lt;br /&gt;
&lt;br /&gt;
#Create your scene in a 3D animation program or in FreeSpace. You can capture game footage using free recording software such as [http://www.planetgamecam.com GameCam], a preexisting movie, or you can render your own. Volition used the expensive [[Wikipedia:3ds_Max|3ds Max]] for their animations, but the free [[Wikipedia:Blender_(software)|Blender]] is just as good, and there are plenty of tutorials available for both. Alternately, ANIs can simply have one or two static frames.&lt;br /&gt;
#Output your movie to individual 24- or 32-bit BMP frames, numbered in sequence (starting with aniname0000.) You can check your desired resolution by looking at the type of ANI you want to replace, with the exception of up to 660x300 acceptable for high-resolution command briefing animations in FreeSpace Open. If you have a movie, use a program such as [[Wikipedia:Virtual_Dub|Virtual DUB]] to convert the AVI into a series of BMP files and crop or resize them as necessary.&lt;br /&gt;
#Convert your BMP frames to PCX files with a common palette. Certain interface art (for example, briefing icons and HUD head animations) requires an exact palette, which you can import from an existing ANI using a paint program such as [[Wikipedia:GIMP|GIMP]]. But in most cases, you will want to convert them to an optimized common palette. Best results are achieved with [http://freespacemods.net/download.php?view.520 BRIGHT]. AniBuilder can attempt to do this by itself but the results are almost always very poor.&lt;br /&gt;
#Use AniBuilder to convert the PCX files to an ANI. Some animations, such as ship/weapon loadouts and main hall animations, require keyframes; refer to the existing animations for how to insert these.&lt;br /&gt;
&lt;br /&gt;
A more technical definition of ani files can be found [[ANI_Formal_Definition|here]].&lt;br /&gt;
&lt;br /&gt;
==EFF==&lt;br /&gt;
FreeSpace 2 uses the EFF ASCII format text files to store information about animated effects. These animated effects can be used for various effects such as in game animations and animated textures. Please note that this is a fso feature and is not supported by the original retail FreeSpace 2.&lt;br /&gt;
&lt;br /&gt;
===Creation of EFF animation===&lt;br /&gt;
*For EFF animation all the individual frames of the animation have to be present in one of the [[Graphic Files|graphic file formats]] supported by the game engine.&lt;br /&gt;
*All files related to the EFF animation have to named so that the name of actual .EFF animation forms the basic structure of the filename. &lt;br /&gt;
**&#039;&#039;&#039;Graphic files&#039;&#039;&#039; add the 4 digit number - that identifies the frame where the file is used - after the animation name, starting from 0 (example_0000.dds, example_0001.dds etc.)&lt;br /&gt;
**&#039;&#039;&#039;ASCII file&#039;&#039;&#039; contains the information of the animation (example.eff)&lt;br /&gt;
&lt;br /&gt;
===Contents of a EFF file===&lt;br /&gt;
&lt;br /&gt;
====$Type:====&lt;br /&gt;
*Defines the file format of the graphics file used for the EFF animation&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, for example &#039;&#039;DDS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====$Frames:====&lt;br /&gt;
*Defines the length of the number of the frames in the animation&lt;br /&gt;
*Syntax; &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====$FPS:====&lt;br /&gt;
*Used &#039;&#039;optionally&#039;&#039; to define the &#039;&#039;&#039;frames per second&#039;&#039;&#039; value for the animation&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====$Keyframe:====&lt;br /&gt;
*Used &#039;&#039;optionally&#039;&#039; to define a keyframe for EFF used as part of the interface.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; (The frame number, starting at index 0. Do not specify numbers greater than the number of frames)&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
&lt;br /&gt;
Let&#039;s say you have three dds (TGA and pcx are also acceptable) files (named 1_000, 1_0001, and 1_0002) you want to make into an animation, but you don&#039;t want to use anibuild and therefore compromise quality.&lt;br /&gt;
&lt;br /&gt;
Your EFF file would be like this:&lt;br /&gt;
&lt;br /&gt;
Filename (the filename, not information to be entered. This must match up with characters before _xxxx in frames): 1.eff&lt;br /&gt;
&lt;br /&gt;
 $Type: DDS&lt;br /&gt;
 $Frames: 3&lt;br /&gt;
 $FPS: 5&lt;br /&gt;
&lt;br /&gt;
This EFF effect file would display one frame after another at 5 frames a second, skipping back to the beginning at the end. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note&#039;&#039;&#039; that in FSO 3.6.10 and earlier, EFF cannot be used for streaming files (head animations, icons, mainhall, cbanis, ect.) and is meant ONLY for weapon/explosion effects and animated textures.&lt;br /&gt;
&lt;br /&gt;
==APNG==&lt;br /&gt;
&lt;br /&gt;
The places in FSO where APNGs make most sense are&lt;br /&gt;
&lt;br /&gt;
* Command Brief Anims&lt;br /&gt;
* Intel Anims (techroom)&lt;br /&gt;
* Loading Screen Anim&lt;br /&gt;
* HUD Anims (e.g. headz, lock, etc)&lt;br /&gt;
* Mainhall animations&lt;br /&gt;
&lt;br /&gt;
You CAN use APNGs for any other animation if you wish, e.g. animated glows, weapon impact effects, explosions, shield anims, etc. However, EFF with DDS would generally be a better choice because they&#039;re compressed in a format your video card can use directly, and thus they use much less video RAM.&lt;br /&gt;
&lt;br /&gt;
Having said that, in many cases the apng files on disk (only) will be smaller than other animation formats which can mean reduced modpack sizes. e.g. the 2_intel_earth.png file is 7.5MB, compared with 15MB for the mediavps_2014 ANI file. Likewise an example EFF+PNG headani was 3.8MB as png frames, the APNG was 2.1MB. Note that this reduction heavily depends on the content of the APNG. From some rough tests done by Axem &amp;amp; niffiwan it seems that APNGs with a transparent background and an object moving through the background will probably fair poorly. One such example only reduced from 11MB to 9.9MB. This is because the best APNG compression method is diff/delta frames composed over the previous frame, and it can&#039;t draw a transparent pixel over the top of a non-transparent one. Therefore with a transparent background the frame needs to get completely redrawn, making the filesize larger.&lt;br /&gt;
&lt;br /&gt;
Lastly, FSO uses the .png extension for apngs, not .apng (see [https://github.com/scp-fs2open/fs2open.github.com/pull/537#discussion_r53765499 here] for more info on why if you&#039;re curious)&lt;br /&gt;
&lt;br /&gt;
====Simple APNG creation====&lt;br /&gt;
&lt;br /&gt;
Here&#039;s steps on how to create simple APNGs.&lt;br /&gt;
&lt;br /&gt;
1) Create your animation in your favourite animation application and save it as a PNG file stream. It&#039;ll be easiest if the frames are named in ascending order; e.g. anim_0000.png, anim_0001.png, etc (not strictly needed, just easier). Remember you have 24 bit colour &amp;amp; 8 bit alpha available, there&#039;s no need for a custom palette or special transparency colours.&lt;br /&gt;
&lt;br /&gt;
2) Get an apng assembler. There&#039;s a bunch available on the internet, online only versions, local installs, command line and GUI. I&#039;ve personally used the apngasm command line version so that&#039;s what I&#039;ll use in my example.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/apngasm/apngasm/archive/3.1.6.zip Latest apngasm source (3.1.6)]&lt;br /&gt;
* [https://github.com/apngasm/apngasm/releases/download/3.1.3/apngasm_3.1-3_AMD64.exe Latest Windows 64bit executable (3.1.3)]&lt;br /&gt;
* For OSX they say use homebrew; I have no idea how to do this, sorry!&lt;br /&gt;
&lt;br /&gt;
Note that the [http://www.reto-hoehener.ch/japng/ Japng Editor] allows you to open up apngs and see exactly what each frame is doing, e.g. when the assembler has chosen to use delta frames vs complete frames, etc.&lt;br /&gt;
&lt;br /&gt;
3) Use the assembler to create your apng&lt;br /&gt;
&lt;br /&gt;
You need to know what frame delay you want between all frames... and that&#039;s it for a simple animation.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example using frames exported from the mediavps_2014 intelligence ANI file for &amp;quot;Earth&amp;quot; (I used aniview32 to export the frames to BMPs, then imagemagick to convert them to 24bit PNGs). The FPS for the ani is 15.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apngasm -d 67 -o 2_intel_earth.png 2_intel_earth_0*.png&lt;br /&gt;
&lt;br /&gt;
-d specifies the default frame delay for each frame (67 msec in the example)&lt;br /&gt;
-o specifies the output name, for FSO we&#039;ll use the .png extension&lt;br /&gt;
The last set of arguments is all the frames in animation order&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Configure the apng within FSO&lt;br /&gt;
&lt;br /&gt;
In my example, copy 2_intel_earth.png to FSO/mod/data/intelanims&lt;br /&gt;
&lt;br /&gt;
And that&#039;s it! &lt;br /&gt;
&lt;br /&gt;
====Advanced APNG creation====&lt;br /&gt;
&lt;br /&gt;
There are some more advanced options for creating apngs which may be of use in certain circumstances.&lt;br /&gt;
&lt;br /&gt;
1) Per Frame Delays&lt;br /&gt;
&lt;br /&gt;
You can give each frame in the animation it&#039;s own delay, different to every other frame in the animation. To do this, just put the individual frame delay after the frames source image.&lt;br /&gt;
&lt;br /&gt;
i.e.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apngasm -d 67 -s -o 2_intel_earth.png 2_intel_earth_renamed_0000.png 500 2_intel_earth_0*.png&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This makes the 1st frame play for 500 ms, and all the other frames have a 67ms delay.&lt;br /&gt;
&lt;br /&gt;
Note that the most recent versions of apngasm will do this for you if you include duplicated frames in your sequence. i.e. if you have 50 frames and two sequential frames are the same, then apngasm will create an apng with 49 frames, where one frame has double the frame delay of the rest.&lt;br /&gt;
&lt;br /&gt;
2) Loading APNGs as PNGs&lt;br /&gt;
&lt;br /&gt;
FSO will happily load an apng as a static image if you load it as an image rather than an animation. This is a bit hard to control for stuff internal to FSO, but you&#039;ve got full control over this in LUA. Anyway, this could save you putting extra files in your mod, by default the 1st frame of the animation will be loaded as the static image. Or you can put any frame you like as the &amp;quot;1st frame&amp;quot; and tell apngasm to skip than frame when playing back as an animation.     &lt;br /&gt;
&lt;br /&gt;
i.e.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apngasm -d 67 -s -o 2_intel_earth.png special_1st_frame.png 2_intel_earth_0*.png&lt;br /&gt;
&lt;br /&gt;
-s is the option to skip the 1st frame&lt;br /&gt;
special_1st_frame.png is the 1st argument without a preceding option and thus is the 1st frame processed by apngasm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe this could be of use if you wanted to (e.g.) have a selectable pilot image that&#039;s also the 1st frame in that pilots head ani (I dunno, I&#039;m not sure if there&#039;s any real use cases for this or not, but as long as everyone knows about the option then people could think up tricky uses for it).&lt;br /&gt;
&lt;br /&gt;
3) Looping&lt;br /&gt;
&lt;br /&gt;
APNG&#039;s can set the number of times that they will loop. However, FSO ignores this in favour of the code controlling how any given animation will loop (e.g. cbanims always loop, headanis never loop, etc). So don&#039;t worry about the loop value as FSO will ignore it.&lt;br /&gt;
&lt;br /&gt;
==Movie files==&lt;br /&gt;
{{Table38|&lt;br /&gt;
In the 3.8.0 release of FreeSpace Open a new cutscene system was added which uses [https://www.ffmpeg.org/ FFmpeg] for decoding video files. This added support for multiple video codecs and container formats. The following video codecs have been tested and are known to work:&lt;br /&gt;
* Theora (in Ogg container files)&lt;br /&gt;
* H.264 (in MP4 container files)&lt;br /&gt;
* VP8/VP9 (typically in WebM files)&lt;br /&gt;
&lt;br /&gt;
The movie player always selects the &amp;quot;best&amp;quot; video channel and the corresponding audio channel which may cause problems if a movie file contains multiple video or audio streams. To make the behavior predictable a movie file should only contain one video stream and one audio stream.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Subtitles===&lt;br /&gt;
{{Table382|&lt;br /&gt;
For localization purposes the movie player also supports language specific subtitles encoded in the movie file. This code has not been tested with a lot of movie files so if you encounter issues with this part of the cutscene player please post the movie file in the forums so that the SCP can improve the cutscene player.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Types]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Game_settings.tbl&amp;diff=55715</id>
		<title>Game settings.tbl</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Game_settings.tbl&amp;diff=55715"/>
		<updated>2018-01-03T11:22:38Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add documentation for the $Movie subtitle font option.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2017-12-16| a583764}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;game_settings.tbl&#039;&#039;&#039;, also known as mod.tbl, defines options that can be changed globally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-mod.tbm&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
==#GAME SETTINGS==&lt;br /&gt;
Optional. Contains settings that affect how the engine works.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Target Version:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
Specifies the minimum version of FreeSpace Open that this mod supports. If the version specified here is greater than the version of the current build, an error message is displayed.&lt;br /&gt;
}}&lt;br /&gt;
{{Table381|&lt;br /&gt;
The $Minimum version option has been renamed to $Target Version. The old name is kept with the same functionality for backwards-compatibility.&lt;br /&gt;
&lt;br /&gt;
The target version specifies what version of the FSO engine this mod was created for. It will be used by the engine to enable or disable backwards-incompatible changes by default. The default value is 2.0 which specifies that the mod targets the retail engine version.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Major:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Required. Sets the major component of the target version.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;3&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Minor:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Required. Sets the minor component of the target version.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;7&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Build:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Required. Sets the build component of the target version.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;3&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Revision:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Optional. Sets the revision component of the target version. If no revision is given then all builds of that release are supported (even nightly builds if there are any).&lt;br /&gt;
For nightly builds this is the date in YYYYMMDD format.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;20151121&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Window title:===&lt;br /&gt;
{{Table382|&lt;br /&gt;
Specifies the name of the FSO window when this mod is running. If blank or unspecified, the window will have the default title of &amp;quot;FreeSpace 2&amp;quot;.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Unicode mode:===&lt;br /&gt;
{{Table382|&lt;br /&gt;
Enabled the Unicode text mode for this mod. In Unicode mode all text is assumed to be UTF-8 encoded Unicode and certain features are disabled if they do not have full Unicode support. Most notably, if this is enabled then the engine will no longer support the old bitmap fonts that were used by Retail FreeSpace. Only the newer TrueType fonts will be supported.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==#CAMPAIGN SETTINGS==&lt;br /&gt;
Optional. This group contains various Campaign related settings and overrides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Default Campaign File Name:===&lt;br /&gt;
Defines which campaign will be selected by default for new pilots. A file extension is not needed and, if present, is removed by the code.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===#Ignored Campaign File Names===&lt;br /&gt;
Optional. Defines which campaigns, if present, will not appear in the Campaign Room. Only single-player campaigns can be ignored. &#039;&#039;File extensions are required.&#039;&#039;&lt;br /&gt;
{{Table371|As of 3.7.1, file extensions are not required and, if present, are removed by the code.}}&lt;br /&gt;
====$Campaign File Name:====&lt;br /&gt;
File name of the campaign to ignore. Multiple entries may exist.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Red-alert applies to delayed ships:===&lt;br /&gt;
Controls whether red-alert saved statistics (hitpoints, weapons, subsystem strengths) will be restored for ships that are not present at mission start.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#HUD SETTINGS==&lt;br /&gt;
Optional. This group contains various HUD behavior settings and overrides&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Directive Wait Time:===&lt;br /&gt;
*Defines how long the game will wait before displaying a directive.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Values: &#039;&#039;&#039;&#039;&#039;Greater than or equal to 0 ms&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Cutscene camera displays HUD:===&lt;br /&gt;
Show the HUD when the cutscene camera is enabled.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In earlier versions of the code, this option was controlled by $Cutscene camera disables HUD: and had a default of YES.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Full color head animations:===&lt;br /&gt;
Enables full-color head ANIs. Normal head ANIs will appear in gray.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In earlier versions of the code, this option was controlled by $Color head animations with hud colors: and had a default of YES.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#SEXP SETTINGS==&lt;br /&gt;
Optional. This group contains SEXP settings and overrides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Loop SEXPs Then Arguments:===&lt;br /&gt;
Flips how when-argument settings loop. See: [http://www.hard-light.net/forums/index.php?topic=79602.0 SEXP Argument changes via mod.tbl] &lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Use Alternate Chaining Behavior:===&lt;br /&gt;
When set, this makes the event chaining behavior act as people expected it to be in [http://scp.indiegames.us/mantis/view.php?id=82 Mantis #82].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#GRAPHICS SETTINGS==&lt;br /&gt;
Optional. This group contains settings related to graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Enable External Shaders:===&lt;br /&gt;
Enables the use of external shader files. By default, the engine will use the built-in shaders.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Default Detail Level:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
Determines which graphics detail level preset (low, medium, high, very high) acts as the default for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; (0-3)&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;3&#039;&#039;&#039;&#039;&#039; (very high)&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Briefing Window FOV:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
Determines the FOV in the briefing Icon window. Retail default for this is 0.29375, previous versions of FSO used a value of 0.5.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (0.0 to 1.0)&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.29375&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Generic Pain Flash Factor:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
Determines the intensity of the pain red flash when the player is hit.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;1.0&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Shield Pain Flash Factor:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
Determines the intensity of a pain flash when the player&#039;s shields are hit. Color will match the current ships shield color defined in ships.tbl. A value of 0 will give retail behavior (no shield effect). Positive values will cause the effect to start at full intensity at full shields and go to next to no intensity at zero shields. Negative values will cause no effect at full shields and full effect at no shields. Values should be kept between -1.0 and 1.0 for good pilot visibility.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.0&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$BMPMAN Slot Limit:===&lt;br /&gt;
{{Table382|&lt;br /&gt;
Determines the maximum number of textures that can be loaded simultaneously. This includes every frame of an animation, unless that animation is streaming (e.g. command briefing animations, message talking heads, etc). Also includes dynamically-created textures (used internally for various functions).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Int&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Values: &#039;&#039;&#039;&#039;&#039;Greater than or equal to 3500&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;4750&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==#SOUND SETTINGS==&lt;br /&gt;
Optional. This group contains sound-related settings&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Default Sound Volume:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the default sound fx volume for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, between 0.0 and 1.0&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;1.0&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Default Music Volume:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the default music volume for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, between 0.0 and 1.0&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.5&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Default Voice Volume:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the default voice volume for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, between 0.0 and 1.0&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.7&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#FRED SETTINGS==&lt;br /&gt;
Optional. This group contains settings for FRED. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Disable Hard Coded Message Head Ani Files:===&lt;br /&gt;
{{table371|&lt;br /&gt;
If set, FRED will not fill the head ani selection in the Event Editor with the retail head ani filenames.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Enable scripting in FRED:===&lt;br /&gt;
{{table382|&lt;br /&gt;
If set, scripting will be enabled in FRED. Use with extreme caution. The effects of scripts on FRED have not been fully tested. You can check if a script is running in FRED by using ba.inMissionEditor().&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==#OTHER SETTINGS==&lt;br /&gt;
Optional. This group contains miscellaneous settings. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Fixed Turret Collisions:===&lt;br /&gt;
Makes all hits to a turret&#039;s barrels count as hits to the turret subsystem. By default, this does not happen unless the point of impact falls inside the model radius of the turret&#039;s base.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Damage Impacted Subsystem First:===&lt;br /&gt;
If set, a hit to a physical subsystem will always deal damage to that subsystem first, even if another subsystem is closer to the point of impact. By default, the closest subsystem will always receive damage first.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Default ship select effect:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This specifies which effect to use for ship select animations when no .ani can be found, or the -ship_choice_3d commandline flag is active. This will default to the FS2 effect.&lt;br /&gt;
*Possible options are &amp;quot;FS2&amp;quot;, &amp;quot;FS1&amp;quot;, and &amp;quot;off&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
===$Default weapon select effect:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This specifies which effect to use for weapon select animations when no .ani can be found, or the -weapon_choice_3d commandline flag is active. This will default to the FS2 effect.&lt;br /&gt;
*Possible options are &amp;quot;FS2&amp;quot;, &amp;quot;FS1&amp;quot;, and &amp;quot;off&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
===$Weapons inherit parent collision group:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*When set to true, Weapons fired by a ship will inherit their parents&#039; collision group setting. Default is false.}}&lt;br /&gt;
&lt;br /&gt;
===$Flight controls follow eyepoint orientation:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Specifies that if the player ship&#039;s eyepoint happens to rotate into a non-standard orientation, pitch and yaw axes should stay relative to the eyepoint orientation, not the ship. Note that this does not affect the pitch/yaw turning speed, which always remains relative to the ship. Default is false.}}&lt;br /&gt;
&lt;br /&gt;
===$Beams Use Damage Factors:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Specifies that beam weapons will use the tabled damage factors for Armour, Shields and Subsystems. Default is false (i.e. all factors are treated as 1.0)}}&lt;br /&gt;
&lt;br /&gt;
===$Default fiction viewer UI:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Specifies which fiction viewer layout to use in missions that don&#039;t specify one. Possible values are as follows:&lt;br /&gt;
**&amp;quot;FS2&amp;quot;: Standard layout. Requires (2_)fictionviewer and (2_)fictionviewer-m to be present in data\interface.&lt;br /&gt;
**&amp;quot;WCS&amp;quot;: Moves the &amp;quot;Accept&amp;quot; button to the lower-left corner of the screen. Requires (2_)fictionviewerb and (2_)fictionviewer-mb to be present in data\interface.&lt;br /&gt;
**&amp;quot;auto&amp;quot;: Selects &amp;quot;WCS&amp;quot; if the appropriate files are present; otherwise, selects &amp;quot;FS2&amp;quot;. This is the default setting.}}&lt;br /&gt;
&lt;br /&gt;
===$Movie subtitle font:===&lt;br /&gt;
{{Table382|&lt;br /&gt;
*Specifies which font should be used for displaying subtitles in the cutscene player. This should be the name given to this font in the fonts table. Since movie subtitles can contain Unicode text it is a good idea to enable Unicode mode when movie subtitles are used but this is not enforced by this option.}}&lt;br /&gt;
&lt;br /&gt;
==#END==&lt;br /&gt;
Required. The last line of the table must be #END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sample Entry==&lt;br /&gt;
&lt;br /&gt;
    #CAMPAIGN SETTINGS&lt;br /&gt;
    $Default Campaign File Name: NewCampaignFile&lt;br /&gt;
    &lt;br /&gt;
    #Ignored Campaign File Names&lt;br /&gt;
    $Campaign File Name: FreeSpace2.fc2&lt;br /&gt;
    &lt;br /&gt;
    #HUD SETTINGS&lt;br /&gt;
    $Directive Wait Time: 5000&lt;br /&gt;
    &lt;br /&gt;
    #SEXP SETTINGS&lt;br /&gt;
    $Loop SEXPs Then Arguments: True&lt;br /&gt;
    &lt;br /&gt;
    #OTHER SETTINGS&lt;br /&gt;
    $Fix Turret Collisions: True&lt;br /&gt;
    &lt;br /&gt;
    #END&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=55713</id>
		<title>Dynamic SEXPs</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=55713"/>
		<updated>2018-01-03T10:54:03Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add documentation for the message parameter type.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 3.8.2 FSO supports adding custom SEXPs to a mod which have a user defined effect. Currently there is only one way to add such a SEXP but more may be added in the future.&lt;br /&gt;
&lt;br /&gt;
Dynamic SEXPs are only added in modular table files which end with &amp;lt;tt&amp;gt;-sexp.tbm&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Table syntax=&lt;br /&gt;
This section will describe the syntax and effects of the individual options.&lt;br /&gt;
&lt;br /&gt;
==#Lua SEXPs==&lt;br /&gt;
&lt;br /&gt;
Specifies a list of dynamic SEXPs implemented using a Lua function (see [[#Lua interface|Lua interface]] for how to use the implementation function). This section must end with &amp;lt;tt&amp;gt;#End&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Operator:===&lt;br /&gt;
*Adds a new SEXP operator with the specified name. The name may not contain the following characters: &amp;lt;tt&amp;gt;()\&amp;quot;&#039;&amp;lt;/tt&amp;gt;. Furthermore, any whitespace (tab characters or spaces) are also not permitted. This is the name under which this operator will appear in the SEXP code. While the name is mostly up to you it would be a good idea to keep it in line with how the other SEXPs are named. To avoid conflicts with other custom SEXPs you should also use a unique prefix. For example, if you want to  have some SEXP operators that control a cloaking script then you could use &amp;lt;tt&amp;gt;cloak-&amp;lt;/tt&amp;gt; as the common prefix for all the operators that are related to this system. A SEXP that disables the cloak system could be named something like &amp;lt;tt&amp;gt;cloak-disable&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This name must be unique among all operators that are known to the SEXP system. That includes built-in SEXPs and operators added before. If there is a conflict then the new operator definition will be ignored. Built-in operators always take precedence.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Category:===&lt;br /&gt;
*Specifies in which category this SEXP will appear in the context menu in the FRED event editor. Only one of the existing categories may be used. These are all the currently defined categories:&lt;br /&gt;
**Objectives&lt;br /&gt;
**Time&lt;br /&gt;
**Logical&lt;br /&gt;
**Arithmetic&lt;br /&gt;
**Status&lt;br /&gt;
**Change&lt;br /&gt;
**Conditionals&lt;br /&gt;
**Ai goals&lt;br /&gt;
**Event/Goals&lt;br /&gt;
**Training&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Subcategory:===&lt;br /&gt;
*Specifies into which subcategory this SEXP should be put. This is the second level in the context menu of the FRED event editor. New subcategories can be added by specifying a new name here but all subcategory names must be globally unique (you can&#039;t have the same subcategory name under two different categories).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Minimum Arguments:===&lt;br /&gt;
*Specifies ht minimum number of parameters this SEXP needs to work. If less parameters are specified then the SEXP parser will treat this as an error.&lt;br /&gt;
*Must be at least 0.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Maximum Arguments:===&lt;br /&gt;
*Specifies the maximum number of parameters this SEXP can process.&lt;br /&gt;
*Optional. If this option is not present then the SEXP can process an unlimited number of parameters.&lt;br /&gt;
*Must be at least 0 and greater or equal to $Minimum Arguments.&lt;br /&gt;
&lt;br /&gt;
===$Return Type:===&lt;br /&gt;
*Specifies what data type this SEXP will return when invoked. Can be one of the following:&lt;br /&gt;
**; number: The SEXP will return an integer. The scripting function needs to return a number value.&lt;br /&gt;
**; boolean: The SEXP will return a boolean. The scripting function must return a boolean value.&lt;br /&gt;
**; nothing: The SEXP will return nothing. The scripting function may not return anything.&lt;br /&gt;
*Optional. Defaults to &#039;&#039;nothing&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Description:===&lt;br /&gt;
*Sets the help text displayed in the FRED help box. This should be the generic description of what this SEXP does but should not include the documentation for the individual parameters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Repeat===&lt;br /&gt;
*This option must be combined with the parameter documentation below to specify a repeating pattern in a SEXP with a variable number of parameters. See the example below for how exactly this will work. All parameters specified after this option will be grouped together. The script will receive these groups of parameters as a single entity (see [[#Lua interface|Lua interface]]) to make it easier to use the values without having to separate them again in the script.&lt;br /&gt;
&lt;br /&gt;
===$Parameter:===&lt;br /&gt;
*Adds documentation for the parameters and specifies what type they need to have. This option may appear multiple times and should match the number of parameters specified by &amp;lt;tt&amp;gt;$Minimum Arguments&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$Maximum Arguments&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This option has no value.&lt;br /&gt;
&lt;br /&gt;
====+Description:====&lt;br /&gt;
*Sets the description of this parameter. This will be used for the documentation text.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Type:====&lt;br /&gt;
*Sets the type this parameter requires. The currently supported types are:&lt;br /&gt;
**; number: This parameter is a number. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; boolean: This parameter is a boolean. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; ship: This parameter is the name of a ship. The script will receive this value as a &amp;lt;tt&amp;gt;ship&amp;lt;/tt&amp;gt; handle. If the name provided by the mission is invalid (if the ship has not arrived yet or if it is not present anymore) then the script will receive an invalid &amp;lt;tt&amp;gt;ship&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; string: This parameter is a generic string with no special format. In Unicode mode this string may contain Unicode characters.&lt;br /&gt;
**; team: This parameter is a handle to a specific team. The script will receive this value as a &amp;lt;tt&amp;gt;team&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; waypointpath: This parameter is a reference to a specific waypoint path. The script will receive this as a &amp;lt;tt&amp;gt;waypointlist&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; variable: This is a reference to a SEXP variable. This is a reference to the actual variable and not its contents. The script will receive this as a &amp;lt;tt&amp;gt;sexpvariable&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; message: This is a reference to a mission message. The script will receive it as a &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Lua SEXPs&lt;br /&gt;
&lt;br /&gt;
$Operator: dynamic-sexp&lt;br /&gt;
$Category: Change&lt;br /&gt;
$Subcategory: Scripted&lt;br /&gt;
$Minimum Arguments: 3&lt;br /&gt;
; No maximum arguments means that it accepts a variable number of arguments&lt;br /&gt;
$Return Type: Nothing&lt;br /&gt;
$Description: This is a dynamic parameter test SEXP&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Ship parameter&lt;br /&gt;
	+Type: Ship&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable name parameter&lt;br /&gt;
	+Type: variable&lt;br /&gt;
$Repeat ; This starts the part of the parameter list where the parameter pattern repeats&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable string parameter&lt;br /&gt;
	+Type: string&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lua interface=&lt;br /&gt;
So far, all the SEXP table has done is specify that a new Lua SEXP exists but there is no actual action which will be executed when the SEXP is called. For the Lua language this can be done using the &amp;lt;tt&amp;gt;mn.LuaSEXPs&amp;lt;/tt&amp;gt; variable. This is a variable which can be indexed using the SEXP name. The returned value is of type &amp;lt;tt&amp;gt;LuaSEXP&amp;lt;/tt&amp;gt; which only has a single field, &amp;lt;tt&amp;gt;Action&amp;lt;/tt&amp;gt;. This is the function that will be executed once the SEXP is called in a mission. You can use it to retrieve the function of a LuaSEXP but the more common use case is that it is written in the &amp;lt;tt&amp;gt;$On Game Init&amp;lt;/tt&amp;gt; hook to set the action function.&lt;br /&gt;
&lt;br /&gt;
The action function will receive the values as normal parameters. If the SEXP will receive a variable number of parameters then you can use &amp;lt;tt&amp;gt;...&amp;lt;/tt&amp;gt; as the last parameter to also capture these values. If a parameter is optional and not specified by the SEXP invocation then it will be &amp;lt;tt&amp;gt;nil&amp;lt;/tt&amp;gt; in the script. Parameters in the repeat pattern of the parameter list will be grouped into a array of arrays where each array instance contains the individual values. See below for an example of how this can be handled in the Lua code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Conditional Hooks&lt;br /&gt;
&lt;br /&gt;
$Application: FS2_Open&lt;br /&gt;
$On Game Init: [&lt;br /&gt;
mn.LuaSEXPs[&amp;quot;dynamic-sexp&amp;quot;].Action = function (arg1, arg2, arg3, ...)&lt;br /&gt;
	ba.print(tostring(arg1)&lt;br /&gt;
	ba.print(arg2.Name)&lt;br /&gt;
	ba.print(tostring(arg3.Value))&lt;br /&gt;
&lt;br /&gt;
	for val in {...} do&lt;br /&gt;
		ba.print(val[1])&lt;br /&gt;
		ba.print(tostring(val[2]))&lt;br /&gt;
	done&lt;br /&gt;
end&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=55688</id>
		<title>Dynamic SEXPs</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=55688"/>
		<updated>2018-01-02T18:30:20Z</updated>

		<summary type="html">&lt;p&gt;M!m: Also fix SEXP variable usage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 3.8.2 FSO supports adding custom SEXPs to a mod which have a user defined effect. Currently there is only one way to add such a SEXP but more may be added in the future.&lt;br /&gt;
&lt;br /&gt;
Dynamic SEXPs are only added in modular table files which end with &amp;lt;tt&amp;gt;-sexp.tbm&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Table syntax=&lt;br /&gt;
This section will describe the syntax and effects of the individual options.&lt;br /&gt;
&lt;br /&gt;
==#Lua SEXPs==&lt;br /&gt;
&lt;br /&gt;
Specifies a list of dynamic SEXPs implemented using a Lua function (see [[#Lua interface|Lua interface]] for how to use the implementation function). This section must end with &amp;lt;tt&amp;gt;#End&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Operator:===&lt;br /&gt;
*Adds a new SEXP operator with the specified name. The name may not contain the following characters: &amp;lt;tt&amp;gt;()\&amp;quot;&#039;&amp;lt;/tt&amp;gt;. Furthermore, any whitespace (tab characters or spaces) are also not permitted. This is the name under which this operator will appear in the SEXP code. While the name is mostly up to you it would be a good idea to keep it in line with how the other SEXPs are named. To avoid conflicts with other custom SEXPs you should also use a unique prefix. For example, if you want to  have some SEXP operators that control a cloaking script then you could use &amp;lt;tt&amp;gt;cloak-&amp;lt;/tt&amp;gt; as the common prefix for all the operators that are related to this system. A SEXP that disables the cloak system could be named something like &amp;lt;tt&amp;gt;cloak-disable&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This name must be unique among all operators that are known to the SEXP system. That includes built-in SEXPs and operators added before. If there is a conflict then the new operator definition will be ignored. Built-in operators always take precedence.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Category:===&lt;br /&gt;
*Specifies in which category this SEXP will appear in the context menu in the FRED event editor. Only one of the existing categories may be used. These are all the currently defined categories:&lt;br /&gt;
**Objectives&lt;br /&gt;
**Time&lt;br /&gt;
**Logical&lt;br /&gt;
**Arithmetic&lt;br /&gt;
**Status&lt;br /&gt;
**Change&lt;br /&gt;
**Conditionals&lt;br /&gt;
**Ai goals&lt;br /&gt;
**Event/Goals&lt;br /&gt;
**Training&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Subcategory:===&lt;br /&gt;
*Specifies into which subcategory this SEXP should be put. This is the second level in the context menu of the FRED event editor. New subcategories can be added by specifying a new name here but all subcategory names must be globally unique (you can&#039;t have the same subcategory name under two different categories).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Minimum Arguments:===&lt;br /&gt;
*Specifies ht minimum number of parameters this SEXP needs to work. If less parameters are specified then the SEXP parser will treat this as an error.&lt;br /&gt;
*Must be at least 0.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Maximum Arguments:===&lt;br /&gt;
*Specifies the maximum number of parameters this SEXP can process.&lt;br /&gt;
*Optional. If this option is not present then the SEXP can process an unlimited number of parameters.&lt;br /&gt;
*Must be at least 0 and greater or equal to $Minimum Arguments.&lt;br /&gt;
&lt;br /&gt;
===$Return Type:===&lt;br /&gt;
*Specifies what data type this SEXP will return when invoked. Can be one of the following:&lt;br /&gt;
**; number: The SEXP will return an integer. The scripting function needs to return a number value.&lt;br /&gt;
**; boolean: The SEXP will return a boolean. The scripting function must return a boolean value.&lt;br /&gt;
**; nothing: The SEXP will return nothing. The scripting function may not return anything.&lt;br /&gt;
*Optional. Defaults to &#039;&#039;nothing&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Description:===&lt;br /&gt;
*Sets the help text displayed in the FRED help box. This should be the generic description of what this SEXP does but should not include the documentation for the individual parameters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Repeat===&lt;br /&gt;
*This option must be combined with the parameter documentation below to specify a repeating pattern in a SEXP with a variable number of parameters. See the example below for how exactly this will work. All parameters specified after this option will be grouped together. The script will receive these groups of parameters as a single entity (see [[#Lua interface|Lua interface]]) to make it easier to use the values without having to separate them again in the script.&lt;br /&gt;
&lt;br /&gt;
===$Parameter:===&lt;br /&gt;
*Adds documentation for the parameters and specifies what type they need to have. This option may appear multiple times and should match the number of parameters specified by &amp;lt;tt&amp;gt;$Minimum Arguments&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$Maximum Arguments&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This option has no value.&lt;br /&gt;
&lt;br /&gt;
====+Description:====&lt;br /&gt;
*Sets the description of this parameter. This will be used for the documentation text.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Type:====&lt;br /&gt;
*Sets the type this parameter requires. The currently supported types are:&lt;br /&gt;
**; number: This parameter is a number. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; boolean: This parameter is a boolean. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; ship: This parameter is the name of a ship. The script will receive this value as a &amp;lt;tt&amp;gt;ship&amp;lt;/tt&amp;gt; handle. If the name provided by the mission is invalid (if the ship has not arrived yet or if it is not present anymore) then the script will receive an invalid &amp;lt;tt&amp;gt;ship&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; string: This parameter is a generic string with no special format. In Unicode mode this string may contain Unicode characters.&lt;br /&gt;
**; team: This parameter is a handle to a specific team. The script will receive this value as a &amp;lt;tt&amp;gt;team&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; waypointpath: This parameter is a reference to a specific waypoint path. The script will receive this as a &amp;lt;tt&amp;gt;waypointlist&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; variable: This is a reference to a SEXP variable. This is a reference to the actual variable and not its contents. The script will receive this as a &amp;lt;tt&amp;gt;sexpvariable&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Lua SEXPs&lt;br /&gt;
&lt;br /&gt;
$Operator: dynamic-sexp&lt;br /&gt;
$Category: Change&lt;br /&gt;
$Subcategory: Scripted&lt;br /&gt;
$Minimum Arguments: 3&lt;br /&gt;
; No maximum arguments means that it accepts a variable number of arguments&lt;br /&gt;
$Return Type: Nothing&lt;br /&gt;
$Description: This is a dynamic parameter test SEXP&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Ship parameter&lt;br /&gt;
	+Type: Ship&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable name parameter&lt;br /&gt;
	+Type: variable&lt;br /&gt;
$Repeat ; This starts the part of the parameter list where the parameter pattern repeats&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable string parameter&lt;br /&gt;
	+Type: string&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lua interface=&lt;br /&gt;
So far, all the SEXP table has done is specify that a new Lua SEXP exists but there is no actual action which will be executed when the SEXP is called. For the Lua language this can be done using the &amp;lt;tt&amp;gt;mn.LuaSEXPs&amp;lt;/tt&amp;gt; variable. This is a variable which can be indexed using the SEXP name. The returned value is of type &amp;lt;tt&amp;gt;LuaSEXP&amp;lt;/tt&amp;gt; which only has a single field, &amp;lt;tt&amp;gt;Action&amp;lt;/tt&amp;gt;. This is the function that will be executed once the SEXP is called in a mission. You can use it to retrieve the function of a LuaSEXP but the more common use case is that it is written in the &amp;lt;tt&amp;gt;$On Game Init&amp;lt;/tt&amp;gt; hook to set the action function.&lt;br /&gt;
&lt;br /&gt;
The action function will receive the values as normal parameters. If the SEXP will receive a variable number of parameters then you can use &amp;lt;tt&amp;gt;...&amp;lt;/tt&amp;gt; as the last parameter to also capture these values. If a parameter is optional and not specified by the SEXP invocation then it will be &amp;lt;tt&amp;gt;nil&amp;lt;/tt&amp;gt; in the script. Parameters in the repeat pattern of the parameter list will be grouped into a array of arrays where each array instance contains the individual values. See below for an example of how this can be handled in the Lua code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Conditional Hooks&lt;br /&gt;
&lt;br /&gt;
$Application: FS2_Open&lt;br /&gt;
$On Game Init: [&lt;br /&gt;
mn.LuaSEXPs[&amp;quot;dynamic-sexp&amp;quot;].Action = function (arg1, arg2, arg3, ...)&lt;br /&gt;
	ba.print(tostring(arg1)&lt;br /&gt;
	ba.print(arg2.Name)&lt;br /&gt;
	ba.print(tostring(arg3.Value))&lt;br /&gt;
&lt;br /&gt;
	for val in {...} do&lt;br /&gt;
		ba.print(val[1])&lt;br /&gt;
		ba.print(tostring(val[2]))&lt;br /&gt;
	done&lt;br /&gt;
end&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=55687</id>
		<title>Dynamic SEXPs</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=55687"/>
		<updated>2018-01-02T18:29:15Z</updated>

		<summary type="html">&lt;p&gt;M!m: Fix outdated example script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 3.8.2 FSO supports adding custom SEXPs to a mod which have a user defined effect. Currently there is only one way to add such a SEXP but more may be added in the future.&lt;br /&gt;
&lt;br /&gt;
Dynamic SEXPs are only added in modular table files which end with &amp;lt;tt&amp;gt;-sexp.tbm&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Table syntax=&lt;br /&gt;
This section will describe the syntax and effects of the individual options.&lt;br /&gt;
&lt;br /&gt;
==#Lua SEXPs==&lt;br /&gt;
&lt;br /&gt;
Specifies a list of dynamic SEXPs implemented using a Lua function (see [[#Lua interface|Lua interface]] for how to use the implementation function). This section must end with &amp;lt;tt&amp;gt;#End&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Operator:===&lt;br /&gt;
*Adds a new SEXP operator with the specified name. The name may not contain the following characters: &amp;lt;tt&amp;gt;()\&amp;quot;&#039;&amp;lt;/tt&amp;gt;. Furthermore, any whitespace (tab characters or spaces) are also not permitted. This is the name under which this operator will appear in the SEXP code. While the name is mostly up to you it would be a good idea to keep it in line with how the other SEXPs are named. To avoid conflicts with other custom SEXPs you should also use a unique prefix. For example, if you want to  have some SEXP operators that control a cloaking script then you could use &amp;lt;tt&amp;gt;cloak-&amp;lt;/tt&amp;gt; as the common prefix for all the operators that are related to this system. A SEXP that disables the cloak system could be named something like &amp;lt;tt&amp;gt;cloak-disable&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This name must be unique among all operators that are known to the SEXP system. That includes built-in SEXPs and operators added before. If there is a conflict then the new operator definition will be ignored. Built-in operators always take precedence.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Category:===&lt;br /&gt;
*Specifies in which category this SEXP will appear in the context menu in the FRED event editor. Only one of the existing categories may be used. These are all the currently defined categories:&lt;br /&gt;
**Objectives&lt;br /&gt;
**Time&lt;br /&gt;
**Logical&lt;br /&gt;
**Arithmetic&lt;br /&gt;
**Status&lt;br /&gt;
**Change&lt;br /&gt;
**Conditionals&lt;br /&gt;
**Ai goals&lt;br /&gt;
**Event/Goals&lt;br /&gt;
**Training&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Subcategory:===&lt;br /&gt;
*Specifies into which subcategory this SEXP should be put. This is the second level in the context menu of the FRED event editor. New subcategories can be added by specifying a new name here but all subcategory names must be globally unique (you can&#039;t have the same subcategory name under two different categories).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Minimum Arguments:===&lt;br /&gt;
*Specifies ht minimum number of parameters this SEXP needs to work. If less parameters are specified then the SEXP parser will treat this as an error.&lt;br /&gt;
*Must be at least 0.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Maximum Arguments:===&lt;br /&gt;
*Specifies the maximum number of parameters this SEXP can process.&lt;br /&gt;
*Optional. If this option is not present then the SEXP can process an unlimited number of parameters.&lt;br /&gt;
*Must be at least 0 and greater or equal to $Minimum Arguments.&lt;br /&gt;
&lt;br /&gt;
===$Return Type:===&lt;br /&gt;
*Specifies what data type this SEXP will return when invoked. Can be one of the following:&lt;br /&gt;
**; number: The SEXP will return an integer. The scripting function needs to return a number value.&lt;br /&gt;
**; boolean: The SEXP will return a boolean. The scripting function must return a boolean value.&lt;br /&gt;
**; nothing: The SEXP will return nothing. The scripting function may not return anything.&lt;br /&gt;
*Optional. Defaults to &#039;&#039;nothing&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Description:===&lt;br /&gt;
*Sets the help text displayed in the FRED help box. This should be the generic description of what this SEXP does but should not include the documentation for the individual parameters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Repeat===&lt;br /&gt;
*This option must be combined with the parameter documentation below to specify a repeating pattern in a SEXP with a variable number of parameters. See the example below for how exactly this will work. All parameters specified after this option will be grouped together. The script will receive these groups of parameters as a single entity (see [[#Lua interface|Lua interface]]) to make it easier to use the values without having to separate them again in the script.&lt;br /&gt;
&lt;br /&gt;
===$Parameter:===&lt;br /&gt;
*Adds documentation for the parameters and specifies what type they need to have. This option may appear multiple times and should match the number of parameters specified by &amp;lt;tt&amp;gt;$Minimum Arguments&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$Maximum Arguments&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This option has no value.&lt;br /&gt;
&lt;br /&gt;
====+Description:====&lt;br /&gt;
*Sets the description of this parameter. This will be used for the documentation text.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Type:====&lt;br /&gt;
*Sets the type this parameter requires. The currently supported types are:&lt;br /&gt;
**; number: This parameter is a number. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; boolean: This parameter is a boolean. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; ship: This parameter is the name of a ship. The script will receive this value as a &amp;lt;tt&amp;gt;ship&amp;lt;/tt&amp;gt; handle. If the name provided by the mission is invalid (if the ship has not arrived yet or if it is not present anymore) then the script will receive an invalid &amp;lt;tt&amp;gt;ship&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; string: This parameter is a generic string with no special format. In Unicode mode this string may contain Unicode characters.&lt;br /&gt;
**; team: This parameter is a handle to a specific team. The script will receive this value as a &amp;lt;tt&amp;gt;team&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; waypointpath: This parameter is a reference to a specific waypoint path. The script will receive this as a &amp;lt;tt&amp;gt;waypointlist&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; variable: This is a reference to a SEXP variable. This is a reference to the actual variable and not its contents. The script will receive this as a &amp;lt;tt&amp;gt;sexpvariable&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Lua SEXPs&lt;br /&gt;
&lt;br /&gt;
$Operator: dynamic-sexp&lt;br /&gt;
$Category: Change&lt;br /&gt;
$Subcategory: Scripted&lt;br /&gt;
$Minimum Arguments: 3&lt;br /&gt;
; No maximum arguments means that it accepts a variable number of arguments&lt;br /&gt;
$Return Type: Nothing&lt;br /&gt;
$Description: This is a dynamic parameter test SEXP&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Ship parameter&lt;br /&gt;
	+Type: Ship&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable name parameter&lt;br /&gt;
	+Type: variable&lt;br /&gt;
$Repeat ; This starts the part of the parameter list where the parameter pattern repeats&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable string parameter&lt;br /&gt;
	+Type: string&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lua interface=&lt;br /&gt;
So far, all the SEXP table has done is specify that a new Lua SEXP exists but there is no actual action which will be executed when the SEXP is called. For the Lua language this can be done using the &amp;lt;tt&amp;gt;mn.LuaSEXPs&amp;lt;/tt&amp;gt; variable. This is a variable which can be indexed using the SEXP name. The returned value is of type &amp;lt;tt&amp;gt;LuaSEXP&amp;lt;/tt&amp;gt; which only has a single field, &amp;lt;tt&amp;gt;Action&amp;lt;/tt&amp;gt;. This is the function that will be executed once the SEXP is called in a mission. You can use it to retrieve the function of a LuaSEXP but the more common use case is that it is written in the &amp;lt;tt&amp;gt;$On Game Init&amp;lt;/tt&amp;gt; hook to set the action function.&lt;br /&gt;
&lt;br /&gt;
The action function will receive the values as normal parameters. If the SEXP will receive a variable number of parameters then you can use &amp;lt;tt&amp;gt;...&amp;lt;/tt&amp;gt; as the last parameter to also capture these values. If a parameter is optional and not specified by the SEXP invocation then it will be &amp;lt;tt&amp;gt;nil&amp;lt;/tt&amp;gt; in the script. Parameters in the repeat pattern of the parameter list will be grouped into a array of arrays where each array instance contains the individual values. See below for an example of how this can be handled in the Lua code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Conditional Hooks&lt;br /&gt;
&lt;br /&gt;
$Application: FS2_Open&lt;br /&gt;
$On Game Init: [&lt;br /&gt;
mn.LuaSEXPs[&amp;quot;dynamic-sexp&amp;quot;].Action = function (arg1, arg2, arg3, ...)&lt;br /&gt;
	ba.print(tostring(arg1)&lt;br /&gt;
	ba.print(arg2.Name)&lt;br /&gt;
	ba.print(tostring(mn.SEXPVariables[arg3].Value))&lt;br /&gt;
&lt;br /&gt;
	for val in {...} do&lt;br /&gt;
		ba.print(val[1])&lt;br /&gt;
		ba.print(tostring(val[2]))&lt;br /&gt;
	done&lt;br /&gt;
end&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=SEXP&amp;diff=55422</id>
		<title>SEXP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=SEXP&amp;diff=55422"/>
		<updated>2017-12-27T11:25:36Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add link to the dynamic SEXPs page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Symbolic expressions&#039;&#039;&#039; (more commonly &#039;&#039;&#039;SEXPs&#039;&#039;&#039;) are used by FreeSpace missions.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Retail SEXPs]] for SEXPs that are used by FreeSpace 2 v1.2.&lt;br /&gt;
*[[SCP SEXPs]] for SEXPs that were implemented by the [[Source Code Project]].&lt;br /&gt;
*[[Dynamic SEXPs]] for documentation on how to add custom SEXPs to a mod. These will appear as usual in the mission editor but the mod can define what the SEXP does.&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=55421</id>
		<title>Dynamic SEXPs</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=55421"/>
		<updated>2017-12-27T11:24:08Z</updated>

		<summary type="html">&lt;p&gt;M!m: Update documentation of ship parameter type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 3.8.2 FSO supports adding custom SEXPs to a mod which have a user defined effect. Currently there is only one way to add such a SEXP but more may be added in the future.&lt;br /&gt;
&lt;br /&gt;
Dynamic SEXPs are only added in modular table files which end with &amp;lt;tt&amp;gt;-sexp.tbm&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Table syntax=&lt;br /&gt;
This section will describe the syntax and effects of the individual options.&lt;br /&gt;
&lt;br /&gt;
==#Lua SEXPs==&lt;br /&gt;
&lt;br /&gt;
Specifies a list of dynamic SEXPs implemented using a Lua function (see [[#Lua interface|Lua interface]] for how to use the implementation function). This section must end with &amp;lt;tt&amp;gt;#End&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Operator:===&lt;br /&gt;
*Adds a new SEXP operator with the specified name. The name may not contain the following characters: &amp;lt;tt&amp;gt;()\&amp;quot;&#039;&amp;lt;/tt&amp;gt;. Furthermore, any whitespace (tab characters or spaces) are also not permitted. This is the name under which this operator will appear in the SEXP code. While the name is mostly up to you it would be a good idea to keep it in line with how the other SEXPs are named. To avoid conflicts with other custom SEXPs you should also use a unique prefix. For example, if you want to  have some SEXP operators that control a cloaking script then you could use &amp;lt;tt&amp;gt;cloak-&amp;lt;/tt&amp;gt; as the common prefix for all the operators that are related to this system. A SEXP that disables the cloak system could be named something like &amp;lt;tt&amp;gt;cloak-disable&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This name must be unique among all operators that are known to the SEXP system. That includes built-in SEXPs and operators added before. If there is a conflict then the new operator definition will be ignored. Built-in operators always take precedence.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Category:===&lt;br /&gt;
*Specifies in which category this SEXP will appear in the context menu in the FRED event editor. Only one of the existing categories may be used. These are all the currently defined categories:&lt;br /&gt;
**Objectives&lt;br /&gt;
**Time&lt;br /&gt;
**Logical&lt;br /&gt;
**Arithmetic&lt;br /&gt;
**Status&lt;br /&gt;
**Change&lt;br /&gt;
**Conditionals&lt;br /&gt;
**Ai goals&lt;br /&gt;
**Event/Goals&lt;br /&gt;
**Training&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Subcategory:===&lt;br /&gt;
*Specifies into which subcategory this SEXP should be put. This is the second level in the context menu of the FRED event editor. New subcategories can be added by specifying a new name here but all subcategory names must be globally unique (you can&#039;t have the same subcategory name under two different categories).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Minimum Arguments:===&lt;br /&gt;
*Specifies ht minimum number of parameters this SEXP needs to work. If less parameters are specified then the SEXP parser will treat this as an error.&lt;br /&gt;
*Must be at least 0.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Maximum Arguments:===&lt;br /&gt;
*Specifies the maximum number of parameters this SEXP can process.&lt;br /&gt;
*Optional. If this option is not present then the SEXP can process an unlimited number of parameters.&lt;br /&gt;
*Must be at least 0 and greater or equal to $Minimum Arguments.&lt;br /&gt;
&lt;br /&gt;
===$Return Type:===&lt;br /&gt;
*Specifies what data type this SEXP will return when invoked. Can be one of the following:&lt;br /&gt;
**; number: The SEXP will return an integer. The scripting function needs to return a number value.&lt;br /&gt;
**; boolean: The SEXP will return a boolean. The scripting function must return a boolean value.&lt;br /&gt;
**; nothing: The SEXP will return nothing. The scripting function may not return anything.&lt;br /&gt;
*Optional. Defaults to &#039;&#039;nothing&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Description:===&lt;br /&gt;
*Sets the help text displayed in the FRED help box. This should be the generic description of what this SEXP does but should not include the documentation for the individual parameters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Repeat===&lt;br /&gt;
*This option must be combined with the parameter documentation below to specify a repeating pattern in a SEXP with a variable number of parameters. See the example below for how exactly this will work. All parameters specified after this option will be grouped together. The script will receive these groups of parameters as a single entity (see [[#Lua interface|Lua interface]]) to make it easier to use the values without having to separate them again in the script.&lt;br /&gt;
&lt;br /&gt;
===$Parameter:===&lt;br /&gt;
*Adds documentation for the parameters and specifies what type they need to have. This option may appear multiple times and should match the number of parameters specified by &amp;lt;tt&amp;gt;$Minimum Arguments&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$Maximum Arguments&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This option has no value.&lt;br /&gt;
&lt;br /&gt;
====+Description:====&lt;br /&gt;
*Sets the description of this parameter. This will be used for the documentation text.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Type:====&lt;br /&gt;
*Sets the type this parameter requires. The currently supported types are:&lt;br /&gt;
**; number: This parameter is a number. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; boolean: This parameter is a boolean. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; ship: This parameter is the name of a ship. The script will receive this value as a &amp;lt;tt&amp;gt;ship&amp;lt;/tt&amp;gt; handle. If the name provided by the mission is invalid (if the ship has not arrived yet or if it is not present anymore) then the script will receive an invalid &amp;lt;tt&amp;gt;ship&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; string: This parameter is a generic string with no special format. In Unicode mode this string may contain Unicode characters.&lt;br /&gt;
**; team: This parameter is a handle to a specific team. The script will receive this value as a &amp;lt;tt&amp;gt;team&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; waypointpath: This parameter is a reference to a specific waypoint path. The script will receive this as a &amp;lt;tt&amp;gt;waypointlist&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; variable: This is a reference to a SEXP variable. This is a reference to the actual variable and not its contents. The script will receive this as a &amp;lt;tt&amp;gt;sexpvariable&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Lua SEXPs&lt;br /&gt;
&lt;br /&gt;
$Operator: dynamic-sexp&lt;br /&gt;
$Category: Change&lt;br /&gt;
$Subcategory: Scripted&lt;br /&gt;
$Minimum Arguments: 3&lt;br /&gt;
; No maximum arguments means that it accepts a variable number of arguments&lt;br /&gt;
$Return Type: Nothing&lt;br /&gt;
$Description: This is a dynamic parameter test SEXP&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Ship parameter&lt;br /&gt;
	+Type: Ship&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable name parameter&lt;br /&gt;
	+Type: variable&lt;br /&gt;
$Repeat ; This starts the part of the parameter list where the parameter pattern repeats&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable string parameter&lt;br /&gt;
	+Type: string&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lua interface=&lt;br /&gt;
So far, all the SEXP table has done is specify that a new Lua SEXP exists but there is no actual action which will be executed when the SEXP is called. For the Lua language this can be done using the &amp;lt;tt&amp;gt;mn.LuaSEXPs&amp;lt;/tt&amp;gt; variable. This is a variable which can be indexed using the SEXP name. The returned value is of type &amp;lt;tt&amp;gt;LuaSEXP&amp;lt;/tt&amp;gt; which only has a single field, &amp;lt;tt&amp;gt;Action&amp;lt;/tt&amp;gt;. This is the function that will be executed once the SEXP is called in a mission. You can use it to retrieve the function of a LuaSEXP but the more common use case is that it is written in the &amp;lt;tt&amp;gt;$On Game Init&amp;lt;/tt&amp;gt; hook to set the action function.&lt;br /&gt;
&lt;br /&gt;
The action function will receive the values as normal parameters. If the SEXP will receive a variable number of parameters then you can use &amp;lt;tt&amp;gt;...&amp;lt;/tt&amp;gt; as the last parameter to also capture these values. If a parameter is optional and not specified by the SEXP invocation then it will be &amp;lt;tt&amp;gt;nil&amp;lt;/tt&amp;gt; in the script. Parameters in the repeat pattern of the parameter list will be grouped into a array of arrays where each array instance contains the individual values. See below for an example of how this can be handled in the Lua code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Conditional Hooks&lt;br /&gt;
&lt;br /&gt;
$Application: FS2_Open&lt;br /&gt;
$On Game Init: [&lt;br /&gt;
mn.LuaSEXPs[&amp;quot;dynamic-sexp&amp;quot;].Action = function (arg1, arg2, arg3, ...)&lt;br /&gt;
	ba.print(tostring(arg1)&lt;br /&gt;
	ba.print(mn.Ships[arg2].Name)&lt;br /&gt;
	ba.print(tostring(mn.SEXPVariables[arg3].Value))&lt;br /&gt;
&lt;br /&gt;
	for val in {...} do&lt;br /&gt;
		ba.print(val[1])&lt;br /&gt;
		ba.print(tostring(val[2]))&lt;br /&gt;
	done&lt;br /&gt;
end&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=55209</id>
		<title>Dynamic SEXPs</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=55209"/>
		<updated>2017-12-21T14:16:27Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add clarification for why ships are passed as strings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 3.8.2 FSO supports adding custom SEXPs to a mod which have a user defined effect. Currently there is only one way to add such a SEXP but more may be added in the future.&lt;br /&gt;
&lt;br /&gt;
Dynamic SEXPs are only added in modular table files which end with &amp;lt;tt&amp;gt;-sexp.tbm&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Table syntax=&lt;br /&gt;
This section will describe the syntax and effects of the individual options.&lt;br /&gt;
&lt;br /&gt;
==#Lua SEXPs==&lt;br /&gt;
&lt;br /&gt;
Specifies a list of dynamic SEXPs implemented using a Lua function (see [[#Lua interface|Lua interface]] for how to use the implementation function). This section must end with &amp;lt;tt&amp;gt;#End&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Operator:===&lt;br /&gt;
*Adds a new SEXP operator with the specified name. The name may not contain the following characters: &amp;lt;tt&amp;gt;()\&amp;quot;&#039;&amp;lt;/tt&amp;gt;. Furthermore, any whitespace (tab characters or spaces) are also not permitted. This is the name under which this operator will appear in the SEXP code. While the name is mostly up to you it would be a good idea to keep it in line with how the other SEXPs are named. To avoid conflicts with other custom SEXPs you should also use a unique prefix. For example, if you want to  have some SEXP operators that control a cloaking script then you could use &amp;lt;tt&amp;gt;cloak-&amp;lt;/tt&amp;gt; as the common prefix for all the operators that are related to this system. A SEXP that disables the cloak system could be named something like &amp;lt;tt&amp;gt;cloak-disable&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This name must be unique among all operators that are known to the SEXP system. That includes built-in SEXPs and operators added before. If there is a conflict then the new operator definition will be ignored. Built-in operators always take precedence.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Category:===&lt;br /&gt;
*Specifies in which category this SEXP will appear in the context menu in the FRED event editor. Only one of the existing categories may be used. These are all the currently defined categories:&lt;br /&gt;
**Objectives&lt;br /&gt;
**Time&lt;br /&gt;
**Logical&lt;br /&gt;
**Arithmetic&lt;br /&gt;
**Status&lt;br /&gt;
**Change&lt;br /&gt;
**Conditionals&lt;br /&gt;
**Ai goals&lt;br /&gt;
**Event/Goals&lt;br /&gt;
**Training&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Subcategory:===&lt;br /&gt;
*Specifies into which subcategory this SEXP should be put. This is the second level in the context menu of the FRED event editor. New subcategories can be added by specifying a new name here but all subcategory names must be globally unique (you can&#039;t have the same subcategory name under two different categories).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Minimum Arguments:===&lt;br /&gt;
*Specifies ht minimum number of parameters this SEXP needs to work. If less parameters are specified then the SEXP parser will treat this as an error.&lt;br /&gt;
*Must be at least 0.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Maximum Arguments:===&lt;br /&gt;
*Specifies the maximum number of parameters this SEXP can process.&lt;br /&gt;
*Optional. If this option is not present then the SEXP can process an unlimited number of parameters.&lt;br /&gt;
*Must be at least 0 and greater or equal to $Minimum Arguments.&lt;br /&gt;
&lt;br /&gt;
===$Return Type:===&lt;br /&gt;
*Specifies what data type this SEXP will return when invoked. Can be one of the following:&lt;br /&gt;
**; number: The SEXP will return an integer. The scripting function needs to return a number value.&lt;br /&gt;
**; boolean: The SEXP will return a boolean. The scripting function must return a boolean value.&lt;br /&gt;
**; nothing: The SEXP will return nothing. The scripting function may not return anything.&lt;br /&gt;
*Optional. Defaults to &#039;&#039;nothing&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Description:===&lt;br /&gt;
*Sets the help text displayed in the FRED help box. This should be the generic description of what this SEXP does but should not include the documentation for the individual parameters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Repeat===&lt;br /&gt;
*This option must be combined with the parameter documentation below to specify a repeating pattern in a SEXP with a variable number of parameters. See the example below for how exactly this will work. All parameters specified after this option will be grouped together. The script will receive these groups of parameters as a single entity (see [[#Lua interface|Lua interface]]) to make it easier to use the values without having to separate them again in the script.&lt;br /&gt;
&lt;br /&gt;
===$Parameter:===&lt;br /&gt;
*Adds documentation for the parameters and specifies what type they need to have. This option may appear multiple times and should match the number of parameters specified by &amp;lt;tt&amp;gt;$Minimum Arguments&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$Maximum Arguments&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This option has no value.&lt;br /&gt;
&lt;br /&gt;
====+Description:====&lt;br /&gt;
*Sets the description of this parameter. This will be used for the documentation text.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Type:====&lt;br /&gt;
*Sets the type this parameter requires. The currently supported types are:&lt;br /&gt;
**; number: This parameter is a number. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; boolean: This parameter is a boolean. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; ship: This parameter is the name of a ship. The script will receive this value as a string which is the ship name. &amp;lt;tt&amp;gt;mn.Ships&amp;lt;/tt&amp;gt; can be used for getting a ship handle from the name. The name may produce an invalid handle if the ship does not exist or is no longer present in the mission. This is done to pass as much information about the ship to the script as possible since the invalid name can still be used by the script while an invalid &amp;lt;tt&amp;gt;ship&amp;lt;/tt&amp;gt; handle is not very useful after determining that it is invalid.&lt;br /&gt;
**; string: This parameter is a generic string with no special format. In Unicode mode this string may contain Unicode characters.&lt;br /&gt;
**; team: This parameter is a handle to a specific team. The script will receive this value as a &amp;lt;tt&amp;gt;team&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; waypointpath: This parameter is a reference to a specific waypoint path. The script will receive this as a &amp;lt;tt&amp;gt;waypointlist&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; variable: This is a reference to a SEXP variable. This is a reference to the actual variable and not its contents. The script will receive this as a &amp;lt;tt&amp;gt;sexpvariable&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Lua SEXPs&lt;br /&gt;
&lt;br /&gt;
$Operator: dynamic-sexp&lt;br /&gt;
$Category: Change&lt;br /&gt;
$Subcategory: Scripted&lt;br /&gt;
$Minimum Arguments: 3&lt;br /&gt;
; No maximum arguments means that it accepts a variable number of arguments&lt;br /&gt;
$Return Type: Nothing&lt;br /&gt;
$Description: This is a dynamic parameter test SEXP&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Ship parameter&lt;br /&gt;
	+Type: Ship&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable name parameter&lt;br /&gt;
	+Type: variable&lt;br /&gt;
$Repeat ; This starts the part of the parameter list where the parameter pattern repeats&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable string parameter&lt;br /&gt;
	+Type: string&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lua interface=&lt;br /&gt;
So far, all the SEXP table has done is specify that a new Lua SEXP exists but there is no actual action which will be executed when the SEXP is called. For the Lua language this can be done using the &amp;lt;tt&amp;gt;mn.LuaSEXPs&amp;lt;/tt&amp;gt; variable. This is a variable which can be indexed using the SEXP name. The returned value is of type &amp;lt;tt&amp;gt;LuaSEXP&amp;lt;/tt&amp;gt; which only has a single field, &amp;lt;tt&amp;gt;Action&amp;lt;/tt&amp;gt;. This is the function that will be executed once the SEXP is called in a mission. You can use it to retrieve the function of a LuaSEXP but the more common use case is that it is written in the &amp;lt;tt&amp;gt;$On Game Init&amp;lt;/tt&amp;gt; hook to set the action function.&lt;br /&gt;
&lt;br /&gt;
The action function will receive the values as normal parameters. If the SEXP will receive a variable number of parameters then you can use &amp;lt;tt&amp;gt;...&amp;lt;/tt&amp;gt; as the last parameter to also capture these values. If a parameter is optional and not specified by the SEXP invocation then it will be &amp;lt;tt&amp;gt;nil&amp;lt;/tt&amp;gt; in the script. Parameters in the repeat pattern of the parameter list will be grouped into a array of arrays where each array instance contains the individual values. See below for an example of how this can be handled in the Lua code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Conditional Hooks&lt;br /&gt;
&lt;br /&gt;
$Application: FS2_Open&lt;br /&gt;
$On Game Init: [&lt;br /&gt;
mn.LuaSEXPs[&amp;quot;dynamic-sexp&amp;quot;].Action = function (arg1, arg2, arg3, ...)&lt;br /&gt;
	ba.print(tostring(arg1)&lt;br /&gt;
	ba.print(mn.Ships[arg2].Name)&lt;br /&gt;
	ba.print(tostring(mn.SEXPVariables[arg3].Value))&lt;br /&gt;
&lt;br /&gt;
	for val in {...} do&lt;br /&gt;
		ba.print(val[1])&lt;br /&gt;
		ba.print(tostring(val[2]))&lt;br /&gt;
	done&lt;br /&gt;
end&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=55202</id>
		<title>Dynamic SEXPs</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Dynamic_SEXPs&amp;diff=55202"/>
		<updated>2017-12-21T11:12:35Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add initial Dynamic SEXPs documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 3.8.2 FSO supports adding custom SEXPs to a mod which have a user defined effect. Currently there is only one way to add such a SEXP but more may be added in the future.&lt;br /&gt;
&lt;br /&gt;
Dynamic SEXPs are only added in modular table files which end with &amp;lt;tt&amp;gt;-sexp.tbm&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Table syntax=&lt;br /&gt;
This section will describe the syntax and effects of the individual options.&lt;br /&gt;
&lt;br /&gt;
==#Lua SEXPs==&lt;br /&gt;
&lt;br /&gt;
Specifies a list of dynamic SEXPs implemented using a Lua function (see [[#Lua interface|Lua interface]] for how to use the implementation function). This section must end with &amp;lt;tt&amp;gt;#End&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Operator:===&lt;br /&gt;
*Adds a new SEXP operator with the specified name. The name may not contain the following characters: &amp;lt;tt&amp;gt;()\&amp;quot;&#039;&amp;lt;/tt&amp;gt;. Furthermore, any whitespace (tab characters or spaces) are also not permitted. This is the name under which this operator will appear in the SEXP code. While the name is mostly up to you it would be a good idea to keep it in line with how the other SEXPs are named. To avoid conflicts with other custom SEXPs you should also use a unique prefix. For example, if you want to  have some SEXP operators that control a cloaking script then you could use &amp;lt;tt&amp;gt;cloak-&amp;lt;/tt&amp;gt; as the common prefix for all the operators that are related to this system. A SEXP that disables the cloak system could be named something like &amp;lt;tt&amp;gt;cloak-disable&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This name must be unique among all operators that are known to the SEXP system. That includes built-in SEXPs and operators added before. If there is a conflict then the new operator definition will be ignored. Built-in operators always take precedence.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Category:===&lt;br /&gt;
*Specifies in which category this SEXP will appear in the context menu in the FRED event editor. Only one of the existing categories may be used. These are all the currently defined categories:&lt;br /&gt;
**Objectives&lt;br /&gt;
**Time&lt;br /&gt;
**Logical&lt;br /&gt;
**Arithmetic&lt;br /&gt;
**Status&lt;br /&gt;
**Change&lt;br /&gt;
**Conditionals&lt;br /&gt;
**Ai goals&lt;br /&gt;
**Event/Goals&lt;br /&gt;
**Training&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Subcategory:===&lt;br /&gt;
*Specifies into which subcategory this SEXP should be put. This is the second level in the context menu of the FRED event editor. New subcategories can be added by specifying a new name here but all subcategory names must be globally unique (you can&#039;t have the same subcategory name under two different categories).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Minimum Arguments:===&lt;br /&gt;
*Specifies ht minimum number of parameters this SEXP needs to work. If less parameters are specified then the SEXP parser will treat this as an error.&lt;br /&gt;
*Must be at least 0.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Maximum Arguments:===&lt;br /&gt;
*Specifies the maximum number of parameters this SEXP can process.&lt;br /&gt;
*Optional. If this option is not present then the SEXP can process an unlimited number of parameters.&lt;br /&gt;
*Must be at least 0 and greater or equal to $Minimum Arguments.&lt;br /&gt;
&lt;br /&gt;
===$Return Type:===&lt;br /&gt;
*Specifies what data type this SEXP will return when invoked. Can be one of the following:&lt;br /&gt;
**; number: The SEXP will return an integer. The scripting function needs to return a number value.&lt;br /&gt;
**; boolean: The SEXP will return a boolean. The scripting function must return a boolean value.&lt;br /&gt;
**; nothing: The SEXP will return nothing. The scripting function may not return anything.&lt;br /&gt;
*Optional. Defaults to &#039;&#039;nothing&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Description:===&lt;br /&gt;
*Sets the help text displayed in the FRED help box. This should be the generic description of what this SEXP does but should not include the documentation for the individual parameters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Repeat===&lt;br /&gt;
*This option must be combined with the parameter documentation below to specify a repeating pattern in a SEXP with a variable number of parameters. See the example below for how exactly this will work. All parameters specified after this option will be grouped together. The script will receive these groups of parameters as a single entity (see [[#Lua interface|Lua interface]]) to make it easier to use the values without having to separate them again in the script.&lt;br /&gt;
&lt;br /&gt;
===$Parameter:===&lt;br /&gt;
*Adds documentation for the parameters and specifies what type they need to have. This option may appear multiple times and should match the number of parameters specified by &amp;lt;tt&amp;gt;$Minimum Arguments&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$Maximum Arguments&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*This option has no value.&lt;br /&gt;
&lt;br /&gt;
====+Description:====&lt;br /&gt;
*Sets the description of this parameter. This will be used for the documentation text.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Type:====&lt;br /&gt;
*Sets the type this parameter requires. The currently supported types are:&lt;br /&gt;
**; number: This parameter is a number. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; boolean: This parameter is a boolean. The SEXP system will evaluate the expression for this parameter (which may be another SEXP operator) and pass the result to the script.&lt;br /&gt;
**; ship: This parameter is the name of a ship. The script will receive this value as a string which is the ship name. &amp;lt;tt&amp;gt;mn.Ships&amp;lt;/tt&amp;gt; can be used for getting a ship handle from the name. The name may be invalid if the ship does not exist or is no longer present in the mission.&lt;br /&gt;
**; string: This parameter is a generic string with no special format. In Unicode mode this string may contain Unicode characters.&lt;br /&gt;
**; team: This parameter is a handle to a specific team. The script will receive this value as a &amp;lt;tt&amp;gt;team&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; waypointpath: This parameter is a reference to a specific waypoint path. The script will receive this as a &amp;lt;tt&amp;gt;waypointlist&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
**; variable: This is a reference to a SEXP variable. This is a reference to the actual variable and not its contents. The script will receive this as a &amp;lt;tt&amp;gt;sexpvariable&amp;lt;/tt&amp;gt; handle.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Lua SEXPs&lt;br /&gt;
&lt;br /&gt;
$Operator: dynamic-sexp&lt;br /&gt;
$Category: Change&lt;br /&gt;
$Subcategory: Scripted&lt;br /&gt;
$Minimum Arguments: 3&lt;br /&gt;
; No maximum arguments means that it accepts a variable number of arguments&lt;br /&gt;
$Return Type: Nothing&lt;br /&gt;
$Description: This is a dynamic parameter test SEXP&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Ship parameter&lt;br /&gt;
	+Type: Ship&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable name parameter&lt;br /&gt;
	+Type: variable&lt;br /&gt;
$Repeat ; This starts the part of the parameter list where the parameter pattern repeats&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable string parameter&lt;br /&gt;
	+Type: string&lt;br /&gt;
$Parameter:&lt;br /&gt;
	+Description: Variable number parameter&lt;br /&gt;
	+Type: Number&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lua interface=&lt;br /&gt;
So far, all the SEXP table has done is specify that a new Lua SEXP exists but there is no actual action which will be executed when the SEXP is called. For the Lua language this can be done using the &amp;lt;tt&amp;gt;mn.LuaSEXPs&amp;lt;/tt&amp;gt; variable. This is a variable which can be indexed using the SEXP name. The returned value is of type &amp;lt;tt&amp;gt;LuaSEXP&amp;lt;/tt&amp;gt; which only has a single field, &amp;lt;tt&amp;gt;Action&amp;lt;/tt&amp;gt;. This is the function that will be executed once the SEXP is called in a mission. You can use it to retrieve the function of a LuaSEXP but the more common use case is that it is written in the &amp;lt;tt&amp;gt;$On Game Init&amp;lt;/tt&amp;gt; hook to set the action function.&lt;br /&gt;
&lt;br /&gt;
The action function will receive the values as normal parameters. If the SEXP will receive a variable number of parameters then you can use &amp;lt;tt&amp;gt;...&amp;lt;/tt&amp;gt; as the last parameter to also capture these values. If a parameter is optional and not specified by the SEXP invocation then it will be &amp;lt;tt&amp;gt;nil&amp;lt;/tt&amp;gt; in the script. Parameters in the repeat pattern of the parameter list will be grouped into a array of arrays where each array instance contains the individual values. See below for an example of how this can be handled in the Lua code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Conditional Hooks&lt;br /&gt;
&lt;br /&gt;
$Application: FS2_Open&lt;br /&gt;
$On Game Init: [&lt;br /&gt;
mn.LuaSEXPs[&amp;quot;dynamic-sexp&amp;quot;].Action = function (arg1, arg2, arg3, ...)&lt;br /&gt;
	ba.print(tostring(arg1)&lt;br /&gt;
	ba.print(mn.Ships[arg2].Name)&lt;br /&gt;
	ba.print(tostring(mn.SEXPVariables[arg3].Value))&lt;br /&gt;
&lt;br /&gt;
	for val in {...} do&lt;br /&gt;
		ba.print(val[1])&lt;br /&gt;
		ba.print(tostring(val[2]))&lt;br /&gt;
	done&lt;br /&gt;
end&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Game_settings.tbl&amp;diff=55114</id>
		<title>Game settings.tbl</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Game_settings.tbl&amp;diff=55114"/>
		<updated>2017-12-20T11:44:53Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add documentation for $Enable scripting in FRED&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2015-12-03|5d8f779}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;game_settings.tbl&#039;&#039;&#039;, also known as mod.tbl, defines options that can be changed globally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-mod.tbm&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
==#GAME SETTINGS==&lt;br /&gt;
Optional. Contains settings that affect how the engine works.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Target Version:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
Specifies the minimum version of FreeSpace Open that this mod supports. If the version specified here is greater than the version of the current build, an error message is displayed.&lt;br /&gt;
}}&lt;br /&gt;
{{Table381|&lt;br /&gt;
The $Minimum version option has been renamed to $Target Version. The old name is kept with the same functionality for backwards-compatibility.&lt;br /&gt;
&lt;br /&gt;
The target version specifies what version of the FSO engine this mod was created for. It will be used by the engine to enable or disable backwards-incompatible changes by default. The default value is 2.0 which specifies that the mod targets the retail engine version.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Major:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Required. Sets the major component of the target version.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;3&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Minor:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Required. Sets the minor component of the target version.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;7&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Build:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Required. Sets the build component of the target version.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;3&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Revision:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Optional. Sets the revision component of the target version. If no revision is given then all builds of that release are supported (even nightly builds if there are any).&lt;br /&gt;
For nightly builds this is the date in YYYYMMDD format.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;20151121&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Window title:===&lt;br /&gt;
{{Table382|&lt;br /&gt;
Specifies the name of the FSO window when this mod is running. If blank or unspecified, the window will have the default title of &amp;quot;FreeSpace 2&amp;quot;.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Unicode mode:===&lt;br /&gt;
{{Table382|&lt;br /&gt;
Enabled the Unicode text mode for this mod. In Unicode mode all text is assumed to be UTF-8 encoded Unicode and certain features are disabled if they do not have full Unicode support. Most notably, if this is enabled then the engine will no longer support the old bitmap fonts that were used by Retail FreeSpace. Only the newer TrueType fonts will be supported.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==#CAMPAIGN SETTINGS==&lt;br /&gt;
Optional. This group contains various Campaign related settings and overrides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Default Campaign File Name:===&lt;br /&gt;
Defines which campaign will be selected by default for new pilots. A file extension is not needed and, if present, is removed by the code.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===#Ignored Campaign File Names===&lt;br /&gt;
Optional. Defines which campaigns, if present, will not appear in the Campaign Room. Only single-player campaigns can be ignored. &#039;&#039;File extensions are required.&#039;&#039;&lt;br /&gt;
{{Table371|As of 3.7.1, file extensions are not required and, if present, are removed by the code.}}&lt;br /&gt;
====$Campaign File Name:====&lt;br /&gt;
File name of the campaign to ignore. Multiple entries may exist.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Red-alert applies to delayed ships:===&lt;br /&gt;
Controls whether red-alert saved statistics (hitpoints, weapons, subsystem strengths) will be restored for ships that are not present at mission start.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#HUD SETTINGS==&lt;br /&gt;
Optional. This group contains various HUD behavior settings and overrides&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Directive Wait Time:===&lt;br /&gt;
*Defines how long the game will wait before displaying a directive.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Values: &#039;&#039;&#039;&#039;&#039;Greater than or equal to 0 ms&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Cutscene camera displays HUD:===&lt;br /&gt;
Show the HUD when the cutscene camera is enabled.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In earlier versions of the code, this option was controlled by $Cutscene camera disables HUD: and had a default of YES.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Full color head animations:===&lt;br /&gt;
Enables full-color head ANIs. Normal head ANIs will appear in gray.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In earlier versions of the code, this option was controlled by $Color head animations with hud colors: and had a default of YES.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#SEXP SETTINGS==&lt;br /&gt;
Optional. This group contains SEXP settings and overrides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Loop SEXPs Then Arguments:===&lt;br /&gt;
Flips how when-argument settings loop. See: [http://www.hard-light.net/forums/index.php?topic=79602.0 SEXP Argument changes via mod.tbl] &lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Use Alternate Chaining Behavior:===&lt;br /&gt;
When set, this makes the event chaining behavior act as people expected it to be in [http://scp.indiegames.us/mantis/view.php?id=82 Mantis #82].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#GRAPHICS SETTINGS==&lt;br /&gt;
Optional. This group contains settings related to graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Enable External Shaders:===&lt;br /&gt;
Enables the use of external shader files. By default, the engine will use the built-in shaders.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Default Detail Level:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
Determines which graphics detail level preset (low, medium, high, very high) acts as the default for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; (0-3)&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;3&#039;&#039;&#039;&#039;&#039; (very high)&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Briefing Window FOV:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
Determines the FOV in the briefing Icon window. Retail default for this is 0.29375, previous versions of FSO used a value of 0.5.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (0.0 to 1.0)&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.29375&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Generic Pain Flash Factor:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
Determines the intensity of the pain red flash when the player is hit.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;1.0&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Shield Pain Flash Factor:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
Determines the intensity of a pain flash when the player&#039;s shields are hit. Color will match the current ships shield color defined in ships.tbl. A value of 0 will give retail behavior (no shield effect). Positive values will cause the effect to start at full intensity at full shields and go to next to no intensity at zero shields. Negative values will cause no effect at full shields and full effect at no shields. Values should be kept between -1.0 and 1.0 for good pilot visibility.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.0&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$BMPMAN Slot Limit:===&lt;br /&gt;
{{Table382|&lt;br /&gt;
Determines the maximum number of textures that can be loaded simultaneously. This includes every frame of an animation, unless that animation is streaming (e.g. command briefing animations, message talking heads, etc). Also includes dynamically-created textures (used internally for various functions).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Int&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Values: &#039;&#039;&#039;&#039;&#039;Greater than or equal to 3500&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;4750&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==#SOUND SETTINGS==&lt;br /&gt;
Optional. This group contains sound-related settings&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Default Sound Volume:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the default sound fx volume for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, between 0.0 and 1.0&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;1.0&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Default Music Volume:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the default music volume for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, between 0.0 and 1.0&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.5&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Default Voice Volume:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the default voice volume for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, between 0.0 and 1.0&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.7&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#FRED SETTINGS==&lt;br /&gt;
Optional. This group contains settings for FRED. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Disable Hard Coded Message Head Ani Files:===&lt;br /&gt;
{{table371|&lt;br /&gt;
If set, FRED will not fill the head ani selection in the Event Editor with the retail head ani filenames.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Enable scripting in FRED:===&lt;br /&gt;
{{table382|&lt;br /&gt;
If set, scripting will be enabled in FRED. Use with extreme caution. The effects of scripts on FRED have not been fully tested. You can check if a script is running in FRED by using ba.inMissionEditor().&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==#OTHER SETTINGS==&lt;br /&gt;
Optional. This group contains miscellaneous settings. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Fixed Turret Collisions:===&lt;br /&gt;
Makes all hits to a turret&#039;s barrels count as hits to the turret subsystem. By default, this does not happen unless the point of impact falls inside the model radius of the turret&#039;s base.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Damage Impacted Subsystem First:===&lt;br /&gt;
If set, a hit to a physical subsystem will always deal damage to that subsystem first, even if another subsystem is closer to the point of impact. By default, the closest subsystem will always receive damage first.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Default ship select effect:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This specifies which effect to use for ship select animations when no .ani can be found, or the -ship_choice_3d commandline flag is active. This will default to the FS2 effect.&lt;br /&gt;
*Possible options are &amp;quot;FS2&amp;quot;, &amp;quot;FS1&amp;quot;, and &amp;quot;off&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
===$Default weapon select effect:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This specifies which effect to use for weapon select animations when no .ani can be found, or the -weapon_choice_3d commandline flag is active. This will default to the FS2 effect.&lt;br /&gt;
*Possible options are &amp;quot;FS2&amp;quot;, &amp;quot;FS1&amp;quot;, and &amp;quot;off&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
===$Weapons inherit parent collision group:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*When set to true, Weapons fired by a ship will inherit their parents&#039; collision group setting. Default is false.}}&lt;br /&gt;
&lt;br /&gt;
===$Flight controls follow eyepoint orientation:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Specifies that if the player ship&#039;s eyepoint happens to rotate into a non-standard orientation, pitch and yaw axes should stay relative to the eyepoint orientation, not the ship. Note that this does not affect the pitch/yaw turning speed, which always remains relative to the ship. Default is false.}}&lt;br /&gt;
&lt;br /&gt;
===$Beams Use Damage Factors:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Specifies that beam weapons will use the tabled damage factors for Armour, Shields and Subsystems. Default is false (i.e. all factors are treated as 1.0)}}&lt;br /&gt;
&lt;br /&gt;
===$Default fiction viewer UI:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Specifies which fiction viewer layout to use in missions that don&#039;t specify one. Possible values are as follows:&lt;br /&gt;
**&amp;quot;FS2&amp;quot;: Standard layout. Requires (2_)fictionviewer and (2_)fictionviewer-m to be present in data\interface.&lt;br /&gt;
**&amp;quot;WCS&amp;quot;: Moves the &amp;quot;Accept&amp;quot; button to the lower-left corner of the screen. Requires (2_)fictionviewerb and (2_)fictionviewer-mb to be present in data\interface.&lt;br /&gt;
**&amp;quot;auto&amp;quot;: Selects &amp;quot;WCS&amp;quot; if the appropriate files are present; otherwise, selects &amp;quot;FS2&amp;quot;. This is the default setting.}}&lt;br /&gt;
&lt;br /&gt;
==#END==&lt;br /&gt;
Required. The last line of the table must be #END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sample Entry==&lt;br /&gt;
&lt;br /&gt;
    #CAMPAIGN SETTINGS&lt;br /&gt;
    $Default Campaign File Name: NewCampaignFile&lt;br /&gt;
    &lt;br /&gt;
    #Ignored Campaign File Names&lt;br /&gt;
    $Campaign File Name: FreeSpace2.fc2&lt;br /&gt;
    &lt;br /&gt;
    #HUD SETTINGS&lt;br /&gt;
    $Directive Wait Time: 5000&lt;br /&gt;
    &lt;br /&gt;
    #SEXP SETTINGS&lt;br /&gt;
    $Loop SEXPs Then Arguments: True&lt;br /&gt;
    &lt;br /&gt;
    #OTHER SETTINGS&lt;br /&gt;
    $Fix Turret Collisions: True&lt;br /&gt;
    &lt;br /&gt;
    #END&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Fonts.tbl&amp;diff=53596</id>
		<title>Fonts.tbl</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Fonts.tbl&amp;diff=53596"/>
		<updated>2017-12-03T17:43:13Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add documentation for changes introduced by the Unicode mode.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2016-08-02|b4db345}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;fonts.tbl&#039;&#039;&#039; is a recent addition to the SCP allowing the definition of non-standard fonts. The number of possible fonts is unlimited. The HUD gauges, show-subtitle-text sexp and the [[Fiction Viewer|fiction viewer]] can be manually set to any font in fonts.tbl. The rest of the fonts used in FSO (e.g. techroom text) are hardcoded to one of the first three fonts that are parsed. &lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-fnt.tbm&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
==General Info==&lt;br /&gt;
*Begins with #Fonts&lt;br /&gt;
*Consists of at least 3 entries&lt;br /&gt;
*Ends with #End&lt;br /&gt;
&lt;br /&gt;
Currently, there are two different types of supported fonts. The old &amp;quot;VFNT&amp;quot; type (which probably means &#039;&#039;&#039;V&#039;&#039;&#039;olition &#039;&#039;&#039;F&#039;&#039;&#039;o&#039;&#039;&#039;nt&#039;&#039;&#039;) and the new TrueType Fonts. The old font use the usual &#039;&#039;$Font:&#039;&#039; option while the new fonts use &#039;&#039;$TrueType:&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===$Font:===&lt;br /&gt;
*Lists a font file to use.&lt;br /&gt;
*This font type is not supported if the engine is in [[Game_settings.tbl#$Unicode mode:|Unicode text mode]]!&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Name:====&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the name of this font. Defaults to the specified filename if not provided.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Default Special Character Index:====&lt;br /&gt;
{{Table372|&lt;br /&gt;
*Specifies the index of the first special character (e.g., infinity symbol, &amp;quot;match speed&amp;quot; icon) in the font. Must be within the range of 0-249. Does not apply to language entries below that use [[Fonts.tbl#+Special Character Index:|+Special Character Index:]].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Integer&#039;&#039;&#039;&lt;br /&gt;
{{Note|If this parameter is used with the first font, it will override all uses of +Special Character Index: in [[strings.tbl]].}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Language:====&lt;br /&gt;
{{Table372|&lt;br /&gt;
*Specifies the name of a language.&lt;br /&gt;
*Currently used for overriding the value of [[Fonts.tbl#+Default Special Character Index:|+Default Special Character Index:]].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====+Special Character Index:=====&lt;br /&gt;
*Overrides the value of [[Fonts.tbl#+Default Special Character Index:|+Default Special Character Index:]] for this language.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Integer&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Top offset:====&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the top offset for this font. See [[Fonts.tbl|Top and Bottom offsets]] for more information.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Bottom offset:====&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the bottom offset for this font. See [[Fonts.tbl|Top and Bottom offsets]] for more information.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$TrueType:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Lists a font file to use.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Name:====&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the name of this font, defaults to &#039;&#039;&#039;&amp;lt;fontFilename&amp;gt;-&amp;lt;fontSize&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Size:====&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the size of the font, defaults to 8.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;, must be greater than 0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Top offset:====&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the top offset for this font. See [[Fonts.tbl|Top and Bottom offsets]] for more information.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Bottom offset:====&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the bottom offset for this font. See [[Fonts.tbl|Top and Bottom offsets]] for more information.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Letter spacing:====&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the letter spacing. Defaults to 0.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;, must be greater or equal to 0.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Special Character Font:====&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the VFNT file to use for the special characters. FSO uses a few special characters for a few things that are not present in standard TrueType fonts. To fix this you can specify a VFNT file from which these characters are loaded. This defaults to &#039;&#039;&#039;font01.vf&#039;&#039;&#039; which is a default font file from FS2 retail.&lt;br /&gt;
*This option not needed and not supported if the engine is in [[Game_settings.tbl#$Unicode mode:|Unicode text mode]]!&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Top and Bottom offsets==&lt;br /&gt;
The top and bottom offsets can be used to influence the line spacing for a specific font. Before rendering &#039;&#039;&#039;top offset&#039;&#039;&#039; vertical pixels are skipped. Then the text is rendered and then another &#039;&#039;&#039;bottom offset&#039;&#039;&#039; pixels are skipped.&lt;br /&gt;
&lt;br /&gt;
==Sample Entry==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Fonts&lt;br /&gt;
&lt;br /&gt;
$Font: font01.vf&lt;br /&gt;
$Font: font02.vf&lt;br /&gt;
$Font: font03.vf&lt;br /&gt;
&lt;br /&gt;
$TrueType: arial.ttf&lt;br /&gt;
 +Name: Arial&lt;br /&gt;
 +Size: 12&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Sample Entry (Fiction Viewer)==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Fiction Viewer&lt;br /&gt;
&lt;br /&gt;
$File: [text file]&lt;br /&gt;
$Font: [font file]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# &amp;quot;[http://www.hard-light.net/forums/index.php?topic=66942.msg1327152#msg1327152 Re: Feature Request: 4th font (especially for fiction viewer)]&amp;quot;, &#039;&#039;Hard Light Productions Forums&#039;&#039;, Hard Light Productions, 24-12-2009. Retrieved on January 28, 2011.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Game_settings.tbl&amp;diff=53595</id>
		<title>Game settings.tbl</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Game_settings.tbl&amp;diff=53595"/>
		<updated>2017-12-03T17:39:44Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add documentation for $Unicode mode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2015-12-03|5d8f779}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;game_settings.tbl&#039;&#039;&#039;, also known as mod.tbl, defines options that can be changed globally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-mod.tbm&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
==#GAME SETTINGS==&lt;br /&gt;
Optional. Contains settings that affect how the engine works.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Target Version:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
Specifies the minimum version of FreeSpace Open that this mod supports. If the version specified here is greater than the version of the current build, an error message is displayed.&lt;br /&gt;
}}&lt;br /&gt;
{{Table381|&lt;br /&gt;
The $Minimum version option has been renamed to $Target Version. The old name is kept with the same functionality for backwards-compatibility.&lt;br /&gt;
&lt;br /&gt;
The target version specifies what version of the FSO engine this mod was created for. It will be used by the engine to enable or disable backwards-incompatible changes by default. The default value is 2.0 which specifies that the mod targets the retail engine version.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Major:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Required. Sets the major component of the target version.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;3&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Minor:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Required. Sets the minor component of the target version.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;7&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Build:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Required. Sets the build component of the target version.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;3&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Revision:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Optional. Sets the revision component of the target version. If no revision is given then all builds of that release are supported (even nightly builds if there are any).&lt;br /&gt;
For nightly builds this is the date in YYYYMMDD format.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;20151121&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Window title:===&lt;br /&gt;
{{Table382|&lt;br /&gt;
Specifies the name of the FSO window when this mod is running. If blank or unspecified, the window will have the default title of &amp;quot;FreeSpace 2&amp;quot;.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Unicode mode:===&lt;br /&gt;
{{Table382|&lt;br /&gt;
Enabled the Unicode text mode for this mod. In Unicode mode all text is assumed to be UTF-8 encoded Unicode and certain features are disabled if they do not have full Unicode support. Most notably, if this is enabled then the engine will no longer support the old bitmap fonts that were used by Retail FreeSpace. Only the newer TrueType fonts will be supported.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==#CAMPAIGN SETTINGS==&lt;br /&gt;
Optional. This group contains various Campaign related settings and overrides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Default Campaign File Name:===&lt;br /&gt;
Defines which campaign will be selected by default for new pilots. A file extension is not needed and, if present, is removed by the code.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===#Ignored Campaign File Names===&lt;br /&gt;
Optional. Defines which campaigns, if present, will not appear in the Campaign Room. Only single-player campaigns can be ignored. &#039;&#039;File extensions are required.&#039;&#039;&lt;br /&gt;
{{Table371|As of 3.7.1, file extensions are not required and, if present, are removed by the code.}}&lt;br /&gt;
====$Campaign File Name:====&lt;br /&gt;
File name of the campaign to ignore. Multiple entries may exist.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Red-alert applies to delayed ships:===&lt;br /&gt;
Controls whether red-alert saved statistics (hitpoints, weapons, subsystem strengths) will be restored for ships that are not present at mission start.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#HUD SETTINGS==&lt;br /&gt;
Optional. This group contains various HUD behavior settings and overrides&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Directive Wait Time:===&lt;br /&gt;
*Defines how long the game will wait before displaying a directive.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Values: &#039;&#039;&#039;&#039;&#039;Greater than or equal to 0 ms&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Cutscene camera displays HUD:===&lt;br /&gt;
Show the HUD when the cutscene camera is enabled.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In earlier versions of the code, this option was controlled by $Cutscene camera disables HUD: and had a default of YES.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Full color head animations:===&lt;br /&gt;
Enables full-color head ANIs. Normal head ANIs will appear in gray.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In earlier versions of the code, this option was controlled by $Color head animations with hud colors: and had a default of YES.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#SEXP SETTINGS==&lt;br /&gt;
Optional. This group contains SEXP settings and overrides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Loop SEXPs Then Arguments:===&lt;br /&gt;
Flips how when-argument settings loop. See: [http://www.hard-light.net/forums/index.php?topic=79602.0 SEXP Argument changes via mod.tbl] &lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Use Alternate Chaining Behavior:===&lt;br /&gt;
When set, this makes the event chaining behavior act as people expected it to be in [http://scp.indiegames.us/mantis/view.php?id=82 Mantis #82].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#GRAPHICS SETTINGS==&lt;br /&gt;
Optional. This group contains settings related to graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Enable External Shaders:===&lt;br /&gt;
Enables the use of external shader files. By default, the engine will use the built-in shaders.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Default Detail Level:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
Determines which graphics detail level preset (low, medium, high, very high) acts as the default for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; (0-3)&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;3&#039;&#039;&#039;&#039;&#039; (very high)&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Briefing Window FOV:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
Determines the FOV in the briefing Icon window. Retail default for this is 0.29375, previous versions of FSO used a value of 0.5.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (0.0 to 1.0)&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.29375&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Generic Pain Flash Factor:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
Determines the intensity of the pain red flash when the player is hit.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;1.0&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Shield Pain Flash Factor:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
Determines the intensity of a pain flash when the player&#039;s shields are hit. Color will match the current ships shield color defined in ships.tbl. A value of 0 will give retail behavior (no shield effect). Positive values will cause the effect to start at full intensity at full shields and go to next to no intensity at zero shields. Negative values will cause no effect at full shields and full effect at no shields. Values should be kept between -1.0 and 1.0 for good pilot visibility.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.0&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$BMPMAN Slot Limit:===&lt;br /&gt;
{{Table382|&lt;br /&gt;
Determines the maximum number of textures that can be loaded simultaneously. This includes every frame of an animation, unless that animation is streaming (e.g. command briefing animations, message talking heads, etc). Also includes dynamically-created textures (used internally for various functions).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Int&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Values: &#039;&#039;&#039;&#039;&#039;Greater than or equal to 3500&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;4750&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==#SOUND SETTINGS==&lt;br /&gt;
Optional. This group contains sound-related settings&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Default Sound Volume:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the default sound fx volume for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, between 0.0 and 1.0&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;1.0&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Default Music Volume:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the default music volume for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, between 0.0 and 1.0&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.5&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Default Voice Volume:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the default voice volume for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, between 0.0 and 1.0&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.7&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#FRED SETTINGS==&lt;br /&gt;
Optional. This group contains settings for FRED. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Disable Hard Coded Message Head Ani Files:===&lt;br /&gt;
{{table371|&lt;br /&gt;
If set, FRED will not fill the head ani selection in the Event Editor with the retail head ani filenames.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==#OTHER SETTINGS==&lt;br /&gt;
Optional. This group contains miscellaneous settings. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Fixed Turret Collisions:===&lt;br /&gt;
Makes all hits to a turret&#039;s barrels count as hits to the turret subsystem. By default, this does not happen unless the point of impact falls inside the model radius of the turret&#039;s base.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Damage Impacted Subsystem First:===&lt;br /&gt;
If set, a hit to a physical subsystem will always deal damage to that subsystem first, even if another subsystem is closer to the point of impact. By default, the closest subsystem will always receive damage first.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Default ship select effect:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This specifies which effect to use for ship select animations when no .ani can be found, or the -ship_choice_3d commandline flag is active. This will default to the FS2 effect.&lt;br /&gt;
*Possible options are &amp;quot;FS2&amp;quot;, &amp;quot;FS1&amp;quot;, and &amp;quot;off&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
===$Default weapon select effect:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This specifies which effect to use for weapon select animations when no .ani can be found, or the -weapon_choice_3d commandline flag is active. This will default to the FS2 effect.&lt;br /&gt;
*Possible options are &amp;quot;FS2&amp;quot;, &amp;quot;FS1&amp;quot;, and &amp;quot;off&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
===$Weapons inherit parent collision group:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*When set to true, Weapons fired by a ship will inherit their parents&#039; collision group setting. Default is false.}}&lt;br /&gt;
&lt;br /&gt;
===$Flight controls follow eyepoint orientation:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Specifies that if the player ship&#039;s eyepoint happens to rotate into a non-standard orientation, pitch and yaw axes should stay relative to the eyepoint orientation, not the ship. Note that this does not affect the pitch/yaw turning speed, which always remains relative to the ship. Default is false.}}&lt;br /&gt;
&lt;br /&gt;
===$Beams Use Damage Factors:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Specifies that beam weapons will use the tabled damage factors for Armour, Shields and Subsystems. Default is false (i.e. all factors are treated as 1.0)}}&lt;br /&gt;
&lt;br /&gt;
===$Default fiction viewer UI:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Specifies which fiction viewer layout to use in missions that don&#039;t specify one. Possible values are as follows:&lt;br /&gt;
**&amp;quot;FS2&amp;quot;: Standard layout. Requires (2_)fictionviewer and (2_)fictionviewer-m to be present in data\interface.&lt;br /&gt;
**&amp;quot;WCS&amp;quot;: Moves the &amp;quot;Accept&amp;quot; button to the lower-left corner of the screen. Requires (2_)fictionviewerb and (2_)fictionviewer-mb to be present in data\interface.&lt;br /&gt;
**&amp;quot;auto&amp;quot;: Selects &amp;quot;WCS&amp;quot; if the appropriate files are present; otherwise, selects &amp;quot;FS2&amp;quot;. This is the default setting.}}&lt;br /&gt;
&lt;br /&gt;
==#END==&lt;br /&gt;
Required. The last line of the table must be #END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sample Entry==&lt;br /&gt;
&lt;br /&gt;
    #CAMPAIGN SETTINGS&lt;br /&gt;
    $Default Campaign File Name: NewCampaignFile&lt;br /&gt;
    &lt;br /&gt;
    #Ignored Campaign File Names&lt;br /&gt;
    $Campaign File Name: FreeSpace2.fc2&lt;br /&gt;
    &lt;br /&gt;
    #HUD SETTINGS&lt;br /&gt;
    $Directive Wait Time: 5000&lt;br /&gt;
    &lt;br /&gt;
    #SEXP SETTINGS&lt;br /&gt;
    $Loop SEXPs Then Arguments: True&lt;br /&gt;
    &lt;br /&gt;
    #OTHER SETTINGS&lt;br /&gt;
    $Fix Turret Collisions: True&lt;br /&gt;
    &lt;br /&gt;
    #END&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Launcher_engine_interaction&amp;diff=46263</id>
		<title>Launcher engine interaction</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Launcher_engine_interaction&amp;diff=46263"/>
		<updated>2017-11-23T11:10:28Z</updated>

		<summary type="html">&lt;p&gt;M!m: Fix -get_flags link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A launcher for the FreeSpace Open engine is responsible for letting the user configure what mod data FSO should use and also how it should use the available hardware (e.g. joysticks or sound devices). It is also important with what flags FSO is started to allow how the game behaves and looks like. In order for this to work, the launcher needs to follow certain conventions which allow FSO to interpret the data the launcher sets for the engine.&lt;br /&gt;
&lt;br /&gt;
This article describes the situation as of FSO version 3.8.0. Previous versions used different configuration mechanisms but those will not be listed here.&lt;br /&gt;
&lt;br /&gt;
=Writing data for the engine to read=&lt;br /&gt;
The engine will look for the files described below in the &amp;quot;preferences&amp;quot; path. This path is determined by using the SDL2 function &amp;lt;tt&amp;gt;SDL_GetPrefPath(&amp;quot;HardLightProductions&amp;quot;, &amp;quot;FreeSpaceOpen&amp;quot;)&amp;lt;/tt&amp;gt;. Newer engine versions have a way of getting this information without having to link against SDL2, see [[#JSON output|JSON output]] for an alternative way of determining this path.&lt;br /&gt;
&lt;br /&gt;
There are two major configuration mechanisms FSO uses for reading data which was set by the launcher:&lt;br /&gt;
&lt;br /&gt;
==data/cmdline_fso.cfg==&lt;br /&gt;
This file should contain all the command line options FSO should use. They should be on a single line and parameters which contain spaces (e.g. mods line &amp;quot;Vassago&#039;s Dirge&amp;quot;) must be enclosed in quotes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-mod &amp;quot;Vassago&#039;s Dirge,MediaVPs_2014&amp;quot; -nomotiondebris -missile_lighting -3dshockwave -post_process -soft_particles -fxaa -fb_explosions -fb_thrusters -enable_shadows -cache_bitmaps -dualscanlines -targetinfo -orbradar -rearm_timer -ballistic_gauge -3dwarp -snd_preload -nosound -nomovies -fps -window -no_unfocused_pause -benchmark_mode -fxaa_preset 6 -ambient_factor 100 -spec_exp 15 -spec_point 1.2 -spec_static 1.5 -spec_tube 1.5 -ogl_spec 20 -bloom_intensity 45&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The available flags should not be hardcoded by the launcher. Instead, it should use [[#Getting a list of supported flags and devices|-get_flags]] for determining which flags are supported by the launcher.&lt;br /&gt;
&lt;br /&gt;
==fs2_open.ini==&lt;br /&gt;
This file contains more &amp;quot;permanent&amp;quot; options and is saved in a standard ini format. The file is separated into multiple &amp;quot;sections&amp;quot; which each contain options specific to that part of the engine:&lt;br /&gt;
&lt;br /&gt;
; Default : This is the default section used by FSO if no specific section is selected.&lt;br /&gt;
:; VideocardFs2open&lt;br /&gt;
:: This value determines what display mode FSO will use. It has the following format: &amp;lt;tt&amp;gt;[API]-([width]x[height])x[bits] bit&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;[API]&amp;lt;/tt&amp;gt; must be exactly 4 characters long. The only valid option here is &amp;quot;OGL &amp;quot; for using the OpenGL API. The other options are pretty obvious. The width and height should match one of the video modes supported by the display (see [[#JSON output|JSON output]] for a way of getting this information without linking against SDL2). The &amp;lt;tt&amp;gt;bits&amp;lt;/tt&amp;gt; parameter should either be 16 or 32 but in almost all cases this should be hard-coded to 32.&lt;br /&gt;
:; OGL_AntiAliasSamples&lt;br /&gt;
:: This should be the level of anti-aliasing desired for OpenGL rendering. This should be the multiple of 2 for how many samples should be taken (e.g. a value of 3 means 8x MSAA). If set to 0 anti-aliasing will be disabled. &#039;&#039;&#039;Note:&#039;&#039;&#039; As of FSO 3.8.0 this option has no effect!&lt;br /&gt;
:; TextureFilter&lt;br /&gt;
:: Sets how textures should be filtered. Valid values are 0 for bilinear filtering and 1 for trilinear filtering.&lt;br /&gt;
:; OGL_AnisotropicFilter&lt;br /&gt;
:: Specifies the level of anisotropic texture filtering if supported by the OpenGL implementation.&lt;br /&gt;
:; CurrentJoystickGUID&lt;br /&gt;
:: Specifies the GUID of the primary joystick. The case of alphabetic characters will be normalized so it doesn&#039;t matter if this string is upper or lower case. This GUID can be determined by using SDL2 or with the [[#JSON output|JSON output]] if supported by the current build).&lt;br /&gt;
:; CurrentJoystick&lt;br /&gt;
:: Specified the index of the primary joystick. This will only be used if there are multiple joysticks with the same GUID. This is the index used to open the joystick in SDL2 or the index into the joysticks array in the [[#JSON output|JSON output]].&lt;br /&gt;
:; EnableJoystickFF&lt;br /&gt;
:: Used to determine if force feedback should be enabled if the joystick supports it. If using the [[#JSON output|JSON output]] then it&#039;s possible to determine if a joystick supports this by looking at the &#039;&#039;&#039;is_haptic&#039;&#039;&#039; field of the joystick object.&lt;br /&gt;
:; EnableHitEffect&lt;br /&gt;
:: This can be used to enable or disable a directional hit effect if Force Feedback is enabled.&lt;br /&gt;
:; Language&lt;br /&gt;
:: Sets the language of the game. Possible values are &amp;quot;English&amp;quot;, &amp;quot;German&amp;quot;, &amp;quot;French&amp;quot;, and &amp;quot;Polish&amp;quot;.&lt;br /&gt;
:; ForcePort : Used to force a specific port for multiplayer connections&lt;br /&gt;
:; ConnectionSpeed&lt;br /&gt;
:: Used for setting how fast the internet connection is. Possible values are &amp;quot;Slow&amp;quot;, &amp;quot;56K&amp;quot;, &amp;quot;ISDN&amp;quot;, &amp;quot;Cable&amp;quot;, and &amp;quot;Fast&amp;quot;.&lt;br /&gt;
:; SpeechTechroom : Enables or disables text-to-speech in the techroom. Valid values are 1 and 0. Defaults to 0.&lt;br /&gt;
:; SpeechBriefings : Enables or disables text-to-speech in the briefings. Valid values are 1 and 0. Defaults to 0.&lt;br /&gt;
:; SpeechIngame : Enables or disables text-to-speech in game. Valid values are 1 and 0. Defaults to 0.&lt;br /&gt;
:; SpeechMulti : Enables or disables text-to-speech in the multiplayer. Valid values are 1 and 0. Defaults to 0.&lt;br /&gt;
:; SpeechVolume : The volume scale of the text-to-speech sound. Should be in the range of 0 to 100.&lt;br /&gt;
:; SpeechVoice : Sets which voice to use. See [[#JSON output|JSON output]] for a cross-platform way of determining which voices are available.&lt;br /&gt;
&lt;br /&gt;
; Video : Contains options specific to the video display of FSO.&lt;br /&gt;
:; Display&lt;br /&gt;
:: Used to choose on which display FSO should be displayed on. The [[#JSON output|JSON output]] contains a list of display detected on the system and their index. Alternatively, SDL2 can be used to enumerate this information.&lt;br /&gt;
&lt;br /&gt;
; ForceFeedback : Contains options for configuring the force feedback subsystem of FSO.&lt;br /&gt;
:; Strength : A percentage scale of how strong the effect should be. 0 means completely disabled, 100 means full strength.&lt;br /&gt;
&lt;br /&gt;
; Sound : Contains options specific to how sound should be handled in FSO.&lt;br /&gt;
:; Quality : Specifies the quality of the sound output. The value should be in [1, 3] where 3 is the highest quality and 1 is the lowest.&lt;br /&gt;
:; SampleRate : Explicitly specifies the sample rate the OpenAL context should use.&lt;br /&gt;
:; EnableEFX : Enables or disables usage of OpenAL EFX.&lt;br /&gt;
:; PlaybackDevice : Sets the playback device OpenAL should use. The [[#JSON output|JSON output]] contains a list of available playback devices.&lt;br /&gt;
:; CaptureDevice : Sets the capture device OpenAL should use. The [[#JSON output|JSON output]] contains a list of available capture devices.&lt;br /&gt;
&lt;br /&gt;
=Getting a list of supported flags and devices=&lt;br /&gt;
As of 3.8.1, FSO has two ways of determining what flags are supported by the engine. The JSON output has more information and should be easier to parse but is only supported by newer builds.&lt;br /&gt;
&lt;br /&gt;
The flags can be queries by passing the &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; option to FSO (this should be done directly instead of overwriting &amp;lt;tt&amp;gt;cmdline_fso.cfg&amp;lt;/tt&amp;gt;). When doing this, the command line should also contain the &amp;lt;tt&amp;gt;-parse_cmdline_only&amp;lt;/tt&amp;gt; to make sure that FSO only reads the actual command line and not &amp;lt;tt&amp;gt;cmdline_fso.cfg&amp;lt;/tt&amp;gt;. This avoids issues when &amp;lt;tt&amp;gt;cmdline_fso.cfg&amp;lt;/tt&amp;gt; contains options not supported by the selected FSO binary. Since 3.8.1, &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; optionally accepts one string parameter for selecting how the flags data is formatted and where it is written.&lt;br /&gt;
&lt;br /&gt;
If FSO does not support the parameter for &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; then it will be ignored silently and the legacy binary format will be used. Every version before 3.8.1 will behave this way. This allows to gracefully degrade to the old legacy behavior if support for older builds is desired. Also, if the build does not support the given &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; mode then it will print the string &amp;quot;OUTPUT TYPE NOT SUPPORTED!&amp;quot; to &amp;lt;tt&amp;gt;stdout&amp;lt;/tt&amp;gt; and default to the version 1 of the JSON output. This is designed so that it is easy for a launcher to be notified if the selected format is not supported.&lt;br /&gt;
&lt;br /&gt;
==JSON output==&lt;br /&gt;
This mode for &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; was introduced in 3.8.1 and can be enabled by using &amp;quot;json_v1&amp;quot; as the mode parameter &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; (e.g. &amp;lt;tt&amp;gt;-get_flags json_v1&amp;lt;/tt&amp;gt;). In this mode FSO will output a JSON formatted data structure to stdout which will contain information about the supported flags and available devices that FSO detected. The object structure of this output is described in the following by using hierarchical lists for symbolizing if an object key is a child of another element. The root of the output will be a JSON object.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;version&amp;quot; : Contains information about the version of this executable.&lt;br /&gt;
:; &amp;quot;full&amp;quot; : The full version string as is displayed in the main menu.&lt;br /&gt;
:; &amp;quot;major&amp;quot; : The major part of the version as an integer number.&lt;br /&gt;
:; &amp;quot;minor&amp;quot; : The minor part of the version as an integer number.&lt;br /&gt;
:; &amp;quot;build&amp;quot; : The build part of the version as an integer number.&lt;br /&gt;
:; &amp;quot;has_revision&amp;quot; : A boolean to indicate if this version has a valid revision part.&lt;br /&gt;
:; &amp;quot;revision&amp;quot; : An integer indicating the revision part of the build version.&lt;br /&gt;
:; &amp;quot;revision_str&amp;quot; : A string indicating the full revision part of the build version. This may contain the Git hash of the commit in the case of nightly builds or something like &amp;quot;RC2&amp;quot; for release candidates.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;easy_flags&amp;quot; : This is an array of the available &amp;quot;Easy flags&amp;quot; configuration names. The flags array will contain two bitfields where a bit at position n (starting from the last significant bit) will reference the entry of this array which is at position n.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;flags&amp;quot; : This is an array of all the flags supported by this binary.&lt;br /&gt;
:; &amp;quot;name&amp;quot; : A string which specifies the name of the flag (e.g. &amp;lt;tt&amp;gt;-soft_particles&amp;lt;/tt&amp;gt;).&lt;br /&gt;
:; &amp;quot;description&amp;quot; : A short description of what this flag does. This should be displayed in the launcher overview.&lt;br /&gt;
:; &amp;quot;fso_only&amp;quot; : A boolean indicating whether this flag is only available in FSO builds or not.&lt;br /&gt;
:; &amp;quot;on_flags&amp;quot; : An integer which represents a bitfield for which easy flags enable this flag. If the bit n is set in this integer then selecting the easy flag at index n will enable this flag. No action should be taken for the bits that are not set in this bitfield.&lt;br /&gt;
:; &amp;quot;off_flags&amp;quot; : An integer which represents a bitfield for which easy flags disable this flag. If the bit n is set in this integer then selecting the easy flag at index n will disable this flag. No action should be taken for the bits that are not set in this bitfield.&lt;br /&gt;
:; &amp;quot;type&amp;quot; : Specifies the category of this flag. Typically all flags with the same category will be grouped together.&lt;br /&gt;
:; &amp;quot;web_url&amp;quot; : Specifies an URL where more information about this flag can be found.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;caps&amp;quot;&lt;br /&gt;
: A string array of what capabilities this build has. The following strings may be present in the array:&lt;br /&gt;
:; OpenAL : This build uses OpenAL for sound.&lt;br /&gt;
:; No D3D : This build has no support for Direct3D rendering, only OpenGL.&lt;br /&gt;
:; New Sound : This build has support for the new, enhanced sound code.&lt;br /&gt;
:; SDL : This build uses SDL on all platforms.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;voices&amp;quot; : An array of all the possible voice names detected by FSO. If a specific voice should be used then to set the &amp;lt;tt&amp;gt;SpeechVoice&amp;lt;/tt&amp;gt; key to the index of that voice in this array.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;displays&amp;quot; : Contains information about all the displays currently connected to the system.&lt;br /&gt;
:; &amp;quot;index&amp;quot; : The index in the array of this display. This should be used for the value of &amp;lt;tt&amp;gt;Video.Display&amp;lt;/tt&amp;gt;&lt;br /&gt;
:; &amp;quot;name&amp;quot; : A more or less human-readable name of this display.&lt;br /&gt;
:; &amp;quot;x&amp;quot; : The x offset of where this display is located. This is only relevant for multi-monitor systems where this value specifies the x-offset relative to the other displays.&lt;br /&gt;
:; &amp;quot;y&amp;quot; : The y offset of where this display is located. This is only relevant for multi-monitor systems where this value specifies the y-offset relative to the other displays.&lt;br /&gt;
:; &amp;quot;width&amp;quot; : The x-resolution of this display.&lt;br /&gt;
:; &amp;quot;height&amp;quot; : The y-resolution of this display.&lt;br /&gt;
:; &amp;quot;modes&amp;quot; : Possible video modes of this display.&lt;br /&gt;
::; &amp;quot;x&amp;quot;: The x-resolution of this video mode.&lt;br /&gt;
::; &amp;quot;y&amp;quot;: The y-resolution of this video mode.&lt;br /&gt;
::; &amp;quot;bits&amp;quot;: The bit depth of this video mode (this is typically 32).&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;openal&amp;quot; : Contains information about detected OpenAL properties and devices.&lt;br /&gt;
:; &amp;quot;version_major&amp;quot; : The major version of OpenAL as detected by FSO.&lt;br /&gt;
:; &amp;quot;version_minor&amp;quot; : The minor version of OpenAL as detected by FSO.&lt;br /&gt;
:; &amp;quot;default_playback&amp;quot; : The default playback device as reported by OpenAL. It is possible that this device does not appear in the playback device list.&lt;br /&gt;
:; &amp;quot;default_capture&amp;quot; : The default capture device as reported by OpenAL. It is possible that this device does not appear in the capture device list.&lt;br /&gt;
:; &amp;quot;playback_devices&amp;quot; : A string array of all the playback devices detected by OpenAL.&lt;br /&gt;
:; &amp;quot;capture_devices&amp;quot; : A string array of all the capture devices detected by OpenAL.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;joysticks&amp;quot; : An array of all the joysticks that FSO detected.&lt;br /&gt;
:; &amp;quot;name&amp;quot; : A string which specifies a human-readable name of this joystick.&lt;br /&gt;
:; &amp;quot;guid&amp;quot; : The GUID (&#039;&#039;&#039;G&#039;&#039;&#039;lobally &#039;&#039;&#039;U&#039;&#039;&#039;nique &#039;&#039;&#039;Id&#039;&#039;&#039;entifier) of this joystick. This should be used for setting &amp;lt;tt&amp;gt;CurrentJoystickGUID&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;fs2_open.ini&amp;lt;/tt&amp;gt;&lt;br /&gt;
:; &amp;quot;num_axes&amp;quot; : The number of axes detected on this joystick.&lt;br /&gt;
:; &amp;quot;num_balls&amp;quot; : The number of balls detected in this joystick.&lt;br /&gt;
:; &amp;quot;num_buttons&amp;quot; : The number of buttons detected on this joystick.&lt;br /&gt;
:; &amp;quot;num_hats&amp;quot; : The number of hats detected on this joystick.&lt;br /&gt;
:; &amp;quot;is_haptic&amp;quot; : A boolean indicating if this device supports haptic (Force Feedback) effects.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;pref_path&amp;quot; : A string indicating where the preferences path is located.&lt;br /&gt;
&lt;br /&gt;
==Binary output==&lt;br /&gt;
The binary output is basically a dump of the internal data structure used by FSO for representing the supported flags. If &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; is called without a parameter or with the parameter &amp;lt;tt&amp;gt;binary&amp;lt;/tt&amp;gt; then this output mode will be chosen. In this mode FSO will create a file called &amp;quot;&amp;lt;tt&amp;gt;flags.lcg&amp;lt;/tt&amp;gt;&amp;quot; in the working directory of the executable and write the binary representation of the flags in that file. The exact format will not be documented here but there are multiple examples of how to parse this (e.g. wxLauncher or Knossos). Please note that the binary format depends on the current architecture and is not normalized to little- or big-endian. Since FSO currently only support x86 based machines this file will always be little endian encoded.&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Launcher_engine_interaction&amp;diff=46262</id>
		<title>Launcher engine interaction</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Launcher_engine_interaction&amp;diff=46262"/>
		<updated>2017-11-23T11:09:43Z</updated>

		<summary type="html">&lt;p&gt;M!m: Fix JSON output links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A launcher for the FreeSpace Open engine is responsible for letting the user configure what mod data FSO should use and also how it should use the available hardware (e.g. joysticks or sound devices). It is also important with what flags FSO is started to allow how the game behaves and looks like. In order for this to work, the launcher needs to follow certain conventions which allow FSO to interpret the data the launcher sets for the engine.&lt;br /&gt;
&lt;br /&gt;
This article describes the situation as of FSO version 3.8.0. Previous versions used different configuration mechanisms but those will not be listed here.&lt;br /&gt;
&lt;br /&gt;
=Writing data for the engine to read=&lt;br /&gt;
The engine will look for the files described below in the &amp;quot;preferences&amp;quot; path. This path is determined by using the SDL2 function &amp;lt;tt&amp;gt;SDL_GetPrefPath(&amp;quot;HardLightProductions&amp;quot;, &amp;quot;FreeSpaceOpen&amp;quot;)&amp;lt;/tt&amp;gt;. Newer engine versions have a way of getting this information without having to link against SDL2, see [[#JSON output|JSON output]] for an alternative way of determining this path.&lt;br /&gt;
&lt;br /&gt;
There are two major configuration mechanisms FSO uses for reading data which was set by the launcher:&lt;br /&gt;
&lt;br /&gt;
==data/cmdline_fso.cfg==&lt;br /&gt;
This file should contain all the command line options FSO should use. They should be on a single line and parameters which contain spaces (e.g. mods line &amp;quot;Vassago&#039;s Dirge&amp;quot;) must be enclosed in quotes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-mod &amp;quot;Vassago&#039;s Dirge,MediaVPs_2014&amp;quot; -nomotiondebris -missile_lighting -3dshockwave -post_process -soft_particles -fxaa -fb_explosions -fb_thrusters -enable_shadows -cache_bitmaps -dualscanlines -targetinfo -orbradar -rearm_timer -ballistic_gauge -3dwarp -snd_preload -nosound -nomovies -fps -window -no_unfocused_pause -benchmark_mode -fxaa_preset 6 -ambient_factor 100 -spec_exp 15 -spec_point 1.2 -spec_static 1.5 -spec_tube 1.5 -ogl_spec 20 -bloom_intensity 45&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The available flags should not be hardcoded by the launcher. Instead, it should use [[Launcher engine interaction#Getting engine flags|-get_flags]] for determining which flags are supported by the launcher.&lt;br /&gt;
&lt;br /&gt;
==fs2_open.ini==&lt;br /&gt;
This file contains more &amp;quot;permanent&amp;quot; options and is saved in a standard ini format. The file is separated into multiple &amp;quot;sections&amp;quot; which each contain options specific to that part of the engine:&lt;br /&gt;
&lt;br /&gt;
; Default : This is the default section used by FSO if no specific section is selected.&lt;br /&gt;
:; VideocardFs2open&lt;br /&gt;
:: This value determines what display mode FSO will use. It has the following format: &amp;lt;tt&amp;gt;[API]-([width]x[height])x[bits] bit&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;[API]&amp;lt;/tt&amp;gt; must be exactly 4 characters long. The only valid option here is &amp;quot;OGL &amp;quot; for using the OpenGL API. The other options are pretty obvious. The width and height should match one of the video modes supported by the display (see [[#JSON output|JSON output]] for a way of getting this information without linking against SDL2). The &amp;lt;tt&amp;gt;bits&amp;lt;/tt&amp;gt; parameter should either be 16 or 32 but in almost all cases this should be hard-coded to 32.&lt;br /&gt;
:; OGL_AntiAliasSamples&lt;br /&gt;
:: This should be the level of anti-aliasing desired for OpenGL rendering. This should be the multiple of 2 for how many samples should be taken (e.g. a value of 3 means 8x MSAA). If set to 0 anti-aliasing will be disabled. &#039;&#039;&#039;Note:&#039;&#039;&#039; As of FSO 3.8.0 this option has no effect!&lt;br /&gt;
:; TextureFilter&lt;br /&gt;
:: Sets how textures should be filtered. Valid values are 0 for bilinear filtering and 1 for trilinear filtering.&lt;br /&gt;
:; OGL_AnisotropicFilter&lt;br /&gt;
:: Specifies the level of anisotropic texture filtering if supported by the OpenGL implementation.&lt;br /&gt;
:; CurrentJoystickGUID&lt;br /&gt;
:: Specifies the GUID of the primary joystick. The case of alphabetic characters will be normalized so it doesn&#039;t matter if this string is upper or lower case. This GUID can be determined by using SDL2 or with the [[#JSON output|JSON output]] if supported by the current build).&lt;br /&gt;
:; CurrentJoystick&lt;br /&gt;
:: Specified the index of the primary joystick. This will only be used if there are multiple joysticks with the same GUID. This is the index used to open the joystick in SDL2 or the index into the joysticks array in the [[#JSON output|JSON output]].&lt;br /&gt;
:; EnableJoystickFF&lt;br /&gt;
:: Used to determine if force feedback should be enabled if the joystick supports it. If using the [[#JSON output|JSON output]] then it&#039;s possible to determine if a joystick supports this by looking at the &#039;&#039;&#039;is_haptic&#039;&#039;&#039; field of the joystick object.&lt;br /&gt;
:; EnableHitEffect&lt;br /&gt;
:: This can be used to enable or disable a directional hit effect if Force Feedback is enabled.&lt;br /&gt;
:; Language&lt;br /&gt;
:: Sets the language of the game. Possible values are &amp;quot;English&amp;quot;, &amp;quot;German&amp;quot;, &amp;quot;French&amp;quot;, and &amp;quot;Polish&amp;quot;.&lt;br /&gt;
:; ForcePort : Used to force a specific port for multiplayer connections&lt;br /&gt;
:; ConnectionSpeed&lt;br /&gt;
:: Used for setting how fast the internet connection is. Possible values are &amp;quot;Slow&amp;quot;, &amp;quot;56K&amp;quot;, &amp;quot;ISDN&amp;quot;, &amp;quot;Cable&amp;quot;, and &amp;quot;Fast&amp;quot;.&lt;br /&gt;
:; SpeechTechroom : Enables or disables text-to-speech in the techroom. Valid values are 1 and 0. Defaults to 0.&lt;br /&gt;
:; SpeechBriefings : Enables or disables text-to-speech in the briefings. Valid values are 1 and 0. Defaults to 0.&lt;br /&gt;
:; SpeechIngame : Enables or disables text-to-speech in game. Valid values are 1 and 0. Defaults to 0.&lt;br /&gt;
:; SpeechMulti : Enables or disables text-to-speech in the multiplayer. Valid values are 1 and 0. Defaults to 0.&lt;br /&gt;
:; SpeechVolume : The volume scale of the text-to-speech sound. Should be in the range of 0 to 100.&lt;br /&gt;
:; SpeechVoice : Sets which voice to use. See [[#JSON output|JSON output]] for a cross-platform way of determining which voices are available.&lt;br /&gt;
&lt;br /&gt;
; Video : Contains options specific to the video display of FSO.&lt;br /&gt;
:; Display&lt;br /&gt;
:: Used to choose on which display FSO should be displayed on. The [[#JSON output|JSON output]] contains a list of display detected on the system and their index. Alternatively, SDL2 can be used to enumerate this information.&lt;br /&gt;
&lt;br /&gt;
; ForceFeedback : Contains options for configuring the force feedback subsystem of FSO.&lt;br /&gt;
:; Strength : A percentage scale of how strong the effect should be. 0 means completely disabled, 100 means full strength.&lt;br /&gt;
&lt;br /&gt;
; Sound : Contains options specific to how sound should be handled in FSO.&lt;br /&gt;
:; Quality : Specifies the quality of the sound output. The value should be in [1, 3] where 3 is the highest quality and 1 is the lowest.&lt;br /&gt;
:; SampleRate : Explicitly specifies the sample rate the OpenAL context should use.&lt;br /&gt;
:; EnableEFX : Enables or disables usage of OpenAL EFX.&lt;br /&gt;
:; PlaybackDevice : Sets the playback device OpenAL should use. The [[#JSON output|JSON output]] contains a list of available playback devices.&lt;br /&gt;
:; CaptureDevice : Sets the capture device OpenAL should use. The [[#JSON output|JSON output]] contains a list of available capture devices.&lt;br /&gt;
&lt;br /&gt;
=Getting a list of supported flags and devices=&lt;br /&gt;
As of 3.8.1, FSO has two ways of determining what flags are supported by the engine. The JSON output has more information and should be easier to parse but is only supported by newer builds.&lt;br /&gt;
&lt;br /&gt;
The flags can be queries by passing the &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; option to FSO (this should be done directly instead of overwriting &amp;lt;tt&amp;gt;cmdline_fso.cfg&amp;lt;/tt&amp;gt;). When doing this, the command line should also contain the &amp;lt;tt&amp;gt;-parse_cmdline_only&amp;lt;/tt&amp;gt; to make sure that FSO only reads the actual command line and not &amp;lt;tt&amp;gt;cmdline_fso.cfg&amp;lt;/tt&amp;gt;. This avoids issues when &amp;lt;tt&amp;gt;cmdline_fso.cfg&amp;lt;/tt&amp;gt; contains options not supported by the selected FSO binary. Since 3.8.1, &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; optionally accepts one string parameter for selecting how the flags data is formatted and where it is written.&lt;br /&gt;
&lt;br /&gt;
If FSO does not support the parameter for &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; then it will be ignored silently and the legacy binary format will be used. Every version before 3.8.1 will behave this way. This allows to gracefully degrade to the old legacy behavior if support for older builds is desired. Also, if the build does not support the given &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; mode then it will print the string &amp;quot;OUTPUT TYPE NOT SUPPORTED!&amp;quot; to &amp;lt;tt&amp;gt;stdout&amp;lt;/tt&amp;gt; and default to the version 1 of the JSON output. This is designed so that it is easy for a launcher to be notified if the selected format is not supported.&lt;br /&gt;
&lt;br /&gt;
==JSON output==&lt;br /&gt;
This mode for &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; was introduced in 3.8.1 and can be enabled by using &amp;quot;json_v1&amp;quot; as the mode parameter &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; (e.g. &amp;lt;tt&amp;gt;-get_flags json_v1&amp;lt;/tt&amp;gt;). In this mode FSO will output a JSON formatted data structure to stdout which will contain information about the supported flags and available devices that FSO detected. The object structure of this output is described in the following by using hierarchical lists for symbolizing if an object key is a child of another element. The root of the output will be a JSON object.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;version&amp;quot; : Contains information about the version of this executable.&lt;br /&gt;
:; &amp;quot;full&amp;quot; : The full version string as is displayed in the main menu.&lt;br /&gt;
:; &amp;quot;major&amp;quot; : The major part of the version as an integer number.&lt;br /&gt;
:; &amp;quot;minor&amp;quot; : The minor part of the version as an integer number.&lt;br /&gt;
:; &amp;quot;build&amp;quot; : The build part of the version as an integer number.&lt;br /&gt;
:; &amp;quot;has_revision&amp;quot; : A boolean to indicate if this version has a valid revision part.&lt;br /&gt;
:; &amp;quot;revision&amp;quot; : An integer indicating the revision part of the build version.&lt;br /&gt;
:; &amp;quot;revision_str&amp;quot; : A string indicating the full revision part of the build version. This may contain the Git hash of the commit in the case of nightly builds or something like &amp;quot;RC2&amp;quot; for release candidates.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;easy_flags&amp;quot; : This is an array of the available &amp;quot;Easy flags&amp;quot; configuration names. The flags array will contain two bitfields where a bit at position n (starting from the last significant bit) will reference the entry of this array which is at position n.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;flags&amp;quot; : This is an array of all the flags supported by this binary.&lt;br /&gt;
:; &amp;quot;name&amp;quot; : A string which specifies the name of the flag (e.g. &amp;lt;tt&amp;gt;-soft_particles&amp;lt;/tt&amp;gt;).&lt;br /&gt;
:; &amp;quot;description&amp;quot; : A short description of what this flag does. This should be displayed in the launcher overview.&lt;br /&gt;
:; &amp;quot;fso_only&amp;quot; : A boolean indicating whether this flag is only available in FSO builds or not.&lt;br /&gt;
:; &amp;quot;on_flags&amp;quot; : An integer which represents a bitfield for which easy flags enable this flag. If the bit n is set in this integer then selecting the easy flag at index n will enable this flag. No action should be taken for the bits that are not set in this bitfield.&lt;br /&gt;
:; &amp;quot;off_flags&amp;quot; : An integer which represents a bitfield for which easy flags disable this flag. If the bit n is set in this integer then selecting the easy flag at index n will disable this flag. No action should be taken for the bits that are not set in this bitfield.&lt;br /&gt;
:; &amp;quot;type&amp;quot; : Specifies the category of this flag. Typically all flags with the same category will be grouped together.&lt;br /&gt;
:; &amp;quot;web_url&amp;quot; : Specifies an URL where more information about this flag can be found.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;caps&amp;quot;&lt;br /&gt;
: A string array of what capabilities this build has. The following strings may be present in the array:&lt;br /&gt;
:; OpenAL : This build uses OpenAL for sound.&lt;br /&gt;
:; No D3D : This build has no support for Direct3D rendering, only OpenGL.&lt;br /&gt;
:; New Sound : This build has support for the new, enhanced sound code.&lt;br /&gt;
:; SDL : This build uses SDL on all platforms.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;voices&amp;quot; : An array of all the possible voice names detected by FSO. If a specific voice should be used then to set the &amp;lt;tt&amp;gt;SpeechVoice&amp;lt;/tt&amp;gt; key to the index of that voice in this array.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;displays&amp;quot; : Contains information about all the displays currently connected to the system.&lt;br /&gt;
:; &amp;quot;index&amp;quot; : The index in the array of this display. This should be used for the value of &amp;lt;tt&amp;gt;Video.Display&amp;lt;/tt&amp;gt;&lt;br /&gt;
:; &amp;quot;name&amp;quot; : A more or less human-readable name of this display.&lt;br /&gt;
:; &amp;quot;x&amp;quot; : The x offset of where this display is located. This is only relevant for multi-monitor systems where this value specifies the x-offset relative to the other displays.&lt;br /&gt;
:; &amp;quot;y&amp;quot; : The y offset of where this display is located. This is only relevant for multi-monitor systems where this value specifies the y-offset relative to the other displays.&lt;br /&gt;
:; &amp;quot;width&amp;quot; : The x-resolution of this display.&lt;br /&gt;
:; &amp;quot;height&amp;quot; : The y-resolution of this display.&lt;br /&gt;
:; &amp;quot;modes&amp;quot; : Possible video modes of this display.&lt;br /&gt;
::; &amp;quot;x&amp;quot;: The x-resolution of this video mode.&lt;br /&gt;
::; &amp;quot;y&amp;quot;: The y-resolution of this video mode.&lt;br /&gt;
::; &amp;quot;bits&amp;quot;: The bit depth of this video mode (this is typically 32).&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;openal&amp;quot; : Contains information about detected OpenAL properties and devices.&lt;br /&gt;
:; &amp;quot;version_major&amp;quot; : The major version of OpenAL as detected by FSO.&lt;br /&gt;
:; &amp;quot;version_minor&amp;quot; : The minor version of OpenAL as detected by FSO.&lt;br /&gt;
:; &amp;quot;default_playback&amp;quot; : The default playback device as reported by OpenAL. It is possible that this device does not appear in the playback device list.&lt;br /&gt;
:; &amp;quot;default_capture&amp;quot; : The default capture device as reported by OpenAL. It is possible that this device does not appear in the capture device list.&lt;br /&gt;
:; &amp;quot;playback_devices&amp;quot; : A string array of all the playback devices detected by OpenAL.&lt;br /&gt;
:; &amp;quot;capture_devices&amp;quot; : A string array of all the capture devices detected by OpenAL.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;joysticks&amp;quot; : An array of all the joysticks that FSO detected.&lt;br /&gt;
:; &amp;quot;name&amp;quot; : A string which specifies a human-readable name of this joystick.&lt;br /&gt;
:; &amp;quot;guid&amp;quot; : The GUID (&#039;&#039;&#039;G&#039;&#039;&#039;lobally &#039;&#039;&#039;U&#039;&#039;&#039;nique &#039;&#039;&#039;Id&#039;&#039;&#039;entifier) of this joystick. This should be used for setting &amp;lt;tt&amp;gt;CurrentJoystickGUID&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;fs2_open.ini&amp;lt;/tt&amp;gt;&lt;br /&gt;
:; &amp;quot;num_axes&amp;quot; : The number of axes detected on this joystick.&lt;br /&gt;
:; &amp;quot;num_balls&amp;quot; : The number of balls detected in this joystick.&lt;br /&gt;
:; &amp;quot;num_buttons&amp;quot; : The number of buttons detected on this joystick.&lt;br /&gt;
:; &amp;quot;num_hats&amp;quot; : The number of hats detected on this joystick.&lt;br /&gt;
:; &amp;quot;is_haptic&amp;quot; : A boolean indicating if this device supports haptic (Force Feedback) effects.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;pref_path&amp;quot; : A string indicating where the preferences path is located.&lt;br /&gt;
&lt;br /&gt;
==Binary output==&lt;br /&gt;
The binary output is basically a dump of the internal data structure used by FSO for representing the supported flags. If &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; is called without a parameter or with the parameter &amp;lt;tt&amp;gt;binary&amp;lt;/tt&amp;gt; then this output mode will be chosen. In this mode FSO will create a file called &amp;quot;&amp;lt;tt&amp;gt;flags.lcg&amp;lt;/tt&amp;gt;&amp;quot; in the working directory of the executable and write the binary representation of the flags in that file. The exact format will not be documented here but there are multiple examples of how to parse this (e.g. wxLauncher or Knossos). Please note that the binary format depends on the current architecture and is not normalized to little- or big-endian. Since FSO currently only support x86 based machines this file will always be little endian encoded.&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Launcher_engine_interaction&amp;diff=46261</id>
		<title>Launcher engine interaction</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Launcher_engine_interaction&amp;diff=46261"/>
		<updated>2017-11-23T11:06:45Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add page for launcher &amp;lt;-&amp;gt; engine interaction including documentation for the new JSON flag format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A launcher for the FreeSpace Open engine is responsible for letting the user configure what mod data FSO should use and also how it should use the available hardware (e.g. joysticks or sound devices). It is also important with what flags FSO is started to allow how the game behaves and looks like. In order for this to work, the launcher needs to follow certain conventions which allow FSO to interpret the data the launcher sets for the engine.&lt;br /&gt;
&lt;br /&gt;
This article describes the situation as of FSO version 3.8.0. Previous versions used different configuration mechanisms but those will not be listed here.&lt;br /&gt;
&lt;br /&gt;
=Writing data for the engine to read=&lt;br /&gt;
The engine will look for the files described below in the &amp;quot;preferences&amp;quot; path. This path is determined by using the SDL2 function &amp;lt;tt&amp;gt;SDL_GetPrefPath(&amp;quot;HardLightProductions&amp;quot;, &amp;quot;FreeSpaceOpen&amp;quot;)&amp;lt;/tt&amp;gt;. Newer engine versions have a way of getting this information without having to link against SDL2, see [[Launcher engine interaction#JSON output|JSON output]] for an alternative way of determining this path.&lt;br /&gt;
&lt;br /&gt;
There are two major configuration mechanisms FSO uses for reading data which was set by the launcher:&lt;br /&gt;
&lt;br /&gt;
==data/cmdline_fso.cfg==&lt;br /&gt;
This file should contain all the command line options FSO should use. They should be on a single line and parameters which contain spaces (e.g. mods line &amp;quot;Vassago&#039;s Dirge&amp;quot;) must be enclosed in quotes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-mod &amp;quot;Vassago&#039;s Dirge,MediaVPs_2014&amp;quot; -nomotiondebris -missile_lighting -3dshockwave -post_process -soft_particles -fxaa -fb_explosions -fb_thrusters -enable_shadows -cache_bitmaps -dualscanlines -targetinfo -orbradar -rearm_timer -ballistic_gauge -3dwarp -snd_preload -nosound -nomovies -fps -window -no_unfocused_pause -benchmark_mode -fxaa_preset 6 -ambient_factor 100 -spec_exp 15 -spec_point 1.2 -spec_static 1.5 -spec_tube 1.5 -ogl_spec 20 -bloom_intensity 45&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The available flags should not be hardcoded by the launcher. Instead, it should use [[Launcher engine interaction#Getting engine flags|-get_flags]] for determining which flags are supported by the launcher.&lt;br /&gt;
&lt;br /&gt;
==fs2_open.ini==&lt;br /&gt;
This file contains more &amp;quot;permanent&amp;quot; options and is saved in a standard ini format. The file is separated into multiple &amp;quot;sections&amp;quot; which each contain options specific to that part of the engine:&lt;br /&gt;
&lt;br /&gt;
; Default : This is the default section used by FSO if no specific section is selected.&lt;br /&gt;
:; VideocardFs2open&lt;br /&gt;
:: This value determines what display mode FSO will use. It has the following format: &amp;lt;tt&amp;gt;[API]-([width]x[height])x[bits] bit&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;[API]&amp;lt;/tt&amp;gt; must be exactly 4 characters long. The only valid option here is &amp;quot;OGL &amp;quot; for using the OpenGL API. The other options are pretty obvious. The width and height should match one of the video modes supported by the display (see [[Launcher engine interaction#JSON output|JSON output]] for a way of getting this information without linking against SDL2). The &amp;lt;tt&amp;gt;bits&amp;lt;/tt&amp;gt; parameter should either be 16 or 32 but in almost all cases this should be hard-coded to 32.&lt;br /&gt;
:; OGL_AntiAliasSamples&lt;br /&gt;
:: This should be the level of anti-aliasing desired for OpenGL rendering. This should be the multiple of 2 for how many samples should be taken (e.g. a value of 3 means 8x MSAA). If set to 0 anti-aliasing will be disabled. &#039;&#039;&#039;Note:&#039;&#039;&#039; As of FSO 3.8.0 this option has no effect!&lt;br /&gt;
:; TextureFilter&lt;br /&gt;
:: Sets how textures should be filtered. Valid values are 0 for bilinear filtering and 1 for trilinear filtering.&lt;br /&gt;
:; OGL_AnisotropicFilter&lt;br /&gt;
:: Specifies the level of anisotropic texture filtering if supported by the OpenGL implementation.&lt;br /&gt;
:; CurrentJoystickGUID&lt;br /&gt;
:: Specifies the GUID of the primary joystick. The case of alphabetic characters will be normalized so it doesn&#039;t matter if this string is upper or lower case. This GUID can be determined by using SDL2 or with the [[Launcher engine interaction#JSON output|JSON output]] if supported by the current build).&lt;br /&gt;
:; CurrentJoystick&lt;br /&gt;
:: Specified the index of the primary joystick. This will only be used if there are multiple joysticks with the same GUID. This is the index used to open the joystick in SDL2 or the index into the joysticks array in the [[Launcher engine interaction#JSON output|JSON output]].&lt;br /&gt;
:; EnableJoystickFF&lt;br /&gt;
:: Used to determine if force feedback should be enabled if the joystick supports it. If using the [[Launcher engine interaction#JSON output|JSON output]] then it&#039;s possible to determine if a joystick supports this by looking at the &#039;&#039;&#039;is_haptic&#039;&#039;&#039; field of the joystick object.&lt;br /&gt;
:; EnableHitEffect&lt;br /&gt;
:: This can be used to enable or disable a directional hit effect if Force Feedback is enabled.&lt;br /&gt;
:; Language&lt;br /&gt;
:: Sets the language of the game. Possible values are &amp;quot;English&amp;quot;, &amp;quot;German&amp;quot;, &amp;quot;French&amp;quot;, and &amp;quot;Polish&amp;quot;.&lt;br /&gt;
:; ForcePort : Used to force a specific port for multiplayer connections&lt;br /&gt;
:; ConnectionSpeed&lt;br /&gt;
:: Used for setting how fast the internet connection is. Possible values are &amp;quot;Slow&amp;quot;, &amp;quot;56K&amp;quot;, &amp;quot;ISDN&amp;quot;, &amp;quot;Cable&amp;quot;, and &amp;quot;Fast&amp;quot;.&lt;br /&gt;
:; SpeechTechroom : Enables or disables text-to-speech in the techroom. Valid values are 1 and 0. Defaults to 0.&lt;br /&gt;
:; SpeechBriefings : Enables or disables text-to-speech in the briefings. Valid values are 1 and 0. Defaults to 0.&lt;br /&gt;
:; SpeechIngame : Enables or disables text-to-speech in game. Valid values are 1 and 0. Defaults to 0.&lt;br /&gt;
:; SpeechMulti : Enables or disables text-to-speech in the multiplayer. Valid values are 1 and 0. Defaults to 0.&lt;br /&gt;
:; SpeechVolume : The volume scale of the text-to-speech sound. Should be in the range of 0 to 100.&lt;br /&gt;
:; SpeechVoice : Sets which voice to use. See [[Launcher engine interaction#JSON output|JSON output]] for a cross-platform way of determining which voices are available.&lt;br /&gt;
&lt;br /&gt;
; Video : Contains options specific to the video display of FSO.&lt;br /&gt;
:; Display&lt;br /&gt;
:: Used to choose on which display FSO should be displayed on. The [[Launcher engine interaction#JSON output|JSON output]] contains a list of display detected on the system and their index. Alternatively, SDL2 can be used to enumerate this information.&lt;br /&gt;
&lt;br /&gt;
; ForceFeedback : Contains options for configuring the force feedback subsystem of FSO.&lt;br /&gt;
:; Strength : A percentage scale of how strong the effect should be. 0 means completely disabled, 100 means full strength.&lt;br /&gt;
&lt;br /&gt;
; Sound : Contains options specific to how sound should be handled in FSO.&lt;br /&gt;
:; Quality : Specifies the quality of the sound output. The value should be in [1, 3] where 3 is the highest quality and 1 is the lowest.&lt;br /&gt;
:; SampleRate : Explicitly specifies the sample rate the OpenAL context should use.&lt;br /&gt;
:; EnableEFX : Enables or disables usage of OpenAL EFX.&lt;br /&gt;
:; PlaybackDevice : Sets the playback device OpenAL should use. The [[Launcher engine interaction#JSON output|JSON output]] contains a list of available playback devices.&lt;br /&gt;
:; CaptureDevice : Sets the capture device OpenAL should use. The [[Launcher engine interaction#JSON output|JSON output]] contains a list of available capture devices.&lt;br /&gt;
&lt;br /&gt;
=Getting a list of supported flags and devices=&lt;br /&gt;
As of 3.8.1, FSO has two ways of determining what flags are supported by the engine. The JSON output has more information and should be easier to parse but is only supported by newer builds.&lt;br /&gt;
&lt;br /&gt;
The flags can be queries by passing the &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; option to FSO (this should be done directly instead of overwriting &amp;lt;tt&amp;gt;cmdline_fso.cfg&amp;lt;/tt&amp;gt;). When doing this, the command line should also contain the &amp;lt;tt&amp;gt;-parse_cmdline_only&amp;lt;/tt&amp;gt; to make sure that FSO only reads the actual command line and not &amp;lt;tt&amp;gt;cmdline_fso.cfg&amp;lt;/tt&amp;gt;. This avoids issues when &amp;lt;tt&amp;gt;cmdline_fso.cfg&amp;lt;/tt&amp;gt; contains options not supported by the selected FSO binary. Since 3.8.1, &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; optionally accepts one string parameter for selecting how the flags data is formatted and where it is written.&lt;br /&gt;
&lt;br /&gt;
If FSO does not support the parameter for &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; then it will be ignored silently and the legacy binary format will be used. Every version before 3.8.1 will behave this way. This allows to gracefully degrade to the old legacy behavior if support for older builds is desired. Also, if the build does not support the given &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; mode then it will print the string &amp;quot;OUTPUT TYPE NOT SUPPORTED!&amp;quot; to &amp;lt;tt&amp;gt;stdout&amp;lt;/tt&amp;gt; and default to the version 1 of the JSON output. This is designed so that it is easy for a launcher to be notified if the selected format is not supported.&lt;br /&gt;
&lt;br /&gt;
==JSON output==&lt;br /&gt;
This mode for &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; was introduced in 3.8.1 and can be enabled by using &amp;quot;json_v1&amp;quot; as the mode parameter &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; (e.g. &amp;lt;tt&amp;gt;-get_flags json_v1&amp;lt;/tt&amp;gt;). In this mode FSO will output a JSON formatted data structure to stdout which will contain information about the supported flags and available devices that FSO detected. The object structure of this output is described in the following by using hierarchical lists for symbolizing if an object key is a child of another element. The root of the output will be a JSON object.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;version&amp;quot; : Contains information about the version of this executable.&lt;br /&gt;
:; &amp;quot;full&amp;quot; : The full version string as is displayed in the main menu.&lt;br /&gt;
:; &amp;quot;major&amp;quot; : The major part of the version as an integer number.&lt;br /&gt;
:; &amp;quot;minor&amp;quot; : The minor part of the version as an integer number.&lt;br /&gt;
:; &amp;quot;build&amp;quot; : The build part of the version as an integer number.&lt;br /&gt;
:; &amp;quot;has_revision&amp;quot; : A boolean to indicate if this version has a valid revision part.&lt;br /&gt;
:; &amp;quot;revision&amp;quot; : An integer indicating the revision part of the build version.&lt;br /&gt;
:; &amp;quot;revision_str&amp;quot; : A string indicating the full revision part of the build version. This may contain the Git hash of the commit in the case of nightly builds or something like &amp;quot;RC2&amp;quot; for release candidates.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;easy_flags&amp;quot; : This is an array of the available &amp;quot;Easy flags&amp;quot; configuration names. The flags array will contain two bitfields where a bit at position n (starting from the last significant bit) will reference the entry of this array which is at position n.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;flags&amp;quot; : This is an array of all the flags supported by this binary.&lt;br /&gt;
:; &amp;quot;name&amp;quot; : A string which specifies the name of the flag (e.g. &amp;lt;tt&amp;gt;-soft_particles&amp;lt;/tt&amp;gt;).&lt;br /&gt;
:; &amp;quot;description&amp;quot; : A short description of what this flag does. This should be displayed in the launcher overview.&lt;br /&gt;
:; &amp;quot;fso_only&amp;quot; : A boolean indicating whether this flag is only available in FSO builds or not.&lt;br /&gt;
:; &amp;quot;on_flags&amp;quot; : An integer which represents a bitfield for which easy flags enable this flag. If the bit n is set in this integer then selecting the easy flag at index n will enable this flag. No action should be taken for the bits that are not set in this bitfield.&lt;br /&gt;
:; &amp;quot;off_flags&amp;quot; : An integer which represents a bitfield for which easy flags disable this flag. If the bit n is set in this integer then selecting the easy flag at index n will disable this flag. No action should be taken for the bits that are not set in this bitfield.&lt;br /&gt;
:; &amp;quot;type&amp;quot; : Specifies the category of this flag. Typically all flags with the same category will be grouped together.&lt;br /&gt;
:; &amp;quot;web_url&amp;quot; : Specifies an URL where more information about this flag can be found.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;caps&amp;quot;&lt;br /&gt;
: A string array of what capabilities this build has. The following strings may be present in the array:&lt;br /&gt;
:; OpenAL : This build uses OpenAL for sound.&lt;br /&gt;
:; No D3D : This build has no support for Direct3D rendering, only OpenGL.&lt;br /&gt;
:; New Sound : This build has support for the new, enhanced sound code.&lt;br /&gt;
:; SDL : This build uses SDL on all platforms.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;voices&amp;quot; : An array of all the possible voice names detected by FSO. If a specific voice should be used then to set the &amp;lt;tt&amp;gt;SpeechVoice&amp;lt;/tt&amp;gt; key to the index of that voice in this array.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;displays&amp;quot; : Contains information about all the displays currently connected to the system.&lt;br /&gt;
:; &amp;quot;index&amp;quot; : The index in the array of this display. This should be used for the value of &amp;lt;tt&amp;gt;Video.Display&amp;lt;/tt&amp;gt;&lt;br /&gt;
:; &amp;quot;name&amp;quot; : A more or less human-readable name of this display.&lt;br /&gt;
:; &amp;quot;x&amp;quot; : The x offset of where this display is located. This is only relevant for multi-monitor systems where this value specifies the x-offset relative to the other displays.&lt;br /&gt;
:; &amp;quot;y&amp;quot; : The y offset of where this display is located. This is only relevant for multi-monitor systems where this value specifies the y-offset relative to the other displays.&lt;br /&gt;
:; &amp;quot;width&amp;quot; : The x-resolution of this display.&lt;br /&gt;
:; &amp;quot;height&amp;quot; : The y-resolution of this display.&lt;br /&gt;
:; &amp;quot;modes&amp;quot; : Possible video modes of this display.&lt;br /&gt;
::; &amp;quot;x&amp;quot;: The x-resolution of this video mode.&lt;br /&gt;
::; &amp;quot;y&amp;quot;: The y-resolution of this video mode.&lt;br /&gt;
::; &amp;quot;bits&amp;quot;: The bit depth of this video mode (this is typically 32).&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;openal&amp;quot; : Contains information about detected OpenAL properties and devices.&lt;br /&gt;
:; &amp;quot;version_major&amp;quot; : The major version of OpenAL as detected by FSO.&lt;br /&gt;
:; &amp;quot;version_minor&amp;quot; : The minor version of OpenAL as detected by FSO.&lt;br /&gt;
:; &amp;quot;default_playback&amp;quot; : The default playback device as reported by OpenAL. It is possible that this device does not appear in the playback device list.&lt;br /&gt;
:; &amp;quot;default_capture&amp;quot; : The default capture device as reported by OpenAL. It is possible that this device does not appear in the capture device list.&lt;br /&gt;
:; &amp;quot;playback_devices&amp;quot; : A string array of all the playback devices detected by OpenAL.&lt;br /&gt;
:; &amp;quot;capture_devices&amp;quot; : A string array of all the capture devices detected by OpenAL.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;joysticks&amp;quot; : An array of all the joysticks that FSO detected.&lt;br /&gt;
:; &amp;quot;name&amp;quot; : A string which specifies a human-readable name of this joystick.&lt;br /&gt;
:; &amp;quot;guid&amp;quot; : The GUID (&#039;&#039;&#039;G&#039;&#039;&#039;lobally &#039;&#039;&#039;U&#039;&#039;&#039;nique &#039;&#039;&#039;Id&#039;&#039;&#039;entifier) of this joystick. This should be used for setting &amp;lt;tt&amp;gt;CurrentJoystickGUID&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;fs2_open.ini&amp;lt;/tt&amp;gt;&lt;br /&gt;
:; &amp;quot;num_axes&amp;quot; : The number of axes detected on this joystick.&lt;br /&gt;
:; &amp;quot;num_balls&amp;quot; : The number of balls detected in this joystick.&lt;br /&gt;
:; &amp;quot;num_buttons&amp;quot; : The number of buttons detected on this joystick.&lt;br /&gt;
:; &amp;quot;num_hats&amp;quot; : The number of hats detected on this joystick.&lt;br /&gt;
:; &amp;quot;is_haptic&amp;quot; : A boolean indicating if this device supports haptic (Force Feedback) effects.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;pref_path&amp;quot; : A string indicating where the preferences path is located.&lt;br /&gt;
&lt;br /&gt;
==Binary output==&lt;br /&gt;
The binary output is basically a dump of the internal data structure used by FSO for representing the supported flags. If &amp;lt;tt&amp;gt;-get_flags&amp;lt;/tt&amp;gt; is called without a parameter or with the parameter &amp;lt;tt&amp;gt;binary&amp;lt;/tt&amp;gt; then this output mode will be chosen. In this mode FSO will create a file called &amp;quot;&amp;lt;tt&amp;gt;flags.lcg&amp;lt;/tt&amp;gt;&amp;quot; in the working directory of the executable and write the binary representation of the flags in that file. The exact format will not be documented here but there are multiple examples of how to parse this (e.g. wxLauncher or Knossos). Please note that the binary format depends on the current architecture and is not normalized to little- or big-endian. Since FSO currently only support x86 based machines this file will always be little endian encoded.&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Sounds.tbl&amp;diff=46238</id>
		<title>Sounds.tbl</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Sounds.tbl&amp;diff=46238"/>
		<updated>2017-11-06T13:12:35Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add documentation of sound set feature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TableVersion| 344502c (Git commit)}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;sounds.tbl&#039;&#039;&#039; is a file for defining the various sounds played ingame.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-snd.tbm&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
==Format==&lt;br /&gt;
*Table file consists of several sections&lt;br /&gt;
*First section defines the sound for the actual game play. It begins at &#039;&#039;&#039;#Game Sounds Start&#039;&#039;&#039; and ends at&#039;&#039;&#039;#Game Sounds End&#039;&#039;&#039;&lt;br /&gt;
*Second section defines the interface sounds. It starts at &#039;&#039;&#039;#Interface Sounds Start&#039;&#039;&#039; and ends at &#039;&#039;&#039;#Interface Sounds End&#039;&#039;&#039;&lt;br /&gt;
*Third section defines the flyby sounds for different species. It begins at &#039;&#039;&#039;#Flyby Sounds Start&#039;&#039;&#039; and ends at &#039;&#039;&#039;#Flyby Sounds End&#039;&#039;&#039;&lt;br /&gt;
*This table has three possible syntaxes. The &amp;quot;Sound set&amp;quot; syntax allows to use multiple sounds. The &amp;quot;SCP Syntax&amp;quot; was introduced as a general improvement over the retail Syntax and is very similar to the sound set syntax.&lt;br /&gt;
**The Sound set syntax allows to specify multiple sound files for one sound entry and also has a wider variety of options for specifying how the sound should be played. This syntax is based on the SCP syntax and it should be easy to adapt sound entries that use the SCP syntax to the new sound set syntax. This is only required if the new features of the sound set changes are to be used. Otherwise the SCP syntax can be used.&lt;br /&gt;
**The SCP Syntax is an improvement of the retail syntax whis is easier to read, and likely preferred for modular tables and extendability.&lt;br /&gt;
**The Retail Syntax is the syntax used by the retail tables which was kept in place to keep retail compatibility&lt;br /&gt;
*Most of the sounds are hardcoded in the engine (that is, the engine expects sound 33 to be the missile rearm sound, as an example). Modders should follow the retail table layout, and not assign sound numbers smaller than 250 to their custom sounds. This avoids index collisions.&lt;br /&gt;
&lt;br /&gt;
==Sound set syntax==&lt;br /&gt;
{{Note|Many retail sound names are hardcoded to a specific type of sound, so removing entries is not recommended. However adding new ones or altering existing ones is possible.  See the [[Hardcoded sounds|hardcoded sounds]] for a list of which sounds have hardcoded names.}}&lt;br /&gt;
&lt;br /&gt;
{{Table381|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If this syntax is in use then the new sound set features can be used. These include the ability to use multiple sound files for one entry and with this feature it is possible to randomize the volume and pitch values when a sound is played. Compared to the SCP syntax there are only a few changes: Instead of &#039;&#039;+Filename&#039;&#039; this now uses &#039;&#039;+Entry&#039;&#039; and allows using that option as often as needed. The &#039;&#039;+Volume&#039;&#039; option accepts a random range for possible values and the &#039;&#039;+Pitch&#039;&#039; option is new.&lt;br /&gt;
&lt;br /&gt;
In most entries, the name of the file (&#039;&#039;&#039;Second&#039;&#039;&#039; value) can be replaced with &#039;empty&#039; if the particular sound index is not in use.&lt;br /&gt;
&lt;br /&gt;
===#Game Sounds Start===&lt;br /&gt;
Notes&lt;br /&gt;
*Cockpit sounds are in general non-3D sounds&lt;br /&gt;
*All the other in-flight sounds are, in general, 3D sounds&lt;br /&gt;
*Non-3D sounds do not require the &#039;&#039;&#039;+3D Sound&#039;&#039;&#039; entries&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example Line&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Name: 6&lt;br /&gt;
    +Entry: breakup&lt;br /&gt;
    +Cycle type: sequential&lt;br /&gt;
    +Preload: no&lt;br /&gt;
    +Volume: (0.60)&lt;br /&gt;
    +3D Sound:&lt;br /&gt;
        +Attenuation start: 100&lt;br /&gt;
        +Attenuation end: 800&lt;br /&gt;
    +Priority: High&lt;br /&gt;
    +Limit: 3&lt;br /&gt;
    +Pitch: (1.0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====$Name:====&lt;br /&gt;
*Specifies the sound handle which FSO will use to identify the sound from other tables&lt;br /&gt;
*If +nocreate is to be used, it must come after &#039;&#039;&#039;$Name:&#039;&#039;&#039; and before the &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
{{Warning|&lt;br /&gt;
The name may not contain any whitespace (space or tab characters) or the old parsing code will be used.}}&lt;br /&gt;
&lt;br /&gt;
====+nocreate====&lt;br /&gt;
*Allows editing of the sound without creating a new sound handle&lt;br /&gt;
*Must be placed after &#039;&#039;&#039;$Name:&#039;&#039;&#039; and before the &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
*Example&lt;br /&gt;
**&amp;lt;pre&amp;gt;$Name: +nocreate SoundName&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====+Entry:====&lt;br /&gt;
*The name of the actual sound file. This option may appear more than once if multiple sound files should be used for this sound entry.&lt;br /&gt;
*Always required once, even if +nocreate is used.&lt;br /&gt;
*To specify no sound file, use &amp;quot;empty&amp;quot; (without the quotes)&lt;br /&gt;
*If +nocreate is used then sound files can only be added to the sound but no other modification is available.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Cycle type:====&lt;br /&gt;
*Specifies how the next sound entry should be chosen from the &#039;&#039;+Entry&#039;&#039; list&lt;br /&gt;
*Required, optional if +nocreate is used&lt;br /&gt;
*May use one of the following modes:&lt;br /&gt;
**&#039;&#039;&#039;sequential&#039;&#039;&#039;: The entry will be chosen sequentially from the list. &#039;&#039;&#039;Note:&#039;&#039;&#039; The sequence of played sounds is determined globally so if there are two sound sources using the same entry then the sounds may appear as missing parts for either source since the other source used that entry before.&lt;br /&gt;
**&#039;&#039;&#039;random&#039;&#039;&#039;: An entry is chosen uniformly at random from the entries list&lt;br /&gt;
*Syntax: &#039;&#039;&#039;sequential&#039;&#039;&#039; or &#039;&#039;&#039;random&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Preload:====&lt;br /&gt;
*Specifies whether FSO should always preload the sound before the mission or not&lt;br /&gt;
*Optional if +nocreate is used, required otherwise&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Boolean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Volume:====&lt;br /&gt;
*Specifies the volume the sound should be played at as a random range between 0 and 1. The actual volume will be picked within that range whenever a sound is played&lt;br /&gt;
*Optional if +nocreate is used, required otherwise&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Float)&#039;&#039;&#039; or &#039;&#039;&#039;(Float Float)&#039;&#039;&#039;, example: &#039;&#039;(0.5 1.0)&#039;&#039;. It is also valid to only specify one value if there should be no randomization.&lt;br /&gt;
&lt;br /&gt;
====+3D Sound:====&lt;br /&gt;
*Sets up table syntax for specifying 3D sound options&lt;br /&gt;
*If present the sound will be loaded as a 3D sound&lt;br /&gt;
*No argument should be specified&lt;br /&gt;
*Must be accompanied by &#039;&#039;&#039;+Attenuation Start:&#039;&#039;&#039; and &#039;&#039;&#039;+Attenuation End:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Attenuation Start:====&lt;br /&gt;
*Defines the distance from the origin of the 3D sound where it begins to attenuate&lt;br /&gt;
*Must be preceded by &#039;&#039;&#039;+3D Sound:&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Integer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Attenuation End:====&lt;br /&gt;
*Defines the distance from the origin of the 3D sound where it is inaudible&lt;br /&gt;
*Must be preceded by &#039;&#039;&#039;+3D Sound:&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Integer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Priority:====&lt;br /&gt;
*Optional, for use with [[Enhanced sound|enhanced sound]]&lt;br /&gt;
*Can be used with or without an accompanying +Limit:&lt;br /&gt;
*Specifies the priority of this sound when enhanced sound is used&lt;br /&gt;
*Should be based on how important this sound is and also how likely the player will notice if the sound drops out&lt;br /&gt;
*overrides the engine default value&lt;br /&gt;
*For valid values, see the table below. Values are not case-sensitive.&lt;br /&gt;
*See the [[Enhanced sound]] page for more information.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Value         Meaning&lt;br /&gt;
-----         -------&lt;br /&gt;
Must Play     Absolutely must play&lt;br /&gt;
High          Very important&lt;br /&gt;
Medium-High   Important&lt;br /&gt;
Medium        Somewhat important&lt;br /&gt;
Medium-Low    Only a little important&lt;br /&gt;
Low           Not important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====+Limit:====&lt;br /&gt;
*Optional, for use with [[Enhanced sound|enhanced sound]]&lt;br /&gt;
*Can be used with or without an accompanying +Priority:&lt;br /&gt;
*Specifies how many instances of the sound can play at the same time&lt;br /&gt;
*overrides the engine default value&lt;br /&gt;
*Must be in the range 1 - 15&lt;br /&gt;
*See the [[Enhanced sound]] page for more information,&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Integer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====+Pitch:====&lt;br /&gt;
*Specifies which pitch values the sound may be assigned&lt;br /&gt;
*Optional, defaults to 1.0&lt;br /&gt;
*This is a random range which specifies the possible pitch values the sound may be assigned&lt;br /&gt;
*The actual effect of these values is very complicated to describe so you should simply test to check which values sound well. A value of 1.0 plays the sound without any changes.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Float)&#039;&#039;&#039; or &#039;&#039;&#039;(Float Float)&#039;&#039;&#039;, example: &#039;&#039;(0.9 1.1)&#039;&#039;. It is also valid to only specify one value if there should be no randomization.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Section ends with #Game Sounds End&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===#Interface Sounds Start===&lt;br /&gt;
Notes&lt;br /&gt;
*Interface sounds are not 3D sounds. You may specify &#039;&#039;&#039;+3D Sound:&#039;&#039;&#039; properties, but they will be ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example Line&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Name: CraneSound1&lt;br /&gt;
    +Entry: Crane_1&lt;br /&gt;
    +Cycle type: sequential&lt;br /&gt;
    +Preload: no&lt;br /&gt;
    +Volume: 0.50&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====$Name:====&lt;br /&gt;
*Specifies the sound handle which FSO will use to identify the sound from other tables&lt;br /&gt;
*If +nocreate is to be used, it must come after &#039;&#039;&#039;$Name:&#039;&#039;&#039; and before the &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
{{Warning|&lt;br /&gt;
The name may not contain any whitespace (space or tab characters) or the old parsing code will be used.}}&lt;br /&gt;
&lt;br /&gt;
====+nocreate====&lt;br /&gt;
*Allows editing of the sound without creating a new sound handle&lt;br /&gt;
*Must be placed after &#039;&#039;&#039;$Name:&#039;&#039;&#039; and before the &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
*Example&lt;br /&gt;
**&amp;lt;pre&amp;gt;$Name: +nocreate SoundName&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====+Entry:====&lt;br /&gt;
*The name of the actual sound file. This option may appear more than once if multiple sound files should be used for this sound entry.&lt;br /&gt;
*Always required once, even if +nocreate is used.&lt;br /&gt;
*To specify no sound file, use &amp;quot;empty&amp;quot; (without the quotes)&lt;br /&gt;
*If +nocreate is used then sound files can only be added to the sound but no other modification is available.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Cycle type:====&lt;br /&gt;
*Specifies how the next sound entry should be chosen from the &#039;&#039;+Entry&#039;&#039; list&lt;br /&gt;
*Required, optional if +nocreate is used&lt;br /&gt;
*May use one of the following modes:&lt;br /&gt;
**&#039;&#039;&#039;sequential&#039;&#039;&#039;: The entry will be chosen sequentially from the list. &#039;&#039;&#039;Note:&#039;&#039;&#039; The sequence of played sounds is determined globally so if there are two sound sources using the same entry then the sounds may appear as missing parts for either source since the other source used that entry before.&lt;br /&gt;
**&#039;&#039;&#039;random&#039;&#039;&#039;: An entry is chosen uniformly at random from the entries list&lt;br /&gt;
*Syntax: &#039;&#039;&#039;sequential&#039;&#039;&#039; or &#039;&#039;&#039;random&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Preload:====&lt;br /&gt;
*Specifies whether FSO should always preload the sound before the mission or not&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Boolean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Volume:====&lt;br /&gt;
*Specifies the volume the sound should be played at as a random range between 0 and 1. The actual volume will be picked within that range whenever a sound is played&lt;br /&gt;
*Optional if +nocreate is used, required otherwise&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Float)&#039;&#039;&#039; or &#039;&#039;&#039;(Float Float)&#039;&#039;&#039;, example: &#039;&#039;(0.5 1.0)&#039;&#039;. It is also valid to only specify one value if there should be no randomization.&lt;br /&gt;
&lt;br /&gt;
====+Pitch:====&lt;br /&gt;
*Specifies which pitch values the sound may be assigned&lt;br /&gt;
*Optional, defaults to 1.0&lt;br /&gt;
*This is a random range which specifies the possible pitch values the sound may be assigned&lt;br /&gt;
*The actual effect of these values is very complicated to describe so you should simply test to check which values sound well. A value of 1.0 plays the sound without any changes.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Float)&#039;&#039;&#039; or &#039;&#039;&#039;(Float Float)&#039;&#039;&#039;, example: &#039;&#039;(0.9 1.1)&#039;&#039;. It is also valid to only specify one value if there should be no randomization.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Section ends with #Interface Sounds End&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===#Flyby Sounds Start===&lt;br /&gt;
Notes&lt;br /&gt;
*Each species has two flyby sounds. One for the fighters and one for the bombers.&lt;br /&gt;
*Flyby sounds are all 3D sounds.&lt;br /&gt;
*Each flyby sound is defined on a line that begins with the species name (&#039;&#039;&#039;String&#039;&#039;&#039;, species name, eg. &#039;&#039;&#039;$Terran:&#039;&#039;&#039;).&lt;br /&gt;
*&#039;&#039;&#039;THE FLYBY SECTION CANNOT USE +nocreate&#039;&#039;&#039;&lt;br /&gt;
If you want to modify a flyby sound entry of a species in a modular table then you will need to have entries for both types.&lt;br /&gt;
&lt;br /&gt;
Line starts with &#039;&#039;&#039;$SPECIES:&#039;&#039;&#039; in the place of &#039;&#039;&#039;$Name:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example Terran Section&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Terran: 0&lt;br /&gt;
    +Entry: T_flyby1&lt;br /&gt;
    +Cycle type: sequential&lt;br /&gt;
    +Preload: no&lt;br /&gt;
    +Volume: (0.75)&lt;br /&gt;
    +3D Sound:&lt;br /&gt;
        +Attenuation start: 200&lt;br /&gt;
        +Attenuation end: 400&lt;br /&gt;
&lt;br /&gt;
$Terran: 1&lt;br /&gt;
    +Entry: T_flyby2&lt;br /&gt;
    +Cycle type: sequential&lt;br /&gt;
    +Preload: no&lt;br /&gt;
    +Volume: (0.75)&lt;br /&gt;
    +3D Sound:&lt;br /&gt;
        +Attenuation start: 200&lt;br /&gt;
        +Attenuation end: 400&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====$Name:====&lt;br /&gt;
*&#039;&#039;&#039;$Name&#039;&#039;&#039; must be replaced with &#039;&#039;&#039;$SPECIES&#039;&#039;&#039; as from the [[Species_defs.tbl]]&lt;br /&gt;
*Specifies the sound handle which FSO will use to identify the sound from other tables&lt;br /&gt;
*In this case it will usually be a &#039;&#039;&#039;1&#039;&#039;&#039; or a &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
{{Warning|&lt;br /&gt;
The name may not contain any whitespace (space or tab characters) or the old parsing code will be used.}}&lt;br /&gt;
&lt;br /&gt;
====+Entry:====&lt;br /&gt;
*The name of the actual sound file. This option may appear more than once if multiple sound files should be used for this sound entry.&lt;br /&gt;
*Always required once, even if +nocreate is used.&lt;br /&gt;
*To specify no sound file, use &amp;quot;empty&amp;quot; (without the quotes)&lt;br /&gt;
*If +nocreate is used then sound files can only be added to the sound but no other modification is available.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Cycle type:====&lt;br /&gt;
*Specifies how the next sound entry should be chosen from the &#039;&#039;+Entry&#039;&#039; list&lt;br /&gt;
*Required, optional if +nocreate is used&lt;br /&gt;
*May use one of the following modes:&lt;br /&gt;
**&#039;&#039;&#039;sequential&#039;&#039;&#039;: The entry will be chosen sequentially from the list. &#039;&#039;&#039;Note:&#039;&#039;&#039; The sequence of played sounds is determined globally so if there are two sound sources using the same entry then the sounds may appear as missing parts for either source since the other source used that entry before.&lt;br /&gt;
**&#039;&#039;&#039;random&#039;&#039;&#039;: An entry is chosen uniformly at random from the entries list&lt;br /&gt;
*Syntax: &#039;&#039;&#039;sequential&#039;&#039;&#039; or &#039;&#039;&#039;random&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Preload:====&lt;br /&gt;
*Specifies whether FSO should always preload the sound before the mission or not&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Boolean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Volume:====&lt;br /&gt;
*Specifies the volume the sound should be played at as a random range between 0 and 1. The actual volume will be picked within that range whenever a sound is played&lt;br /&gt;
*Optional if +nocreate is used, required otherwise&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Float)&#039;&#039;&#039; or &#039;&#039;&#039;(Float Float)&#039;&#039;&#039;, example: &#039;&#039;(0.5 1.0)&#039;&#039;. It is also valid to only specify one value if there should be no randomization.&lt;br /&gt;
&lt;br /&gt;
====+3D Sound:====&lt;br /&gt;
*Sets up table syntax for specifying 3D sound options&lt;br /&gt;
*If present the sound will be loaded as a 3D sound&lt;br /&gt;
*No argument should be specified&lt;br /&gt;
*Must be accompanied by &#039;&#039;&#039;+Attenuation Start:&#039;&#039;&#039; and &#039;&#039;&#039;+Attenuation End:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Attenuation Start:====&lt;br /&gt;
*Defines the distance from the origin of the 3D sound where it begins to attenuate&lt;br /&gt;
*Must be preceded by &#039;&#039;&#039;+3D Sound:&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Integer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Attenuation End:====&lt;br /&gt;
*Defines the distance from the origin of the 3D sound where it is inaudible&lt;br /&gt;
*Must be preceded by &#039;&#039;&#039;+3D Sound:&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Integer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Pitch:====&lt;br /&gt;
*Specifies which pitch values the sound may be assigned&lt;br /&gt;
*Optional, defaults to 1.0&lt;br /&gt;
*This is a random range which specifies the possible pitch values the sound may be assigned&lt;br /&gt;
*The actual effect of these values is very complicated to describe so you should simply test to check which values sound well. A value of 1.0 plays the sound without any changes.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Float)&#039;&#039;&#039; or &#039;&#039;&#039;(Float Float)&#039;&#039;&#039;, example: &#039;&#039;(0.9 1.1)&#039;&#039;. It is also valid to only specify one value if there should be no randomization.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Section ends with #Flyby Sounds End&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==SCP Syntax==&lt;br /&gt;
{{Note|Many retail sound names are hardcoded to a specific type of sound, so removing entries is not recommended. However adding new ones or altering existing ones is possible.  See the [[Hardcoded sounds|hardcoded sounds]] for a list of which sounds have hardcoded names.}}&lt;br /&gt;
&lt;br /&gt;
In most entries, the name of the file (&#039;&#039;&#039;Second&#039;&#039;&#039; value) can be replaced with &#039;empty&#039; if the particular sound index is not in use.&lt;br /&gt;
&lt;br /&gt;
===#Game Sounds Start===&lt;br /&gt;
Notes&lt;br /&gt;
*Cockpit sounds are in general non-3D sounds&lt;br /&gt;
*All the other in-flight sounds are, in general, 3D sounds&lt;br /&gt;
*Non-3D sounds do not require the &#039;&#039;&#039;+3D Sound&#039;&#039;&#039; entries&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example Line&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Name: 6&lt;br /&gt;
    +Filename: breakup&lt;br /&gt;
    +Preload: no&lt;br /&gt;
    +Volume: 0.60&lt;br /&gt;
    +3D Sound:&lt;br /&gt;
        +Attenuation start: 100&lt;br /&gt;
        +Attenuation end: 800&lt;br /&gt;
    +Priority: High&lt;br /&gt;
    +Limit: 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====$Name:====&lt;br /&gt;
*Specifies the sound handle which FSO will use to identify the sound from other tables&lt;br /&gt;
*If +nocreate is to be used, it must come after &#039;&#039;&#039;$Name:&#039;&#039;&#039; and before the &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
{{Warning|&lt;br /&gt;
The name may not contain any whitespace (space or tab characters) or the old parsing code will be used.}}&lt;br /&gt;
&lt;br /&gt;
====+nocreate====&lt;br /&gt;
*Allows editing of the sound without creating a new sound handle&lt;br /&gt;
*Must be placed after &#039;&#039;&#039;$Name:&#039;&#039;&#039; and before the &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
*Example&lt;br /&gt;
**&amp;lt;pre&amp;gt;$Name: +nocreate SoundName&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====+Filename:====&lt;br /&gt;
*The name of the actual sound file to play&lt;br /&gt;
*Always required, even if +nocreate is used.&lt;br /&gt;
*To specify no sound file, use &amp;quot;empty&amp;quot; (without the quotes)&lt;br /&gt;
*If +nocreate is used and you don&#039;t want to change the original filename, then use &amp;lt;same&amp;gt; (including the &amp;lt;&amp;gt;)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Preload:====&lt;br /&gt;
*Specifies whether FSO should always preload the sound before the mission or not&lt;br /&gt;
*Optional if +nocreate is used, required otherwise&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Boolean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Volume:====&lt;br /&gt;
*Specifies the volume the sound should be played at as a percentage&lt;br /&gt;
*Optional if +nocreate is used, required otherwise&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Float&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+3D Sound:====&lt;br /&gt;
*Sets up table syntax for specifying 3D sound options&lt;br /&gt;
*If present the sound will be loaded as a 3D sound&lt;br /&gt;
*No argument should be specified&lt;br /&gt;
*Must be accompanied by &#039;&#039;&#039;+Attenuation Start:&#039;&#039;&#039; and &#039;&#039;&#039;+Attenuation End:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Attenuation Start:====&lt;br /&gt;
*Defines the distance from the origin of the 3D sound where it begins to attenuate&lt;br /&gt;
*Must be preceded by &#039;&#039;&#039;+3D Sound:&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Integer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Attenuation End:====&lt;br /&gt;
*Defines the distance from the origin of the 3D sound where it is inaudible&lt;br /&gt;
*Must be preceded by &#039;&#039;&#039;+3D Sound:&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Integer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Priority:====&lt;br /&gt;
*Optional, for use with [[Enhanced sound|enhanced sound]]&lt;br /&gt;
*Can be used with or without an accompanying +Limit:&lt;br /&gt;
*Specifies the priority of this sound when enhanced sound is used&lt;br /&gt;
*Should be based on how important this sound is and also how likely the player will notice if the sound drops out&lt;br /&gt;
*overrides the engine default value&lt;br /&gt;
*For valid values, see the table below. Values are not case-sensitive.&lt;br /&gt;
*See the [[Enhanced sound]] page for more information.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Value         Meaning&lt;br /&gt;
-----         -------&lt;br /&gt;
Must Play     Absolutely must play&lt;br /&gt;
High          Very important&lt;br /&gt;
Medium-High   Important&lt;br /&gt;
Medium        Somewhat important&lt;br /&gt;
Medium-Low    Only a little important&lt;br /&gt;
Low           Not important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====+Limit:====&lt;br /&gt;
*Optional, for use with [[Enhanced sound|enhanced sound]]&lt;br /&gt;
*Can be used with or without an accompanying +Priority:&lt;br /&gt;
*Specifies how many instances of the sound can play at the same time&lt;br /&gt;
*overrides the engine default value&lt;br /&gt;
*Must be in the range 1 - 15&lt;br /&gt;
*See the [[Enhanced sound]] page for more information,&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Integer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Section ends with #Game Sounds End&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===#Interface Sounds Start===&lt;br /&gt;
Notes&lt;br /&gt;
*Interface sounds are not 3D sounds. You may specify &#039;&#039;&#039;+3D Sound:&#039;&#039;&#039; properties, but they will be ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example Line&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Name: CraneSound1&lt;br /&gt;
    +Filename: Crane_1&lt;br /&gt;
    +Preload: no&lt;br /&gt;
    +Volume: 0.50&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====$Name:====&lt;br /&gt;
*Specifies the sound handle which FSO will use to identify the sound from other tables&lt;br /&gt;
*If +nocreate is to be used, it must come after &#039;&#039;&#039;$Name:&#039;&#039;&#039; and before the &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
{{Warning|&lt;br /&gt;
The name may not contain any whitespace (space or tab characters) or the old parsing code will be used.}}&lt;br /&gt;
&lt;br /&gt;
====+nocreate====&lt;br /&gt;
*Allows editing of the sound without creating a new sound handle&lt;br /&gt;
*Must be placed after &#039;&#039;&#039;$Name:&#039;&#039;&#039; and before the &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
*Example&lt;br /&gt;
**&amp;lt;pre&amp;gt;$Name: +nocreate SoundName&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====+Filename:====&lt;br /&gt;
*The name of the actual sound file to play&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Preload:====&lt;br /&gt;
*Specifies whether FSO should always preload the sound before the mission or not&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Boolean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Volume:====&lt;br /&gt;
*Specifies the volume the sound should be played at as a percentage&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Float&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Section ends with #Interface Sounds End&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===#Flyby Sounds Start===&lt;br /&gt;
Notes&lt;br /&gt;
*Each species has two flyby sounds. One for the fighters and one for the bombers.&lt;br /&gt;
*Flyby sounds are all 3D sounds.&lt;br /&gt;
*Each flyby sound is defined on a line that begins with the species name (&#039;&#039;&#039;String&#039;&#039;&#039;, species name, eg. &#039;&#039;&#039;$Terran:&#039;&#039;&#039;).&lt;br /&gt;
*&#039;&#039;&#039;THE FLYBY SECTION CANNOT USE +nocreate&#039;&#039;&#039;&lt;br /&gt;
If you want to modify a flyby sound entry of a species in a modular table then you will need to have entries for both types.&lt;br /&gt;
&lt;br /&gt;
Line starts with &#039;&#039;&#039;$SPECIES:&#039;&#039;&#039; in the place of &#039;&#039;&#039;$Name:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example Terran Section&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Terran: 0&lt;br /&gt;
    +Filename: T_flyby1&lt;br /&gt;
    +Preload: no&lt;br /&gt;
    +Volume: 0.75&lt;br /&gt;
    +3D Sound:&lt;br /&gt;
        +Attenuation start: 200&lt;br /&gt;
        +Attenuation end: 400&lt;br /&gt;
&lt;br /&gt;
$Terran: 1&lt;br /&gt;
    +Filename: T_flyby2&lt;br /&gt;
    +Preload: no&lt;br /&gt;
    +Volume: 0.75&lt;br /&gt;
    +3D Sound:&lt;br /&gt;
        +Attenuation start: 200&lt;br /&gt;
        +Attenuation end: 400&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====$Name:====&lt;br /&gt;
*&#039;&#039;&#039;$Name&#039;&#039;&#039; must be replaced with &#039;&#039;&#039;$SPECIES&#039;&#039;&#039; as from the [[Species_defs.tbl]]&lt;br /&gt;
*Specifies the sound handle which FSO will use to identify the sound from other tables&lt;br /&gt;
*In this case it will usually be a &#039;&#039;&#039;1&#039;&#039;&#039; or a &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
{{Warning|&lt;br /&gt;
The name may not contain any whitespace (space or tab characters) or the old parsing code will be used.}}&lt;br /&gt;
&lt;br /&gt;
====+Filename:====&lt;br /&gt;
*The name of the actual sound file to play&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Preload:====&lt;br /&gt;
*Specifies whether FSO should always preload the sound before the mission or not&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Boolean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Volume:====&lt;br /&gt;
*Specifies the volume the sound should be played at as a percentage&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Float&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+3D Sound:====&lt;br /&gt;
*Sets up table syntax for specifying 3D sound options&lt;br /&gt;
*If present the sound will be loaded as a 3D sound&lt;br /&gt;
*No argument should be specified&lt;br /&gt;
*Must be accompanied by &#039;&#039;&#039;+Attenuation Start:&#039;&#039;&#039; and &#039;&#039;&#039;+Attenuation End:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Attenuation Start:====&lt;br /&gt;
*Defines the distance from the origin of the 3D sound where it begins to attenuate&lt;br /&gt;
*Must be preceded by &#039;&#039;&#039;+3D Sound:&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Integer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====+Attenuation End:====&lt;br /&gt;
*Defines the distance from the origin of the 3D sound where it is inaudible&lt;br /&gt;
*Must be preceded by &#039;&#039;&#039;+3D Sound:&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Integer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Section ends with #Flyby Sounds End&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Retail Syntax==&lt;br /&gt;
{{Note|Many retail sound names are hardcoded to a specific type of sound, so removing entries is not recommended. However adding new ones or altering existing ones is possible.  See the [[Hardcoded sounds|hardcoded sounds]] for a list of which sounds have hardcoded names.}}&lt;br /&gt;
&lt;br /&gt;
In most entries, the name of the file (&#039;&#039;&#039;Second&#039;&#039;&#039; value) can be replaced with &#039;empty&#039; if the particular sound index is not in use.&lt;br /&gt;
&lt;br /&gt;
===#Game Sounds Start===&lt;br /&gt;
Notes&lt;br /&gt;
*Cockpit sounds are in general non-3D sounds that ought to be of type &#039;0&#039;, however all the other in-flight sounds are in general 3D sounds and ought to of type &#039;1&#039; (or type &#039;2&#039;).&lt;br /&gt;
*Type 0 sounds do not require the &#039;&#039;&#039;Sixth&#039;&#039;&#039; and &#039;&#039;&#039;Seventh&#039;&#039;&#039; entries.&lt;br /&gt;
&lt;br /&gt;
Example Line&lt;br /&gt;
&amp;lt;pre&amp;gt;$Name: 6 breakup.wav, 0, 0.60, 1, 100, 800&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Line starts with &#039;&#039;$Name:&#039;&#039; and has seven entries separated by commas except for the first and second entries.&lt;br /&gt;
&lt;br /&gt;
**&#039;&#039;&#039;First&#039;&#039;&#039; value is the index number of the sound (&#039;&#039;&#039;Integer&#039;&#039;&#039;)&lt;br /&gt;
**&#039;&#039;&#039;Second&#039;&#039;&#039; value is the name of actual sound file (&#039;&#039;&#039;String&#039;&#039;&#039;, filename).&lt;br /&gt;
**&#039;&#039;&#039;Third&#039;&#039;&#039; value sets the file to always preloaded before the mission (&#039;&#039;&#039;Integer&#039;&#039;&#039;, 0 or 1)&lt;br /&gt;
**&#039;&#039;&#039;Fourth&#039;&#039;&#039; value defines the playing volume of the sound in percentages (&#039;&#039;&#039;Float&#039;&#039;&#039;, from 0 to 1)&lt;br /&gt;
**&#039;&#039;&#039;Fifth&#039;&#039;&#039; value sets the sound type to either standard sound (type &#039;0&#039;), 3D stereo sound (type &#039;1&#039;), or Aureal A3D (type &#039;2&#039;). This defaults to 3D stereo if it is not available (&#039;&#039;&#039;Integer&#039;&#039;&#039;, 0, 1 or 2)&lt;br /&gt;
***&#039;&#039;&#039;Sixth&#039;&#039;&#039; value defines the distance from the origin of 3D sound where it begins to attenuate and is not used with normal non-3D sounds (type 0)(&#039;&#039;&#039;Integer&#039;&#039;&#039;)&lt;br /&gt;
***&#039;&#039;&#039;Seventh&#039;&#039;&#039; value sets the distance from the origin of the 3D sound where it is inaudible and is not used with normal non-3D sounds (type 0)(&#039;&#039;&#039;Integer&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Section ends with #Game Sounds End&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===#Interface Sounds Start===&lt;br /&gt;
Notes&lt;br /&gt;
*Interface sounds are not 3D sounds. Use type &#039;0&#039; sounds. The &#039;&#039;&#039;Sixth&#039;&#039;&#039; and &#039;&#039;&#039;Seventh&#039;&#039;&#039; entries can be left out of sounds in this section.&lt;br /&gt;
&lt;br /&gt;
Example Line&lt;br /&gt;
&amp;lt;pre&amp;gt;$Name: 26 Crane_1.wav, 0, 0.50, 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Line starts with &#039;&#039;$Name:&#039;&#039; and has five entries separated by commas except for the first and second entries.&lt;br /&gt;
&lt;br /&gt;
**&#039;&#039;&#039;First&#039;&#039;&#039; value is the index number of the sound (&#039;&#039;&#039;Integer&#039;&#039;&#039;)&lt;br /&gt;
**&#039;&#039;&#039;Second&#039;&#039;&#039; value is the name of actual sound file (&#039;&#039;&#039;String&#039;&#039;&#039;, filename or &#039;&#039;&#039;Empty&#039;&#039;&#039;).&lt;br /&gt;
**&#039;&#039;&#039;Third&#039;&#039;&#039; value sets the file to always preloaded before the mission (&#039;&#039;&#039;Integer&#039;&#039;&#039;, 0 or 1)&lt;br /&gt;
**&#039;&#039;&#039;Fourth&#039;&#039;&#039; value defines the playing volume of the sound in percentages (&#039;&#039;&#039;Float&#039;&#039;&#039;, from 0 to 1)&lt;br /&gt;
**&#039;&#039;&#039;Fifth&#039;&#039;&#039; value sets the sound type to either standard sound (type &#039;0&#039;), 3D stereo sound (type &#039;1&#039;), or Aureal A3D (type &#039;2&#039;). This defaults to 3D stereo if it is not available (&#039;&#039;&#039;Integer&#039;&#039;&#039;, 0, 1 or 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Section ends with #Interface Sounds End&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===#Flyby Sounds Start===&lt;br /&gt;
Notes&lt;br /&gt;
*Each species has two flyby sounds. One for the fighters and one for the bombers.&lt;br /&gt;
*Flyby sounds are all 3D sounds of type &#039;1&#039; for the &#039;&#039;&#039;Fifth&#039;&#039;&#039; value.&lt;br /&gt;
*Each flyby sound is defined on a single line that begins with the species name (&#039;&#039;&#039;String&#039;&#039;&#039;, species name, eg. &#039;&#039;&#039;$Terran:&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Retail flyby section&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Flyby Sounds Start&lt;br /&gt;
&lt;br /&gt;
$Terran:	0	T_flyby1.wav,	0, 0.75, 1, 200, 400	; * Terran ship1 flyby player sound (3d sound)&lt;br /&gt;
$Terran:	1	T_flyby2.wav,	0, 0.75, 1, 200, 400	; * Terran ship1 flyby player sound (3d sound)&lt;br /&gt;
&lt;br /&gt;
$Vasudan:	0	V_flyby1.wav,	0, 0.85, 1, 200, 400	; * Vasudan ship1 flyby player sound (3d sound)&lt;br /&gt;
$Vasudan:	1	V_flyby2.wav,	0, 0.85, 1, 200, 400	; * Vasudan ship1 flyby player sound (3d sound)&lt;br /&gt;
&lt;br /&gt;
$Shivan:	0	S_flyby1.wav,	0, 0.75, 1, 200, 400	; * Shivan ship1 flyby player sound (3d sound)&lt;br /&gt;
$Shivan:	1	S_flyby2.wav,	0, 0.75, 1, 200, 400	; * Shivan ship1 flyby player sound (3d sound)&lt;br /&gt;
&lt;br /&gt;
#Flyby Sounds End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Line starts with &#039;&#039;$SPECIES:&#039;&#039; and has seven entries separated by commas except for the first and second entries.&lt;br /&gt;
&lt;br /&gt;
**&#039;&#039;&#039;First&#039;&#039;&#039; value is the label of the flyby sound, usually 0 for the first (small-ship) entry and 1 for the second (large-ship)entry. (&#039;&#039;&#039;Integer&#039;&#039;&#039;)&lt;br /&gt;
**&#039;&#039;&#039;Second&#039;&#039;&#039; value is the name of actual sound file (&#039;&#039;&#039;String&#039;&#039;&#039;, filename).&lt;br /&gt;
**&#039;&#039;&#039;Third&#039;&#039;&#039; value sets the file to always preloaded before the mission (&#039;&#039;&#039;Integer&#039;&#039;&#039;, 0 or 1)&lt;br /&gt;
**&#039;&#039;&#039;Fourth&#039;&#039;&#039; value defines the playing volume of the sound in percentages (&#039;&#039;&#039;Float&#039;&#039;&#039;, from 0 to 1)&lt;br /&gt;
**&#039;&#039;&#039;Fifth&#039;&#039;&#039; value sets the sound type and should be set to 3D stereo sound (type &#039;1&#039;) (&#039;&#039;&#039;Integer&#039;&#039;&#039;, 0, 1 or 2)&lt;br /&gt;
***&#039;&#039;&#039;Sixth&#039;&#039;&#039; value defines the distance from the origin of 3D sound where it begins to attenuate (type 0)(&#039;&#039;&#039;Integer&#039;&#039;&#039;)&lt;br /&gt;
***&#039;&#039;&#039;Seventh&#039;&#039;&#039; value sets the distance from the origin of the 3D sound where it is inaudible (type 0)(&#039;&#039;&#039;Integer&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Section ends with #Flyby Sounds End&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sample==&lt;br /&gt;
*Retail FreeSpace 2 table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
;  sounds.tbl *&lt;br /&gt;
;&lt;br /&gt;
;  file to specify general game sounds&lt;br /&gt;
;&lt;br /&gt;
;                     I M P O R T A N T&lt;br /&gt;
;  **********************************************************&lt;br /&gt;
;  *                                                        *&lt;br /&gt;
;  ====&amp;gt;  DO NOT MODIFY THE ORDER OF THE LISTED SOUNDS &amp;lt;====*&lt;br /&gt;
;  *                                                        *&lt;br /&gt;
;  **********************************************************&lt;br /&gt;
;                     I M P O R T A N T&lt;br /&gt;
;&lt;br /&gt;
;  If a sound entry appears in this file, there is a hook into the game to&lt;br /&gt;
;  play the sound.  This file can only be modified to change *existing* sounds.&lt;br /&gt;
;  Talk to a programmer if you want to add brand new sounds.  Adding a line to&lt;br /&gt;
;  this file will not make your sound appear in the game, it will more than&lt;br /&gt;
;  likely break something.&lt;br /&gt;
;&lt;br /&gt;
; 	If you don&#039;t want the sound to play, put none.wav as the sound to play.&lt;br /&gt;
;&lt;br /&gt;
;	The fields for a sound entry are:&lt;br /&gt;
;	1) unqiue sound signature&lt;br /&gt;
;	2) filename of the sound&lt;br /&gt;
;	3) flag to indicate sound should always be pre-loaded before a mission&lt;br /&gt;
;	4) the default volume (from 0.0 -&amp;gt; 1.0)&lt;br /&gt;
;	5) 0 - not 3d  1 - stereo 3D  2 - Aureal A3D (if available), otherwise use stereo 3D&lt;br /&gt;
;	6) distance at which sound starts to attenuate (for 3d sounds only)&lt;br /&gt;
;	7) distance at which sound is inaudible (for 3d sounds only)&lt;br /&gt;
;&lt;br /&gt;
#Game Sounds Start&lt;br /&gt;
; Misc sounds section						** = Aureal 3d support | * = FS = 3D support&lt;br /&gt;
$Name:	0	trk-loop.wav,		0, 0.40, 0		; Missle tracking to acquire a lock (looped)&lt;br /&gt;
$Name:	1	lock.wav,		0, 0.40, 0		; Missle lock (non-looping)&lt;br /&gt;
$Name:	2	cycle.wav,		0, 0.60, 0		; cycle primary weapon&lt;br /&gt;
$Name:	3	cycle.wav,		0, 0.60, 0		; cycle secondary weapon&lt;br /&gt;
$Name:	4	ship_p.wav,		0, 0.30, 0		; engine sound (as heard in cockpit)&lt;br /&gt;
$Name:	5	reveal.wav,		0, 0.40, 0		; cargo revealed &lt;br /&gt;
$Name:	6	breakup.wav,		0, 0.60, 1, 100, 800	; ship death roll (3d sound)&lt;br /&gt;
$Name:	7	boom_3.wav,		0, 0.90, 2, 600, 1200	; * ship explosion 1 (3d sound)&lt;br /&gt;
$Name:	8	beep_2.wav,		0, 0.40, 0		; target acquried&lt;br /&gt;
$Name:	9	switch_1.wav,		0, 0.50, 0		; energy level change success&lt;br /&gt;
$Name:	10	beep_5.wav,		0, 0.50, 0		; energy level change fail&lt;br /&gt;
$Name:	11	switch_2.wav,		0, 0.50, 0		; energy transfer success&lt;br /&gt;
$Name:	12	beep_5.wav,		0, 0.50, 0		; energy transfer faile&lt;br /&gt;
$Name:	13	thr_full.wav,		0, 0.40, 0		; set full throttle&lt;br /&gt;
$Name:	14	thr_off.wav,		0, 0.40, 0		; set zero throttle&lt;br /&gt;
$Name:	15	thr_up.wav,		0, 0.40, 0		; set 1/3 or 2/3 throttle (up)&lt;br /&gt;
$Name:	16	thr_dwn.wav,		0, 0.40, 0		; set 1/3 or 2/3 throttle (down)&lt;br /&gt;
$Name:	17	approach.wav,		0, 0.60, 1, 10, 800	; dock approach retros (3d sound)&lt;br /&gt;
$Name:	18	attach.wav,		0, 0.60, 1, 10, 800	; dock attach (3d sound)&lt;br /&gt;
$Name:	19	detach.wav,		0, 0.60, 1, 10, 800	; dock detach (3d sound)&lt;br /&gt;
$Name:	20	depart.wav,		0, 0.60, 1, 10, 800	; dock depart retros (3d sound)&lt;br /&gt;
$Name:	21	aburn_1.wav,		0, 0.70, 0		; afterburner engage (3d sound)&lt;br /&gt;
$Name:	22	aburn_2.wav,		0, 0.90, 0		; afterburner burn sound (looped)&lt;br /&gt;
$Name:	23	vaporize2.wav,		0, 0.90, 0		; Destroyed by a beam (vaporized)&lt;br /&gt;
$Name:	24	aburn_1f.wav,		0, 0.50, 0		; afterburner fail (no fuel when aburn pressed)&lt;br /&gt;
$Name:	25	alert_2.wav,		0, 0.40, 0		; heat-seeker launch warning&lt;br /&gt;
$Name:	26	m_fail.wav,		0, 0.60, 0		; tried to fire a missle when none are left&lt;br /&gt;
$Name:	27	l_fail.wav,		0, 0.60, 0		; tried to fire lasers when not enough energy left&lt;br /&gt;
$Name:	28	fail.wav,		0, 0.50, 0		; target fail sound (i.e. press targeting key, but nothing happens)&lt;br /&gt;
$Name:	29	beep_1.wav,		0, 0.50, 0		; squadmate message menu appears&lt;br /&gt;
$Name:	30	beep_1.wav,		0, 0.50, 0		; squadmate message menu disappears&lt;br /&gt;
$Name:	31	debris.wav,		0, 0.40, 2, 100, 300	; ** debris sound (persistant, looping) (3d sound)&lt;br /&gt;
$Name:	32	subhit.wav,		0, 0.60, 0		; subsystem gets destroyed on player ship&lt;br /&gt;
$Name:	33	m_load.wav,		0, 0.60, 1, 10, 50	; missle start load (during rearm/repair) (3d sound)&lt;br /&gt;
$Name:	34	m_lock.wav,		0, 0.50, 1, 10, 50	; missle load (during rearm/repair) (3d sound)&lt;br /&gt;
$Name:	35	repair.wav,		0, 0.50, 0		; ship is being repaired (during rearm/repair) (looped)&lt;br /&gt;
$Name:	36	l_hit.wav,		0, 0.90, 0, 30, 100	; * player ship is hit by laser fire (3d sound)&lt;br /&gt;
$Name:	37	m_hit.wav,		0, 0.90, 0, 30, 100	; * player ship is hit by missile (3d sound)&lt;br /&gt;
$Name:	38	cycle.wav,		0, 0.80, 0		; countermeasure cycle&lt;br /&gt;
$Name:	39	s_hit_4.wav,		0, 0.60, 1, 200, 600	; * shield hit (3d sound)&lt;br /&gt;
$Name:	40	s_hit_2.wav,		0, 0.80, 1, 10, 100	; * player shield is hit (3d sound)&lt;br /&gt;
$Name:	41	select.wav,		0, 0.60, 0		; mouse click&lt;br /&gt;
$Name:	42	alert_3.wav,		0, 0.60, 0		; aspect launch warning&lt;br /&gt;
$Name:	43	beep_4.wav,		0, 0.60, 0		; shield quadrant transfer successful&lt;br /&gt;
$Name:	44	wash.wav,		0, 0.80, 1, 200, 400	; Engine wash looping sound&lt;br /&gt;
$Name:	45	warp_1.wav,		0, 0.60, 2, 750, 1500	; ** warp hole opening up for arriving (3d sound)&lt;br /&gt;
$Name:	46	warp_1.wav,		0, 0.60, 2, 750, 1500	; ** warp hole opening up for departing (3d sound)&lt;br /&gt;
$Name:	47	aburn_1f.wav,		0, 0.50, 0		; player warp has failed&lt;br /&gt;
$Name:	48	static.wav,		0, 0.60, 0		; hud gauge static&lt;br /&gt;
$Name:	49	boom_1.wav,		0, 0.90, 1, 600, 1200	; * ship explosion 2 (3d sound)&lt;br /&gt;
$Name:	50	rev1.wav,		0, 0.70, 0		; ship is warping out in 3rd person&lt;br /&gt;
$Name:	51	s_hit_0.wav,		0, 0.70, 1, 100, 200	; * heavy ship-ship collide sound (3d sound)&lt;br /&gt;
$Name:	52	collide.wav,		0, 0.70, 1, 100, 200	; * light ship-ship collide sound (3d sound)&lt;br /&gt;
$Name:	53	s_hit_1.wav,		0, 0.70, 1, 100, 200	; * shield ship-ship collide overlay sound (3d sound)&lt;br /&gt;
$Name:	54	alert_1.wav,		0, 0.50, 0		; missile threat indicator flashes&lt;br /&gt;
$Name:	55	proximity1.wav,		0, 0.70, 0		; proximity warning (heat seeker)&lt;br /&gt;
$Name:	56	proximity2.wav,		0, 0.70, 0		; proximity warning (aspect)&lt;br /&gt;
$Name:	57	directive.wav,		0, 0.70, 0		; directive complete&lt;br /&gt;
$Name:	58	subhit2.wav,		0, 0.90, 1, 250,  800	; * other ship subsystem destroyed (3d sound)&lt;br /&gt;
$Name:	59	atomic.wav,		0, 0.90, 1, 2000, 4000	; * captial ship explosion (3d sound)&lt;br /&gt;
$Name:	60	subhit2.wav,		0, 0.90, 1, 250,  1500	; * captial ship subsystem destroyed (3d sound)&lt;br /&gt;
$Name:	61	warp2.wav,		0, 1.00, 1, 1500, 2000	; [obsolete] large ship warps out (looping 3d sound)&lt;br /&gt;
$Name:	62	ast_lghit.wav,		0, 0.80, 1, 750, 1500	; ** large asteroid blows up (3d sound)&lt;br /&gt;
$Name:	63	ast_smhit.wav,		0, 0.80, 1, 500, 1000	; ** small asteroid blows up (3d sound)&lt;br /&gt;
$Name:	64	cue_voice.wav,		0, 0.90, 0		; sound to indicate voice is about to start&lt;br /&gt;
$Name:	65	end_voice.wav,		0, 0.90, 0		; sound to indicate voice has ended&lt;br /&gt;
$Name:	66	scan.wav,		0, 0.50, 0		; cargo scanning (looping)&lt;br /&gt;
$Name:	67	l_flyby.wav,		0, 0.80, 1, 50, 250	; * weapon flyby sound&lt;br /&gt;
$Name:	68	asteroid.wav,		0, 0.50, 1, 200, 700	; [obsolete] asteroid sound (persistant, looping) (3d sound)&lt;br /&gt;
$Name:	69	warp_open.wav,		0, 1.00, 2, 2000, 4000	; capital warp hole opening (3d sound)&lt;br /&gt;
$Name:	70	warp_close.wav,		0, 1.00, 2, 2000, 4000	; capital warp hole closing (3d sound)&lt;br /&gt;
$Name:	71	rumble.wav,		0, 0.70, 1, 600, 1000	; LARGE engine ambient&lt;br /&gt;
$Name:	72	subspace_left.wav,	0, 0.30, 0		; subspace ambient sound (left channel) (looping)&lt;br /&gt;
$Name:	73	subspace_right.wav,	0, 0.30, 0		; subspace ambient sound (right channel) (looping)&lt;br /&gt;
$Name:	74	Evaded.wav,		0, 0.70, 0		; &amp;quot;evaded&amp;quot; HUD popup&lt;br /&gt;
$Name:	75	rumble.wav,		0, 0.70, 1, 600, 1000	; HUGE engine ambient&lt;br /&gt;
;&lt;br /&gt;
; Weapons section&lt;br /&gt;
;&lt;br /&gt;
$Name:	76	L_Sidearm.wav,		0, 0.50, 1,  50, 400	; SD-4 Sidearm laser fired&lt;br /&gt;
$Name:	77	L_Scalpel.wav,		0, 0.50, 1,  50, 400	; DR-2 Scalpel fired&lt;br /&gt;
$Name:	78	L_Flail2.wav,		0, 0.50, 1,  50, 400	; Flail II fired&lt;br /&gt;
$Name:	79	L_Prom_R.wav,		0, 0.50, 1,  50, 400	; Prometheus R laser fired&lt;br /&gt;
$Name:	80	L_Prom_S.wav,		0, 0.50, 1,  50, 400	; Prometheus S laser fired&lt;br /&gt;
$Name:	81	L_Newton.wav,		0, 0.50, 1,  50, 400	; GTW-66 Newton Cannon fired&lt;br /&gt;
$Name:	82	L_Kayser.wav,		0, 0.55, 1,  50, 400	; UD-8 Kayser Laser fired&lt;br /&gt;
$Name:	83	L_Circle.wav,		0, 0.50, 1,  50, 400	; GTW-19 Circe laser fired&lt;br /&gt;
$Name:	84	L_Lich.wav,		0, 0.50, 1,  50, 400	; GTW-83 Lich laser fired&lt;br /&gt;
$Name:	85	hit_1.wav,		0, 0.90, 1, 200, 800	; Laser impact&lt;br /&gt;
$Name:	86	L_Vasmid.wav,		0, 0.50, 1,  50, 400	; Subach-HLV Vasudan laser&lt;br /&gt;
$Name:	87	m_wasp.wav,		0, 0.80, 1,  50, 400	; rockeye missile launch&lt;br /&gt;
$Name:	88	boom_2.wav,		0, 0.80, 1, 500, 1000	; missile impact 1&lt;br /&gt;
$Name:	89	m_mag.wav,		0, 0.80, 1,  50, 400	; mag pulse missile launch&lt;br /&gt;
$Name:	90	m_fury.wav,		0, 0.80, 1,  50, 400	; fury missile launch&lt;br /&gt;
$Name:	91	m_shrike.wav,		0, 0.80, 1,  50, 400	; shrike missile launch&lt;br /&gt;
$Name:	92	m_angel.wav,		0, 0.80, 1,  50, 400	; angel fire missile launch&lt;br /&gt;
$Name:	93	m_cluster.wav,		0, 0.80, 1,  50, 400	; cluster bomb launch&lt;br /&gt;
$Name:	94	m_clusterb.wav,		0, 0.80, 1,  50, 400	; cluster baby bomb launch&lt;br /&gt;
$Name:	95	m_stiletto.wav,		0, 0.80, 1,  50, 400	; stiletto bomb launch&lt;br /&gt;
$Name:	96	m_tsunami.wav,		0, 0.80, 1,  50, 400	; tsunami bomb launch&lt;br /&gt;
$Name:	97	m_harbinger.wav,	0, 0.80, 1,  50, 400	; harbinger bomb launch&lt;br /&gt;
$Name:	98	m_mega.wav,		0, 0.80, 1,  50, 400	; mega wokka launch&lt;br /&gt;
$Name:	99	counter_1.wav,		0, 0.70, 1,  50, 200	; countermeasure 1 launch&lt;br /&gt;
$Name:	100	l_alien1.wav,		0, 0.60, 1,  50, 400	; Shivan light laser (3d sound)&lt;br /&gt;
$Name:	101	clusterboom.wav,	0, 0.80, 1, 750, 2000	; shockwave ignition (3d sound)&lt;br /&gt;
$Name:	102	m_swarm.wav,		0, 0.70, 1,  50, 400	; swarm missile sound (3d sound)&lt;br /&gt;
$Name:	103	l_alien2.wav,		0, 0.60, 1, 100, 400	; Shivan heavy laser (3d sound)&lt;br /&gt;
$Name:	104	capital4.wav,		0, 0.70, 1, 500, 1500	; Vasudan SuperCap engine (3d sound)&lt;br /&gt;
$Name:	105	capital5.wav,		0, 0.70, 1, 500, 1500	; Shivan SuperCap engine (3d sound)&lt;br /&gt;
$Name:	106	capital6.wav,		0, 0.70, 1, 500, 1500	; Terran SuperCap engine (3d sound)&lt;br /&gt;
$Name:	107	l_vaslight.wav,		0, 0.60, 1,  50, 400	; Vasudan light laser fired (3d sound)&lt;br /&gt;
$Name:	108	l_alien3.wav,		0, 0.60, 1,  50, 400	; Shivan heavy laser (3d sound)&lt;br /&gt;
$Name:	109	shockwave.wav,		0, 1.00, 1,  50, 800	; ** shockwave impact (3d sound)&lt;br /&gt;
$Name:	110	Turret_T1.wav,		0, 0.50, 2, 200, 1000	; TERRAN TURRET 1&lt;br /&gt;
$Name:	111	Turret_T2.wav,		0, 0.50, 2, 200, 1000	; TERRAN TURRET 2&lt;br /&gt;
$Name:	112	Turret_V1.wav,		0, 0.50, 2, 200, 1000	; VASUDAN TURRET 1&lt;br /&gt;
$Name:	113	Turret_V2.wav,		0, 0.50, 2, 200, 1000	; VASUDAN TURRET 2&lt;br /&gt;
$Name:	114	Turret_S1.wav,		0, 0.50, 2, 200, 1000	; SHIVAN TURRET 1&lt;br /&gt;
$Name:	115	paintloop.wav,		0, 0.60, 1,  50, 200	; targeting laser loop sound&lt;br /&gt;
$Name:	116	FlakLaunch.wav,		0, 0.60, 1, 250, 1000	; Flak Gun Launch&lt;br /&gt;
$Name:	117	boom_4.wav,		0, 0.80, 1, 400, 800	; Flak Gun Impact&lt;br /&gt;
$Name:	118	m_emp.wav,		0, 0.60, 1,  50, 400	; EMP Missle&lt;br /&gt;
$Name:	119	Escape.wav,		0, 0.60, 1, 200, 600	; Escape Pod Drone&lt;br /&gt;
$Name:	120	Vaporize1.wav,		0, 0.70, 0		; Beam Hit 1&lt;br /&gt;
$Name:	121	beam_loop.wav,		0, 0.70, 2, 1500, 3000	; beam loop&lt;br /&gt;
$Name:	122	beam_up.wav,		0, 0.70, 2, 1500, 3000	; beam power up&lt;br /&gt;
$Name:	123	beam_down.wav,		0, 0.70, 2, 1500, 3000	; beam power down&lt;br /&gt;
$Name:	124	beam_shot1.wav,		0, 0.70, 2, 1500, 2500	; Beam shot 1&lt;br /&gt;
$Name:	125	beam_shot2.wav,		0, 0.70, 2, 1500, 2500	; Beam shot 2&lt;br /&gt;
;Ship Engine Sounds section&lt;br /&gt;
$Name:	126	ship_a1.wav,		0, 0.60, 1, 200, 400	; Terran fighter engine (3d sound)&lt;br /&gt;
$Name:	127	ship_a2.wav,		0, 0.70, 1, 300, 600	; Terran bomber engine (3d sound)&lt;br /&gt;
$Name:	128	ship_a3.wav,		0, 0.80, 1, 400, 800	; Terran cruiser engine (3d sound)&lt;br /&gt;
$Name:	129	ship_b1.wav,		0, 0.70, 1, 200, 400	; Vasudan fighter engine (3d sound)&lt;br /&gt;
$Name:	130	ship_b2.wav,		0, 0.80, 1, 300, 600	; Vasudan bomber engine (3d sound)&lt;br /&gt;
$Name:	131	ship_b3.wav,		0, 0.80, 1, 400, 800	; Vasudan cruiser engine (3d sound)&lt;br /&gt;
$Name:	132	ship_c1.wav,		0, 0.60, 1, 200, 400	; Shivan fighter engine (3d sound)&lt;br /&gt;
$Name:	133	ship_c2.wav,		0, 0.70, 1, 300, 600	; Shivan bomber engine (3d sound)&lt;br /&gt;
$Name:	134	ship_c3.wav,		0, 0.80, 1, 400, 800	; Shivan cruiser engine (3d sound)&lt;br /&gt;
$Name:	135	beacon.wav,		0, 0.60, 1, 300, 600	; Repair ship beacon/engine sound (3d sound)&lt;br /&gt;
$Name:	136	capital1.wav,		0, 0.70, 1, 500, 1500	; Terran capital engine (3d sound)&lt;br /&gt;
$Name:	137	capital2.wav,		0, 0.70, 1, 500, 1500	; Vasudan capital engine (3d sound)&lt;br /&gt;
$Name:	138	capital3.wav,		0, 0.70, 1, 500, 1500	; Shivan capital engine (3d sound)&lt;br /&gt;
; Electrical arc sound fx on the debris pieces&lt;br /&gt;
$Name:	139	Arc_01.wav,		0, 0.30, 2, 200, 500	; ** 0.10 second spark sound effect (3d sound)&lt;br /&gt;
$Name:	140	Arc_02.wav,		0, 0.30, 2, 200, 500	; ** 0.25 second spark sound effect (3d sound)&lt;br /&gt;
$Name:	141	Arc_03.wav,		0, 0.30, 2, 200, 500	; ** 0.50 second spark sound effect (3d sound)&lt;br /&gt;
$Name:	142	Arc_04.wav,		0, 0.30, 2, 200, 500	; ** 0.75 second spark sound effect (3d sound)&lt;br /&gt;
$Name:	143	Arc_05.wav,		0, 0.30, 2, 200, 500	; ** 1.00 second spark sound effect (3d sound)&lt;br /&gt;
; Beam Sounds&lt;br /&gt;
$Name:	144	BT_LTerSlash.wav,	0, 0.70, 2, 1500, 3000	; LTerSlash 	beam loop&lt;br /&gt;
$Name:	145	BT_TerSlash.wav,	0, 0.70, 2, 1500, 3000	; TerSlash	beam loop&lt;br /&gt;
$Name:	146	BT_SGreen.wav,		0, 0.70, 2, 1500, 3000	; SGreen 	beam loop&lt;br /&gt;
$Name:	147	BT_BGreen.wav,		0, 0.70, 2, 1500, 3000	; BGreen	beem loop&lt;br /&gt;
$Name:	148	BT_BFGreen.wav,		0, 0.70, 2, 1500, 3000	; BFGreen	been loop&lt;br /&gt;
$Name:	149	BT_AntiFtr.wav,		0, 0.70, 2, 1500, 3000	; Antifighter 	beam loop&lt;br /&gt;
$Name:	150	BT_up_1.wav,		0, 0.60, 2, 1500, 3000	; 1 sec		warm up&lt;br /&gt;
$Name:	151	BT_up_1.5.wav,		0, 0.60, 2, 1500, 3000	; 1.5 sec 	warm up&lt;br /&gt;
$Name:	152	BT_up_2.5.wav,		0, 0.60, 2, 1500, 3000	; 2.5 sec 	warm up&lt;br /&gt;
$Name:	153	BT_up_3.wav,		0, 0.60, 2, 1500, 3000	; 3 sec 	warm up&lt;br /&gt;
$Name:	154	BT_up_3.5.wav,		0, 0.60, 2, 1500, 3000	; 3.5 sec 	warm up&lt;br /&gt;
$Name:	155	BT_up_5.wav,		0, 0.60, 2, 1500, 3000	; 5 sec 	warm up&lt;br /&gt;
$Name:	156	BT_dwn_1.wav,		0, 0.70, 2, 2000, 3000	; LTerSlash	warm down&lt;br /&gt;
$Name:	157	BT_dwn_2.wav,		0, 0.70, 2, 2000, 3000	; TerSlash	warm down&lt;br /&gt;
$Name:	158	BT_dwn_3.wav,		0, 0.70, 2, 2000, 3000	; SGreen	warm down&lt;br /&gt;
$Name:	159	BT_dwn_4.wav,		0, 0.70, 2, 2000, 3000	; BGreen	warm down&lt;br /&gt;
$Name:	160	BT_dwn_5.wav,		0, 0.70, 2, 2000, 3000	; BFGreen	warm down&lt;br /&gt;
$Name:	161	BT_dwn_6.wav,		0, 0.70, 2, 2000, 3000	; T_AntiFtr	warm down&lt;br /&gt;
$Name:	162	Empty,			0, 0.50, 0&lt;br /&gt;
$Name:	163	Empty,			0, 0.50, 0&lt;br /&gt;
$Name:	164	Empty,			0, 0.50, 0&lt;br /&gt;
$Name:	165	Empty,			0, 0.50, 0&lt;br /&gt;
$Name:	166	Empty,			0, 0.50, 0&lt;br /&gt;
$Name:	167	Empty,			0, 0.50, 0&lt;br /&gt;
$Name:	168	Empty,			0, 0.50, 0&lt;br /&gt;
$Name:	169	Empty,			0, 0.50, 0&lt;br /&gt;
$Name:	170	Empty,			0, 0.50, 0&lt;br /&gt;
$Name:	171	Empty,			0, 0.50, 0&lt;br /&gt;
$Name:	172	Empty,			0, 0.50, 0&lt;br /&gt;
$Name:	173	SupNova1.wav,		0, 1.00, 0		; SuperNova (distant)&lt;br /&gt;
$Name:	174	SupNova2.wav,		0, 1.00, 0		; SuperNova (shockwave)&lt;br /&gt;
$Name:	175	ship_c4.wav,		0, 0.80, 1, 400, 800	; Shivan large engine (3d sound)&lt;br /&gt;
$Name:	176	ship_c5.wav,		0, 0.80, 1, 400, 1000	; Shivan large engine (3d sound)&lt;br /&gt;
$Name:	177	BS_SRed.wav,		0, 0.70, 2, 1500, 3000	; SRed 		beam loop&lt;br /&gt;
$Name:	178	BS_LRed.wav,		0, 0.70, 2, 1500, 3000	; LRed		beam loop&lt;br /&gt;
$Name:	179	BS_AntiFtr.wav,		0, 0.70, 2, 1500, 3000	; Antifighter	beam loop&lt;br /&gt;
$Name:	180	Thunder_01.wav,		0, 0.70, 0		; Thunder 1 sound in neblua&lt;br /&gt;
$Name:	181	Thunder_02.wav,		0, 0.70, 0		; Thunder 2 sound in neblua&lt;br /&gt;
$Name:	182	BS_up_1.wav,		0, 0.60, 2, 1500, 3000	; 1 sec 	warm up&lt;br /&gt;
$Name:	183	BS_up_1.5.wav,		0, 0.60, 2, 1500, 3000	; 1.5 sec 	warm up&lt;br /&gt;
$Name:	184	BS_up_3.wav,		0, 0.60, 2, 1500, 3000	; 3 sec 	warm up&lt;br /&gt;
$Name:	185	Commnode.wav,		0, 0.60, 1, 200,  500	; Shivan Commnode&lt;br /&gt;
$Name:	186	Pirate.wav,		0, 0.60, 1, 400,  1000	; Volition PirateShip&lt;br /&gt;
$Name:	187	BS_dwn_1.wav,		0, 0.70, 2, 2000, 3000	; SRed 		warm down&lt;br /&gt;
$Name:	188	BS_dwn_2.wav,		0, 0.70, 2, 2000, 3000	; LRed 		warm down&lt;br /&gt;
$Name:	189	BS_dwn_3.wav,		0, 0.70, 2, 2000, 3000	; AntiFtr	warm down&lt;br /&gt;
$Name:	190	Inst1.wav,		0, 0.80, 1, 500, 2000	; Instellation 1&lt;br /&gt;
$Name:	191	Inst2.wav,		0, 0.80, 1, 500, 2000	; Instellation 2&lt;br /&gt;
&lt;br /&gt;
;SCP ADDED SOUNDS START HERE&lt;br /&gt;
$Name:  200     m_load.wav,		0, 0.60, 1, 10, 50	; Ballistic Weapon Rearm Start&lt;br /&gt;
$Name:	201	m_lock.wav,		0, 0.50, 1, 10, 50	; Ballistic Weapon Rearm&lt;br /&gt;
;&lt;br /&gt;
#Game Sounds End&lt;br /&gt;
;&lt;br /&gt;
#Interface Sounds Start&lt;br /&gt;
$Name:	0	user_c.wav,		0, 0.70, 0		; mouse click&lt;br /&gt;
$Name:	1	empty,			0, 0.70, 0		; pick up a ship icon (not used)&lt;br /&gt;
$Name:	2	load01.wav,		0, 0.60, 0		; drop a ship icon on a wing slot&lt;br /&gt;
$Name:	3	unload01.wav,		0, 0.60, 0		; drop a ship icon back to the list&lt;br /&gt;
$Name:	4	beep_4.wav,		0, 0.70, 0		; press briefing, ship selection or weapons bar (top-left)&lt;br /&gt;
$Name:	5	user_c.wav,		0, 0.70, 0		; Switching to a new screen, but not commit&lt;br /&gt;
$Name:	6	beep_4.wav,		0, 0.70, 0		; help pressed&lt;br /&gt;
$Name:	7	commit.wav,		0, 0.60, 0		; commit pressed&lt;br /&gt;
$Name:	8	user_c.wav,		0, 0.70, 0		; prev/next pressed&lt;br /&gt;
$Name:	9	user_c.wav,		0, 0.70, 0		; scroll pressed (and scroll)&lt;br /&gt;
$Name:	10	fail.wav,		0, 0.70, 0		; general failure sound for any event&lt;br /&gt;
$Name:	11	shipview.wav,		0, 0.50, 0		; ship animation starts (ie text and ship first appear)&lt;br /&gt;
$Name:	12	main_amb.wav,		0, 0.60, 0		; ambient sound for the Terran main hall (looping)&lt;br /&gt;
$Name:	13	vas_amb.wav,		0, 0.60, 0		; ambient sound for the Vasudan main hall (looping)&lt;br /&gt;
$Name:	14	user_a.wav,		0, 0.70, 0		; brief stage change&lt;br /&gt;
$Name:	15	user_i.wav,		0, 0.70, 0		; brief stage change fail&lt;br /&gt;
$Name:	16	beep_3.wav,		0, 0.70, 0		; selet brief icon&lt;br /&gt;
$Name:	17	user_o.wav,		0, 0.50, 0		; user_over (mouse over a control)&lt;br /&gt;
$Name:	18	user_c.wav,		0, 0.70, 0		; user_click (mouse selects a control)&lt;br /&gt;
$Name:	19	reset.wav,		0, 0.70, 0		; reset (or similar button) pressed&lt;br /&gt;
$Name:	20	textdraw.wav,		0, 0.60, 0		; briefing text wipe&lt;br /&gt;
$Name:	21	Lift_Mix.wav,		0, 0.50, 0		; main hall - elevator&lt;br /&gt;
$Name:	22	weapview.wav,		0, 0.60, 0		; weapon animation starts&lt;br /&gt;
$Name:	23	dooropen.wav,		0, 0.50, 0		; door in main hall opens&lt;br /&gt;
$Name:	24	doorclose.wav,		0, 0.50, 0		; door in main hall closes&lt;br /&gt;
$Name:	25	itemdraw.wav,		0, 0.50, 0		; glow in main hall opens&lt;br /&gt;
$Name:	26	Crane_1.wav,		0, 0.50, 0		; main hall - crane 1&lt;br /&gt;
$Name:	27	sub_amb.wav,		0, 0.60, 0		; ambient sound for menus off the main hall (looping)&lt;br /&gt;
$Name:	28	user_c.wav,		0, 0.70, 0		; popup dialog box appeared&lt;br /&gt;
$Name:	29	user_c.wav,		0, 0.70, 0		; popup dialog box goes away&lt;br /&gt;
$Name:	30	1_yes.wav,		0, 1.00, 0		; voice clip played when volume slider changes&lt;br /&gt;
$Name:	31	Crane_2.wav,		0, 0.50, 0		; main hall - crane 2&lt;br /&gt;
$Name:	32	Option1.wav,		0, 0.70, 0		; main hall options - mouse on &lt;br /&gt;
$Name:	33	Option2.wav,		0, 0.70, 0		; main hall options - mouse off&lt;br /&gt;
$Name:	34	Techroom1.wav,		0, 0.70, 0		; main hall tech room - mouse on&lt;br /&gt;
$Name:	35	Techroom2.wav,		0, 0.70, 0		; main hall tech room - mouse off&lt;br /&gt;
$Name:	36	Exitopen.wav,		0, 0.60, 0		; main hall exit open&lt;br /&gt;
$Name:	37	Exitclose.wav,		0, 0.60, 0		; main hall exit close&lt;br /&gt;
$Name:	38	pa_1.wav,		0, 0.50, 0		; main hall random intercom 1&lt;br /&gt;
$Name:	39	pa_2.wav,		0, 0.50, 0		; main hall random intercom 2&lt;br /&gt;
$Name:	40	pa_3.wav,		0, 0.50, 0		; main hall random intercom 3&lt;br /&gt;
$Name:	41	highlight.wav,		0, 0.40, 0		; spinning highlight in briefing&lt;br /&gt;
$Name:	42	noiz.wav,		0, 0.40, 0		; static in a briefing stage cut&lt;br /&gt;
$Name:	43	Camp_on.wav,		0, 0.70, 0		; main hall campaign - mouse on&lt;br /&gt;
$Name:	44	Camp_off.wav,		0, 0.70, 0		; main hall campaign - mouse off&lt;br /&gt;
$Name:	45	V_Hatch_Open.wav,	0, 0.70, 0		; vasudan hall - exit open  &lt;br /&gt;
$Name:	46	V_Hatch_Close.wav,	0, 0.70, 0		; vasudan hall - exit close&lt;br /&gt;
$Name:	47	V_Roll_Open.wav,	0, 0.80, 0		; vasudan hall - hatch open &lt;br /&gt;
$Name:	48	V_Roll_Close.wav,	0, 0.80, 0		; vasudan hall - hatch close&lt;br /&gt;
$Name:	49	V_Lift_Up.wav,		0, 0.70, 0		; vasudan hall - lift up&lt;br /&gt;
$Name:	50	V_Lift_Down.wav,	0, 0.70, 0		; vasudan hall - lift down&lt;br /&gt;
$Name:	51	V_Lite_On.wav,		0, 0.70, 0		; vasudan hall - glow on&lt;br /&gt;
$Name:	52	V_Lite_Off.wav,		0, 0.70, 0		; vasudan hall - glow off&lt;br /&gt;
$Name:	53	Skiff.wav,		0, 0.70, 0		; vasudan hall - skiff loop&lt;br /&gt;
$Name:	54	V_Map_On.wav,		0, 0.70, 0		; vasudan hall - screen on&lt;br /&gt;
$Name:	55	V_Map_Off.wav,		0, 0.70, 0		; vasudan hall - screen off&lt;br /&gt;
$Name:	56	V_Head_1.wav,		0, 0.70, 0		; vasudan hall - vasudan greeting&lt;br /&gt;
$Name:	57	V_Head_2.wav,		0, 0.70, 0		; vasudan hall - vasudan bye&lt;br /&gt;
$Name:	58	V_Pa_01.wav,		0, 0.70, 0		; vasudan hall - vasudan pa 1&lt;br /&gt;
$Name:	59	V_Pa_02.wav,		0, 0.70, 0		; vasudan hall - vasudan pa 2&lt;br /&gt;
$Name:	60	V_Pa_03.wav,		0, 0.70, 0		; vasudan hall - vasudan pa 3&lt;br /&gt;
$Name:	61	bup.wav,		0, 0.90, 0		; bup bup bup-bup bup bup&lt;br /&gt;
$Name:	62	thankyou.wav,		0, 0.90, 0		; thankyou&lt;br /&gt;
$Name:	63	V_Exit_Open.wav,	0, 0.70, 0		; vasudan hall - exit open&lt;br /&gt;
$Name:	64	V_Exit_Close.wav,	0, 0.70, 0		; vasudan hall - exit close&lt;br /&gt;
;&lt;br /&gt;
#Interface Sounds End&lt;br /&gt;
;&lt;br /&gt;
; Each species can have up to 4 different flyby sounds&lt;br /&gt;
; NOTE : the parse code expects to see exactly 2 sounds for terran, then 2 for vasudan, then 2 for shivan&lt;br /&gt;
;        the first sound for each species is the fighter/small flyby sound. the second is the bomber/big flyby sound&lt;br /&gt;
#Flyby Sounds Start&lt;br /&gt;
&lt;br /&gt;
$Terran:	0	T_flyby1.wav,	0, 0.75, 1, 200, 400	; * Terran ship1 flyby player sound (3d sound)&lt;br /&gt;
$Terran:	1	T_flyby2.wav,	0, 0.75, 1, 200, 400	; * Terran ship1 flyby player sound (3d sound)&lt;br /&gt;
&lt;br /&gt;
$Vasudan:	0	V_flyby1.wav,	0, 0.85, 1, 200, 400	; * Vasudan ship1 flyby player sound (3d sound)&lt;br /&gt;
$Vasudan:	1	V_flyby2.wav,	0, 0.85, 1, 200, 400	; * Vasudan ship1 flyby player sound (3d sound)&lt;br /&gt;
&lt;br /&gt;
$Shivan:	0	S_flyby1.wav,	0, 0.75, 1, 200, 400	; * SHIVAN ship1 flyby player sound (3d sound)&lt;br /&gt;
$Shivan:	1	S_flyby2.wav,	0, 0.75, 1, 200, 400	; * SHIVAN ship1 flyby player sound (3d sound)&lt;br /&gt;
&lt;br /&gt;
#Flyby Sounds End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=46234</id>
		<title>Particle Effects</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=46234"/>
		<updated>2017-10-05T08:22:57Z</updated>

		<summary type="html">&lt;p&gt;M!m: Overhaul particle effect documentation based on comments provided by Spoon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2016-09-02|417eb20}}&lt;br /&gt;
&lt;br /&gt;
Particle Effects is a SCP feature which allows to define custom particle effects that can be assigned to various engine properties.&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-part.tbm. This table type does not have a main table like the other types. All particle effects must be specified in modular tables. Currently there is no support for the usual &#039;&#039;+nocreate&#039;&#039; ability the other modular tables have but that will be added in the future. Parts of this documentation are written with with &#039;&#039;+nocreate&#039;&#039; in mind for when that is implemented.&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=General Info=&lt;br /&gt;
*Begins with #Particle Effects&lt;br /&gt;
*Contains zero or more particle effect definitions&lt;br /&gt;
*Ends with #End&lt;br /&gt;
&lt;br /&gt;
Particle effects are created by specifying a name and a type. The type dictates which values are valid and will be described below.&lt;br /&gt;
&lt;br /&gt;
==$Effect:==&lt;br /&gt;
*Creates a new effect and specifies its name. The name must be at least one character long.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Type:===&lt;br /&gt;
*Sets the type of this effect. See [[#Effect Types|Effect Types]] for possible values.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Effect Types=&lt;br /&gt;
There are multiple different types of effects. They are specified by passing the given name to &#039;&#039;$Type&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Single==&lt;br /&gt;
This effect type creates exactly one particle per processing step.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Duration:===&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
===+Delay:===&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Composite==&lt;br /&gt;
A composite effects contains multiple other effects which are all displayed at the same time. This is useful if you want to create complex effects that require more than one individual particle effect. The amount of child effects is not limited. This type currently does not support &#039;&#039;+nocreate&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===+Child effect:===&lt;br /&gt;
*This specifies a child effect that should be added to the composite effect. The effect is specified using [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Cone==&lt;br /&gt;
This effects creates multiple particles which travel in a cone around a specific direction. The particles are created in a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution] around the direction vector. That means that more particle are created along the direction vector than far away from it. The velocity of a particle is scaled based on the angle it is away from the direction vector. This may be changed in the future to allow different effects.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Deviation:===&lt;br /&gt;
*Sets the standard deviation from the direction vector.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;, in degrees&lt;br /&gt;
&lt;br /&gt;
===+Velocity===&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Number===&lt;br /&gt;
*Sets the amount of created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Direction===&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it is currently facing.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal vector of the particle source. This data may not exist for all sources. The debug log file will contain the warning message &amp;quot;&amp;lt;tt&amp;gt;Effect &#039;&amp;lt;EffectName&amp;gt;&#039; tried to use normal direction for source without a normal!&amp;lt;/tt&amp;gt;&amp;quot; if an effect tries to use the normal vector without it existing.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot. This direction requires the normal for work properly so the same warning message as above may appear in your log if the source has no normal vector assigned to it.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
===+Trail effect:===&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Sphere==&lt;br /&gt;
This effect creates particles in a sphere shape around the center.&lt;br /&gt;
&lt;br /&gt;
===+Filename:===&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
===+Size:===&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Lifetime:===&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===+Velocity===&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Number===&lt;br /&gt;
*Sets the amount of created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
===+Direction===&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it is currently facing.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal vector of the particle source. This data may not exist for all sources. The debug log file will contain the warning message &amp;quot;&amp;lt;tt&amp;gt;Effect &#039;&amp;lt;EffectName&amp;gt;&#039; tried to use normal direction for source without a normal!&amp;lt;/tt&amp;gt;&amp;quot; if an effect tries to use the normal vector without it existing.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot. This direction requires the normal for work properly so the same warning message as above may appear in your log if the source has no normal vector assigned to it.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
===+Trail effect:===&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Inline effect creation==&lt;br /&gt;
At some places in this table a particle effect may be created within another particle effect. This is used for composite effects and particle trails. If inline creation is valid for an option then you may either specify a name of a previously defined effect or use &#039;&#039;&#039;$New Effect&#039;&#039;&#039; which will create a new, unnamed effect. If a name is specified then that effect must be already defined. In order to ensure that the effect is always defined no matter in which order the effect tables are parsed the effect should be defined in the same table. Some options using this construct require a specific type of effect. That will be noted in the documentation of the option.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;$New Effect&#039;&#039;&#039; is used then a new unnamed effect is created. If the surrounding option has not forced an effect type then you can specify it using the standard syntax described above. All options are the same as if the effect would have been parsed in the normal way. &#039;&#039;+nocreate&#039;&#039; is not valid within this element.&lt;br /&gt;
&lt;br /&gt;
==Random range==&lt;br /&gt;
The particle effect system uses randomization to provide variation to the created particles. This is implemented by letting the mod author specify the values for the random distribution. There are different types of distributions which are explained below.&lt;br /&gt;
&lt;br /&gt;
===Uniform random range===&lt;br /&gt;
*This accepts 1 or 2 values. If one value is used then the random range always returns that value. If two values are specified then a uniformly distributed random value will be picked from the range.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Random values)&#039;&#039;&#039;, a list of floating point values. Either one or two values.&lt;br /&gt;
**Example: &#039;&#039;(4 20)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Normal distribution random range===&lt;br /&gt;
*This accepts 1 or 2 values. This random range generates values according to a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution]. The first value specified the mean value of the distribution. The second value specifies the standard deviation of the distribution, this defaults to 1.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;(Random values)&#039;&#039;&#039;, a list of floating point values. Either one or two values.&lt;br /&gt;
**Example: &#039;&#039;(4 20)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Particle Effects&lt;br /&gt;
&lt;br /&gt;
$Effect: MassDriverImpact&lt;br /&gt;
$Type: Cone&lt;br /&gt;
	+Filename: exp05&lt;br /&gt;
	+Size: (5 7)&lt;br /&gt;
	+Lifetime: (0.6)&lt;br /&gt;
	+Deviation: 5&lt;br /&gt;
	+Velocity: (500 700)&lt;br /&gt;
	+Number: (20 30)&lt;br /&gt;
	+Direction: Reflected&lt;br /&gt;
	+Trail effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp20&lt;br /&gt;
			+Size: (10)&lt;br /&gt;
			+Lifetime: (1)&lt;br /&gt;
			+Duration: Always&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$Effect: ApocalypseIgnition&lt;br /&gt;
$Type: Single&lt;br /&gt;
	+Filename: exp20&lt;br /&gt;
	+Size: (10 20)&lt;br /&gt;
	&lt;br /&gt;
$Effect: ApocalypseHomed&lt;br /&gt;
$Type: Composite&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp05&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp06b&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
			+Delay: (8 15)&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Game_settings.tbl&amp;diff=46233</id>
		<title>Game settings.tbl</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Game_settings.tbl&amp;diff=46233"/>
		<updated>2017-10-05T07:59:28Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add documentation for $Target Version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2015-11-21|71cf169}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;game_settings.tbl&#039;&#039;&#039;, also known as mod.tbl, defines options that can be changed globally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-mod.tbm&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
==#GAME SETTINGS==&lt;br /&gt;
Optional. Contains settings that affect how the engine works.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Target Version:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
Specifies the minimum version of FreeSpace Open that this mod supports. If the version specified here is greater than the version of the current build, an error message is displayed.&lt;br /&gt;
}}&lt;br /&gt;
{{Table381|&lt;br /&gt;
The $Minimum version option has been renamed to $Target Version. The old name is kept with the same functionality for backwards-compatibility.&lt;br /&gt;
&lt;br /&gt;
The target version specifies what version of the FSO engine this mod was created for. It will be used by the engine to enable or disable backwards-incompatible changes by default. The default value is 2.0 which specifies that the mod targets the retail engine version.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Major:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Required. Sets the major component of the target version.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;3&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Minor:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Required. Sets the minor component of the target version.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;7&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Build:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Required. Sets the build component of the target version.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;3&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Revision:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
Optional. Sets the revision component of the target version. If no revision is given then all builds of that release are supported (even nightly builds if there are any).&lt;br /&gt;
For nightly builds this is the date in YYYYMMDD format.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Example: &#039;&#039;&#039;&#039;&#039;20151121&#039;&#039;&#039;&#039;&#039; (for a minimum version of 3.7.3.20151121)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==#CAMPAIGN SETTINGS==&lt;br /&gt;
Optional. This group contains various Campaign related settings and overrides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Default Campaign File Name:===&lt;br /&gt;
Defines which campaign will be selected by default for new pilots. A file extension is not needed and, if present, is removed by the code.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===#Ignored Campaign File Names===&lt;br /&gt;
Optional. Defines which campaigns, if present, will not appear in the Campaign Room. Only single-player campaigns can be ignored. &#039;&#039;File extensions are required.&#039;&#039;&lt;br /&gt;
{{Table371|As of 3.7.1, file extensions are not required and, if present, are removed by the code.}}&lt;br /&gt;
====$Campaign File Name:====&lt;br /&gt;
File name of the campaign to ignore. Multiple entries may exist.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Red-alert applies to delayed ships:===&lt;br /&gt;
Controls whether red-alert saved statistics (hitpoints, weapons, subsystem strengths) will be restored for ships that are not present at mission start.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#HUD SETTINGS==&lt;br /&gt;
Optional. This group contains various HUD behavior settings and overrides&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Directive Wait Time:===&lt;br /&gt;
*Defines how long the game will wait before displaying a directive.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Values: &#039;&#039;&#039;&#039;&#039;Greater than or equal to 0 ms&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Cutscene camera displays HUD:===&lt;br /&gt;
Show the HUD when the cutscene camera is enabled.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In earlier versions of the code, this option was controlled by $Cutscene camera disables HUD: and had a default of YES.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Full color head animations:===&lt;br /&gt;
Enables full-color head ANIs. Normal head ANIs will appear in gray.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In earlier versions of the code, this option was controlled by $Color head animations with hud colors: and had a default of YES.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#SEXP SETTINGS==&lt;br /&gt;
Optional. This group contains SEXP settings and overrides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Loop SEXPs Then Arguments:===&lt;br /&gt;
Flips how when-argument settings loop. See: [http://www.hard-light.net/forums/index.php?topic=79602.0 SEXP Argument changes via mod.tbl] &lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Use Alternate Chaining Behavior:===&lt;br /&gt;
When set, this makes the event chaining behavior act as people expected it to be in [http://scp.indiegames.us/mantis/view.php?id=82 Mantis #82].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#GRAPHICS SETTINGS==&lt;br /&gt;
Optional. This group contains settings related to graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Enable External Shaders:===&lt;br /&gt;
Enables the use of external shader files. By default, the engine will use the built-in shaders.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Default Detail Level:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
Determines which graphics detail level preset (low, medium, high, very high) acts as the default for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; (0-3)&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;3&#039;&#039;&#039;&#039;&#039; (very high)&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Briefing Window FOV:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
Determines the FOV in the briefing Icon window. Retail default for this is 0.29375, previous versions of FSO used a value of 0.5.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (0.0 to 1.0)&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.29375&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Generic Pain Flash Factor:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
Determines the intensity of the pain red flash when the player is hit.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;1.0&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===$Shield Pain Flash Factor:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
Determines the intensity of a pain flash when the player&#039;s shields are hit. Color will match the current ships shield color defined in ships.tbl. A value of 0 will give retail behavior (no shield effect). Positive values will cause the effect to start at full intensity at full shields and go to next to no intensity at zero shields. Negative values will cause no effect at full shields and full effect at no shields. Values should be kept between -1.0 and 1.0 for good pilot visibility.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.0&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==#SOUND SETTINGS==&lt;br /&gt;
Optional. This group contains sound-related settings&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Default Sound Volume:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the default sound fx volume for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, between 0.0 and 1.0&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;1.0&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Default Music Volume:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the default music volume for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, between 0.0 and 1.0&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.5&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Default Voice Volume:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the default voice volume for new pilots.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, between 0.0 and 1.0&amp;lt;br&amp;gt;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;0.7&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#FRED SETTINGS==&lt;br /&gt;
Optional. This group contains settings for FRED. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Disable Hard Coded Message Head Ani Files:===&lt;br /&gt;
{{table371|&lt;br /&gt;
If set, FRED will not fill the head ani selection in the Event Editor with the retail head ani filenames.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==#OTHER SETTINGS==&lt;br /&gt;
Optional. This group contains miscellaneous settings. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Fixed Turret Collisions:===&lt;br /&gt;
Makes all hits to a turret&#039;s barrels count as hits to the turret subsystem. By default, this does not happen unless the point of impact falls inside the model radius of the turret&#039;s base.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Damage Impacted Subsystem First:===&lt;br /&gt;
If set, a hit to a physical subsystem will always deal damage to that subsystem first, even if another subsystem is closer to the point of impact. By default, the closest subsystem will always receive damage first.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default Value: &#039;&#039;&#039;&#039;&#039;NO&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Default ship select effect:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This specifies which effect to use for ship select animations when no .ani can be found, or the -ship_choice_3d commandline flag is active. This will default to the FS2 effect.&lt;br /&gt;
*Possible options are &amp;quot;FS2&amp;quot;, &amp;quot;FS1&amp;quot;, and &amp;quot;off&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
===$Default weapon select effect:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This specifies which effect to use for weapon select animations when no .ani can be found, or the -weapon_choice_3d commandline flag is active. This will default to the FS2 effect.&lt;br /&gt;
*Possible options are &amp;quot;FS2&amp;quot;, &amp;quot;FS1&amp;quot;, and &amp;quot;off&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
===$Weapons inherit parent collision group:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*When set to true, Weapons fired by a ship will inherit their parents&#039; collision group setting. Default is false.}}&lt;br /&gt;
&lt;br /&gt;
===$Flight controls follow eyepoint orientation:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Specifies that if the player ship&#039;s eyepoint happens to rotate into a non-standard orientation, pitch and yaw axes should stay relative to the eyepoint orientation, not the ship. Note that this does not affect the pitch/yaw turning speed, which always remains relative to the ship. Default is false.}}&lt;br /&gt;
&lt;br /&gt;
===$Beams Use Damage Factors:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Specifies that beam weapons will use the tabled damage factors for Armour, Shields and Subsystems. Default is false (i.e. all factors are treated as 1.0)}}&lt;br /&gt;
&lt;br /&gt;
===$Default fiction viewer UI:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Specifies which fiction viewer layout to use in missions that don&#039;t specify one. Possible values are as follows:&lt;br /&gt;
**&amp;quot;FS2&amp;quot;: Standard layout. Requires (2_)fictionviewer and (2_)fictionviewer-m to be present in data\interface.&lt;br /&gt;
**&amp;quot;WCS&amp;quot;: Moves the &amp;quot;Accept&amp;quot; button to the lower-left corner of the screen. Requires (2_)fictionviewerb and (2_)fictionviewer-mb to be present in data\interface.&lt;br /&gt;
**&amp;quot;auto&amp;quot;: Selects &amp;quot;WCS&amp;quot; if the appropriate files are present; otherwise, selects &amp;quot;FS2&amp;quot;. This is the default setting.}}&lt;br /&gt;
&lt;br /&gt;
==#END==&lt;br /&gt;
Required. The last line of the table must be #END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sample Entry==&lt;br /&gt;
&lt;br /&gt;
    #CAMPAIGN SETTINGS&lt;br /&gt;
    $Default Campaign File Name: NewCampaignFile&lt;br /&gt;
    &lt;br /&gt;
    #Ignored Campaign File Names&lt;br /&gt;
    $Campaign File Name: FreeSpace2.fc2&lt;br /&gt;
    &lt;br /&gt;
    #HUD SETTINGS&lt;br /&gt;
    $Directive Wait Time: 5000&lt;br /&gt;
    &lt;br /&gt;
    #SEXP SETTINGS&lt;br /&gt;
    $Loop SEXPs Then Arguments: True&lt;br /&gt;
    &lt;br /&gt;
    #OTHER SETTINGS&lt;br /&gt;
    $Fix Turret Collisions: True&lt;br /&gt;
    &lt;br /&gt;
    #END&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Weapons.tbl&amp;diff=45640</id>
		<title>Weapons.tbl</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Weapons.tbl&amp;diff=45640"/>
		<updated>2016-09-27T10:59:19Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add previously undocumented FOF spread options&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TableVersionGit|2016-06-05|cb9c669}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;weapons.tbl&#039;&#039;&#039; defines all of the weapon classes used in FSO.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-wep.tbm&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The weapons.tbl is responsible for defining the behavior of the numerous weapon effects used in FSO, including the amount of damage dealt, the firing rate, and graphical effects.&lt;br /&gt;
&lt;br /&gt;
This wiki page goes over all of the entries used exclusively in the weapons.tbl file. Hyperlinks to individual weapon creation/editing tutorials are provided when appropriate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Special Case Weapons==&lt;br /&gt;
===Beam Cannons===&lt;br /&gt;
&#039;&#039;&#039;REQUIRES:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;beam&amp;quot;&#039;&#039;&#039; flag&lt;br /&gt;
*&#039;&#039;&#039;[[weapons.tbl#$BeamInfo:|$BeamInfo:]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
See also: [http://www.hard-light.net/wiki/index.php/Tutorial_-_Beam_Weapons Tutorial - Beam Weapons]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Flak Guns===&lt;br /&gt;
&#039;&#039;&#039;REQUIRES:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;flak&amp;quot;&#039;&#039;&#039; flag&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;particle spew&amp;quot;&#039;&#039;&#039; flag&lt;br /&gt;
*Must have inner and outer radius defined to have any effect.&lt;br /&gt;
*A &#039;&#039;&#039;.pof&#039;&#039;&#039; model must be defined ( usually &#039;&#039;&#039;Hornet.pof&#039;&#039;&#039; )&lt;br /&gt;
**Note: the model is not actually used... Instead, it uses [[Weapons.tbl#$Pspew:|particle spew]]. Trails may also be added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==General Format==&lt;br /&gt;
*The weapons table consist of several sections&lt;br /&gt;
*All sections beginning with &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; need &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;End&#039;&#039;&#039; before the next section.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Primary Weapons&#039;&#039;&#039;&lt;br /&gt;
***Defines all &#039;&#039;&#039;standard primaries weapons&#039;&#039;&#039; as well as &#039;&#039;&#039;beam cannons&#039;&#039;&#039; and &#039;&#039;&#039;flak cannons&#039;&#039;&#039;.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Secondary Weapons&#039;&#039;&#039;&lt;br /&gt;
***Defines all &#039;&#039;&#039;secondary weapons&#039;&#039;&#039;.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Beam Weapons&#039;&#039;&#039;&lt;br /&gt;
***I haven&#039;t got any ideas for this one.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;[[Weapons.tbl#Countermeasures|Countermeasures]]&#039;&#039;&#039;&lt;br /&gt;
***Defines the used countermeasure.&lt;br /&gt;
**&#039;&#039;&#039;$Player Weapon Precedence&#039;&#039;&#039;&lt;br /&gt;
***Player Weapon Precedence is used in weapon selection when a default specified by the mission designer is not available to the player. The next weapon on the list is used in its place (assuming that weapon is allowed for the player).&lt;br /&gt;
&lt;br /&gt;
==Core Table==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Name:===&lt;br /&gt;
*This is the name of the weapon. If it&#039;s going to be used by the player, keep it under 12 characters so it doesn&#039;t spill over the HUD box.&amp;lt;br&amp;gt;Two special characters can be used in the name: &#039;&#039;&#039;#&#039;&#039;&#039; and &#039;&#039;&#039;@&#039;&#039;&#039;. Their usage details are the very same than inside the [[Ships.tbl#.24Name:_2|$Name field from Ships.tbl]].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====+nocreate====&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*In [[Modular Tables]] name can be followed by line &#039;&#039;&#039;+nocreate&#039;&#039;&#039; that prevent game from creating an incomplete entry by leaving the entry unread unless it already exists (either in Weapons.tbl or in earlier parsed *-wep.tbm files) by the time the *-wep.tbm is read.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Alt Name:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*An alternative name that can be referenced instead of $Name:&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Subtype:===&lt;br /&gt;
{{Table3610| &lt;br /&gt;
Specifies the weapon &#039;s subtype. Overrides the default subtype as specified by the #-section it is in (#Primary, #Secondary, #Beam Weapon, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
:Since the weapon subtype is already specified by the #-section it is in, this option is not particularly useful when the weapon is inside a #Primary or #Secondary section. However, it may be used to specify the weapon slot it uses on fighters/bombers for weapons that are normally capship only (such as beam cannons).}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Valid Entries: &lt;br /&gt;
:Primary&lt;br /&gt;
:Secondary}}&lt;br /&gt;
&lt;br /&gt;
===+Title:===&lt;br /&gt;
*This is the title of the weapon in the Weapons loadout screen. Only needed for player allowed weapons. Title may be anything.  Numerical value is a reference to translations in [[Tstrings.tbl]]&lt;br /&gt;
*Syntax: XSTR(&#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039;, -1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Description:===&lt;br /&gt;
*This is the description you see in the weapons loadout screen. Again, these aren&#039;t based on any hard numbers, just approximations. Only needed for player allowed weapons. Numerical value is a reference to translations in [[Tstrings.tbl]]&lt;br /&gt;
*Must be followed by &#039;&#039;&#039;$end_multi_text&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSTR(&lt;br /&gt;
&amp;quot;&#039;&#039;Standard Issue&lt;br /&gt;
&#039;&#039;Level 3 Hull Damage&lt;br /&gt;
&#039;&#039;Level 2 Shield Damage&#039;&#039;&amp;quot;, -1)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===+Tech Title:===&lt;br /&gt;
*Title of the weapon in the Tech room. Only needed for player allowed weapons.&lt;br /&gt;
*Syntax: XSTR(&#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039;, -1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Tech Anim:===&lt;br /&gt;
*Animation used for the weapon in the Tech room. Only needed for player allowed weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, animation filename&lt;br /&gt;
**Example: &#039;&#039;Tech_Subach_HL-7&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Tech Description:===&lt;br /&gt;
*Descriptive text you see in the tech room. Only needed for player allowed weapons. Numerical value is a reference to translations in [[Tstrings.tbl]]&lt;br /&gt;
*Must be followed by &#039;&#039;&#039;$end_multi_text&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSTR(&lt;br /&gt;
&amp;quot;&#039;&#039;The Subach-Innes HL-7...&#039;&#039;&amp;quot;, 3245)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Tech Model:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines model used in wing loadout screen for the weapon. 3D weapon models in the tech room have not yet been implemented.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
====+Closeup_Pos:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*How the model will show on the Loadout Screen. The position of the camera relative to the model center.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, three &#039;&#039;&#039;floats&#039;&#039;&#039;, x, y and z values respectively}}&lt;br /&gt;
&lt;br /&gt;
====+Closeup_Zoom:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*How the model will show on the Loadout Screen. How far the camera&#039;s zoomed in, defines camera&#039;s FOV.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, radians}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Selection Effect:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines which selection effect to use when the -weapon_choice_3d commandline flag is enabled or no ani can be found for the selected weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, either &amp;quot;FS1&amp;quot;, or &amp;quot;Off&amp;quot;. This defaults to the FS2 effect.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$HUD Image:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the picture used to represent the weapon in HUD loadout list&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Model File:===&lt;br /&gt;
*Filename of the model file (.pof) at data/models folder. Additional fields beginning from &#039;&#039;&#039;&#039;&#039;@Laser Bitmap:&#039;&#039;&#039;&#039;&#039; and ending to &#039;&#039;&#039;&#039;&#039;@Laser Tail Radius:&#039;&#039;&#039;&#039;&#039; are not needed if a model has been defined for the weapon.&lt;br /&gt;
*Standard primaries and beam cannons do not use specific models so for those the name is &#039;none&#039;.&lt;br /&gt;
*Flak weapons and secondaries use models, though the exact model is not important with the flak weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039; or &#039;&#039;none&#039;&#039;, model filename&lt;br /&gt;
**Example: &#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$POF target LOD:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the LOD (Level-Of-Detail) of the model used in HUD targeting view&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Detail Distance:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the distance where the change between different Levels-Of-Details (LODs) occurs&lt;br /&gt;
*Take notice that these are base values. Model detail in Detail options, (within game press F2), applies a multiplier to these values. These multipliers are (from left to right): 1/8, 1/4, 1, 4, 8&lt;br /&gt;
*Optional.  If not defined the game uses the formula ((radius * 20.0 + 20.0) * LOD)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;(Detail Distances)&#039;&#039;&#039;&#039;&#039; , list of &#039;&#039;&#039;integers&#039;&#039;&#039; (same amount as LODs), distances from the model in meters&lt;br /&gt;
**Example: &#039;&#039;(0, 80, 300, 900)&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$External Model File:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the models shown on the gunpoint, used with Bobb&#039;s external-visible-weapon code.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Submodel Rotation Speed:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the rotation speed of the subobject, with the $gun_rotation property defined, in the external weapon model.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Note: weapon fire will be delayed by the time it takes for the weapon to spin up to this speed (using $Submodel Rotation Acceleration or its default value), regardless of whether an external model is used or not.&lt;br /&gt;
}}&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Note: It&#039;s no longer required that the ship actually have external models enabled (whether or not this weapon has one defined) for the spin up delay to occur.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Submodel Rotation Acceleration:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the rotation acceleration of the external weapon model.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default value: 10}}&lt;br /&gt;
&lt;br /&gt;
===@Laser===&lt;br /&gt;
In the event a 3D model is not defined for the weapon, FSO creates an object similar to a glowpoint. Essentially, it is a 2D plane that always faces the player&#039;s camera with an additive texture applied to it, and may or may not have an omnilight follow it.&lt;br /&gt;
&lt;br /&gt;
As suggested by its name, this option group is normally used for lasers and similar primaries, but it may also be used for other weapon types as well.&lt;br /&gt;
&lt;br /&gt;
Unless said otherwise, the graphic files used within this group may be of any compatible type (.DDS, .PCX, .TGA, etc.), however a .DDS is recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Bitmap:====&lt;br /&gt;
Defines the graphic file to be used as the weapon effect.&lt;br /&gt;
&lt;br /&gt;
Blending type: additive&lt;br /&gt;
&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Bitmap: my_laser_bitmap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Glow:====&lt;br /&gt;
Defines the graphic file to be used for the glowmap of the weapon effect.&lt;br /&gt;
&lt;br /&gt;
Blending type: additive&lt;br /&gt;
&lt;br /&gt;
*This file is &#039;multiplied&#039; by a value between Color and Color2.&lt;br /&gt;
*The physical dimensions of the glowmap in-game is 2x the size of the bitmap.&lt;br /&gt;
&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Glow: my_laser_glowmap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Color:====&lt;br /&gt;
The RGB color of the glow effect.&lt;br /&gt;
&lt;br /&gt;
*The color is applied both to the glowmap and the omnilight that follows the effect.&lt;br /&gt;
&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue respectively, 8-bit value from 0 to 255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Color: 255, 0, 0    ; Red glow effect at the start of the effect&#039;s lifetime&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Color2:====&lt;br /&gt;
The RGB color of the glow effect at the end of the effect&#039;s lifetime (at its maximum range).&lt;br /&gt;
&lt;br /&gt;
*The color is applied both to the glowmap and the omnilight that follows the effect.&lt;br /&gt;
*The actual color of the glow effect is somewhere in between the values defined by Color and Color2. Essentially, the actual color &amp;quot;fades&amp;quot; from Color to Color2 over its lifetime.&lt;br /&gt;
**If Color is not defined, then a default value of 255, 255, 255 is assumed for its initial color.&lt;br /&gt;
&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue respectively, 8-bit value from 0 to 255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Color2:  0, 0, 255    ; Blue glow effect at the end of the effect&#039;s lifetime.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Color: 255, 0,   0    ; Start with a Red glow effect, and fade into...&lt;br /&gt;
@Laser Color2:  0, 0, 255    ; a Blue glow effect over the lifetime of the effect.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Length:====&lt;br /&gt;
Defines the length of the weapon effect.&lt;br /&gt;
*This option stretches the 2D plane &amp;quot;away&amp;quot; from its origin.&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Length:  1.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Head Radius:====&lt;br /&gt;
Defines the width of the leading edge, or &amp;quot;head,&amp;quot; of the weapon effect.&lt;br /&gt;
*The edge of the 2D plane farthest away from its origin is the leading edge.&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Head Radius: 0.75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Tail Radius:====&lt;br /&gt;
Defines the width of the trailing edge, or &amp;quot;tail&amp;quot; of the weapon effect.&lt;br /&gt;
*The edge of the 2D plane that is closest to its origin is the trailing edge.&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Tail Radius: 0.75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Mass:===&lt;br /&gt;
*How much of a kinetic effect this weapon has on its target. 3+ gives you the Flail effect. Set it to 10 and you can knock cruisers around.&lt;br /&gt;
*This is somehow multiplied by the speed. ie &#039;&#039;$Mass: 3&#039;&#039; and &#039;&#039;$Velocity: 200&#039;&#039; has much weaker kinetic effect than &#039;&#039;$Mass: 3&#039;&#039; and &#039;&#039;$Velocity: 1000&#039;&#039;. Also $Mass is used to calculate intensity of &amp;quot;shudder&amp;quot; effect if flagged.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, blast effect&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Velocity:===&lt;br /&gt;
*How fast the weapon travels. Is also used to define the weapon range, &#039;&#039;&#039;&#039;&#039;$Velocity x $Lifetime = range&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
*Beams travel instantly so this field has effect only on weapon range and AI beam targeting with certain beam types. $Velocity of beam also applies to its kinetic effect along with $Mass.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Fire Wait:===&lt;br /&gt;
*Time in seconds between firings&lt;br /&gt;
*Note that Fire wait will be reset to 1 if it is set over 5 for non turreted primary weapons (doesn&#039;t apply to 3.6.14+)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
====+Max Delay:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Defines the maximum amount of time it takes to refire a weapon in a random fire delay range.&lt;br /&gt;
**This must be used with +Min Delay: to have any effect.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
====+Min Delay:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Defines the minimum amount of time it takes to refire a weapon in a random fire delay range.&lt;br /&gt;
**This must be used with +Max Delay: to have any effect.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
===$Damage:===&lt;br /&gt;
*Base damage this weapon does. The actual damage is this number multiplied by the factors below.&lt;br /&gt;
*Base damage this beam does is continuous damage, damage is 5.5 times the damage value per second. The actual damage is this number multiplied by one of the factors below.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage&lt;br /&gt;
*Note: adding a shockwave to a weapon doubles its effective damage to the target (i.e. 1x impact, 1x shockwave)&lt;br /&gt;
&lt;br /&gt;
===$Damage Time:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*This sets a time from the end of the weapons lifetime that damage will start to attenuate at. &#039;&#039;&#039;&#039;&#039;Example: Weapon lifetime is 2.0 seconds and the desired effect is to attenuate after 0.5 seconds have passed, set this to 1.5 seconds.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds. Defaults to 0.0.&lt;br /&gt;
**Note: If neither +Min Damage: nor +Max Damage: is set, the damage will always attenuate to zero at max range.&lt;br /&gt;
***If both +Min Damage: and +Max Damage: are set, both are defaulted to 0.0 and damage will be attenuated to zero.}}&lt;br /&gt;
&lt;br /&gt;
====+Attenuation Damage:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*This sets the damage a weapon will attenuate to after reaching $Damage Time:.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage.}}&lt;br /&gt;
&lt;br /&gt;
====+Min Damage:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*This sets the lowest amount of damage possible assuming damage attenuation is taking place. &#039;&#039;&#039;&#039;&#039;This has been deprecated, please use +Attenuation Damage: instead.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage. Defaults to 0.0.}}&lt;br /&gt;
&lt;br /&gt;
====+Max Damage:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*This sets the highest amount of damage possible assuming damage attenuation is taking place. &#039;&#039;&#039;&#039;&#039;This has been deprecated, please use +Attenuation Damage: instead.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage. Defaults to 0.0.}}&lt;br /&gt;
&lt;br /&gt;
===$Damage Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
Defines the damage type that this weapon uses. All armor effects are applied after shield and have no function against shockwave or subsystem damage.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;REQUIRES:&#039;&#039;&#039; [[armor.tbl]]&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the damage type ( as defined by [[armor.tbl#$Damage Type:|$Damage Type]] )}}&lt;br /&gt;
&lt;br /&gt;
===$Arm time:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the time after the launch that is required before the weapon comes hot&lt;br /&gt;
*If the time has not been reached when the weapon detonates the Dinky explosion is used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Arm distance:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the distance from the firing ships that is required before the weapon comes hot&lt;br /&gt;
*If the distance has not been reached when the weapon detonates the Dinky explosion is used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This parameter is also applied to flak weapons. Previous behaviour was to arm weapons after 10 meters of travel.}}&lt;br /&gt;
&lt;br /&gt;
===$Arm radius:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the distance from the target where the weapon will arm itself&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
===$Detonation Range:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the distance from the point in space that the weapon was launched where the weapon will detonate&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Detonation Radius:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the distance between the target center point point and the weapon which detonates the weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave damage:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Override for the damage caused by shockwaves (default is [[#$Damage:]])&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage&lt;br /&gt;
*Note: adding a shockwave to a weapon doubles its effective damage to the target (i.e. 1x impact, 1x shockwave)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Shockwave Damage Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;REQUIRES ADDITIONAL TABLE&#039;&#039;&#039;. Defines the damage type used for the weapon explosions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name as defined in [[armor.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
===$Flak Detonation Accuracy:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Normally, flak weapons detonate at a range of 65 to 99 meters from their intended target, depending on the firing ships&#039; weapon subsystem health. This parameter can be used to adjust this behaviour, as it defines the base range used to determine this detonation range. Standard value is 65.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, range in meters}}&lt;br /&gt;
&lt;br /&gt;
===$Flak Targeting Accuracy:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Turret-fired flak weapons are normally firing in a cone around the target&#039;s predicted position. This parameter can be used to adjust the size of this cones&#039; base radius. Standard is 60 meters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, radius in meters}}&lt;br /&gt;
&lt;br /&gt;
===$Untargeted Flak Range Penalty:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*If a flak weapon is fired without a target selected, this parameter defines the range penalty applied to that weapon. Standard is 20 meters, meaning an untargeted flak weapon will detonate after travelling its max range - 20 meters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, penalty in meters.}}&lt;br /&gt;
&lt;br /&gt;
===$Blast Force:===&lt;br /&gt;
*The intensity of the kinetic blast effect when ship is within the outer radius of the explosion. Comes in effect only if inner and outer radius are defined.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, blast effect&lt;br /&gt;
&lt;br /&gt;
===$Inner Radius:===&lt;br /&gt;
*Radius at which the full explosion damage is done. Marks the line where damage attenuation begins. Damage is reduced by the square of the distance between the inner radius and outer radius.  i.e. half way between inner and outer results in 1/4 damage&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
===$Outer Radius:===&lt;br /&gt;
*Maximum radius at which any damage is done.  See $Inner Radius for the attenuation formula.&lt;br /&gt;
*Also defines the size of the shockwave (if shockwave speed is &amp;gt; 0)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
===$Shockwave Speed:===&lt;br /&gt;
*Speed shockwave expands at. Zero means no shockwave and that damage is applied immediately&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave rotation:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines how the 3D shockwave is rotated.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Angle&#039;&#039;&#039;&#039;&#039;, three values, pitch, bank, heading respectively, in degrees}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave model:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the model file (.pof) used as a shockwave for the 3D shockwaves.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave name:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the name of the animation used for the 2D shockwave&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Dinky shockwave:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Dinky shockwave are used if the weapon is shot down before arming or if the conditions marked at &#039;&#039;&#039;Arm time&#039;&#039;&#039; and &#039;&#039;&#039;Arm distance&#039;&#039;&#039; are not reached before impact&lt;br /&gt;
*It uses exactly same entries as the standard shockwaves&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave damage:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave damage type:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Blast Force:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Inner Radius:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Outer Radius:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave Speed:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave Rotation:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave Model:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave Name:&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Armor Factor:===&lt;br /&gt;
*Multiplier for the damage done to armor&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage multiplier&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shield Factor:===&lt;br /&gt;
*Multiplier for the damage done to shields&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage multiplier&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Subsystem Factor:===&lt;br /&gt;
*Multiplier for the damage done to subsystems&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage multiplier&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Lifetime Min:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the minimum lifetime of the weapon&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Lifetime Max:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the maximum lifetime of the weapon&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Lifetime:===&lt;br /&gt;
*Time before the standard primaries fizzle out and secondaries self destruct. Multiply this by the speed to get the range. If values are too low (below framerate) then the collision detection and graphic effects may suffer.&lt;br /&gt;
*This field has no effect for the beams apart from weapon range and AI beam targeting with certain beam types&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Energy Consumed:===&lt;br /&gt;
*The amount of energy each bolt drains firing ship. Has no effect on turretted weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Cargo Size:===&lt;br /&gt;
*Cargo size, is not used with non-ballistic primaries.&lt;br /&gt;
*Amount of missiles available = Bank capacity / Cargo Size.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Homing:===&lt;br /&gt;
&#039;&#039;&#039;This option is exclusive to secondaries.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Defines if the bolts/missiles in question is homing&lt;br /&gt;
*The bolts of primaries will turn to face their target if this option is set to YES... but is otherwise the same as a normal bolt ( when the option is set to NO ).&lt;br /&gt;
&lt;br /&gt;
If set to NO, then following fields are not required in the table.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, yes or no&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Type:&#039;&#039;&#039;====&lt;br /&gt;
Defines the homing method&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, &#039;&#039;ASPECT&#039;&#039; or &#039;&#039;HEAT&#039;&#039;&lt;br /&gt;
{{Table3610| An additional option, &#039;&#039;JAVELIN&#039;&#039;, has been added.  This behaves like an aspect missile but automatically only locks onto the engines of a target, and only if the engines are in sight.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Turn Time:&#039;&#039;&#039;====&lt;br /&gt;
Determines how well the missile maneuvers. Is defined as the number of seconds it takes the missile to do a 360 degree circle&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+View Cone:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;Heat-seeking missiles only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the width of the weapon&#039;s viewing cone, given in degrees. Objects outside this cone are effectively invisible to the missile. The value / 2 gives the angle from the missile&#039;s centerline to the edge of the viewing cone.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, degrees&lt;br /&gt;
{{Table3610| Has been enabled also to aspect seekers as an option.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Min Lock Time:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;For aspect/javelin missiles only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The minimum number of seconds to gain a target lock.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Lock Pixels/Sec:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;For aspect/javelin missiles only&#039;&#039;&#039;&lt;br /&gt;
The number of pixels the aspect triangle moves per second while attempting lock-on.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, pixels per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Catch-up Pixels/Sec:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;For aspect/javelin missiles only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number of pixels moved per second while attempting to catch up to the target.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, pixels per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Catch-up Penalty:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;For aspect/javelin missiles only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Extra pixels to move after catching up. (Needs verification )&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, pixels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Seeker Strength:&#039;&#039;&#039;====&lt;br /&gt;
{{Table3610|&lt;br /&gt;
Defines the seeking ability of the homing system. Default of heat seekers is 3.0 and for aspect seekers 2.0. Spoofing chance is defined as &#039;&#039;&#039;[[#$Countermeasure:|cm type effectiveness]]&#039;&#039;&#039;/&#039;&#039;&#039;seeker strength&#039;&#039;&#039; (missile must be within the countermeasures &#039;&#039;&#039;[[#$Countermeasure:|+Effective Radius:]]&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seeker strength}}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Target Lead Scaler:&#039;&#039;&#039;====&lt;br /&gt;
{{Table3611|&lt;br /&gt;
Defines the type of pursuit course the missile tries to obtain.&lt;br /&gt;
*Values &amp;lt; 0 give lag pursuit, values ~ 0 give pure pursuit, values &amp;gt; 0 give lead pursuit.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, default for heat seekers: 0, default for aspect or javelin seekers: 1.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Swarm:===&lt;br /&gt;
*The number of missiles to fire per volley if it&#039;s a swarm missile&lt;br /&gt;
*Can be issued to Standard primaries also. Causes single part turrets to malfunction but causes multi part turrets to fire only on their barrel line. Can be used for &#039;burst fire weapons&#039;. Does not work with player weapons.&lt;br /&gt;
*Is incompatible with &amp;quot;Corkscrew&amp;quot; option.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of shots in a swarm&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+SwarmWait:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time between weapons fired in a swarm&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
***Default: 0.150&lt;br /&gt;
***Max: 0.5 (Resets to default if set over 0.5)}}&lt;br /&gt;
&lt;br /&gt;
===$Acceleration Time::===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines how long it takes for a secondary weapon to attain full speed. Takes precedence over $Free Flight Time (see below) in terms of the weapon&#039;s velocity, and affects both locked-on and dumbfired secondaries.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
**Default: 0.0}}&lt;br /&gt;
&lt;br /&gt;
===$Velocity Inherit::===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines how much of the parent ship&#039;s velocity to inherit, if [[Ai_profiles.tbl#.24use_additive_weapon_velocity:]] is used.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, percents&lt;br /&gt;
**Default: 100.0}}&lt;br /&gt;
&lt;br /&gt;
===$Free Flight Time:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the free flight time of homing weapons. During this time weapon flies at 1/4 of its velocity + firing ships velocity in a straight line.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
**Default: 0.25}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; due to dumbfires never changing their speed, using this on a dumbfire missile will have it stuck at freeflight speed even after the end of the freeflight time.&lt;br /&gt;
&lt;br /&gt;
===$Free Flight Speed:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the speed that the weapon will be travelling at during the free flight segment (see above).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, Multiplier for the actual speed, minimum 0.01.&lt;br /&gt;
**Default: 0.25&lt;br /&gt;
{{Note| This feature was never implemented correctly and was removed in r8867. FSO currently parses but doesn&#039;t use the value, and prints a warning in the log saying that the value will not be used.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$PreLaunchSnd:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the one-shot sound effect to play at the beginning of a firing stream. Currently only has an effect on primary weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
**Default: No Sound}}&lt;br /&gt;
&lt;br /&gt;
===+PreLaunchSnd Min Interval:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines  Minimum interval between when the player stops firing and the next time the pre-launch sound can play, as a limiter in case the player is pumping the trigger.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, Minimum delay in milliseconds between the end of the previous firing sequence and the next time the pre-launch sound effect will be played.&lt;br /&gt;
**Default: 0 (play pre-launch sound at the beginning of every firing sequence, if present)}}&lt;br /&gt;
&lt;br /&gt;
===$LaunchSnd:===&lt;br /&gt;
*Corresponding sound effect when the weapon is launched.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$ImpactSnd:===&lt;br /&gt;
*Sound the weapon makes when it hits a hull.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Disarmed ImpactSnd:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Sound the weapon makes when it hits a hull before being armed.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$FlyBySnd:===&lt;br /&gt;
*The sound this weapon makes if it narrowly misses you. -1 is no sound.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]], usually -1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$TrackingSnd===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*The looping sound played when this weapon tracks a target.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$LockedSnd===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*The sound played when this weapon has locked onto its target.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$InFlightSnd===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*The looping sound played when the missile is currently flying.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+Inflight sound type&#039;&#039;&#039;&lt;br /&gt;
**Specifies when the in flight sound is played.&lt;br /&gt;
**The value can be one of the following values which are matched case-insensitively:&lt;br /&gt;
***&#039;&#039;&#039;&#039;&#039;&#039;TARGETED&#039;&#039;&#039;&#039;&#039;&#039;: The sound is played when the missile tracks a target&lt;br /&gt;
***&#039;&#039;&#039;&#039;&#039;&#039;UNTARGETED&#039;&#039;&#039;&#039;&#039;&#039;: The sound is played when the missile is currently not tracking a target&lt;br /&gt;
***&#039;&#039;&#039;&#039;&#039;&#039;ALWAYS&#039;&#039;&#039;&#039;&#039;&#039;: The sound is played always}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Model:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines used model file. Included for compatibility with countermeasures as they have been merged with weapons in the code.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Rearm Rate:===&lt;br /&gt;
*Defines the rate the weapons are loaded to the ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, missiles loaded per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Weapon Range:===&lt;br /&gt;
*Defines the range to the target where the weapons under AI will start firing.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Weapon Min Range:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the minimum range to the target where the weapons under AI will still fire.&lt;br /&gt;
*Implemented before FS_Open 3.6.5&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Flags:===&lt;br /&gt;
*See [[Weapons.tbl#Weapons.tbl_Flags|below]]&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;, names of the flags assigned to the weapon&lt;br /&gt;
**Example: ( &amp;quot;Player allowed&amp;quot; &amp;quot;in tech database&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Can be followed by &#039;&#039;&#039;+override&#039;&#039;&#039; option in order to reset the weapon flags before parsing in the new ones&lt;br /&gt;
*Using this option will erase all &#039;&#039;&#039;homing&#039;&#039;&#039;-related flags as well as &#039;&#039;&#039;swarm&#039;&#039;&#039;, &#039;&#039;&#039;variable lead&#039;&#039;&#039;, &#039;&#039;&#039;trail&#039;&#039;&#039;, &#039;&#039;&#039;TAG&#039;&#039;&#039;, and &#039;&#039;&#039;transparent&#039;&#039;&#039; settings in addition to the listed flags. All these should be set again - if they are required - when this option is used.&lt;br /&gt;
&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;+override&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Trail:===&lt;br /&gt;
*This is used if you want your weapon to have a trail. Trail is often used only with secondaries though it works with standard primaries as well.&lt;br /&gt;
*&#039;&#039;&#039;+Start Width:&#039;&#039;&#039;&lt;br /&gt;
**How wide the head of the trail is.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+End Width:&#039;&#039;&#039;&lt;br /&gt;
**How wide the tail of the trail is.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Start Alpha:&#039;&#039;&#039;&lt;br /&gt;
**The opacity of the trail head.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value between 0 and 1&lt;br /&gt;
*&#039;&#039;&#039;+End Alpha:&#039;&#039;&#039;&lt;br /&gt;
**The opacity of the trail tail.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value between 0 and 1&lt;br /&gt;
*&#039;&#039;&#039;+Max Life:&#039;&#039;&#039;&lt;br /&gt;
**How long the trail lasts.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
*&#039;&#039;&#039;+Bitmap:&#039;&#039;&#039;&lt;br /&gt;
**The graphic file to use for the trail.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*&#039;&#039;&#039;+Faded Out Sections:&#039;&#039;&#039;&lt;br /&gt;
**Defines the number of the trail sections (counting from the leading edge) which are gradually faded out.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of trail sections}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Icon:===&lt;br /&gt;
*Loadout icon used in the weapons selection screen.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Anim:===&lt;br /&gt;
*Green grid animation used on the weapons screen.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Collide Ship:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Has been replaced with &#039;&#039;&#039;#Conditional Hooks&#039;&#039;&#039;, see [[Scripting.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Collide Weapon:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Has been replaced with &#039;&#039;&#039;#Conditional Hooks&#039;&#039;&#039;, see [[Scripting.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
===$Impact Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the [[Particle Effects|particle effect]] which will be used for impacts of this weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*If this option is specified then &#039;&#039;$Impact Explosion&#039;&#039; and &#039;&#039;$Impact Explosion Radius&#039;&#039; are not valid options!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Impact Explosion:===&lt;br /&gt;
*Impact explosion used. Must be defined in weapon_expl.tbl,&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename or &#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Impact Explosion Radius:===&lt;br /&gt;
*Radius of the defined impact explosion.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters, default 1.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shield Impact Explosion Radius:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Radius of the shield impact explosion, see [[Ships.tbl#.24Shield_Impact_Explosion:]].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters, defaults to value of $Impact Explosion Radius}}&lt;br /&gt;
&lt;br /&gt;
===$Dinky Impact Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the [[Particle Effects|particle effect]] which will be used for Dinky (not armed) explosions of this weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*If this option is specified then &#039;&#039;$Dinky Impact Explosion&#039;&#039; and &#039;&#039;$Dinky Impact Explosion Radius&#039;&#039; are not valid options!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Dinky Impact Explosion:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Same as Impact Explosion but for Dinky (not armed) explosions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename or &#039;&#039;none&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Dinky Impact Explosion Radius:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Same as Impact Explosion Radius but for Dinky explosions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the [[Particle Effects|particle effect]] which will be used for piercing impacts.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*If this option is specified then piercing impact options below are not valid!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Explosion:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the effect used for events when weapon pierces the target&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename or &#039;&#039;none&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Radius:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the base radius of the effect used for piercing weapon impacts&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Velocity:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the base velocity for the particles piercing the target&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Splash Velocity:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the base velocity for the particles splashing from the target (secondary piercing effects&lt;br /&gt;
*Negative value causes the second batch or particles to splash to opposite direction&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Variance:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the variance added to the particles&lt;br /&gt;
*Values near 0 cause very little variance and values close to 1 cause extreme dispersal.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Life:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the lifetime of the effect for single frame effects&lt;br /&gt;
*For multiple frame effects the lifetime is the lifetime of the animation used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Particles:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the number of particles released per impact&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Draw Modifier:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the multiplier applied to the ships piercing effect limit percentage&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
*Option removed in 3.6.12. Use [[armor.tbl]] to finetune piercing effects.&lt;br /&gt;
&lt;br /&gt;
===$Inflight Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the inflight [[Particle Effects|particle effect]] which is used when the laser is active. This is only used by laser weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
}}&lt;br /&gt;
===$Freeflight Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the [[Particle Effects|particle effect]] which is used when the missile is in the free flight phase. See [[#$Free Flight Time:|$Free Flight Time]] for more information.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*This option is only valid for missile weapons&lt;br /&gt;
}}&lt;br /&gt;
===$Ignition Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the ignition [[Particle Effects|particle effect]] which is used when the missile is transitioning from free flight to homed or unhomed flight.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*This option is only valid for missile weapons&lt;br /&gt;
}}&lt;br /&gt;
===$Homed Flight Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the ignition [[Particle Effects|particle effect]] which is used when the missile is in homed flight mode.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*This option is only valid for missile weapons&lt;br /&gt;
}}&lt;br /&gt;
===$Unhomed Flight Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the ignition [[Particle Effects|particle effect]] which is used when the missile is in unhomed flight mode.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*This option is only valid for missile weapons&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Muzzleflash:===&lt;br /&gt;
*Normally only with flak cannons.&lt;br /&gt;
*Defines the muzzle flash the weapon uses&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, muzzleflash name, as defined in [[mflash.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$EMP Intensity:===&lt;br /&gt;
*If it has an EMP effect, how deeply it scrambles your electronics&lt;br /&gt;
*Basically a percentage, a value of 250 results in a 25% chance of something getting scrambled each frame. &lt;br /&gt;
*Maximum value of 500&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$EMP Time:===&lt;br /&gt;
**Duration of the EMP effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
===$Recoil Modifier:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Multiplies the recoil force of a weapon by this value, use a value greater than 1.0 to increase the force, use a value between 1.0 and 0.0 to decrease.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (defaults to 1.0)&lt;br /&gt;
{{Note| The &amp;quot;apply recoil&amp;quot; weapon flag must be set for this to be valid. If the flag is not set, FSO will throw a warning and automatically set it at runtime.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Leech Weapon:===&lt;br /&gt;
**The amount of weapon energy to drain with each hit (a flat value, not a percentage)&lt;br /&gt;
**Needs the [[#Esuck|Esuck]] flag set to have any effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (defaults to 10.0)&lt;br /&gt;
&lt;br /&gt;
===$Leech Afterburner:===&lt;br /&gt;
**The amount of afterburner fuel to drain with each hit (a flat value, not a percentage)&lt;br /&gt;
**Needs the [[#Esuck|Esuck]] flag set to have any effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (defaults to 10.0)&lt;br /&gt;
&lt;br /&gt;
===$Corkscrew:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Allow corkscrew parameters to be defined&lt;br /&gt;
*&#039;&#039;&#039;+Num Fired:&#039;&#039;&#039;&lt;br /&gt;
**Defines the number of weapons fired in sequence. Same as the standard swarm entry but for corkscrew missiles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of missiles&lt;br /&gt;
*&#039;&#039;&#039;+Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the radius used in the corkscrew motion&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Fire Delay:&#039;&#039;&#039;&lt;br /&gt;
**Defines the delay between missile firings&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Counter rotate:&#039;&#039;&#039;&lt;br /&gt;
**Defines if every other missile rotates to a different direction (clockwise / anticlockwise)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, &#039;&#039;0&#039;&#039; or &#039;&#039;1&#039;&#039;, no or yes&lt;br /&gt;
*&#039;&#039;&#039;+Twist:&#039;&#039;&#039;&lt;br /&gt;
**Defines the speed of rotation movement on the radius of corkscrew motion.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, radians per second}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Electronics:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapons effect against electronics. Requires [[weapons.tbl#&amp;quot;Electronics&amp;quot;|&amp;quot;electronics&amp;quot;]] flag. &#039;&#039;&#039;+New Style:&#039;&#039;&#039; and &#039;&#039;&#039;+Old Style:&#039;&#039;&#039; options are mutually exclusive.&lt;br /&gt;
*&#039;&#039;&#039;+New Style:&#039;&#039;&#039;&lt;br /&gt;
**Defines that the electronics use the new style which enables more options.&lt;br /&gt;
*&#039;&#039;&#039;+Old Style:&#039;&#039;&#039;&lt;br /&gt;
**Defines that the electronics use the old style.  The old style was the way the D-Missile worked in Descent: FreeSpace.&lt;br /&gt;
}}&lt;br /&gt;
{{Table371|&lt;br /&gt;
*&#039;&#039;&#039;+Area Of Effect&#039;&#039;&#039;&lt;br /&gt;
**If specified, allows the electronics effect to apply to every ship hit by this weapon&#039;s blast or shockwave (the &amp;quot;Electronics&amp;quot; flag isn&#039;t necessary with this option).&lt;br /&gt;
}}&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Intensity:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. &#039;&#039;&#039;&#039;&#039;Has been deprecated&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Engine Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. Defines how much longer the disruption effect lasts for engine subsystems.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Weapon Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. Defines how much longer the disruption effect lasts for non-beam turrets.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Turret Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. Defines how much longer the disruption effect lasts for beam turrets.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Sensors Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. Defines how much longer the disruption effect lasts for sensor subsystems.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Randomness Time:&#039;&#039;&#039;&lt;br /&gt;
**Defines the randomness of duration target suffers from the electronics hit. A random number between 0 and this time will be added or subtracted from the disruption time.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
&lt;br /&gt;
* Without any electronics parameters, a weapon with the &amp;quot;electronics&amp;quot; flag will default to the &#039;&#039;Old Style&#039;&#039; mode with a lifetime of 6000 milliseconds and a randomness of 4000 milliseconds.  Thus any ship that gets hit can get disrupted for anywhere between 2 to 10 seconds.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Spawn Angle:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the cone (with an angle) where the spawned weapons appear. &#039;&#039;Value&#039;&#039; gives the angle from the missiles centerline.  The maximum possible angle between any two child weapons would be &#039;&#039;Value*2&#039;&#039;.&lt;br /&gt;
*Spawn angle can be defined as many times as the carrier missile has child weapons defined for it (up to 5).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, degrees}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Local SSM:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the local SSM (Subspace Missile). In effect missile moves via subspace to a position close to the target and starts homing.&lt;br /&gt;
*Weapon must be &#039;&#039;&#039;&#039;&#039;aspect seeking missile&#039;&#039;&#039;&#039;&#039; and must have &#039;&#039;&#039;&#039;&#039;[[Weapons.tbl#&amp;quot;local ssm&amp;quot;|local ssm]]&#039;&#039;&#039;&#039;&#039; flag.&lt;br /&gt;
*&#039;&#039;&#039;+Warpout Delay:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time between the missile launch and the subspace jump.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Warpin Delay:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time missile stays in subspace before exiting.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Stage 5 Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Defines the velocity of the missile after the subspace jump.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second&lt;br /&gt;
*&#039;&#039;&#039;+Warpin Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines how far from the SSM will appear from the outer radius of the target.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Lock Range:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum range where SSM can achieve target lock&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Countermeasure:===&lt;br /&gt;
&lt;br /&gt;
*Defines the countermeasure effectiveness, radius, etc&lt;br /&gt;
{{note| &lt;br /&gt;
*Spoofing chance is defined as &#039;&#039;&#039;cm type effectiveness&#039;&#039;&#039;/&#039;&#039;&#039;[[#+Seeker Strength:|seeker strength]]&#039;&#039;&#039; (missile must be within the countermeasures &#039;&#039;&#039;+Effective Radius:&#039;&#039;&#039;).&lt;br /&gt;
*All countermeasures in the mission perform tests to spoof missiles for two frames after &#039;&#039;&#039;any countermeasure&#039;&#039;&#039; is created in the mission. No, this doesn&#039;t seem to make much sense.&lt;br /&gt;
*&#039;&#039;&#039;Provisional&#039;&#039;&#039;; Countermeasures are only given one chance to spoof any individual missile. This makes tuning seeker strength/effectiveness meaningful.&lt;br /&gt;
**Previously some record of which countermeasures had been seen by each missile was kept, but it broke when multiple countermeasures were involved. A good chance of breaking with two countermeasures, and a guaranteed chance of breaking with three or more. This reduced the impact of the seeker strength/effectiveness ratio, but was partly cancelled out by the 2 frames thing.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table3610|&lt;br /&gt;
====&#039;&#039;&#039;+Heat Effectiveness:&#039;&#039;&#039;====&lt;br /&gt;
*Defines the countermeasures effectiveness against heat seeking missiles&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, cm effectiveness&lt;br /&gt;
**Default: 1.0&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Aspect Effectiveness:&#039;&#039;&#039;====&lt;br /&gt;
*Defines the countermeasures effectiveness against aspect seeking missiles&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, cm effectiveness&lt;br /&gt;
*Default: 1.0&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Effective Radius:&#039;&#039;&#039;====&lt;br /&gt;
*Defines the countermeasures effective radius&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
**Default: 300.0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table373|&lt;br /&gt;
====+Missile Detonation Radius:====&lt;br /&gt;
*Defines the radius within which a missile homing on this countermeasure will trigger a detonation (see &#039;&#039;&#039;+Single Missile Kill:&#039;&#039;&#039;)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
**Default: 40.0&lt;br /&gt;
{{note| only affects missiles homing on countermeasures, i.e. heat or aspect with &amp;quot;pulls aspect seekers&amp;quot; flag}}&lt;br /&gt;
====+Single Missile Kill:====&lt;br /&gt;
*Defines if countermeasures will detonate only the missile homing on this countermeasure, or every missile within &#039;&#039;&#039;+Missile Detonation Radius:&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default: false&lt;br /&gt;
{{note| only affects missiles homing on countermeasures, i.e. heat or aspect with &amp;quot;pulls aspect seekers&amp;quot; flag}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$BeamInfo:===&lt;br /&gt;
*&#039;&#039;&#039;+Type:&#039;&#039;&#039;&lt;br /&gt;
**Defines the type of beam in question. Beam types: 0 is a standard non-slashing type beam. 1 is a slashing type beam. 2 is a targeting beam that is used to trigger SSMs. 3 is a beam type that fires pulses in anti-fighter role and acts like type 0 beam in other roles. 4 is a beam that is restricted to what is directly in front of it, along turrets firepoints normal.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;,, only values from 0 to 4 are legal&lt;br /&gt;
*&#039;&#039;&#039;+Life:&#039;&#039;&#039;&lt;br /&gt;
**How long it lasts once the beam is actually firing.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
*&#039;&#039;&#039;+Warmup:&#039;&#039;&#039;&lt;br /&gt;
**Warmup time&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Warmdown:&#039;&#039;&#039;&lt;br /&gt;
**Warmdown time&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Radius:&#039;&#039;&#039;&lt;br /&gt;
**Muzzle glow radius&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+PCount:&#039;&#039;&#039;&lt;br /&gt;
**Particles spewed every interval. ??&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+PRadius:&#039;&#039;&#039;&lt;br /&gt;
**Particle radius&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+PAngle:&#039;&#039;&#039;&lt;br /&gt;
**Defines the random &amp;quot;cone&amp;quot; where the particles are generated&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, angle of the cone&lt;br /&gt;
*&#039;&#039;&#039;+PAni:&#039;&#039;&#039;&lt;br /&gt;
**Animation used to represent the particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+Miss Factor:&#039;&#039;&#039;&lt;br /&gt;
**The higher the numbers, the more likely that this beam will miss. One value for every difficulty level&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Miss Factor&#039;&#039;&#039;&#039;&#039;, five &#039;&#039;&#039;floats&#039;&#039;&#039;, very easy, easy, moderate, hard, insane, respectively.&lt;br /&gt;
***Example: 0.5 0.975 1.35 1.875 2.5&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;IFF specific miss factors&#039;&#039;&#039;&lt;br /&gt;
**Identical to the preceding entry but IFF specific. Replace the &amp;lt;IFF&amp;gt; with the name of the IFF from [[iff_defs.tbl]]&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;+&amp;lt;IFF&amp;gt; Miss Factor:&#039;&#039;&#039;&#039;&#039;, five &#039;&#039;&#039;floats&#039;&#039;&#039;, very easy, easy, moderate, hard, insane, respectively.&lt;br /&gt;
***Example: 0.5 0.975 1.35 1.875 2.5}}&lt;br /&gt;
*&#039;&#039;&#039;+BeamSound:&#039;&#039;&#039;&lt;br /&gt;
**Corresponding looping sound effect when the beam is firing.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+WarmupSound:&#039;&#039;&#039;&lt;br /&gt;
**Corresponding sound effect when the beam is beam warmed up.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+WarmdownSound:&#039;&#039;&#039;&lt;br /&gt;
**Corresponding sound effect when the beam is warming down.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+Muzzleglow:&#039;&#039;&#039;&lt;br /&gt;
**Defines the bitmap used to create the muzzle glow&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
{{Table372|&lt;br /&gt;
*&#039;&#039;&#039;+Directional Glow:&#039;&#039;&#039;&lt;br /&gt;
**Defines the length to stretch the muzzleglow along the beam.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, length in meters, the muzzleglow is rendered along (in the same plane) as the beam instead of perpendicular to the camera.}}&lt;br /&gt;
*&#039;&#039;&#039;+Shots:&#039;&#039;&#039;&lt;br /&gt;
**Defines into how may invidual shots the type 3 (AAA) beams are divided. Note total firing is the same as the +Life:&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+ShrinkFactor:&#039;&#039;&#039;&lt;br /&gt;
**What percentage of lifetime where beam starts shrinking (0.1 == 10% life left)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+ShrinkPct:&#039;&#039;&#039;&lt;br /&gt;
**What percentage of max width we subtract per second&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Range:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum range where the beam still has any effect.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Attenuation:&#039;&#039;&#039;&lt;br /&gt;
**Defines the point where the damage caused by the beam starts to attenuate. At maximum range damage is zero.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, from 0 - firing point to 1 - no effect&lt;br /&gt;
***Default: 1}}&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*&#039;&#039;&#039;+BeamWidth:&#039;&#039;&#039;&lt;br /&gt;
**Defines the width of the beam for collision test purposes instead of using widest beam section.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&lt;br /&gt;
{{Table38|&lt;br /&gt;
*&#039;&#039;&#039;+Beam Flash Particle Effect:&#039;&#039;&#039;&lt;br /&gt;
**Specifies the beam flash [[Particle Effects|particle effect]].&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, particle effect name&lt;br /&gt;
**If this is specified then &#039;&#039;&#039;+Beam Flash Effect&#039;&#039;&#039; and &#039;&#039;&#039;+Beam Flash Radius&#039;&#039;&#039; are not valid options!&lt;br /&gt;
}}&lt;br /&gt;
*&#039;&#039;&#039;+Beam Flash Effect:&#039;&#039;&#039;&lt;br /&gt;
**Defines the additional impact flash effect for the beam.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+Beam Flash Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the radius for the additional impact flash effect.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Effect:&#039;&#039;&#039;&lt;br /&gt;
**Defines the beam piercing (bursting flames) effect for the beam.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the average radius used for the beam piercing effects.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Effect Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Defines the base velocity for the piercing effects&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Splash Effect Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Defines the base velocity for the secondary piercing effects&lt;br /&gt;
**Negative velocity causes the particles to move to opposite direction&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Effect Variance:&#039;&#039;&#039;&lt;br /&gt;
**Defines the variances of the particles from the main path&lt;br /&gt;
**Values close to 0 cause minimum variance, higher values cause higher variances&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;$Section:&#039;&#039;&#039;&lt;br /&gt;
**Beams are made up of up to five sections layered atop one another to create the effect. Each section has its own parameters.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
:*&#039;&#039;&#039;+Index:&#039;&#039;&#039;&lt;br /&gt;
:**Field used to define with [[Modular Tables]] the beam section which is edited.&lt;br /&gt;
:**Only needed when editing beams that already exist in other tables.&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, index number legal values are from 0 to 5&lt;br /&gt;
:*&#039;&#039;&#039;+remove&#039;&#039;&#039;&lt;br /&gt;
:**Removes the set beam section.&lt;br /&gt;
:*&#039;&#039;&#039;+nocreate&#039;&#039;&#039;&lt;br /&gt;
:**Does not create new section for the beam}}&lt;br /&gt;
&lt;br /&gt;
:*&#039;&#039;&#039;+Width:&#039;&#039;&#039;&lt;br /&gt;
:**Width of the section&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
:*&#039;&#039;&#039;+Texture:&#039;&#039;&#039;&lt;br /&gt;
:**Texture for the section&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
:*&#039;&#039;&#039;+RGBA Inner:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the color and transparency of the center of the section&lt;br /&gt;
{{Table3613|:**Not used in current builds. Settings entered here will have no effect.}}&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue, alpha, respectively, value from 0 to 255&lt;br /&gt;
:***Example: 255 255 255 255&lt;br /&gt;
:*&#039;&#039;&#039;+RGBA Outer:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the color and transparency of the edges of the section&lt;br /&gt;
{{Table3613|:**Not used in current builds. Settings entered here will have no effect.}}&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue, alpha, respectively, value from 0 to 255&lt;br /&gt;
:***Example: 150 150 150 10&lt;br /&gt;
:*&#039;&#039;&#039;+Flicker:&#039;&#039;&#039;&lt;br /&gt;
:**Defines how much the section flickers&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value from 0 to 1&lt;br /&gt;
:*&#039;&#039;&#039;+Zadd:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the &#039;thickness&#039; of the section. The higher the Zadd, the closer the section appears to be.&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
{{Table3610|&lt;br /&gt;
:*&#039;&#039;&#039;+Tile Factor:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the beam texture tiling factor. Second number defines the tiling type. Type 0 tiles the graphic in the beam as many times as defined by the 1st number. Type 1 uses the 1st value as the lenght of the tile.&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:*&#039;&#039;&#039;+Translation:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the speed of translation of the beam, a positive value moves from the impact point to the firing point, while a negative value moves away from the firing point towards the impact point. Measured in tiles per second, where the tile count is defined in the &amp;quot;+Tile Factor:&amp;quot; field above.&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Pspew:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines a particle spew effect for the given weapon&lt;br /&gt;
}}{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;+Index:&#039;&#039;&#039;&lt;br /&gt;
**indicates which spewer to add/edit/delete. may be 0-3. used for xmt compatibility.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Remove&#039;&#039;&#039;&lt;br /&gt;
**removes spewer at +Index: (requires +index:)&lt;br /&gt;
*&#039;&#039;&#039;+Type:&#039;&#039;&#039;&lt;br /&gt;
**type of particle spew&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;, Default, Helix, Sparkler, Ring, or Plume &#039;&#039;&#039;&lt;br /&gt;
}}{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Count:&#039;&#039;&#039;&lt;br /&gt;
**Defines how many particles are spawn when they are ready to be created (at each +Time: interval)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Time:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time in milliseconds between next particle(s) spewed&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Vel:&#039;&#039;&#039;&lt;br /&gt;
**Defines the created particles velocity as percentage of the weapons velocity&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the size of the created particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Life:&#039;&#039;&#039;&lt;br /&gt;
**Defines how long the particles last.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
*&#039;&#039;&#039;+Scale:&#039;&#039;&#039;&lt;br /&gt;
**Defines the particle spread. Small value will make particles group together&lt;br /&gt;
**typically controls how big the effect is or how fast it moves away from the weapon path on a perpendicular (or sometimes arbitrary) axis. &lt;br /&gt;
**helical spews and rings use this value to control how fast the particle helix moves away from the central axis.&lt;br /&gt;
**sparklers use this to control how fast particles move away from the spawn point, in any direction&lt;br /&gt;
**plumes use this to set the diameter of the disk across which particles are spawned&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;+Z Scale:&#039;&#039;&#039;&lt;br /&gt;
**for sparklers, allows you to elongate the effect to surround other effects, like lasers. essentially a length multiplier&lt;br /&gt;
**for plume, it multiplies against +scale to set the plume to spread or converge, zero would be full convergence, 1 would be straight flight, and bigger numbers would cause particles to diverge from the disk.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Rotation Rate:&#039;&#039;&#039;&lt;br /&gt;
**used only by helical spews, controls how many rotations per second the helix makes&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;, may be negative, useful for setting up 2 spews that spin in opposite directions&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Offset:&#039;&#039;&#039;&lt;br /&gt;
**position of effect with regards to the weapon center&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Initial Velocity:&#039;&#039;&#039;&lt;br /&gt;
**to indicate both direction and speed of particle effects regards to the weapon velocity and +scale:&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Bitmap:&lt;br /&gt;
**Defines the animation used to create the particle spew effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Tag:===&lt;br /&gt;
*Allowed for secondary weapons&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Allowed for primary weapons and secondary weapons}}&lt;br /&gt;
&lt;br /&gt;
*Sets this weapon as a TAG missile, level 1, 2, or 3. The second number is the duration in seconds.&lt;br /&gt;
*TAG Level 1 will illuminate hidden targets such as stealth fighters or ships normally obscured by nebula conditions.&lt;br /&gt;
*TAG Level 2 illiminates targets much like TAG Level 1, but turrets will prefer to shoot at them over other ships.&lt;br /&gt;
*TAG Level 3 has no effect in retail.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*TAG Level 3 allows the weapon to trigger [[Weapon.tbl#$SSM:|SSMs]]}}&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, TAG level and seconds respectively&lt;br /&gt;
*&#039;&#039;&#039;Note&#039;&#039;&#039;: TAG will not trigger unless the weapon in question has a non-zero damage value.&lt;br /&gt;
&lt;br /&gt;
===$SSM:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapons SSM index number.&lt;br /&gt;
*Requires [[Weapons.tbl#$Tag:|TAG level 3]] or a targeting beam.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Now also accepts SSM strike names.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$FOF:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the field of fire for the weapon. Causes weapon to fire into a firing cone instead of direct firing line thus causing light inaccuracy&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, degrees}}&lt;br /&gt;
&lt;br /&gt;
====+FOF Spread Rate:====&lt;br /&gt;
{{Table37|&lt;br /&gt;
*Defines the spread rate of the field of fire. This controls how the FOF increases over time while the weapon is firing.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&#039;, rate}}&lt;br /&gt;
&lt;br /&gt;
====+FOF Reset Rate:====&lt;br /&gt;
{{Table37|&lt;br /&gt;
*Rate at which the spread decreases if the weapon isn&#039;t firing.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&#039;, rate&lt;br /&gt;
*This is required if &#039;&#039;&#039;+FOF Spread Rate:&#039;&#039;&#039; is present}}&lt;br /&gt;
&lt;br /&gt;
====+Max FOF:====&lt;br /&gt;
{{Table37|&lt;br /&gt;
*The maximum FOF. After the FOF reaches this value it will not increase any further.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&#039;, degrees. Must be greater than or equal to zero.&lt;br /&gt;
*This is required if &#039;&#039;&#039;+FOF Spread Rate:&#039;&#039;&#039; is present}}&lt;br /&gt;
&lt;br /&gt;
===$Shots:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the number of shots every time the weapon is fired.&lt;br /&gt;
*Works only for primary weapons&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of shots}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$decal:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines impact decals if they are in use&lt;br /&gt;
*&#039;&#039;&#039;+texture:&#039;&#039;&#039;&lt;br /&gt;
**Defines the texture used for impact decals (can use &#039;&#039;&#039;&#039;&#039;-burn&#039;&#039;&#039;&#039;&#039; and &#039;&#039;&#039;&#039;&#039;-glow&#039;&#039;&#039;&#039;&#039; textures)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+backface texture:&#039;&#039;&#039;&lt;br /&gt;
**Defines ???&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the size of the impact decals on target&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+burn time:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time the &#039;&#039;&#039;&#039;&#039;-burn&#039;&#039;&#039;&#039;&#039; texture appears on the target&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds}}&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Feature removed - table parsing retained to maintain compatibility}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Transparent:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines weapon effect as transparent. Enables optional fields for &#039;alpha animations&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Alpha:&#039;&#039;&#039;&lt;br /&gt;
**Defines the strenght of the alpha (transparency). And also the maximum value for the alpha cycle option&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, from 0 to 1&lt;br /&gt;
*&#039;&#039;&#039;+Alpha Min:&#039;&#039;&#039;&lt;br /&gt;
**Defines the minimum alpha value for alpha cycle option&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, from 0 to 1&lt;br /&gt;
*&#039;&#039;&#039;+Alpha Cycle:&#039;&#039;&#039;&lt;br /&gt;
**Defines the change in alpha per frame, between &#039;&#039;&#039;Alpha&#039;&#039;&#039; and &#039;&#039;&#039;Alpha Min&#039;&#039;&#039; values&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Weapon Hitpoints:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the amount of hitpoints a weapon has.&lt;br /&gt;
*Weapons with &#039;&#039;&#039;&amp;quot;bomb&amp;quot;&#039;&#039;&#039; flag have 50 hitpoints by default&lt;br /&gt;
*Giving weapon hitpoints makes it possible for the weapon to be shot down or be destroyed by EMP.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Armor Type:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*REQUIRES ADDITIONAL TABLE. Defines the armor type for the weapon. This works exactly like ship armor types.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the armor as defined in [[armor.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Burst Shots:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the number of shots in a burst&lt;br /&gt;
*Shots in a burst use shorter ( &#039;&#039;&#039;$Burst Delay:&#039;&#039;&#039; ) delay than usually&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Burst Delay:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the time in milliseconds between the shots in a burst&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Burst Flags:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the flags used to define the burst firing behaviour&lt;br /&gt;
**Syntax: ( &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039; ), list of flags&lt;br /&gt;
**Available burst flags:&lt;br /&gt;
***&#039;&#039;&#039;&amp;quot;fast firing&amp;quot;&#039;&#039;&#039;, acts as if &#039;&#039;&#039;same turret cooldown&#039;&#039;&#039; flag would be used between the shots in the burst.&lt;br /&gt;
***&#039;&#039;&#039;&amp;quot;random length&amp;quot;&#039;&#039;&#039;, makes AI to fire burst of random length (from 1 to burst shots).}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Thruster Flame Effect:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the filename of the effect used on the modeled thruster of the missile&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Thruster Glow Effect:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the filename of the effect used on the glow type effect of the missile&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Thruster Glow Radius Factor:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the radius multiplier for the thruster&#039;s glow type effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Substitute:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
Defines a pattern of ammo to substitute for primary or secondary weapons. &#039;&#039;&#039;$Substitute:&#039;&#039;&#039; can be repeated any number of times (so you could make something like a rainbow laser with several ammo substitutions, for example). If neither &#039;&#039;+period&#039;&#039; or &#039;&#039;+index&#039;&#039; is specified, it is assumed to be equivalent to &#039;&#039;+index: &#039;&#039;&#039;0&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Weapon Name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Swarm missiles act in a strange way when used with $Substitute, use at your own risk.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Table3615|&lt;br /&gt;
Turrets can use $Substitute as well.&lt;br /&gt;
}}&lt;br /&gt;
====+period:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
FSO will substitute &#039;&#039;&#039;Weapon Name&#039;&#039;&#039; every &#039;&#039;period&#039;&#039; shots.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Positive Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;You may not define both +period and +index for the same $Substitute entry&#039;&#039;&#039;}}&lt;br /&gt;
=====+offset:=====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
A suboption of +period, offsets the substitute pattern according to the launched ammo. For example, an offset of 3 and a period of 4 will substitute on the 3rd ammo launched, and then every 4th ammo after that.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Positive Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
====+index:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
FSO will substitute the &#039;&#039;&#039;Weapon Name&#039;&#039;&#039; at firepoint &#039;&#039;index&#039;&#039; in the shot pattern. Similar to carefully using both +period and +offset, but is not affected by ships with different firepoint numbers. i.e. Firepoint &#039;&#039;index&#039;&#039; will always have the substitution, while +period and +offset will cycle at different rates dependant on the number of firepoints.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Positive Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;You may not define both +period and +index for the same $Substitute entry&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
==Weapons.tbl Flags==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Electronics&amp;quot;===&lt;br /&gt;
*Will seize up the weapons and engines systems of any ship for a short period of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Spawn &#039;&#039;Name&#039;&#039;,&#039;&#039;Value&#039;&#039;&amp;quot;===&lt;br /&gt;
*Will spawn the specified number of defined missiles upon detonation.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Multiple spawn types can be defined for a single &#039;carrier&#039; weapon up to maximum of 5 different weapons}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Remote Detonate&amp;quot;===&lt;br /&gt;
*Can be triggered remotely via a second press on the trigger&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Big Ship&amp;quot;===&lt;br /&gt;
*These weapons cannot be mounted on small ships like fighters, bombers, sentry guns etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Huge&amp;quot;===&lt;br /&gt;
*Allows this weapon to do the final 10% damage to a ship with the &amp;quot;Big Damage&amp;quot; flag. Also the AI will not try to hit fighters with it.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Supercap&amp;quot;===&lt;br /&gt;
*Allows this weapon to do the final 75% damage to a ship with the &amp;quot;supercap&amp;quot; flag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Bomber+&amp;quot;===&lt;br /&gt;
*The AI will prefer to use this weapon against bombers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;child&amp;quot;===&lt;br /&gt;
*Cannot be set as a weapon on any ship, but is instead a child of a weapon. Usually defined with &amp;quot;Spawn &#039;&#039;Name&#039;&#039;,&#039;&#039;Value&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Bomb&amp;quot;===&lt;br /&gt;
*Makes this weapon targetable with the B key, and the AI prefers to use it against large ships&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;No Dumbfire&amp;quot;===&lt;br /&gt;
*Missile will not fire without a lock&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;in tech database&amp;quot;===&lt;br /&gt;
*Has the weapon in the tech database at the start of the campaign&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Player allowed&amp;quot;===&lt;br /&gt;
*Allows this weapon as a player weapon.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;EXTREMELY IMPORTANT NOTE:&#039;&#039;&#039;&lt;br /&gt;
**Whenever you plan to use a weapon as a player one in your campaign or missions, &#039;&#039;&#039;USE THIS FLAG&#039;&#039;&#039;.&lt;br /&gt;
**Not using it can cause problems within fs_open and it&#039;s a BAD MOD DESIGN.&lt;br /&gt;
**In the future, fs_open will maybe be able to avoid these problems but, nevertheless, it&#039;s still a BAD DESIGN.&lt;br /&gt;
**As another possible example: be careful to update &amp;quot;retail&amp;quot; tables if you plan to use Shivan weapons in player fighters.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Particle Spew&amp;quot;===&lt;br /&gt;
*Makes the weapon projectile spew out particles&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Can be defined with [[Weapons.tbl#$Pspew:|Particle Spew parameters]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;EMP&amp;quot;===&lt;br /&gt;
*This weapon will have an EMP effect on any ship within the blast radius&lt;br /&gt;
*Can be defined with [[Weapons.tbl#$EMP_Intensity:|EMP Intensity]] and [[Weapons.tbl#$EMP_Time:|EMP Time]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Esuck&amp;quot;===&lt;br /&gt;
*Drains the target&#039;s energy banks&lt;br /&gt;
*Can be defined with [[Weapons.tbl#$Leech_Weapon:|Leech Weapon]] and [[Weapons.tbl#$Leech_Afterburner:|Leech Afterburner]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Flak&amp;quot;===&lt;br /&gt;
*Makes this weapon a [[weapons.tbl#Flak_Guns|flak gun]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Corkscrew&amp;quot;===&lt;br /&gt;
*Makes this weapon spiral AND swarm 4.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Can be defined with [[Weapons.tbl#$Corkscrew:|Corkscrew parameters]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shudder&amp;quot;===&lt;br /&gt;
*Makes your ship shudder while you&#039;re firing the weapon&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;lockarm&amp;quot;===&lt;br /&gt;
*Requires a target lock in order to arm its warhead. In other words weapon causes less damage if it hits the target without target lock.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;beam&amp;quot;===&lt;br /&gt;
*Makes this weapon a [[weapons.tbl#Beam Cannons|beam cannon]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;stream&amp;quot;===&lt;br /&gt;
* Does nothing&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;puncture&amp;quot;===&lt;br /&gt;
*Reduces hull damage by 75%&lt;br /&gt;
The AI will prefer these weapons for anti-subsystem use&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;countermeasure&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapon as a countermeasure}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Ballistic&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapon as a ballistic weapon that needs ammunition.&lt;br /&gt;
*Make sure you define the size and reload rate for ballistic weapons}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;pierce shields&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Causes weapons to penetrate shield without causing damage to it.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no pierce shields&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Prevents weapons (beams) from piercing shields causing shields to be damaged by weapons first.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;local ssm&amp;quot;===&lt;br /&gt;
{{Table3610| }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;tagged only&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Weapon can only be fired at tagged targets}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;beam no whack&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Disables beam whacking (push). Practically same as setting beam mass to zero.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;cycle&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Causes weapon to alternate between firing points}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;small only&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Causes AI to use the weapon only on small targets (fighters, bombers etc.)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;same turret cooldown&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Forces the turrets to fire on the designated rate of fire on all difficulty levels and all AI levels}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;apply no light&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Prevents light from being applied to the weapon model.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;training&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Sets weapon to be of training weapon type. ?}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;smart spawn&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Forces turret fired spawn weapon of this type to be fired like normal weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;inherit parent target&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Sets spawned &#039;child&#039; weapons to use parent weapon&#039;s target.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no emp kill&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the weapon (with hitpoints) to be immune to automatic EMP destruction.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;untargeted heat seeker&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the weapon as a heatseeker type missile which acquires its target by itself.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no radius doubling&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Prevents weapon radius from being doubled when doing collision test. Makes bombs harder to intercept.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no subsystem homing&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Prevents weapon from acquiring a subsystem as its target. Missile homing points are spread over the target ship.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no lifeleft penalty&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Prevents weapon lifetime from being penalized if the angle to the target is too big.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;can be targeted&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Allows weapon to be targeted by player. Does not influence AI}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;show on radar&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Allows weapon to be visible on the radar}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;show friendly on radar&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Allows friendly, otherwise visible to radar weapon, to be visible on player radar}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;capital+&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Tells AI to use this weapon only on capital ships}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;chain external model fps&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Tells game to keep switching external model firingpoints when firing}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;external model launcher&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Tells game that the external model is a launcher so that it would be kept static without loading motion}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;takes blast damage&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Weapon takes damage from weapon blasts}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;takes shockwave damage&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Weapon takes damage from shockwaves}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;ciws&amp;quot;===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Weapon can deal shockwave/blast damage to bombs, regardless of whether the target weapons have the &amp;quot;take blast/shockwave damage&amp;quot; flags.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;render flak&amp;quot;===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Normally, flak shells are not rendered. This flag switches rendering on for those weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;anti-subsystem beam&amp;quot;===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Beam weapons with this flag can target subsystems on enemy ships, just like normal weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no primary linking&amp;quot;===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Primary weapons with this flag can not be linked with other weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;same emp time for capships&amp;quot;===&lt;br /&gt;
{{Table37|&lt;br /&gt;
*capships affected by this weapon will use the tabled EMP time rather than the fixed retail value (7.5 secs)}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no primary linked penalty&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Primary weapons with this flag do not incur the retail linked fire penalty}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no homing speed ramp&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Locked homing weapons will not perform the standard 1 second long acceleration when fired. Note that use of $Acceleration Time is &#039;&#039;&#039;not&#039;&#039;&#039; affected by this flag.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;pulls aspect seekers&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*If an aspect seeker is grabbed by this countermeasure the missile will follow the countermeasure instead of going into dumbfire mode.&lt;br /&gt;
&#039;&#039;&#039;Only valid for countermeasures!&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;turret interceptable&amp;quot;===&lt;br /&gt;
===&amp;quot;fighter interceptable&amp;quot;===&lt;br /&gt;
===&amp;quot;interceptable&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Allows turrets/fighters/both (respectively) to shoot at this weapon without requiring it to be a bomb. If this is the first time this weapon has been defined, it also gives it a default of 25 hitpoints so that it can be shot down.&lt;br /&gt;
&#039;&#039;&#039;If you use a TBM to give this flag to an existing weapon, you&#039;ll need to specify hitpoints manually (unless you want it to be unkillable but still draw defensive fire).&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;apply recoil&amp;quot;===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*A ship that fires a weapon with this flag will experience a recoil effect, slowing the ship down and, with lighter strikecraft, inducing some rotation if the firing points are offset from the center of mass.&lt;br /&gt;
&#039;&#039;&#039;Do not use this with MVPs or retail ships unless you increase their density to 10 or use either $Recoil Modifier: in weapons.tbl or $Ship Recoil Modifier in ships.tbl. This is to avoid exaggerated effects due to retail models having manually defined masses.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;don&#039;t spawn if shot&amp;quot;===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Prevents parent weapons from spawning children in the even of the parent weapon being shot down.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;die on lost lock&amp;quot;===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Aspect seeking missiles (only, not heat seekers) will detonate upon losing their lock. Currently they only lose lock if decoyed by a countermeasure, AND &amp;quot;pulls aspect seekers&amp;quot; or similar is not set. The detonation will use their &amp;quot;dinky&amp;quot; explosion (i.e. same as if ran out of lifetime).}}&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
*Usually not altered. Only one can exist&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*More than one can exist}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Name:===&lt;br /&gt;
*Name of the countermeasure&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Velocity:===&lt;br /&gt;
*Defines the speed of the countermeasure, relative to the ship.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meter per second&lt;br /&gt;
&lt;br /&gt;
===$Fire Wait:===&lt;br /&gt;
*Definies the minumum time between the countermeasure launches&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lifetime===&lt;br /&gt;
*Countermeasure&#039;s life time is defined between with minimum and maximum lifetime&lt;br /&gt;
*&#039;&#039;&#039;$Lifetime Min:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
*&#039;&#039;&#039;$Lifetime Max:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$LaunchSnd:===&lt;br /&gt;
*Defines the sound for the countermeasure launch&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Model:===&lt;br /&gt;
*Defines the used model file (.pof)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Player Weapon Precedence==&lt;br /&gt;
*First the primary weapons are defined, from most powerful to least powerful, and then the same for secondaries&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot; &amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039;), names of the weapons&lt;br /&gt;
*Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Player Weapon Precedence: (&lt;br /&gt;
     &amp;quot;UD-8 Kayser&amp;quot;&lt;br /&gt;
     &amp;quot;Prometheus R&amp;quot;&lt;br /&gt;
     &amp;quot;Subach HL-7&amp;quot;&lt;br /&gt;
     &amp;quot;Harpoon&amp;quot;&lt;br /&gt;
     &amp;quot;Tempest&amp;quot;&lt;br /&gt;
     &amp;quot;Rockeye&amp;quot;   )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sample==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Primary Weapons&lt;br /&gt;
&lt;br /&gt;
$Name:                            @Subach HL-7&lt;br /&gt;
   +Title:                           XSTR(&amp;quot;GTW Subach HL-7&amp;quot;, 3243)&lt;br /&gt;
   +Description:&lt;br /&gt;
XSTR( &amp;quot;Standard Issue&lt;br /&gt;
Level 3 Hull Damage&lt;br /&gt;
Level 2 Shield Damage&amp;quot;, 3244)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
   +Tech Title:                      XSTR(&amp;quot;Subach HL-7&amp;quot;, 146)&lt;br /&gt;
   +Tech Anim:                       Tech_Subach_HL-7&lt;br /&gt;
   +Tech Description:&lt;br /&gt;
XSTR(&lt;br /&gt;
&amp;quot;Descriptive text...&amp;quot;, -1)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
$Model File:                      none&lt;br /&gt;
   @Laser Bitmap:                    newglo9&lt;br /&gt;
   @Laser Glow:                      2_laserglow03&lt;br /&gt;
   @Laser Color:                     250, 0, 0&lt;br /&gt;
   @Laser Color2:                    0, 0, 250&lt;br /&gt;
   @Laser Length:                    10.0&lt;br /&gt;
   @Laser Head Radius:               0.90&lt;br /&gt;
   @Laser Tail Radius:               0.90&lt;br /&gt;
$Mass:                            0.2&lt;br /&gt;
$Velocity:                        450.0&lt;br /&gt;
$Fire Wait:                       0.2&lt;br /&gt;
$Damage:                          15&lt;br /&gt;
$Armor Factor:                    0.9&lt;br /&gt;
$Shield Factor:                   0.7&lt;br /&gt;
$Subsystem Factor:                0.3&lt;br /&gt;
$Lifetime:                        2.0&lt;br /&gt;
$Energy Consumed:                 0.20&lt;br /&gt;
$Cargo Size:                      0.0&lt;br /&gt;
$Homing:                          NO&lt;br /&gt;
$LaunchSnd:                       76&lt;br /&gt;
$ImpactSnd:                       85&lt;br /&gt;
$Flags:                           (  &amp;quot;in tech database&amp;quot;&lt;br /&gt;
                                     &amp;quot;player allowed&amp;quot;&lt;br /&gt;
                                     &amp;quot;stream&amp;quot;)&lt;br /&gt;
$Icon:                            iconSD4&lt;br /&gt;
$Anim:                            SD4&lt;br /&gt;
$Impact Explosion:                none&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Secondary Weapons&lt;br /&gt;
&lt;br /&gt;
$Name:                            EMP Adv.&lt;br /&gt;
   +Title:                           XSTR(&amp;quot;GTM-14 EMP Adv.&amp;quot;, 3396)&lt;br /&gt;
   +Description:&lt;br /&gt;
XSTR( &amp;quot;Advanced Missile&lt;br /&gt;
Electromagnetic Pulse Weapon&lt;br /&gt;
General Purpose Suppression&amp;quot;, 3397)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
   +Tech Title:                      XSTR(&amp;quot;GTM-14 EM Pulse Adv.&amp;quot;, 3398)&lt;br /&gt;
   +Tech Anim:                       Tech_EMP&lt;br /&gt;
   +Tech Description:&lt;br /&gt;
XSTR(&lt;br /&gt;
&amp;quot;Descriptive text...&amp;quot;, -1)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
$Model File:                      EMPulse2.pof&lt;br /&gt;
$Mass:                            15.0&lt;br /&gt;
$Velocity:                        275.0&lt;br /&gt;
$Fire Wait:                       2.0&lt;br /&gt;
$Damage:                          45&lt;br /&gt;
$Blast Force:                     20.0&lt;br /&gt;
$Inner Radius:                    80.0&lt;br /&gt;
$Outer Radius:                    300.0&lt;br /&gt;
$Shockwave Speed:                 120.0&lt;br /&gt;
$Armor Factor:                    1.0&lt;br /&gt;
$Shield Factor:                   0.8&lt;br /&gt;
$Subsystem Factor:                0.5&lt;br /&gt;
$Lifetime:                        5.0&lt;br /&gt;
$Energy Consumed:                 0.0&lt;br /&gt;
$Cargo Size:                      4.0&lt;br /&gt;
$Homing:                          YES&lt;br /&gt;
   +Type:                            ASPECT&lt;br /&gt;
   +Turn Time:                       1.0&lt;br /&gt;
   +Min Lock Time:                   2.0&lt;br /&gt;
   +Lock Pixels/Sec:                 70&lt;br /&gt;
   +Catch-up Pixels/Sec:             100&lt;br /&gt;
   +Catch-up Penalty:                30&lt;br /&gt;
$LaunchSnd:                       118&lt;br /&gt;
$ImpactSnd:                       88&lt;br /&gt;
$FlyBySnd:                        -1&lt;br /&gt;
$Rearm Rate:                      2.0&lt;br /&gt;
$Flags:                           (  &amp;quot;player allowed&amp;quot;&lt;br /&gt;
                                     &amp;quot;EMP&amp;quot;)&lt;br /&gt;
$Trail:&lt;br /&gt;
   +Start Width:                     0.25&lt;br /&gt;
   +End Width:                       0.75&lt;br /&gt;
   +Start Alpha:                     1.0&lt;br /&gt;
   +End Alpha:                       0.0&lt;br /&gt;
   +Max Life:                        1.5&lt;br /&gt;
   +Bitmap:                          MissileTrail04&lt;br /&gt;
$Icon:                            iconEMPulse&lt;br /&gt;
$Anim:                            ecm&lt;br /&gt;
$Impact Explosion:                ExpMissileHit1&lt;br /&gt;
$Impact Explosion Radius:         10.0&lt;br /&gt;
$EMP Intensity:                   375.0&lt;br /&gt;
$EMP Time:                        20.0&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&lt;br /&gt;
$Player Weapon Precedence: (&lt;br /&gt;
     &amp;quot;Subach HL-7&amp;quot;&lt;br /&gt;
     &amp;quot;EMP Adv.&amp;quot;   )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Ships.tbl&amp;diff=45632</id>
		<title>Ships.tbl</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Ships.tbl&amp;diff=45632"/>
		<updated>2016-09-04T09:06:39Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add documentation for &amp;quot;$Ship Death Effect&amp;quot;.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TableVersionGit|2016-05-27|d60c8d5}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;ships.tbl&#039;&#039;&#039; defines all the ship classes used in FSO.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-shp.tbm&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
==General Format==&lt;br /&gt;
*Ship.tbl is formed of several different sections.&lt;br /&gt;
*All sections beginning with &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; need &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;End before the next section.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Default Player Ship&#039;&#039;&#039;&lt;br /&gt;
***Defines the default player ship in the game and also in the FRED. If in a mission appears a ship that has not been properly included to tables then game replaces the ship with the Default Player Ship.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Engine Wash Info&#039;&#039;&#039;&lt;br /&gt;
***Includes all the definitions of all engine washes used in the game.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
:*&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Ship Templates&#039;&#039;&#039;&lt;br /&gt;
:**Includes entries for ship templates}}&lt;br /&gt;
&lt;br /&gt;
:*&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Ship Classes&#039;&#039;&#039;&lt;br /&gt;
:**Includes entries for every ship and also defines their attributes that are used in the game&lt;br /&gt;
:**Is discussed in detail at [[Ships.tbl#Table_Options|Table Options]] section.&lt;br /&gt;
:*&#039;&#039;&#039;$Player Ship Precedence&#039;&#039;&#039;&lt;br /&gt;
:**Player Ship Precedence is used in ship selection when a ship specified by the mission designer is not available to the player.  The next ship on the list is used in its place (assuming that ship is allowed for the player)&lt;br /&gt;
&lt;br /&gt;
==Default Player Ship==&lt;br /&gt;
*Defines the default ship in the game.&lt;br /&gt;
*Syntax: &#039;&#039;Name&#039;&#039;, name of ship model as defined in [[Ships.tbl#Table_Options|Table Options]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Engine Wash==&lt;br /&gt;
*Defines the engines washes&lt;br /&gt;
*First entry must be named &#039;default&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Name:===&lt;br /&gt;
*Defines the name of the engine wash.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+nocreate===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*In [[Modular Tables]] name can be followed by line &#039;&#039;&#039;+nocreate&#039;&#039;&#039; that prevent game from creating an incomplete entry by leaving the entry unread unless it already exists (either in ship.tbl or in earlier parsed *-shp.tbm files) by the time the *-shp.tbm is read.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Angle:===&lt;br /&gt;
*Defines the angle from the engine where the engine wash exists&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, degrees&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Radius Mult:===&lt;br /&gt;
*Defines engine wash multiplier&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Length:===&lt;br /&gt;
*Defines the length of the engine wash&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Intensity:===&lt;br /&gt;
*Defines the strength of the engine wash&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, blast effect&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
   $Name:           Default&lt;br /&gt;
   $Angle:          10.0&lt;br /&gt;
   $Radius Mult:    1.2&lt;br /&gt;
   $Length:         400&lt;br /&gt;
   $Intensity:      1.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ship Template Options==&lt;br /&gt;
{{Warning|&lt;br /&gt;
The ship templates feature has always caused crashes and memory issues. As of 2014/07/24, it has been removed from the codebase.}}&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Example of template usage [[Ship_Templates]] in which both [[GTB Artemis]] variants have been defined using a single template}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Template:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the name of template&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Use Template:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Another template can be used as template for the current template&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name}}&lt;br /&gt;
&lt;br /&gt;
==Ships Table Options==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Name:===&lt;br /&gt;
*Model name that is used also in game. It is also used as name for the whole ship entry.&amp;lt;br&amp;gt;There are two special characters can be used in the name: &#039;&#039;&#039;#&#039;&#039;&#039; and &#039;&#039;&#039;@&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;#&#039;&#039;&#039;. It&#039;s used in the middle of the name and cannot be the first character in the $Name: string. It makes the right part of the name not being shown in the ship class info of the target window, (or beside the target brackets in FS_Open builds). It allows making different versions of a base ship while showing the same class name inside the game.&amp;lt;br&amp;gt;An example from FSPort FreeSpace 1: The &#039;&#039;&#039;SF Dragon#weakened&#039;&#039;&#039; ship, used in [[Enter the Dragon]], appears to the player just as any other &#039;&#039;&#039;SF Dragon&#039;&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;@&#039;&#039;&#039;. It&#039;s used before the proper ship name. It is fully ignored by the game. Moreover, &#039;&#039;&#039;@WhateverShip&#039;&#039;&#039; and &#039;&#039;&#039;WhateverShip&#039;&#039;&#039; are exactly the same name and therefore they both appear as &#039;&#039;&#039;WhateverShip&#039;&#039;&#039; inside the game. It just allows the user marking ships in the table because of any modding reason.&amp;lt;br&amp;gt;In the retail FS2 ships there are several ships starting by &#039;&#039;&#039;@&#039;&#039;&#039;.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name&lt;br /&gt;
&lt;br /&gt;
===+nocreate===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*In [[Modular Tables]] name can be followed by line &#039;&#039;&#039;+nocreate&#039;&#039;&#039; that prevent game from creating an incomplete entry by leaving the entry unread unless it already exists (either in ship.tbl or in earlier parsed *-shp.tbm files) by the time the *-shp.tbm is read.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Use Template:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Sets the table entry to use template based on an existing table entry instead of creating totally new one&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the template}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Alt Name:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Alternative $Name: for the ship.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, Alternate $Name:}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Short name:===&lt;br /&gt;
*Shortened model name, for FRED, Usually more descriptive than the real name.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Species:===&lt;br /&gt;
*Defines species (Terran, Vasudan or Shivan). Determines many things, including the color of the engine glow, the flyby sound effects, the briefing icon and the support ship.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*More species have been enabled, and all of these have to be defined in [[species_defs.tbl]].}}&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the species&lt;br /&gt;
**Example: &#039;&#039;Terran&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Technical Description===&lt;br /&gt;
List of descriptive terms for techroom and ship selection screens. Number after the quotes refers to [[tstrings.tbl]]&lt;br /&gt;
&lt;br /&gt;
====+Type:====&lt;br /&gt;
*Syntax: XSTR(&amp;quot;&#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;quot;, integer)&lt;br /&gt;
*Example: XSTR(&amp;quot;&amp;quot;, -1)&lt;br /&gt;
&lt;br /&gt;
====+Maneuverability:====&lt;br /&gt;
*Syntax: XSTR(&amp;quot;&#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;quot;, integer)&lt;br /&gt;
*Example: XSTR(&amp;quot;&amp;quot;, -1)&lt;br /&gt;
&lt;br /&gt;
====+Armor:====&lt;br /&gt;
*Syntax: XSTR(&amp;quot;&#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;quot;, integer)&lt;br /&gt;
*Example: XSTR(&amp;quot;&amp;quot;, -1)&lt;br /&gt;
&lt;br /&gt;
====+Manufacturer:====&lt;br /&gt;
*Syntax: XSTR(&amp;quot;&#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;quot;, integer)&lt;br /&gt;
*Example: XSTR(&amp;quot;&amp;quot;, -1)&lt;br /&gt;
&lt;br /&gt;
====+Description:====&lt;br /&gt;
*Syntax: XSTR(&amp;quot;&#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;quot;, integer)&lt;br /&gt;
*Requires &#039;&#039;&#039;$end_multi_text&#039;&#039;&#039; after the entry&lt;br /&gt;
*Example:&lt;br /&gt;
::XSTR(&amp;quot;&amp;quot;, -1)&lt;br /&gt;
::$end_multi_text&lt;br /&gt;
&lt;br /&gt;
====+Tech Title:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines name of the ship as displayed in the tech room&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
====+Tech Description:====&lt;br /&gt;
*Syntax: XSTR(&amp;quot;&#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;quot;, integer)&lt;br /&gt;
*Requires &#039;&#039;&#039;$end_multi_text&#039;&#039;&#039; after the entry&lt;br /&gt;
*Example:&lt;br /&gt;
::XSTR(&amp;quot;&amp;quot;, -1)&lt;br /&gt;
::$end_multi_text&lt;br /&gt;
&lt;br /&gt;
====+Length:====&lt;br /&gt;
*Syntax: XSTR(&amp;quot;&#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;quot;, integer)&lt;br /&gt;
*Example: XSTR(&amp;quot;&amp;quot;, -1)&lt;br /&gt;
&lt;br /&gt;
====+Gun Mounts:====&lt;br /&gt;
*Syntax: XSTR(&amp;quot;&#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;quot;, integer)&lt;br /&gt;
*Example: XSTR(&amp;quot;&amp;quot;, -1)&lt;br /&gt;
&lt;br /&gt;
====+Missile Banks:====&lt;br /&gt;
*Syntax: XSTR(&amp;quot;&#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&amp;quot;, integer)&lt;br /&gt;
*Example: XSTR(&amp;quot;&amp;quot;, -1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Selection Effect:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines which selection effect to use when the -ship_choice_3d commandline flag is enabled or no ani can be found for the selected ship.&lt;br /&gt;
*Syntax: String, either &amp;quot;FS1&amp;quot;, or &amp;quot;Off&amp;quot;. This defaults to the FS2 effect.}}&lt;br /&gt;
&lt;br /&gt;
===$Cockpit POF file:===&lt;br /&gt;
{{Table3610|*Filename of the cockpit model file&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
===+Cockpit Offset:===&lt;br /&gt;
{{Table3610|*Defines the offset of the cockpit model&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, three &#039;&#039;&#039;floats&#039;&#039;&#039;, x-axis, y-axis, z-axis, respectively}}&lt;br /&gt;
&lt;br /&gt;
===$Cockpit Display:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Defines a rectangle surface on a cockpit texture that can be updated dynamically. Multiple displays can be defined, but only one needs to be defined for each texture on the cockpit model.&lt;br /&gt;
*&#039;&#039;&#039;+Texture:&#039;&#039;&#039;&lt;br /&gt;
*The filename of the cockpit texture to be replaced.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, texture filename&lt;br /&gt;
*&#039;&#039;&#039;+Offsets:&#039;&#039;&#039;&lt;br /&gt;
* (Optional) The offsets of the rectangle surface into the texture that will be drawn into.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, two &#039;&#039;&#039;integers&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Size:&#039;&#039;&#039;&lt;br /&gt;
* The size of the rectangle surface that will be drawn into.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, two &#039;&#039;&#039;integers&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Background:&#039;&#039;&#039;&lt;br /&gt;
* (Optional) Filename of the bitmap to be used as the background of this display.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, texture filename&lt;br /&gt;
*&#039;&#039;&#039;+Foreground:&#039;&#039;&#039;&lt;br /&gt;
* (Optional) Filename of the bitmap to be used as the foreground of this display.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, texture filename&lt;br /&gt;
*&#039;&#039;&#039;+Display Name:&#039;&#039;&#039;&lt;br /&gt;
* A name to be used as a reference handle.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$POF File:===&lt;br /&gt;
*Filename of the model file (.pof) at data/models folder&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Texture Replace:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+old:&#039;&#039;&#039;&lt;br /&gt;
*Defines the texture to be replaced&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+new:&#039;&#039;&#039;&lt;br /&gt;
*Defines the new texture&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$POF Target File:===&lt;br /&gt;
*Optional hud targeting model&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$POF Target LOD:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the LOD (Level-Of-Detail) of target model used in the HUD targetbox&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Detail Distance:===&lt;br /&gt;
*Defines the distance where the change between different Levels-Of-Details (LODs) occurs&lt;br /&gt;
*Take notice that these are base values. Model detail in Detail options, (within game press F2), applies a multiplier to these values. These multipliers default to (from left to right): 1/8, 1/4, 1, 4, and 8, and may be overridden by the [[Ai_profiles.tbl#$Detail Distance Multiplier:|$Detail Distance Multiplier]]&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;(Detail Distances)&#039;&#039;&#039;&#039;&#039; , list of &#039;&#039;&#039;integers&#039;&#039;&#039; (same amount as LODs), distances from the model in meters&lt;br /&gt;
**Example: &#039;&#039;(0, 80, 300, 900)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Collision LOD:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Defines an alternative LOD (Level-Of-Detail) to use for collision detection. Using this can increase performance without visible drawbacks if the LOD chosen has much simpler geometry but the shape still closely matches the base model.&lt;br /&gt;
*This works as follows: collision detection proceeds normally through the various model/submodel radius and bounding box checks based on LOD0, but when the game decides to perform a mesh-based collision check of a given submodel, it will use the submodel&#039;s LOD mesh instead. However, all submodels do not need to have a counterpart in the given LOD; if one is not found, the closest alternative will automatically be used instead.&lt;br /&gt;
*For example, if &#039;&#039;$Collision LOD: 3&#039;&#039; is used and the submodel engine01a is checked for a hit, the game will attempt to use the mesh of engine01d instead. However, if there is no engine01d submodel, the game will find the closest alternative: it&#039;ll look for engine01c, then engine01b, and finally fall back to engine01a. Note the implications of for example the root LOD submodel (detaild, detail3, etc) including the geometry of subsystem submodels; if detail0 is checked for a collision before engine01a, and detail3 includes the engine geometry (as opposed to having it in engine01d), then the subsystem engine01a cannot be hit.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$ND:===&lt;br /&gt;
*No Dim field field was used in FreeSpace for ship lights. Use of glowmaps is preferred to the $ND entry. Only noticeable in Glide or Software mode.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue respectively, value from 0 to 255&lt;br /&gt;
**Example: &#039;&#039;42, 42, 224&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Enable Team Colors:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Enables Team Colors for a ship without setting a default color setting.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Default Team:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Specifies the default team name to be used for coloring a ship.&lt;br /&gt;
*None is will set the default to &#039;no coloring&#039;.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the teams as defined in [[colors.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Show Damage:===&lt;br /&gt;
*No function at all. The engine will read values, but discard them. In 3.6.10 or later, this can be left out without adverse consequences.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, yes or no, usually yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Damage Lightning Type:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Changes the damage lightning effect shown on highly damaged ships. &lt;br /&gt;
*Can be defined as:&lt;br /&gt;
**&#039;&#039;None&#039;&#039;&lt;br /&gt;
**&#039;&#039;Default&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Impact:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Damage Type:&#039;&#039;&#039;&lt;br /&gt;
**Defines the damage type of the collision&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the armor as defined in [[armor.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Impact Spew:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Used to define the impact particle spew&lt;br /&gt;
*Note: You CANNOT define a different type of particle spew here; the only option possible is listed below&lt;br /&gt;
*&#039;&#039;&#039;+Max particles:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum number of particles spewed&lt;br /&gt;
**Setting to zero causes model to generate no particles at all&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 30}}{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;+Min particles:&#039;&#039;&#039;&lt;br /&gt;
**Defines the minimum number of particles spewed&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 25&lt;br /&gt;
*&#039;&#039;&#039;+Max Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum radius of particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 0.5f&lt;br /&gt;
*&#039;&#039;&#039;+Min Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the minimum radius of particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 0.2f&lt;br /&gt;
*&#039;&#039;&#039;+Max Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum lifetime of particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 0.55f&lt;br /&gt;
*&#039;&#039;&#039;+Min Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Defines the minimum lifetime of particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 0.05f&lt;br /&gt;
*&#039;&#039;&#039;+Max Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum velocity of particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 12.0f&lt;br /&gt;
*&#039;&#039;&#039;+Min Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Defines the minimum velocity of particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 2.0f&lt;br /&gt;
*&#039;&#039;&#039;+Normal Variance:&#039;&#039;&#039;&lt;br /&gt;
**Defines the variance of particle direction from the normal&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 1.0f}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Damage Spew:===&lt;br /&gt;
See [[Ship.tbl#$Impact Spew:|Impact Spew entry]]&lt;br /&gt;
*Controls the &#039;smoke&#039; released on weapon impact point&lt;br /&gt;
*Certain default values (marked with &#039;&#039;&#039;X&#039;&#039;&#039;) gain a specific multiplier based on ship radius&lt;br /&gt;
::If the radius is less than 20 the multiplier is 1&lt;br /&gt;
::If the radius is larger than 40 the multipler is 1.2&lt;br /&gt;
::Otherwise it is between 1 and 1.2&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Max Particles:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 50 * &#039;&#039;&#039;X&#039;&#039;&#039;}}{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;+Min Particles:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 20 * &#039;&#039;&#039;X&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Max Radius:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 1.3 &lt;br /&gt;
*&#039;&#039;&#039;+Min Radius:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 0.7&lt;br /&gt;
*&#039;&#039;&#039;+Max Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 1.5 * &#039;&#039;&#039;X&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Min Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 0.7 * &#039;&#039;&#039;X&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Max Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 12.0&lt;br /&gt;
*&#039;&#039;&#039;+Min Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 3.0&lt;br /&gt;
*&#039;&#039;&#039;+Normal Variance:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 0.2 * &#039;&#039;&#039;X&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Collision Physics:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Parameters affecting collision physics, including landings.&lt;br /&gt;
*&amp;quot;Landing&amp;quot; means the ship will not take damage or shake when it touches down. Instead, the ship will reorient towards a neutral resting orientation. &amp;quot;Reorient&amp;quot; thresholds below mean that the ship will still take damage (counts as a crash) but will move towards the correct landing orientation. &lt;br /&gt;
&lt;br /&gt;
====+Bounce:====&lt;br /&gt;
When this ship collides with a large ship, how many meters to instantly move it away. Default is 5.0.&lt;br /&gt;
====+Both Small Bounce:====&lt;br /&gt;
When this ship collides with a small ship, how many meters to instantly move it away. Default is 5.0.&lt;br /&gt;
====+Friction:====&lt;br /&gt;
During collisions, how much friction to apply (slowing lateral movement). Default is 0.0.&lt;br /&gt;
====+Rotation Factor:====&lt;br /&gt;
Affects the rotational energy of collisions. Default is 0.2.&lt;br /&gt;
====+Landing Max Forward Vel:====&lt;br /&gt;
Maximum velocity for which landing physics are used. &lt;br /&gt;
====+Landing Min Forward Vel:====&lt;br /&gt;
Minimum velocity for which landing physics are used. &lt;br /&gt;
====+Landing Max Descent Vel:====&lt;br /&gt;
Maximum velocity at which the ship can &amp;quot;hit the deck&amp;quot; and still be considered a landing. &lt;br /&gt;
====+Landing Max Horizontal Vel:====&lt;br /&gt;
Maximum sideways velocity the ship can land at.&lt;br /&gt;
====+Landing Max Angle:====&lt;br /&gt;
Maximum angle of attack the ship can land at (in degrees).&lt;br /&gt;
====+Landing Min Angle:====&lt;br /&gt;
Minimum angle of attack the ship can land at (in degrees).&lt;br /&gt;
====+Landing Max Rotate Angle:====&lt;br /&gt;
How many degrees the ship can be rotated relative to the landing surface in order to count as a landing. &lt;br /&gt;
====+Reorient Max Forward Vel:====&lt;br /&gt;
Maximum velocity for which the ship will be adjusted to the correct landing orientation.&lt;br /&gt;
====+Reorient Min Forward Vel:====&lt;br /&gt;
Minimum velocity for which the ship will be adjusted to the correct landing orientation.&lt;br /&gt;
====+Reorient Max Descent Vel:====&lt;br /&gt;
Maximum velocity at which the ship can &amp;quot;hit the deck&amp;quot; and still reorient. &lt;br /&gt;
====+Reorient Max Horizontal Vel:====&lt;br /&gt;
Maximum sideways velocity for reorienting.&lt;br /&gt;
====+Reorient Max Angle:====&lt;br /&gt;
Maximum angle of attack for reorienting to kick in (in degrees).&lt;br /&gt;
====+Reorient Min Angle:====&lt;br /&gt;
Minimum angle of attack for reorienting to kick in (in degrees).&lt;br /&gt;
====+Reorient Max Rotate Angle:====&lt;br /&gt;
How many degrees the ship can be rotated relative to the landing surface in order to be reoriented on impact.&lt;br /&gt;
====+Reorient Speed Mult:====&lt;br /&gt;
How quickly the reorientation takes place (when applicable)&lt;br /&gt;
====+Landing Rest Angle:====&lt;br /&gt;
Angle of the ship&#039;s nose relative to the plane of the landing surface when the ship is at rest. Reorient will move the ship towards this angle. &lt;br /&gt;
====+Landing Sound:====&lt;br /&gt;
Sound to play when landing (if it&#039;s not a landing, normal collision sound is used).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Debris:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Min Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Defines the minimum lifetime of the debris (Default value is a random number)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float,&#039;&#039;&#039; Seconds&lt;br /&gt;
*&#039;&#039;&#039;+Max Lifetime:&lt;br /&gt;
**Defines the maximum lifetime of the debris&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float,&#039;&#039;&#039; Seconds&lt;br /&gt;
*&#039;&#039;&#039;+Min Speed:&lt;br /&gt;
**Defines the minimum speed of the debris&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float,&#039;&#039;&#039; Meters/second&lt;br /&gt;
*&#039;&#039;&#039;+Max Speed:&lt;br /&gt;
**Defines the maximum speed of the debris&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float,&#039;&#039;&#039; Meters/second&lt;br /&gt;
*&#039;&#039;&#039;+Min Rotation speed:&lt;br /&gt;
**Defines the minimum rotational speed of the debris (Default is (6 to 10)/Ship-radius)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float,&#039;&#039;&#039; Radians/second&lt;br /&gt;
*&#039;&#039;&#039;+Max Rotation speed:&lt;br /&gt;
**Defines the maximum rotational speed of the debris&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float,&#039;&#039;&#039; Radians/second&lt;br /&gt;
*&#039;&#039;&#039;+Damage Type:&#039;&#039;&#039;&lt;br /&gt;
**Defines the damage type of the debris&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the armor as defined in [[armor.tbl]]}}&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*&#039;&#039;&#039;+Min Hitpoints:&#039;&#039;&#039;&lt;br /&gt;
**Defines the minimum hitpoints assigned for the generated debris pieces&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Max Hitpoints:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum hitpoints assigned for the generated debris pieces&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Damage Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**Defines the collision damage multiplier for collisions against the generated debris pieces&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Lightning Arc Percent:&#039;&#039;&#039;&lt;br /&gt;
**Controls what percent of debris pieces will have the damage lightning effect applied to them.&lt;br /&gt;
**Defaults to 50%.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float,&#039;&#039;&#039; 0-100}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Density:===&lt;br /&gt;
*This defines how hard you hit something. If you set it very high, a collision will the lower density ship and not yours; the higher the numbers are, the harder they will hit and the farther they will be pushed. However, this doesn&#039;t apply to asteroids. When a high density fighter collides with an asteroid, the high-density fighter will receive damage, but it will also destroy the asteroid. Setting a density of 1000 on a fighter with 180 hitpoints will cause the fighter to immediately explode if it collides with, say, an asteroid. A low-density fighter will not have any effect on an asteroid, but if the fighter destroys the asteroid, the fighter will fly far away.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, usually 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Damp:===&lt;br /&gt;
*Sets the natural period (1 / omega) of the dampening effects on top of the acceleration model. (See [[Ships.tbl#$Forward Accel:|$Forward Accel:]])&lt;br /&gt;
*In essence, affects how quickly you will accel/decel to your target velocity. Higher damp means slower acceleration and deceleration, while lower values (down to 0.0001) means faster acceleration/deceleration.&lt;br /&gt;
**Specifying a value of 0.0 means there is no damping placed on top of the acceleration model, which is the most responsiveness you&#039;ll get.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Rotdamp:===&lt;br /&gt;
*Shares the same principles of [[Ships.tbl#$Damp:|$Damp]], but is applied to rotations directly. (there isn&#039;t a engine/thrust acceleration model for rotations)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Banking Constant:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines a factor for how much roll is added during a yaw. Set as 1 for full roll and 0 is no roll. Default is 0.5.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Max Velocity:===&lt;br /&gt;
*Defines maximum velocities with standard energy settings on x (left/right), y (up/down), and z (forward) -axis (respectively). z -axis velocity defines the maximum forward velocity.&lt;br /&gt;
*The x and y velocities are considered slide veocities&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, three &#039;&#039;&#039;floats&#039;&#039;&#039;, x-axis, y-axis, z-axis, respectively, meters per second&lt;br /&gt;
**Example: &#039;&#039;0.0, 0.0, 80.0&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Player Minimum Velocity:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Defines minimum velocities on x (left/right), y (up/down), and z (forward) -axis (respectively). This affects the player only, the AI ignores the value. &lt;br /&gt;
*The x and y velocities are considered slide velocities, the minimums for them are &#039;&#039;&#039;not currently implemented&#039;&#039;&#039;.&lt;br /&gt;
*When gliding, if the absolute speed vector of the players ship falls below the minimum then the ships engines will re-engage and cannot be switched off again until the ships absolute vector exceeds the z-minimum.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, three &#039;&#039;&#039;floats&#039;&#039;&#039;, x-axis, y-axis, z-axis, respectively, meters per second&lt;br /&gt;
**Example: &#039;&#039;0.0, 0.0, 40.0&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Rotation Time:===&lt;br /&gt;
*Defines rotation times around the x, y, and z-axis. Number is seconds it takes to complete rotate a ship (360 degrees) around the given axis. X-axis is &amp;quot;pitch,&amp;quot; y-axis is &amp;quot;yaw,&amp;quot; and z-axis is &amp;quot;roll.&amp;quot;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, three &#039;&#039;&#039;floats&#039;&#039;&#039;, seconds per 360 degree turn around x-axis, y-axis, z-axis, respectively&lt;br /&gt;
**Example: &#039;&#039;3.0, 2.6, 5.0&#039;&#039;&lt;br /&gt;
**Note: Setting to Zero will cause the model to disappear in mission.&lt;br /&gt;
&lt;br /&gt;
===$Rear Velocity:===&lt;br /&gt;
*Defines rear velocity&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second&lt;br /&gt;
**Note: This value must be set for [[Ships.tbl#.2BAburn_Max_Reverse_Vel:|+Aburn_Max_Reverse_Vel:]] to work&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Forward Accel:===&lt;br /&gt;
*Number of seconds needed from full stop to 63.21% of the maximum forward (z) velocity&lt;br /&gt;
** We use 63.21% instead of 100% because FSO&#039;s acceleration/velocity model is based on a simplistic exponential function, rather than the more complex models seen for prop-driven, jet-driven, or rocket-driven craft.&lt;br /&gt;
** The equation is a derivative of v = 1 - e^(-t / T), where T is what we define in the ship.tbl&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
===$Forward Decel:===&lt;br /&gt;
*Number of seconds needed from maximum forward (z) velocity to full stop&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Slide Accel:===&lt;br /&gt;
*Number of seconds needed from full stop to 63.21% maximum slide velocity&lt;br /&gt;
*Note: this is applied to both slide (x and y) axes&lt;br /&gt;
**See [[Ships.tbl#$Forward Accel:|$Forward Accel]] for an explanation of the 63.21%&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
===$Slide Decel:===&lt;br /&gt;
*Number of seconds needed from 63.21% maximum slide velocity to full stop&lt;br /&gt;
*Note: this is applied to both slide (x and y) axes&lt;br /&gt;
**See [[Ships.tbl#$Forward Accel:|$Forward Accel]] for an explanation of the 63.21%&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
===$Glide:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Allows gliding in game, i.e. turning the ship&#039;s attitude/facing without changing its current movement direction and speed.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, yes or no}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====+Dynamic Glide Cap:====&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*If set, game uses dynamic glide cap. The dynamic glide cap means that the maximum glide speed will follow the same rules as normal flight, including the effects of afterburner and power to engines. If set to YES, the value in +Max Glide Speed is ignored.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====+Max Glide Speed:====&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the maximum glide speed if glide has been enabled. If 0, this is set to the fastest speed the ship can go. If negative, there is no glide cap (allowing practically infinite maximum gliding speed). Defaults to 0.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====+Glide Accel Mult:====&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the acceleration multiplier for the gliding mode. If &amp;gt; 0, sets a fixed acceleration rate in glide mode depending on value. If set to 0, impossible to accelerate while in glide mode. If negative, enables glide speed ramping (acceleration in glide mode ramps in the same way as in normal flight). Defaults to 0.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Entry exists as a dummy entry which doesnt do anything to prevent compatibility issues}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Use Newtonian Dampening:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*If set, forces the ship to use (or not use) newtonian dampening. Basically, allows overriding the AI Profiles flag on a per-ship basis. &lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Autoaim FOV:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the field of view for autoaim&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
====+Converging Autoaim====&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines that the autoaim uses convergence}}&lt;br /&gt;
&lt;br /&gt;
====+Minimum Distance:====&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the minimum distance for the convergence}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Convergence:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the weapons use convergence&lt;br /&gt;
{{Note|If none of the following optional strings are added, the weapon will not converge. Don&#039;t forget to use them.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====+Automatic====&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines that the ship uses automatic convergence - converging distance calculated from estimated hit position (lead) of the current target.&lt;br /&gt;
*&#039;&#039;&#039;+Minimum Distance:&#039;&#039;&#039;&lt;br /&gt;
**Defines the minimum distance for the convergence.  Overrides the setting for $Autoaim FOV&#039;s minimum distance.}}&lt;br /&gt;
&lt;br /&gt;
====+Standard====&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines that ship uses fixed convergence.&lt;br /&gt;
*&#039;&#039;&#039;+Distance:&#039;&#039;&#039;&lt;br /&gt;
**Defines the converging distance from the ship}}&lt;br /&gt;
&lt;br /&gt;
====+Offset:====&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the offset from the ship centerpoint for the convergence&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, three &#039;&#039;&#039;floats&#039;&#039;&#039;, x-axis, y-axis, z-axis, respectively}}&lt;br /&gt;
&lt;br /&gt;
===$Warpin Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Allow an animation to be defined as a warpin effect.&lt;br /&gt;
*Can be defined as:&lt;br /&gt;
:*&#039;&#039;Default&#039;&#039;&lt;br /&gt;
:*&#039;&#039;BTRL&#039;&#039; or &#039;&#039;Galactica&#039;&#039;&lt;br /&gt;
:*&#039;&#039;Homeworld&#039;&#039;&lt;br /&gt;
:*&#039;&#039;Hyperspace&#039;&#039;}}&lt;br /&gt;
{{Table3613|&lt;br /&gt;
:*&#039;&#039;Knossos&#039;&#039;&lt;br /&gt;
:*&#039;&#039;Babylon5&#039;&#039;}}&lt;br /&gt;
{{Table3611|&lt;br /&gt;
::*&#039;&#039;BTRL&#039;&#039; was replaced with &#039;&#039;Galactica&#039;&#039; after 3.6.10}}&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpin Start Sound:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*File for playing at start of warp in effect&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpin End Sound:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*File for playing at end of warp in effect&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpin Speed:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Sets the speed at which the ship warps in for &#039;&#039;&#039;default&#039;&#039;&#039; warpin effect&lt;br /&gt;
*Sets the time that the ships warp in (not the animation itself) takes for &#039;&#039;&#039;BTRL&#039;&#039;&#039; type warpin effects&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second or miiliseconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpin Time:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the effect duration&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpin Decel Exp:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Only for the &#039;&#039;&#039;hyperspace&#039;&#039;&#039; warpin effect.&lt;br /&gt;
*Defines an exponent for the deceleration curve at the end of the warpin. Must be higher than 0; a value of 1 produces a constant velocity throughout the effect and higher values produce gradual deceleration.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default: 1.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpin Radius:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the effect radius&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpin Animation:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the animation used for the Homeworld warpin effect. Has no effect for other warpin types.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
===$Warpout Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Allow an animation to be defined as a warpout effect.&lt;br /&gt;
*Can be defined as:&lt;br /&gt;
:*&#039;&#039;Default&#039;&#039;&lt;br /&gt;
:*&#039;&#039;BTRL&#039;&#039; or &#039;&#039;Galactica&#039;&#039;&lt;br /&gt;
:*&#039;&#039;Homeworld&#039;&#039;&lt;br /&gt;
:*&#039;&#039;Hyperspace&#039;&#039;}}&lt;br /&gt;
{{Table3613|&lt;br /&gt;
:*&#039;&#039;Knossos&#039;&#039;&lt;br /&gt;
:*&#039;&#039;Babylon5&#039;&#039;}}&lt;br /&gt;
{{Table3611|&lt;br /&gt;
::*&#039;&#039;BTRL&#039;&#039; was replaced with &#039;&#039;Galactica&#039;&#039; after 3.6.10}}&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpout Start Sound:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*File for playing at start of warp out effect&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpout End Sound:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*File for playing at end of warp out effect&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpout Engage Time:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Defines the delay the it takes for the warp drive of the ship to engage, during which the player may still abort the warpout. Affects both the player as well as AI ships. If not defined, defaults to 3 seconds for the player and none for the AI.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpout Speed:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Sets the speed at which the ship warps out for &#039;&#039;&#039;default&#039;&#039;&#039; warpout effect&lt;br /&gt;
*Sets the time that the ships warp out (not the animation itself) takes for &#039;&#039;&#039;BTRL&#039;&#039;&#039; type warpout effects}}&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Sets the minimum speed required for the ship to warp out for &#039;&#039;&#039;hyperspace&#039;&#039;&#039; type warpout effects}}&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second or milliseconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpout Time:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the effect duration&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpout Accel Exp:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Only for the &#039;&#039;&#039;hyperspace&#039;&#039;&#039; warpin effect.&lt;br /&gt;
*Defines an exponent for the acceleration curve at the start of the warpout. Must be higher than 0; a value of 1 produces a constant velocity throughout the effect and higher values produce gradual acceleration.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default: 1.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpout Radius:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the effect radius&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Warpout Animation:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the animation used as the warpout effect.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Player Warpout Speed:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Sets the speed at which the player warps out from the game&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Expl Inner Rad:===&lt;br /&gt;
*Radius at which the full explosion damage is done&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Expl Outer Rad:===&lt;br /&gt;
*Maximum radius at which any damage is done&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Expl Damage:===&lt;br /&gt;
*Amount of damage done inside the inner radius&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Expl Blast:===&lt;br /&gt;
*The intensity of the blast effect when you&#039;re within the outer radius&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, blast effect&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Expl Propagates:===&lt;br /&gt;
*This decides whether the ship explodes into debris immediately, or whether it has the many small explosions before breaking apart slowly&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, yes or no&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Propagating Expl Radius Multiplier:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*This sets the multiplier for the ship splitting propagating explosions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, defaults to 1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Expl Visual Rad:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*This determines the visual size of the main fireball for an exploding ship. Does not affect ships with propagating explosions. &lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Base Death-Roll Time:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the base death-roll time&lt;br /&gt;
*Values is modified depending on conditions when the ship died&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
**Default: 3000}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Death-Roll Explosion Radius Mult:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the multiplier for the radius of the ship surface explosions during death roll&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default: 1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Death-Roll Explosion Intensity Mult:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the multiplier for the amount of the ship surface explosions during death roll&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default: 1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Death FX Explosion Radius Mult:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the multiplier applied to the ship death explosions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default: 1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Death FX Explosion Count:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the number of explosion effect game uses when a large ship dies&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default: 6}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Ship Splitting Particles:===&lt;br /&gt;
See [[Ship.tbl#$Impact Spew:|Impact Spew entry]]&lt;br /&gt;
*Controls the particles released on every explosion event which happens when ship is splitting apart&lt;br /&gt;
*The old &#039;popcorn&#039; effect&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;+Max Particles:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 80&lt;br /&gt;
*&#039;&#039;&#039;+Min Particles:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 40&lt;br /&gt;
*&#039;&#039;&#039;+Max Radius:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: Ship radius * 0.015&lt;br /&gt;
*&#039;&#039;&#039;+Min Radius:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: Ship radius * 0.005&lt;br /&gt;
*&#039;&#039;&#039;+Max Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 6.0 * (1 + 0.002 * Ship radius)&lt;br /&gt;
*&#039;&#039;&#039;+Min Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 0.5 * (1 + 0.002 * Ship radius) &lt;br /&gt;
*&#039;&#039;&#039;+Max Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: Speed of the propagating explosion&lt;br /&gt;
*&#039;&#039;&#039;+Min Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 0.0&lt;br /&gt;
*&#039;&#039;&#039;+Normal Variance:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 2.0}}&lt;br /&gt;
&lt;br /&gt;
===$Ship Death Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the [[Particle Effects|particle effect]] which will be used the final explosion of this ship type,&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*If this option is specified then &#039;&#039;$Ship Death Particles&#039;&#039; is not a valid option!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Ship Death Particles:===&lt;br /&gt;
See [[Ship.tbl#$Impact Spew:|Impact Spew entry]]&lt;br /&gt;
*Controls the particles released on the moment &#039;non-knossos&#039; type object dies&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;+Max Particles:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 100&lt;br /&gt;
*&#039;&#039;&#039;+Min Particles:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 50&lt;br /&gt;
*&#039;&#039;&#039;+Max Radius:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 1.5&lt;br /&gt;
*&#039;&#039;&#039;+Min Radius:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 0.1&lt;br /&gt;
*&#039;&#039;&#039;+Max Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 4.0&lt;br /&gt;
*&#039;&#039;&#039;+Min Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 0.5&lt;br /&gt;
*&#039;&#039;&#039;+Max Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 20.0&lt;br /&gt;
*&#039;&#039;&#039;+Min Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 0.0&lt;br /&gt;
*&#039;&#039;&#039;+Normal Variance:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 2.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Alternate Death Particles:===&lt;br /&gt;
See [[Ship.tbl#$Impact Spew:|Impact Spew entry]]&lt;br /&gt;
*Controls the particles released when &#039;knossos&#039; type object is dying&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;+Max Particles:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 30&lt;br /&gt;
*&#039;&#039;&#039;+Min Particles:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 15&lt;br /&gt;
*&#039;&#039;&#039;+Max Radius:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 100.0&lt;br /&gt;
*&#039;&#039;&#039;+Min Radius:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 30.0&lt;br /&gt;
*&#039;&#039;&#039;+Max Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 12.0&lt;br /&gt;
*&#039;&#039;&#039;+Min Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 2.0&lt;br /&gt;
*&#039;&#039;&#039;+Max Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 350.0&lt;br /&gt;
*&#039;&#039;&#039;+Min Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 50.0&lt;br /&gt;
*&#039;&#039;&#039;+Normal Variance:&#039;&#039;&#039;&lt;br /&gt;
**Default Value: 2.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Vaporize Percent Chance:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Allows ships to sometimes explode instantly (vaporize) instead of going through a death roll first. Overrides the same flag in [[objecttypes.tbl]]. &lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, percent chance of vaporization, 0 to 100}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave Damage Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;REQUIRES ADDITIONAL TABLE&#039;&#039;&#039;. Defines the damage type used for the ship explosions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the armor as defined in [[armor.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave Speed:===&lt;br /&gt;
*Speed shockwave expands at, 0 means no shockwave&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave Count:===&lt;br /&gt;
*Defines the number of shockwaves to spawned&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave Model:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the textured model used as the ship&#039;s 3D shockwave&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave Name:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the name of the animation to used for the 2D shockwave&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Explosion Animations:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the explosion animations used for the ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer list&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Weapon Model Draw Distance:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Distance that external weapons are shown, ie. missiles and such.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
**Default: &#039;&#039;200&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Primary Weapons===&lt;br /&gt;
====$Allowed PBanks:====&lt;br /&gt;
*List of allowed primary weapons in brackets (weapon name marked with quotes).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;, names of the weapons&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Each of the primary weapon banks &#039;&#039;&#039;can optionally&#039;&#039;&#039; be given their own list of allowed weapons, in which case each bank has its own bracketed entry.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; ) ( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====$Allowed Dogfight PBanks:====&lt;br /&gt;
*Primary weapons for multiplayer dogfights.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;, names of the weapons&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Each of the primary weapon dogfight banks &#039;&#039;&#039;can optionally&#039;&#039;&#039; be given their own list of allowed weapons, in which case each bank has it&#039;s own bracketed entry.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; ) ( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====$Default PBanks:====&lt;br /&gt;
*Defines default primary weapons for each of the primary weapon banks&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;, names of the weapons&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====$PBank Capacity:====&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines ammunition capacity of primary weapon banks. In brackets, different weapon banks separated by commas.&lt;br /&gt;
*NOTE: In order for this to work, at least one of the primary weapons in the list of default primaries must be a ballistic weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( Integer, Integer )&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====$Show Primary Models:====&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the use of weapon models for primary weapons. In brackets, different weapon banks may have different definitions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( Boolean Boolean )&#039;&#039;&#039;&#039;&#039;, yes or no&lt;br /&gt;
**Example: &#039;&#039;( YES YES )&#039;&#039; - Note the spaces on the insides of the brackets.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Secondary Weapons===&lt;br /&gt;
====$Allowed SBanks:====&lt;br /&gt;
*Same for secondary weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;, names of the weapons&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Each of the secondary weapon banks can be given their own list of allowed weapons, in which case each bank has it&#039;s own bracketed entry.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; ) ( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====$Allowed Dogfight SBanks:====&lt;br /&gt;
*Same for secondary weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;, names of the weapons&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Each of the secondary weapon dogfight banks can be given their own list of allowed weapons, in which case each bank has it&#039;s own bracketed entry.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; ) ( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====$Default SBanks:====&lt;br /&gt;
*Defines default primary weapons for each of the primary weapon banks&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;, names of the weapons&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====$SBank Capacity:====&lt;br /&gt;
*Defines ammunition capacity of secondary weapon banks. In brackets, different weapon banks separated by commas.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( Integer, Integer )&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====$Show Secondary Models:====&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the use of weapon models for secondary weapons. In brackets, different weapon banks may have different definitions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( Boolean Boolean )&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Example: &#039;&#039;(YES YES)&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Ship Recoil Modifier:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Multiplies the recoil force of a weapon by this value, use a value greater than 1.0 to increase the force, use a value between 1.0 and 0.0 to decrease.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (defaults to 1.0)&lt;br /&gt;
{{Note|It is not required to have any weapons with the &amp;quot;apply recoil&amp;quot; flag set for this to be enabled.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Shields:===&lt;br /&gt;
*Determines the shield strength&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, total shield strength&lt;br /&gt;
&lt;br /&gt;
====+Auto Spread:====&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines the thickness of auto spread shields. Note that the [[#.22auto_spread_shields.22|&amp;quot;auto spread shields&amp;quot;]] ship flag is also needed.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, shield thickness in meters.}}&lt;br /&gt;
&lt;br /&gt;
====+Minimum Weapon Span:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Determines the minimum distance weapons must have traveled before impacting the shield (for example if fired close to or inside the shield). Does not affect whether the weapon bypasses shields, unless +Allow Bypass (see below) is set to &#039;&#039;YES&#039;&#039;. Only valid with auto spread shields.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, defaults to the shield thickness.}}&lt;br /&gt;
&lt;br /&gt;
====+Allow Bypass:====&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Determines whether weapons which impact on the ship&#039;s hull (see +Minimum Weapon Span above) will bypass shields. Only valid with auto spread shields.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default: &#039;&#039;NO&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
====+Spread From LOD:====&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Causes the auto spread shields calculations to be done based off a LOD level other than LOD0. Using a lower-poly LOD will considerably speed up the shield collision detection, while being visually indistinguishable in most cases.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, defaults to 0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Model Point Shield Controls:===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Allows remapping of the 4 shield augmentation keys when [[Model Point Shields]] are used. You should usually supply as many values as you have shield segments. The first value determines which augmentation key to use for the first shield segment, the second value determines which key to use for the second shield segment, and so on (the order being defined by the order of the shield points in the model file). If less than 4 values are given, &amp;quot;none&amp;quot; is assumed for the missing ones. Note that as there are only 4 augmentation keys, player ships with more than 4 shield segments would generally not be a good idea.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( String list )&#039;&#039;&#039;&#039;&#039;, possible values &amp;quot;front&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot;, &amp;quot;rear&amp;quot; and &amp;quot;none&amp;quot;&lt;br /&gt;
**Example: &#039;&#039;( &amp;quot;front&amp;quot; &amp;quot;rear&amp;quot; )&#039;&#039; for a ship with only two shield sections, front and rear; the left and right augmentation keys would be disabled.&lt;br /&gt;
**Example: &#039;&#039;( &amp;quot;left&amp;quot; &amp;quot;rear&amp;quot; &amp;quot;right&amp;quot; )&#039;&#039; for a ship with only three shield sections, left, right and rear; the front augmentation key would be disabled.&lt;br /&gt;
**Example: &#039;&#039;( &amp;quot;front&amp;quot; &amp;quot;right&amp;quot; &amp;quot;rear&amp;quot; &amp;quot;left&amp;quot; )&#039;&#039; for a ship with four shield sections but perhaps positioned in a non-standard way.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shield Color:===&lt;br /&gt;
*RGB value for shield color&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue respectively, value from 0 to 255&lt;br /&gt;
**Example: &#039;&#039;100, 100, 255&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shield Impact Explosion:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Impact explosion animation to trigger when this ship&#039;s shields are hit. Works identically for all shield types.&lt;br /&gt;
*Note: The size of the explosion is defined by the weapon, see [[Weapons.tbl#.24Shield_Impact_Explosion_Radius:]].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename or &#039;&#039;none&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Max Shield Recharge:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Determines a maximum recharge limit of shields. When used, the combined maximum shield energy is lowered, meaning that shield energy can be moved between quadrants even with shields fully charged.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, multiplier ranging from 0.0 to 1.0, defaults to 1.0&lt;br /&gt;
**Example: &#039;&#039;$Max Shield Recharge: 0.5&#039;&#039; caps the combined shield energy to 50%, meaning that a ship with 4 shield quadrants will by default have 12.5% strength on all quadrants (instead of normal 25%), allowing it to for example augment one quadrant to 50% while dropping other quadrants to 0%.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Power Output:===&lt;br /&gt;
*Actually does *NOTHING* unless set to zero; in which case weapon/shield/burner energy regeneration is disabled. Checked via code inspection 2014/12/29&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Shield Regeneration Rate:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Repair rates for shields at percent per second&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, multiplier of total shield hitpoints recharged each second. (&#039;&#039;&#039;NOT A PERCENTAGE&#039;&#039;&#039;, 0.02 equals 2% recharged per second)&lt;br /&gt;
**Default: &#039;&#039;0.02&#039;&#039;&lt;br /&gt;
*Affected by ETS Shields value (1/3rd value recharged per sec at default ETS setting of &#039;4&#039;)&lt;br /&gt;
*Affected by AI Profile Setting: $Player Shield Recharge Scale:}}&lt;br /&gt;
&lt;br /&gt;
===$Support Shield Repair Rate:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Shield repair rate when docked to a support ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Weapon Regeneration Rate:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Regeneration rates for primary guns at percent per second&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, multiplier of total gun energy recharged each second (&#039;&#039;&#039;NOT A PERCENTAGE&#039;&#039;&#039;, 0.04 equals 4% recharged per second)&lt;br /&gt;
**Default: &#039;&#039;0.04&#039;&#039;&lt;br /&gt;
*Affected by ETS Guns value (1/3rd value recharged per sec at default ETS setting of &#039;4&#039;)&lt;br /&gt;
*Affected by AI Profile Setting: $Player Weapon Recharge Scale:}}&lt;br /&gt;
&lt;br /&gt;
===$Max Oclk Speed:===&lt;br /&gt;
*Can also be &#039;&#039;&#039;$Max Overclock Speed:&#039;&#039;&#039;&lt;br /&gt;
*Maximum velocity with all energy diverted to engines&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Max Weapon Eng:===&lt;br /&gt;
*Can also be &#039;&#039;&#039;$Max Weapon Energy:&#039;&#039;&#039;&lt;br /&gt;
*The maximum amount of energy you can store in your primary weapons bank.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Hitpoints:===&lt;br /&gt;
*How much damage the ship can take&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, hitpoints&lt;br /&gt;
**Default: &#039;&#039;100&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Hull Repair Rate:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Repair rates for hull at percent per second&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, multiplier of hitpoints repaired per second, &#039;&#039;&#039;NOT A PERCENTAGE&#039;&#039;&#039;, 0.01 equals 1% recharged per second}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Support Hull Repair Rate:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Repair rate for hull when docked to a support ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Subsystem Repair Rate:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Repair rates for sybsystems percent per second&lt;br /&gt;
*Syntax: &#039;&#039;Value&#039;&#039;, percentage of total subsystem hitpoints repaired per second}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Support Subsystem Repair Rate:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Repair rate for subsystems when docked to a support ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Armor Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;REQUIRES ADDITIONAL TABLE&#039;&#039;&#039;. Defines armor type used for the ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the armor as defined in [[armor.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
===$Shield Armor Type:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*&#039;&#039;&#039;REQUIRES ADDITIONAL TABLE&#039;&#039;&#039;. Defines the armor type used for shield of the ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the armor as defined in [[armor.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Flags:===&lt;br /&gt;
*See [[Ships.tbl#Ships.tbl_flags|below]]&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;, names of the flags assigned to the ship&lt;br /&gt;
**Example: ( &amp;quot;fighter&amp;quot; &amp;quot;in tech database&amp;quot; )&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+noreplace&#039;&#039;&#039;&lt;br /&gt;
**Can be used to force game to retain existing flags instead of reseting the ship flags before parsing in the new flags.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$AI Class:===&lt;br /&gt;
*Default AI class&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the AI class as defined in [[ai.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Afterburner:===&lt;br /&gt;
*Defines if the ships has afterburner&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, yes or no&lt;br /&gt;
====+Aburn Max Vel:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, three &#039;&#039;&#039;floats&#039;&#039;&#039;, x-axis, y-axis, z-axis, respectively, meters per second&lt;br /&gt;
====+Aburn For accel:====&lt;br /&gt;
*Defined only for the forward acceleration. In same format as [[Ships.tbl#$Forward Accel:|$Forward Accel]]&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
====+Aburn Max Reverse Vel:====&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defined only for the reverse acceleration, Sets the top speed for Reverse Afterburner.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
**NOTE: Requires [[Ships.tbl#.24Rear_Velocity:|$Rear Velocity:]] to be set in order to work.&lt;br /&gt;
}}&lt;br /&gt;
====+Aburn Rev accel:====&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defined only for the reverse acceleration. In same format as [[Ships.tbl#$Forward Accel:|$Forward Accel]]&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
====+Aburn Fuel:====&lt;br /&gt;
*Amount of afterburner fuel the ship has&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, fuel&lt;br /&gt;
====+Aburn Burn Rate:====&lt;br /&gt;
*Rate the fuel is consumed when afterburner is engaged (in units per seconds)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, fuel units per second&lt;br /&gt;
====+Aburn Rec Rate:====&lt;br /&gt;
*Rate the fuel is restored.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, fuel units per second&lt;br /&gt;
{{Table3610|&lt;br /&gt;
====$Trails:====&lt;br /&gt;
*Allows afterburner trails to be used&lt;br /&gt;
=====+Bitmap:=====&lt;br /&gt;
*Texture used to draw the afterburner trail&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
=====+Width:=====&lt;br /&gt;
*Width of afterburner trail at the beginning of it (ie. the thruster end)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
=====+Alpha:=====&lt;br /&gt;
*Transparancy of the trail, value from 1 (non-transparent) to 0 (totally transparent)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
=====+Life:=====&lt;br /&gt;
*How long the trail will last&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
{{Table3611|&lt;br /&gt;
=====+Faded Out Sections:=====&lt;br /&gt;
*Defines the number of the trail sections from the leading edge that are gradually faded away.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Countermeasure Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapon used as a countermeasure. Weapon does not have to be included in the countermeasure section of the weapons.tbl, but it has to have &amp;quot;countermeasure&amp;quot; flag in that case.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the weapon as defined in [[weapons.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Countermeasures:===&lt;br /&gt;
*Number of countermeasures that can be loaded to the ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Scan Time:===&lt;br /&gt;
*Time it takes to scan the ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$EngineSnd:===&lt;br /&gt;
*Engine sound used for the ship with number referring to sounds.tbl&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
&lt;br /&gt;
===$Minimum Engine Volume:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Specifies how to multiply the volume of the engine sound based on ship speed. When the ship is stationary, the engine volume will be multiplied by the given value, with the value approaching 1.0 as the ship speed approaches maximum.&lt;br /&gt;
*Note: Default behavior is to ramp the multiplier from 0.5 (when ship is stationary) to 1.0 (when ship is at half speed or more).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, volume multiplier, usually you&#039;ll want a value between 0.0 and 1.0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$GlideStartSnd:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used when entering glide mode, instead of the default throttle down sound.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$GlideEndSnd:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used when exiting glide mode, instead of the default throttle up sound.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$CockpitEngineSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for looping engine sound heard in the cockpit.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$FullThrottleSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when setting throttle to full power.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$ZeroThrottleSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when setting throttle to zero power&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$ThrottleUpSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when increasing throttle power by 1/3&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$ThrottleDownSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when decreasing throttle power by 1/3&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$AfterburnerSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional optional sound to be used for the looping sound heard when the afterburner is active&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$AfterburnerEngageSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional optional sound to be used for the sound heard when the afterburner is engaged&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$AfterburnerFailedSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when the activation of the afterburner failed&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$MissileTrackingSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when a aspect seeking missile of the player tries to acquire a lock&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$MissileLockedSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when a aspect seeking missile of the player has acquired a lock&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$PrimaryCycleSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when the player cycles his primary weapon&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$SecondaryCycleSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when the player cycles his secondary weapon&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$TargetAcquiredSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when the player acquires a new target&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$PrimaryFireFailedSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when the primary weapon fails to fire&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$SecondaryFireFailedSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when the secondary weapon fails to fire&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$HeatSeekerLaunchWarningSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when a heat-seeker is fired at the player&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$AspectSeekerLaunchWarningSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when an aspect-seeker is fired at the player&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$MissileLockWarningSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when an aspect-seeker is locked onto the player&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$HeatSeekerProximityWarningSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when a heat-seeker is in close proximity to the player&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$AspectSeekerProximityWarningSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when an aspect-seeker is in close proximity to the player&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$MissileEvadedSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when a missile has been evaded&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$CargoScanningSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when the cargo of an object is being scanned&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$ExplosionSnd===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Optional sound to be used for the sound heard when the ship explodes&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Closeup_Pos:===&lt;br /&gt;
*How the model will show at techroom and briefing screen animations (assuming a pre-rendered animation is not specified). The position of the camera relative to the model in the tech room and the target box view. If 3D ship selection is used, also affects the drawing of the ship icon in the weapon &amp;amp; ship selection briefing screens.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, three &#039;&#039;&#039;floats&#039;&#039;&#039;, x, y and z values respectively&lt;br /&gt;
&lt;br /&gt;
===$Closeup_Zoom:===&lt;br /&gt;
*How the model will show at techroom and briefing screen animations (assuming a pre-rendered animation is not specified). How far the camera&#039;s zoomed in, defines camera&#039;s FOV. If 3D ship selection is used, also affects the drawing of the ship icon in the weapon &amp;amp; ship selection briefing screens.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, radians&lt;br /&gt;
&lt;br /&gt;
===$Topdown Offset:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Specifies how high the camera is above the center point of a ship in topdown camera views, or 2D missions.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shield_Icon:===&lt;br /&gt;
*This .ani file must be at data/hud and included to the hud.tbl.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Reference to the hud.tbl is no longer needed.}}&lt;br /&gt;
**Syntax: &#039;&#039;Filename&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Model Icon Direction:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*The direction from which the ship should be drawn from, if $Ship_Icon is not used and the ship icon is generated from the model.&lt;br /&gt;
** By default, the direction is based on whether the game thinks the ship is a small ship, a capship or an installation.&lt;br /&gt;
**Syntax: &#039;&#039;String&#039;&#039;, one of &amp;quot;top&amp;quot;, &amp;quot;bottom&amp;quot;, &amp;quot;front&amp;quot;, &amp;quot;back&amp;quot;, &amp;quot;left&amp;quot; or &amp;quot;right&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Ship_Icon:===&lt;br /&gt;
*The icon used in ship selection.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Ship model is used by default to generate the image.}}&lt;br /&gt;
**Syntax: &#039;&#039;Filename&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Ship_Anim:===&lt;br /&gt;
*The glowing green grid animation used in ship selection.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Ship model is used by default to generate the image.}}&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Ship_Overhead:===&lt;br /&gt;
*The overhead view used in the weapons loadout.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Ship model is used by default to generate the image.}}&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table371|&lt;br /&gt;
===$Briefing icon:===&lt;br /&gt;
*Defines if the ship has its own briefing icon information which overrides the standard briefing icon image&lt;br /&gt;
====+Regular:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&amp;lt;regular anim filename&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
====+Fade:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&amp;lt;fade anim filename&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
====+Highlight:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&amp;lt;highlight anim filename&amp;gt;&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Table371|&lt;br /&gt;
===$Briefing icon with cargo:===&lt;br /&gt;
*Defines if the ship has its own cargo briefing icon (which will only be an option if a ship icon is also specified)&lt;br /&gt;
====+Regular:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&amp;lt;regular anim filename&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
====+Fade:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&amp;lt;fade anim filename&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
====+Highlight:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&amp;lt;highlight anim filename&amp;gt;&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Table371|&lt;br /&gt;
===$Briefing wing icon:===&lt;br /&gt;
*Defines if the ship has its own wing briefing icon (which will only be an option if a ship icon is also specified)&lt;br /&gt;
====+Regular:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&amp;lt;regular anim filename&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
====+Fade:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&amp;lt;fade anim filename&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
====+Highlight:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&amp;lt;highlight anim filename&amp;gt;&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Table371|&lt;br /&gt;
===$Briefing wing icon with cargo:===&lt;br /&gt;
*Defines if the ship has its own wing-with-cargo briefing icon (which will only be an option if a ship icon is also specified)&lt;br /&gt;
====+Regular:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&amp;lt;regular anim filename&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
====+Fade:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&amp;lt;fade anim filename&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
====+Highlight:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;&amp;lt;highlight anim filename&amp;gt;&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Score:===&lt;br /&gt;
*Points awarded for destroying the ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Customized Thruster Effects===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the texture of the modeled thruster effect cone&lt;br /&gt;
*&#039;&#039;&#039;$Thruster Normal Flame:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*Defines the texture of the modeled thruster effect cone with afterburners lit&lt;br /&gt;
*&#039;&#039;&#039;$Thruster Afterburner Flame:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;Defines the primary thruster glow - the one visible only from behind&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;$Thruster Bitmap 1:&#039;&#039;&#039;&lt;br /&gt;
***Defines the effect for the standard drives. Overrides [[Species_defs.tbl]] line &#039;&#039;&#039;+Normal:&#039;&#039;&#039; under the &#039;&#039;&#039;$Thrustglows:&#039;&#039;&#039; entry.&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
**&#039;&#039;&#039;$Thruster Bitmap 1a:&#039;&#039;&#039;&lt;br /&gt;
***Defines the effect for the afterburner. Overrides [[Species_defs.tbl]] line &#039;&#039;&#039;+Afterburner:&#039;&#039;&#039; under the &#039;&#039;&#039;$Thrustglows:&#039;&#039;&#039; entry.&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
**&#039;&#039;&#039;$Thruster01 Radius factor:&#039;&#039;&#039;&lt;br /&gt;
***Defines the radius multiplier&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Defines the secondary glow type-effect for thrusters - the feathery trail like haze behind the main glow&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;$Thruster Bitmap 2:&#039;&#039;&#039;&lt;br /&gt;
***Defines the effect for the standard drives. Overrides [[Species_defs.tbl]] line &#039;&#039;&#039;+Sec_Normal:&#039;&#039;&#039; under the &#039;&#039;&#039;$ThrustAnims:&#039;&#039;&#039; entry.&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
**&#039;&#039;&#039;$Thruster Bitmap 2a:&#039;&#039;&#039;&lt;br /&gt;
***Defines the effect for the afterburner. Overrides [[Species_defs.tbl]] line &#039;&#039;&#039;+Sec_Afterburn:&#039;&#039;&#039; under the &#039;&#039;&#039;$ThrustAnims:&#039;&#039;&#039; entry.&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
**&#039;&#039;&#039;$Thruster02 Radius factor:&#039;&#039;&#039;&lt;br /&gt;
***Defines the radius multiplier&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;$Thruster02 Length factor:&#039;&#039;&#039;&lt;br /&gt;
***Defines the length multiplier for the trail type (secondary) glowpoint thrusters&lt;br /&gt;
***Replaces the older &#039;&#039;&#039;$Thruster01 Length factor:&#039;&#039;&#039;&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Defines the tertiary glow type-effect for thrusters - the one visible from all directions&#039;&#039;&#039;&lt;br /&gt;
**NOTE: The rotation of this effect is jittered, which can look quite bad with certain types of effects.&lt;br /&gt;
**&#039;&#039;&#039;$Thruster Bitmap 3:&#039;&#039;&#039;&lt;br /&gt;
***Defines the effect for the standard drives. Overrides [[Species_defs.tbl]] line &#039;&#039;&#039;+Ter_Normal:&#039;&#039;&#039; under the &#039;&#039;&#039;$ThrustAnims:&#039;&#039;&#039; entry.&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
**&#039;&#039;&#039;$Thruster Bitmap 3a:&#039;&#039;&#039;&lt;br /&gt;
***Defines the effect for the afterburner. Overrides [[Species_defs.tbl]] line &#039;&#039;&#039;+Ter_Afterburn:&#039;&#039;&#039; under the &#039;&#039;&#039;$ThrustAnims:&#039;&#039;&#039; entry.&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
**&#039;&#039;&#039;$Thruster03 Radius factor:&#039;&#039;&#039;&lt;br /&gt;
***Defines the radius multiplier&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;Defines the distortion effect for thrusters&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;$Thruster Bitmap Distortion:&#039;&#039;&#039;&lt;br /&gt;
***Defines name of normal thruster distortion envelope animation. Overrides [[Species_defs.tbl]] line &#039;&#039;&#039;+Dist_Normal:&#039;&#039;&#039; under the &#039;&#039;&#039;$ThrustAnims:&#039;&#039;&#039; entry.&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
**&#039;&#039;&#039;$Thruster Bitmap Distortion a:&#039;&#039;&#039;&lt;br /&gt;
***Defines name of afterburner thruster distortion envelope animation. Overrides [[Species_defs.tbl]] line &#039;&#039;&#039;+Dist_Afterburn:&#039;&#039;&#039; under the &#039;&#039;&#039;$ThrustAnims:&#039;&#039;&#039; entry.&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
**&#039;&#039;&#039;$Thruster Distortion Radius factor:&#039;&#039;&#039;&lt;br /&gt;
***Defines the radius multiplier&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;$Thruster Distortion Length factor:&#039;&#039;&#039;&lt;br /&gt;
***Defines the length multiplier for the thruster distortion&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;$Thruster Distortion:&#039;&#039;&#039;&lt;br /&gt;
***Defines whether the distortion effect is rendered for this ship.&lt;br /&gt;
***Syntax: &#039;&#039;&#039;&#039;&#039;Bool&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
{{Table373|&lt;br /&gt;
*&#039;&#039;&#039;$Thruster Glow Noise Mult:&#039;&#039;&#039;&lt;br /&gt;
**A multiplier for how much noise is applied to the thruster glow radius. A value of 0 causes the radius to remain perfectly steady and values higher than 1 cause the radius to fluctuate more than the default.&lt;br /&gt;
** Defaults to 1.0.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Thruster Particles:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the alternative particle thruster&lt;br /&gt;
*&#039;&#039;&#039;$Thruster Particle Bitmap:&#039;&#039;&#039; OR &#039;&#039;&#039;$Afterburner Particle Bitmap:&#039;&#039;&#039;&lt;br /&gt;
**Name of the animation used for particle thrusters, up to &#039;&#039;&#039;three&#039;&#039;&#039; can be defined for both &#039;&#039;&#039;standard&#039;&#039;&#039; thrusters and &#039;&#039;&#039;afterburners&#039;&#039;&#039; (6 in total). Afterburner particles require at least 1 existing particle thruster entry.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;$Min Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the minimum radius of new particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;$Max Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum radius of new particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;$Min Created:&#039;&#039;&#039;&lt;br /&gt;
**Defines the minimum amount of particles created&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;$Max Created:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum amount of particles created&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;$Variance:&#039;&#039;&#039;&lt;br /&gt;
**Value that describes the randomness of particle generation, values close to 0 will cause particles to spew very close to the thrusters normal while values close 1 will cause some particles to be spewed even to opposite direction&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Stealth:===&lt;br /&gt;
*Defines: Ship behaves as a stealth-ship: non-targettable, and not on radar.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
This field is [[deprecated]], and mods using 3.6.8 and above should use the &amp;quot;stealth&amp;quot; flag.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Max Decals:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines: Maximum number of weapon decals on a ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, maximum number of decals on ship&lt;br /&gt;
**Default: 50 for anything below cruiser size, 100 for anything below superdestroyer/installation size, 300 for anything above destroyer size, 10 for everything else.}}&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Feature disabled. Parsing retained to maintain compatibility}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Trail:===&lt;br /&gt;
*These are the origins of the white contrails that appear in the nebula missions. Ship may have multiple trails.&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*&#039;&#039;&#039;+ClearAll&#039;&#039;&#039;&lt;br /&gt;
**Clears all existing trail data from the ship}}&lt;br /&gt;
====+Offset:====&lt;br /&gt;
*The position of the contrail&#039;s head&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, three &#039;&#039;&#039;floats&#039;&#039;&#039;, x, y and z values respectively, relative to the center point of the model&lt;br /&gt;
====+Start Width:====&lt;br /&gt;
*The width of the contrail&#039;s head&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
====+End Width:====&lt;br /&gt;
*The width of the contrail&#039;s tail&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
====+Start Alpha:====&lt;br /&gt;
*The opacity of the contrail&#039;s head&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value between 0 and 1&lt;br /&gt;
====+End Alpha:====&lt;br /&gt;
*The opacity of the contrail&#039;s tail&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value between 0 and 1&lt;br /&gt;
====+Max Life:====&lt;br /&gt;
*How long the contrail remains&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
====+Spew Time:====&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
====+Bitmap:====&lt;br /&gt;
*The image to use for the contrail.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
{{Table3611|&lt;br /&gt;
====+Faded Out Sections:====&lt;br /&gt;
*Defines the number of the trail sections from the leading edge that are gradually faded away.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Thruster:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines maneuvering thrusters. Ship may have multiple $Thrusters defined.&lt;br /&gt;
*&#039;&#039;&#039;+Index:&#039;&#039;&#039;&lt;br /&gt;
**Defines the index number of the manoeuvring thruster defined in this entry&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Used For:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maneuver that triggers the maneuvering thruster&lt;br /&gt;
**List of maneuvers: Bank right, Bank left, Pitch up, Pitch down, Roll right, Roll left, Slide right, Slide left, Slide up, Slide down, Forward, Reverse&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String, String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Position:&#039;&#039;&#039;&lt;br /&gt;
**Defines thruster location&lt;br /&gt;
**Syntax: ( &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; ), position from the ships center point, x, y, z axis respectively&lt;br /&gt;
*&#039;&#039;&#039;+Normal:&#039;&#039;&#039;&lt;br /&gt;
**Defines the direction where the thruster points to&lt;br /&gt;
**Syntax: ( &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; ), direction of the thrusters normal, x, y, z axis respectively&lt;br /&gt;
*&#039;&#039;&#039;+Texture:&#039;&#039;&#039;&lt;br /&gt;
**Defines the graphic that will be used for trail, rendered like beams&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the radius of cylinder&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Length:&#039;&#039;&#039;&lt;br /&gt;
**Defines the length of thruster trail&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+StartSnd:&#039;&#039;&#039;&lt;br /&gt;
**Defines the sound played when the thruster is started&lt;br /&gt;
**Syntax:  &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+LoopSnd:&#039;&#039;&#039;&lt;br /&gt;
**Defines the sound played when the thruster is continuously used&lt;br /&gt;
**Syntax:  &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+StopSnd:&#039;&#039;&#039;&lt;br /&gt;
**Defines the sound played when the thruster is shutting down&lt;br /&gt;
**Syntax:  &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Radar Image 2D:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the bitmap used to represent the ship on the radar screen.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Filename&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*&#039;&#039;&#039;$Radar Color Image 2D:&#039;&#039;&#039;&lt;br /&gt;
**Defines the color bitmap used to represent the ship on the radar screen.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Filename&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*&#039;&#039;&#039;$Radar Image Size:&#039;&#039;&#039;&lt;br /&gt;
**Defines the size of the bitmap on the radar screen (length of the longer dimension)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;$3D Radar Blip Size Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**Defines the multiplier used for blip size on the 3D radar.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Glowpoint overrides:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Creates a point that casts light onto ships and objects with the source being a glowpoint defined in the model file.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String:Integer&amp;quot; )&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*String refers to name in [[glowpoints.tbl]]&lt;br /&gt;
*Essentially, [Name_of_glowpoint_override_in_glowpoints.tbl]:[Bank_in_POF]. If there is no override entry then the game will not generate a light. If you have multiple banks that use the same override, use a comma if they are not in order (2,4,7) and use a dash if they are in order (3-5 yields 3, 4, and 5).&lt;br /&gt;
**Example: &#039;&#039;&#039;$Glowpoint overrides: ( &amp;quot;teal_glow_10:1&amp;quot; &amp;quot;red_glow:2,3&amp;quot; &amp;quot;white_glow_10:4&amp;quot; &amp;quot;red_glow_10:5&amp;quot; &amp;quot;green_glow_10:6&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Ship IFF Colors:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the alternate color for the ship. Affects both the targeting brackets as well as the radar screen.&lt;br /&gt;
*&#039;&#039;&#039;+Seen By:&#039;&#039;&#039;&lt;br /&gt;
**Defines the IFF actually viewing the object (most often &#039;Friendly&#039;)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of an IFF class.&lt;br /&gt;
*&#039;&#039;&#039;+When IFF Is:&#039;&#039;&#039;&lt;br /&gt;
**Defines the IFF which the ship has to have for its color to be altered.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of an IFF class.&lt;br /&gt;
*&#039;&#039;&#039;+As Color:&#039;&#039;&#039;&lt;br /&gt;
**Defines the new color of the ship&#039;s targeting brackets and radar blip&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer list&#039;&#039;&#039;&#039;&#039;, red, blue and green respectively}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Target Priority Groups:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines into which target priority groups the ship belongs to&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String list&#039;&#039;&#039;&#039;&#039;, names of the targeting groups&lt;br /&gt;
*&#039;&#039;&#039;+Override&#039;&#039;&#039;&lt;br /&gt;
**Overrides the ships existing groupings}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$EMP Resistance Modifier:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the ships EMP resistance modifier:&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Damage Draw Limit:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the maximum percentage of hitpoints ship has before piercing effects are enabled&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Example: &#039;&#039;&#039;10&#039;&#039;&#039;, sets the limit to 10%}}&lt;br /&gt;
&lt;br /&gt;
===$Path Metadata:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Allows definition of extra metadata&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the path as defined in the ship POF file.&lt;br /&gt;
**Example: &#039;&#039;&#039;$Path Metadata: $Bay01&#039;&#039;&#039;&lt;br /&gt;
====+departure rvec:====&lt;br /&gt;
When using this path to depart via fighterbay, the departing ship will rotate to align itself with this rvec (so the right side of the ship is pointing in this direction). Only affects paths used to depart via fighterbay.&lt;br /&gt;
====+arrive speed multiplier:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Modifies the speed of ships arriving from a fighterbay using this path. See [[Ai_profiles.tbl#.24bay_arrive_speed_multiplier:]] for details.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
====+depart speed multiplier:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Modifies the speed of ships departing to a fighterbay using this path. See [[Ai_profiles.tbl#.24bay_depart_speed_multiplier:]] for details.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===[[Subsystem]]&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;===&lt;br /&gt;
:&#039;&#039;Main article: [[Subsystem]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Ships.tbl flags==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no_collide&amp;quot;===&lt;br /&gt;
*Defines ship as non-collideable, ie. everything will go through it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;player_ship&amp;quot;===&lt;br /&gt;
*Makes it possible for the player to fly the ship&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;default_player_ship&amp;quot;===&lt;br /&gt;
*Makes this ship as a default part of the loadout options in FRED&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Ship Type===&lt;br /&gt;
*Flags in this section are used to define the type of the ship&lt;br /&gt;
*Use only one &#039;&#039;&#039;ship type&#039;&#039;&#039; flag per table entry&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*New ship types can be defined in [[objecttypes.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;repair_rearm&amp;quot;====&lt;br /&gt;
*Alternate name for &amp;quot;support&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;support&amp;quot;====&lt;br /&gt;
*Defines the ship as repair and rearm vessel and sets AI behaviour accordingly&lt;br /&gt;
*Only one such vessel can be defined per species&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;cargo&amp;quot;====&lt;br /&gt;
*Defines ship as a cargo crate and also sets the AI behaviour&lt;br /&gt;
*In FS1/FS2 ships that are marked with this flag cannot accept any player orders&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;fighter&amp;quot;====&lt;br /&gt;
*Defines ship as a fighter and also sets the AI behaviour&lt;br /&gt;
*In FS1/FS2 only ships flagged as fighters or bombers can accept the full set of player orders&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;bomber&amp;quot;====&lt;br /&gt;
*Defines ship as a bomber and also sets the AI behaviour&lt;br /&gt;
*In FS1/FS2 only ships flagged as fighters or bombers can accept the full set of player orders&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;transport&amp;quot;====&lt;br /&gt;
*Defines ship as a transport and also sets the AI behaviour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;freighter&amp;quot;====&lt;br /&gt;
*Defines ship as a freighter and also sets the AI behaviour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;capital&amp;quot;====&lt;br /&gt;
*Defines ship as a capital ship and also sets the AI behaviour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;supercap&amp;quot;====&lt;br /&gt;
*Alternate name for &amp;quot;super cap&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;super cap&amp;quot;====&lt;br /&gt;
*Defines ship as a super capital ship and also sets the AI behaviour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;drydock&amp;quot;====&lt;br /&gt;
*Defines ship as a drydock and also sets the AI behaviour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;cruiser&amp;quot;====&lt;br /&gt;
*Defines ship as a cruiser and also sets the AI behaviour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;navbuoy&amp;quot;====&lt;br /&gt;
*Defines ship as a navbuoy and also sets the AI behaviour&lt;br /&gt;
*In FS1/FS2 ships that are marked with this flag cannot accept any player orders&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;sentrygun&amp;quot;====&lt;br /&gt;
*Alternate name for &amp;quot;sentry gun&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;sentry gun&amp;quot;====&lt;br /&gt;
*Defines ship as a sentrygun and also sets the AI behaviour&lt;br /&gt;
*In FS1/FS2 ships that are marked with this flag cannot accept any player orders&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;escapepod&amp;quot;====&lt;br /&gt;
*Alternate name for &amp;quot;escape pod&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;escape pod&amp;quot;====&lt;br /&gt;
*Defines ship as a escapepod and also sets the AI behaviour&lt;br /&gt;
*In FS1/FS2 ships that are marked with this flag cannot accept any player orders&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;corvette&amp;quot;====&lt;br /&gt;
*Defines ship as a corvette and also sets the AI behaviour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;gas miner&amp;quot;====&lt;br /&gt;
*Defines ship as a gas miner and also sets the AI behaviour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;awacs&amp;quot;====&lt;br /&gt;
*Defines ship as a AWACS and also sets the AI behaviour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;knossos&amp;quot;====&lt;br /&gt;
*Alternate name for the &amp;quot;Knossos device&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;knossos device&amp;quot;====&lt;br /&gt;
*Defines ship as a Knossos and also sets the AI behaviour&lt;br /&gt;
*In FS1/FS2 ships that are marked with this flag cannot accept any player orders&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;stealth&amp;quot;====&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines ship as a stealth-ship: non-targettable, and not on radar.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;no type&amp;quot;====&lt;br /&gt;
*Does ???&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;ship copy&amp;quot;===&lt;br /&gt;
*Defines the ship as a copy of another model&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;in tech database&amp;quot;===&lt;br /&gt;
*Includes ships description to the tech database from the beginning of the campaign&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;in tech database multi&amp;quot;===&lt;br /&gt;
*Includes the ship to multiplayer tech database&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;dont collide invisible&amp;quot;===&lt;br /&gt;
*Defines invisible textures as non-collideable (For example, a hangar entrace)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;big damage&amp;quot;===&lt;br /&gt;
*Limits the damage made to the ship by non-huge weapons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no_fred&amp;quot;===&lt;br /&gt;
*Ship will not appear in FRED.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;ballistic primaries&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Enables the ship to use ballistic primaries&lt;br /&gt;
*No longer needed, game handles it automatically}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;flash&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Makes a flash when a ship dies}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;surface shields&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Shots that impact the hull are applied to shields, regardless of if the ship has a shield mesh.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;show ship&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Enable rendering the ship even when the ship is a player ship&lt;br /&gt;
*Will result in the player&#039;s ship model being rendered, when in cockpit mode}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;generate icon&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Creates a HUD icon from the model itself}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;gun convergence&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Enables ship to use the firing points&#039; normals in defining the direction where the weapon fire}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no thruster geometry noise&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Prevents noise from being added to the thruster effects geometry}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;intrinsic no shields&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines that ship has no shields by default, to allow mixing and matching shielded and unshielded craft in loadout}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no primary linking&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Bypasses linked primaries while cycling.  Does not block SEXPs/scripts that might be able to lock them, only the act of cycling for players and determing whether to link or not for AI.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no pain flash&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Prevents pain flash from being shown when ship is hit}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;dynamic primary linking&amp;quot;===&lt;br /&gt;
{{Table37|&lt;br /&gt;
*Allows this ship use the primary firepoint cycling code.  With a key bind added in 3.6.13, you can toggle between various factorizations of primary firepoint groupings on a per-primary bank basis.  So a 4-firepoint bank could cycle through all four firepoints firing together (1x4), each firepoint firing individually (4x1, all 4 firing over the timespan of the bank cooldown, so no change in damage over time, or DPS, occurs from retail behavior), or firing in pairs (2x2).}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no ets&amp;quot;===&lt;br /&gt;
{{Table37|&lt;br /&gt;
Sets ship class to have no ETS}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no lighting&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
Ship will not receive lighting calculations}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;auto spread shields&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
Causes the ship&#039;s shield mesh (if any) to be ignored and a shield of a given thickness to be automatically projected around the ship&#039;s hull. Weapons will impact the ship&#039;s shields at a distance equal to the shield thickness defined in [[Ships.tbl#.2BAuto_Spread:|#.2BAuto_Spread:]], but not before the weapon itself has travelled at least a distance equal to that. Note that impact effects normally projected onto the shield mesh will not work.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;model point shields&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
Instead of the standard 4 shield quadrants, the ship uses an arbitrary number of shield sections which must have been defined in the model file, see [[Model Point Shields]]. If used on a player ship, you must also define [[Ships.tbl#.24Model_Point_Shield_Controls:|#.24Model_Point_Shield_Controls:]] to allow the shield augmentation controls to be used.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Player Ship Precedence==&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot; &amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039;)&lt;br /&gt;
===Example===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Player Ship Precedence: (&lt;br /&gt;
     &amp;quot;GTF Ulysses&amp;quot;&lt;br /&gt;
     &amp;quot;GTF Hercules&amp;quot;&lt;br /&gt;
     &amp;quot;GTB Medusa&amp;quot;&lt;br /&gt;
     &amp;quot;GTB Ursa&amp;quot;   )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sample==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Default Player Ship&lt;br /&gt;
&lt;br /&gt;
$Name:                       GTF Ulysses&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Engine Wash Info&lt;br /&gt;
&lt;br /&gt;
$Name:                       Default&lt;br /&gt;
$Angle:                      10.0&lt;br /&gt;
$Radius Mult:                1.2&lt;br /&gt;
$Length:                     400&lt;br /&gt;
$Intensity:                  1.0&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Ship Classes&lt;br /&gt;
$Name:                       GTF Ulysses&lt;br /&gt;
$Short name:                 TFight&lt;br /&gt;
$Species:                    Terran&lt;br /&gt;
   +Type:                       XSTR(&amp;quot;Space Superiority&amp;quot;, -1)&lt;br /&gt;
   +Maneuverability:            XSTR(&amp;quot;Excellent&amp;quot;, -1)&lt;br /&gt;
   +Armor:                      XSTR(&amp;quot;Light&amp;quot;, -1&lt;br /&gt;
   +Manufacturer:               XSTR(&amp;quot;Triton / Mekhu&amp;quot;, -1)&lt;br /&gt;
   +Description:                XSTR( &amp;quot; &amp;quot;, -1)&lt;br /&gt;
   $end_multi_text&lt;br /&gt;
   +Tech Description:           XSTR(&amp;quot;Descriptive text&amp;quot;, -1)&lt;br /&gt;
   $end_multi_text&lt;br /&gt;
   +Length:                     16 m&lt;br /&gt;
   +Gun Mounts:                 4&lt;br /&gt;
   +Missile Banks:              1&lt;br /&gt;
$POF File:                   fighter01.pof&lt;br /&gt;
$Detail Distance:            (0, 80, 300, 900)&lt;br /&gt;
$ND:                         42 42 244&lt;br /&gt;
$Show Damage:                YES&lt;br /&gt;
$Density:                    1&lt;br /&gt;
$Damp:                       0.1&lt;br /&gt;
$Rotdamp:                    0.35&lt;br /&gt;
$Max Velocity:               0.0, 0.0, 70.0&lt;br /&gt;
$Rotation Time:              3.0, 2.6, 5.0&lt;br /&gt;
$Rear Velocity:              0.0&lt;br /&gt;
$Forward Accel:              2.0&lt;br /&gt;
$Forward Decel:              1.5&lt;br /&gt;
$Slide Accel:                0.0&lt;br /&gt;
$Slide Decel:                0.0&lt;br /&gt;
$Expl Inner Rad:             25.0&lt;br /&gt;
$Expl Outer Rad:             55.0&lt;br /&gt;
$Expl Damage:                15.0&lt;br /&gt;
$Expl Blast:                 1000.0&lt;br /&gt;
$Expl Propagates:            NO&lt;br /&gt;
$Shockwave Speed:            0.0&lt;br /&gt;
$Allowed PBanks:             ( &amp;quot;Subach HL-7&amp;quot; &amp;quot;Prometheus R&amp;quot;)&lt;br /&gt;
$Allowed Dogfight PBanks:    ( &amp;quot;Subach HL-D&amp;quot; &amp;quot;Prometheus D&amp;quot; )&lt;br /&gt;
$Default PBanks:             ( &amp;quot;Subach HL-7&amp;quot; &amp;quot;Prometheus R&amp;quot; )&lt;br /&gt;
$Allowed SBanks:             ( &amp;quot;Rockeye&amp;quot; &amp;quot;Tempest&amp;quot; )&lt;br /&gt;
$Allowed Dogfight SBanks:    ( &amp;quot;Tempest D&amp;quot;  &amp;quot;Hornet D&amp;quot; )&lt;br /&gt;
$Default SBanks:             ( &amp;quot;Harpoon&amp;quot; )&lt;br /&gt;
$SBank Capacity:             ( 40 )&lt;br /&gt;
$Shields:                    380&lt;br /&gt;
$Shield Color:               100 100 255&lt;br /&gt;
$Power Output:               2.0&lt;br /&gt;
$Max Oclk Speed:             94.0&lt;br /&gt;
$Max Weapon Eng:             80.0&lt;br /&gt;
$Hitpoints:                  180&lt;br /&gt;
$Flags:                      (  &amp;quot;player_ship&amp;quot;&lt;br /&gt;
                                &amp;quot;default_player_ship&amp;quot;&lt;br /&gt;
                                &amp;quot;fighter&amp;quot;&lt;br /&gt;
                                &amp;quot;in tech database&amp;quot;)&lt;br /&gt;
$AI Class:                   Captain&lt;br /&gt;
$Afterburner:                YES&lt;br /&gt;
   +Aburn Max Vel:              0.0, 0.0, 150.0&lt;br /&gt;
   +Aburn For accel:            0.7&lt;br /&gt;
   +Aburn Fuel:                 300.0&lt;br /&gt;
   +Aburn Burn Rate:            50.0&lt;br /&gt;
   +Aburn Rec Rate:             25.0&lt;br /&gt;
$Countermeasures:            25&lt;br /&gt;
$Scan Time:                  2000&lt;br /&gt;
$EngineSnd:                  128&lt;br /&gt;
$Closeup_Pos:                0.0, 0.0, -22&lt;br /&gt;
$Closeup_Zoom:               0.5&lt;br /&gt;
$Shield_Icon:                shield-f01&lt;br /&gt;
$Ship_Icon:                  iconfighter01&lt;br /&gt;
$Ship_Anim:                  ssfighter01&lt;br /&gt;
$Ship_Overhead:              loadfighter01&lt;br /&gt;
$Score:                      8&lt;br /&gt;
$Trail:&lt;br /&gt;
   +Offset:                     -7.75 -2.8 0.75&lt;br /&gt;
   +Start Width:                0.25&lt;br /&gt;
   +End Width:                  0.05&lt;br /&gt;
   +Start Alpha:                1.0&lt;br /&gt;
   +End Alpha:                  0.0&lt;br /&gt;
   +Max Life:                   1.0&lt;br /&gt;
   +Spew Time:                  60&lt;br /&gt;
   +Bitmap:                     Contrail01&lt;br /&gt;
$Trail:&lt;br /&gt;
   +Offset:                     7.75 -2.8 0.75&lt;br /&gt;
   +Start Width:                0.25&lt;br /&gt;
   +End Width:                  0.05&lt;br /&gt;
   +Start Alpha:                1.0&lt;br /&gt;
   +End Alpha:                  0.0&lt;br /&gt;
   +Max Life:                   1.0&lt;br /&gt;
   +Spew Time:                  60&lt;br /&gt;
   +Bitmap:                     Contrail01&lt;br /&gt;
$Subsystem:    communication,   10, 0&lt;br /&gt;
$Subsystem:    navigation,      10, 0&lt;br /&gt;
$Subsystem:    weapons,         20, 0&lt;br /&gt;
$Subsystem:    sensors,         10, 0&lt;br /&gt;
$Subsystem:    engines,         35, 0&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&lt;br /&gt;
$Player Ship Precedence: (&lt;br /&gt;
      &amp;quot;GTF Ulysses&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=45631</id>
		<title>Particle Effects</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=45631"/>
		<updated>2016-09-04T09:03:03Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add sphere type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2016-09-02|417eb20}}&lt;br /&gt;
&lt;br /&gt;
Particle Effects is a SCP feature which allows to define custom particle effects that can be assigned to various engine properties.&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-part.tbm. This table type does not have a main table like the other types. All particle effects must be specified in modular tables. Currently there is no support for the usual &#039;&#039;+nocreate&#039;&#039; ability the other modular tables have but that will be added in the future. Parts of this documentation are written with with &#039;&#039;+nocreate&#039;&#039; in mind for when that is implemented.&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==General Info==&lt;br /&gt;
*Begins with #Particle Effects&lt;br /&gt;
*Contains zero or more particle effect definitions&lt;br /&gt;
*Ends with #End&lt;br /&gt;
&lt;br /&gt;
Particle effects are created by specifying a name and a type. The type dictates which values are valid and will be described below.&lt;br /&gt;
&lt;br /&gt;
===$Effect:===&lt;br /&gt;
*Creates a new effect and specifies its name. The name must be at least one character long.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====$Type:====&lt;br /&gt;
*Sets the type of this effect. See [[#Effect Types|Effect Types]] for possible values.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Effect Types==&lt;br /&gt;
There are multiple different types of effects. They are specified by passing the given name to &#039;&#039;$Type&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Single===&lt;br /&gt;
This effect type creates exactly one particle per processing step.&lt;br /&gt;
&lt;br /&gt;
====Properties====&lt;br /&gt;
The properties of this created particle can be specified by a [[#Particle properties]] construct.&lt;br /&gt;
&lt;br /&gt;
====Timing properties====&lt;br /&gt;
For specifying how long this effect is active an [[#Effect timing]] construct is used.&lt;br /&gt;
&lt;br /&gt;
===Composite===&lt;br /&gt;
A composite effects contains multiple other effects which are all displayed at the same time. The amount of child effects is not limited. This type currently does not support &#039;&#039;+nocreate&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====+Child effect:====&lt;br /&gt;
*This specifies a child effect that should be added to the composite effect. The effect is specified using [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
===Cone===&lt;br /&gt;
This effects creates multiple particles which travel in a cone around a specific direction. The particles are created in a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution] around the direction vector. That means that more particle are created along the direction vector than far away from it. The velocity of a particle is scaled based on the angle it is away from the direction vector. This may be changed in the future to allow different effects.&lt;br /&gt;
&lt;br /&gt;
====Properties====&lt;br /&gt;
The common properties of the created particles can be specified by a [[#Particle properties]] construct.&lt;br /&gt;
&lt;br /&gt;
====+Deviation:====&lt;br /&gt;
*Sets the standard deviation from the direction vector.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;, in degrees&lt;br /&gt;
&lt;br /&gt;
====+Velocity====&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
====+Number====&lt;br /&gt;
*Sets the amount of created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
====+Direction====&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it had when the effect was created.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal of the impact.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
====+Trail effect:====&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
===Sphere===&lt;br /&gt;
This effect creates particles in a sphere shape around the center.&lt;br /&gt;
&lt;br /&gt;
====Properties====&lt;br /&gt;
The common properties of the created particles can be specified by a [[#Particle properties]] construct.&lt;br /&gt;
&lt;br /&gt;
====+Velocity====&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
====+Number====&lt;br /&gt;
*Sets the amount of created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
====+Direction====&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it had when the effect was created.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal of the impact.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
====+Trail effect:====&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Common syntax constructs==&lt;br /&gt;
Some syntax constructs are used multiple times by different types. Due to the similarity they are described one at this point and then references by the documentation of the individual effects.&lt;br /&gt;
&lt;br /&gt;
===Particle properties===&lt;br /&gt;
This contains some common properties of particles, e.g. the used animation or the size.&lt;br /&gt;
&lt;br /&gt;
====+Filename:====&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
====+Size:====&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
====+Lifetime:====&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Effect timing===&lt;br /&gt;
Effect timings are used to specify for how long and after how much delay an effect is active. Each effect timing is parsed in its entirety each time it is expected. That means that if you use &#039;&#039;+nocreate&#039;&#039; then you must respecify all values. This restriction may be lifted in the future.&lt;br /&gt;
&lt;br /&gt;
====+Duration:====&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
====+Delay:====&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Inline effect creation===&lt;br /&gt;
At some places in this table a particle effect may be created within another particle effect. This is used for composite effects and particle trails. If inline creation is valid for an option then you may either specify a name of a previously defined effect or use &#039;&#039;&#039;$New Effect&#039;&#039;&#039; which will create a new, unnamed effect. Some options using this construct require a specific type of effect. That will be noted in the documentation of the option.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;$New Effect&#039;&#039;&#039; is used then a new unnamed effect is created. If the surrounding option has not forced an effect type then you can specify it using the standard syntax described above. All options are the same as if the effect would have been parsed in the normal way. &#039;&#039;+nocreate&#039;&#039; is not valid within this element.&lt;br /&gt;
&lt;br /&gt;
===Random range===&lt;br /&gt;
The particle effect system uses randomization to provide variation to the created particles. This is implemented by letting the mod author specify the values for the random distribution. There are different types of distributions which are explained below.&lt;br /&gt;
&lt;br /&gt;
====Uniform random range====&lt;br /&gt;
*This accepts 1 or 2 values. If one value is used then the random range always returns that value. If two values are specified then a uniformly distributed random value will be picked from the range.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Float list&#039;&#039;&#039;, one or two values&lt;br /&gt;
&lt;br /&gt;
====Normal distribution random range====&lt;br /&gt;
*This accepts 1 or 2 values. This random range generates values according to a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution]. The first value specified the mean value of the distribution. The second value specified the standard deviation of the distribution, this defaults to 1.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Float list&#039;&#039;&#039;, one or two values&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Particle Effects&lt;br /&gt;
&lt;br /&gt;
$Effect: MassDriverImpact&lt;br /&gt;
$Type: Cone&lt;br /&gt;
	+Filename: exp05&lt;br /&gt;
	+Size: (5 7)&lt;br /&gt;
	+Lifetime: (0.6)&lt;br /&gt;
	+Deviation: 5&lt;br /&gt;
	+Velocity: (500 700)&lt;br /&gt;
	+Number: (20 30)&lt;br /&gt;
	+Direction: Reflected&lt;br /&gt;
	+Trail effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp20&lt;br /&gt;
			+Size: (10)&lt;br /&gt;
			+Lifetime: (1)&lt;br /&gt;
			+Duration: Always&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$Effect: ApocalypseIgnition&lt;br /&gt;
$Type: Single&lt;br /&gt;
	+Filename: exp20&lt;br /&gt;
	+Size: (10 20)&lt;br /&gt;
	&lt;br /&gt;
$Effect: ApocalypseHomed&lt;br /&gt;
$Type: Composite&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp05&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp06b&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
			+Delay: (8 15)&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Benchmarking&amp;diff=45612</id>
		<title>Benchmarking</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Benchmarking&amp;diff=45612"/>
		<updated>2016-08-09T13:54:37Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add -noninteractive to other options section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FSO has support for running automated performance benchmarks using the &#039;&#039;&#039;-benchmark_mode&#039;&#039;&#039; command line. This option currently has the following effects:&lt;br /&gt;
&lt;br /&gt;
* The pilot selection is automatically accepted (make sure there is a pilot to accept)&lt;br /&gt;
* FSO will quit after running one mission&lt;br /&gt;
&lt;br /&gt;
This feature can be combined with &#039;&#039;&#039;-profile_frame_time&#039;&#039;&#039; to gather detailed performance data without requiring any interaction while running the test.&lt;br /&gt;
&lt;br /&gt;
==-profile_frame_time==&lt;br /&gt;
When FSO is started with this option then it will write information about the frame times to a file called &#039;&#039;profiling.csv&#039;&#039;. Each line contains the system time and the frametime of each rendered frame in the format &#039;&#039;&amp;lt;system time&amp;gt;;&amp;lt;frametime&amp;gt;&#039;&#039;. Both time values are measured in microseconds. &#039;&#039;system time&#039;&#039; is measured from an arbitrary point in the past. To get consistent results the first time value should be substracted from all time values. The first two frames are usually very long because the timer is set at engine startup so you might want to exclude those from your data. [https://gist.github.com/asarium/2ce04d7d2ac01b40e66a This script] uses python and numpy to generate two graphs from two sets of data which can be used to compare two different versions of the engine.&lt;br /&gt;
&lt;br /&gt;
==Missions==&lt;br /&gt;
To actually run a mission you could use the commandline option &#039;&#039;&#039;-start_mission &amp;lt;mission&amp;gt;&#039;&#039;&#039; which will start the specified mission after entering the main hall. To keep the tests non interactive the started mission should be a cutscene which automatically ends when the end is reached. Here is a list of mods that contain such missions:&lt;br /&gt;
* Blue Planet Complete&lt;br /&gt;
** &#039;&#039;&#039;bp2-17.fs2&#039;&#039;&#039;: Icarus cutscene of War in Heaven. A very demanding mission which is great for testing performance.&lt;br /&gt;
** &#039;&#039;&#039;bp2-00.fs2&#039;&#039;&#039;: Intro cutscene of War in Heaven. Also great for performance testing.&lt;br /&gt;
&lt;br /&gt;
==Other options==&lt;br /&gt;
* &#039;&#039;&#039;-nomovies&#039;&#039;&#039;: Can be used to disable playback of movies which speeds up game startup.&lt;br /&gt;
* &#039;&#039;&#039;-no_unfocused_pause&#039;&#039;&#039;: Disables automatic pausing when the FSO window isn&#039;t focused. Can be used to use another application while the benchmark is running.&lt;br /&gt;
* &#039;&#039;&#039;-noninteractive&#039;&#039;&#039;: Disables all dialogs or other things that may require interaction. This makes sure that FSO exits in a finite time. If it doesn&#039;t please create an issue on the GitHub bug tracker.&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Command-Line_Reference&amp;diff=45611</id>
		<title>Command-Line Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Command-Line_Reference&amp;diff=45611"/>
		<updated>2016-08-08T16:06:04Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add documentation for -noninteractive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TableVersionGit|2016-28-07|b40631e}}&lt;br /&gt;
&lt;br /&gt;
Command-Line Flags (also called Command-Line Parameters) are optional flags passed to the FSO executable, and generally enables one or more features added to the FS2 Open engine. These flags are accessed conveniently through an [[FSO Launcher]]. To have FSO list all available flags, use any one of the following: [[Command-Line_Reference#-help|-help]], [[Command-Line_Reference#-help|--help]], [[Command-Line_Reference#-help|-h]], or [[Command-Line_Reference#-help|-?]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--May need version info for the various flags, such as 3.6.13, etc. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graphics===&lt;br /&gt;
====-spec====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable Specular&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Only polygons mapped with textures for which a shinemap exists will receive specular mapping; no attempt is made to generate spec maps where they do not exist.  Specular maps are specified with the base map name plus &amp;quot;-shine&amp;quot; (i.e. TCov3A-shine.pcx).&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This feature is on by default, use launcher option Disable Specular or if necessary to manually disable enter the flag -nospec}}&lt;br /&gt;
&lt;br /&gt;
====-env====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable Environment maps&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It only works if [[Command-Line_Reference#-spec|-spec]] is also set. Environment mapping intensity will be determined from the shine map too (see [[Texturing]] for more info). [[Installing FreeSpace 2 Open#Video setup|See Video setup.]]&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This feature is on by default, use launcher option Disable Environment Maps or if necessary to manually disable enter the flag -noenv }}&lt;br /&gt;
&lt;br /&gt;
====-glow====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable Glowmaps&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Only polygons mapped with textures for which a glowmap exists will be glowmapped.  Glow maps are specified with the base map name plus &amp;quot;-glow&amp;quot; (i.e. TCov4A-glow.pcx)&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This feature is on by default, use launcher option Disable Glow Maps or if necessary to manually disable enter the flag -noglow }}&lt;br /&gt;
&lt;br /&gt;
====-nomotiondebris====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable motion debris&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-noscalevid====&lt;br /&gt;
&amp;quot;Disable scale-to-window for Movies&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disables fullscreen scaling of video clips.&lt;br /&gt;
&lt;br /&gt;
====-missile_lighting====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Apply Lighting to Missiles&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-normal====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable Normal Maps&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Normal maps require GLSL rendering, (see [[OpenGL_Shaders_(GLSL)|OpenGL Shaders (GLSL)]] for further info). It needs auxiliary normal maps (the same name of the base map plus &amp;quot;-normal&amp;quot;). DXT5_NM DDS format is needed. (Technical note: DXT5 will work, since only the GREEN and ALPHA channels are read by the current shader system. One direction of lines goes into the GREEN channel, the other direction goes into the ALPHA channel. RED and BLUE can be either base gray (#808080) or black. Usual practice is after creating the DXT5_NM, copy the RED channel to the ALPHA channel, black out the RED and BLUE an then save as either a DXT5 or u8888 (uncompressed) DDS file.)&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This feature is on by default, use launcher option Disable Normal Maps or if necessary to manually disable enter the flag -nonormal }}&lt;br /&gt;
&lt;br /&gt;
====-height====&lt;br /&gt;
Enables height maps (parallax mapping). It only works if [[Command-Line_Reference#-normal|-normal]] is also set. It also needs GLSL rendering, (see [[OpenGL_Shaders_(GLSL)|OpenGL Shaders (GLSL)]] for further info). It needs auxiliary height maps (with the same name than base map plus &amp;quot;-height&amp;quot;).&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This feature is on by default. To manually disable, enter the flag -noheight}}&lt;br /&gt;
&lt;br /&gt;
====-post_process====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable Post Processing&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
enables the use (if present) of post-processing effects as defined by the post_process.tbl. Bloom usage has an additional cmdline option for setting it&#039;s value, most post processing effects are achieved in mission per the mission designer or can be enabled globally in the table.&lt;br /&gt;
&lt;br /&gt;
====-soft_particles====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable soft particles&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-3dshockwave====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable 3D Shockwaves&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This only has any effect when both a 2d and 3d shockwave effect are present, otherwise the only available effect is used (2d shockwave is defined by effects/shockwave01.eff or .ani, and 3d shockwave by models/shockwave.pof)&lt;br /&gt;
&lt;br /&gt;
Note that 3d shockwaves are usually flat discs, that FSO scales up. The animated 2d billboards used by 2d shockwaves with the addition of [[Command-Line Reference#-soft_particles|soft particles]], may look better when intersecting with models (which shockwaves often do). Use at your discretion.&lt;br /&gt;
&lt;br /&gt;
====-fxaa====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable FXAA antialiasing&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enables the FXAA postprocessing stage. Further information can be found here: http://www.hard-light.net/forums/index.php?topic=76145.0&lt;br /&gt;
&lt;br /&gt;
====-nolightshafts====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable lightshafts&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Disables Lightshafts even if a mission designer enables them via SEXP in a mission.  This was previously documented as -flightshaftsoff but appears to have been changed to -nolightshafts for consistency before -flightshaftsoff was ever used in a released build.&lt;br /&gt;
&lt;br /&gt;
====-enable_shadows====&lt;br /&gt;
{{table373|&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable shadows&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enables shadows where supported by the OpenGL version provided by the user&#039;s GPU. -shadow_quality can be used to control the quality level.&lt;br /&gt;
{{note|Currently doesn&#039;t support shadows for cockpits and show ship.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====-shadow_quality====&lt;br /&gt;
{{table373|&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Set shadows quality&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Valid ranges are 0 to 2 with 2 being the default. &lt;br /&gt;
&lt;br /&gt;
* 0 disables shadows (so there&#039;s no point in setting it!)&lt;br /&gt;
* 1 uses 512x512 shadow maps (lower quality)&lt;br /&gt;
* 2 uses 1024x1024 shadow maps (higher quality)&lt;br /&gt;
&lt;br /&gt;
Currently this requires -enable_shadows to be set, or it has no effect.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Game Speed===&lt;br /&gt;
====-img2dds====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Compress non-compressed images&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Converts all images to DDS (compressed) format.  Decreases memory usage but potentially reduces image quality.&lt;br /&gt;
&lt;br /&gt;
====-no_vsync====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable vertical sync&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-no_fps_capping====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Don&#039;t limit frames-per-second&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-cache_bitmaps====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Cache bitmaps between missions&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Will ideally reduce the load-time from one mission to another.&lt;br /&gt;
&lt;br /&gt;
===HUD===&lt;br /&gt;
====-dualscanlines====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Another Pair of Scanning Lines&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adds a second pair of scanning lines to the target window when scanning an object.&lt;br /&gt;
&lt;br /&gt;
====-targetinfo====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable Info next to Target&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays target info, such as name and class, beside the targeted object.&lt;br /&gt;
&lt;br /&gt;
====-orbradar====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enables 3D radar&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An Orb style 3D radar will replace the standard 2D version.&lt;br /&gt;
&lt;br /&gt;
====-rearm_timer====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable Rearm/Repair Completion Timer&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays time remaining until rearm and repair from a support ship is complete.&lt;br /&gt;
&lt;br /&gt;
====-ballistic_gauge====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable the analog Ballistic Ammo gauge&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adds an ammo gauge to the HUD when armed with a ballistic weapon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Gameplay===&lt;br /&gt;
====-ship_choice_3d====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Use Models for Ship Selection&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Uses ship models in ship selection window. It completely disables the standard ANI interface in this screen. &amp;lt;br&amp;gt;&lt;br /&gt;
Some mods need a compulsory use of this flag because they don&#039;t have available animations for their ships. In this situation, and if it is not used, the game will probably crash to desktop in the ship selection window.&lt;br /&gt;
&lt;br /&gt;
====-weapon_choice_3d====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Use Models for Weapon Selection&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Uses weapon models in weapon loadout window for secondary weapons (missiles and bombs). It completely disables the standard ANI interface in this screen.  &amp;lt;br&amp;gt;&lt;br /&gt;
Some mods need a compulsory use of this flag because they don&#039;t have available animations for their secondary weapons. In this situation, and if it is not used, the game will probably crash to desktop in the weapon loadout window.&lt;br /&gt;
&lt;br /&gt;
====-3dwarp====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable 3D Warp&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use full geometry for the subspace warp effect.&lt;br /&gt;
&lt;br /&gt;
====-warp_flash====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable Flash upon Warp&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enable a flash at warp in and warp out.&lt;br /&gt;
&lt;br /&gt;
====-no_ap_interrupt====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable Interrupting of AutoPilot&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Tells the game to not allow players to interrupt an autopilot already-in-progress.&lt;br /&gt;
&lt;br /&gt;
====-stretch_menu====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Stretch interface to fill screen&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Scales the interface to fill the screen without preserving the aspect ratio. Omit this to keep the aspect ratio, adding black bars where appropriate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Audio===&lt;br /&gt;
====-snd_preload====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Preload mission game sounds&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Useful in preventing game stuttering when sounds are played for the first time.&lt;br /&gt;
&lt;br /&gt;
====-nosound====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable Sound and Music&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-nomusic====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disables Music&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Launcher===&lt;br /&gt;
====-portable_mode====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Store config in portable location&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Uses the root directory of FSO for storing pilot and config files. The current launcher does not have proper support for this yet so you need to manually copy the fs2_open.ini from the original config directory to your FreeSpace Root directory.&lt;br /&gt;
&lt;br /&gt;
===Multiplayer===&lt;br /&gt;
====-standalone====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Run as Stand Alone Server&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Creates a standalone multi-player server.&lt;br /&gt;
&lt;br /&gt;
====-startgame====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Skip Mainhall and Start Hosting&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once you launch and choose a pilot within the game, you will immediately have begun to host a game.  This can be used in conjunction with several options to customize the game you create: -closed, -restricted, -password, -gamename, -allowabove, and -allowbelow.  -startgame has no effect when -standalone is used.&lt;br /&gt;
&lt;br /&gt;
See related: [[Command-Line_Reference#-closed|-closed]]  [[Command-Line_Reference#-restricted|-restricted]]  [[Command-Line_Reference#-password|-password]]  [[Command-Line_Reference#-gamename|-gamename]]  [[Command-Line_Reference#-allowabove|-allowabove]]  [[Command-Line_Reference#-allowbelow|-allowbelow]]&lt;br /&gt;
&lt;br /&gt;
====-closed====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Start Hosted Server as Closed&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hosts a new game in a closed state, where no one can join until the in-game &amp;quot;Close&amp;quot; button is cleared.  This only works when used in conjunction with -startgame.  Cannot be used in conjunction with -restricted or -password.&lt;br /&gt;
&lt;br /&gt;
See related: [[Command-Line_Reference#-startgame|-startgame]]  [[Command-Line_Reference#-restricted|-restricted]]  [[Command-Line_Reference#-password|-password]]&lt;br /&gt;
&lt;br /&gt;
====-restricted====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Host Confirms Join requests&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hosts a new game in a restricted state.  The host is presented with option to accept or deny each client&#039;s request to join the game.  This only works when used in conjunction with -startgame.  Cannot be used in conjunction with -closed or -password.&lt;br /&gt;
&lt;br /&gt;
See related: [[Command-Line_Reference#-startgame|-startgame]]  [[Command-Line_Reference#-closed|-closed]]  [[Command-Line_Reference#-password|-password]]&lt;br /&gt;
&lt;br /&gt;
====-multilog====&lt;br /&gt;
Creates a log file with a summary of packets sent and received in multiplayer games.  The file is saved as \data\multi.log within the active mod folder&amp;amp;mdash;or with main data folder if no mod is active.&lt;br /&gt;
&lt;br /&gt;
====-clientdamage====&lt;br /&gt;
{{Note| This feature is not available in current builds.}}&lt;br /&gt;
&lt;br /&gt;
====-mpnoreturn====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disables Flight Deck option&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Disables return to the flight deck screen after a mission completes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
====-nohtl====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Software Mode (very slow)&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
{{Warning| Enabling this will significantly reduce performance.}}&lt;br /&gt;
Reverts to software rendering mode.&lt;br /&gt;
&lt;br /&gt;
====-no_set_gamma====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable Setting of Gamma&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Disables the gamma settings in the options screen.&lt;br /&gt;
&lt;br /&gt;
====-nomovies====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable Video Playback&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Disables all video playback.&lt;br /&gt;
&lt;br /&gt;
====-noparseerrors====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable Parsing Errors&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Disables some parsing warnings and makes other parse errors non-fatal.  Do not rely on this when creating new tables. The errors are there for a reason.&lt;br /&gt;
&lt;br /&gt;
====-parse_cmdline_only====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Parse Command Line Only&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Parse only the application command line settings, and ignore any that may have been set in the on-disk data/cmdline_fso.cfg or per-user cmdline_fso.cfg (on Linux/Mac)&lt;br /&gt;
&lt;br /&gt;
====-safeloading====&lt;br /&gt;
Loads missions the old way.  Typically safer, but slower.&lt;br /&gt;
{{Note| This parameter was removed as of the July 5, 2011 nightly build.}}&lt;br /&gt;
&lt;br /&gt;
====-query_speech====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Does this build have Speech?&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Determines if the current build includes text-to-speech.&lt;br /&gt;
&lt;br /&gt;
====-novbo====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable OpenGL VBO&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-noibx====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Don&#039;t use cached index buffers (IBX)&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Disables IBX caching of model geometry data.  This will dramatically increase load times, but will help troubleshoot a model if one is working incorrectly.&lt;br /&gt;
&lt;br /&gt;
====-loadallweps====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Load all weapons, even those not used&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-disable_fbo====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable OpenGL RenderTargets&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-disable_pbo====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable OpenGL Pixel Buffer Objects&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Disables the use of Pixel Buffer Objects (PBO) which may cause certain OpenGL operations to perform slower. Note PBO&#039;s were only used at three places in FSO anyway so it&#039;s *probably* not going to have a noticeable effect.  &lt;br /&gt;
&lt;br /&gt;
May be required to workaround issues in certain versions of Linux&#039;s Mesa drivers for Intel integrated graphics cards where crashes occur in the mainhall (i.e. whenever a popup occurs). Distros that seem to have this problem presently include Ubuntu 13.10 and openSUSE 13.1.&lt;br /&gt;
{{Table371|&lt;br /&gt;
*This feature is present to work around a bug in Linux&#039;s Mesa drivers for Intel integrated graphics cards}}&lt;br /&gt;
&lt;br /&gt;
====-no_glsl====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable GLSL (shader) Support&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Disables the use of GLSL rendering (OpenGL shaders). The game will revert to legacy fixed render pipeline. Please note that Normal and Height map effects will be unavailable.&lt;br /&gt;
&lt;br /&gt;
====-disable_glsl_model====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Don&#039;t use shaders for model rendering&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-ati_swap====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Fix Color issues on some ATI cards&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://scp.indiegames.us/mantis/view.php?id=1669 Mantis #1669] is what led to this flag&#039;s creation.&lt;br /&gt;
&lt;br /&gt;
====-no_3d_sound====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Use only 2D/stereo for sound effects&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-disable_di_mouse====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disables the DirectInput mouse code for FSO on windows.&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Windows Only&#039;&#039;&#039; Can make mouse movement smoother on certain machines.&lt;br /&gt;
&lt;br /&gt;
====-mipmap====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable mipmapping&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Causes for non-mipmapped textures to have mipmaps generated within the GPU on certain kind of texture formats, (IIRC, DDS formatted textures with a power of 2 size in both width and height). &amp;lt;br&amp;gt;&lt;br /&gt;
Since the use of already mipmapped DDS textures has become common, it has become deprecated.&lt;br /&gt;
The quality of the generated mipmaps depends on each GPU and used driver. It is normally used with [[Command-Line_Reference#-img2dds|-img2dds]] flag.&lt;br /&gt;
&lt;br /&gt;
====-use_gldrawelements====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Use glDrawElements instead of glDrawRangeElements&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Introduced as a means of switching to the slower OpenGL call glDrawElements, instead of glDrawRangeElements.&lt;br /&gt;
{{Table3614|&lt;br /&gt;
*This feature may resolve certain rendering problems where parts of models are not drawn on Linux drivers}}&lt;br /&gt;
&lt;br /&gt;
====-keyboard_layout====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Manually sets a keyboard layout&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A commandline parameter to set the keyboard layout as a string parameter.&lt;br /&gt;
{{Table3614|&lt;br /&gt;
*Currently the only valid string is &amp;quot;qwertz&amp;quot; (German) but French azerty may be added in future.}}&lt;br /&gt;
&lt;br /&gt;
====-old_collision====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Use old collision detection system&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Uses the old collision code instead of Swifty&#039;s new collision code introduced in the &#039;go_even_faster&#039; project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====-gl_finish====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Fix input lag on AMD+Linux&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
{{Table371|&lt;br /&gt;
This option adds a &amp;quot;glFinish()&amp;quot; call just prior to swapping buffers. It works around an issue with &amp;quot;recent&amp;quot; (HD 6000 &amp;amp; newer?) AMD cards using proprietary drivers on Linux. Be warned that enabling this may reduce framerate.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Refer to [http://www.hard-light.net/forums/index.php?topic=88102.0 this thread] and [https://github.com/ValveSoftware/Source-1-Games/issues/765 Valve&#039;s bugtracker] for more details).&lt;br /&gt;
&lt;br /&gt;
===Experimental===&lt;br /&gt;
====-ingame_join====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Allows Ingame Joining&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enables ingame joining in multiplayer.  FIXME: Host option?&lt;br /&gt;
&lt;br /&gt;
====-voicer====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Voice Recognition&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Windows-only.  Enables voice-recognition for wingmen commands.  Must be specifically compiled into a build in order for it to be available; 3.6.10 final includes the feature.  See [[Voice Recognition]] for more details.&lt;br /&gt;
&lt;br /&gt;
====-fb_explosions====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Enable Framebuffer Shockwaves&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Development Tools===&lt;br /&gt;
====-fps====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Show frames per second on HUD&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays current frames per second.&lt;br /&gt;
&lt;br /&gt;
====-pos====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Show Position of Camera&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays current position coordinates of camera.&lt;br /&gt;
&lt;br /&gt;
====-window====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Run in Window&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Runs the game in a window.  No check to make sure that resolution is no higher than your desktop resolution, so be careful.&lt;br /&gt;
&lt;br /&gt;
====-fullscreen_window====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Run in Fullscreen Window&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
{{Note| This feature is only available on Windows.}}&lt;br /&gt;
&lt;br /&gt;
====-timerbar====&lt;br /&gt;
Displays a timing bar across the top of the screen.  Timerbar format varies by build. This is a relic from the Volition development days, and is unmaintained.&lt;br /&gt;
{{Note| This parameter was removed as of the July 5, 2011 nightly build.}}&lt;br /&gt;
&lt;br /&gt;
====-stats====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Show Statistics&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Shows total and free physical memory, virtual memory and system pagefile.&lt;br /&gt;
&lt;br /&gt;
====-coords====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Show Coordinates&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Shows coordinates of the mouse cursor.&lt;br /&gt;
&lt;br /&gt;
====-show_mem_usage====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Show Memory Usage&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Shows detailed RAM usage based on file, handler and process usage and display on the left-center side of the screen during mission load and while in mission.&lt;br /&gt;
&lt;br /&gt;
The meaning of the info displayed in the upper right corner of the HUD is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DYN&#039;&#039;&#039; = dynamic memory, basically anything that&#039;s been allocated by the vm_* memory functions.  This does NOT indicate total memory usage but does account for most of it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POF&#039;&#039;&#039; = model memory, how much memory is being used by models (does not include textures)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-BMP, BMP&#039;&#039;&#039; = bmpman memory, how much is used by the textures/images that are loaded.  C-BMP means that you are using -cache_bitmaps and it will try to keep textures in memory between level loads and as the new level is loading it will keep what it needs and unload what it doesn&#039;t.  Can greatly increase level loading speed, but does so at the cost of memory between level loads.  This does not increase overall memory usage though, only during the loading screen.  BMP means that it is not cached and all textures are unloaded from memory at the start of level load and all needed textures are then loaded from the disk again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S-RAM&#039;&#039;&#039; = sound memory, how much is used by the sounds loaded in memory at the time.  This counts static sounds only (from sounds.tbl, etc.) and not streaming sounds (music, voices, briefing stuff, etc).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V-RAM&#039;&#039;&#039; = approximate memory usage of video textures.  This does not mean that your card has this much memory, and can report higher numbers that your card actually has memory.  For OpenGL it also includes some of the geometry data, but this number does not reflect the total memory that your video card is using.  It only reports how much data the game has purposefully loaded into API memory (meaning it could be in system memory, video card memory, or AGP memory).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(It only works with debug builds, not with release builds).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-pofspew====&lt;br /&gt;
Reads all objects in the pof file of the selected mod, and creates an ibx cache file for each object in the data/cache folder for that mod. &amp;lt;br&amp;gt;&lt;br /&gt;
Details for each object are output to a pofspew.txt file created in the data folder. &amp;lt;br&amp;gt;&lt;br /&gt;
Otherwise, ibx files are created in game before each mission.&lt;br /&gt;
&lt;br /&gt;
====-tablecrcs====&lt;br /&gt;
Is actually now (or should be) a typed reference rather than as a selection item. Takes 1 argument, usually a descriptive name.&lt;br /&gt;
Example usage: &amp;quot;-table_crcs MediaVPs&amp;quot; will create a table_crcs.csv file in the running mod (name can be separate of the mod selected) that allows for the validation of the tables used by that mod while on-line. The descriptive parameter given helps &amp;quot;allocate&amp;quot; that .csv file to the mod in question, and as such should closely or exactly match that mods name if possible.&lt;br /&gt;
&lt;br /&gt;
====-missioncrcs====&lt;br /&gt;
Is actually now (or should be) a typed reference rather than as a selection item. Takes 1 argument, usually a descriptive name.&lt;br /&gt;
Example usage: &amp;quot;-mission_crcs MediaVPs&amp;quot; will create a mission_crcs.csv file in the running mod (name can be separate of the mod selected) that allows for the validation of the missions used by that mod while on-line. The descriptive parameter given helps &amp;quot;allocate&amp;quot; that .csv file to the mod in question, and as such should closely or exactly match that mods name if possible.&lt;br /&gt;
&lt;br /&gt;
====-dis_collisions====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable Collisions&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Disables all collisions.&lt;br /&gt;
&lt;br /&gt;
====-dis_weapons====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disable Weapon Rendering&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Disables weapons rendering.&lt;br /&gt;
&lt;br /&gt;
====-output_sexps====&lt;br /&gt;
This will make the FSO build spit out an html file that documents the supported SEXP&#039;s.&lt;br /&gt;
&lt;br /&gt;
Just double click on sexps.html and it should open in your default web browser.&lt;br /&gt;
&lt;br /&gt;
====-output_scripting====&lt;br /&gt;
This will make the FSO build spit out an html file that documents the supported scripting hooks and LUA libraries.&lt;br /&gt;
&lt;br /&gt;
Just double click on scripting.html and it should open in your default web browser.&lt;br /&gt;
&lt;br /&gt;
====-nograb====&lt;br /&gt;
Disables focus grabbing in a window.&lt;br /&gt;
{{Note| This feature is not available on Windows.}}&lt;br /&gt;
&lt;br /&gt;
====-save_render_target====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Save Render Targets to file&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====-debug_window====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Display Debug Window&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lists the fs2_open.log in (nearly)real-time generation.&lt;br /&gt;
&lt;br /&gt;
====-verify_vps====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Spew VP crcs to vp_crcs.txt&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Exports the CRC values of the VP files being loaded into a vp_crcs.txt file.&lt;br /&gt;
&lt;br /&gt;
====-reparse_mainhall====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Reparse mainhall.tbl when loading halls&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mainhall.tbl will be reparsed every time a mainhall is loaded, as opposed to just once at game startup.&lt;br /&gt;
&lt;br /&gt;
====-profile_frame_time====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Profile engine subsystems&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Activates the frame profiling code. This presents a readout showing the current, minimum, maximum and average percentages of frametime a given section of code has taken up; this can be used to identify particular bottlenecks or measure the effectiveness of certain optimizations.&lt;br /&gt;
&lt;br /&gt;
====-profile_write_file====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Write profiling information to file&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will write the frame times of each gameplay frame to the file &#039;profiling.csv&#039; where each line is &#039;&#039;&amp;lt;time&amp;gt;;&amp;lt;frametime&amp;gt;&#039;&#039;. Both times are measured in microseconds. &#039;&#039;time&#039;&#039; is measured from an arbitrary time in the past. To get consistent results the first &#039;&#039;time&#039;&#039; value should be substracted from all &#039;&#039;time&#039;&#039; values. The first two frames are usually very long because the timer is set at engine startup so you might want to exclude those from your data.&lt;br /&gt;
&lt;br /&gt;
====-no_unfocused_pause====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Don&#039;t pause if the window isn&#039;t focused&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When the FSO window looses focus it will not pause the game, useful for doing non-interactive test runs.&lt;br /&gt;
&lt;br /&gt;
====-benchmark_mode====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Puts the game into benchmark mode&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
See [[Benchmarking]] for more information.&lt;br /&gt;
&lt;br /&gt;
====-noninteractive====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Disables interactive dialogs&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
Disables all dialogs and chooses the default option when one would be displayed. Very useful for a standalone server on a headless system.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
The following options are not available as checkboxes in the launcher.  Many require parameters, which follow the flag separated by a space.  The prototype for use in this case is &amp;quot;-option argument&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Lighting===&lt;br /&gt;
These factors can dramatically alter the atmosphere of the game. [[Sample Lighting Settings|This page]] has some sample lighting settings with screenshots.&lt;br /&gt;
&lt;br /&gt;
====-ambient_factor====&lt;br /&gt;
This must be entered into the &amp;quot;Custom flags&amp;quot; field. This is a multiplier applied to the intensity of ambient lighting. Ambient light is lighting applied to all parts of a ship. FS2&#039;s standard value is 120. Try 75 for a good and realistic looking value. However, that is relative.&lt;br /&gt;
&lt;br /&gt;
====-no_emissive_light====&lt;br /&gt;
By default, all ships in FS2 have a light generated on their own, it is more or less similar to a minimal amount of -ambient_factor. This feature was implemented to help the player seeing the ships over a black background. This flag disables this feature. Use it with a low -ambient_factor value to obtain an ultra-realistic dark looking.&lt;br /&gt;
&lt;br /&gt;
====-spec_exp====&lt;br /&gt;
This must be used with the -spec command line parameter and must be entered into the &amp;quot;Custom flags&amp;quot; field. Adjusts the size of the shiny spot on ships. Higher number mean smaller spots. Default is 16. However, 11 is recommended. This is a relative value.&lt;br /&gt;
&lt;br /&gt;
====-spec_point====&lt;br /&gt;
This must be used with the -spec command line parameter and must be entered into the&lt;br /&gt;
&amp;quot;Custom flags&amp;quot; field. Adjusts how much laser weapons contribute to specular highlights. Higher number mean greater contributions. Default is 1.0. However, 0.6 is recommended. This is a relative value.&lt;br /&gt;
&lt;br /&gt;
====-spec_static====&lt;br /&gt;
This must be used with the -spec command line parameter and must be entered into the &amp;quot;Custom flags&amp;quot; field. Adjusts how much suns contribute to specular highlights. Higher numbers mean a greater contribution. Default is 1.0. However, is 0.8 recommended. This is a relative value.&lt;br /&gt;
&lt;br /&gt;
====-spec_tube====&lt;br /&gt;
This must be used with the -spec command line parameter and must be entered into the &amp;quot;Custom flags&amp;quot; field. Adjusts how much Beam Weapons contribute to specular highlights. Higher numbers mean a greater contribution. Default is 1.0. However, 0.4 is recommended. This is a relative value.&lt;br /&gt;
&lt;br /&gt;
====-ogl_spec====&lt;br /&gt;
Takes a numerical argument. This value changes the basic shininess of the specular light in OpenGL.  A lower value reduces the overall intensity of the light making it broader and less powerful.  A higher value makes it more focused and brighter.  The default value is 80, and the usable range is 0 to 128 (clamped). The original default value was 60, but it was raised to behave more D3D like.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Graphics===&lt;br /&gt;
====-bloom_intensity====&lt;br /&gt;
Requires -post_processing (&amp;quot;Enable Post Processing&amp;quot;) command.&lt;br /&gt;
Default value is 75. Range is 0-200.&lt;br /&gt;
&lt;br /&gt;
====-clipdist====&lt;br /&gt;
Changes the distance from the viewpoint for the near-clipping plane.&lt;br /&gt;
&lt;br /&gt;
Takes one argument decimal specifying the distance to the near-clipping plane.&lt;br /&gt;
&lt;br /&gt;
====-res====&lt;br /&gt;
Allows you to specify a resolution if the desired one cannot be set in the Launcher. &lt;br /&gt;
For example, -res 1920x1080 would run the game in 1920 x 1080 resolution. Since it requires an argument, it needs to be entered as a custom flag when using the Launcher. The &amp;quot;Run at specified resolution&amp;quot; option the Launcher gives is essentially this, but without being able to actually specify a resolution, it doesn&#039;t work.&lt;br /&gt;
&lt;br /&gt;
====-center_res====&lt;br /&gt;
Specifies how much of the screen area should be utilized by menus, movies, the HUD, and various other 2D graphics. Intended for use with configurations with an extremely wide field of view, such as triple-monitor setups.&lt;br /&gt;
&lt;br /&gt;
By default, if the screen resolution&#039;s aspect ratio is wider than 7:2, most 2D elements utilize only the center 3/10 of the screen area. This setting allows users to override this behavior to make better use of the center monitor. (The reason for using 3/10 rather than 1/3 is that many triple-monitor setups use bezel correction, which reduces the fraction of the screen area that the center monitor displays.)&lt;br /&gt;
&lt;br /&gt;
For example, if the screen resolution is 6000x1080, then -center_res 1920x1080 will keep most 2D graphics in the center 1920x1080 area. This setting is automatically scaled to fit the screen resolution, so (assuming the resolution is still 6000x1080) -center_res 1280x720 is given, then that resolution is enlarged to 1920x1080.&lt;br /&gt;
&lt;br /&gt;
====-fxaa_preset====&lt;br /&gt;
Requires both -post_processing and -fxaa. Can be used to adjust the FXAA quality and speed, 0 is fastest, 9 is highest quality. Default setting is 6.&lt;br /&gt;
&lt;br /&gt;
===Gameplay===&lt;br /&gt;
====-start_mission====&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Skip the mainhall in jump right into the specified mission&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jump into the mission specified by the filename.  Only in effect on the first run. This will skip load of the mainhall and its other related things altogether.&lt;br /&gt;
&lt;br /&gt;
====-mod====&lt;br /&gt;
Specifies in which folders inside FreeSpace 2 directory, the game looks for all the game data (models, missions, textures, tables, ...). Retail version only looks inside &#039;&#039;Freespace2/data/&#039;&#039; structure and &#039;&#039;Freespace2/vp archives&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This flag allows installing several different mods that modify retail behavior, and switching between them without needing to erase files or having undesired cross effects. Each mod should be installed in its own folder.&lt;br /&gt;
&lt;br /&gt;
It takes one argument string: the chain of names of the used directories. Comma (&#039;&#039;&#039;,&#039;&#039;&#039;) must be used as separator. In this way, &#039;&#039;&#039;-mod dir1,dir2,dir3,...,dirx&#039;&#039;&#039; causes the game to use the following directory precedence:&lt;br /&gt;
&lt;br /&gt;
#Freespace2/dir1/&lt;br /&gt;
#Freespace2/dir2/&lt;br /&gt;
#Freespace2/dir3/&lt;br /&gt;
# ... (the rest of the typed directories) ...&lt;br /&gt;
#Freespace2/dirx/&lt;br /&gt;
#Freespace2/&lt;br /&gt;
&lt;br /&gt;
This flag can be indirectly set, (and it is normally set), through Launcher MOD tab and [[mod.ini]] file.&lt;br /&gt;
&lt;br /&gt;
Within the Launcher&#039;s MOD tab you can select one directory, (let&#039;s call it &#039;&#039;moddir&#039;&#039;), so the flag is at least set to &#039;&#039;&#039;-mod moddir&#039;&#039;&#039;.&lt;br /&gt;
If &#039;&#039;Freespace2/moddir/[[mod.ini]]&#039;&#039; exists it will be used to modify the -mod flag, too.&lt;br /&gt;
&lt;br /&gt;
For further details, see &#039;&#039;&#039;[[mod.ini]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data precedence&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As already said, within the different directories, the data precedence is set by the specified order in the -mod flag. The lowest priority goes to the Freespace2 installation directory.&lt;br /&gt;
&lt;br /&gt;
Inside each directory, data precedence is the following:&lt;br /&gt;
&lt;br /&gt;
#Individual files located in &#039;&#039;Current_dir/data/&#039;&#039; subdir structure. See [[FS2_Data_Structure|FS2 Data Structure topic]] for deeper info about the different folders and contents this structure has.&lt;br /&gt;
#Files located inside vp archives. (These vp archives are &amp;quot;similar&amp;quot; to zip archives. They just contain other files and folders. Moreover, files have to be stored using the same &#039;&#039;data/&#039;&#039; structure used outside it). &amp;lt;br&amp;gt;Vp archives are read in alphabetical order, so aaa.vp files have higher priority than aab.vp files and so on.&lt;br /&gt;
&lt;br /&gt;
The highest priority file overrides the rest of them. In this way, if you have a &#039;&#039;Mission.fs2&#039;&#039; inside &#039;&#039;Freespace2/Pri1/data/missions/&#039;&#039; it doesn&#039;t matter that this &#039;&#039;Mission.fs2&#039;&#039; is also inside &#039;&#039;Freespace2/Pri1/aaa.vp&#039;&#039;, &#039;&#039;Freespace2/Pri1/aab.vp&#039;&#039;, ... or &#039;&#039;Freespace2/data/missions/&#039;&#039;. This data precedence allows the user to quickly replace old files by corrected or enhanced ones adding them in a higher priority place.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional notes&#039;&#039;&#039;&lt;br /&gt;
# As derived from the explanation, the exact names for directories or vp archives are actually irrelevant. It only matters the directory order inside -mod flag argument and the alphabetical order for vp archives inside each used directory.&lt;br /&gt;
# This flag is also used by [[Portal:FRED|FRED]]. So if there is special mod info, (like backgrounds maps, ship models or whatever), it must be typed, (&#039;&#039;Fred2_Open_r.exe -MOD whatever&#039;&#039;), or FRED won&#039;t be able to use it. A special build of wxLauncher is able to configure FRED so that the -mod doesn&#039;t have to be done manually see [http://www.hard-light.net/forums/index.php?topic=67950.msg1387911#msg1387911 the forum post] for more details.&lt;br /&gt;
{{Table3612|As of 3.6.12 FRED now loads cmdline_fso.cfg just like FS does so FRED will use the same settings as FS including the -mod settings}}&lt;br /&gt;
# Be careful while typing the directory names in the flag argument or inside mod.ini files. The program doesn&#039;t check if the typed directories exist. If they do not exist, they are just ignored. No warnings, no errors, no messages at all.&lt;br /&gt;
&lt;br /&gt;
{{Warning| &#039;&#039;&#039;Priority and Texture Formats&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Obsolete behavior - Until FS2_open v3.6.9.:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
FS2_Open can use several file formats in textures: [http://en.wikipedia.org/wiki/PCX PCX], [http://en.wikipedia.org/wiki/DirectDraw_Surface DDS], [http://en.wikipedia.org/wiki/JPG JPG] and [http://en.wikipedia.org/wiki/TGA TGA]. Make sure you keep the format when you update your texture. For example if you update the old &#039;&#039;TextureOfMyFighter.tga&#039;&#039;, do not save it as &#039;&#039;TextureOfMyFighter.dds&#039;&#039; in a higher priority place, because there is a chance of the game loading the old one despite of all.&lt;br /&gt;
&lt;br /&gt;
The reason to do this is that, loading process (including priorities) is applied firstly for a kind of textures (TGAs), then for another kind (JPGs), and so on. This behavior can lead to situation where your new, updated and higher priority placed texture is not read because the format of the older one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;New behavior - From FS2_open v3.6.10. (including previous beta testing releases):&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The former issue has been fixed. Now texture format priority is only applied within the same location. In this &#039;&#039;strange&#039;&#039; situation it goes DDS -&amp;gt; TGA -&amp;gt; JPG -&amp;gt; PCX. Examples:&lt;br /&gt;
* &#039;&#039;/Freespace2/MyVp.vp&amp;gt;&amp;gt;&amp;gt;data/maps/MyTexture.dds&#039;&#039; is loaded instead of &#039;&#039;/Freespace2/MyVp.vp&amp;gt;&amp;gt;&amp;gt;data/maps/MyTexture.tga&#039;&#039;.&lt;br /&gt;
* But your improved &#039;&#039;/Freespace2/data/maps/MyTexture.xxx&#039;&#039; will override them both despite of its format.&lt;br /&gt;
In this way, when you update any texture, you don&#039;t have to pay attention to its original format. Just place it in a higher priority place.&lt;br /&gt;
&lt;br /&gt;
Nevertheless, global priority is kept between animated and static textures. Because of their management, animated textures (ANIs and EFFs) are looked for BEFORE static ones. In this way there&#039;s no way to update an animated texture with a static one (an obsolete ANI is always going to be loaded before the newer DDS version). The solution: use an updated EFF with just one frame.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====-fov====&lt;br /&gt;
This flag allows the player to specify the &#039;&#039;vertical&#039;&#039; Field of View (FoV) angle, in radians, for the player eyepoint. The angle is measured across the full height of the viewing cone. The FoV angle is technically known as the Angle of View (AoV)&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;float&#039;&#039;&#039;&#039;&#039; Angle&lt;br /&gt;
*Valid Values: 0 to 2*Pi radians&lt;br /&gt;
*Default Value: 0.75 radians&lt;br /&gt;
&lt;br /&gt;
{{Note|For peculiar reasons, the actual FoV/AoV used by the game will be the supplied value multiplied by 1.39626348.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The the FoV angle/AoV is what determines the relative zoom level of the main game camera. Smaller angles generally equal to higher zoom levels, while larger angles equal to lower zoom levels (down to the theoretical x0 magnification).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, too small of an angle will have a squashed look on the edges of your screen, and too high of an angle will greatly stretch edges. It is recommended to change the AoV, as FS2&#039;s default AoV has some perspective distortion at the screen edges (the default AoV is too high).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A natural looking (as if you where physically in the cockpit) AoV depends on the distance the player&#039;s actual eyes are away from the screen: the further away from the screen, the smaller the AoV should be, and vice versa. &amp;quot;Ergonomic&amp;quot; distances generally yield a &#039;&#039;&#039;&#039;&#039;diagonal&#039;&#039;&#039;&#039;&#039; AoV of 0.523 radians (30 degrees), but you can easily find the natural AoV by the following formula:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AoV (radians) = 2 * atan( H / ( 2*D ))&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
Height of screen = H&lt;br /&gt;
&lt;br /&gt;
Distance between head/eye and the screen = D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generally, gamers like to increase the AoV in order to increase their peripheral vision on the screen, so as to gain a better situational awareness around their craft. An AoV of 0.39 radians seems to be a good start, but feel free to experiment and use whatever AoV you are most comfortable with.&lt;br /&gt;
&lt;br /&gt;
===Multiplayer===&lt;br /&gt;
====-gamename====&lt;br /&gt;
Specifies the name of the game to be created by the host.  This only works when used in conjunction with -startgame.  &lt;br /&gt;
&lt;br /&gt;
Takes one argument string, the name to be assigned to the game being created.&lt;br /&gt;
&lt;br /&gt;
This argument does nothing when used with -standalone.  To set the name for a standalone server, see [[Multiplayer(Main)#Standalone Servers|Standalone Servers]].&lt;br /&gt;
&lt;br /&gt;
See related:&amp;amp;nbsp;&amp;amp;nbsp; [[Command-Line_Reference#-startgame|-startgame]]&amp;amp;nbsp;&amp;amp;nbsp; [[Multiplayer(Main)#Standalone Servers|Standalone Servers]]&lt;br /&gt;
&lt;br /&gt;
====-password====&lt;br /&gt;
Specifies the password for a standalone server.  This only works when used in conjunction with -startgame.  Cannot be used in conjunction with -closed or -restricted.&lt;br /&gt;
&lt;br /&gt;
Takes one argument string, the required password for the game being created.&lt;br /&gt;
&lt;br /&gt;
See related: [[Command-Line_Reference#-startgame|-startgame]]  [[Command-Line_Reference#-closed|-closed]]  [[Command-Line_Reference#-restricted|-restricted]]&lt;br /&gt;
&lt;br /&gt;
====-allowabove====&lt;br /&gt;
Specifies a player&#039;s minimum rank for joining a game.  This only works when used in conjunction with -startgame.&lt;br /&gt;
&lt;br /&gt;
Takes one argument integer, the points ranking above which a player must be to enter the game.&lt;br /&gt;
&lt;br /&gt;
See related: [[Command-Line_Reference#-startgame|-startgame]]&lt;br /&gt;
&lt;br /&gt;
====-allowbelow====&lt;br /&gt;
Specifies a player&#039;s maximum rank for joining a game on a standalone server.  This only works when used in conjunction with -startgame.&lt;br /&gt;
&lt;br /&gt;
Takes one argument integer, the points ranking below which a player must be to enter the game.&lt;br /&gt;
&lt;br /&gt;
See related: [[Command-Line_Reference#-startgame|-startgame]]&lt;br /&gt;
&lt;br /&gt;
====-port====&lt;br /&gt;
Specifies the port on which to host a game or serve a standalone game.&lt;br /&gt;
&lt;br /&gt;
Takes one argument integer, the port on which the host will listen for clients.&lt;br /&gt;
&lt;br /&gt;
====-connect====&lt;br /&gt;
Automatically connect to multiplayer IP:PORT.&lt;br /&gt;
&lt;br /&gt;
Takes one string value, such as 192.168.0.1:&lt;br /&gt;
&lt;br /&gt;
====-timeout====&lt;br /&gt;
Multiplayer network timeout (secs).&lt;br /&gt;
&lt;br /&gt;
Takes one integer argument, the timeout value in seconds.  Default is 30.&lt;br /&gt;
&lt;br /&gt;
====-cap_object_update====&lt;br /&gt;
Caps the maximum object update the server will respond to regardless of what the client has set. If the client is set to request high object updates but the server is capped to low, then that&#039;s all the client will get. &lt;br /&gt;
&lt;br /&gt;
Takes one argument integer (0 to 3) which corresponds to the object update cap (With 0 being low and 3 being LAN).&lt;br /&gt;
&lt;br /&gt;
===Help===&lt;br /&gt;
====-help====&lt;br /&gt;
Instructs FSO to print out all supported parameters. Some launchers can use these options to automatically populate the available command line options, even if the version of FSO is far newer than the launcher itself. NOTE: This option only works in Linux builds...&lt;br /&gt;
&lt;br /&gt;
====--help====&lt;br /&gt;
See [[Command-Line_Reference#-help|-help]]&lt;br /&gt;
&lt;br /&gt;
====-h====&lt;br /&gt;
See [[Command-Line_Reference#-help|-help]]&lt;br /&gt;
&lt;br /&gt;
====-?====&lt;br /&gt;
See [[Command-Line_Reference#-help|-help]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Lists]]&lt;br /&gt;
[[Category:Source Code Project]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Weapons.tbl&amp;diff=45609</id>
		<title>Weapons.tbl</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Weapons.tbl&amp;diff=45609"/>
		<updated>2016-08-05T09:24:20Z</updated>

		<summary type="html">&lt;p&gt;M!m: Add documentation for particle effects options&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TableVersionGit|2016-06-05|cb9c669}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;weapons.tbl&#039;&#039;&#039; defines all of the weapon classes used in FSO.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-wep.tbm&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The weapons.tbl is responsible for defining the behavior of the numerous weapon effects used in FSO, including the amount of damage dealt, the firing rate, and graphical effects.&lt;br /&gt;
&lt;br /&gt;
This wiki page goes over all of the entries used exclusively in the weapons.tbl file. Hyperlinks to individual weapon creation/editing tutorials are provided when appropriate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Special Case Weapons==&lt;br /&gt;
===Beam Cannons===&lt;br /&gt;
&#039;&#039;&#039;REQUIRES:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;beam&amp;quot;&#039;&#039;&#039; flag&lt;br /&gt;
*&#039;&#039;&#039;[[weapons.tbl#$BeamInfo:|$BeamInfo:]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
See also: [http://www.hard-light.net/wiki/index.php/Tutorial_-_Beam_Weapons Tutorial - Beam Weapons]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Flak Guns===&lt;br /&gt;
&#039;&#039;&#039;REQUIRES:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;flak&amp;quot;&#039;&#039;&#039; flag&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;particle spew&amp;quot;&#039;&#039;&#039; flag&lt;br /&gt;
*Must have inner and outer radius defined to have any effect.&lt;br /&gt;
*A &#039;&#039;&#039;.pof&#039;&#039;&#039; model must be defined ( usually &#039;&#039;&#039;Hornet.pof&#039;&#039;&#039; )&lt;br /&gt;
**Note: the model is not actually used... Instead, it uses [[Weapons.tbl#$Pspew:|particle spew]]. Trails may also be added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==General Format==&lt;br /&gt;
*The weapons table consist of several sections&lt;br /&gt;
*All sections beginning with &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; need &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;End&#039;&#039;&#039; before the next section.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Primary Weapons&#039;&#039;&#039;&lt;br /&gt;
***Defines all &#039;&#039;&#039;standard primaries weapons&#039;&#039;&#039; as well as &#039;&#039;&#039;beam cannons&#039;&#039;&#039; and &#039;&#039;&#039;flak cannons&#039;&#039;&#039;.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Secondary Weapons&#039;&#039;&#039;&lt;br /&gt;
***Defines all &#039;&#039;&#039;secondary weapons&#039;&#039;&#039;.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Beam Weapons&#039;&#039;&#039;&lt;br /&gt;
***I haven&#039;t got any ideas for this one.&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;[[Weapons.tbl#Countermeasures|Countermeasures]]&#039;&#039;&#039;&lt;br /&gt;
***Defines the used countermeasure.&lt;br /&gt;
**&#039;&#039;&#039;$Player Weapon Precedence&#039;&#039;&#039;&lt;br /&gt;
***Player Weapon Precedence is used in weapon selection when a default specified by the mission designer is not available to the player. The next weapon on the list is used in its place (assuming that weapon is allowed for the player).&lt;br /&gt;
&lt;br /&gt;
==Core Table==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Name:===&lt;br /&gt;
*This is the name of the weapon. If it&#039;s going to be used by the player, keep it under 12 characters so it doesn&#039;t spill over the HUD box.&amp;lt;br&amp;gt;Two special characters can be used in the name: &#039;&#039;&#039;#&#039;&#039;&#039; and &#039;&#039;&#039;@&#039;&#039;&#039;. Their usage details are the very same than inside the [[Ships.tbl#.24Name:_2|$Name field from Ships.tbl]].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====+nocreate====&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*In [[Modular Tables]] name can be followed by line &#039;&#039;&#039;+nocreate&#039;&#039;&#039; that prevent game from creating an incomplete entry by leaving the entry unread unless it already exists (either in Weapons.tbl or in earlier parsed *-wep.tbm files) by the time the *-wep.tbm is read.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Alt Name:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*An alternative name that can be referenced instead of $Name:&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Subtype:===&lt;br /&gt;
{{Table3610| &lt;br /&gt;
Specifies the weapon &#039;s subtype. Overrides the default subtype as specified by the #-section it is in (#Primary, #Secondary, #Beam Weapon, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
:Since the weapon subtype is already specified by the #-section it is in, this option is not particularly useful when the weapon is inside a #Primary or #Secondary section. However, it may be used to specify the weapon slot it uses on fighters/bombers for weapons that are normally capship only (such as beam cannons).}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Valid Entries: &lt;br /&gt;
:Primary&lt;br /&gt;
:Secondary}}&lt;br /&gt;
&lt;br /&gt;
===+Title:===&lt;br /&gt;
*This is the title of the weapon in the Weapons loadout screen. Only needed for player allowed weapons. Title may be anything.  Numerical value is a reference to translations in [[Tstrings.tbl]]&lt;br /&gt;
*Syntax: XSTR(&#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039;, -1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Description:===&lt;br /&gt;
*This is the description you see in the weapons loadout screen. Again, these aren&#039;t based on any hard numbers, just approximations. Only needed for player allowed weapons. Numerical value is a reference to translations in [[Tstrings.tbl]]&lt;br /&gt;
*Must be followed by &#039;&#039;&#039;$end_multi_text&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSTR(&lt;br /&gt;
&amp;quot;&#039;&#039;Standard Issue&lt;br /&gt;
&#039;&#039;Level 3 Hull Damage&lt;br /&gt;
&#039;&#039;Level 2 Shield Damage&#039;&#039;&amp;quot;, -1)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===+Tech Title:===&lt;br /&gt;
*Title of the weapon in the Tech room. Only needed for player allowed weapons.&lt;br /&gt;
*Syntax: XSTR(&#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039;, -1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Tech Anim:===&lt;br /&gt;
*Animation used for the weapon in the Tech room. Only needed for player allowed weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, animation filename&lt;br /&gt;
**Example: &#039;&#039;Tech_Subach_HL-7&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Tech Description:===&lt;br /&gt;
*Descriptive text you see in the tech room. Only needed for player allowed weapons. Numerical value is a reference to translations in [[Tstrings.tbl]]&lt;br /&gt;
*Must be followed by &#039;&#039;&#039;$end_multi_text&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSTR(&lt;br /&gt;
&amp;quot;&#039;&#039;The Subach-Innes HL-7...&#039;&#039;&amp;quot;, 3245)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===$Tech Model:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines model used in wing loadout screen for the weapon. 3D weapon models in the tech room have not yet been implemented.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
====+Closeup_Pos:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*How the model will show on the Loadout Screen. The position of the camera relative to the model center.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;, three &#039;&#039;&#039;floats&#039;&#039;&#039;, x, y and z values respectively}}&lt;br /&gt;
&lt;br /&gt;
====+Closeup_Zoom:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*How the model will show on the Loadout Screen. How far the camera&#039;s zoomed in, defines camera&#039;s FOV.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, radians}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Selection Effect:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines which selection effect to use when the -weapon_choice_3d commandline flag is enabled or no ani can be found for the selected weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, either &amp;quot;FS1&amp;quot;, or &amp;quot;Off&amp;quot;. This defaults to the FS2 effect.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$HUD Image:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the picture used to represent the weapon in HUD loadout list&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Model File:===&lt;br /&gt;
*Filename of the model file (.pof) at data/models folder. Additional fields beginning from &#039;&#039;&#039;&#039;&#039;@Laser Bitmap:&#039;&#039;&#039;&#039;&#039; and ending to &#039;&#039;&#039;&#039;&#039;@Laser Tail Radius:&#039;&#039;&#039;&#039;&#039; are not needed if a model has been defined for the weapon.&lt;br /&gt;
*Standard primaries and beam cannons do not use specific models so for those the name is &#039;none&#039;.&lt;br /&gt;
*Flak weapons and secondaries use models, though the exact model is not important with the flak weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039; or &#039;&#039;none&#039;&#039;, model filename&lt;br /&gt;
**Example: &#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$POF target LOD:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the LOD (Level-Of-Detail) of the model used in HUD targeting view&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Detail Distance:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the distance where the change between different Levels-Of-Details (LODs) occurs&lt;br /&gt;
*Take notice that these are base values. Model detail in Detail options, (within game press F2), applies a multiplier to these values. These multipliers are (from left to right): 1/8, 1/4, 1, 4, 8&lt;br /&gt;
*Optional.  If not defined the game uses the formula ((radius * 20.0 + 20.0) * LOD)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;(Detail Distances)&#039;&#039;&#039;&#039;&#039; , list of &#039;&#039;&#039;integers&#039;&#039;&#039; (same amount as LODs), distances from the model in meters&lt;br /&gt;
**Example: &#039;&#039;(0, 80, 300, 900)&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$External Model File:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the models shown on the gunpoint, used with Bobb&#039;s external-visible-weapon code.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Submodel Rotation Speed:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the rotation speed of the subobject, with the $gun_rotation property defined, in the external weapon model.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Note: weapon fire will be delayed by the time it takes for the weapon to spin up to this speed (using $Submodel Rotation Acceleration or its default value), regardless of whether an external model is used or not.&lt;br /&gt;
}}&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Note: It&#039;s no longer required that the ship actually have external models enabled (whether or not this weapon has one defined) for the spin up delay to occur.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Submodel Rotation Acceleration:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the rotation acceleration of the external weapon model.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Default value: 10}}&lt;br /&gt;
&lt;br /&gt;
===@Laser===&lt;br /&gt;
In the event a 3D model is not defined for the weapon, FSO creates an object similar to a glowpoint. Essentially, it is a 2D plane that always faces the player&#039;s camera with an additive texture applied to it, and may or may not have an omnilight follow it.&lt;br /&gt;
&lt;br /&gt;
As suggested by its name, this option group is normally used for lasers and similar primaries, but it may also be used for other weapon types as well.&lt;br /&gt;
&lt;br /&gt;
Unless said otherwise, the graphic files used within this group may be of any compatible type (.DDS, .PCX, .TGA, etc.), however a .DDS is recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Bitmap:====&lt;br /&gt;
Defines the graphic file to be used as the weapon effect.&lt;br /&gt;
&lt;br /&gt;
Blending type: additive&lt;br /&gt;
&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Bitmap: my_laser_bitmap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Glow:====&lt;br /&gt;
Defines the graphic file to be used for the glowmap of the weapon effect.&lt;br /&gt;
&lt;br /&gt;
Blending type: additive&lt;br /&gt;
&lt;br /&gt;
*This file is &#039;multiplied&#039; by a value between Color and Color2.&lt;br /&gt;
*The physical dimensions of the glowmap in-game is 2x the size of the bitmap.&lt;br /&gt;
&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Glow: my_laser_glowmap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Color:====&lt;br /&gt;
The RGB color of the glow effect.&lt;br /&gt;
&lt;br /&gt;
*The color is applied both to the glowmap and the omnilight that follows the effect.&lt;br /&gt;
&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue respectively, 8-bit value from 0 to 255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Color: 255, 0, 0    ; Red glow effect at the start of the effect&#039;s lifetime&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Color2:====&lt;br /&gt;
The RGB color of the glow effect at the end of the effect&#039;s lifetime (at its maximum range).&lt;br /&gt;
&lt;br /&gt;
*The color is applied both to the glowmap and the omnilight that follows the effect.&lt;br /&gt;
*The actual color of the glow effect is somewhere in between the values defined by Color and Color2. Essentially, the actual color &amp;quot;fades&amp;quot; from Color to Color2 over its lifetime.&lt;br /&gt;
**If Color is not defined, then a default value of 255, 255, 255 is assumed for its initial color.&lt;br /&gt;
&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue respectively, 8-bit value from 0 to 255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Color2:  0, 0, 255    ; Blue glow effect at the end of the effect&#039;s lifetime.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Color: 255, 0,   0    ; Start with a Red glow effect, and fade into...&lt;br /&gt;
@Laser Color2:  0, 0, 255    ; a Blue glow effect over the lifetime of the effect.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Length:====&lt;br /&gt;
Defines the length of the weapon effect.&lt;br /&gt;
*This option stretches the 2D plane &amp;quot;away&amp;quot; from its origin.&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Length:  1.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Head Radius:====&lt;br /&gt;
Defines the width of the leading edge, or &amp;quot;head,&amp;quot; of the weapon effect.&lt;br /&gt;
*The edge of the 2D plane farthest away from its origin is the leading edge.&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Head Radius: 0.75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====@Laser Tail Radius:====&lt;br /&gt;
Defines the width of the trailing edge, or &amp;quot;tail&amp;quot; of the weapon effect.&lt;br /&gt;
*The edge of the 2D plane that is closest to its origin is the trailing edge.&lt;br /&gt;
Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Laser Tail Radius: 0.75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Mass:===&lt;br /&gt;
*How much of a kinetic effect this weapon has on its target. 3+ gives you the Flail effect. Set it to 10 and you can knock cruisers around.&lt;br /&gt;
*This is somehow multiplied by the speed. ie &#039;&#039;$Mass: 3&#039;&#039; and &#039;&#039;$Velocity: 200&#039;&#039; has much weaker kinetic effect than &#039;&#039;$Mass: 3&#039;&#039; and &#039;&#039;$Velocity: 1000&#039;&#039;. Also $Mass is used to calculate intensity of &amp;quot;shudder&amp;quot; effect if flagged.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, blast effect&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Velocity:===&lt;br /&gt;
*How fast the weapon travels. Is also used to define the weapon range, &#039;&#039;&#039;&#039;&#039;$Velocity x $Lifetime = range&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
*Beams travel instantly so this field has effect only on weapon range and AI beam targeting with certain beam types. $Velocity of beam also applies to its kinetic effect along with $Mass.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Fire Wait:===&lt;br /&gt;
*Time in seconds between firings&lt;br /&gt;
*Note that Fire wait will be reset to 1 if it is set over 5 for non turreted primary weapons (doesn&#039;t apply to 3.6.14+)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
====+Max Delay:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Defines the maximum amount of time it takes to refire a weapon in a random fire delay range.&lt;br /&gt;
**This must be used with +Min Delay: to have any effect.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
====+Min Delay:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Defines the minimum amount of time it takes to refire a weapon in a random fire delay range.&lt;br /&gt;
**This must be used with +Max Delay: to have any effect.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
===$Damage:===&lt;br /&gt;
*Base damage this weapon does. The actual damage is this number multiplied by the factors below.&lt;br /&gt;
*Base damage this beam does is continuous damage, damage is 5.5 times the damage value per second. The actual damage is this number multiplied by one of the factors below.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage&lt;br /&gt;
*Note: adding a shockwave to a weapon doubles its effective damage to the target (i.e. 1x impact, 1x shockwave)&lt;br /&gt;
&lt;br /&gt;
===$Damage Time:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*This sets a time from the end of the weapons lifetime that damage will start to attenuate at. &#039;&#039;&#039;&#039;&#039;Example: Weapon lifetime is 2.0 seconds and the desired effect is to attenuate after 0.5 seconds have passed, set this to 1.5 seconds.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds. Defaults to 0.0.&lt;br /&gt;
**Note: If neither +Min Damage: nor +Max Damage: is set, the damage will always attenuate to zero at max range.&lt;br /&gt;
***If both +Min Damage: and +Max Damage: are set, both are defaulted to 0.0 and damage will be attenuated to zero.}}&lt;br /&gt;
&lt;br /&gt;
====+Attenuation Damage:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*This sets the damage a weapon will attenuate to after reaching $Damage Time:.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage.}}&lt;br /&gt;
&lt;br /&gt;
====+Min Damage:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*This sets the lowest amount of damage possible assuming damage attenuation is taking place. &#039;&#039;&#039;&#039;&#039;This has been deprecated, please use +Attenuation Damage: instead.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage. Defaults to 0.0.}}&lt;br /&gt;
&lt;br /&gt;
====+Max Damage:====&lt;br /&gt;
{{Table373|&lt;br /&gt;
*This sets the highest amount of damage possible assuming damage attenuation is taking place. &#039;&#039;&#039;&#039;&#039;This has been deprecated, please use +Attenuation Damage: instead.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage. Defaults to 0.0.}}&lt;br /&gt;
&lt;br /&gt;
===$Damage Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
Defines the damage type that this weapon uses. All armor effects are applied after shield and have no function against shockwave or subsystem damage.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;REQUIRES:&#039;&#039;&#039; [[armor.tbl]]&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the damage type ( as defined by [[armor.tbl#$Damage Type:|$Damage Type]] )}}&lt;br /&gt;
&lt;br /&gt;
===$Arm time:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the time after the launch that is required before the weapon comes hot&lt;br /&gt;
*If the time has not been reached when the weapon detonates the Dinky explosion is used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Arm distance:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the distance from the firing ships that is required before the weapon comes hot&lt;br /&gt;
*If the distance has not been reached when the weapon detonates the Dinky explosion is used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*This parameter is also applied to flak weapons. Previous behaviour was to arm weapons after 10 meters of travel.}}&lt;br /&gt;
&lt;br /&gt;
===$Arm radius:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the distance from the target where the weapon will arm itself&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
===$Detonation Range:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the distance from the point in space that the weapon was launched where the weapon will detonate&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Detonation Radius:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the distance between the target center point point and the weapon which detonates the weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave damage:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Override for the damage caused by shockwaves (default is [[#$Damage:]])&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage&lt;br /&gt;
*Note: adding a shockwave to a weapon doubles its effective damage to the target (i.e. 1x impact, 1x shockwave)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Shockwave Damage Type:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;REQUIRES ADDITIONAL TABLE&#039;&#039;&#039;. Defines the damage type used for the weapon explosions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name as defined in [[armor.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
===$Flak Detonation Accuracy:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Normally, flak weapons detonate at a range of 65 to 99 meters from their intended target, depending on the firing ships&#039; weapon subsystem health. This parameter can be used to adjust this behaviour, as it defines the base range used to determine this detonation range. Standard value is 65.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, range in meters}}&lt;br /&gt;
&lt;br /&gt;
===$Flak Targeting Accuracy:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Turret-fired flak weapons are normally firing in a cone around the target&#039;s predicted position. This parameter can be used to adjust the size of this cones&#039; base radius. Standard is 60 meters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, radius in meters}}&lt;br /&gt;
&lt;br /&gt;
===$Untargeted Flak Range Penalty:===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*If a flak weapon is fired without a target selected, this parameter defines the range penalty applied to that weapon. Standard is 20 meters, meaning an untargeted flak weapon will detonate after travelling its max range - 20 meters.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, penalty in meters.}}&lt;br /&gt;
&lt;br /&gt;
===$Blast Force:===&lt;br /&gt;
*The intensity of the kinetic blast effect when ship is within the outer radius of the explosion. Comes in effect only if inner and outer radius are defined.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, blast effect&lt;br /&gt;
&lt;br /&gt;
===$Inner Radius:===&lt;br /&gt;
*Radius at which the full explosion damage is done. Marks the line where damage attenuation begins. Damage is reduced by the square of the distance between the inner radius and outer radius.  i.e. half way between inner and outer results in 1/4 damage&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
===$Outer Radius:===&lt;br /&gt;
*Maximum radius at which any damage is done.  See $Inner Radius for the attenuation formula.&lt;br /&gt;
*Also defines the size of the shockwave (if shockwave speed is &amp;gt; 0)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
===$Shockwave Speed:===&lt;br /&gt;
*Speed shockwave expands at. Zero means no shockwave and that damage is applied immediately&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave rotation:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines how the 3D shockwave is rotated.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Angle&#039;&#039;&#039;&#039;&#039;, three values, pitch, bank, heading respectively, in degrees}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave model:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the model file (.pof) used as a shockwave for the 3D shockwaves.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shockwave name:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the name of the animation used for the 2D shockwave&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Dinky shockwave:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Dinky shockwave are used if the weapon is shot down before arming or if the conditions marked at &#039;&#039;&#039;Arm time&#039;&#039;&#039; and &#039;&#039;&#039;Arm distance&#039;&#039;&#039; are not reached before impact&lt;br /&gt;
*It uses exactly same entries as the standard shockwaves&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave damage:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave damage type:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Blast Force:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Inner Radius:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Outer Radius:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave Speed:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave Rotation:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave Model:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;+Shockwave Name:&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Armor Factor:===&lt;br /&gt;
*Multiplier for the damage done to armor&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage multiplier&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shield Factor:===&lt;br /&gt;
*Multiplier for the damage done to shields&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage multiplier&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Subsystem Factor:===&lt;br /&gt;
*Multiplier for the damage done to subsystems&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, damage multiplier&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Lifetime Min:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the minimum lifetime of the weapon&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Lifetime Max:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the maximum lifetime of the weapon&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Lifetime:===&lt;br /&gt;
*Time before the standard primaries fizzle out and secondaries self destruct. Multiply this by the speed to get the range. If values are too low (below framerate) then the collision detection and graphic effects may suffer.&lt;br /&gt;
*This field has no effect for the beams apart from weapon range and AI beam targeting with certain beam types&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Energy Consumed:===&lt;br /&gt;
*The amount of energy each bolt drains firing ship. Has no effect on turretted weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Cargo Size:===&lt;br /&gt;
*Cargo size, is not used with non-ballistic primaries.&lt;br /&gt;
*Amount of missiles available = Bank capacity / Cargo Size.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$Homing:===&lt;br /&gt;
&#039;&#039;&#039;This option is exclusive to secondaries.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Defines if the bolts/missiles in question is homing&lt;br /&gt;
*The bolts of primaries will turn to face their target if this option is set to YES... but is otherwise the same as a normal bolt ( when the option is set to NO ).&lt;br /&gt;
&lt;br /&gt;
If set to NO, then following fields are not required in the table.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, yes or no&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Type:&#039;&#039;&#039;====&lt;br /&gt;
Defines the homing method&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, &#039;&#039;ASPECT&#039;&#039; or &#039;&#039;HEAT&#039;&#039;&lt;br /&gt;
{{Table3610| An additional option, &#039;&#039;JAVELIN&#039;&#039;, has been added.  This behaves like an aspect missile but automatically only locks onto the engines of a target, and only if the engines are in sight.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Turn Time:&#039;&#039;&#039;====&lt;br /&gt;
Determines how well the missile maneuvers. Is defined as the number of seconds it takes the missile to do a 360 degree circle&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+View Cone:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;Heat-seeking missiles only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the width of the weapon&#039;s viewing cone, given in degrees. Objects outside this cone are effectively invisible to the missile. The value / 2 gives the angle from the missile&#039;s centerline to the edge of the viewing cone.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, degrees&lt;br /&gt;
{{Table3610| Has been enabled also to aspect seekers as an option.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Min Lock Time:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;For aspect/javelin missiles only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The minimum number of seconds to gain a target lock.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Lock Pixels/Sec:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;For aspect/javelin missiles only&#039;&#039;&#039;&lt;br /&gt;
The number of pixels the aspect triangle moves per second while attempting lock-on.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, pixels per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Catch-up Pixels/Sec:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;For aspect/javelin missiles only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The number of pixels moved per second while attempting to catch up to the target.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, pixels per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Catch-up Penalty:&#039;&#039;&#039;====&lt;br /&gt;
&#039;&#039;&#039;For aspect/javelin missiles only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Extra pixels to move after catching up. (Needs verification )&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, pixels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Seeker Strength:&#039;&#039;&#039;====&lt;br /&gt;
{{Table3610|&lt;br /&gt;
Defines the seeking ability of the homing system. Default of heat seekers is 3.0 and for aspect seekers 2.0. Spoofing chance is defined as &#039;&#039;&#039;[[#$Countermeasure:|cm type effectiveness]]&#039;&#039;&#039;/&#039;&#039;&#039;seeker strength&#039;&#039;&#039; (missile must be within the countermeasures &#039;&#039;&#039;[[#$Countermeasure:|+Effective Radius:]]&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seeker strength}}&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Target Lead Scaler:&#039;&#039;&#039;====&lt;br /&gt;
{{Table3611|&lt;br /&gt;
Defines the type of pursuit course the missile tries to obtain.&lt;br /&gt;
*Values &amp;lt; 0 give lag pursuit, values ~ 0 give pure pursuit, values &amp;gt; 0 give lead pursuit.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, default for heat seekers: 0, default for aspect or javelin seekers: 1.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Swarm:===&lt;br /&gt;
*The number of missiles to fire per volley if it&#039;s a swarm missile&lt;br /&gt;
*Can be issued to Standard primaries also. Causes single part turrets to malfunction but causes multi part turrets to fire only on their barrel line. Can be used for &#039;burst fire weapons&#039;. Does not work with player weapons.&lt;br /&gt;
*Is incompatible with &amp;quot;Corkscrew&amp;quot; option.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of shots in a swarm&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+SwarmWait:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time between weapons fired in a swarm&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
***Default: 0.150&lt;br /&gt;
***Max: 0.5 (Resets to default if set over 0.5)}}&lt;br /&gt;
&lt;br /&gt;
===$Acceleration Time::===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines how long it takes for a secondary weapon to attain full speed. Takes precedence over $Free Flight Time (see below) in terms of the weapon&#039;s velocity, and affects both locked-on and dumbfired secondaries.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
**Default: 0.0}}&lt;br /&gt;
&lt;br /&gt;
===$Velocity Inherit::===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Defines how much of the parent ship&#039;s velocity to inherit, if [[Ai_profiles.tbl#.24use_additive_weapon_velocity:]] is used.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, percents&lt;br /&gt;
**Default: 100.0}}&lt;br /&gt;
&lt;br /&gt;
===$Free Flight Time:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the free flight time of homing weapons. During this time weapon flies at 1/4 of its velocity + firing ships velocity in a straight line.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
**Default: 0.25}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; due to dumbfires never changing their speed, using this on a dumbfire missile will have it stuck at freeflight speed even after the end of the freeflight time.&lt;br /&gt;
&lt;br /&gt;
===$Free Flight Speed:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the speed that the weapon will be travelling at during the free flight segment (see above).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, Multiplier for the actual speed, minimum 0.01.&lt;br /&gt;
**Default: 0.25&lt;br /&gt;
{{Note| This feature was never implemented correctly and was removed in r8867. FSO currently parses but doesn&#039;t use the value, and prints a warning in the log saying that the value will not be used.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$PreLaunchSnd:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines the one-shot sound effect to play at the beginning of a firing stream. Currently only has an effect on primary weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
**Default: No Sound}}&lt;br /&gt;
&lt;br /&gt;
===+PreLaunchSnd Min Interval:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Defines  Minimum interval between when the player stops firing and the next time the pre-launch sound can play, as a limiter in case the player is pumping the trigger.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, Minimum delay in milliseconds between the end of the previous firing sequence and the next time the pre-launch sound effect will be played.&lt;br /&gt;
**Default: 0 (play pre-launch sound at the beginning of every firing sequence, if present)}}&lt;br /&gt;
&lt;br /&gt;
===$LaunchSnd:===&lt;br /&gt;
*Corresponding sound effect when the weapon is launched.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$ImpactSnd:===&lt;br /&gt;
*Sound the weapon makes when it hits a hull.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Disarmed ImpactSnd:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Sound the weapon makes when it hits a hull before being armed.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$FlyBySnd:===&lt;br /&gt;
*The sound this weapon makes if it narrowly misses you. -1 is no sound.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]], usually -1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$TrackingSnd===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*The looping sound played when this weapon tracks a target.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$LockedSnd===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*The sound played when this weapon has locked onto its target.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$InFlightSnd===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*The looping sound played when the missile is currently flying.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+Inflight sound type&#039;&#039;&#039;&lt;br /&gt;
**Specifies when the in flight sound is played.&lt;br /&gt;
**The value can be one of the following values which are matched case-insensitively:&lt;br /&gt;
***&#039;&#039;&#039;&#039;&#039;&#039;TARGETED&#039;&#039;&#039;&#039;&#039;&#039;: The sound is played when the missile tracks a target&lt;br /&gt;
***&#039;&#039;&#039;&#039;&#039;&#039;UNTARGETED&#039;&#039;&#039;&#039;&#039;&#039;: The sound is played when the missile is currently not tracking a target&lt;br /&gt;
***&#039;&#039;&#039;&#039;&#039;&#039;ALWAYS&#039;&#039;&#039;&#039;&#039;&#039;: The sound is played always}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Model:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines used model file. Included for compatibility with countermeasures as they have been merged with weapons in the code.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Rearm Rate:===&lt;br /&gt;
*Defines the rate the weapons are loaded to the ship&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, missiles loaded per second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Weapon Range:===&lt;br /&gt;
*Defines the range to the target where the weapons under AI will start firing.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===+Weapon Min Range:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the minimum range to the target where the weapons under AI will still fire.&lt;br /&gt;
*Implemented before FS_Open 3.6.5&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Flags:===&lt;br /&gt;
*See [[Weapons.tbl#Weapons.tbl_Flags|below]]&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;( &amp;quot;String&amp;quot; &amp;quot;String&amp;quot; )&#039;&#039;&#039;&#039;&#039;, names of the flags assigned to the weapon&lt;br /&gt;
**Example: ( &amp;quot;Player allowed&amp;quot; &amp;quot;in tech database&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Can be followed by &#039;&#039;&#039;+override&#039;&#039;&#039; option in order to reset the weapon flags before parsing in the new ones&lt;br /&gt;
*Using this option will erase all &#039;&#039;&#039;homing&#039;&#039;&#039;-related flags as well as &#039;&#039;&#039;swarm&#039;&#039;&#039;, &#039;&#039;&#039;variable lead&#039;&#039;&#039;, &#039;&#039;&#039;trail&#039;&#039;&#039;, &#039;&#039;&#039;TAG&#039;&#039;&#039;, and &#039;&#039;&#039;transparent&#039;&#039;&#039; settings in addition to the listed flags. All these should be set again - if they are required - when this option is used.&lt;br /&gt;
&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;+override&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Trail:===&lt;br /&gt;
*This is used if you want your weapon to have a trail. Trail is often used only with secondaries though it works with standard primaries as well.&lt;br /&gt;
*&#039;&#039;&#039;+Start Width:&#039;&#039;&#039;&lt;br /&gt;
**How wide the head of the trail is.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+End Width:&#039;&#039;&#039;&lt;br /&gt;
**How wide the tail of the trail is.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Start Alpha:&#039;&#039;&#039;&lt;br /&gt;
**The opacity of the trail head.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value between 0 and 1&lt;br /&gt;
*&#039;&#039;&#039;+End Alpha:&#039;&#039;&#039;&lt;br /&gt;
**The opacity of the trail tail.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value between 0 and 1&lt;br /&gt;
*&#039;&#039;&#039;+Max Life:&#039;&#039;&#039;&lt;br /&gt;
**How long the trail lasts.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
*&#039;&#039;&#039;+Bitmap:&#039;&#039;&#039;&lt;br /&gt;
**The graphic file to use for the trail.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*&#039;&#039;&#039;+Faded Out Sections:&#039;&#039;&#039;&lt;br /&gt;
**Defines the number of the trail sections (counting from the leading edge) which are gradually faded out.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of trail sections}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Icon:===&lt;br /&gt;
*Loadout icon used in the weapons selection screen.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Anim:===&lt;br /&gt;
*Green grid animation used on the weapons screen.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Collide Ship:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Has been replaced with &#039;&#039;&#039;#Conditional Hooks&#039;&#039;&#039;, see [[Scripting.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Collide Weapon:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Has been replaced with &#039;&#039;&#039;#Conditional Hooks&#039;&#039;&#039;, see [[Scripting.tbl]]}}&lt;br /&gt;
&lt;br /&gt;
===$Impact Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the [[Particle Effects|particle effect]] which will be used for impacts of this weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*If this option is specified then &#039;&#039;$Impact Explosion&#039;&#039; and &#039;&#039;$Impact Explosion Radius&#039;&#039; are not valid options!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Impact Explosion:===&lt;br /&gt;
*Impact explosion used. Must be defined in weapon_expl.tbl,&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename or &#039;&#039;none&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Impact Explosion Radius:===&lt;br /&gt;
*Radius of the defined impact explosion.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters, default 1.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shield Impact Explosion Radius:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Radius of the shield impact explosion, see [[Ships.tbl#.24Shield_Impact_Explosion:]].&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters, defaults to value of $Impact Explosion Radius}}&lt;br /&gt;
&lt;br /&gt;
===$Dinky Impact Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the [[Particle Effects|particle effect]] which will be used for Dinky (not armed) explosions of this weapon.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*If this option is specified then &#039;&#039;$Dinky Impact Explosion&#039;&#039; and &#039;&#039;$Dinky Impact Explosion Radius&#039;&#039; are not valid options!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Dinky Impact Explosion:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Same as Impact Explosion but for Dinky (not armed) explosions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename or &#039;&#039;none&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Dinky Impact Explosion Radius:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Same as Impact Explosion Radius but for Dinky explosions&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Specifies the [[Particle Effects|particle effect]] which will be used for piercing impacts.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*If this option is specified then piercing impact options below are not valid!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Explosion:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the effect used for events when weapon pierces the target&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename or &#039;&#039;none&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Radius:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the base radius of the effect used for piercing weapon impacts&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Velocity:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the base velocity for the particles piercing the target&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Splash Velocity:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the base velocity for the particles splashing from the target (secondary piercing effects&lt;br /&gt;
*Negative value causes the second batch or particles to splash to opposite direction&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Variance:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the variance added to the particles&lt;br /&gt;
*Values near 0 cause very little variance and values close to 1 cause extreme dispersal.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Life:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the lifetime of the effect for single frame effects&lt;br /&gt;
*For multiple frame effects the lifetime is the lifetime of the animation used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Particles:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the number of particles released per impact&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Piercing Impact Draw Modifier:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the multiplier applied to the ships piercing effect limit percentage&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
*Option removed in 3.6.12. Use [[armor.tbl]] to finetune piercing effects.&lt;br /&gt;
&lt;br /&gt;
===$Inflight Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the inflight [[Particle Effects|particle effect]] which is used when the laser is active. This is only used by laser weapons.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
}}&lt;br /&gt;
===$Freeflight Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the [[Particle Effects|particle effect]] which is used when the missile is in the free flight phase. See [[#$Free Flight Time:|$Free Flight Time]] for more information.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*This option is only valid for missile weapons&lt;br /&gt;
}}&lt;br /&gt;
===$Ignition Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the ignition [[Particle Effects|particle effect]] which is used when the missile is transitioning from free flight to homed or unhomed flight.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*This option is only valid for missile weapons&lt;br /&gt;
}}&lt;br /&gt;
===$Homed Flight Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the ignition [[Particle Effects|particle effect]] which is used when the missile is in homed flight mode.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*This option is only valid for missile weapons&lt;br /&gt;
}}&lt;br /&gt;
===$Unhomed Flight Effect:===&lt;br /&gt;
{{Table38|&lt;br /&gt;
*Sets the ignition [[Particle Effects|particle effect]] which is used when the missile is in unhomed flight mode.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, the particle effect name&lt;br /&gt;
*This option is only valid for missile weapons&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Muzzleflash:===&lt;br /&gt;
*Normally only with flak cannons.&lt;br /&gt;
*Defines the muzzle flash the weapon uses&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, muzzleflash name, as defined in [[mflash.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$EMP Intensity:===&lt;br /&gt;
*If it has an EMP effect, how deeply it scrambles your electronics&lt;br /&gt;
*Basically a percentage, a value of 250 results in a 25% chance of something getting scrambled each frame. &lt;br /&gt;
*Maximum value of 500&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===$EMP Time:===&lt;br /&gt;
**Duration of the EMP effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
===$Recoil Modifier:===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Multiplies the recoil force of a weapon by this value, use a value greater than 1.0 to increase the force, use a value between 1.0 and 0.0 to decrease.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (defaults to 1.0)&lt;br /&gt;
{{Note| The &amp;quot;apply recoil&amp;quot; weapon flag must be set for this to be valid. If the flag is not set, FSO will throw a warning and automatically set it at runtime.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Leech Weapon:===&lt;br /&gt;
**The amount of weapon energy to drain with each hit (a flat value, not a percentage)&lt;br /&gt;
**Needs the [[#Esuck|Esuck]] flag set to have any effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (defaults to 10.0)&lt;br /&gt;
&lt;br /&gt;
===$Leech Afterburner:===&lt;br /&gt;
**The amount of afterburner fuel to drain with each hit (a flat value, not a percentage)&lt;br /&gt;
**Needs the [[#Esuck|Esuck]] flag set to have any effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039; (defaults to 10.0)&lt;br /&gt;
&lt;br /&gt;
===$Corkscrew:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Allow corkscrew parameters to be defined&lt;br /&gt;
*&#039;&#039;&#039;+Num Fired:&#039;&#039;&#039;&lt;br /&gt;
**Defines the number of weapons fired in sequence. Same as the standard swarm entry but for corkscrew missiles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of missiles&lt;br /&gt;
*&#039;&#039;&#039;+Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the radius used in the corkscrew motion&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Fire Delay:&#039;&#039;&#039;&lt;br /&gt;
**Defines the delay between missile firings&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Counter rotate:&#039;&#039;&#039;&lt;br /&gt;
**Defines if every other missile rotates to a different direction (clockwise / anticlockwise)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;, &#039;&#039;0&#039;&#039; or &#039;&#039;1&#039;&#039;, no or yes&lt;br /&gt;
*&#039;&#039;&#039;+Twist:&#039;&#039;&#039;&lt;br /&gt;
**Defines the speed of rotation movement on the radius of corkscrew motion.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, radians per second}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Electronics:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapons effect against electronics. Requires [[weapons.tbl#&amp;quot;Electronics&amp;quot;|&amp;quot;electronics&amp;quot;]] flag. &#039;&#039;&#039;+New Style:&#039;&#039;&#039; and &#039;&#039;&#039;+Old Style:&#039;&#039;&#039; options are mutually exclusive.&lt;br /&gt;
*&#039;&#039;&#039;+New Style:&#039;&#039;&#039;&lt;br /&gt;
**Defines that the electronics use the new style which enables more options.&lt;br /&gt;
*&#039;&#039;&#039;+Old Style:&#039;&#039;&#039;&lt;br /&gt;
**Defines that the electronics use the old style.  The old style was the way the D-Missile worked in Descent: FreeSpace.&lt;br /&gt;
}}&lt;br /&gt;
{{Table371|&lt;br /&gt;
*&#039;&#039;&#039;+Area Of Effect&#039;&#039;&#039;&lt;br /&gt;
**If specified, allows the electronics effect to apply to every ship hit by this weapon&#039;s blast or shockwave (the &amp;quot;Electronics&amp;quot; flag isn&#039;t necessary with this option).&lt;br /&gt;
}}&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Intensity:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. &#039;&#039;&#039;&#039;&#039;Has been deprecated&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Lifetime:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Engine Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. Defines how much longer the disruption effect lasts for engine subsystems.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Weapon Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. Defines how much longer the disruption effect lasts for non-beam turrets.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Turret Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. Defines how much longer the disruption effect lasts for beam turrets.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Sensors Multiplier:&#039;&#039;&#039;&lt;br /&gt;
**May only be used with &#039;&#039;&#039;+New Style:&#039;&#039;&#039; electronics. Defines how much longer the disruption effect lasts for sensor subsystems.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Randomness Time:&#039;&#039;&#039;&lt;br /&gt;
**Defines the randomness of duration target suffers from the electronics hit. A random number between 0 and this time will be added or subtracted from the disruption time.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
&lt;br /&gt;
* Without any electronics parameters, a weapon with the &amp;quot;electronics&amp;quot; flag will default to the &#039;&#039;Old Style&#039;&#039; mode with a lifetime of 6000 milliseconds and a randomness of 4000 milliseconds.  Thus any ship that gets hit can get disrupted for anywhere between 2 to 10 seconds.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Spawn Angle:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the cone (with an angle) where the spawned weapons appear. &#039;&#039;Value&#039;&#039; gives the angle from the missiles centerline.  The maximum possible angle between any two child weapons would be &#039;&#039;Value*2&#039;&#039;.&lt;br /&gt;
*Spawn angle can be defined as many times as the carrier missile has child weapons defined for it (up to 5).&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, degrees}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Local SSM:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the local SSM (Subspace Missile). In effect missile moves via subspace to a position close to the target and starts homing.&lt;br /&gt;
*Weapon must be &#039;&#039;&#039;&#039;&#039;aspect seeking missile&#039;&#039;&#039;&#039;&#039; and must have &#039;&#039;&#039;&#039;&#039;[[Weapons.tbl#&amp;quot;local ssm&amp;quot;|local ssm]]&#039;&#039;&#039;&#039;&#039; flag.&lt;br /&gt;
*&#039;&#039;&#039;+Warpout Delay:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time between the missile launch and the subspace jump.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Warpin Delay:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time missile stays in subspace before exiting.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Stage 5 Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Defines the velocity of the missile after the subspace jump.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters per second&lt;br /&gt;
*&#039;&#039;&#039;+Warpin Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines how far from the SSM will appear from the outer radius of the target.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Lock Range:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum range where SSM can achieve target lock&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Countermeasure:===&lt;br /&gt;
&lt;br /&gt;
*Defines the countermeasure effectiveness, radius, etc&lt;br /&gt;
{{note| &lt;br /&gt;
*Spoofing chance is defined as &#039;&#039;&#039;cm type effectiveness&#039;&#039;&#039;/&#039;&#039;&#039;[[#+Seeker Strength:|seeker strength]]&#039;&#039;&#039; (missile must be within the countermeasures &#039;&#039;&#039;+Effective Radius:&#039;&#039;&#039;).&lt;br /&gt;
*All countermeasures in the mission perform tests to spoof missiles for two frames after &#039;&#039;&#039;any countermeasure&#039;&#039;&#039; is created in the mission. No, this doesn&#039;t seem to make much sense.&lt;br /&gt;
*&#039;&#039;&#039;Provisional&#039;&#039;&#039;; Countermeasures are only given one chance to spoof any individual missile. This makes tuning seeker strength/effectiveness meaningful.&lt;br /&gt;
**Previously some record of which countermeasures had been seen by each missile was kept, but it broke when multiple countermeasures were involved. A good chance of breaking with two countermeasures, and a guaranteed chance of breaking with three or more. This reduced the impact of the seeker strength/effectiveness ratio, but was partly cancelled out by the 2 frames thing.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table3610|&lt;br /&gt;
====&#039;&#039;&#039;+Heat Effectiveness:&#039;&#039;&#039;====&lt;br /&gt;
*Defines the countermeasures effectiveness against heat seeking missiles&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, cm effectiveness&lt;br /&gt;
**Default: 1.0&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Aspect Effectiveness:&#039;&#039;&#039;====&lt;br /&gt;
*Defines the countermeasures effectiveness against aspect seeking missiles&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, cm effectiveness&lt;br /&gt;
*Default: 1.0&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;+Effective Radius:&#039;&#039;&#039;====&lt;br /&gt;
*Defines the countermeasures effective radius&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
**Default: 300.0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Table373|&lt;br /&gt;
====+Missile Detonation Radius:====&lt;br /&gt;
*Defines the radius within which a missile homing on this countermeasure will trigger a detonation (see &#039;&#039;&#039;+Single Missile Kill:&#039;&#039;&#039;)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
**Default: 40.0&lt;br /&gt;
{{note| only affects missiles homing on countermeasures, i.e. heat or aspect with &amp;quot;pulls aspect seekers&amp;quot; flag}}&lt;br /&gt;
====+Single Missile Kill:====&lt;br /&gt;
*Defines if countermeasures will detonate only the missile homing on this countermeasure, or every missile within &#039;&#039;&#039;+Missile Detonation Radius:&#039;&#039;&#039;&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Boolean&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
**Default: false&lt;br /&gt;
{{note| only affects missiles homing on countermeasures, i.e. heat or aspect with &amp;quot;pulls aspect seekers&amp;quot; flag}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$BeamInfo:===&lt;br /&gt;
*&#039;&#039;&#039;+Type:&#039;&#039;&#039;&lt;br /&gt;
**Defines the type of beam in question. Beam types: 0 is a standard non-slashing type beam. 1 is a slashing type beam. 2 is a targeting beam that is used to trigger SSMs. 3 is a beam type that fires pulses in anti-fighter role and acts like type 0 beam in other roles. 4 is a beam that is restricted to what is directly in front of it, along turrets firepoints normal.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;,, only values from 0 to 4 are legal&lt;br /&gt;
*&#039;&#039;&#039;+Life:&#039;&#039;&#039;&lt;br /&gt;
**How long it lasts once the beam is actually firing.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
*&#039;&#039;&#039;+Warmup:&#039;&#039;&#039;&lt;br /&gt;
**Warmup time&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Warmdown:&#039;&#039;&#039;&lt;br /&gt;
**Warmdown time&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Radius:&#039;&#039;&#039;&lt;br /&gt;
**Muzzle glow radius&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+PCount:&#039;&#039;&#039;&lt;br /&gt;
**Particles spewed every interval. ??&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+PRadius:&#039;&#039;&#039;&lt;br /&gt;
**Particle radius&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+PAngle:&#039;&#039;&#039;&lt;br /&gt;
**Defines the random &amp;quot;cone&amp;quot; where the particles are generated&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, angle of the cone&lt;br /&gt;
*&#039;&#039;&#039;+PAni:&#039;&#039;&#039;&lt;br /&gt;
**Animation used to represent the particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+Miss Factor:&#039;&#039;&#039;&lt;br /&gt;
**The higher the numbers, the more likely that this beam will miss. One value for every difficulty level&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Miss Factor&#039;&#039;&#039;&#039;&#039;, five &#039;&#039;&#039;floats&#039;&#039;&#039;, very easy, easy, moderate, hard, insane, respectively.&lt;br /&gt;
***Example: 0.5 0.975 1.35 1.875 2.5&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;IFF specific miss factors&#039;&#039;&#039;&lt;br /&gt;
**Identical to the preceding entry but IFF specific. Replace the &amp;lt;IFF&amp;gt; with the name of the IFF from [[iff_defs.tbl]]&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;+&amp;lt;IFF&amp;gt; Miss Factor:&#039;&#039;&#039;&#039;&#039;, five &#039;&#039;&#039;floats&#039;&#039;&#039;, very easy, easy, moderate, hard, insane, respectively.&lt;br /&gt;
***Example: 0.5 0.975 1.35 1.875 2.5}}&lt;br /&gt;
*&#039;&#039;&#039;+BeamSound:&#039;&#039;&#039;&lt;br /&gt;
**Corresponding looping sound effect when the beam is firing.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+WarmupSound:&#039;&#039;&#039;&lt;br /&gt;
**Corresponding sound effect when the beam is beam warmed up.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+WarmdownSound:&#039;&#039;&#039;&lt;br /&gt;
**Corresponding sound effect when the beam is warming down.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
*&#039;&#039;&#039;+Muzzleglow:&#039;&#039;&#039;&lt;br /&gt;
**Defines the bitmap used to create the muzzle glow&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+Shots:&#039;&#039;&#039;&lt;br /&gt;
**Defines into how may invidual shots the type 3 (AAA) beams are divided. Note total firing is the same as the +Life:&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+ShrinkFactor:&#039;&#039;&#039;&lt;br /&gt;
**What percentage of lifetime where beam starts shrinking (0.1 == 10% life left)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+ShrinkPct:&#039;&#039;&#039;&lt;br /&gt;
**What percentage of max width we subtract per second&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Range:&#039;&#039;&#039;&lt;br /&gt;
**Defines the maximum range where the beam still has any effect.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Attenuation:&#039;&#039;&#039;&lt;br /&gt;
**Defines the point where the damage caused by the beam starts to attenuate. At maximum range damage is zero.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, from 0 - firing point to 1 - no effect&lt;br /&gt;
***Default: 1}}&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*&#039;&#039;&#039;+BeamWidth:&#039;&#039;&#039;&lt;br /&gt;
**Defines the width of the beam for collision test purposes instead of using widest beam section.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&lt;br /&gt;
{{Table38|&lt;br /&gt;
*&#039;&#039;&#039;+Beam Flash Particle Effect:&#039;&#039;&#039;&lt;br /&gt;
**Specifies the beam flash [[Particle Effects|particle effect]].&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, particle effect name&lt;br /&gt;
**If this is specified then &#039;&#039;&#039;+Beam Flash Effect&#039;&#039;&#039; and &#039;&#039;&#039;+Beam Flash Radius&#039;&#039;&#039; are not valid options!&lt;br /&gt;
}}&lt;br /&gt;
*&#039;&#039;&#039;+Beam Flash Effect:&#039;&#039;&#039;&lt;br /&gt;
**Defines the additional impact flash effect for the beam.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+Beam Flash Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the radius for the additional impact flash effect.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Effect:&#039;&#039;&#039;&lt;br /&gt;
**Defines the beam piercing (bursting flames) effect for the beam.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the average radius used for the beam piercing effects.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Effect Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Defines the base velocity for the piercing effects&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Splash Effect Velocity:&#039;&#039;&#039;&lt;br /&gt;
**Defines the base velocity for the secondary piercing effects&lt;br /&gt;
**Negative velocity causes the particles to move to opposite direction&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Beam Piercing Effect Variance:&#039;&#039;&#039;&lt;br /&gt;
**Defines the variances of the particles from the main path&lt;br /&gt;
**Values close to 0 cause minimum variance, higher values cause higher variances&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;$Section:&#039;&#039;&#039;&lt;br /&gt;
**Beams are made up of up to five sections layered atop one another to create the effect. Each section has its own parameters.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
:*&#039;&#039;&#039;+Index:&#039;&#039;&#039;&lt;br /&gt;
:**Field used to define with [[Modular Tables]] the beam section which is edited.&lt;br /&gt;
:**Only needed when editing beams that already exist in other tables.&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, index number legal values are from 0 to 5&lt;br /&gt;
:*&#039;&#039;&#039;+remove&#039;&#039;&#039;&lt;br /&gt;
:**Removes the set beam section.&lt;br /&gt;
:*&#039;&#039;&#039;+nocreate&#039;&#039;&#039;&lt;br /&gt;
:**Does not create new section for the beam}}&lt;br /&gt;
&lt;br /&gt;
:*&#039;&#039;&#039;+Width:&#039;&#039;&#039;&lt;br /&gt;
:**Width of the section&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
:*&#039;&#039;&#039;+Texture:&#039;&#039;&#039;&lt;br /&gt;
:**Texture for the section&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
:*&#039;&#039;&#039;+RGBA Inner:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the color and transparency of the center of the section&lt;br /&gt;
{{Table3613|:**Not used in current builds. Settings entered here will have no effect.}}&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue, alpha, respectively, value from 0 to 255&lt;br /&gt;
:***Example: 255 255 255 255&lt;br /&gt;
:*&#039;&#039;&#039;+RGBA Outer:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the color and transparency of the edges of the section&lt;br /&gt;
{{Table3613|:**Not used in current builds. Settings entered here will have no effect.}}&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Color&#039;&#039;&#039;&#039;&#039;, red, green, blue, alpha, respectively, value from 0 to 255&lt;br /&gt;
:***Example: 150 150 150 10&lt;br /&gt;
:*&#039;&#039;&#039;+Flicker:&#039;&#039;&#039;&lt;br /&gt;
:**Defines how much the section flickers&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, value from 0 to 1&lt;br /&gt;
:*&#039;&#039;&#039;+Zadd:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the &#039;thickness&#039; of the section. The higher the Zadd, the closer the section appears to be.&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
{{Table3610|&lt;br /&gt;
:*&#039;&#039;&#039;+Tile Factor:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the beam texture tiling factor. Second number defines the tiling type. Type 0 tiles the graphic in the beam as many times as defined by the 1st number. Type 1 uses the 1st value as the lenght of the tile.&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:*&#039;&#039;&#039;+Translation:&#039;&#039;&#039;&lt;br /&gt;
:**Defines the speed of translation of the beam, a positive value moves from the impact point to the firing point, while a negative value moves away from the firing point towards the impact point. Measured in tiles per second, where the tile count is defined in the &amp;quot;+Tile Factor:&amp;quot; field above.&lt;br /&gt;
:**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Pspew:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines a particle spew effect for the given weapon&lt;br /&gt;
}}{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;+Index:&#039;&#039;&#039;&lt;br /&gt;
**indicates which spewer to add/edit/delete. may be 0-3. used for xmt compatibility.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Remove&#039;&#039;&#039;&lt;br /&gt;
**removes spewer at +Index: (requires +index:)&lt;br /&gt;
*&#039;&#039;&#039;+Type:&#039;&#039;&#039;&lt;br /&gt;
**type of particle spew&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;, Default, Helix, Sparkler, Ring, or Plume &#039;&#039;&#039;&lt;br /&gt;
}}{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Count:&#039;&#039;&#039;&lt;br /&gt;
**Defines how many particles are spawn when they are ready to be created (at each +Time: interval)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Time:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time in milliseconds between next particle(s) spewed&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds&lt;br /&gt;
*&#039;&#039;&#039;+Vel:&#039;&#039;&#039;&lt;br /&gt;
**Defines the created particles velocity as percentage of the weapons velocity&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the size of the created particles&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+Life:&#039;&#039;&#039;&lt;br /&gt;
**Defines how long the particles last.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
*&#039;&#039;&#039;+Scale:&#039;&#039;&#039;&lt;br /&gt;
**Defines the particle spread. Small value will make particles group together&lt;br /&gt;
**typically controls how big the effect is or how fast it moves away from the weapon path on a perpendicular (or sometimes arbitrary) axis. &lt;br /&gt;
**helical spews and rings use this value to control how fast the particle helix moves away from the central axis.&lt;br /&gt;
**sparklers use this to control how fast particles move away from the spawn point, in any direction&lt;br /&gt;
**plumes use this to set the diameter of the disk across which particles are spawned&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}{{Table3613|&lt;br /&gt;
*&#039;&#039;&#039;+Z Scale:&#039;&#039;&#039;&lt;br /&gt;
**for sparklers, allows you to elongate the effect to surround other effects, like lasers. essentially a length multiplier&lt;br /&gt;
**for plume, it multiplies against +scale to set the plume to spread or converge, zero would be full convergence, 1 would be straight flight, and bigger numbers would cause particles to diverge from the disk.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Rotation Rate:&#039;&#039;&#039;&lt;br /&gt;
**used only by helical spews, controls how many rotations per second the helix makes&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;, may be negative, useful for setting up 2 spews that spin in opposite directions&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Offset:&#039;&#039;&#039;&lt;br /&gt;
**position of effect with regards to the weapon center&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Initial Velocity:&#039;&#039;&#039;&lt;br /&gt;
**to indicate both direction and speed of particle effects regards to the weapon velocity and +scale:&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Vector&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;+Bitmap:&lt;br /&gt;
**Defines the animation used to create the particle spew effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Tag:===&lt;br /&gt;
*Allowed for secondary weapons&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Allowed for primary weapons and secondary weapons}}&lt;br /&gt;
&lt;br /&gt;
*Sets this weapon as a TAG missile, level 1, 2, or 3. The second number is the duration in seconds.&lt;br /&gt;
*TAG Level 1 will illuminate hidden targets such as stealth fighters or ships normally obscured by nebula conditions.&lt;br /&gt;
*TAG Level 2 illiminates targets much like TAG Level 1, but turrets will prefer to shoot at them over other ships.&lt;br /&gt;
*TAG Level 3 has no effect in retail.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*TAG Level 3 allows the weapon to trigger [[Weapon.tbl#$SSM:|SSMs]]}}&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, TAG level and seconds respectively&lt;br /&gt;
*&#039;&#039;&#039;Note&#039;&#039;&#039;: TAG will not trigger unless the weapon in question has a non-zero damage value.&lt;br /&gt;
&lt;br /&gt;
===$SSM:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapons SSM index number.&lt;br /&gt;
*Requires [[Weapons.tbl#$Tag:|TAG level 3]] or a targeting beam.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Now also accepts SSM strike names.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$FOF:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the field of fire for the weapon. Causes weapon to fire into a firing cone instead of direct firing line thus causing light inaccuracy&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, degrees}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Shots:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the number of shots every time the weapon is fired.&lt;br /&gt;
*Works only for primary weapons&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, number of shots}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$decal:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines impact decals if they are in use&lt;br /&gt;
*&#039;&#039;&#039;+texture:&#039;&#039;&#039;&lt;br /&gt;
**Defines the texture used for impact decals (can use &#039;&#039;&#039;&#039;&#039;-burn&#039;&#039;&#039;&#039;&#039; and &#039;&#039;&#039;&#039;&#039;-glow&#039;&#039;&#039;&#039;&#039; textures)&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+backface texture:&#039;&#039;&#039;&lt;br /&gt;
**Defines ???&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename&lt;br /&gt;
*&#039;&#039;&#039;+radius:&#039;&#039;&#039;&lt;br /&gt;
**Defines the size of the impact decals on target&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meters&lt;br /&gt;
*&#039;&#039;&#039;+burn time:&#039;&#039;&#039;&lt;br /&gt;
**Defines the time the &#039;&#039;&#039;&#039;&#039;-burn&#039;&#039;&#039;&#039;&#039; texture appears on the target&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;, milliseconds}}&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Feature removed - table parsing retained to maintain compatibility}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Transparent:===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines weapon effect as transparent. Enables optional fields for &#039;alpha animations&#039;&lt;br /&gt;
*&#039;&#039;&#039;+Alpha:&#039;&#039;&#039;&lt;br /&gt;
**Defines the strenght of the alpha (transparency). And also the maximum value for the alpha cycle option&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, from 0 to 1&lt;br /&gt;
*&#039;&#039;&#039;+Alpha Min:&#039;&#039;&#039;&lt;br /&gt;
**Defines the minimum alpha value for alpha cycle option&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, from 0 to 1&lt;br /&gt;
*&#039;&#039;&#039;+Alpha Cycle:&#039;&#039;&#039;&lt;br /&gt;
**Defines the change in alpha per frame, between &#039;&#039;&#039;Alpha&#039;&#039;&#039; and &#039;&#039;&#039;Alpha Min&#039;&#039;&#039; values&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Weapon Hitpoints:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the amount of hitpoints a weapon has.&lt;br /&gt;
*Weapons with &#039;&#039;&#039;&amp;quot;bomb&amp;quot;&#039;&#039;&#039; flag have 50 hitpoints by default&lt;br /&gt;
*Giving weapon hitpoints makes it possible for the weapon to be shot down or be destroyed by EMP.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Armor Type:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*REQUIRES ADDITIONAL TABLE. Defines the armor type for the weapon. This works exactly like ship armor types.&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name of the armor as defined in [[armor.tbl]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===$Burst Shots:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the number of shots in a burst&lt;br /&gt;
*Shots in a burst use shorter ( &#039;&#039;&#039;$Burst Delay:&#039;&#039;&#039; ) delay than usually&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Burst Delay:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the time in milliseconds between the shots in a burst&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Burst Flags:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the flags used to define the burst firing behaviour&lt;br /&gt;
**Syntax: ( &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039; ), list of flags&lt;br /&gt;
**Available burst flags:&lt;br /&gt;
***&#039;&#039;&#039;&amp;quot;fast firing&amp;quot;&#039;&#039;&#039;, acts as if &#039;&#039;&#039;same turret cooldown&#039;&#039;&#039; flag would be used between the shots in the burst.&lt;br /&gt;
***&#039;&#039;&#039;&amp;quot;random length&amp;quot;&#039;&#039;&#039;, makes AI to fire burst of random length (from 1 to burst shots).}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Thruster Flame Effect:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the filename of the effect used on the modeled thruster of the missile&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Thruster Glow Effect:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the filename of the effect used on the glow type effect of the missile&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, filename}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Thruster Glow Radius Factor:===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the radius multiplier for the thruster&#039;s glow type effect&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===$Substitute:===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
Defines a pattern of ammo to substitute for primary or secondary weapons. &#039;&#039;&#039;$Substitute:&#039;&#039;&#039; can be repeated any number of times (so you could make something like a rainbow laser with several ammo substitutions, for example). If neither &#039;&#039;+period&#039;&#039; or &#039;&#039;+index&#039;&#039; is specified, it is assumed to be equivalent to &#039;&#039;+index: &#039;&#039;&#039;0&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Weapon Name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Swarm missiles act in a strange way when used with $Substitute, use at your own risk.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Table3615|&lt;br /&gt;
Turrets can use $Substitute as well.&lt;br /&gt;
}}&lt;br /&gt;
====+period:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
FSO will substitute &#039;&#039;&#039;Weapon Name&#039;&#039;&#039; every &#039;&#039;period&#039;&#039; shots.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Positive Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;You may not define both +period and +index for the same $Substitute entry&#039;&#039;&#039;}}&lt;br /&gt;
=====+offset:=====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
A suboption of +period, offsets the substitute pattern according to the launched ammo. For example, an offset of 3 and a period of 4 will substitute on the 3rd ammo launched, and then every 4th ammo after that.&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Positive Integer&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
====+index:====&lt;br /&gt;
{{Table3613|&lt;br /&gt;
FSO will substitute the &#039;&#039;&#039;Weapon Name&#039;&#039;&#039; at firepoint &#039;&#039;index&#039;&#039; in the shot pattern. Similar to carefully using both +period and +offset, but is not affected by ships with different firepoint numbers. i.e. Firepoint &#039;&#039;index&#039;&#039; will always have the substitution, while +period and +offset will cycle at different rates dependant on the number of firepoints.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Positive Integer&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;You may not define both +period and +index for the same $Substitute entry&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
==Weapons.tbl Flags==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Electronics&amp;quot;===&lt;br /&gt;
*Will seize up the weapons and engines systems of any ship for a short period of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Spawn &#039;&#039;Name&#039;&#039;,&#039;&#039;Value&#039;&#039;&amp;quot;===&lt;br /&gt;
*Will spawn the specified number of defined missiles upon detonation.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Multiple spawn types can be defined for a single &#039;carrier&#039; weapon up to maximum of 5 different weapons}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Remote Detonate&amp;quot;===&lt;br /&gt;
*Can be triggered remotely via a second press on the trigger&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Big Ship&amp;quot;===&lt;br /&gt;
*These weapons cannot be mounted on small ships like fighters, bombers, sentry guns etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Huge&amp;quot;===&lt;br /&gt;
*Allows this weapon to do the final 10% damage to a ship with the &amp;quot;Big Damage&amp;quot; flag. Also the AI will not try to hit fighters with it.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Supercap&amp;quot;===&lt;br /&gt;
*Allows this weapon to do the final 75% damage to a ship with the &amp;quot;supercap&amp;quot; flag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Bomber+&amp;quot;===&lt;br /&gt;
*The AI will prefer to use this weapon against bombers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;child&amp;quot;===&lt;br /&gt;
*Cannot be set as a weapon on any ship, but is instead a child of a weapon. Usually defined with &amp;quot;Spawn &#039;&#039;Name&#039;&#039;,&#039;&#039;Value&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Bomb&amp;quot;===&lt;br /&gt;
*Makes this weapon targetable with the B key, and the AI prefers to use it against large ships&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;No Dumbfire&amp;quot;===&lt;br /&gt;
*Missile will not fire without a lock&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;in tech database&amp;quot;===&lt;br /&gt;
*Has the weapon in the tech database at the start of the campaign&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Player allowed&amp;quot;===&lt;br /&gt;
*Allows this weapon as a player weapon.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*&#039;&#039;&#039;EXTREMELY IMPORTANT NOTE:&#039;&#039;&#039;&lt;br /&gt;
**Whenever you plan to use a weapon as a player one in your campaign or missions, &#039;&#039;&#039;USE THIS FLAG&#039;&#039;&#039;.&lt;br /&gt;
**Not using it can cause problems within fs_open and it&#039;s a BAD MOD DESIGN.&lt;br /&gt;
**In the future, fs_open will maybe be able to avoid these problems but, nevertheless, it&#039;s still a BAD DESIGN.&lt;br /&gt;
**As another possible example: be careful to update &amp;quot;retail&amp;quot; tables if you plan to use Shivan weapons in player fighters.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Particle Spew&amp;quot;===&lt;br /&gt;
*Makes the weapon projectile spew out particles&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Can be defined with [[Weapons.tbl#$Pspew:|Particle Spew parameters]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;EMP&amp;quot;===&lt;br /&gt;
*This weapon will have an EMP effect on any ship within the blast radius&lt;br /&gt;
*Can be defined with [[Weapons.tbl#$EMP_Intensity:|EMP Intensity]] and [[Weapons.tbl#$EMP_Time:|EMP Time]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Esuck&amp;quot;===&lt;br /&gt;
*Drains the target&#039;s energy banks&lt;br /&gt;
*Can be defined with [[Weapons.tbl#$Leech_Weapon:|Leech Weapon]] and [[Weapons.tbl#$Leech_Afterburner:|Leech Afterburner]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Flak&amp;quot;===&lt;br /&gt;
*Makes this weapon a [[weapons.tbl#Flak_Guns|flak gun]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Corkscrew&amp;quot;===&lt;br /&gt;
*Makes this weapon spiral AND swarm 4.&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Can be defined with [[Weapons.tbl#$Corkscrew:|Corkscrew parameters]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shudder&amp;quot;===&lt;br /&gt;
*Makes your ship shudder while you&#039;re firing the weapon&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;lockarm&amp;quot;===&lt;br /&gt;
*Requires a target lock in order to arm its warhead. In other words weapon causes less damage if it hits the target without target lock.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;beam&amp;quot;===&lt;br /&gt;
*Makes this weapon a [[weapons.tbl#Beam Cannons|beam cannon]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;stream&amp;quot;===&lt;br /&gt;
* Does nothing&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;puncture&amp;quot;===&lt;br /&gt;
*Reduces hull damage by 75%&lt;br /&gt;
The AI will prefer these weapons for anti-subsystem use&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;countermeasure&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapon as a countermeasure}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Ballistic&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Defines the weapon as a ballistic weapon that needs ammunition.&lt;br /&gt;
*Make sure you define the size and reload rate for ballistic weapons}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;pierce shields&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Causes weapons to penetrate shield without causing damage to it.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no pierce shields&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Prevents weapons (beams) from piercing shields causing shields to be damaged by weapons first.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;local ssm&amp;quot;===&lt;br /&gt;
{{Table3610| }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;tagged only&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Weapon can only be fired at tagged targets}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;beam no whack&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Disables beam whacking (push). Practically same as setting beam mass to zero.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;cycle&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Causes weapon to alternate between firing points}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;small only&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Causes AI to use the weapon only on small targets (fighters, bombers etc.)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;same turret cooldown&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Forces the turrets to fire on the designated rate of fire on all difficulty levels and all AI levels}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;apply no light&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Prevents light from being applied to the weapon model.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;training&amp;quot;===&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*Sets weapon to be of training weapon type. ?}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;smart spawn&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Forces turret fired spawn weapon of this type to be fired like normal weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;inherit parent target&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Sets spawned &#039;child&#039; weapons to use parent weapon&#039;s target.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no emp kill&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the weapon (with hitpoints) to be immune to automatic EMP destruction.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;untargeted heat seeker&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Defines the weapon as a heatseeker type missile which acquires its target by itself.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no radius doubling&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Prevents weapon radius from being doubled when doing collision test. Makes bombs harder to intercept.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no subsystem homing&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Prevents weapon from acquiring a subsystem as its target. Missile homing points are spread over the target ship.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no lifeleft penalty&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Prevents weapon lifetime from being penalized if the angle to the target is too big.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;can be targeted&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Allows weapon to be targeted by player. Does not influence AI}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;show on radar&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Allows weapon to be visible on the radar}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;show friendly on radar&amp;quot;===&lt;br /&gt;
{{Table3611|&lt;br /&gt;
*Allows friendly, otherwise visible to radar weapon, to be visible on player radar}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;capital+&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Tells AI to use this weapon only on capital ships}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;chain external model fps&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Tells game to keep switching external model firingpoints when firing}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;external model launcher&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Tells game that the external model is a launcher so that it would be kept static without loading motion}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;takes blast damage&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Weapon takes damage from weapon blasts}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;takes shockwave damage&amp;quot;===&lt;br /&gt;
{{Table3613|&lt;br /&gt;
*Weapon takes damage from shockwaves}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;ciws&amp;quot;===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Weapon can deal shockwave/blast damage to bombs, regardless of whether the target weapons have the &amp;quot;take blast/shockwave damage&amp;quot; flags.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;render flak&amp;quot;===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Normally, flak shells are not rendered. This flag switches rendering on for those weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;anti-subsystem beam&amp;quot;===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Beam weapons with this flag can target subsystems on enemy ships, just like normal weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no primary linking&amp;quot;===&lt;br /&gt;
{{Table3615|&lt;br /&gt;
*Primary weapons with this flag can not be linked with other weapons.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;same emp time for capships&amp;quot;===&lt;br /&gt;
{{Table37|&lt;br /&gt;
*capships affected by this weapon will use the tabled EMP time rather than the fixed retail value (7.5 secs)}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no primary linked penalty&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Primary weapons with this flag do not incur the retail linked fire penalty}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;no homing speed ramp&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Locked homing weapons will not perform the standard 1 second long acceleration when fired. Note that use of $Acceleration Time is &#039;&#039;&#039;not&#039;&#039;&#039; affected by this flag.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;pulls aspect seekers&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*If an aspect seeker is grabbed by this countermeasure the missile will follow the countermeasure instead of going into dumbfire mode.&lt;br /&gt;
&#039;&#039;&#039;Only valid for countermeasures!&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;turret interceptable&amp;quot;===&lt;br /&gt;
===&amp;quot;fighter interceptable&amp;quot;===&lt;br /&gt;
===&amp;quot;interceptable&amp;quot;===&lt;br /&gt;
{{Table371|&lt;br /&gt;
*Allows turrets/fighters/both (respectively) to shoot at this weapon without requiring it to be a bomb. If this is the first time this weapon has been defined, it also gives it a default of 25 hitpoints so that it can be shot down.&lt;br /&gt;
&#039;&#039;&#039;If you use a TBM to give this flag to an existing weapon, you&#039;ll need to specify hitpoints manually (unless you want it to be unkillable but still draw defensive fire).&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;apply recoil&amp;quot;===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*A ship that fires a weapon with this flag will experience a recoil effect, slowing the ship down and, with lighter strikecraft, inducing some rotation if the firing points are offset from the center of mass.&lt;br /&gt;
&#039;&#039;&#039;Do not use this with MVPs or retail ships unless you increase their density to 10 or use either $Recoil Modifier: in weapons.tbl or $Ship Recoil Modifier in ships.tbl. This is to avoid exaggerated effects due to retail models having manually defined masses.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;don&#039;t spawn if shot&amp;quot;===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Prevents parent weapons from spawning children in the even of the parent weapon being shot down.}}&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;die on lost lock&amp;quot;===&lt;br /&gt;
{{Table373|&lt;br /&gt;
*Aspect seeking missiles (only, not heat seekers) will detonate upon losing their lock. Currently they only lose lock if decoyed by a countermeasure, AND &amp;quot;pulls aspect seekers&amp;quot; or similar is not set. The detonation will use their &amp;quot;dinky&amp;quot; explosion (i.e. same as if ran out of lifetime).}}&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
*Usually not altered. Only one can exist&lt;br /&gt;
{{Table3610|&lt;br /&gt;
*More than one can exist}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Name:===&lt;br /&gt;
*Name of the countermeasure&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Velocity:===&lt;br /&gt;
*Defines the speed of the countermeasure, relative to the ship.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, meter per second&lt;br /&gt;
&lt;br /&gt;
===$Fire Wait:===&lt;br /&gt;
*Definies the minumum time between the countermeasure launches&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lifetime===&lt;br /&gt;
*Countermeasure&#039;s life time is defined between with minimum and maximum lifetime&lt;br /&gt;
*&#039;&#039;&#039;$Lifetime Min:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
*&#039;&#039;&#039;$Lifetime Max:&#039;&#039;&#039;&lt;br /&gt;
**Syntax: &#039;&#039;&#039;&#039;&#039;Float&#039;&#039;&#039;&#039;&#039;, seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$LaunchSnd:===&lt;br /&gt;
*Defines the sound for the countermeasure launch&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;Integer&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;String&#039;&#039;&#039;&#039;&#039;, name or identification number of the sound as defined in [[sounds.tbl]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===$Model:===&lt;br /&gt;
*Defines the used model file (.pof)&lt;br /&gt;
*Syntax: &#039;&#039;&#039;&#039;&#039;String.pof&#039;&#039;&#039;&#039;&#039;, model filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Player Weapon Precedence==&lt;br /&gt;
*First the primary weapons are defined, from most powerful to least powerful, and then the same for secondaries&lt;br /&gt;
*Syntax: ( &#039;&#039;&#039;&#039;&#039;&amp;quot;String&amp;quot; &amp;quot;String&amp;quot;&#039;&#039;&#039;&#039;&#039;), names of the weapons&lt;br /&gt;
*Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$Player Weapon Precedence: (&lt;br /&gt;
     &amp;quot;UD-8 Kayser&amp;quot;&lt;br /&gt;
     &amp;quot;Prometheus R&amp;quot;&lt;br /&gt;
     &amp;quot;Subach HL-7&amp;quot;&lt;br /&gt;
     &amp;quot;Harpoon&amp;quot;&lt;br /&gt;
     &amp;quot;Tempest&amp;quot;&lt;br /&gt;
     &amp;quot;Rockeye&amp;quot;   )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sample==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Primary Weapons&lt;br /&gt;
&lt;br /&gt;
$Name:                            @Subach HL-7&lt;br /&gt;
   +Title:                           XSTR(&amp;quot;GTW Subach HL-7&amp;quot;, 3243)&lt;br /&gt;
   +Description:&lt;br /&gt;
XSTR( &amp;quot;Standard Issue&lt;br /&gt;
Level 3 Hull Damage&lt;br /&gt;
Level 2 Shield Damage&amp;quot;, 3244)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
   +Tech Title:                      XSTR(&amp;quot;Subach HL-7&amp;quot;, 146)&lt;br /&gt;
   +Tech Anim:                       Tech_Subach_HL-7&lt;br /&gt;
   +Tech Description:&lt;br /&gt;
XSTR(&lt;br /&gt;
&amp;quot;Descriptive text...&amp;quot;, -1)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
$Model File:                      none&lt;br /&gt;
   @Laser Bitmap:                    newglo9&lt;br /&gt;
   @Laser Glow:                      2_laserglow03&lt;br /&gt;
   @Laser Color:                     250, 0, 0&lt;br /&gt;
   @Laser Color2:                    0, 0, 250&lt;br /&gt;
   @Laser Length:                    10.0&lt;br /&gt;
   @Laser Head Radius:               0.90&lt;br /&gt;
   @Laser Tail Radius:               0.90&lt;br /&gt;
$Mass:                            0.2&lt;br /&gt;
$Velocity:                        450.0&lt;br /&gt;
$Fire Wait:                       0.2&lt;br /&gt;
$Damage:                          15&lt;br /&gt;
$Armor Factor:                    0.9&lt;br /&gt;
$Shield Factor:                   0.7&lt;br /&gt;
$Subsystem Factor:                0.3&lt;br /&gt;
$Lifetime:                        2.0&lt;br /&gt;
$Energy Consumed:                 0.20&lt;br /&gt;
$Cargo Size:                      0.0&lt;br /&gt;
$Homing:                          NO&lt;br /&gt;
$LaunchSnd:                       76&lt;br /&gt;
$ImpactSnd:                       85&lt;br /&gt;
$Flags:                           (  &amp;quot;in tech database&amp;quot;&lt;br /&gt;
                                     &amp;quot;player allowed&amp;quot;&lt;br /&gt;
                                     &amp;quot;stream&amp;quot;)&lt;br /&gt;
$Icon:                            iconSD4&lt;br /&gt;
$Anim:                            SD4&lt;br /&gt;
$Impact Explosion:                none&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Secondary Weapons&lt;br /&gt;
&lt;br /&gt;
$Name:                            EMP Adv.&lt;br /&gt;
   +Title:                           XSTR(&amp;quot;GTM-14 EMP Adv.&amp;quot;, 3396)&lt;br /&gt;
   +Description:&lt;br /&gt;
XSTR( &amp;quot;Advanced Missile&lt;br /&gt;
Electromagnetic Pulse Weapon&lt;br /&gt;
General Purpose Suppression&amp;quot;, 3397)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
   +Tech Title:                      XSTR(&amp;quot;GTM-14 EM Pulse Adv.&amp;quot;, 3398)&lt;br /&gt;
   +Tech Anim:                       Tech_EMP&lt;br /&gt;
   +Tech Description:&lt;br /&gt;
XSTR(&lt;br /&gt;
&amp;quot;Descriptive text...&amp;quot;, -1)&lt;br /&gt;
$end_multi_text&lt;br /&gt;
$Model File:                      EMPulse2.pof&lt;br /&gt;
$Mass:                            15.0&lt;br /&gt;
$Velocity:                        275.0&lt;br /&gt;
$Fire Wait:                       2.0&lt;br /&gt;
$Damage:                          45&lt;br /&gt;
$Blast Force:                     20.0&lt;br /&gt;
$Inner Radius:                    80.0&lt;br /&gt;
$Outer Radius:                    300.0&lt;br /&gt;
$Shockwave Speed:                 120.0&lt;br /&gt;
$Armor Factor:                    1.0&lt;br /&gt;
$Shield Factor:                   0.8&lt;br /&gt;
$Subsystem Factor:                0.5&lt;br /&gt;
$Lifetime:                        5.0&lt;br /&gt;
$Energy Consumed:                 0.0&lt;br /&gt;
$Cargo Size:                      4.0&lt;br /&gt;
$Homing:                          YES&lt;br /&gt;
   +Type:                            ASPECT&lt;br /&gt;
   +Turn Time:                       1.0&lt;br /&gt;
   +Min Lock Time:                   2.0&lt;br /&gt;
   +Lock Pixels/Sec:                 70&lt;br /&gt;
   +Catch-up Pixels/Sec:             100&lt;br /&gt;
   +Catch-up Penalty:                30&lt;br /&gt;
$LaunchSnd:                       118&lt;br /&gt;
$ImpactSnd:                       88&lt;br /&gt;
$FlyBySnd:                        -1&lt;br /&gt;
$Rearm Rate:                      2.0&lt;br /&gt;
$Flags:                           (  &amp;quot;player allowed&amp;quot;&lt;br /&gt;
                                     &amp;quot;EMP&amp;quot;)&lt;br /&gt;
$Trail:&lt;br /&gt;
   +Start Width:                     0.25&lt;br /&gt;
   +End Width:                       0.75&lt;br /&gt;
   +Start Alpha:                     1.0&lt;br /&gt;
   +End Alpha:                       0.0&lt;br /&gt;
   +Max Life:                        1.5&lt;br /&gt;
   +Bitmap:                          MissileTrail04&lt;br /&gt;
$Icon:                            iconEMPulse&lt;br /&gt;
$Anim:                            ecm&lt;br /&gt;
$Impact Explosion:                ExpMissileHit1&lt;br /&gt;
$Impact Explosion Radius:         10.0&lt;br /&gt;
$EMP Intensity:                   375.0&lt;br /&gt;
$EMP Time:                        20.0&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&lt;br /&gt;
$Player Weapon Precedence: (&lt;br /&gt;
     &amp;quot;Subach HL-7&amp;quot;&lt;br /&gt;
     &amp;quot;EMP Adv.&amp;quot;   )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tables]]&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=45608</id>
		<title>Particle Effects</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=Particle_Effects&amp;diff=45608"/>
		<updated>2016-08-04T13:08:36Z</updated>

		<summary type="html">&lt;p&gt;M!m: Added example table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SCP_table}}&lt;br /&gt;
&lt;br /&gt;
{{TableVersionGit|2016-08-04|a570eca}}&lt;br /&gt;
&lt;br /&gt;
Particle Effects is a SCP feature which allows to define custom particle effects that can be assigned to various engine properties.&lt;br /&gt;
&lt;br /&gt;
This table is one of the [[Modular Tables]] and can be extended with xxx-part.tbm. This table type does not have a main table like the other types. All particle effects must be specified in modular tables. Currently there is no support for the usual &#039;&#039;+nocreate&#039;&#039; ability the other modular tables have but that will be added in the future. Parts of this documentation are written with with &#039;&#039;+nocreate&#039;&#039; in mind for when that is implemented.&lt;br /&gt;
&lt;br /&gt;
[[Tables|List of Tables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==General Info==&lt;br /&gt;
*Begins with #Particle Effects&lt;br /&gt;
*Contains zero or more particle effect definitions&lt;br /&gt;
*Ends with #End&lt;br /&gt;
&lt;br /&gt;
Particle effects are created by specifying a name and a type. The type dictates which values are valid and will be described below.&lt;br /&gt;
&lt;br /&gt;
===$Effect:===&lt;br /&gt;
*Creates a new effect and specifies its name. The name must be at least one character long.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====$Type:====&lt;br /&gt;
*Sets the type of this effect. See [[#Effect Types|Effect Types]] for possible values.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Effect Types==&lt;br /&gt;
There are multiple different types of effects. They are specified by passing the given name to &#039;&#039;$Type&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Single===&lt;br /&gt;
This effect type creates exactly one particle per processing step.&lt;br /&gt;
&lt;br /&gt;
====Properties====&lt;br /&gt;
The properties of this created particle can be specified by a [[#Particle properties]] construct.&lt;br /&gt;
&lt;br /&gt;
====Timing properties====&lt;br /&gt;
For specifying how long this effect is active an [[#Effect timing]] construct is used.&lt;br /&gt;
&lt;br /&gt;
===Composite===&lt;br /&gt;
A composite effects contains multiple other effects which are all displayed at the same time. The amount of child effects is not limited. This type currently does not support &#039;&#039;+nocreate&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====+Child effect:====&lt;br /&gt;
*This specifies a child effect that should be added to the composite effect. The effect is specified using [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
===Cone===&lt;br /&gt;
This effects creates multiple particles which travel in a cone around a specific direction. The particles are created in a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution] around the direction vector. That means that more particle are created along the direction vector than far away from it. The velocity of a particle is scaled based on the angle it is away from the direction vector. This may be changed in the future to allow different effects.&lt;br /&gt;
&lt;br /&gt;
====Properties====&lt;br /&gt;
The common properties of the created particles can be specified by a [[#Particle properties]] construct.&lt;br /&gt;
&lt;br /&gt;
====+Deviation:====&lt;br /&gt;
*Sets the standard deviation from the direction vector.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: &#039;&#039;&#039;float&#039;&#039;&#039;, in degrees&lt;br /&gt;
&lt;br /&gt;
====+Velocity====&lt;br /&gt;
*Sets the velocity of the created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
====+Number====&lt;br /&gt;
*Sets the amount of created particles. This is a [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; is not present&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
====+Direction====&lt;br /&gt;
*Sets the direction the cone will be centered around. Can be one of:&lt;br /&gt;
**&#039;&#039;Incoming&#039;&#039;: The direction vector is the direction of the particle source, e.g. for a weapon this would be the orientation it had when the effect was created.&lt;br /&gt;
**&#039;&#039;Normal&#039;&#039;: The normal of the impact.&lt;br /&gt;
**&#039;&#039;Reflected&#039;&#039;: The reflected vector from incoming and normal vector. This is a good way of simulating armor deflecting a shot.&lt;br /&gt;
**&#039;&#039;Reverse&#039;&#039;: The reverse of the incoming vector&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, one of the strings specified above&lt;br /&gt;
&lt;br /&gt;
====+Trail effect:====&lt;br /&gt;
*Sets the particle effect used for the trail of the created particles. This option uses [[#Inline effect creation]].&lt;br /&gt;
*Optional&lt;br /&gt;
*Syntax: See [[#Inline effect creation]].&lt;br /&gt;
&lt;br /&gt;
==Common syntax constructs==&lt;br /&gt;
Some syntax constructs are used multiple times by different types. Due to the similarity they are described one at this point and then references by the documentation of the individual effects.&lt;br /&gt;
&lt;br /&gt;
===Particle properties===&lt;br /&gt;
This contains some common properties of particles, e.g. the used animation or the size.&lt;br /&gt;
&lt;br /&gt;
====+Filename:====&lt;br /&gt;
*Sets the filename of the animation that should be used.&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: &#039;&#039;&#039;String&#039;&#039;&#039;, filename&lt;br /&gt;
&lt;br /&gt;
====+Size:====&lt;br /&gt;
*Sets the size of the created particles. This is a uniformly distributed random range, see [[#Uniform random range]].&lt;br /&gt;
*Required if &#039;&#039;+nocreate&#039;&#039; wasn&#039;t used&lt;br /&gt;
*Syntax: See [[#Uniform random range]]&lt;br /&gt;
&lt;br /&gt;
====+Lifetime:====&lt;br /&gt;
*Sets the life time of the particles. This is a uniformly distributed random range, see [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039; in which case the runtime of the animation is used. Defaults to &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Effect timing===&lt;br /&gt;
Effect timings are used to specify for how long and after how much delay an effect is active. Each effect timing is parsed in its entirety each time it is expected. That means that if you use &#039;&#039;+nocreate&#039;&#039; then you must respecify all values. This restriction may be lifted in the future.&lt;br /&gt;
&lt;br /&gt;
====+Duration:====&lt;br /&gt;
*Sets for how long this effect will be active. The duration can be once, always or a random range. If the effect should run only once then you can use the string &#039;&#039;Onetime&#039;&#039;. If the effect should always be active you can specify the string &#039;&#039;Always&#039;&#039;. Otherwise a non-negative random range is expected.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: &#039;&#039;Onetime&#039;&#039;, &#039;&#039;Always&#039;&#039;, or a [[#Uniform random range]].&lt;br /&gt;
&lt;br /&gt;
====+Delay:====&lt;br /&gt;
*Specifies after how much time after the effect is triggered the effect starts creating particles. This is not a valid option if the duration is &#039;&#039;Onetime&#039;&#039;.&lt;br /&gt;
*This is optional&lt;br /&gt;
*Syntax: See [[#Uniform random range]], or the string &#039;&#039;&amp;lt;none&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Inline effect creation===&lt;br /&gt;
At some places in this table a particle effect may be created within another particle effect. This is used for composite effects and particle trails. If inline creation is valid for an option then you may either specify a name of a previously defined effect or use &#039;&#039;&#039;$New Effect&#039;&#039;&#039; which will create a new, unnamed effect. Some options using this construct require a specific type of effect. That will be noted in the documentation of the option.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;$New Effect&#039;&#039;&#039; is used then a new unnamed effect is created. If the surrounding option has not forced an effect type then you can specify it using the standard syntax described above. All options are the same as if the effect would have been parsed in the normal way. &#039;&#039;+nocreate&#039;&#039; is not valid within this element.&lt;br /&gt;
&lt;br /&gt;
===Random range===&lt;br /&gt;
The particle effect system uses randomization to provide variation to the created particles. This is implemented by letting the mod author specify the values for the random distribution. There are different types of distributions which are explained below.&lt;br /&gt;
&lt;br /&gt;
====Uniform random range====&lt;br /&gt;
*This accepts 1 or 2 values. If one value is used then the random range always returns that value. If two values are specified then a uniformly distributed random value will be picked from the range.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Float list&#039;&#039;&#039;, one or two values&lt;br /&gt;
&lt;br /&gt;
====Normal distribution random range====&lt;br /&gt;
*This accepts 1 or 2 values. This random range generates values according to a [https://en.wikipedia.org/wiki/Normal_distribution normal distribution]. The first value specified the mean value of the distribution. The second value specified the standard deviation of the distribution, this defaults to 1.&lt;br /&gt;
*Syntax: &#039;&#039;&#039;Float list&#039;&#039;&#039;, one or two values&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Particle Effects&lt;br /&gt;
&lt;br /&gt;
$Effect: MassDriverImpact&lt;br /&gt;
$Type: Cone&lt;br /&gt;
	+Filename: exp05&lt;br /&gt;
	+Size: (5 7)&lt;br /&gt;
	+Lifetime: (0.6)&lt;br /&gt;
	+Deviation: 5&lt;br /&gt;
	+Velocity: (500 700)&lt;br /&gt;
	+Number: (20 30)&lt;br /&gt;
	+Direction: Reflected&lt;br /&gt;
	+Trail effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp20&lt;br /&gt;
			+Size: (10)&lt;br /&gt;
			+Lifetime: (1)&lt;br /&gt;
			+Duration: Always&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$Effect: ApocalypseIgnition&lt;br /&gt;
$Type: Single&lt;br /&gt;
	+Filename: exp20&lt;br /&gt;
	+Size: (10 20)&lt;br /&gt;
	&lt;br /&gt;
$Effect: ApocalypseHomed&lt;br /&gt;
$Type: Composite&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp05&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
	+Child effect: $New Effect&lt;br /&gt;
		$Type: Single&lt;br /&gt;
			+Filename: exp06b&lt;br /&gt;
			+Size: (5 7)&lt;br /&gt;
			+Duration: (2 10)&lt;br /&gt;
			+Delay: (8 15)&lt;br /&gt;
&lt;br /&gt;
#End&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>M!m</name></author>
	</entry>
</feed>