‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_killstreak_weapons.gsc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\killstreaks_shared;
5 #using scripts\shared\popups_shared;
6 #using scripts\shared\util_shared;
7 #using scripts\shared\weapons\_weapons;
8 
9 #insert scripts\shared\shared.gsh;
10 
11 #using scripts\mp\gametypes\_globallogic_utils;
12 #using scripts\mp\gametypes\_loadout;
13 
14 
15 #using scripts\mp\_util;
16 #using scripts\mp\killstreaks\_killstreakrules;
17 #using scripts\mp\killstreaks\_killstreaks;
18 #using scripts\mp\killstreaks\_supplydrop;
19 
20 #precache( "material", "hud_ks_minigun" );
21 #precache( "material", "hud_ks_m32" );
22 #precache( "string", "KILLSTREAK_EARNED_MINIGUN" );
23 #precache( "string", "KILLSTREAK_MINIGUN_NOT_AVAILABLE" );
24 #precache( "string", "KILLSTREAK_MINIGUN_INBOUND" );
25 #precache( "eventstring", "mpl_killstreak_minigun" );
26 #precache( "eventstring", "mpl_killstreak_m32" );
27 
28 #namespace killstreak_weapons;
29 
30 function ‪init()
31 {
32  ‪killstreaks::register("minigun", "minigun", "killstreak_minigun", "minigun_used",&‪useCarriedKillstreakWeapon, false, true, "MINIGUN_USED" );
33  ‪killstreaks::register_strings("minigun", &"KILLSTREAK_EARNED_MINIGUN", &"KILLSTREAK_MINIGUN_NOT_AVAILABLE", &"KILLSTREAK_MINIGUN_INBOUND", undefined, &"KILLSTREAK_MINIGUN_HACKED" );
34  ‪killstreaks::register_dialog("minigun", "mpl_killstreak_minigun", "kls_death_used", "","kls_death_enemy", "", "kls_death_ready");
35 
36  ‪killstreaks::register("m32", "m32", "killstreak_m32", "m32_used",&‪useCarriedKillstreakWeapon, false, true, "M32_USED" );
37  ‪killstreaks::register_strings("m32", &"KILLSTREAK_EARNED_M32", &"KILLSTREAK_M32_NOT_AVAILABLE", &"KILLSTREAK_M32_INBOUND", undefined, &"KILLSTREAK_M32_HACKED" );
38  ‪killstreaks::register_dialog("m32", "mpl_killstreak_m32", "kls_mgl_used", "","kls_mgl_enemy", "", "kls_mgl_ready");
40 
41  level.killStreakIcons["killstreak_minigun"] = "hud_ks_minigun";
42  level.killStreakIcons["killstreak_m32"] = "hud_ks_m32";
43  level.killStreakIcons["killstreak_m202_flash"] = "hud_ks_m202";
44  level.killStreakIcons["killstreak_m220_tow_drop"] = "hud_ks_tv_guided_marker";
45  level.killStreakIcons["killstreak_m220_tow"] = "hud_ks_tv_guided_missile";
46  //level.killStreakIcons["killstreak_mp40"] = "hud_mp40";
47 
49 
50  SetDvar( "scr_HeldKillstreak_Penalty", 0 );
51 }
52 
54 {
55  self endon( "disconnect" );
56 
57  self.firedKillstreakWeapon = false;
58  self.usingKillstreakHeldWeapon = undefined;
59 
61  {
62  if ( level.roundStartKillstreakDelay > (‪globallogic_utils::getTimePassed() / 1000) )
63  {
64  self thread ‪watchKillstreakWeaponDelay();
65  }
66  }
67 }
68 
70 {
71  self endon( "disconnect" );
72  self endon( "death" );
73 
74  while(1)
75  {
76  currentWeapon = self GetCurrentWeapon();
77  self waittill( "weapon_change", newWeapon );
78 
79  if ( level.roundStartKillstreakDelay < (‪globallogic_utils::getTimePassed() / 1000) )
80  return;
81 
82  if ( !‪killstreaks::is_killstreak_weapon(newWeapon) )
83  {
84  wait( 0.5 );
85  continue;
86  }
87 
88  killstreak = ‪killstreaks::get_killstreak_for_weapon( newWeapon );
89  if ( ‪killstreaks::is_delayable_killstreak( killstreak ) && newWeapon.isCarriedKillstreak )
90  {
91  timeLeft = Int( level.roundStartKillstreakDelay - (‪globallogic_utils::getTimePassed() / 1000) );
92 
93  if( !timeLeft )
94  timeLeft = 1;
95 
96  self iPrintLnBold( &"MP_UNAVAILABLE_FOR_N", " " + timeLeft + " ", &"EXE_SECONDS" );
97 
98  self switchToWeapon( currentWeapon );
99  wait(0.5);
100  }
101  }
102 }
103 
104 function ‪useKillstreakWeaponDrop( hardpointType )
105 {
106  if( self ‪supplydrop::isSupplyDropGrenadeAllowed(hardpointType) == false )
107  return false;
108 
110 
111  self notify( "supply_drop_marker_done" );
112 
113  if ( !isdefined(‪result) || !‪result )
114  {
115  return false;
116  }
117 
118  return ‪result;
119 }
120 
121 function ‪useCarriedKillstreakWeapon( hardpointType )
122 {
123  if( !isdefined(hardpointType) )
124  return false;
125 
126  if ( self ‪killstreakrules::isKillstreakAllowed( hardpointType, self.team ) == false )
127  {
128  self switchToWeapon( self.lastDroppableWeapon );
129  return false;
130  }
131 
132  currentWeapon = self GetCurrentWeapon();
133  killstreakWeapon = ‪killstreaks::get_killstreak_weapon( hardpointType );
134 
135  if ( killstreakWeapon == level.weaponNone )
136  return false;
137 
138  level ‪weapons::add_limited_weapon( killstreakWeapon, self, 3 );
139 
140  if ( issubstr( killstreakWeapon.name, "inventory" ) )
141  isFromInventory = true;
142  else
143  isFromInventory = false;
144 
145  currentAmmo = self getammocount( killstreakWeapon );
146  if ( ( ( hardpointType == "minigun" || hardpointType == "inventory_minigun" ) && !‪IS_TRUE( self.minigunStart ) ) ||
147  ( ( hardpointType == "m32" || hardpointType == "inventory_m32" ) && !‪IS_TRUE( self.m32Start ) ) )
148  {
149  if ( hardpointType == "minigun" || hardpointType == "inventory_minigun" )
150  {
151  self.minigunStart = true;
152  }
153  else
154  {
155  self.m32Start = true;
156  }
157  self ‪killstreaks::play_killstreak_start_dialog( hardpointType, self.team, true );
158  self AddWeaponStat( killstreakWeapon, "used", 1 );
159  level thread ‪popups::DisplayTeamMessageToAll( level.killstreaks[hardpointType].inboundText, self );
160 
161  self.pers["held_killstreak_clip_count"][killstreakWeapon] = ( killstreakWeapon.clipSize > currentAmmo ? currentAmmo : killstreakWeapon.clipSize );
162 
163 
164  if ( isFromInventory == false )
165  {
166  if( self.pers["killstreak_quantity"][killstreakWeapon] > 0 )
167  ammoPool = killstreakWeapon.maxAmmo;
168  else
169  ammoPool = self.pers["held_killstreak_ammo_count"][killstreakWeapon];
170 
171  self setWeaponAmmoClip( killstreakWeapon, self.pers["held_killstreak_clip_count"][killstreakWeapon] );
172  self setWeaponAmmoStock( killstreakWeapon, ammoPool - self.pers["held_killstreak_clip_count"][killstreakWeapon] );
173  }
174  }
175  if ( hardpointType == "minigun" || hardpointType == "inventory_minigun" )
176  {
177  if ( !‪IS_TRUE( self.minigunActive ) )
178  {
179  killstreak_id = self ‪killstreakrules::killstreakStart( hardpointType, self.team, false, false );
180 
181  if( hardpointType == "inventory_minigun" )
182  killstreak_id = self.pers["killstreak_unique_id"][self.pers["killstreak_unique_id"].size-1];
183 
184  self.minigunId = killstreak_id;
185  self.minigunActive = true;
186  }
187  else
188  {
189  killstreak_id = self.minigunId;
190  }
191  }
192  else
193  {
194  if ( !‪IS_TRUE( self.m32Active ) )
195  {
196  killstreak_id = self ‪killstreakrules::killstreakStart( hardpointType, self.team, false, false );
197 
198  if( hardpointType == "inventory_m32" )
199  killstreak_id = self.pers["killstreak_unique_id"][self.pers["killstreak_unique_id"].size-1];
200 
201  self.m32Id = killstreak_id;
202  self.m32Active = true;
203  }
204  else
205  {
206  killstreak_id = self.m32Id;
207  }
208  }
209  //right now we dont have handling for the killstreak not working
210  assert ( killstreak_id != -1 );
211  self.firedKillstreakWeapon = false;
212  //This will make it so the player cannot pick up weapons while using this weapon for the first time.
213  self setBlockWeaponPickup( killstreakWeapon, true );
214 
215  if( isFromInventory )
216  {
217  self setWeaponAmmoClip( killstreakWeapon, self.pers["held_killstreak_clip_count"][killstreakWeapon] );
218  self setWeaponAmmoStock( killstreakWeapon, self.pers["killstreak_ammo_count"][self.pers["killstreak_ammo_count"].size - 1] - self.pers["held_killstreak_clip_count"][killstreakWeapon] );
219  }
220 
221  notifyString = "killstreakWeapon_" + killstreakWeapon.name;
222  self notify( notifyString );
223  //Monitor weapon switching from the killstreak weapon
224  self thread ‪watchKillstreakWeaponSwitch( killstreakWeapon, killstreak_id, isFromInventory );
225  self thread ‪watchKillstreakWeaponDeath( killstreakWeapon, killstreak_id, isFromInventory );
226  self thread ‪watchKillstreakRoundChange( isFromInventory, killstreak_id );
227  self thread ‪WatchPlayerDeath( killstreakWeapon );
228 
229  if( isFromInventory )
230  self thread ‪watchKillstreakRemoval( hardpointType, killstreak_id );
231 
232  self.usingKillstreakHeldWeapon = true;
233  return false;
234 }
235 
236 function ‪useKillstreakWeaponFromCrate( hardpointType )
237 {
238  if( !isdefined(hardpointType) )
239  return false;
240 
241  killstreakWeapon = ‪killstreaks::get_killstreak_weapon( hardpointType );
242  if ( killstreakWeapon == level.weaponNone )
243  return false;
244 
245  self.firedKillstreakWeapon = false;
246 
247  self setBlockWeaponPickup( killstreakWeapon, true );
248 
249  killstreak_id = self ‪killstreakrules::killstreakStart( hardpointType, self.team, false, false );
250  //right now we dont have handling for the killstreak not working
251  assert ( killstreak_id != -1 );
252 
253  if( issubstr( killstreakWeapon.name, "inventory" ) )
254  isFromInventory = true;
255  else
256  isFromInventory = false;
257 
258  self thread ‪watchKillstreakWeaponSwitch( killstreakWeapon, killstreak_id, isFromInventory );
259  self thread ‪watchKillstreakWeaponDeath( killstreakWeapon, killstreak_id, isFromInventory );
260 
261  if( isFromInventory )
262  self thread ‪watchKillstreakRemoval( hardpointType, killstreak_id );
263 
264  self.usingKillstreakHeldWeapon = true;
265 
266  return true;
267 }
268 
269 function ‪watchKillstreakWeaponSwitch( killstreakWeapon, killstreak_id, isFromInventory )
270 {
271  self endon( "disconnect" );
272  self endon( "death" );
273  noneWeapon = getWeapon( "none" );
274  minigunWeapon = getWeapon( "minigun" );
275  minigunInventoryWeapon = getWeapon( "inventory_minigun" );
276  //self endon( "killstreak_weapon_taken" );
277 
278  while(1)
279  {
280  currentWeapon = self GetCurrentWeapon();
281  self waittill( "weapon_change", newWeapon );
282 
283  if ( level.inFinalKillcam )
284  continue;
285 
286  if( newWeapon == noneWeapon )
287  continue;
288 
289  currentAmmo = self getammocount( killstreakWeapon );
290  currentAmmoInClip = self GetWeaponAmmoClip( killstreakWeapon );
291 
292  //If an inventory weapon, make sure the ammo is stored at the right index in the stack
293  if( isFromInventory && currentAmmo > 0 )
294  {
295  killstreakIndex = self ‪killstreaks::get_killstreak_index_by_id( killstreak_id );
296 
297  if( isdefined( killstreakIndex ) )
298  {
299  self.pers["killstreak_ammo_count"][killstreakIndex] = currentAmmo;
300  self.pers["held_killstreak_clip_count"][killstreakWeapon] = currentAmmoInClip;
301  }
302  }
303 
304  if( ‪killstreaks::is_killstreak_weapon( newWeapon ) && !newWeapon.isCarriedKillstreak )
305  continue;
306 
307  if( newWeapon.isGameplayWeapon )
308  continue;
309 
310  if( newWeapon == self.lastNonKillstreakWeapon && newWeapon.isCarriedKillstreak )
311  continue;
312 
314 
315  self.pers["held_killstreak_ammo_count"][killstreakWeapon] = currentAmmo;
316  self.pers["held_killstreak_clip_count"][killstreakWeapon] = currentAmmoInClip;
317 
318  if ( killstreak_id != -1 )
319  {
320  self notify( "killstreak_weapon_switch" );
321  }
322  self.firedKillstreakWeapon = false;
323  self.usingKillstreakHeldWeapon = undefined;
324 
325  waittillframeend;
326 
327  if ( currentAmmo == 0 || self.pers["killstreak_quantity"][killstreakWeapon] > 0 || ( isFromInventory && isdefined(KillstreakId) && KillstreakId != killstreak_id ) )
328  {
329  ‪killstreakrules::killstreakStop( ‪killstreaks::get_killstreak_for_weapon( killstreakWeapon ), self.team, killstreak_id );
330  if ( killstreakWeapon == minigunInventoryWeapon || killstreakWeapon == minigunWeapon )
331  {
332  self.minigunStart = false;
333  self.minigunActive = false;
334  }
335  else
336  {
337  self.m32Start = false;
338  self.m32Active = false;
339  }
340 
341  //Check if we have earned another one, if so refill ammo.
342  if( self.pers["killstreak_quantity"][killstreakWeapon] > 0 )
343  {
344  self.pers["held_killstreak_ammo_count"][killstreakWeapon] = killstreakWeapon.maxAmmo;
345  self ‪loadout::setWeaponAmmoOverall( killstreakWeapon, self.pers["held_killstreak_ammo_count"][killstreakWeapon] );
346  self.pers["killstreak_quantity"][killstreakWeapon]--;
347  }
348  }
349 
350  if( isFromInventory && currentAmmo == 0 )
351  {
352  self TakeWeapon( killstreakWeapon );
355  }
356  break;
357 
358  }
359 }
360 
361 function ‪watchKillstreakWeaponDeath( killstreakWeapon, killstreak_id, isFromInventory )
362 {
363  self endon( "disconnect" );
364  self endon( "killstreak_weapon_switch" );
365 
366  if( killstreak_id == -1 )
367  {
368  return;
369  }
370  oldTeam = self.team;
371 
372  self waittill( "death" );
373 
374  penalty = GetDvarFloat( "scr_HeldKillstreak_Penalty", 0.5 );
375  maxAmmo = killstreakWeapon.maxAmmo;
376  currentAmmo = self getammocount( killstreakWeapon );
377  currentAmmoInClip = self GetWeaponAmmoClip( killstreakWeapon );
378 
379  if ( self.pers["killstreak_quantity"].size == 0 ) // player changed teams
380  {
381  currentAmmo = 0;
382  currentAmmoInClip = 0;
383  }
384 
385  maxClipSize = killstreakWeapon.clipSize;
386  newAmmo = int( currentAmmo - (maxAmmo * penalty) );
388 
389 
390  //Check if we should penalize the player.
391  if( self.lastNonKillstreakWeapon == killstreakWeapon )
392  {
393  if( newAmmo < 0 )
394  {
395  self.pers["held_killstreak_ammo_count"][killstreakWeapon] = 0;
396  self.pers["held_killstreak_clip_count"][killstreakWeapon] = 0;
397  }
398  else
399  {
400  self.pers["held_killstreak_ammo_count"][killstreakWeapon] = newAmmo;
401  self.pers["held_killstreak_clip_count"][killstreakWeapon] = ( maxClipSize <= newAmmo ? maxClipSize : newAmmo );
402  }
403  }
404 
405  self.usingKillstreakHeldWeapon = false;
406  killstreakType = ‪killstreaks::get_killstreak_for_weapon( killstreakWeapon );
407  if ( newAmmo <= 0 || self.pers["killstreak_quantity"][killstreakWeapon] > 0 || ( isFromInventory && isdefined(KillstreakId) && KillstreakId != killstreak_id ) )
408  {
409  ‪killstreakrules::killstreakStop( killstreakType, oldTeam, killstreak_id );
410  if ( killstreakType == "minigun" || killstreakType == "inventory_minigun" )
411  {
412  self.minigunStart = false;
413  self.minigunActive = false;
414  }
415  else
416  {
417  self.m32Start = false;
418  self.m32Active = false;
419  }
420  //Check if we have earned another one, if so refill ammo.
421  if( isdefined( self.pers["killstreak_quantity"][killstreakWeapon] ) && self.pers["killstreak_quantity"][killstreakWeapon] > 0 )
422  {
423  self.pers["held_killstreak_ammo_count"][killstreakWeapon] = maxAmmo;
424  self.pers["held_killstreak_clip_count"][killstreakWeapon] = maxClipSize;
425  self setWeaponAmmoClip( killstreakWeapon, self.pers["held_killstreak_clip_count"][killstreakWeapon] );
426  self setWeaponAmmoStock( killstreakWeapon, self.pers["held_killstreak_ammo_count"][killstreakWeapon] - self.pers["held_killstreak_clip_count"][killstreakWeapon] );
427  self.pers["killstreak_quantity"][killstreakWeapon]--;
428  }
429  }
430  if( isFromInventory && newAmmo <= 0 )
431  {
432  self TakeWeapon( killstreakWeapon );
433  self ‪killstreaks::remove_used_killstreak( killstreakType, killstreak_id );
435  }
436  else if( isFromInventory )//If an inventory weapon, make sure the ammo is stored at the right index in the stack
437  {
438  killstreakIndex = self ‪killstreaks::get_killstreak_index_by_id( killstreak_id );
439 
440  if( isdefined( killstreakIndex ) )
441  {
442  self.pers["killstreak_ammo_count"][killstreakIndex] = self.pers["held_killstreak_ammo_count"][killstreakWeapon];
443  }
444  }
445 }
446 
447 function ‪WatchPlayerDeath( killstreakWeapon )
448 {
449  self endon( "disconnect" );
450 
451  endonWeaponString = "killstreakWeapon_" + killstreakWeapon.name;
452  self endon( endonWeaponString );
453 
454  self waittill( "death" );
455 
456  currentAmmo = self getammocount( killstreakWeapon );
457 
458  self.pers["held_killstreak_clip_count"][killstreakWeapon] = ( killstreakWeapon.clipSize <= currentAmmo ? killstreakWeapon.clipSize : currentAmmo );
459 }
460 
461 function ‪watchKillstreakRemoval( killstreakType, killstreak_id )
462 {
463  self endon( "disconnect" );
464  self endon( "death" );
465  self endon( "killstreak_weapon_switch" );
466 
467  self waittill( "oldest_killstreak_removed", removedKillstreakType, removed_id );
468 
469  if ( killstreakType == removedKillstreakType && killstreak_id == removed_id )
470  {
471  removedKillstreakWeapon = ‪killstreaks::get_killstreak_weapon( removedKillstreakType );
472  if ( removedKillstreakWeapon.name == "inventory_minigun" )
473  {
474  self.minigunStart = false;
475  self.minigunActive = false;
476  }
477  else
478  {
479  self.m32Start = false;
480  self.m32Active = false;
481  }
482  }
483 }
484 
485 function ‪watchKillstreakRoundChange( isFromInventory, killstreak_id )
486 {
487  self endon( "disconnect" );
488  self endon( "death" );
489  self endon( "killstreak_weapon_switch" );
490 
491  self waittill( "round_ended" );
492 
493  currentWeapon = self getCurrentWeapon();
494 
495  if( !currentWeapon.isCarriedKillstreak )
496  return;
497 
498  currentAmmo = self getammocount( currentWeapon );
499  maxClipSize = currentWeapon.clipSize;
500 
501  //If an inventory weapon, make sure the ammo is stored at the right index in the stack
502  if( isFromInventory && currentAmmo > 0 )
503  {
504  killstreakIndex = self ‪killstreaks::get_killstreak_index_by_id( killstreak_id );
505 
506  if( isDefined( killstreakIndex ) )
507  {
508  self.pers["killstreak_ammo_count"][killstreakIndex] = currentAmmo;
509  self.pers["held_killstreak_clip_count"][currentWeapon] = ( maxClipSize <= currentAmmo ? maxClipSize : currentAmmo );
510  }
511  }
512  else
513  {
514  self.pers["held_killstreak_ammo_count"][currentWeapon] = currentAmmo;
515  self.pers["held_killstreak_clip_count"][currentWeapon] = ( maxClipSize <= currentAmmo ? maxClipSize : currentAmmo );
516  }
517 }
518 
519 function ‪checkIfSwitchableWeapon( currentWeapon, newWeapon, killstreakWeapon, currentKillstreakId )
520 {
521  switchableWeapon = true;
522  topKillstreak = ‪killstreaks::get_top_killstreak();
524 
525  if( !isdefined(killstreakId) )
526  killstreakId = -1;
527 
528  if ( self HasWeapon( killstreakWeapon ) && !self GetAmmoCount( killstreakWeapon ) )//Safety check that we're holding an empty killstreak weapon
529  switchableWeapon = true;
530  else if( self.firedKillstreakWeapon && newWeapon == killstreakWeapon && currentWeapon.isCarriedKillstreak )//We have a new version of the killstreak weapon and we've already shot the equipped one
531  switchableWeapon = true;
532  else if( newWeapon.isEquipment )
533  switchableWeapon = true;
534  else if( isdefined( level.grenade_array[newWeapon] ) )
535  switchableWeapon = false;
536  else if( newWeapon.isCarriedKillstreak && currentWeapon.isCarriedKillstreak && (!isdefined(currentKillstreakID) || currentKillstreakId != killstreakId) )//new held killstreak weapon
537  switchableWeapon = true;
538  else if( ‪killstreaks::is_killstreak_weapon( newWeapon ) )//allow killstreaks to be called in
539  switchableWeapon = false;
540  else if( newWeapon.isGameplayWeapon )//check for briefcase bomb, syrette, etc.
541  switchableWeapon = false;
542  else if( self.firedKillstreakWeapon )
543  switchableWeapon = true;
544  else if( self.lastNonKillstreakWeapon == killstreakWeapon )
545  switchableWeapon = false;
546  else if( isdefined(topKillstreak) && topKillstreak == killstreakWeapon && currentKillstreakId == killstreakId )//putting the killstreak away
547  switchableWeapon = false;
548 
549 
550  return switchableWeapon;
551 
552 }
‪get_killstreak_index_by_id
‪function get_killstreak_index_by_id(killstreakId)
Definition: _killstreaks.gsc:1326
‪watchKillstreakWeaponDeath
‪function watchKillstreakWeaponDeath(killstreakWeapon, killstreak_id, isFromInventory)
Definition: _killstreak_weapons.gsc:361
‪isOneRound
‪function isOneRound()
Definition: util_shared.gsc:3497
‪useKillstreakWeaponFromCrate
‪function useKillstreakWeaponFromCrate(hardpointType)
Definition: _killstreak_weapons.gsc:236
‪useKillstreakWeaponDrop
‪function useKillstreakWeaponDrop(hardpointType)
Definition: _killstreak_weapons.gsc:104
‪activate_next
‪function activate_next(do_not_update_death_count)
Definition: _killstreaks.gsc:951
‪play_killstreak_start_dialog
‪function play_killstreak_start_dialog(killstreakType, team, killstreakId)
Definition: _killstreaks.gsc:1905
‪init
‪function init()
Definition: _killstreak_weapons.gsc:30
‪IS_TRUE
‪#define IS_TRUE(__a)
Definition: shared.gsh:251
‪add_limited_weapon
‪function add_limited_weapon(weapon, owner, num_drops)
Definition: _weapons.gsc:1651
‪useSupplyDropMarker
‪function useSupplyDropMarker(package_contents_id, context)
Definition: _supplydrop.gsc:575
‪get_killstreak_for_weapon
‪function get_killstreak_for_weapon(weapon)
Definition: _killstreaks.gsc:1357
‪watchKillstreakRoundChange
‪function watchKillstreakRoundChange(isFromInventory, killstreak_id)
Definition: _killstreak_weapons.gsc:485
‪get_killstreak_weapon
‪function get_killstreak_weapon(killstreak)
Definition: killstreaks_shared.gsc:106
‪is_delayable_killstreak
‪function is_delayable_killstreak(killstreakType)
Definition: _killstreaks.gsc:1642
‪get_top_killstreak_unique_id
‪function get_top_killstreak_unique_id()
Definition: _killstreaks.gsc:1316
‪on_spawned
‪function on_spawned(func, obj)
Definition: callbacks_shared.csc:245
‪getTimePassed
‪function getTimePassed()
Definition: _globallogic_utils.gsc:274
‪is_killstreak_weapon
‪function is_killstreak_weapon(weapon)
Definition: killstreaks_shared.gsc:16
‪isKillstreakAllowed
‪function isKillstreakAllowed(hardpointType, team)
Definition: _killstreakrules.gsc:352
‪watchKillstreakWeaponSwitch
‪function watchKillstreakWeaponSwitch(killstreakWeapon, killstreak_id, isFromInventory)
Definition: _killstreak_weapons.gsc:269
‪isSupplyDropGrenadeAllowed
‪function isSupplyDropGrenadeAllowed(killstreak)
Definition: _supplydrop.gsc:646
‪useCarriedKillstreakWeapon
‪function useCarriedKillstreakWeapon(hardpointType)
Definition: _killstreak_weapons.gsc:121
‪DisplayTeamMessageToAll
‪function DisplayTeamMessageToAll(message, player)
Definition: popups_shared.gsc:122
‪get_top_killstreak
‪function get_top_killstreak()
Definition: _killstreaks.gsc:1293
‪register_dialog
‪function register_dialog(killstreakType, informDialog, taacomDialogBundleKey, pilotDialogArrayKey, startDialogKey, enemyStartDialogKey, enemyStartMultipleDialogKey, hackedDialogKey, hackedStartDialogKey, requestDialogKey, threatDialogKey, isInventory)
Definition: _killstreaks.gsc:239
‪WatchPlayerDeath
‪function WatchPlayerDeath(killstreakWeapon)
Definition: _killstreak_weapons.gsc:447
‪remove_used_killstreak
‪function remove_used_killstreak(killstreak, killstreakId, take_weapon_after_use=true)
Definition: _killstreaks.gsc:1222
‪isFirstRound
‪function isFirstRound()
Definition: util_shared.gsc:3505
‪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
‪killstreakStart
‪function killstreakStart(hardpointType, team, hacked, displayTeamMessage)
Definition: _killstreakrules.gsc:184
‪override_entity_camera_in_demo
‪function override_entity_camera_in_demo(killstreakType, value, isInventory)
Definition: _killstreaks.gsc:411
‪on_player_spawned
‪function on_player_spawned()
Definition: _killstreak_weapons.gsc:53
‪watchKillstreakWeaponDelay
‪function watchKillstreakWeaponDelay()
Definition: _killstreak_weapons.gsc:69
‪setWeaponAmmoOverall
‪function setWeaponAmmoOverall(weapon, amount)
Definition: _loadout.gsc:1173
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪result
‪function result(death, attacker, mod, weapon)
Definition: _zm_aat_blast_furnace.gsc:46
‪checkIfSwitchableWeapon
‪function checkIfSwitchableWeapon(currentWeapon, newWeapon, killstreakWeapon, currentKillstreakId)
Definition: _killstreak_weapons.gsc:519
‪watchKillstreakRemoval
‪function watchKillstreakRemoval(killstreakType, killstreak_id)
Definition: _killstreak_weapons.gsc:461