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

485 lines
16 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
section_main()
{
}
section_precache()
{
precachemodel( "viewmodel_arx_160" );
precachemodel( "viewmodel_acog_iw6" );
precachemodel( "viewmodel_reticle_acog" );
precachemodel( "viewmodel_grenade_launcher" );
precacherumble( "steady_rumble" );
precacherumble( "light_2s" );
precacherumble( "light_3s" );
precacherumble( "heavy_1s" );
precacherumble( "heavy_3s" );
}
section_flag_inits()
{
common_scripts\utility::flag_init( "first_wave_spawned" );
common_scripts\utility::flag_init( "left_pressed" );
common_scripts\utility::flag_init( "right_pressed" );
}
infil_start()
{
maps\loki_util::player_move_to_checkpoint_start( "infil" );
maps\loki_util::spawn_allies();
thread setup_fuel_leak_lighting();
level.accuracy_ally = 0.6;
level.accuracy_enemy = 1.4;
setsaveddvar( "compass", 0 );
setsaveddvar( "ammoCounterHide", 1 );
setsaveddvar( "actionSlotsHide", 1 );
setsaveddvar( "hud_showStance", 0 );
level.player allowsprint( 0 );
level notify( "kill_thrusters" );
level.allies[0].fixednode = 1;
level.allies[1].baseaccuracy = level.accuracy_ally;
level.allies[2].fixednode = 1;
level.allies[2].baseaccuracy = level.accuracy_ally;
level thread maps\loki_combat_one::firstframe_combat_one_door();
}
infil()
{
maps\loki_util::loki_autosave_by_name_silent( "infil" );
thread maps\loki_audio::audio_set_fadein_ambience();
common_scripts\utility::exploder( "c1_sunflare" );
common_scripts\utility::flag_wait( "infil_introscreen_done" );
thread maps\loki_audio::audio_set_infil_ambience();
thread maps\loki_fx::loki_infil_lighting();
level thread infil_vignette();
if ( maps\_utility::is_gen4() )
setsaveddvar( "r_mbEnable", 0 );
common_scripts\utility::flag_wait( "infil_done" );
}
infil_vignette()
{
var_0 = getent( "infil_vignette", "targetname" );
var_1 = getent( "infil_vignette_shuttle", "targetname" );
level.player freezecontrols( 1 );
level.player disableweapons();
level.player hideviewmodel();
level.player enableinvulnerability();
level.player.ignoreme = 1;
var_2 = maps\_utility::spawn_anim_model( "player_rig" );
level.player_rig = var_2;
var_3 = maps\_utility::spawn_anim_model( "infil_shuttle" );
var_4 = maps\_utility::spawn_anim_model( "infil_shuttle_interior" );
var_5 = common_scripts\utility::spawn_tag_origin();
var_5.angles = ( 0, -90, 0 );
var_5 linkto( var_3 );
playfxontag( level._effect["interior_shuttle_light"], var_4, "tag_fx_001" );
playfxontag( level._effect["interior_shuttle_light"], var_4, "tag_fx_002" );
common_scripts\utility::waitframe();
playfxontag( level._effect["interior_shuttle_light"], var_4, "tag_fx_003" );
playfxontag( level._effect["interior_shuttle_light"], var_4, "tag_fx_004" );
playfxontag( level._effect["interior_shuttle_flare_lights"], var_4, "tag_fx_005" );
common_scripts\utility::waitframe();
playfxontag( level._effect["interior_shuttle_light"], var_4, "tag_fx_006" );
level.infil_grenade = maps\_utility::spawn_anim_model( "infil_grenade" );
level.infil_grenade linkto( var_3 );
var_6 = maps\_utility::spawn_anim_model( "infil_arx" );
var_6 linkto( var_3 );
var_6 attach( "viewmodel_acog_iw6", "TAG_ACOG_2", 1 );
var_6 attach( "viewmodel_reticle_acog", "TAG_RETICLE_ATTACH", 1 );
var_6 attach( "viewmodel_grenade_launcher", "TAG_GRENADE_LAUNCHER", 1 );
var_6 hidepart( "TAG_SIGHT_ON", "viewmodel_arx_160" );
var_2 linkto( var_3 );
var_4 linkto( var_3 );
var_7 = [];
var_7["player_rig"] = var_2;
var_7["infil_arx"] = var_6;
var_7["infil_grenade"] = level.infil_grenade;
level.player playerlinktodelta( var_2, "tag_player", 1, 0, 0, 0, 0, 1 );
level.player playersetgroundreferenceent( var_5 );
level.player common_scripts\utility::delaycall( 0.2, ::playerlinktodelta, var_2, "tag_player", 1, 45, 45, 45, 30, 1 );
thread infil_ally( var_0, level.allies[0], "cover_one_ally0_node1", var_3 );
thread infil_ally( var_0, level.allies[1], "cover_one_ally1_node1", var_3 );
thread infil_ally( var_0, level.allies[2], "cover_one_ally2_node1", var_3 );
thread create_redshirts( var_0, var_3 );
maps\_utility::delaythread( 17, maps\loki_audio::sfx_temp_redshirt_stinger );
maps\_utility::delaythread( 15, maps\loki_combat_one::spawn_wave1_enemies, 0 );
var_0 thread maps\_anim::anim_single_solo( var_3, "infil" );
var_4 thread maps\_anim::anim_single_solo( var_4, "infil_still" );
var_8 = getanimlength( var_2 maps\_utility::getanim( "infil_still" ) );
level.player maps\_utility::delaythread( var_8 - 2.5, ::enablesomecontrol, var_2 );
level.player thread maps\loki_audio::sfx_intro_load_weapon();
level.player thread maps\loki_audio::sfx_intro_seat_unlock();
var_2 maps\_anim::anim_single( var_7, "infil_still" );
level.player playersetgroundreferenceent( undefined );
level.player unlink();
level thread maps\_space_player::space_thruster_audio();
level thread infil_push();
level thread maps\loki_combat_one::movement_hints();
var_2 delete();
var_6 delete();
var_5 delete();
level.player disableinvulnerability();
level.player maps\_utility::delaythread( 4, ::ignore_player, 0 );
level maps\_utility::delaythread( 4, maps\loki_util::player_boundaries_on );
common_scripts\utility::flag_set( "infil_done" );
killfxontag( level._effect["interior_shuttle_light"], var_4, "tag_fx_001" );
killfxontag( level._effect["interior_shuttle_light"], var_4, "tag_fx_002" );
common_scripts\utility::waitframe();
killfxontag( level._effect["interior_shuttle_light"], var_4, "tag_fx_003" );
killfxontag( level._effect["interior_shuttle_light"], var_4, "tag_fx_004" );
killfxontag( level._effect["interior_shuttle_flare_lights"], var_4, "tag_fx_005" );
common_scripts\utility::waitframe();
killfxontag( level._effect["interior_shuttle_light"], var_4, "tag_fx_006" );
}
infil_grenade_delete( var_0 )
{
level.infil_grenade delete();
}
ignore_player( var_0 )
{
level.player.ignoreme = var_0;
}
enablesomecontrol( var_0 )
{
level.player endon( "death" );
var_0 hide();
level.player freezecontrols( 0 );
level.player enableweapons();
level.player showviewmodel();
setsaveddvar( "compass", 1 );
setsaveddvar( "ammoCounterHide", 0 );
setsaveddvar( "actionSlotsHide", 0 );
wait 5;
level maps\_utility::smart_radio_dialogue( "loki_kgn_thompsontangos12high" );
}
infil_push()
{
level.player endon( "death" );
level endon( "stop_pushing" );
maps\loki_util::jkuprint( "PUSHING" );
level thread infil_blend_push_out();
level.infil_ratex = 2400;
level.infil_ratey = 10000;
level.infil_ratez = 6700;
var_0 = 9;
var_0 = var_0 * 1000;
var_1 = var_0 / 50;
var_2 = level.infil_ratex / var_1;
var_3 = level.infil_ratey / var_1;
var_4 = level.infil_ratez / var_1;
for ( var_5 = 0; var_5 < var_1; var_5++ )
{
setsaveddvar( "player_swimWaterCurrent", ( level.infil_ratex, level.infil_ratey, level.infil_ratez ) );
if ( level.infil_ratex > 0 )
level.infil_ratex = level.infil_ratex - var_2;
if ( level.infil_ratey > 0 )
level.infil_ratey = level.infil_ratey - var_3;
if ( level.infil_ratez > 0 )
level.infil_ratez = level.infil_ratez - var_4;
common_scripts\utility::waitframe();
}
level notify( "stop_pushing_blend_out" );
level.player allowsprint( 1 );
setsaveddvar( "player_swimWaterCurrent", ( 0, 0, 0 ) );
}
infil_blend_push_out()
{
level.player endon( "death" );
level endon( "stop_pushing_blend_out" );
var_0 = 0;
for (;;)
{
var_1 = level.player getnormalizedmovement();
if ( abs( var_1[0] ) > 0.15 || abs( var_1[1] ) > 0.15 )
{
var_0++;
if ( var_0 > 20 )
break;
}
if ( level.player fragbuttonpressed() )
{
var_0++;
if ( var_0 > 20 )
break;
}
common_scripts\utility::waitframe();
}
level notify( "stop_pushing" );
maps\loki_util::jkuprint( "STOP PUSHING" );
var_2 = 2;
var_2 = var_2 * 1000;
var_3 = var_2 / 50;
var_4 = level.infil_ratex / var_3;
var_5 = level.infil_ratey / var_3;
var_6 = level.infil_ratez / var_3;
for ( var_7 = 0; var_7 < var_3; var_7++ )
{
setsaveddvar( "player_swimWaterCurrent", ( level.infil_ratex, level.infil_ratey, level.infil_ratez ) );
if ( level.infil_ratex > 0 )
level.infil_ratex = level.infil_ratex - var_4;
if ( level.infil_ratey > 0 )
level.infil_ratey = level.infil_ratey - var_5;
if ( level.infil_ratez > 0 )
level.infil_ratez = level.infil_ratez - var_6;
common_scripts\utility::waitframe();
}
level.player allowsprint( 1 );
setsaveddvar( "player_swimWaterCurrent", ( 0, 0, 0 ) );
}
infil_ally( var_0, var_1, var_2, var_3 )
{
var_1 endon( "death" );
var_1 forceteleport( var_3.origin, var_3.angles );
var_1 linkto( var_3 );
var_1 maps\_utility::ent_flag_clear( "lights_on" );
var_2 = getnode( var_2, "targetname" );
var_1 setgoalnode( var_2 );
var_1 maps\_anim::anim_single_solo( var_1, "infil_still" );
var_1 unlink();
if ( var_1.animname == "ally_2" )
{
var_4 = maps\_vignette_util::vignette_actor_spawn( "infil_opfor", "infil_opfor" );
var_4 thread maps\_space_ai::space_actor_lights();
var_4 thread maps\loki_combat_one::force_traversal_check_hit();
var_5 = [];
var_5["ally_2"] = level.allies[2];
var_5["infil_opfor"] = var_4;
var_0 maps\_anim::anim_single( var_5, "infil" );
var_4 thread kill_after_vignette();
}
else
{
var_5 = [];
var_5[var_1.animname] = var_1;
var_0 maps\_anim::anim_single( var_5, "infil" );
}
}
create_redshirts( var_0, var_1 )
{
var_2 = [];
var_2[0] = maps\loki_util::spawn_space_ai_from_targetname( "infil_redshirt_0" );
var_2[0].animname = "redshirt_0";
var_2[0].first_goal_node = "cover_one_redshirt2_node1";
var_2[0] setmodel( "us_space_assault_b_body_cracked" );
var_2[1] = maps\loki_util::spawn_space_ai_from_targetname( "infil_redshirt_1" );
var_2[1].animname = "redshirt_1";
var_2[1].first_goal_node = "cover_one_redshirt1_node1";
var_2[2] = maps\loki_util::spawn_space_ai_from_targetname( "infil_redshirt_2" );
var_2[2].animname = "redshirt_2";
var_2[2].first_goal_node = "cover_one_redshirt2_node1";
var_2[3] = maps\loki_util::spawn_space_ai_from_targetname( "infil_redshirt_3" );
var_2[3].animname = "redshirt_3";
var_2[3].first_goal_node = "cover_one_redshirt2_node1";
var_2[3].ignoreme = 1;
level.redshirts = var_2;
foreach ( var_4 in var_2 )
var_4 thread infil_redshirt( var_0, var_1 );
}
infil_redshirt( var_0, var_1 )
{
self endon( "death" );
thread maps\loki_util::loki_drop_weapon();
self.grenadeammo = 0;
maps\_utility::set_force_color( "r" );
self.health = 75;
maps\_utility::ent_flag_clear( "lights_on" );
self.baseaccuracy = level.accuracy_ally;
maps\_utility::magic_bullet_shield( 1 );
var_2 = getnode( self.first_goal_node, "targetname" );
self setgoalnode( var_2 );
if ( isdefined( var_1 ) )
{
self forceteleport( var_1.origin, var_1.angles );
self linkto( var_1 );
maps\_anim::anim_single_solo( self, "infil_still" );
self unlink();
if ( self.animname != "redshirt_0" )
{
var_0 maps\_anim::anim_single_solo( self, "infil" );
maps\_utility::stop_magic_bullet_shield();
}
}
if ( self.animname == "redshirt_3" || self.animname == "redshirt_0" )
thread kill_after_vignette();
}
lights_on( var_0 )
{
var_0 thread maps\_utility::ent_flag_set( "lights_on" );
}
kill_during_vignette( var_0 )
{
var_0 notify( "faux_death" );
var_0 notify( "stop_traversal_hit_detection" );
var_0 maps\_utility::clear_force_color();
var_0.team = "neutral";
}
kill_after_vignette()
{
self.deathfunction = maps\_space_ai::ai_space_death;
if ( isdefined( self.magic_bullet_shield ) )
maps\_utility::stop_magic_bullet_shield();
self.script_noteworthy = "combat_one_cleanup";
self.grenadeammo = 0;
self.a.nodeath = 1;
self.diequietly = 1;
self kill();
}
doors_open( var_0 )
{
level.player endon( "death" );
level maps\_utility::smart_radio_dialogue( "loki_shp1_baydoorsopeningicarus" );
level maps\_utility::smart_radio_dialogue( "loki_mrk_makeitfasticarus" );
level maps\_utility::smart_radio_dialogue( "loki_kgn_readyforsomerevenge" );
level maps\_utility::smart_radio_dialogue( "loki_kgn_evasuitsareen" );
wait 1;
common_scripts\utility::flag_set( "combat_one_music_start" );
level maps\_utility::smart_radio_dialogue( "loki_kgn_weaponshot" );
}
doors_open_flicker( var_0 )
{
level.player endon( "death" );
var_1 = maps\loki_util::create_rumble_ent( 895, "infil_cleanup", 7.25 );
var_1 common_scripts\utility::delaycall( 0.5, ::playrumblelooponentity, "steady_rumble" );
wait 2.0;
level thread maps\loki_fx::loki_default_lighting_lerp_setup();
}
setup_fuel_leak_lighting()
{
var_0 = getentarray( "combat_one_light", "script_noteworthy" );
foreach ( var_2 in var_0 )
{
var_2 setlightradius( 13 );
var_2 setlightintensity( 0.01 );
}
}
infil_quakes()
{
level.player endon( "death" );
level endon( "end_infil_quakes" );
level thread infil_light_flicker( 3 );
earthquake( 0.15, 0.5, level.player.origin, 1600 );
wait 1.5;
level thread infil_light_flicker( 3 );
earthquake( 0.25, 0.5, level.player.origin, 1600 );
wait 2.5;
level thread infil_light_flicker( 3 );
earthquake( 0.25, 0.5, level.player.origin, 1600 );
wait 2.25;
level thread infil_light_flicker( 3 );
earthquake( 0.35, 0.5, level.player.origin, 1600 );
wait 2;
level thread infil_light_flicker( 3 );
earthquake( 0.25, 0.5, level.player.origin, 1600 );
wait 0.5;
level thread infil_light_flicker( 3 );
earthquake( 0.25, 0.5, level.player.origin, 1600 );
wait 1;
level thread infil_light_flicker( 3 );
earthquake( 0.25, 0.5, level.player.origin, 1600 );
wait 2;
earthquake( 0.5, 1, level.player.origin, 1600 );
wait 1.5;
earthquake( 0.5, 1, level.player.origin, 1600 );
wait 1.75;
earthquake( 0.35, 0.5, level.player.origin, 1600 );
}
infil_light_flicker( var_0 )
{
if ( randomint( var_0 ) == 0 )
{
if ( common_scripts\utility::cointoss() )
{
level.player maps\_hud_util::fade_out( 0.05, "black" );
wait 0.05;
level.player maps\_hud_util::fade_in( 0.1, "black" );
}
else
{
level.player maps\_hud_util::fade_out( 0.05, "black" );
wait 0.05;
level.player maps\_hud_util::fade_in( 0.1, "black" );
wait 0.2;
level.player maps\_hud_util::fade_out( 0.05, "black" );
wait 0.15;
level.player maps\_hud_util::fade_in( 0.1, "black" );
}
}
}
infil_cleanup()
{
var_0 = getentarray( "infil_cleanup", "script_noteworthy" );
maps\loki_util::jkuprint( var_0.size + ": infil ents cleaned up" );
maps\_utility::array_delete( var_0 );
}
first_move( var_0 )
{
maps\loki_util::loki_autosave_by_name_silent( "combat_one" );
var_1 = maps\loki_util::create_rumble_ent( -800, "infil_cleanup", 8 );
var_1 playrumbleonentity( "light_2s" );
}
ally_through_sat_panel( var_0 )
{
glassradiusdamage( var_0.origin, 80, 1000, 1000 );
}
headshot_redshirt( var_0 )
{
var_1 = common_scripts\utility::getstruct( "combat_one_ally_2", "targetname" );
wait 0.5;
magicbullet( "arx160_space", var_1.origin, var_0 gettagorigin( "J_Head" ) );
common_scripts\utility::noself_delaycall( 0.1, ::magicbullet, "arx160_space", var_1.origin, var_0 gettagorigin( "J_Head" ) );
var_0 thread maps\_space_ai::ai_space_headshot_death();
}