‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_emp.gsc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\mp\_util;
4 #using scripts\mp\gametypes\_hostmigration;
5 #using scripts\mp\killstreaks\_airsupport;
6 #using scripts\mp\killstreaks\_emp;
7 #using scripts\mp\killstreaks\_killstreakrules;
8 #using scripts\mp\killstreaks\_killstreak_bundles;
9 #using scripts\mp\killstreaks\_killstreak_hacking;
10 #using scripts\mp\killstreaks\_killstreaks;
11 #using scripts\mp\killstreaks\_placeables;
12 #using scripts\mp\teams\_teams;
13 #using scripts\mp\teams\_teams;
14 
15 #using scripts\shared\callbacks_shared;
16 #using scripts\shared\challenges_shared;
17 #using scripts\shared\clientfield_shared;
18 #using scripts\shared\hostmigration_shared;
19 #using scripts\shared\killstreaks_shared;
20 #using scripts\shared\killstreaks_shared;
21 #using scripts\shared\popups_shared;
22 #using scripts\shared\turret_shared;
23 #using scripts\shared\util_shared;
24 #using scripts\shared\vehicle_shared;
25 #using scripts\shared\weapons\_weaponobjects;
26 #using scripts\shared\scoreevents_shared;
27 
28 #insert scripts\mp\_hacker_tool.gsh;
29 #insert scripts\mp\killstreaks\_killstreaks.gsh;
30 #insert scripts\shared\shared.gsh;
31 #insert scripts\shared\version.gsh;
32 
33 #using_animtree ( "mp_emp_power_core" );
34 
35 #precache( "string", "KILLSTREAK_EARNED_EMP" );
36 #precache( "string", "KILLSTREAK_EMP_NOT_AVAILABLE" );
37 #precache( "string", "KILLSTREAK_EMP_INBOUND" );
38 #precache( "string", "KILLSTREAK_EMP_HACKED" );
39 #precache( "string", "KILLSTREAK_DESTROYED_EMP" );
40 #precache( "triggerstring", "KILLSTREAK_EMP_PLACE_TURRET_HINT" );
41 #precache( "triggerstring", "KILLSTREAK_EMP_INVALID_TURRET_LOCATION" );
42 #precache( "triggerstring", "KILLSTREAK_EMP_TURRET_PICKUP" );
43 #precache( "string", "mpl_killstreak_emp_activate" );
44 
45 #precache( "fx", "killstreaks/fx_emp_exp_death" );
46 
47 #define EMP_NAME "emp"
48 #define EMP_VEHICLE_NAME "emp_turret"
49 
50 #namespace emp;
51 
52 function ‪init()
53 {
54  bundle = ‪struct::get_script_bundle( "killstreak", "killstreak_emp" );
55  level.empKillstreakBundle = bundle;
56 
57  level.ActivePlayerEMPs = [];
58  level.ActiveEMPs = [];
59  foreach( team in level.teams )
60  {
61  level.ActiveEMPs[ team ] = false;
62  }
63 
64  level.enemyEMPActiveFunc = &‪EnemyEMPActive;
65 
66  level thread ‪EMPTracker();
67 
68  ‪killstreaks::register( ‪EMP_NAME, ‪EMP_NAME, "killstreak_emp", "emp_used", &‪ActivateEMP );
69  ‪killstreaks::register_strings( ‪EMP_NAME, &"KILLSTREAK_EARNED_EMP", &"KILLSTREAK_EMP_NOT_AVAILABLE", &"KILLSTREAK_EMP_INBOUND", undefined, &"KILLSTREAK_EMP_HACKED", false );
70  ‪killstreaks::register_dialog( ‪EMP_NAME, "mpl_killstreak_emp_activate", "empDialogBundle", undefined, "friendlyEmp", "enemyEmp", "enemyEmpMultiple", "friendlyEmpHacked", "enemyEmpHacked", "requestEmp", "threatEmp" );
71 
72  ‪clientfield::register( "scriptmover", "emp_turret_init", ‪VERSION_SHIP, 1, "int" ); // re-export model in close position to save this clientfield
73  ‪clientfield::register( "vehicle", "emp_turret_deploy", ‪VERSION_SHIP, 1, "int" );
74 
75  spinAnim = %o_turret_emp_core_spin;
76  deployAnim = %o_turret_emp_core_deploy;
77 
80  vehicle::add_main_callback( ‪EMP_VEHICLE_NAME, &‪InitTurretVehicle );
81 }
82 
84 {
85  turretVehicle = self;
86 
88  turretVehicle.damageTaken = 0;
89  turretVehicle.health = turretVehicle.maxhealth;
90 
91  turretVehicle ‪clientfield::set( "enemyvehicle", ‪ENEMY_VEHICLE_ACTIVE );
92  turretVehicle.soundmod = "drone_land"; // TODO: update this to the correct value
93 
94  turretVehicle.overrideVehicleDamage = &‪OnTurretDamage;
95  turretVehicle.overrideVehicleDeath = &‪OnTurretDeath;
96 
97  Target_Set( turretVehicle, ( 0, 0, 36 ) );
98 }
99 
101 {
102  self endon( "disconnect" );
103 
104  self ‪UpdateEMP();
105 }
106 
108 {
109  self.entNum = self getEntityNumber();
110  level.ActivePlayerEMPs[ self.entNum ] = false;
111 }
112 
113 function ‪ActivateEMP()
114 {
115  player = self;
116 
117  killstreakId = player ‪killstreakrules::killstreakStart( ‪EMP_NAME, player.team, false, false );
118  if( killstreakId == ‪INVALID_KILLSTREAK_ID )
119  {
120  return false;
121  }
122 
123  bundle = level.empKillstreakBundle;
124 
125  empBase = player ‪placeables::SpawnPlaceable( ‪EMP_NAME, killstreakId, &‪OnPlaceEMP, &‪OnCancelPlacement, undefined, &‪OnShutdown, undefined, undefined,
126  ‪EMP_MODEL, ‪EMP_VALID_PLACEMENT_MODEL, ‪EMP_INVALID_PLACEMENT_MODEL, true, "", undefined, undefined, 0,
127  bundle.ksPlaceableHint, bundle.ksPlaceableInvalidLocationHint );
128 
129  empBase thread ‪util::ghost_wait_show_to_player( player );
130  empBase.otherModel thread ‪util::ghost_wait_show_to_others( player );
131  empBase ‪clientfield::set( "emp_turret_init", 1 );
132  empBase.otherModel ‪clientfield::set( "emp_turret_init", 1 );
133 
134  event = empBase ‪util::waittill_any_return( "placed", "cancelled", "death", "disconnect" );
135  if( event != "placed" )
136  {
137  return false;
138  }
139 
140  return true;
141 }
142 
143 function ‪OnPlaceEMP( emp )
144 {
145  player = self;
146  assert( IsPlayer( player ) );
147  assert( !isdefined( emp.vehicle ) );
148 
149  emp.vehicle = SpawnVehicle( ‪EMP_VEHICLE_NAME, emp.origin, emp.angles );
150  emp.vehicle thread ‪util::ghost_wait_show( 0.05 );
151 
152  emp.vehicle.killstreakType = emp.killstreakType; // need to do this for enable_hacking
153 
154  emp.vehicle.owner = player;
155  emp.vehicle SetOwner( player );
156  emp.vehicle.ownerEntNum = player.entNum;
157  emp.vehicle.parentStruct = emp;
158 
159  player.EMPTime = GetTime();
160  player ‪killstreaks::play_killstreak_start_dialog( ‪EMP_NAME, player.pers["team"], emp.killstreakId );
161  player AddWeaponStat( GetWeapon( ‪EMP_NAME ), "used", 1 );
163  emp.vehicle ‪killstreaks::configure_team( ‪EMP_NAME, emp.killstreakId, player );
166  if ( IsSentient( emp.vehicle ) == false )
167  emp.vehicle MakeSentient(); // so other sentients will consider this as a potential enemy
168 
169  emp.vehicle ‪vehicle::disconnect_paths( 0, false );
170 
171  // perform deploy on separate thread because of the wait delays
172  // always complete OnPlace() in same frame for killstreak accounting; otherwise exploits can happen
173  player thread ‪DeployEmpTurret( emp );
174 }
175 
176 function ‪DeployEmpTurret( emp )
177 {
178  player = self;
179 
180  player endon( "disconnect" );
181  player endon( "joined_team" );
182  player endon( "joined_spectators" );
183 
184  emp endon( "death" );
185 
186  // deploy emp
187  emp.vehicle UseAnimTree( #animtree );
188  emp.vehicle SetAnim( %o_turret_emp_core_deploy, 1.0 );
189  length = GetAnimLength( %o_turret_emp_core_deploy );
190  emp.vehicle ‪clientfield::set( "emp_turret_deploy", 1 );
191  wait length * 0.75;
192 
193  // fire emp pulse
194  emp.vehicle thread ‪PlayEMPFx();
195  emp.vehicle playsound( "mpl_emp_turret_activate" );
196  emp.vehicle SetAnim( %o_turret_emp_core_spin, 1.0 );
197 
198  // Jam Enemies and destroy other scorestreaks!
199  player thread ‪EMP_JamEnemies( emp, false );
200 
201  wait length * 0.25;
202  emp.vehicle ClearAnim( %o_turret_emp_core_deploy, 0 ); // stop deploy anim
203 }
204 
205 function ‪HackedCallbackPre( hacker )
206 {
207  emp_vehicle = self;
208  emp_vehicle ‪clientfield::set( "enemyvehicle", ENEMY_VEHICLE_HACKED );
209  emp_vehicle.parentStruct ‪killstreaks::configure_team( ‪EMP_NAME, emp_vehicle.parentStruct.killstreakId, hacker, undefined, undefined, undefined, true );
210 }
211 
212 function ‪HackedCallbackPost( hacker )
213 {
214  emp_vehicle = self;
215  hacker thread ‪EMP_JamEnemies( emp_vehicle.parentStruct, true );
216 }
217 
218 function ‪DoneEMPFx( fxTagOrigin )
219 {
220  ‪PlayFx( "killstreaks/fx_emp_exp_death", fxTagOrigin );
221  playsoundatposition( "mpl_emp_turret_deactivate", fxTagOrigin );
222 }
223 
224 function ‪PlayEMPFx()
225 {
226  emp_vehicle = self;
227  emp_vehicle playloopsound( "mpl_emp_turret_loop_close" );
228 
229  ‪WAIT_SERVER_FRAME; // workaround for a bug where the fx would not play on subsequent deployment of power cores
230 }
231 
232 function ‪on_timeout()
233 {
234  emp = self;
235 
236  if ( isdefined( emp.vehicle ) )
237  {
238  fxTagOrigin = emp.vehicle GetTagorigin( ‪EMP_FX_TAG );
239  ‪DoneEMPFx( fxTagOrigin );
240  }
241  ‪ShutdownEMP( emp );
242 }
243 
244 function ‪OnCancelPlacement( emp )
245 {
246  ‪StopEMP( emp.team, emp.ownerEntNum, emp.originalTeam, emp.killstreakId );
247 }
248 
249 function ‪OnTurretDamage( eInflictor, attacker, iDamage, iDFlags, sMeansOfDeath, weapon, vPoint, vDir, sHitLoc, vDamageOrigin, psOffsetTime, damageFromUnderneath, modelIndex, partName, vSurfaceNormal )
250 {
251  empDamage = 0; // emp power core is not affected by emp damage
252 
253  iDamage = self ‪killstreaks::OnDamagePerWeapon( ‪EMP_NAME, attacker, iDamage, iDFlags, sMeansOfDeath, weapon, self.maxhealth, undefined, self.maxhealth*0.4, undefined, empDamage, undefined, true, 1.0 );
254  self.damageTaken += iDamage;
255 
256  // turret death
257  if ( self.damageTaken > self.maxHealth && !isdefined( self.will_die ) )
258  {
259  self.will_die = true;
260  self thread ‪OnDeathAfterFrameEnd( attacker, weapon );
261  }
262 
263  return iDamage;
264 }
265 
266 function ‪OnTurretDeath( inflictor, attacker, iDamage, sMeansOfDeath, weapon, vDir, sHitLoc, psOffsetTime )
267 {
268  // currently, OnTurretDeath is not getting called, so we call OnDeath directly from OnTurretDamage
269  self ‪OnDeath( attacker, weapon );
270 }
271 
272 function ‪OnDeathAfterFrameEnd( attacker, weapon )
273 {
274  waittillframeend;
275 
276  if ( isdefined( self ) )
277  {
278  self ‪OnDeath( attacker, weapon );
279  }
280 }
281 
282 function ‪OnDeath( attacker, weapon )
283 {
284  emp_vehicle = self;
285 
286  fxTagOrigin = self GetTagorigin( ‪EMP_FX_TAG );
287  ‪DoneEMPFx( fxTagOrigin );
288  if ( isdefined( attacker ) && IsPlayer( attacker ) && ( !isdefined( emp_vehicle.owner ) || emp_vehicle.owner ‪util::IsEnemyPlayer( attacker ) ) )
289  {
290  attacker ‪challenges::destroyScoreStreak( weapon, false, true, false );
292  attacker AddPlayerStat( "destroy_turret", 1 );
293  attacker AddWeaponStat( weapon, "destroy_turret", 1 );
294  ‪scoreevents::processScoreEvent( "destroyed_emp", attacker, emp_vehicle.owner, weapon );
295  LUINotifyEvent( &"player_callout", 2, &"KILLSTREAK_DESTROYED_EMP", attacker.entnum );
296  }
297 
298  if ( isdefined( attacker ) && isdefined( emp_vehicle.owner ) && ( attacker != emp_vehicle.owner ) )
299  emp_vehicle ‪killstreaks::play_destroyed_dialog_on_owner( ‪EMP_NAME, emp_vehicle.parentStruct.killstreakId );
300 
301  ‪ShutdownEMP( emp_vehicle.parentStruct );
302 }
303 
304 function ‪OnShutdown( emp )
305 {
306  ‪ShutdownEMP( emp );
307 }
308 
309 function ‪ShutdownEMP( emp )
310 {
311  if (!isdefined( emp ) )
312  return;
313 
314  if ( isdefined( emp.already_shutdown ) )
315  return;
316 
317  emp.already_shutdown = true;
318 
319  if ( isdefined( emp.vehicle ) )
320  emp.vehicle ‪clientfield::set( "emp_turret_deploy", 0 );
321 
322  ‪StopEMP( emp.team, emp.OwnerEntNum, emp.originalTeam, emp.killstreakId );
323 
324  if ( isdefined( emp.otherModel ) )
325  {
326  emp.otherModel delete();
327  }
328 
329  if ( isdefined( emp.vehicle ) )
330  {
331  emp.vehicle delete();
332  }
333 
334  emp delete();
335 }
336 
337 function ‪StopEMP( currentTeam, currentOwnerEntNum, originalTeam, killstreakID )
338 {
339  ‪StopEMPEffect( currentTeam, currentOwnerEntNum );
340  ‪StopEMPRule( originalTeam, killstreakID );
341 }
342 
343 function ‪StopEMPEffect( team, ownerEntNum )
344 {
345  level.ActiveEMPs[ team ] = false;
346  level.ActivePlayerEMPs[ ownerEntNum ] = false;
347  level notify ( "emp_updated" );
348 }
349 
350 function ‪StopEMPRule( killstreakOriginalTeam, killstreakId )
351 {
352  ‪killstreakrules::killstreakStop( ‪EMP_NAME, killstreakOriginalTeam, killstreakId );
353 }
354 
355 function ‪HasActiveEMP()
356 {
357  return ( level.ActivePlayerEMPs[ self.entNum ] );
358 }
359 
360 function ‪TeamHasActiveEMP( team )
361 {
362  return ( level.ActiveEMPs[ team ] > 0 );
363 }
364 
366 {
367  if( level.teamBased )
368  {
369  foreach( team in level.teams )
370  {
371  if( ( team != self.team ) && ‪TeamHasActiveEMP( team ) )
372  {
373  return true;
374  }
375  }
376  }
377  else
378  {
379  enemies = self ‪teams::GetEnemyPlayers();
380  foreach( player in enemies )
381  {
382  if( player ‪HasActiveEMP() )
383  {
384  return true;
385  }
386  }
387  }
388 
389  return false;
390 }
391 
393 {
394  enemies = self ‪teams::GetEnemyPlayers();
395  foreach( player in enemies )
396  {
397  if( player ‪HasActiveEMP() )
398  {
399  return player;
400  }
401  }
402 
403  return undefined;
404 }
405 
406 function ‪EMP_JamEnemies( empEnt, hacked )
407 {
408  level endon ( "game_ended" );
409  self endon( "killstreak_hacked" );
410 
411  if( level.teamBased )
412  {
413  if ( hacked )
414  {
415  level.ActiveEMPs[ empEnt.OriginalTeam ] = false;
416  }
417  level.ActiveEMPs[ self.team ] = true;
418  }
419 
420  if( hacked )
421  {
422  level.ActivePlayerEMPs[ empEnt.originalOwnerEntNum ] = false;
423  }
424  level.ActivePlayerEMPs[ self.entNum ] = true;
425  level notify( "emp_updated" );
426  level notify( "emp_deployed" );
427 
428  VisionSetNaked( "flash_grenade", 1.5 );
429  wait ( 0.1 );
430  VisionSetNaked( "flash_grenade", 0 );
431  VisionSetNaked( GetDvarString( "mapname" ), 5.0 );
432 
433  empKillstreakWeapon = GetWeapon( "emp" );
434  empKillstreakWeapon.isEmpKillstreak = true;
435  level ‪killstreaks::DestroyOtherTeamsActiveVehicles( self, empKillstreakWeapon );
436  level ‪killstreaks::DestroyOtherTeamsEquipment( self, empKillstreakWeapon );
438 }
439 
440 function ‪EMPTracker()
441 {
442  level endon ( "game_ended" );
443 
444  while( true )
445  {
446  level waittill( "emp_updated" );
447 
448  foreach ( player in level.players )
449  {
450  player ‪UpdateEMP();
451  }
452  }
453 }
454 
455 function ‪UpdateEMP()
456 {
457  player = self;
458 
459  enemy_emp_active = player ‪EnemyEMPActive();
460  player setEMPJammed( enemy_emp_active );
461 
462  ‪emped = player isEMPJammed(); // ask because a perk may stop it
463  player ‪clientfield::set_to_player( "empd_monitor_distance", ‪emped );
464 
465  if( ‪emped )
466  {
467  player notify( "emp_jammed" );
468  }
469 }
‪processScoreEvent
‪function processScoreEvent(event, player, victim, weapon)
Definition: scoreevents_shared.gsc:19
‪OnCancelPlacement
‪function OnCancelPlacement(emp)
Definition: _emp.gsc:244
‪WaitForTimeout
‪function WaitForTimeout(killstreak, duration, callback, endCondition1, endCondition2, endCondition3)
Definition: _killstreaks.gsc:2913
‪EMP_INVALID_PLACEMENT_MODEL
‪#define EMP_INVALID_PLACEMENT_MODEL
Definition: _killstreaks.gsh:199
‪PlayEMPFx
‪function PlayEMPFx()
Definition: _emp.gsc:224
‪InitTurretVehicle
‪function InitTurretVehicle()
Definition: _emp.gsc:83
‪set_to_player
‪function set_to_player(str_field_name, n_value)
Definition: clientfield_shared.gsc:58
‪StopEMPEffect
‪function StopEMPEffect(team, ownerEntNum)
Definition: _emp.gsc:343
‪OnPlayerConnect
‪function OnPlayerConnect()
Definition: _emp.gsc:107
‪VERSION_SHIP
‪#define VERSION_SHIP
Definition: version.gsh:36
‪waittill_any_return
‪function waittill_any_return(string1, string2, string3, string4, string5, string6, string7)
Definition: util_shared.csc:212
‪EMP_FX_TAG
‪#define EMP_FX_TAG
Definition: _killstreaks.gsh:200
‪play_killstreak_start_dialog
‪function play_killstreak_start_dialog(killstreakType, team, killstreakId)
Definition: _killstreaks.gsc:1905
‪init
‪function init()
Definition: _emp.gsc:52
‪DestroyOtherTeamsEquipment
‪function DestroyOtherTeamsEquipment(attacker, weapon)
Definition: killstreaks_shared.gsc:180
‪destroyScoreStreak
‪function destroyScoreStreak(weapon, playerControlled, groundBased, countAsKillstreakVehicle=true)
Definition: challenges_shared.gsc:784
‪OnDamagePerWeapon
‪function OnDamagePerWeapon(killstreak_ref, attacker, damage, flags, type, weapon, max_health, destroyed_callback, low_health, low_health_callback, emp_damage, emp_callback, allow_bullet_damage, chargeLevel)
Definition: _killstreaks.gsc:2667
‪ShutdownEMP
‪function ShutdownEMP(emp)
Definition: _emp.gsc:309
‪OnPlayerSpawned
‪function OnPlayerSpawned()
Definition: _emp.gsc:100
‪ENEMY_VEHICLE_ACTIVE
‪#define ENEMY_VEHICLE_ACTIVE
Definition: _hacker_tool.gsh:2
‪EMP_VALID_PLACEMENT_MODEL
‪#define EMP_VALID_PLACEMENT_MODEL
Definition: _killstreaks.gsh:198
‪HackedCallbackPre
‪function HackedCallbackPre(hacker)
Definition: _emp.gsc:205
‪EnemyEMPActive
‪function EnemyEMPActive()
Definition: _emp.gsc:365
‪EnemyEMPOwner
‪function EnemyEMPOwner()
Definition: _emp.gsc:392
‪UpdateEMP
‪function UpdateEMP()
Definition: _emp.gsc:455
‪StopEMPRule
‪function StopEMPRule(killstreakOriginalTeam, killstreakId)
Definition: _emp.gsc:350
‪DoneEMPFx
‪function DoneEMPFx(fxTagOrigin)
Definition: _emp.gsc:218
‪OnDeath
‪function OnDeath(attacker, weapon)
Definition: _emp.gsc:282
‪DisplayKillstreakTeamMessageToAll
‪function DisplayKillstreakTeamMessageToAll(killstreak, player)
Definition: popups_shared.gsc:91
‪IsEnemyPlayer
‪function IsEnemyPlayer(player)
Definition: util_shared.csc:1220
‪SpawnPlaceable
‪function SpawnPlaceable(killstreakRef, killstreakId, onPlaceCallback, onCancelCallback, onMoveCallback, onShutdownCallback, onDeathCallback, onEmpCallback, model, validModel, invalidModel, spawnsVehicle, pickupString, timeout, health, empDamage, placeHintString, invalidLocationHintString)
Definition: _placeables.gsc:20
‪HackedCallbackPost
‪function HackedCallbackPost(hacker)
Definition: _emp.gsc:212
‪on_spawned
‪function on_spawned(func, obj)
Definition: callbacks_shared.csc:245
‪EMP_NAME
‪#define EMP_NAME
Definition: _emp.gsc:47
‪play_destroyed_dialog_on_owner
‪function play_destroyed_dialog_on_owner(killstreakType, killstreakId)
Definition: _killstreaks.gsc:1982
‪OnTurretDeath
‪function OnTurretDeath(inflictor, attacker, iDamage, sMeansOfDeath, weapon, vDir, sHitLoc, psOffsetTime)
Definition: _emp.gsc:266
‪ghost_wait_show
‪function ghost_wait_show(wait_time=0.1)
Definition: _util.gsc:916
‪ghost_wait_show_to_player
‪function ghost_wait_show_to_player(player, wait_time=0.1, self_endon_string1)
Definition: _util.gsc:937
‪OnShutdown
‪function OnShutdown(emp)
Definition: _emp.gsc:304
‪TeamHasActiveEMP
‪function TeamHasActiveEMP(team)
Definition: _emp.gsc:360
‪EMP_DURATION
‪#define EMP_DURATION
Definition: _killstreaks.gsh:201
‪register_dialog
‪function register_dialog(killstreakType, informDialog, taacomDialogBundleKey, pilotDialogArrayKey, startDialogKey, enemyStartDialogKey, enemyStartMultipleDialogKey, hackedDialogKey, hackedStartDialogKey, requestDialogKey, threatDialogKey, isInventory)
Definition: _killstreaks.gsc:239
‪INVALID_KILLSTREAK_ID
‪#define INVALID_KILLSTREAK_ID
Definition: _killstreaks.gsh:2
‪StopEMP
‪function StopEMP(currentTeam, currentOwnerEntNum, originalTeam, killstreakID)
Definition: _emp.gsc:337
‪EMP_VEHICLE_NAME
‪#define EMP_VEHICLE_NAME
Definition: _emp.gsc:48
‪GetEnemyPlayers
‪function GetEnemyPlayers()
Definition: _teams.gsc:412
‪emped
‪function emped(down_time)
Definition: _siegebot.gsc:1359
‪ActivateEMP
‪function ActivateEMP()
Definition: _emp.gsc:113
‪register_strings
‪function register_strings(killstreakType, receivedText, notUsableText, inboundText, inboundNearPlayerText, hackedText, utilizesAirspace=true, isInventory=false)
Definition: _killstreaks.gsc:223
‪killstreakStop
‪function killstreakStop(hardpointType, team, id)
Definition: _killstreakrules.gsc:293
‪setup_health
‪function setup_health(killstreak_ref, max_health, low_health)
Definition: _killstreaks.gsc:2466
‪killstreakStart
‪function killstreakStart(hardpointType, team, hacked, displayTeamMessage)
Definition: _killstreakrules.gsc:184
‪OnTurretDamage
‪function OnTurretDamage(eInflictor, attacker, iDamage, iDFlags, sMeansOfDeath, weapon, vPoint, vDir, sHitLoc, vDamageOrigin, psOffsetTime, damageFromUnderneath, modelIndex, partName, vSurfaceNormal)
Definition: _emp.gsc:249
‪set
‪function set(str_field_name, n_value)
Definition: clientfield_shared.gsc:34
‪HasActiveEMP
‪function HasActiveEMP()
Definition: _emp.gsc:355
‪configure_team
‪function configure_team(killstreakType, killstreakId, owner, influencerType, configureTeamPreFunction, configureTeamPostFunction, isHacked=false)
Definition: _killstreaks.gsc:2806
‪EMP_MODEL
‪#define EMP_MODEL
Definition: _killstreaks.gsh:197
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪OnPlaceEMP
‪function OnPlaceEMP(emp)
Definition: _emp.gsc:143
‪DestroyOtherTeamsActiveVehicles
‪function DestroyOtherTeamsActiveVehicles(attacker, weapon)
Definition: killstreaks_shared.gsc:263
‪get_script_bundle
‪function get_script_bundle(str_type, str_name)
Definition: struct.csc:45
‪EMP_JamEnemies
‪function EMP_JamEnemies(empEnt, hacked)
Definition: _emp.gsc:406
‪on_timeout
‪function on_timeout()
Definition: _emp.gsc:232
‪DeployEmpTurret
‪function DeployEmpTurret(emp)
Definition: _emp.gsc:176
‪enable_hacking
‪function enable_hacking(killstreakName, preHackFunction, postHackFunction)
Definition: _killstreak_hacking.gsc:22
‪on_connect
‪function on_connect()
Definition: _arena.gsc:20
‪destroyNonAirScoreStreak_PostStatsLock
‪function destroyNonAirScoreStreak_PostStatsLock(weapon)
Definition: challenges_shared.gsc:126
‪disconnect_paths
‪function disconnect_paths(detail_level=2, move_allowed=true)
Definition: vehicle_shared.gsc:3580
‪OnDeathAfterFrameEnd
‪function OnDeathAfterFrameEnd(attacker, weapon)
Definition: _emp.gsc:272
‪destroy_other_teams_supplemental_watcher_objects
‪function destroy_other_teams_supplemental_watcher_objects(attacker, weapon)
Definition: _weaponobjects.gsc:3519
‪ghost_wait_show_to_others
‪function ghost_wait_show_to_others(player, wait_time=0.1, self_endon_string1)
Definition: _util.gsc:977
‪WAIT_SERVER_FRAME
‪#define WAIT_SERVER_FRAME
Definition: shared.gsh:265
‪EMPTracker
‪function EMPTracker()
Definition: _emp.gsc:440
‪PlayFx
‪function PlayFx(name)
Definition: _counteruav.gsc:390