485 lines
16 KiB
Plaintext
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();
|
|
}
|