IL-GSC/BO1/PC/ZM/maps/_lights.gsc
2024-02-18 17:32:07 -05:00

283 lines
6.2 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include common_scripts\utility;
#include maps\_utility;
generic_pulsing()
{
if ( GetDvar( #"r_reflectionProbeGenerate" ) == "1" )
{
self setLightIntensity( 0 );
return;
}
on = self getLightIntensity();
off = .05;
curr = on;
transition_on = .3;
transition_off = .6;
increment_on = ( on - off ) / ( transition_on / .05 );
increment_off = ( on - off ) / ( transition_off / .05 );
for ( ;; )
{
time = 0;
while ( ( time < transition_off ) )
{
curr -= increment_off;
self setLightIntensity( curr );
time += .05;
wait( .05 );
}
wait( 1 );
time = 0;
while ( time < transition_on )
{
curr += increment_on;
self setLightIntensity( curr );
time += .05;
wait( .05 );
}
wait( .5 );
}
}
generic_double_strobe()
{
if ( GetDvar( #"r_reflectionProbeGenerate" ) == "1" )
{
self setLightIntensity( 0 );
return;
}
on = self getLightIntensity();
off = .05;
linked_models = false;
lit_model = undefined;
unlit_model = undefined;
linked_lights = false;
linked_light_ents = [];
if (isdefined ( self.script_noteworthy ) )
{
linked_things = getentarray ( self.script_noteworthy, "targetname" );
for ( i = 0; i < linked_things.size; i++ )
{
if ( linked_things[ i ].classname == "light" )
{
linked_lights = true;
linked_light_ents[ linked_light_ents.size ] = linked_things[ i ];
}
if ( linked_things[ i ].classname == "script_model" )
{
lit_model = linked_things[ i ];
unlit_model = getent ( lit_model.target, "targetname" );
linked_models = true;
}
}
}
for ( ;; )
{
self setLightIntensity( off );
if ( linked_models )
{
lit_model hide();
unlit_model show();
}
wait( .8 );
self setLightIntensity( on );
if ( linked_models )
{
lit_model show();
unlit_model hide();
}
wait( .1 );
self setLightIntensity( off );
if ( linked_models )
{
lit_model hide();
unlit_model show();
}
wait( .12 );
self setLightIntensity( on );
if ( linked_models )
{
lit_model show();
unlit_model hide();
}
wait( .1 );
}
}
getclosests_flickering_model( origin )
{
array = getentarray("light_flicker_model","targetname");
return_array = [];
model = getclosest( origin, array );
if(isdefined(model))
return_array[0] = model;
return return_array;
}
generic_flickering()
{
if ( GetDvar( #"r_reflectionProbeGenerate" ) == "1" )
{
self setLightIntensity( 0 );
return;
}
min_flickerless_time = 0.2;
max_flickerless_time = 1.5;
if( IsDefined( self.script_wait_min ) )
{
min_flickerless_time = self.script_wait_min;
}
if( IsDefined( self.script_wait_max ) )
{
max_flickerless_time = self.script_wait_max;
}
min_flicker_delay = 0.05;
max_flicker_delay = 0.1;
if( IsDefined( self.script_delay_min ) )
{
min_flicker_delay = self.script_delay_min;
}
if( IsDefined( self.script_delay_max ) )
{
max_flicker_delay = self.script_delay_max;
}
min_intensity = 0;
max_intensity = 0.3;
if( IsDefined( self.script_intensity_min ) )
{
min_intensity = self.script_intensity_min;
}
if( IsDefined( self.script_intensity_max ) )
{
max_intensity = self.script_intensity_max;
}
min_burst = 1;
max_burst = 10;
if( IsDefined( self.script_burst_min ) )
{
min_burst = self.script_burst_min;
}
if( IsDefined( self.script_burst_max ) )
{
max_burst = self.script_burst_max;
}
on = self GetLightIntensity();
off = 0;
curr = on;
num = 0;
linked_models = false;
lit_model = undefined;
unlit_model = undefined;
linked_lights = false;
linked_light_ents = [];
linked_things = [];
if( isdefined( self.script_noteworthy ) )
{
linked_things = GetEntArray( self.script_noteworthy, "targetname" );
}
if( !linked_things.size )
{
linked_things = getclosests_flickering_model( self.origin );
}
for( i = 0; i < linked_things.size; i++ )
{
if( linked_things[ i ].classname == "light" )
{
linked_lights = true;
linked_light_ents[ linked_light_ents.size ] = linked_things[ i ];
}
if( linked_things[ i ].classname == "script_model" )
{
lit_model = linked_things[ i ];
unlit_model = GetEnt( lit_model.target, "targetname" );
linked_models = true;
}
}
for( ;; )
{
num = RandomIntRange( min_burst, max_burst );
while( num )
{
wait( RandomFloatRange( min_flicker_delay, max_flicker_delay ) );
if( curr > ( on * 0.5 ) )
{
curr = RandomFloatRange( min_intensity, max_intensity );
if ( linked_models )
{
lit_model Hide();
unlit_model Show();
}
}
else
{
curr = on;
if ( linked_models )
{
lit_model Show();
unlit_model Hide();
}
}
self SetLightIntensity( curr );
if( linked_lights)
{
for( i = 0; i < linked_light_ents.size; i++ )
{
linked_light_ents[ i ] SetLightIntensity( curr );
}
}
num--;
}
self SetLightIntensity( on );
if( linked_lights)
{
for( i = 0; i < linked_light_ents.size; i++ )
{
linked_light_ents[ i ] SetLightIntensity( on );
}
}
if( linked_models )
{
lit_model Show();
unlit_model Hide();
}
wait( RandomFloatRange( min_flickerless_time, max_flickerless_time ) );
}
}
fire_flicker()
{
min_delay = 0.1;
max_delay = 0.5;
if( IsDefined( self.script_delay_min ) )
{
min_delay = self.script_delay_min;
}
if( IsDefined( self.script_delay_max ) )
{
max_delay = self.script_delay_max;
}
min_intensity = 0.25;
max_intensity = 1;
if( IsDefined( self.script_intensity_min ) )
{
min_intensity = self.script_intensity_min;
}
if( IsDefined( self.script_intensity_max ) )
{
max_intensity = self.script_intensity_max;
}
intensity = self GetLightIntensity();
curr_intensity = intensity;
for( ;; )
{
temp_intensity = intensity * RandomFloatRange( min_intensity, max_intensity );
time = RandomFloatRange( min_delay, max_delay );
steps = time * 20;
div = ( curr_intensity - temp_intensity ) / steps;
for( i = 0; i < steps; i++ )
{
curr_intensity -= div;
if( curr_intensity < 0 )
{
curr_intensity = 0;
}
self SetLightIntensity( curr_intensity );
wait( 0.05 );
}
curr_intensity = temp_intensity;
}
}