<?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%2Fjotun.script</id>
	<title>Script:Files:script/vehicles/jotun.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%2Fjotun.script"/>
	<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Script:Files:script/vehicles/jotun.script&amp;action=history"/>
	<updated>2026-04-07T22:15:01Z</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/jotun.script&amp;diff=1836&amp;oldid=prev</id>
		<title>Wizz at 10:00, 5 November 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Script:Files:script/vehicles/jotun.script&amp;diff=1836&amp;oldid=prev"/>
		<updated>2007-11-05T10:00:38Z</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;#define&amp;lt;/span&amp;gt; DROP_DIST '0 0 32768'&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; G_Jotun_DropItem( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; requestId, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; item, &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;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;return&amp;lt;/span&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &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;vector&amp;lt;/span&amp;gt; dropOrigin = item.[[ScriptEvent:getWorldOrigin|getWorldOrigin]]();&lt;br /&gt;
     dropOrigin_x = targetPos_x;&lt;br /&gt;
     dropOrigin_y = targetPos_y;&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:parachute|parachute]];    &lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; down    = dropOrigin - DROP_DIST;&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;if&amp;lt;/span&amp;gt; ( item.vDropItemTrace( dropOrigin, down, item, targetPos ) ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !item.vAllowDrop() ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( requestId != -1 ) {&lt;br /&gt;
                 sys.[[ScriptEvent:clearDeployRequest|clearDeployRequest]]( requestId );&lt;br /&gt;
                 requestId = -1;&lt;br /&gt;
             }&lt;br /&gt;
             item.[[ScriptEvent:remove|remove]]();&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;
         frac = sys.[[ScriptEvent:getTraceFraction|getTraceFraction]]();&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 = sys.[[ScriptEvent:tracePoint|tracePoint]]( dropOrigin, down, CONTENTS_SOLID | CONTENTS_MOVEABLECLIP, item );&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 == 1.f ) {&lt;br /&gt;
         sys.[[ScriptEvent:warning|warning]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;G_Jotun_DropItem did not find the ground&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;vector&amp;lt;/span&amp;gt; finalDestinationII = sys.[[ScriptEvent:getTraceEndPos|getTraceEndPos]]();&lt;br /&gt;
     item.[[ScriptEvent:setComeToRest|setComeToRest]]( false );&lt;br /&gt;
     item.[[ScriptEvent:setGroundPosition|setGroundPosition]]( finalDestinationII );&lt;br /&gt;
     item.[[ScriptEvent:disableKnockback|disableKnockback]]();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; traceEnt = sys.[[ScriptEvent:getTraceEntity|getTraceEntity]]();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( traceEnt != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; &amp;amp;&amp;amp; traceEnt != sys.[[ScriptEvent:getEntity|getEntity]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;worldspawn&amp;quot;&amp;lt;/span&amp;gt; ) ) {&lt;br /&gt;
         item.vBindToEntity( traceEnt );&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; parachuteDelay = item.[[ScriptEvent:getFloatKeyWithDefault|getFloatKeyWithDefault]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;parachute_deploy_delay&amp;quot;&amp;lt;/span&amp;gt;, 3.f );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; parachuteTime = sys.[[ScriptEvent:getTime|getTime]]() + parachuteDelay;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; parachuteZ = finalDestinationII_z + 4196;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;while&amp;lt;/span&amp;gt;( 1 ) {&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; ( item == &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) { &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// Gordon: map restart may have happened, or something else that removes the entity, don't want to spin forever&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; origin = item.[[ScriptEvent:getWorldOrigin|getWorldOrigin]]();&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; velocity = item.[[ScriptEvent:getLinearVelocity|getLinearVelocity]]();&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; delta = origin - finalDestinationII;&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( parachuteTime != -1 &amp;amp;&amp;amp; sys.[[ScriptEvent:getTime|getTime]]() &amp;gt; parachuteTime &amp;amp;&amp;amp; origin_z &amp;lt; parachuteZ ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// spawn a parachute on the dropped vehicle&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; paraDef = item.[[ScriptEvent:getKeyWithDefault|getKeyWithDefault]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;def_parachute&amp;quot;&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;round_parachute&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; ( paraDef != &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;&amp;quot;&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
                 [[ScriptClass:parachute|parachute]] = sys.[[ScriptEvent:spawn|spawn]]( paraDef );&lt;br /&gt;
                 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( [[ScriptClass:parachute|parachute]] != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
                     [[ScriptClass:parachute|parachute]].vSetOwner( item );&lt;br /&gt;
                     [[ScriptClass:parachute|parachute]].vForceStayOpen( true );&lt;br /&gt;
                 }&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             parachuteTime = -1;        &lt;br /&gt;
 &lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( item.vSkipDeployDrop() ) {&lt;br /&gt;
                 break;&lt;br /&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; count = item.[[ScriptEvent:entitiesInBounds|entitiesInBounds]]( item.[[ScriptEvent:getAbsMins|getAbsMins]](), item.[[ScriptEvent:getAbsMaxs|getAbsMaxs]](), -1, 0 );&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; index;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;for&amp;lt;/span&amp;gt; ( index = 0; index &amp;lt; count; index++ ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; other = item.[[ScriptEvent:getBoundsCacheEntity|getBoundsCacheEntity]]( index );&lt;br /&gt;
             other.[[ScriptEvent:applyDamage|applyDamage]]( $null_entity, item, down, GetDamage( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;damage_magog_npc_collide&amp;quot;&amp;lt;/span&amp;gt; ), 1.f, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ); &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// FIXME: Get damage decl&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; ( delta_z &amp;lt;= 1 ) {&lt;br /&gt;
             break;&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; ( velocity_z != 0.f ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// drift the item towards its destination to account for error in launch origin&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; estTimeToHit = sys.[[ScriptEvent:fabs|fabs]]( delta_z / velocity_z );&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; newVelocity = delta * ( velocity_z / delta_z );&lt;br /&gt;
             newVelocity_z = velocity_z;&lt;br /&gt;
             item.[[ScriptEvent:setLinearVelocity|setLinearVelocity]]( newVelocity );&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     item.[[ScriptEvent:enableKnockback|enableKnockback]]();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( [[ScriptClass:parachute|parachute]] != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
         [[ScriptClass:parachute|parachute]].vForceStayOpen( 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; ( requestId != -1 ) {&lt;br /&gt;
         sys.[[ScriptEvent:clearDeployRequest|clearDeployRequest]]( requestId );&lt;br /&gt;
         requestId = -1;&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; ( item != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
         item.vOnDeploy();&lt;br /&gt;
         item = &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;object&amp;lt;/span&amp;gt; [[ScriptClass:vehicle_jotun|vehicle_jotun]] {&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:green&amp;quot;&amp;gt;// states&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;            Deliver();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            Drop();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            Return();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// callbacks&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;            OnSetDeploymentParms( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; deploymentItemIndex, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; playerIndex, &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;float&amp;lt;/span&amp;gt; rotation );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            OnKilled( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; inflictor, &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; damage, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; direction, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; location );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            ClearRequest();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            OnItemChanged();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            OnStartTimeChanged();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// utility&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;            DoSound();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;            SetupCommandMap();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;            PerformDrop();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// virtuals&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;            vIgnoreMagogCollsion();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// threads&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;            KillAllInBoundingBox();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// deployment stuff&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;            deployIndex;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            deployPlayerIndex;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            itemIndex;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt;            item;&lt;br /&gt;
     &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;            itemRotation;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            startTime;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            dropTime;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            returnTime;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt;            gdfCorner;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            deliveryPathLength;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            returnPathLength;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// local data	&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;            maxHealth;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            damageIndex;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;            cancelDrop;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;            dropped;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;            playedFlyBySound;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;            playingFlySound;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;            flyOverSoundRange;&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_jotun|vehicle_jotun]]::SetupCommandMap() {&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_jotun|vehicle_jotun]]::syncFields() {&lt;br /&gt;
     [[ScriptEvent:syncBroadcast|syncBroadcast]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;item&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;dropTime&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;returnTime&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;targetPos&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;itemRotation&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;gdfCorner&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;startTime&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     [[ScriptEvent:syncCallback|syncCallback]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;item&amp;quot;&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;OnItemChanged&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     [[ScriptEvent:syncCallback|syncCallback]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;startTime&amp;quot;&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;OnStartTimeChanged&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_jotun|vehicle_jotun]]::OnItemChanged() {&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_jotun|vehicle_jotun]]::OnStartTimeChanged() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( startTime != -1 ) {&lt;br /&gt;
         [[ScriptEvent:setState|setState]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;Deliver&amp;quot;&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_jotun|vehicle_jotun]]::preinit() {&lt;br /&gt;
     deployPlayerIndex = -1;&lt;br /&gt;
     startTime = -1;&lt;br /&gt;
     dropTime = -1;&lt;br /&gt;
     returnTime = -1;&lt;br /&gt;
     maxHealth                = [[ScriptEvent:getFloatKey|getFloatKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;health&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
 &lt;br /&gt;
     SetupCommandMap();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; damageDeclIndex        = sys.[[ScriptEvent:getDeclType|getDeclType]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;damageDef&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     damageIndex                    = sys.[[ScriptEvent:getDeclIndex|getDeclIndex]]( damageDeclIndex, [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;dmg_drop_damage&amp;quot;&amp;lt;/span&amp;gt; ) );&lt;br /&gt;
 &lt;br /&gt;
     gdfCorner = '0 0 0';&lt;br /&gt;
 &lt;br /&gt;
     cancelDrop        = false;&lt;br /&gt;
     dropped         = false;&lt;br /&gt;
 &lt;br /&gt;
     playedFlyBySound    = false;&lt;br /&gt;
     playingFlySound        = false;&lt;br /&gt;
 &lt;br /&gt;
     flyOverSoundRange    = [[ScriptEvent:getFloatKey|getFloatKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;flyover_sndrange&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     flyOverSoundRange    = flyOverSoundRange * flyOverSoundRange;&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptEvent:setCoverage|setCoverage]]( 0.f );&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptEvent:disableKnockback|disableKnockback]]();&lt;br /&gt;
     [[ScriptEvent:hide|hide]]();&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_jotun|vehicle_jotun]]::init() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; KillAllInBoundingBox();&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_jotun|vehicle_jotun]]::ClearRequest() {&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;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; ( deployPlayerIndex != -1 ) {&lt;br /&gt;
         sys.[[ScriptEvent:clearDeployRequest|clearDeployRequest]]( deployPlayerIndex );&lt;br /&gt;
         deployPlayerIndex = -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:vehicle_jotun|vehicle_jotun]]::destroy() {    &lt;br /&gt;
     sys.[[ScriptEvent:killThread|killThread]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;KillAllInBoundingBox_&amp;quot;&amp;lt;/span&amp;gt; + [[ScriptEvent:getName|getName]]() );&lt;br /&gt;
 &lt;br /&gt;
     ClearRequest();&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; JOTUN_FLY_HEIGHT            4096&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_jotun|vehicle_jotun]]::Deliver() {&lt;br /&gt;
     [[ScriptEvent:show|show]]();&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;
         startTime = sys.[[ScriptEvent:getTime|getTime]]();&lt;br /&gt;
         gdfCorner = objManager.GetGDFBasePosition();&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; pathSpeed = [[ScriptEvent:getFloatKeyWithDefault|getFloatKeyWithDefault]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;path_speed&amp;quot;&amp;lt;/span&amp;gt;, 1024 );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt; pathType = [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;path_type&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// find the delivery path &amp;amp; level it out&amp;lt;/span&amp;gt;&lt;br /&gt;
     [[ScriptEvent:pathFind|pathFind]]( pathType, targetPos, startTime, 1.0f, gdfCorner_x, gdfCorner_y, 256.0f, false );&lt;br /&gt;
     [[ScriptEvent:pathLevel|pathLevel]]( 13, -1, -1 );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; numPoints = [[ScriptEvent:pathGetNumPoints|pathGetNumPoints]]();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( numPoints &amp;lt; 2 ) {&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;
     deliveryPathLength = [[ScriptEvent:pathGetLength|pathGetLength]]();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// get the return path &amp;amp; level that out&amp;lt;/span&amp;gt;&lt;br /&gt;
     [[ScriptEvent:pathFind|pathFind]]( pathType, targetPos, startTime + deliveryPathLength / pathSpeed, -1.0f, gdfCorner_x, gdfCorner_y, 1024.0f, true );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; newNumPoints = [[ScriptEvent:pathGetNumPoints|pathGetNumPoints]]();&lt;br /&gt;
     [[ScriptEvent:pathLevel|pathLevel]]( 13, numPoints - 1, newNumPoints - 1 );&lt;br /&gt;
 &lt;br /&gt;
     returnPathLength = [[ScriptEvent:pathGetLength|pathGetLength]]() - deliveryPathLength;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; pathLength = deliveryPathLength;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; leadTime = 2.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; flyOffset = '0 0 0';&lt;br /&gt;
     flyOffset_z = JOTUN_FLY_HEIGHT;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// setup the start&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; startPoint = [[ScriptEvent:pathGetPoint|pathGetPoint]]( 0 ) + flyOffset;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; endPoint = [[ScriptEvent:pathGetPoint|pathGetPoint]]( numPoints - 1 ) + flyOffset;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; startDir = sys.[[ScriptEvent:vecNormalize|vecNormalize]]( endPoint - startPoint );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; startAngles = sys.[[ScriptEvent:vecToAngles|vecToAngles]]( startDir );&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptEvent:setWorldOrigin|setWorldOrigin]]( startPoint );&lt;br /&gt;
     [[ScriptEvent:setAngles|setAngles]]( startAngles );&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptEvent:startJotunDelivery|startJotunDelivery]]( startTime, pathSpeed, leadTime );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; minDistance = 9999999999.0f;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; coverage = 0.f;&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;float&amp;lt;/span&amp;gt; time = sys.[[ScriptEvent:getTime|getTime]]() - startTime;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; frameTime = sys.[[ScriptEvent:getFrameTime|getFrameTime]]();&lt;br /&gt;
 &lt;br /&gt;
         [[ScriptEvent:setCoverage|setCoverage]]( coverage );&lt;br /&gt;
         coverage = coverage + frameTime;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;//sys.debugCircle( '1 0 0', startPoint, '0 0 1', 256.0f, 16, 0 );&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;//sys.debugCircle( '1 0 0', endPoint, '0 0 1', 128.0f, 16, 0 );&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; aheadPosition = ( time + leadTime )* pathSpeed;&lt;br /&gt;
 &lt;br /&gt;
         DoSound();&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;vector&amp;lt;/span&amp;gt; origin = [[ScriptEvent:getWorldOrigin|getWorldOrigin]]();&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; delta = origin - endPoint;&lt;br /&gt;
             delta_z = 0.0f;&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; distance = sys.[[ScriptEvent:vecLength|vecLength]]( delta );&lt;br /&gt;
 &lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( distance &amp;lt; minDistance ) {&lt;br /&gt;
                 minDistance = distance;&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; ( aheadPosition &amp;gt; pathLength ) {&lt;br /&gt;
                 Drop();&lt;br /&gt;
             }&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; ( returnTime != -1 ) {&lt;br /&gt;
             [[ScriptEvent:setState|setState]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;Return&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;if&amp;lt;/span&amp;gt; ( cancelDrop ) {&lt;br /&gt;
             ClearRequest();&lt;br /&gt;
             [[ScriptEvent:setState|setState]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;Return&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         sys.[[ScriptEvent:waitFrame|waitFrame]]();&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_jotun|vehicle_jotun]]::Drop() {&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptClass:player|player]] p = sys.[[ScriptEvent:getClient|getClient]]( deployPlayerIndex );&lt;br /&gt;
     item = sys.[[ScriptEvent:spawnType|spawnType]]( itemIndex );&lt;br /&gt;
     item.vSetDeployableOwner( p );&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptClass:deployable_base|deployable_base]] deployable = item;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( deployable != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
         p.SetTargetingItem( item );&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; statName = item.[[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;stat_name&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; ( statName != &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;&amp;quot;&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
         sys.[[ScriptEvent:increaseStatInt|increaseStatInt]]( sys.[[ScriptEvent:allocStatInt|allocStatInt]]( statName + &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;_deployed&amp;quot;&amp;lt;/span&amp;gt; ), deployPlayerIndex, 1 );&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;( PerformDrop() ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; temp = [[ScriptEvent:getWorldOrigin|getWorldOrigin]]();&lt;br /&gt;
 &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;
         angles_y = itemRotation;&lt;br /&gt;
 &lt;br /&gt;
         item.[[ScriptEvent:setOrigin|setOrigin]]( temp - ( g_vectorDown * 256 ) );&lt;br /&gt;
         item.[[ScriptEvent:setAngles|setAngles]]( angles );&lt;br /&gt;
         item.[[ScriptEvent:setGameTeam|setGameTeam]]( [[ScriptEvent:getGameTeam|getGameTeam]]() );&lt;br /&gt;
         item.vSetManualDeploy();&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; G_Jotun_DropItem( deployPlayerIndex, item, targetPos );&lt;br /&gt;
     } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; {                &lt;br /&gt;
         item.[[ScriptEvent:remove|remove]]();&lt;br /&gt;
         ClearRequest();&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     deployPlayerIndex = -1;&lt;br /&gt;
     dropped = true;&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptEvent:setState|setState]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;Return&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_jotun|vehicle_jotun]]::Return() {&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;
         returnTime = sys.[[ScriptEvent:getTime|getTime]]();&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;while&amp;lt;/span&amp;gt; ( returnTime == -1 ) {&lt;br /&gt;
             sys.[[ScriptEvent:waitFrame|waitFrame]]();&lt;br /&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; numPoints = [[ScriptEvent:pathGetNumPoints|pathGetNumPoints]]();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( numPoints &amp;lt; 2 ) {&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; pathSpeed = [[ScriptEvent:getFloatKeyWithDefault|getFloatKeyWithDefault]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;path_speed&amp;quot;&amp;lt;/span&amp;gt;, 1024 );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; pathLength = returnPathLength;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; leadTime = 2.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; flyOffset = '0 0 0';&lt;br /&gt;
     flyOffset_z = JOTUN_FLY_HEIGHT;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; endPoint = [[ScriptEvent:pathGetPoint|pathGetPoint]]( numPoints - 1 ) + flyOffset;&lt;br /&gt;
     [[ScriptEvent:startJotunReturn|startJotunReturn]]( returnTime, pathSpeed, leadTime );&lt;br /&gt;
 &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;
         DoSound();&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; time = sys.[[ScriptEvent:getTime|getTime]]() - returnTime;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; position = time * pathSpeed;&lt;br /&gt;
         [[ScriptEvent:setCoverage|setCoverage]]( ( pathLength - 1 - position ) / pathSpeed );&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;if&amp;lt;/span&amp;gt; ( position &amp;gt; pathLength ) {&lt;br /&gt;
                 [[ScriptEvent:remove|remove]]();&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         sys.[[ScriptEvent:waitFrame|waitFrame]]();&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_jotun|vehicle_jotun]]::DoSound() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt;( !playingFlySound ) {&lt;br /&gt;
         playingFlySound = true;&lt;br /&gt;
         [[ScriptEvent:fadeSound|fadeSound]]( SND_VEHICLE_IDLE, -60.f, 0.f );&lt;br /&gt;
         [[ScriptEvent:startSound|startSound]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;snd_flyby_far&amp;quot;&amp;lt;/span&amp;gt;, SND_VEHICLE_IDLE );&lt;br /&gt;
         [[ScriptEvent:fadeSound|fadeSound]]( SND_VEHICLE_IDLE, 0.f, 2.f );&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// check distance to local player&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;( !playedFlyBySound ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; p = sys.[[ScriptEvent:getLocalPlayer|getLocalPlayer]]();&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;vector&amp;lt;/span&amp;gt; playerOrigin = p.[[ScriptEvent:getWorldOrigin|getWorldOrigin]]();&lt;br /&gt;
             playerOrigin -= [[ScriptEvent:getWorldOrigin|getWorldOrigin]]();&lt;br /&gt;
             playerOrigin_z = 0.f;&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:vecLengthSquared|vecLengthSquared]]( playerOrigin ) &amp;lt; flyOverSoundRange ) {&lt;br /&gt;
                 sys.[[ScriptEvent:startSoundDirect|startSoundDirect]]( [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;snd_flyby&amp;quot;&amp;lt;/span&amp;gt; ), SND_VEHICLE_IDLE );&lt;br /&gt;
                 playedFlyBySound = true;&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:vehicle_jotun|vehicle_jotun]]::OnSetDeploymentParms( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; deploymentItemIndex, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; playerIndex, &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;float&amp;lt;/span&amp;gt; rotation ) {    &lt;br /&gt;
 &lt;br /&gt;
     deployPlayerIndex    = playerIndex;&lt;br /&gt;
     targetPos            = target;&lt;br /&gt;
     itemRotation        = sys.[[ScriptEvent:angleNormalize180|angleNormalize180]]( rotation );&lt;br /&gt;
     itemIndex            = deploymentItemIndex;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt;( !PerformDrop() ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// player has switched sides since calling in the deployable&amp;lt;/span&amp;gt;&lt;br /&gt;
         ClearRequest();&lt;br /&gt;
         [[ScriptEvent:remove|remove]]();&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;
     [[ScriptClass:player|player]] p = sys.[[ScriptEvent:getClient|getClient]]( playerIndex );&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptEvent:setState|setState]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;Deliver&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_jotun|vehicle_jotun]]::OnKilled( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;entity&amp;lt;/span&amp;gt; inflictor, &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; damage, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; direction, &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; location ) {&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_jotun|vehicle_jotun]]::KillAllInBoundingBox() {&lt;br /&gt;
     sys.[[ScriptEvent:threadName|threadName]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;KillAllInBoundingBox_&amp;quot;&amp;lt;/span&amp;gt; + [[ScriptEvent:getName|getName]]() );&lt;br /&gt;
 &lt;br /&gt;
     sys.[[ScriptEvent:wait|wait]]( 3 );&lt;br /&gt;
 &lt;br /&gt;
     eachFrame {&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; mins = [[ScriptEvent:getAbsMins|getAbsMins]]();&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; maxs = [[ScriptEvent:getAbsMaxs|getAbsMaxs]]();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;//		sys.debugBounds( '1 1 1', mins, maxs, 0.f );&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; count = [[ScriptEvent:entitiesInBounds|entitiesInBounds]]( mins, maxs, MASK_ALL, 1 );&lt;br /&gt;
         count = [[ScriptEvent:filterEntitiesByClass|filterEntitiesByClass]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;sdTransport&amp;quot;&amp;lt;/span&amp;gt;, 1 );&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;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt;( ent == &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;self&amp;lt;/span&amp;gt; || ent == item || ent == &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&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;( !ent.vIgnoreMagogCollsion() ) {&lt;br /&gt;
                 ent.[[ScriptEvent:applyDamage|applyDamage]]( $null_entity, self, '0 1 0', GetDamage( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;damage_magog_npc_collide&amp;quot;&amp;lt;/span&amp;gt; ), 60000.f, &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;
 }&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:vehicle_jotun|vehicle_jotun]]::vIgnoreMagogCollsion() {&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;boolean&amp;lt;/span&amp;gt; [[ScriptClass:vehicle_jotun|vehicle_jotun]]::PerformDrop() {&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:vehicle_jotun|vehicle_jotun]]::vCancelDeployForPlayer( &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; playerIndex ) {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( playerIndex != deployPlayerIndex ) {&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:green&amp;quot;&amp;gt;// deployables already gone&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; ( dropped ) {&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;
     [[ScriptClass:player|player]] p = sys.[[ScriptEvent:getClient|getClient]]( deployPlayerIndex );&lt;br /&gt;
     objManager.PlaySoundForPlayer( [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;snd_cancel_deploy&amp;quot;&amp;lt;/span&amp;gt; ), p );&lt;br /&gt;
 &lt;br /&gt;
     ClearRequest();&lt;br /&gt;
     [[ScriptEvent:setState|setState]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;Return&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Wizz</name></author>
		
	</entry>
</feed>