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

1165 lines
38 KiB
Plaintext

// 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 );
}