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

1481 lines
57 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
section_flag_inits()
{
common_scripts\utility::flag_init( "hint_breach_init" );
common_scripts\utility::flag_init( "flag_loco_started" );
common_scripts\utility::flag_init( "flag_loco_enter" );
common_scripts\utility::flag_init( "flag_loco_breach_end" );
common_scripts\utility::flag_init( "flag_loco_end" );
common_scripts\utility::flag_init( "flag_player_failed_breach" );
common_scripts\utility::flag_init( "flag_player_passed_breach" );
common_scripts\utility::flag_init( "flag_stop_impulses" );
common_scripts\utility::flag_init( "stack_line_1" );
common_scripts\utility::flag_init( "stack_line_2" );
common_scripts\utility::flag_init( "stack_line_3" );
common_scripts\utility::flag_init( "stack_line_4" );
common_scripts\utility::flag_init( "stack_line_5" );
common_scripts\utility::flag_init( "stack_line_6" );
}
section_precache()
{
maps\_utility::add_hint_string( "hint_breach_init", &"SKYWAY_HINT_BREACH", ::hint_loco_breach_init_func );
precacheitem( "coltanaconda_rorkearm_skyway" );
precachemodel( "weapon_p226" );
}
section_post_inits()
{
getent( "loco_breach_door_obj", "targetname" ) hide();
getent( "flag_loco_enter", "targetname" ) setmovingplatformtrigger();
}
start_loco()
{
iprintln( "locomotive" );
level.player setclienttriggeraudiozone( "skyway_tunnel2_int", 2 );
common_scripts\utility::flag_set( "flag_loco_ready" );
var_0 = getent( "ally1_start_loco1", "targetname" );
var_1 = getent( "player_start_loco1", "targetname" );
maps\skyway_util::player_start( var_1 );
thread maps\skyway_fx::fx_turnon_tunnel_lights_01();
thread maps\skyway_fx::fx_turnon_loco_exterior_lights();
if ( maps\_utility::is_gen4() )
{
setsaveddvar( "r_mbEnable", "2" );
thread maps\skyway_util::set_motionblur_values( 0.16, 1, 0.06, 1000, 0.5 );
}
thread standoff_sunlight();
level._ally forceteleport( var_0.origin, var_0.angles );
}
main_loco()
{
common_scripts\utility::array_call( level._train.cars["train_loco"].trigs, ::setmovingplatformtrigger );
level.player setclienttriggeraudiozone( "skyway_tunnel2_int", 2 );
level.loco_breach_org = getent( "loco_breach_org", "targetname" );
level.loco_breach_anim_node = getent( "vignette_vargasstandoff", "targetname" );
level.slowmo_breach_player_speed = 0.2;
level.loco_player_impulse_move_speed = 0.5;
thread transient_load_outro();
thread loco_breach_autosave();
thread loco_breach_attain_moving_platform( 1 );
thread hide_end_bridge_geo();
thread break_cockpit_glass();
level.cos45 = cos( 45 );
common_scripts\utility::flag_set( "flag_loco_started" );
level._ally maps\_utility::disable_ai_color();
level._ally maps\_utility::set_ignoreall( 1 );
level._ally maps\_utility::set_force_cover( 1 );
level._ally thread loco_jumpdown_checkmate_dialogue();
level._ally maps\_utility::follow_path( getnode( "loco_breach_ally_cover_node", "targetname" ) );
common_scripts\utility::flag_clear( "flag_killer_tracker" );
level._ally notify( "stop_dist_flag" );
if ( !common_scripts\utility::flag( "flag_rt3_ally_at_end" ) )
common_scripts\utility::flag_set( "flag_rt3_ally_at_end" );
thread maps\_utility::battlechatter_off( "allies" );
thread maps\_utility::battlechatter_off( "axis" );
thread loco_breach_visions();
thread tunnel_lights_engineroom();
thread standoff_sunlight();
thread loco_breach_logic();
thread loco_breach_slowmo( 0.5, 0.75 );
thread loco_bridge_rog_strike();
common_scripts\utility::flag_wait( "flag_loco_breach_end" );
maps\skyway_util::stop_wind_watcher();
}
transient_load_outro()
{
common_scripts\utility::flag_wait_all( "flag_loco_enter", "flag_rt3_ally_at_end" );
if ( !istransientqueued( "skyway_outro_tr" ) )
maps\_utility::transient_unloadall_and_load( "skyway_outro_tr" );
common_scripts\utility::flag_wait( "flag_loco_end" );
synctransients();
}
loco_breach_autosave()
{
if ( level.start_point == "locomotive" || level.start_point == "locomotive_nomove" )
return;
common_scripts\utility::flag_wait_all( "flag_loco_enter", "flag_rt3_ally_at_end" );
while ( !istransientloaded( "skyway_outro_tr" ) )
wait( level.timestep );
for ( var_0 = level.player maps\_utility::player_looking_at( level.loco_breach_org.origin, 0.5, 1 ); !var_0; var_0 = level.player maps\_utility::player_looking_at( level.loco_breach_org.origin, 0.5, 1 ) )
wait( level.timestep );
level.dopickyautosavechecks = 0;
maps\_utility::autosave_by_name( "locomotive" );
}
loco_breach_attain_moving_platform( var_0 )
{
if ( var_0 )
common_scripts\utility::flag_wait( "hint_breach_init" );
level.loco_moving_platform = level.player getmovingplatformparent();
while ( !isdefined( level.loco_moving_platform ) )
{
level.loco_moving_platform = level.player getmovingplatformparent();
wait( level.timestep );
}
}
start_loco_standoff()
{
iprintln( "loco_standoff" );
level.player setclienttriggeraudiozone( "skyway_train_int_end", 2 );
maps\skyway_util::skyway_hide_hud();
thread hide_end_bridge_geo();
thread hide_loco_exterior();
if ( maps\_utility::is_gen4() )
{
setsaveddvar( "r_mbEnable", "2" );
thread maps\skyway_util::set_motionblur_values( 0.16, 0.15, 0.06, 1000, 0.5 );
}
thread standoff_sunlight();
thread break_cockpit_glass();
var_0 = getent( "ally1_start_loco1", "targetname" );
var_1 = getent( "player_start_loco1", "targetname" );
maps\skyway_util::player_start( var_1 );
level._ally forceteleport( var_0.origin, var_0.angles );
}
main_loco_standoff()
{
level.player setclienttriggeraudiozone( "skyway_train_int_end", 2 );
loco_standoff_init_vars();
if ( level.start_point == "loco_standoff" || level.start_point == "loco_standoff_nomove" )
{
enemy_setup();
maps\skyway_util::setup_player_for_animated_sequence( 1, 60, level.player.origin, level.player.angles, 1, undefined, "player_rig" );
level.player_rig linkto( level.loco_breach_anim_node );
level.player_legs = maps\_utility::spawn_anim_model( "player_legs" );
level.player_legs linkto( level.loco_breach_anim_node );
level._ally linkto( level.loco_breach_anim_node );
thread loco_bridge_rog_strike();
loco_slide_logic( 1 );
}
thread loco_standoff();
common_scripts\utility::flag_wait( "flag_loco_end" );
level.player setmovespeedscale( 1.0 );
level.player disableslowaim();
level.player allowfire( 1 );
maps\_art::dof_disable_script( 1 );
}
hide_end_bridge_geo()
{
var_0 = getentarray( "bridge_end_broken", "script_noteworthy" );
var_1 = getentarray( "bridge_end_1", "script_noteworthy" );
var_2 = getentarray( "bridge_end_2", "script_noteworthy" );
foreach ( var_4 in var_0 )
var_4 hide();
level waittill( "notify_swap_bridge_geo" );
foreach ( var_4 in var_0 )
var_4 show();
foreach ( var_4 in var_1 )
var_4 hide();
foreach ( var_4 in var_2 )
var_4 hide();
}
break_cockpit_glass()
{
var_0 = getent( "loco_navi_glass", "targetname" );
var_1 = getent( "loco_navi_glass_broken", "targetname" );
var_1.animname = "loco_control_room_glass";
var_1 maps\_anim::setanimtree();
var_1 hide();
level waittill( "notify_break_cockpit_glass" );
thread maps\skyway_audio::loco_standoff_slowmo_sfx();
level.player playrumbleonentity( "damage_heavy" );
var_1 show();
var_0 hide();
var_1 setanim( level.scr_anim["loco_control_room_glass"]["loco_slide"] );
playfxontag( common_scripts\utility::getfx( "loco_breach_glass" ), var_1, "tag_origin" );
}
loco_standoff_init_vars()
{
if ( !isdefined( level.loco_breach_anim_node ) )
level.loco_breach_anim_node = getent( "vignette_vargasstandoff", "targetname" );
if ( !isdefined( level.slowmo_breach_player_speed ) )
level.slowmo_breach_player_speed = 0.2;
if ( !isdefined( level.loco_moving_platform ) )
loco_breach_attain_moving_platform( 0 );
}
hint_loco_breach_init_func()
{
return !common_scripts\utility::flag( "hint_breach_init" );
}
loco_jumpdown_checkmate_dialogue()
{
level endon( "flag_loco_breach_end" );
common_scripts\utility::flag_clear( "stack_line_1" );
common_scripts\utility::flag_clear( "stack_line_2" );
common_scripts\utility::flag_clear( "stack_line_3" );
common_scripts\utility::flag_clear( "stack_line_4" );
common_scripts\utility::flag_clear( "stack_line_5" );
common_scripts\utility::flag_clear( "stack_line_6" );
common_scripts\utility::flag_wait( "stack_line_1" );
level._ally maps\_utility::smart_dialogue( "skyway_hsh_merrickdoyoucopy" );
common_scripts\utility::flag_wait( "stack_line_2" );
maps\_utility::smart_radio_dialogue( "skyway_mrk_copyhesh" );
common_scripts\utility::flag_wait( "stack_line_3" );
level._ally maps\_utility::smart_dialogue( "skyway_hsh_keeganweremovingin" );
common_scripts\utility::flag_wait( "stack_line_4" );
maps\_utility::smart_radio_dialogue( "skyway_kgn_comeagainstalker2" );
common_scripts\utility::flag_wait( "stack_line_5" );
level._ally maps\_utility::smart_dialogue( "skyway_hsh_atthewordcheckmate" );
common_scripts\utility::flag_wait( "stack_line_6" );
level._ally maps\_utility::smart_dialogue( "skyway_hsh_alrightadamrorkeis" );
}
loco_breach_logic()
{
level.player endon( "death" );
thread maps\skyway_fx::fx_turnon_loco_interior_lights();
ally_setup();
enemy_setup();
props_setup();
getent( "loco_breach_door_obj", "targetname" ) show();
getent( "loco_breach_door", "targetname" ) hide();
maps\skyway_util::waittill_trigger_activate_looking_at( level.loco_breach_org, "hint_breach_init", 54, undefined, undefined, 5 );
common_scripts\utility::flag_set( "flag_stop_ambient_airbursts" );
getent( "loco_breach_door", "targetname" ) show();
getent( "loco_breach_door_obj", "targetname" ) delete();
level.player enablebreaching();
level.player enableinvulnerability();
thread maps\skyway_audio::sfx_loco_breach();
thread maps\skyway_audio::sfx_loco_breach_02();
setsaveddvar( "g_friendlyNameDist", 0 );
var_0 = level.player getcurrentprimaryweapon();
var_1 = weaponclipsize( var_0 );
if ( level.player getweaponammoclip( var_0 ) < var_1 )
level.player setweaponammoclip( var_0, var_1 );
level._ally linkto( level.loco_breach_anim_node );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level._ally, "loco_breach" );
level.player_legs linkto( level.loco_breach_anim_node );
level.player_legs show();
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.player_legs, "loco_breach" );
var_2 = 0.5;
maps\skyway_util::player_animated_sequence_restrictions();
var_3 = maps\_utility::spawn_anim_model( "player_rig" );
var_3.origin = level.player.origin;
var_3.angles = level.player.angles;
var_3 hide();
var_3 linkto( level.loco_breach_anim_node );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( var_3, "loco_breach" );
level.player playerlinktoblend( var_3, "tag_player", var_2 );
var_4 = getent( "loco_breach_door", "targetname" );
var_4.animname = "loco_breach_door";
var_4 maps\_anim::setanimtree();
var_4 setanim( level.scr_anim["loco_breach_door"]["loco_breach"] );
var_4 thread handle_breach_door();
level waittill( "notify_loco_breach_door_explode" );
thread maps\_utility::vision_set_fog_changes( "skyway_breach", 0.5 );
level.player_legs hide();
level.player unlink();
level.player forcemovingplatformentity( level.loco_moving_platform );
player_setup( "player_rig", 1, 60, var_3.origin, var_3.angles );
var_5 = var_3 getanimtime( level.scr_anim["player_rig"]["loco_breach"] );
level.player_rig linkto( level.loco_breach_anim_node );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.player_rig, "loco_breach" );
level.player_rig setanimtime( level.scr_anim["player_rig"]["loco_breach"], var_5 );
var_3 delete();
thread maps\_utility::open_up_fov( 0.2, level.player_rig, "tag_player", 45, 45, 90, 45 );
level.player enableweapons();
level.player switchtoweaponimmediate( var_0 );
level.player enableslowaim( 0.5, 0.5 );
level.player disableinvulnerability();
thread end_breach_player_death_logic( "notify_player_can_die" );
wait_for_rpg_guy_to_appear( 1.5 );
level.end_breach_rpg_guy linkto( level.loco_breach_anim_node );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.end_breach_rpg_guy, "loco_breach" );
level.loco_breach_rpg_model linkto( level.loco_breach_anim_node );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.loco_breach_rpg_model, "loco_breach" );
level.loco_breach_rpg_model show();
level.end_breach_rpg_guy thread end_breach_success_rpg();
thread hide_loco_exterior();
setsaveddvar( "sm_sunSampleSizeNear", 0.065 );
level waittill( "notify_end_breach_slide" );
level.player disablebreaching();
level.loco_breach_rpg_model delete();
level.loco_breach_rpg_model = undefined;
loco_slide_logic();
}
handle_breach_door()
{
level waittill( "notify_loco_breach_door_explode" );
wait 1.0;
self setanimrestart( level.scr_anim["loco_breach_door"]["loco_breach"], 1.0, 0.0, 0.0 );
}
end_breach_player_death_logic( var_0 )
{
level endon( "notify_loco_standoff" );
level endon( "notify_end_breach_slide" );
thread end_breach_player_death_rpg();
if ( isdefined( var_0 ) )
level waittill( var_0 );
thread end_breach_player_death_via_notetrack();
for (;;)
{
level.player waittill( "damage", var_1, var_2, var_3, var_4, var_5 );
if ( var_5 != "MOD_PROJECTILE_SPLASH" )
{
level.player disableweapons();
level notify( "failure" );
setdvar( "ui_deadquote", "" );
maps\_utility::missionfailedwrapper();
level notify( "notify_breach_fail" );
}
wait( level.timestep );
}
}
end_breach_player_death_via_notetrack()
{
level endon( "notify_loco_standoff" );
level endon( "notify_end_breach_slide" );
level endon( "notify_breach_fail" );
level waittill( "notify_player_death_via_notetrack" );
wait( level.timestep * 3 );
level.player dodamage( level.player.health - 1, level.end_breach_enemies[0] geteye(), level.end_breach_enemies[0], level.end_breach_enemies[0] );
level.player disableweapons();
level notify( "failure" );
setdvar( "ui_deadquote", "" );
maps\_utility::missionfailedwrapper();
}
end_breach_player_death_rpg()
{
level endon( "flag_player_passed_breach" );
level endon( "notify_player_rambo_RPG" );
thread end_breach_rpg_guy_fire( "flag_player_failed_breach", 0.8, "notify_impact_player", "loco_breach", "flag_player_passed_breach" );
level waittill( "notify_impact_player" );
level.player dodamage( level.player.health - 1, level.end_breach_rpg_guy.origin );
level.player disableweapons();
level notify( "failure" );
setdvar( "ui_deadquote", "" );
maps\_utility::missionfailedwrapper();
level notify( "notify_breach_fail" );
}
wait_for_rpg_guy_to_appear( var_0 )
{
var_1 = gettime() + var_0 * 1000;
while ( gettime() < var_1 )
{
if ( level.end_breach_enemies_killed == level.end_breach_enemies.size )
return;
wait( level.timestep );
}
}
end_breach_success_rpg()
{
level endon( "notify_breach_fail" );
level endon( "notify_player_rambo_RPG" );
self waittill( "damage", var_0, var_1, var_2, var_3, var_4 );
level notify( "notify_loco_breach_slowmo_end" );
level notify( "notify_breach_success" );
thread maps\skyway_audio::sfx_loco_breach_out();
level.player unlink();
level.player_rig delete();
level.player_rig = undefined;
thread end_breach_rpg_guy_death();
level.playerspeed = level.loco_player_impulse_move_speed;
level.player setmovespeedscale( level.loco_player_impulse_move_speed );
level.player disableslowaim();
level waittill( "notify_rpg_impact_engine" );
level notify( "notify_start_loco_control_lights" );
wait 0.15;
player_setup( "player_rig", 0, 60 );
level.player_rig linkto( level.loco_breach_anim_node );
level.player playerlinktoblend( level.player_rig, "tag_player", 0.3, 0, 0 );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.player_rig, "loco_breach_blast" );
thread end_breach_player_unlink();
wait 0.2;
level notify( "notify_end_breach_slide" );
thread end_breach_impulse_player_logic();
}
end_breach_player_unlink()
{
var_0 = getanimlength( level.scr_anim["player_rig"]["loco_breach_blast"] );
var_1 = getnotetracktimes( level.scr_anim["player_rig"]["loco_breach_blast"], "draw_weapon" );
var_2 = var_1[0] * var_0;
wait( var_2 );
level.player enableweapons();
wait( var_0 - var_2 );
level.player unlink();
level.player_rig hide();
}
end_breach_success_rpg_rambo()
{
level notify( "notify_loco_breach_slowmo_end" );
level notify( "notify_breach_success" );
level.player unlink();
thread maps\skyway_audio::sfx_loco_breach_out();
thread maps\skyway_audio::sfx_loco_exp_rambo();
thread end_breach_rpg_guy_death( 1 );
level.playerspeed = level.loco_player_impulse_move_speed;
level.player setmovespeedscale( level.loco_player_impulse_move_speed );
level.player disableslowaim();
level notify( "notify_start_loco_control_lights" );
wait 0.05;
player_setup( "player_rig", 0, 60 );
level.player_rig linkto( level.loco_breach_anim_node );
level.player playerlinktoblend( level.player_rig, "tag_player", 0.35, 0, 0 );
earthquake( 1.0, 1.0, level.player.origin, 2048 );
level.player playrumbleonentity( "grenade_rumble" );
thread maps\skyway_util::player_sway_bump( level.timestep, 1.0, level.timestep, 1.0 );
thread maps\skyway_util::player_wind_bump( level.timestep, 1.0, level.timestep, 1.0 );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.player_rig, "loco_breach_blast" );
thread end_breach_player_unlink();
wait 0.2;
level notify( "notify_end_breach_slide" );
thread end_breach_impulse_player_logic();
}
end_breach_rpg_guy_death( var_0 )
{
level endon( "notify_end_breach_slide" );
self clearanim( level.scr_anim[self.animname]["loco_breach"], 0.2 );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( self, "loco_breach_death" );
if ( !isdefined( var_0 ) || !var_0 )
{
level.loco_breach_rpg_model clearanim( level.scr_anim[level.loco_breach_rpg_model.animname]["loco_breach"], 0.2 );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.loco_breach_rpg_model, "loco_breach_death" );
thread end_breach_rpg_guy_fire( "notify_fire_rpg", 0.5, "notify_rpg_impact_engine", "loco_breach_death", "flag_player_failed_breach" );
level waittill( "notify_fire_rpg" );
}
while ( !maps\skyway_util::check_anim_time( self.animname, "loco_breach_death", 1.0 ) )
wait( level.timestep );
level.loco_breach_anim_node thread maps\_anim::anim_last_frame_solo( self, "loco_breach_death" );
}
end_breach_rpg_guy_fire( var_0, var_1, var_2, var_3, var_4 )
{
level endon( "notify_player_rambo_RPG" );
if ( common_scripts\utility::flag( var_4 ) )
return;
else
level endon( var_4 );
level.rpg_fx_model = maps\_utility::spawn_anim_model( "loco_breach_RPG_fx" );
level.loco_breach_anim_node maps\_anim::anim_first_frame_solo( level.rpg_fx_model, var_3 );
level.rpg_fx_model linkto( level.loco_breach_anim_node );
level.rpg_org = common_scripts\utility::spawn_tag_origin();
level.rpg_org linkto( level.rpg_fx_model, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
level.rpg_fx_explosion = common_scripts\utility::spawn_tag_origin();
level.rpg_fx_explosion linkto( level.rpg_org, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
level waittill( var_0 );
thread player_rambo_rpg( distance2d( level.player.origin, level.rpg_org.origin ) );
playfxontag( common_scripts\utility::getfx( "loco_breach_smoke_geotrail_rpg" ), level.rpg_org, "tag_origin" );
playfxontag( common_scripts\utility::getfx( "loco_breach_rpg_muzzle" ), level.rpg_fx_model, "tag_origin" );
level.rpg_fx_model thread maps\_utility::play_sound_on_entity( "weap_rpg_fire_plr" );
level.rpg_org thread maps\skyway_util::blend_link_over_time( level.rpg_fx_model, level.rpg_fx_model, 2.4, 0, "tag_origin", "tag_helo" );
wait( var_1 );
level.rpg_fx_explosion playsound( "scn_skyway_loco_breach_explosion" );
level notify( var_2 );
end_breach_rpg_explosion();
}
end_breach_rpg_explosion()
{
level.rpg_fx_explosion linkto( level.loco_breach_anim_node );
playfxontag( common_scripts\utility::getfx( "loco_breach_rpg_wall_impact" ), level.rpg_fx_explosion, "tag_origin" );
wait 0.2;
stopfxontag( common_scripts\utility::getfx( "loco_breach_smoke_geotrail_rpg" ), level.rpg_org, "tag_origin" );
level.rpg_fx_explosion thread maps\_utility::play_sound_on_entity( "scn_skyway_missile_impact" );
level.rpg_fx_explosion thread maps\_utility::play_sound_on_entity( "scn_skyway_missile_explode_boom" );
wait 5;
level.rpg_org delete();
level.rpg_ord = undefined;
level.rpg_fx_model delete();
level.rpg_fx_model = undefined;
level.rpg_fx_explosion delete();
level.rpg_fx_explosion = undefined;
}
player_rambo_rpg( var_0 )
{
level endon( "flag_loco_breach_end" );
var_1 = getent( "rambo_RPG_collision", "targetname" );
var_1 setcandamage( 1 );
var_1 linkto( level.rpg_org, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
var_1 waittill( "damage" );
thread end_breach_rpg_explosion();
killfxontag( common_scripts\utility::getfx( "loco_breach_smoke_geotrail_rpg" ), level.rpg_org, "tag_origin" );
var_2 = distance2d( level.player.origin, var_1.origin );
var_3 = 0;
if ( var_2 > var_0 * 0.5 )
{
var_3 = 1;
if ( var_2 < var_0 * 0.75 )
{
thread maps\skyway_audio::sfx_rambo_rpg_kill();
level.player dodamage( 80, var_1.origin );
}
}
if ( var_3 )
{
level notify( "notify_player_rambo_RPG" );
level notify( "notify_rpg_impact_engine" );
level.end_breach_rpg_guy notify( "notify_player_rambo_RPG" );
level.end_breach_rpg_guy end_breach_success_rpg_rambo();
}
var_1 delete();
}
end_breach_impulse_player_logic()
{
var_0 = getent( "end_breach_impulse_player_focus", "targetname" );
level._train.cars["train_loco"].body thread maps\_utility::play_sound_on_entity( "scn_skyway_mtl_huge_stress_lr" );
level._train.cars["train_loco"].body thread maps\_utility::play_sound_on_entity( "emt_skyway_mtl_groan" );
level.end_breach_impulse_player_dir = vectornormalize( var_0.origin - level.player.origin );
var_1 = 0.8;
level.end_breach_impulse_force = 50.0;
thread end_breach_engines_sieze();
level waittill( "notify_start_impulse" );
thread end_breach_impulse_player_single( var_0, 2, 1, 0.4 );
}
end_breach_engines_sieze()
{
var_0 = level._train.cars["train_loco"].body;
var_1 = common_scripts\utility::spawn_tag_origin();
var_1 linkto( var_0, "j_spineupper", ( 0, 0, 0 ), ( 0, 0, 0 ) );
wait 0.5;
level._allies[0] thread maps\_utility::smart_dialogue( "skyway_hsh_engineshitholdon" );
wait 0.2;
playfxontag( common_scripts\utility::getfx( "loco_breach_engine_explode" ), var_0, "tag_engine_blow_2" );
var_0 thread maps\_utility::play_sound_on_tag( "scn_skyway_engine_explode", "tag_engine_blow_1" );
wait 0.1;
earthquake( 0.42, 0.8, level.player.origin, 3000 );
level.player playrumbleonentity( "damage_heavy" );
wait 0.1;
level notify( "notify_start_impulse" );
thread maps\skyway_util::player_sway_blendto( 0.1, 1.0 );
thread maps\skyway_util::player_wind_blendto( 0.1, 1.0 );
level.player_rumble_ent thread maps\_utility::rumble_ramp_to( 1, 1 );
level.player thread maps\skyway_util::player_const_quake_blendto( 0.2, 1 );
thread maps\skyway_util::player_rumble_bump( level.player_rumble_rog_ent, 1.0, 0.0, 0.2, 0.0, 1.0 );
var_1 thread maps\_utility::play_sound_on_entity( "scn_skyway_train_brake" );
thread maps\skyway_util::player_view_roll_with_traincar( "roll_engineroom_sieze", 1 );
wait 0.3;
playfxontag( common_scripts\utility::getfx( "loco_breach_engine_explode" ), var_0, "tag_engine_blow_1" );
var_0 thread maps\_utility::play_sound_on_tag( "scn_skyway_engine_explode", "tag_engine_blow_2" );
wait 0.1;
earthquake( 0.5, 1.0, level.player.origin, 3000 );
level.player playrumbleonentity( "damage_heavy" );
thread end_slide_effects( var_1 );
level.player disableweapons();
}
end_slide_effects( var_0 )
{
level waittill( "notify_loco_breach_slowmo_start" );
var_1 = 0.2;
var_0 unlink();
thread maps\skyway_util::player_sway_blendto( var_1 );
thread maps\skyway_util::player_wind_blendto( var_1 );
level.player thread maps\skyway_util::player_const_quake_blendto( 0, var_1 );
level.player_rumble_ent thread maps\_utility::rumble_ramp_to( 0, var_1 );
}
end_breach_impulse_player_single( var_0, var_1, var_2, var_3 )
{
level endon( "flag_stop_impulses" );
var_4 = gettime();
thread push_player_impulse( var_1, var_2, var_3 );
for (;;)
{
level.end_breach_impulse_player_dir = vectornormalize( var_0.origin - level.player.origin );
wait( level.timestep );
}
}
push_player_impulse( var_0, var_1, var_2 )
{
var_3 = var_0;
for ( var_4 = level.loco_player_impulse_move_speed; var_3 > 0.0; var_3 = var_3 - level.timestep )
{
var_5 = maps\skyway_util::normalize_value( 0, var_0, var_3 );
var_6 = maps\skyway_util::normalize_value( 0, var_0, var_3 );
if ( var_1 )
var_5 = 1.0 - var_5;
var_5 = maps\skyway_util::factor_value_min_max( var_2, 1, var_5 );
var_6 = maps\skyway_util::factor_value_min_max( var_2, 1, var_6 );
var_7 = level.end_breach_impulse_player_dir * level.end_breach_impulse_force * var_5;
var_4 = level.loco_player_impulse_move_speed * var_6;
level.player pushplayervector( var_7, 1 );
level.player setmovespeedscale( var_4 );
wait( level.timestep );
}
common_scripts\utility::flag_wait( "flag_stop_impulses" );
var_7 = ( 0, 0, 0 );
level.player pushplayervector( var_7, 1 );
}
loco_slide_logic( var_0 )
{
level.player thread loco_slide_player_raise_weapon();
thread end_breach_player_death_logic( "notify_loco_breach_slowmo_start" );
if ( !isdefined( var_0 ) )
{
level.end_enemies[0] delete();
level.end_enemies[1] delete();
level.end_enemies[0] = end_breach_enemy_spawn_single( 0 );
level.end_enemies[1] = end_breach_enemy_spawn_single( 1 );
}
else
level.player forcemovingplatformentity( level.loco_moving_platform );
common_scripts\utility::array_call( level.end_control_enemies, ::linkto, level.loco_breach_anim_node );
if ( !isdefined( var_0 ) )
{
level.end_enemies[0] linkto( level.loco_breach_anim_node );
level.end_enemies[1] linkto( level.loco_breach_anim_node );
}
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.end_enemies[0], "loco_slide" );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.end_enemies[1], "loco_slide" );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.end_breach_rpg_guy, "loco_slide" );
var_1 = maps\_utility::spawn_anim_model( "pt2_extinguisher" );
var_1 linkto( level.loco_breach_anim_node );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( var_1, "loco_slide" );
if ( !isdefined( var_0 ) )
level waittill( "flag_player_slide" );
thread train_sync_end_stop_anim();
thread maps\skyway_audio::skyway_checkmate_music();
var_2 = getent( "loco_control_room_door", "targetname" );
var_2.animname = "loco_control_room_door";
var_2 maps\_anim::setanimtree();
var_2 setanim( level.scr_anim["loco_control_room_door"]["loco_slide"] );
level.loco_breach_anim_node thread maps\_anim::anim_single( level.end_control_enemies, "loco_slide" );
level._boss linkto( level.loco_breach_anim_node );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level._boss, "loco_slide" );
var_3 = 0.2;
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.player_rig, "loco_slide" );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.player_legs, "loco_slide" );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level._ally, "loco_slide" );
level.player disableweapons();
level.player playerlinktoblend( level.player_rig, "tag_player", var_3 );
wait( var_3 );
level.player_legs show();
level.player_rig show();
common_scripts\utility::flag_set( "flag_stop_impulses" );
thread loco_breach_slowmo( 1.6, 0.75 );
level.player unlink();
level.player playerlinktodelta( level.player_rig, "tag_player", 1, 60, 60, 60, 60, 1 );
var_4 = getanimlength( level.scr_anim["player_rig"]["loco_slide"] ) - 0.2;
wait( var_4 );
var_1 delete();
level.player_legs delete();
level.player_legs = undefined;
common_scripts\utility::flag_set( "flag_loco_breach_end" );
}
train_sync_end_stop_anim()
{
var_0 = getanimlength( level.scr_anim["train_loco_body"]["end_stop"] );
var_1 = 2.4;
for (;;)
{
var_2 = level._train.cars["train_loco"].body getanimtime( level.scr_anim["train_loco_body"]["end_stop"] ) * var_0;
if ( abs( var_1 - var_2 ) < 0.08 )
break;
if ( var_2 > var_1 )
level._train.cars["train_loco"].body setanim( level.scr_anim["train_loco_body"]["end_stop"], 1, var_2 / var_0, 0.8 );
else if ( var_2 < var_1 )
level._train.cars["train_loco"].body setanim( level.scr_anim["train_loco_body"]["end_stop"], 1, var_2 / var_0, 1.2 );
wait( level.timestep );
var_1 = var_1 + level.timestep;
}
level._train.cars["train_loco"].body setanimtime( level.scr_anim["train_loco_body"]["end_stop"], var_1 / var_0 );
level._train.cars["train_loco"].body setanim( level.scr_anim["train_loco_body"]["end_stop"], 1, var_1 / var_0, 1 );
}
loco_slide_player_raise_weapon()
{
level endon( "notify_loco_standoff" );
maps\skyway_util::skyway_hide_hud();
level waittill( "notify_player_raise_weapon" );
var_0 = "coltanaconda_rorkearm_skyway";
level.player takeallweapons();
level.player giveweapon( var_0 );
level.player enableweapons();
level.player switchtoweaponimmediate( var_0 );
level.player setweaponammoclip( var_0, 6 );
level.player setweaponammostock( var_0, 0 );
level.player enableslowaim( 0.25, 0.25 );
level.player springcamenabled( 0.5 );
while ( level.player getweaponammoclip( var_0 ) > 2 )
wait( level.timestep );
level notify( "notify_loco_breach_slowmo_end" );
level.player allowfire( 0 );
}
handle_revolver_bullet_fiction()
{
var_0 = 2;
var_1 = level.player getweaponammoclip( "coltanaconda_rorkearm_skyway" );
var_2 = common_scripts\utility::spawn_tag_origin();
var_2 linktoplayerview( level.player, "TAG_FLASH", ( 0, 0, 0 ), ( 0, 0, 0 ), 1 );
while ( var_1 > var_0 )
{
wait( randomfloatrange( 0.28, 0.32 ) );
level.player playrumbleonentity( "damage_heavy" );
playfxontag( common_scripts\utility::getfx( "magnum_flash" ), var_2, "tag_origin" );
level.player playsound( "weap_mag44_fire_plr" );
var_1--;
}
}
loco_bridge_rog_strike()
{
level waittill( "notify_call_in_final_rog" );
var_0 = getentarray( "bridge_end_1", "script_noteworthy" );
var_1 = getentarray( "bridge_end_2", "script_noteworthy" );
foreach ( var_3 in var_0 )
{
var_3.animname = "end_bridge";
var_3 maps\_anim::setanimtree();
}
foreach ( var_3 in var_1 )
{
var_3.animname = "end_bridge";
var_3 maps\_anim::setanimtree();
}
var_1[0] thread maps\skyway_audio::sfx_rog_canyon_impact( "tag_rog_impact" );
wait 0.2;
playfxontag( common_scripts\utility::getfx( "rog_maintrail_01" ), var_1[0], "tag_rog_trail" );
thread maps\skyway_audio::sfx_train_derail_logic( var_1[0] );
wait 4;
playfxontag( common_scripts\utility::getfx( "vfx_rog_impact_temp_01" ), var_1[0], "tag_rog_impact" );
thread maps\skyway_audio::sfx_train_derail_sound();
thread maps\skyway_util::rog_flash( 0.7, 0.3, 1.5 );
thread maps\skyway_util::player_rumble_bump( level.player_rumble_rog_ent, 0.5, 0.0, 0.2, 0.0, 0.5 );
thread maps\skyway_util::player_rumble_bump( level.player_rumble_ent, 1.0, 1.0, 5.0, 0.0, 0.05 );
wait 0.2;
thread maps\skyway_util::train_quake( 0.4, 0.8, level.player.origin, 2000 );
thread maps\skyway_util::player_wind_bump( 0.2, 0.0, 3.0, 0.9 );
wait 1.0;
common_scripts\utility::flag_set( "flag_bridge_rog" );
foreach ( var_3 in var_0 )
var_3 setanim( level.scr_anim["end_bridge"]["bridge_rog_1"] );
foreach ( var_3 in var_1 )
var_3 setanim( level.scr_anim["end_bridge"]["bridge_rog_2"] );
level waittill( "notify_shockwave_start" );
playfxontag( common_scripts\utility::getfx( "bridge_shockwave" ), var_1[0], "tag_shockwave" );
playfxontag( common_scripts\utility::getfx( "bridge_shockwave_girders" ), var_1[0], "tag_shockwave_girders" );
level waittill( "notify_shockwave_stop_girders" );
stopfxontag( common_scripts\utility::getfx( "bridge_shockwave_girders" ), var_1[0], "tag_shockwave_girders" );
level waittill( "notify_shockwave_hit" );
thread maps\skyway_util::train_quake( 0.6, 0.8, level.player.origin, 2000 );
level.player shellshock( "default_nosound", 0.3 );
level.player thread maps\skyway_fx::shockwave_dirt_hit( 1, 0.1, 4 );
radiusdamage( var_1[0] gettagorigin( "tag_shockwave" ), 3000, 40, 10 );
playfxontag( common_scripts\utility::getfx( "bridge_shockwave_oriented" ), level._train.cars["train_loco"].body, "tag_shockwave_oriented" );
playfxontag( common_scripts\utility::getfx( "bridge_shockwave_oriented" ), level._train.cars["train_loco"].body, "tag_shockwave_oriented2" );
foreach ( var_12 in var_0 )
var_12 hide();
foreach ( var_12 in var_1 )
var_12 hide();
thread maps\skyway_util::player_rumble_bump( level.player_rumble_rog_ent, 0.0, 0.0, 0.1, 0.0, 0.5 );
thread maps\skyway_util::player_rumble_bump( level.player_rumble_ent, 0.0, 0.0, 0.1, 0.0, 0.05 );
wait 0.3;
radiusdamage( level.player.origin, 3000, 40, 10 );
killfxontag( common_scripts\utility::getfx( "bridge_shockwave" ), var_1[0], "tag_shockwave" );
}
loco_standoff()
{
level notify( "notify_loco_standoff" );
var_0 = 0.3;
level.player unlink();
level.player_rig delete();
player_setup( "player_rig_struggle", 0, 60 );
level.player_rig linkto( level.loco_breach_anim_node );
level.player_rig thread loco_standoff_struggle_logic();
level.player playerlinktoblend( level.player_rig, "tag_player", var_0, 0, 0 );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level.player_rig, "loco_standoff" );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level._boss, "loco_standoff" );
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( level._ally, "loco_standoff" );
level._ally thread breach_shot_blood_fx( "notify_shockwave_hit" );
level._ally maps\_utility::gun_remove();
level._ally attach( "weapon_p226", "tag_weapon_right" );
foreach ( var_2 in level.end_control_enemies )
{
if ( isalive( var_2 ) )
{
if ( var_2.animname == "opfor4" )
level.loco_breach_anim_node thread maps\_anim::anim_single_solo( var_2, "loco_standoff" );
}
}
wait( var_0 );
level.player unlink();
level.player playerlinktodelta( level.player_rig, "tag_player", 1, 25, 25, 10, 10, 1 );
level.player springcamenabled( 0.5 );
var_4 = common_scripts\utility::spawn_tag_origin();
var_4 linkto( level._train.cars["train_loco"].body, "j_spineupper", ( 0, 0, 0 ), ( 0, 0, 0 ) );
var_5 = maps\_utility::spawn_anim_model( "player_rig" );
var_5 hide();
var_4 maps\_anim::anim_first_frame_solo( var_5, "loco_blasthit" );
var_5 linkto( var_4 );
level waittill( "notify_shockwave_hit" );
level notify( "loco_blasthit" );
thread loco_fall_dof();
level notify( "notify_loco_breach_stop_struggle" );
var_6 = maps\_utility::spawn_anim_model( "bridgepiece6" );
var_7 = maps\_utility::spawn_anim_model( "bridgepiece7" );
var_8 = maps\_utility::spawn_anim_model( "bridgepieceL_1" );
var_9 = maps\_utility::spawn_anim_model( "bridgepieceL_2" );
var_10 = maps\_utility::spawn_anim_model( "bridgepieceM_1" );
var_11 = maps\_utility::spawn_anim_model( "bridgepieceM_2" );
var_12 = maps\_utility::spawn_anim_model( "bridgepieceM_3" );
var_13 = maps\_utility::spawn_anim_model( "bridgepieceS_1" );
var_14 = maps\_utility::spawn_anim_model( "bridgepieceS_2" );
var_15 = [ var_6, var_7, var_8, var_9, var_10, var_11, var_12, var_13, var_14 ];
var_16 = maps\_utility::spawn_anim_model( "pt2_extinguisher" );
thread maps\skyway_fx::fx_bridgefall( var_6, var_7 );
level._train maps\skyway_util::train_queue_path_anim( "loco_blasthit", "anim_track_ending", "anim_track_ending", "clear", 1, 0 );
foreach ( var_2 in level.end_enemies )
{
if ( isalive( var_2 ) )
var_2 hide();
}
var_19 = common_scripts\utility::getstruct( "anim_track_ending", "targetname" );
var_19 thread maps\_anim::anim_single( var_15, "loco_blasthit" );
level._ally linkto( var_4 );
var_4 thread maps\_anim::anim_single_solo( level._ally, "loco_blasthit" );
level._ally detach( "weapon_p226", "tag_weapon_right" );
level._boss linkto( var_4 );
var_4 thread maps\_anim::anim_single_solo( level._boss, "loco_blasthit" );
var_16 linkto( var_4 );
var_4 thread maps\_anim::anim_single_solo( var_16, "loco_blasthit" );
level.player_rig delete();
var_5 show();
level.player playerlinktodelta( var_5, "tag_player", 1, 0, 0, 0, 0, 1 );
level.player lerpviewangleclamp( 0.3, 0.15, 0.15, 40, 40, 40, 40 );
level.player playersetgroundreferenceent( var_4 );
var_4 maps\_anim::anim_single_solo( var_5, "loco_blasthit" );
maps\skyway_util::show_train_geo( [], [] );
level.player springcamdisabled( 0.5 );
level.player unlink();
var_5 delete();
foreach ( var_21 in var_15 )
var_21 delete();
var_16 delete();
common_scripts\utility::flag_set( "flag_loco_end" );
}
player_setup( var_0, var_1, var_2, var_3, var_4 )
{
if ( !isdefined( var_2 ) )
var_2 = 60;
maps\skyway_util::setup_player_for_animated_sequence( var_1, var_2, var_3, var_4, 0, undefined, var_0 );
}
ally_setup()
{
}
enemy_setup()
{
level.end_enemies = [];
level.end_breach_enemies = [];
level.end_breach_rpg_guy = undefined;
level.end_control_enemies = [];
level.end_breach_enemies_killed = 0;
if ( !isdefined( level._boss ) )
maps\skyway_util::spawn_boss();
level._boss prepare_enemy_for_breach();
level.breach_spawners = getentarray( "loco_breach_enemy", "targetname" );
foreach ( var_1 in level.breach_spawners )
{
var_1 thread maps\_utility::add_spawn_function( maps\_vignette_util::vignette_actor_spawn_func );
var_1.count = 2;
}
for ( var_3 = 0; var_3 < level.breach_spawners.size + 1; var_3++ )
{
var_4 = end_breach_enemy_spawn_single( var_3 );
level.end_enemies = common_scripts\utility::array_add( level.end_enemies, var_4 );
}
}
end_breach_enemy_spawn_single( var_0 )
{
var_1 = undefined;
switch ( var_0 )
{
case 1:
case 0:
var_1 = level.breach_spawners[var_0] maps\_utility::spawn_ai( 1 );
var_1.animname = "opfor" + ( var_0 + 1 );
var_1.deathfunction = maps\skyway_anim::breach_enemy_death_anim_override;
var_1.deathanim = var_1 maps\_utility::getanim( "loco_breach_death" );
var_1 thread breach_enemy_death_dmg( "loco_breach_death", 1 );
level.end_breach_enemies[var_0] = var_1;
break;
case 2:
var_2 = getent( "loco_breach_enemy_RPG", "targetname" );
var_2 thread maps\_utility::add_spawn_function( maps\_vignette_util::vignette_actor_spawn_func );
var_1 = var_2 maps\_utility::spawn_ai( 1 );
var_1 hidepart( "tag_weapon" );
level.end_breach_rpg_guy = var_1;
break;
case 3:
var_1 = level.breach_spawners[var_0 - 1] maps\_utility::spawn_ai( 1 );
var_1.animname = "opfor" + ( var_0 + 1 );
var_1.deathfunction = maps\skyway_anim::breach_enemy_death_anim_override;
var_1.deathanim = var_1 maps\_utility::getanim( "loco_breach_death" );
var_1 thread breach_enemy_death_dmg( "loco_breach_death", 1 );
level.end_control_enemies[var_0 - 3] = var_1;
break;
case 5:
case 4:
var_1 = level.breach_spawners[var_0 - 1] maps\_utility::spawn_ai( 1 );
var_1 thread breach_enemy_death_dmg( "loco_gunhold_death", 0 );
level.end_control_enemies[var_0 - 3] = var_1;
break;
}
var_1.animname = "opfor" + ( var_0 + 1 );
var_1 linkto( level.loco_breach_anim_node );
var_1 thread breach_shot_blood_fx( "notify_loco_standoff" );
return var_1;
}
props_setup()
{
level.player_legs = maps\_utility::spawn_anim_model( "player_legs" );
level.player_legs hide();
level.loco_breach_rpg_model = maps\_utility::spawn_anim_model( "loco_breach_RPG_model" );
level.loco_breach_rpg_model hide();
}
prepare_enemy_for_breach()
{
maps\_utility::set_battlechatter( 0 );
self.combatmode = "no_cover";
self.ignoreall = 1;
self.ignoreme = 1;
self.newenemyreactiondistsq_old = self.newenemyreactiondistsq;
self.newenemyreactiondistsq = 0;
self.grenadeammo = 0;
self.grenadeawareness = 0;
self.ignoreexplosionevents = 1;
self.ignorerandombulletdamage = 1;
self.ignoresuppression = 1;
self.fixednode = 0;
self.disablebulletwhizbyreaction = 1;
maps\_utility::disable_pain();
self.dontavoidplayer = 1;
}
breach_shot_blood_fx( var_0 )
{
level endon( var_0 );
for (;;)
{
self waittill( "damage", var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8 );
var_9 = common_scripts\utility::spawn_tag_origin();
var_9.origin = var_4;
var_9.angles = var_3;
var_9 linkto( self, var_8, ( 0, 0, 0 ), ( 0, 0, 0 ) );
playfxontag( level._effect["blood_spatter"], var_9, "tag_origin" );
wait( level.timestep );
}
}
breach_enemy_death_dmg( var_0, var_1 )
{
self endon( "death" );
self endon( "stop anim" );
self waittill( "damage", var_2, var_3, var_4, var_5, var_6 );
level.end_breach_enemies_killed++;
if ( var_1 )
{
if ( isdefined( self.magic_bullet_shield ) && self.magic_bullet_shield )
maps\_utility::stop_magic_bullet_shield();
self.allowdeath = 1;
self kill();
}
else
{
self.scripted_death = 1;
level.loco_breach_anim_node maps\_anim::anim_single_solo( self, var_0 );
level.loco_breach_anim_node maps\_anim::anim_last_frame_solo( self, var_0 );
}
}
loco_breach_slowmo( var_0, var_1 )
{
level waittill( "notify_loco_breach_slowmo_start" );
var_2 = var_0;
var_3 = var_1;
level.player thread player_heartbeat();
thread slowmo_difficulty_dvars();
common_scripts\utility::flag_clear( "can_save" );
maps\_utility::slowmo_setspeed_slow( 0.25 );
maps\_utility::slowmo_setlerptime_in( var_2 );
maps\_utility::slowmo_lerp_in();
level.player setmovespeedscale( level.slowmo_breach_player_speed );
level waittill( "notify_loco_breach_slowmo_end" );
level notify( "slowmo_breach_ending", var_3 );
level notify( "stop_player_heartbeat" );
level.player thread maps\_utility::play_sound_on_entity( "slomo_whoosh" );
maps\_utility::slowmo_setlerptime_out( var_3 );
maps\_utility::slowmo_lerp_out();
common_scripts\utility::flag_set( "can_save" );
level.player slowmo_player_cleanup();
}
player_heartbeat()
{
level endon( "stop_player_heartbeat" );
for (;;)
{
self playlocalsound( "scn_skyway_heartbeat" );
wait( level.timestep );
}
}
slowmo_difficulty_dvars()
{
var_0 = getdvar( "bg_viewKickScale" );
var_1 = getdvar( "bg_viewKickMax" );
setsaveddvar( "bg_viewKickScale", 0.3 );
setsaveddvar( "bg_viewKickMax", "15" );
setsaveddvar( "bullet_penetration_damage", 0 );
level waittill( "slowmo_breach_ending" );
setsaveddvar( "bg_viewKickScale", var_0 );
setsaveddvar( "bg_viewKickMax", var_1 );
wait 2;
setsaveddvar( "bullet_penetration_damage", 1 );
}
slowmo_player_cleanup()
{
if ( isdefined( level.playerspeed ) )
self setmovespeedscale( level.playerspeed );
else
self setmovespeedscale( 1 );
}
blackscreen( var_0 )
{
var_1 = maps\_hud_util::create_client_overlay( "black", 0, level.player );
var_1.alpha = 1;
var_1.foreground = 0;
maps\skyway_util::player_rumble_bump( level.player_rumble_ent, 1.0, 0.0, 0.1, 0.0, 0.9 );
level.black_overlay = var_1;
}
loco_standoff_struggle_logic()
{
level endon( "notify_loco_breach_stop_struggle" );
level waittill( "notify_loco_breach_struggle" );
var_0 = 0;
var_1 = 0;
level.debug_use_head_anims = 1;
level.debug_use_body_anims = 1;
level.simulation_speed = 2.5;
level.damping_factor = -2.0;
level.accel_factor = 5.0;
self.jerk_check = 0;
self.front_jerk = 0;
self.back_jerk = 0;
self.left_jerk = 0;
self.right_jerk = 0;
self.front_velocity = 0.0;
self.back_velocity = 0.0;
self.left_velocity = 0.0;
self.right_velocity = 0.0;
self.front_weight = 0.0;
self.back_weight = 0.0;
self.left_weight = 0.0;
self.right_weight = 0.0;
self.move_previous = ( 0, 0, 0 );
self setanim( level.scr_anim["player_rig_struggle"]["loco_bodyshield_accelerate_forward_parent"], 0, 0 );
self setanim( level.scr_anim["player_rig_struggle"]["loco_bodyshield_accelerate_back_parent"], 0, 0 );
self setanim( level.scr_anim["player_rig_struggle"]["loco_bodyshield_accelerate_right_parent"], 0, 0 );
self setanim( level.scr_anim["player_rig_struggle"]["loco_bodyshield_accelerate_left_parent"], 0, 0 );
self setanim( level.scr_anim["player_rig_struggle"]["loco_bodyshield_forward_parent"], 0, 0 );
self setanim( level.scr_anim["player_rig_struggle"]["loco_bodyshield_back_parent"], 0, 0 );
self setanim( level.scr_anim["player_rig_struggle"]["loco_bodyshield_right_parent"], 0, 0 );
self setanim( level.scr_anim["player_rig_struggle"]["loco_bodyshield_left_parent"], 0, 0 );
if ( var_0 )
var_1 = level._boss getanimtime( level.scr_anim["boss"]["loco_standoff"] );
for (;;)
{
loco_standoff_struggle_lerp_anims();
if ( var_0 )
{
level._boss setanimtime( level.scr_anim["boss"]["loco_standoff"], var_1 );
level.player_rig setanimtime( level.scr_anim["player_rig_struggle"]["loco_standoff"], var_1 );
level._ally setanimtime( level.scr_anim["ally1"]["loco_standoff"], var_1 );
}
wait( level.timestep );
}
}
loco_standoff_struggle_lerp_anims()
{
level endon( "notify_loco_breach_stop_struggle" );
level.player endon( "death" );
self endon( "death" );
var_0 = level.player getnormalizedmovement();
var_1 = common_scripts\utility::ter_op( var_0[0] > 0.0, 1, 0 );
var_2 = common_scripts\utility::ter_op( var_0[0] < 0.0, 1, 0 );
var_3 = common_scripts\utility::ter_op( var_0[1] < 0.0, 1, 0 );
var_4 = common_scripts\utility::ter_op( var_0[1] > 0.0, 1, 0 );
var_5 = common_scripts\utility::ter_op( self.front_weight > 0.0, 1, 0 );
var_6 = common_scripts\utility::ter_op( self.back_weight > 0.0, 1, 0 );
var_7 = common_scripts\utility::ter_op( self.left_weight > 0.0, 1, 0 );
var_8 = common_scripts\utility::ter_op( self.right_weight > 0.0, 1, 0 );
var_9 = -1 * self.front_weight;
var_10 = -1 * self.back_weight;
var_11 = -1 * self.left_weight;
var_12 = -1 * self.right_weight;
var_13 = 1;
if ( self.jerk_check )
{
var_14 = length2d( var_0 - self.move_previous );
var_15 = 0.4;
if ( var_14 < var_15 )
var_13 = 0;
else
self.jerk_check = 0;
}
if ( var_1 )
{
if ( !var_6 )
{
if ( self.front_jerk )
{
var_9 = -1.0;
if ( self.front_weight <= 0.1 )
{
var_9 = 0.0;
self.front_jerk = 0;
}
}
else if ( self.front_weight > 1.0 )
{
var_9 = -1.0;
self.jerk_check = 1;
self.front_jerk = 1;
self.move_previous = var_0;
}
else if ( var_13 )
var_9 = var_0[0];
}
else if ( var_13 )
var_10 = -1.0 * var_0[0];
}
else if ( var_2 )
{
if ( !var_5 )
{
if ( self.back_jerk )
{
var_10 = -1.0;
if ( self.back_weight <= 0.1 )
{
var_10 = 0.0;
self.back_jerk = 0;
}
}
else if ( self.back_weight > 1.0 )
{
var_10 = -1.0;
self.jerk_check = 1;
self.back_jerk = 1;
self.move_previous = var_0;
}
else if ( var_13 )
var_10 = -1.0 * var_0[0];
}
else if ( var_13 )
var_9 = var_0[0];
}
if ( var_3 )
{
if ( !var_8 )
{
if ( self.left_jerk )
{
var_11 = -1.0;
if ( self.left_weight <= 0.1 )
{
var_11 = 0.0;
self.left_jerk = 0;
}
}
else if ( self.left_weight > 1.0 )
{
var_11 = -1.0;
self.jerk_check = 1;
self.left_jerk = 1;
self.move_previous = var_0;
}
else if ( var_13 )
var_11 = -1.0 * var_0[1];
}
else if ( var_13 )
var_12 = var_0[1];
}
else if ( var_4 )
{
if ( !var_7 )
{
if ( self.right_jerk )
{
var_12 = -1.0;
if ( self.right_weight <= 0.1 )
{
var_12 = 0.0;
self.right_jerk = 0;
}
}
else if ( self.right_weight > 1.0 )
{
var_12 = -1.0;
self.jerk_check = 1;
self.right_jerk = 1;
self.move_previous = var_0;
}
else if ( var_13 )
var_12 = var_0[1];
}
else if ( var_13 )
var_11 = -1.0 * var_0[1];
}
self.front_velocity = self.front_velocity + var_9 * level.accel_factor * level.timestep * level.simulation_speed;
self.back_velocity = self.back_velocity + var_10 * level.accel_factor * level.timestep * level.simulation_speed;
self.left_velocity = self.left_velocity + var_11 * level.accel_factor * level.timestep * level.simulation_speed;
self.right_velocity = self.right_velocity + var_12 * level.accel_factor * level.timestep * level.simulation_speed;
self.front_velocity = self.front_velocity + level.damping_factor * self.front_velocity * level.timestep * level.simulation_speed;
self.back_velocity = self.back_velocity + level.damping_factor * self.back_velocity * level.timestep * level.simulation_speed;
self.left_velocity = self.left_velocity + level.damping_factor * self.left_velocity * level.timestep * level.simulation_speed;
self.right_velocity = self.right_velocity + level.damping_factor * self.right_velocity * level.timestep * level.simulation_speed;
self.front_weight = self.front_weight + self.front_velocity * level.timestep * level.simulation_speed;
self.back_weight = self.back_weight + self.back_velocity * level.timestep * level.simulation_speed;
self.left_weight = self.left_weight + self.left_velocity * level.timestep * level.simulation_speed;
self.right_weight = self.right_weight + self.right_velocity * level.timestep * level.simulation_speed;
if ( self.front_weight < 0.0 )
{
self.back_weight = -1.0 * self.front_weight;
self.front_weight = 0.0;
self.back_velocity = -1.0 * self.front_velocity;
self.front_velocity = 0.0;
}
else if ( self.back_weight < 0.0 )
{
self.front_weight = -1.0 * self.back_weight;
self.back_weight = 0.0;
self.front_velocity = -1.0 * self.back_velocity;
self.back_velocity = 0.0;
}
if ( self.left_weight < 0.0 )
{
self.right_weight = -1.0 * self.left_weight;
self.left_weight = 0.0;
self.right_velocity = -1.0 * self.left_velocity;
self.left_velocity = 0.0;
}
else if ( self.right_weight < 0.0 )
{
self.left_weight = -1.0 * self.right_weight;
self.right_weight = 0.0;
self.left_velocity = -1.0 * self.right_velocity;
self.right_velocity = 0.0;
}
if ( level.debug_use_head_anims )
{
var_16 = self.left_weight * 0.9;
var_17 = self.right_weight * 0.9;
var_18 = self.front_weight * 0.9;
var_19 = self.back_weight * 0.9;
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_accelerate_left"], 1, 0 );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_accelerate_right"], 1, 0 );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_accelerate_forward"], 1, 0 );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_accelerate_back"], 1, 0 );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_accelerate_left_parent"], var_16, level.timestep );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_accelerate_right_parent"], var_17, level.timestep );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_accelerate_forward_parent"], var_18, level.timestep );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_accelerate_back_parent"], var_19, level.timestep );
}
if ( level.debug_use_body_anims )
{
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_left"], 1, 0 );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_right"], 1, 0 );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_forward"], 1, 0 );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_back"], 1, 0 );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_left_parent"], self.left_weight, level.timestep );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_right_parent"], self.right_weight, level.timestep );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_forward_parent"], self.front_weight, level.timestep );
self setanimlimited( level.scr_anim["player_rig_struggle"]["loco_bodyshield_back_parent"], self.back_weight, level.timestep );
}
}
tunnel_lights_engineroom()
{
common_scripts\utility::flag_wait( "flag_loco_enter" );
var_0 = getentarray( "light_tunnel_warm", "targetname" );
var_1 = getentarray( "light_tunnel_cool", "targetname" );
foreach ( var_3 in var_0 )
{
var_3 setlightcolor( ( 0.99, 0.95, 0.81 ) );
var_3 setlightintensity( 0.2 );
}
foreach ( var_3 in var_1 )
{
var_3 setlightcolor( ( 0.66, 0.78, 0.85 ) );
var_3 setlightintensity( 0.05 );
}
}
hide_loco_exterior()
{
var_0 = getentarray( "loco_exterior", "targetname" );
foreach ( var_2 in var_0 )
var_2 hide();
}
standoff_sunlight()
{
lerpsunangles( getmapsunangles(), ( -14.82, 104.73, 0 ), 0.1 );
common_scripts\utility::flag_wait( "flag_end_wreck_start" );
resetsundirection();
setsaveddvar( "sm_sunSampleSizeNear", 0.25 );
}
loco_fall_dof()
{
thread maps\_art::dof_enable_script( 0, 17.15, 6, 350, 617, 3, 0.5 );
wait 4.1;
thread maps\_art::dof_enable_script( 0, 429.3, 5.0, 40000, 50000, 0.1, 1 );
}
loco_breach_visions()
{
common_scripts\utility::flag_wait( "flag_breach_final_tracks" );
maps\_utility::vision_set_fog_changes( "skyway_breach2", 0.01 );
wait 2;
maps\_utility::vision_set_fog_changes( "skyway_standoff", 2 );
}