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

159 lines
3.9 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main( var_0, var_1 )
{
if ( !isdefined( var_0 ) )
var_0 = level.players;
thread init_and_run( var_0, var_1 );
}
init_and_run( var_0, var_1 )
{
var_1 = common_scripts\utility::ter_op( isdefined( var_1 ), var_1, 1 );
precachenightvisioncodeassets();
precacheshellshock( "nightvision" );
level.nightvision_dlight_effect = loadfx( "fx/misc/NV_dlight" );
level.nightvision_reflector_effect = loadfx( "fx/misc/ir_tapeReflect" );
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
{
var_3 = var_0[var_2];
var_3 maps\_utility::ent_flag_init( "nightvision_enabled" );
var_3 maps\_utility::ent_flag_init( "nightvision_on" );
var_3 maps\_utility::ent_flag_set( "nightvision_enabled" );
var_3 maps\_utility::ent_flag_init( "nightvision_dlight_enabled" );
var_3 maps\_utility::ent_flag_set( "nightvision_dlight_enabled" );
var_3 maps\_utility::ent_flag_clear( "nightvision_dlight_enabled" );
var_3 setactionslot( var_1, "nightvision" );
}
visionsetnight( "default_night" );
waittillframeend;
wait 0.05;
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
{
var_3 = var_0[var_2];
var_3 thread nightvision_toggle();
}
}
nightvision_toggle()
{
self endon( "death" );
for (;;)
{
self waittill( "night_vision_on" );
nightvision_on();
self waittill( "night_vision_off" );
nightvision_off();
wait 0.05;
}
}
nightvision_check( var_0 )
{
if ( !isdefined( var_0 ) )
var_0 = level.player;
return isdefined( var_0.nightvision_enabled );
}
nightvision_on()
{
self.nightvision_started = 1;
wait 1.0;
maps\_utility::ent_flag_set( "nightvision_on" );
self.nightvision_enabled = 1;
var_0 = getaiarray( "allies" );
common_scripts\utility::array_thread( var_0, ::enable_ir_beacon );
if ( !maps\_utility::exists_global_spawn_function( "allies", ::enable_ir_beacon ) )
maps\_utility::add_global_spawn_function( "allies", ::enable_ir_beacon );
}
enable_ir_beacon()
{
if ( !isai( self ) )
return;
if ( isdefined( self.has_no_ir ) )
return;
animscripts\shared::updatelaserstatus();
thread loopreflectoreffect();
}
loopreflectoreffect()
{
level endon( "night_vision_off" );
self endon( "death" );
for (;;)
{
playfxontag( level.nightvision_reflector_effect, self, "tag_reflector_arm_le" );
playfxontag( level.nightvision_reflector_effect, self, "tag_reflector_arm_ri" );
wait 0.1;
}
}
stop_reflector_effect()
{
if ( isdefined( self.has_no_ir ) )
return;
stopfxontag( level.nightvision_reflector_effect, self, "tag_reflector_arm_le" );
stopfxontag( level.nightvision_reflector_effect, self, "tag_reflector_arm_ri" );
}
nightvision_off()
{
self.nightvision_started = undefined;
wait 0.4;
level notify( "night_vision_off" );
if ( isdefined( level.nightvision_dlight ) )
level.nightvision_dlight delete();
self notify( "nightvision_shellshock_off" );
maps\_utility::ent_flag_clear( "nightvision_on" );
self.nightvision_enabled = undefined;
var_0 = 0;
for ( var_1 = 0; var_1 < level.players.size; var_1++ )
{
if ( nightvision_check( level.players[var_1] ) )
var_0 = 1;
}
if ( !var_0 )
maps\_utility::remove_global_spawn_function( "allies", ::enable_ir_beacon );
thread nightvision_effectsoff();
}
nightvision_effectsoff()
{
var_0 = getaiarray( "allies" );
foreach ( var_2 in var_0 )
{
var_2.usingnvfx = undefined;
var_2 animscripts\shared::updatelaserstatus();
var_2 stop_reflector_effect();
}
}
shouldbreaknvghintprint()
{
return isdefined( self.nightvision_started );
}
should_break_disable_nvg_print()
{
return !isdefined( self.nightvision_started );
}