<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.splashdamage.com/index.php?action=history&amp;feed=atom&amp;title=Script%3AFiles%3Ascript%2Fdeployables%2Fantissg.script</id>
	<title>Script:Files:script/deployables/antissg.script - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.splashdamage.com/index.php?action=history&amp;feed=atom&amp;title=Script%3AFiles%3Ascript%2Fdeployables%2Fantissg.script"/>
	<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Script:Files:script/deployables/antissg.script&amp;action=history"/>
	<updated>2026-06-17T13:26:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Script:Files:script/deployables/antissg.script&amp;diff=1814&amp;oldid=prev</id>
		<title>Wizz at 09:56, 5 November 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Script:Files:script/deployables/antissg.script&amp;diff=1814&amp;oldid=prev"/>
		<updated>2007-11-05T09:56:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;object&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]] : [[ScriptClass:deployable_turret|deployable_turret]] {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        preinit();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        init();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        destroy();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        OnBeginAttack();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        OnEndAttack();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        Idle();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt;         OnAcquireTarget();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;        InRange( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; targetPos );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;        InFiringRange( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; targetPos ) { &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; InRange( targetPos ); }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;        TargetIsValid( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; targetEnt );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        DestroyTarget( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; targetEnt );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        FireMissile();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        vOnDeploy();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        FreeRangeIdentifier();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        SetupRangeIdentifier();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        DestroyMissiles();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        KillSpinThread();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        KillGunThread();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        SpinBarrels();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        GunThread();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;        wantsFire;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt;        barrelAngles;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;        barrelSpeed;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;        commandmapRangeHandle;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;        toolTipDestroyedMissile;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::preinit() {&lt;br /&gt;
     checkMask = MASK_PROJECTILE;&lt;br /&gt;
 &lt;br /&gt;
     toolTipDestroyedMissile = GetToolTip( [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;tt_destroyed_missile&amp;quot;&amp;lt;/span&amp;gt; ) );&lt;br /&gt;
 &lt;br /&gt;
     commandmapRangeHandle = -1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::init() {&lt;br /&gt;
     [[ScriptEvent:setState|setState]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;Idle&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::destroy() {&lt;br /&gt;
     KillGunThread();&lt;br /&gt;
     KillSpinThread();&lt;br /&gt;
     FreeRangeIdentifier();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::Idle() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;while&amp;lt;/span&amp;gt; ( true ) {&lt;br /&gt;
         sys.[[ScriptEvent:waitFrame|waitFrame]]();&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !disabledState ) {&lt;br /&gt;
             DestroyMissiles();&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;    [[ScriptClass:deployable_antissg|deployable_antissg]]::InRange( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; targetPos ) {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; len = sys.[[ScriptEvent:vecLength|vecLength]]( targetPos - [[ScriptEvent:getWorldOrigin|getWorldOrigin]]() );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; ( ( len &amp;gt;= minRange ) &amp;amp;&amp;amp; ( len &amp;lt;= ( maxRange * 2.f ) ) );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::OnAcquireTarget() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !finishedDeploying ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptEvent:entitiesOfCollection|entitiesOfCollection]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;antiair&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     [[ScriptEvent:filterEntitiesByAllegiance|filterEntitiesByAllegiance]]( TA_FLAG_ENEMY, 1 );&lt;br /&gt;
     [[ScriptEvent:filterEntitiesByRadius|filterEntitiesByRadius]]( [[ScriptEvent:getWorldOrigin|getWorldOrigin]](), maxRange * 2.f, 1 );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; count = [[ScriptEvent:getBoundsCacheCount|getBoundsCacheCount]]();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; bestDist;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; bestTarget;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; i;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;for&amp;lt;/span&amp;gt; ( i = 0; i &amp;lt; count; i++ ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; ent = [[ScriptEvent:getBoundsCacheEntity|getBoundsCacheEntity]]( i );&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; dist = sys.[[ScriptEvent:vecLengthSquared|vecLengthSquared]]( ent.[[ScriptEvent:getWorldOrigin|getWorldOrigin]]() - [[ScriptEvent:getWorldOrigin|getWorldOrigin]]() );&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( bestTarget != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; &amp;amp;&amp;amp; dist &amp;gt; bestDist ) {&lt;br /&gt;
             continue;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !TargetIsValid( ent ) ) {&lt;br /&gt;
             continue;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !InRange( ent.[[ScriptEvent:getWorldOrigin|getWorldOrigin]]() ) ) {&lt;br /&gt;
             continue;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         bestTarget = ent;&lt;br /&gt;
         bestDist = dist;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; bestTarget;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::TargetIsValid( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; targetEnt ) {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( targetEnt.[[ScriptEvent:getHealth|getHealth]]() &amp;lt;= 0 ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; false;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !TraceCheck( targetEnt ) ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; false;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; true;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::DestroyTarget( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; targetEnt ) {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( targetEnt.vGetDestroyed() ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( owner != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; destroyProficiency = targetEnt.vGetDestroyProficiency();&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( destroyProficiency != -1 ) {&lt;br /&gt;
             owner.[[ScriptEvent:giveProficiency|giveProficiency]]( destroyProficiency, 1.f, $null, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;anti-missile bonus&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         sys.[[ScriptEvent:increaseStatInt|increaseStatInt]]( sys.[[ScriptEvent:allocStatInt|allocStatInt]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;antimissile_gdf_uses&amp;quot;&amp;lt;/span&amp;gt; ), owner.[[ScriptEvent:getEntityNumber|getEntityNumber]](), 1 );&lt;br /&gt;
 &lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     targetEnt.vSetDestroyed();&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptClass:player|player]] p = targetEnt.[[ScriptEvent:getOwner|getOwner]]();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( p != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( p.[[ScriptEvent:isLocalPlayer|isLocalPlayer]]() ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !p.[[ScriptEvent:isToolTipPlaying|isToolTipPlaying]]() ) {&lt;br /&gt;
                 p.[[ScriptEvent:sendToolTip|sendToolTip]]( toolTipDestroyedMissile );&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::DestroyMissiles() {&lt;br /&gt;
     [[ScriptEvent:entitiesOfCollection|entitiesOfCollection]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;antiair&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     [[ScriptEvent:filterEntitiesByAllegiance|filterEntitiesByAllegiance]]( TA_FLAG_ENEMY, 1 ); &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// only damage enemies&amp;lt;/span&amp;gt;&lt;br /&gt;
     [[ScriptEvent:filterEntitiesByRadius|filterEntitiesByRadius]]( [[ScriptEvent:getWorldOrigin|getWorldOrigin]](), maxRange, 1 ); &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// find entities within maxRange radius&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; count = [[ScriptEvent:getBoundsCacheCount|getBoundsCacheCount]](); &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// number of remaining entities&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; i;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;for&amp;lt;/span&amp;gt; ( i = 0; i &amp;lt; count; i++ ) {&lt;br /&gt;
         DestroyTarget( [[ScriptEvent:getBoundsCacheEntity|getBoundsCacheEntity]]( i ) );&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::FireMissile() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; muzzleJoint;&lt;br /&gt;
     [[ScriptEvent:playJointEffect|playJointEffect]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fx_fire&amp;quot;&amp;lt;/span&amp;gt;, jointBarrel, 0 );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt;( numTracerJoints &amp;gt; 1 ) {&lt;br /&gt;
         muzzleJoint = int( sys.[[ScriptEvent:random|random]]( numTracerJoints ) ) + 1;&lt;br /&gt;
     } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; {&lt;br /&gt;
         muzzleJoint = 0;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt;( playTracerFX ) {&lt;br /&gt;
         [[ScriptEvent:playEffect|playEffect]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fx_tracer&amp;quot;&amp;lt;/span&amp;gt;, [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;joint_tracer&amp;quot;&amp;lt;/span&amp;gt; + muzzleJoint ), 0 );&lt;br /&gt;
     }&lt;br /&gt;
     [[ScriptEvent:playEffect|playEffect]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fx_muzzle&amp;quot;&amp;lt;/span&amp;gt;, [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;joint_tracer&amp;quot;&amp;lt;/span&amp;gt; + muzzleJoint ), 0 );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::GunThread() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;while&amp;lt;/span&amp;gt; ( true ) {&lt;br /&gt;
         sys.[[ScriptEvent:waitFrame|waitFrame]]();&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( reFire &amp;lt; sys.[[ScriptEvent:getTime|getTime]]() ) {&lt;br /&gt;
             reFire = sys.[[ScriptEvent:getTime|getTime]]() + fireRate;&lt;br /&gt;
             [[ScriptEvent:playEffect|playEffect]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fx_tracer&amp;quot;&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;muzzle1&amp;quot;&amp;lt;/span&amp;gt;, 0 );&lt;br /&gt;
             [[ScriptEvent:playEffect|playEffect]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fx_tracer&amp;quot;&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;muzzle2&amp;quot;&amp;lt;/span&amp;gt;, 0 );&lt;br /&gt;
             [[ScriptEvent:playEffect|playEffect]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fx_muzzle&amp;quot;&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;muzzle1&amp;quot;&amp;lt;/span&amp;gt;, 0 );&lt;br /&gt;
             [[ScriptEvent:playEffect|playEffect]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fx_muzzle&amp;quot;&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;muzzle2&amp;quot;&amp;lt;/span&amp;gt;, 0 );&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::KillSpinThread() {&lt;br /&gt;
     sys.[[ScriptEvent:killThread|killThread]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;SpinBarrels_&amp;quot;&amp;lt;/span&amp;gt; + [[ScriptEvent:getName|getName]]() );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::KillGunThread() {&lt;br /&gt;
     sys.[[ScriptEvent:killThread|killThread]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;GunThread_&amp;quot;&amp;lt;/span&amp;gt; + [[ScriptEvent:getName|getName]]() );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::OnEndAttack() {&lt;br /&gt;
     wantsFire = false;&lt;br /&gt;
     attacking = false;&lt;br /&gt;
 &lt;br /&gt;
     KillGunThread();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::OnBeginAttack() {&lt;br /&gt;
     wantsFire = true;&lt;br /&gt;
     attacking = true;&lt;br /&gt;
 &lt;br /&gt;
     KillSpinThread();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; SpinBarrels();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; GunThread();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::SpinBarrels() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; spinFire = 720.f;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; spinStop = 30.f;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; muzzleHandle1 = [[ScriptEvent:getJointHandle|getJointHandle]]( [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;joint_spin1&amp;quot;&amp;lt;/span&amp;gt; ) );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; muzzleHandle2 = [[ScriptEvent:getJointHandle|getJointHandle]]( [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;joint_spin2&amp;quot;&amp;lt;/span&amp;gt; ) );&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptEvent:startSound|startSound]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;snd_fire&amp;quot;&amp;lt;/span&amp;gt;, SND_WEAPON_FIRE );&lt;br /&gt;
     [[ScriptEvent:startSound|startSound]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;snd_fire_far&amp;quot;&amp;lt;/span&amp;gt;, SND_WEAPON_FIRE_FAR );&lt;br /&gt;
     [[ScriptEvent:startSound|startSound]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;snd_brass&amp;quot;&amp;lt;/span&amp;gt;, SND_DEPLOYABLE_BRASS );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;while&amp;lt;/span&amp;gt; ( wantsFire ) {&lt;br /&gt;
         sys.[[ScriptEvent:waitFrame|waitFrame]]();&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( barrelSpeed &amp;lt; spinFire ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( barrelSpeed &amp;lt; spinStop ) {&lt;br /&gt;
                 barrelSpeed = spinStop;&lt;br /&gt;
             }&lt;br /&gt;
             barrelSpeed = barrelSpeed + 90.f;&lt;br /&gt;
         } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; {&lt;br /&gt;
             barrelSpeed = spinFire;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         barrelAngles_z = barrelAngles_z + ( barrelSpeed * sys.[[ScriptEvent:getFrameTime|getFrameTime]]() );&lt;br /&gt;
         [[ScriptEvent:setJointAngle|setJointAngle]]( muzzleHandle1, JOINTMOD_LOCAL, barrelAngles );&lt;br /&gt;
         [[ScriptEvent:setJointAngle|setJointAngle]]( muzzleHandle2, JOINTMOD_LOCAL, -barrelAngles );&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptEvent:startSound|startSound]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;snd_fire_trail&amp;quot;&amp;lt;/span&amp;gt;, SND_WEAPON_FIRE );&lt;br /&gt;
     [[ScriptEvent:startSound|startSound]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;snd_fire_far_trail&amp;quot;&amp;lt;/span&amp;gt;, SND_WEAPON_FIRE_FAR );&lt;br /&gt;
     [[ScriptEvent:startSound|startSound]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;snd_brass_stop&amp;quot;&amp;lt;/span&amp;gt;, SND_DEPLOYABLE_BRASS );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;while&amp;lt;/span&amp;gt; ( barrelSpeed != 0.f ) {&lt;br /&gt;
         sys.[[ScriptEvent:waitFrame|waitFrame]]();&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( barrelSpeed &amp;gt; spinStop ) {&lt;br /&gt;
             barrelSpeed = barrelSpeed - 30.f;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( barrelSpeed &amp;lt;= spinStop ) {&lt;br /&gt;
             barrelSpeed = 0.f;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         barrelAngles_z = barrelAngles_z + ( barrelSpeed * sys.[[ScriptEvent:getFrameTime|getFrameTime]]() );&lt;br /&gt;
         [[ScriptEvent:setJointAngle|setJointAngle]]( muzzleHandle1, JOINTMOD_LOCAL, barrelAngles );&lt;br /&gt;
         [[ScriptEvent:setJointAngle|setJointAngle]]( muzzleHandle2, JOINTMOD_LOCAL, -barrelAngles );&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::FreeRangeIdentifier() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( commandmapRangeHandle != -1 ) {&lt;br /&gt;
         sys.[[ScriptEvent:freeCMIcon|freeCMIcon]]( self, commandmapRangeHandle );&lt;br /&gt;
         commandmapRangeHandle = -1;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::SetupRangeIdentifier() {&lt;br /&gt;
     FreeRangeIdentifier();&lt;br /&gt;
 &lt;br /&gt;
     commandmapRangeHandle = sys.[[ScriptEvent:allocCMIcon|allocCMIcon]]( self, 100 );&lt;br /&gt;
     sys.[[ScriptEvent:setCMIconSizeMode|setCMIconSizeMode]]( commandmapRangeHandle, SM_WORLD );&lt;br /&gt;
     sys.[[ScriptEvent:setCMIconColor|setCMIconColor]]( commandmapRangeHandle, g_colorRed, 0.25f );&lt;br /&gt;
     sys.[[ScriptEvent:setCMIconSides|setCMIconSides]]( commandmapRangeHandle, 24 );&lt;br /&gt;
     sys.[[ScriptEvent:setCMIconDrawMode|setCMIconDrawMode]]( commandmapRangeHandle, DM_CIRCLE );&lt;br /&gt;
     sys.[[ScriptEvent:setCMIconMaterial|setCMIconMaterial]]( commandmapRangeHandle, GetMaterial( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;_white_depth&amp;quot;&amp;lt;/span&amp;gt; ) );&lt;br /&gt;
     sys.[[ScriptEvent:setCMIconUnknownMaterial|setCMIconUnknownMaterial]]( commandmapRangeHandle, GetMaterial( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;_white_depth&amp;quot;&amp;lt;/span&amp;gt; ) );&lt;br /&gt;
     sys.[[ScriptEvent:setCMIconSize|setCMIconSize]]( commandmapRangeHandle, maxRange );&lt;br /&gt;
     sys.[[ScriptEvent:setCMIconUnknownSize|setCMIconUnknownSize]]( commandmapRangeHandle, maxRange );&lt;br /&gt;
     sys.[[ScriptEvent:setCMIconFlag|setCMIconFlag]]( commandmapRangeHandle, CMF_ENEMYONLY | CMF_ONLYSHOWKNOWN );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg|deployable_antissg]]::vOnDeploy() {&lt;br /&gt;
     SetupRangeIdentifier();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; DoDeploy();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;object&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg_cc|deployable_antissg_cc]] : [[ScriptClass:deployable_antissg|deployable_antissg]] {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;                preinit();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;                GetActivateCode( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; p, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; distance );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;                vCheckActionCode( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; p, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; actionCode );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;                vApplyEmpDamage( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; attacker, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; time, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; weaponTime ) {}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg_cc|deployable_antissg_cc]]::preinit() {&lt;br /&gt;
     [[ScriptEvent:disableImpact|disableImpact]]();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; [[ScriptClass:deployable_antissg_cc|deployable_antissg_cc]]::GetActivateCode( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; p, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; distance ) {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; AK_NONE;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;    [[ScriptClass:deployable_antissg_cc|deployable_antissg_cc]]::vCheckActionCode( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; p, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; actionCode ) {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; AC_NONE;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Wizz</name></author>
		
	</entry>
</feed>