// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool main() { vignette_precache(); level.custom_onstartgametypefunc = ::vignettes_startup; thread test_calls(); thread hide_wall_pieces(); } vignettes_startup() { } test_calls() { } vignette_precache() { common_scripts\utility::flag_init( "ready_for_gas_event" ); common_scripts\utility::flag_init( "gas_event_done" ); common_scripts\utility::flag_init( "boss_is_spawned" ); common_scripts\utility::flag_init( "clear_for_crane_vo" ); common_scripts\utility::flag_init( "cargo_control_room_vo_played" ); common_scripts\utility::flag_init( "everyone_in_cargo_container" ); common_scripts\utility::flag_init( "boss_in_pain" ); common_scripts\utility::flag_init( "is_crane_nags" ); common_scripts\utility::flag_init( "boss_turrets_on" ); common_scripts\utility::flag_init( "delay_UGV_VO" ); common_scripts\utility::flag_init( "no_ass_nag" ); } hide_wall_pieces() { while ( !isdefined( level.drill ) ) wait 0.05; level.wall_array_damaged = getentarray( "mini_boss_wall_damaged", "targetname" ); foreach ( var_1 in level.wall_array_damaged ) var_1 hide(); var_3 = getent( "miniboss_door_clip", "targetname" ); var_3 connectpaths(); var_3 notsolid(); var_4 = getscriptablearray( "miniboss_door", "targetname" ); wait 0.05; var_4[0] setscriptablepartstate( 0, 0 ); var_5 = getscriptablearray( "swinging_wires", "targetname" ); wait 0.05; var_5[0] setscriptablepartstate( 0, 5 ); var_6 = getscriptablearray( "twisted_metal", "targetname" ); var_6[0] setscriptablepartstate( 0, 5 ); thread first_door_vo(); var_7 = getentarray( "cross_wall_swap_in", "targetname" ); foreach ( var_9 in var_7 ) var_9 hide(); } mini_boss() { while ( !isdefined( level.drill ) ) wait 0.05; thread door_notify_check(); for (;;) { level waittill( "drill_planted", var_0, var_1 ); if ( var_1.target == "well_deck_3" ) break; } thread pre_miniboss_vo(); level.damaged_positions = []; level.damaged_positions["1"] = [ ( -1408, 56, -128 ), ( 0, 152, 0 ) ]; level.damaged_positions["2"] = [ ( -1574.5, 108.1, -42.7 ), ( 0, 75.6, 0 ) ]; level.damaged_positions["3"] = [ ( -1504, 82, -128 ), ( 0, 126, 0 ) ]; level.damaged_positions["4"] = [ ( -1580, 108.1, -82.7 ), ( 0, 90, 0 ) ]; level.damaged_positions["5"] = [ ( -1570.5, 136, -51.5 ), ( 0, 270, 166.5 ) ]; level.damaged_positions["6"] = [ ( -1563.1, 136, -29 ), ( 0, 270, 162.2 ) ]; level.damaged_positions["7"] = [ ( -1550.7, 136.1, -8.6 ), ( 0, 270, 148.2 ) ]; level.damaged_positions["8"] = [ ( -1366.1, 227.6, -127.5 ), ( 296.567, 229.145, 19.2909 ) ]; level.damaged_positions["9"] = [ ( -1540.1, 185.3, 90 ), ( 351.097, 256.089, 16.4567 ) ]; level.damaged_positions["10"] = [ ( -1567, 211.5, 163 ), ( 347.824, 359.491, 5.78545 ) ]; level.damaged_positions["11"] = [ ( -1454, 730, -128 ), ( 0, 314, 0 ) ]; level.damaged_positions["12"] = [ ( -1580, 708.1, -42.7 ), ( 0, 90, 0 ) ]; level.damaged_positions["13"] = [ ( -1530, 702, -128 ), ( 0, 186, 0 ) ]; level.damaged_positions["14"] = [ ( -1580, 708.1, -82.7 ), ( 0, 90, 0 ) ]; wait 3; var_2 = getscriptablearray( "swinging_wires", "targetname" ); var_3 = getscriptablearray( "twisted_metal", "targetname" ); maps\mp\agents\alien\alien_kraken\_alien_kraken_tentacle::initkrakententacle(); level.miniboss = maps\mp\agents\alien\alien_kraken\_alien_kraken_tentacle::alienminibosstentaclespawn(); level.miniboss thread miniboss_emissive(); level.miniboss thread maps\mp\mp_alien_beacon_fx::fx_tenticle_enter_water_fx(); var_3[0] setscriptablepartstate( 0, 3 ); var_2[0] setscriptablepartstate( 0, 3 ); level.miniboss maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( "miniboss_fight", 0, "miniboss_fight", "end", ::doornotetrackhandler ); level.miniboss.idle = 0; level.miniboss.left = 0; level.miniboss notify( "left_is_defined" ); level.miniboss.right = 0; level.miniboss thread miniboss_health_watcher(); while ( !isdefined( level.miniboss_beaten ) ) { var_4 = randomintrange( 0, 5 ); if ( common_scripts\utility::flag( "boss_in_pain" ) ) { var_4 = -9000; level.miniboss maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( "miniboss_fight", 4, "miniboss_fight", "end", ::painnotetrackhandler ); level.miniboss.idle = 1; level.miniboss.left = 0; level.miniboss.right = 0; common_scripts\utility::flag_clear( "boss_in_pain" ); level.miniboss.spawncooling = undefined; } if ( var_4 == 0 && level.miniboss.idle == 0 ) { var_3[0] setscriptablepartstate( 0, 7 ); var_2[0] setscriptablepartstate( 0, 7 ); level.miniboss maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( "miniboss_fight", 1, "miniboss_fight", "end", ::idlenotetrackhandler ); level.miniboss.idle = 1; level.miniboss.left = 0; level.miniboss.right = 0; level.miniboss.spawncooling = undefined; } if ( var_4 == 1 && level.miniboss.left < 1 ) { var_3[0] setscriptablepartstate( 0, 1 ); var_2[0] setscriptablepartstate( 0, 1 ); level.miniboss maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( "miniboss_fight", 2, "miniboss_fight", "end", ::smashnotetrackhandler ); level.miniboss.idle = 0; level.miniboss.left = level.miniboss.left + 1; level.miniboss.right = 0; level.miniboss.spawncooling = undefined; } if ( var_4 == 2 && level.miniboss.right < 1 ) { var_3[0] setscriptablepartstate( 0, 2 ); var_2[0] setscriptablepartstate( 0, 2 ); level.miniboss maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( "miniboss_fight", 3, "miniboss_fight", "end", ::smashnotetrackhandler ); level.miniboss.idle = 0; level.miniboss.left = 0; level.miniboss.right = level.miniboss.right + 1; level.miniboss.spawncooling = undefined; } if ( var_4 >= 3 && !isdefined( level.miniboss.spawncooling ) ) { var_3[0] setscriptablepartstate( 0, 6 ); var_2[0] setscriptablepartstate( 0, 6 ); level.miniboss maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( "miniboss_fight", 5, "miniboss_fight", "end", ::spawnnotetrackhandler ); level.miniboss.idle = 0; level.miniboss.spawncooling = 1; } } var_3[0] setscriptablepartstate( 0, 4 ); var_2[0] setscriptablepartstate( 0, 4 ); level notify( "dlc_vo_notify", "kraken_vo", "tentacle_gone" ); level.miniboss maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( "miniboss_fight", 6, "miniboss_fight", "end", ::endnotetrackhandler ); maps\mp\alien\_outline_proto::disable_outline_for_players( level.miniboss, level.players ); level.miniboss.vignette_death_skip = 1; level.miniboss suicide(); } miniboss_emissive() { wait 3.0; maps\mp\alien\_utility::set_alien_emissive( 2.0, 1.0 ); level waittill( "tentacle_gone" ); maps\mp\alien\_utility::set_alien_emissive_default( 6 ); } door_notify_check() { level waittill( "door_opening" ); level notify( "miniboss_door_is_open" ); } doornotetrackhandler( var_0, var_1, var_2, var_3 ) { var_4 = spawn( "script_origin", ( -1696, 400, -56 ) ); switch ( var_0 ) { case "play_scriptable": var_5 = getscriptablearray( "miniboss_door", "targetname" ); var_5[0] setscriptablepartstate( 0, 1 ); break; case "hit_1": var_4 playsound( "scn_bcn_miniboss_spawn" ); common_scripts\utility::exploder( 13 ); common_scripts\utility::exploder( 14 ); thread play_tentacle_music(); break; case "hit_2": common_scripts\utility::exploder( 13 ); thread miniboss_wall_knockback( 1750 ); break; case "door_breach_fx": common_scripts\utility::exploder( 12 ); break; case "enter_splash_fx": break; case "hit_3": thread miniboss_wall_swap(); thread miniboss_wall_clip(); var_6 = ( -1696, 400, -56 ); earthquake( 0.4, 0.4, var_6, 2048 ); playrumbleonposition( "grenade_rumble", var_6 ); thread create_smashedwall_storm_sfx(); foreach ( var_8 in level.players ) { if ( distance( var_8.origin, var_6 ) <= 128 ) { var_8 setvelocity( vectornormalize( var_8.origin - var_6 ) * 800 ); var_8 dodamage( var_8.maxhealth / 3, var_6 ); } } var_10 = getscriptablearray( "swinging_wires", "targetname" ); var_11 = getscriptablearray( "twisted_metal", "targetname" ); break; case "ten_spawn_sfx": thread maps\mp\mp_alien_beacon::beacon_play_sound_on_moving_tag( "scn_bcn_miniboss_enter", "tag_hole", 6 ); break; default: break; } } miniboss_wall_swap() { var_0 = getentarray( "mini_boss_wall_undamaged", "targetname" ); var_1 = []; foreach ( var_3 in var_0 ) { if ( isdefined( var_3.script_parameters ) ) { var_1[var_1.size] = var_3; continue; } var_3 delete(); } foreach ( var_3 in level.wall_array_damaged ) var_3 show(); foreach ( var_3 in var_1 ) { var_8 = var_3.script_parameters; var_3.origin = level.damaged_positions[var_8][0]; var_3.angles = level.damaged_positions[var_8][1]; wait 0.1; } } miniboss_wall_clip() { thread miniboss_wall_knockback( 1750 ); wait 1.0; var_0 = getent( "miniboss_door_clip", "targetname" ); var_0 solid(); var_0 disconnectpaths(); } miniboss_wall_knockback( var_0 ) { var_1 = 1500.0; var_2 = 34225; var_3 = ( -1590, 279, -136 ); var_4 = ( -1590, 528, -136 ); foreach ( var_6 in level.players ) { if ( distance2dsquared( var_6.origin, var_3 ) < var_2 ) var_7 = var_3; else if ( distance2dsquared( var_6.origin, var_4 ) < var_2 ) var_7 = var_4; else continue; var_8 = var_6 getvelocity(); var_9 = vectornormalize( ( var_6.origin - var_7 ) * ( 1, 1, 0 ) ) * var_0; var_10 = ( var_8 + var_9 ) * ( 1, 1, 0 ); var_11 = length( var_10 ); if ( var_11 >= var_1 ) var_10 = vectornormalize( var_10 ) * var_1; var_6 setvelocity( var_10 ); } } play_miniboss_kraken_vocal() { wait( randomfloatrange( 1.8, 2.5 ) ); playsoundatpos( ( -2350, 222, -66 ), "scn_bcn_miniboss_vo" ); } create_smashedwall_storm_sfx() { var_0 = spawn( "script_origin", ( -1680, 220, -66 ) ); var_1 = spawn( "script_origin", ( -1614, 570, -66 ) ); wait 0.1; var_0 playloopsound( "emt_bcn_storm_lt" ); var_1 playloopsound( "emt_bcn_storm_rt" ); } create_smashedwall2_storm_sfx() { var_0 = spawn( "script_origin", ( -423, 6459, 1508 ) ); var_1 = spawn( "script_origin", ( -303, 6415, 1508 ) ); var_2 = spawn( "script_origin", ( -213, 6450, 1508 ) ); var_3 = spawn( "script_origin", ( -347, 6423, 1508 ) ); var_4 = spawn( "script_origin", ( -273, 6399, 1508 ) ); wait 0.1; var_0 playloopsound( "emt_bcn_storm_lt" ); var_2 playloopsound( "emt_bcn_storm_rt" ); var_3 playloopsound( "emt_bcn_rain_01" ); var_4 playloopsound( "emt_bcn_rain_02" ); var_1 playloopsound( "emt_bcn_wind" ); } smashnotetrackhandler( var_0, var_1, var_2, var_3 ) { switch ( var_0 ) { case "hit_left": level notify( "left_is_hit" ); var_4 = level.miniboss gettagorigin( "Tag_hole" ); var_5 = spawn( "script_origin", var_4 ); var_5 playsound( "scn_bcn_miniboss_pound" ); thread play_miniboss_kraken_vocal(); earthquake( 0.4, 0.4, var_4, 1024 ); foreach ( var_7 in level.players ) { if ( !isdefined( self.laststand ) ) var_7 shellshock( "alien_spitter_gas_cloud", 1 ); } playrumbleonposition( "artillery_rumble", var_4 ); common_scripts\utility::exploder( 15 ); foreach ( var_7 in level.players ) { var_10 = distance( var_7.origin, var_4 ); if ( var_10 <= 512 ) { var_7 setvelocity( vectornormalize( var_7.origin - var_4 ) * ( ( 512 - var_10 ) * 2 ) ); var_7 dodamage( var_7.maxhealth / 10, var_4 ); } } wait 0.1; var_5 delete(); break; case "hit_right": var_4 = level.miniboss gettagorigin( "Tag_hole" ); var_5 = spawn( "script_origin", var_4 ); var_5 playsound( "scn_bcn_miniboss_pound" ); thread play_miniboss_kraken_vocal(); earthquake( 0.4, 0.4, var_4, 1024 ); foreach ( var_7 in level.players ) { if ( !isdefined( self.laststand ) ) var_7 shellshock( "alien_spitter_gas_cloud", 1 ); } playrumbleonposition( "artillery_rumble", var_4 ); common_scripts\utility::exploder( 16 ); foreach ( var_7 in level.players ) { var_10 = distance( var_7.origin, var_4 ); if ( var_10 <= 512 ) { var_7 setvelocity( vectornormalize( var_7.origin - var_4 ) * ( ( 512 - var_10 ) * 2 ) ); var_7 dodamage( var_7.maxhealth / 10, var_4 ); } } wait 0.1; var_5 delete(); break; default: break; } } spawnnotetrackhandler( var_0, var_1, var_2, var_3 ) { switch ( var_0 ) { case "ten_spit_sfx": thread maps\mp\mp_alien_beacon::beacon_play_sound_on_moving_tag( "scn_bcn_miniboss_spit", "tag_hole", 8 ); break; case "ten_spawn": var_4 = getspawnpoint(); spawn_alien_from_miniboss( var_4 ); var_4 delete(); break; case "drool_fx": break; case "teeth_splash": break; } } idlenotetrackhandler( var_0, var_1, var_2, var_3 ) { switch ( var_0 ) { case "drool_fx": break; case "teeth_splash_idle": break; case "ten_idle_sfx": thread maps\mp\mp_alien_beacon::beacon_play_sound_on_moving_tag( "scn_bcn_miniboss_idle", "tag_hole", 7 ); break; } } painnotetrackhandler( var_0, var_1, var_2, var_3 ) { switch ( var_0 ) { case "drool_fx": break; case "ten_pain_sfx": thread maps\mp\mp_alien_beacon::beacon_play_sound_on_moving_tag( "scn_bcn_miniboss_pain", "tag_hole", 5 ); break; } } endnotetrackhandler( var_0, var_1, var_2, var_3 ) { switch ( var_0 ) { case "ten_pain_sfx": thread maps\mp\mp_alien_beacon::beacon_play_sound_on_moving_tag( "scn_bcn_miniboss_pain", "tag_hole", 5 ); thread play_miniboss_kraken_vocal(); break; default: break; } } getspawnpoint() { var_0 = "Tag_hole"; var_1 = self gettagorigin( var_0 ); var_2 = self gettagorigin( var_0 ); var_3 = spawn( "script_origin", var_1 ); var_3.angles = var_2; return var_3; } miniboss_health_watcher() { var_0 = int( 10000 * gettentaclehealthscalar( level.players.size ) ); maps\mp\alien\_gamescore::update_team_encounter_performance( "tentacle_bonus", "tentacle_start_HP", var_0 ); level.miniboss.hp = var_0; var_1 = level.players.size; var_2 = 3; var_3 = level.miniboss.hp * 0.25; while ( !isdefined( level.miniboss_beaten ) ) { level.miniboss waittill( "miniboss_damaged" ); if ( var_1 < level.players.size ) { var_4 = 10000 * gettentaclehealthscalar( level.players.size - var_1 ); maps\mp\alien\_gamescore::update_team_encounter_performance( "tentacle_bonus", "tentacle_start_HP", var_4 ); level.miniboss.hp = int( level.miniboss.hp + var_4 ); var_1 = level.players.size; var_3 = level.miniboss.hp * ( 0.25 * var_2 ); } if ( level.miniboss.hp <= 0 ) { level.miniboss_beaten = 1; level notify( "miniboss_beaten" ); } if ( var_2 > 0 && level.miniboss.hp < var_3 ) { var_2 = var_2 - 1; var_3 = level.miniboss.hp * ( 0.25 * var_2 ); common_scripts\utility::flag_set( "boss_in_pain" ); } } } gettentaclehealthscalar( var_0 ) { switch ( var_0 ) { case 1: return 0.2; case 2: return 0.3; case 3: return 0.8; } return 1.0; } play_tentacle_music() { foreach ( var_1 in level.players ) { if ( common_scripts\utility::flag( "alien_music_playing" ) ) { var_1 stoplocalsound( "mp_suspense_01" ); var_1 stoplocalsound( "mp_suspense_02" ); var_1 stoplocalsound( "mp_suspense_03" ); var_1 stoplocalsound( "mp_suspense_04" ); var_1 stoplocalsound( "mp_suspense_05" ); var_1 stoplocalsound( "mp_suspense_06" ); var_1 stoplocalsound( "mus_alien_newwave" ); common_scripts\utility::flag_clear( "alien_music_playing" ); } if ( !common_scripts\utility::flag( "exfil_music_playing" ) ) level thread maps\mp\alien\_music_and_dialog::play_alien_music( "mus_alien_dlc2_tentacle" ); } } outlineprep() { foreach ( var_1 in level.players ) var_1 thread miniboss_ountline_logic( self ); } miniboss_ountline_logic( var_0 ) { self endon( "disconnect" ); while ( !isdefined( level.miniboss_beaten ) ) { while ( !isdefined( self.isferal ) ) wait 0.1; if ( isdefined( var_0 ) ) maps\mp\alien\_outline_proto::enable_outline_for_player( var_0, self, 4, 1, "high" ); self waittill( "unset_adrenaline" ); if ( isdefined( var_0 ) ) maps\mp\alien\_outline_proto::disable_outline_for_player( var_0, self ); wait 0.05; } } spawncool() { var_0 = 5; var_1 = gettime(); var_2 = gettime() - var_0 * 1000; while ( var_2 < var_1 ) { var_2 = gettime() - var_0 * 1000; wait 1; } self.spawncooling = undefined; } radial_damage( var_0 ) { foreach ( var_2 in level.players ) { if ( distance( var_2.origin, var_0 ) <= 256 ) { var_2 setvelocity( vectornormalize( var_2.origin - var_0 ) * 1200 ); var_2 dodamage( var_2.maxhealth / 6, var_0 ); } } } spawn_alien_from_miniboss( var_0 ) { if ( !isdefined( self.last_spawned ) ) self.last_spawned = "wave minion"; if ( isdefined( var_0 ) ) { var_1 = []; var_1 = maps\mp\alien\_spawnlogic::get_alive_agents(); if ( var_1.size <= 15 ) { if ( level.players.size == 1 && self.last_spawned == "wave minion" ) { spawn_single_alien( var_0, "wave goon" ); self.last_spawned = "wave goon"; } else { if ( level.players.size == 1 && self.last_spawned != "wave minion" ) { spawn_single_alien( var_0, "wave minion" ); self.last_spawned = "wave minion"; return; } var_2 = randomintrange( 0, level.players.size + 1 ); if ( var_2 == 0 ) { spawn_single_alien( var_0, "wave minion" ); self.last_spawned = "wave minion"; return; } spawn_single_alien( var_0, "wave brute" ); self.last_spawned = "wave brute"; } } } } set_up_blast_doors() { if ( !isdefined( level.blast_doors_lifted ) ) { level.blast_doors_lifted = 1; level thread listen_and_lift_doors(); } } listen_and_lift_doors() { var_0 = 1; var_1 = 0; var_2 = 0; while ( !var_1 ) { if ( level.blast_doors_lifted > 3 ) { if ( var_0 ) { var_0 = 0; delay_vo_until_all_clear( 15 ); wait 2.0; } if ( level.blast_doors_lifted > var_2 ) { level thread lift_door_by_index( var_2 ); var_2++; if ( var_2 >= 3 ) var_1 = 1; } } wait 0.1; } } pause_once_until_ready() { } lift_door_by_index( var_0 ) { var_1 = undefined; switch ( var_0 ) { case 0: var_1 = getentarray( "door0", "targetname" ); thread sfx_blast_door_move(); break; case 1: var_1 = getentarray( "door1", "targetname" ); break; case 2: var_1 = getentarray( "door2", "targetname" ); break; default: break; } if ( isdefined( var_1 ) ) { foreach ( var_4, var_3 in var_1 ) var_3 thread lift_door(); } } lift_door() { var_0 = self.origin + ( 0, 0, 200 ); self moveto( var_0, 5 ); wait 6.0; self delete(); level notify( "blast_door_lifted" ); } sfx_blast_door_move() { wait 0.04; playsoundatpos( ( -309, 1224, 511 ), "scn_beacon_blast_doors" ); } setup_gas_encounter() { level endon( "game_ended" ); thread pre_gas_event_vo(); thread kill_gas_fog(); common_scripts\utility::flag_wait( "ready_for_gas_event" ); var_0 = getent( "gas_chamber_trigger", "targetname" ); thread gas_console_marker( var_0 ); var_1 = spawnfx( level._effect["blinkylight_green"], var_0.origin + ( -7, 2, 2 ) ); triggerfx( var_1 ); level thread players_use_gas_monitor( var_0 ); while ( !are_all_players_using_gas() ) wait 0.05; level notify( "all_players_using_gas" ); foreach ( var_3 in level.players ) var_3 forceusehintoff( &"MP_ALIEN_BEACON_GAS_HINT" ); thread gas_encounter_start_sfx(); thread play_gas_chamber_fx(); var_1 delete(); level.gas_event_active = 1; level thread gas_exploit_fix(); lab_gas_survival_encounter(); } players_use_gas_monitor( var_0 ) { level endon( "game_ended" ); level endon( "all_players_using_gas" ); foreach ( var_2 in level.players ) var_2 thread watch_for_use_gas_trigger( var_0 ); for (;;) { level waittill( "connected", var_2 ); var_2 thread watch_for_use_gas_trigger( var_0 ); } } are_all_players_using_gas() { var_0 = 1; foreach ( var_2 in level.players ) { if ( !isdefined( var_2.player_using_gas ) || !var_2.player_using_gas ) var_0 = 0; } return var_0; } watch_for_use_gas_trigger( var_0 ) { level endon( "game_ended" ); level endon( "all_players_using_gas" ); self endon( "disconnect" ); self notify( "watch_for_use_gas" ); self endon( "watch_for_use_gas" ); self.player_using_gas = 0; var_1 = &"MP_ALIEN_BEACON_GAS_HINT"; var_2 = 24336; for (;;) { if ( self ismeleeing() || self isthrowinggrenade() || !self isonground() || self getstance() == "prone" ) self forceusehintoff( var_1 ); else if ( player_looking_at( var_0.origin, 0.6 ) ) { if ( distancesquared( self geteye(), var_0.origin ) < var_2 ) { self forceusehinton( var_1 ); if ( self usebuttonpressed() ) { self.player_using_gas = 1; self notify( "using_gas" ); thread reset_gas_usage(); } } else self forceusehintoff( var_1 ); } else self forceusehintoff( var_1 ); wait 0.05; } } reset_gas_usage() { level endon( "game_ended" ); level endon( "all_players_using_gas" ); self endon( "death" ); self endon( "disconnect" ); self endon( "using_gas" ); wait 0.5; self.player_using_gas = 0; } player_looking_at( var_0, var_1 ) { if ( !isdefined( var_1 ) ) var_1 = 0.8; var_2 = self geteye(); var_3 = vectortoangles( var_0 - var_2 ); var_4 = anglestoforward( var_3 ); var_5 = self getplayerangles(); var_6 = anglestoforward( var_5 ); var_7 = vectordot( var_4, var_6 ); if ( var_7 < var_1 ) return 0; var_8 = bullettrace( var_0, var_2, 0 ); return var_8["fraction"] == 1; } gas_exploit_fix() { level notify( "stop_teleport_script" ); thread maps\mp\mp_alien_beacon::update_override_info( ( -215.6, 4342.5, 1168 ), ( 0, 90, 0 ) ); var_0 = []; var_0 = getentarray( "deck_to_lab_door", "targetname" ); var_1 = getent( "deck_to_lab_door_linker", "targetname" ); foreach ( var_3 in var_0 ) { if ( isdefined( var_3 ) && isdefined( var_1 ) ) var_3 linkto( var_1 ); } var_1 movez( -92, 1.5, 0.1, 0.4 ); } teleport_player_to_labs( var_0 ) { self endon( "disconnect" ); thread teleport_black_screen(); wait 1; self cancelmantle(); self dontinterpolate(); self setorigin( var_0 ); var_1 = ( 0, 90, 0 ); self setplayerangles( var_1 ); self notify( "teleport_finished" ); } teleport_black_screen() { self endon( "disconnect" ); self.teleport_overlay = newclienthudelem( self ); self.teleport_overlay.x = 0; self.teleport_overlay.y = 0; self.teleport_overlay setshader( "black", 640, 480 ); self.teleport_overlay.alignx = "left"; self.teleport_overlay.aligny = "top"; self.teleport_overlay.sort = 1; self.teleport_overlay.horzalign = "fullscreen"; self.teleport_overlay.vertalign = "fullscreen"; self.teleport_overlay.alpha = 0; self.teleport_overlay.foreground = 1; self.teleport_overlay fadeovertime( 0.75 ); self.teleport_overlay.alpha = 1; self waittill( "teleport_finished" ); self.teleport_overlay fadeovertime( 0.75 ); self.teleport_overlay.alpha = 0; wait 1; self.teleport_overlay destroy(); } lab_gas_survival_encounter() { thread gas_fail_counter(); var_0 = []; level.gas_ents = []; level.gas_zones = []; for ( var_1 = 0; var_1 < 4; var_1++ ) { var_2 = getent( "gas_attack_point_" + var_1, "targetname" ); var_0[var_1] = var_2; var_2 thread gas_attak_point_logic(); level.gas_zones[level.gas_zones.size] = var_2 common_scripts\utility::get_target_ent(); } wait 0.1; var_3 = 240; setomnvar( "ui_alien_boss_status", 2 ); setomnvar( "ui_alien_boss_icon", 3 ); setomnvar( "ui_alien_boss_progression", 100 ); level.encounter_name = "lab_area_main"; spawn_wave( 13 ); thread remove_back_wall( var_3 ); timer( var_3 ); release_gas_fog( "end" ); thread post_gas_event_vo(); foreach ( var_5 in var_0 ) { maps\mp\alien\_outline_proto::disable_outline_for_players( var_5, level.players ); var_5 freeentitysentient(); } foreach ( var_5 in level.gas_ents ) var_5 delete(); foreach ( var_5 in level.gas_zones ) { var_5 notify( "gas_done" ); var_5 delete(); } setomnvar( "ui_alien_boss_status", 0 ); level notify( "stop_waves" ); level notify( "end_cycle" ); level notify( "alien_cycle_ended" ); common_scripts\utility::flag_set( "gas_event_done" ); thread open_doors_to_map_room(); var_11 = getentarray( "lab_area_main", "targetname" ); level.encounter_name = undefined; foreach ( var_13 in var_11 ) var_13 delete(); } remove_back_wall( var_0 ) { wait( var_0 - 4 ); var_1 = getentarray( "cross_wall_swap_out", "targetname" ); foreach ( var_3 in var_1 ) { var_3 connectpaths(); var_3 delete(); } var_5 = getentarray( "cross_wall_swap_in", "targetname" ); foreach ( var_3 in var_5 ) var_3 show(); } open_doors_to_map_room() { wait 4; var_0 = getent( "map_room_door_1", "targetname" ); var_1 = var_0 common_scripts\utility::get_target_ent(); var_1 linkto( var_0 ); var_2 = getent( "map_room_door_2", "targetname" ); var_3 = var_2 common_scripts\utility::get_target_ent(); var_3 linkto( var_2 ); var_1 connectpaths(); var_3 connectpaths(); playsoundatpos( ( -738, 5825, 1471 ), "scn_beacon_lab_door_open" ); var_0 moveto( ( 212, 5848, 1408 ), 5, 0, 1 ); var_2 moveto( ( -788, 5840, 1408 ), 5, 0, 1 ); } cross_gas_anims() { var_0 = getent( "cross_body", "targetname" ); var_1 = spawn( "script_model", var_0 gettagorigin( "J_spine4" ) ); var_1 setmodel( "head_cross_a" ); var_1.angles = var_0 gettagangles( "J_spine4" ); var_0 scriptmodelplayanim( "mp_alien_beacon_cross_idle" ); var_1 scriptmodelplayanim( "mp_alien_beacon_cross_idle" ); level waittill( "delete_cross_and_chair" ); var_0 delete(); var_1 delete(); var_2 = getentarray( "cross_chair_piece", "targetname" ); foreach ( var_4 in var_2 ) var_4 delete(); } gas_attak_point_logic() { self makeentitysentient( "allies" ); self.threatbias = 1000; self setcandamage( 1 ); self.progresshealth = 200; thread gas_point_health_monitor(); thread prevent_friendly_fire(); } prevent_friendly_fire() { self endon( "death" ); self endon( "end_cycle" ); self.health = 9999999; for (;;) { self waittill( "damage", var_0, var_1, var_2, var_3, var_4 ); if ( isdefined( var_1.team ) && var_1.team == "allies" ) { self.health = self.health + var_0; continue; } if ( self.origin[2] > 1350 ) level notify( "dlc_vo_notify", "warn_pipes", "warn_pipes_upper" ); else level notify( "dlc_vo_notify", "warn_pipes", "warn_pipes_lower" ); self.progresshealth = self.progresshealth - var_0; playsoundatpos( self.origin, "scn_beacon_cross_gas_pipehit" ); } } gas_point_health_monitor() { level endon( "end_cycle" ); var_0 = self.progresshealth; self.start_health = var_0; var_1 = 0; maps\mp\alien\_outline_proto::enable_outline_for_players( self, level.players, 2, 1, "high" ); self.alarmed = 0; while ( self.progresshealth > 0 ) { if ( self.progresshealth < self.start_health ) { var_1 = 0; self.start_health = self.progresshealth; if ( self.progresshealth > var_0 * 0.75 ) { } else if ( self.progresshealth > var_0 * 0.5 ) maps\mp\alien\_outline_proto::enable_outline_for_players( self, level.players, 5, 1, "high" ); else if ( self.progresshealth > var_0 * 0.25 ) maps\mp\alien\_outline_proto::enable_outline_for_players( self, level.players, 4, 1, "high" ); else { maps\mp\alien\_outline_proto::enable_outline_for_players( self, level.players, 1, 1, "high" ); if ( self.alarmed == 0 ) { playsoundatpos( self.origin + ( 0, 0, 40 ), "scn_beacon_cross_gas_alarm" ); self.alarmed = 1; } } } else { var_1 = var_1 + 1; if ( var_1 >= 50 ) { if ( self.progresshealth > var_0 * 0.75 ) { self.progresshealth = var_0; var_1 = 0; } else if ( self.progresshealth > var_0 * 0.5 ) { self.progresshealth = int( floor( var_0 * 0.75 ) ); var_1 = 0; } else if ( self.progresshealth > var_0 * 0.25 ) { self.progresshealth = int( floor( var_0 * 0.5 ) ); var_1 = 0; } else { self.progresshealth = int( floor( var_0 * 0.25 ) ); var_1 = 0; } } } wait 0.1; } maps\mp\alien\_gamescore::update_team_encounter_performance( "gas", "num_valve_destroyed" ); level notify( "valve_dead" ); maps\mp\alien\_outline_proto::disable_outline_for_players( self, level.players ); var_2 = cross_gas_out_fx(); level.gas_ents[level.gas_ents.size] = var_2; playsoundatpos( self.origin + ( 0, 0, 40 ), "scn_beacon_cross_gas_burst" ); playsoundatpos( self.origin + ( 0, 0, 40 ), "scn_beacon_cross_gas_start" ); var_3 = spawn( "script_origin", self.origin + ( 0, 0, 40 ) ); wait 0.1; triggerfx( var_2 ); var_3 playloopsound( "scn_beacon_cross_gas_lp_02" ); var_4 = common_scripts\utility::get_target_ent(); var_4 thread gas_pain_logic( self ); self freeentitysentient(); } cross_gas_out_fx() { if ( self.targetname == "gas_attack_point_0" ) { var_0 = spawnfx( level._effect["beacon_cross_gas_top"], self.origin + ( 0, 0, 40 ) ); var_0.angles = var_0.angles + ( 90, 0, 0 ); return var_0; } else if ( self.targetname == "gas_attack_point_1" ) { var_0 = spawnfx( level._effect["beacon_cross_gas_top"], self.origin + ( 0, 0, 40 ) ); return var_0; } else if ( self.targetname == "gas_attack_point_2" ) { var_0 = spawnfx( level._effect["beacon_cross_gas_bot"], self.origin + ( 0, 0, 40 ) ); var_0.angles = var_0.angles + ( 90, 0, 0 ); return var_0; } else if ( self.targetname == "gas_attack_point_3" ) { var_0 = spawnfx( level._effect["beacon_cross_gas_bot"], self.origin + ( 0, 0, 40 ) ); return var_0; } } play_gas_chamber_fx() { self endon( "gas_event_done" ); self endon( "death" ); common_scripts\utility::exploder( 33 ); wait 215.5; common_scripts\utility::exploder( 34 ); wait 24; playfx( level._effect["electrical_sparks_20_funner2"], ( -288.287, 5798.12, 1496.07 ), anglestoforward( ( 25, 270, 90 ) ), anglestoup( ( 25, 270, 90 ) ) ); playfx( level._effect["electrical_sparks_20_funner2"], ( -286.878, 5825.81, 1449.25 ), anglestoforward( ( 310, 270, 90 ) ), anglestoup( ( 310, 270, 90 ) ) ); } gas_pain_logic( var_0 ) { self endon( "gas_done" ); var_1 = spawn( "script_origin", var_0.origin ); var_1 moveto( var_1.origin - ( 0, -1472, 0 ), 10, 0, 0 ); var_1 thread spot_check_for_gas( 10 ); for (;;) { foreach ( var_3 in level.players ) { if ( var_3 istouching( self ) ) { if ( !isdefined( var_1.allkill ) ) { if ( var_3.origin[1] > var_1.origin[1] ) { level notify( "dlc_vo_notify", "warn_gas" ); var_3 dodamage( var_3.maxhealth * 0.175, var_3.origin ); } continue; } level notify( "dlc_vo_notify", "warn_gas" ); var_3 dodamage( var_3.maxhealth * 0.175, var_3.origin ); } } wait 0.5; } } spot_check_for_gas( var_0 ) { wait( var_0 ); self.allkill = 1; common_scripts\utility::flag_wait( "gas_event_done" ); self delete(); } gas_fail_counter() { level endon( "end_cycle" ); var_0 = 0; while ( var_0 < 4 ) { level waittill( "valve_dead" ); var_0 = var_0 + 1; switch ( var_0 ) { case 1: release_gas_fog( "start" ); break; case 2: release_gas_fog( "two pipes" ); break; case 3: release_gas_fog( "three pipes" ); break; case 4: release_gas_fog( "four pipes" ); break; } } release_gas_fog( "end" ); maps\mp\gametypes\aliens::alienendgame( "axis", maps\mp\alien\_hud::get_end_game_string_index( "gas_fail" ) ); } spawn_wave( var_0 ) { level endon( "stop_waves" ); maps\mp\alien\_spawn_director::start_cycle( var_0 ); } timer( var_0 ) { thread gas_intro_sounds_and_shakes( 0.5, 1 ); var_1 = var_0 / 100; var_2 = 0; while ( var_2 <= 100 ) { wait( var_1 ); var_2 = var_2 + 1; if ( var_2 == 33 ) thread buildup_tentacle_sounds_and_shakes( 0.15, 1 ); if ( var_2 == 66 ) thread buildup_tentacle_sounds_and_shakes2( 0.2, 1.5 ); if ( var_2 == 92 ) thread play_cross_gas_music(); if ( var_2 == 97 ) { thread gas_finale_sfx_and_shakes(); level notify( "delete_cross_and_chair" ); } setomnvar( "ui_alien_boss_progression", 100 - var_2 ); } } gas_encounter_start_sfx() { level.gas_entity = spawn( "script_origin", ( -298, 5816, 1468 ) ); playsoundatpos( ( -527, 5793, 1468 ), "scn_drillbot_activate" ); wait 0.2; playsoundatpos( ( -765, 5711, 1651 ), "scn_beacon_cross_gas_distant" ); wait 0.4; playsoundatpos( ( -298, 5816, 1468 ), "scn_beacon_cross_gas_start" ); wait 0.1; level.gas_entity playloopsound( "scn_beacon_cross_gas_lp" ); wait 238; level.gas_entity stoploopsound( "scn_beacon_cross_gas_lp" ); wait 0.5; level.gas_entity delete(); } gas_intro_sounds_and_shakes( var_0, var_1 ) { var_2 = ( -292, 5782, 1491 ); var_3 = spawn( "script_origin", var_2 ); earthquake( var_0, var_1, var_2, 1800 ); foreach ( var_5 in level.players ) playrumbleonposition( "grenade_rumble", var_5.origin ); play_sound_on_player( "scn_beacon_cross_gas_quake" ); wait( var_1 ); var_3 delete(); } buildup_tentacle_sounds_and_shakes( var_0, var_1 ) { var_2 = ( -292, 5782, 1491 ); var_3 = spawn( "script_origin", var_2 ); earthquake( var_0, var_1, var_2, 1800 ); playsoundatpos( ( -286, 6269, 1519 ), "scn_cross_smoke_hit1" ); foreach ( var_5 in level.players ) playrumbleonposition( "grenade_rumble", var_5.origin ); wait( var_1 ); var_3 delete(); } buildup_tentacle_sounds_and_shakes2( var_0, var_1 ) { var_2 = ( -292, 5782, 1491 ); var_3 = spawn( "script_origin", var_2 ); earthquake( var_0, var_1, var_2, 1800 ); playsoundatpos( ( -286, 6269, 1519 ), "scn_cross_smoke_hit2" ); foreach ( var_5 in level.players ) playrumbleonposition( "grenade_rumble", var_5.origin ); wait( var_1 ); var_3 delete(); } gas_finale_sfx_and_shakes() { var_0 = ( -292, 5782, 1491 ); var_1 = spawn( "script_origin", var_0 ); playsoundatpos( ( -286, 6269, 1519 ), "scn_cross_smoke_hit3_preroar" ); wait 1; earthquake( 0.45, 1.5, var_0, 1800 ); playsoundatpos( ( -286, 6269, 1519 ), "scn_cross_smoke_hit3" ); foreach ( var_3 in level.players ) playrumbleonposition( "artillery_rumble", var_3.origin ); wait 2.5; earthquake( 0.85, 2.5, var_0, 1800 ); playsoundatpos( ( -286, 6269, 1519 ), "scn_cross_smoke_hit4" ); thread create_smashedwall2_storm_sfx(); foreach ( var_3 in level.players ) playrumbleonposition( "artillery_rumble", var_3.origin ); wait 2.5; var_1 delete(); } play_cross_gas_music() { foreach ( var_1 in level.players ) { if ( common_scripts\utility::flag( "alien_music_playing" ) ) { var_1 stoplocalsound( "mp_suspense_01" ); var_1 stoplocalsound( "mp_suspense_02" ); var_1 stoplocalsound( "mp_suspense_03" ); var_1 stoplocalsound( "mp_suspense_04" ); var_1 stoplocalsound( "mp_suspense_05" ); var_1 stoplocalsound( "mp_suspense_06" ); var_1 stoplocalsound( "mus_alien_newwave" ); var_1 stoplocalsound( "mus_alien_queen" ); common_scripts\utility::flag_clear( "alien_music_playing" ); } if ( !common_scripts\utility::flag( "exfil_music_playing" ) ) level thread maps\mp\alien\_music_and_dialog::play_alien_music( "mus_alien_dlc2_cross" ); } } gas_console_marker( var_0 ) { var_1 = "waypoint_alien_blocker"; var_2 = 14; var_3 = 14; var_4 = 0.5; var_5 = var_0.origin; var_6 = 49; var_7 = 256; var_8 = 100; var_9 = maps\mp\alien\_hud::make_waypoint( var_1, var_2, var_3, var_4, var_5 ); var_10 = spawn( "trigger_radius", var_5, 0, var_7, var_8 ); var_10 thread watch_trigger_by_player(); var_10 common_scripts\utility::waittill_any_timeout( var_6, "trigger_by_player" ); var_10 delete(); var_9 destroy(); } release_gas_fog( var_0 ) { var_1 = spawnstruct(); switch ( var_0 ) { case "start": var_1.startdist = 0; var_1.halfwaydist = 4098; var_1.red = 0.4417; var_1.green = 0.704; var_1.blue = 0.381; var_1.hdrcolorintensity = 1; var_1.maxopacity = 0.1; var_1.sunfogenabled = 1; var_1.sunred = 0.44; var_1.sungreen = 0.53; var_1.sunblue = 0.62; var_1.hdrsuncolorintensity = 0.5; var_1.sundir = ( 0.488, -0.8, 0.35 ); var_1.sunbeginfadeangle = 0; var_1.sunendfadeangle = 45; var_1.normalfogscale = 1; var_1.skyfogintensity = 0.9; var_1.skyfogminangle = -36; var_1.skyfogmaxangle = 60; var_1.transition_time = 4.0; break; case "two pipes": var_1.startdist = 0; var_1.halfwaydist = 4098; var_1.red = 0.4417; var_1.green = 0.704; var_1.blue = 0.381; var_1.hdrcolorintensity = 1; var_1.maxopacity = 0.3; var_1.sunfogenabled = 1; var_1.sunred = 0.44; var_1.sungreen = 0.53; var_1.sunblue = 0.62; var_1.hdrsuncolorintensity = 1; var_1.sundir = ( 0.488, -0.8, 0.35 ); var_1.sunbeginfadeangle = 0; var_1.sunendfadeangle = 45; var_1.normalfogscale = 2; var_1.skyfogintensity = 0.9; var_1.skyfogminangle = -36; var_1.skyfogmaxangle = 60; var_1.transition_time = 3.0; break; case "three pipes": var_1.startdist = 0; var_1.halfwaydist = 4098; var_1.red = 0.4417; var_1.green = 0.704; var_1.blue = 0.381; var_1.hdrcolorintensity = 1; var_1.maxopacity = 0.5; var_1.sunfogenabled = 1; var_1.sunred = 0.44; var_1.sungreen = 0.53; var_1.sunblue = 0.62; var_1.hdrsuncolorintensity = 1; var_1.sundir = ( 0.488, -0.8, 0.35 ); var_1.sunbeginfadeangle = 0; var_1.sunendfadeangle = 45; var_1.normalfogscale = 3; var_1.skyfogintensity = 0.9; var_1.skyfogminangle = -36; var_1.skyfogmaxangle = 60; var_1.transition_time = 2.0; break; case "four pipes": var_1.startdist = 0; var_1.halfwaydist = 4098; var_1.red = 0.4417; var_1.green = 0.704; var_1.blue = 0.381; var_1.hdrcolorintensity = 1; var_1.maxopacity = 0.7; var_1.sunfogenabled = 1; var_1.sunred = 0.44; var_1.sungreen = 0.53; var_1.sunblue = 0.62; var_1.hdrsuncolorintensity = 1; var_1.sundir = ( 0.488, -0.8, 0.35 ); var_1.sunbeginfadeangle = 0; var_1.sunendfadeangle = 45; var_1.normalfogscale = 4; var_1.skyfogintensity = 0.9; var_1.skyfogminangle = -36; var_1.skyfogmaxangle = 60; var_1.transition_time = 1.0; break; case "end": var_1.startdist = 1024; var_1.halfwaydist = 4098; var_1.red = 0.39; var_1.green = 0.42; var_1.blue = 0.46; var_1.hdrcolorintensity = 1; var_1.maxopacity = 0.43; var_1.transition_time = 10.0; var_1.sunfogenabled = 1; var_1.sunred = 0.44; var_1.sungreen = 0.53; var_1.sunblue = 0.62; var_1.hdrsuncolorintensity = 1; var_1.sundir = ( 0.488, -0.8, 0.35 ); var_1.sunbeginfadeangle = 0; var_1.sunendfadeangle = 45; var_1.normalfogscale = 4; var_1.skyfogintensity = 0.9; var_1.skyfogminangle = -36; var_1.skyfogmaxangle = 60; break; } level.player playersetexpfog( var_1.startdist, var_1.halfwaydist, var_1.red, var_1.green, var_1.blue, var_1.hdrcolorintensity, var_1.maxopacity, var_1.transition_time, var_1.sunred, var_1.sungreen, var_1.sunblue, var_1.hdrsuncolorintensity, var_1.sundir, var_1.sunbeginfadeangle, var_1.sunendfadeangle, var_1.normalfogscale, var_1.skyfogintensity, var_1.skyfogminangle, var_1.skyfogmaxangle ); } kill_gas_fog() { level endon( "alien_cycle_ended" ); level waittill( "game_ended" ); release_gas_fog( "end" ); } boat_ride_vo() { wait 4; delay_vo_until_all_clear(); thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); wait 1; if ( common_scripts\utility::cointoss() ) { play_sound_on_player( "beacon_gdf_cif1thisisgodfather" ); wait 7.5; play_sound_on_player( "beacon_gdf_yourobjectiveisto" ); wait 5.25; play_sound_on_player( "beacon_gdf_youwillbeaccompaniedby" ); wait 8.5; play_sound_on_player( "beacon_gdf_keepyourheaddown" ); wait 4; } else { play_sound_on_player( "beacon_gdf_godfathertocif1your" ); wait 7.75; play_sound_on_player( "beacon_gdf_youlldeploywithan" ); wait 4.9; play_sound_on_player( "beacon_gdf_beadvisedcif1were" ); wait 5.75; play_sound_on_player( "beacon_gdf_whateveritisits" ); wait 3.75; play_sound_on_player( "beacon_gdf_findyourmanand" ); wait 3.5; } thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } first_door_vo() { for (;;) { level waittill( "door_opening", var_0 ); wait 1; if ( check_door_name( var_0 ) ) break; } thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); play_sound_on_player( "beacon_gdf_goodworkotherstashes" ); wait 4.25; thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); level.first_door_opened = 1; } check_door_name( var_0 ) { var_1 = [ "door_hive_4", "door_hive_6", "cargo_area_main" ]; foreach ( var_3 in var_1 ) { if ( var_3 == var_0 ) return 0; } return 1; } pre_miniboss_vo() { thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); play_sound_on_player( "beacon_gdf_braceforimpact" ); wait 5; thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } post_miniboss_vo() { delay_vo_until_all_clear( 10 ); wait 4; thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); play_sound_on_player( "beacon_gdf_headedbackto" ); wait 3.5; thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } cargo_room_intro_vo() { var_0 = getent( "cargo_entrance_vo_trig", "targetname" ); var_0 waittill( "trigger" ); wait 3; delay_vo_until_all_clear(); thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); var_1 = lookupsoundlength( "beacon_gdf_findawaytoaccess" ) / 1000; play_sound_on_player( "beacon_gdf_findawaytoaccess" ); wait( var_1 + 1 ); thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } cargo_room_use_ugv_vo() { var_0 = getent( "use_ugv_vo_trig", "targetname" ); var_0 waittill( "trigger" ); level notify( "stop_post_hive_vo" ); while ( common_scripts\utility::flag( "delay_UGV_VO" ) ) wait 0.1; delay_vo_until_all_clear(); wait 2; thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); var_1 = lookupsoundlength( "beacon_gdf_usethatugv" ) / 1000; play_sound_on_player( "beacon_gdf_usethatugv" ); wait( var_1 + 1 ); thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } cargo_room_hive_two_vo() { level notify( "stop_post_hive_vo" ); delay_vo_until_all_clear(); common_scripts\utility::flag_set( "delay_UGV_VO" ); thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); var_0 = lookupsoundlength( "beacon_gdf_locatetheasset" ) / 1000; play_sound_on_player( "beacon_gdf_locatetheasset" ); wait( var_0 + 1 ); thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); common_scripts\utility::flag_clear( "delay_UGV_VO" ); } cargo_room_go_to_control_room_vo() { level waittill( "blast_door_lifted" ); level notify( "stop_post_hive_vo" ); delay_vo_until_all_clear( 25 ); common_scripts\utility::flag_set( "cargo_control_room_vo_played" ); thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); wait 0.5; var_0 = lookupsoundlength( "beacon_gdf_thatsitgetup" ) / 1000; play_sound_on_player( "beacon_gdf_thatsitgetup" ); wait( var_0 + 1 ); thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } pre_crane_vo() { level waittill( "godfathers_explanation" ); common_scripts\utility::flag_set( "is_crane_nags" ); level notify( "stop_post_hive_vo" ); thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); var_0 = lookupsoundlength( "beacon_gdf_godfathertocif1i" ) / 1000; play_sound_on_player( "beacon_gdf_godfathertocif1i" ); wait( var_0 + 1 ); thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); common_scripts\utility::flag_clear( "is_crane_nags" ); common_scripts\utility::flag_set( "clear_for_crane_vo" ); thread cargo_room_get_on_container_vo(); } crane_vo() { common_scripts\utility::flag_wait( "clear_for_crane_vo" ); thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); var_0 = lookupsoundlength( "beacon_gdf_drcrosshasbeendesignated" ) / 1000; play_sound_on_player( "beacon_gdf_drcrosshasbeendesignated" ); wait( var_0 + 1 ); thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } lab_entrance_vo() { thread cross_gas_anims(); delay_vo_until_all_clear(); thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); play_sound_on_player( "beacon_gdf_crossisonthe" ); wait 4; play_sound_on_player( "beacon_gdf_youllneedtoclear" ); wait 3.5; thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } lab_first_hive_vo() { delay_vo_until_all_clear(); thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); play_sound_on_player( "beacon_gdf_remembernoheadshotswe" ); wait 4.1; thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } lab_second_hive_vo() { delay_vo_until_all_clear(); thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); play_sound_on_player( "beacon_arc_itriedtokill" ); wait 10; thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } pre_gas_event_vo() { delay_vo_until_all_clear( 45 ); thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); play_sound_on_player( "beacon_arc_thosewindowsarehigh" ); wait 10.5; common_scripts\utility::flag_set( "ready_for_gas_event" ); play_sound_on_player( "beacon_arc_thenkissyourarse" ); wait 5; thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); thread gas_event_nag(); } gas_event_nag() { wait 15; if ( !isdefined( level.gas_event_active ) ) { thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); play_sound_on_player( "beacon_arc_triggerthealarmto" ); wait 3; thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } wait 15; if ( !isdefined( level.gas_event_active ) ) level notify( "dlc_vo_notify", "start_containment" ); } post_gas_event_vo() { var_0 = getent( "post_gas_vo_trig", "targetname" ); var_0 waittill( "trigger" ); thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); var_1 = randomintrange( 0, 3 ); if ( var_1 == 0 ) { play_sound_on_player( "beacon_gdf_howdidyoumanageto" ); wait 4; } else if ( var_1 == 1 ) { play_sound_on_player( "beacon_gdf_unlessshesproutedgills" ); wait 4.75; } else { play_sound_on_player( "beacon_gdf_whereiscrosswhat" ); wait 3; } thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); thread pre_boss_vo(); } pre_boss_vo() { common_scripts\utility::flag_wait( "boss_is_spawned" ); wait 22; thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); play_sound_on_player( "beacon_gdf_cif1takethatthing" ); wait 6; thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } post_boss_vo() { wait 4; thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); play_sound_on_player( "beacon_gdf_goodworkcif1ive" ); wait 9; thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } play_sound_on_player( var_0 ) { foreach ( var_2 in level.players ) { if ( isdefined( var_2 ) ) { var_2 playsound( var_0 ); break; } } } drill_teleport( var_0, var_1, var_2 ) { var_3 = getent( var_0, "targetname" ); var_3 waittill( "trigger" ); level.drill_vehicle vehicle_teleport( var_1, var_2 ); } drill_swap() { var_0 = getent( "drill_boat_spawn", "targetname" ); var_0.origin = var_0.origin + ( 0, 0, -10 ); var_1 = spawn( "script_model", var_0.origin ); var_1.angles = var_0.angles; var_1 setmodel( "mp_laser_drill" ); var_2 = getent( "intro_hovercraft", "targetname" ); var_1 linkto( var_2 ); common_scripts\utility::flag_wait( "boat_ride_over" ); level notify( "spawn_beacon_drill", var_1.origin, var_1.angles ); var_1 delete(); var_0 delete(); } spawn_single_alien( var_0, var_1 ) { var_2 = maps\mp\gametypes\aliens::addalienagent( "axis", var_0.origin, var_0.angles, var_1 ); return var_2; } clean_up( var_0, var_1 ) { level notify( var_0 ); wait 0.05; foreach ( var_3 in var_1 ) var_3 delete(); } play_vignette_vo( var_0, var_1, var_2, var_3, var_4 ) { if ( !isdefined( var_1 ) ) var_1 = "high"; if ( !isdefined( var_2 ) ) var_2 = 30; if ( !isdefined( var_3 ) ) var_3 = 0; if ( !isdefined( var_4 ) ) var_4 = 0.25; foreach ( var_6 in level.players ) { var_6 maps\mp\alien\_music_and_dialog::play_vo_on_player( var_0, var_1, var_2, var_3, var_4 ); break; } } spawn_model( var_0, var_1, var_2, var_3 ) { var_4 = spawn( "script_model", ( 0, 0, 0 ) ); var_4 setmodel( var_0 ); var_4.origin = var_1 gettagorigin( var_2 ); var_4.angles = var_1 gettagangles( var_2 ) + var_3; var_4 linkto( var_1, var_2 ); return var_4; } watch_trigger_by_player() { self endon( "death" ); level endon( "game_ended" ); common_scripts\utility::waitframe(); for (;;) { self waittill( "trigger", var_0 ); if ( isplayer( var_0 ) ) break; } self notify( "trigger_by_player" ); } delay_vo_until_all_clear( var_0 ) { if ( !isdefined( var_0 ) ) var_0 = 30; var_1 = gettime() - var_0 * 1000; var_2 = gettime(); while ( var_1 <= var_2 ) { var_1 = gettime() - var_0 * 1000; var_3 = 0; var_4 = common_scripts\utility::array_combine( level.seeder_active_turrets, level.agentarray ); foreach ( var_6 in var_4 ) { if ( isdefined( var_6 ) ) { if ( isalive( var_6 ) || var_6.model == "alien_spore" ) { if ( var_6.team == "axis" && isdefined( var_6.alien_type ) && var_6.alien_type != "spider" || var_6.model == "alien_spore" && var_6.team == "axis" ) { var_3 = 1; break; } } } } if ( var_3 == 0 ) { wait( randomfloatrange( 1, 3.5 ) ); return; } wait 0.5; } } cargo_room_get_on_container_vo() { level endon( "crane_started" ); var_0 = 15; while ( !common_scripts\utility::flag( "everyone_in_cargo_container" ) ) { wait( var_0 ); if ( !common_scripts\utility::flag( "no_ass_nag" ) ) { common_scripts\utility::flag_set( "is_crane_nags" ); var_0 = var_0 + 10; thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); var_1 = lookupsoundlength( "beacon_gdf_getyourasson" ) / 1000; play_sound_on_player( "beacon_gdf_getyourasson" ); wait( var_1 + 1 ); thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); common_scripts\utility::flag_clear( "is_crane_nags" ); } } } nag_bink_toggle() { var_0 = getent( "cargo_room_control_switch", "targetname" ); level.no_more_binks_archer = undefined; while ( !common_scripts\utility::flag( "everyone_in_cargo_container" ) ) { if ( common_scripts\utility::flag( "is_crane_nags" ) || isdefined( level.no_more_binks_archer ) ) var_0 makeunusable(); else { var_0 makeusable(); var_0 sethintstring( &"MP_ALIEN_BEACON_BINK_BUTTON" ); } wait 0.05; } var_0 delete(); } init_cinematics( var_0, var_1 ) { level endon( "crane_started" ); if ( !is_ps3_online_splitscreen() ) level thread watch_cinematic_use( var_0, "cinematic_preload", "cinematic_start", "cinematic_end" ); level notify( "cinematic_preload" ); wait 1; if ( !isdefined( level.bink_first_play ) ) { level.bink_first_play = 1; level waittill( "trigger_first_archer_bink" ); } else { var_2 = getent( "cargo_room_control_switch", "targetname" ); var_2 waittill( "trigger" ); var_2 makeunusable(); } if ( is_ps3_online_splitscreen() ) level thread no_bink_nag(); level notify( "cinematic_start" ); if ( var_0 == "mp_beacon_archer_vig_nag_02" ) level.no_more_binks_archer = 1; common_scripts\utility::flag_set( "is_crane_nags" ); common_scripts\utility::flag_set( "no_ass_nag" ); wait( var_1 ); level notify( "cinematic_end" ); wait 1; } is_ps3_online_splitscreen() { var_0 = 0; foreach ( var_2 in level.players ) { if ( var_2 issplitscreenplayer() ) var_0 = 1; } if ( var_0 && level.ps3 && level.onlinegame ) return 1; else return 0; } no_bink_nag() { thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players ); var_0 = lookupsoundlength( "beacon_gdf_getyourasson" ) / 1000; play_sound_on_player( "beacon_gdf_getyourasson" ); wait( var_0 + 1 ); thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players ); } watch_cinematic_use( var_0, var_1, var_2, var_3 ) { if ( !isdefined( var_0 ) ) return; level waittill( var_1 ); preloadcinematicforall( var_0 ); level waittill( var_2 ); playcinematicforall( var_0 ); level waittill( var_3 ); stopcinematicforall(); common_scripts\utility::flag_clear( "no_ass_nag" ); wait 3; if ( common_scripts\utility::flag( "everyone_in_cargo_container" ) ) return; common_scripts\utility::flag_clear( "is_crane_nags" ); if ( !isdefined( level.bink_second_play ) ) { level notify( "godfathers_explanation" ); level.bink_second_play = 1; thread init_cinematics( "mp_beacon_archer_vig_nag_01", 11 ); return; } if ( !isdefined( level.bink_third_play ) ) { level.bink_third_play = 1; thread init_cinematics( "mp_beacon_archer_vig_nag_02", 7 ); } }