<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://springrts-wiki.p2004a.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Evil4Zerggin</id>
	<title>Spring - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://springrts-wiki.p2004a.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Evil4Zerggin"/>
	<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/wiki/Special:Contributions/Evil4Zerggin"/>
	<updated>2026-11-09T01:48:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobConstants&amp;diff=1924</id>
		<title>Animation-CobConstants</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobConstants&amp;diff=1924"/>
		<updated>2008-08-18T04:49:45Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: /* explode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
This has a list of all COB SET/GET keys: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobInstance.cpp&lt;br /&gt;
&lt;br /&gt;
You&#039;ll want to include a file with these constants in your script.&lt;br /&gt;
&lt;br /&gt;
==SET/GET==&lt;br /&gt;
&lt;br /&gt;
===Use===&lt;br /&gt;
Use GET [tag] to get a value. Some GETs refer to functions; in this case, use GET [tag](arg1, arg2, arg3, arg4).&lt;br /&gt;
Use SET [tag] to [value] to change a value.&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
There&#039;s a lot of GET/SET tags; I&#039;ll cover some of the more useful but less intuitive ones.&lt;br /&gt;
&lt;br /&gt;
*ACTIVATION: Whether the unit is on (true) or off (false).&lt;br /&gt;
*ARMORED: When true, any damage dealt to the unit will be multiplied by its damageModifier.&lt;br /&gt;
*PRINT: You can use GET PRINT to send up to 4 arguments to chat. Useful for debugging.&lt;br /&gt;
*VETERAN_LEVEL: The unit&#039;s experience times 100. Note that you can SET this via script, although the unit won&#039;t gain any extra health from doing so.&lt;br /&gt;
&lt;br /&gt;
==emit-sfx==&lt;br /&gt;
&lt;br /&gt;
 emit-sfx [sfxtype] from [piece];&lt;br /&gt;
&lt;br /&gt;
The least significant byte of sfxtype is treated as an unsigned integer; the remaining bits are a bitmask. The bitmask indicates what &#039;&#039;type&#039;&#039; of sfx to emit, while the number indicates &#039;&#039;which&#039;&#039; sfx of that type to emit. The bits are as follows:&lt;br /&gt;
&lt;br /&gt;
*256: Point-based fx. Used for white smoke (1), black smoke (2), and bubbles (3).&lt;br /&gt;
*1024: Unit sfx. Use with the unit&#039;s sfxtypes.explosionGenerators. The first one is 0, the second one is 1, etc.&lt;br /&gt;
*2048: Fire weapon. Fires a weapon from the piece (no aiming involved). Again, the first weapon is 0, the second weapon is 1, etc.&lt;br /&gt;
*4096: Explode weapon. Detonates a weapon at the piece. Again, the first weapon is 0, the second weapon is 1, etc.&lt;br /&gt;
&lt;br /&gt;
==explode==&lt;br /&gt;
&lt;br /&gt;
Causes the piece to explode and possibly go flying. This actually gives the appearance of making a copy of the piece (henceforth referred to as &amp;quot;debris&amp;quot;) so if you&#039;re using it outside of Killed() you may want to hide the piece in question.&lt;br /&gt;
&lt;br /&gt;
 explode [piece] type [exptype];&lt;br /&gt;
&lt;br /&gt;
exptype is a bitmask. The bits are as follows:&lt;br /&gt;
&lt;br /&gt;
*SHATTER: Explodes the debris into tiny triangles. Looks like confetti.&lt;br /&gt;
*EXPLODE_ON_HIT: Debris will explode on impact, causing about 40 damage.&lt;br /&gt;
*FALL: Debris is affected by gravity.&lt;br /&gt;
*SMOKE&lt;br /&gt;
*FIRE&lt;br /&gt;
*BITMAPONLY: No debris, just an explosion graphic.&lt;br /&gt;
*NOCEGTRAIL&lt;br /&gt;
*BITMAP[1...5]: Doesn&#039;t actually appear to do anything.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobConstants&amp;diff=1923</id>
		<title>Animation-CobConstants</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobConstants&amp;diff=1923"/>
		<updated>2008-08-18T04:45:38Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: /* explode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
This has a list of all COB SET/GET keys: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobInstance.cpp&lt;br /&gt;
&lt;br /&gt;
You&#039;ll want to include a file with these constants in your script.&lt;br /&gt;
&lt;br /&gt;
==SET/GET==&lt;br /&gt;
&lt;br /&gt;
===Use===&lt;br /&gt;
Use GET [tag] to get a value. Some GETs refer to functions; in this case, use GET [tag](arg1, arg2, arg3, arg4).&lt;br /&gt;
Use SET [tag] to [value] to change a value.&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
There&#039;s a lot of GET/SET tags; I&#039;ll cover some of the more useful but less intuitive ones.&lt;br /&gt;
&lt;br /&gt;
*ACTIVATION: Whether the unit is on (true) or off (false).&lt;br /&gt;
*ARMORED: When true, any damage dealt to the unit will be multiplied by its damageModifier.&lt;br /&gt;
*PRINT: You can use GET PRINT to send up to 4 arguments to chat. Useful for debugging.&lt;br /&gt;
*VETERAN_LEVEL: The unit&#039;s experience times 100. Note that you can SET this via script, although the unit won&#039;t gain any extra health from doing so.&lt;br /&gt;
&lt;br /&gt;
==emit-sfx==&lt;br /&gt;
&lt;br /&gt;
 emit-sfx [sfxtype] from [piece];&lt;br /&gt;
&lt;br /&gt;
The least significant byte of sfxtype is treated as an unsigned integer; the remaining bits are a bitmask. The bitmask indicates what &#039;&#039;type&#039;&#039; of sfx to emit, while the number indicates &#039;&#039;which&#039;&#039; sfx of that type to emit. The bits are as follows:&lt;br /&gt;
&lt;br /&gt;
*256: Point-based fx. Used for white smoke (1), black smoke (2), and bubbles (3).&lt;br /&gt;
*1024: Unit sfx. Use with the unit&#039;s sfxtypes.explosionGenerators. The first one is 0, the second one is 1, etc.&lt;br /&gt;
*2048: Fire weapon. Fires a weapon from the piece (no aiming involved). Again, the first weapon is 0, the second weapon is 1, etc.&lt;br /&gt;
*4096: Explode weapon. Detonates a weapon at the piece. Again, the first weapon is 0, the second weapon is 1, etc.&lt;br /&gt;
&lt;br /&gt;
==explode==&lt;br /&gt;
&lt;br /&gt;
Causes the piece to explode and possibly go flying. This actually gives the appearance of making a copy of the piece (henceforth referred to as &amp;quot;debris&amp;quot;) so if you&#039;re using it outside of Killed() you may want to hide the piece in question.&lt;br /&gt;
&lt;br /&gt;
 explode [piece] type [exptype];&lt;br /&gt;
&lt;br /&gt;
exptype is a bitmask. The bits are as follows:&lt;br /&gt;
&lt;br /&gt;
*SHATTER: Explodes the debris into tiny triangles. Looks like confetti.&lt;br /&gt;
*EXPLODE_ON_HIT: Debris will explode on impact, causing about 40 damage.&lt;br /&gt;
*FALL: Debris is affected by gravity.&lt;br /&gt;
*SMOKE&lt;br /&gt;
*FIRE&lt;br /&gt;
*BITMAPONLY: No debris, just an explosion graphic.&lt;br /&gt;
*NOCEGTRAIL&lt;br /&gt;
*BITMAP[1...5]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lua:Main&amp;diff=10850</id>
		<title>Lua:Main</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lua:Main&amp;diff=10850"/>
		<updated>2008-07-31T05:44:29Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Lua FAQ&#039;&#039;&#039;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Lua_Beginners_FAQ]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[:Category:Lua]] (shows which interfaces are loaded by LuaUI,LuaRules,etc.)&amp;lt;br&amp;gt;&lt;br /&gt;
[http://spring.clan-sy.com/phpbb/viewtopic.php?f=23&amp;amp;t=15596 Forum topic with some basic information about gadgets]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interfaces&#039;&#039;&#039; &amp;lt;font color=darkgreen&amp;gt;(last update: 76b1)&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
{{LuaInterfaces}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Other useful tables&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[WeaponDefNames]]&lt;br /&gt;
&lt;br /&gt;
[[UnitDefNames]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Lua documentation&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.lua.org/pil/ &#039;Programming in Lua&#039; book online]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.lua.org/manual/5.1/ Lua 5.1 Reference manual]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://lua-users.org/wiki/TutorialDirectory Lua tutorials]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;old Wikis&#039;&#039;&#039; &amp;lt;font color=red&amp;gt;(outdated)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lua_SyncedInterface]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Units:LuaCOB]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lua_Startscripts]]&amp;lt;/font&amp;gt;&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7941</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7941"/>
		<updated>2008-07-30T05:38:54Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: /* Units - FBI Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;filehosting at 20080405:&lt;br /&gt;
&lt;br /&gt;
http://www.tasdownloads.com/faq.php&lt;br /&gt;
&lt;br /&gt;
http://spring.jobjol.nl/subcategory.php?id=1&amp;amp;language=English&lt;br /&gt;
&lt;br /&gt;
http://spring-portal.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mod development=&lt;br /&gt;
Mods, next to Maps, is the content used in Spring.&amp;lt;br&amp;gt;&lt;br /&gt;
A mod is simply a combined file containing a small structure of files and directories holding all the data required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Mod_Development | Mod Development]] wiki is a starting page, linking to very useful information on the files included in a mod, their hierarchy and more.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Almost the entire mod developing is the creation of units. Which isn&#039;t an easy job.&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the creation of units are everywere, but not combined.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a gathered list of all Tutorials and helpfull forums threads I could find:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
*http://taspring.clan-sy.com/wiki/Create_units - old Wiki&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Mod Development]]&lt;br /&gt;
*[[Mod specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6015 What do I need to create a mod]&lt;br /&gt;
*[[Simple Mod Tutorial]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Automated Mod Creation====&lt;br /&gt;
* [[TA2Spring]] - Automatically adds and converts Total Annihilation unit packs (.ufo files, etc..) into Spring mods (requires a base modification for the game rules, XTA is recommended)&lt;br /&gt;
====Models - s3o Files====&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures].&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [[Simple Mod Tutorial]]&lt;br /&gt;
* [[Units:CreateModel|UV Mapping in Wings3D]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
* [http://taspring.clan-sy.com/phpbb/viewtopic.php?p=75495 various things about unit making. (Also contains an illustrated alpha-channel tut)]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
outdated model format used by OTA&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://spring.clan-sy.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://www.fileuniverse.com/?p=show&amp;amp;a=it&amp;amp;id=305 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
====Scripting and Animation - COB/BOS Files====&lt;br /&gt;
*[[COB_Overview]]&lt;br /&gt;
*[[COB_Animation]]&lt;br /&gt;
*[[COB_Callins]]&lt;br /&gt;
*[[COB_Constants]]&lt;br /&gt;
*[[COB_Threads]]&lt;br /&gt;
*[[COB_HitByWeaponID]]&lt;br /&gt;
*[[Image:Usa_flag.gif]][[Image:France_flag.gif]][[Units:.bos/.COB]] -all tags for make a animation file&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[http://www.tadesigners.com/bos1.htm TADesigners] have a nice tutorial too&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Mod Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Image:France_flag.gif]] [[exemples de fichiers .fbi]]&lt;br /&gt;
*[[image:usa_flag.gif]][[ all tags &amp;amp; details with a exemple ]]&lt;br /&gt;
*[[Unit_Categories]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
*[[Weapons:Antinukes]]: All about antinukes.&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics]]&lt;br /&gt;
*[[CustomExplosionGenerators|Mod Development:Custom explosions]]&lt;br /&gt;
*[[CustomUnitIcons|Mod Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Weapon_Variables&amp;diff=19566</id>
		<title>Weapon Variables</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Weapon_Variables&amp;diff=19566"/>
		<updated>2008-07-24T15:09:21Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: /* Descriptions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;text-align:center&amp;quot;&amp;gt;&lt;br /&gt;
=WeaponType=&lt;br /&gt;
This is a weapon tag! It allows you to bypass the engine&#039;s auto detection and force the weapontype.&amp;lt;br&amp;gt; (example weaponType=&amp;quot;StarburstLauncher&amp;quot;)&lt;br /&gt;
&amp;lt;table width=730 border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;th&amp;gt;WeaponType&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt; Description &amp;lt;/th&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;AircraftBomb (dropped=1)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Drops a ballistic projectile (aka Plasma) at the same movement vector as the unit itself. It&#039;s only meant for planes. A plane that has a CBombDropper as its weapon1 is a bomber. The CBombDropper automatically calculates its burst and burstrate tags from its reload time and uses 5 as its reload time instead. It will fire if the first bomb would drop within a circle roughly unitspeed*burst*burstrate so the longer the burst and the faster the unit the larger the circle in which it will drop instead of not firing and hoping the next attack run will pass that circle.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;StarburstLauncher(vlaunch=1)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Fires a projectile that rises vertically (starts with no velocity) for &amp;lt;weapontimer&amp;gt; seconds, then turns at a fixed rate towards its target. The projectile&#039;s lifetime depends on its range divided by its max speed (ignores acceleration) and the weapontimer somehow so the weapon can fall short depending on how these values are set. This is the only weapon that can properly perform intercepts and be interceptable. Emits a smoketrail.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;BeamLaser (beamlaser=1)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Should be well known, this thing spawns a beam and does a portion of its total damage each frame. It can&#039;t have a burst or burstrate, it can&#039;t have collidefriendly=0, it can&#039;t be emit-sfxed if it has a beamtime longer than one frame and its damage decreases over range if the minIntensity=1 tag isn&#039;t used. The largebeamlaser tag allows changing the visual effect of the laser, doesn&#039;t affect the behaviour of the weapon itself in any way though. Beamlasers can be really annoying... BTW, their beam doesn&#039;t collide with water so if they&#039;re set to waterweapon=1 they can shoot normally even when underwater (won&#039;t shoot at underwater targets though).&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Shield (isShield=1)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;The shield. Really not much to say about this, the tags are all documented in the changelog.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;TorpedoLauncher (waterweapon=1)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Fires a projectile that will behave ballistically out of water and like a missile in water. Since waterweapon=1 is usually set for them they can fire underwater and they will target underwater units. The torpedo is the only projectile that doesn&#039;t explode on the water surface. An aircraft carrying a TorpedoLauncher is a special case, the thing turns into a bomb dropepr that will spawn a torpedo projectile, probably to get the whole bomber flight behaviour. Note that the waterweapon tag is also used to make a weapon fire underwater, independent of its type.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;DGun (weaponname contains the word &amp;quot;disintegrator&amp;quot;)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;This shoots a fireball that travels in a straight line. The fireball has no range limitation by itself so if it misses or is fired in FPS mode it will travel across the whole map and further. DGuns don&#039;t properly check their line of fire, if terrain is in the way they fire anyway. These things are meant to be used with noexplode=1 but of course you CAN use them without that, too. If ballistic=1 is set the fireball will be affected by gravity, the weapon won&#039;t compensate for it though so it will hit the ground before reaching the target. Might be useful for a Scorched Earth mod or something since you&#039;d have to aim it manually to hit anything.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;LightingCannon (sic) (lineofsight=1 and rendertype=7)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;An instant hit weapon like the Beamlaser except with a lightning graphic and even more annoying. It won&#039;t damage shields and it has a hardcoded inaccuracy (comparable to targetMoveError, the code comment is &amp;quot;should make it weaker against air&amp;quot;...). Shares some of the weirdnesses with the beamlaser, e.g. being able to penetrate water.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;LaserCannon (lineofsight=1 and either beamweapon=1 or weaponname contains &amp;quot;laser&amp;quot; (marked as &amp;quot;workaround for SWTA))&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;The OTA-style laser. Probably one of the least annoying weapons in the engine. Its length is defined by the duration tag (together with the speed), BTW.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;MissileLauncher (lineofsight=1 and smoketrail=1)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Shoots a smoke-emitting projectile. It can use guidance, acceleration, etc. The projectile&#039;s lifetime depends on range/maxspeed so a slowly accelerating missile will fall short. It can also use trajectoryheight to have the shot arc but that has trouble with aiming at targets higher or lower than the shooter (see bug report, this REALLY could use some fixing). Pretty versatile weapon overall, if the laser rendering code was ported into this we could pretty much axe the LaserCannon completely.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;EmgCannon (lineofsight=1 and rendertype=4 and color=2)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Few know about this, it&#039;s a line of sight (i.e. not ballistic) weapon that can use billboard rendering (looks like a sprite). No idea what drawbacks this has, noone ever uses it.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Flame (lineofsight=1 and rendertype=5)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;The flamethrower. A really annoying weapon. AFAIK it won&#039;t even aim ahead of moving targets. Can&#039;t say much else about it since I haven&#039;t tried using it much but overall I&#039;d avoid the weapontype and fake the effect somehow, it&#039;s not pretty when fast and won&#039;t hit jack when slow.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Cannon (anything that didn&#039;t trigger another weapon)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Aka plasma. Shoots a ballistic projectile. Unlike the DGun it aims properly. Can&#039;t be emit-sfxed properly, maybe a ballistic DGun can fill that role.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Melee (only reachable through WeaponType)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;When it fires it simply damages the target, no ifs or buts. It doesn&#039;t use a projectile and doesn&#039;t care about the line of fire. It won&#039;t even report a proper heading and pitch to AimWeapon so if you plan on using it in 75b2 you have to slave it to another weapon to handle the aiming. May be useful to be the damage dealer for a cosmetic weapon, i.e. you slave the Melee to a weapon that does no damage but looks pretty and the Melee does the damage. Kinda like the weapons in Warcraft and so.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Rifle (only reachable through WeaponType)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;An instant hit weapon but an apparently unmaintained one. It has a hardcoded firing and explosion effect. I wouldn&#039;t use it.&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;CNoWeapon (weaponname is NOWEAPON, not reachable by any tag)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD&amp;gt;Apparently a placeholder used when a weapon isn&#039;t present. It&#039;s not really a weapondef but generated when the unit demands a NOWEAPON.&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Descriptions=&lt;br /&gt;
&amp;lt;table width=730 border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;th&amp;gt;Variable &amp;lt;/th&amp;gt;&amp;lt;th&amp;gt; Description &amp;lt;/th&amp;gt;&amp;lt;th&amp;gt; Examples&amp;lt;/Th&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Accuracy&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How accurate a weapon is.  A larger number is less accurate.  If this tag is missing entirely, it has perfect accuracy unless its target moves unexpectedly.  Accuracy is relative to the distance to the target; for instance, if the target is very close, even a very high accuracy value will probably still hit.  If a target is very far away, even a very low accuracy value will likely cause the weapon to miss.  Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;accuracy=400;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;AlwaysVisible&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Ignore LOS handling and always draw the weapon effect? Can be 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;alwaysVisible=0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;AreaOfEffect&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How large the weapon&#039;s impact explosion is.  This affects how powerful the weapon&#039;s default impulse strength will be.  Currently, BeamLasers with an AreaOfEffect of 16 or above will deform the ground at their point of impact regardless of whether it has been told not to.  Can be any numeric value, but should generally be at least 8, regardless of the type of weapon.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;areaofeffect=192;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;AvoidFeature&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;This makes the weapon avoid features while targetting (the shoot will still collide with features). Can be 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;avoidFeature=0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;AvoidFriendly&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set to 0 units will not try to avoid friendly units in their line of fire. Can be 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;avoidFriendly=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Ballistic&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Set to 1 for the weapon to be subjected to gravity, travelling in an arc through the air, such as cannons. Ballistic is mutually exclusive to LineOfSight and Dropped.  Can be 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ballistic=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;BeamDecay&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;For BeamLasers, defines the speed of the fadeout (each frame the beam&#039;s intensity is multiplied with that value). Can be between 0 and 1.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;beamDecay=0.9;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;BeamLaser&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Whether this weapon is a beam laser or not.  Beam lasers instantly hit their targets.  Rendertype must be 0.  Mutually exclusive to BeamWeapon.  Can be 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;beamlaser=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;BeamTime&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How long to fire the laser before waiting for ReloadTime to start.  Can be any numeric value.  Defaults to 1.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;beamtime=0.5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;BeamTTL&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;For BeamLasers, defines the time (in frames) the beam will stay after being fired. Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;beamTtl=10;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;BeamWeapon&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Whether this weapon is a regular laser or not.  BeamWeapons (lasers) do not instantly hit their targets, and are affected by the weaponvelocity tag.  Mutually exclusive to BeamLaser.  Can be 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;beamweapon=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;BounceRebound&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;The amount of vertical velocity a projectile keeps when it bounces. Generally .3-1, but 0 for a sticky bomb, or 2 for a flubber bomb. Defaults to 1&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;bouncerebound=.8;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;BounceSlip&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;The amount of horizontal velocity a projectile keeps when it bounces. Generally .3-1, but 0 for a sticky bomb, or 2 for a flubber bomb. Defaults to 1&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;bounceslip=.8;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;BurnBlow&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The weapon blows up when it reaches range the target was at when the weapon fired. Only works on plasma (rendertype=4) weapons and possibly missiles?  Can be 1 or 0.  A common usage is on flak guns.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;burnblow=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Burst&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How many shots are in a burst.  Must be accompanied by burstrate.  Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;burst=3;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;BurstRate&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How fast the Burst fires.  If set much below 0.1, it stops having any discernable effect.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;burstrate=0.1&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;CameraShake&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How much the camera shakes on impact. (needs the cameraShake widget to work). Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;cameraShake=5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;CanAttackGround&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;canAttackGround=0&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;CegTag&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;CegTag is the tag that emits a custom explosion every frame for a projectile. Can be used on any weapon to imitate dynamic lighting, smoke, fire, ball lightning, magic and many other things. Enter the name of your effect to make it emit once per frame.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;cegtag=MISSILE_SMOKE_FX;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Color&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;An obsolete tag only recognized for compatibility purposes. While this still works for lasers, using rgbcolor=X X X; is a much, much better route. Plus, the RGBColor tag will override any color=x; tags in the tdf. &amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;color=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Color2&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;An obsolete tag only recognized for compatibility purposes.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;color=2;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ColorMap&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Only used by flamethrower. Must be a CColorMap type.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;colorMap=1 0 0 1 &amp;amp;nbsp;0 1 0 1;&amp;lt;br&amp;gt;(red to green fade)&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;CollideFriendly&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set to 0 this weapon will not hit friendly units. Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;collisionFriendly=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;CollisionSize&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Defines the physical size of projectiles, percentage of size for flamethrower and absolute value emg, plasma and laser. Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;collisionSize=30;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;CommandFire&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;When ordered to attack ground this weapon will only fire once, rather than continuously. This does not work when ordered to attack units (It will continue to fire until the target is dead). If the unit has CanDgun=1 in its FBI, commandfire will identify that weapon with the dgun button. The weapon wont fire unless the dgun button is pressed. Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;commandfire=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;CoreThickness&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Thickness of the core of a laser (the part which use rgbcolor2).  Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;coreThickness=0.25;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Coverage&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The range for anti-weapon weapons, like antinukes.  This will be shown on the minimap as a guide.  Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;coverage=1280;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;CraterBoost&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Adds a constant factor to the terraform the explosion does. Can be any numeric value. (default 0)&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;craterMult=0.1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;CraterMult&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Multiplies with the terraform the explosion does. Can be any numeric value. (default :=impulsFactor)&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;craterMult=1.2;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;CylinderTargetting&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If greater than 0, range will be checked in a cylinder instead of a sphere:&lt;br /&gt;
half height=unitradius*cylinderTargetting&lt;br /&gt;
Defaults to 1 for Melee type weapons, 0 otherwise. In 0.76b1, does not work with BeamLaser weapons.([http://spring.clan-sy.com/phpbb/viewtopic.php?p=219659#p219659 image])&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;cylinderTargetting=0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Dance&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;For missles, unlike wobble it doesn&#039;t rotate the missile and it prevents the missile from going too far off course so a dancing swarm will remain coherent. Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;dance=97;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Dropped&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Sets the weapon to be dropped, like from a bomber.  Must be RenderType=6 and needs the Model tag to be specified.  Mutually exclusive to Ballistic and LineOfSight.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;dropped=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Duration&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;For how many seconds a beam weapon will be fired before waiting for reload time.  Also controls the length of the beam in BeamWeapon projectiles.  Can be any numeric value.  Used for rendertype 0 and 7 weapons.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;duration=.5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;DynDamageExp&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Exponent of the range damage formula, 0 (the default) disables dynamic damage. 1 means linear scaling. Only used by BeamLasers and LightingCannons. Can be any numeric value. ([http://spring.clan-sy.com/phpbb/viewtopic.php?p=263438#p263438 image])&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;dynDamageExp=0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;DynDamageInverted&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Inverts the damage curve (more damage at far range). Only used by BeamLasers and LightingCannons. Can be 0 or 1.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;dynDamageInverted=0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;DynDamageMin&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Minimum dynamic range damage value. Only used by BeamLasers and LightingCannons. Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;dynDamageMin=0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;DynDamageRange&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set it will use this value in the dynamic range damage formula instead of the range value from the weapon in the calculation. Only used by BeamLasers and LightingCannons. Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;DynDamageRange=400;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;EdgeEffectiveness&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Determines what percent of a weapon&#039;s maximum damage value will be applied to units as they are closer to the outer edge of the weapon&#039;s AreaOfEffect.  Must have a decimal value between 0 and 1.  Default in OTA was 0, probably the same in Spring. ([http://spring.clan-sy.com/phpbb/viewtopic.php?p=251180#p251180 image])&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;edgeEffectiveness=0.25;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;EnergyPerShot&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Energy used per shot.  If the specified amount of energy is not available, the weapon will not be able to shoot.  Can also be used to specify how much a Stockpile weapon wll cost to build.  Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;energypershot=5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ExplosionSpeed&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Explosion animation speed/time. (only used by BeamLaser and LightingCannon?) default:&lt;br /&gt;
gd=max(30, DefaultDamage/20);&amp;lt;br&amp;gt;&lt;br /&gt;
expSpeed=(8+(gd*2.5))/(9+(sqrt(gd)*.7))/2;&amp;lt;br&amp;gt;&lt;br /&gt;
Can be any numeric value.&lt;br /&gt;
&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;explosionSpeed=5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;FallOffRate&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Rate at which the beamweapon fades out after it goes past its maximum range. 0 is never fade out, 1 is finish fading out exactly at max range, the default 0.5 is the previous behaviour.&lt;br /&gt;
	&amp;lt;TD&amp;gt;FallOffRate=0.5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;FireStarter&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How likely the weapon will set trees on fire.  High values make trees likey to be set on fire, low values make trees likely to just explode or tip over.  Can be any numeric value between 0 and 100.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;fireStarter=75;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;FireSubmersed&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set the weapon can fire underwater, if not then not. Use it for weapons that cannot fire underwater but can hit underwater targets. Works even for torpedoes. Can be 0 or 1.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;fireSubmersed=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;FixedLauncher&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;For missiles, starburst missiles and torpedoes, this makes the projectile spawn with the orientation of the shooting piece instead of their normal orientation. The weapon will not properly check if allies are in the way so make sure you align the launchers in a way that won&#039;t hammer right into your own forces and perhaps use collideFriendly=0. FixedLauncher conflicts with trajectoryHeight and IMO combining them is pointless anyway so don&#039;t use both on a weapon. Can be 0 or 1.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;fixedLauncher=0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;FlameGFXTime&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Makes the flamethrower projectile stay alive as a graphical effect (doesnt do any damage) after it has reached maxrange. It is defined in percent, so 1.2 makes it remain 20% beyond maxrange. Can be any numeric value. &lt;br /&gt;
	&amp;lt;TD&amp;gt;flamegfxtime=1.2;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;FlightTime&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;flightTime=10;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;GroundBounce&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Weather the weapon projectile will bounce on the ground (on land or the ocean floor). Can be 0 or 1, defaults to 0 (off)&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;groundbounce=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Guidance&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Specifies whether or not the weapon is capable of correcting its trajectory mid-flight. Will not track a moving target. Works only on missile and torpedo weapons.  Can be set to 1 or 0.  See TurnRate for information on specifying how well a weapon can track a target.  Requires rendertype=1, lineofsight=1, and selfprop=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;guidance=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;HardStop&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;For LaserCannon, defined if the laser effect hard stops or fade out. Can be 0 or 1.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;hardStop=0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;HeightBoostFactor&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Gives control of cannon height range boost (more than 1 means increased range, 0 means the cannon has fixed range regardless of height difference to target. default is a magic value calculated on weapon init, based on range tag and theoretical max range.). Can be any numeric value, including negative ones (&amp;lt;0 := automatically calculated).&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;heightBoostFactor=-1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;HeightMod&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Changes the sphere weapon range into an ellipsis. If it is larger 1.0 the weapon can&#039;t shoot as height as far, i.e. 0.5 means it can shoot twice as height as far ([http://spring.clan-sy.com/phpbb/viewtopic.php?p=219659#p219659 image]). Note that this may not work well with beam weapons, use minIntensity (0..1) tag to fix that.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;heightMod=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ImpulseBoost&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;A constant factor added on the weapon&#039;s impulsefactor.  Can be any numeric value, including negative ones.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;impulseBoost=0.5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ImpulseFactor&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The multiplier on the weapon&#039;s default impulsefactor, which is determined based on a weapon&#039;s default damage and AreaOfEffect.  The impulse of a weapon is how strong of a kinetic force will be applied to its target or anything near the point of impact.  Can be any numeric value, including negative ones.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;impulsefactor=2.5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Intensity&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Alpha (brighness and washout effect) of the weapon.  Can be used on any rendertype 0, 3, or 4 weapon.  Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;intensity=1.5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;InterceptedByShieldType&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Bitfield representing the types of shields that can intercept this weapon. The best way to think about this is to think of it as the resulting binary. Every digit of binary that is set to one means that a shield with that digit set to one will intercept this weapon, for instance, the example will result in the weapons being blocked by shields with types 1 and/or 3. Maxium of 32 unique types. See [[Shield Interception Tag Use]].&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;InterceptedByShieldType=5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Interceptor&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Can intercept missiles with the Cruise tag.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;interceptor=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;LargeBeamLaser&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set to 1 a beamlaser uses an alternate graphics effect. Can be 0 or 1.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;largeBeamLaser=0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;LaserFlareSize&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Size of the flare for laser weapons, multiplier for thickness. Can be set to any numeric value. (default: 15)&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;laserFlareSize=15;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Leadbonus&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Is multiplied with the unit&#039;s experience and added to the lead limit.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;leadbonus=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;LeadLimit&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Limits the maximum distance a unit will lead a target (default is -1 which means infinite).&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;leadLimit=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;LineOfSight&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;NOT SUPPORTED BY SPRING!&amp;lt;br&amp;gt;&lt;br /&gt;
It is only used to detect the weapontype of ota weapon configs.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;LodDistance&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Minimum camera distance at which the default beamweapon projectile is simplified to rectangle. Can be set to any numeric value. (default: 1000)&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;lodDistance=1000;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ManualBombSettings&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;For Bombers, use burst and burstrate tags instead of hardcoded values.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;manualBombSettings=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;MetalPerShot&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Metal used per shot.  If the specified amount is not available, the weapon cannot be fired.  Can also be used to specify how much a Stockpile weapon wll cost to build.  Can be set to any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;metalpershot=500;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;MinIntensity&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;For beamlasers - always hit with some minimum intensity (a damage coeffcient normally dependent on distance - range 0 to 1). Can be set to any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;minIntensity=0.1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Model&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The 3DO or S3O model to be used as this weapon&#039;s physical representation.  3DO modesl do not need a .3do extension, but S3O weapon do.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;model=missile;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;MovingAccuracy&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;A weapon&#039;s accuracy while moving.  See Accuracy.  Can be any numeric value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;movingaccuracy=1000;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;MyGravity&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;For ballistic weapons (Cannon and Bomb), it overrides the map gravity if used. Regular map gravity is around 0.2.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;myGravity=0.2;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;NoExplode&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Whether or not the weapon will explode on impact or continue on its path.  An example is the d-gun.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;noexplode=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;NoSelfDamage&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;This weapon will not damage the unit that fired it.  For instance, a nuke silo could shoot itself and not take any damage if this was active.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;noselfdamage=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;NumBounce&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The maximum number of times a weapon will bounce. -1 for infinite. Defaults to -1&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;numbounce=5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Paralyzer&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If active, this weapon will not cause any damage to its target, but will instead paralyze (aka EMP).  The default damage value of a weapon with this active will be applied to the target&#039;s HP; once the HP is overwhelmed, it will be paralyzed.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;paralyzer=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ParalyzerTime&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;On Paralyzer weapons, determines the maximum length of time the target will be paralyzed (In seconds?). The timer is refreshed every time the target is hit by the weapon. Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;paralyzetime=10;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;PredictBoost&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;No idea what it does. Default 0 for non-burnblow, 0.5 for burnblow weapons. Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;predictBoost=15;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Projectiles&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The weapon fires this many projectiles at once (shotgun style). Make sure you put them on different trajectories somehow (sprayangle or different firepoints) because otherwise they&#039;ll all be clumped in one shot. Works well combined with bursts. Can be set to any integer value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;projectiles=1o;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ProximityPriority&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Acts as a multiplier for the distance to the target in the priority calculation. Note that negative values make weapons prefer distant targets. Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;proximityPriority=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;PulseSpeed&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;On LargeBeamLaser, how fast the pulsating effect at the beam start is. Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;pulseSpeed=15;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Range&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The maximum range of the weapon.  If set to noexplode, the weapon will disappear after this range has been met.  If set to burnblow, the weapon will explode after this range has been met.  Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;range=750;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ReloadTime&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The amount of time between shots.  If a unit is paralyzed, this stops counting down.  Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;reloadtime=3.5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Rendertype&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The way the weapon will be displayed.  Certain rendertypes are incompatibile with other tags, but it&#039;s generally for a logical reason.  The rendertypes are as follows: 0 - Laser, 1 - Model, 3 - Plasma, 4 - Unit explosion (usally), 5 - Flamethrower, 6 - Dropped, 7 - Lightning.  There&#039;s no documented use of rendertype=2 in OTA, and it probably doesn&#039;t do anything in Spring.  3 and 4 are usually interchangeable, both can be used to render a plasma/EMG/whatever shot; this is probably for compatibility.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;rendertype=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;RGBColor&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The color of the rendertype 0, 3, 4, 7 weapon, specified in RED_GREEN_BLUE format.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;rgbcolor=1 0.3 1; - this would make evul-purple&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;RGBColor2&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The color at the core of a rendertype 0 (laser) weapon.  Specified the same as above.  Defaults to white.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;RGBColor2=0 1 0; - this would make a weird green middle for the evul-purple laser&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ScrollSeed&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Only used by LargeBeamLaser. How fast the beam apears to be moving towards it target. Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;scrollSeed=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Selfprop&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Required for Guidance tag.  This weapon can propel itself and can have things like acceleration, rather than always travelling at one speed.  See Guidance, StartVelocity, WeaponAcceleration, WeaponVelocity.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;selfprop=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Size&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Defines the visible size of projectiles. Can be set to any numerical value. Default size is 2 + min(damage / 400, areaOfEffect / 10).&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;size=10;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SizeGrowth&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Defines how fast flame projectiles will grow in size. Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;sizegrowth=0.6;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SmokeTrail&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Does the projectile leave a smoke trail or not.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;smoketrail=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SoundHit&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The sound made whe the weapon hits.  Must reference a .wav file in the .\Sounds directory.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;soundhit=emghit;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SoundHitVolume&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Can be any numerical value between 0 and 1.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;soundhitvolume=0.5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SoundStart&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The sound made when the weapon begins to fire.  Will fire only once if the weapon is shot in a burst.  Must reference a .wav file in the .\Sounds directory.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;soundstart=emgfire;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SoundStartVolume&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Can be any numerical value between 0 and 1.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;soundstartvolume=0.5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SoundTrigger&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If active, the weapon will sound every time a shot is fired in a burst sequence.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;soundtrigger=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SprayAngle&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How wide the the angle of a burst from a burst weapon can be.  Very similar to Accuracy, except that if a weapon has no sprayangle, all the shots will be fired at the same spot, even if the weapon&#039;s aim is off.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;sprayangle=1024;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;StartVelocity&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The starting speed of the weapon as it is first fired.  Only applicable to weapons that can accelerate.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;startvelocity=200;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Stockpile&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Can this weapon be stockpiled, for instance like a nuke launcher.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;stockpile=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SubMissile&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;For TorpedoLaunchers, if set to 1 the torpedo will travel like a missile outside of water. It will not emit a smoketrail, though. When fired from a plane it will behave the same way but the plane will probably be considered a fighter, not a bomber. Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;subMissile=0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SweepFire&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If 1 (default 0) it will make the weapon continue firing while it aims for a new target. Only works on continous beam lasers currently. Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SweepFire=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;TargeBorder&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If nonzero, targetting units will TryTarget at the edge of collision sphere (radius*tag_value, [-1;1]) instead of its centre. Can be set between 0 and 1. Defaults to 1 for Melee type weapons, 0 otherwise. ([http://spring.clan-sy.com/phpbb/viewtopic.php?p=219659#p219659 image])&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;targetBorder=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Targetable&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If active, the weapon will be automatically targeted by any Interceptor weapons.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;targetable=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;TargetMoveError&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The degree to which a weapon&#039;s aiming will fail to keep up with its target&#039;s movement.  If set very low or not set at all, a weapon will lead its target and almost always hit unless there&#039;s a lot of micromanagement on the part of the person controlling the target.  If set too high (about 0.3 or above), the weapon will have a lot of difficulty even tracking its target enough to get a shot off.  Can probably only be set between 0 and 1.  Beyond 1, the weapon would be virtually useless.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;targetmoveerror=0.15;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Thickness&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Thickness of a beamweapon or beamlaser, default is 2.  Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;thickness=4;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;TileLength&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Only used by LargeBeamLaser. Defines the length before the texture used is repeated (tiled).&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;tileLength=4;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ToAirWeapon&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If active, the weapon will only be capable of targetting units which are flying, or are capable of flying.  Can be set to 0 or 1.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;toairweapon=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Tolerance&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The amount to which the weapon&#039;s &amp;quot;real&amp;quot; aim can be off while the weapon will still be able to fire accurately at the target.  This worked in OTA, but I&#039;m not 100% sure if it works in Spring.  Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;tolerance=1500;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Tracks&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If the missile tracks a moving target. Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;tracks=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;TrajectoryHeight&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The height of the arc of a missile weapon. It is useful for compensating for mountains or debris. Is relative to the weapons speed (Higher speed, higher arc) and the range the weapon is firing at (Lower range lower arc). Requires Guidance and Turnrate to hit its target when over 1. &amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;trajectoryheight=0.8;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Turnrate&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How fast a guided weapon can turn.  Can be any numerical value between 0 and 64000.  If set to 0, the weapon can&#039;t turn at all, if set to 64000, the weapon can literally defy all known physics and turn 180 degrees in a fraction of a second.  This is relative to a weapon&#039;s velocity; a weapon with a very low velocity (~200) wouldn&#039;t need a very high turnrate to keep up with a fighter, although it would probably never catch it because of its slow speed.  A weapon with a very high velocity (~1000) would need a very high value in order to be able to hit targets that turn suddenly.&lt;br /&gt;
	&amp;lt;TD&amp;gt;turnrate=32000;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Turret&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Set to 1 if weapon is used by a turret that rotates. Set to 0 if weapon is forward firing, ie, has no rotating turret piece.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;turret=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;TwoPhase&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Weapon operates in two phases... eh... yeah, I honestly have no idea what the difference between this and VLaunch is.  Generally use it with VLaunch as well.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;twophase=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;VLaunch&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Set to 1 to launch the weapon vertically.  Can only be used with missile-type weapons with a TurnRate.  Cannot be used at the same time as Turret.  Set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;vlaunch=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;WaterBounce&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Weather the weapon projectile will bounce on the surface of the water. Can be 0 or 1, defaults to 0 (off)&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;waterbounce=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;WaterWeapon&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Water weapons behave somewhat like Dropped weapons out of water, and like missiles underwater. Is the only type of weapon that can fire under water.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;waterweapon=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;WeaponAcceleration&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Tells the weapon how fast it should accelerate from its StartVelocity to its actual WeaponVelocity.  Increases the weapon&#039;s velocity every second by the amount specified.  Can be any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;weaponacceleration=50;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;WeaponTimer&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;;How long until the weapon will go into its second phase.  For use with missile weapons.  For VLaunch weapons, the weapon will turn to actually go towards its target after the specified number of seconds has expired.  For non-VLaunch missiles with a TurnRate, the weapon will go randomly off-course after this period of time.  Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;weapontimer=5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;WeaponVelocity&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The speed the weapon moves after being fired. If StartVelocity is lower than this number, the weapon will increase speed to its WeaponVelocity at the rate specified by its WeaponAcceleration.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;weaponvelocity=800;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Wobble&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The amount that a missile will wobble off-course. Requires TurnRate. Turnrate will wrestle with wobble to keep the weapon on course, so wobble must be high enough to compensate to have any effect. Can be set to any numerical value between 0 and 64000.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;wobble=15000;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
NOTE: Variables that are defined by either a 1 or a 0 are BOOLEAN, where 1 means TRUE and 0 means FALSE.&lt;br /&gt;
&lt;br /&gt;
NOTE 2: &amp;quot;Any numerical value&amp;quot; for things that relate to angles really means any value between 0 and 64,000 since that&#039;s between 0 and 360 degrees in spring measurement. Setting it higher than 64,000 will bring it &#039;full circle&#039; so to speak.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Texture Tags=&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;table width=500 border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 1em; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;th&amp;gt; Weapon &amp;lt;/th&amp;gt;&amp;lt;th&amp;gt; Used Texture Tags &amp;lt;/th&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;AircraftBomb&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;texture1 = projectile&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;BeamLaser&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;texture1 = beam&amp;lt;br&amp;gt;texture2 = beamend&amp;lt;br&amp;gt;texture3 = flare&amp;lt;br&amp;gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;PlasmaCannon&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;texture1 = projectile&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;EmgCannon&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;texture1 = projectile&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;FlameThrower&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;texture1 = flame&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;LargeBeamLaser&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;texture1 = beam&amp;lt;br&amp;gt;texture2 = beamend&amp;lt;br&amp;gt;texture3 = muzzle&amp;lt;br&amp;gt;texture4 = flare&amp;lt;br&amp;gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;LaserCannon&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;texture1 = beam&amp;lt;br&amp;gt;texture2 = beamend&amp;lt;br&amp;gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;LightingCannon&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;texture1 = beam&amp;lt;br&amp;gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;MissileLauncher&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;texture1 = flare&amp;lt;br&amp;gt;texture2 = smoketrail&amp;lt;br&amp;gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Shield&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;texture1 = shield&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;StarburstLauncher&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;texture1 = flare&amp;lt;br&amp;gt;texture2 = smoketrail&amp;lt;br&amp;gt;texture3 = flame&amp;lt;br&amp;gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;TorpedoLauncher&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;texture1 = projectile&amp;lt;br&amp;gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
NOTE: All textures need to be `atlased`. So you have to define them in the &#039;&#039;&#039;resources.tdf&#039;&#039;&#039; and use the reference name in the texture tags.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Plasma Visuals=&lt;br /&gt;
&amp;lt;table width=730 border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;th&amp;gt;Variable &amp;lt;/th&amp;gt;&amp;lt;th&amp;gt; Description &amp;lt;/th&amp;gt;&amp;lt;th&amp;gt; Examples&amp;lt;/Th&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;AlphaDecay&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How much a plasma particle is more transparent than the previous particle. Can be set to any numerical value. (default: 1)&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;AlphaDecay=0.95;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;NoGap&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set to 1, the distance between plasma particles is proportional to the size of the two particles. If set to 0, the distance between plasma particles will be proportional to the size of the first particle.&lt;br /&gt;
Can be set to 1 or 0. (default: 1)&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;NoGap=0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Separation&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Distance between each plasma particle.  Can be set to any number value. (default: 1)&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Separation=5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SizeDecay&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How much a plasma particle is smaller than the previous within the same plasma shot. Can be set to any numerical value. (default: 0)&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SizeDecay=0.2;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Stages&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Number of particles used in one plasma shot.  Can be set to any number value. (default: 5)&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Stages=20;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Shield/Repulsor Descriptions=&lt;br /&gt;
&amp;lt;table width=730 border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;th&amp;gt;Variable &amp;lt;/th&amp;gt;&amp;lt;th&amp;gt; Description &amp;lt;/th&amp;gt;&amp;lt;th&amp;gt; Examples&amp;lt;/Th&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ExteriorShield&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set to 1, the shield/repulsor will not have any effect on weapons fired from within its field.  Can be 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;exteriorshield=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;IsShield&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set to 1, this &amp;quot;weapon&amp;quot; is no longer a weapon, is now a repulsor or a shield, based on the other properties given to it.  Can be 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;isshield=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldAlpha&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How clearly visible the shield is, if you have VisibleShield turned on.  Value is between 0 and 1.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;shieldalpha=0.4;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldEnergyUse&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The amount of energy used to repulse or destroy weapons.  Will be used constantly while the weapon is in its area of effect if it is a repulsor, will be used only once on impact if it is a shield.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;shieldenergyuse=1500;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldForce&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The force applied to weapons, an arbitrary number.  Set to 1, it will not deflect very well.  Only for use on repulsor-type.  Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;shieldforce=1.75;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldBadColor&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The color the shield is when it is at 0% strength, if you have VisibleShield turned on.  Defined in R G B format.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;shieldbadcolor=0 1 0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldGoodColor&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The color the shield is when it is at 100% strength, if you have VisibleShield turned on.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;shieldgoodcolor=1 0 0;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldInterceptType&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Bitfield representing the types of weapons that this shield can intercept. The best way to think about this is to think of it as the resulting binary. Every digit of binary that is set to one means that a weapon with that digit set to one will be intercepted by this shield, for instance, the example will result in the shield blocking weapons with types 2 and/or 3. Maxium of 32 unique types. See [[Shield Interception Tag Use]].&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldInterceptType=6;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldMaxSpeed&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;The maximum speed the repulsor will push weapons away at.  Only for use on repulsor-type.  Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;shieldmaxspeed=400;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldPower&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How much &amp;quot;power&amp;quot; a shield can store.  &amp;quot;Power&amp;quot; is not the same as energy; think of it as the shield/repulsor&#039;s private battery source.  It can be drained completely by defending against weapons, even if you have lots of energy.  &#039;&#039;Power is drained by the affected weapons damage.&#039;&#039;  Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;shieldpower=1000;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldPowerRegen&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How quickly the shield regenerates its &amp;quot;power&amp;quot;, even when under attack.  Regenerates the amount specified every second.  Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;shieldpowerregen=25;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldPowerRegenEnergy&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;How much energy is required to keep the shield regenerating its &amp;quot;power&amp;quot;.  For instance, you might have it set so that 100 units of energy are necessary for every 25 units of &amp;quot;power&amp;quot;.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;shieldpowerregenenergy=100;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldRadius&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Defines the size of the area the shield/repulsor protects.  Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;shieldradius=500;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldRepulsor&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set to 1, the &amp;quot;shield&amp;quot;-type weapon will repulse projectiles.  If set to 0, it will destroy them.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;shieldrepulsor=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;ShieldStartingPower&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set the shield starts with this much power instead of 0.  Can be set to any numerical value.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;shieldStartingPower=100;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;SmartShield&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set to 1, the shield/repulsor will not affect owned/allied weapons.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;smartshield=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;VisibleShield&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set to 1, the shield will be visible.  Only for use on shield-type.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;visibleshield=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;VisibleShieldHitFrames&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;Numbers of frames how long the shield should be visible after it got hit (the alpha value fades after the hit).  Can be set to any numerical value. (default: 0 frames)&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;visibleShieldHitFrames=5;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;VisibleShieldRepulse&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;If set to 1, the repulsing effect will be visible.  Only for use on repulsor-type.  Can be set to 1 or 0.&amp;lt;/TD&amp;gt;&lt;br /&gt;
	&amp;lt;TD&amp;gt;visibleshieldrepulse=1;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Weapons]]&lt;br /&gt;
&lt;br /&gt;
[[category:Shields]]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1907</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1907"/>
		<updated>2008-06-02T05:08:55Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Some (but not all) are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Callins have two purposes:&lt;br /&gt;
&lt;br /&gt;
First, they allow a script to be notified when an event happens, such as the unit being created or destroyed.&lt;br /&gt;
&lt;br /&gt;
Second, they allow the engine to get information from the script. Sometimes this is accomplished through a return value, but usually this is done by setting one of the arguments to a function to the requested value.&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
*Create(): Called when the unit is created. &amp;quot;Created&amp;quot; means when the unit&#039;s nanoframe is created; if you want to wait until the unit is actually finished, you&#039;ll have to use something like &lt;br /&gt;
&lt;br /&gt;
 while(GET BUILD_PERCENT_LEFT) sleep 250; &lt;br /&gt;
&lt;br /&gt;
*Activate()/Deactivate(): Called when the unit is turned on/off.&lt;br /&gt;
*Killed(severity, corpsetype): Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
*StartMoving()/StopMoving(): Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
*SetSFXOccupy(terraintype): Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
*MoveRate[0...3](): Appears to be the aircraft equivalent of SetSFXOccupy. MoveRate3 doesn&#039;t appear to actually be used. MoveRate1 is called when the aircraft takes off or lands. If the aircraft is not taking off or landing, MoveRate0 is called when the aircraft drops below 1/3 maximum speed, MoveRate2 is called when the aircraft exceeds 2/3 maximum speed, and MoveRate1 is called when the aircraft enters within 1/3-2/3 maximum speed. I don&#039;t know if this actually works.&lt;br /&gt;
*SetDirection(heading): Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
*SetSpeed(speed): Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
*AimWeaponX(heading, pitch): Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
*AimFromWeaponX(piecenum): You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
*FireWeaponX(): Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
*ShotX(): Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;br /&gt;
*QueryWeaponX(piecenum): You should set piecenum to a piece of the model. The shot starts from this piece of the model; this is called for this purpose after FireWeaponX() and ShotX(). LOS is also traced from here to the target to see if a weapon can fire. Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
*EndBurstX(): Called after the last shot in a burst.&lt;br /&gt;
*BlockShotX(unitID, block)&lt;br /&gt;
*TargetWeightX(unitID, weightMod)&lt;br /&gt;
*RockUnit(anglex, anglez): Called when the unit fires. Use it to rock the unit on firing, although there are other ways to do this.&lt;br /&gt;
*HitByWeaponID(damage, weaponid?, unitid?): Called when the unit is hit by a weapon.&lt;br /&gt;
*SetMaxReloadTime(time): Called on unit creation. time is the time in ms that it takes the slowest-firing weapon to reload.&lt;br /&gt;
&lt;br /&gt;
===Construction===&lt;br /&gt;
&lt;br /&gt;
*StartBuilding(): Called when the unit starts building.&lt;br /&gt;
*StopBuilding(): Called when the unit stops building.&lt;br /&gt;
*QueryNanoPiece(piecenum): You should set piecenum to the piece you want the nanospray to come from.&lt;br /&gt;
*QueryBuildInfo(piecenum): For factories. You should set piecenum to the piece you want the unit to be built on.&lt;br /&gt;
&lt;br /&gt;
===Transportation===&lt;br /&gt;
*Falling(): Used for airdropping units?&lt;br /&gt;
*Landed(): Used for airdropping units?&lt;br /&gt;
*QueryTransport(piecenum): You should set piecenum to the piece you want the transported unit to be attached to.&lt;br /&gt;
*BeginTransport(): Called when an air transport picks up a unit.&lt;br /&gt;
*EndTransport(): Called when an air transport becomes empty.&lt;br /&gt;
*TransportPickup(): Called when a land transport picks up a unit.&lt;br /&gt;
*TransportDrop(): Called when a land transport becomes empty.&lt;br /&gt;
*StartUnload(): Called when the transport starts the unloading process.&lt;br /&gt;
&lt;br /&gt;
===Landing Pads===&lt;br /&gt;
*QueryLandingPadCount(count): You should set count to the number of landing pads. However, it doesn&#039;t seem to be actually necessary to do this unless you want more than 16 pads.&lt;br /&gt;
*QueryLandingPad(piecenum1, piecenum2, piecenum3...): Set each piecenum to a different landing pad piece.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Weapons:Antinukes&amp;diff=19593</id>
		<title>Weapons:Antinukes</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Weapons:Antinukes&amp;diff=19593"/>
		<updated>2008-05-29T21:32:41Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What is an Antinuke?==&lt;br /&gt;
&lt;br /&gt;
An antinuke is a stockpile, vlaunch, interceptor weapon. When it detects an enemy nuke launch targeted within its coverage radius, if it has at least one antinuke missile stockpiled, it launches one to intercept the nuke.&lt;br /&gt;
&lt;br /&gt;
==Stockpile==&lt;br /&gt;
&lt;br /&gt;
Currently all stockpile weapons have a hardcoded 2s reload time between shots (this is different than the stockpile time).&lt;br /&gt;
&lt;br /&gt;
==Interception Basics==&lt;br /&gt;
&lt;br /&gt;
Only one antinuke attempt will ever be made on a given nuke. If the antinuke misses, the nuke is home free.&lt;br /&gt;
&lt;br /&gt;
The antinuke follows a pure pursuit course. That means it will attempt to turn toward the nuke&#039;s current position.&lt;br /&gt;
&lt;br /&gt;
An antinuke will detonate a nuke by passing within twice its area of effect of the nuke. It can only detonate the nuke that it is targeted at.&lt;br /&gt;
&lt;br /&gt;
The nuke and antinuke actually do explode, so if they are close to the ground when this happens, anything nearby will take damage.&lt;br /&gt;
&lt;br /&gt;
Nuke and antinukes WILL collide with units. They will not collide with friendlies if you set collideFriendly to be false.&lt;br /&gt;
&lt;br /&gt;
==Interception Success and Time==&lt;br /&gt;
&lt;br /&gt;
===Distance===&lt;br /&gt;
&lt;br /&gt;
The closer the nuke is to the antinuke, the shorter the time the antinuke has to intercept the nuke. However, the antinuke also has a better chance of catching the nuke when it is traveling slowly.&lt;br /&gt;
&lt;br /&gt;
===areaOfEffect===&lt;br /&gt;
The greater the area of effect of the antinuke, the more tolerance it has for not meeting the nuke exactly.&lt;br /&gt;
&lt;br /&gt;
===weaponTimer===&lt;br /&gt;
For vlaunch weapons, weaponTimer controls how long the missile will go upwards before turning towards its target; as such, it also affects the missile&#039;s maximum altitude. A short weaponTimer on an antinuke shortens the intercept time; a short weaponTimer on the nuke means that the antinuke has less time to intercept the nuke. Note that a very short weaponTimer on the antinuke can cause the interception to happen close to the nuke silo.&lt;br /&gt;
&lt;br /&gt;
===turnRate===&lt;br /&gt;
Since the antinuke does not lead its target, a low turnRate can cause the antinuke to miss, especially if the nuke and/or antinuke is very fast. It has less of an effect on the nuke.&lt;br /&gt;
&lt;br /&gt;
===weaponAcceleration===&lt;br /&gt;
vlaunch weapons continue accelerating after they turn towards their target.&lt;br /&gt;
&lt;br /&gt;
===weaponVelocity===&lt;br /&gt;
If the antinuke is slower or not much faster than the nuke, it will be unlikely to intercept it if it misses on the initial pass.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Weapons:Antinukes&amp;diff=19592</id>
		<title>Weapons:Antinukes</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Weapons:Antinukes&amp;diff=19592"/>
		<updated>2008-05-29T21:29:09Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: New page: ==What is an Antinuke?==  An antinuke is a stockpile, vlaunch, interceptor weapon. When it detects an enemy nuke launch targeted within its coverage radius, if it has at least one antinuke...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What is an Antinuke?==&lt;br /&gt;
&lt;br /&gt;
An antinuke is a stockpile, vlaunch, interceptor weapon. When it detects an enemy nuke launch targeted within its coverage radius, if it has at least one antinuke missile stockpiled, it launches one to intercept the nuke.&lt;br /&gt;
&lt;br /&gt;
==Stockpile==&lt;br /&gt;
&lt;br /&gt;
Currently all stockpile weapons have a hardcoded 2s reload time between shots (this is different than the stockpile time).&lt;br /&gt;
&lt;br /&gt;
==Interception Basics==&lt;br /&gt;
&lt;br /&gt;
Only one antinuke attempt will ever be made on a given nuke. If the antinuke misses, the nuke is home free.&lt;br /&gt;
&lt;br /&gt;
The antinuke follows a pure pursuit course. That means it will attempt to turn toward the nuke&#039;s current position.&lt;br /&gt;
&lt;br /&gt;
An antinuke will detonate a nuke by passing within twice its area of effect of the nuke. It can only detonate the nuke that it is targeted at.&lt;br /&gt;
&lt;br /&gt;
The nuke and antinuke actually do explode, so if they are close to the ground when this happens, anything nearby will take damage.&lt;br /&gt;
&lt;br /&gt;
==Interception Success and Time==&lt;br /&gt;
&lt;br /&gt;
===Distance===&lt;br /&gt;
&lt;br /&gt;
The closer the nuke is to the antinuke, the shorter the time the antinuke has to intercept the nuke. However, the antinuke also has a better chance of catching the nuke when it is traveling slowly.&lt;br /&gt;
&lt;br /&gt;
===areaOfEffect===&lt;br /&gt;
The greater the area of effect of the antinuke, the more tolerance it has for not meeting the nuke exactly.&lt;br /&gt;
&lt;br /&gt;
===weaponTimer===&lt;br /&gt;
For vlaunch weapons, weaponTimer controls how long the missile will go upwards before turning towards its target; as such, it also affects the missile&#039;s maximum altitude. A short weaponTimer on an antinuke shortens the intercept time; a short weaponTimer on the nuke means that the antinuke has less time to intercept the nuke. Note that a very short weaponTimer on the antinuke can cause the interception to happen close to the nuke silo.&lt;br /&gt;
&lt;br /&gt;
===turnRate===&lt;br /&gt;
Since the antinuke does not lead its target, a low turnRate can cause the antinuke to miss, especially if the nuke and/or antinuke is very fast. It has less of an effect on the nuke.&lt;br /&gt;
&lt;br /&gt;
===weaponAcceleration===&lt;br /&gt;
vlaunch weapons continue accelerating after they turn towards their target.&lt;br /&gt;
&lt;br /&gt;
===weaponVelocity===&lt;br /&gt;
If the antinuke is slower or not much faster than the nuke, it will be unlikely to intercept it if it misses on the initial pass.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7938</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7938"/>
		<updated>2008-05-29T21:10:57Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;filehosting at 20080405:&lt;br /&gt;
&lt;br /&gt;
http://www.tasdownloads.com/faq.php&lt;br /&gt;
&lt;br /&gt;
http://spring.jobjol.nl/subcategory.php?id=1&amp;amp;language=English&lt;br /&gt;
&lt;br /&gt;
http://spring-portal.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mod development=&lt;br /&gt;
Mods, next to Maps, is the content used in Spring.&amp;lt;br&amp;gt;&lt;br /&gt;
A mod is simply a combined file containing a small structure of files and directories holding all the data required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Mod_Development | Mod Development]] wiki is a starting page, linking to very useful information on the files included in a mod, their hierarchy and more.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Almost the entire mod developing is the creation of units. Which isn&#039;t an easy job.&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the creation of units are everywere, but not combined.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a gathered list of all Tutorials and helpfull forums threads I could find:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
*http://taspring.clan-sy.com/wiki/Create_units - old Wiki&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Mod Development]]&lt;br /&gt;
*[[Mod specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6015 What do I need to create a mod]&lt;br /&gt;
*[[Simple Mod Tutorial]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Models - s3o Files====&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures].&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [[Simple Mod Tutorial]]&lt;br /&gt;
* [[Units:CreateModel|UV Mapping in Wings3D]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
* [http://taspring.clan-sy.com/phpbb/viewtopic.php?p=75495 various things about unit making. (Also contains an illustrated alpha-channel tut)]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
outdated model format used by OTA&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://spring.clan-sy.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://www.fileuniverse.com/?p=show&amp;amp;a=it&amp;amp;id=305 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
====Scripting and Animation - COB/BOS Files====&lt;br /&gt;
*[[COB_Overview]]&lt;br /&gt;
*[[COB_Animation]]&lt;br /&gt;
*[[COB_Callins]]&lt;br /&gt;
*[[COB_Constants]]&lt;br /&gt;
*[[COB_Threads]]&lt;br /&gt;
*[[Image:Usa_flag.gif]][[Image:France_flag.gif]][[Units:.bos/.COB]] -all tags for make a animation file&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[http://www.tadesigners.com/bos1.htm TADesigners] have a nice tutorial too&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Mod Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Image:France_flag.gif]] [[exemples de fichiers .fbi]]&lt;br /&gt;
*[[image:usa_flag.gif]][[ all tags &amp;amp; details with a exemple ]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
*[[Weapons:Antinukes]]: All about antinukes.&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics]]&lt;br /&gt;
*[[CustomExplosionGenerators|Mod Development:Custom explosions]]&lt;br /&gt;
*[[CustomUnitIcons|Mod Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7937</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7937"/>
		<updated>2008-05-29T21:08:22Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;filehosting at 20080405:&lt;br /&gt;
&lt;br /&gt;
http://www.tasdownloads.com/faq.php&lt;br /&gt;
&lt;br /&gt;
http://spring.jobjol.nl/subcategory.php?id=1&amp;amp;language=English&lt;br /&gt;
&lt;br /&gt;
http://spring-portal.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mod development=&lt;br /&gt;
Mods, next to Maps, is the content used in Spring.&amp;lt;br&amp;gt;&lt;br /&gt;
A mod is simply a combined file containing a small structure of files and directories holding all the data required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Mod_Development | Mod Development]] wiki is a starting page, linking to very useful information on the files included in a mod, their hierarchy and more.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Almost the entire mod developing is the creation of units. Which isn&#039;t an easy job.&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the creation of units are everywere, but not combined.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a gathered list of all Tutorials and helpfull forums threads I could find:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
*http://taspring.clan-sy.com/wiki/Create_units - old Wiki&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Mod Development]]&lt;br /&gt;
*[[Mod specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6015 What do I need to create a mod]&lt;br /&gt;
*[[Simple Mod Tutorial]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Models - s3o Files====&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures].&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [[Simple Mod Tutorial]]&lt;br /&gt;
* [[Units:CreateModel|UV Mapping in Wings3D]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
* [http://taspring.clan-sy.com/phpbb/viewtopic.php?p=75495 various things about unit making. (Also contains an illustrated alpha-channel tut)]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
outdated model format used by OTA&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://spring.clan-sy.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://www.fileuniverse.com/?p=show&amp;amp;a=it&amp;amp;id=305 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
====Scripting and Animation - COB/BOS Files====&lt;br /&gt;
*[[COB_Overview]]&lt;br /&gt;
*[[COB_Animation]]&lt;br /&gt;
*[[COB_Callins]]&lt;br /&gt;
*[[COB_Constants]]&lt;br /&gt;
*[[COB_Threads]]&lt;br /&gt;
*[[Image:Usa_flag.gif]][[Image:France_flag.gif]][[Units:.bos/.COB]] -all tags for make a animation file&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[http://www.tadesigners.com/bos1.htm TADesigners] have a nice tutorial too&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Mod Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Image:France_flag.gif]] [[exemples de fichiers .fbi]]&lt;br /&gt;
*[[image:usa_flag.gif]][[ all tags &amp;amp; details with a exemple ]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
*[[Weapon_Interception]]: All about antinukes.&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics]]&lt;br /&gt;
*[[CustomExplosionGenerators|Mod Development:Custom explosions]]&lt;br /&gt;
*[[CustomUnitIcons|Mod Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7936</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7936"/>
		<updated>2008-05-29T21:07:14Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;filehosting at 20080405:&lt;br /&gt;
&lt;br /&gt;
http://www.tasdownloads.com/faq.php&lt;br /&gt;
&lt;br /&gt;
http://spring.jobjol.nl/subcategory.php?id=1&amp;amp;language=English&lt;br /&gt;
&lt;br /&gt;
http://spring-portal.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mod development=&lt;br /&gt;
Mods, next to Maps, is the content used in Spring.&amp;lt;br&amp;gt;&lt;br /&gt;
A mod is simply a combined file containing a small structure of files and directories holding all the data required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Mod_Development | Mod Development]] wiki is a starting page, linking to very useful information on the files included in a mod, their hierarchy and more.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Almost the entire mod developing is the creation of units. Which isn&#039;t an easy job.&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the creation of units are everywere, but not combined.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a gathered list of all Tutorials and helpfull forums threads I could find:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
*http://taspring.clan-sy.com/wiki/Create_units - old Wiki&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Mod Development]]&lt;br /&gt;
*[[Mod specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6015 What do I need to create a mod]&lt;br /&gt;
*[[Simple Mod Tutorial]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Models - s3o Files====&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures].&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [[Simple Mod Tutorial]]&lt;br /&gt;
* [[Units:CreateModel|UV Mapping in Wings3D]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
* [http://taspring.clan-sy.com/phpbb/viewtopic.php?p=75495 various things about unit making. (Also contains an illustrated alpha-channel tut)]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
outdated model format used by OTA&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://spring.clan-sy.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://www.fileuniverse.com/?p=show&amp;amp;a=it&amp;amp;id=305 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
====Scripting and Animation - COB/BOS Files====&lt;br /&gt;
*[[COB]]&lt;br /&gt;
*[[COB_Overview]]&lt;br /&gt;
*[[COB_Animation]]&lt;br /&gt;
*[[COB_Callins]]&lt;br /&gt;
*[[COB_Constants]]&lt;br /&gt;
*[[COB_Threads]]&lt;br /&gt;
*[[Image:Usa_flag.gif]][[Image:France_flag.gif]][[Units:.bos/.COB]] -all tags for make a animation file&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[http://www.tadesigners.com/bos1.htm TADesigners] have a nice tutorial too&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Mod Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Image:France_flag.gif]] [[exemples de fichiers .fbi]]&lt;br /&gt;
*[[image:usa_flag.gif]][[ all tags &amp;amp; details with a exemple ]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics]]&lt;br /&gt;
*[[CustomExplosionGenerators|Mod Development:Custom explosions]]&lt;br /&gt;
*[[CustomUnitIcons|Mod Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1906</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1906"/>
		<updated>2008-05-28T22:51:07Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Some (but not all) are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Callins have two purposes:&lt;br /&gt;
&lt;br /&gt;
First, they allow a script to be notified when an event happens, such as the unit being created or destroyed.&lt;br /&gt;
&lt;br /&gt;
Second, they allow the engine to get information from the script. Sometimes this is accomplished through a return value, but usually this is done by setting one of the arguments to a function to the requested value.&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
*Create(): Called when the unit is created. &amp;quot;Created&amp;quot; means when the unit&#039;s nanoframe is created; if you want to wait until the unit is actually finished, you&#039;ll have to use something like &lt;br /&gt;
&lt;br /&gt;
 while(GET BUILD_PERCENT_LEFT) sleep 250; &lt;br /&gt;
&lt;br /&gt;
*Activate()/Deactivate(): Called when the unit is turned on/off.&lt;br /&gt;
*Killed(severity, corpsetype): Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
*StartMoving()/StopMoving(): Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
*SetSFXOccupy(terraintype): Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
*MoveRate[0...3](): Appears to be the aircraft equivalent of SetSFXOccupy. MoveRate3 doesn&#039;t appear to actually be used. MoveRate1 is called when the aircraft takes off or lands. If the aircraft is not taking off or landing, MoveRate0 is called when the aircraft drops below 1/3 maximum speed, MoveRate2 is called when the aircraft exceeds 2/3 maximum speed, and MoveRate1 is called when the aircraft enters within 1/3-2/3 maximum speed. I don&#039;t know if this actually works.&lt;br /&gt;
*SetDirection(heading): Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
*SetSpeed(speed): Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
*AimWeaponX(heading, pitch): Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
*AimFromWeaponX(piecenum): You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
*FireWeaponX(): Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
*ShotX(): Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;br /&gt;
*QueryWeaponX(piecenum): You should set piecenum to a piece of the model. The shot starts from this piece of the model; this is called for this purpose after FireWeaponX() and ShotX(). LOS is also traced from here to the target to see if a weapon can fire. Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
*EndBurstX(): Called after the last shot in a burst.&lt;br /&gt;
*BlockShotX(unitID, block)&lt;br /&gt;
*TargetWeightX(unitID, weightMod)&lt;br /&gt;
*RockUnit(anglex, anglez): Called when the unit fires. Use it to rock the unit on firing, although there are other ways to do this.&lt;br /&gt;
*HitByWeaponID(damage, weaponid?, unitid?)&lt;br /&gt;
*SetMaxReloadTime(time): Called on unit creation. time is the time in ms that it takes the slowest-firing weapon to reload.&lt;br /&gt;
&lt;br /&gt;
===Construction===&lt;br /&gt;
&lt;br /&gt;
*StartBuilding(): Called when the unit starts building.&lt;br /&gt;
*StopBuilding(): Called when the unit stops building.&lt;br /&gt;
*QueryNanoPiece(piecenum): You should set piecenum to the piece you want the nanospray to come from.&lt;br /&gt;
*QueryBuildInfo(piecenum): For factories. You should set piecenum to the piece you want the unit to be built on.&lt;br /&gt;
&lt;br /&gt;
===Transportation===&lt;br /&gt;
*Falling(): Used for airdropping units?&lt;br /&gt;
*Landed(): Used for airdropping units?&lt;br /&gt;
*QueryTransport(piecenum): You should set piecenum to the piece you want the transported unit to be attached to.&lt;br /&gt;
*BeginTransport(): Called when an air transport picks up a unit.&lt;br /&gt;
*EndTransport(): Called when an air transport becomes empty.&lt;br /&gt;
*TransportPickup(): Called when a land transport picks up a unit.&lt;br /&gt;
*TransportDrop(): Called when a land transport becomes empty.&lt;br /&gt;
*StartUnload(): Called when the transport starts the unloading process.&lt;br /&gt;
&lt;br /&gt;
===Landing Pads===&lt;br /&gt;
*QueryLandingPadCount(count): You should set count to the number of landing pads. However, it doesn&#039;t seem to be actually necessary to do this unless you want more than 16 pads.&lt;br /&gt;
*QueryLandingPad(piecenum1, piecenum2, piecenum3...): Set each piecenum to a different landing pad piece.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1905</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1905"/>
		<updated>2008-05-28T22:23:37Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Some (but not all) are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Callins have two purposes:&lt;br /&gt;
&lt;br /&gt;
First, they allow a script to be notified when an event happens, such as the unit being created or destroyed.&lt;br /&gt;
&lt;br /&gt;
Second, they allow the engine to get information from the script. Sometimes this is accomplished through a return value, but usually this is done by setting one of the arguments to a function to the requested value.&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
*Create(): Called when the unit is created. &amp;quot;Created&amp;quot; means when the unit&#039;s nanoframe is created; if you want to wait until the unit is actually finished, you&#039;ll have to use something like &lt;br /&gt;
&lt;br /&gt;
 while(GET BUILD_PERCENT_LEFT) sleep 250; &lt;br /&gt;
&lt;br /&gt;
*Activate()/Deactivate(): Called when the unit is turned on/off.&lt;br /&gt;
*Killed(severity, corpsetype): Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
*StartMoving()/StopMoving(): Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
*SetSFXOccupy(terraintype): Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
*MoveRate[0...3](): Appears to be the aircraft equivalent of SetSFXOccupy. MoveRate3 doesn&#039;t appear to actually be used. MoveRate1 is called when the aircraft takes off or lands. If the aircraft is not taking off or landing, MoveRate0 is called when the aircraft drops below 1/3 maximum speed, MoveRate2 is called when the aircraft exceeds 2/3 maximum speed, and MoveRate1 is called when the aircraft enters within 1/3-2/3 maximum speed. I don&#039;t know if this actually works.&lt;br /&gt;
*SetDirection(heading): Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
*SetSpeed(speed): Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
*AimWeaponX(heading, pitch): Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
*AimFromWeaponX(piecenum): You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
*FireWeaponX(): Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
*ShotX(): Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;br /&gt;
*QueryWeaponX(piecenum): You should set piecenum to a piece of the model. The shot starts from this piece of the model; this is called for this purpose after FireWeaponX() and ShotX(). LOS is also traced from here to the target to see if a weapon can fire. Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
*EndBurstX(): Called after the last shot in a burst.&lt;br /&gt;
*BlockShotX()&lt;br /&gt;
*TargetWeightX()&lt;br /&gt;
*RockUnit(anglex, anglez): Called when the unit fires. Use it to rock the unit on firing, although there are other ways to do this.&lt;br /&gt;
*HitByWeaponID(damage, weaponid?, unitid?)&lt;br /&gt;
*SetMaxReloadTime(time): Called on unit creation. time is the time in ms that it takes the slowest-firing weapon to reload.&lt;br /&gt;
&lt;br /&gt;
===Construction===&lt;br /&gt;
&lt;br /&gt;
*StartBuilding(): Called when the unit starts building.&lt;br /&gt;
*StopBuilding(): Called when the unit stops building.&lt;br /&gt;
*QueryNanoPiece(piecenum): You should set piecenum to the piece you want the nanospray to come from.&lt;br /&gt;
*QueryBuildInfo(piecenum): For factories. You should set piecenum to the piece you want the unit to be built on.&lt;br /&gt;
&lt;br /&gt;
===Transportation===&lt;br /&gt;
*Falling(): Used for airdropping units?&lt;br /&gt;
*Landed(): Used for airdropping units?&lt;br /&gt;
*QueryTransport(piecenum): You should set piecenum to the piece you want the transported unit to be attached to.&lt;br /&gt;
*BeginTransport(): Called when an air transport picks up a unit.&lt;br /&gt;
*EndTransport(): Called when an air transport becomes empty.&lt;br /&gt;
*TransportPickup(): Called when a land transport picks up a unit.&lt;br /&gt;
*TransportDrop(): Called when a land transport becomes empty.&lt;br /&gt;
*StartUnload(): Called when the transport starts the unloading process.&lt;br /&gt;
&lt;br /&gt;
===Landing Pads===&lt;br /&gt;
*QueryLandingPadCount(count): You should set count to the number of landing pads. However, it doesn&#039;t seem to be actually necessary to do this unless you want more than 16 pads.&lt;br /&gt;
*QueryLandingPad(piecenum1, piecenum2, piecenum3...): Set each piecenum to a different landing pad piece.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1904</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1904"/>
		<updated>2008-05-28T22:16:38Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Some (but not all) are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Callins have two purposes:&lt;br /&gt;
&lt;br /&gt;
First, they allow a script to be notified when an event happens, such as the unit being created or destroyed.&lt;br /&gt;
&lt;br /&gt;
Second, they allow the engine to get information from the script. Sometimes this is accomplished through a return value, but usually this is done by setting one of the arguments to a function to the requested value.&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
*Create(): Called when the unit is created. &amp;quot;Created&amp;quot; means when the unit&#039;s nanoframe is created; if you want to wait until the unit is actually finished, you&#039;ll have to use something like &lt;br /&gt;
&lt;br /&gt;
 while(GET BUILD_PERCENT_LEFT) sleep 250; &lt;br /&gt;
&lt;br /&gt;
*Activate()/Deactivate(): Called when the unit is turned on/off.&lt;br /&gt;
*Killed(severity, corpsetype): Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
*StartMoving()/StopMoving(): Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
*SetSFXOccupy(terraintype): Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
*MoveRate[0...3](): Appears to be the aircraft equivalent of SetSFXOccupy. MoveRate3 doesn&#039;t appear to actually be used. MoveRate1 is called when the aircraft takes off or lands. If the aircraft is not taking off or landing, MoveRate0 is called when the aircraft drops below 1/3 maximum speed, MoveRate2 is called when the aircraft exceeds 2/3 maximum speed, and MoveRate1 is called when the aircraft enters within 1/3-2/3 maximum speed. I don&#039;t know if this actually works.&lt;br /&gt;
*SetDirection(heading): Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
*SetSpeed(speed): Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
*AimWeaponX(heading, pitch): Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
*AimFromWeaponX(piecenum): You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
*FireWeaponX(): Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
*ShotX(): Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;br /&gt;
*QueryWeaponX(piecenum): You should set piecenum to a piece of the model. The shot starts from this piece of the model; this is called for this purpose after FireWeaponX() and ShotX(). LOS is also traced from here to the target to see if a weapon can fire. Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
*EndBurstX(): Called after the last shot in a burst.&lt;br /&gt;
*BlockShotX()&lt;br /&gt;
*TargetWeightX()&lt;br /&gt;
*RockUnit(anglex, anglez): Called when the unit fires. Use it to rock the unit on firing, although there are other ways to do this.&lt;br /&gt;
*HitByWeaponID(damage, weaponid?, unitid?)&lt;br /&gt;
*SetMaxReloadTime(time): Called on unit creation. time is the time in ms that it takes the slowest-firing weapon to reload.&lt;br /&gt;
&lt;br /&gt;
===Construction===&lt;br /&gt;
&lt;br /&gt;
*StartBuilding(): Called when the unit starts building.&lt;br /&gt;
*StopBuilding(): Called when the unit stops building.&lt;br /&gt;
*QueryNanoPiece(piecenum): You should set piecenum to the piece you want the nanospray to come from.&lt;br /&gt;
*QueryBuildInfo(piecenum): For factories. You should set piecenum to the piece you want the unit to be built on.&lt;br /&gt;
&lt;br /&gt;
===Transportation===&lt;br /&gt;
*Falling(): Used for airdropping units?&lt;br /&gt;
*Landed(): Used for airdropping units?&lt;br /&gt;
*BeginTransport(): Called when the transport picks up a unit.&lt;br /&gt;
*QueryTransport(piecenum): You should set piecenum to the piece you want the transported unit to be attached to.&lt;br /&gt;
*TransportPickup()&lt;br /&gt;
*EndTransport(): Called when the transport becomes empty.&lt;br /&gt;
*StartUnload(): Called when the transport starts the unloading process.&lt;br /&gt;
&lt;br /&gt;
===Landing Pads===&lt;br /&gt;
*QueryLandingPadCount(count): You should set count to the number of landing pads. However, it doesn&#039;t seem to be actually necessary to do this unless you want more than 16 pads.&lt;br /&gt;
*QueryLandingPad(piecenum1, piecenum2, piecenum3...): Set each piecenum to a different landing pad piece.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobOverview&amp;diff=1956</id>
		<title>Animation-CobOverview</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobOverview&amp;diff=1956"/>
		<updated>2008-05-28T05:49:57Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What is COB?==&lt;br /&gt;
&lt;br /&gt;
COB is the Spring engine&#039;s scripting system. Each unit has a .cob bitfile which defines many of its major behaviors, including animation and weapon aiming. Of course, COB is also capable of doing a lot more if you wish. When Spring is actually running, it interprets the bitfile for each unit as necessary. This interpreter runs in a very straightforward way, without any fancy optimizations, so don&#039;t expect great performance from it.&lt;br /&gt;
&lt;br /&gt;
==BOS==&lt;br /&gt;
&lt;br /&gt;
The code that gets compiled into a .cob is written in a .bos file. A program called Scriptor generally does this compilation. BOS uses a C-like syntax, although it has many Spring-specific features and isn&#039;t as powerful as C.&lt;br /&gt;
&lt;br /&gt;
===BOS versus C===&lt;br /&gt;
&lt;br /&gt;
Similarities:&lt;br /&gt;
*Function syntax. A function is defined by FunctionName(args).&lt;br /&gt;
*Block delimiters. Like C, a statement block is delimited by curly braces ({}).&lt;br /&gt;
*General syntax. For example, to add two variables and assign the result to a third, you say x = y + z;&lt;br /&gt;
&lt;br /&gt;
Differences:&lt;br /&gt;
*Not case sensitive.&lt;br /&gt;
*Only one data type. There is only one type of data in COB, which is basically a 32-bit integer.&lt;br /&gt;
*Variable declaration. &lt;br /&gt;
&lt;br /&gt;
You can declare a static variable, whose scope encompasses the entire script, using&lt;br /&gt;
&lt;br /&gt;
 static-var x;&lt;br /&gt;
&lt;br /&gt;
You can declare multiple variables at once by separating them with commas.&lt;br /&gt;
&lt;br /&gt;
Alternately, you can declare a local variable:&lt;br /&gt;
&lt;br /&gt;
 var x;&lt;br /&gt;
&lt;br /&gt;
The scope is limited to the function that it is in.&lt;br /&gt;
*No pointers or arrays.&lt;br /&gt;
*No internal return values. When the script receives a callin, it may return a value to the &amp;quot;outside&amp;quot;; however, there is no way to return a value directly to another function within the script. You will have to use a static variable.&lt;br /&gt;
*Function calls. &lt;br /&gt;
&lt;br /&gt;
Functions are called using&lt;br /&gt;
&lt;br /&gt;
 call-script Function(args);&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
 start-script Function(args);&lt;br /&gt;
&lt;br /&gt;
See [[COB_Threads]] for details.&lt;br /&gt;
*Multiple threads. This isn&#039;t as exciting as it sounds. Again, see [[COB_Threads]] for details.&lt;br /&gt;
*Spring-specific features. There are too many here to name; please consult the other COB articles.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobOverview&amp;diff=1955</id>
		<title>Animation-CobOverview</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobOverview&amp;diff=1955"/>
		<updated>2008-05-28T05:48:32Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What is COB?==&lt;br /&gt;
&lt;br /&gt;
COB is the Spring engine&#039;s scripting system. Each unit has a .cob bitfile which defines many of its major behaviors, including animation and weapon aiming. Of course, COB is also capable of doing a lot more if you wish. When Spring is actually running, it interprets the bitfile for each unit as necessary. This interpreter runs in a very straightforward way, without any fancy optimizations, so don&#039;t expect great performance from it.&lt;br /&gt;
&lt;br /&gt;
==BOS==&lt;br /&gt;
&lt;br /&gt;
The code that gets compiled into a .cob is written in a .bos file. A program called Scriptor generally does this compilation. BOS uses a C-like syntax, although it has many Spring-specific features and isn&#039;t as powerful as C.&lt;br /&gt;
&lt;br /&gt;
===BOS versus C===&lt;br /&gt;
&lt;br /&gt;
Similarities:&lt;br /&gt;
*Function syntax. A function is defined by FunctionName(args).&lt;br /&gt;
*Block delimiters. Like C, a statement block is delimited by curly braces ({}).&lt;br /&gt;
*General syntax. For example, to add two variables and assign the result to a third, you say x = y + z;&lt;br /&gt;
&lt;br /&gt;
Differences:&lt;br /&gt;
*Not case sensitive.&lt;br /&gt;
*Only one data type. There is only one type of data in COB, which is basically a 32-bit integer.&lt;br /&gt;
*Variable declaration. &lt;br /&gt;
&lt;br /&gt;
You can declare a static variable, whose scope encompasses the entire script, using&lt;br /&gt;
&lt;br /&gt;
 static-var x;&lt;br /&gt;
&lt;br /&gt;
You can declare multiple variables at once by separating them with commas.&lt;br /&gt;
&lt;br /&gt;
Alternately, you can declare a local variable:&lt;br /&gt;
&lt;br /&gt;
 var x;&lt;br /&gt;
&lt;br /&gt;
The scope is limited to the function that it is in.&lt;br /&gt;
*No pointers or arrays.&lt;br /&gt;
*No internal return values. When the script receives a callin, it may return a value to the &amp;quot;outside&amp;quot;; however, there is no way to return a value directly to another function within the script. You will have to use a static variable.&lt;br /&gt;
*Function calls. &lt;br /&gt;
&lt;br /&gt;
Functions are called using&lt;br /&gt;
&lt;br /&gt;
 call-script Function(args);&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
 start-script Function(args);&lt;br /&gt;
&lt;br /&gt;
See [[COB_Threads]] for details.&lt;br /&gt;
*Spring-specific features. There are too many here to name; please consult the other COB articles.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobOverview&amp;diff=1954</id>
		<title>Animation-CobOverview</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobOverview&amp;diff=1954"/>
		<updated>2008-05-28T05:47:08Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: New page: ==What is COB?==  COB is the Spring engine&amp;#039;s scripting system. Each unit has a .cob bitfile which defines many of its major behaviors, including animation and weapon aiming. Of course, COB...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What is COB?==&lt;br /&gt;
&lt;br /&gt;
COB is the Spring engine&#039;s scripting system. Each unit has a .cob bitfile which defines many of its major behaviors, including animation and weapon aiming. Of course, COB is also capable of doing a lot more if you wish. When Spring is actually running, it interprets the bitfile for each unit as necessary. This interpreter runs in a very straightforward way, without any fancy optimizations, so don&#039;t expect great performance from it.&lt;br /&gt;
&lt;br /&gt;
==BOS==&lt;br /&gt;
&lt;br /&gt;
The code that gets compiled into a .cob is written in a .bos file. A program called Scriptor generally does this compilation. BOS uses a C-like syntax, although it has many Spring-specific features and isn&#039;t as powerful as C.&lt;br /&gt;
&lt;br /&gt;
===BOS versus C===&lt;br /&gt;
&lt;br /&gt;
Similarities:&lt;br /&gt;
*Function syntax. A function is defined by FunctionName(args).&lt;br /&gt;
*Block delimiters. Like C, a statement block is delimited by curly braces ({}).&lt;br /&gt;
*General syntax. For example, to add two variables and assign the result to a third, you say x = y + z;&lt;br /&gt;
&lt;br /&gt;
Differences:&lt;br /&gt;
*Only one data type. There is only one type of data in COB, which is basically a 32-bit integer.&lt;br /&gt;
*Variable declaration. You can declare a static variable, whose scope encompasses the entire script, using&lt;br /&gt;
&lt;br /&gt;
 static-var x;&lt;br /&gt;
&lt;br /&gt;
You can declare multiple variables at once by separating them with commas.&lt;br /&gt;
&lt;br /&gt;
Alternately, you can declare a local variable:&lt;br /&gt;
&lt;br /&gt;
 var x;&lt;br /&gt;
&lt;br /&gt;
The scope is limited to the function that it is in.&lt;br /&gt;
*No pointers or arrays.&lt;br /&gt;
*No internal return values. When the script receives a callin, it may return a value to the &amp;quot;outside&amp;quot;; however, there is no way to return a value directly to another function within the script. You will have to use a static variable.&lt;br /&gt;
*Functions are called using&lt;br /&gt;
&lt;br /&gt;
 call-script Function(args);&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
 start-script Function(args);&lt;br /&gt;
&lt;br /&gt;
See [[COB_Threads]] for details.&lt;br /&gt;
*Spring-specific features. There are too many here to name; please consult the other COB articles.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7935</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7935"/>
		<updated>2008-05-28T05:33:08Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;filehosting at 20080405:&lt;br /&gt;
&lt;br /&gt;
http://www.tasdownloads.com/faq.php&lt;br /&gt;
&lt;br /&gt;
http://spring.jobjol.nl/subcategory.php?id=1&amp;amp;language=English&lt;br /&gt;
&lt;br /&gt;
http://spring-portal.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mod development=&lt;br /&gt;
Mods, next to Maps, is the content used in Spring.&amp;lt;br&amp;gt;&lt;br /&gt;
A mod is simply a combined file containing a small structure of files and directories holding all the data required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Mod_Development | Mod Development]] wiki is a starting page, linking to very useful information on the files included in a mod, their hierarchy and more.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Almost the entire mod developing is the creation of units. Which isn&#039;t an easy job.&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the creation of units are everywere, but not combined.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a gathered list of all Tutorials and helpfull forums threads I could find:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
*http://taspring.clan-sy.com/wiki/Create_units - old Wiki&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Mod Development]]&lt;br /&gt;
*[[Mod specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6015 What do I need to create a mod]&lt;br /&gt;
*[[Simple Mod Tutorial]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Models - s3o Files====&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures].&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [[Simple Mod Tutorial]]&lt;br /&gt;
* [[Units:CreateModel|UV Mapping in Wings3D]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
* [http://taspring.clan-sy.com/phpbb/viewtopic.php?p=75495 various things about unit making. (Also contains an illustrated alpha-channel tut)]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
outdated model format used by OTA&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://spring.clan-sy.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://www.fileuniverse.com/?p=show&amp;amp;a=it&amp;amp;id=305 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
====Scripting and Animation - COB/BOS Files====&lt;br /&gt;
*[[COB_Overview]]&lt;br /&gt;
*[[COB_Animation]]&lt;br /&gt;
*[[COB_Callins]]&lt;br /&gt;
*[[COB_Constants]]&lt;br /&gt;
*[[COB_Threads]]&lt;br /&gt;
*[[Image:Usa_flag.gif]][[Image:France_flag.gif]][[Units:.bos/.COB]] -all tags for make a animation file&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[http://www.tadesigners.com/bos1.htm TADesigners] have a nice tutorial too&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Mod Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Image:France_flag.gif]] [[exemples de fichiers .fbi]]&lt;br /&gt;
*[[image:usa_flag.gif]][[ all tags &amp;amp; details with a exemple ]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics]]&lt;br /&gt;
*[[CustomExplosionGenerators|Mod Development:Custom explosions]]&lt;br /&gt;
*[[CustomUnitIcons|Mod Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1903</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1903"/>
		<updated>2008-05-28T05:32:14Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Some (but not all) are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
*Create(): Called when the unit is created. &amp;quot;Created&amp;quot; means when the unit&#039;s nanoframe is created; if you want to wait until the unit is actually finished, you&#039;ll have to use something like &lt;br /&gt;
&lt;br /&gt;
 while(GET BUILD_PERCENT_LEFT) sleep 250; &lt;br /&gt;
&lt;br /&gt;
*Activate()/Deactivate(): Called when the unit is turned on/off.&lt;br /&gt;
*Killed(severity, corpsetype): Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
*StartMoving()/StopMoving(): Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
*SetSFXOccupy(terraintype): Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
*MoveRate[0...3](): Appears to be the aircraft equivalent of SetSFXOccupy. MoveRate3 doesn&#039;t appear to actually be used. MoveRate1 is called when the aircraft takes off or lands. If the aircraft is not taking off or landing, MoveRate0 is called when the aircraft drops below 1/3 maximum speed, MoveRate2 is called when the aircraft exceeds 2/3 maximum speed, and MoveRate1 is called when the aircraft enters within 1/3-2/3 maximum speed. I don&#039;t know if this actually works.&lt;br /&gt;
*SetDirection(heading): Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
*SetSpeed(speed): Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
*AimWeaponX(heading, pitch): Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
*AimFromWeaponX(piecenum): You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
*FireWeaponX(): Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
*ShotX(): Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;br /&gt;
*QueryWeaponX(piecenum): You should set piecenum to a piece of the model. The shot starts from this piece of the model; this is called for this purpose after FireWeaponX() and ShotX(). LOS is also traced from here to the target to see if a weapon can fire. Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
*EndBurstX(): Called after the last shot in a burst.&lt;br /&gt;
*BlockShotX()&lt;br /&gt;
*TargetWeightX()&lt;br /&gt;
*RockUnit(anglex, anglez): Called when the unit fires. Use it to rock the unit on firing, although there are other ways to do this.&lt;br /&gt;
*HitByWeaponID(damage, weaponid?, unitid?)&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
&lt;br /&gt;
*QueryLandingPadCount(count)&lt;br /&gt;
*QueryLandingPad&lt;br /&gt;
*Falling&lt;br /&gt;
*Landed&lt;br /&gt;
*SetMaxReloadTime(time): Called on unit creation. time is the time in ms that it takes the slowest-firing weapon to reload.&lt;br /&gt;
*BeginTransport&lt;br /&gt;
*QueryTransport&lt;br /&gt;
*TransportPickup&lt;br /&gt;
*EndTransport&lt;br /&gt;
*StartUnload&lt;br /&gt;
*StartBuilding(): Called when the unit starts building.&lt;br /&gt;
*StopBuilding(): Called when the unit stops building.&lt;br /&gt;
*QueryNanoPiece(piecenum): Set piecenum to the piece you want the nanospray to come from.&lt;br /&gt;
*QueryBuildInfo&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobAnimation&amp;diff=1878</id>
		<title>Animation-CobAnimation</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobAnimation&amp;diff=1878"/>
		<updated>2008-05-28T05:22:45Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pieces==&lt;br /&gt;
&lt;br /&gt;
Each unit has a root piece and a tree of other pieces attached to the root piece. At the top of each file you&#039;ll need to put the following line:&lt;br /&gt;
&lt;br /&gt;
 piece [names of pieces of the model separated by commas];&lt;br /&gt;
&lt;br /&gt;
As usual, capitalization does not matter; neither does the order of the pieces. You do not need to name every piece that the model actually has, although you should do so, and you cannot do anything to a piece that you have not named. If you try to do something to a piece that doesn&#039;t exist, Spring will throw an error. Generally it will not crash but you&#039;ll probably get lots of chat spam, so avoid this.&lt;br /&gt;
&lt;br /&gt;
Every piece starts in the position as it appears in any modeling program, such as Upspring. This is defined to be zero position and zero rotation.&lt;br /&gt;
&lt;br /&gt;
Pieces are really numbers, although Scriptor usually throws a fit if you try to use them as numbers (it will not accept a number in places where it expects a piece name, although for functions that involve a piecenum you can use the piece&#039;s number instead of the piece name if you so desire). The first piece you list is 0, and it counts from there.&lt;br /&gt;
&lt;br /&gt;
==Linear Units==&lt;br /&gt;
&lt;br /&gt;
Everything linear &#039;&#039;really&#039;&#039; happens in a unit I&#039;ll call Spring distance (sd). This is a tiny distance--there are 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt; = 65536 sd in an elmo, which is the unit that is most commonly used. For example, weapon ranges are specified in elmos. Fortunately, Scriptor can automatically convert elmos to sd: just put the number of elmos you want in brackets ([]). Sometimes you&#039;ll see scripts that use 2.5 * 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt; = 163840 instead. I recommend not doing this since it makes conversion more difficult.&lt;br /&gt;
&lt;br /&gt;
==Angular Units==&lt;br /&gt;
&lt;br /&gt;
Likewise, everything angular &#039;&#039;really&#039;&#039; happens in a unit I&#039;ll call Spring angle (sa). There are 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt; sa in a full circle. Generally you&#039;ll be working in degrees. There are 182 and 2/45 sa in a degree. Again, Scriptor can automatically convert from degrees to sa; just put the number of degrees you want in angles (&amp;lt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Axes==&lt;br /&gt;
&lt;br /&gt;
All COB animation statements specify an axis. There are three axes, &amp;quot;x-axis&amp;quot;, &amp;quot;y-axis&amp;quot;, and &amp;quot;z-axis&amp;quot;. Positive x is to the unit&#039;s left (the right if you are looking at the unit from the front). Positive y is to the unit&#039;s top. Positive z is to the unit&#039;s front.&lt;br /&gt;
&lt;br /&gt;
The position and rotation of each piece defines the coordinate system for all of its child pieces. So, if you move or rotate a piece, all of its child pieces will move and rotate with it.&lt;br /&gt;
&lt;br /&gt;
A positive angle is counterclockwise looking at the piece from the positive end of the axis toward the negative end of the axis.&lt;br /&gt;
&lt;br /&gt;
==move==&lt;br /&gt;
&lt;br /&gt;
 move [piece] to [axis] [distance] now;&lt;br /&gt;
&lt;br /&gt;
This moves the piece immediately. The piece will be in its new position along the axis before the next statement is executed.&lt;br /&gt;
&lt;br /&gt;
 move [piece] to [axis] [distance] speed [speed];&lt;br /&gt;
&lt;br /&gt;
This moves the piece at some speed until it reaches its destination, or the piece is told to move to a different distance along the same axis, whichever comes first. After this statement, the piece moves independent of the script; indeed, the script proceeds immediately to the next statement after it sets the piece moving.&lt;br /&gt;
&lt;br /&gt;
Speed is always positive, even if you are moving the piece to a negative distance. It is measured in Spring distance/second (sd/s).&lt;br /&gt;
&lt;br /&gt;
 wait-for-move [piece] along [axis];&lt;br /&gt;
&lt;br /&gt;
Makes the thread sleep until the piece stops moving along the axis.&lt;br /&gt;
&lt;br /&gt;
==turn==&lt;br /&gt;
&lt;br /&gt;
These are similar to movement in behavior, except they rotate the piece.&lt;br /&gt;
&lt;br /&gt;
 turn [piece] to [axis] [angle] now;&lt;br /&gt;
&lt;br /&gt;
Turns the piece to the specified angle around the axis immediately. The piece will be in its new rotation around the axis before the next statement is executed. Pieces rotate around their &amp;lt;u&amp;gt;own&amp;lt;/u&amp;gt; center, not their parent&#039;s (although if the parent rotates, they do as well). If the piece moves, the center moves with it, so a piece&#039;s movement occurs &amp;quot;before&amp;quot; its rotation in determining its final position.&lt;br /&gt;
&lt;br /&gt;
 turn [piece] to [axis] [angle] speed [angular speed];&lt;br /&gt;
&lt;br /&gt;
This turns the piece at some angular speed until it reaches its destination, or the piece is told to turn to a different distance around the same axis, whichever comes first. Angular speed is always positive, even if the angle is negative. The speed is in Spring angles/second (sa/s).&lt;br /&gt;
&lt;br /&gt;
 wait-for-turn [piece] around [axis];&lt;br /&gt;
&lt;br /&gt;
Makes the thread sleep until the piece stops turning around the axis.&lt;br /&gt;
&lt;br /&gt;
==spin==&lt;br /&gt;
&lt;br /&gt;
 spin [piece] around [axis] speed [angular speed];&lt;br /&gt;
&lt;br /&gt;
This starts the piece spinning at a constant speed immediately. Again, the speed is in Spring angles/second (sa/s); however, it can be negative if you want it to spin in that direction.&lt;br /&gt;
&lt;br /&gt;
 spin [piece] around [axis] speed [angular speed] accelerate [angular acceleration];&lt;br /&gt;
&lt;br /&gt;
The angular acceleration should always be positive, even if you are spinning the piece at a negative angular speed. It is measured in Spring angles per frame-second (sa/f*s); in other words, the speed of the piece will increase by that amount every &#039;&#039;frame&#039;&#039;, not every second. There are 30 frames per second.&lt;br /&gt;
&lt;br /&gt;
 stop-spin [piece] around [axis];&lt;br /&gt;
&lt;br /&gt;
Stops the piece from spinning immediately, regardless of its orientation.&lt;br /&gt;
&lt;br /&gt;
 stop-spin [piece] around [axis] decelerate [angular deceleration];&lt;br /&gt;
&lt;br /&gt;
Slows the piece&#039;s spinning down until it stops. As with angular acceleration, the angular deceleration should always be positive and is measured in Spring angles per frame-second.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobAnimation&amp;diff=1877</id>
		<title>Animation-CobAnimation</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobAnimation&amp;diff=1877"/>
		<updated>2008-05-28T05:21:36Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pieces==&lt;br /&gt;
&lt;br /&gt;
Each unit has a root piece and a tree of other pieces attached to the root piece. At the top of each file you&#039;ll need to put the following line:&lt;br /&gt;
&lt;br /&gt;
 piece [names of pieces of the model separated by commas];&lt;br /&gt;
&lt;br /&gt;
As usual, capitalization does not matter; neither does the order of the pieces. You do not need to name every piece that the model actually has, although you should do so, and you cannot do anything to a piece that you have not named. If you try to do something to a piece that doesn&#039;t exist, Spring will throw an error. Generally it will not crash but you&#039;ll probably get lots of chat spam, so avoid this.&lt;br /&gt;
&lt;br /&gt;
Every piece starts in the position as it appears in any modeling program, such as Upspring. This is defined to be zero position and zero rotation.&lt;br /&gt;
&lt;br /&gt;
Pieces are really numbers, although Scriptor usually throws a fit if you try to use them as numbers (it will not accept a number in places where it expects a piece name, although for functions that involve a piecenum you can use the piece&#039;s number instead of the piece name if you so desire). The first piece you list is 0, and it counts from there.&lt;br /&gt;
&lt;br /&gt;
==Linear Units==&lt;br /&gt;
&lt;br /&gt;
Everything linear &#039;&#039;really&#039;&#039; happens in a unit I&#039;ll call Spring distance (sd). This is a tiny distance--there are 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt; = 65536 sd in an elmo, which is the unit that is most commonly used. For example, weapon ranges are specified in elmos. Fortunately, Scriptor can automatically convert elmos to sd: just put the number of elmos you want in brackets. Sometimes you&#039;ll see scripts that use 2.5 * 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt; = 163840 instead. I recommend not doing this since it makes conversion more difficult.&lt;br /&gt;
&lt;br /&gt;
==Angular Units==&lt;br /&gt;
&lt;br /&gt;
Likewise, everything angular &#039;&#039;really&#039;&#039; happens in a unit I&#039;ll call Spring angle (sa). There are 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt; sa in a full circle. Generally you&#039;ll be working in degrees, and Scriptor can automatically convert from degrees to sa. There are 182 and 2/45 sa in a degree.&lt;br /&gt;
&lt;br /&gt;
==Axes==&lt;br /&gt;
&lt;br /&gt;
All COB animation statements specify an axis. There are three axes, &amp;quot;x-axis&amp;quot;, &amp;quot;y-axis&amp;quot;, and &amp;quot;z-axis&amp;quot;. Positive x is to the unit&#039;s left (the right if you are looking at the unit from the front). Positive y is to the unit&#039;s top. Positive z is to the unit&#039;s front.&lt;br /&gt;
&lt;br /&gt;
The position and rotation of each piece defines the coordinate system for all of its child pieces. So, if you move or rotate a piece, all of its child pieces will move and rotate with it.&lt;br /&gt;
&lt;br /&gt;
A positive angle is counterclockwise looking at the piece from the positive end of the axis toward the negative end of the axis.&lt;br /&gt;
&lt;br /&gt;
==move==&lt;br /&gt;
&lt;br /&gt;
 move [piece] to [axis] [distance] now;&lt;br /&gt;
&lt;br /&gt;
This moves the piece immediately. The piece will be in its new position along the axis before the next statement is executed.&lt;br /&gt;
&lt;br /&gt;
 move [piece] to [axis] [distance] speed [speed];&lt;br /&gt;
&lt;br /&gt;
This moves the piece at some speed until it reaches its destination, or the piece is told to move to a different distance along the same axis, whichever comes first. After this statement, the piece moves independent of the script; indeed, the script proceeds immediately to the next statement after it sets the piece moving.&lt;br /&gt;
&lt;br /&gt;
Speed is always positive, even if you are moving the piece to a negative distance. It is measured in Spring distance/second (sd/s).&lt;br /&gt;
&lt;br /&gt;
 wait-for-move [piece] along [axis];&lt;br /&gt;
&lt;br /&gt;
Makes the thread sleep until the piece stops moving along the axis.&lt;br /&gt;
&lt;br /&gt;
==turn==&lt;br /&gt;
&lt;br /&gt;
These are similar to movement in behavior, except they rotate the piece.&lt;br /&gt;
&lt;br /&gt;
 turn [piece] to [axis] [angle] now;&lt;br /&gt;
&lt;br /&gt;
Turns the piece to the specified angle around the axis immediately. The piece will be in its new rotation around the axis before the next statement is executed. Pieces rotate around their &amp;lt;u&amp;gt;own&amp;lt;/u&amp;gt; center, not their parent&#039;s (although if the parent rotates, they do as well). If the piece moves, the center moves with it, so a piece&#039;s movement occurs &amp;quot;before&amp;quot; its rotation in determining its final position.&lt;br /&gt;
&lt;br /&gt;
 turn [piece] to [axis] [angle] speed [angular speed];&lt;br /&gt;
&lt;br /&gt;
This turns the piece at some angular speed until it reaches its destination, or the piece is told to turn to a different distance around the same axis, whichever comes first. Angular speed is always positive, even if the angle is negative. The speed is in Spring angles/second (sa/s).&lt;br /&gt;
&lt;br /&gt;
 wait-for-turn [piece] around [axis];&lt;br /&gt;
&lt;br /&gt;
Makes the thread sleep until the piece stops turning around the axis.&lt;br /&gt;
&lt;br /&gt;
==spin==&lt;br /&gt;
&lt;br /&gt;
 spin [piece] around [axis] speed [angular speed];&lt;br /&gt;
&lt;br /&gt;
This starts the piece spinning at a constant speed immediately. Again, the speed is in Spring angles/second (sa/s); however, it can be negative if you want it to spin in that direction.&lt;br /&gt;
&lt;br /&gt;
 spin [piece] around [axis] speed [angular speed] accelerate [angular acceleration];&lt;br /&gt;
&lt;br /&gt;
The angular acceleration should always be positive, even if you are spinning the piece at a negative angular speed. It is measured in Spring angles per frame-second (sa/f*s); in other words, the speed of the piece will increase by that amount every &#039;&#039;frame&#039;&#039;, not every second. There are 30 frames per second.&lt;br /&gt;
&lt;br /&gt;
 stop-spin [piece] around [axis];&lt;br /&gt;
&lt;br /&gt;
Stops the piece from spinning immediately, regardless of its orientation.&lt;br /&gt;
&lt;br /&gt;
 stop-spin [piece] around [axis] decelerate [angular deceleration];&lt;br /&gt;
&lt;br /&gt;
Slows the piece&#039;s spinning down until it stops. As with angular acceleration, the angular deceleration should always be positive and is measured in Spring angles per frame-second.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1902</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1902"/>
		<updated>2008-05-28T05:19:40Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Some (but not all) are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
*Create(): Called when the unit is created (&#039;&#039;not&#039;&#039; finished&#039;&#039;).&lt;br /&gt;
*Activate()/Deactivate(): Called when the unit is turned on/off.&lt;br /&gt;
*Killed(severity, corpsetype): Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
*StartMoving()/StopMoving(): Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
*SetSFXOccupy(terraintype): Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
*MoveRate[0...3](): Appears to be the aircraft equivalent of SetSFXOccupy. MoveRate3 doesn&#039;t appear to actually be used. MoveRate1 is called when the aircraft takes off or lands. If the aircraft is not taking off or landing, MoveRate0 is called when the aircraft drops below 1/3 maximum speed, MoveRate2 is called when the aircraft exceeds 2/3 maximum speed, and MoveRate1 is called when the aircraft enters within 1/3-2/3 maximum speed. I don&#039;t know if this actually works.&lt;br /&gt;
*SetDirection(heading): Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
*SetSpeed(speed): Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
*AimWeaponX(heading, pitch): Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
*AimFromWeaponX(piecenum): You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
*FireWeaponX(): Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
*ShotX(): Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;br /&gt;
*QueryWeaponX(piecenum): You should set piecenum to a piece of the model. The shot starts from this piece of the model; this is called for this purpose after FireWeaponX() and ShotX(). LOS is also traced from here to the target to see if a weapon can fire. Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
*EndBurstX(): Called after the last shot in a burst.&lt;br /&gt;
*BlockShotX()&lt;br /&gt;
*TargetWeightX()&lt;br /&gt;
*RockUnit(anglex, anglez): Called when the unit fires. Use it to rock the unit on firing, although there are other ways to do this.&lt;br /&gt;
*HitByWeaponID(damage, weaponid?, unitid?)&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
&lt;br /&gt;
*QueryLandingPadCount(count)&lt;br /&gt;
*QueryLandingPad&lt;br /&gt;
*Falling&lt;br /&gt;
*Landed&lt;br /&gt;
*SetMaxReloadTime(time): Called on unit creation. time is the time in ms that it takes the slowest-firing weapon to reload.&lt;br /&gt;
*BeginTransport&lt;br /&gt;
*QueryTransport&lt;br /&gt;
*TransportPickup&lt;br /&gt;
*EndTransport&lt;br /&gt;
*StartUnload&lt;br /&gt;
*StartBuilding(): Called when the unit starts building.&lt;br /&gt;
*StopBuilding(): Called when the unit stops building.&lt;br /&gt;
*QueryNanoPiece(piecenum): Set piecenum to the piece you want the nanospray to come from.&lt;br /&gt;
*QueryBuildInfo&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1901</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1901"/>
		<updated>2008-05-28T05:19:15Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Some (but not all) are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
*Create(): Called when the unit is created (&#039;&#039;not&#039;&#039; finished&#039;&#039;).&lt;br /&gt;
*Activate()/Deactivate(): Called when the unit is turned on/off.&lt;br /&gt;
*Killed(severity, corpsetype): Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
*StartMoving()/StopMoving(): Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
*SetSFXOccupy(terraintype): Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
*MoveRate[0...3](): Appears to be the aircraft equivalent of SetSFXOccupy. MoveRate3 doesn&#039;t appear to actually be used. MoveRate1 is called when the aircraft takes off or lands. If the aircraft is not taking off or landing, MoveRate0 is called when the aircraft drops below 1/3 maximum speed, MoveRate2 is called when the aircraft exceeds 2/3 maximum speed, and MoveRate1 is called when the aircraft enters within 1/3-2/3 maximum speed. I don&#039;t know if this actually works.&lt;br /&gt;
*SetDirection(heading): Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
*SetSpeed(speed): Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
*AimWeaponX(heading, pitch): Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
*AimFromWeaponX(piecenum): You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
*FireWeaponX(): Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
*ShotX(): Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;br /&gt;
*QueryWeaponX(piecenum): You should set piecenum to a piece of the model. The shot starts from this piece of the model. LOS is also traced from here to the target to see if a weapon can fire; this is called for this purpose after FireWeaponX() and ShotX(). Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
*EndBurstX(): Called after the last shot in a burst.&lt;br /&gt;
*BlockShotX()&lt;br /&gt;
*TargetWeightX()&lt;br /&gt;
*RockUnit(anglex, anglez): Called when the unit fires. Use it to rock the unit on firing, although there are other ways to do this.&lt;br /&gt;
*HitByWeaponID(damage, weaponid?, unitid?)&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
&lt;br /&gt;
*QueryLandingPadCount(count)&lt;br /&gt;
*QueryLandingPad&lt;br /&gt;
*Falling&lt;br /&gt;
*Landed&lt;br /&gt;
*SetMaxReloadTime(time): Called on unit creation. time is the time in ms that it takes the slowest-firing weapon to reload.&lt;br /&gt;
*BeginTransport&lt;br /&gt;
*QueryTransport&lt;br /&gt;
*TransportPickup&lt;br /&gt;
*EndTransport&lt;br /&gt;
*StartUnload&lt;br /&gt;
*StartBuilding(): Called when the unit starts building.&lt;br /&gt;
*StopBuilding(): Called when the unit stops building.&lt;br /&gt;
*QueryNanoPiece(piecenum): Set piecenum to the piece you want the nanospray to come from.&lt;br /&gt;
*QueryBuildInfo&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobAnimation&amp;diff=1876</id>
		<title>Animation-CobAnimation</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobAnimation&amp;diff=1876"/>
		<updated>2008-05-28T05:15:48Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pieces==&lt;br /&gt;
&lt;br /&gt;
Each unit has a root piece and a tree of other pieces attached to the root piece. At the top of each file you&#039;ll need to put the following line:&lt;br /&gt;
&lt;br /&gt;
 piece [names of pieces of the model separated by commas];&lt;br /&gt;
&lt;br /&gt;
As usual, capitalization does not matter; neither does the order of the pieces. You do not need to name every piece that the model actually has, although you should do so, and you cannot do anything to a piece that you have not named. If you try to do something to a piece that doesn&#039;t exist, Spring will throw an error. Generally it will not crash but you&#039;ll probably get lots of chat spam, so avoid this.&lt;br /&gt;
&lt;br /&gt;
Every piece starts in the position as it appears in any modeling program, such as Upspring. This is defined to be zero position and zero rotation.&lt;br /&gt;
&lt;br /&gt;
Pieces are really numbers, although Scriptor usually throws a fit if you try to use them as numbers (it will not accept a number in places where it expects a piece name, although for functions that involve a piecenum you can use the piece&#039;s number instead of the piece name if you so desire). The first piece you list is 0, and it counts from there.&lt;br /&gt;
&lt;br /&gt;
==Linear Units==&lt;br /&gt;
&lt;br /&gt;
Everything linear &#039;&#039;really&#039;&#039; happens in a unit I&#039;ll call Spring distance (sd). This is a tiny distance--there are 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt; = 65536 sd in an elmo, which is the unit that is most commonly used. For example, weapon ranges are specified in elmos. Fortunately, Scriptor can automatically convert elmos to sd: just put the number of elmos you want in brackets. Sometimes you&#039;ll see scripts that use 2.5 * 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt; = 163840 instead. I recommend not doing this since it makes conversion more difficult.&lt;br /&gt;
&lt;br /&gt;
==Angular Units==&lt;br /&gt;
&lt;br /&gt;
Likewise, everything angular &#039;&#039;really&#039;&#039; happens in a unit I&#039;ll call Spring angle (sa). There are 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt; sa in a full circle. Generally you&#039;ll be working in degrees, and Scriptor can automatically convert from degrees to sa. There are 182 and 2/45 sa in a degree.&lt;br /&gt;
&lt;br /&gt;
==Axes==&lt;br /&gt;
&lt;br /&gt;
All COB animation statements specify an axis. There are three axes, &amp;quot;x-axis&amp;quot;, &amp;quot;y-axis&amp;quot;, and &amp;quot;z-axis&amp;quot;. Positive x is to the unit&#039;s left (the right if you are looking at the unit from the front). Positive y is to the unit&#039;s top. Positive z is to the unit&#039;s front.&lt;br /&gt;
&lt;br /&gt;
The position and rotation of each piece defines the coordinate system for all of its child pieces. So, if you move or rotate a piece, all of its child pieces will move and rotate with it.&lt;br /&gt;
&lt;br /&gt;
A positive angle is counterclockwise looking at the piece from the positive end of the axis toward the negative end of the axis.&lt;br /&gt;
&lt;br /&gt;
==move==&lt;br /&gt;
&lt;br /&gt;
 move [piece] to [axis] [distance] now;&lt;br /&gt;
&lt;br /&gt;
This moves the piece immediately. The piece will be in its new position before the next statement is executed.&lt;br /&gt;
&lt;br /&gt;
 move [piece] to [axis] [distance] speed [speed];&lt;br /&gt;
&lt;br /&gt;
This moves the piece at some speed until it reaches its destination, or the piece is told to move to a different distance along the same axis, whichever comes first. After this statement, the piece moves independent of the script; indeed, the script proceeds immediately to the next statement after it sets the piece moving.&lt;br /&gt;
&lt;br /&gt;
Speed is always positive, even if you are moving the piece to a negative distance. It is measured in Spring distance/second (sd/s).&lt;br /&gt;
&lt;br /&gt;
 wait-for-move [piece] along [axis];&lt;br /&gt;
&lt;br /&gt;
Makes the thread sleep until the piece stops moving along the axis.&lt;br /&gt;
&lt;br /&gt;
==turn==&lt;br /&gt;
&lt;br /&gt;
These are similar to movement in behavior, except they rotate the piece.&lt;br /&gt;
&lt;br /&gt;
 turn [piece] to [axis] [angle] now;&lt;br /&gt;
&lt;br /&gt;
Turns the piece to the specified angle around the axis immediately. Pieces rotate around their &amp;lt;u&amp;gt;own&amp;lt;/u&amp;gt; center, not their parent&#039;s (although if the parent rotates, they do as well). If the piece moves, the center moves with it, so a piece&#039;s movement occurs &amp;quot;before&amp;quot; its rotation in determining its final position.&lt;br /&gt;
&lt;br /&gt;
 turn [piece] to [axis] [angle] speed [angular speed];&lt;br /&gt;
&lt;br /&gt;
Angular speed is always positive, even if the angle is negative. The speed is in Spring angles/second (sa/s).&lt;br /&gt;
&lt;br /&gt;
 wait-for-turn [piece] around [axis];&lt;br /&gt;
&lt;br /&gt;
Makes the thread sleep until the piece stops spinning around the axis.&lt;br /&gt;
&lt;br /&gt;
==spin==&lt;br /&gt;
&lt;br /&gt;
 spin [piece] around [axis] speed [angular speed];&lt;br /&gt;
&lt;br /&gt;
This starts the piece spinning at a constant speed immediately. Again, the speed is in Spring angles/second (sa/s); however, it can be negative if you want it to spin in that direction.&lt;br /&gt;
&lt;br /&gt;
 spin [piece] around [axis] speed [angular speed] accelerate [angular acceleration];&lt;br /&gt;
&lt;br /&gt;
The angular acceleration should always be positive, even if you are spinning the piece at a negative angular speed. It is measured in Spring angles per frame-second (sa/f*s); in other words, the speed of the piece will increase by that amount every &#039;&#039;frame&#039;&#039;, not every second. There are 30 frames per second.&lt;br /&gt;
&lt;br /&gt;
 stop-spin [piece] around [axis];&lt;br /&gt;
&lt;br /&gt;
Stops the piece from spinning immediately, regardless of its orientation.&lt;br /&gt;
&lt;br /&gt;
 stop-spin [piece] around [axis] decelerate [angular deceleration];&lt;br /&gt;
&lt;br /&gt;
Slows the piece&#039;s spinning down until it stops. As with angular acceleration, the angular deceleration should always be positive and is measured in Spring angles per frame-second.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobAnimation&amp;diff=1875</id>
		<title>Animation-CobAnimation</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobAnimation&amp;diff=1875"/>
		<updated>2008-05-28T05:15:04Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pieces==&lt;br /&gt;
&lt;br /&gt;
Each unit has a root piece and a tree of other pieces attached to the root piece. At the top of each file you&#039;ll need to put the following line:&lt;br /&gt;
&lt;br /&gt;
 piece [names of pieces of the model separated by commas];&lt;br /&gt;
&lt;br /&gt;
As usual, capitalization does not matter; neither does the order of the pieces. You do not need to name every piece that the model actually has, although you should do so, and you cannot do anything to a piece that you have not named. If you try to do something to a piece that doesn&#039;t exist, Spring will throw an error. Generally it will not crash but you&#039;ll probably get lots of chat spam, so avoid this.&lt;br /&gt;
&lt;br /&gt;
Every piece starts in the position as it appears in any modeling program, such as Upspring. This is defined to be zero position and zero rotation.&lt;br /&gt;
&lt;br /&gt;
Pieces are really numbers, although Scriptor usually throws a fit if you try to use them as numbers (it will not accept a number in places where it expects a piece name, although for functions that involve a piecenum you can use the piece&#039;s number instead of the piece name if you so desire). The first piece you list is 0, and it counts from there.&lt;br /&gt;
&lt;br /&gt;
==Linear Units==&lt;br /&gt;
&lt;br /&gt;
Everything linear &#039;&#039;really&#039;&#039; happens in a unit I&#039;ll call Spring distance (sd). This is a tiny distance--there are 2^16 = 65536 sd in an elmo, which is the unit that is most commonly used. For example, weapon ranges are specified in elmos. Fortunately, Scriptor can automatically convert elmos to sd: just put the number of elmos you want in brackets. Sometimes you&#039;ll see scripts that use 2.5*2^16 = 163840 instead. I recommend not doing this since it makes conversion more difficult.&lt;br /&gt;
&lt;br /&gt;
==Angular Units==&lt;br /&gt;
&lt;br /&gt;
Likewise, everything angular &#039;&#039;really&#039;&#039; happens in a unit I&#039;ll call Spring angle (sa). There are 2^16 sa in a full circle. Generally you&#039;ll be working in degrees, and Scriptor can automatically convert from degrees to sa. There are 182 and 2/45 sa in a degree.&lt;br /&gt;
&lt;br /&gt;
==Axes==&lt;br /&gt;
&lt;br /&gt;
All COB animation statements specify an axis. There are three axes, &amp;quot;x-axis&amp;quot;, &amp;quot;y-axis&amp;quot;, and &amp;quot;z-axis&amp;quot;. Positive x is to the unit&#039;s left (the right if you are looking at the unit from the front). Positive y is to the unit&#039;s top. Positive z is to the unit&#039;s front.&lt;br /&gt;
&lt;br /&gt;
The position and rotation of each piece defines the coordinate system for all of its child pieces. So, if you move or rotate a piece, all of its child pieces will move and rotate with it.&lt;br /&gt;
&lt;br /&gt;
A positive angle is counterclockwise looking at the piece from the positive end of the axis toward the negative end of the axis.&lt;br /&gt;
&lt;br /&gt;
==move==&lt;br /&gt;
&lt;br /&gt;
 move [piece] to [axis] [distance] now;&lt;br /&gt;
&lt;br /&gt;
This moves the piece immediately. The piece will be in its new position before the next statement is executed.&lt;br /&gt;
&lt;br /&gt;
 move [piece] to [axis] [distance] speed [speed];&lt;br /&gt;
&lt;br /&gt;
This moves the piece at some speed until it reaches its destination, or the piece is told to move to a different distance along the same axis, whichever comes first. After this statement, the piece moves independent of the script; indeed, the script proceeds immediately to the next statement after it sets the piece moving.&lt;br /&gt;
&lt;br /&gt;
Speed is always positive, even if you are moving the piece to a negative distance. It is measured in Spring distance/second (sd/s).&lt;br /&gt;
&lt;br /&gt;
 wait-for-move [piece] along [axis];&lt;br /&gt;
&lt;br /&gt;
Makes the thread sleep until the piece stops moving along the axis.&lt;br /&gt;
&lt;br /&gt;
==turn==&lt;br /&gt;
&lt;br /&gt;
These are similar to movement in behavior, except they rotate the piece.&lt;br /&gt;
&lt;br /&gt;
 turn [piece] to [axis] [angle] now;&lt;br /&gt;
&lt;br /&gt;
Turns the piece to the specified angle around the axis immediately. Pieces rotate around their &amp;lt;u&amp;gt;own&amp;lt;/u&amp;gt; center, not their parent&#039;s (although if the parent rotates, they do as well). If the piece moves, the center moves with it, so a piece&#039;s movement occurs &amp;quot;before&amp;quot; its rotation in determining its final position.&lt;br /&gt;
&lt;br /&gt;
 turn [piece] to [axis] [angle] speed [angular speed];&lt;br /&gt;
&lt;br /&gt;
Angular speed is always positive, even if the angle is negative. The speed is in Spring angles/second (sa/s).&lt;br /&gt;
&lt;br /&gt;
 wait-for-turn [piece] around [axis];&lt;br /&gt;
&lt;br /&gt;
Makes the thread sleep until the piece stops spinning around the axis.&lt;br /&gt;
&lt;br /&gt;
==spin==&lt;br /&gt;
&lt;br /&gt;
 spin [piece] around [axis] speed [angular speed];&lt;br /&gt;
&lt;br /&gt;
This starts the piece spinning at a constant speed immediately. Again, the speed is in Spring angles/second (sa/s); however, it can be negative if you want it to spin in that direction.&lt;br /&gt;
&lt;br /&gt;
 spin [piece] around [axis] speed [angular speed] accelerate [angular acceleration];&lt;br /&gt;
&lt;br /&gt;
The angular acceleration should always be positive, even if you are spinning the piece at a negative angular speed. It is measured in Spring angles per frame-second (sa/f*s); in other words, the speed of the piece will increase by that amount every &#039;&#039;frame&#039;&#039;, not every second. There are 30 frames per second.&lt;br /&gt;
&lt;br /&gt;
 stop-spin [piece] around [axis];&lt;br /&gt;
&lt;br /&gt;
Stops the piece from spinning immediately, regardless of its orientation.&lt;br /&gt;
&lt;br /&gt;
 stop-spin [piece] around [axis] decelerate [angular deceleration];&lt;br /&gt;
&lt;br /&gt;
Slows the piece&#039;s spinning down until it stops. As with angular acceleration, the angular deceleration should always be positive and is measured in Spring angles per frame-second.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobAnimation&amp;diff=1874</id>
		<title>Animation-CobAnimation</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobAnimation&amp;diff=1874"/>
		<updated>2008-05-28T05:01:53Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pieces==&lt;br /&gt;
&lt;br /&gt;
Each unit will have a root piece, and then a tree of other pieces attached to the root piece. At the top of each file you&#039;ll need to put the following line:&lt;br /&gt;
&lt;br /&gt;
 piece [names of pieces of the model separated by commas];&lt;br /&gt;
&lt;br /&gt;
As usual, capitalization does not matter. You do not need to name every piece that the model actually has, although you should do so, and you cannot do anything to a piece that you have not named. If you try to do something to a piece that doesn&#039;t exist, Spring will throw an error. Generally it will not crash but you&#039;ll probably get lots of chat spam, so avoid this.&lt;br /&gt;
&lt;br /&gt;
Every piece starts in the position as it appears in any modeling program, such as Upspring. This is defined to be zero position and zero rotation.&lt;br /&gt;
&lt;br /&gt;
==Linear Units==&lt;br /&gt;
&lt;br /&gt;
Everything linear &#039;&#039;really&#039;&#039; happens in a unit I&#039;ll call Spring distance (sd). This is a tiny distance--there are 2^16 = 65536 sd in an elmo, which is the unit that is most commonly used. For example, weapon ranges are specified in elmos. Fortunately, Scriptor can automatically convert elmos to sd: just put the number of elmos you want in brackets. Sometimes you&#039;ll see scripts that use 2.5*2^16 = 163840 instead. I recommend not doing this since it makes conversion more difficult.&lt;br /&gt;
&lt;br /&gt;
==Angular Units==&lt;br /&gt;
&lt;br /&gt;
Likewise, everything angular &#039;&#039;really&#039;&#039; happens in a unit I&#039;ll call Spring angle (sa). There are 2^16 sa in a full circle. Generally you&#039;ll be working in degrees, and Scriptor can automatically convert from degrees to sa. There are 182 and 2/45 sa in a degree.&lt;br /&gt;
&lt;br /&gt;
==Axes==&lt;br /&gt;
&lt;br /&gt;
All COB animation statements specify an axis. There are three axes, &amp;quot;x-axis&amp;quot;, &amp;quot;y-axis&amp;quot;, and &amp;quot;z-axis&amp;quot;. Positive x is to the unit&#039;s left (the right if you are looking at the unit from the front). Positive y is to the unit&#039;s top. Positive z is to the unit&#039;s front.&lt;br /&gt;
&lt;br /&gt;
The position and rotation of each piece defines the coordinate system for all of its child pieces. So, if you move or rotate a piece, all of its child pieces will move and rotate with it.&lt;br /&gt;
&lt;br /&gt;
==move==&lt;br /&gt;
&lt;br /&gt;
 move [piece] to [axis] [distance] now;&lt;br /&gt;
&lt;br /&gt;
This moves the piece immediately. The piece will be in its new position before the next statement is executed.&lt;br /&gt;
&lt;br /&gt;
 move [piece] to [axis] [distance] speed [speed];&lt;br /&gt;
&lt;br /&gt;
This moves the piece at some speed until it reaches its destination, or the piece is told to move to a different distance along the same axis, whichever comes first. After this statement, the piece moves independent of the script; indeed, the script proceeds immediately to the next statement after it sets the piece moving.&lt;br /&gt;
&lt;br /&gt;
Speed is always positive, even if you are moving the piece to a negative distance. It is measured in Spring distance/second (sd/s).&lt;br /&gt;
&lt;br /&gt;
 wait-for-move [piece] along [axis];&lt;br /&gt;
&lt;br /&gt;
Makes the thread sleep until the piece stops moving.&lt;br /&gt;
&lt;br /&gt;
==turn==&lt;br /&gt;
&lt;br /&gt;
These are similar to movement in behavior, except they rotate the piece.&lt;br /&gt;
&lt;br /&gt;
 turn [piece] to [axis] [angle] now;&lt;br /&gt;
&lt;br /&gt;
 turn [piece] to [axis] [angle] speed [angular speed];&lt;br /&gt;
&lt;br /&gt;
Pieces rotate around their __own__ center, not their parent&#039;s. If the piece moves, the center moves with it. A positive angle is counterclockwise looking at the piece from the positive end of the axis toward the negative end. Angular speed is always positive, even if the angle is negative. The speed is measured in Spring angles/second (sa/s).&lt;br /&gt;
&lt;br /&gt;
 wait-for-turn [piece] around [axis];&lt;br /&gt;
&lt;br /&gt;
==spin==&lt;br /&gt;
&lt;br /&gt;
 spin [piece] around [axis]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobAnimation&amp;diff=1873</id>
		<title>Animation-CobAnimation</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobAnimation&amp;diff=1873"/>
		<updated>2008-05-28T04:45:25Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: New page: ==Linear Units==  Everything linear &amp;#039;&amp;#039;really&amp;#039;&amp;#039; happens in a unit I&amp;#039;ll call Spring distance (sd). This is a tiny distance--there are 2^16 = 65536 sd in an elmo, which is the unit that is mo...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Linear Units==&lt;br /&gt;
&lt;br /&gt;
Everything linear &#039;&#039;really&#039;&#039; happens in a unit I&#039;ll call Spring distance (sd). This is a tiny distance--there are 2^16 = 65536 sd in an elmo, which is the unit that is most commonly used. For example, weapon ranges are specified in elmos. Fortunately, Scriptor can automatically convert elmos to sd: just put the number of elmos you want in brackets. Sometimes you&#039;ll see scripts that use 2.5*2^16 = 163840 instead. I recommend not doing this since it makes conversion more difficult.&lt;br /&gt;
&lt;br /&gt;
==Angular Units==&lt;br /&gt;
&lt;br /&gt;
Likewise, everything angular &#039;&#039;really&#039;&#039; happens in a unit I&#039;ll call Spring angle (sa). There are 2^16 sa in a full circle. Generally you&#039;ll be working in degrees, and Scriptor can automatically convert from degrees to sa. There are 182 and 2/45 sa in a degree.&lt;br /&gt;
&lt;br /&gt;
==Axes==&lt;br /&gt;
&lt;br /&gt;
All COB animation statements specify an axis. There are three axes, &amp;quot;x-axis&amp;quot;, &amp;quot;y-axis&amp;quot;, and &amp;quot;z-axis&amp;quot;. Positive x is to the unit&#039;s left (the right if you are looking at the unit from the front). Positive y is to the unit&#039;s top. Positive z is to the unit&#039;s front.&lt;br /&gt;
&lt;br /&gt;
==turn==&lt;br /&gt;
&lt;br /&gt;
 turn [piece] to [axis] now;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 turn [piece] to [axis] speed [speed]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7934</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7934"/>
		<updated>2008-05-28T04:34:57Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;filehosting at 20080405:&lt;br /&gt;
&lt;br /&gt;
http://www.tasdownloads.com/faq.php&lt;br /&gt;
&lt;br /&gt;
http://spring.jobjol.nl/subcategory.php?id=1&amp;amp;language=English&lt;br /&gt;
&lt;br /&gt;
http://spring-portal.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mod development=&lt;br /&gt;
Mods, next to Maps, is the content used in Spring.&amp;lt;br&amp;gt;&lt;br /&gt;
A mod is simply a combined file containing a small structure of files and directories holding all the data required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Mod_Development | Mod Development]] wiki is a starting page, linking to very useful information on the files included in a mod, their hierarchy and more.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Almost the entire mod developing is the creation of units. Which isn&#039;t an easy job.&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the creation of units are everywere, but not combined.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a gathered list of all Tutorials and helpfull forums threads I could find:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
*http://taspring.clan-sy.com/wiki/Create_units - old Wiki&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Mod Development]]&lt;br /&gt;
*[[Mod specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6015 What do I need to create a mod]&lt;br /&gt;
*[[Simple Mod Tutorial]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Models - s3o Files====&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures].&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [[Simple Mod Tutorial]]&lt;br /&gt;
* [[Units:CreateModel|UV Mapping in Wings3D]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
* [http://taspring.clan-sy.com/phpbb/viewtopic.php?p=75495 various things about unit making. (Also contains an illustrated alpha-channel tut)]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
outdated model format used by OTA&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://spring.clan-sy.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://www.fileuniverse.com/?p=show&amp;amp;a=it&amp;amp;id=305 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
====Scripting and Animation - COB/BOS Files====&lt;br /&gt;
*[[COB_Animation]]&lt;br /&gt;
*[[COB_Callins]]&lt;br /&gt;
*[[COB_Constants]]&lt;br /&gt;
*[[COB_Threads]]&lt;br /&gt;
*[[Image:Usa_flag.gif]][[Image:France_flag.gif]][[Units:.bos/.COB]] -all tags for make a animation file&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[http://www.tadesigners.com/bos1.htm TADesigners] have a nice tutorial too&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Mod Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Image:France_flag.gif]] [[exemples de fichiers .fbi]]&lt;br /&gt;
*[[image:usa_flag.gif]][[ all tags &amp;amp; details with a exemple ]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics]]&lt;br /&gt;
*[[CustomExplosionGenerators|Mod Development:Custom explosions]]&lt;br /&gt;
*[[CustomUnitIcons|Mod Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobThreads&amp;diff=1969</id>
		<title>Animation-CobThreads</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobThreads&amp;diff=1969"/>
		<updated>2008-05-27T23:04:27Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobThread.cpp&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Much of the time you can expect your script to execute sequentially; that is, looking through your code, the system progresses from statement to statement without anything &amp;quot;strange&amp;quot; (variables being changed, threads being started, etc.) between them. HOWEVER, &amp;quot;strange&amp;quot; things do happen, and in fact they happen quite regularly in scripts. We say that the script system has &amp;quot;concurrency&amp;quot; when things can happen between statements.&lt;br /&gt;
&lt;br /&gt;
===Why Concurrency?===&lt;br /&gt;
So why go to all this trouble with concurrency? The script system has concurrency because we never know when things are going to happen. The player could give a command to the unit, the unit could run into a wall, rocks could fall out of the sky and kill the unit, and so forth. Without concurrency we would have to check very often whether which of all possible events had happened recently in order to determine what to do next. This would suck.&lt;br /&gt;
&lt;br /&gt;
==Dealing With Concurrency==&lt;br /&gt;
Every time a callin is called or a start-script statement is executed, a &amp;quot;thread&amp;quot; is created. At any one time, only one thread is being executed at a time, but sometimes a thread will stop executing for a while and continue later, while several other threads will execute in the meantime. Most of the time your script is guaranteed to execute sequentially. If you say x = 1;, it will stay 1 unless you change it again. The exceptions are as follows:&lt;br /&gt;
&lt;br /&gt;
*Before a script starts.&lt;br /&gt;
*After a wait-for-move or wait-for-turn statement.&lt;br /&gt;
*After a sleep statement.&lt;br /&gt;
&lt;br /&gt;
During these times, any other thread has the ability to come in and change all your static variables, tell your pieces to move, turn, and spin, and so forth. Therefore, you cannot always assume these things will be the way you left them when execution of the thread resumes. If it is possible that another thread will change something that you need to know about, you need to check it after any of these times.&lt;br /&gt;
&lt;br /&gt;
==Sleeping==&lt;br /&gt;
&lt;br /&gt;
You can have a thread sleep by using a sleep statement:&lt;br /&gt;
&lt;br /&gt;
 sleep [time in ms];&lt;br /&gt;
&lt;br /&gt;
This is useful for delaying events and in making loops execute every so often. If you want to wait until a piece moves into position, use wait-for-move or wait-for-turn instead.&lt;br /&gt;
&lt;br /&gt;
==Signals==&lt;br /&gt;
&lt;br /&gt;
Signals provide a way to kill threads in their sleep. Signals are bitmasks. There are two statement types dealing with signals: signal and set-signal-mask.&lt;br /&gt;
&lt;br /&gt;
 signal [bitmask];&lt;br /&gt;
&lt;br /&gt;
kills all sleeping threads that overlap the bitmask.&lt;br /&gt;
&lt;br /&gt;
 set-signal-mask [bitmask];&lt;br /&gt;
&lt;br /&gt;
sets what signals kill the current thread.&lt;br /&gt;
&lt;br /&gt;
This has several applications. For functions that are called regularly, such as AimWeaponX(), this prevents multiple copies of the same thread from running at the same time. It is also a way (but not the only or necessarily best way) to interrupt another thread.&lt;br /&gt;
&lt;br /&gt;
==call-script==&lt;br /&gt;
&lt;br /&gt;
Use as follows:&lt;br /&gt;
&lt;br /&gt;
 call-script [function]([args]);&lt;br /&gt;
&lt;br /&gt;
This does not start a new thread! The calling function will not continue until the called function returns.&lt;br /&gt;
&lt;br /&gt;
==start-script==&lt;br /&gt;
&lt;br /&gt;
At first glance, this is similar to call-script:&lt;br /&gt;
&lt;br /&gt;
 start-script [function]([args]);&lt;br /&gt;
&lt;br /&gt;
However, start-script &#039;&#039;does&#039;&#039; create a new thread, and the calling function &#039;&#039;doesn&#039;t&#039;&#039; wait until the started function returns before continuing. By default, the new thread shares the same signal mask as its parent, although you can set it manually if you like. Apart from this, the two threads execute completely independently.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobConstants&amp;diff=1922</id>
		<title>Animation-CobConstants</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobConstants&amp;diff=1922"/>
		<updated>2008-05-27T23:04:12Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
This has a list of all COB SET/GET keys: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobInstance.cpp&lt;br /&gt;
&lt;br /&gt;
You&#039;ll want to include a file with these constants in your script.&lt;br /&gt;
&lt;br /&gt;
==SET/GET==&lt;br /&gt;
&lt;br /&gt;
===Use===&lt;br /&gt;
Use GET [tag] to get a value. Some GETs refer to functions; in this case, use GET [tag](arg1, arg2, arg3, arg4).&lt;br /&gt;
Use SET [tag] to [value] to change a value.&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
There&#039;s a lot of GET/SET tags; I&#039;ll cover some of the more useful but less intuitive ones.&lt;br /&gt;
&lt;br /&gt;
*ACTIVATION: Whether the unit is on (true) or off (false).&lt;br /&gt;
*ARMORED: When true, any damage dealt to the unit will be multiplied by its damageModifier.&lt;br /&gt;
*PRINT: You can use GET PRINT to send up to 4 arguments to chat. Useful for debugging.&lt;br /&gt;
*VETERAN_LEVEL: The unit&#039;s experience times 100. Note that you can SET this via script, although the unit won&#039;t gain any extra health from doing so.&lt;br /&gt;
&lt;br /&gt;
==emit-sfx==&lt;br /&gt;
&lt;br /&gt;
 emit-sfx [sfxtype] from [piece];&lt;br /&gt;
&lt;br /&gt;
The least significant byte of sfxtype is treated as an unsigned integer; the remaining bits are a bitmask. The bitmask indicates what &#039;&#039;type&#039;&#039; of sfx to emit, while the number indicates &#039;&#039;which&#039;&#039; sfx of that type to emit. The bits are as follows:&lt;br /&gt;
&lt;br /&gt;
*256: Point-based fx. Used for white smoke (1), black smoke (2), and bubbles (3).&lt;br /&gt;
*1024: Unit sfx. Use with the unit&#039;s sfxtypes.explosionGenerators. The first one is 0, the second one is 1, etc.&lt;br /&gt;
*2048: Fire weapon. Fires a weapon from the piece (no aiming involved). Again, the first weapon is 0, the second weapon is 1, etc.&lt;br /&gt;
*4096: Explode weapon. Detonates a weapon at the piece. Again, the first weapon is 0, the second weapon is 1, etc.&lt;br /&gt;
&lt;br /&gt;
==explode==&lt;br /&gt;
&lt;br /&gt;
Causes the piece to explode and possibly go flying. This actually gives the appearance of making a copy of the piece (henceforth referred to as &amp;quot;debris&amp;quot; so if you&#039;re using it outside of Killed() you may want to hide the piece in question.&lt;br /&gt;
&lt;br /&gt;
 explode [piece] type [exptype];&lt;br /&gt;
&lt;br /&gt;
exptype is a bitmask. The bits are as follows:&lt;br /&gt;
&lt;br /&gt;
*SHATTER: Explodes the debris into tiny triangles. Looks like confetti.&lt;br /&gt;
*EXPLODE_ON_HIT: Debris will explode on impact, causing about 40 damage.&lt;br /&gt;
*FALL: Debris is affected by gravity.&lt;br /&gt;
*SMOKE&lt;br /&gt;
*FIRE&lt;br /&gt;
*BITMAPONLY: No debris, just an explosion graphic.&lt;br /&gt;
*NOCEGTRAIL&lt;br /&gt;
*BITMAP[1...5]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1900</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1900"/>
		<updated>2008-05-27T23:03:11Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Some (but not all) are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
*Create(): Called when the unit is created (&#039;&#039;not&#039;&#039; finished&#039;&#039;).&lt;br /&gt;
*Activate()/Deactivate(): Called when the unit is turned on/off.&lt;br /&gt;
*Killed(severity, corpsetype): Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
*StartMoving()/StopMoving(): Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
*SetSFXOccupy(terraintype): Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
*MoveRate[0...3](): Appears to be the aircraft equivalent of SetSFXOccupy. MoveRate3 doesn&#039;t appear to actually be used. MoveRate1 is called when the aircraft takes off or lands. If the aircraft is not taking off or landing, MoveRate0 is called when the aircraft drops below 1/3 maximum speed, MoveRate2 is called when the aircraft exceeds 2/3 maximum speed, and MoveRate1 is called when the aircraft enters within 1/3-2/3 maximum speed. I don&#039;t know if this actually works.&lt;br /&gt;
*SetDirection(heading): Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
*SetSpeed(speed): Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
*AimWeaponX(heading, pitch): Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
*AimFromWeaponX(piecenum): You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
*QueryWeaponX(piecenum): You should set piecenum to a piece of the model. The shot starts from this piece of the model. LOS is also traced from here to the target to see if a weapon can fire. Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
*FireWeaponX(): Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
*ShotX(): Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;br /&gt;
*EndBurstX(): Called after the last shot in a burst.&lt;br /&gt;
*BlockShotX()&lt;br /&gt;
*TargetWeightX()&lt;br /&gt;
*RockUnit(anglex, anglez): Called when the unit fires. Use it to rock the unit on firing, although there are other ways to do this.&lt;br /&gt;
*HitByWeaponID(damage, weaponid?, unitid?)&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
&lt;br /&gt;
*QueryLandingPadCount(count)&lt;br /&gt;
*QueryLandingPad&lt;br /&gt;
*Falling&lt;br /&gt;
*Landed&lt;br /&gt;
*SetMaxReloadTime(time): Called on unit creation. time is the time in ms that it takes the slowest-firing weapon to reload.&lt;br /&gt;
*BeginTransport&lt;br /&gt;
*QueryTransport&lt;br /&gt;
*TransportPickup&lt;br /&gt;
*EndTransport&lt;br /&gt;
*StartUnload&lt;br /&gt;
*StartBuilding(): Called when the unit starts building.&lt;br /&gt;
*StopBuilding(): Called when the unit stops building.&lt;br /&gt;
*QueryNanoPiece(piecenum): Set piecenum to the piece you want the nanospray to come from.&lt;br /&gt;
*QueryBuildInfo&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1899</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1899"/>
		<updated>2008-05-27T23:01:45Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Some (but not all) are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
 Create(): Called when the unit is created (&#039;&#039;not&#039;&#039; finished&#039;&#039;).&lt;br /&gt;
 Activate()/Deactivate(): Called when the unit is turned on/off.&lt;br /&gt;
 Killed(severity, corpsetype): Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
 StartMoving()/StopMoving(): Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
 SetSFXOccupy(terraintype): Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
 MoveRate[0...3](): Appears to be the aircraft equivalent of SetSFXOccupy. MoveRate3 doesn&#039;t appear to actually be used. MoveRate1 is called when the aircraft takes off or lands. If the aircraft is not taking off or landing, MoveRate0 is called when the aircraft drops below 1/3 maximum speed, MoveRate2 is called when the aircraft exceeds 2/3 maximum speed, and MoveRate1 is called when the aircraft enters within 1/3-2/3 maximum speed. I don&#039;t know if this actually works.&lt;br /&gt;
 SetDirection(heading): Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
 SetSpeed(speed): Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
 AimWeaponX(heading, pitch): Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
 AimFromWeaponX(piecenum): You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
 QueryWeaponX(piecenum): You should set piecenum to a piece of the model. The shot starts from this piece of the model. LOS is also traced from here to the target to see if a weapon can fire. Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
 FireWeaponX(): Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
 ShotX(): Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;br /&gt;
 EndBurstX(): Called after the last shot in a burst.&lt;br /&gt;
 BlockShotX()&lt;br /&gt;
 TargetWeightX()&lt;br /&gt;
 RockUnit(anglex, anglez): Called when the unit fires. Use it to rock the unit on firing, although there are other ways to do this.&lt;br /&gt;
 HitByWeaponID(damage, weaponid?, unitid?)&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
&lt;br /&gt;
 QueryLandingPadCount(count)&lt;br /&gt;
 QueryLandingPad&lt;br /&gt;
 Falling&lt;br /&gt;
 Landed&lt;br /&gt;
 SetMaxReloadTime(time): Called on unit creation. time is the time in ms that it takes the slowest-firing weapon to reload.&lt;br /&gt;
 BeginTransport&lt;br /&gt;
 QueryTransport&lt;br /&gt;
 TransportPickup&lt;br /&gt;
 EndTransport&lt;br /&gt;
 StartUnload&lt;br /&gt;
 StartBuilding(): Called when the unit starts building.&lt;br /&gt;
 StopBuilding(): Called when the unit stops building.&lt;br /&gt;
 QueryNanoPiece(piecenum): Set piecenum to the piece you want the nanospray to come from.&lt;br /&gt;
 QueryBuildInfo&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobConstants&amp;diff=1921</id>
		<title>Animation-CobConstants</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobConstants&amp;diff=1921"/>
		<updated>2008-05-27T22:46:04Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
This has a list of all COB SET/GET keys: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobInstance.cpp&lt;br /&gt;
&lt;br /&gt;
You&#039;ll want to include a file with these constants in your script.&lt;br /&gt;
&lt;br /&gt;
==SET/GET==&lt;br /&gt;
&lt;br /&gt;
===Use===&lt;br /&gt;
Use GET [tag] to get a value. Some GETs refer to functions; in this case, use GET [tag](arg1, arg2, arg3, arg4).&lt;br /&gt;
Use SET [tag] to [value] to change a value.&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
There&#039;s a lot of GET/SET tags; I&#039;ll cover some of the more useful but less intuitive ones.&lt;br /&gt;
&lt;br /&gt;
 ACTIVATION: Whether the unit is on (true) or off (false).&lt;br /&gt;
 ARMORED: When true, any damage dealt to the unit will be multiplied by its damageModifier.&lt;br /&gt;
 PRINT: You can use GET PRINT to send up to 4 arguments to chat. Useful for debugging.&lt;br /&gt;
 VETERAN_LEVEL: The unit&#039;s experience times 100. Note that you can SET this via script, although the unit won&#039;t gain any extra health from doing so.&lt;br /&gt;
&lt;br /&gt;
==emit-sfx==&lt;br /&gt;
&lt;br /&gt;
 emit-sfx [sfxtype] from [piece];&lt;br /&gt;
&lt;br /&gt;
The least significant byte of sfxtype is treated as an unsigned integer; the remaining bits are a bitmask. The bitmask indicates what &#039;&#039;type&#039;&#039; of sfx to emit, while the number indicates &#039;&#039;which&#039;&#039; sfx of that type to emit. The bits are as follows:&lt;br /&gt;
&lt;br /&gt;
 256: Point-based fx. Used for white smoke (1), black smoke (2), and bubbles (3).&lt;br /&gt;
 1024: Unit sfx. Use with the unit&#039;s sfxtypes.explosionGenerators. The first one is 0, the second one is 1, etc.&lt;br /&gt;
 2048: Fire weapon. Fires a weapon from the piece (no aiming involved). Again, the first weapon is 0, the second weapon is 1, etc.&lt;br /&gt;
 4096: Explode weapon. Detonates a weapon at the piece. Again, the first weapon is 0, the second weapon is 1, etc.&lt;br /&gt;
&lt;br /&gt;
==explode==&lt;br /&gt;
&lt;br /&gt;
Causes the piece to explode and possibly go flying. This actually gives the appearance of making a copy of the piece (henceforth referred to as &amp;quot;debris&amp;quot; so if you&#039;re using it outside of Killed() you may want to hide the piece in question.&lt;br /&gt;
&lt;br /&gt;
 explode [piece] type [exptype];&lt;br /&gt;
&lt;br /&gt;
exptype is a bitmask. The bits are as follows:&lt;br /&gt;
&lt;br /&gt;
 SHATTER: Explodes the debris into tiny triangles. Looks like confetti.&lt;br /&gt;
 EXPLODE_ON_HIT: Debris will explode on impact, causing about 40 damage.&lt;br /&gt;
 FALL: Debris is affected by gravity.&lt;br /&gt;
 SMOKE&lt;br /&gt;
 FIRE&lt;br /&gt;
 BITMAPONLY: No debris, just an explosion graphic.&lt;br /&gt;
 NOCEGTRAIL&lt;br /&gt;
 BITMAP[1...5]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobConstants&amp;diff=1920</id>
		<title>Animation-CobConstants</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobConstants&amp;diff=1920"/>
		<updated>2008-05-27T22:45:34Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
This has a list of all COB SET/GET keys: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobInstance.cpp&lt;br /&gt;
&lt;br /&gt;
You&#039;ll want to include a file with these constants in your script.&lt;br /&gt;
&lt;br /&gt;
==SET/GET==&lt;br /&gt;
&lt;br /&gt;
===Use===&lt;br /&gt;
Use GET [tag] to get a value. Some GETs refer to functions; in this case, use GET [tag](arg1, arg2, arg3, arg4).&lt;br /&gt;
Use SET [tag] to [value] to change a value.&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
There&#039;s a lot of GET/SET tags; I&#039;ll cover some of the more useful but less intuitive ones.&lt;br /&gt;
&lt;br /&gt;
ACTIVATION: Whether the unit is on (true) or off (false).&lt;br /&gt;
&lt;br /&gt;
ARMORED: When true, any damage dealt to the unit will be multiplied by its damageModifier.&lt;br /&gt;
&lt;br /&gt;
PRINT: You can use GET PRINT to send up to 4 arguments to chat. Useful for debugging.&lt;br /&gt;
&lt;br /&gt;
VETERAN_LEVEL: The unit&#039;s experience times 100. Note that you can SET this via script, although the unit won&#039;t gain any extra health from doing so.&lt;br /&gt;
&lt;br /&gt;
==emit-sfx==&lt;br /&gt;
&lt;br /&gt;
 emit-sfx [sfxtype] from [piece];&lt;br /&gt;
&lt;br /&gt;
The least significant byte of sfxtype is treated as an unsigned integer; the remaining bits are a bitmask. The bitmask indicates what &#039;&#039;type&#039;&#039; of sfx to emit, while the number indicates &#039;&#039;which&#039;&#039; sfx of that type to emit. The bits are as follows:&lt;br /&gt;
&lt;br /&gt;
 256: Point-based fx. Used for white smoke (1), black smoke (2), and bubbles (3).&lt;br /&gt;
 1024: Unit sfx. Use with the unit&#039;s sfxtypes.explosionGenerators. The first one is 0, the second one is 1, etc.&lt;br /&gt;
 2048: Fire weapon. Fires a weapon from the piece (no aiming involved). Again, the first weapon is 0, the second weapon is 1, etc.&lt;br /&gt;
 4096: Explode weapon. Detonates a weapon at the piece. Again, the first weapon is 0, the second weapon is 1, etc.&lt;br /&gt;
&lt;br /&gt;
==explode==&lt;br /&gt;
&lt;br /&gt;
Causes the piece to explode and possibly go flying. This actually gives the appearance of making a copy of the piece (henceforth referred to as &amp;quot;debris&amp;quot; so if you&#039;re using it outside of Killed() you may want to hide the piece in question.&lt;br /&gt;
&lt;br /&gt;
 explode [piece] type [exptype];&lt;br /&gt;
&lt;br /&gt;
exptype is a bitmask. The bits are as follows:&lt;br /&gt;
&lt;br /&gt;
SHATTER: Explodes the debris into tiny triangles. Looks like confetti.&lt;br /&gt;
EXPLODE_ON_HIT: Debris will explode on impact, causing about 40 damage.&lt;br /&gt;
FALL: Debris is affected by gravity.&lt;br /&gt;
SMOKE&lt;br /&gt;
FIRE&lt;br /&gt;
BITMAPONLY: No debris, just an explosion graphic.&lt;br /&gt;
NOCEGTRAIL&lt;br /&gt;
BITMAP[1...5]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobThreads&amp;diff=1968</id>
		<title>Animation-CobThreads</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobThreads&amp;diff=1968"/>
		<updated>2008-05-27T22:19:33Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobThread.cpp&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Much of the time you can expect your script to execute sequentially; that is, looking through your code, the system progresses from statement to statement without anything &amp;quot;strange&amp;quot; (variables being changed, threads being started, etc.) between them. HOWEVER, &amp;quot;strange&amp;quot; things do happen, and in fact they happen quite regularly in scripts. We say that the script system has &amp;quot;concurrency&amp;quot; when things can happen between statements.&lt;br /&gt;
&lt;br /&gt;
===Why Concurrency?===&lt;br /&gt;
So why go to all this trouble with concurrency? The script system has concurrency because we never know when things are going to happen. The player could give a command to the unit, the unit could run into a wall, rocks could fall out of the sky and kill the unit, and so forth. Without concurrency we would have to check very often whether which of all possible events had happened recently in order to determine what to do next. This would suck.&lt;br /&gt;
&lt;br /&gt;
==Dealing With Concurrency==&lt;br /&gt;
Every time a callin is called or a start-script statement is executed, a &amp;quot;thread&amp;quot; is created. At any one time, only one thread is being executed at a time, but sometimes a thread will stop executing for a while and continue later, while several other threads will execute in the meantime. Most of the time your script is guaranteed to execute sequentially. If you say x = 1;, it will stay 1 unless you change it again. The exceptions are as follows:&lt;br /&gt;
&lt;br /&gt;
 * Before a script starts.&lt;br /&gt;
 * After a wait-for-move or wait-for-turn statement.&lt;br /&gt;
 * After a sleep statement.&lt;br /&gt;
&lt;br /&gt;
During these times, any other thread has the ability to come in and change all your static variables, tell your pieces to move, turn, and spin, and so forth. Therefore, you cannot always assume these things will be the way you left them when execution of the thread resumes. If it is possible that another thread will change something that you need to know about, you need to check it after any of these times.&lt;br /&gt;
&lt;br /&gt;
==Sleeping==&lt;br /&gt;
&lt;br /&gt;
You can have a thread sleep by using a sleep statement:&lt;br /&gt;
&lt;br /&gt;
 sleep [time in ms];&lt;br /&gt;
&lt;br /&gt;
This is useful for delaying events and in making loops execute every so often. If you want to wait until a piece moves into position, use wait-for-move or wait-for-turn instead.&lt;br /&gt;
&lt;br /&gt;
==Signals==&lt;br /&gt;
&lt;br /&gt;
Signals provide a way to kill threads in their sleep. Signals are bitmasks. There are two statement types dealing with signals: signal and set-signal-mask.&lt;br /&gt;
&lt;br /&gt;
 signal [bitmask];&lt;br /&gt;
&lt;br /&gt;
kills all sleeping threads that overlap the bitmask.&lt;br /&gt;
&lt;br /&gt;
 set-signal-mask [bitmask];&lt;br /&gt;
&lt;br /&gt;
sets what signals kill the current thread.&lt;br /&gt;
&lt;br /&gt;
This has several applications. For functions that are called regularly, such as AimWeaponX(), this prevents multiple copies of the same thread from running at the same time. It is also a way (but not the only or necessarily best way) to interrupt another thread.&lt;br /&gt;
&lt;br /&gt;
==call-script==&lt;br /&gt;
&lt;br /&gt;
Use as follows:&lt;br /&gt;
&lt;br /&gt;
 call-script [function]([args]);&lt;br /&gt;
&lt;br /&gt;
This does not start a new thread! The calling function will not continue until the called function returns.&lt;br /&gt;
&lt;br /&gt;
==start-script==&lt;br /&gt;
&lt;br /&gt;
At first glance, this is similar to call-script:&lt;br /&gt;
&lt;br /&gt;
 start-script [function]([args]);&lt;br /&gt;
&lt;br /&gt;
However, start-script &#039;&#039;does&#039;&#039; create a new thread, and the calling function &#039;&#039;doesn&#039;t&#039;&#039; wait until the started function returns before continuing. By default, the new thread shares the same signal mask as its parent, although you can set it manually if you like. Apart from this, the two threads execute completely independently.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobThreads&amp;diff=1967</id>
		<title>Animation-CobThreads</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobThreads&amp;diff=1967"/>
		<updated>2008-05-27T22:19:02Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobThread.cpp&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Much of the time you can expect your script to execute sequentially; that is, looking through your code, the system progresses from statement to statement without anything &amp;quot;strange&amp;quot; (variables being changed, threads being started, etc.) between them. HOWEVER, &amp;quot;strange&amp;quot; things do happen, and in fact they happen quite regularly in scripts. We say that the script system has &amp;quot;concurrency&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Why Concurrency?===&lt;br /&gt;
So why go to all this trouble with concurrency? The script system has concurrency because we never know when things are going to happen. The player could give a command to the unit, the unit could run into a wall, rocks could fall out of the sky and kill the unit, and so forth. Without concurrency we would have to check very often whether which of all possible events had happened recently in order to determine what to do next. This would suck.&lt;br /&gt;
&lt;br /&gt;
==Dealing With Concurrency==&lt;br /&gt;
Every time a callin is called or a start-script statement is executed, a &amp;quot;thread&amp;quot; is created. At any one time, only one thread is being executed at a time, but sometimes a thread will stop executing for a while and continue later, while several other threads will execute in the meantime. Most of the time your script is guaranteed to execute sequentially. If you say x = 1;, it will stay 1 unless you change it again. The exceptions are as follows:&lt;br /&gt;
&lt;br /&gt;
 * Before a script starts.&lt;br /&gt;
 * After a wait-for-move or wait-for-turn statement.&lt;br /&gt;
 * After a sleep statement.&lt;br /&gt;
&lt;br /&gt;
During these times, any other thread has the ability to come in and change all your static variables, tell your pieces to move, turn, and spin, and so forth. Therefore, you cannot always assume these things will be the way you left them when execution of the thread resumes. If it is possible that another thread will change something that you need to know about, you need to check it after any of these times.&lt;br /&gt;
&lt;br /&gt;
==Sleeping==&lt;br /&gt;
&lt;br /&gt;
You can have a thread sleep by using a sleep statement:&lt;br /&gt;
&lt;br /&gt;
 sleep [time in ms];&lt;br /&gt;
&lt;br /&gt;
This is useful for delaying events and in making loops execute every so often. If you want to wait until a piece moves into position, use wait-for-move or wait-for-turn instead.&lt;br /&gt;
&lt;br /&gt;
==Signals==&lt;br /&gt;
&lt;br /&gt;
Signals provide a way to kill threads in their sleep. Signals are bitmasks. There are two statement types dealing with signals: signal and set-signal-mask.&lt;br /&gt;
&lt;br /&gt;
 signal [bitmask];&lt;br /&gt;
&lt;br /&gt;
kills all sleeping threads that overlap the bitmask.&lt;br /&gt;
&lt;br /&gt;
 set-signal-mask [bitmask];&lt;br /&gt;
&lt;br /&gt;
sets what signals kill the current thread.&lt;br /&gt;
&lt;br /&gt;
This has several applications. For functions that are called regularly, such as AimWeaponX(), this prevents multiple copies of the same thread from running at the same time. It is also a way (but not the only or necessarily best way) to interrupt another thread.&lt;br /&gt;
&lt;br /&gt;
==call-script==&lt;br /&gt;
&lt;br /&gt;
Use as follows:&lt;br /&gt;
&lt;br /&gt;
 call-script [function]([args]);&lt;br /&gt;
&lt;br /&gt;
This does not start a new thread! The calling function will not continue until the called function returns.&lt;br /&gt;
&lt;br /&gt;
==start-script==&lt;br /&gt;
&lt;br /&gt;
At first glance, this is similar to call-script:&lt;br /&gt;
&lt;br /&gt;
 start-script [function]([args]);&lt;br /&gt;
&lt;br /&gt;
However, start-script &#039;&#039;does&#039;&#039; create a new thread, and the calling function &#039;&#039;doesn&#039;t&#039;&#039; wait until the started function returns before continuing. By default, the new thread shares the same signal mask as its parent, although you can set it manually if you like. Apart from this, the two threads execute completely independently.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobThreads&amp;diff=1966</id>
		<title>Animation-CobThreads</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobThreads&amp;diff=1966"/>
		<updated>2008-05-27T22:05:09Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: New page: ==Source==  https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobThread.cpp  ==Introduction==  Much of the time you can expect your script to execute sequentially; that is, loo...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobThread.cpp&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Much of the time you can expect your script to execute sequentially; that is, looking through your code, the system progresses from statement to statement without anything &amp;quot;strange&amp;quot; (variables being changed, threads being started, etc.) between them. HOWEVER, &amp;quot;strange&amp;quot; things do happen, and in fact they happen quite regularly in scripts. We say that the script system has &amp;quot;concurrency&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Why Concurrency?===&lt;br /&gt;
So why go to all this trouble with concurrency? The script system has concurrency because we never know when things are going to happen. The player could give a command to the unit, the unit could run into a wall, rocks could fall out of the sky and kill the unit, and so forth. Without concurrency we would have to check very often whether which of all possible events had happened recently in order to determine what to do next. This would suck.&lt;br /&gt;
&lt;br /&gt;
==Dealing With Concurrency==&lt;br /&gt;
Every time a callin is called or a start-script statement is executed, a &amp;quot;thread&amp;quot; is created. At any one time, only one thread is being executed at a time, but sometimes a thread will stop executing for a while and continue later, while several other threads will execute in the meantime. Most of the time your script is guaranteed to execute sequentially. If you say x = 1;, it will stay 1 unless you change it again. The exceptions are as follows:&lt;br /&gt;
&lt;br /&gt;
 * Before a script starts.&lt;br /&gt;
 * After a wait-for-move or wait-for-turn statement.&lt;br /&gt;
 * After a sleep statement.&lt;br /&gt;
&lt;br /&gt;
During these times, any other thread has the ability to come in and change all your static variables, tell your pieces to move, turn, and spin, and so forth. Therefore, you cannot always assume these things will be the way you left them when execution of the thread resumes. If it is possible that another thread will change something that you need to know about, you need to check it after any of these times.&lt;br /&gt;
&lt;br /&gt;
==Sleeping==&lt;br /&gt;
&lt;br /&gt;
You can have a thread sleep by using a sleep statement:&lt;br /&gt;
&lt;br /&gt;
 sleep [time in ms];&lt;br /&gt;
&lt;br /&gt;
==Signals==&lt;br /&gt;
&lt;br /&gt;
==call-script==&lt;br /&gt;
&lt;br /&gt;
==start-script==&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7933</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7933"/>
		<updated>2008-05-27T21:30:42Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: /* Scripting and Animation - COB/BOS Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;filehosting at 20080405:&lt;br /&gt;
&lt;br /&gt;
http://www.tasdownloads.com/faq.php&lt;br /&gt;
&lt;br /&gt;
http://spring.jobjol.nl/subcategory.php?id=1&amp;amp;language=English&lt;br /&gt;
&lt;br /&gt;
http://spring-portal.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mod development=&lt;br /&gt;
Mods, next to Maps, is the content used in Spring.&amp;lt;br&amp;gt;&lt;br /&gt;
A mod is simply a combined file containing a small structure of files and directories holding all the data required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Mod_Development | Mod Development]] wiki is a starting page, linking to very useful information on the files included in a mod, their hierarchy and more.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Almost the entire mod developing is the creation of units. Which isn&#039;t an easy job.&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the creation of units are everywere, but not combined.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a gathered list of all Tutorials and helpfull forums threads I could find:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
*http://taspring.clan-sy.com/wiki/Create_units - old Wiki&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Mod Development]]&lt;br /&gt;
*[[Mod specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6015 What do I need to create a mod]&lt;br /&gt;
*[[Simple Mod Tutorial]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Models - s3o Files====&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures].&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [[Simple Mod Tutorial]]&lt;br /&gt;
* [[Units:CreateModel|UV Mapping in Wings3D]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
* [http://taspring.clan-sy.com/phpbb/viewtopic.php?p=75495 various things about unit making. (Also contains an illustrated alpha-channel tut)]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
outdated model format used by OTA&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://spring.clan-sy.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://www.fileuniverse.com/?p=show&amp;amp;a=it&amp;amp;id=305 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
====Scripting and Animation - COB/BOS Files====&lt;br /&gt;
*[[COB_Callins]]&lt;br /&gt;
*[[COB_Constants]]&lt;br /&gt;
*[[COB_Threads]]&lt;br /&gt;
*[[Image:Usa_flag.gif]][[Image:France_flag.gif]][[Units:.bos/.COB]] -all tags for make a animation file&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[http://www.tadesigners.com/bos1.htm TADesigners] have a nice tutorial too&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Mod Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Image:France_flag.gif]] [[exemples de fichiers .fbi]]&lt;br /&gt;
*[[image:usa_flag.gif]][[ all tags &amp;amp; details with a exemple ]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics]]&lt;br /&gt;
*[[CustomExplosionGenerators|Mod Development:Custom explosions]]&lt;br /&gt;
*[[CustomUnitIcons|Mod Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobConstants&amp;diff=1919</id>
		<title>Animation-CobConstants</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobConstants&amp;diff=1919"/>
		<updated>2008-05-27T21:27:48Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: New page: ==Source==  This has a list of all COB SET/GET keys: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobInstance.cpp  You&amp;#039;ll want to include a file with these constants in yo...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
This has a list of all COB SET/GET keys: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobInstance.cpp&lt;br /&gt;
&lt;br /&gt;
You&#039;ll want to include a file with these constants in your script.&lt;br /&gt;
&lt;br /&gt;
==SET/GET==&lt;br /&gt;
&lt;br /&gt;
===Use===&lt;br /&gt;
Use GET [tag] to get a value. Some GETs refer to functions; in this case, use GET [tag](arg1, arg2, arg3, arg4).&lt;br /&gt;
Use SET [tag] to [value] to change a value.&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
There&#039;s a lot of GET/SET tags; I&#039;ll cover some of the more useful but less intuitive ones.&lt;br /&gt;
&lt;br /&gt;
ACTIVATION: Whether the unit is on (true) or off (false).&lt;br /&gt;
&lt;br /&gt;
ARMORED: When true, any damage dealt to the unit will be multiplied by its damageModifier.&lt;br /&gt;
&lt;br /&gt;
PRINT: You can use GET PRINT to send up to 4 arguments to chat. Useful for debugging.&lt;br /&gt;
&lt;br /&gt;
VETERAN_LEVEL: The unit&#039;s experience times 100. Note that you can SET this via script, although the unit won&#039;t gain any extra health from doing so.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1898</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1898"/>
		<updated>2008-05-27T21:19:01Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Callins are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Create()&#039;&#039;&#039;&lt;br /&gt;
Called when the unit is created (&#039;&#039;not&#039;&#039; finished&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Activate()/Deactivate()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Called when the unit is turned on/off.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Killed(severity, corpsetype)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;StartMoving()/StopMoving()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SetSFXOccupy(terraintype)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MoveRate[0...3]()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Appears to be the aircraft equivalent of SetSFXOccupy. MoveRate3 doesn&#039;t appear to actually be used. MoveRate1 is called when the aircraft takes off or lands. If the aircraft is not taking off or landing, MoveRate0 is called when the aircraft drops below 1/3 maximum speed, MoveRate2 is called when the aircraft exceeds 2/3 maximum speed, and MoveRate1 is called when the aircraft enters within 1/3-2/3 maximum speed. I don&#039;t know if this actually works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SetDirection(direction)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SetSpeed(speed)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AimWeaponX(heading, pitch)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AimFromWeaponX(piecenum)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QueryWeaponX(piecenum)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You should set piecenum to a piece of the model. The shot starts from this piece of the model. LOS is also traced from here to the target to see if a weapon can fire. Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FireWeaponX()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ShotX()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EndBurstX()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Called after the last shot in a burst.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BlockShotX()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TargetWeightX()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RockUnit(anglex, anglez)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Called when the unit fires. Use it to rock the unit on firing, although there are other ways to do this.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HitByWeaponID(damage, weaponid?, unitid?)&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7932</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7932"/>
		<updated>2008-05-27T21:15:39Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;filehosting at 20080405:&lt;br /&gt;
&lt;br /&gt;
http://www.tasdownloads.com/faq.php&lt;br /&gt;
&lt;br /&gt;
http://spring.jobjol.nl/subcategory.php?id=1&amp;amp;language=English&lt;br /&gt;
&lt;br /&gt;
http://spring-portal.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mod development=&lt;br /&gt;
Mods, next to Maps, is the content used in Spring.&amp;lt;br&amp;gt;&lt;br /&gt;
A mod is simply a combined file containing a small structure of files and directories holding all the data required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Mod_Development | Mod Development]] wiki is a starting page, linking to very useful information on the files included in a mod, their hierarchy and more.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Almost the entire mod developing is the creation of units. Which isn&#039;t an easy job.&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the creation of units are everywere, but not combined.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a gathered list of all Tutorials and helpfull forums threads I could find:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
*http://taspring.clan-sy.com/wiki/Create_units - old Wiki&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Mod Development]]&lt;br /&gt;
*[[Mod specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6015 What do I need to create a mod]&lt;br /&gt;
*[[Simple Mod Tutorial]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Models - s3o Files====&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures].&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [[Simple Mod Tutorial]]&lt;br /&gt;
* [[Units:CreateModel|UV Mapping in Wings3D]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
* [http://taspring.clan-sy.com/phpbb/viewtopic.php?p=75495 various things about unit making. (Also contains an illustrated alpha-channel tut)]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
outdated model format used by OTA&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://spring.clan-sy.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://www.fileuniverse.com/?p=show&amp;amp;a=it&amp;amp;id=305 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
====Scripting and Animation - COB/BOS Files====&lt;br /&gt;
*[[COB_Callins]]&lt;br /&gt;
*[[COB_Constants]]&lt;br /&gt;
*[[Image:Usa_flag.gif]][[Image:France_flag.gif]][[Units:.bos/.COB]] -all tags for make a animation file&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[http://www.tadesigners.com/bos1.htm TADesigners] have a nice tutorial too&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Mod Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Image:France_flag.gif]] [[exemples de fichiers .fbi]]&lt;br /&gt;
*[[image:usa_flag.gif]][[ all tags &amp;amp; details with a exemple ]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics]]&lt;br /&gt;
*[[CustomExplosionGenerators|Mod Development:Custom explosions]]&lt;br /&gt;
*[[CustomUnitIcons|Mod Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1897</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1897"/>
		<updated>2008-05-27T21:08:54Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Callins are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
====Create()====&lt;br /&gt;
Called when the unit is created (&#039;&#039;not&#039;&#039; finished&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
====Activate()/Deactivate()====&lt;br /&gt;
Called when the unit is turned on/off.&lt;br /&gt;
&lt;br /&gt;
====Killed(severity, corpsetype)====&lt;br /&gt;
Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
====StartMoving()/StopMoving()====&lt;br /&gt;
Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
&lt;br /&gt;
====SetSFXOccupy(terraintype)====&lt;br /&gt;
Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
&lt;br /&gt;
====MoveRate[0...3]()====&lt;br /&gt;
Appears to be the aircraft equivalent of SetSFXOccupy. MoveRate3 doesn&#039;t appear to actually be used. MoveRate1 is called when the aircraft takes off or lands. If the aircraft is not taking off or landing, MoveRate0 is called when the aircraft drops below 1/3 maximum speed, MoveRate2 is called when the aircraft exceeds 2/3 maximum speed, and MoveRate1 is called when the aircraft enters within 1/3-2/3 maximum speed. I don&#039;t know if this actually works.&lt;br /&gt;
&lt;br /&gt;
====SetDirection(direction)====&lt;br /&gt;
Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
&lt;br /&gt;
====SetSpeed(speed)====&lt;br /&gt;
Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
====AimWeaponX(heading, pitch)====&lt;br /&gt;
Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
&lt;br /&gt;
====AimFromWeaponX(piecenum)====&lt;br /&gt;
You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
&lt;br /&gt;
====QueryWeaponX(piecenum)====&lt;br /&gt;
You should set piecenum to a piece of the model. The shot starts from this piece of the model. LOS is also traced from here to the target to see if a weapon can fire. Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
&lt;br /&gt;
====FireWeaponX()====&lt;br /&gt;
Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
&lt;br /&gt;
====ShotX()====&lt;br /&gt;
Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;br /&gt;
&lt;br /&gt;
====EndBurstX()====&lt;br /&gt;
Called after the last shot in a burst.&lt;br /&gt;
&lt;br /&gt;
====BlockShotX()====&lt;br /&gt;
&lt;br /&gt;
====TargetWeightX()====&lt;br /&gt;
&lt;br /&gt;
====RockUnit(anglex, anglez)====&lt;br /&gt;
Called when the unit fires. Use it to rock the unit on firing, although there are other ways to do this.&lt;br /&gt;
&lt;br /&gt;
====HitByWeaponID(damage, weaponid?, unitid?)====&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1896</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1896"/>
		<updated>2008-05-27T21:08:35Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Callins are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
====Create()====&lt;br /&gt;
Called when the unit is created (&#039;&#039;not&#039;&#039; finished&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
====Activate()/Deactivate()====&lt;br /&gt;
Called when the unit is turned on/off.&lt;br /&gt;
&lt;br /&gt;
====Killed(severity, corpsetype)====&lt;br /&gt;
Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
====StartMoving()/StopMoving()====&lt;br /&gt;
Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
&lt;br /&gt;
====SetSFXOccupy(terraintype)====&lt;br /&gt;
Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
&lt;br /&gt;
====MoveRate[0...3]()====&lt;br /&gt;
Appears to be the aircraft equivalent of SetSFXOccupy. MoveRate3 doesn&#039;t appear to actually be used. MoveRate1 is called when the aircraft takes off or lands. If the aircraft is not taking off or landing, MoveRate0 is called when the aircraft drops below 1/3 maximum speed, MoveRate2 is called when the aircraft exceeds 2/3 maximum speed, and MoveRate1 is called when the aircraft enters within 1/3-2/3 maximum speed. I don&#039;t know if this actually works.&lt;br /&gt;
&lt;br /&gt;
====SetDirection(direction)====&lt;br /&gt;
Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
&lt;br /&gt;
====SetSpeed(speed)====&lt;br /&gt;
Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
====AimWeaponX(heading, pitch)====&lt;br /&gt;
Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
&lt;br /&gt;
====AimFromWeaponX(piecenum)====&lt;br /&gt;
You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
&lt;br /&gt;
====QueryWeaponX(piecenum)====&lt;br /&gt;
You should set piecenum to a piece of the model. The shot starts from this piece of the model. LOS is also traced from here to the target to see if a weapon can fire. Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
&lt;br /&gt;
====FireWeaponX()====&lt;br /&gt;
Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
&lt;br /&gt;
====ShotX()====&lt;br /&gt;
Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;br /&gt;
&lt;br /&gt;
====EndBurstX()====&lt;br /&gt;
Called after the last shot in a burst.&lt;br /&gt;
&lt;br /&gt;
====BlockShotX()====&lt;br /&gt;
&lt;br /&gt;
===TargetWeightX()====&lt;br /&gt;
&lt;br /&gt;
====RockUnit(anglex, anglez)====&lt;br /&gt;
Called when the unit fires. Use it to rock the unit on firing, although there are other ways to do this.&lt;br /&gt;
&lt;br /&gt;
====HitByWeaponID(damage, weaponid?, unitid?)====&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1895</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1895"/>
		<updated>2008-05-27T20:37:18Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Callins are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
====Create()====&lt;br /&gt;
Called when the unit is created (&#039;&#039;not&#039;&#039; finished&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
====Activate()/Deactivate()====&lt;br /&gt;
Called when the unit is turned on/off.&lt;br /&gt;
&lt;br /&gt;
====Killed(severity, corpsetype)====&lt;br /&gt;
Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind. Set corpsetype to the desired value.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
====StartMoving()/StopMoving()====&lt;br /&gt;
Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
&lt;br /&gt;
====SetSFXOccupy(terraintype)====&lt;br /&gt;
Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
&lt;br /&gt;
====SetDirection(direction)====&lt;br /&gt;
Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
&lt;br /&gt;
====SetSpeed(speed)====&lt;br /&gt;
Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot; (don&#039;t put &amp;quot;Weapon&amp;quot; for these). I recommend using numbers, since it&#039;s cleaner and you can use more than three weapons that way.&lt;br /&gt;
&lt;br /&gt;
====AimWeaponX(heading, pitch)====&lt;br /&gt;
Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
&lt;br /&gt;
====AimFromWeaponX(piecenum)====&lt;br /&gt;
You should set piecenum to a piece of the model; LOS is traced from the here to the target to see if the weapon can fire.&lt;br /&gt;
&lt;br /&gt;
====QueryWeaponX(piecenum)====&lt;br /&gt;
You should set piecenum to a piece of the model. The shot starts from this piece of the model. LOS is also traced from here to the target to see if a weapon can fire. Make sure this is a piece on the weapon&#039;s turret. Not doing this right can cause headaches; example: http://trac.caspring.org/wiki/GunsJammingOnShips&lt;br /&gt;
&lt;br /&gt;
====FireWeaponX()====&lt;br /&gt;
Called whenever the trigger is pulled on a weapon. This occurs before the &#039;&#039;first&#039;&#039; shot in a burst/projectile salvo (only).&lt;br /&gt;
&lt;br /&gt;
====ShotX()====&lt;br /&gt;
Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1894</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1894"/>
		<updated>2008-05-27T20:26:26Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Callins are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
====Create()====&lt;br /&gt;
Called when the unit is created (&#039;&#039;not&#039;&#039; finished&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
====Activate()/Deactivate()====&lt;br /&gt;
Called when the unit is turned on/off.&lt;br /&gt;
&lt;br /&gt;
====Killed(severity, corpsetype)====&lt;br /&gt;
Called when the unit is killed. Severity indicates how many percent of the unit&#039;s hit points were dealt by the final blow. Corpsetype basically indicates the number of times the unit and its corpses are destroyed; for example, corpsetype = 3 acts as if the unit is destroyed, the corpse is destroyed, and the corpse&#039;s corpse is destroyed. If it runs out of corpses nothing is left behind.&lt;br /&gt;
&lt;br /&gt;
===Movement===&lt;br /&gt;
&lt;br /&gt;
====StartMoving()/StopMoving()====&lt;br /&gt;
Called when the unit starts/stops moving. This includes rotation, so don&#039;t be surprised if StartMoving() sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
&lt;br /&gt;
====SetSFXOccupy(terraintype)====&lt;br /&gt;
Supposedly called when the unit changes terrain type, although it didn&#039;t work last time I tried it? Maybe I was using it wrong. terraintype: 0 = transported, 1 = sea, 2 = deep sea (greater than 5 water depth and unit is upright), 4 = land.&lt;br /&gt;
&lt;br /&gt;
====SetDirection(direction)====&lt;br /&gt;
Used only for wind generators. Gives the direction of the wind.&lt;br /&gt;
&lt;br /&gt;
====SetSpeed(speed)====&lt;br /&gt;
Used for wind generators, tidals, and mexes. Basically more resources = higher speed.&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
For weapons, X means either the number of the weapon, or &amp;quot;Primary&amp;quot;, &amp;quot;Secondary&amp;quot;, or &amp;quot;Tertiary&amp;quot;. I recommend using numbers wherever possible.&lt;br /&gt;
&lt;br /&gt;
====AimWeaponX(heading, pitch)====&lt;br /&gt;
Called every ~0.5s when the unit is aiming the weapon at a target. This is used to turn a unit&#039;s turrets toward the target. Return 1 when the weapon is ready to fire. Alternately, return 0 if you don&#039;t want the weapon to fire (you can use this to disable weapons).&lt;br /&gt;
&lt;br /&gt;
====FireWeaponX()====&lt;br /&gt;
Called whenever the trigger is pulled on a weapon. This occurs before the first shot in a burst (only).&lt;br /&gt;
&lt;br /&gt;
====ShotX()====&lt;br /&gt;
Called before every shot a weapon fires. This includes burst and projectile tags. This happens after FireWeaponX(), even for the first shot.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1893</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1893"/>
		<updated>2008-05-27T20:11:23Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Callins are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;br /&gt;
&lt;br /&gt;
==Callins==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
====Create()====&lt;br /&gt;
Called when the unit is created (&#039;&#039;not&#039;&#039; finished&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==Movement==&lt;br /&gt;
&lt;br /&gt;
===StartMoving()===&lt;br /&gt;
Called when the unit starts moving. This includes rotation, so don&#039;t be surprised if this sometimes gets called when a unit starts aiming at a target.&lt;br /&gt;
&lt;br /&gt;
===StopMoving()===&lt;br /&gt;
Called when the unit stops moving.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1892</id>
		<title>Animation-CobCallins</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Animation-CobCallins&amp;diff=1892"/>
		<updated>2008-05-27T20:07:22Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: New page: ==Source==  Callins are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Source==&lt;br /&gt;
&lt;br /&gt;
Callins are listed near the end of this file: https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Units/COB/CobFile.cpp&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7931</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7931"/>
		<updated>2008-05-27T20:01:18Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: /* Scripting and Animation - COB/BOS Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;filehosting at 20080405:&lt;br /&gt;
&lt;br /&gt;
http://www.tasdownloads.com/faq.php&lt;br /&gt;
&lt;br /&gt;
http://spring.jobjol.nl/subcategory.php?id=1&amp;amp;language=English&lt;br /&gt;
&lt;br /&gt;
http://spring-portal.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mod development=&lt;br /&gt;
Mods, next to Maps, is the content used in Spring.&amp;lt;br&amp;gt;&lt;br /&gt;
A mod is simply a combined file containing a small structure of files and directories holding all the data required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Mod_Development | Mod Development]] wiki is a starting page, linking to very useful information on the files included in a mod, their hierarchy and more.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Almost the entire mod developing is the creation of units. Which isn&#039;t an easy job.&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the creation of units are everywere, but not combined.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a gathered list of all Tutorials and helpfull forums threads I could find:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
*http://taspring.clan-sy.com/wiki/Create_units - old Wiki&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Mod Development]]&lt;br /&gt;
*[[Mod specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6015 What do I need to create a mod]&lt;br /&gt;
*[[Simple Mod Tutorial]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Models - s3o Files====&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures].&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [[Simple Mod Tutorial]]&lt;br /&gt;
* [[Units:CreateModel|UV Mapping in Wings3D]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
* [http://taspring.clan-sy.com/phpbb/viewtopic.php?p=75495 various things about unit making. (Also contains an illustrated alpha-channel tut)]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
outdated model format used by OTA&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://spring.clan-sy.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://www.fileuniverse.com/?p=show&amp;amp;a=it&amp;amp;id=305 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
====Scripting and Animation - COB/BOS Files====&lt;br /&gt;
*[[COB_Callins]]&lt;br /&gt;
*[[Image:Usa_flag.gif]][[Image:France_flag.gif]][[Units:.bos/.COB]] -all tags for make a animation file&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[http://www.tadesigners.com/bos1.htm TADesigners] have a nice tutorial too&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Mod Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Image:France_flag.gif]] [[exemples de fichiers .fbi]]&lt;br /&gt;
*[[image:usa_flag.gif]][[ all tags &amp;amp; details with a exemple ]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics]]&lt;br /&gt;
*[[CustomExplosionGenerators|Mod Development:Custom explosions]]&lt;br /&gt;
*[[CustomUnitIcons|Mod Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CSpherePartSpawner&amp;diff=3962</id>
		<title>CSpherePartSpawner</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CSpherePartSpawner&amp;diff=3962"/>
		<updated>2008-03-25T04:01:02Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Makes a simple, one-color expanding sphere.&lt;br /&gt;
&lt;br /&gt;
== Source ==&lt;br /&gt;
&lt;br /&gt;
https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Projectiles/Unsynced/SpherePartProjectile.cpp&lt;br /&gt;
&lt;br /&gt;
== Suggested Use ==&lt;br /&gt;
&lt;br /&gt;
This is good for concussion effects.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
These are pretty intuitive. Unfortunately there is no way to set the starting radius at time of writing.&lt;br /&gt;
&lt;br /&gt;
=== alpha ===&lt;br /&gt;
&lt;br /&gt;
=== ttl ===&lt;br /&gt;
&lt;br /&gt;
=== expansionSpeed ===&lt;br /&gt;
&lt;br /&gt;
=== color ===&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Heatcloud&amp;diff=9705</id>
		<title>Heatcloud</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Heatcloud&amp;diff=9705"/>
		<updated>2008-03-25T03:59:01Z</updated>

		<summary type="html">&lt;p&gt;Evil4Zerggin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
heatcloud is one of the simplest and most common explosion types. Ironically, it is also one of the least intuitive. First of all, ignore the name--it basically makes an expanding image at the point at which it is spawned.&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
&lt;br /&gt;
https://spring.clan-sy.com/svn/spring/trunk/rts/Sim/Projectiles/Unsynced/HeatCloudProjectile.cpp&lt;br /&gt;
&lt;br /&gt;
==Suggested Use==&lt;br /&gt;
&lt;br /&gt;
heatcloud makes a good main piece of an explosion. Think of it as a background for the other components of your explosion generator.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
=== heat, maxheat, heatFalloff ===&lt;br /&gt;
&lt;br /&gt;
Most explosions have alpha and ttl. I don&#039;t know why heatcloud uses these instead. Basically:&lt;br /&gt;
&lt;br /&gt;
Starting alpha = heat / maxheat&lt;br /&gt;
&lt;br /&gt;
ttl = heat / heatFalloff&lt;br /&gt;
&lt;br /&gt;
The alpha decreases linearly across the heatcloud&#039;s lifetime.&lt;br /&gt;
&lt;br /&gt;
=== size, sizeGrowth ===&lt;br /&gt;
&lt;br /&gt;
The heatcloud starts at size size and grows sizeGrowth each frame.&lt;br /&gt;
&lt;br /&gt;
=== sizemod, sizemodmod ===&lt;br /&gt;
&lt;br /&gt;
It seems that the heatcloud expands by a factor of (1 - sizemod) each frame. The sizemod itself is multiplied by sizemodmod every frame. Most of the time it&#039;s probably best just not to contemplate these.&lt;br /&gt;
&lt;br /&gt;
=== texture ===&lt;br /&gt;
&lt;br /&gt;
The texture of the heatcloud.&lt;/div&gt;</summary>
		<author><name>Evil4Zerggin</name></author>
	</entry>
</feed>