1 #using scripts\codescripts\struct;
3 #using scripts\shared\clientfield_shared;
4 #using scripts\shared\system_shared;
6 #insert scripts\shared\shared.gsh;
7 #insert scripts\shared\version.gsh;
9 #precache( "client_fx", "killstreaks/fx_hrpy_swrm_exhaust_trail_close" );
11 #using_animtree( "mp_missile_drone" );
13 #namespace missile_swarm;
19 level._effect[
"swarm_tail"] =
"killstreaks/fx_hrpy_swrm_exhaust_trail_close";
24 function swarm_start( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
26 player = GetLocalPlayer( localClientNum );
28 if ( !isdefined( player ) )
33 if ( player GetInKillcam( localClientNum ) )
38 if ( IsDemoPlaying() )
43 if ( newVal && newVal != oldVal && newval != 2 )
45 player thread
swarm_think( localClientNum, getmapcenter() );
49 level notify(
"missile_swarm_stop" );
51 else if ( newVal == 2 )
53 level notify(
"missile_emp_death" );
54 level notify(
"missile_swarm_stop" );
60 level endon(
"missile_swarm_stop" );
61 self endon(
"entityshutdown" );
63 self.missile_swarm_count = 0;
64 self.missile_swarm_max = 12;
66 level thread
swarm_sound( localClientNum, sound_origin );
70 assert(
self.missile_swarm_count >= 0 );
72 if (
self.missile_swarm_count >
self.missile_swarm_max )
78 count = RandomIntRange( 1, 3 );
79 self.missile_swarm_count += count;
81 for ( i = 0; i < count; i++ )
86 wait( (
self.missile_swarm_count /
self.missile_swarm_max ) );
93 upVector = ( 0, 0, RandomIntRange( 1000, 1300 ) );
95 yaw = RandomIntRange( 0, 360 );
96 angles = ( 0, yaw, 0 );
97 forward = AnglesToForward( angles );
99 origin =
self.origin + upVector + forward * dist * -1;
100 end =
self.origin + upVector + forward * dist;
102 rocket =
spawn( localClientNum, origin,
"script_model" );
103 rocket SetModel(
"veh_t6_drone_hunterkiller_viewmodel" );
105 rocket UseAnimTree( #animtree );
106 rocket SetAnim( %o_drone_hunter_launch, 1.0, 0.0, 1.0 );
114 level endon(
"missile_emp_death" );
116 wait( RandomFloatRange( 0.5, 1 ) );
118 PlayFxOnTag( localClientNum, level._effect[
"swarm_tail"],
self,
"tag_origin" );
120 direction =
end -
self.origin;
121 self RotateTo( vectortoangles( direction ), 0.05 );
122 self waittill(
"rotatedone" );
124 self MoveTo(
end, RandomFloatRange( 12, 18 ) );
125 self waittill(
"movedone" );
127 if ( isdefined( player ) )
129 player.missile_swarm_count--;
137 level endon(
"missile_swarm_stop" );
138 entity =
spawn( localClientNum, origin,
"script_model" );
143 entity PlayLoopSound(
"veh_harpy_drone_swarm_close__lp", 1 );
148 level waittill(
"missile_swarm_stop" );
149 self StopAllLoopSounds( 1 );
157 self endon(
"death" );
159 level waittill(
"missile_emp_death" );
161 if( isdefined(
self ) )