1 #using scripts\shared\util_shared;
3 #using scripts\shared\array_shared;
4 #using scripts\shared\clientfield_shared;
5 #using scripts\shared\flag_shared;
6 #using scripts\shared\scene_shared;
7 #using scripts\shared\system_shared;
8 #using scripts\shared\util_shared;
10 #using scripts\zm\_zm_audio;
11 #using scripts\zm\_zm_score;
12 #using scripts\zm\_zm_utility;
14 #insert scripts\shared\shared.gsh;
15 #insert scripts\shared\version.gsh;
16 #insert scripts\zm\_zm_perks.gsh;
17 #insert scripts\zm\_zm_perk_random.gsh;
19 #precache( "client_fx", "dlc1/castle/fx_wonder_fizz_light_yellow" );
20 #precache( "client_fx", "dlc1/castle/fx_wonder_fizz_light_red" );
21 #precache( "client_fx", "dlc1/castle/fx_wonder_fizz_light_green" );
22 #precache( "client_fx", "zombie/fx_wonder_fizz_lightning_all" );
24 #namespace zm_perk_random;
44 level._effect[
"perk_machine_light_yellow" ] =
"dlc1/castle/fx_wonder_fizz_light_yellow";
45 level._effect[
"perk_machine_light_red" ] =
"dlc1/castle/fx_wonder_fizz_light_red";
46 level._effect[
"perk_machine_light_green" ] =
"dlc1/castle/fx_wonder_fizz_light_green";
48 level._effect[
"perk_machine_location" ] =
"zombie/fx_wonder_fizz_lightning_all";
65 if ( IsDemoPlaying() && GetDemoVersion() < 17 )
70 self notify(
"lightning_bolt_fx_toggle" + localClientNum );
71 self endon(
"lightning_bolt_fx_toggle" + localClientNum );
73 player = GetLocalPlayer( localClientNum );
74 player endon(
"entityshutdown" );
76 DEFAULT(
self._location_indicator, [] );
80 if ( ( newVal == 1 ) && !IsIGCActive( localClientNum ) )
82 if ( !isdefined(
self._location_indicator[ localClientNum ] ) )
84 self._location_indicator[ localClientNum ] = PlayFX( localClientNum, level._effect[
"perk_machine_location" ],
self.origin );
87 else if ( isdefined(
self._location_indicator[ localClientNum ] ) )
89 StopFX( localClientNum,
self._location_indicator[ localClientNum ] );
90 self._location_indicator[ localClientNum ] = undefined;
99 function zone_captured_cb( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
102 if ( !isdefined(
self.mapped_const ) )
104 self MapShaderConstant( localClientNum, 1,
"ScriptVector0" );
105 self.mapped_const =
true;
116 self SetShaderConstant( localClientNum, 1,
self.artifact_glow_setting, 0,
self.machinery_glow_setting, 0 );
126 piece.blinking =
true;
130 else if (newVal == 0)
133 self.blinking =
false;
139 level endon(
"demo_jump");
150 const N_CONVERT_FROM_SECONDS = 1000;
151 const N_RAMP_DURATION = .5;
153 n_start_time = GetTime();
155 n_end_time = n_start_time + N_RAMP_DURATION * N_CONVERT_FROM_SECONDS;
157 b_is_updating =
true;
162 if( n_time >= n_end_time )
164 n_shader_value = MapFloat( n_start_time, n_end_time, n_min_val, n_max_val, n_end_time );
165 b_is_updating =
false;
169 n_shader_value = MapFloat( n_start_time, n_end_time, n_min_val, n_max_val, n_time );
172 if ( isdefined(
self) )
174 self MapShaderConstant( localClientNum, 0,
"scriptVector2", n_shader_value, 0, 0 );
175 self MapShaderConstant( localClientNum, 0,
"scriptVector0", 0, n_shader_value, 0 );
176 self MapShaderConstant( localClientNum, 0,
"scriptVector0", 0, 0, n_shader_value );
185 if ( IsDefined(
self.perk_random_machine_fx ) )
190 if (!IsDefined(
self))
193 self.perk_random_machine_fx = [];
202 function set_light_state( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
206 foreach (n_piece_index
in a_n_piece_indices)
235 piece =
self ZBarrierGetPiece( piece_index );
237 if ( IsDefined(
self.perk_random_machine_fx[tag+piece_index][localClientNum] ) )
239 DeleteFX( localClientNum,
self.perk_random_machine_fx[tag+piece_index][localClientNum], deleteImmediate );
240 self.perk_random_machine_fx[tag+piece_index][localClientNum] = undefined;
243 if ( IsDefined( fx ) )
245 self.perk_random_machine_fx[tag+piece_index][localClientNum] = PlayFXOnTag( localClientNum, fx, piece, tag );
257 self SetShaderConstant( localClientNum, 1,
self.artifact_glow_setting, 0,
self.machinery_glow_setting, 0 );
275 self SetShaderConstant( localClientNum, 1,
self.artifact_glow_setting, 0,
self.machinery_glow_setting, 0 );
298 self endon(
"activation_electricity_finished" );
299 self endon(
"entityshutdown" );
301 if ( !isdefined(
self.glow_location ) )
303 self.glow_location =
spawn( localclientNum,
self.origin,
"script_model" );
304 self.glow_location.angles =
self.angles;
305 self.glow_location setmodel(
"tag_origin" );
322 self endon(
"entityshutdown" );
324 self notify(
"bottle_cycling_finished" );
332 if ( !IsDefined(
self ) )
337 self notify(
"activation_electricity_finished" );
338 if ( isdefined(
self.glow_location ) )
340 self.glow_location
delete();
346 self SetShaderConstant( localClientNum, 1,
self.artifact_glow_setting, 0,
self.machinery_glow_setting, 0 );
351 self endon(
"activation_electricity_finished" );
352 self endon(
"entityshutdown" );
355 while ( IsDefined(
self ) )
357 const ARTIFACT_PULSE_TIMESCALE = 0.2;
358 const ARTIFACT_PULSE_BASELINE = 0.75;
359 shader_amount = ( Sin( getrealtime() * ARTIFACT_PULSE_TIMESCALE ) );
360 if ( shader_amount < 0 )
364 shader_amount = ARTIFACT_PULSE_BASELINE - ( shader_amount * ARTIFACT_PULSE_BASELINE );
365 self.artifact_glow_setting = shader_amount;
367 self SetShaderConstant( localClientNum, 1,
self.artifact_glow_setting, 0,
self.machinery_glow_setting, 0 );
375 self endon(
"activation_electricity_finished" );
376 self endon(
"entityshutdown" );
380 if ( IsDefined(
self.glow_location ) )
391 self endon(
"bottle_cycling_finished" );
395 if ( IsDefined(
self.glow_location ) )