1 #using scripts\codescripts\struct;
3 #using scripts\shared\clientfield_shared;
4 #using scripts\shared\system_shared;
5 #using scripts\shared\util_shared;
6 #using scripts\shared\vehicle_shared;
8 #insert scripts\shared\shared.gsh;
9 #insert scripts\shared\version.gsh;
10 #insert scripts\mp\killstreaks\_killstreaks.gsh;
13 #using_animtree ( "mp_emp_power_core" );
15 #precache( "client_fx", "killstreaks/fx_emp_core" );
20 #define EMP_UPDATE_DISTANCE_DELAY 0.1
21 #define EMP_UPDATE_DISTANCE_NO_EMP_DELAY 0.7
36 level endon(
"disconnect" );
38 if ( !isdefined( level.emp_killstreaks ) )
39 level.emp_killstreaks = [];
43 has_at_least_one_active_enemy_turret =
false;
44 ArrayRemoveValue( level.emp_killstreaks, undefined );
45 local_players = GetLocalPlayers();
47 foreach( local_player
in local_players )
49 if ( local_player IsLocalPlayer() ==
false )
54 if ( isdefined( closest_enemy_emp ) )
56 has_at_least_one_active_enemy_turret =
true;
58 localClientNum = local_player GetLocalClientNumber();
69 closest_emp = undefined;
70 closest_emp_distance_squared = 99999999;
72 foreach( emp
in level.emp_killstreaks )
74 if ( emp.owner == local_player || emp.team == local_player.team )
77 distance_squared = DistanceSquared( local_player.origin, emp.origin );
78 if ( distance_squared < closest_emp_distance_squared )
81 closest_emp_distance_squared = distance_squared;
90 if ( !isdefined( localClientNum ) )
93 distance_to_closest_enemy_emp_ui_model = GetUIModel( GetUIModelForController( localClientNum ),
"distanceToClosestEnemyEmpKillstreak" );
95 if ( isdefined( distance_to_closest_enemy_emp_ui_model ) )
96 SetUIModelValue( distance_to_closest_enemy_emp_ui_model, new_value );
101 function emp_turret_init( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
103 self endon(
"entityshutdown");
108 self UseAnimTree( #animtree );
109 self SetAnimRestart( %o_turret_emp_core_deploy, 1.0, 0.0, 0.0 );
110 self SetAnimTime( %o_turret_emp_core_deploy, 0.0 );
115 self endon(
"kill_fx_cleanup");
116 self waittill(
"entityshutdown" );
117 StopFx( localClientNum, handle );
122 self endon(
"entityshutdown");
126 if ( !isdefined(
self) )
135 self notify(
"kill_fx_cleanup");
136 if ( isdefined(
self.fxHandle ) )
138 StopFx( localClientNum,
self.fxHandle );
139 self.fxHandle = undefined;
146 self endon(
"entityshutdown");
148 self UseAnimTree( #animtree );
149 self SetAnimRestart( %o_turret_emp_core_deploy, 1.0, 0.0, 1.0 );
150 length = GetAnimLength( %o_turret_emp_core_deploy );
153 self UseAnimTree( #animtree );
154 self SetAnim( %o_turret_emp_core_spin, 1.0 );
155 self.fxHandle = PlayFxOnTag( localClientNum,
"killstreaks/fx_emp_core",
self,
EMP_FX_TAG );
160 self SetAnim( %o_turret_emp_core_deploy, 0.0 );