iw6-scripts/maps/mp/mp_dart_scriptlights.gsc
2024-02-13 13:20:49 +01:00

361 lines
9.7 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
init_lights();
}
init_lights()
{
common_scripts\utility::array_thread( getentarray( "mp_dart_discoball_light", "targetname" ), ::mp_dart_discoball_light );
common_scripts\utility::array_thread( getentarray( "mp_dart_discoball_light_reverse", "targetname" ), ::mp_dart_discoball_light_reverse );
var_0 = getentarray( "mp_dart_pulsing_light", "targetname" );
common_scripts\utility::array_thread( var_0, ::mp_dart_pulsing_light );
var_1 = getentarray( "mp_dart_tv_flicker", "targetname" );
common_scripts\utility::array_thread( var_1, ::mp_dart_tv_flicker );
}
mp_dart_discoball_light()
{
var_0 = 3;
var_1 = 150000;
self rotatevelocity( ( 0, var_0, 0 ), var_1 );
}
mp_dart_discoball_light_reverse()
{
var_0 = -3;
var_1 = 150000;
self rotatevelocity( ( 0, var_0, 0 ), var_1 );
}
mp_dart_restarteffect()
{
common_scripts\_createfx::restart_fx_looper();
}
ent_flag( var_0 )
{
return self.ent_flag[var_0];
}
mp_dart_ent_flag_clear( var_0 )
{
if ( self.ent_flag[var_0] )
{
self.ent_flag[var_0] = 0;
self notify( var_0 );
}
}
mp_dart_ent_flag_set( var_0 )
{
self.ent_flag[var_0] = 1;
self notify( var_0 );
}
mp_dart_ent_flag_init( var_0 )
{
if ( !isdefined( self.ent_flag ) )
{
self.ent_flag = [];
self.ent_flags_lock = [];
}
self.ent_flag[var_0] = 0;
}
mp_dart_is_light_entity( var_0 )
{
return var_0.classname == "light_spot" || var_0.classname == "light_omni" || var_0.classname == "light";
}
mp_dart_pulsing_light()
{
self endon( "stop_dynamic_light_behavior" );
self.linked_models = 0;
self.lit_models = undefined;
self.unlit_models = undefined;
self.linked_lights = 0;
self.linked_light_ents = [];
self.linked_prefab_ents = undefined;
self.linked_things = [];
if ( isdefined( self.script_linkto ) )
{
self.linked_prefab_ents = common_scripts\utility::get_linked_ents();
foreach ( var_1 in self.linked_prefab_ents )
{
if ( isdefined( var_1.script_noteworthy ) && var_1.script_noteworthy == "on" )
{
if ( !isdefined( self.lit_models ) )
self.lit_models[0] = var_1;
else
self.lit_models[self.lit_models.size] = var_1;
continue;
}
if ( isdefined( var_1.script_noteworthy ) && var_1.script_noteworthy == "off" )
{
if ( !isdefined( self.unlit_models ) )
self.unlit_models[0] = var_1;
else
self.unlit_models[self.unlit_models.size] = var_1;
self.unlit_model = var_1;
continue;
}
if ( mp_dart_is_light_entity( var_1 ) )
{
self.linked_lights = 1;
self.linked_light_ents[self.linked_light_ents.size] = var_1;
}
}
self.linked_models = 1;
}
thread mp_dart_generic_flicker_msg_watcher();
thread mp_dart_generic_flicker();
}
mp_dart_generic_flicker_msg_watcher()
{
mp_dart_ent_flag_init( "flicker_on" );
if ( isdefined( self.script_light_startnotify ) && self.script_light_startnotify != "nil" )
{
for (;;)
{
level waittill( self.script_light_startnotify );
mp_dart_ent_flag_set( "flicker_on" );
if ( isdefined( self.script_light_stopnotify ) && self.script_light_stopnotify != "nil" )
{
level waittill( self.script_light_stopnotify );
mp_dart_ent_flag_clear( "flicker_on" );
}
}
}
else
mp_dart_ent_flag_set( "flicker_on" );
}
mp_dart_generic_flicker_pause()
{
var_0 = self getlightintensity();
if ( !ent_flag( "flicker_on" ) )
{
if ( self.linked_models )
{
if ( isdefined( self.lit_models ) )
{
foreach ( var_2 in self.lit_models )
{
if ( isdefined( var_2.effect ) )
{
var_2.effect delete();
var_2.effect = undefined;
}
var_2 hide();
}
}
if ( isdefined( self.unlit_models ) )
{
foreach ( var_5 in self.unlit_models )
var_5 show();
}
}
self setlightintensity( 0 );
if ( self.linked_lights )
{
for ( var_7 = 0; var_7 < self.linked_light_ents.size; var_7++ )
self.linked_light_ents[var_7] setlightintensity( 0 );
}
self waittill( "flicker_on" );
self setlightintensity( var_0 );
if ( self.linked_lights )
{
for ( var_7 = 0; var_7 < self.linked_light_ents.size; var_7++ )
self.linked_light_ents[var_7] setlightintensity( var_0 );
}
if ( self.linked_models )
{
if ( isdefined( self.lit_models ) )
{
foreach ( var_2 in self.lit_models )
{
var_2 show();
if ( !isdefined( var_2.effect ) )
{
var_2.effect = spawnfx( level._effect["vfx_bulb_single"], var_2.origin );
triggerfx( var_2.effect );
common_scripts\utility::waitframe();
}
}
}
if ( isdefined( self.unlit_models ) )
{
foreach ( var_5 in self.unlit_models )
var_5 hide();
}
}
}
}
mp_dart_generic_flicker()
{
self endon( "stop_dynamic_light_behavior" );
self endon( "death" );
var_0 = 0.2;
var_1 = 1.0;
var_2 = self getlightintensity();
var_3 = 0;
var_4 = var_2;
var_5 = 0;
while ( isdefined( self ) )
{
mp_dart_generic_flicker_pause();
for ( var_5 = randomintrange( 1, 10 ); var_5; var_5-- )
{
mp_dart_generic_flicker_pause();
wait( randomfloatrange( 0.05, 0.1 ) );
if ( var_4 > 0.2 )
{
var_4 = randomfloatrange( 0, 0.3 );
if ( self.linked_models )
{
foreach ( var_7 in self.lit_models )
{
if ( isdefined( var_7.effect ) )
{
var_7.effect delete();
var_7.effect = undefined;
common_scripts\utility::waitframe();
}
var_7 hide();
}
}
if ( isdefined( self.unlit_models ) )
{
foreach ( var_10 in self.unlit_models )
var_10 show();
}
}
else
{
var_4 = var_2;
if ( self.linked_models )
{
if ( isdefined( self.lit_models ) )
{
foreach ( var_7 in self.lit_models )
{
var_7 show();
if ( !isdefined( var_7.effect ) )
{
var_7.effect = spawnfx( level._effect["vfx_bulb_single"], var_7.origin );
triggerfx( var_7.effect );
common_scripts\utility::waitframe();
}
}
}
if ( isdefined( self.unlit_models ) )
{
foreach ( var_10 in self.unlit_models )
var_10 hide();
}
}
}
self setlightintensity( var_4 );
if ( self.linked_lights )
{
for ( var_16 = 0; var_16 < self.linked_light_ents.size; var_16++ )
self.linked_light_ents[var_16] setlightintensity( var_4 );
}
}
mp_dart_generic_flicker_pause();
self setlightintensity( var_2 );
if ( self.linked_lights )
{
for ( var_16 = 0; var_16 < self.linked_light_ents.size; var_16++ )
self.linked_light_ents[var_16] setlightintensity( var_2 );
}
if ( self.linked_models )
{
if ( isdefined( self.lit_models ) )
{
foreach ( var_7 in self.lit_models )
{
var_7 show();
if ( !isdefined( var_7.effect ) )
{
var_7.effect = spawnfx( level._effect["vfx_bulb_single"], var_7.origin );
triggerfx( var_7.effect );
common_scripts\utility::waitframe();
}
}
}
if ( isdefined( self.unlit_models ) )
{
foreach ( var_10 in self.unlit_models )
var_10 hide();
}
}
wait( randomfloatrange( var_0, var_1 ) );
}
}
mp_dart_tv_flicker()
{
var_0 = self getlightintensity();
var_1 = var_0;
for (;;)
{
var_2 = randomfloatrange( var_0 * 0.3, var_0 * 0.9 );
var_3 = randomfloatrange( 0.05, 0.1 );
var_3 = var_3 * 15;
for ( var_4 = 0; var_4 < var_3; var_4++ )
{
var_5 = var_2 * ( var_4 / var_3 ) + var_1 * ( ( var_3 - var_4 ) / var_3 );
self setlightintensity( var_5 );
wait 0.05;
}
var_1 = var_2;
}
}