<?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=Yeha</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=Yeha"/>
	<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/wiki/Special:Contributions/Yeha"/>
	<updated>2026-11-08T22:14:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Simpleparticlesystem&amp;diff=16887</id>
		<title>Simpleparticlesystem</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Simpleparticlesystem&amp;diff=16887"/>
		<updated>2006-11-06T05:00:54Z</updated>

		<summary type="html">&lt;p&gt;Yeha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Propertiers for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float3 pos&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Position of the particle system emmiter.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Texture for the particles.&lt;br /&gt;
&amp;lt;/li&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Vector that describes the direction of the particles, this is then modified by the rotation propertiers.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Colormap describing the colors of the particles during their lifetime.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Vector force applied to the particles every frame.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Life of the particles in frames.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and particleLifeSpread added to particleLife.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Number of particles that will be spawned.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Initial speed of the particles.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and particleSpeedSpread added to particleSpeed.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Size of the particles.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and particleSizeSpread added to particleSize.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float sizeGrowth&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Size added to particles each frame.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float sizeMod&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Size frame multiplier.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;bool directional&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
If the particles should be oriented to point at the direction of their velocity.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Simpleparticlesystem&amp;diff=16886</id>
		<title>Simpleparticlesystem</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Simpleparticlesystem&amp;diff=16886"/>
		<updated>2006-11-06T05:00:31Z</updated>

		<summary type="html">&lt;p&gt;Yeha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Propertiers for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float3 pos&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Position of the particle system emmiter.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Texture for the particles.&lt;br /&gt;
&amp;lt;/li&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Vector that describes the direction of the particles, this is then modified by the rotation propertiers.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Colormap describing the colors of the particles during their lifetime.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Vector force applied to the particles every frame.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Life of the particles in frames.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and particleLifeSpread added to particleLife.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Number of particles that will be spawned.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Initial speed of the particles.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and particleSpeedSpread added to particleSpeed.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Size of the particles.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and particleSizeSpread added to particleSize.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float sizeGrowth&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Size added to particles each frame.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float sizeMod&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Size frame multiplier.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;bool directional&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
If the particles should be oriented to point at the direction of their velocity.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Simpleparticlesystem&amp;diff=16885</id>
		<title>Simpleparticlesystem</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Simpleparticlesystem&amp;diff=16885"/>
		<updated>2006-10-31T17:57:05Z</updated>

		<summary type="html">&lt;p&gt;Yeha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Propertiers for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Texture for the particles.&lt;br /&gt;
&amp;lt;/li&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Vector that describes the direction of the particles, this is then modified by the rotation propertiers.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Colormap describing the colors of the particles during their lifetime.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Vector force applied to the particles every frame.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Life of the particles in frames.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and particleLifeSpread added to particleLife.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Number of particles that will be spawned.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Initial speed of the particles.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and particleSpeedSpread added to particleSpeed.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Size of the particles.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and particleSizeSpread added to particleSize.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;bool directional&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
If the particles should be oriented to point at the direction of their velocity.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Simpleparticlesystem&amp;diff=16884</id>
		<title>Simpleparticlesystem</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Simpleparticlesystem&amp;diff=16884"/>
		<updated>2006-10-31T17:51:20Z</updated>

		<summary type="html">&lt;p&gt;Yeha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Propertiers for SimpleParticleSystem:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[AtlasedTexture]] texture&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Texture for the particles.&lt;br /&gt;
&amp;lt;/li&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float3 emitVector&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Vector that describes the direction of the particles, this is then modified by the rotation propertiers.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Colormap describing the colors of the particles during their lifetime.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float3 gravity&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Vector force applied to the particles every frame.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float airdrag&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Constant multiplier on the particle each frame, a value of 1.0 means the particles will keep their current momentum, a value bellow 1 and they will slow down each frame.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleLife&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Life of the particles in frames.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleLifeSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and particleLifeSpread added to particleLife.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;int numParticles&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Number of particles that will be spawned.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSpeed&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Initial speed of the particles.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSpeedSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and particleSpeedSpread added to particleSpeed.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSize&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Size of the particles.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float particleSizeSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and particleSizeSpread added to particleSize.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float emitRot&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Rotation in degree from emitVector that particles will be spawned from, a value of 90 will emmit particles in a plane perpendicular to the emitVector.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float emitRotSpread&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Random number between 0 and emitRotSpread added to emitRot, a value of 180 will make the particles spawn in a full sphere.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3831</id>
		<title>CEG-OldInfo</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3831"/>
		<updated>2006-10-31T17:36:07Z</updated>

		<summary type="html">&lt;p&gt;Yeha: /* Projectile classes usable in explosion generators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Custom explosion generators ==&lt;br /&gt;
&lt;br /&gt;
=== What are they? ===&lt;br /&gt;
Custom explosions are small explosion scripts read from gamedata/explosions/*.tdf.&lt;br /&gt;
The explosion script specifies which particles/projectiles have to be created when the explosion happens, and their initial properties (position,speed,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Explosion script definition ===&lt;br /&gt;
&lt;br /&gt;
The explosion script directly specifies which C++ projectile classes have to be created, and also which properties the projectiles should have. &lt;br /&gt;
&lt;br /&gt;
The explosion script is structured like this:&lt;br /&gt;
&lt;br /&gt;
 [ExplosionScriptName]&lt;br /&gt;
 {&lt;br /&gt;
 	[projectile scriptname] // this specifies the class of the projectile&lt;br /&gt;
 	{&lt;br /&gt;
 		[properties]&lt;br /&gt;
 		{&lt;br /&gt;
 			size = 40;&lt;br /&gt;
 			sizeGrowth = -2;&lt;br /&gt;
 			pos = -30 r60, r30, -30 r60; // These codes are explained below&lt;br /&gt;
 			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
 		}&lt;br /&gt;
 		underwater=0; // should this projectile be created when underwater?&lt;br /&gt;
 		air=0;   // should this projectile be created when in air?&lt;br /&gt;
 		water=1; // should this projectile be created on water?&lt;br /&gt;
 		ground=1; // should this projectile be created when on ground?&lt;br /&gt;
 		count=10; // number of projectiles of this type&lt;br /&gt;
 	}&lt;br /&gt;
 .. other projectiles types can follow here ..&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Defaults for air/underwater/ground/water are zero.&lt;br /&gt;
Default of count is 1.&lt;br /&gt;
&lt;br /&gt;
=== Projectile properties ===&lt;br /&gt;
&lt;br /&gt;
To begin, you should run &lt;br /&gt;
 spring /p      (or &amp;quot;spring -p&amp;quot; on linux) &lt;br /&gt;
to let spring export &amp;quot;projectiles.txt&amp;quot;, which contains all the classes you can use in an explosion script. At the time of writing, this would contain [[projectiles.txt]]&lt;br /&gt;
&lt;br /&gt;
The items listed in &amp;quot;properties&amp;quot; are directly mapped to the class properties in projectiles.txt&lt;br /&gt;
The properties are specified with a bit of a cryptic syntax. You can use extra commands in them (r,d,i). For example this:&lt;br /&gt;
&lt;br /&gt;
 pos = -30 r60, r30, -30 r60; &lt;br /&gt;
&lt;br /&gt;
The x coordinate (specified with -30 r60) will be:  &lt;br /&gt;
 x = -30 + (Random value between 0 and 60);&lt;br /&gt;
&lt;br /&gt;
Commands:&lt;br /&gt;
 rX: add a number  between 0 and X&lt;br /&gt;
 iX: multiply the projectile index with X and add it. See the example for this below.&lt;br /&gt;
 dX: multiply the damage with X and add it.&lt;br /&gt;
&lt;br /&gt;
== Explosion script examples ==&lt;br /&gt;
&lt;br /&gt;
This is an example of a script that makes 10 smoke projectiles (yeah they should have been called particles, but they are handled by spring using the projectile system)&lt;br /&gt;
&lt;br /&gt;
  [ARM_HLT_Expl]&lt;br /&gt;
  {&lt;br /&gt;
  	[smoke]&lt;br /&gt;
  	{&lt;br /&gt;
  		[properties]&lt;br /&gt;
  		{&lt;br /&gt;
  			// age increase per frame, when age &amp;gt;= 1  the particle is destroyed&lt;br /&gt;
  			ageSpeed=0.04;&lt;br /&gt;
 &lt;br /&gt;
 			size = 40;&lt;br /&gt;
  			sizeGrowth = -2;&lt;br /&gt;
  			pos = -30 r60, r30, -30 r60;&lt;br /&gt;
  			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
  		}&lt;br /&gt;
  		water=1;&lt;br /&gt;
  		ground=1;&lt;br /&gt;
  		count=10;&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
This particular script would be linked to with &amp;quot;explosiongenerator=custom:ARM_HLT_Expl;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here is an example that uses the index (i) command in the properties:&lt;br /&gt;
&lt;br /&gt;
 [heatcloud]&lt;br /&gt;
 {&lt;br /&gt;
 	[properties]&lt;br /&gt;
 	{&lt;br /&gt;
 		pos = 0, i20, 0;&lt;br /&gt;
 		heat = 10;&lt;br /&gt;
 		maxheat=10;&lt;br /&gt;
 		heatFalloff=1;&lt;br /&gt;
 		size = 30;&lt;br /&gt;
 	}&lt;br /&gt;
 	ground=1;&lt;br /&gt;
 	count=10;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This script creates a tower of heatcloud projectile. The first projectile gets y=0, the second y=20, y=40, y=60, .. and finally y=180&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to link a custom explosion to a weapon ===&lt;br /&gt;
&lt;br /&gt;
The weapon definitions needs to have this in it:&lt;br /&gt;
 explosiongenerator = custom:ExplosionScriptName;&lt;br /&gt;
&lt;br /&gt;
The explosion definition for ExplosionScriptName would be one of the TDF files in gamedata/explosions/&lt;br /&gt;
&lt;br /&gt;
You can also link the weapons for self-destruct and normal destruct to an explosion script.&lt;br /&gt;
&lt;br /&gt;
=== Adding ground flashes ===&lt;br /&gt;
&lt;br /&gt;
The ground flash is currently not an actual projectile, so it&#039;s specified in a different way:&lt;br /&gt;
 [ARM_HLT_Expl]&lt;br /&gt;
 {&lt;br /&gt;
      .. projectiles definitions ..&lt;br /&gt;
&lt;br /&gt;
 	[groundflash]&lt;br /&gt;
 	{&lt;br /&gt;
 		flashSize = 100;   // flash size&lt;br /&gt;
 		flashAlpha = 1;    // initial alpha of the flash&lt;br /&gt;
 		circleGrowth = 60; // size increase/frame&lt;br /&gt;
 		circleAlpha = 1;   // initial alpha of the ring&lt;br /&gt;
 		ttl = 10;          // number of frames&lt;br /&gt;
 		color = 0,0,1;    // color RGB&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Projectile classes usable in explosion generators ==&lt;br /&gt;
[[dirt]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[heatcloud]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[smoke]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[smoke2]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[gfx]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[bitmapmuzzleflame]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[simpleparticlesystem]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Keywords ==&lt;br /&gt;
These are keywords that can be used in the explosiongenerator script to give a propertier a special value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;dir&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This can only be used on a float3 vector. This will be the direction vector if the event that created this explosiongenerator can be described with a direction.&lt;br /&gt;
For weapon impacts, its the direction of the impact (the travel direction of the projectile when it explodes). For script emmited explosiongenerators it is the direction of the piece that emmits it.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CColorMap&amp;diff=3752</id>
		<title>CColorMap</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CColorMap&amp;diff=3752"/>
		<updated>2006-09-30T00:06:45Z</updated>

		<summary type="html">&lt;p&gt;Yeha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ColorMap is a collection of 2 or more number of RGBA colors. They can be expressed either as a string of numbers, or pointing to an image file where each pixel will be used as a color.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
This gives a colormap with 2 colors, first one blue and second one white:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;colormap=1 0 0 0 1 1 1 0&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Or it can be pointed to a bitmap file:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;colormap=bitmap_file.tga&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Colormaps usually describes how the colors of an entity will shift during its lifetime, where the first color will be used at the beginning and then cycle through all colors untill the last one is use at the end of its lifetime.&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3830</id>
		<title>CEG-OldInfo</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3830"/>
		<updated>2006-09-30T00:03:43Z</updated>

		<summary type="html">&lt;p&gt;Yeha: /* Keywords */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Custom explosion generators ==&lt;br /&gt;
