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

892 lines
30 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
section_flag_inits()
{
common_scripts\utility::flag_init( "player_water_breach" );
common_scripts\utility::flag_init( "flag_camp_move_allies" );
common_scripts\utility::flag_init( "flag_camp_front_retreat" );
common_scripts\utility::flag_init( "flag_camp_mid_retreat" );
common_scripts\utility::flag_init( "flag_camp_building_open" );
common_scripts\utility::flag_init( "flag_bc_porch_runner_done" );
common_scripts\utility::flag_init( "flag_camp_helo_retreat" );
common_scripts\utility::flag_init( "flag_camp_helo_spawn" );
common_scripts\utility::flag_init( "flag_camp_helo_ready" );
common_scripts\utility::flag_init( "flag_camp_helo_unload" );
common_scripts\utility::flag_init( "flag_camp_back_retreat" );
common_scripts\utility::flag_init( "flag_camp_back_lmg_retreat" );
common_scripts\utility::flag_init( "flag_camp_street_retreat" );
common_scripts\utility::flag_init( "bc_flag_alarm_start" );
common_scripts\utility::flag_init( "flag_camp_cleared" );
common_scripts\utility::flag_init( "flag_allies_reached_ascend" );
common_scripts\utility::flag_init( "bc_flag_spots_close" );
common_scripts\utility::flag_init( "bc_flag_spots_off" );
common_scripts\utility::flag_init( "flag_ascend_ready_alpha_0" );
common_scripts\utility::flag_init( "flag_ascend_ready_alpha_1" );
common_scripts\utility::flag_init( "flag_ascend_ready_bravo_0" );
common_scripts\utility::flag_init( "flag_ascend_ready_bravo_1" );
common_scripts\utility::flag_init( "flag_bravo_ascend_ready" );
common_scripts\utility::flag_init( "flag_vision_campinteriors" );
}
section_post_inits()
{
common_scripts\utility::array_call( getentarray( "opt_hide_camp", "script_noteworthy" ), ::hide );
}
section_precache()
{
}
start()
{
iprintln( "Camp" );
maps\black_ice_util::player_start( "player_start_camp" );
thread basecamp_dof();
if ( !isdefined( level._bravo ) || level._bravo.size < 2 )
maps\black_ice_util::spawn_bravo();
thread maps\black_ice_anim::swim_truck_surface_anim();
level.breach_anim_node = common_scripts\utility::getstruct( "breach_anim_node", "script_noteworthy" );
thread maps\black_ice_swim::create_persistent_ice_breach_props( 1 );
thread maps\black_ice_swim::handle_ice_plugs();
level.const_expected_num_swim_allies = 2;
level._allies_swim = maps\black_ice_util::spawn_allies_swim();
common_scripts\utility::array_call( level._allies_swim, ::attach, level.scr_model["ascend_launcher_non_anim"], "TAG_STOWED_BACK" );
level.allies_breach_anim_node = common_scripts\utility::getstruct( "vignette_introbreach_allies", "script_noteworthy" );
for ( var_0 = 0; var_0 < level._allies_swim.size; var_0++ )
{
level._allies_swim[var_0].animname = "scuba_ally";
level.allies_breach_anim_node thread maps\_anim::anim_loop_solo( level._allies_swim[var_0], "surface_ally" + ( var_0 + 1 ) + "_idle" );
}
level.player.hud_scubamask = level.player maps\_hud_util::create_client_overlay( "scubamask_overlay_delta", 1, level.player );
level.player.hud_scubamask.foreground = 0;
level.player.hud_scubamask.sort = -99;
level.player.hud_scubamask.enablehudlighting = 1;
common_scripts\utility::flag_set( "flag_player_breaching" );
level.player allowswim( 1 );
thread maps\black_ice_swim::black_fade( 0.0, 0.4, 0.0 );
maps\black_ice_swim::surface_breach();
thread maps\black_ice_swim::player_post_swim();
}
main()
{
common_scripts\utility::array_call( getentarray( "opt_hide_camp", "script_noteworthy" ), ::show );
level.player setthreatbiasgroup( "player" );
setup_spawners();
thread maps\black_ice_audio::sfx_distant_oil_rig();
thread camp_primary_light_switch();
thread bc_intro();
thread ascend_snow_fx();
level bc_front();
level bc_mid();
level bc_back();
level bc_helo_reinforce();
level bc_street();
level bc_ascend();
level bc_end();
}
ascend_snow_fx()
{
level endon( "notify_start_catwalks_snow" );
var_0 = 0;
for (;;)
{
if ( common_scripts\utility::flag( "flag_ascend_snow_fx" ) )
{
if ( var_0 == 0 )
{
common_scripts\utility::exploder( "ascend_snow_huge" );
var_0 = 1;
}
}
else if ( var_0 == 1 )
{
maps\_utility::stop_exploder( "ascend_snow_huge" );
var_0 = 0;
}
wait( level.timestep );
}
}
bc_intro()
{
thread heli_spawn_and_path( "bc_veh_intro_helo" );
maps\_utility::array_spawn_targetname( "bc_opfor_crawl", 1, 1 );
maps\_utility::autosave_by_name( "ice_surface" );
common_scripts\utility::flag_wait( "flag_player_breaching" );
level._allies[0] thread maps\_utility::set_force_color( "r" );
level._allies[1] thread maps\_utility::set_force_color( "b" );
level._bravo[0] thread maps\_utility::set_force_color( "b" );
level._bravo[1] thread maps\_utility::set_force_color( "r" );
common_scripts\utility::flag_wait( "player_water_breach" );
maps\_utility::autosave_by_name( "camp_start" );
thread bc_amb_fx();
thread bc_snow_tweaks();
thread maps\black_ice_audio::sfx_truck_sinking();
level waittill( "bc_player_ready" );
common_scripts\utility::flag_wait_or_timeout( "flag_camp_move_allies", 3 );
level._allies[0] maps\_utility::ent_flag_set( "flag_camp_move_ally" );
level._bravo[0] maps\_utility::delaythread( 0.5, maps\_utility::ent_flag_set, "flag_camp_move_ally" );
level._allies[1] maps\_utility::delaythread( 5.75, maps\_utility::ent_flag_set, "flag_camp_move_ally" );
level._bravo[1] maps\_utility::delaythread( 6.25, maps\_utility::ent_flag_set, "flag_camp_move_ally" );
}
bc_snow_tweaks()
{
setsaveddvar( "r_snowAmbientColor", ( 0.06, 0.08, 0.17 ) );
}
bc_amb_fx()
{
common_scripts\utility::exploder( "basecamp_snow" );
common_scripts\utility::exploder( "basecamp_lights" );
thread maps\black_ice_fx::coldbreathfx();
}
bc_front()
{
common_scripts\utility::flag_wait( "player_water_breach" );
maps\_utility::array_spawn_targetname( "bc_opfor_run" );
maps\_utility::delaythread( 1.5, maps\_utility::array_spawn_targetname, "bc_opfor_runback" );
level waittill( "bc_player_ready" );
thread bc_front_fic();
maps\black_ice_util::delay_retreat( "bc_opfor", 90, 2, "flag_camp_front_retreat", "bc_color_mid", 1, "bc_start_mid_nag" );
}
bc_mid()
{
maps\_utility::autosave_by_name( "camp_mid" );
thread bc_mid_fic();
common_scripts\utility::flag_wait( "flag_camp_building_open" );
setthreatbias( "axis", "player", 250 );
thread bc_rolling_door_open();
var_0 = getent( "trig_left_flank", "script_noteworthy" );
var_0 thread left_flank_spawn_proc();
wait 1;
maps\black_ice_util::delay_retreat( "bc_opfor", 180, 4, "flag_camp_mid_retreat", "bc_color_back", 1 );
}
bc_back()
{
thread bc_back_fic();
var_0 = getentarray( "bc_opfor_back", "targetname" );
maps\_utility::flood_spawn( var_0 );
maps\_utility::delaythread( 2.0, maps\_spawner::killspawner, 66 );
wait 1;
maps\black_ice_util::delay_retreat( "bc_opfor", 180, 5, "flag_camp_helo_retreat" );
}
bc_helo_reinforce()
{
thread bc_helo_fic();
var_0 = getent( "bc_veh_reinforce_helo", "targetname" );
level.op_helo = var_0 maps\_utility::spawn_vehicle();
level.op_helo.animname = "bc_reinforce_helo";
var_1 = maps\_utility::array_spawn( getentarray( "bc_opfor_helo_rein", "targetname" ), 1 );
var_2 = common_scripts\utility::getstruct( "vignette_basecamp_heli", "script_noteworthy" );
level.op_helo thread maps\black_ice_audio::sfx_blackice_helo_flyby();
var_2 maps\_anim::anim_first_frame_solo( level.op_helo, "arrive" );
foreach ( var_4 in var_1 )
{
if ( isdefined( var_4 ) && isai( var_4 ) && isalive( var_4 ) )
var_2 thread maps\_anim::anim_single_solo( var_4, "arrive" );
}
var_2 maps\_anim::anim_single_solo( level.op_helo, "arrive" );
common_scripts\utility::flag_set( "flag_camp_helo_unload" );
var_2 notify( "stop_loop" );
var_2 thread maps\_anim::anim_single_solo( level.op_helo, "leave" );
foreach ( var_4 in var_1 )
{
if ( isdefined( var_4 ) && isai( var_4 ) && isalive( var_4 ) )
{
var_4.allowdeath = 1;
var_2 thread maps\_anim::anim_single_solo( var_4, "leave", undefined, 0.1 );
}
}
level.op_helo thread bc_helo_reinforce_kill();
wait 1;
maps\black_ice_util::delay_retreat( "bc_opfor", 15, 7, "flag_camp_back_retreat", "bc_color_street", 1 );
}
bc_street()
{
thread bc_street_fic();
maps\_utility::array_spawn( getentarray( "bc_opfor_street", "targetname" ), undefined, 1 );
thread maps\_spawner::killspawner( 64 );
thread maps\_spawner::killspawner( 65 );
thread maps\_spawner::killspawner( 66 );
thread maps\_spawner::killspawner( 67 );
thread maps\_spawner::killspawner( 69 );
thread bc_street_cleanup();
maps\_utility::delaythread( 4, common_scripts\utility::flag_set, "flag_camp_back_lmg_retreat" );
setthreatbias( "bc_lmg", "player", 250 );
wait 1;
maps\black_ice_util::delay_retreat( "bc_opfor", 180, 5, "flag_camp_street_retreat", "bc_color_ascend", 1 );
thread maps\_spawner::killspawner( 68 );
}
bc_street_cleanup()
{
wait 0.5;
var_0 = common_scripts\utility::get_array_of_closest( level.player.origin, maps\_utility::get_ai_group_ai( "bc_opfor" ) );
var_1 = [];
var_2 = [];
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
{
if ( isalive( var_0[var_3] ) && isdefined( var_0[var_3].goalpos ) && var_0[var_3].goalpos[1] < 1900 )
{
var_1[var_1.size] = var_0[var_3];
continue;
}
if ( !isdefined( var_0[var_3].script_startingposition ) )
var_2[var_2.size] = var_0[var_3];
}
for ( var_3 = 4; var_3 < var_1.size; var_3++ )
{
var_1[var_3].health = 1;
var_1[var_3] setthreatbiasgroup( "bc_killme" );
if ( var_3 >= 6 )
var_1[var_3] thread maps\_utility_code::kill_deathflag_proc( 0.5 );
}
for ( var_3 = 2; var_3 < var_2.size; var_3++ )
{
if ( !maps\_utility::player_can_see_ai( var_2[var_3] ) && !var_2[var_3] cansee( level.player ) )
var_2[var_3] thread maps\_utility_code::kill_deathflag_proc( 0.5 );
}
}
bc_ascend()
{
thread bc_ascend_fic();
maps\black_ice_util::delay_retreat( "bc_opfor", 30, 4, "bc_flag_alarm_start" );
thread maps\black_ice_audio::sfx_distant_alarm();
thread fake_spot( "cw_spotlight_2", "cw_spot_2_org" );
thread fake_spot( "cw_spotlight_3", "cw_spot_3_org" );
maps\black_ice_util::delay_retreat( "bc_opfor", 90, 1, "flag_camp_cleared" );
thread maps\black_ice_ascend::hanging_cargo_motion();
}
bc_end()
{
thread bc_end_fic();
var_0 = maps\_utility::get_ai_group_ai( "bc_opfor" );
common_scripts\utility::array_thread( var_0, maps\_utility_code::kill_deathflag_proc, 2.5 );
thread maps\_utility::clearthreatbias( "player", "bc_lmg" );
thread maps\_utility::clearthreatbias( "player", "axis" );
level.ascend_anim_node = getent( "vignette_alpha_team_rigascend", "script_noteworthy" );
var_1 = getent( "vignette_rigascend_runin_node", "script_noteworthy" );
level.ally1_ascend_launcher = maps\_utility::spawn_anim_model( "ally1_ascend_launcher" );
level.ally1_ascend_launcher hide();
level._allies[0].launcher = level.ally1_ascend_launcher;
level.ally2_ascend_launcher = maps\_utility::spawn_anim_model( "ally2_ascend_launcher" );
level.ally2_ascend_launcher hide();
level._allies[1].launcher = level.ally2_ascend_launcher;
level.bravo1_ascend_launcher = maps\_utility::spawn_anim_model( "bravo1_ascend_launcher" );
level.bravo1_ascend_launcher hide();
level._bravo[0].launcher = level.bravo1_ascend_launcher;
level.bravo2_ascend_launcher = maps\_utility::spawn_anim_model( "bravo2_ascend_launcher" );
level.bravo2_ascend_launcher hide();
level._bravo[1].launcher = level.bravo2_ascend_launcher;
foreach ( var_4, var_3 in level._allies )
var_3 thread maps\black_ice_ascend::runin_to_ascend( var_1, "flag_ascend_ready_alpha_" + maps\_utility::string( var_4 ) );
foreach ( var_4, var_6 in level._bravo )
var_6 thread maps\black_ice_ascend::runin_to_ascend( var_1, "flag_ascend_ready_bravo_" + maps\_utility::string( var_4 ) );
common_scripts\utility::flag_wait_all( "flag_ascend_ready_alpha_0", "flag_ascend_ready_alpha_1" );
level.launchers_attached = 0;
}
debug_end()
{
for (;;)
{
iprintln( maps\_utility::get_ai_group_sentient_count( "bc_opfor" ) );
wait 0.1;
}
}
bc_front_fic()
{
level endon( "stop_front_fic" );
wait 1;
level._allies[0] maps\_utility::smart_dialogue( "blackice_bkr_letthemregroup" );
}
bc_mid_fic()
{
level notify( "stop_front_fic" );
level endon( "stop_mid_fic" );
common_scripts\utility::flag_wait( "flag_camp_building_open" );
wait 0.5;
level._bravo[1] maps\_utility::smart_dialogue( "blackice_grn_activityahead" );
wait 1.0;
level._allies[0] maps\_utility::smart_dialogue( "black_ice_bkr_takecovermultipletangos" );
}
bc_back_fic()
{
level notify( "stop_mid_fic" );
level endon( "stop_back_fic" );
level._allies[0] maps\_utility::smart_dialogue( "blackice_bkr_fallingback" );
}
bc_helo_fic()
{
level notify( "stop_back_fic" );
level endon( "stop_helo_fic" );
wait 2;
level._bravo[0] maps\_utility::smart_dialogue( "black_ice_diz_getreadyenemyhelo" );
common_scripts\utility::flag_wait( "flag_camp_helo_unload" );
wait 1.0;
level._bravo[0] maps\_utility::smart_dialogue( "black_ice_bkr_helodroppingenemiesin" );
}
bc_street_fic()
{
level endon( "stop_street_fic" );
level._allies[1] maps\_utility::smart_dialogue( "blackice_fnt_retreating" );
wait 1.5;
level._allies[0] maps\_utility::smart_dialogue( "blackice_bkr_gettocatwalks" );
}
bc_ascend_fic()
{
level notify( "stop_street_fic" );
level endon( "stop_ascend_fic" );
level._allies[0] maps\_utility::smart_dialogue( "blackice_bkr_cleanemup" );
common_scripts\utility::flag_wait( "bc_flag_alarm_start" );
wait 0.5;
level._bravo[0] maps\_utility::smart_dialogue( "blackice_diz_mobilizing" );
}
bc_end_fic()
{
level notify( "stop_ascend_fic" );
wait 1;
level._allies[0] maps\_utility::smart_dialogue( "blackice_bkr_movegetover" );
common_scripts\utility::flag_wait_all( "flag_ascend_ready_alpha_0", "flag_ascend_ready_alpha_1" );
var_0 = [ "blackice_bkr_ascendpoint", "blackice_bkr_movegetover", "blackice_bkr_settingup", "blackice_bkr_muchtime" ];
for ( var_1 = 10; !common_scripts\utility::flag( "flag_ascend_triggered" ); var_1 = var_1 + 2 )
{
level._allies[0] maps\_utility::smart_dialogue( var_0[randomint( var_0.size )] );
wait( randomfloatrange( var_1, var_1 + 2.0 ) );
}
}
heli_spawn_and_path( var_0 )
{
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( var_0 );
level.op_helo = var_1;
var_1 endon( "death" );
var_1.fastropeoffset = 322;
if ( var_0 == "bc_veh_intro_helo" )
var_1 vehicle_turnengineoff();
var_1 waittill( "reached_dynamic_path_end" );
var_1 delete();
}
bc_rolling_door_open()
{
var_0 = getent( "bc_rolling_door", "targetname" );
var_1 = getent( "bc_rolling_door_close", "targetname" );
var_0 linkto( var_1 );
var_2 = getent( "cw_clip_inside_building", "targetname" );
var_3 = getent( "bc_rolling_door_clip", "targetname" );
var_3 delete_path_clip();
thread maps\black_ice_audio::sfx_blackice_door_rollup( var_0 );
var_4 = 1.25;
var_5 = getent( "bc_rolling_door_open", "targetname" );
var_1 moveto( var_5.origin, var_4, 0.5, 0.25 );
var_1 rotateto( var_5.angles, var_4, 0.5, 0.25 );
level notify( "bc_opening_rolling_door" );
wait( var_4 );
level notify( "bc_rolling_door_open" );
var_2 delete_path_clip();
}
left_flank_spawn_proc()
{
level endon( "flag_camp_back_retreat" );
self waittill( "trigger" );
wait 1;
while ( level.mid_window_count > 0 )
wait 0.1;
var_0 = getent( "bc_opfor_flank_left", "targetname" );
if ( isdefined( var_0 ) && var_0.count > 0 )
{
var_0 maps\_utility::spawn_ai();
var_0 delete();
}
}
bc_helo_reinforce_kill()
{
self endon( "death" );
self waittillmatch( "single anim", "end" );
self delete();
}
setup_spawners()
{
level.mid_window_count = 2;
maps\_utility::array_spawn_function_targetname( "bc_opfor_crawl", ::opfor_crawl );
maps\_utility::array_spawn_function_targetname( "bc_opfor_run", ::opfor_run );
maps\_utility::array_spawn_function_targetname( "bc_opfor_runback", ::opfor_runback );
maps\_utility::array_spawn_function_noteworthy( "bc_opfor_mid_normal", ::opfor_mid_normal );
maps\_utility::array_spawn_function_targetname( "bc_opfor_mid_lmg", ::opfor_bc_lmg );
maps\_utility::array_spawn_function_noteworthy( "bc_opfor_kicker", ::opfor_kicker );
maps\_utility::array_spawn_function_targetname( "bc_opfor_mid_window", ::opfor_mid_window );
maps\_utility::array_spawn_function_targetname( "bc_opfor_flank_left", ::opfor_left_flank_run );
maps\_utility::array_spawn_function_targetname( "bc_opfor_helo_rein", ::opfor_helo_rein );
var_0 = getentarray( "bc_opfor_flank_right", "targetname" );
foreach ( var_3, var_2 in var_0 )
{
if ( randomint( 3 - var_3 ) == 0 )
var_2 delete();
}
setthreatbias( "bc_lmg", "player", 1000 );
setthreatbias( "allies", "bc_killme", 10000 );
}
opfor_crawl()
{
self endon( "death" );
maps\_utility::force_crawling_death( 0.0, randomintrange( 2, 3 ), undefined, 1 );
maps\_utility::gun_remove();
wait 0.05;
level.player radiusdamage( self.origin, 32, self.health, self.health, level.player, "MOD_RIFLE_BULLET" );
}
opfor_run()
{
self endon( "death" );
self.animname = "generic";
if ( isdefined( self.script_parameters ) )
{
var_0 = getent( self.script_parameters, "targetname" );
var_1 = 0.1;
if ( self.script_parameters == "camp_pain_short_1" )
var_1 = 1;
else if ( self.script_parameters == "camp_pain_tumble" )
self.ragdoll_immediate = 1;
if ( isdefined( self.script_noteworthy ) )
thread maps\_utility::smart_dialogue( self.script_noteworthy );
self.allowdeath = 1;
var_0 maps\_anim::anim_generic_first_frame( self, self.script_parameters );
var_0 maps\_anim::anim_single_solo( self, self.script_parameters, undefined, var_1, "generic" );
if ( self.script_parameters == "camp_pain_dead" )
self kill();
else if ( self.script_parameters == "camp_pain_tumble" )
self.ragdoll_immediate = undefined;
}
}
opfor_runback()
{
self endon( "death" );
self.animname = "generic";
maps\_utility::gun_remove();
maps\_utility::set_ignoreall( 1 );
maps\_utility::set_generic_run_anim( "unarmed_run", 1 );
var_0 = getent( self.target, "targetname" );
var_0 maps\_anim::anim_generic_reach( self, self.script_parameters );
if ( isdefined( self.script_noteworthy ) )
thread maps\_utility::smart_dialogue( self.script_noteworthy );
self.allowdeath = 1;
var_0 maps\_anim::anim_single_solo( self, self.script_parameters, undefined, 0.1, "generic" );
var_1 = getnode( self.target, "script_noteworthy" );
maps\_utility::follow_path( var_1 );
self waittill( "goal" );
maps\_utility::gun_recall();
maps\_utility::set_ignoreall( 0 );
maps\_utility::clear_run_anim();
var_0 = getnode( "bc_node_front_right", "targetname" );
maps\_utility::follow_path( var_0 );
}
opfor_mid_normal()
{
self endon( "death" );
if ( isdefined( self.script_parameters ) && self.script_parameters == "porch_runner" && randomint( 4 ) > 0 )
{
thread opfor_porch_runner();
return;
}
var_0 = getnode( self.target, "targetname" );
thread ignore_move_suppression( "stop_suppression_workaround" );
thread maps\_utility::notify_delay( "stop_suppression_workaround", 10 );
maps\_utility::delaythread( 10.05, maps\_utility::set_ignoresuppression, 0 );
common_scripts\utility::flag_wait( "flag_camp_mid_retreat" );
thread maps\_utility::follow_path( getnode( var_0.target, "targetname" ) );
}
opfor_porch_runner()
{
self endon( "death" );
thread ignore_move_suppression( "stop_suppression_workaround" );
thread maps\_utility::follow_path( getnode( "bc_node_porch_start", "targetname" ) );
common_scripts\utility::flag_wait( "flag_bc_porch_runner_done" );
thread maps\_utility::notify_delay( "stop_suppression_workaround", 5 );
maps\_utility::delaythread( 5.05, maps\_utility::set_ignoresuppression, 0 );
}
ignore_move_suppression( var_0 )
{
self endon( "death" );
if ( isdefined( var_0 ) )
self endon( var_0 );
for (;;)
{
if ( self ismovesuppressed() )
{
maps\_utility::set_ignoresuppression( 1 );
wait 4;
}
else if ( isdefined( self.ignoresuppression ) && self.ignoresuppression )
maps\_utility::set_ignoresuppression( 0 );
wait 0.25;
}
}
opfor_bc_lmg()
{
self.ignoresuppression = 1;
self.disablebulletwhizbyreaction = 1;
}
opfor_kicker()
{
self endon( "death" );
var_0 = getnode( "bc_node_door_kick_leave", "targetname" );
thread maps\_utility::follow_path( var_0 );
}
opfor_mid_window()
{
self waittill( "death" );
level.mid_window_count = level.mid_window_count - 1;
}
opfor_left_flank_run()
{
self endon( "death" );
thread maps\_utility::follow_path( getnode( "bc_node_windows", "targetname" ) );
maps\_utility::set_ignoreall( 1 );
var_0 = common_scripts\utility::getstruct( "bc_left_flank_runaway", "targetname" );
while ( distance2d( self.origin, var_0.origin ) > 70 )
wait 0.05;
if ( level.mid_window_count < 1 && distance2d( level.player.origin, var_0.origin ) > 300 )
{
var_0 maps\_anim::anim_generic_reach( self, "run_180_1" );
self.allowdeath = 1;
var_0 maps\_anim::anim_single_solo( self, "run_180_1", undefined, 0.5, "generic" );
thread maps\_utility::follow_path( getnode( "bc_node_left_run", "targetname" ) );
self waittill( "goal" );
}
maps\_utility::set_ignoreall( 0 );
}
opfor_helo_rein()
{
self endon( "death" );
if ( isdefined( self.script_parameters ) )
self.animname = self.script_parameters;
wait 0.05;
self.allowdeath = 1;
}
main_spot()
{
var_0 = getent( "cw_spotlight_1", "targetname" );
var_1 = getentarray( "cw_spot_1_org", "targetname" );
var_2 = getent( "cw_spot_1_start", "targetname" );
var_0.angles = vectortoangles( var_2.origin - var_0.origin );
playfxontag( level._effect["catwalk_spot"], var_0, "spotlight_main" );
var_3 = var_2 common_scripts\utility::spawn_tag_origin();
var_4 = ( 0, 0, 0 );
if ( !common_scripts\utility::flag( "bc_flag_spots_close" ) )
{
var_2 = getent( "cw_spot_1_end", "targetname" );
var_5 = vectornormalize( var_2.origin - var_3.origin );
var_4 = var_5;
var_0.near_dist_sq = 100.0;
var_0.lerp_rate = 0.065;
var_0.velocity_factor = 200.0;
maps\_utility::delaythread( 5, common_scripts\utility::flag_set, "bc_flag_spots_close" );
thread spotlight_motion( var_3, var_2, var_4, var_0, var_1, "bc_flag_spots_close" );
level waittill( "end_spotlight_motion", var_2, var_4 );
}
var_1 = [];
var_1[0] = level.player;
var_1[1] = level._allies[0];
var_1[2] = level._allies[1];
var_1[3] = level._bravo[0];
var_1[4] = level._bravo[1];
var_2 = var_1[randomint( var_1.size )];
var_5 = vectornormalize( var_2.origin - var_3.origin );
var_4 = var_5;
var_0.near_dist_sq = 32.0;
var_0.lerp_rate = 0.2;
var_0.velocity_factor = 100.0;
thread spotlight_motion( var_3, var_2, var_4, var_0, var_1, "flag_ascend_start", 1 );
level waittill( "end_spotlight_motion", var_2, var_4 );
while ( !common_scripts\utility::flag( "bc_flag_spots_off" ) )
{
var_6 = ( randomfloatrange( -2, 2 ), randomfloatrange( -2, 2 ), 0 );
var_7 = vectortoangles( level.player.origin + var_6 - var_0.origin );
var_0 rotateto( var_7, 0.3 );
wait 0.1;
}
var_0 notify( "noise_off" );
stopfxontag( level._effect["catwalk_spot"], var_0, "spotlight_main" );
}
fake_spot( var_0, var_1 )
{
if ( !common_scripts\utility::flag( "bc_flag_spots_close" ) )
wait( randomfloatrange( 0.6, 1.8 ) );
var_2 = getent( var_0, "targetname" );
var_3 = getentarray( var_1, "targetname" );
var_4 = var_3[randomint( var_3.size )];
var_2.angles = vectortoangles( var_4.origin - var_2.origin );
wait 0.05;
playfxontag( level._effect["catwalk_spot_cheap"], var_2, "spotlight_main" );
var_5 = var_4 common_scripts\utility::spawn_tag_origin();
var_4 = var_3[randomint( var_3.size )];
var_6 = vectornormalize( var_4.origin - var_5.origin );
var_7 = var_6;
var_2.near_dist_sq = 100.0;
var_2.lerp_rate = 0.065;
var_2.velocity_factor = 200.0;
spotlight_motion( var_5, var_4, var_7, var_2, var_3, "bc_flag_spots_off" );
var_2 notify( "noise_off" );
stopfxontag( level._effect["catwalk_spot_cheap"], var_2, "spotlight_main" );
var_2.angles = ( randomint( 60 ), 270, 0 );
}
spotlight_motion( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
while ( !common_scripts\utility::flag( var_5 ) )
{
while ( distancesquared( var_0.origin, var_1.origin ) > var_3.near_dist_sq )
{
var_7 = vectornormalize( var_1.origin - var_0.origin );
var_2 = var_2 + ( var_7 - var_2 ) * var_3.lerp_rate;
var_0.origin = var_0.origin + var_2 * var_3.velocity_factor * level.timestep;
if ( isdefined( var_6 ) && var_6 )
var_0.origin = var_0.origin + ( randomfloatrange( -1, 1 ), randomfloatrange( -1, 1 ), randomfloatrange( -1, 1 ) );
var_3.angles = vectortoangles( var_0.origin - var_3.origin );
wait( level.timestep );
}
if ( isdefined( var_6 ) && var_6 )
{
var_8 = gettime();
var_9 = randomfloatrange( 1000, 3000 );
while ( gettime() - var_8 < var_9 )
{
var_0.origin = var_0.origin + ( randomfloatrange( -2, 2 ), randomfloatrange( -2, 2 ), randomfloatrange( -2, 2 ) );
var_3.angles = vectortoangles( var_0.origin - var_3.origin );
wait( level.timestep );
}
}
var_10 = var_1;
var_4 = common_scripts\utility::array_remove( var_4, var_10 );
var_11 = [];
if ( !isdefined( var_6 ) || isdefined( var_6 ) && !var_6 )
{
var_12 = 1;
foreach ( var_14 in var_4 )
{
var_15 = vectordot( vectornormalize( var_2 ), vectornormalize( var_14.origin - var_0.origin ) );
if ( var_15 < 0.25 )
var_11[var_11.size] = var_14;
if ( var_4.size == var_11.size )
{
var_12 = 0;
break;
}
}
if ( var_12 )
{
foreach ( var_14 in var_11 )
var_4 = common_scripts\utility::array_remove( var_4, var_14 );
}
else
{
var_19 = 3;
if ( var_4.size > var_19 )
{
foreach ( var_14 in var_4 )
var_14.dist2d = distance2d( var_10.origin, var_14.origin );
var_4 = common_scripts\utility::array_sort_by_handler( var_4, ::target_dist_compare );
var_11 = [];
for ( var_22 = 0; var_22 < var_19; var_22++ )
{
var_11[var_22] = var_4[var_22];
var_4 = common_scripts\utility::array_remove( var_4, var_11[var_22] );
}
}
}
}
var_1 = var_4[randomint( var_4.size )];
var_4[var_4.size] = var_10;
foreach ( var_14 in var_11 )
var_4[var_4.size] = var_14;
wait( level.timestep );
}
level notify( "end_spotlight_motion", var_1, var_2 );
}
target_dist_compare()
{
return self.dist2d;
}
spot_noise()
{
self endon( "noise_off" );
for (;;)
{
var_0 = ( randomfloatrange( -0.25, 0.25 ), randomfloatrange( -0.25, 0.25 ), randomfloatrange( -0.25, 0.25 ) );
self rotateto( self.angles + var_0, 0.1 );
wait 0.1;
}
}
basecamp_dof()
{
common_scripts\utility::flag_wait( "player_water_breach" );
thread camp_mblur_changes();
maps\_art::dof_enable_script( 0, 100, 0.5, 5000, 7000, 0.4, 0 );
wait 2;
maps\_art::dof_enable_script( 0, 1, 1, 500, 7000, 3, 1 );
wait 3;
maps\_art::dof_disable_script( 1 );
}
camp_mblur_changes()
{
wait 1;
if ( maps\_utility::is_gen4() && !level.ps4 )
{
setsaveddvar( "r_mbEnable", 0 );
setsaveddvar( "r_mbCameraRotationInfluence", 0.07 );
setsaveddvar( "r_mbCameraTranslationInfluence", 0.15 );
setsaveddvar( "r_mbModelVelocityScalar", 0.06 );
setsaveddvar( "r_mbStaticVelocityScalar", 0.01 );
setsaveddvar( "r_mbViewModelEnable", 1 );
setsaveddvar( "r_mbViewModelVelocityScalar", 0.004 );
}
wait 2.25;
if ( maps\_utility::is_gen4() )
return;
}
camp_primary_light_switch()
{
var_0 = getentarray( "light_infil_omni1", "targetname" );
if ( maps\_utility::is_gen4() )
{
var_0[var_0.size] = getent( "light_infil_script_top", "targetname" );
var_0[var_0.size] = getent( "light_infil_script_top2", "targetname" );
var_0[var_0.size] = getent( "light_infil_script_top3", "targetname" );
}
foreach ( var_2 in var_0 )
var_2 setlightintensity( 0 );
var_4 = getentarray( "light_camp_tent1_spot", "targetname" );
var_5[0] = 0;
for ( var_6 = 0; var_6 < var_4.size; var_6++ )
{
var_5[var_6] = var_4[var_6] getlightintensity();
var_4[var_6] setlightintensity( 0 );
}
maps\_utility::trigger_wait( "show_tent_lights", "targetname" );
for ( var_6 = 0; var_6 < var_4.size; var_6++ )
var_4[var_6] setlightintensity( var_5[var_6] );
}
delete_path_clip()
{
self movez( -10000, 0.05 );
wait 0.05;
self connectpaths();
self delete();
}