‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_zm_weap_raygun_mark3.gsc
Go to the documentation of this file.
1 
2 //#using scripts\codescripts\struct;
3 //
4 #using scripts\shared\ai_shared;
5 #using scripts\shared\callbacks_shared;
6 #using scripts\shared\clientfield_shared;
7 #using scripts\shared\flag_shared;
8 #using scripts\shared\scene_shared;
9 #using scripts\shared\system_shared;
10 #using scripts\shared\util_shared;
11 #using scripts\shared\visionset_mgr_shared;
12 
13 #using scripts\zm\_util;
14 #using scripts\zm\_zm;
15 #using scripts\zm\_zm_audio;
16 #using scripts\zm\_zm_spawner;
17 #using scripts\zm\_zm_utility;
18 
19 #insert scripts\shared\shared.gsh;
20 #insert scripts\shared\version.gsh;
21 #insert scripts\zm\_zm_utility.gsh;
22 
23 #insert scripts\zm\_zm_weap_raygun_mark3.gsh;
24 
25 
26 #define N_RAYGUN_MARK3LH_VORTEX_DURATION 3000 // in ms
27 #define N_RAYGUN_MARK3LH_UPGRADED_VORTEX_DURATION 3000 // in ms
28 
29 #define N_RAYGUN_MARK3LH_SLOWDOWN_RATE 0.7
30 #define N_RAYGUN_MARK3LH_UPGRADED_SLOWDOWN_RATE 0.5
31 
32 #define N_RAYGUN_MARK3LH_SLOWDOWN_DURATION 2.0
33 #define N_RAYGUN_MARK3LH_UPGRADED_SLOWDOWN_DURATION 3.0
34 
35 #define N_RAYGUN_MARK3LH_VORTEX_RANGE_SM 128
36 #define N_RAYGUN_MARK3LH_VORTEX_RANGE_LG 128
37 
38 #define N_RAYGUN_MARK3LH_VORTEX_PULSE_INTERVAL 0.5
39 
40 #define N_RAYGUN_MARK3LH_VORTEX_PULSE_DAMAGE_SM 50
41 #define N_RAYGUN_MARK3LH_VORTEX_PULSE_DAMAGE_LG 1000
42 #define N_RAYGUN_MARK3LH_UPGRADED_VORTEX_PULSE_DAMAGE_SM 100
43 #define N_RAYGUN_MARK3LH_UPGRADED_VORTEX_PULSE_DAMAGE_LG 5000
44 
45 #define N_RAYGUN_MARK3_VORTEX_Z_OFFSET 32 // How far off the ground we should default position the vortex
46 
47 // Screen FX
48 // Prioritized below Beast mode and Parasite/Elemental round screen overlays
49 #define N_RAYGUN_MARK3_VORTEX_ENTER_DURATION 0.25
50 #define N_RAYGUN_MARK3_VORTEX_LOOP_DURATION 2.0
51 #define N_RAYGUN_MARK3_VORTEX_EXIT_DURATION 0.25
52 
53 
54 #precache( "model", "p7_fxanim_zm_stal_ray_gun_ball_mod" );
55 
56 #namespace _zm_weap_raygun_mark3;
57 
58 ‪REGISTER_SYSTEM_EX( "zm_weap_raygun_mark3", &‪__init__, &‪__main__, undefined )
59 
60 
61 function ‪__init__()
62 {
63  level.w_raygun_mark3 = GetWeapon( ‪STR_RAYGUN_MARK3_WEAPON );
64  level.w_raygun_mark3lh = GetWeapon( ‪STR_RAYGUN_MARK3LH_WEAPON );
65  level.w_raygun_mark3_upgraded = GetWeapon( ‪STR_RAYGUN_MARK3_UPGRADED_WEAPON );
66  level.w_raygun_mark3lh_upgraded = GetWeapon( ‪STR_RAYGUN_MARK3LH_UPGRADED_WEAPON );
67 
70 
72 
73  ‪clientfield::register( "scriptmover", "slow_vortex_fx", ‪VERSION_DLC3, 2, "int" );
74 
75  ‪clientfield::register( "actor", "ai_disintegrate", ‪VERSION_DLC3, 1, "int" );
76  ‪clientfield::register( "vehicle", "ai_disintegrate", ‪VERSION_DLC3, 1, "int" );
77 
78  ‪clientfield::register( "actor", "ai_slow_vortex_fx", ‪VERSION_DLC3, 2, "int" );
79  ‪clientfield::register( "vehicle", "ai_slow_vortex_fx", ‪VERSION_DLC3, 2, "int" );
80 
83 
85 }
86 
87 function ‪__main__()
88 {
89 
90 }
91 
92 
93 // Was Damage from the left-hand slow gun?
94 function ‪is_slow_raygun( weapon )
95 {
96  if ( weapon === level.w_raygun_mark3lh || weapon === level.w_raygun_mark3lh_upgraded )
97  {
98  return true;
99  }
100 
101  return false;
102 }
103 
104 
105 // Was Damage was from the right-hand beam gun?
106 function ‪is_beam_raygun( weapon )
107 {
108  if ( weapon === level.w_raygun_mark3 || weapon === level.w_raygun_mark3_upgraded )
109  {
110  return true;
111  }
112 
113  return false;
114 }
115 
116 
117 // Repositions Vortex damage origin if too close to a horizontal surface on the navmesh
118 function ‪raygun_vortex_reposition( v_impact_origin )
119 {
120  v_nearest_navmesh_point = GetClosestPointOnNavMesh( v_impact_origin, 50, 32 );
121  if ( isdefined(v_nearest_navmesh_point) )
122  {
123  v_vortex_origin = v_nearest_navmesh_point + ( 0, 0, ‪N_RAYGUN_MARK3_VORTEX_Z_OFFSET);
124  }
125  else
126  {
127  v_vortex_origin = v_impact_origin;
128  }
129 
130  return v_vortex_origin;
131 }
132 
133 
134 // Track left-hand projectile impact
135 // self is a player
137 {
138  self endon("disconnect");
139 
140  while( true )
141  {
142  self waittill( "projectile_impact", w_weapon, v_pos, n_radius, e_projectile, v_normal );
143 
144  v_pos_final = ‪raygun_vortex_reposition( v_pos + ( v_normal*‪N_RAYGUN_MARK3_VORTEX_Z_OFFSET ) );
145 
146  if( ‪is_slow_raygun( w_weapon ) )
147  {
148  //TODO Adjust position if too low or too close to wall. Look at idgun.
149  self thread ‪start_slow_vortex( w_weapon, v_pos, v_pos_final, n_radius, e_projectile, v_normal );
150  }
151  }
152 }
153 
154 
155 // spawn a slow vortex
156 // self is a player
157 function ‪start_slow_vortex( w_weapon, v_pos, v_pos_final, n_radius, e_attacker, v_normal )
158 {
159  self endon( "disconnect" );
160 
161  mdl_vortex = ‪Spawn( "script_model", v_pos );
162  mdl_vortex SetModel( "p7_fxanim_zm_stal_ray_gun_ball_mod" );
163  playsoundatposition ("wpn_mk3_orb_created", mdl_vortex.origin);
164  mdl_vortex.angles = ( 270, 0, 0 );
165  mdl_vortex ‪clientfield::set( "slow_vortex_fx", ‪N_ZM_WEAP_RGM3_SLOW_VORTEX_SM );
166  ‪util::wait_network_frame(); // ensure this position is used over the network
167 
168  mdl_vortex MoveTo( v_pos_final, 0.1 ); // quickly move into position
169  ‪util::wait_network_frame(); // ensure this position is used over the network
170 
171  mdl_vortex.health = 100000;
172  mdl_vortex.takedamage = true;
173 
174  mdl_vortex thread ‪pulse_damage( self, w_weapon );
175  mdl_vortex thread ‪wait_for_beam_damage();
176 }
177 
178 // Periodically pulse damage to grab zombies in the area.
179 // self is the vortex blob model
180 function ‪pulse_damage( e_owner, w_weapon )
181 {
182  self endon( "death" );
183 
184  self.n_damage_type = ‪N_ZM_WEAP_RGM3_SLOW_VORTEX_SM;
185  self.n_end_time = GetTime() + ‪N_RAYGUN_MARK3LH_VORTEX_DURATION;
186  self.e_owner = e_owner;
187 
188  if ( w_weapon == level.w_raygun_mark3lh )
189  {
190  //playsoundatposition ("wpn_mk3_orb_zark", self.origin);
191  }
192  else
193  {
194  playsoundatposition ("wpn_mk3_orb_zark_far", self.origin);
195  }
196 
197  // Now periodically pulse damage
198  while ( GetTime() <= self.n_end_time )
199  {
200  if ( self.n_damage_type == ‪N_ZM_WEAP_RGM3_SLOW_VORTEX_SM )
201  {
203  //playsoundatposition ("wpn_mk3_orb_zark", self.origin);
204 
205  if ( w_weapon == level.w_raygun_mark3lh )
206  {
208  }
209  else
210  {
212  }
213  }
214  else // LG Vortex
215  {
217  playsoundatposition ("wpn_mk3_orb_zark_far", self.origin);
218 
219  if ( w_weapon == level.w_raygun_mark3lh )
220  {
222  }
223  else
224  {
226  }
227  }
228 
229  // Pulse Damage
230  n_radius_squared = n_radius * n_radius;
231  a_ai = GetAITeamArray( "axis" );
232  foreach( ai in a_ai )
233  {
234  if ( ‪IS_TRUE( ai.b_ignore_mark3_pulse_damage ) )
235  {
236  continue;
237  }
238 
239  if ( DistanceSquared( self.origin, ai.origin ) <= n_radius_squared )
240  {
241  ai thread ‪apply_vortex_fx( self.n_damage_type, ‪N_RAYGUN_MARK3LH_SLOWDOWN_DURATION );
242 
243  if ( ai.health > n_pulse_damage )
244  {
245  ai DoDamage( n_pulse_damage, self.origin, e_owner, self, undefined, "MOD_UNKNOWN", 0, w_weapon );
246  }
247  else if ( self.n_damage_type == ‪N_ZM_WEAP_RGM3_SLOW_VORTEX_LG )
248  {
249  ai thread ‪disintegrate_zombie( self, e_owner, w_weapon );
250  }
251  }
252  }
253 
254  // Check to see if any players are in the radius
255  foreach( e_player in level.activeplayers )
256  {
257  if( IsDefined(e_player) && !‪IS_TRUE( e_player.raygun_mark3_vision_on ) )
258  {
259  // If Player is within vortex range, apply vision overlay
260  if( Distance( e_player.origin, self.origin ) < Float( n_radius / 2 ) )
261  {
262  e_player thread ‪player_vortex_visionset();
263  }
264  }
265  }
266 
268  }
269 
270  // Vortex expired
271  self ‪clientfield::set( "slow_vortex_fx", 0 );
272 
273  playsoundatposition ("wpn_mk3_orb_disappear", self.origin);
274  self Delete();
275 }
276 
277 
278 // Vision overlay and blur when player enters vortex
279 // self == player
281 {
282  self notify( "player_vortex_visionset" );
283  self endon( "player_vortex_visionset" );
284 
285  self endon( "death" );
286 
289  self.raygun_mark3_vision_on = true;
290  wait 2.5; // minimal amount of time to keep it up
291 
292  self.raygun_mark3_vision_on = false;
293 }
294 
295 
296 // wait for damage
297 // self is a vortex model
299 {
300  self endon( "death" );
301  self playloopsound ("wpn_mk3_orb_loop");
302  while( true )
303  {
304  self waittill( "damage", n_damage, e_attacker, v_direction, v_point, str_means_of_death, str_tag_name, str_model_name, str_part_name, w_weapon );
305 
306  if ( ‪is_beam_raygun( w_weapon ) )
307  {
308  self stoploopsound();
309  self SetModel( "tag_origin" ); // remove the original vortex
310  self playloopsound ("wpn_mk3_orb_loop_activated");
311  self.takedamage = false;
312  self.n_damage_type = ‪N_ZM_WEAP_RGM3_SLOW_VORTEX_LG;
313  self ‪clientfield::set( "slow_vortex_fx", self.n_damage_type );
314  self.n_end_time = GetTime() + ‪N_RAYGUN_MARK3LH_UPGRADED_VORTEX_DURATION;
316  playsoundatposition ("wpn_mk3_orb_disappear", self.origin);
317  self Delete();
318  return;
319  }
320  else
321  {
322  self.health = 100000;
323  }
324  }
325 }
326 
327 
328 // Zombies damaged by the left-hand ray gun will beome slowed temporarily
329 // Self is a damaged entity
330 function ‪raygun_mark3_damage_response( str_mod, str_hit_location, v_hit_origin, e_player, n_amount, w_weapon, v_direction, str_tag, str_model, str_part, n_flags, e_inflictor, n_chargeLevel )
331 {
332  if ( isdefined( w_weapon ) )
333  {
334  if ( w_weapon == level.w_raygun_mark3lh || w_weapon == level.w_raygun_mark3lh_upgraded )
335  {
336  // Run override if available
337  if ( isdefined( self.func_raygun_mark3_damage_response ) )
338  {
339  return [[ self.func_raygun_mark3_damage_response ]]( str_mod, str_hit_location, v_hit_origin, e_player, n_amount, w_weapon, v_direction, str_tag, str_model, str_part, n_flags, e_inflictor, n_chargeLevel );
340  }
341 
342  // Add slowdown effect
343  if ( w_weapon == level.w_raygun_mark3lh )
344  {
346  return true;
347  }
348  else if ( w_weapon == level.w_raygun_mark3lh_upgraded )
349  {
351  return true;
352  }
353  }
354  }
355 
356  // Don't affect damage dealt
357  return false;
358 }
359 
360 
361 // Apply fx to affected AI
362 // self is an AI
363 function ‪apply_vortex_fx( n_damage_type, n_time )
364 {
365  self notify( "apply_vortex_fx" );
366  self endon( "apply_vortex_fx" );
367  self endon( "death" );
368 
369  if ( !‪IS_TRUE( self.b_vortex_fx_applied ) )
370  {
371  self.b_vortex_fx_applied = true;
372  if ( ‪IS_TRUE( self.allowPain ) )
373  {
374  self.b_old_allow_pain = true;
375  self ‪ai::disable_pain();
376  }
377 
378  if ( n_damage_type == ‪N_ZM_WEAP_RGM3_SLOW_VORTEX_SM )
379  {
380  self ‪clientfield::set( "ai_slow_vortex_fx", ‪N_ZM_WEAP_RGM3_SLOW_VORTEX_SM );
381  }
382  else
383  {
384  self ‪clientfield::set( "ai_slow_vortex_fx", ‪N_ZM_WEAP_RGM3_SLOW_VORTEX_LG );
385  }
386  }
387 
388  ‪util::waittill_any_timeout( n_time, "death", "apply_vortex_fx" );
389 
390  if ( ‪IS_TRUE( self.b_old_allow_pain ) )
391  {
392  self ‪ai::enable_pain();
393  }
394  self ‪clientfield::set( "ai_slow_vortex_fx", 0 );
395 }
396 
397 
398 function ‪disintegrate_zombie( e_inflictor, e_attacker, w_weapon )
399 {
400  self endon( "death" );
401 
402  if ( ‪IS_TRUE( self.b_disintegrating ) )
403  {
404  return;
405  }
406  self.b_disintegrating = true;
407 
408  // these scenes prevent death
409  self ‪clientfield::set( "ai_disintegrate", 1 );
410 
411  if ( IsVehicle( self ) )
412  {
413  self ‪ai::set_ignoreall( true );
414  wait 1.1;
415 
416  self Ghost();
417  self DoDamage( self.health, self.origin, e_attacker, e_inflictor, undefined, "MOD_UNKNOWN", 0, w_weapon );
418  }
419  else
420  {
421  self ‪scene::play( "cin_zm_dlc3_zombie_dth_deathray_0" + RandomIntRange( 1, 5 ), self );
422  self ‪clientfield::set( "ai_slow_vortex_fx", 0 );
424 
425  self Ghost(); // The corpse will appear normal, so we need to hide it.
426  self DoDamage( self.health, self.origin, e_attacker, e_inflictor, undefined, "MOD_UNKNOWN", 0, w_weapon );
427  }
428 }
‪player_vortex_visionset
‪function player_vortex_visionset()
Definition: _zm_weap_raygun_mark3.gsc:280
‪slowdown_ai
‪function slowdown_ai(str_type)
Definition: _zm_utility.gsc:6148
‪STR_RAYGUN_MARK3_UPGRADED_WEAPON
‪#define STR_RAYGUN_MARK3_UPGRADED_WEAPON
Definition: _zm_weap_raygun_mark3.gsh:5
‪activate
‪function activate()
Definition: traps_shared.gsc:655
‪N_RAYGUN_MARK3LH_VORTEX_PULSE_DAMAGE_LG
‪#define N_RAYGUN_MARK3LH_VORTEX_PULSE_DAMAGE_LG
Definition: _zm_weap_raygun_mark3.gsc:41
‪is_beam_raygun
‪function is_beam_raygun(weapon)
Definition: _zm_weap_raygun_mark3.gsc:106
‪raygun_mark3_damage_response
‪function raygun_mark3_damage_response(str_mod, str_hit_location, v_hit_origin, e_player, n_amount, w_weapon, v_direction, str_tag, str_model, str_part, n_flags, e_inflictor, n_chargeLevel)
Definition: _zm_weap_raygun_mark3.gsc:330
‪disintegrate_zombie
‪function disintegrate_zombie(e_inflictor, e_attacker, w_weapon)
Definition: _zm_weap_raygun_mark3.gsc:398
‪N_RAYGUN_MARK3LH_UPGRADED_VORTEX_PULSE_DAMAGE_LG
‪#define N_RAYGUN_MARK3LH_UPGRADED_VORTEX_PULSE_DAMAGE_LG
Definition: _zm_weap_raygun_mark3.gsc:43
‪disable_pain
‪function disable_pain()
Definition: ai_shared.gsc:80
‪pulse_damage
‪function pulse_damage(e_owner, w_weapon)
Definition: _zm_weap_raygun_mark3.gsc:180
‪play
‪function play(animation, v_origin_or_ent, v_angles_or_tag, n_rate=1, n_blend_in=.2, n_blend_out=.2, n_lerp, b_link=false)
Definition: animation_shared.csc:44
‪apply_vortex_fx
‪function apply_vortex_fx(n_damage_type, n_time)
Definition: _zm_weap_raygun_mark3.gsc:363
‪N_RAYGUN_MARK3LH_VORTEX_RANGE_LG
‪#define N_RAYGUN_MARK3LH_VORTEX_RANGE_LG
Definition: _zm_weap_raygun_mark3.gsc:36
‪start_slow_vortex
‪function start_slow_vortex(w_weapon, v_pos, v_pos_final, n_radius, e_attacker, v_normal)
Definition: _zm_weap_raygun_mark3.gsc:157
‪__init__
‪function __init__()
Definition: _zm_weap_raygun_mark3.gsc:61
‪VERSION_DLC3
‪#define VERSION_DLC3
Definition: version.gsh:95
‪waittill_any_timeout
‪function waittill_any_timeout(n_timeout, string1, string2, string3, string4, string5)
Definition: util_shared.csc:423
‪IS_TRUE
‪#define IS_TRUE(__a)
Definition: shared.gsh:251
‪N_RAYGUN_MARK3_VORTEX_ENTER_DURATION
‪#define N_RAYGUN_MARK3_VORTEX_ENTER_DURATION
Definition: _zm_weap_raygun_mark3.gsc:49
‪N_RAYGUN_MARK3LH_SLOWDOWN_DURATION
‪#define N_RAYGUN_MARK3LH_SLOWDOWN_DURATION
Definition: _zm_weap_raygun_mark3.gsc:32
‪__main__
‪function __main__()
Definition: _zm_weap_raygun_mark3.gsc:87
‪watch_raygun_impact
‪function watch_raygun_impact()
Definition: _zm_weap_raygun_mark3.gsc:136
‪STR_RAYGUN_MARK3LH_UPGRADED_WEAPON
‪#define STR_RAYGUN_MARK3LH_UPGRADED_WEAPON
Definition: _zm_weap_raygun_mark3.gsh:6
‪N_RAYGUN_MARK3_VORTEX_EXIT_DURATION
‪#define N_RAYGUN_MARK3_VORTEX_EXIT_DURATION
Definition: _zm_weap_raygun_mark3.gsc:51
‪register_slowdown
‪function register_slowdown(str_type, n_rate, n_duration)
Definition: _zm_utility.gsc:6131
‪wait_network_frame
‪function wait_network_frame(n_count=1)
Definition: util_shared.gsc:64
‪N_RAYGUN_MARK3_VORTEX_VISIONSET_PRIORITY
‪#define N_RAYGUN_MARK3_VORTEX_VISIONSET_PRIORITY
Definition: _zm_weap_raygun_mark3.gsh:13
‪REGISTER_SYSTEM_EX
‪#define REGISTER_SYSTEM_EX(__sys, __func_init_preload, __func_init_postload, __reqs)
Definition: shared.gsh:209
‪N_RAYGUN_MARK3LH_VORTEX_RANGE_SM
‪#define N_RAYGUN_MARK3LH_VORTEX_RANGE_SM
Definition: _zm_weap_raygun_mark3.gsc:35
‪N_RAYGUN_MARK3LH_VORTEX_PULSE_INTERVAL
‪#define N_RAYGUN_MARK3LH_VORTEX_PULSE_INTERVAL
Definition: _zm_weap_raygun_mark3.gsc:38
‪set_ignoreall
‪function set_ignoreall(val)
Definition: ai_shared.gsc:49
‪enable_pain
‪function enable_pain()
Definition: ai_shared.gsc:95
‪register_zombie_damage_callback
‪function register_zombie_damage_callback(func)
Definition: _zm_spawner.gsc:2114
‪Spawn
‪function Spawn(parent, onDeathCallback)
Definition: _flak_drone.gsc:427
‪wait_for_beam_damage
‪function wait_for_beam_damage()
Definition: _zm_weap_raygun_mark3.gsc:298
‪register_info
‪function register_info(type, name, version, lerp_step_count)
Definition: visionset_mgr_shared.csc:334
‪raygun_vortex_reposition
‪function raygun_vortex_reposition(v_impact_origin)
Definition: _zm_weap_raygun_mark3.gsc:118
‪N_RAYGUN_MARK3_VORTEX_LOOP_DURATION
‪#define N_RAYGUN_MARK3_VORTEX_LOOP_DURATION
Definition: _zm_weap_raygun_mark3.gsc:50
‪N_ZM_WEAP_RGM3_SLOW_VORTEX_SM
‪#define N_ZM_WEAP_RGM3_SLOW_VORTEX_SM
Definition: _zm_weap_raygun_mark3.gsh:8
‪N_RAYGUN_MARK3_VORTEX_VISIONSET_LERP_COUNT
‪#define N_RAYGUN_MARK3_VORTEX_VISIONSET_LERP_COUNT
Definition: _zm_weap_raygun_mark3.gsh:14
‪is_slow_raygun
‪function is_slow_raygun(weapon)
Definition: _zm_weap_raygun_mark3.gsc:94
‪N_RAYGUN_MARK3LH_VORTEX_PULSE_DAMAGE_SM
‪#define N_RAYGUN_MARK3LH_VORTEX_PULSE_DAMAGE_SM
Definition: _zm_weap_raygun_mark3.gsc:40
‪STR_RAYGUN_MARK3_WEAPON
‪#define STR_RAYGUN_MARK3_WEAPON
Definition: _zm_weap_raygun_mark3.gsh:3
‪set
‪function set(str_field_name, n_value)
Definition: clientfield_shared.gsc:34
‪N_RAYGUN_MARK3LH_UPGRADED_VORTEX_PULSE_DAMAGE_SM
‪#define N_RAYGUN_MARK3LH_UPGRADED_VORTEX_PULSE_DAMAGE_SM
Definition: _zm_weap_raygun_mark3.gsc:42
‪STR_RAYGUN_MARK3LH_WEAPON
‪#define STR_RAYGUN_MARK3LH_WEAPON
Definition: _zm_weap_raygun_mark3.gsh:4
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪N_RAYGUN_MARK3LH_UPGRADED_SLOWDOWN_DURATION
‪#define N_RAYGUN_MARK3LH_UPGRADED_SLOWDOWN_DURATION
Definition: _zm_weap_raygun_mark3.gsc:33
‪on_connect
‪function on_connect()
Definition: _arena.gsc:20
‪N_RAYGUN_MARK3LH_UPGRADED_SLOWDOWN_RATE
‪#define N_RAYGUN_MARK3LH_UPGRADED_SLOWDOWN_RATE
Definition: _zm_weap_raygun_mark3.gsc:30
‪ramp_in_out_thread_per_player
‪function ramp_in_out_thread_per_player(player, ramp_in, full_period, ramp_out)
Definition: visionset_mgr_shared.gsc:392
‪N_RAYGUN_MARK3LH_SLOWDOWN_RATE
‪#define N_RAYGUN_MARK3LH_SLOWDOWN_RATE
Definition: _zm_weap_raygun_mark3.gsc:29
‪N_ZM_WEAP_RGM3_SLOW_VORTEX_LG
‪#define N_ZM_WEAP_RGM3_SLOW_VORTEX_LG
Definition: _zm_weap_raygun_mark3.gsh:9
‪N_RAYGUN_MARK3LH_VORTEX_DURATION
‪#define N_RAYGUN_MARK3LH_VORTEX_DURATION
Definition: _zm_weap_raygun_mark3.gsc:26
‪N_RAYGUN_MARK3_VORTEX_Z_OFFSET
‪#define N_RAYGUN_MARK3_VORTEX_Z_OFFSET
Definition: _zm_weap_raygun_mark3.gsc:45
‪N_RAYGUN_MARK3LH_UPGRADED_VORTEX_DURATION
‪#define N_RAYGUN_MARK3LH_UPGRADED_VORTEX_DURATION
Definition: _zm_weap_raygun_mark3.gsc:27