&lt;br /&gt;
=== What are they? ===&lt;br /&gt;
Custom explosions are small explosion scripts read from gamedata/explosions/*.tdf.&lt;br /&gt;
The explosion script specifies which particles/projectiles have to be created when the explosion happens, and their initial properties (position,speed,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Explosion script definition ===&lt;br /&gt;
&lt;br /&gt;
The explosion script directly specifies which C++ projectile classes have to be created, and also which properties the projectiles should have. &lt;br /&gt;
&lt;br /&gt;
The explosion script is structured like this:&lt;br /&gt;
&lt;br /&gt;
 [ExplosionScriptName]&lt;br /&gt;
 {&lt;br /&gt;
 	[projectile scriptname] // this specifies the class of the projectile&lt;br /&gt;
 	{&lt;br /&gt;
 		[properties]&lt;br /&gt;
 		{&lt;br /&gt;
 			size = 40;&lt;br /&gt;
 			sizeGrowth = -2;&lt;br /&gt;
 			pos = -30 r60, r30, -30 r60; // These codes are explained below&lt;br /&gt;
 			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
 		}&lt;br /&gt;
 		underwater=0; // should this projectile be created when underwater?&lt;br /&gt;
 		air=0;   // should this projectile be created when in air?&lt;br /&gt;
 		water=1; // should this projectile be created on water?&lt;br /&gt;
 		ground=1; // should this projectile be created when on ground?&lt;br /&gt;
 		count=10; // number of projectiles of this type&lt;br /&gt;
 	}&lt;br /&gt;
 .. other projectiles types can follow here ..&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Defaults for air/underwater/ground/water are zero.&lt;br /&gt;
Default of count is 1.&lt;br /&gt;
&lt;br /&gt;
=== Projectile properties ===&lt;br /&gt;
&lt;br /&gt;
To begin, you should run &lt;br /&gt;
 spring /p      (or &amp;quot;spring -p&amp;quot; on linux) &lt;br /&gt;
to let spring export &amp;quot;projectiles.txt&amp;quot;, which contains all the classes you can use in an explosion script. At the time of writing, this would contain [[projectiles.txt]]&lt;br /&gt;
&lt;br /&gt;
The items listed in &amp;quot;properties&amp;quot; are directly mapped to the class properties in projectiles.txt&lt;br /&gt;
The properties are specified with a bit of a cryptic syntax. You can use extra commands in them (r,d,i). For example this:&lt;br /&gt;
&lt;br /&gt;
 pos = -30 r60, r30, -30 r60; &lt;br /&gt;
&lt;br /&gt;
The x coordinate (specified with -30 r60) will be:  &lt;br /&gt;
 x = -30 + (Random value between 0 and 60);&lt;br /&gt;
&lt;br /&gt;
Commands:&lt;br /&gt;
 rX: add a number  between 0 and X&lt;br /&gt;
 iX: multiply the projectile index with X and add it. See the example for this below.&lt;br /&gt;
 dX: multiply the damage with X and add it.&lt;br /&gt;
&lt;br /&gt;
== Explosion script examples ==&lt;br /&gt;
&lt;br /&gt;
This is an example of a script that makes 10 smoke projectiles (yeah they should have been called particles, but they are handled by spring using the projectile system)&lt;br /&gt;
&lt;br /&gt;
  [ARM_HLT_Expl]&lt;br /&gt;
  {&lt;br /&gt;
  	[smoke]&lt;br /&gt;
  	{&lt;br /&gt;
  		[properties]&lt;br /&gt;
  		{&lt;br /&gt;
  			// age increase per frame, when age &amp;gt;= 1  the particle is destroyed&lt;br /&gt;
  			ageSpeed=0.04;&lt;br /&gt;
 &lt;br /&gt;
 			size = 40;&lt;br /&gt;
  			sizeGrowth = -2;&lt;br /&gt;
  			pos = -30 r60, r30, -30 r60;&lt;br /&gt;
  			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
  		}&lt;br /&gt;
  		water=1;&lt;br /&gt;
  		ground=1;&lt;br /&gt;
  		count=10;&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
This particular script would be linked to with &amp;quot;explosiongenerator=custom:ARM_HLT_Expl;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here is an example that uses the index (i) command in the properties:&lt;br /&gt;
&lt;br /&gt;
 [heatcloud]&lt;br /&gt;
 {&lt;br /&gt;
 	[properties]&lt;br /&gt;
 	{&lt;br /&gt;
 		pos = 0, i20, 0;&lt;br /&gt;
 		heat = 10;&lt;br /&gt;
 		maxheat=10;&lt;br /&gt;
 		heatFalloff=1;&lt;br /&gt;
 		size = 30;&lt;br /&gt;
 	}&lt;br /&gt;
 	ground=1;&lt;br /&gt;
 	count=10;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This script creates a tower of heatcloud projectile. The first projectile gets y=0, the second y=20, y=40, y=60, .. and finally y=180&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to link a custom explosion to a weapon ===&lt;br /&gt;
&lt;br /&gt;
The weapon definitions needs to have this in it:&lt;br /&gt;
 explosiongenerator = custom:ExplosionScriptName;&lt;br /&gt;
&lt;br /&gt;
The explosion definition for ExplosionScriptName would be one of the TDF files in gamedata/explosions/&lt;br /&gt;
&lt;br /&gt;
You can also link the weapons for self-destruct and normal destruct to an explosion script.&lt;br /&gt;
&lt;br /&gt;
=== Adding ground flashes ===&lt;br /&gt;
&lt;br /&gt;
The ground flash is currently not an actual projectile, so it&#039;s specified in a different way:&lt;br /&gt;
 [ARM_HLT_Expl]&lt;br /&gt;
 {&lt;br /&gt;
      .. projectiles definitions ..&lt;br /&gt;
&lt;br /&gt;
 	[groundflash]&lt;br /&gt;
 	{&lt;br /&gt;
 		flashSize = 100;   // flash size&lt;br /&gt;
 		flashAlpha = 1;    // initial alpha of the flash&lt;br /&gt;
 		circleGrowth = 60; // size increase/frame&lt;br /&gt;
 		circleAlpha = 1;   // initial alpha of the ring&lt;br /&gt;
 		ttl = 10;          // number of frames&lt;br /&gt;
 		color = 0,0,1;    // color RGB&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Projectile classes usable in explosion generators ==&lt;br /&gt;
[[dirt]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[heatcloud]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[smoke]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[smoke2]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[gfx]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[bitmapmuzzleflame]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keywords ==&lt;br /&gt;
These are keywords that can be used in the explosiongenerator script to give a propertier a special value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;dir&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This can only be used on a float3 vector. This will be the direction vector if the event that created this explosiongenerator can be described with a direction.&lt;br /&gt;
For weapon impacts, its the direction of the impact (the travel direction of the projectile when it explodes). For script emmited explosiongenerators it is the direction of the piece that emmits it.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3829</id>
		<title>CEG-OldInfo</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3829"/>
		<updated>2006-09-30T00:03:32Z</updated>

		<summary type="html">&lt;p&gt;Yeha: /* Keywords */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Custom explosion generators ==&lt;br /&gt;
