// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool section_main() { } section_precache() { precacherumble( "damage_light" ); precacherumble( "light_2s" ); precacherumble( "chopper_ride_rumble" ); precachestring( &"FLOOD_TANKS_FAIL" ); precachestring( &"FLOOD_FAIL_VEHICLE_CRUSH" ); } section_flag_inits() { common_scripts\utility::flag_init( "infil_done" ); common_scripts\utility::flag_init( "enemy_tank_killed" ); common_scripts\utility::flag_init( "allies_run_for_garage" ); common_scripts\utility::flag_init( "allies_in_position" ); common_scripts\utility::flag_init( "allied_tank_killed" ); } infil_start() { maps\flood_util::player_move_to_checkpoint_start( "streets_start" ); level.player freezecontrols( 1 ); level.player allowprone( 0 ); level.player allowcrouch( 0 ); level.player disableweapons(); maps\flood_util::spawn_allies(); maps\_utility::vision_set_changes( "flood_infil", 0 ); level.allies[0] maps\_utility::forceuseweapon( "r5rgp", "primary" ); level.allies[1] maps\_utility::forceuseweapon( "r5rgp+reflex_sp", "primary" ); level.allies[2] maps\_utility::forceuseweapon( "r5rgp+acog_sp", "primary" ); } infil() { level.player disableweapons(); level.player enableinvulnerability(); maps\_utility::music_play( "mus_flood_infil_ss" ); level.player setclienttriggeraudiozone( "flood_infil", 0.1 ); common_scripts\utility::flag_wait( "start_intro_sequence" ); thread maps\flood_audio::narration_flood_infil(); thread maps\flood_audio::sfx_heli_infil(); common_scripts\utility::flag_wait( "intro_show_introtext" ); level.vtclassname = "script_vehicle_silenthawk_flood_player"; maps\_vehicle::build_aianims( ::setanims_flood_infil, vehicle_scripts\silenthawk::set_vehicle_anims ); level.infil_global_offset = 0; level thread infil_flyin_player(); level thread infil_flyin_allies(); level thread setup_initial_ai(); level thread setup_dead_destroyed_and_misc(); level thread allies_first_advance(); level maps\_utility::delaythread( level.infil_global_offset + 0.0, ::infil_sidestreet ); level maps\_utility::delaythread( level.infil_global_offset + 0.0, ::rpg_guy_shoot_flyin_choopers ); level maps\_utility::delaythread( level.infil_global_offset + 0.5, ::tank_battle ); thread maps\flood_fx::fx_infil_heli_smoke(); setsaveddvar( "sm_sunSampleSizeNear", 0.6 ); level waittill( "infil_done" ); level.player disableinvulnerability(); maps\flood::streets(); } health_debug() { for (;;) { iprintln( level.player.health ); common_scripts\utility::waitframe(); common_scripts\utility::waitframe(); } } infil_flyin_player() { setsaveddvar( "compass", 0 ); setsaveddvar( "ammoCounterHide", 1 ); setsaveddvar( "actionSlotsHide", 1 ); setsaveddvar( "hud_showStance", 0 ); level.player freezecontrols( 1 ); level.player allowprone( 0 ); level.player allowcrouch( 0 ); level.player disableweapons(); var_0 = getent( "player_heli_infil_clip", "targetname" ); var_0 hide(); var_0 notsolid(); level.player screenshakeonentity( 0.5, 0.5, 0.5, 21, 0, 3, 0, 2.35, 0.75, 0.75 ); var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "infil_player_chopper_new" ); level.infil_heli_player = var_1; var_1 maps\_vehicle::godon(); var_1 vehicle_turnengineoff(); var_1 setmaxpitchroll( 20, 10 ); var_1 vehicle_setspeedimmediate( 50, 999 ); var_1 maps\_utility::delaythread( 0.5, maps\_vehicle::vehicle_lights_off, "interior" ); level thread infil_vo( var_1 ); var_1 thread infil_silenthawk_landing_gear( 7 ); level.allies[0].script_startingposition = 2; var_1 maps\_utility::guy_enter_vehicle( level.allies[0] ); level.allies[1].script_startingposition = 3; var_1 maps\_utility::guy_enter_vehicle( level.allies[1] ); level.allies[2].script_startingposition = 6; var_1 maps\_utility::guy_enter_vehicle( level.allies[2] ); var_1.player_link_ent = common_scripts\utility::spawn_tag_origin(); var_1.player_link_ent linkto( var_1, "tag_player", ( 20, 6, 0 ), ( 0, -66, 0 ) ); level.player playerlinktodelta( var_1.player_link_ent, "tag_player", 1, 0, 0, 0, 0, 1 ); level.player common_scripts\utility::delaycall( 0.15, ::playerlinktodelta, var_1.player_link_ent, "tag_player", 1, 25, 25, 20, 20, 1 ); var_1 thread infil_flyin_player_unload_gt(); var_2 = common_scripts\utility::getstruct( "player_chopper_lz", "targetname" ); var_2 waittill( "trigger" ); thread maps\flood_audio::sfx_infil_heli_flyaway( var_1 ); wait 2.25; thread landing_vo(); wait 0.5; level.player enableweapons(); level notify( "player_unloading" ); level.player maps\_utility::lerp_player_view_to_position_oldstyle( ( 2380, -11463, -30 ), ( 0, 45, 0 ), 1 ); setsaveddvar( "compass", 1 ); setsaveddvar( "ammoCounterHide", 0 ); setsaveddvar( "actionSlotsHide", 0 ); setsaveddvar( "hud_showStance", 1 ); level.player unlink(); var_1.player_link_ent delete(); level.player freezecontrols( 0 ); level.player allowprone( 1 ); level.player allowcrouch( 1 ); var_0 show(); var_0 solid(); wait 0.35; common_scripts\utility::flag_set( "infil_done" ); level thread maps\flood_util::flood_battlechatter_on( 1 ); level.player.ignoreme = 1; wait 1.0; var_0 delete(); wait 2.0; level.player.ignoreme = 0; } landing_vo() { level.allies[0] maps\_utility::smart_dialogue( "flood_pri_moveout" ); level maps\_utility::smart_radio_dialogue( "flood_gp1_ondeck" ); level maps\_utility::smart_radio_dialogue( "flood_hqr_helix47" ); level.allies[0] maps\_utility::smart_dialogue( "flood_pri_overlordpatchmeinto" ); level.player playsound( "flood_hqr_roger" ); } player_ride_rumble() { level.player playrumblelooponentity( "chopper_ride_rumble" ); level waittill( "player_unloading" ); level.player stoprumble( "chopper_ride_rumble" ); var_0 = level.infil_heli_player maps\flood_util::create_rumble_ent( 700, undefined, 10 ); var_0 playrumblelooponentity( "steady_rumble" ); } #using_animtree("generic_human"); setanims_flood_infil() { var_0 = vehicle_scripts\silenthawk::setanims(); var_0[2].idle_alert = %flood_infil_ally1_loop; var_0[2].getout = %flood_infil_ally1_jumpout; var_0[3].idle_alert = %flood_infil_ally2_loop; var_0[3].getout = %flood_infil_ally2_jumpout; return var_0; } infil_silenthawk_landing_gear( var_0 ) { self notify( "gear_up" ); wait( var_0 ); self notify( "gear_down" ); } infil_vo( var_0 ) { var_0 maps\_utility::delaythread( 0.0, maps\_anim::anim_single_solo, level.allies[0], "infil_vo", "tag_detach_right" ); level maps\_utility::smart_radio_dialogue( "flood_hqr_bythetime" ); level maps\_utility::smart_radio_dialogue( "flood_gp2_copythat" ); level maps\_utility::smart_radio_dialogue( "flood_hlx_overlordbeadvisedhelix" ); var_0 notify( "stop_infil_loop" ); level.allies[0] notify( "stop_infil_loop" ); level maps\_utility::smart_radio_dialogue( "flood_hqr_rogerthatfourseven" ); } infil_flyin_player_unload_gt() { var_0 = getnode( "streets_leader_start_node", "targetname" ); var_1 = getnode( "streets_ally_1_start_node", "targetname" ); var_2 = getnode( "streets_ally_2_start_node", "targetname" ); level.allies[0] thread gt_get_to_cover_after_landing( self, var_0 ); level.allies[1] thread gt_get_to_cover_after_landing( self, var_1 ); level.allies[2] thread gt_get_to_cover_after_landing( self, var_2 ); } gt_get_to_cover_after_landing( var_0, var_1, var_2 ) { self setgoalnode( var_1 ); var_3 = self.goalradius; self.goalradius = 16; self.ignoreall = 1; self.ignoreme = 1; self.grenadeawareness = 0; self.ignoreexplosionevents = 1; self.ignorerandombulletdamage = 1; self.ignoresuppression = 1; self.disablebulletwhizbyreaction = 1; maps\_utility::disable_pain(); if ( self.animname == "ally_0" ) { self.run_overrideanim = maps\_utility::getanim( "price_exit_chopper_wave" ); thread revert_runoverrideanim(); } var_0 waittill( "unloaded" ); level thread maps\_utility::vision_set_changes( "flood", 3 ); self unlink(); self waittill( "goal" ); self.goalradius = var_3; self.ignoreall = 0; self.ignoreme = 0; self.grenadeawareness = 1; self.ignoreexplosionevents = 0; self.ignorerandombulletdamage = 0; self.ignoresuppression = 0; self.disablebulletwhizbyreaction = 0; maps\_utility::enable_pain(); } revert_runoverrideanim() { self endon( "death" ); while ( self getanimtime( maps\_utility::getanim( "price_exit_chopper_wave" ) ) < 0.5 ) common_scripts\utility::waitframe(); while ( self getanimtime( maps\_utility::getanim( "price_exit_chopper_wave" ) ) > 0.45 ) common_scripts\utility::waitframe(); self.run_overrideanim = undefined; self.prevmovemode = "none"; self notify( "move_loop_restart" ); } infil_flyin_allies() { var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "infil_ally_chopper_new" ); level.infil_heli_ally = var_0; var_0 maps\_vehicle::godon(); var_0 vehicle_turnengineoff(); var_0 setmaxpitchroll( 20, 60 ); var_0 vehicle_setspeedimmediate( 60, 999 ); var_0 thread infil_silenthawk_landing_gear( 7 ); var_1 = getnode( "infil_redshirt_death", "targetname" ); var_2 = var_0 maps\_vehicle::vehicle_get_riders_by_group( "passengers" ); var_0 waittill( "unloaded" ); foreach ( var_4 in var_2 ) var_4 thread chopper02_ally( var_1.origin ); } vignette_old_choppers_for_test() { var_0 = common_scripts\utility::getstruct( "vignette_infil_old", "script_noteworthy" ); var_1 = maps\_vignette_util::vignette_vehicle_spawn( "infil_heli_player", "infil_heli_player" ); var_2 = maps\_vignette_util::vignette_vehicle_spawn( "infil_heli_ally", "infil_heli_ally" ); var_3 = []; var_3["infil_heli_player"] = var_1; var_3["infil_heli_ally"] = var_2; var_0 thread maps\_anim::anim_single( var_3, "infil" ); } infil_flyin_old() { var_0 = maps\_vignette_util::vignette_vehicle_spawn( "infil_heli_player", "infil_heli_player" ); level.infil_heli_player = var_0; level.infil_heli_player maps\_vehicle::godon(); var_1 = maps\_vignette_util::vignette_vehicle_spawn( "infil_heli_ally", "infil_heli_ally" ); level.infil_heli_ally = var_1; level.infil_heli_ally maps\_vehicle::godon(); var_2 = maps\_vignette_util::vignette_actor_spawn( "heli_01_copilot", "heli_01_copilot" ); var_3 = maps\_vignette_util::vignette_actor_spawn( "heli_02_ally_01", "heli_02_ally_01" ); var_4 = maps\_vignette_util::vignette_actor_spawn( "heli_02_ally_02", "heli_02_ally_02" ); var_5 = maps\_vignette_util::vignette_actor_spawn( "heli_02_ally_03", "heli_02_ally_03" ); var_6 = maps\_vignette_util::vignette_actor_spawn( "heli_02_ally_04", "heli_02_ally_04" ); var_0 vehicle_turnengineoff(); var_1 vehicle_turnengineoff(); thread maps\flood_audio::sfx_heli_infil(); maps\_utility::delaythread( level.infil_global_offset + 9, maps\flood_fx::fx_heli_land ); var_7 = common_scripts\utility::getstruct( "vignette_infil_old", "script_noteworthy" ); setsaveddvar( "compass", 0 ); setsaveddvar( "ammoCounterHide", 1 ); setsaveddvar( "actionSlotsHide", 1 ); setsaveddvar( "hud_showStance", 0 ); level.player freezecontrols( 1 ); level.player allowprone( 0 ); level.player allowcrouch( 0 ); level.player disableweapons(); infil_vignette_remove_weapon( var_2 ); var_8 = []; var_8["infil_heli_player"] = var_0; var_8["infil_heli_ally"] = var_1; var_9 = maps\_utility::spawn_anim_model( "player_rig" ); var_9 hide(); var_9 linkto( var_0, "tag_player", ( 0, 0, 0 ), ( 0, 0, 0 ) ); level.player playerlinktodelta( var_9, "tag_player", 1, 65, 65, 15, 15, 1 ); level.allies[0] linkto( var_0, "tag_player", ( 0, 0, 0 ), ( 0, 0, 0 ) ); level.allies[1] linkto( var_0, "tag_player", ( 40, 300, 0 ), ( 0, 0, 0 ) ); level.allies[2] linkto( var_0, "tag_player", ( 40, 200, 0 ), ( 0, 0, 0 ) ); var_10 = []; var_10["heli_01_copilot"] = var_2; var_11 = []; var_11["player_rig"] = var_9; var_11["ally_0"] = level.allies[0]; var_12 = []; var_12["heli_02_ally_01"] = var_3; var_12["heli_02_ally_02"] = var_4; var_12["heli_02_ally_03"] = var_5; var_12["heli_02_ally_04"] = var_6; foreach ( var_14 in var_10 ) var_14 linkto( var_0, "tag_player", ( 0, 0, 0 ), ( 0, 0, 0 ) ); foreach ( var_14 in var_12 ) var_14 linkto( var_1, "tag_player", ( 0, 0, 0 ), ( 0, 0, 0 ) ); var_7 thread maps\_anim::anim_single( var_8, "infil" ); var_7 thread maps\_anim::anim_single( var_10, "infil" ); var_7 thread maps\_anim::anim_single( var_12, "infil" ); maps\_utility::delaythread( level.infil_global_offset + 0, ::helo_01_palyer_and_price, var_7, var_11, var_9 ); maps\_utility::delaythread( level.infil_global_offset + 13, ::helo_01_others ); foreach ( var_14 in var_12 ) var_14 maps\_utility::delaythread( level.infil_global_offset + 4.6, ::helo_02_dismount, var_7 ); wait( getanimlength( var_0 maps\_utility::getanim( "infil" ) ) ); var_0 maps\_vignette_util::vignette_vehicle_delete(); var_1 maps\_vignette_util::vignette_vehicle_delete(); var_2 maps\_vignette_util::vignette_actor_delete(); } infil_vignette_remove_weapon( var_0 ) { if ( isdefined( var_0.weapon ) ) var_0 maps\_utility::gun_remove(); } helo_01_palyer_and_price( var_0, var_1, var_2 ) { var_0 maps\_anim::anim_single( var_1, "infil" ); level.player unlink(); var_2 delete(); level.player freezecontrols( 0 ); level.player allowprone( 1 ); level.player allowcrouch( 1 ); level.player enableweapons(); setsaveddvar( "compass", 1 ); setsaveddvar( "ammoCounterHide", 0 ); setsaveddvar( "actionSlotsHide", 0 ); setsaveddvar( "hud_showStance", 1 ); var_3 = getnode( "streets_leader_start_node", "targetname" ); level.allies[0] unlink(); level.allies[0] setgoalnode( var_3 ); level.allies[0].ignoresuppression = 1; level.allies[0].disablebulletwhizbyreaction = 1; common_scripts\utility::flag_set( "infil_done" ); } helo_01_others() { var_0 = getnode( "streets_ally_1_start_node", "targetname" ); var_1 = getnode( "streets_ally_2_start_node", "targetname" ); level.allies[1] unlink(); level.allies[1] setgoalnode( var_0 ); level.allies[1].ignoresuppression = 1; level.allies[1].disablebulletwhizbyreaction = 1; level.allies[2] unlink(); level.allies[2] setgoalnode( var_1 ); level.allies[2].ignoresuppression = 1; level.allies[2].disablebulletwhizbyreaction = 1; } helo_02_dismount( var_0 ) { self unlink(); var_0 maps\_anim::anim_single_solo( self, "infil_dismount" ); var_1 = getnode( "infil_redshirt_death", "targetname" ); self.goalradius = 8; self setgoalnode( var_1 ); self waittill( "goal" ); maps\_vignette_util::vignette_actor_delete(); } chopper02_ally( var_0 ) { self endon( "death" ); self.ignoreall = 1; self.ignoreme = 1; self.goalradius = 8; wait( randomfloatrange( 0.5, 0.7 ) ); self setgoalpos( var_0 ); self waittill( "goal" ); maps\_vignette_util::vignette_actor_delete(); } unlink_ally_from_heli( var_0 ) { var_0 unlink(); } swap_hi_res_dam( var_0 ) { var_1 = getent( "flood_dam", "targetname" ); var_1 hide(); wait( var_0 ); var_1 = getent( "flood_dam", "targetname" ); var_1 show(); } setup_dead_destroyed_and_misc() { level endon( "player_on_ladder" ); var_0 = getentarray( "infil_start_destroyed", "targetname" ); foreach ( var_2 in var_0 ) { var_3 = maps\_vehicle::vehicle_spawn( var_2 ); var_3 kill(); } var_0 = getentarray( "infil_start_destroyed_lynx", "targetname" ); foreach ( var_2 in var_0 ) var_2 kill(); var_7 = maps\_vehicle::spawn_vehicle_from_targetname( "tanks_burning_man7t" ); var_7 maps\_vehicle::godon(); while ( !isdefined( level.tank_ally_joel ) ) common_scripts\utility::waitframe(); var_8 = common_scripts\utility::getstruct( "vignette_street_stop_sign_01", "script_noteworthy" ); var_8 thread crush_stop_sign_when_near_tank( 165 ); } create_dead_guys() { var_0 = 10; var_1 = 8; var_2 = getent( "dead_guy_ally", "targetname" ); var_3 = getnodearray( "infil_dead_ally_node", "targetname" ); for ( var_4 = 0; var_4 < var_0; var_4++ ) { var_5 = var_3[randomint( var_3.size )]; var_3 = common_scripts\utility::array_remove( var_3, var_5 ); var_2 maps\_utility::add_spawn_function( ::dead_guy_spawn_func ); var_6 = var_2 maps\_utility::spawn_ai(); var_6 forceteleport( var_5.origin, ( 0, 0, randomfloat( 300 ) ) ); common_scripts\utility::waitframe(); } } dead_guy_spawn_func( var_0 ) { self.allowdeath = 1; self.diequietly = 1; self kill(); } setup_initial_ai() { var_0 = getentarray( "street_start_allies", "targetname" ); foreach ( var_2 in var_0 ) { var_2 maps\_utility::add_spawn_function( ::infil_redshirts_spawn_func ); var_2 maps\_utility::delaythread( level.infil_global_offset + 0, maps\_utility::spawn_ai ); } common_scripts\utility::flag_wait( "flood_intro_tr_loaded" ); var_4 = maps\_utility::spawn_anim_model( "lynx_smash" ); var_4.script_noteworthy = "tanks_cleanup"; level.lynx_smash_array = []; level.lynx_smash_array["lynx_smash"] = var_4; var_5 = getent( "lynx_smash_node", "targetname" ); var_5 thread maps\_anim::anim_first_frame( level.lynx_smash_array, "lynx_smash" ); var_6 = maps\_utility::spawn_anim_model( "flood_tank_battle_barrier_01" ); var_6.script_noteworthy = "tanks_cleanup"; var_7 = maps\_utility::spawn_anim_model( "flood_tank_battle_barrier_02" ); var_7.script_noteworthy = "tanks_cleanup"; var_8 = maps\_utility::spawn_anim_model( "flood_tank_battle_window_frame" ); var_8.script_noteworthy = "tanks_cleanup"; var_9 = maps\_utility::spawn_anim_model( "flood_tank_battle_tankdebris" ); var_9.script_noteworthy = "tanks_cleanup"; level.tank_window_array = []; level.tank_window_array["flood_tank_battle_barrier_01"] = var_6; level.tank_window_array["flood_tank_battle_barrier_02"] = var_7; level.tank_window_array["flood_tank_battle_window_frame"] = var_8; level.tank_window_array["flood_tank_battle_tankdebris"] = var_9; var_5 = getent( "tank_window_node", "targetname" ); var_5 thread maps\_anim::anim_first_frame( level.tank_window_array, "tank_window" ); } enemy_tank_shoot_flyin_choopers() { self endon( "death" ); self endon( "end flyin script" ); self setmode( "manual" ); while ( !common_scripts\utility::flag( "infil_done" ) ) { self startfiring(); self settargetentity( level.infil_heli_player, ( 0, 180, 80 ) ); wait 1; self setmode( "manual" ); self stopfiring(); self stopbarrelspin(); wait( randomfloatrange( 0.5, 1 ) ); self settargetentity( level.infil_heli_ally, ( 0, 0, -80 ) ); self startfiring(); wait 1; self setmode( "manual" ); self stopfiring(); self stopbarrelspin(); wait( randomfloatrange( 0.5, 1 ) ); } self stopfiring(); self stopbarrelspin(); self cleartargetentity(); self turretfiredisable(); } allies_first_advance() { common_scripts\utility::flag_wait_all( "enemy_tank_killed", "allies_first_advance" ); maps\_utility::activate_trigger( "allies_first_advance", "targetname" ); } infil_sidestreet() { var_0 = common_scripts\utility::getstructarray( "infil_sidestreet_bullet_array", "targetname" ); var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "infil_heli_flyby01" ); var_1 thread create_passengers(); var_1 vehicle_setspeedimmediate( 60, 999 ); var_1 maps\_vehicle::godon(); var_1 vehicle_turnengineoff(); var_2 = common_scripts\utility::getstruct( "infil_chopper_crash01", "targetname" ); var_1.perferred_crash_location = var_2; level maps\_utility::delaythread( 3.2, ::kill_intro_chopper, var_1, var_1.riders ); var_1 thread spawn_fx_at_hit_pos(); magicbullet( "rpg_straight", var_0[0].origin, ( 8877.4, -9400, 1890 ) ); var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "infil_heli_flyby02" ); var_1 vehicle_setspeedimmediate( 60, 999 ); var_1 maps\_vehicle::godon(); var_1 vehicle_turnengineoff(); common_scripts\utility::noself_delaycall( 1.5, ::magicbullet, "rpg_straight", var_0[1].origin, var_1.origin + ( 0, 0, 100 ) ); var_1 = maps\_vehicle::spawn_vehicle_from_targetname( "infil_heli_flyby03" ); var_1 vehicle_turnengineoff(); var_1 maps\_utility::delaythread( 3, maps\_vehicle::gopath ); common_scripts\utility::noself_delaycall( 5, ::magicbullet, "rpg_straight", var_0[0].origin, var_1.origin + ( 0, 0, 600 ) ); var_3 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "infil_flyin_jet" ); foreach ( var_5 in var_3 ) var_5 maps\_vehicle::godon(); var_1 = maps\_utility::delaythread( 12, maps\_vehicle::spawn_vehicles_from_targetname_and_drive, "tanks_landing_chopper_flyby" ); } spawn_fx_at_hit_pos() { self waittill( "damage", var_0, var_1, var_2, var_3, var_4, var_5, var_6 ); playfx( common_scripts\utility::getfx( "vfx_nh90_impact_smoke" ), var_3 ); } get_origin_for_rpg() { maps\flood_util::jkuprint( self.origin ); } create_passengers() { var_0 = getent( "infil_chooper_rider1", "targetname" ); var_1 = getent( "infil_chooper_rider2", "targetname" ); var_2 = getent( "infil_chooper_rider3", "targetname" ); var_3 = getent( "infil_chooper_rider4", "targetname" ); var_4 = var_0 maps\_utility::spawn_ai(); var_4.script_noteworthy = "tanks_cleanup"; var_5 = common_scripts\utility::spawn_tag_origin(); var_5.script_noteworthy = "tanks_cleanup"; var_5.origin = self gettagorigin( "tag_detach_left" ); var_5.angles = self gettagangles( "tag_detach_left" ); var_5 linkto( self, "tag_detach_left" ); var_5 thread maps\_anim::anim_generic_loop( var_4, "heli_idle1" ); var_4 teleport( var_5.origin, var_5.angles ); var_4 linkto( self ); var_6 = var_1 maps\_utility::spawn_ai(); var_6.script_noteworthy = "tanks_cleanup"; var_7 = common_scripts\utility::spawn_tag_origin(); var_7.script_noteworthy = "tanks_cleanup"; var_7.origin = self gettagorigin( "tag_detach_left" ); var_7.angles = self gettagangles( "tag_detach_left" ); var_7 linkto( self ); var_7 thread maps\_anim::anim_generic_loop( var_6, "heli_idle2" ); var_6 teleport( var_7.origin, var_7.angles ); var_6 linkto( self ); var_8 = var_2 maps\_utility::spawn_ai(); var_8.script_noteworthy = "tanks_cleanup"; var_9 = common_scripts\utility::spawn_tag_origin(); var_9.script_noteworthy = "tanks_cleanup"; var_9.origin = self gettagorigin( "tag_detach_right" ); var_9.angles = self gettagangles( "tag_detach_right" ); var_9 linkto( self ); var_9 thread maps\_anim::anim_generic_loop( var_8, "heli_idle1" ); var_8 teleport( var_9.origin, var_9.angles ); var_8 linkto( self ); var_10 = var_3 maps\_utility::spawn_ai(); var_10.script_noteworthy = "tanks_cleanup"; var_11 = common_scripts\utility::spawn_tag_origin(); var_11.script_noteworthy = "tanks_cleanup"; var_11.origin = self gettagorigin( "tag_detach_right" ); var_11.angles = self gettagangles( "tag_detach_right" ); var_11 linkto( self ); var_11 thread maps\_anim::anim_generic_loop( var_10, "heli_idle2" ); var_10 teleport( var_11.origin, var_11.angles ); var_10 linkto( self ); var_12 = []; var_12[var_12.size] = var_4; var_12[var_12.size] = var_6; var_12[var_12.size] = var_8; var_12[var_12.size] = var_10; self.infil_passengers = var_12; } kill_intro_chopper( var_0, var_1 ) { common_scripts\utility::noself_delaycall( 0.25, ::playrumbleonposition, "grenade_rumble", level.player.origin + ( 0, 0, 200 ) ); var_0 kill(); foreach ( var_3 in var_0.infil_passengers ) { var_3 unlink(); var_3 stopanimscripted(); var_3 kill(); var_3 startragdollfromimpact( "torso_upper", anglestoforward( var_3.angles ) * 3000 ); wait( randomfloatrange( 0.25, 0.85 ) ); } } tank_damage_player( var_0, var_1 ) { self endon( "death" ); if ( isdefined( var_1 ) ) var_2 = spawn( "trigger_radius", self.origin, 0, 90, 90 ); else var_2 = spawn( "trigger_radius", self.origin + 130 * anglestoforward( self.angles ), 0, 70, 70 ); var_2 enablelinkto(); var_2 linkto( self ); while ( isdefined( var_2 ) ) { var_2 waittill( "trigger" ); if ( level.player.health <= 34 ) var_3 = 999; else var_3 = level.player.health / level.player.damagemultiplier * 0.34; while ( level.player istouching( var_2 ) && isalive( level.player ) ) { if ( isdefined( var_0 ) ) level.player dodamage( var_0, level.player.origin ); else level.player dodamage( var_3, level.player.origin ); level.player playrumbleonentity( "damage_light" ); wait 0.1; } if ( !isalive( level.player ) ) { setdvar( "ui_deadquote", &"FLOOD_FAIL_VEHICLE_CRUSH" ); self stopanimscripted(); foreach ( var_5 in level.lynx_smash_array ) var_5 stopanimscripted(); } } } #using_animtree("vehicles"); tank_battle() { maps\_utility::delaythread( level.infil_global_offset + 5.5, ::tank_wall_stuff ); level.tank_ally_joel = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "infil_tank_ally_joel" ); level.tank_ally_joel maps\_vehicle::godon(); level.tank_ally_joel maps\_utility::delaythread( 0.25, maps\_vehicle::mgoff ); level.tank_ally_joel vehicle_setspeed( 12, 6 ); var_0 = getent( "infil_tank_ally_pease", "targetname" ); var_1 = var_0 maps\_vehicle::spawn_vehicle_and_gopath(); var_1 vehicle_setspeed( 12, 12 ); var_1 maps\_vehicle::godon(); var_2 = maps\_vehicle::spawn_vehicle_from_targetname( "enemy_tank_infil_destroyed" ); var_2 maps\_vehicle::godon(); var_2 maps\_vehicle::mgoff(); var_2.mgturret[1] thread enemy_tank_shoot_flyin_choopers(); wait 0.5; var_2 thread fire_cannon_at_target( var_1, 1, ( 0, 220, -12 ) ); wait 1.5; var_1 thread fire_cannon_at_target( var_2, 1, ( 0, -200, 10 ) ); maps\_utility::delaythread( 0.75, common_scripts\utility::exploder, "tank_debri_hit_02" ); wait 1.25; var_2 thread fire_cannon_at_target( var_1, 1, ( 0, 0, 45 ) ); wait 0.85; var_1 kill(); level.tank_ally_joel vehicle_setspeed( 5 ); maps\_utility::delaythread( 2, maps\_utility::activate_trigger_with_targetname, "redshirts_first_advance" ); wait 1.5; level.tank_ally_joel vehicle_setspeed( 10.5, 6 ); wait 1; level.tank_ally_joel maps\_vehicle::mgon(); level.tank_ally_joel.mgturret[0] settargetentity( var_2, ( 0, 0, 45 ) ); level.tank_ally_joel thread fire_cannon_at_target( var_2, 1, ( 0, 120, 20 ) ); wait 2; level.tank_ally_joel.mgturret[0] common_scripts\utility::delaycall( 1.25, ::cleartargetentity ); level.tank_ally_joel.mgturret[0] common_scripts\utility::delaycall( 1.25, ::stopfiring ); level.tank_ally_joel fire_cannon_at_target( var_2, 1, ( 0, 0, 45 ) ); wait 0.85; common_scripts\utility::exploder( "tank_explosion_01" ); var_2 kill(); wait 3.5; level.enemy_tank_wall thread fire_cannon_at_target( level.tank_ally_joel, 2, ( 0, 0, 45 ) ); wait 2; level.tank_ally_joel.mgturret[0] common_scripts\utility::delaycall( 1, ::settargetentity, level.enemy_tank_wall, ( 0, 0, 45 ) ); wait 2.5; level.tank_ally_joel vehicle_setspeed( 0, 6 ); level.tank_ally_joel fire_cannon_at_target( level.enemy_tank_wall, 1, ( 0, 0, 45 ) ); playfxontag( common_scripts\utility::getfx( "tank_fire_ground_dust" ), level.tank_ally_joel, "tag_origin" ); wait 0.5; level.enemy_tank_wall kill(); common_scripts\utility::flag_set( "enemy_tank_killed" ); level.tank_ally_joel vehicle_setspeed( 10.5, 6 ); level.tank_ally_joel.mgturret[0] cleartargetentity(); level.tank_ally_joel.mgturret[0] stopfiring(); level.tank_ally_joel.mgturret[0] setconvergenceheightpercent( 0.25 ); level.tank_ally_joel.mgturret[0] common_scripts\utility::delaycall( 2, ::setmode, "auto_nonai" ); level.tank_ally_joel.mgturret[0] common_scripts\utility::delaycall( 6, ::setconvergenceheightpercent, 1 ); level.tank_ally_joel.mgturret[0] maps\_utility::delaythread( 6, ::mg_turret_do_something_while_waiting_for_player ); var_3 = []; var_3[0] = "flood_pri_keepupwithteam"; level.allies[0] maps\_utility::delaythread( 15, maps\flood_util::play_nag, var_3, "player_at_corner", 25, 50, 1, 2 ); level.tank_ally_joel common_scripts\utility::delaycall( 2, ::setturrettargetvec, anglestoforward( level.tank_ally_joel.angles ) ); var_4 = getentarray( "streets_enemy_tank_soldiers_2", "targetname" ); foreach ( var_6 in var_4 ) { var_6 maps\_utility::add_spawn_function( ::enemy_tank_soldiers_2_init ); var_6 maps\_utility::spawn_ai(); } level thread maps\_utility::activate_trigger_with_targetname( "corner_start" ); wait 1; level thread maps\_utility::autosave_by_name( "infil_landing" ); var_8 = getnodearray( "path_to_garage_node", "targetname" ); foreach ( var_10 in var_8 ) var_10 disconnectnode(); var_12 = getvehiclenode( "allied_tank_corner_start", "targetname" ); var_12 waittill( "trigger" ); level thread maps\_utility::smart_radio_dialogue( "flood_tnk_ineedvisualon" ); level thread maps\_utility::smart_radio_dialogue( "flood_tnk_onethreeengageleftgunner" ); var_13 = %flood_tank_battle_lynx_smash_tank; var_14 = getent( "lynx_smash_node", "targetname" ); var_15 = spawnstruct(); var_15.origin = getstartorigin( var_14.origin, var_14.angles, var_13 ); var_15.angles = getstartangles( var_14.origin, var_14.angles, var_13 ); level.tank_ally_joel vehicle_orientto( var_15.origin, var_15.angles, 0, 0.0 ); level.tank_ally_joel waittill( "orientto_complete" ); level.tank_ally_joel vehicle_setspeedimmediate( 0 ); common_scripts\utility::flag_wait( "player_at_corner" ); level.tank_ally_joel.mgturret[0] setmode( "manual" ); level.tank_ally_joel.mgturret[0] stopbarrelspin(); var_0 = getent( "enemy_tank_2", "targetname" ); level.enemy_tank_2 = var_0 maps\_utility::spawn_vehicle(); level.enemy_tank_2 thread tank_invulnerable_warning(); level.enemy_tank_2 maps\_vehicle::godon(); level.enemy_tank_2 maps\_utility::delaythread( 0.25, maps\_vehicle::mgoff ); level.enemy_tank_2 maps\_vehicle::gopath(); level.enemy_tank_2 vehicle_setspeedimmediate( 6, 5 ); var_0 = getent( "enemy_tank_3", "targetname" ); level.enemy_tank_3 = var_0 maps\_utility::spawn_vehicle(); level.enemy_tank_3 thread tank_invulnerable_warning(); level.enemy_tank_3 maps\_vehicle::godon(); level.enemy_tank_3 maps\_utility::delaythread( 0.25, maps\_vehicle::mgoff ); level.enemy_tank_3 maps\_vehicle::gopath(); level.enemy_tank_3 vehicle_setspeedimmediate( 7, 5 ); level maps\_utility::delaythread( 9, maps\_vehicle::spawn_vehicles_from_targetname_and_drive, "tanks_mainstreet_driveby" ); level maps\_utility::delaythread( 14, ::kill_player_with_tanks, "tanks_patio_loitering" ); wait 2; var_16 = getent( "tank_target_balcony", "targetname" ); level.tank_ally_joel thread maps\_utility::smart_radio_dialogue_overlap( "flood_us12_on" ); level.tank_ally_joel fire_cannon_at_target( var_16, 1, undefined, undefined, "flood_us7_away" ); level thread maps\_utility::kill_deathflag( "streets_wave_2a" ); wait 1.75; var_16 = getent( "tank_target_planters", "targetname" ); level.tank_ally_joel thread maps\_utility::smart_radio_dialogue_overlap( "flood_us11_on" ); level.tank_ally_joel fire_cannon_at_target( var_16, 1, undefined, undefined, "flood_us7_away" ); level thread maps\flood_streets::destroy_planter( "planter_06" ); level thread maps\flood_streets::destroy_planter( "planter_08" ); level thread maps\_utility::kill_deathflag( "streets_wave_2b" ); level.tank_ally_joel.mgturret[0] common_scripts\utility::delaycall( 5.5, ::settargetentity, level.enemy_tank_2, ( 0, 0, 45 ) ); var_17 = getent( "enemy_tank_2_garage_target", "targetname" ); level.tank_ally_joel common_scripts\utility::delaycall( 3, ::setturrettargetvec, var_17.origin + ( 400, 0, 300 ) ); level.tank_ally_joel common_scripts\utility::delaycall( 10, ::setturrettargetent, level.enemy_tank_2 ); level thread enemy_mg_pin_down_player( level.enemy_tank_2.mgturret[1], level.enemy_tank_3.mgturret[1] ); wait 1; level maps\_utility::delaythread( 4, maps\_utility::smart_radio_dialogue, "flood_gs5_twotargetsat10" ); level thread maps\_utility::activate_trigger_with_targetname( "second_street_advance" ); level thread animated_script_model( level.tank_ally_joel, var_14, #animtree, var_13 ); var_18 = getent( "lynx_smash_col_tank_back", "targetname" ); var_18 moveto( var_18.origin + ( 0, -224, 96 ), 0.05 ); var_18 common_scripts\utility::delaycall( 0.1, ::linkto, level.tank_ally_joel ); level.tank_ally_joel notify( "suspend_drive_anims" ); level.tank_ally_joel animscripted( "tank_animation", var_14.origin, var_14.angles, var_13 ); level.tank_ally_joel maps\_utility::delaythread( 3, ::tank_damage_player ); level.tank_ally_joel common_scripts\utility::delaycall( 3.25, ::playrumblelooponentity, "tank_rumble" ); var_14 thread maps\_anim::anim_single( level.lynx_smash_array, "lynx_smash" ); thread maps\flood_audio::sfx_lynx_smash(); wait 6; level.enemy_tank_2 fire_cannon_at_target( level.tank_ally_joel, 1, 200 * anglestoforward( level.tank_ally_joel.angles ) + ( 0, 0, 32 ) ); level thread middle_tank_vo(); wait 1.5; level.enemy_tank_3 fire_cannon_at_target( level.tank_ally_joel, 1, ( 0, 0, 60 ) ); foreach ( var_20 in level.tank_ally_joel.riders ) { if ( isdefined( var_20.magic_bullet_shield ) ) var_20 maps\_utility::stop_magic_bullet_shield(); } level thread maps\flood_util::hide_models_by_targetname( "lynx_smash_col_before" ); level.tank_ally_joel kill(); level.tank_ally_joel playrumbleonentity( "heavy_1s" ); foreach ( var_23 in level.allies ) var_23.forcesuppression = 1; common_scripts\utility::flag_set( "allied_tank_killed" ); level thread set_flag_when_allies_in_position(); level thread set_flag_after_timer( "allies_in_position", 5 ); common_scripts\utility::flag_wait( "allies_in_position" ); wait 3; var_25 = getent( "enemy_tank_2_window_target", "targetname" ); level.player.og_health = level.player.health; level.player.demigod = 1; level.enemy_tank_3 fire_cannon_at_target( var_25, 1 ); var_25 playrumbleonentity( "heavy_1s" ); level.player maps\_utility::delaythread( 0.2, ::disable_demigod ); level thread maps\_utility::kill_deathflag( "infil_ally_redshirt" ); thread maps\flood_audio::sfx_tank_bust_wall(); wait 4; wait 1; var_13 = %flood_tank_battle_window_tank; var_14 = getent( "tank_window_node", "targetname" ); var_15 = spawnstruct(); var_15.origin = getstartorigin( var_14.origin, var_14.angles, var_13 ); var_15.angles = getstartangles( var_14.origin, var_14.angles, var_13 ); var_26 = getent( "allied_tank_2", "targetname" ); var_26 = var_26 maps\_utility::spawn_vehicle(); var_26 maps\_vehicle::godon(); level.tank_wall_sfx linkto( var_26, "tag_origin", ( 120, 0, 100 ), ( 0, 0, 0 ) ); level thread animated_script_model( var_26, var_14, #animtree, var_13 ); var_26 notify( "suspend_drive_anims" ); var_26 animscripted( "tank_animation", var_14.origin, var_14.angles, var_13 ); var_26 playrumblelooponentity( "tank_rumble" ); var_26 common_scripts\utility::delaycall( 3, ::playrumbleonentity, "heavy_1s" ); var_26 common_scripts\utility::delaycall( 4.75, ::stoprumble, "tank_rumble" ); var_26 thread tank_damage_player( 999 ); var_26 thread tank_damage_player( 999, 1 ); var_14 thread maps\_anim::anim_single( level.tank_window_array, "tank_window" ); thread maps\flood_fx::fx_tank_window_break(); var_26 common_scripts\utility::delaycall( 1.5, ::playrumbleonentity, "heavy_2s" ); var_25 = getent( "tank_wallsmash_debris_col", "targetname" ); var_25 common_scripts\utility::delaycall( 4, ::movez, 24, 0.1 ); wait 2.63; var_25 = getent( "flag_remove_after_window_tank", "targetname" ); var_25 common_scripts\utility::trigger_off(); var_25 = getent( "streets_run_for_it", "targetname" ); var_25 common_scripts\utility::trigger_off(); var_27 = getent( "allied_tank_2_blocker", "targetname" ); var_27 notsolid(); level.enemy_tank_2.veh_pathdir = "reverse"; level.enemy_tank_2.veh_transmission = "reverse"; level.enemy_tank_2 startpath(); level.enemy_tank_2 vehicle_setspeed( 5 ); level.enemy_tank_2 maps\_vehicle::vehicle_wheels_backward(); wait 0.5; var_26 thread maps\_utility::smart_radio_dialogue_overlap( "flood_gs5_on" ); var_26 fire_cannon_at_target( level.enemy_tank_2, 1, ( 0, 0, 60 ), undefined, "flood_us8_away" ); wait 0.5; level.enemy_tank_3.veh_pathdir = "reverse"; level.enemy_tank_3.veh_transmission = "reverse"; level.enemy_tank_3 startpath(); level.enemy_tank_3 vehicle_setspeed( 5 ); level.enemy_tank_3 maps\_vehicle::vehicle_wheels_backward(); level.enemy_tank_2 kill(); level thread set_flag_when_allies_in_garage(); var_27 connectpaths(); foreach ( var_10 in var_8 ) var_10 connectnode(); var_30 = garage_wave_get_furthest(); level thread maps\_utility::activate_trigger_with_targetname( "move_to_garage" ); var_30 thread garage_wave(); common_scripts\utility::flag_set( "allies_run_for_garage" ); level.allies[0] thread maps\_utility::smart_dialogue( "flood_pri_headtotheparking" ); level.allies[0] thread allies_run_for_garage(); level.allies[1] thread allies_run_for_garage(); level.allies[2] thread allies_run_for_garage(); wait 1; var_26 setturrettargetent( level.enemy_tank_3 ); wait 0.5; level.enemy_tank_3 fire_cannon_at_target( var_26, 1, ( 0, 0, 60 ) ); level.enemy_tank_3 vehicle_setspeed( 0 ); wait 0.5; var_31 = []; var_31[var_31.size] = "run_stumble"; var_31[var_31.size] = "run_flinch"; var_31[var_31.size] = "run_duck"; for ( var_32 = 0; var_32 < 3; var_32++ ) { if ( distance2d( level.allies[var_32].origin, var_26.origin ) < 450 && level.allies[var_32].a.movement == "run" ) level.allies[var_32] thread stumble_anim( var_31[var_32] ); } var_26 kill(); var_26 playrumbleonentity( "heavy_1s" ); maps\_utility::battlechatter_on( "allies" ); } tank_invulnerable_warning() { var_0 = []; var_1 = 0; while ( isalive( self ) ) { self waittill( "damage", var_2, var_3, var_4, var_5, var_6, var_7, var_8 ); if ( isplayer( var_3 ) ) { var_0[var_0.size] = gettime(); for ( var_9 = 0; var_9 < var_0.size; var_9++ ) { if ( gettime() - var_0[var_9] > 1000 ) var_0 = maps\_utility::array_remove_index( var_0, var_9 ); } maps\flood_util::jkuprint( var_0.size + " type: " + var_6 ); if ( var_6 == "MOD_IMPACT" || var_6 == "MOD_GRENADE" || var_6 == "MOD_GRENADE_SPLASH" ) { var_1 = var_1 + 1; if ( var_1 > 1 ) maps\_utility::display_hint( "invulerable_frags" ); } else if ( var_0.size > 5 ) { var_0 = []; maps\_utility::display_hint( "invulerable_bullets" ); } } } } disable_demigod() { self.demigod = 0; self enableinvulnerability(); common_scripts\utility::delaycall( 2, ::disableinvulnerability ); } stumble_anim( var_0 ) { var_0 = maps\_utility::getgenericanim( var_0 ); self.run_overrideanim = var_0; self setflaggedanimknob( "stumble_run", var_0, 1, 0.2, 1, 1 ); wait 1.5; while ( self getanimtime( var_0 ) > 0.45 ) common_scripts\utility::waitframe(); self.run_overrideanim = undefined; self notify( "movemode" ); } garage_wave_get_furthest() { var_0 = getnode( "tanks_garage_wave", "targetname" ); var_1 = distance2d( level.allies[1].origin, var_0.origin ); var_2 = distance2d( level.allies[2].origin, var_0.origin ); if ( var_1 > var_2 ) { level.allies[1] maps\_utility::clear_force_color(); return level.allies[1]; } else { level.allies[2] maps\_utility::clear_force_color(); return level.allies[2]; } } #using_animtree("generic_human"); garage_wave() { level endon( "waver_stop" ); var_0 = getnode( "tanks_garage_wave", "targetname" ); var_1 = []; var_1[var_1.size] = %flood_garage_waving_ally_01; maps\_utility::set_force_color( "o" ); maps\_utility::disable_sprint(); self.og_goalradius = self.goalradius; self.goalradius = 0; thread release_waver(); if ( self.animname == "ally_1" ) { while ( distance2d( self.origin, level.allies[0].origin ) < 300 || distance2d( self.origin, level.allies[2].origin ) < 300 ) common_scripts\utility::waitframe(); } else { while ( distance2d( self.origin, level.allies[0].origin ) < 300 || distance2d( self.origin, level.allies[1].origin ) < 300 ) common_scripts\utility::waitframe(); } self setgoalnode( var_0 ); self waittill( "goal" ); wait 1; thread maps\_anim::anim_generic_loop( self, "garage_waving", "stop_loop" ); } release_waver() { level.player endon( "death" ); var_0 = getent( "tanks_release_waver", "targetname" ); var_0 waittill( "trigger" ); level notify( "waver_stop" ); self notify( "stop_loop" ); self stopanimscripted(); level thread maps\_utility::activate_trigger_with_targetname( "release_waver" ); self.goalradius = self.og_goalradius; } middle_tank_vo() { level.player endon( "death" ); wait 0.5; level.allies[0] maps\_utility::smart_dialogue( "flood_pri_enemyarmorgetto" ); wait 1; level maps\_utility::smart_radio_dialogue( "flood_gs6_thompsonisdown" ); level thread maps\_utility::battlechatter_off( "allies" ); level.allies[0] maps\_utility::smart_dialogue( "flood_pri_werepinneddownby" ); level maps\_utility::smart_radio_dialogue( "flood_us9_werealmostthere" ); } enemy_mg_pin_down_player( var_0, var_1 ) { level.player endon( "death" ); var_0 setmode( "manual" ); var_1 setmode( "manual" ); for (;;) { if ( ( common_scripts\utility::flag( "infil_player_in_open" ) || common_scripts\utility::flag( "infil_player_in_open_behind_tank" ) ) && !common_scripts\utility::flag( "allies_run_for_garage" ) ) { if ( isalive( var_0 ) ) { var_0 settargetentity( level.player ); var_0 startfiring(); var_0 setconvergencetime( 0 ); } var_1 settargetentity( level.player ); var_1 startfiring(); var_1 setconvergencetime( 0 ); wait_player_not_in_open_or_needs_garage(); } else if ( !common_scripts\utility::flag( "allies_run_for_garage" ) ) { if ( isalive( var_0 ) ) { var_0 stopfiring(); var_0 stopbarrelspin(); } var_1 stopfiring(); var_1 stopbarrelspin(); if ( isalive( var_0 ) ) { var_0.mg_target = var_0 enemy_mg_get_untargeted_random_target(); var_0 thread enemy_mg_adjust_if_target_dies( var_0.mg_target ); var_0 thread enemy_mg_burst_fire(); } var_1.mg_target = var_1 enemy_mg_get_untargeted_random_target(); var_1 thread enemy_mg_adjust_if_target_dies( var_1.mg_target ); var_1 thread enemy_mg_burst_fire(); common_scripts\utility::flag_wait_any( "infil_player_in_open", "infil_player_in_open_behind_tank", "allies_run_for_garage" ); if ( isalive( var_0 ) ) var_0.mg_target.is_currently_mg_target = undefined; var_1.mg_target.is_currently_mg_target = undefined; } else { var_2 = []; var_2[0] = "flood_vrg_cmoneliaskeepup"; var_2[1] = "flood_mrk_makearunfor"; var_2[2] = "flood_pri_cmoneliasgetto"; level.allies[1] maps\_utility::delaythread( 15, maps\flood_util::play_nag, var_2, "firing_garage_shot", 10, 30, 1, 2 ); while ( !common_scripts\utility::flag( "firing_garage_shot" ) ) { var_1 enemy_mg_shoot_randomly_at_player_until_he_runs_for_it(); maps\flood_util::jkuprint( "player running for it" ); var_3 = maps\_utility::get_ai_group_ai( "streets_enemy_tank_soldiers" ); foreach ( var_5 in var_3 ) var_5.baseaccuracy = 0; if ( isalive( level.infil_rpg_guy ) ) level.infil_rpg_guy.baseaccuracy = 0; level.enemy_tank_3 setturrettargetent( level.player ); var_1 setconvergencetime( 0 ); var_1 settargetentity( getent( "tank_window_node", "targetname" ) ); var_1 startfiring(); var_1 common_scripts\utility::delaycall( 1, ::setconvergencetime, 2 ); var_1 common_scripts\utility::delaycall( 1, ::settargetentity, level.player ); maps\_utility::delaythread( 1, maps\flood_util::jkuprint, "player is turret target" ); common_scripts\utility::flag_waitopen( "infil_player_in_open" ); common_scripts\utility::flag_waitopen( "infil_player_in_open_behind_tank" ); } var_1 stopfiring(); var_1 stopbarrelspin(); level.enemy_tank_3 fireweapon(); break; } common_scripts\utility::waitframe(); } } enemy_mg_shoot_randomly_at_player_until_he_runs_for_it() { self endon( "death" ); level.player endon( "death" ); level endon( "infil_player_in_open" ); level endon( "infil_player_in_open_behind_tank" ); level endon( "firing_garage_shot" ); for (;;) { self settargetentity( level.player, ( randomintrange( -100, 100 ), randomintrange( -100, 100 ), randomintrange( -100, 100 ) ) ); self startfiring(); wait( randomfloatrange( 4, 5.5 ) ); self stopfiring(); self stopbarrelspin(); wait( randomfloatrange( 1.5, 2 ) ); } } wait_player_not_in_open_or_needs_garage() { level.player endon( "death" ); level endon( "firing_garage_shot" ); for (;;) { if ( !common_scripts\utility::flag( "infil_player_in_open" ) && !common_scripts\utility::flag( "infil_player_in_open_behind_tank" ) || common_scripts\utility::flag( "allies_run_for_garage" ) ) break; else common_scripts\utility::waitframe(); } } enemy_mg_adjust_if_target_dies( var_0 ) { self endon( "death" ); level endon( "infil_player_in_open" ); level endon( "infil_player_in_open_behind_tank" ); level endon( "allies_run_for_garage" ); level endon( "firing_garage_shot" ); while ( isalive( var_0 ) ) common_scripts\utility::waitframe(); self.mg_target = enemy_mg_get_untargeted_random_target(); } enemy_mg_burst_fire() { self endon( "death" ); level endon( "infil_player_in_open" ); level endon( "infil_player_in_open_behind_tank" ); level endon( "allies_run_for_garage" ); level endon( "firing_garage_shot" ); for (;;) { wait( randomfloatrange( 3, 4 ) ); self stopfiring(); self stopbarrelspin(); wait( randomfloatrange( 1, 2.5 ) ); self.mg_target = enemy_mg_get_untargeted_random_target(); } } enemy_mg_get_untargeted_random_target() { self endon( "death" ); var_0 = getaiarray( "allies" ); var_0 = common_scripts\utility::add_to_array( var_0, level.player ); var_1 = var_0[randomint( var_0.size )]; var_2 = 0; while ( !var_2 ) { if ( !isdefined( var_1.is_currently_mg_target ) ) { var_1.is_currently_mg_target = 1; self setconvergencetime( 2 ); var_2 = 1; } else var_1 = var_0[randomint( var_0.size )]; common_scripts\utility::waitframe(); } if ( isplayer( var_1 ) ) self settargetentity( var_1 ); else if ( isdefined( var_1.sprint ) && var_1.sprint ) self settargetentity( var_1 ); else self settargetentity( var_1, ( 0, 0, randomintrange( 16, 60 ) ) ); self startfiring(); if ( isdefined( self.mg_target ) ) self.mg_target.is_currently_mg_target = undefined; return var_1; } animated_script_model( var_0, var_1, var_2, var_3 ) { if ( getdvarint( "show_script_model" ) == 0 ) return; var_4 = ( 0, -3000, 0 ); var_5 = spawn( "script_model", var_1.origin ); var_5 setmodel( var_0.model ); var_5 useanimtree( var_2 ); var_5 animscripted( "blah", var_1.origin + var_4, var_1.angles, var_3 ); var_0 waittill( "death" ); wait 1; var_5 delete(); } allies_run_for_garage() { maps\_utility::enable_sprint(); self waittill( "in_garage" ); wait 2.0; maps\_utility::disable_sprint(); self.forcesuppression = undefined; } tank_wall_stuff() { var_0 = getent( "enemy_tank", "targetname" ); var_1 = var_0 maps\_vehicle::spawn_vehicle_and_gopath(); level.enemy_tank_wall = var_1; var_1 maps\_vehicle::godon(); var_1 maps\_vehicle::mgoff(); var_1.mgturret[1] thread enemy_tank_shoot_flyin_choopers(); var_2 = getentarray( "streets_enemy_tank_soldiers", "targetname" ); foreach ( var_4 in var_2 ) { var_4 maps\_utility::add_spawn_function( ::follow_tank_enemies_spawn_func ); var_4 maps\_utility::spawn_ai(); } var_6 = getvehiclenode( "enemy_tank_wall_end", "targetname" ); var_6 waittill( "trigger" ); var_1.mgturret[1] notify( "end flyin script" ); var_1.mgturret[1] stopfiring(); var_1.mgturret[1] stopbarrelspin(); var_1.mgturret[1] cleartargetentity(); var_1.mgturret[1] setmode( "manual" ); var_1.mgturret[1] settargetentity( level.tank_ally_joel, ( 0, 0, 45 ) ); } infil_redshirts_spawn_func() { if ( !isdefined( level.street_start_allies ) ) level.street_start_allies = []; level.street_start_allies[level.street_start_allies.size] = self; maps\_utility::magic_bullet_shield( 1 ); self.grenadeawareness = 0; self.ignoreexplosionevents = 1; self.ignorerandombulletdamage = 1; self.ignoresuppression = 1; self.disablebulletwhizbyreaction = 1; maps\_utility::disable_pain(); self.dontavoidplayer = 1; common_scripts\utility::flag_wait( "allied_tank_killed" ); maps\_utility::stop_magic_bullet_shield(); self.grenadeawareness = 1; self.ignoreexplosionevents = 0; self.ignorerandombulletdamage = 0; self.ignoresuppression = 0; self.disablebulletwhizbyreaction = 0; maps\_utility::enable_pain(); self.dontavoidplayer = 0; } rpg_guy_shoot_flyin_choopers() { var_0 = getent( "infil_rpg_guy_start", "targetname" ); var_1 = var_0 maps\_utility::spawn_ai(); level.infil_rpg_guy = var_1; var_1 endon( "death" ); var_1 thread maps\flood_streets::remove_rpgs_on_death(); var_1 maps\_utility::magic_bullet_shield( 1 ); var_1.grenadeawareness = 0; var_1.ignoreexplosionevents = 1; var_1.ignorerandombulletdamage = 1; var_1.ignoresuppression = 1; var_1.disablebulletwhizbyreaction = 1; var_1 maps\_utility::disable_pain(); var_1.ignoreall = 1; var_1.ignoreme = 1; common_scripts\utility::waitframe(); var_2 = var_1 gettagorigin( "tag_flash" ) + ( 0, 0, 50 ); var_3 = common_scripts\utility::getstruct( "rpg_guy_target1", "targetname" ); common_scripts\utility::noself_delaycall( 1, ::magicbullet, "rpg_straight", var_2 + ( 0, 0, 50 ), var_3.origin ); var_1 maps\_anim::anim_generic( var_1, "rpg_reload" ); magicbullet( "rpg_straight", var_2, level.player.origin + ( 0, 100, 100 ) ); var_1 maps\_anim::anim_generic( var_1, "rpg_reload" ); magicbullet( "rpg_straight", var_2, level.player.origin + ( 0, 100, 100 ) ); var_1.grenadeammo = 0; var_1 maps\_utility::stop_magic_bullet_shield(); var_1.grenadeawareness = 1; var_1.ignoreexplosionevents = 0; var_1.ignorerandombulletdamage = 0; var_1.ignoresuppression = 0; var_1.disablebulletwhizbyreaction = 0; var_1 maps\_utility::enable_pain(); var_1.ignoreall = 0; var_1.ignoreme = 0; common_scripts\utility::flag_wait( "enemy_tank_killed" ); var_4 = getent( "streets_enemy_tank_soldiers_goal_volume_2", "targetname" ); var_1 setgoalvolumeauto( var_4 ); } follow_tank_enemies_spawn_func() { self endon( "death" ); thread enemies_attack_player_when_in_open(); var_0 = getent( "streets_enemy_tank_soldiers_goal_volume", "targetname" ); self setgoalvolumeauto( var_0 ); maps\_utility::magic_bullet_shield(); self.ignoreall = 1; self.attackeraccuracy = 0; self.grenadeawareness = 0; self.ignoreexplosionevents = 1; self.ignorerandombulletdamage = 1; self.ignoresuppression = 1; self.disablebulletwhizbyreaction = 1; var_1 = getvehiclenode( "wall_tank_past_wall", "targetname" ); var_1 waittill( "trigger" ); maps\_utility::stop_magic_bullet_shield(); common_scripts\utility::flag_wait( "enemy_tank_killed" ); self.ignoreall = 0; var_0 = getent( "streets_enemy_tank_soldiers_goal_volume_2", "targetname" ); self setgoalvolumeauto( var_0 ); wait 1; self.attackeraccuracy = 1; self.grenadeawareness = 1; self.ignoreexplosionevents = 0; self.ignorerandombulletdamage = 0; self.ignoresuppression = 0; self.disablebulletwhizbyreaction = 0; } enemy_tank_soldiers_2_init() { self endon( "death" ); thread enemies_attack_player_when_in_open(); thread enemies_magic_bullet_until_player_at_corner(); self.health = 300; maps\_utility::magic_bullet_shield(); self.attackeraccuracy = 0; self.grenadeawareness = 0; self.ignoreexplosionevents = 1; self.ignorerandombulletdamage = 1; self.ignoresuppression = 1; self.disablebulletwhizbyreaction = 1; maps\_utility::disable_pain(); self.fixednode = 1; common_scripts\utility::flag_wait( "player_at_corner" ); maps\_utility::stop_magic_bullet_shield(); self.attackeraccuracy = 1; self.grenadeawareness = 1; self.ignoreexplosionevents = 0; self.ignorerandombulletdamage = 0; self.ignoresuppression = 0; self.disablebulletwhizbyreaction = 0; maps\_utility::enable_pain(); wait 2.5; self.fixednode = 0; } enemies_magic_bullet_until_player_at_corner() { self endon( "death" ); level endon( "player_at_corner" ); for (;;) { if ( !common_scripts\utility::flag( "player_at_corner" ) ) { self waittill( "damage", var_0, var_1, var_2, var_3, var_4, var_5, var_6 ); if ( var_1 == level.player ) common_scripts\utility::flag_set( "player_at_corner" ); } common_scripts\utility::waitframe(); } } enemies_attack_player_when_in_open() { self endon( "death" ); for (;;) { common_scripts\utility::flag_wait_any( "infil_player_in_open", "infil_player_in_open_behind_tank" ); self.favoriteenemy = level.player; self.baseaccuracy = 50; common_scripts\utility::flag_waitopen( "infil_player_in_open" ); common_scripts\utility::flag_waitopen( "infil_player_in_open_behind_tank" ); self.favoriteenemy = undefined; self.baseaccuracy = 1; } } infil_heli_outside_city() { var_0 = []; var_1 = getentarray( "infil_blackhawk_outside_city", "targetname" ); foreach ( var_3 in var_1 ) var_0[var_0.size] = var_3 thread maps\_utility::spawn_vehicle(); wait 3; foreach ( var_3 in var_0 ) var_3 thread maps\_vehicle::gopath(); } infil_convoy_outside_city() { } crush_stop_sign_when_near_tank( var_0 ) { while ( distance2d( level.tank_ally_joel.origin, self.origin ) > var_0 ) wait 0.1; common_scripts\utility::flag_set( "vignette_streets_stop_sign_01" ); } rotate_barrier_when_near_tank( var_0 ) { var_1 = self.angles; var_2 = ( 0, 90, 0 ); self.angles = var_2; while ( distance2d( level.tank_ally_joel.origin, self.origin ) > var_0 ) common_scripts\utility::waitframe(); self rotateto( var_2 + ( 0, 0, -10 ), 0.2 ); wait 0.2; self rotateto( var_1, 0.6 ); wait 0.6; self rotateto( var_1 + ( 0, 0, 5 ), 0.15 ); wait 0.15; self rotateto( var_1, 0.15 ); wait 0.1; self rotateto( var_1 + ( 0, 0, -5 ), 0.1 ); wait 0.1; self rotateto( var_1, 0.1 ); } fire_cannon_at_target( var_0, var_1, var_2, var_3, var_4 ) { self endon( "death" ); self endon( "stop_firing" ); if ( !isdefined( var_1 ) ) var_1 = 10000; if ( !isdefined( var_2 ) ) var_2 = ( 0, 0, 0 ); if ( !isdefined( var_3 ) ) var_3 = randomfloatrange( 1.5, 2 ); while ( isdefined( var_0 ) && var_1 > 0 ) { if ( isdefined( self ) ) { self setturrettargetvec( var_0.origin + var_2 ); self waittill( "turret_on_target" ); if ( isdefined( var_4 ) ) thread maps\_utility::smart_radio_dialogue_overlap( var_4 ); self fireweapon(); } var_1--; if ( var_1 > 0 ) wait( var_3 ); } } set_flag_when_allies_in_garage() { var_0 = 1; var_1 = 1; var_2 = 1; var_3 = 1; while ( var_0 || var_1 || var_2 || var_3 ) { var_4 = getent( "parking_garage_doorway", "targetname" ); var_4 waittill( "trigger", var_5 ); if ( level.player istouching( var_4 ) ) var_0 = 0; if ( level.allies[0] istouching( var_4 ) ) { var_1 = 0; var_5 notify( "in_garage" ); } if ( level.allies[1] istouching( var_4 ) ) { var_2 = 0; var_5 notify( "in_garage" ); } if ( level.allies[2] istouching( var_4 ) ) { var_3 = 0; var_5 notify( "in_garage" ); } } common_scripts\utility::flag_set( "everyone_in_garage" ); } mg_turret_do_something_while_waiting_for_player() { level endon( "player_at_corner" ); level.tank_ally_joel.mgturret[0] setmode( "auto_nonai" ); while ( !common_scripts\utility::flag( "player_at_corner" ) ) { level.tank_ally_joel.mgturret[0] turretfiredisable(); level.tank_ally_joel.mgturret[0] stopbarrelspin(); wait( randomfloatrange( 3, 4.5 ) ); level.tank_ally_joel.mgturret[0] turretfireenable(); wait( randomfloatrange( 4.5, 7.5 ) ); } level.tank_ally_joel.mgturret[0] setmode( "manual" ); } react_correctly_to_tank_fire() { self.ignoresuppression = 0; self.ignorerandombulletdamage = 1; self.disablebulletwhizbyreaction = 1; self.script_dontpeek = 1; maps\_utility::disable_pain(); } set_flag_when_allies_in_position() { foreach ( var_1 in level.street_start_allies ) { if ( isdefined( var_1 ) ) var_1 pushplayer( 1 ); } var_3 = 1; while ( var_3 && !common_scripts\utility::flag( "allies_in_position" ) ) { var_4 = 0; var_5 = 0; var_6 = getent( "ally_behind_planter", "targetname" ); foreach ( var_1 in level.street_start_allies ) { if ( isdefined( var_1 ) ) { if ( var_1 istouching( var_6 ) ) var_4++; var_5++; } } if ( var_4 >= var_5 - 1 ) var_3 = 0; wait 0.1; } common_scripts\utility::flag_set( "allies_in_position" ); foreach ( var_1 in level.street_start_allies ) { if ( isdefined( var_1 ) ) var_1 pushplayer( 0 ); } } set_flag_after_timer( var_0, var_1 ) { wait( var_1 ); common_scripts\utility::flag_set( var_0 ); } kill_barriers_when_close( var_0, var_1 ) { var_0 endon( "death" ); while ( distance2d( var_0.origin, self.origin ) > var_1 ) { wait 0.1; if ( !isdefined( var_0 ) ) break; } if ( isdefined( var_0 ) ) self delete(); } infil_flyin_battle_init() { maps\_utility::delaythread( 28, ::infil_flyin_battle ); level thread maps\_utility::notify_delay( "kill enemy tank", 37 ); level thread maps\_utility::notify_delay( "start tanks", 31 ); } infil_flyin_battle() { maps\flood_util::jkuprint( "start the battle" ); var_0 = getentarray( "infil_flyin_battle_tank_destroyed", "targetname" ); var_1 = getentarray( "infil_flyin_battle_tank_ally_hummer", "targetname" ); var_2 = getentarray( "infil_flyin_battle_tank_ally", "targetname" ); var_3 = getentarray( "infil_flyin_battle_static", "targetname" ); var_4 = getent( "infil_flyin_battle_tank_enemy", "targetname" ); var_5 = common_scripts\utility::getstruct( "infil_flyin_battle_tank_enemy_target", "targetname" ); var_6 = common_scripts\utility::getstructarray( "infil_flyin_battle_tank_enemy_barrier_target", "targetname" ); var_7 = getent( "infil_flyin_battle_tank_ally_aim", "targetname" ); var_8 = getent( "infil_flyin_battle_tank_ally_bridge_l", "targetname" ); var_9 = getent( "infil_flyin_battle_tank_ally_bridge_r", "targetname" ); foreach ( var_11 in var_0 ) var_11 kill(); var_4 thread enemy_tank_spawn_func( var_6 ); var_7 common_scripts\utility::delaycall( 6, ::setturrettargetvec, var_4.origin ); var_8 maps\_utility::add_spawn_function( ::tank_spawn_func, var_5 ); var_8 = var_8 maps\_vehicle::spawn_vehicle_and_gopath(); var_9 maps\_utility::add_spawn_function( ::tank_spawn_func, var_5 ); var_9 = var_9 maps\_vehicle::spawn_vehicle_and_gopath(); foreach ( var_14 in var_1 ) { var_14 maps\_utility::add_spawn_function( ::hummer_spawn_func ); var_14 maps\_vehicle::spawn_vehicle_and_gopath(); } foreach ( var_11 in var_2 ) { var_11 maps\_utility::add_spawn_function( ::tank_moving_spawn_func ); var_11 maps\_vehicle::spawn_vehicle_and_gopath(); } level waittill( "kill enemy tank" ); maps\flood_util::jkuprint( "kill enemy tank" ); var_4 kill(); } enemy_tank_spawn_func( var_0 ) { self endon( "death" ); for (;;) { var_1 = var_0[randomintrange( 0, var_0.size )]; fire_cannon_at_target( var_1, 1 ); wait( randomfloatrange( 1.5, 3.0 ) ); } } tank_spawn_func( var_0 ) { self endon( "death" ); self vehicle_setspeed( 14, 14, 7 ); wait 1; for (;;) { if ( self vehicle_getspeed() < 1 ) { thread fire_cannon_at_target( var_0 ); break; } common_scripts\utility::waitframe(); } level waittill( "kill enemy tank" ); self notify( "stop_firing" ); level waittill( "infil kill everything" ); self delete(); } tank_moving_spawn_func() { self endon( "death" ); self vehicle_setspeed( 0, 1, 1 ); level waittill( "start tanks" ); self vehicle_setspeed( 14, 14, 7 ); level waittill( "infil kill everything" ); self delete(); } hummer_spawn_func() { self endon( "death" ); wait 1; for (;;) { if ( self vehicle_getspeed() < 0.2 ) { self joltbody( self.origin + ( 0, 0, 64 ), 100 ); break; } common_scripts\utility::waitframe(); } maps\_vehicle::vehicle_unload( "all" ); level waittill( "infil kill everything" ); self delete(); } infil_cleanup() { level notify( "infil kill everything" ); var_0 = getentarray( "infil_cleanup", "script_noteworthy" ); maps\_utility::array_delete( var_0 ); } tanks_cleanup_early() { var_0 = getentarray( "tanks_cleanup_early", "script_noteworthy" ); maps\_utility::array_delete( var_0 ); } tanks_cleanup() { var_0 = getentarray( "tanks_cleanup", "script_noteworthy" ); maps\_utility::array_delete( var_0 ); } streets_start() { level.street_start_allies = []; maps\flood_util::player_move_to_checkpoint_start( "streets_start" ); maps\flood_util::spawn_allies(); } streets() { level thread maps\_utility::autosave_by_name_silent( "streets_old" ); level thread streets_battle_blackhawk(); level thread blackhawk_countermeasure(); level thread kill_player_with_tanks( "streets_beyond_enemy_tank_2" ); level thread kill_player_with_tanks( "streets_run_for_it" ); level thread maps\flood_streets::aim_missiles_2(); level thread maps\flood_streets::hide_missile_launcher_collision(); level thread maps\flood_streets::hide_spire(); level thread maps\flood_streets::hide_garage_debris(); level thread maps\flood_streets::garage_opening_collapse(); var_0 = getent( "into_parking_garage", "targetname" ); var_0 waittill( "trigger" ); level notify( "end_streets" ); } kill_player_with_tanks( var_0 ) { var_1 = getent( var_0, "targetname" ); var_1 waittill( "trigger" ); if ( isalive( level.enemy_tank_2 ) ) { level.enemy_tank_2 setturrettargetent( level.player ); wait 0.5; level.enemy_tank_2 fireweapon(); } if ( isalive( level.enemy_tank_3 ) ) { level.enemy_tank_3 setturrettargetent( level.player ); wait 0.5; level.enemy_tank_3 fireweapon(); } if ( isalive( level.enemy_tank_3 ) ) level.player kill( level.enemy_tank_3.origin, level.enemy_tank_3, level.enemy_tank_3 ); else { wait 0.5; level.player kill(); } wait 0.1; setdvar( "ui_deadquote", &"FLOOD_TANKS_FAIL" ); level thread maps\_utility::missionfailedwrapper(); } streets_battle_blackhawk() { var_0 = getent( "trig_battle_blackhawk_fight", "targetname" ); var_0 waittill( "trigger" ); thread streets_battle_fire_rocket( "streets_battle_blackhawk_rocket_1", "streets_battle_blackhawk_missile_impact_1" ); wait 0.9; thread streets_battle_fire_rocket( "streets_battle_blackhawk_rocket_2", "streets_battle_blackhawk_missile_impact_2" ); wait 0.9; thread streets_battle_fire_rocket( "streets_battle_blackhawk_rocket_3", "streets_battle_blackhawk_missile_impact_3" ); wait 1.4; var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "streets_battle_blackhawk" ); var_1.path_gobbler = 1; var_1.script_vehicle_selfremove = 1; var_1 vehicle_setspeed( 60 ); } streets_battle_fire_rocket( var_0, var_1 ) { var_2 = getent( var_0, "targetname" ); var_2 thread maps\_utility::add_spawn_function( ::postspawn_crash_blackhawk_rocket ); var_3 = var_2 maps\_vehicle::spawn_vehicle_and_gopath(); var_3 waittill( "reached_end_node" ); var_4 = getent( var_1, "targetname" ); playfx( level._effect["temp_missile_impact"], var_4.origin ); } streets_crash_blackhawk() { } postspawn_crash_blackhawk_rocket() { self setmodel( "projectile_rpg7" ); var_0 = common_scripts\utility::getfx( "rpg_trail" ); playfxontag( var_0, self, "tag_origin" ); if ( isdefined( self.script_sound ) ) { if ( isdefined( self.script_wait ) ) common_scripts\utility::delaycall( self.script_wait, ::playsound, self.script_sound ); else self playsound( self.script_sound ); } else self playloopsound( "weap_rpg_loop" ); self waittill( "reached_end_node" ); if ( isdefined( self.script_exploder ) ) common_scripts\utility::exploder( self.script_exploder ); else if ( isdefined( self.script_fxid ) ) playfx( common_scripts\utility::getfx( self.script_fxid ), self.origin, anglestoforward( self.angles ) ); self delete(); } crash_blackhawk_missile_impacts() { var_0 = getentarray( "crash_blackhawk_missile_impact", "targetname" ); for (;;) { if ( common_scripts\utility::flag( "trig_crash_blackhawk_crash" ) ) break; var_1 = randomintrange( 0, var_0.size - 1 ); if ( isdefined( var_0[var_1] ) ) playfx( level._effect["temp_missile_impact"], var_0[var_1].origin ); var_2 = randomfloatrange( 2.25, 3.0 ); wait( var_2 ); } } blackhawk_countermeasure() { var_0 = getent( "trig_countermeasure_blackhawk", "targetname" ); var_0 waittill( "trigger" ); var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "streets_countermeasure_blackhawk" ); var_1.script_vehicle_selfremove = 1; var_1 vehicle_setspeedimmediate( 60 ); var_2 = common_scripts\utility::getfx( "chopper_countermeasure" ); var_3 = common_scripts\utility::spawn_tag_origin(); var_3.origin = var_1 gettagorigin( "tag_light_l_wing" ); var_3.angles = var_1 gettagangles( "tag_light_l_wing" ); var_3 linkto( var_1 ); var_4 = common_scripts\utility::spawn_tag_origin(); var_4.origin = var_1 gettagorigin( "tag_light_r_wing" ); var_4.angles = var_1 gettagangles( "tag_light_r_wing" ); var_4 linkto( var_1 ); wait 2.75; for ( var_5 = 0; var_5 < 5; var_5++ ) wait 0.3; var_3 delete(); var_4 delete(); } nh90_convoy_choppers() { var_0 = getent( "convoy_helicopter_crash_location", "targetname" ); var_1 = getent( "trig_enemy_convoy_choppers", "targetname" ); var_1 waittill( "trigger" ); if ( !common_scripts\utility::flag( "m880_has_spawned" ) ) { var_2 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "streets_enemy_convoy_chopper1" ); var_2 vehicle_turnengineoff(); var_2 thread maps\flood_audio::flood_convoy_chopper1_sfx(); var_2.script_vehicle_selfremove = 1; var_2 vehicle_setspeedimmediate( 60 ); var_2.perferred_crash_location = var_0; wait 2.5; var_3 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "streets_enemy_convoy_chopper2" ); var_3 vehicle_turnengineoff(); var_3 thread maps\flood_audio::flood_convoy_chopper2_sfx(); var_3.script_vehicle_selfremove = 1; var_3.perferred_crash_location = var_0; wait 1; wait 2; var_4 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "streets_enemy_convoy_chopper4" ); var_4 vehicle_turnengineoff(); var_4 thread maps\flood_audio::flood_convoy_chopper4_sfx(); var_4.script_vehicle_selfremove = 1; var_4 hidepart( "door_R", var_4.model ); var_4 hidepart( "door_R_handle", var_4.model ); var_4 hidepart( "door_R_lock", var_4.model ); var_4.perferred_crash_location = var_0; } } flag_waitopen_any( var_0, var_1 ) { while ( common_scripts\utility::flag( var_0 ) ) level waittill( var_0 ); } aent_flag_waitopen_either( var_0, var_1 ) { while ( isdefined( self ) ) { if ( !maps\_utility::ent_flag( var_0 ) ) return; if ( !maps\_utility::ent_flag( var_1 ) ) return; common_scripts\utility::waittill_either( var_0, var_1 ); } } awaittill_either( var_0, var_1 ) { self endon( var_0 ); self waittill( var_1 ); } kill_infil_enemies() { var_0 = maps\_utility::get_ai_group_ai( "streets_enemy_tank_soldiers" ); foreach ( var_2 in var_0 ) var_2 kill(); if ( isalive( level.infil_rpg_guy ) ) level.infil_rpg_guy kill(); }