<?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%2Fvehicles%2Fviolator.script</id>
	<title>Script:Files:script/vehicles/violator.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%2Fvehicles%2Fviolator.script"/>
	<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Script:Files:script/vehicles/violator.script&amp;action=history"/>
	<updated>2026-04-29T03:32:07Z</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/vehicles/violator.script&amp;diff=1828&amp;oldid=prev</id>
		<title>Wizz at 09:59, 5 November 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Script:Files:script/vehicles/violator.script&amp;diff=1828&amp;oldid=prev"/>
		<updated>2007-11-05T09:59:02Z</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:vehicle_violator|vehicle_violator]] {&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;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            syncFields();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            vBomberAttack( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; target, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; attackDir, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; attackHeight, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; attacker );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            Update();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            CreateFiringMarker();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            ClearFiringMarker();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            BeamSounds();&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;vector&amp;lt;/span&amp;gt;            startPos;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt;            beamDir;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            beamStartTime;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            beamDuration;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            beamStartupDuration;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            beamCoreStartupDuration;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            beamFizzleDuration;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            beamEffectFizzleDuration;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            lastGroundEffectsTime;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            beamRotationSpeed;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt;            owner;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            movementTableIndex;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;            beamSoundsThread;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;object&amp;lt;/span&amp;gt;            beamStartEffect;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;            beamStartEffectPlaying;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;object&amp;lt;/span&amp;gt;            beamEffect;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;            beamEffectPlaying;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt;            targetBase;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt;            firingMarker;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            splashDamage;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            beamAreaLength;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// marker models&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            CreateDirectionMarkers( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; startPosition, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; endPosition );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            FadeDirectionMarkers( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; duration, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; start, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; end );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            RemoveDirectionMarkers();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            PulseDirectionMarkers( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; currentTime );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            DirectionMarkerThread();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;                directionMarkerDrawn;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;                directionMarkerFaded;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;                directionMarkerStartTime;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker0;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker1;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker2;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker3;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker4;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker5;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker6;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker7;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker8;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker9;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker10;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker11;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker12;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker13;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker14;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker15;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker16;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker17;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker18;&lt;br /&gt;
     [[ScriptClass:direction_marker|direction_marker]]    directionMarker19;&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:vehicle_violator|vehicle_violator]]::syncFields() {&lt;br /&gt;
     [[ScriptEvent:syncBroadcast|syncBroadcast]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;startPos&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     [[ScriptEvent:syncBroadcast|syncBroadcast]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;beamDir&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     [[ScriptEvent:syncBroadcast|syncBroadcast]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;beamStartTime&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     [[ScriptEvent:syncBroadcast|syncBroadcast]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;owner&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:vehicle_violator|vehicle_violator]]::preinit() {&lt;br /&gt;
     beamStartTime        = -1;&lt;br /&gt;
 &lt;br /&gt;
     lastGroundEffectsTime = -1.f;&lt;br /&gt;
 &lt;br /&gt;
     beamStartupDuration            = [[ScriptEvent:getFloatKey|getFloatKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;beam_startup_duration&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     beamCoreStartupDuration        = [[ScriptEvent:getFloatKey|getFloatKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;beam_core_startup_duration&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     beamDuration                = [[ScriptEvent:getFloatKey|getFloatKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;beam_duration&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     beamFizzleDuration            = [[ScriptEvent:getFloatKey|getFloatKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;beam_fizzle_duration&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     beamEffectFizzleDuration    = [[ScriptEvent:getFloatKey|getFloatKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;beam_effect_fizzle_duration&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
 &lt;br /&gt;
     beamRotationSpeed            = [[ScriptEvent:getFloatKey|getFloatKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;beam_rotation_speed&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
 &lt;br /&gt;
     splashDamage                = GetDamage( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;damage_violator_splash&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
 &lt;br /&gt;
     beamStartEffectPlaying        = false;&lt;br /&gt;
     beamEffectPlaying            = false;&lt;br /&gt;
 &lt;br /&gt;
     beamAreaLength                = [[ScriptEvent:getFloatKey|getFloatKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;beam_area_length&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
 &lt;br /&gt;
     movementTableIndex    = GetTable( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;exp_x2&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:vehicle_violator|vehicle_violator]]::init() {&lt;br /&gt;
     [[ScriptEvent:hide|hide]]();&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:vehicle_violator|vehicle_violator]]::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;
         Update();&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:vehicle_violator|vehicle_violator]]::vBomberAttack( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; target, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; attackDir, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; attackHeight, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; attacker ) {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;    arrivalDelay;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;    arrivalDelayRandom;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt;    dir;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt;    endPos;&lt;br /&gt;
 &lt;br /&gt;
     targetBase                = target;&lt;br /&gt;
     targetBase_z            = attackHeight;&lt;br /&gt;
 &lt;br /&gt;
     owner                    = attacker;&lt;br /&gt;
     [[ScriptEvent:setGameTeam|setGameTeam]]( attacker.[[ScriptEvent:getGameTeam|getGameTeam]]() );&lt;br /&gt;
 &lt;br /&gt;
     arrivalDelay            = [[ScriptEvent:getFloatKey|getFloatKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;arrivaldelay&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     arrivalDelayRandom        = [[ScriptEvent:getFloatKey|getFloatKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;arrivaldelay_random&amp;quot;&amp;lt;/span&amp;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;( arrivalDelayRandom &amp;lt; arrivalDelay ) {&lt;br /&gt;
         arrivalDelayRandom    = arrivalDelay;&lt;br /&gt;
     }&lt;br /&gt;
     arrivalDelay            = arrivalDelay + sys.[[ScriptEvent:random|random]]( arrivalDelayRandom );&lt;br /&gt;
 &lt;br /&gt;
     beamDuration            = [[ScriptEvent:getFloatKey|getFloatKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;beam_duration&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
 &lt;br /&gt;
     dir = sys.[[ScriptEvent:vecNormalize|vecNormalize]]( attackDir );&lt;br /&gt;
 &lt;br /&gt;
     startPos = target - dir * 0.5f * beamAreaLength;&lt;br /&gt;
     sys.[[ScriptEvent:tracePoint|tracePoint]]( target, startPos, MASK_SOLID | MASK_OPAQUE, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; );&lt;br /&gt;
     startPos = sys.[[ScriptEvent:getTraceEndPos|getTraceEndPos]]();&lt;br /&gt;
 &lt;br /&gt;
     endPos = target + dir * beamAreaLength;&lt;br /&gt;
     sys.[[ScriptEvent:tracePoint|tracePoint]]( target, endPos, MASK_SOLID | MASK_OPAQUE, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; );&lt;br /&gt;
     endPos = sys.[[ScriptEvent:getTraceEndPos|getTraceEndPos]]();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// set proper flight height&amp;lt;/span&amp;gt;&lt;br /&gt;
     endPos_z    = attackHeight + 3072.f;&lt;br /&gt;
     startPos_z    = attackHeight + 3072.f;&lt;br /&gt;
 &lt;br /&gt;
     beamDir = endPos - startPos;&lt;br /&gt;
 &lt;br /&gt;
     beamStartTime = sys.[[ScriptEvent:getTime|getTime]]() + arrivalDelay + beamStartupDuration;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// initalise position&amp;lt;/span&amp;gt;&lt;br /&gt;
     [[ScriptEvent:setOrigin|setOrigin]]( startPos );&lt;br /&gt;
 &lt;br /&gt;
     CreateFiringMarker();&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:vehicle_violator|vehicle_violator]]::Update() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;    currentTime = sys.[[ScriptEvent:getTime|getTime]]();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;    frac;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt;    currentPos;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt;    angles;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;object&amp;lt;/span&amp;gt;    traceObject;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt;    traceEndPos;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt;    traceNormal;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt;    collisionEnt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( beamStartTime &amp;lt; 0 || currentTime &amp;lt; beamStartTime - beamStartupDuration ) {&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; ( currentTime &amp;lt; beamStartTime ) {&lt;br /&gt;
         frac = 0.0f;&lt;br /&gt;
     } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; {&lt;br /&gt;
         frac = ( currentTime - beamStartTime ) / beamDuration;&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !directionMarkerFaded ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( frac &amp;gt; 0.6f ) {&lt;br /&gt;
                 directionMarkerFaded = true;&lt;br /&gt;
                 FadeDirectionMarkers( 0.5f, 1.0f, 0.0f );&lt;br /&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; ( frac &amp;gt;= 1.0f ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( currentTime - beamStartTime - beamDuration &amp;gt; 6 ) {&lt;br /&gt;
                 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// give it some time for the particles to die&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; ( beamStartEffect != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
                     beamStartEffect.[[ScriptEvent:remove|remove]]();&lt;br /&gt;
                     beamStartEffect = &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;
                 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( beamEffect != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
                     beamEffect.[[ScriptEvent:remove|remove]]();&lt;br /&gt;
                     beamEffect = &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;
                 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !sys.[[ScriptEvent:isClient|isClient]]() ) {&lt;br /&gt;
                     [[ScriptEvent:remove|remove]]();&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;;&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;if&amp;lt;/span&amp;gt; ( frac &amp;lt; 1.0f ) {&lt;br /&gt;
         CreateDirectionMarkers( startPos, startPos + beamDir );&lt;br /&gt;
 &lt;br /&gt;
         frac = sys.[[ScriptEvent:getTableValueExact|getTableValueExact]]( movementTableIndex, frac );&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     currentPos = startPos + ( beamDir * frac );&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptEvent:setOrigin|setOrigin]]( currentPos );&lt;br /&gt;
 &lt;br /&gt;
     sys.[[ScriptEvent:tracePoint|tracePoint]]( currentPos, currentPos + ( vec3_down * MAX_WORLD_SIZE ), MASK_SHOT_RENDERMODEL, &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;string&amp;lt;/span&amp;gt; surfaceTypeName = sys.[[ScriptEvent:getTraceSurfaceType|getTraceSurfaceType]]();&lt;br /&gt;
     traceEndPos = sys.[[ScriptEvent:getTraceEndPos|getTraceEndPos]]();&lt;br /&gt;
     traceNormal = sys.[[ScriptEvent:getTraceNormal|getTraceNormal]]();&lt;br /&gt;
     collisionEnt = sys.[[ScriptEvent:getTraceEntity|getTraceEntity]]();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt;( !beamSoundsThread ) {&lt;br /&gt;
         beamSoundsThread = true;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; BeamSounds();&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// beam visualisation&amp;lt;/span&amp;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; ( currentTime &amp;lt; beamStartTime ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// beam start effect&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; ( beamStartEffect == &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
             beamStartEffect = [[ScriptEvent:spawnClientEffect|spawnClientEffect]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fx_beam_start&amp;quot;&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; ( beamStartEffect != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
                 beamStartEffectPlaying = true;&lt;br /&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; ( currentTime &amp;gt; ( beamStartTime - beamCoreStartupDuration ) ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( beamEffect == &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
                 beamEffect = [[ScriptEvent:spawnClientEffect|spawnClientEffect]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fx_beam&amp;quot;&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; ( beamEffect != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
                     beamEffectPlaying = true;&lt;br /&gt;
 &lt;br /&gt;
                     beamEffect.[[ScriptEvent:setEffectLooping|setEffectLooping]]( 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;else&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; ( currentTime &amp;gt; ( beamStartTime + beamDuration - beamEffectFizzleDuration ) ) {            &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// Xian Hack&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; ( beamEffectPlaying ) {&lt;br /&gt;
                 beamEffect.[[ScriptEvent:endEffect|endEffect]]( false );&lt;br /&gt;
                 beamEffectPlaying = false;&lt;br /&gt;
             }&lt;br /&gt;
         } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&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; ( beamStartEffectPlaying ) {&lt;br /&gt;
                 beamStartEffect.[[ScriptEvent:endEffect|endEffect]]( false );&lt;br /&gt;
                 beamStartEffectPlaying = false;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;/*	if ( beamEffect == $null_entity ) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;				beamEffect = spawnClientEffect( &amp;quot;fx_beam&amp;quot; );&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;				beamEffect.setEffectLooping( 1 );&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;				beamEffect.setAngles( sys.vecToAngles( vec3_up ) );&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;			}*/&amp;lt;/span&amp;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;if&amp;lt;/span&amp;gt; ( beamStartEffect != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
         beamStartEffect.[[ScriptEvent:setOrigin|setOrigin]]( traceEndPos );&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; acceleration = beamRotationSpeed / beamStartupDuration;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; time = currentTime - ( beamStartTime - beamStartupDuration );&lt;br /&gt;
 &lt;br /&gt;
         angles_x = -90;&lt;br /&gt;
         angles_y = 0.5 * acceleration * time * time;&lt;br /&gt;
         angles_z = 0;&lt;br /&gt;
 &lt;br /&gt;
         beamStartEffect.[[ScriptEvent:setAngles|setAngles]]( angles );&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; ( beamEffect != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
         beamEffect.[[ScriptEvent:setOrigin|setOrigin]]( traceEndPos );&lt;br /&gt;
 &lt;br /&gt;
         angles_x = -90;&lt;br /&gt;
         angles_y = beamRotationSpeed * currentTime;&lt;br /&gt;
         angles_z = 0;&lt;br /&gt;
 &lt;br /&gt;
         beamEffect.[[ScriptEvent:setAngles|setAngles]]( angles );&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( sys.[[ScriptEvent:getTime|getTime]]() &amp;gt;= ( lastGroundEffectsTime + 0.3f ) ) {&lt;br /&gt;
             sys.[[ScriptEvent:tracePoint|tracePoint]]( currentPos, currentPos + ( vec3_down * MAX_WORLD_SIZE ), MASK_SHOT_RENDERMODEL|CONTENTS_WATER, &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;string&amp;lt;/span&amp;gt; fxsurfaceTypeName = sys.[[ScriptEvent:getTraceSurfaceType|getTraceSurfaceType]]();&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; fxtraceEndPos = sys.[[ScriptEvent:getTraceEndPos|getTraceEndPos]]();&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; fxtraceNormal = sys.[[ScriptEvent:getTraceNormal|getTraceNormal]]();&lt;br /&gt;
 &lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; beamTime = beamStartTime + ( beamDuration + 3.5 ) - beamFizzleDuration;        &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// Xian Hack&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; ( currentTime &amp;lt; beamTime ) {&lt;br /&gt;
                 [[ScriptEvent:playOriginEffect|playOriginEffect]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fx_groundeffect&amp;quot;&amp;lt;/span&amp;gt;, fxsurfaceTypeName, fxtraceEndPos, fxtraceNormal, 0 );&lt;br /&gt;
                 lastGroundEffectsTime = sys.[[ScriptEvent:getTime|getTime]]();&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;if&amp;lt;/span&amp;gt; ( !sys.[[ScriptEvent:isClient|isClient]]() ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; damageScale;&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; fizzleStartTime = beamStartTime + beamDuration - beamFizzleDuration;&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( currentTime &amp;lt; beamStartTime ) {&lt;br /&gt;
             damageScale = 0.0f;&lt;br /&gt;
         } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( currentTime &amp;gt; fizzleStartTime ) {&lt;br /&gt;
             damageScale = 1.0f - ( ( currentTime - fizzleStartTime ) / beamFizzleDuration );&lt;br /&gt;
         } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; {&lt;br /&gt;
             damageScale = 1.0f;&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; ( damageScale &amp;gt; 0.0f ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( collisionEnt != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
                 collisionEnt.[[ScriptEvent:applyDamage|applyDamage]]( self, owner, vec3_down, GetDamage( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;damage_violator&amp;quot;&amp;lt;/span&amp;gt; ), damageScale, traceObject );&lt;br /&gt;
             }&lt;br /&gt;
             sys.[[ScriptEvent:applyRadiusDamage|applyRadiusDamage]]( traceEndPos + ( vec3_up * 64.0f ), self, owner, $null_entity, self, splashDamage, damageScale, 1.f );&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:vehicle_violator|vehicle_violator]]::destroy() {&lt;br /&gt;
     ClearFiringMarker();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( beamStartEffect != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
         beamStartEffect.[[ScriptEvent:remove|remove]]();&lt;br /&gt;
     }&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( beamEffect != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
         beamEffect.[[ScriptEvent:remove|remove]]();&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     RemoveDirectionMarkers();&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:vehicle_violator|vehicle_violator]]::BeamSounds() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;    playingBeamSound;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; beamTime = sys.[[ScriptEvent:getTime|getTime]]() + ( beamDuration + 3.5 ) - beamFizzleDuration;        &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// Xian Hack&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;while&amp;lt;/span&amp;gt; ( sys.[[ScriptEvent:getTime|getTime]]() &amp;lt; beamTime ) {&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;( !playingBeamSound ) {&lt;br /&gt;
             playingBeamSound = true;&lt;br /&gt;
             [[ScriptEvent:startSound|startSound]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;snd_beam_start&amp;quot;&amp;lt;/span&amp;gt;, SND_VEHICLE );&lt;br /&gt;
         }&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_beam_stop&amp;quot;&amp;lt;/span&amp;gt;, SND_VEHICLE );&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:vehicle_violator|vehicle_violator]]::CreateFiringMarker() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !sys.[[ScriptEvent:isClient|isClient]]() ) {&lt;br /&gt;
         firingMarker = G_CreateFiringMarker( self, firingMarker, targetBase );&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:vehicle_violator|vehicle_violator]]::ClearFiringMarker() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( firingMarker != &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;thread&amp;lt;/span&amp;gt; G_DelayRemoveEntity( firingMarker, 5.f );&lt;br /&gt;
         firingMarker = &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;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:vehicle_violator|vehicle_violator]]::CreateDirectionMarkers( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; startPosition, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; endPosition ) {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( directionMarkerDrawn ) {&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;
     directionMarkerDrawn = true;&lt;br /&gt;
     directionMarkerStartTime = sys.[[ScriptEvent:getTime|getTime]]();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; p = sys.[[ScriptEvent:getLocalViewPlayer|getLocalViewPlayer]]();&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;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; ( [[ScriptEvent:getEntityAllegiance|getEntityAllegiance]]( p ) != TA_FRIEND ) {&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;string&amp;lt;/span&amp;gt; entityDef = [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;def_directionmarker&amp;quot;&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; ( entityDef == &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;&amp;quot;&amp;lt;/span&amp;gt; ) {&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;vector&amp;lt;/span&amp;gt; targetDir = endPosition - startPosition;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; basePosition = startPosition + 0.5f * targetDir;&lt;br /&gt;
     targetDir = sys.[[ScriptEvent:vecNormalize|vecNormalize]]( targetDir );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; half;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; halfLength;&lt;br /&gt;
 &lt;br /&gt;
     basePosition_z = startPosition_z;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// calculate marker start position&amp;lt;/span&amp;gt;&lt;br /&gt;
     half = basePosition - startPosition;&lt;br /&gt;
     halfLength = min( sys.[[ScriptEvent:vecLength|vecLength]]( half ), 2048.0f );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; markerStart = basePosition - halfLength * targetDir;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// calculate marker end position&amp;lt;/span&amp;gt;&lt;br /&gt;
     half = endPosition - basePosition;&lt;br /&gt;
     halfLength = min( sys.[[ScriptEvent:vecLength|vecLength]]( half ), 2048.0f );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; markerEnd = basePosition + halfLength * targetDir;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; markerLength = sys.[[ScriptEvent:vecLength|vecLength]]( markerEnd - markerStart );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; numMarkers = rint( markerLength / 256.0f ) + 1.0f;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; targetStep = targetDir * ( markerLength / numMarkers );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; targetPos = markerStart;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// spawn direction markers&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; ( numMarkers &amp;gt; 0.0f ) {&lt;br /&gt;
         directionMarker0 = new [[ScriptClass:direction_marker|direction_marker]];&lt;br /&gt;
         directionMarker0.Create( 0, entityDef, targetPos, targetDir );&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;#define&amp;lt;/span&amp;gt; CREATE_DIRECTION_MARKER( index )                                            \&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( numMarkers &amp;gt; (index) ) {                                                    \&lt;br /&gt;
         targetPos += targetStep;                                                    \&lt;br /&gt;
         directionMarker##index = new [[ScriptClass:direction_marker|direction_marker]];                                \&lt;br /&gt;
         directionMarker##index.Create( (index), entityDef, targetPos, targetDir );    \&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     CREATE_DIRECTION_MARKER( 1 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 2 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 3 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 4 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 5 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 6 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 7 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 8 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 9 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 10 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 11 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 12 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 13 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 14 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 15 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 16 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 17 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 18 )&lt;br /&gt;
     CREATE_DIRECTION_MARKER( 19 )&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;#undef&amp;lt;/span&amp;gt; CREATE_DIRECTION_MARKER&lt;br /&gt;
 &lt;br /&gt;
     FadeDirectionMarkers( 0.3f, 0.0f, 1.0f );&lt;br /&gt;
     PulseDirectionMarkers( 0.0f );    &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// force an update&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; DirectionMarkerThread();&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:vehicle_violator|vehicle_violator]]::FadeDirectionMarkers( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; duration, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; start, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; end ) {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !directionMarkerDrawn ) {&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;float&amp;lt;/span&amp;gt; currentTime = sys.[[ScriptEvent:getTime|getTime]]() - directionMarkerStartTime;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;#define&amp;lt;/span&amp;gt; FADE_DIRECTION_MARKER( index )                                        \&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( directionMarker##index != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null&amp;lt;/span&amp;gt; ) {                                \&lt;br /&gt;
         directionMarker##index.Fade( currentTime, duration, start, end );    \&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     FADE_DIRECTION_MARKER( 0 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 1 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 2 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 3 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 4 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 5 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 6 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 7 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 8 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 9 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 10 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 11 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 12 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 13 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 14 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 15 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 16 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 17 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 18 )&lt;br /&gt;
     FADE_DIRECTION_MARKER( 19 )&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;#undef&amp;lt;/span&amp;gt; FADE_DIRECTION_MARKER&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:vehicle_violator|vehicle_violator]]::RemoveDirectionMarkers() {&lt;br /&gt;
     sys.[[ScriptEvent:killThread|killThread]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;DirectionMarkerThread_&amp;quot;&amp;lt;/span&amp;gt; + [[ScriptEvent:getName|getName]]() );&lt;br /&gt;
 &lt;br /&gt;
     directionMarkerDrawn = false;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;#define&amp;lt;/span&amp;gt; DELETE_DIRECTION_MARKER( index )        \&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( directionMarker##index != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null&amp;lt;/span&amp;gt; ) {    \&lt;br /&gt;
         delete directionMarker##index;            \&lt;br /&gt;
         directionMarker##index = &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null&amp;lt;/span&amp;gt;;            \&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     DELETE_DIRECTION_MARKER( 0 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 1 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 2 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 3 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 4 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 5 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 6 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 7 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 8 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 9 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 10 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 11 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 12 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 13 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 14 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 15 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 16 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 17 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 18 )&lt;br /&gt;
     DELETE_DIRECTION_MARKER( 19 )&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;#undef&amp;lt;/span&amp;gt; DELETE_DIRECTION_MARKER&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:vehicle_violator|vehicle_violator]]::PulseDirectionMarkers( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; currentTime ) {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !directionMarkerDrawn ) {&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;float&amp;lt;/span&amp;gt; pulseTime = currentTime - directionMarkerStartTime;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;#define&amp;lt;/span&amp;gt; UPDATE_DIRECTION_MARKER( index )            \&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( directionMarker##index != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null&amp;lt;/span&amp;gt; ) {        \&lt;br /&gt;
         directionMarker##index.Update( pulseTime );    \&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 0 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 1 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 2 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 3 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 4 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 5 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 6 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 7 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 8 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 9 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 10 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 11 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 12 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 13 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 14 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 15 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 16 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 17 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 18 )&lt;br /&gt;
     UPDATE_DIRECTION_MARKER( 19 )&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;#undef&amp;lt;/span&amp;gt; UPDATE_DIRECTION_MARKER&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:vehicle_violator|vehicle_violator]]::DirectionMarkerThread() {&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;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( directionMarkerDrawn ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; currentTime = sys.[[ScriptEvent:getTime|getTime]]();&lt;br /&gt;
 &lt;br /&gt;
             PulseDirectionMarkers( currentTime );&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         sys.[[ScriptEvent:waitFrame|waitFrame]]();&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Wizz</name></author>
		
	</entry>
</feed>