&lt;br /&gt;
=== What are they? ===&lt;br /&gt;
Custom explosions are small explosion scripts read from gamedata/explosions/*.tdf.&lt;br /&gt;
The explosion script specifies which particles/projectiles have to be created when the explosion happens, and their initial properties (position,speed,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Explosion script definition ===&lt;br /&gt;
&lt;br /&gt;
The explosion script directly specifies which C++ projectile classes have to be created, and also which properties the projectiles should have. &lt;br /&gt;
&lt;br /&gt;
The explosion script is structured like this:&lt;br /&gt;
&lt;br /&gt;
 [ExplosionScriptName]&lt;br /&gt;
 {&lt;br /&gt;
 	[projectile scriptname] // this specifies the class of the projectile&lt;br /&gt;
 	{&lt;br /&gt;
 		[properties]&lt;br /&gt;
 		{&lt;br /&gt;
 			size = 40;&lt;br /&gt;
 			sizeGrowth = -2;&lt;br /&gt;
 			pos = -30 r60, r30, -30 r60; // These codes are explained below&lt;br /&gt;
 			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
 		}&lt;br /&gt;
 		underwater=0; // should this projectile be created when underwater?&lt;br /&gt;
 		air=0;   // should this projectile be created when in air?&lt;br /&gt;
 		water=1; // should this projectile be created on water?&lt;br /&gt;
 		ground=1; // should this projectile be created when on ground?&lt;br /&gt;
 		count=10; // number of projectiles of this type&lt;br /&gt;
 	}&lt;br /&gt;
 .. other projectiles types can follow here ..&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Defaults for air/underwater/ground/water are zero.&lt;br /&gt;
Default of count is 1.&lt;br /&gt;
&lt;br /&gt;
=== Projectile properties ===&lt;br /&gt;
&lt;br /&gt;
To begin, you should run &lt;br /&gt;
 spring /p      (or &amp;quot;spring -p&amp;quot; on linux) &lt;br /&gt;
to let spring export &amp;quot;projectiles.txt&amp;quot;, which contains all the classes you can use in an explosion script. At the time of writing, this would contain [[projectiles.txt]]&lt;br /&gt;
&lt;br /&gt;
The items listed in &amp;quot;properties&amp;quot; are directly mapped to the class properties in projectiles.txt&lt;br /&gt;
The properties are specified with a bit of a cryptic syntax. You can use extra commands in them (r,d,i). For example this:&lt;br /&gt;
&lt;br /&gt;
 pos = -30 r60, r30, -30 r60; &lt;br /&gt;
&lt;br /&gt;
The x coordinate (specified with -30 r60) will be:  &lt;br /&gt;
 x = -30 + (Random value between 0 and 60);&lt;br /&gt;
&lt;br /&gt;
Commands:&lt;br /&gt;
 rX: add a number  between 0 and X&lt;br /&gt;
 iX: multiply the projectile index with X and add it. See the example for this below.&lt;br /&gt;
 dX: multiply the damage with X and add it.&lt;br /&gt;
&lt;br /&gt;
== Explosion script examples ==&lt;br /&gt;
&lt;br /&gt;
This is an example of a script that makes 10 smoke projectiles (yeah they should have been called particles, but they are handled by spring using the projectile system)&lt;br /&gt;
&lt;br /&gt;
  [ARM_HLT_Expl]&lt;br /&gt;
  {&lt;br /&gt;
  	[smoke]&lt;br /&gt;
  	{&lt;br /&gt;
  		[properties]&lt;br /&gt;
  		{&lt;br /&gt;
  			// age increase per frame, when age &amp;gt;= 1  the particle is destroyed&lt;br /&gt;
  			ageSpeed=0.04;&lt;br /&gt;
 &lt;br /&gt;
 			size = 40;&lt;br /&gt;
  			sizeGrowth = -2;&lt;br /&gt;
  			pos = -30 r60, r30, -30 r60;&lt;br /&gt;
  			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
  		}&lt;br /&gt;
  		water=1;&lt;br /&gt;
  		ground=1;&lt;br /&gt;
  		count=10;&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
This particular script would be linked to with &amp;quot;explosiongenerator=custom:ARM_HLT_Expl;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here is an example that uses the index (i) command in the properties:&lt;br /&gt;
&lt;br /&gt;
 [heatcloud]&lt;br /&gt;
 {&lt;br /&gt;
 	[properties]&lt;br /&gt;
 	{&lt;br /&gt;
 		pos = 0, i20, 0;&lt;br /&gt;
 		heat = 10;&lt;br /&gt;
 		maxheat=10;&lt;br /&gt;
 		heatFalloff=1;&lt;br /&gt;
 		size = 30;&lt;br /&gt;
 	}&lt;br /&gt;
 	ground=1;&lt;br /&gt;
 	count=10;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This script creates a tower of heatcloud projectile. The first projectile gets y=0, the second y=20, y=40, y=60, .. and finally y=180&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to link a custom explosion to a weapon ===&lt;br /&gt;
&lt;br /&gt;
The weapon definitions needs to have this in it:&lt;br /&gt;
 explosiongenerator = custom:ExplosionScriptName;&lt;br /&gt;
&lt;br /&gt;
The explosion definition for ExplosionScriptName would be one of the TDF files in gamedata/explosions/&lt;br /&gt;
&lt;br /&gt;
You can also link the weapons for self-destruct and normal destruct to an explosion script.&lt;br /&gt;
&lt;br /&gt;
=== Adding ground flashes ===&lt;br /&gt;
&lt;br /&gt;
The ground flash is currently not an actual projectile, so it&#039;s specified in a different way:&lt;br /&gt;
 [ARM_HLT_Expl]&lt;br /&gt;
 {&lt;br /&gt;
      .. projectiles definitions ..&lt;br /&gt;
&lt;br /&gt;
 	[groundflash]&lt;br /&gt;
 	{&lt;br /&gt;
 		flashSize = 100;   // flash size&lt;br /&gt;
 		flashAlpha = 1;    // initial alpha of the flash&lt;br /&gt;
 		circleGrowth = 60; // size increase/frame&lt;br /&gt;
 		circleAlpha = 1;   // initial alpha of the ring&lt;br /&gt;
 		ttl = 10;          // number of frames&lt;br /&gt;
 		color = 0,0,1;    // color RGB&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Projectile classes usable in explosion generators ==&lt;br /&gt;
[[dirt]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[heatcloud]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[smoke]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[smoke2]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[gfx]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[bitmapmuzzleflame]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keywords ==&lt;br /&gt;
These are keywords that can be used in the explosiongenerator script to give a propertier a special value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;dir&#039;&#039;&#039;&lt;br /&gt;
This can only be used on a float3 vector. This will be the direction vector if the event that created this explosiongenerator can be described with a direction.&lt;br /&gt;
For weapon impacts, its the direction of the impact (the travel direction of the projectile when it explodes). For script emmited explosiongenerators it is the direction of the piece that emmits it.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3828</id>
		<title>CEG-OldInfo</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3828"/>
		<updated>2006-09-29T23:58:11Z</updated>

		<summary type="html">&lt;p&gt;Yeha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Custom explosion generators ==&lt;br /&gt;
&lt;br /&gt;
=== What are they? ===&lt;br /&gt;
Custom explosions are small explosion scripts read from gamedata/explosions/*.tdf.&lt;br /&gt;
The explosion script specifies which particles/projectiles have to be created when the explosion happens, and their initial properties (position,speed,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Explosion script definition ===&lt;br /&gt;
&lt;br /&gt;
The explosion script directly specifies which C++ projectile classes have to be created, and also which properties the projectiles should have. &lt;br /&gt;
&lt;br /&gt;
The explosion script is structured like this:&lt;br /&gt;
&lt;br /&gt;
 [ExplosionScriptName]&lt;br /&gt;
 {&lt;br /&gt;
 	[projectile scriptname] // this specifies the class of the projectile&lt;br /&gt;
 	{&lt;br /&gt;
 		[properties]&lt;br /&gt;
 		{&lt;br /&gt;
 			size = 40;&lt;br /&gt;
 			sizeGrowth = -2;&lt;br /&gt;
 			pos = -30 r60, r30, -30 r60; // These codes are explained below&lt;br /&gt;
 			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
 		}&lt;br /&gt;
 		underwater=0; // should this projectile be created when underwater?&lt;br /&gt;
 		air=0;   // should this projectile be created when in air?&lt;br /&gt;
 		water=1; // should this projectile be created on water?&lt;br /&gt;
 		ground=1; // should this projectile be created when on ground?&lt;br /&gt;
 		count=10; // number of projectiles of this type&lt;br /&gt;
 	}&lt;br /&gt;
 .. other projectiles types can follow here ..&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Defaults for air/underwater/ground/water are zero.&lt;br /&gt;
Default of count is 1.&lt;br /&gt;
&lt;br /&gt;
=== Projectile properties ===&lt;br /&gt;
&lt;br /&gt;
To begin, you should run &lt;br /&gt;
 spring /p      (or &amp;quot;spring -p&amp;quot; on linux) &lt;br /&gt;
to let spring export &amp;quot;projectiles.txt&amp;quot;, which contains all the classes you can use in an explosion script. At the time of writing, this would contain [[projectiles.txt]]&lt;br /&gt;
&lt;br /&gt;
The items listed in &amp;quot;properties&amp;quot; are directly mapped to the class properties in projectiles.txt&lt;br /&gt;
The properties are specified with a bit of a cryptic syntax. You can use extra commands in them (r,d,i). For example this:&lt;br /&gt;
&lt;br /&gt;
 pos = -30 r60, r30, -30 r60; &lt;br /&gt;
&lt;br /&gt;
The x coordinate (specified with -30 r60) will be:  &lt;br /&gt;
 x = -30 + (Random value between 0 and 60);&lt;br /&gt;
&lt;br /&gt;
Commands:&lt;br /&gt;
 rX: add a number  between 0 and X&lt;br /&gt;
 iX: multiply the projectile index with X and add it. See the example for this below.&lt;br /&gt;
 dX: multiply the damage with X and add it.&lt;br /&gt;
&lt;br /&gt;
== Explosion script examples ==&lt;br /&gt;
&lt;br /&gt;
This is an example of a script that makes 10 smoke projectiles (yeah they should have been called particles, but they are handled by spring using the projectile system)&lt;br /&gt;
&lt;br /&gt;
  [ARM_HLT_Expl]&lt;br /&gt;
  {&lt;br /&gt;
  	[smoke]&lt;br /&gt;
  	{&lt;br /&gt;
  		[properties]&lt;br /&gt;
  		{&lt;br /&gt;
  			// age increase per frame, when age &amp;gt;= 1  the particle is destroyed&lt;br /&gt;
  			ageSpeed=0.04;&lt;br /&gt;
 &lt;br /&gt;
 			size = 40;&lt;br /&gt;
  			sizeGrowth = -2;&lt;br /&gt;
  			pos = -30 r60, r30, -30 r60;&lt;br /&gt;
  			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
  		}&lt;br /&gt;
  		water=1;&lt;br /&gt;
  		ground=1;&lt;br /&gt;
  		count=10;&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
This particular script would be linked to with &amp;quot;explosiongenerator=custom:ARM_HLT_Expl;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here is an example that uses the index (i) command in the properties:&lt;br /&gt;
&lt;br /&gt;
 [heatcloud]&lt;br /&gt;
 {&lt;br /&gt;
 	[properties]&lt;br /&gt;
 	{&lt;br /&gt;
 		pos = 0, i20, 0;&lt;br /&gt;
 		heat = 10;&lt;br /&gt;
 		maxheat=10;&lt;br /&gt;
 		heatFalloff=1;&lt;br /&gt;
 		size = 30;&lt;br /&gt;
 	}&lt;br /&gt;
 	ground=1;&lt;br /&gt;
 	count=10;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This script creates a tower of heatcloud projectile. The first projectile gets y=0, the second y=20, y=40, y=60, .. and finally y=180&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to link a custom explosion to a weapon ===&lt;br /&gt;
&lt;br /&gt;
The weapon definitions needs to have this in it:&lt;br /&gt;
 explosiongenerator = custom:ExplosionScriptName;&lt;br /&gt;
&lt;br /&gt;
The explosion definition for ExplosionScriptName would be one of the TDF files in gamedata/explosions/&lt;br /&gt;
&lt;br /&gt;
You can also link the weapons for self-destruct and normal destruct to an explosion script.&lt;br /&gt;
&lt;br /&gt;
=== Adding ground flashes ===&lt;br /&gt;
&lt;br /&gt;
The ground flash is currently not an actual projectile, so it&#039;s specified in a different way:&lt;br /&gt;
 [ARM_HLT_Expl]&lt;br /&gt;
 {&lt;br /&gt;
      .. projectiles definitions ..&lt;br /&gt;
&lt;br /&gt;
 	[groundflash]&lt;br /&gt;
 	{&lt;br /&gt;
 		flashSize = 100;   // flash size&lt;br /&gt;
 		flashAlpha = 1;    // initial alpha of the flash&lt;br /&gt;
 		circleGrowth = 60; // size increase/frame&lt;br /&gt;
 		circleAlpha = 1;   // initial alpha of the ring&lt;br /&gt;
 		ttl = 10;          // number of frames&lt;br /&gt;
 		color = 0,0,1;    // color RGB&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Projectile classes usable in explosion generators ==&lt;br /&gt;
[[dirt]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[heatcloud]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[smoke]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[smoke2]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[gfx]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[bitmapmuzzleflame]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keywords ==&lt;br /&gt;
These are keywords that can be used in the explosiongenerator script to give a propertier a special value.&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CColorMap&amp;diff=3751</id>
		<title>CColorMap</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CColorMap&amp;diff=3751"/>
		<updated>2006-09-29T23:52:07Z</updated>

		<summary type="html">&lt;p&gt;Yeha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ColorMap is a collection of 2 or more number of RGBA colors. They can be expressed either as a string of numbers, or pointing to an image file where each pixel will be used as a color.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
This gives a colormap with 2 colors, first one blue and second one white:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;colormap=1 0 0 0 1 1 1 0&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Or it can be pointed to a bitmap file:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;colormap=bitmap_file.tga&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AtlasedTexture&amp;diff=2275</id>
		<title>AtlasedTexture</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=AtlasedTexture&amp;diff=2275"/>
		<updated>2006-09-29T23:47:21Z</updated>

		<summary type="html">&lt;p&gt;Yeha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AtlasedTexture is an alias to a texture. This means the alias must be defined somewhere and pointing to to a real texture. For AtlasedTextures used in projectiles (like those spawned by explosiongenerator) they need to be defined in [[resources.tdf]] under the [projectiletextures].&lt;br /&gt;
&lt;br /&gt;
A line defining a texture alias in [[resources.tdf]] looks like this:&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;alias=real_image.tga;&amp;lt;/code&amp;gt;&lt;br /&gt;
Most spring suported image format can be used in AtlasedTextures, but not compressed dds.&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Bitmapmuzzleflame&amp;diff=2905</id>
		<title>Bitmapmuzzleflame</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Bitmapmuzzleflame&amp;diff=2905"/>
		<updated>2006-09-29T23:38:43Z</updated>

		<summary type="html">&lt;p&gt;Yeha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bitmapmuzzleflame is a simple projectile usefull for making a muzzleflame with two textures, one as the muzzleflame seen from the sides and one as seen from the front.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Propertiers for Bitmapmuzzleflame:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[AtlasedTexture]] sideTexture&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Defines the texture for the sides of the flame.&lt;br /&gt;
&amp;lt;/li&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[AtlasedTexture]] frontTexture&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Defines the texture for the muzzleflame as seen from the front.&lt;br /&gt;
&amp;lt;/li&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float3 dir&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Direction of the flame.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[CColorMap]] colorMap&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Colormap describing the colors during the flame lifetime.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float size&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Initial hight and width of flame.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float length&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Initial length of the flame, this is the size in the direction the flame is pointing.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float sizeGrowth&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This is how much the flame will grow during its lifetime. A value of 0 means the flame will stay the same size during its entire lifetime. A value of 1 means that it will have grown to dubbel its size when its life end. The growth curve is exponential, faster in the beginning and slower at the end.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;int ttl&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
How many frames the flame will be visible.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;float frontOffset&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Offset for the front texture in percent of length. 0 means the front will at the beginning of the flame, 0.5 in the middle, and 1 at the end.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Bitmapmuzzleflame&amp;diff=2904</id>
		<title>Bitmapmuzzleflame</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Bitmapmuzzleflame&amp;diff=2904"/>
		<updated>2006-09-29T23:29:15Z</updated>

		<summary type="html">&lt;p&gt;Yeha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bitmapmuzzleflame is a simple projectile usefull for making a muzzleflame with two textures, one as the muzzleflame seen from the sides and one as seen from the front.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Propertiers for Bitmapmuzzleflame:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*[[AtlasedTexture]] sideTexture&amp;lt;br&amp;gt;&lt;br /&gt;
Defines the texture for the sides of the flame.&lt;br /&gt;
&lt;br /&gt;
*[[AtlasedTexture]] frontTexture&amp;lt;br&amp;gt;&lt;br /&gt;
Defines the texture for the muzzleflame as seen from the front.&lt;br /&gt;
&lt;br /&gt;
*float3 dir&amp;lt;br&amp;gt;&lt;br /&gt;
Direction of the flame.&lt;br /&gt;
&lt;br /&gt;
*[[CColorMap]] colorMap&amp;lt;br&amp;gt;&lt;br /&gt;
Colormap describing the colors during the flame lifetime.&lt;br /&gt;
&lt;br /&gt;
*float size&amp;lt;br&amp;gt;&lt;br /&gt;
Initial hight and width of flame.&lt;br /&gt;
&lt;br /&gt;
*float length&amp;lt;br&amp;gt;&lt;br /&gt;
Initial length of the flame, this is the size in the direction the flame is pointing.&lt;br /&gt;
&lt;br /&gt;
*float sizeGrowth&amp;lt;br&amp;gt;&lt;br /&gt;
This is how much the flame will grow during its lifetime. A value of 0 means the flame will stay the same size during its entire lifetime. A value of 1 means that it will have grown to dubbel its size when its life end. The growth curve is exponential, faster in the beginning and slower at the end.&lt;br /&gt;
&lt;br /&gt;
*int ttl&amp;lt;br&amp;gt;&lt;br /&gt;
How many frames the flame will be visible.&lt;br /&gt;
&lt;br /&gt;
*float frontOffset&amp;lt;br&amp;gt;&lt;br /&gt;
Offset for the front texture in percent of length. 0 means the front will at the beginning of the flame, 0.5 in the middle, and 1 at the end.&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Bitmapmuzzleflame&amp;diff=2903</id>
		<title>Bitmapmuzzleflame</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Bitmapmuzzleflame&amp;diff=2903"/>
		<updated>2006-09-29T23:28:50Z</updated>

		<summary type="html">&lt;p&gt;Yeha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bitmapmuzzleflame is a simple projectile usefull for making a muzzleflame with two textures, one as the muzzleflame seen from the sides and one as seen from the front.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Propertiers for Bitmapmuzzleflame:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*[[AtlasedTexture]] sideTexture&amp;lt;br&amp;gt;&lt;br /&gt;
Defines the texture for the sides of the flame.&lt;br /&gt;
&lt;br /&gt;
*[[AtlasedTexture]] frontTexture&amp;lt;br&amp;gt;&lt;br /&gt;
Defines the texture for the muzzleflame as seen from the front.&lt;br /&gt;
&lt;br /&gt;
*float3 dir&amp;lt;br&amp;gt;&lt;br /&gt;
Direction of the flame.&lt;br /&gt;
&lt;br /&gt;
*[[CColorMap]] colorMap&amp;lt;br&amp;gt;&lt;br /&gt;
Colormap describing the colors during the flame lifetime.&lt;br /&gt;
&lt;br /&gt;
*float size&amp;lt;br&amp;gt;&lt;br /&gt;
Initial hight and width of flame.&lt;br /&gt;
&lt;br /&gt;
*float length&amp;lt;br&amp;gt;&lt;br /&gt;
Initial length of the flame, this is the size in the direction the flame is pointing.&lt;br /&gt;
&lt;br /&gt;
*float sizeGrowth&amp;lt;br&amp;gt;&lt;br /&gt;
This is how much the flame will grow during its lifetime. A value of 0 means the flame will stay the same size during its entire lifetime. A value of 1 means that it will have grown to dubbel its size when its life end. The growth curve is exponential, faster in the beginning and slower at the end.&lt;br /&gt;
&lt;br /&gt;
*int ttl&amp;lt;br&amp;gt;&lt;br /&gt;
How many frames the flame will be visible.&lt;br /&gt;
&lt;br /&gt;
float frontOffset&amp;lt;br&amp;gt;&lt;br /&gt;
Offset for the front texture in percent of length. 0 means the front will at the beginning of the flame, 0.5 in the middle, and 1 at the end.&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3827</id>
		<title>CEG-OldInfo</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3827"/>
		<updated>2006-09-29T23:08:44Z</updated>

		<summary type="html">&lt;p&gt;Yeha: /* Projectile classes usable in explosion generators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Custom explosion generators ==&lt;br /&gt;
&lt;br /&gt;
=== What are they? ===&lt;br /&gt;
Custom explosions are small explosion scripts read from gamedata/explosions/*.tdf.&lt;br /&gt;
The explosion script specifies which particles/projectiles have to be created when the explosion happens, and their initial properties (position,speed,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Explosion script definition ===&lt;br /&gt;
&lt;br /&gt;
The explosion script directly specifies which C++ projectile classes have to be created, and also which properties the projectiles should have. &lt;br /&gt;
&lt;br /&gt;
The explosion script is structured like this:&lt;br /&gt;
&lt;br /&gt;
 [ExplosionScriptName]&lt;br /&gt;
 {&lt;br /&gt;
 	[projectile scriptname] // this specifies the class of the projectile&lt;br /&gt;
 	{&lt;br /&gt;
 		[properties]&lt;br /&gt;
 		{&lt;br /&gt;
 			size = 40;&lt;br /&gt;
 			sizeGrowth = -2;&lt;br /&gt;
 			pos = -30 r60, r30, -30 r60; // These codes are explained below&lt;br /&gt;
 			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
 		}&lt;br /&gt;
 		underwater=0; // should this projectile be created when underwater?&lt;br /&gt;
 		air=0;   // should this projectile be created when in air?&lt;br /&gt;
 		water=1; // should this projectile be created on water?&lt;br /&gt;
 		ground=1; // should this projectile be created when on ground?&lt;br /&gt;
 		count=10; // number of projectiles of this type&lt;br /&gt;
 	}&lt;br /&gt;
 .. other projectiles types can follow here ..&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Defaults for air/underwater/ground/water are zero.&lt;br /&gt;
Default of count is 1.&lt;br /&gt;
&lt;br /&gt;
=== Projectile properties ===&lt;br /&gt;
&lt;br /&gt;
To begin, you should run &lt;br /&gt;
 spring /p      (or &amp;quot;spring -p&amp;quot; on linux) &lt;br /&gt;
to let spring export &amp;quot;projectiles.txt&amp;quot;, which contains all the classes you can use in an explosion script. At the time of writing, this would contain [[projectiles.txt]]&lt;br /&gt;
&lt;br /&gt;
The items listed in &amp;quot;properties&amp;quot; are directly mapped to the class properties in projectiles.txt&lt;br /&gt;
The properties are specified with a bit of a cryptic syntax. You can use extra commands in them (r,d,i). For example this:&lt;br /&gt;
&lt;br /&gt;
 pos = -30 r60, r30, -30 r60; &lt;br /&gt;
&lt;br /&gt;
The x coordinate (specified with -30 r60) will be:  &lt;br /&gt;
 x = -30 + (Random value between 0 and 60);&lt;br /&gt;
&lt;br /&gt;
Commands:&lt;br /&gt;
 rX: add a number  between 0 and X&lt;br /&gt;
 iX: multiply the projectile index with X and add it. See the example for this below.&lt;br /&gt;
 dX: multiply the damage with X and add it.&lt;br /&gt;
&lt;br /&gt;
== Explosion script examples ==&lt;br /&gt;
&lt;br /&gt;
This is an example of a script that makes 10 smoke projectiles (yeah they should have been called particles, but they are handled by spring using the projectile system)&lt;br /&gt;
&lt;br /&gt;
  [ARM_HLT_Expl]&lt;br /&gt;
  {&lt;br /&gt;
  	[smoke]&lt;br /&gt;
  	{&lt;br /&gt;
  		[properties]&lt;br /&gt;
  		{&lt;br /&gt;
  			// age increase per frame, when age &amp;gt;= 1  the particle is destroyed&lt;br /&gt;
  			ageSpeed=0.04;&lt;br /&gt;
 &lt;br /&gt;
 			size = 40;&lt;br /&gt;
  			sizeGrowth = -2;&lt;br /&gt;
  			pos = -30 r60, r30, -30 r60;&lt;br /&gt;
  			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
  		}&lt;br /&gt;
  		water=1;&lt;br /&gt;
  		ground=1;&lt;br /&gt;
  		count=10;&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
This particular script would be linked to with &amp;quot;explosiongenerator=custom:ARM_HLT_Expl;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here is an example that uses the index (i) command in the properties:&lt;br /&gt;
&lt;br /&gt;
 [heatcloud]&lt;br /&gt;
 {&lt;br /&gt;
 	[properties]&lt;br /&gt;
 	{&lt;br /&gt;
 		pos = 0, i20, 0;&lt;br /&gt;
 		heat = 10;&lt;br /&gt;
 		maxheat=10;&lt;br /&gt;
 		heatFalloff=1;&lt;br /&gt;
 		size = 30;&lt;br /&gt;
 	}&lt;br /&gt;
 	ground=1;&lt;br /&gt;
 	count=10;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This script creates a tower of heatcloud projectile. The first projectile gets y=0, the second y=20, y=40, y=60, .. and finally y=180&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to link a custom explosion to a weapon ===&lt;br /&gt;
&lt;br /&gt;
The weapon definitions needs to have this in it:&lt;br /&gt;
 explosiongenerator = custom:ExplosionScriptName;&lt;br /&gt;
&lt;br /&gt;
The explosion definition for ExplosionScriptName would be one of the TDF files in gamedata/explosions/&lt;br /&gt;
&lt;br /&gt;
You can also link the weapons for self-destruct and normal destruct to an explosion script.&lt;br /&gt;
&lt;br /&gt;
=== Adding ground flashes ===&lt;br /&gt;
&lt;br /&gt;
The ground flash is currently not an actual projectile, so it&#039;s specified in a different way:&lt;br /&gt;
 [ARM_HLT_Expl]&lt;br /&gt;
 {&lt;br /&gt;
      .. projectiles definitions ..&lt;br /&gt;
&lt;br /&gt;
 	[groundflash]&lt;br /&gt;
 	{&lt;br /&gt;
 		flashSize = 100;   // flash size&lt;br /&gt;
 		flashAlpha = 1;    // initial alpha of the flash&lt;br /&gt;
 		circleGrowth = 60; // size increase/frame&lt;br /&gt;
 		circleAlpha = 1;   // initial alpha of the ring&lt;br /&gt;
 		ttl = 10;          // number of frames&lt;br /&gt;
 		color = 0,0,1;    // color RGB&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Projectile classes usable in explosion generators ==&lt;br /&gt;
[[dirt]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[heatcloud]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[smoke]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[smoke2]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[gfx]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[bitmapmuzzleflame]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3826</id>
		<title>CEG-OldInfo</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3826"/>
		<updated>2006-09-29T23:07:47Z</updated>

		<summary type="html">&lt;p&gt;Yeha: /* Projectile classes usable in explosion generators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Custom explosion generators ==&lt;br /&gt;
&lt;br /&gt;
=== What are they? ===&lt;br /&gt;
Custom explosions are small explosion scripts read from gamedata/explosions/*.tdf.&lt;br /&gt;
The explosion script specifies which particles/projectiles have to be created when the explosion happens, and their initial properties (position,speed,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Explosion script definition ===&lt;br /&gt;
&lt;br /&gt;
The explosion script directly specifies which C++ projectile classes have to be created, and also which properties the projectiles should have. &lt;br /&gt;
&lt;br /&gt;
The explosion script is structured like this:&lt;br /&gt;
&lt;br /&gt;
 [ExplosionScriptName]&lt;br /&gt;
 {&lt;br /&gt;
 	[projectile scriptname] // this specifies the class of the projectile&lt;br /&gt;
 	{&lt;br /&gt;
 		[properties]&lt;br /&gt;
 		{&lt;br /&gt;
 			size = 40;&lt;br /&gt;
 			sizeGrowth = -2;&lt;br /&gt;
 			pos = -30 r60, r30, -30 r60; // These codes are explained below&lt;br /&gt;
 			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
 		}&lt;br /&gt;
 		underwater=0; // should this projectile be created when underwater?&lt;br /&gt;
 		air=0;   // should this projectile be created when in air?&lt;br /&gt;
 		water=1; // should this projectile be created on water?&lt;br /&gt;
 		ground=1; // should this projectile be created when on ground?&lt;br /&gt;
 		count=10; // number of projectiles of this type&lt;br /&gt;
 	}&lt;br /&gt;
 .. other projectiles types can follow here ..&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Defaults for air/underwater/ground/water are zero.&lt;br /&gt;
Default of count is 1.&lt;br /&gt;
&lt;br /&gt;
=== Projectile properties ===&lt;br /&gt;
&lt;br /&gt;
To begin, you should run &lt;br /&gt;
 spring /p      (or &amp;quot;spring -p&amp;quot; on linux) &lt;br /&gt;
to let spring export &amp;quot;projectiles.txt&amp;quot;, which contains all the classes you can use in an explosion script. At the time of writing, this would contain [[projectiles.txt]]&lt;br /&gt;
&lt;br /&gt;
The items listed in &amp;quot;properties&amp;quot; are directly mapped to the class properties in projectiles.txt&lt;br /&gt;
The properties are specified with a bit of a cryptic syntax. You can use extra commands in them (r,d,i). For example this:&lt;br /&gt;
&lt;br /&gt;
 pos = -30 r60, r30, -30 r60; &lt;br /&gt;
&lt;br /&gt;
The x coordinate (specified with -30 r60) will be:  &lt;br /&gt;
 x = -30 + (Random value between 0 and 60);&lt;br /&gt;
&lt;br /&gt;
Commands:&lt;br /&gt;
 rX: add a number  between 0 and X&lt;br /&gt;
 iX: multiply the projectile index with X and add it. See the example for this below.&lt;br /&gt;
 dX: multiply the damage with X and add it.&lt;br /&gt;
&lt;br /&gt;
== Explosion script examples ==&lt;br /&gt;
&lt;br /&gt;
This is an example of a script that makes 10 smoke projectiles (yeah they should have been called particles, but they are handled by spring using the projectile system)&lt;br /&gt;
&lt;br /&gt;
  [ARM_HLT_Expl]&lt;br /&gt;
  {&lt;br /&gt;
  	[smoke]&lt;br /&gt;
  	{&lt;br /&gt;
  		[properties]&lt;br /&gt;
  		{&lt;br /&gt;
  			// age increase per frame, when age &amp;gt;= 1  the particle is destroyed&lt;br /&gt;
  			ageSpeed=0.04;&lt;br /&gt;
 &lt;br /&gt;
 			size = 40;&lt;br /&gt;
  			sizeGrowth = -2;&lt;br /&gt;
  			pos = -30 r60, r30, -30 r60;&lt;br /&gt;
  			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
  		}&lt;br /&gt;
  		water=1;&lt;br /&gt;
  		ground=1;&lt;br /&gt;
  		count=10;&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
This particular script would be linked to with &amp;quot;explosiongenerator=custom:ARM_HLT_Expl;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here is an example that uses the index (i) command in the properties:&lt;br /&gt;
&lt;br /&gt;
 [heatcloud]&lt;br /&gt;
 {&lt;br /&gt;
 	[properties]&lt;br /&gt;
 	{&lt;br /&gt;
 		pos = 0, i20, 0;&lt;br /&gt;
 		heat = 10;&lt;br /&gt;
 		maxheat=10;&lt;br /&gt;
 		heatFalloff=1;&lt;br /&gt;
 		size = 30;&lt;br /&gt;
 	}&lt;br /&gt;
 	ground=1;&lt;br /&gt;
 	count=10;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This script creates a tower of heatcloud projectile. The first projectile gets y=0, the second y=20, y=40, y=60, .. and finally y=180&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to link a custom explosion to a weapon ===&lt;br /&gt;
&lt;br /&gt;
The weapon definitions needs to have this in it:&lt;br /&gt;
 explosiongenerator = custom:ExplosionScriptName;&lt;br /&gt;
&lt;br /&gt;
The explosion definition for ExplosionScriptName would be one of the TDF files in gamedata/explosions/&lt;br /&gt;
&lt;br /&gt;
You can also link the weapons for self-destruct and normal destruct to an explosion script.&lt;br /&gt;
&lt;br /&gt;
=== Adding ground flashes ===&lt;br /&gt;
&lt;br /&gt;
The ground flash is currently not an actual projectile, so it&#039;s specified in a different way:&lt;br /&gt;
 [ARM_HLT_Expl]&lt;br /&gt;
 {&lt;br /&gt;
      .. projectiles definitions ..&lt;br /&gt;
&lt;br /&gt;
 	[groundflash]&lt;br /&gt;
 	{&lt;br /&gt;
 		flashSize = 100;   // flash size&lt;br /&gt;
 		flashAlpha = 1;    // initial alpha of the flash&lt;br /&gt;
 		circleGrowth = 60; // size increase/frame&lt;br /&gt;
 		circleAlpha = 1;   // initial alpha of the ring&lt;br /&gt;
 		ttl = 10;          // number of frames&lt;br /&gt;
 		color = 0,0,1;    // color RGB&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Projectile classes usable in explosion generators ==&lt;br /&gt;
[[dirt]]&lt;br /&gt;
[[heatcloud]]&lt;br /&gt;
[[smoke]]&lt;br /&gt;
[[smoke2]]&lt;br /&gt;
[[gfx]]&lt;br /&gt;
[[bitmapmuzzleflame]]&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3825</id>
		<title>CEG-OldInfo</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3825"/>
		<updated>2006-09-29T23:05:35Z</updated>

		<summary type="html">&lt;p&gt;Yeha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Custom explosion generators ==&lt;br /&gt;
&lt;br /&gt;
=== What are they? ===&lt;br /&gt;
Custom explosions are small explosion scripts read from gamedata/explosions/*.tdf.&lt;br /&gt;
The explosion script specifies which particles/projectiles have to be created when the explosion happens, and their initial properties (position,speed,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Explosion script definition ===&lt;br /&gt;
&lt;br /&gt;
The explosion script directly specifies which C++ projectile classes have to be created, and also which properties the projectiles should have. &lt;br /&gt;
&lt;br /&gt;
The explosion script is structured like this:&lt;br /&gt;
&lt;br /&gt;
 [ExplosionScriptName]&lt;br /&gt;
 {&lt;br /&gt;
 	[projectile scriptname] // this specifies the class of the projectile&lt;br /&gt;
 	{&lt;br /&gt;
 		[properties]&lt;br /&gt;
 		{&lt;br /&gt;
 			size = 40;&lt;br /&gt;
 			sizeGrowth = -2;&lt;br /&gt;
 			pos = -30 r60, r30, -30 r60; // These codes are explained below&lt;br /&gt;
 			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
 		}&lt;br /&gt;
 		underwater=0; // should this projectile be created when underwater?&lt;br /&gt;
 		air=0;   // should this projectile be created when in air?&lt;br /&gt;
 		water=1; // should this projectile be created on water?&lt;br /&gt;
 		ground=1; // should this projectile be created when on ground?&lt;br /&gt;
 		count=10; // number of projectiles of this type&lt;br /&gt;
 	}&lt;br /&gt;
 .. other projectiles types can follow here ..&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Defaults for air/underwater/ground/water are zero.&lt;br /&gt;
Default of count is 1.&lt;br /&gt;
&lt;br /&gt;
=== Projectile properties ===&lt;br /&gt;
&lt;br /&gt;
To begin, you should run &lt;br /&gt;
 spring /p      (or &amp;quot;spring -p&amp;quot; on linux) &lt;br /&gt;
to let spring export &amp;quot;projectiles.txt&amp;quot;, which contains all the classes you can use in an explosion script. At the time of writing, this would contain [[projectiles.txt]]&lt;br /&gt;
&lt;br /&gt;
The items listed in &amp;quot;properties&amp;quot; are directly mapped to the class properties in projectiles.txt&lt;br /&gt;
The properties are specified with a bit of a cryptic syntax. You can use extra commands in them (r,d,i). For example this:&lt;br /&gt;
&lt;br /&gt;
 pos = -30 r60, r30, -30 r60; &lt;br /&gt;
&lt;br /&gt;
The x coordinate (specified with -30 r60) will be:  &lt;br /&gt;
 x = -30 + (Random value between 0 and 60);&lt;br /&gt;
&lt;br /&gt;
Commands:&lt;br /&gt;
 rX: add a number  between 0 and X&lt;br /&gt;
 iX: multiply the projectile index with X and add it. See the example for this below.&lt;br /&gt;
 dX: multiply the damage with X and add it.&lt;br /&gt;
&lt;br /&gt;
== Explosion script examples ==&lt;br /&gt;
&lt;br /&gt;
This is an example of a script that makes 10 smoke projectiles (yeah they should have been called particles, but they are handled by spring using the projectile system)&lt;br /&gt;
&lt;br /&gt;
  [ARM_HLT_Expl]&lt;br /&gt;
  {&lt;br /&gt;
  	[smoke]&lt;br /&gt;
  	{&lt;br /&gt;
  		[properties]&lt;br /&gt;
  		{&lt;br /&gt;
  			// age increase per frame, when age &amp;gt;= 1  the particle is destroyed&lt;br /&gt;
  			ageSpeed=0.04;&lt;br /&gt;
 &lt;br /&gt;
 			size = 40;&lt;br /&gt;
  			sizeGrowth = -2;&lt;br /&gt;
  			pos = -30 r60, r30, -30 r60;&lt;br /&gt;
  			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
  		}&lt;br /&gt;
  		water=1;&lt;br /&gt;
  		ground=1;&lt;br /&gt;
  		count=10;&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
This particular script would be linked to with &amp;quot;explosiongenerator=custom:ARM_HLT_Expl;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here is an example that uses the index (i) command in the properties:&lt;br /&gt;
&lt;br /&gt;
 [heatcloud]&lt;br /&gt;
 {&lt;br /&gt;
 	[properties]&lt;br /&gt;
 	{&lt;br /&gt;
 		pos = 0, i20, 0;&lt;br /&gt;
 		heat = 10;&lt;br /&gt;
 		maxheat=10;&lt;br /&gt;
 		heatFalloff=1;&lt;br /&gt;
 		size = 30;&lt;br /&gt;
 	}&lt;br /&gt;
 	ground=1;&lt;br /&gt;
 	count=10;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This script creates a tower of heatcloud projectile. The first projectile gets y=0, the second y=20, y=40, y=60, .. and finally y=180&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to link a custom explosion to a weapon ===&lt;br /&gt;
&lt;br /&gt;
The weapon definitions needs to have this in it:&lt;br /&gt;
 explosiongenerator = custom:ExplosionScriptName;&lt;br /&gt;
&lt;br /&gt;
The explosion definition for ExplosionScriptName would be one of the TDF files in gamedata/explosions/&lt;br /&gt;
&lt;br /&gt;
You can also link the weapons for self-destruct and normal destruct to an explosion script.&lt;br /&gt;
&lt;br /&gt;
=== Adding ground flashes ===&lt;br /&gt;
&lt;br /&gt;
The ground flash is currently not an actual projectile, so it&#039;s specified in a different way:&lt;br /&gt;
 [ARM_HLT_Expl]&lt;br /&gt;
 {&lt;br /&gt;
      .. projectiles definitions ..&lt;br /&gt;
&lt;br /&gt;
 	[groundflash]&lt;br /&gt;
 	{&lt;br /&gt;
 		flashSize = 100;   // flash size&lt;br /&gt;
 		flashAlpha = 1;    // initial alpha of the flash&lt;br /&gt;
 		circleGrowth = 60; // size increase/frame&lt;br /&gt;
 		circleAlpha = 1;   // initial alpha of the ring&lt;br /&gt;
 		ttl = 10;          // number of frames&lt;br /&gt;
 		color = 0,0,1;    // color RGB&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Projectile classes usable in explosion generators ==&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3824</id>
		<title>CEG-OldInfo</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=CEG-OldInfo&amp;diff=3824"/>
		<updated>2006-09-29T23:02:16Z</updated>

		<summary type="html">&lt;p&gt;Yeha: /* Explosion script examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Custom explosion generators ==&lt;br /&gt;
&lt;br /&gt;
=== What are they? ===&lt;br /&gt;
Custom explosions are small explosion scripts read from gamedata/explosions/*.tdf.&lt;br /&gt;
The explosion script specifies which particles/projectiles have to be created when the explosion happens, and their initial properties (position,speed,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Explosion script definition ===&lt;br /&gt;
&lt;br /&gt;
The explosion script directly specifies which C++ projectile classes have to be created, and also which properties the projectiles should have. &lt;br /&gt;
&lt;br /&gt;
The explosion script is structured like this:&lt;br /&gt;
&lt;br /&gt;
 [ExplosionScriptName]&lt;br /&gt;
 {&lt;br /&gt;
 	[projectile scriptname] // this specifies the class of the projectile&lt;br /&gt;
 	{&lt;br /&gt;
 		[properties]&lt;br /&gt;
 		{&lt;br /&gt;
 			size = 40;&lt;br /&gt;
 			sizeGrowth = -2;&lt;br /&gt;
 			pos = -30 r60, r30, -30 r60; // These codes are explained below&lt;br /&gt;
 			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
 		}&lt;br /&gt;
 		underwater=0; // should this projectile be created when underwater?&lt;br /&gt;
 		air=0;   // should this projectile be created when in air?&lt;br /&gt;
 		water=1; // should this projectile be created on water?&lt;br /&gt;
 		ground=1; // should this projectile be created when on ground?&lt;br /&gt;
 		count=10; // number of projectiles of this type&lt;br /&gt;
 	}&lt;br /&gt;
 .. other projectiles types can follow here ..&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Defaults for air/underwater/ground/water are zero.&lt;br /&gt;
Default of count is 1.&lt;br /&gt;
&lt;br /&gt;
=== Projectile properties ===&lt;br /&gt;
&lt;br /&gt;
To begin, you should run &lt;br /&gt;
 spring /p      (or &amp;quot;spring -p&amp;quot; on linux) &lt;br /&gt;
to let spring export &amp;quot;projectiles.txt&amp;quot;, which contains all the classes you can use in an explosion script. At the time of writing, this would contain [[projectiles.txt]]&lt;br /&gt;
&lt;br /&gt;
The items listed in &amp;quot;properties&amp;quot; are directly mapped to the class properties in projectiles.txt&lt;br /&gt;
The properties are specified with a bit of a cryptic syntax. You can use extra commands in them (r,d,i). For example this:&lt;br /&gt;
&lt;br /&gt;
 pos = -30 r60, r30, -30 r60; &lt;br /&gt;
&lt;br /&gt;
The x coordinate (specified with -30 r60) will be:  &lt;br /&gt;
 x = -30 + (Random value between 0 and 60);&lt;br /&gt;
&lt;br /&gt;
Commands:&lt;br /&gt;
 rX: add a number  between 0 and X&lt;br /&gt;
 iX: multiply the projectile index with X and add it. See the example for this below.&lt;br /&gt;
 dX: multiply the damage with X and add it.&lt;br /&gt;
&lt;br /&gt;
== Explosion script examples ==&lt;br /&gt;
&lt;br /&gt;
This is an example of a script that makes 10 smoke projectiles (yeah they should have been called particles, but they are handled by spring using the projectile system)&lt;br /&gt;
&lt;br /&gt;
  [ARM_HLT_Expl]&lt;br /&gt;
  {&lt;br /&gt;
  	[smoke]&lt;br /&gt;
  	{&lt;br /&gt;
  		[properties]&lt;br /&gt;
  		{&lt;br /&gt;
  			// age increase per frame, when age &amp;gt;= 1  the particle is destroyed&lt;br /&gt;
  			ageSpeed=0.04;&lt;br /&gt;
 &lt;br /&gt;
 			size = 40;&lt;br /&gt;
  			sizeGrowth = -2;&lt;br /&gt;
  			pos = -30 r60, r30, -30 r60;&lt;br /&gt;
  			speed=0.75 r-1.5, 1.7 r1.6, 0.75 r-1.5;&lt;br /&gt;
  		}&lt;br /&gt;
  		water=1;&lt;br /&gt;
  		ground=1;&lt;br /&gt;
  		count=10;&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
This particular script would be linked to with &amp;quot;explosiongenerator=custom:ARM_HLT_Expl;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here is an example that uses the index (i) command in the properties:&lt;br /&gt;
&lt;br /&gt;
 [heatcloud]&lt;br /&gt;
 {&lt;br /&gt;
 	[properties]&lt;br /&gt;
 	{&lt;br /&gt;
 		pos = 0, i20, 0;&lt;br /&gt;
 		heat = 10;&lt;br /&gt;
 		maxheat=10;&lt;br /&gt;
 		heatFalloff=1;&lt;br /&gt;
 		size = 30;&lt;br /&gt;
 	}&lt;br /&gt;
 	ground=1;&lt;br /&gt;
 	count=10;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This script creates a tower of heatcloud projectile. The first projectile gets y=0, the second y=20, y=40, y=60, .. and finally y=180&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to link a custom explosion to a weapon ===&lt;br /&gt;
&lt;br /&gt;
The weapon definitions needs to have this in it:&lt;br /&gt;
 explosiongenerator = custom:ExplosionScriptName;&lt;br /&gt;
&lt;br /&gt;
The explosion definition for ExplosionScriptName would be one of the TDF files in gamedata/explosions/&lt;br /&gt;
&lt;br /&gt;
You can also link the weapons for self-destruct and normal destruct to an explosion script.&lt;br /&gt;
&lt;br /&gt;
=== Adding ground flashes ===&lt;br /&gt;
&lt;br /&gt;
The ground flash is currently not an actual projectile, so it&#039;s specified in a different way:&lt;br /&gt;
 [ARM_HLT_Expl]&lt;br /&gt;
 {&lt;br /&gt;
      .. projectiles definitions ..&lt;br /&gt;
&lt;br /&gt;
 	[groundflash]&lt;br /&gt;
 	{&lt;br /&gt;
 		flashSize = 100;   // flash size&lt;br /&gt;
 		flashAlpha = 1;    // initial alpha of the flash&lt;br /&gt;
 		circleGrowth = 60; // size increase/frame&lt;br /&gt;
 		circleAlpha = 1;   // initial alpha of the ring&lt;br /&gt;
 		ttl = 10;          // number of frames&lt;br /&gt;
 		color = 0,0,1;    // color RGB&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Yeha</name></author>
	</entry>
</feed>