1 #using scripts\codescripts\struct;
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\clientfield_shared;
5 #using scripts\shared\duplicaterender_mgr;
6 #using scripts\shared\fx_shared;
7 #using scripts\shared\system_shared;
8 #using scripts\shared\util_shared;
9 #using scripts\shared\visionset_mgr_shared;
11 #insert scripts\shared\duplicaterender.gsh;
12 #insert scripts\shared\shared.gsh;
13 #insert scripts\shared\version.gsh;
15 #insert scripts\zm\_zm_weap_raygun_mark3.gsh;
17 #namespace _zm_weap_raygun_mark3;
19 #precache( "client_fx", "dlc3/stalingrad/fx_raygun_l_projectile_blackhole_sm_hit" );
20 #precache( "client_fx", "dlc3/stalingrad/fx_raygun_l_projectile_blackhole_lg_hit" );
21 #precache( "client_fx", "dlc3/stalingrad/fx_raygun_l_projectile_blackhole_sm" );
22 #precache( "client_fx", "dlc3/stalingrad/fx_raygun_l_projectile_blackhole_lg" );
24 #define DISSOLVE_MATERIAL "mc/mtl_c_zom_dlc3_zombie_dissolve_base"
34 level._effect[
"raygun_ai_slow_vortex_small" ] =
"dlc3/stalingrad/fx_raygun_l_projectile_blackhole_sm_hit";
35 level._effect[
"raygun_ai_slow_vortex_large" ] =
"dlc3/stalingrad/fx_raygun_l_projectile_blackhole_lg_hit";
37 level._effect[
"raygun_slow_vortex_small" ] =
"dlc3/stalingrad/fx_raygun_l_projectile_blackhole_sm";
38 level._effect[
"raygun_slow_vortex_large" ] =
"dlc3/stalingrad/fx_raygun_l_projectile_blackhole_lg";
62 if ( weapon === level.w_raygun_mark3 || weapon === level.w_raygun_mark3_upgraded )
74 player = GetLocalPlayer( n_local_client );
75 player endon(
"death" );
79 player waittill(
"weapon_change", weapon );
83 player MapShaderConstant( n_local_client, 0,
"scriptVector2", 0, 1, 0, 0 );
88 player notify(
"glow_monitor" );
89 player MapShaderConstant( n_local_client, 0,
"scriptVector2", 0, 0, 0, 0 );
99 self notify(
"glow_monitor" );
100 self endon(
"glow_monitor" );
101 self endon(
"death" );
107 self MapShaderConstant( n_local_client, 0,
"scriptVector2", 0, 0, 0, 0 );
111 self MapShaderConstant( n_local_client, 0,
"scriptVector2", 0, 1, 0, 0 );
120 self endon(
"glow_monitor" );
121 self endon(
"death" );
125 self waittill(
"notetrack", str_note );
127 if ( str_note == str_notetrack )
136 function slow_vortex_fx( n_local_client, n_old, n_new, b_new_ent, b_initial_snap, str_field, b_was_time_jump )
138 if ( isdefined(
self.fx_slow_vortex ) )
140 KillFx( n_local_client,
self.fx_slow_vortex );
147 self.fx_slow_vortex = PlayFxOnTag( n_local_client, level._effect[
"raygun_slow_vortex_small" ],
self,
"tag_origin" );
151 self.fx_slow_vortex = PlayFxOnTag( n_local_client, level._effect[
"raygun_slow_vortex_large" ],
self,
"tag_origin" );
152 self PlayRumbleOnEntity( n_local_client,
"artillery_rumble" );
161 function ai_slow_vortex_fx( n_local_client, n_old, n_new, b_new_ent, b_initial_snap, str_field, b_was_time_jump )
167 self.fx_ai_slow_vortex = PlayFxOnTag( n_local_client, level._effect[
"raygun_ai_slow_vortex_small" ],
self,
"J_SpineUpper" );
172 self.fx_ai_slow_vortex = PlayFxOnTag( n_local_client, level._effect[
"raygun_ai_slow_vortex_large" ],
self,
"J_SpineUpper" );
178 if ( isdefined(
self.fx_ai_slow_vortex ) )
180 KillFx( n_local_client,
self.fx_ai_slow_vortex );
190 self notify(
"vortex_shake_and_rumble" );
191 self endon(
"vortex_shake_and_rumble" );
193 self endon(
"entity_shutdown" );
197 str_rumble =
"raygun_mark3_vortex_sm";
201 str_rumble =
"raygun_mark3_vortex_lg";
204 while( isdefined(
self ) )
206 self PlayRumbleOnEntity( n_local_client, str_rumble );
215 self endon(
"entity_shutdown" );
217 const N_STEP = 0.0166;
219 if ( !isdefined(
self.n_blacken ) )
226 while ( isdefined(
self ) &&
self.n_blacken < 1.0 )
228 self.n_blacken += 0.2;
229 self MapShaderConstant( n_local_client, 0,
"scriptVector0",
self.n_blacken );
235 while ( isdefined(
self ) &&
self.n_blacken > 0.0 )
237 self.n_blacken -= 0.2;
238 self MapShaderConstant( n_local_client, 0,
"scriptVector0",
self.n_blacken );
247 function ai_disintegrate( n_local_client, n_old, n_new, b_new_ent, b_initial_snap, str_field, b_was_time_jump )
249 self endon(
"entity_shutdown" );
251 const N_STEP = 0.0166;
258 while ( isdefined(
self ) &&
self.n_dissolve > 0 )
260 self MapShaderConstant( n_local_client, 0,
"scriptVector0",
self.n_dissolve );
262 self.n_dissolve -= N_STEP;
266 if ( isdefined(
self ) )
268 self MapShaderConstant( n_local_client, 0,
"scriptVector0", 0.0 );