‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_zm_weap_rocketshield.gsc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\array_shared;
4 #using scripts\shared\callbacks_shared;
5 #using scripts\shared\clientfield_shared;
6 #using scripts\shared\flag_shared;
7 #using scripts\shared\flagsys_shared;
8 #using scripts\shared\system_shared;
9 #using scripts\shared\util_shared;
10 #using scripts\shared\visionset_mgr_shared;
11 
12 #insert scripts\shared\shared.gsh;
13 #insert scripts\shared\version.gsh;
14 #insert scripts\shared\archetype_shared\archetype_shared.gsh;
15 
16 #using scripts\shared\ai\zombie_utility;
17 
18 #using scripts\zm\_util;
19 #using scripts\zm\_zm_audio;
20 #using scripts\zm\_zm_devgui;
21 #using scripts\zm\_zm_equipment;
22 #using scripts\zm\_zm_laststand;
23 #using scripts\zm\_zm_spawner;
24 #using scripts\zm\_zm_stats;
25 #using scripts\zm\_zm_unitrigger;
26 #using scripts\zm\_zm_utility;
27 #using scripts\zm\_zm_weapons;
28 #using scripts\zm\_zm_weap_riotshield;
29 
30 #using scripts\zm\craftables\_zm_craft_shield;
31 
32 #insert scripts\zm\_zm_buildables.gsh;
33 #insert scripts\zm\_zm_utility.gsh;
34 
35 #define HINT_ICON "riotshield_zm_icon"
36 #define GROUND_LEVEL 0
37 
38 #precache( "material", HINT_ICON );
39 #precache( "string", "ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING" );
40 #precache( "triggerstring", "ZOMBIE_PICKUP_BOTTLE" );
41 
42 #namespace rocketshield;
43 
44 ‪REGISTER_SYSTEM_EX( "zm_weap_rocketshield", &‪__init__, &‪__main__, undefined )
45 
46 
47 #define ROCKETSHIELD_NAME "craft_shield_zm"
48 #define ROCKETSHIELD_WEAPON "zod_riotshield"
49 #define ROCKETSHIELD_WEAPON_UPGRADED "zod_riotshield_upgraded"
50 #define ROCKETSHIELD_MODEL "wpn_t7_zmb_zod_rocket_shield_world"
51 
52 #define MODEL_SHIELD_RECHARGE "p7_zm_zod_nitrous_tank"
53 #precache( "model", MODEL_SHIELD_RECHARGE );
54 
55 #define ROCKETSHIELD_REFILL_ON_MAX_AMMO true
56 
57 function ‪__init__()
58 {
60 
61  ‪clientfield::register( "allplayers", "rs_ammo", ‪VERSION_SHIP, 1, "int" );
62 
65 
66  level.weaponRiotshield = GetWeapon( ‪ROCKETSHIELD_WEAPON );
67  ‪zm_equipment::register( ‪ROCKETSHIELD_WEAPON, &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_RIOTSHIELD_HOWTO", undefined, "riotshield" ); //, &zm_equip_riotshield::riotshield_activation_watcher_thread, undefined, undefined, undefined ); //, &placeShield );
68  level.weaponRiotshieldUpgraded = GetWeapon( ‪ROCKETSHIELD_WEAPON_UPGRADED );
69  ‪zm_equipment::register( ‪ROCKETSHIELD_WEAPON_UPGRADED, &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_RIOTSHIELD_HOWTO", undefined, "riotshield" );
70 }
71 
72 
73 function ‪__main__()
74 {
75 
79 
83 
84  SetDvar( "juke_enabled", 1 );
85 
86  ‪zombie_utility::set_zombie_var( "riotshield_fling_damage_shield", 100 );
87  ‪zombie_utility::set_zombie_var( "riotshield_knockdown_damage_shield", 15 );
88  ‪zombie_utility::set_zombie_var( "riotshield_juke_damage_shield", 0 );
89 
90  ‪zombie_utility::set_zombie_var( "riotshield_fling_force_juke", 175 );
91 
92  ‪zombie_utility::set_zombie_var( "riotshield_fling_range", 120 );
93  ‪zombie_utility::set_zombie_var( "riotshield_gib_range", 120 );
94  ‪zombie_utility::set_zombie_var( "riotshield_knockdown_range", 120 );
95 
96  level thread ‪spawn_recharge_tanks();
97 
98  level.riotshield_damage_callback = &‪player_damage_rocketshield;
99 }
100 
101 
103 {
104  self thread ‪watchFirstUse();
105 }
106 
107 #define ROCKET_SHIELD_HINT_TEXT &"ZOMBIE_ROCKET_HINT"
108 #define ROCKET_SHIELD_HINT_TIMER 5
109 
110 // this is rocket shield specific and shoud be moved to a different script
112 {
113  self endon("disconnect");
114  while ( IsDefined(self) )
115  {
116  self waittill ( "weapon_change", newWeapon );
117  if ( newWeapon.isriotshield )
118  break;
119  }
120  self.rocket_shield_hint_shown=1;
122 
123 }
124 
126 {
127  self.player_shield_apply_damage = &‪player_damage_rocketshield;
128  self thread ‪player_watch_shield_juke();
129  self thread ‪player_watch_ammo_change();
130  self thread ‪player_watch_max_ammo();
132 }
133 
135 {
136  self notify("player_watch_ammo_change");
137  self endon("player_watch_ammo_change");
138 
139  for ( ;; )
140  {
141  self waittill( "equipment_ammo_changed", equipment );
142  if ( IsString(equipment) )
143  equipment = GetWeapon(equipment);
144  if ( equipment == GetWeapon(‪ROCKETSHIELD_WEAPON) || equipment == GetWeapon(‪ROCKETSHIELD_WEAPON_UPGRADED) )
145  {
146  self thread ‪check_weapon_ammo( equipment );
147  }
148  }
149 }
150 
152 {
153  self notify("player_watch_max_ammo");
154  self endon("player_watch_max_ammo");
155 
156  for ( ;; )
157  {
158  self waittill( "zmb_max_ammo" );
160  if ( ‪IS_TRUE(self.hasRiotShield) )
161  {
162  self thread ‪check_weapon_ammo( self.weaponRiotshield );
163  }
164  }
165 }
166 
167 
168 function ‪check_weapon_ammo( weapon )
169 {
171 
172  if ( IsDefined(self) )
173  {
174  ammo = self getWeaponAmmoClip( weapon );
175  self ‪clientfield::set( "rs_ammo", ammo );
176  }
177 }
178 
179 // if the player has gotten the upgraded shield from the side EE, give it to them whenever they pick up the shield from the crafting table
181 {
182  self notify("player_watch_upgraded_pickup_from_table");
183  self endon("player_watch_upgraded_pickup_from_table");
184 
185  // get the notify string for when the player picks up the shield
186  str_wpn_name = level.weaponRiotshield.name;
187  str_notify = str_wpn_name + "_pickup_from_table";
188 
189  for ( ;; )
190  {
191  self waittill( str_notify );
192  if ( ‪IS_TRUE( self.b_has_upgraded_shield ) )
193  {
194  self ‪zm_equipment::buy( "zod_riotshield_upgraded" );
195  }
196  }
197 }
198 
199 
200 function ‪player_damage_rocketshield( iDamage, bHeld, fromCode = false, smod = "MOD_UNKNOWN" )
201 {
202  shieldDamage = iDamage;
203  if (‪IS_EQUAL(smod,"MOD_EXPLOSIVE"))
204  {
205  shieldDamage += iDamage * 2;
206  }
207  self ‪riotshield::player_damage_shield( shieldDamage, bHeld, fromCode, smod );
208 }
209 
210 //*****************************************************************************
211 // JUKE
212 //*****************************************************************************
213 
214 function ‪player_watch_shield_juke() // self == player
215 {
216  self notify("player_watch_shield_juke");
217  self endon("player_watch_shield_juke");
218 
219  for ( ;; )
220  {
221  self waittill( "weapon_melee_juke", weapon );
222  if ( weapon.isriotshield )
223  {
224  self DisableOffhandWeapons();
225  self playsound( "zmb_rocketshield_start" );
226  self ‪riotshield_melee_juke(weapon);
227  self playsound( "zmb_rocketshield_end" );
228  self EnableOffhandWeapons();
229  self thread ‪check_weapon_ammo( weapon );
230  self notify( "shield_juke_done" );
231  }
232  }
233 }
234 
235 #define RS_JUKE_MELEE_DAMAGE_RADIUS (12*5)
236 #define RS_JUKE_MELEE_DAMAGE_AMOUNT 5000
237 
238 function ‪riotshield_melee_juke(weapon)
239 {
240  self endon( "weapon_melee" );
241  self endon( "weapon_melee_power" );
242  self endon( "weapon_melee_charge" );
243 
244  start_time = GetTime();
245 
246  ‪DEFAULT(level.riotshield_knockdown_enemies,[]);
247  ‪DEFAULT(level.riotshield_knockdown_gib,[]);
248  ‪DEFAULT(level.riotshield_fling_enemies,[]);
249  ‪DEFAULT(level.riotshield_fling_vecs,[]);
250 
251  while( start_time + 3000 > GetTime() )
252  {
253  self PlayRumbleOnEntity( "zod_shield_juke" );
254  forward = AnglesToForward(self GetPlayerAngles());
255  shield_damage = 0;
256 
258  if ( isdefined( level.riotshield_melee_juke_callback ) && IsFunctionPtr( level.riotshield_melee_juke_callback ) )
259  {
260  [[ level.riotshield_melee_juke_callback ]]( enemies );
261  }
262 
263  foreach( zombie in enemies )
264  {
265  self playsound( "zmb_rocketshield_imp" );
266  zombie thread ‪riotshield::riotshield_fling_zombie( self, zombie.fling_vec, 0 );
267  shield_damage += level.zombie_vars["riotshield_juke_damage_shield"];
268  }
269 
270  if (shield_damage)
271  self ‪riotshield::player_damage_shield( shield_damage, false );
272 
273  level.riotshield_knockdown_enemies = [];
274  level.riotshield_knockdown_gib = [];
275  level.riotshield_fling_enemies = [];
276  level.riotshield_fling_vecs = [];
277 
278 
279  //riotshield_melee();
280  wait 0.1;
281  }
282 }
283 
284 #define RIOTSHIELD_JUKE_DISTANCE (10 * 12)
285 #define RIOTSHIELD_JUKE_KILL_HALFWIDTH (3 * 12)
286 #define RIOTSHIELD_JUKE_KILL_HALFWIDTH_SQ (RIOTSHIELD_JUKE_KILL_HALFWIDTH * RIOTSHIELD_JUKE_KILL_HALFWIDTH)
287 #define RIOTSHIELD_JUKE_KILL_VERT_LIMIT (6 * 12)
288 
290 {
291  view_pos = self.origin; // GetViewPos(); //GetWeaponMuzzlePoint();
292  zombies = array::get_all_closest( view_pos, GetAITeamArray( level.zombie_team ), undefined, undefined, ‪RIOTSHIELD_JUKE_DISTANCE );
293  if ( !isDefined( zombies ) )
294  {
295  return;
296  }
297 
298  forward = AnglesToForward(self GetPlayerAngles());
299  up = AnglesToUp(self GetPlayerAngles());
300  segment_start = view_pos + (‪RIOTSHIELD_JUKE_KILL_HALFWIDTH * forward);;
301  segment_end = segment_start + ((‪RIOTSHIELD_JUKE_DISTANCE-‪RIOTSHIELD_JUKE_KILL_HALFWIDTH) * forward);
302 
303  fling_force = level.zombie_vars["riotshield_fling_force_juke"];
304  fling_force_vlo = fling_force * 0.5;
305  fling_force_vhi = fling_force * 0.6;
306 
307  enemies = [];
308 
309  for ( i = 0; i < zombies.size; i++ )
310  {
311  if ( !IsDefined( zombies[i] ) || !IsAlive( zombies[i] ) )
312  {
313  // guy died on us
314  continue;
315  }
316 
317  if ( zombies[i].archetype == ‪ARCHETYPE_MARGWA )
318  {
319  continue;
320  }
321 
322  test_origin = zombies[i] getcentroid();
323 
324  radial_origin = PointOnSegmentNearestToPoint( segment_start, segment_end, test_origin );
325  lateral = test_origin - radial_origin;
326  if ( abs(lateral[2]) > ‪RIOTSHIELD_JUKE_KILL_VERT_LIMIT )
327  {
328  continue;
329  }
330  lateral = (lateral[0],lateral[1],0);
331  len = Length(lateral);
333  {
334  continue;
335  }
336 
337  lateral = (lateral[0],lateral[1],0);
338  zombies[i].fling_vec = fling_force * forward + randomfloatrange(fling_force_vlo,fling_force_vhi) * up; // + randomfloatrange(0,50) * (len / RIOTSHIELD_JUKE_KILL_HALFWIDTH) *lateral;
339 
340 
341  enemies[enemies.size] = zombies[i];
342  }
343 
344  return enemies;
345 }
346 
347 //*****************************************************************************
348 // BOTTLES
349 //*****************************************************************************
350 
351 
352 #define MIN_CHARGES_IN_LEVEL 3
353 
355 {
356  level ‪flag::wait_till( "all_players_spawned" );
357 
358  n_spawned = 0;
359  n_charges = ( level.players.size + ‪MIN_CHARGES_IN_LEVEL );
360  a_e_spawnpoints = array::randomize( ‪struct::get_array( "zod_shield_charge" ) );
361 
362  foreach ( e_spawnpoint in a_e_spawnpoints )
363  {
364  if ( ‪IS_TRUE( e_spawnpoint.spawned ) )
365  {
366  n_spawned++;
367  }
368  }
369 
370  foreach ( e_spawnpoint in a_e_spawnpoints )
371  {
372  if ( n_spawned < n_charges )
373  {
374  if ( !‪IS_TRUE( e_spawnpoint.spawned ) )
375  {
376  e_spawnpoint thread ‪create_bottle_unitrigger( e_spawnpoint.origin, e_spawnpoint.angles );
377  n_spawned++;
378  }
379  }
380  else
381  {
382  break;
383  }
384  }
385 
386  level waittill( "start_of_round" );
387  level thread ‪spawn_recharge_tanks();
388 }
389 
390 function ‪create_bottle_unitrigger( v_origin, v_angles )
391 {
392  s_struct = self;
393 
394  if ( self == level )
395  {
396  s_struct = SpawnStruct();
397  s_struct.origin = v_origin;
398  s_struct.angles = v_angles;
399  }
400 
401  width = 128;
402  height = 128;
403  length = 128;
404 
405  unitrigger_stub = SpawnStruct();
406  unitrigger_stub.origin = v_origin;
407  unitrigger_stub.angles = v_angles;
408  unitrigger_stub.script_unitrigger_type = "unitrigger_box_use";
409  unitrigger_stub.cursor_hint = "HINT_NOICON";
410  unitrigger_stub.script_width = width;
411  unitrigger_stub.script_height = height;
412  unitrigger_stub.script_length = length;
413  unitrigger_stub.require_look_at = false;
414 
415  // store the model of the bottle pickup
416  unitrigger_stub.mdl_shield_recharge = ‪Spawn( "script_model", v_origin );
417  modelname = ‪MODEL_SHIELD_RECHARGE;
418  if ( isdefined( s_struct.model ) && IsString( s_struct.model ) )
419  modelname = s_struct.model;
420  unitrigger_stub.mdl_shield_recharge SetModel( modelname );
421  unitrigger_stub.mdl_shield_recharge.angles = v_angles;
422 
423  s_struct.spawned = true;
424  unitrigger_stub.shield_recharge_spawnpoint = s_struct;
425 
426  unitrigger_stub.prompt_and_visibility_func = &‪bottle_trigger_visibility;
428 
429  return unitrigger_stub;
430 }
431 
432 // self = unitrigger
434 {
435  self SetHintString( &"ZOMBIE_PICKUP_BOTTLE" );
436 
437 
438 
439  // visibility
440  if ( !( ‪IS_TRUE(player.hasRiotShield) ) || ( ( player GetAmmoCount( player.weaponRiotshield ) ) == player.weaponRiotshield.maxammo ) )
441  {
442  b_is_invis = true;
443  }
444  else
445  {
446  b_is_invis = false;
447  }
448  self setInvisibleToPlayer( player, b_is_invis );
449 
450  return !b_is_invis;
451 }
452 
453 // self = unitrigger
455 {
456  while( true )
457  {
458  self waittill( "trigger", player ); // wait until someone uses the trigger
459 
460  if( player ‪zm_utility::in_revive_trigger() ) // revive triggers override trap triggers
461  {
462  continue;
463  }
464 
465  if( ‪IS_DRINKING( player.is_drinking ) )
466  {
467  continue;
468  }
469 
470  if( !‪zm_utility::is_player_valid( player ) ) // ensure valid player
471  {
472  continue;
473  }
474 
475  level thread ‪bottle_trigger_activate( self.stub, player );
476 
477  break;
478  }
479 }
480 
481 function ‪bottle_trigger_activate( trig_stub, player )
482 {
483  trig_stub notify( "bottle_collected" );
484 
485  if ( ‪IS_TRUE(player.hasRiotShield) )
486  {
487  player ‪zm_equipment::change_ammo( player.weaponRiotshield, 1 );
488  }
489 
490  v_origin = trig_stub.mdl_shield_recharge.origin;
491  v_angles = trig_stub.mdl_shield_recharge.angles;
492 
493  trig_stub.mdl_shield_recharge Delete();
494 
495  // remove this unitrigger, now that the object is picked up
497 
498  trig_stub.shield_recharge_spawnpoint.spawned = undefined;
499 }
500 
501 
‪riotshield_get_juke_enemies_in_range
‪function riotshield_get_juke_enemies_in_range()
Definition: _zm_weap_rocketshield.gsc:289
‪ROCKETSHIELD_REFILL_ON_MAX_AMMO
‪#define ROCKETSHIELD_REFILL_ON_MAX_AMMO
Definition: _zm_weap_rocketshield.gsc:55
‪ROCKETSHIELD_NAME
‪#define ROCKETSHIELD_NAME
Definition: _zm_weap_rocketshield.gsc:47
‪watchFirstUse
‪function watchFirstUse()
Definition: _zm_weap_rocketshield.gsc:111
‪on_player_spawned
‪function on_player_spawned()
Definition: _zm_weap_rocketshield.gsc:125
‪ROCKETSHIELD_MODEL
‪#define ROCKETSHIELD_MODEL
Definition: _zm_weap_rocketshield.gsc:50
‪on_player_connect
‪function on_player_connect()
Definition: _zm_weap_rocketshield.gsc:102
‪VERSION_SHIP
‪#define VERSION_SHIP
Definition: version.gsh:36
‪RIOTSHIELD_JUKE_KILL_HALFWIDTH
‪#define RIOTSHIELD_JUKE_KILL_HALFWIDTH
Definition: _zm_weap_rocketshield.gsc:285
‪get_array
‪function get_array(kvp_value, kvp_key="targetname")
Definition: struct.csc:34
‪set_zombie_var
‪function set_zombie_var(zvar, value, is_float=false, column=1, is_team_based=false)
Definition: zombie_utility.gsc:1434
‪bottle_trigger_visibility
‪function bottle_trigger_visibility(player)
Definition: _zm_weap_rocketshield.gsc:433
‪player_watch_shield_juke
‪function player_watch_shield_juke()
Definition: _zm_weap_rocketshield.gsc:214
‪IS_TRUE
‪#define IS_TRUE(__a)
Definition: shared.gsh:251
‪MIN_CHARGES_IN_LEVEL
‪#define MIN_CHARGES_IN_LEVEL
Definition: _zm_weap_rocketshield.gsc:352
‪is_player_valid
‪function is_player_valid(player, checkIgnoreMeFlag, ignore_laststand_players)
Definition: skeleton.gsc:256
‪player_watch_upgraded_pickup_from_table
‪function player_watch_upgraded_pickup_from_table()
Definition: _zm_weap_rocketshield.gsc:180
‪buy
‪function buy(equipment)
Definition: _zm_equipment.gsc:374
‪riotshield_melee_juke
‪function riotshield_melee_juke(weapon)
Definition: _zm_weap_rocketshield.gsc:238
‪change_ammo
‪function change_ammo(equipment, change)
Definition: _zm_equipment.gsc:634
‪ROCKET_SHIELD_HINT_TEXT
‪#define ROCKET_SHIELD_HINT_TEXT
Definition: _zm_weap_rocketshield.gsc:107
‪shield_recharge_trigger_think
‪function shield_recharge_trigger_think()
Definition: _zm_weap_rocketshield.gsc:454
‪unregister_unitrigger
‪function unregister_unitrigger(unitrigger_stub)
Definition: _zm_unitrigger.gsc:173
‪create_bottle_unitrigger
‪function create_bottle_unitrigger(v_origin, v_angles)
Definition: _zm_weap_rocketshield.gsc:390
‪ROCKETSHIELD_WEAPON
‪#define ROCKETSHIELD_WEAPON
Definition: _zm_weap_rocketshield.gsc:48
‪DEFAULT
‪#define DEFAULT(__var, __default)
Definition: shared.gsh:270
‪on_spawned
‪function on_spawned(func, obj)
Definition: callbacks_shared.csc:245
‪spawn_recharge_tanks
‪function spawn_recharge_tanks()
Definition: _zm_weap_rocketshield.gsc:354
‪REGISTER_SYSTEM_EX
‪#define REGISTER_SYSTEM_EX(__sys, __func_init_preload, __func_init_postload, __reqs)
Definition: shared.gsh:209
‪check_weapon_ammo
‪function check_weapon_ammo(weapon)
Definition: _zm_weap_rocketshield.gsc:168
‪player_damage_rocketshield
‪function player_damage_rocketshield(iDamage, bHeld, fromCode=false, smod="MOD_UNKNOWN")
Definition: _zm_weap_rocketshield.gsc:200
‪show_hint_text
‪function show_hint_text(str_text_to_show, b_should_blink=false, str_turn_off_notify=HINT_TEXT_TURN_OFF_NOTIFY, n_display_time=HINT_TEXT_DISPLAY_TIME_DEFAULT)
Definition: _util.gsc:1042
‪bottle_trigger_activate
‪function bottle_trigger_activate(trig_stub, player)
Definition: _zm_weap_rocketshield.gsc:481
‪MODEL_SHIELD_RECHARGE
‪#define MODEL_SHIELD_RECHARGE
Definition: _zm_weap_rocketshield.gsc:52
‪ROCKETSHIELD_WEAPON_UPGRADED
‪#define ROCKETSHIELD_WEAPON_UPGRADED
Definition: _zm_weap_rocketshield.gsc:49
‪wait_till
‪function wait_till(str_flag)
Definition: flag_shared.csc:189
‪player_watch_max_ammo
‪function player_watch_max_ammo()
Definition: _zm_weap_rocketshield.gsc:151
‪player_watch_ammo_change
‪function player_watch_ammo_change()
Definition: _zm_weap_rocketshield.gsc:134
‪include
‪function include(equipment_name)
Definition: _zm_equipment.csc:131
‪player_damage_shield
‪function player_damage_shield(iDamage, bHeld, fromCode=false, smod="MOD_UNKNOWN")
Definition: _zm_weap_riotshield.gsc:191
‪Spawn
‪function Spawn(parent, onDeathCallback)
Definition: _flak_drone.gsc:427
‪__main__
‪function __main__()
Definition: _zm_weap_rocketshield.gsc:73
‪init
‪function init()
Definition: struct.csc:1
‪riotshield_fling_zombie
‪function riotshield_fling_zombie(player, fling_vec, index)
Definition: _zm_weap_riotshield.gsc:267
‪set
‪function set(str_field_name, n_value)
Definition: clientfield_shared.gsc:34
‪IS_EQUAL
‪#define IS_EQUAL(__a, __b)
Definition: shared.gsh:250
‪RIOTSHIELD_JUKE_DISTANCE
‪#define RIOTSHIELD_JUKE_DISTANCE
Definition: _zm_weap_rocketshield.gsc:284
‪set_ammo_driven
‪function set_ammo_driven(equipment_name, start, refill_max_ammo=false)
Definition: _zm_equipment.gsc:132
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪register_for_level
‪function register_for_level(weaponname)
Definition: _zm_equipment.gsc:675
‪in_revive_trigger
‪function in_revive_trigger()
Definition: _zm_utility.gsc:1684
‪on_connect
‪function on_connect()
Definition: _arena.gsc:20
‪__init__
‪function __init__()
Definition: _zm_weap_rocketshield.gsc:57
‪ROCKET_SHIELD_HINT_TIMER
‪#define ROCKET_SHIELD_HINT_TIMER
Definition: _zm_weap_rocketshield.gsc:108
‪IS_DRINKING
‪#define IS_DRINKING(_is_drinking)
Definition: _zm_utility.gsh:1
‪register_static_unitrigger
‪function register_static_unitrigger(unitrigger_stub, trigger_func, recalculate_zone)
Definition: _zm_unitrigger.gsc:236
‪ARCHETYPE_MARGWA
‪#define ARCHETYPE_MARGWA
Definition: archetype_shared.gsh:16
‪RIOTSHIELD_JUKE_KILL_VERT_LIMIT
‪#define RIOTSHIELD_JUKE_KILL_VERT_LIMIT
Definition: _zm_weap_rocketshield.gsc:287
‪WAIT_SERVER_FRAME
‪#define WAIT_SERVER_FRAME
Definition: shared.gsh:265