1187 lines
47 KiB
Plaintext
1187 lines
47 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
start()
|
|
{
|
|
iprintln( "Ascend" );
|
|
maps\black_ice_util::player_start( "player_start_ascend" );
|
|
maps\_utility::vision_set_fog_changes( "black_ice_catwalks", 0 );
|
|
|
|
if ( level._allies.size < 2 )
|
|
level maps\black_ice_util::spawn_allies();
|
|
|
|
common_scripts\utility::array_thread( level._allies, maps\_utility::set_ignoresuppression, 1 );
|
|
var_0 = getent( "vignette_alpha_team_rigascend", "script_noteworthy" );
|
|
|
|
if ( level._bravo.size < 2 )
|
|
level maps\black_ice_util::spawn_bravo();
|
|
|
|
var_1 = common_scripts\utility::getstruct( "vignette_beta_rig_ascend", "script_noteworthy" );
|
|
var_2 = getnode( "bc_node_ascend_ally1", "targetname" );
|
|
level._allies[0] forceteleport( var_2.origin, var_2.angles );
|
|
level._allies[0] thread maps\_utility::follow_path( var_2 );
|
|
var_2 = getnode( "bc_node_ascend_ally2", "targetname" );
|
|
level._allies[1] forceteleport( var_2.origin, var_2.angles );
|
|
level._allies[1] thread maps\_utility::follow_path( var_2 );
|
|
var_2 = getnode( "bc_node_ascend_bravo1", "targetname" );
|
|
level._bravo[1] forceteleport( var_2.origin, var_2.angles );
|
|
level._bravo[1] thread maps\_utility::follow_path( var_2 );
|
|
var_2 = getnode( "bc_node_ascend_bravo2", "targetname" );
|
|
level._bravo[0] forceteleport( var_2.origin, var_2.angles );
|
|
level._bravo[0] thread maps\_utility::follow_path( var_2 );
|
|
level.launchers_attached = 0;
|
|
level.ascend_waiting = 1;
|
|
common_scripts\utility::flag_set( "bc_flag_spots_close" );
|
|
thread maps\black_ice_camp::fake_spot( "cw_spotlight_2", "cw_spot_2_org" );
|
|
thread maps\black_ice_camp::fake_spot( "cw_spotlight_3", "cw_spot_3_org" );
|
|
thread maps\black_ice_camp::ascend_snow_fx();
|
|
thread hanging_cargo_motion();
|
|
thread maps\black_ice_audio::sfx_distant_oil_rig();
|
|
}
|
|
|
|
main()
|
|
{
|
|
level.ascend_launch_pos = common_scripts\utility::getstruct( "ascend_launch_pos", "script_noteworthy" );
|
|
|
|
if ( !isdefined( level.ascend_anim_node ) )
|
|
level.ascend_anim_node = getent( "vignette_alpha_team_rigascend", "script_noteworthy" );
|
|
|
|
level.bravo_ascend_anim_node = common_scripts\utility::getstruct( "vignette_beta_rig_ascend", "script_noteworthy" );
|
|
level.bravo_ascend_anim_node.origin = level.ascend_anim_node.origin;
|
|
level.bravo_ascend_anim_node.angles = level.ascend_anim_node.angles;
|
|
level.player_ascend_anim_node = getent( "vignette_alpha_player_rigascend", "script_noteworthy" );
|
|
level.sfx_ascend_check = "stop";
|
|
level.sfx_ascend_node = spawn( "script_origin", ( 1414, 3969, 4069 ) );
|
|
init_ascend_vars();
|
|
thread start_catwalk_snow();
|
|
thread ascend_dialog();
|
|
thread keegan_kill_dialog();
|
|
thread ascend_vision_sets();
|
|
thread ascend_logic();
|
|
}
|
|
|
|
ascend_vision_sets()
|
|
{
|
|
common_scripts\utility::flag_wait( "flag_ascend_start" );
|
|
maps\_utility::stop_exploder( "basecamp_lights" );
|
|
maps\_utility::vision_set_fog_changes( "black_ice_catwalks", 7 );
|
|
}
|
|
|
|
section_flag_inits()
|
|
{
|
|
common_scripts\utility::flag_init( "flag_ascend_triggered" );
|
|
common_scripts\utility::flag_init( "flag_ascend_start" );
|
|
common_scripts\utility::flag_init( "flag_ascend_bravo_go" );
|
|
common_scripts\utility::flag_init( "flag_player_ascending" );
|
|
common_scripts\utility::flag_init( "flag_bravo_ascend_complete" );
|
|
common_scripts\utility::flag_init( "flag_alpha_ascend_complete" );
|
|
common_scripts\utility::flag_init( "flag_ascend_end" );
|
|
common_scripts\utility::flag_init( "flag_player_line_launched" );
|
|
common_scripts\utility::flag_init( "flag_dialog_dontstop" );
|
|
common_scripts\utility::flag_init( "flag_dialog_weaponsfree" );
|
|
}
|
|
|
|
section_precache()
|
|
{
|
|
maps\_utility::add_hint_string( "hint_ascend_init", &"BLACK_ICE_ASCEND_INIT", ::hint_ascend_init_func );
|
|
maps\_utility::add_hint_string( "hint_ascend_launch", &"BLACK_ICE_ASCEND_LAUNCH", ::hint_ascend_func );
|
|
maps\_utility::add_hint_string( "hint_ascend", &"BLACK_ICE_ASCEND_ASCEND", ::hint_ascend_func );
|
|
precachemodel( "black_ice_rope_prop" );
|
|
precachemodel( "black_ice_rope_prop_obj" );
|
|
}
|
|
|
|
ally_setup()
|
|
{
|
|
|
|
}
|
|
|
|
player_setup( var_0, var_1, var_2 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = 60;
|
|
|
|
maps\black_ice_util::setup_player_for_animated_sequence( 1, var_0, var_1, var_2, 0, undefined );
|
|
}
|
|
|
|
play_falling_enemy()
|
|
{
|
|
var_0 = level.ascend_anim_node common_scripts\utility::spawn_tag_origin();
|
|
level.ascend_enemy = maps\_vignette_util::vignette_actor_spawn( "ascend_enemy", "opfor" );
|
|
level.ascend_enemy linkto( var_0, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
var_0 maps\_anim::anim_single_solo( level.ascend_enemy, "alpha_rig_ascend" );
|
|
var_0 maps\_anim::anim_last_frame_solo( level.ascend_enemy, "alpha_rig_ascend" );
|
|
common_scripts\utility::flag_wait( "flag_ascend_end" );
|
|
level.ascend_enemy unlink();
|
|
level.ascend_enemy maps\_utility::stop_magic_bullet_shield();
|
|
level.ascend_enemy kill();
|
|
var_0 delete();
|
|
}
|
|
|
|
props_setup()
|
|
{
|
|
level.ascend_launcher = maps\_utility::spawn_anim_model( "ascend_launcher" );
|
|
level.ascend_ascender = maps\_utility::spawn_anim_model( "ascend_ascender" );
|
|
level.ascend_hook = maps\_utility::spawn_anim_model( "ascend_hook" );
|
|
level.ascend_hook_ally1 = maps\_utility::spawn_anim_model( "ascend_hook_ally1" );
|
|
level.ascend_hook_ally2 = maps\_utility::spawn_anim_model( "ascend_hook_ally2" );
|
|
level.ascend_hook_ally3 = maps\_utility::spawn_anim_model( "ascend_hook_ally3" );
|
|
level.ascend_hook_ally4 = maps\_utility::spawn_anim_model( "ascend_hook_ally4" );
|
|
level.ascend_launcher hide();
|
|
level.ascend_ascender hide();
|
|
level.ascend_hook hide();
|
|
level.ascend_hook_ally1 hide();
|
|
level.ascend_hook_ally2 hide();
|
|
level.ascend_hook_ally3 hide();
|
|
level.ascend_hook_ally4 hide();
|
|
|
|
if ( !isdefined( level.ally1_ascend_launcher ) )
|
|
{
|
|
level.ally1_ascend_launcher = maps\_utility::spawn_anim_model( "ally1_ascend_launcher" );
|
|
level.ally2_ascend_launcher = maps\_utility::spawn_anim_model( "ally2_ascend_launcher" );
|
|
}
|
|
|
|
level.ally1_ascend_ascender = maps\_utility::spawn_anim_model( "ally1_ascend_ascender" );
|
|
level.ally2_ascend_ascender = maps\_utility::spawn_anim_model( "ally2_ascend_ascender" );
|
|
level.ally1_ascend_ascender hide();
|
|
level.ally2_ascend_ascender hide();
|
|
level.ascend_rope1 = maps\_utility::spawn_anim_model( "ascend_rope1" );
|
|
level.ascend_rope2 = maps\_utility::spawn_anim_model( "ascend_rope2" );
|
|
level.ascend_rope3 = maps\_utility::spawn_anim_model( "ascend_rope3" );
|
|
level.ascend_rope1 hide();
|
|
level.ascend_rope2 hide();
|
|
level.ascend_rope3 hide();
|
|
|
|
if ( !isdefined( level.bravo1_ascend_launcher ) )
|
|
{
|
|
level.bravo1_ascend_launcher = maps\_utility::spawn_anim_model( "bravo1_ascend_launcher" );
|
|
level.bravo2_ascend_launcher = maps\_utility::spawn_anim_model( "bravo2_ascend_launcher" );
|
|
}
|
|
|
|
if ( !isdefined( level.bravo1_ascend_ascender ) )
|
|
{
|
|
level.bravo1_ascend_ascender = maps\_utility::spawn_anim_model( "bravo1_ascend_ascender" );
|
|
level.bravo2_ascend_ascender = maps\_utility::spawn_anim_model( "bravo2_ascend_ascender" );
|
|
level.bravo1_ascend_ascender hide();
|
|
level.bravo2_ascend_ascender hide();
|
|
}
|
|
|
|
if ( !isdefined( level.bravo_ascend_rope1 ) )
|
|
{
|
|
level.bravo_ascend_rope1 = maps\_utility::spawn_anim_model( "bravo_ascend_rope1" );
|
|
level.bravo_ascend_rope2 = maps\_utility::spawn_anim_model( "bravo_ascend_rope2" );
|
|
level.bravo_ascend_rope1 hide();
|
|
level.bravo_ascend_rope2 hide();
|
|
}
|
|
}
|
|
|
|
init_ascend_vars()
|
|
{
|
|
level.ascend_anims_rate = 1.0;
|
|
level.allow_player_ascend_move = 0;
|
|
level.ascend_current_rate = 0.0;
|
|
level.bravo_curr_rate = level.ascend_anims_rate;
|
|
level.alpha_curr_rate = level.ascend_anims_rate;
|
|
}
|
|
|
|
start_catwalk_snow()
|
|
{
|
|
level waittill( "notify_start_catwalks_snow" );
|
|
maps\_utility::stop_exploder( "basecamp_lights" );
|
|
common_scripts\utility::exploder( "catwalks_snow" );
|
|
wait 1.0;
|
|
common_scripts\utility::exploder( "catwalks_lights" );
|
|
wait 15.0;
|
|
maps\_utility::stop_exploder( "ascend_snow_huge" );
|
|
}
|
|
|
|
ascend_dialog()
|
|
{
|
|
level waittill( "notify_ascend_linesout" );
|
|
thread dialog_linesout();
|
|
level waittill( "notify_ascend_dialog_splitoff" );
|
|
wait 1.0;
|
|
level._allies[0] maps\_utility::smart_dialogue( "black_ice_bkr_rogersdiazyouarebravo" );
|
|
maps\_utility::smart_radio_dialogue( "blackice_diz_atthetop" );
|
|
level._allies[0] maps\_utility::smart_dialogue( "black_ice_bkr_rookfuentesstickwithme" );
|
|
|
|
if ( !common_scripts\utility::flag( "flag_player_ascending" ) )
|
|
level._allies[0] maps\_utility::smart_dialogue( "blackice_bkr_yourmarkrook" );
|
|
|
|
common_scripts\utility::flag_wait( "flag_player_ascending" );
|
|
wait 0.8;
|
|
level._allies[0] maps\_utility::smart_dialogue( "black_ice_mrk_steponedisablethe" );
|
|
level._allies[0] maps\_utility::smart_dialogue( "black_ice_mrk_steptwooverloadthe" );
|
|
|
|
if ( !common_scripts\utility::flag( "flag_dialog_weaponsfree" ) )
|
|
{
|
|
if ( !common_scripts\utility::flag( "flag_dialog_dontstop" ) )
|
|
{
|
|
common_scripts\utility::flag_wait( "flag_dialog_dontstop" );
|
|
level._allies[0] maps\_utility::smart_dialogue( "blackice_bkr_inrange" );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "flag_dialog_weaponsfree" );
|
|
}
|
|
|
|
level._allies[0] maps\_utility::smart_dialogue( "black_ice_bkr_getreadyweaponsfree" );
|
|
}
|
|
|
|
keegan_kill_dialog()
|
|
{
|
|
level waittill( "notify_ascend_dialog5" );
|
|
level._allies[1] thread maps\_utility::smart_dialogue( "blackice_fnt_aboveyou" );
|
|
level waittill( "notify_ascend_dialog6" );
|
|
thread maps\_utility::smart_radio_dialogue_overlap( "blackice_grn_grunt" );
|
|
level waittill( "notify_ascend_dialog7" );
|
|
thread maps\_utility::smart_radio_dialogue_interrupt( "blackice_grn_bravosup" );
|
|
}
|
|
|
|
dialog_linesout()
|
|
{
|
|
level._allies[0] maps\_utility::smart_dialogue( "blackice_bkr_linesuphere" );
|
|
wait 0.8;
|
|
|
|
if ( !common_scripts\utility::flag( "flag_player_line_launched" ) )
|
|
maps\_utility::smart_radio_dialogue( "blackice_diz_lineout" );
|
|
|
|
wait 3.0;
|
|
|
|
if ( !common_scripts\utility::flag( "flag_player_line_launched" ) )
|
|
level._allies[0] maps\_utility::smart_dialogue( "blackice_bkr_ropeup" );
|
|
}
|
|
|
|
runin_to_ascend( var_0, var_1 )
|
|
{
|
|
level endon( "camp_end_runin_to_ascend" );
|
|
self.old_moveplaybackrate = self.moveplaybackrate;
|
|
thread maps\_utility::set_moveplaybackrate( randomfloatrange( 1.16, 1.2 ), 0.5 );
|
|
var_0 maps\_anim::anim_reach_solo( self, "ascend_runin" );
|
|
self detach( level.scr_model["ascend_launcher_non_anim"], "TAG_STOWED_BACK" );
|
|
self.launcher show();
|
|
var_2 = [];
|
|
var_2[0] = self;
|
|
var_2[1] = self.launcher;
|
|
var_0 maps\_anim::anim_single( var_2, "ascend_runin" );
|
|
level.ascend_anim_node thread maps\_anim::anim_loop( var_2, "ascend_waiting", "stop_loop" );
|
|
|
|
if ( isdefined( var_1 ) )
|
|
common_scripts\utility::flag_set( var_1 );
|
|
}
|
|
|
|
ascend_logic()
|
|
{
|
|
level.player endon( "death" );
|
|
ally_setup();
|
|
props_setup();
|
|
thread bravo_ascend();
|
|
var_0 = [];
|
|
var_0["ally1"] = level._allies[0];
|
|
var_0["ally2"] = level._allies[1];
|
|
var_0["ally1_ascend_launcher"] = level.ally1_ascend_launcher;
|
|
var_0["ally2_ascend_launcher"] = level.ally2_ascend_launcher;
|
|
|
|
if ( isdefined( level.launchers_attached ) && level.launchers_attached )
|
|
{
|
|
level._allies[0] detach( level.scr_model["ascend_launcher_non_anim"], "TAG_STOWED_BACK" );
|
|
level._allies[1] detach( level.scr_model["ascend_launcher_non_anim"], "TAG_STOWED_BACK" );
|
|
level.launchers_attached = 0;
|
|
}
|
|
|
|
if ( isdefined( level.ascend_waiting ) && level.ascend_waiting )
|
|
level.ascend_anim_node thread maps\_anim::anim_loop( var_0, "ascend_waiting", "stop_loop" );
|
|
|
|
maps\black_ice_util::waittill_trigger_activate_looking_at( level.ascend_launch_pos, "hint_ascend_init", 150, undefined, undefined, 5, "flag_ascend_ready" );
|
|
level.ascend_launch_pos = undefined;
|
|
common_scripts\utility::flag_set( "flag_ascend_triggered" );
|
|
level notify( "camp_end_runin_to_ascend" );
|
|
maps\black_ice_swim::destroy_persistent_ice_breach_props();
|
|
var_0["ascend_rope2"] = level.ascend_rope2;
|
|
var_0["ascend_rope3"] = level.ascend_rope3;
|
|
level.ascend_rope2 show();
|
|
level.ascend_rope3 show();
|
|
level.ascend_anim_node notify( "stop_loop" );
|
|
level.ascend_anim_node thread maps\_anim::anim_reach( level._allies, "alpha_rope_shoot" );
|
|
level.ascend_anim_node thread maps\_anim::anim_single( var_0, "alpha_rope_shoot" );
|
|
var_1 = 1.0;
|
|
maps\black_ice_util::player_animated_sequence_restrictions();
|
|
var_2 = maps\_utility::spawn_anim_model( "player_rig" );
|
|
var_2.origin = level.player.origin;
|
|
var_2.angles = level.player.angles;
|
|
var_2 hide();
|
|
level.player_ascend_anim_node thread maps\_anim::anim_single_solo( var_2, "alpha_rig_ascend_aim" );
|
|
level.player playerlinktoblend( var_2, "tag_player", var_1 );
|
|
var_2 thread wait_and_unhide_ascend_aim_assets( var_1 );
|
|
maps\_utility::delaythread( 2.0, common_scripts\utility::flag_set, "flag_bravo_ascend_ready" );
|
|
thread maps\black_ice_audio::sfx_blackice_rig_start_ss();
|
|
level.player_legs = maps\_utility::spawn_anim_model( "player_legs_ascend" );
|
|
var_3["player_legs"] = level.player_legs;
|
|
var_3["ascend_rope1"] = level.ascend_rope1;
|
|
var_3["ascend_ascender"] = level.ascend_ascender;
|
|
level.ascend_rope1 show();
|
|
level notify( "notify_ascend_linesout" );
|
|
level.ascend_launcher.origin = level.player.origin;
|
|
level.ascend_launcher.angles = level.player.angles;
|
|
level.player_ascend_anim_node maps\_anim::anim_single_solo( level.ascend_launcher, "alpha_rig_ascend_aim" );
|
|
level.player unlink();
|
|
player_setup( 0.01, var_2.origin, var_2.angles );
|
|
var_2 delete();
|
|
var_3["player_rig"] = level.player_rig;
|
|
var_4 = maps\_utility::spawn_anim_model( "ascend_launcher" );
|
|
var_4.origin = level.ascend_launcher.origin;
|
|
var_4.angles = level.ascend_launcher.angles;
|
|
level.ascend_launcher delete();
|
|
level.ascend_launcher = var_4;
|
|
level.player_rig setanim( level.scr_anim["player_rig"]["alpha_rig_ascend_aim_loop"][0], 1, 0, 1 );
|
|
level.ascend_launcher setanim( level.scr_anim["ascend_launcher"]["alpha_rig_ascend_aim_loop"][0], 1, 0, 1 );
|
|
|
|
if ( !level.console && !level.player common_scripts\utility::is_player_gamepad_enabled() )
|
|
level.player enablemousesteer( 1 );
|
|
|
|
level.player_rig thread ascend_aim_logic();
|
|
maps\_anim::anim_set_rate( var_0, "alpha_rope_shoot", 0.0 );
|
|
maps\_utility::display_hint_timeout( "hint_ascend_launch" );
|
|
thread maps\black_ice::flarestack_swap();
|
|
var_5 = 2000;
|
|
var_6 = gettime();
|
|
|
|
while ( !level.player attackbuttonpressed() )
|
|
{
|
|
if ( !isdefined( level._allies[0].line_shot ) || !level._allies[0].line_shot )
|
|
{
|
|
if ( gettime() - var_6 > var_5 )
|
|
{
|
|
thread maps\black_ice_audio::sfx_blackice_rig_start3_ss();
|
|
maps\_anim::anim_set_rate( var_0, "alpha_rope_shoot", 1.0 );
|
|
level._allies[0].line_shot = 1;
|
|
}
|
|
}
|
|
else if ( !isdefined( level._allies[0].waiting ) || !level._allies[0].waiting )
|
|
{
|
|
if ( level._allies[0] maps\black_ice_util::check_anim_time( "ally1", "alpha_rope_shoot", 1.0 ) )
|
|
{
|
|
var_0["ally1_ascend_ascender"] = level.ally1_ascend_ascender;
|
|
var_0["ally2_ascend_ascender"] = level.ally2_ascend_ascender;
|
|
level.ally1_ascend_ascender show();
|
|
level.ally2_ascend_ascender show();
|
|
level.ascend_anim_node thread maps\_anim::anim_loop( var_0, "alpha_hand_rope", "stop_loop" );
|
|
level._allies[0].waiting = 1;
|
|
}
|
|
}
|
|
|
|
wait( level.timestep );
|
|
}
|
|
|
|
level notify( "ascend_rope_launched" );
|
|
common_scripts\utility::flag_set( "flag_player_line_launched" );
|
|
|
|
if ( !level.console && !level.player common_scripts\utility::is_player_gamepad_enabled() )
|
|
level.player enablemousesteer( 0 );
|
|
|
|
setthreatbias( "axis", "player", -256 );
|
|
|
|
if ( !isdefined( level._allies[0].line_shot ) || !level._allies[0].line_shot )
|
|
{
|
|
thread maps\black_ice_audio::sfx_blackice_rig_start3_ss();
|
|
maps\_anim::anim_set_rate( var_0, "alpha_rope_shoot", 1.0 );
|
|
}
|
|
|
|
level.ascend_ascender show();
|
|
level.player_ascend_anim_node notify( "stop_loop" );
|
|
level.player_rig setanim( level.scr_anim["player_rig"]["alpha_rig_ascend_aim_loop"][0], 0, 0, 1 );
|
|
level.ascend_launcher setanim( level.scr_anim["ascend_launcher"]["alpha_rig_ascend_aim_loop"][0], 0, 0, 1 );
|
|
level.player_ascend_anim_node thread maps\_anim::anim_single( var_3, "alpha_rig_ascend_linkup" );
|
|
level.player_ascend_anim_node thread maps\_anim::anim_single_solo( level.ascend_launcher, "alpha_rig_ascend_linkup" );
|
|
level notify( "notify_ascend_dialog_splitoff" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( !isdefined( level._allies[0].waiting ) || !level._allies[0].waiting )
|
|
{
|
|
if ( level._allies[0] maps\black_ice_util::check_anim_time( "ally1", "alpha_rope_shoot", 1.0 ) )
|
|
{
|
|
var_0["ally1_ascend_ascender"] = level.ally1_ascend_ascender;
|
|
var_0["ally2_ascend_ascender"] = level.ally2_ascend_ascender;
|
|
level.ally1_ascend_ascender show();
|
|
level.ally2_ascend_ascender show();
|
|
level.ascend_anim_node thread maps\_anim::anim_loop( var_0, "alpha_hand_rope", "stop_loop" );
|
|
level._allies[0].waiting = 1;
|
|
}
|
|
}
|
|
|
|
if ( !isdefined( level.player.waiting ) || !level.player.waiting )
|
|
{
|
|
if ( level.player_rig maps\black_ice_util::check_anim_time( "player_rig", "alpha_rig_ascend_linkup", 1.0 ) )
|
|
{
|
|
maps\_utility::delaythread( 5, common_scripts\utility::flag_set, "flag_ascend_start" );
|
|
level.player_ascend_anim_node thread maps\_anim::anim_loop( var_3, "alpha_rig_ascend_groundidle", "stop_loop" );
|
|
level.player.waiting = 1;
|
|
}
|
|
}
|
|
|
|
if ( isdefined( level._allies[0].waiting ) && level._allies[0].waiting && isdefined( level.player.waiting ) && level.player.waiting )
|
|
{
|
|
level.player.waiting = undefined;
|
|
break;
|
|
}
|
|
|
|
wait( level.timestep );
|
|
}
|
|
|
|
var_7 = 0.3;
|
|
level.player lerpviewangleclamp( var_7, 0, 0, 60, 60, 60, 60 );
|
|
calculate_bravo_rubberband_base();
|
|
maps\_utility::display_hint( "hint_ascend" );
|
|
|
|
while ( !level.player attackbuttonpressed() )
|
|
wait( level.timestep );
|
|
|
|
common_scripts\utility::flag_set( "flag_player_ascending" );
|
|
level.player_ascend_anim_node notify( "stop_loop" );
|
|
level.ascend_anim_node notify( "stop_loop" );
|
|
|
|
foreach ( var_9 in var_3 )
|
|
var_9 linkto( level.player_ascend_anim_node );
|
|
|
|
thread maps\black_ice_audio::sfx_rig_ascend_logic( "go" );
|
|
level.player lerpviewangleclamp( var_7, 0, 0, 0, 0, 0, 0 );
|
|
wait( var_7 );
|
|
level.player_ascend_anim_node thread maps\_anim::anim_single( var_3, "alpha_rig_ascend" );
|
|
var_11 = [];
|
|
var_11["ascend_hook_ally1"] = level.ascend_hook_ally1;
|
|
var_11["ascend_hook_ally2"] = level.ascend_hook_ally2;
|
|
var_11["ascend_hook_ally3"] = level.ascend_hook_ally3;
|
|
var_11["ascend_hook_ally4"] = level.ascend_hook_ally4;
|
|
level.player_ascend_anim_node thread maps\_anim::anim_single_solo( level.ascend_hook, "ascend_hook" );
|
|
level.ascend_anim_node thread maps\_anim::anim_single( var_11, "ascend_hook" );
|
|
level.ascend_hook show();
|
|
level.ascend_hook_ally1 show();
|
|
level.ascend_hook_ally2 show();
|
|
level.ascend_hook_ally3 show();
|
|
level.ascend_hook_ally4 show();
|
|
level.ascend_state = "ascend";
|
|
level.ascend_state_transition = 0;
|
|
level.start_ascend_time = gettime();
|
|
thread ascend_mechanics( var_3 );
|
|
level.player.ignoreme = 1;
|
|
thread alpha_ascend_rubberband( var_0 );
|
|
thread alpha_ascend_rubberband_cleanup( var_0 );
|
|
maps\_utility::delaythread( 0.05, ::post_ascend_cleanup );
|
|
var_12 = getent( "vignette_alpha_team_rigascend", "script_noteworthy" );
|
|
var_12 maps\_anim::anim_single( var_0, "alpha_rig_ascend" );
|
|
level notify( "notify_alpha_ascend_complete" );
|
|
common_scripts\utility::flag_set( "flag_alpha_ascend_complete" );
|
|
level._allies[0] stopanimscripted();
|
|
level._allies[1] stopanimscripted();
|
|
}
|
|
|
|
ascend_aim_logic()
|
|
{
|
|
level endon( "ascend_rope_launched" );
|
|
level.static_damping_factor = -7.2;
|
|
level.kinetic_damping_factor = -1.2;
|
|
level.accel_factor = 14.0;
|
|
level.max_velocity = 2.4;
|
|
self.up_velocity = 0.0;
|
|
self.down_velocity = 0.0;
|
|
self.left_velocity = 0.0;
|
|
self.right_velocity = 0.0;
|
|
self.up_weight = 0.0;
|
|
self.down_weight = 0.0;
|
|
self.left_weight = 0.0;
|
|
self.right_weight = 0.0;
|
|
self setanim( level.scr_anim["player_rig"]["rigascend_aim_left_parent"], 0, 0 );
|
|
self setanim( level.scr_anim["player_rig"]["rigascend_aim_right_parent"], 0, 0 );
|
|
self setanim( level.scr_anim["player_rig"]["rigascend_aim_up_parent"], 0, 0 );
|
|
self setanim( level.scr_anim["player_rig"]["rigascend_aim_down_parent"], 0, 0 );
|
|
level.ascend_launcher setanim( level.scr_anim["ascend_launcher"]["ascender_aim_left_parent"], 0, 0 );
|
|
level.ascend_launcher setanim( level.scr_anim["ascend_launcher"]["ascender_aim_right_parent"], 0, 0 );
|
|
level.ascend_launcher setanim( level.scr_anim["ascend_launcher"]["ascender_aim_up_parent"], 0, 0 );
|
|
level.ascend_launcher setanim( level.scr_anim["ascend_launcher"]["ascender_aim_down_parent"], 0, 0 );
|
|
thread ascend_aim_logic_cleanup();
|
|
|
|
for (;;)
|
|
{
|
|
ascend_aim_lerp_anims();
|
|
wait( level.timestep );
|
|
}
|
|
}
|
|
|
|
ascend_aim_lerp_anims()
|
|
{
|
|
level endon( "ascend_rope_launched" );
|
|
var_0 = level.player getnormalizedcameramovement();
|
|
|
|
if ( !level.console && !level.player common_scripts\utility::is_player_gamepad_enabled() )
|
|
var_0 = ( var_0[0], var_0[1] * -1, var_0[2] );
|
|
|
|
var_1 = common_scripts\utility::ter_op( var_0[0] > 0.1, 1, 0 );
|
|
var_2 = common_scripts\utility::ter_op( var_0[0] < -0.1, 1, 0 );
|
|
var_3 = common_scripts\utility::ter_op( var_0[1] < -0.1, 1, 0 );
|
|
var_4 = common_scripts\utility::ter_op( var_0[1] > 0.1, 1, 0 );
|
|
var_5 = common_scripts\utility::ter_op( self.up_weight > 0.0, 1, 0 );
|
|
var_6 = common_scripts\utility::ter_op( self.down_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 = 0.0;
|
|
var_10 = 0.0;
|
|
var_11 = 0.0;
|
|
var_12 = 0.0;
|
|
|
|
if ( var_1 )
|
|
{
|
|
if ( !var_6 )
|
|
var_9 = var_0[0];
|
|
else
|
|
var_10 = -1.0 * var_0[0];
|
|
}
|
|
else if ( var_2 )
|
|
{
|
|
if ( !var_5 )
|
|
var_10 = -1.0 * var_0[0];
|
|
else
|
|
var_9 = var_0[0];
|
|
}
|
|
|
|
if ( var_3 )
|
|
{
|
|
if ( !var_8 )
|
|
var_11 = -1.0 * var_0[1];
|
|
else
|
|
var_12 = var_0[1];
|
|
}
|
|
else if ( var_4 )
|
|
{
|
|
if ( !var_7 )
|
|
var_12 = var_0[1];
|
|
else
|
|
var_11 = -1.0 * var_0[1];
|
|
}
|
|
|
|
self.up_velocity = self.up_velocity + var_9 * level.accel_factor * level.timestep;
|
|
self.down_velocity = self.down_velocity + var_10 * level.accel_factor * level.timestep;
|
|
self.left_velocity = self.left_velocity + var_11 * level.accel_factor * level.timestep;
|
|
self.right_velocity = self.right_velocity + var_12 * level.accel_factor * level.timestep;
|
|
self.up_velocity = common_scripts\utility::ter_op( self.up_velocity > level.max_velocity, level.max_velocity, self.up_velocity );
|
|
self.up_velocity = common_scripts\utility::ter_op( self.up_velocity < -1 * level.max_velocity, -1 * level.max_velocity, self.up_velocity );
|
|
self.down_velocity = common_scripts\utility::ter_op( self.down_velocity > level.max_velocity, level.max_velocity, self.down_velocity );
|
|
self.down_velocity = common_scripts\utility::ter_op( self.down_velocity < -1 * level.max_velocity, -1 * level.max_velocity, self.down_velocity );
|
|
self.left_velocity = common_scripts\utility::ter_op( self.left_velocity > level.max_velocity, level.max_velocity, self.left_velocity );
|
|
self.left_velocity = common_scripts\utility::ter_op( self.left_velocity < -1 * level.max_velocity, -1 * level.max_velocity, self.left_velocity );
|
|
self.right_velocity = common_scripts\utility::ter_op( self.right_velocity > level.max_velocity, level.max_velocity, self.right_velocity );
|
|
self.right_velocity = common_scripts\utility::ter_op( self.right_velocity < -1 * level.max_velocity, -1 * level.max_velocity, self.right_velocity );
|
|
|
|
if ( !( var_1 || var_2 || var_3 || var_4 ) )
|
|
var_13 = level.static_damping_factor;
|
|
else
|
|
var_13 = level.kinetic_damping_factor;
|
|
|
|
self.up_velocity = self.up_velocity + var_13 * self.up_velocity * level.timestep;
|
|
self.down_velocity = self.down_velocity + var_13 * self.down_velocity * level.timestep;
|
|
self.left_velocity = self.left_velocity + var_13 * self.left_velocity * level.timestep;
|
|
self.right_velocity = self.right_velocity + var_13 * self.right_velocity * level.timestep;
|
|
self.up_weight = self.up_weight + self.up_velocity * level.timestep;
|
|
self.down_weight = self.down_weight + self.down_velocity * level.timestep;
|
|
self.left_weight = self.left_weight + self.left_velocity * level.timestep;
|
|
self.right_weight = self.right_weight + self.right_velocity * level.timestep;
|
|
|
|
if ( self.up_weight < 0.0 )
|
|
{
|
|
self.down_weight = -1.0 * self.up_weight;
|
|
self.up_weight = 0.0;
|
|
self.down_velocity = -1.0 * self.up_velocity;
|
|
self.up_velocity = 0.0;
|
|
}
|
|
else if ( self.down_weight < 0.0 )
|
|
{
|
|
self.up_weight = -1.0 * self.down_weight;
|
|
self.down_weight = 0.0;
|
|
self.up_velocity = -1.0 * self.down_velocity;
|
|
self.down_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;
|
|
}
|
|
|
|
self.left_weight = common_scripts\utility::ter_op( self.left_weight > 1.0, 1.0, self.left_weight );
|
|
self.right_weight = common_scripts\utility::ter_op( self.right_weight > 1.0, 1.0, self.right_weight );
|
|
self.up_weight = common_scripts\utility::ter_op( self.up_weight > 1.0, 1.0, self.up_weight );
|
|
self.down_weight = common_scripts\utility::ter_op( self.down_weight > 1.0, 1.0, self.down_weight );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_left"], 1, 0 );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_right"], 1, 0 );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_up"], 1, 0 );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_down"], 1, 0 );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_left_parent"], self.left_weight, level.timestep );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_right_parent"], self.right_weight, level.timestep );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_up_parent"], self.up_weight, level.timestep );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_down_parent"], self.down_weight, level.timestep );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_left"], 1, 0 );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_right"], 1, 0 );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_up"], 1, 0 );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_down"], 1, 0 );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_left_parent"], self.left_weight, level.timestep );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_right_parent"], self.right_weight, level.timestep );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_up_parent"], self.up_weight, level.timestep );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_down_parent"], self.down_weight, level.timestep );
|
|
}
|
|
|
|
ascend_aim_logic_cleanup()
|
|
{
|
|
level waittill( "ascend_rope_launched" );
|
|
thread maps\black_ice_audio::sfx_blackice_rig_start2_ss();
|
|
var_0 = 0.2;
|
|
var_1 = gettime();
|
|
level.player lerpviewangleclamp( var_0, 0, 0, 0, 0, 0, 0 );
|
|
var_2 = self.left_weight / ( var_0 / level.timestep );
|
|
var_3 = self.right_weight / ( var_0 / level.timestep );
|
|
var_4 = self.up_weight / ( var_0 / level.timestep );
|
|
var_5 = self.down_weight / ( var_0 / level.timestep );
|
|
|
|
while ( gettime() - var_1 < var_0 * 1000 )
|
|
{
|
|
self.left_weight = self.left_weight - var_2;
|
|
self.right_weight = self.right_weight - var_3;
|
|
self.up_weight = self.up_weight - var_4;
|
|
self.down_weight = self.down_weight - var_5;
|
|
self.left_weight = common_scripts\utility::ter_op( self.left_weight < 0.0, 0.0, self.left_weight );
|
|
self.right_weight = common_scripts\utility::ter_op( self.right_weight < 0.0, 0.0, self.right_weight );
|
|
self.up_weight = common_scripts\utility::ter_op( self.up_weight < 0.0, 0.0, self.up_weight );
|
|
self.down_weight = common_scripts\utility::ter_op( self.down_weight < 0.0, 0.0, self.down_weight );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_left"], 1, 0 );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_right"], 1, 0 );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_up"], 1, 0 );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_down"], 1, 0 );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_left_parent"], self.left_weight, level.timestep );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_right_parent"], self.right_weight, level.timestep );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_up_parent"], self.up_weight, level.timestep );
|
|
self setanimlimited( level.scr_anim["player_rig"]["rigascend_aim_down_parent"], self.down_weight, level.timestep );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_left"], 1, 0 );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_right"], 1, 0 );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_up"], 1, 0 );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_down"], 1, 0 );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_left_parent"], self.left_weight, level.timestep );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_right_parent"], self.right_weight, level.timestep );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_up_parent"], self.up_weight, level.timestep );
|
|
level.ascend_launcher setanimlimited( level.scr_anim["ascend_launcher"]["ascender_aim_down_parent"], self.down_weight, level.timestep );
|
|
wait( level.timestep );
|
|
}
|
|
}
|
|
|
|
wait_and_unhide_ascend_aim_assets( var_0 )
|
|
{
|
|
wait( var_0 );
|
|
self show();
|
|
level.ascend_launcher show();
|
|
}
|
|
|
|
player_ramp_up_wind()
|
|
{
|
|
level endon( "notify_end_ascend_pendulum" );
|
|
var_0 = 0.0;
|
|
var_1 = 0.0;
|
|
var_2 = 0.0;
|
|
var_2 = level.player_rig getanimtime( level.scr_anim["player_rig"]["alpha_rig_ascend"] );
|
|
var_3 = 0.0;
|
|
var_4 = [];
|
|
var_4 = getnotetracktimes( level.scr_anim["player_rig"]["alpha_rig_ascend"], "max_wind" );
|
|
var_3 = var_4[0];
|
|
var_5 = 0.2;
|
|
var_6 = 1.0;
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = level.player_rig getanimtime( level.scr_anim["player_rig"]["alpha_rig_ascend"] );
|
|
var_0 = maps\black_ice_util::normalize_value( var_2, var_3, var_1 );
|
|
var_0 = maps\black_ice_util::factor_value_min_max( var_5, var_6, var_0 );
|
|
level.player_rig setanimlimited( level.scr_anim["player_rig"]["rigascend_noise_parent"], var_0, 0.1 );
|
|
wait( level.timestep );
|
|
}
|
|
}
|
|
|
|
alpha_ascend_rubberband( var_0 )
|
|
{
|
|
level endon( "notify_ascend_rubberband_alpha_stop" );
|
|
level waittill( "notify_ascend_rubberband_alpha_start" );
|
|
var_1 = 0.1;
|
|
var_2 = level.ascend_anims_rate;
|
|
var_3 = 0.1;
|
|
|
|
for (;;)
|
|
{
|
|
var_4 = maps\black_ice_util::factor_value_min_max( var_1, var_2, level.ascend_current_rate );
|
|
level.alpha_curr_rate = level.alpha_curr_rate + ( var_4 - level.alpha_curr_rate ) * var_3;
|
|
maps\_anim::anim_set_rate( var_0, "alpha_rig_ascend", level.alpha_curr_rate );
|
|
wait( level.timestep );
|
|
}
|
|
}
|
|
|
|
alpha_ascend_rubberband_cleanup( var_0 )
|
|
{
|
|
level endon( "notify_alpha_ascend_complete" );
|
|
level waittill( "notify_ascend_rubberband_alpha_stop" );
|
|
var_1 = 0.1;
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.alpha_curr_rate < level.ascend_anims_rate )
|
|
{
|
|
level.alpha_curr_rate = level.alpha_curr_rate + ( level.ascend_anims_rate - level.alpha_curr_rate ) * var_1;
|
|
maps\_anim::anim_set_rate( var_0, "alpha_rig_ascend", level.alpha_curr_rate );
|
|
}
|
|
|
|
wait( level.timestep );
|
|
}
|
|
}
|
|
|
|
bravo_ascend()
|
|
{
|
|
var_0 = [];
|
|
var_0["bravo1"] = level._bravo[0];
|
|
var_0["bravo2"] = level._bravo[1];
|
|
var_0["bravo1_ascend_launcher"] = level.bravo1_ascend_launcher;
|
|
var_0["bravo2_ascend_launcher"] = level.bravo2_ascend_launcher;
|
|
|
|
if ( isdefined( level.launchers_attached ) && level.launchers_attached )
|
|
{
|
|
level._bravo[0] detach( level.scr_model["ascend_launcher_non_anim"], "TAG_STOWED_BACK" );
|
|
level._bravo[1] detach( level.scr_model["ascend_launcher_non_anim"], "TAG_STOWED_BACK" );
|
|
level.launchers_attached = 0;
|
|
}
|
|
|
|
if ( isdefined( level.ascend_waiting ) && level.ascend_waiting )
|
|
level.bravo_ascend_anim_node thread maps\_anim::anim_loop( var_0, "ascend_waiting", "stop_loop" );
|
|
|
|
while ( !common_scripts\utility::flag( "flag_ascend_triggered" ) )
|
|
wait( level.timestep );
|
|
|
|
var_1 = gettime() / 1000.0;
|
|
|
|
if ( !common_scripts\utility::flag( "flag_ascend_ready_bravo_0" ) || !common_scripts\utility::flag( "flag_ascend_ready_bravo_1" ) )
|
|
common_scripts\utility::flag_wait( "flag_bravo_ascend_ready" );
|
|
|
|
var_1 = clamp( gettime() / 1000.0 - var_1, 0.0, 3.0 );
|
|
level.bravo_ascend_anim_node notify( "stop_loop" );
|
|
var_0["bravo_ascend_rope1"] = level.bravo_ascend_rope1;
|
|
var_0["bravo_ascend_rope2"] = level.bravo_ascend_rope2;
|
|
level.bravo_ascend_rope1 show();
|
|
level.bravo_ascend_rope2 show();
|
|
var_2 = getanimlength( var_0["bravo1"] maps\_utility::getanim( "bravo_rope_shoot" ) );
|
|
var_3 = var_2 - var_1;
|
|
|
|
foreach ( var_5 in var_0 )
|
|
{
|
|
level.bravo_ascend_anim_node thread maps\_anim::anim_single_solo( var_5, "bravo_rope_shoot" );
|
|
var_5 setanimtime( var_5 maps\_utility::getanim( "bravo_rope_shoot" ), var_1 / var_2 );
|
|
}
|
|
|
|
wait( var_3 );
|
|
level.bravo_ascend_anim_node thread maps\_anim::anim_loop( var_0, "bravo_rope_idle", "stop_loop" );
|
|
|
|
while ( !common_scripts\utility::flag( "flag_ascend_bravo_go" ) )
|
|
wait( level.timestep );
|
|
|
|
level.bravo_ascend_anim_node notify( "stop_loop" );
|
|
common_scripts\utility::array_thread( level._bravo, maps\_utility::set_ignoreme, 1 );
|
|
common_scripts\utility::array_thread( level._bravo, maps\_utility::disable_surprise );
|
|
thread play_falling_enemy();
|
|
var_0["bravo1_ascend_ascender"] = level.bravo1_ascend_ascender;
|
|
var_0["bravo2_ascend_ascender"] = level.bravo2_ascend_ascender;
|
|
level.bravo1_ascend_ascender show();
|
|
level.bravo2_ascend_ascender show();
|
|
thread bravo_ascend_rubberband( var_0 );
|
|
thread bravo_ascend_rubberband_cleanup( var_0 );
|
|
level.bravo_ascend_anim_node maps\_anim::anim_single( var_0, "bravo_rig_ascend" );
|
|
level notify( "notify_bravo_ascend_complete" );
|
|
common_scripts\utility::flag_set( "flag_bravo_ascend_complete" );
|
|
}
|
|
|
|
calculate_bravo_rubberband_base()
|
|
{
|
|
level.bravo_ascend_rubberband_base = level._bravo[1] getanimtime( level.scr_anim["bravo2"]["bravo_rig_ascend"] );
|
|
level notify( "notify_ascend_rubberband_bravo_start" );
|
|
}
|
|
|
|
bravo_ascend_rubberband( var_0 )
|
|
{
|
|
level endon( "notify_ascend_rubberband_bravo_stop" );
|
|
level waittill( "notify_ascend_rubberband_bravo_start" );
|
|
var_1 = 0.75;
|
|
var_2 = level.ascend_anims_rate;
|
|
var_3 = 0.0;
|
|
var_4 = 0.06;
|
|
var_5 = 0.1;
|
|
|
|
for (;;)
|
|
{
|
|
var_6 = level._bravo[1] getanimtime( level.scr_anim["bravo2"]["bravo_rig_ascend"] );
|
|
var_7 = 0;
|
|
|
|
if ( common_scripts\utility::flag( "flag_player_ascending" ) )
|
|
var_7 = level.player_rig getanimtime( level.scr_anim["player_rig"]["alpha_rig_ascend"] );
|
|
|
|
var_8 = var_6 - var_7 - level.bravo_ascend_rubberband_base;
|
|
var_9 = maps\black_ice_util::normalize_value( var_3, var_4, var_8 );
|
|
var_10 = maps\black_ice_util::factor_value_min_max( var_1, var_2, 1.0 - var_9 );
|
|
level.bravo_curr_rate = level.bravo_curr_rate + ( var_10 - level.bravo_curr_rate ) * var_5;
|
|
maps\_anim::anim_set_rate( var_0, "bravo_rig_ascend", level.bravo_curr_rate );
|
|
maps\_anim::anim_set_rate_single( level.ascend_enemy, "alpha_rig_ascend", level.bravo_curr_rate );
|
|
wait( level.timestep );
|
|
}
|
|
}
|
|
|
|
bravo_ascend_rubberband_cleanup( var_0 )
|
|
{
|
|
level endon( "notify_bravo_ascend_complete" );
|
|
level waittill( "notify_ascend_rubberband_bravo_stop" );
|
|
var_1 = 0.1;
|
|
|
|
for (;;)
|
|
{
|
|
level.bravo_curr_rate = level.bravo_curr_rate + ( level.ascend_anims_rate - level.bravo_curr_rate ) * var_1;
|
|
maps\_anim::anim_set_rate( var_0, "bravo_rig_ascend", level.bravo_curr_rate );
|
|
|
|
if ( isdefined( level.ascend_enemy ) )
|
|
maps\_anim::anim_set_rate_single( level.ascend_enemy, "alpha_rig_ascend", level.bravo_curr_rate );
|
|
|
|
wait( level.timestep );
|
|
}
|
|
}
|
|
|
|
ascend_mechanics( var_0 )
|
|
{
|
|
thread ascend_pendulum( level.player_ascend_anim_node, 1.25, 0.0, 1.5, undefined, "notify_end_ascend_pendulum" );
|
|
var_1 = 0.0;
|
|
var_2 = 0.1;
|
|
|
|
while ( !common_scripts\utility::flag( "flag_ascend_end" ) )
|
|
{
|
|
if ( level.allow_player_ascend_move == 0 )
|
|
{
|
|
maps\_anim::anim_set_rate( var_0, "alpha_rig_ascend", 1.0 );
|
|
level.ascend_current_rate = 1.0;
|
|
var_1 = 1.0;
|
|
wait( level.timestep );
|
|
continue;
|
|
}
|
|
|
|
switch ( level.ascend_state )
|
|
{
|
|
case "idle":
|
|
if ( level.ascend_state_transition )
|
|
ascend_idle_state_transition();
|
|
|
|
ascend_idle_state();
|
|
break;
|
|
case "ascend":
|
|
if ( level.ascend_state_transition )
|
|
ascend_ascend_state_transition();
|
|
|
|
ascend_ascend_state();
|
|
break;
|
|
case "stop":
|
|
if ( level.ascend_state_transition )
|
|
ascend_stop_state_transition();
|
|
|
|
ascend_stop_state();
|
|
break;
|
|
}
|
|
|
|
var_1 = var_1 + ( level.ascend_target_rate - var_1 ) * var_2;
|
|
maps\_anim::anim_set_rate( var_0, "alpha_rig_ascend", var_1 );
|
|
level.ascend_current_rate = var_1;
|
|
wait( level.timestep );
|
|
}
|
|
}
|
|
|
|
ascend_idle_state_transition()
|
|
{
|
|
level.ascend_state_transition = 0;
|
|
level.ascend_target_rate = 0.0;
|
|
}
|
|
|
|
ascend_idle_state()
|
|
{
|
|
if ( level.player attackbuttonpressed() )
|
|
{
|
|
level.ascend_state = "ascend";
|
|
level.ascend_state_transition = 1;
|
|
}
|
|
}
|
|
|
|
ascend_ascend_state_transition()
|
|
{
|
|
level.ascend_state_transition = 0;
|
|
level.start_ascend_time = gettime();
|
|
level.ascend_target_rate = level.ascend_anims_rate;
|
|
common_scripts\utility::flag_set( "flag_player_ascending" );
|
|
level.player_rig setanimrestart( level.scr_anim["player_rig"]["rig_ascend_start"] );
|
|
level.player_legs setanimrestart( level.scr_anim["player_legs_ascend"]["rig_ascend_start"] );
|
|
thread maps\black_ice_audio::sfx_rig_ascend_logic( "go" );
|
|
}
|
|
|
|
ascend_ascend_state()
|
|
{
|
|
var_0 = 500;
|
|
|
|
if ( gettime() - level.start_ascend_time > var_0 )
|
|
{
|
|
if ( !level.player attackbuttonpressed() )
|
|
{
|
|
level.ascend_state = "stop";
|
|
level.ascend_state_transition = 1;
|
|
}
|
|
}
|
|
|
|
if ( !common_scripts\utility::flag( "flag_bravo_ascend_complete" ) )
|
|
{
|
|
var_1 = 3.0;
|
|
level.ascend_target_rate = level.ascend_anims_rate + ( level.ascend_anims_rate - level.bravo_curr_rate ) / var_1;
|
|
}
|
|
else
|
|
level.ascend_target_rate = level.ascend_anims_rate;
|
|
}
|
|
|
|
ascend_stop_state_transition()
|
|
{
|
|
level.ascend_state_transition = 0;
|
|
level.stop_ascend_time = gettime();
|
|
level.ascend_target_rate = 0.0;
|
|
common_scripts\utility::flag_clear( "flag_player_ascending" );
|
|
level.player_rig setanimrestart( level.scr_anim["player_rig"]["rig_ascend_stop"] );
|
|
level.player_legs setanimrestart( level.scr_anim["player_legs_ascend"]["rig_ascend_stop"] );
|
|
thread maps\black_ice_audio::sfx_rig_ascend_logic( "stop" );
|
|
}
|
|
|
|
ascend_stop_state()
|
|
{
|
|
var_0 = 500;
|
|
|
|
if ( gettime() - level.stop_ascend_time > var_0 )
|
|
{
|
|
level.ascend_state = "idle";
|
|
level.ascend_state_transition = 1;
|
|
}
|
|
}
|
|
|
|
ascend_pendulum( var_0, var_1, var_2, var_3, var_4, var_5 )
|
|
{
|
|
if ( isdefined( var_5 ) )
|
|
level endon( var_5 );
|
|
|
|
var_6 = var_0.angles[0];
|
|
var_7 = var_0.angles[1];
|
|
var_8 = var_0.angles[2];
|
|
var_9 = 0.0;
|
|
var_10 = 0.0;
|
|
var_11 = 0.0;
|
|
var_12 = 0.015;
|
|
var_13 = 385.73;
|
|
var_14 = 1240.0;
|
|
var_15 = 300.0;
|
|
var_16 = 100.0;
|
|
var_17 = var_16 / 360.0;
|
|
var_18 = 0.0;
|
|
var_19 = var_15;
|
|
var_20 = 0.0;
|
|
var_21 = 0.0;
|
|
var_22 = 0.0;
|
|
|
|
if ( isdefined( var_4 ) && var_4 > 0.0 )
|
|
{
|
|
var_19 = var_4;
|
|
var_20 = sqrt( var_13 / var_19 );
|
|
var_21 = var_17 * var_20;
|
|
var_22 = 1.0 / var_21;
|
|
}
|
|
|
|
while ( !common_scripts\utility::flag_exist( "flag_common_breach" ) || !common_scripts\utility::flag( "flag_common_breach" ) )
|
|
{
|
|
if ( !isdefined( var_4 ) )
|
|
{
|
|
var_23 = level.player_rig getanimtime( level.scr_anim["player_rig"]["alpha_rig_ascend"] );
|
|
var_19 = ( 1.0 - var_23 ) * var_14;
|
|
|
|
if ( var_19 < var_15 )
|
|
var_19 = var_15;
|
|
|
|
var_20 = sqrt( var_13 / var_19 );
|
|
var_21 = var_17 * var_20;
|
|
var_22 = 1.0 / var_21;
|
|
}
|
|
|
|
if ( var_18 > var_22 )
|
|
var_18 = var_18 - var_22;
|
|
|
|
var_24 = var_20 * var_18 * var_16;
|
|
var_9 = var_9 + ( var_1 - var_9 ) * var_12;
|
|
var_25 = var_9 * sin( var_24 + 90 );
|
|
var_10 = var_10 + ( var_2 - var_10 ) * var_12;
|
|
var_26 = var_10 * sin( var_24 + 90 );
|
|
var_11 = var_11 + ( var_3 - var_11 ) * var_12;
|
|
var_27 = var_11 * sin( var_24 );
|
|
var_0.angles = ( var_6 + var_25, var_7 + var_26, var_8 + var_27 );
|
|
var_18 = var_18 + level.timestep;
|
|
wait( level.timestep );
|
|
}
|
|
|
|
var_0 notify( "notify_pendular_motion_complete" );
|
|
}
|
|
|
|
hanging_cargo_motion()
|
|
{
|
|
var_0 = 3;
|
|
thread maps\black_ice_audio::sfx_cargo_sway();
|
|
var_1 = spawn( "script_model", ( -1449, 3698, 1490 ) );
|
|
|
|
for ( var_2 = 0; var_2 < var_0; var_2++ )
|
|
{
|
|
var_3 = getent( "hanging_cargo_node_" + var_2, "script_noteworthy" );
|
|
var_4 = getentarray( "hanging_cargo_" + var_2, "targetname" );
|
|
var_5 = 0.0;
|
|
|
|
if ( var_4.size )
|
|
{
|
|
var_6 = 0.0;
|
|
|
|
for ( var_7 = 0; var_7 < var_4.size; var_7++ )
|
|
{
|
|
var_4[var_7] linkto( var_3 );
|
|
|
|
if ( isdefined( var_4[var_7].target ) )
|
|
{
|
|
var_8 = getent( var_4[var_7].target, "targetname" );
|
|
var_8 linkto( var_4[var_7] );
|
|
}
|
|
|
|
var_6 = var_6 + var_4[var_7].origin[2];
|
|
|
|
if ( var_2 == 2 )
|
|
var_4[var_7] retargetscriptmodellighting( var_1 );
|
|
}
|
|
|
|
var_6 = var_6 / var_4.size;
|
|
var_9 = ( var_4[0].origin[0], var_4[0].origin[1], var_6 );
|
|
var_5 = length( var_3.origin - var_9 );
|
|
}
|
|
|
|
thread ascend_pendulum( var_3, randomfloatrange( 0.975, 1.275 ), randomfloatrange( 4.0, 6.0 ), randomfloatrange( 0.3, 0.6 ), var_5 );
|
|
thread hanging_cargo_cleanup( var_3, var_4 );
|
|
|
|
if ( isdefined( var_3.targetname ) && var_3.targetname == "hanging_cargo_ascend" )
|
|
thread hanging_cargo_ascension( var_3 );
|
|
}
|
|
}
|
|
|
|
hanging_cargo_ascension( var_0 )
|
|
{
|
|
common_scripts\utility::flag_wait( "flag_mid_start" );
|
|
var_1 = var_0.origin + ( 0, 0, 1000 );
|
|
var_2 = 30.0;
|
|
var_0 moveto( var_1, var_2, 1.0, 0.0 );
|
|
thread maps\black_ice_audio::sfx_cargo_lift( var_0 );
|
|
wait( var_2 / 2.0 );
|
|
thread maps\black_ice_audio::sfx_cargo_hatch();
|
|
var_3 = 5.0;
|
|
var_4 = getent( "left_cargo_elevator_door_1", "targetname" );
|
|
var_5 = getent( "left_cargo_elevator_door_2", "targetname" );
|
|
var_4 moveto( var_4.origin + ( 0, 226, 0 ), var_3, 0.0, 0.0 );
|
|
var_5 moveto( var_5.origin + ( 0, -226, 0 ), var_3, 0.0, 0.0 );
|
|
}
|
|
|
|
hanging_cargo_cleanup( var_0, var_1 )
|
|
{
|
|
var_0 waittill( "notify_pendular_motion_complete" );
|
|
|
|
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
|
|
var_1[var_2] delete();
|
|
|
|
var_0 delete();
|
|
}
|
|
|
|
post_ascend_cleanup()
|
|
{
|
|
while ( !level.player_rig maps\black_ice_util::check_anim_time( "player_rig", "alpha_rig_ascend", 1.0 ) )
|
|
wait( level.timestep );
|
|
|
|
while ( !common_scripts\utility::flag( "flag_alpha_ascend_complete" ) || !common_scripts\utility::flag( "flag_bravo_ascend_complete" ) )
|
|
wait( level.timestep );
|
|
|
|
common_scripts\utility::flag_set( "sfx_ascend_done" );
|
|
common_scripts\utility::flag_set( "flag_ascend_end" );
|
|
maps\_utility::stop_exploder( "basecamp_snow" );
|
|
maps\black_ice_util::player_animated_sequence_cleanup();
|
|
level.ascend_anim_node = undefined;
|
|
level.bravo_ascend_anim_node = undefined;
|
|
level.player_ascend_anim_node = undefined;
|
|
level.player_legs delete();
|
|
level.player_legs = undefined;
|
|
level.allow_player_ascend_move = undefined;
|
|
level.ascend_current_rate = undefined;
|
|
level.bravo_curr_rate = undefined;
|
|
level.alpha_curr_rate = undefined;
|
|
}
|
|
|
|
hint_ascend_init_func()
|
|
{
|
|
return !common_scripts\utility::flag( "hint_ascend_init" );
|
|
}
|
|
|
|
hint_ascend_func()
|
|
{
|
|
return common_scripts\utility::ter_op( level.player attackbuttonpressed(), 1, 0 );
|
|
}
|
|
|
|
notetrack_fire_shake( var_0 )
|
|
{
|
|
earthquake( 0.4, 0.5, level.player.origin, 2048 );
|
|
level.player playrumbleonentity( "pistol_fire" );
|
|
}
|
|
|
|
notetrack_takeoff( var_0 )
|
|
{
|
|
earthquake( 0.3, 1.0, level.player.origin, 2048 );
|
|
level.player playrumbleonentity( "grenade_rumble" );
|
|
}
|
|
|
|
notetrack_shake_start( var_0 )
|
|
{
|
|
|
|
}
|
|
|
|
notetrack_shake_stop( var_0 )
|
|
{
|
|
|
|
}
|
|
|
|
ascend_mblur_changes()
|
|
{
|
|
common_scripts\utility::flag_wait( "flag_player_ascending" );
|
|
|
|
if ( maps\_utility::is_gen4() )
|
|
{
|
|
setsaveddvar( "r_mbEnable", 0 );
|
|
setsaveddvar( "r_mbCameraRotationInfluence", 0.07 );
|
|
setsaveddvar( "r_mbCameraTranslationInfluence", 0.15 );
|
|
setsaveddvar( "r_mbModelVelocityScalar", 0.09 );
|
|
setsaveddvar( "r_mbStaticVelocityScalar", 0.03 );
|
|
setsaveddvar( "r_mbViewModelEnable", 1 );
|
|
setsaveddvar( "r_mbViewModelVelocityScalar", 0.004 );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "flag_ascend_end" );
|
|
|
|
if ( maps\_utility::is_gen4() )
|
|
maps\black_ice::set_default_mb_values();
|
|
}
|