// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool start() { iprintln( "Exfil" ); maps\black_ice_util::player_start( "player_start_exfil" ); var_0 = [ "struct_ally_start_exfil_01", "struct_ally_start_exfil_02" ]; level._allies maps\black_ice_util::teleport_allies( var_0 ); level.player setclienttriggeraudiozone( "blackice_exfil_int", 2 ); level._command.door_out thread maps\black_ice_util::open_door( 90, 1 ); thread maps\black_ice_command::command_light_change(); thread maps\black_ice_audio::blackice_exfil_music(); common_scripts\utility::exploder( "fx_command_interior" ); thread maps\black_ice_refinery::util_refinery_stack_cleanup(); thread maps\black_ice_util::black_ice_geyser2_pulse(); setsaveddvar( "r_snowAmbientColor", ( 0.01, 0.01, 0.01 ) ); thread shrink_pdeck_lights(); } main() { common_scripts\utility::array_call( level._exfil.debris, ::show ); level.player setclienttriggeraudiozone( "blackice_exfil_int", 2 ); thread event_pipe_explosions(); var_0 = getent( "brush_pipe_run_blocker", "targetname" ); if ( isdefined( var_0 ) ) { var_0 connectpaths(); var_0 delete(); } var_1 = maps\_utility::spawn_anim_model( "exfil_oilrig" ); var_1 thread retarget_rig(); var_2 = maps\_utility::spawn_anim_model( "exfil_lifeboat1" ); var_3 = maps\_utility::spawn_anim_model( "exfil_lifeboat2" ); var_4 = maps\_utility::spawn_anim_model( "exfil_lifeboat3" ); var_5 = maps\_utility::spawn_anim_model( "exfil_lifeboat4" ); var_6 = maps\_utility::spawn_anim_model( "exfil_lifeboat5" ); var_7 = maps\_utility::spawn_anim_model( "exfil_lifeboat6" ); var_8 = maps\_utility::spawn_anim_model( "exfil_lifeboat7" ); var_9 = maps\_utility::spawn_anim_model( "exfil_lifeboat8" ); var_10 = maps\_utility::spawn_anim_model( "exfil_lifeboat9" ); var_11 = maps\_utility::spawn_anim_model( "exfil_lifeboat10" ); var_12 = maps\_utility::spawn_anim_model( "exfil_lifeboat11" ); var_13 = maps\_utility::spawn_anim_model( "exfil_lifeboat12" ); var_14 = maps\_utility::spawn_anim_model( "exfil_lifeboat13" ); var_15 = maps\_utility::spawn_anim_model( "exfil_lifeboat14" ); var_16 = maps\_utility::spawn_anim_model( "exfil_lifeboat15" ); var_17 = maps\_utility::spawn_anim_model( "exfil_lifeboat16" ); var_18 = maps\_utility::spawn_anim_model( "exfil_lifeboat17" ); var_19 = maps\_utility::spawn_anim_model( "exfil_lifeboat18" ); var_20 = maps\_utility::spawn_anim_model( "exfil_lifeboat19" ); var_21 = maps\_utility::spawn_anim_model( "exfil_lifeboat20" ); var_22 = maps\_utility::spawn_anim_model( "player_legs_exfil" ); var_1 hide(); var_22 hide(); thread maps\black_ice_fx::exfil_oilrig_preboom_fx( var_1 ); var_23 = level._exfil.struct; var_24 = common_scripts\utility::spawn_tag_origin(); var_24.origin = var_23.origin; var_24.angles = var_23.angles; var_25 = common_scripts\utility::getstruct( "vignette_exfil_runout", "script_noteworthy" ); common_scripts\utility::flag_set( "flag_stop_fire_tower_sfx_logic" ); thread player_sprint(); thread ally_sprint(); thread dialog_main(); thread player_heat_fx(); thread exfil_slomo(); thread exfil_heli( var_23 ); thread exfil_random_quaker(); thread exfil_deck_explosions(); thread exfil_hall_explosions(); thread maps\black_ice_util::rotatelights( "light_spinner_h", "light_spin_h", "yaw" ); thread maps\black_ice_util::rotatelights( "light_spinner_v", "light_spin_v", "pitch" ); thread maps\black_ice_util::rotatelights( "light_spinner_v2", "light_spin_v2", "pitch" ); thread exfil_light_burst(); thread exfil_steam_burst(); thread exfil_hall_light_flicker(); thread exfil_engine_fires(); thread exfil_yellow_alarms(); thread flyout_lights(); thread exfil_dof(); thread exfil_vision_bump(); thread exfil_mblur_changes(); var_26 = level._allies; common_scripts\utility::array_thread( var_26, maps\_utility::set_goal_radius, 8 ); thread exfil_anims_cornering( var_25, var_23, var_26, 1 ); thread exfil_anims_cornering( var_25, var_23, var_26, 0 ); level waittill( "notify_start_ladder_chase" ); common_scripts\utility::flag_set( "flag_ladder_chase" ); maps\black_ice_util::setup_player_for_animated_sequence( 0, undefined, undefined, undefined, 1, 1 ); level.player_rig hide(); var_27 = [ level.player_rig, var_1, var_22, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10, var_11, var_12, var_13, var_14, var_15, var_16, var_17, var_18, var_19, var_20, var_21 ]; var_26 = common_scripts\utility::array_combine( var_26, level._exfil_heli ); var_26 = common_scripts\utility::array_combine( var_27, var_26 ); foreach ( var_29 in var_26 ) var_29 linkto( var_24 ); var_26 = common_scripts\utility::array_add( var_26, var_1 ); var_24 thread maps\_anim::anim_single( var_26, "ladder_chase" ); var_24 thread exfil_teleport( var_1 ); var_31 = [ var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10, var_11, var_12, var_13, var_14, var_15, var_16, var_17, var_18, var_19, var_20, var_21 ]; foreach ( var_33 in var_31 ) thread maps\black_ice_fx::fx_exfil_lifeboat_wake( var_33 ); thread ladder_chase_explosion_fx(); thread player_explosion_reaction(); thread ladder_player_jumpcheck(); thread player_dropgun_before_jump(); rubberband_ladder_chase( var_26 ); if ( level.jump_distance_allowed == 0 || common_scripts\utility::flag( "flag_ladder_jumpfail_nojump" ) ) { var_35 = 1.0; while ( var_35 > 0.0 ) { if ( common_scripts\utility::flag( "flag_ladder_autojump" ) ) { common_scripts\utility::flag_set( "flag_jumped_too_late" ); break; } var_35 = var_35 - level.timestep; wait( level.timestep ); } common_scripts\utility::flag_set( "flag_ladder_jumpfail_nojump" ); } if ( common_scripts\utility::flag( "flag_jumped_too_late" ) ) { level.player thread maps\black_ice_audio::sfx_blackice_fail_fall(); thread maps\black_ice_fx::exfil_player_view_smoke_particles(); var_36 = maps\_utility::spawn_anim_model( "player_rig" ); var_36 hide(); var_37 = 0.8; var_24 thread maps\_anim::anim_single_solo( var_36, "exfil_fail" ); level.player playerlinktoblend( var_36, "tag_player", var_37 ); level.player notify( "notify_player_animated_sequence_restrictions" ); wait( var_37 ); var_36 show(); level waittill( "notify_player_hit_ice" ); var_38 = maps\_hud_util::create_client_overlay( "black", 0, level.player ); var_38 fadeovertime( 0.01 ); var_38.alpha = 1; var_38.foreground = 0; wait 1.2; setdvar( "ui_deadquote", &"BLACK_ICE_EXFIL_LATE" ); thread maps\_utility::missionfailedwrapper(); } else if ( common_scripts\utility::flag( "flag_ladder_jumpfail_nojump" ) ) { setdvar( "ui_deadquote", &"BLACK_ICE_EXFIL_NOJUMP" ); player_fail_rigexplode(); } else { maps\_utility::autosave_by_name( "exfil_end" ); level notify( "player_ladder_success" ); common_scripts\utility::flag_set( "flag_teleport_rig" ); thread maps\black_ice_fx::exfil_player_view_smoke_particles(); thread player_view_shake(); thread player_unhide_arms_with_notetrack(); var_37 = get_blendtime_from_notetrack( level.player_rig, level.scr_anim["player_rig"]["ladder_chase"], "end_blend", 1.0 ); level.player playerlinktoblend( level.player_rig, "tag_player", var_37 ); level.player notify( "notify_player_animated_sequence_restrictions" ); wait( var_37 ); var_22 show(); ambientplay( "ambient_blackice_outside_lr", 2 ); level waittill( "notify_flyout_fade_to_black" ); wait 2; var_38 = maps\_hud_util::create_client_overlay( "black", 0, level.player ); level.player setclienttriggeraudiozone( "blackice_end", 2.6 ); var_38 fadeovertime( 2.6 ); var_38.alpha = 1; var_38.foreground = 0; wait 2.5; maps\_utility::nextmission(); } } section_flag_inits() { common_scripts\utility::flag_init( "flag_stop_fire_tower_sfx_logic" ); common_scripts\utility::flag_init( "flag_exfil_end" ); common_scripts\utility::flag_init( "flag_ladder_jump" ); common_scripts\utility::flag_init( "flag_ladder_autojump" ); common_scripts\utility::flag_init( "flag_ladder_jumpfail_nojump" ); common_scripts\utility::flag_init( "flag_ladder_jumpcheck" ); common_scripts\utility::flag_init( "flag_helo_swing" ); common_scripts\utility::flag_init( "flag_baker_steam_react" ); common_scripts\utility::flag_init( "flag_ladder_chase" ); common_scripts\utility::flag_init( "flag_teleport_rig" ); common_scripts\utility::flag_init( "flag_command_pipes_explosion" ); common_scripts\utility::flag_init( "flag_player_dying_on_rig" ); common_scripts\utility::flag_init( "flag_kick_player_to_death" ); common_scripts\utility::flag_init( "flag_jumped_too_late" ); } section_precache() { precacheitem( "freerunner" ); } section_post_inits() { level._exfil = spawnstruct(); level.jump_distance_allowed = 1; level._exfil.struct = common_scripts\utility::getstruct( "struct_exfil", "targetname" ); if ( isdefined( level._exfil.struct ) ) { level._exfil.door = maps\black_ice_util::setup_door( "model_exfil_door", "bulkhead_door", "jnt_door" ); var_0 = common_scripts\utility::array_combine( getentarray( "bridge_debris", "targetname" ), getentarray( "mg_debris", "targetname" ) ); common_scripts\utility::array_call( var_0, ::hide ); level._exfil.debris = var_0; } else iprintln( "black_ice_exfil.gsc: Warning - Exfil struct missing (compiled out?)" ); } dialog_main() { maps\_utility::trigger_wait_targetname( "trig_exfil_dialog_radiobravo" ); dialog_radiobravo(); maps\_utility::trigger_wait_targetname( "trig_exfil_dialog_seehelo" ); dialog_seehelo(); level waittill( "notify_exfil_dialog_1" ); dialog_explode(); level waittill( "notify_exfil_dialog_2" ); } dialog_radiobravo() { level._allies[0] maps\_utility::smart_dialogue( "black_ice_bkr_bravowereheadingto" ); wait 0.1; maps\_utility::smart_radio_dialogue( "black_ice_diz_copywellgetas" ); } dialog_seehelo() { level._allies[0] maps\_utility::smart_dialogue( "black_ice_bkr_theretheyaremove" ); } dialog_explode() { level._allies[0] maps\_utility::smart_dialogue( "black_ice_bkr_shitbravo" ); wait 1.3; level._allies[0] maps\_utility::smart_dialogue( "black_ice_bkr_gogogowe" ); } dialog_jump() { level._allies[0] maps\_utility::smart_dialogue( "black_ice_bkr_jump" ); } exfil_slomo() { level waittill( "notify_exfil_start_slomo" ); setslowmotion( 1.0, 0.5, 3.0 ); level waittill( "notify_exfil_end_slomo" ); setslowmotion( 0.5, 1.0, 3.0 ); } ladder_chase_explosion_fx() { common_scripts\utility::exploder( "exfil_vignette_explosion" ); thread maps\black_ice_audio::sfx_blackice_engine_dist_explo(); wait 3.0; common_scripts\utility::exploder( "exfil_vignette_explosion_perif_c" ); earthquake( 0.3, 1, level.player.origin, 3000 ); level.player playrumbleonentity( "grenade_rumble" ); wait 0.8; common_scripts\utility::exploder( "exfil_vignette_explosion_perif_d" ); earthquake( 0.2, 1, level.player.origin, 3000 ); level.player playrumbleonentity( "damage_light" ); } player_explosion_reaction() { var_0 = common_scripts\utility::getstruct( "struct_exfil_explosion_damage", "targetname" ); var_1 = distance( level.player.origin, var_0.origin ); player_speed_reaction_distance( 750, 1100, var_1 ); player_viewkick_distance( var_0, 30, 750, 1200, var_1 ); player_quake_distance( 0.7, 0.8, 750, 1300, var_1 ); player_quake_distance( 0.3, 3.0, 750, 1300, var_1 ); player_rumble_distance( var_1, "grenade_rumble", 850, "damage_light", 1200 ); player_push_distance( ( 1, 0, 0 ), 200, 0.35, 750, 1100, var_1 ); if ( var_1 < 1000 ) { level.player shellshock( "blackice_nosound", 3.0 ); level.player allowsprint( 0 ); level.player disableweapons(); level.player hideviewmodel(); level.player disableoffhandweapons(); level.player disableweaponswitch(); } } player_pipe_explosion_reaction() { var_0 = common_scripts\utility::getstruct( "struct_exfil_pipe_explosion", "targetname" ); var_1 = distance( level.player.origin, var_0.origin ); player_viewkick_distance( var_0, 15, 650, 900, var_1 ); player_quake_distance( 0.4, 0.8, 650, 900, var_1 ); player_quake_distance( 0.15, 3.0, 650, 900, var_1 ); player_rumble_distance( var_1, "grenade_rumble", 800, "damage_light", 1000 ); } player_speed_reaction_distance( var_0, var_1, var_2 ) { var_3 = maps\black_ice_util::normalize_value( var_0, var_1, var_2 ); thread player_stunned_speed_blender( var_3 ); } player_quake_distance( var_0, var_1, var_2, var_3, var_4 ) { if ( var_4 < var_3 ) { var_5 = maps\black_ice_util::normalize_value( var_2, var_3, var_4 ); var_6 = maps\black_ice_util::factor_value_min_max( var_0, 0, var_5 ); earthquake( var_6, var_1, level.player.origin, 3000 ); } } player_viewkick_distance( var_0, var_1, var_2, var_3, var_4 ) { if ( var_4 < var_3 ) { var_5 = maps\black_ice_util::normalize_value( var_2, var_3, var_4 ); var_6 = int( maps\black_ice_util::factor_value_min_max( var_1, 0, var_5 ) ); level.player viewkick( var_6, var_0.origin ); } } player_rumble_distance( var_0, var_1, var_2, var_3, var_4 ) { if ( var_0 < var_2 ) level.player playrumbleonentity( var_1 ); else if ( var_0 < var_4 ) level.player playrumbleonentity( var_3 ); } player_push_distance( var_0, var_1, var_2, var_3, var_4, var_5 ) { if ( var_5 < var_4 ) { var_6 = maps\black_ice_util::normalize_value( var_3, var_4, var_5 ); var_7 = maps\black_ice_util::factor_value_min_max( var_1, 0, var_6 ); thread maps\black_ice_util::push_player_impulse( var_0, var_7, var_2 ); } } player_unhide_arms_with_notetrack() { level waittill( "notify_player_unhide_arms" ); level.player_rig show(); } player_view_shake() { var_0 = 1.0; var_1 = 0.5; var_2 = 0.5; var_3 = 3.5; var_4 = 0.15; var_5 = 0.22; var_6 = 0.07; maps\black_ice_util::player_view_shake_blender( var_0, 0.02, var_4 ); while ( !common_scripts\utility::flag( "flag_helo_swing" ) ) { earthquake( var_4, 0.2, level.player.origin, 100000.0 ); wait( level.timestep ); } maps\black_ice_util::player_view_shake_blender( var_1, var_4, var_5 ); maps\black_ice_util::player_view_shake_blender( var_2, var_5, var_5 ); maps\black_ice_util::player_view_shake_blender( var_3, var_5, var_6 ); for (;;) { earthquake( var_6, 0.2, level.player.origin, 100000.0 ); wait( level.timestep ); } } exfil_teleport( var_0 ) { level endon( "notify_exfil_fail" ); var_1 = common_scripts\utility::getstruct( "struct_exfil_teleport", "targetname" ); level waittill( "notify_exfil_player_teleport" ); common_scripts\utility::exploder( "flyout_water_fx" ); if ( common_scripts\utility::flag( "flag_teleport_rig" ) ) { self.origin = var_1.origin; self.angles = var_1.angles; wait 0.05; var_0 show(); } } exfil_deck_explosions() { maps\_utility::trigger_wait_targetname( "trig_exfil_explode_1" ); level.player playsound( "scn_blackice_exfil_explo04" ); common_scripts\utility::exploder( "exfil_vignette_explosion_perif_a" ); earthquake( 0.3, 1, level.player.origin, 3000 ); level.player playrumbleonentity( "grenade_rumble" ); maps\_utility::trigger_wait_targetname( "trig_exfil_explode_2" ); common_scripts\utility::exploder( "exfil_vignette_explosion_perif_b" ); earthquake( 0.3, 1, level.player.origin, 3000 ); level.player playrumbleonentity( "grenade_rumble" ); wait 1.2; common_scripts\utility::exploder( "exfil_vignette_explosion_perif_e" ); earthquake( 0.3, 1, level.player.origin, 3000 ); level.player playrumbleonentity( "grenade_rumble" ); } exfil_random_quaker() { var_0 = 0.05; var_1 = 0.26; var_2 = 0.7; var_3 = 1.3; var_4 = 0.3; var_5 = 1.3; while ( !common_scripts\utility::flag( "flag_ladder_jump" ) ) { var_6 = randomfloatrange( var_0, var_1 ); var_7 = randomfloatrange( var_4, var_5 ); var_8 = randomfloatrange( var_2, var_3 ); earthquake( var_6, var_8, level.player.origin, 3000 ); wait( var_7 ); } } exfil_hall_explosions() { maps\_utility::trigger_wait_targetname( "trig_command_quake_1" ); earthquake( 0.4, 1, level.player.origin, 3000 ); level.player playrumbleonentity( "grenade_rumble" ); maps\_utility::trigger_wait_targetname( "trig_command_quake_2" ); level.player playsound( "scn_blackice_exfil_explo02" ); earthquake( 0.5, 1.8, level.player.origin, 3000 ); level.player playrumbleonentity( "grenade_rumble" ); wait 1.3; common_scripts\utility::exploder( "exfil_light_1" ); wait 1.0; common_scripts\utility::exploder( "exfil_light_2" ); level.player playsound( "scn_blackice_exfil_explo03" ); } exfil_light_burst() { thread maps\black_ice_anim::runout_group1(); thread maps\black_ice_anim::runout_group2(); var_0 = getent( "escape_emergency_1", "targetname" ); var_0 setlightintensity( 1.6 ); maps\_utility::trigger_wait_targetname( "trig_exfil_light_burst" ); common_scripts\utility::exploder( "exfil_light_3" ); level.player playsound( "scn_blackice_exfil_explo01" ); earthquake( 0.3, 1.1, level.player.origin, 2000 ); level.player playrumbleonentity( "damage_heavy" ); var_0 setlightintensity( 2 ); var_0 maps\black_ice_util::flicker( 0.9, 0.5 ); } exfil_steam_burst() { thread maps\black_ice_anim::runout_group3(); level waittill( "notify_exfil_steam_burst" ); earthquake( 0.35, 1.3, level.player.origin, 2000 ); level.player playrumbleonentity( "grenade_rumble" ); common_scripts\utility::exploder( "exfil_steam_burst" ); maps\_utility::stop_exploder( "fx_command_interior" ); } exfil_hall_light_flicker() { var_0 = getentarray( "escape_emergency_3", "targetname" ); foreach ( var_2 in var_0 ) { var_2 setlightintensity( 1.5 ); var_2 thread maps\black_ice_util::flicker( 0.9, 0.5 ); } } exfil_engine_fires() { common_scripts\utility::exploder( "exfil_hall_ambfx" ); common_scripts\utility::exploder( "exfil_engine_fire" ); } exfil_yellow_alarms() { } player_sprint() { setsaveddvar( "player_sprintUnlimited", "1" ); level.player disableoffhandweapons(); maps\_utility::player_speed_percent( 90, 1 ); } ally_sprint() { common_scripts\utility::array_thread( level._allies, ::ally_sprint_setup ); level._allies[1] thread ally_rubber_banding_solo( level._allies[0] ); level._allies[0] thread ally_rubber_banding_solo( level.player ); level.player player_rubber_banding_solo( level._allies[0] ); level waittill( "notify_stop_rubber_banding" ); common_scripts\utility::array_thread( level._allies, ::ally_sprint_end ); } ally_sprint_setup() { maps\_utility::disable_cqbwalk(); self.disablearrivals = 1; self.disableexits = 1; self.usechokepoints = 0; maps\_utility::enable_sprint(); maps\black_ice_util::ignore_everything(); maps\_utility::set_run_anim( "DRS_sprint" ); } ally_sprint_end() { self.disablearrivals = 0; self.disableexits = 0; self.usechokepoints = 1; maps\_utility::disable_sprint(); maps\black_ice_util::unignore_everything(); maps\_utility::clear_run_anim(); } exfil_anims_cornering( var_0, var_1, var_2, var_3 ) { if ( var_3 == 0 && level.start_point != "exfil" ) var_2[var_3] waittill( "notify_command_end_done" ); var_0 maps\_anim::anim_reach_solo( var_2[var_3], "exfil_corner_cut" ); var_0 maps\_anim::anim_single_solo( var_2[var_3], "exfil_corner_cut", undefined, 0.1 ); var_0 maps\_anim::anim_reach_solo( var_2[var_3], "exfil_steam_react" ); level notify( "notify_stop_rubber_banding" ); if ( var_3 == 0 ) { thread rubberband_near_ally_steam_reaction_runout( var_2, var_3 ); var_0 maps\_anim::anim_single_solo( var_2[var_3], "exfil_steam_react" ); } else { thread rubberband_far_ally_steam_reaction_runout( var_2 ); var_0 thread maps\_anim::anim_single_solo( var_2[var_3], "exfil_steam_react" ); var_0 maps\_anim::anim_single_solo( level._exfil.door, "shoulder_door" ); } } rubberband_near_ally_steam_reaction_runout( var_0, var_1 ) { common_scripts\utility::flag_set( "flag_baker_steam_react" ); var_2 = 80; var_3 = 180; var_4 = 320; var_5 = 625; var_6 = 1.1; var_7 = 0.8; var_8 = 210; var_9 = 180; var_10 = 110; var_11 = 0; while ( !common_scripts\utility::flag( "flag_ladder_chase" ) ) { var_12 = distance( var_0[0].origin, var_0[1].origin ); var_13 = distance( level.player.origin, var_0[1].origin ); var_11 = var_13 - var_12; if ( var_11 > var_3 ) { var_14 = maps\black_ice_util::normalize_value( var_3, var_4, var_11 ); var_15 = maps\black_ice_util::factor_value_min_max( var_9, var_8, var_14 ); var_16 = maps\black_ice_util::factor_value_min_max( 1, var_7, var_14 ); } else { var_14 = maps\black_ice_util::normalize_value( var_2, var_3, var_11 ); var_15 = maps\black_ice_util::factor_value_min_max( var_10, var_9, var_14 ); var_16 = maps\black_ice_util::factor_value_min_max( var_6, 1, var_14 ); } setsaveddvar( "g_speed", var_15 ); maps\_anim::anim_set_rate_single( var_0[0], "exfil_steam_react", var_16 ); if ( var_11 > var_5 ) { setdvar( "ui_deadquote", &"BLACK_ICE_SPRINT_ESCAPE" ); player_fail_rigexplode(); } wait( level.timestep ); } } rubberband_far_ally_steam_reaction_runout( var_0 ) { wait 0.1; var_1 = 0.005; common_scripts\utility::flag_wait( "flag_baker_steam_react" ); while ( !common_scripts\utility::flag( "flag_ladder_chase" ) ) { var_2 = var_0[0] getanimtime( level.scr_anim["ally1"]["exfil_steam_react"] ); var_3 = var_0[1] getanimtime( level.scr_anim["ally2"]["exfil_steam_react"] ); var_4 = abs( var_3 - var_2 ); if ( var_4 > var_1 ) { if ( var_3 > var_2 ) var_3 = var_3 - var_1; else var_3 = var_3 + var_1; } else var_3 = var_2; var_0[1] setanimtime( level.scr_anim["ally2"]["exfil_steam_react"], var_3 ); level._exfil.door setanimtime( level.scr_anim["bulkhead_door"]["shoulder_door"], var_3 ); wait( level.timestep ); } } ally_rubber_banding_solo( var_0 ) { level endon( "notify_stop_rubber_banding" ); var_1 = 0.8; var_2 = 2.0; var_3 = 384; for (;;) { var_4 = distance( self.origin, var_0.origin ); if ( var_4 > var_3 ) var_4 = var_3; else if ( var_4 < 0 ) var_4 = 0; var_5 = var_4 / var_3; var_6 = var_2 - ( var_2 - var_1 ) * var_5; self.moveplaybackrate = var_6; if ( self.moveplaybackrate > 1.2 ) self.moveplaybackrate = 1.2; wait 0.05; } } player_rubber_banding_solo( var_0 ) { level endon( "notify_stop_rubber_banding" ); var_1 = 210; var_2 = 110; var_3 = 384; var_4 = 650; for (;;) { var_5 = distance( self.origin, var_0.origin ); if ( var_5 > var_4 ) { setdvar( "ui_deadquote", &"BLACK_ICE_FOLLOW_ALLIES" ); thread player_fail_rigexplode(); } else if ( var_5 > var_3 ) var_5 = var_3; else if ( var_5 < 0 ) var_5 = 0; var_6 = var_5 / var_3; var_7 = var_2 - ( var_2 - var_1 ) * var_6; setsaveddvar( "g_speed", var_7 ); wait 0.05; } } exfil_heli( var_0 ) { maps\_utility::trigger_wait_targetname( "trig_exfil_heli_start" ); common_scripts\utility::exploder( "pipedeck_exfil_fx" ); thread fires(); var_1 = maps\_utility::spawn_anim_model( "exfil_helo" ); level.heli = var_1; var_2 = maps\_utility::spawn_anim_model( "exfil_ladder" ); thread exfil_heli_spotlight(); level._exfil_heli = [ var_1, var_2 ]; thread maps\black_ice_audio::sfx_blackice_exfil_heli(); var_0 thread maps\_anim::anim_single( level._exfil_heli, "idle" ); common_scripts\utility::exploder( "pipedeck_giant_smoke_for_exfil" ); maps\black_ice_fx::exfil_heli_smoke_fx_01(); } exfil_heli_spotlight() { playfxontag( level._effect["heli_spotlight"], level.heli, "tag_flash" ); level waittill( "notify_helo_spotlight_off" ); stopfxontag( level._effect["heli_spotlight"], level.heli, "tag_flash" ); } fires() { var_0 = [ "exfil_fire" ]; var_1 = common_scripts\utility::getstructarray( "struct_exfil_fires", "targetname" ); foreach ( var_3 in var_1 ) playfx( common_scripts\utility::getfx( common_scripts\utility::random( var_0 ) ), var_3.origin + ( 0, 0, -200 ) ); } rubberband_ladder_chase( var_0 ) { level endon( "notify_exfil_fail" ); var_1 = 100000; var_2 = 60000.0; var_3 = -90000.0; var_4 = 0.8; var_5 = 1.2; var_6 = 0.0; var_7 = 0.0; var_8 = 0.0; var_9 = 0.0; while ( !common_scripts\utility::flag( "flag_ladder_jump" ) && !common_scripts\utility::flag( "flag_ladder_autojump" ) && !common_scripts\utility::flag( "flag_ladder_jumpfail_nojump" ) ) { var_10 = level.player_max_speed; var_11 = level.player_min_speed; var_7 = distancesquared( level.player_rig.origin, level._allies[1].origin ); var_8 = distancesquared( level.player geteye(), level._allies[1].origin ); var_6 = var_8 - var_7; var_12 = maps\black_ice_util::normalize_value( var_3, var_2, var_6 ); var_9 = maps\black_ice_util::factor_value_min_max( var_11, var_10, var_12 ); var_13 = maps\black_ice_util::factor_value_min_max( var_5, var_4, var_12 ); setsaveddvar( "g_speed", var_9 ); maps\_anim::anim_set_rate( var_0, "ladder_chase", var_13 ); if ( var_6 < var_1 ) level.jump_distance_allowed = 1; else level.jump_distance_allowed = 0; wait( level.timestep ); } maps\_anim::anim_set_rate( var_0, "ladder_chase", 1 ); return var_6; } player_dropgun_before_jump() { level waittill( "flag_player_drop_gun" ); thread maps\black_ice_audio::blackice_exfil_stinger_music(); level.player.disablereload = 1; level.player giveweapon( "freerunner" ); level.player switchtoweapon( "freerunner" ); level.player disableweaponswitch(); setsaveddvar( "hud_showStance", "0" ); setsaveddvar( "compass", "0" ); setsaveddvar( "ammoCounterHide", "1" ); setsaveddvar( "g_friendlyNameDist", 0 ); setsaveddvar( "ui_hidemap", 1 ); } test_viewmodel_anim( var_0 ) { var_1 = maps\_utility::spawn_anim_model( "player_rig" ); var_1 linktoplayerview( level.player, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ), 1 ); var_2 = common_scripts\utility::spawn_tag_origin(); var_2 maps\_utility::assign_animtree( var_0 ); level.player playersetgroundreferenceent( var_2 ); var_1 thread maps\_anim::anim_single_solo( var_1, var_0 ); var_2 maps\_anim::anim_single_solo( var_2, var_0 ); level.player playersetgroundreferenceent( undefined ); var_2 delete(); var_1 delete(); } ladder_player_jumpcheck() { level endon( "flag_player_dying_on_rig" ); var_0 = 0; var_1 = 0; var_2 = 2576; var_3 = 0; var_4 = maps\_utility::spawn_anim_model( "player_rig" ); var_4 linktoplayerview( level.player, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ), 1 ); var_4 maps\_anim::anim_first_frame_solo( var_4, "jump_arms" ); level.jumparms = var_4; var_5 = maps\_utility::spawn_anim_model( "cam_shake" ); var_5.origin = level.player.origin; var_5.angles = level.player.angles; var_5 linkto( level.player ); while ( !common_scripts\utility::flag( "flag_ladder_jump" ) ) { if ( level.player jumpbuttonpressed() ) { if ( var_0 ) var_1 = 1; else var_0 = 1; } else { if ( var_1 ) var_1 = 0; if ( var_0 ) var_0 = 0; } if ( common_scripts\utility::flag( "flag_ladder_jumpcheck" ) && var_3 < 10 && var_0 && !var_1 || common_scripts\utility::flag( "flag_ladder_autojump" ) ) { common_scripts\utility::flag_set( "flag_ladder_jump" ); var_5 unlink(); level.player playersetgroundreferenceent( var_5 ); level.player playrumbleonentity( "pistol_fire" ); if ( level.jump_distance_allowed == 1 ) { thread maps\black_ice_audio::sfx_exfil_outro(); var_5 thread maps\_anim::anim_single_solo( var_5, "jump_shake" ); var_4 maps\_anim::anim_single_solo( var_4, "jump_arms" ); } else { } var_4 delete(); } var_3 = level.player.origin[2] - var_2; wait( level.timestep ); } } player_heat_fx() { var_0 = spawn( "script_model", ( 0, 0, 0 ) ); var_0 setmodel( "tag_origin" ); var_0.origin = level.player.origin; var_0 linktoplayerview( level.player, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ), 1 ); var_1 = 0; level waittill( "flag_vision_exfil_deck" ); for (;;) { if ( common_scripts\utility::flag( "flag_vision_exfil_deck" ) ) { if ( var_1 != 1 ) { player_heat_fx_start( var_0 ); var_1 = 1; } earthquake( 0.05, 0.2, level.player.origin, 128 ); } else if ( var_1 == 1 ) { player_heat_fx_end( var_0 ); var_1 = 0; } wait( level.timestep ); } } player_heat_fx_start( var_0 ) { maps\_art::dof_enable_script( 0, 0, 4, 0, 777, 1.49, 0 ); level.player setviewmodeldepthoffield( 0.0, 13.26 ); } player_heat_fx_end( var_0 ) { maps\_art::dof_disable_script( 0 ); level.player setviewmodeldepthoffield( 0.0, 0.0 ); } player_stunned_speed_blender( var_0 ) { var_1 = 220; var_2 = 100; var_3 = 80; var_4 = 20; var_5 = 180; var_6 = 50; var_7 = 1.0; var_8 = 1.2; var_9 = 4.0; var_10 = getdvarfloat( "g_speed" ); var_11 = maps\black_ice_util::factor_value_min_max( var_4, var_6, var_0 ); var_12 = maps\black_ice_util::factor_value_min_max( var_3, var_5, var_0 ); player_lerp_speed( var_10, var_10, var_11, var_12, var_7 ); wait( var_8 ); thread player_stun_return_weapons_sprint( 0.0 ); player_lerp_speed( var_11, var_12, var_2, var_1, var_9 ); } player_stun_return_weapons_sprint( var_0 ) { wait( var_0 ); level.player showviewmodel(); level.player allowsprint( 1 ); level.player enableweapons(); level.player enableoffhandweapons(); level.player enableweaponswitch(); } player_lerp_speed( var_0, var_1, var_2, var_3, var_4 ) { var_5 = var_4; for (;;) { var_6 = maps\black_ice_util::normalize_value( 0, var_4, var_5 ); var_7 = maps\black_ice_util::factor_value_min_max( var_2, var_0, var_6 ); var_8 = maps\black_ice_util::factor_value_min_max( var_3, var_1, var_6 ); level.player_min_speed = var_7; level.player_max_speed = var_8; wait( level.timestep ); var_5 = var_5 - level.timestep; if ( var_5 < 0 ) break; } level.player_min_speed = var_2; level.player_max_speed = var_3; } player_fail_rigexplode() { if ( !common_scripts\utility::flag( "flag_player_dying_on_rig" ) ) common_scripts\utility::flag_set( "flag_player_dying_on_rig" ); else return; if ( isdefined( level.jumparms ) ) level.jumparms delete(); var_0 = maps\_utility::spawn_anim_model( "exfil_viewexplosion_source" ); var_0 linktoplayerview( level.player, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ), 0 ); maps\_utility::vision_set_fog_changes( "black_ice_exfil_explosive_death", 1.3 ); setsaveddvar( "hud_showStance", "0" ); setsaveddvar( "compass", "0" ); setsaveddvar( "ammoCounterHide", "1" ); setsaveddvar( "g_friendlyNameDist", 0 ); setsaveddvar( "ui_hidemap", 1 ); level.player hideviewmodel(); level.player disableweapons(); earthquake( 0.6, 0.9, level.player.origin, 3000 ); level.player shellshock( "blackice_nosound", 1.25 ); level.player playrumbleonentity( "grenade_rumble" ); level.player thread maps\_gameskill::blood_splat_on_screen( "right" ); level.player thread maps\black_ice_audio::sfx_blackice_fail_explo(); playfxontag( common_scripts\utility::getfx( "exfil_view_explosion" ), var_0, "tag_splode_1" ); level.player allowsprint( 0 ); wait 0.65; earthquake( 0.5, 0.7, level.player.origin, 3000 ); level.player shellshock( "blackice_nosound", 0.75 ); level.player playrumbleonentity( "damage_light" ); level.player thread maps\_gameskill::blood_splat_on_screen( "left" ); playfxontag( common_scripts\utility::getfx( "exfil_view_explosion" ), var_0, "tag_splode_2" ); wait 0.8; thread player_viewkicker( var_0 ); earthquake( 0.7, 2.0, level.player.origin, 3000 ); level.player shellshock( "blackice_nosound", 3.0 ); level.player shellshock( "slowview", 5000 ); level.player thread maps\_gameskill::blood_splat_on_screen( "bottom" ); playfxontag( common_scripts\utility::getfx( "exfil_view_explosion" ), var_0, "tag_splode_3" ); wait 0.3; var_1 = level.player getstance(); if ( var_1 == "stand" ) { level.player allowcrouch( 0 ); level.player allowprone( 0 ); } else if ( var_1 == "crouch" ) { level.player allowstand( 0 ); level.player allowprone( 0 ); } else { level.player allowstand( 0 ); level.player allowcrouch( 0 ); } var_2 = common_scripts\utility::spawn_tag_origin(); level.player playerlinkto( var_2, "tag_origin", 1, 0, 0, 0, 0, 0 ); var_3 = maps\_hud_util::create_client_overlay( "black", 0, level.player ); var_3 fadeovertime( 0.2 ); var_3.alpha = 1; var_3.foreground = 0; wait 1.5; thread maps\_utility::missionfailedwrapper(); } player_viewkicker( var_0 ) { thread player_viewkicker_timer(); while ( !common_scripts\utility::flag( "flag_kick_player_to_death" ) ) { level.player playrumbleonentity( "grenade_rumble" ); wait 0.1; } } player_viewkicker_timer() { wait 0.45; common_scripts\utility::flag_set( "flag_kick_player_to_death" ); } notetrack_slowmo_start( var_0 ) { } get_blendtime_from_notetrack( var_0, var_1, var_2, var_3 ) { var_4 = getanimlength( var_1 ); var_5 = getnotetracktimes( var_1, var_2 ); var_6 = var_0 getanimtime( var_1 ); var_7 = ( var_5[0] - var_6 ) * var_4; if ( var_7 > var_3 ) var_7 = var_3; return var_7; } open_exfil_door() { var_0 = level._exfil.door; var_0.angles = var_0.original_angles; maps\_utility::trigger_wait_targetname( "trig_exfil_door_open" ); var_0 maps\black_ice_util::open_door( 120, 0.6 ); } notetrack_grab_shake( var_0 ) { level.player playrumbleonentity( "grenade_rumble" ); } notetrack_shockwave_shake( var_0 ) { earthquake( 0.3, 1.0, level.player.origin, 2048 ); level.player playrumbleonentity( "grenade_rumble" ); } event_pipe_explosions() { var_0 = maps\black_ice_util::setup_tag_anim_rig( "pipe_explosion4", "pipedeck_explosion4_rig" ); var_0.anim_node maps\_anim::anim_first_frame_solo( var_0, "pipes_explode" ); common_scripts\utility::flag_wait( "flag_command_pipes_explosion" ); playfx( level._effect["explosion_oiltank_lg"], var_0.origin + ( -75, 0, 0 ) ); level.player playsound( "scn_blackice_exfil_pipes" ); level.player setclienttriggeraudiozone( "blackice_exfil_ext", 2 ); thread maps\black_ice_audio::sfx_exfil_stop_alarm(); player_pipe_explosion_reaction(); var_0.anim_node maps\_anim::anim_single_solo( var_0, "pipes_explode" ); maps\_utility::stop_exploder( "exfil_hall_ambfx" ); maps\_utility::stop_exploder( "exfil_light_1" ); maps\_utility::stop_exploder( "exfil_light_2" ); maps\_utility::stop_exploder( "exfil_light_3" ); maps\_utility::stop_exploder( "exfil_engine_fire" ); } exfil_vision_bump() { level waittill( "notify_sphere_hit_ground" ); wait 1.1; maps\black_ice_util::vision_hit_transition( "black_ice_rig_explode", "black_ice_flyout", 1.0, 0.3, 1.6 ); } exfil_dof() { level waittill( "flag_teleport_rig" ); maps\_art::sunflare_changes( "flyout", 0.1 ); setsaveddvar( "r_snowAmbientColor", ( 0.025, 0.025, 0.025 ) ); maps\_art::dof_enable_script( 0, 62, 4, 73, 1380, 2, 0.25 ); level waittill( "flag_helo_swing" ); maps\_art::dof_enable_script( 1, 62, 4, 3848, 4000, 0, 6 ); } exfil_rimlight() { level waittill( "flag_teleport_rig" ); } flyout_lights() { var_0 = getentarray( "flyout_lights", "targetname" ); foreach ( var_2 in var_0 ) { var_2 setlightcolor( ( 1, 0.501961, 0 ) ); var_2 setlightintensity( 2 ); var_2 thread maps\black_ice_util::flicker( undefined, undefined, undefined, 2 ); } } retarget_rig() { self retargetscriptmodellighting( getent( "rig_lighttarget", "targetname" ) ); } exfil_mblur_changes() { common_scripts\utility::flag_wait( "flag_teleport_rig" ); if ( maps\_utility::is_gen4() && !level.ps4 ) { setsaveddvar( "r_mbEnable", 2 ); setsaveddvar( "r_mbCameraRotationInfluence", 0.07 ); setsaveddvar( "r_mbCameraTranslationInfluence", 0.15 ); setsaveddvar( "r_mbModelVelocityScalar", 0.03 ); setsaveddvar( "r_mbStaticVelocityScalar", 0.01 ); setsaveddvar( "r_mbViewModelEnable", 1 ); setsaveddvar( "r_mbViewModelVelocityScalar", 0.004 ); } } shrink_pdeck_lights() { var_0 = getentarray( "lights_pipedeck_a", "targetname" ); var_1 = getentarray( "lights_pipedeck_b", "targetname" ); var_2 = getentarray( "lights_pipedeck_c", "targetname" ); foreach ( var_4 in var_0 ) var_4 setlightradius( 12 ); foreach ( var_4 in var_1 ) var_4 setlightradius( 12 ); foreach ( var_4 in var_2 ) var_4 setlightradius( 12 ); }