// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool air_strip_secured_init() { level.start_point = "air_strip_secured"; setdvar( "debug_sat_view_pip", "1" ); objective_add( maps\_utility::obj( "rendesvouz" ), "invisible", &"SATFARM_OBJ_RENDESVOUZ" ); objective_state_nomessage( maps\_utility::obj( "rendesvouz" ), "done" ); objective_add( maps\_utility::obj( "reach_air_strip" ), "invisible", &"SATFARM_OBJ_REACH_AIR_STRIP" ); objective_state_nomessage( maps\_utility::obj( "reach_air_strip" ), "done" ); objective_add( maps\_utility::obj( "air_strip_defenses" ), "invisible", &"SATFARM_OBJ_DESTROY_AIR_STRIP_DEFENSES" ); objective_state_nomessage( maps\_utility::obj( "air_strip_defenses" ), "done" ); maps\satfarm_code::kill_spawners_per_checkpoint( "air_strip_secured" ); } air_strip_secured_main() { if ( level.start_point == "air_strip_secured" ) maps\satfarm_code::spawn_player_checkpoint( "air_strip_secured" ); maps\satfarm_code::kill_spawners_per_checkpoint( "air_strip_secured" ); level.start_point = "air_strip_secured"; maps\satfarm_code::spawn_allies(); if ( !isdefined( level.playertank ) ) { } else { } thread air_strip_secured_begin(); common_scripts\utility::flag_wait( "air_strip_secured_end" ); } air_strip_secured_begin() { var_0 = getaiarray( "axis" ); thread maps\_utility::ai_delete_when_out_of_sight( var_0, 2048 ); var_1 = maps\_utility::getvehiclearray(); foreach ( var_3 in var_1 ) { if ( isdefined( var_3.script_team ) && var_3.script_team == "axis" ) var_3 thread maps\satfarm_code::enemytank_cleanup(); } if ( isdefined( level.air_strip_m880s ) && level.air_strip_m880s.size > 0 ) { foreach ( var_6 in level.air_strip_m880s ) { if ( isdefined( var_6 ) ) var_6 delete(); } } if ( isdefined( level.air_strip_m880_corpses ) && level.air_strip_m880_corpses.size > 0 ) { foreach ( var_9 in level.air_strip_m880_corpses ) { if ( isdefined( var_9 ) ) var_9 delete(); } } var_11 = getent( "hangar_door_breakable", "targetname" ); if ( isdefined( var_11 ) ) var_11 delete(); thread air_strip_victory(); maps\_utility::autosave_by_name( "air_strip_secured" ); } air_strip_victory() { var_0 = common_scripts\utility::getstructarray( "green_smoke_structs", "targetname" ); foreach ( var_2 in var_0 ) { if ( level.start_point != "air_strip_secured" ) wait( randomfloatrange( 0.1, 2.0 ) ); playfx( level._effect["signal_smoke_green"], var_2.origin ); } if ( level.start_point != "air_strip_secured" ) wait 1.0; wait 1.0; level.player thread air_strip_to_chopper(); } victory_choppers_land( var_0 ) { var_1 = maps\_vehicle::vehicle_get_riders_by_group( "passengers" ); self waittill( "unloaded" ); common_scripts\utility::array_thread( var_1, maps\satfarm_code::send_to_volume_and_delete, var_0 ); common_scripts\utility::flag_wait( "player_landed" ); foreach ( var_3 in var_1 ) { if ( isdefined( var_3 ) ) var_3 delete(); } if ( isdefined( self ) ) self delete(); } ally_chopper_unload() { common_scripts\utility::flag_wait( "enable_ghost2_rappel" ); level.ally_littlebird_1 thread littlebird_hover(); common_scripts\utility::flag_wait( "enable_player_rappel" ); common_scripts\utility::flag_wait( "player_landed" ); wait 1; common_scripts\utility::flag_set( "ghost2_landed" ); var_0 = getent( "control_room_balcony_clip", "targetname" ); var_0 notsolid(); var_0 connectpaths(); common_scripts\utility::flag_wait( "ghost2_littlebird_path_end" ); level.ally_littlebird_1 delete(); } littlebird_hover() { self setgoalyaw( self.angles[1] ); self settargetyaw( self.angles[1] ); self sethoverparams( 0, 0, 0 ); self setmaxpitchroll( 0, 0 ); self setvehgoalpos( self.origin, 1 ); self vehicle_setspeedimmediate( 0 ); self vehicle_teleport( self.origin, self.angles ); } air_strip_to_chopper() { common_scripts\utility::flag_set( "air_strip_secured_begin" ); if ( isdefined( level.hintelement ) ) level.hintelement maps\_hud_util::destroyelem(); setsaveddvar( "cg_cinematicFullScreen", "1" ); setsaveddvar( "cg_cinematicCanPause", "1" ); cinematicingame( "satfarm_transition_ghost" ); while ( cinematicgetframe() <= 1 ) common_scripts\utility::waitframe(); level.cinematic_started = 1; if ( isdefined( level.playertank ) ) { level.playertank maps\satfarm_code::dismount_tank( level.player, 0, undefined, undefined, 1 ); if ( isdefined( level.playertank ) ) { level.playertank hide(); level.playertank setcontents( 0 ); } } level thread maps\satfarm_audio::overlord_trans1(); level.player freezecontrols( 1 ); level.player hideviewmodel(); level.player enableinvulnerability(); level.player disableweapons(); level.player disableoffhandweapons(); level.player setstance( "stand" ); level.player allowprone( 0 ); level.player allowcrouch( 0 ); level.player allowsprint( 0 ); level.player allowjump( 0 ); level.player.ignoreme = 1; setsaveddvar( "ammoCounterHide", "1" ); setsaveddvar( "actionSlotsHide", "1" ); setsaveddvar( "compass", 0 ); setsaveddvar( "hud_showStance", 0 ); thread sat_view_ally_and_enemy_tanks(); thread sat_view_spawn_ally_choppers(); level.cinematic_over = undefined; while ( iscinematicplaying() ) { level.bink_current_time = cinematicgettimeinmsec(); level.bink_percentage = level.bink_current_time / 16000; if ( level.bink_percentage >= 0.45 ) { if ( !common_scripts\utility::flag( "spawn_sat_view_ally_choppers" ) ) common_scripts\utility::flag_set( "spawn_sat_view_ally_choppers" ); } wait 0.05; } level.cinematic_over = 1; level.player showviewmodel(); level.player.ignoreme = 0; setsaveddvar( "cg_fov", 65 ); setsaveddvar( "cg_cinematicCanPause", "0" ); thread switch_to_ghost_intro_screen(); thread maps\_utility::autosave_by_name( "chopper_ride_in" ); common_scripts\utility::flag_set( "chopper_flyin_begin" ); level.player thread maps\_utility::vision_set_fog_changes( "satfarm_helicopter", 0.5 ); level.player_chopper_anim_struct = common_scripts\utility::getstruct( "player_chopper_anim_struct", "targetname" ); maps\_utility::array_spawn_function_targetname( "air_strip_secured_ambient_enemies_wave_1", ::air_strip_secured_ambient_enemies_setup ); level.air_strip_secured_ambient_enemies_wave_1 = maps\_utility::array_spawn_targetname( "air_strip_secured_ambient_enemies_wave_1", 1 ); var_0 = getent( "air_strip_secured_ac_unit_damage_brush", "targetname" ); var_0 setcandamage( 1 ); var_1 = common_scripts\utility::getstructarray( "air_strip_secured_ac_unit_damage_struct", "targetname" ); var_0 thread watch_damage_to_rooftop_destructibles( var_1, 250, "air_strip_secured_ambient_enemies_volume_3" ); var_2 = getent( "air_strip_secured_gas_tank_damage_brush", "targetname" ); var_2 setcandamage( 1 ); var_3 = common_scripts\utility::getstructarray( "air_strip_secured_gas_tank_damage_struct", "targetname" ); var_2 thread watch_damage_to_rooftop_destructibles( var_3, 300, "air_strip_secured_ambient_enemies_volume_1" ); thread chopper_drive_in_vo(); thread control_room_combat(); common_scripts\utility::flag_wait( "start_first_rpg" ); var_4 = common_scripts\utility::getstruct( "first_rpg_magicbullet_start", "targetname" ); var_5 = common_scripts\utility::getstruct( "first_rpg_magicbullet_end", "targetname" ); magicbullet( "rpg_straight", var_4.origin, var_5.origin ); common_scripts\utility::flag_wait( "start_rpg" ); var_4 = common_scripts\utility::getstruct( "rpg_magicbullet1_start", "targetname" ); var_5 = common_scripts\utility::getstruct( "rpg_magicbullet1_end", "targetname" ); magicbullet( "rpg_straight", var_4.origin, var_5.origin ); wait 0.5; var_4 = common_scripts\utility::getstruct( "rpg_magicbullet2_start", "targetname" ); var_5 = common_scripts\utility::getstruct( "rpg_magicbullet2_end", "targetname" ); magicbullet( "rpg_straight", var_4.origin, var_5.origin ); common_scripts\utility::flag_wait( "enable_player_rappel" ); level.player_littlebird thread littlebird_hover(); wait 1.5; thread maps\satfarm_code::radio_dialog_add_and_go( "satfarm_hsh_jumpadam" ); wait 0.5; thread maps\_utility::display_hint( "HINT_JUMP" ); thread player_is_ignored(); thread player_jump_to_tower(); common_scripts\utility::flag_wait( "player_landed" ); if ( isdefined( level.player_littlebird ) ) level.player_littlebird delete(); thread allies_move_up_in_control_room(); common_scripts\utility::flag_wait( "control_room_enemies_dead" ); level.player disableinvulnerability(); common_scripts\utility::flag_set( "air_strip_secured_end" ); } switch_to_ghost_intro_screen() { level.introscreen.lines = []; level.introscreen.lines[0] = ""; level.introscreen.lines[1] = &"SATFARM_INTROSCREEN_GHOST_LINE_2"; level.introscreen.lines[2] = &"SATFARM_INTROSCREEN_GHOST_LINE_3"; level.introscreen.lines[3] = &"SATFARM_INTROSCREEN_GHOST_LINE_4"; maps\_introscreen::introscreen( 1 ); } player_chopper_flyin_setup() { if ( isdefined( level.ps3 ) ) setsaveddvar( "r_znear", 10 ); level.player playerlinktodelta( level.player_littlebird, "tag_player1", 1, 80, 80, 7, 40, 1 ); var_0 = level.player_littlebird.mgturret[0]; level.player setplayerangles( ( 0, -90, 0 ) ); level.player_littlebird hidepart( "side_door_l_jnt" ); var_0 makeusable(); var_0 useby( level.player ); var_0 makeunusable(); level.player disableturretdismount(); thread maps\_minigun_viewmodel::player_viewhands_minigun( var_0, "viewhands_player_gs_stealth" ); var_0 thread maps\_minigun_viewmodel::show_hands( "viewhands_player_gs_stealth" ); level.friendlyfire_enable_attacker_owner_check = 1; var_0.owner = level.player; level.player freezecontrols( 1 ); while ( !isdefined( level.cinematic_over ) ) wait 0.05; wait 1; level.player freezecontrols( 0 ); } watch_damage_to_rooftop_destructibles( var_0, var_1, var_2 ) { self waittill( "damage" ); foreach ( var_4 in var_0 ) { radiusdamage( var_4.origin, var_1, 500, 350 ); thread common_scripts\utility::play_sound_in_space( "satf_tank_death_player", self.origin ); } foreach ( var_7 in level.air_strip_secured_ambient_enemies_wave_1 ) { if ( isalive( var_7 ) ) { if ( var_7.target == var_2 ) var_7 kill(); } } } air_strip_secured_ambient_enemies_setup() { self endon( "death" ); self.base_accuracy = 0.01; self.accuracy = 0.01; self.health = 5; self.favoriteenemy = level.player; common_scripts\utility::flag_wait( "start_control_room_combat" ); self kill(); } player_is_ignored() { wait 2; if ( !common_scripts\utility::flag( "start_jump" ) ) level.player.ignoreme = 0; } player_jump_to_tower() { thread player_jump_check(); thread player_move_left_stick_check(); var_0 = maps\_utility::spawn_anim_model( "player_arms" ); var_0 hide(); level.player_chopper_anim_struct maps\_anim::anim_first_frame_solo( var_0, "satfarm_control_tower_player" ); var_1 = maps\_utility::spawn_anim_model( "chopper_turret" ); var_1 hide(); level.player_chopper_anim_struct maps\_anim::anim_first_frame_solo( var_1, "satfarm_control_tower_turret" ); common_scripts\utility::flag_wait( "start_jump" ); level thread maps\satfarm_audio::tower_jump(); level.player.ignoreme = 1; level.player playerlinktoblend( var_0, "tag_player", 0.5 ); wait 0.5; if ( isdefined( level.ps3 ) ) setsaveddvar( "r_znear", 4 ); level.player enableturretdismount(); level.player_littlebird.mgturret[0] maketurretinoperable(); level.player_littlebird.mgturret[0] setturretdismountorg( var_0 gettagorigin( "tag_player" ) ); level.player_littlebird.mgturret[0] useby( self ); level.player_littlebird.mgturret[0] turretfiredisable(); level.player_littlebird.mgturret[0] hide(); level.friendlyfire_enable_attacker_owner_check = undefined; var_1 show(); level.player playerlinktoblend( var_0, "tag_player", 0.25 ); level.player playerlinktoabsolute( var_0, "tag_player" ); var_0 show(); level.player_chopper_anim_struct thread maps\_anim::anim_single_solo( var_1, "satfarm_control_tower_turret" ); level.player_chopper_anim_struct thread maps\_anim::anim_single_solo( var_0, "satfarm_control_tower_player" ); var_0 waittillmatch( "single anim", "glass_break" ); var_2 = getglass( "player_window" ); if ( !isglassdestroyed( var_2 ) ) destroyglass( var_2 ); wait 0.5; level.player playrumbleonentity( "damage_light" ); wait 1.5; level.player enableweapons(); level.player enableoffhandweapons(); var_0 waittillmatch( "single anim", "end" ); level.player allowprone( 1 ); level.player allowcrouch( 1 ); level.player allowsprint( 1 ); level.player allowjump( 1 ); level.player unlink(); var_0 delete(); var_1 delete(); setsaveddvar( "ammoCounterHide", "0" ); setsaveddvar( "actionSlotsHide", "0" ); setsaveddvar( "compass", 1 ); setsaveddvar( "hud_showStance", 1 ); common_scripts\utility::flag_set( "player_landed" ); maps\_utility::autosave_by_name( "jump_to_tower" ); level.player.ignoreme = 0; thread maps\satfarm_tower::breach_setup(); wait 1; level.player disableinvulnerability(); } player_jump_check() { level endon( "start_jump" ); notifyoncommand( "playerjump", "+gostand" ); notifyoncommand( "playerjump", "+moveup" ); level.player waittill( "playerjump" ); common_scripts\utility::flag_set( "start_jump" ); } player_move_left_stick_check() { level endon( "start_jump" ); for (;;) { var_0 = level.player getnormalizedmovement(); if ( var_0[0] > 0 ) { common_scripts\utility::flag_set( "start_jump" ); break; } wait 0.05; } } timer_on_player_jump() { level endon( "start_jump" ); wait 20; common_scripts\utility::flag_set( "start_jump" ); } allies_move_up_in_control_room() { common_scripts\utility::flag_wait_either( "player_has_left_control_room_balcony", "control_room_three_left" ); if ( common_scripts\utility::flag( "control_room_three_left" ) && !common_scripts\utility::flag( "player_landed" ) ) common_scripts\utility::flag_wait( "player_has_left_control_room_balcony" ); maps\_utility::activate_trigger_with_targetname( "move_allies_to_control_room_2" ); } hint_jump_off() { return common_scripts\utility::flag( "start_jump" ); } air_strip_secured_vo() { maps\satfarm_code::radio_dialog_add_and_go( "satfarm_bgr_overlordairstripissecure" ); wait 0.5; maps\satfarm_code::radio_dialog_add_and_go( "satfarm_hqr_solidcopybadgeroneone" ); wait 0.5; maps\satfarm_code::radio_dialog_add_and_go( "satfarm_cu3_supportontheway" ); wait 0.5; maps\satfarm_code::radio_dialog_add_and_go( "satfarm_hqr_highvalueacquisition" ); } chopper_drive_in_vo() { wait 1.5; common_scripts\utility::flag_wait( "start_control_room_combat" ); maps\_utility::autosave_by_name( "chopper_ride_in_2" ); objective_add( maps\_utility::obj( "launch_missile" ), "current", &"SATFARM_OBJ_LAUNCH_MISSILE" ); wait 1; common_scripts\utility::flag_set( "ghost1_start_firing" ); thread maps\_utility::set_team_bcvoice( "allies", "taskforce" ); maps\_utility::battlechatter_on( "allies" ); maps\_utility::flavorbursts_on( "allies" ); level.player thread maps\_utility::vision_set_fog_changes( "satfarm_helicopter_b", 1 ); } control_room_combat() { wait 0.5; maps\_utility::battlechatter_on( "axis" ); maps\_utility::array_spawn_function_targetname( "control_room_enemies", ::control_room_enemy_setup ); level.control_room_enemies = maps\_utility::array_spawn_targetname( "control_room_enemies", 1 ); wait 0.1; thread control_room_threatbiasgroup( level.control_room_enemies ); thread maps\satfarm_code::ai_array_killcount_flag_set( level.control_room_enemies, 5, "spawn_control_room_enemies_wave_2" ); thread spawn_in_wave_2(); common_scripts\utility::flag_wait( "enable_player_rappel" ); maps\_utility::array_spawn_function_targetname( "control_room_enemies_upper", ::control_room_enemies_upper_setup ); var_0 = maps\_utility::array_spawn_targetname( "control_room_enemies_upper", 1 ); common_scripts\utility::flag_wait( "player_landed" ); thread maps\satfarm_tower::ambient_building_explosions( "breach_start" ); while ( level.control_room_enemies.size > 4 ) { level.control_room_enemies = maps\_utility::array_removedead_or_dying( level.control_room_enemies ); wait 0.05; } var_1 = getent( "control_room_back_volume", "targetname" ); if ( !level.player istouching( var_1 ) ) { var_2 = maps\_utility::array_spawn_targetname( "control_room_enemies_wave_3", 1 ); level.control_room_enemies = common_scripts\utility::array_combine( level.control_room_enemies, var_2 ); } while ( level.control_room_enemies.size > 3 ) { level.control_room_enemies = maps\_utility::array_removedead_or_dying( level.control_room_enemies ); wait 0.05; } common_scripts\utility::flag_set( "control_room_three_left" ); level.control_room_enemies = maps\_utility::array_removedead_or_dying( level.control_room_enemies ); var_1 = getent( "control_room_lower_volume", "targetname" ); foreach ( var_4 in level.control_room_enemies ) { var_4 maps\_utility::set_fixednode_false(); var_4 cleargoalvolume(); var_4.health = 50; var_4 setgoalvolumeauto( var_1 ); } thread maps\satfarm_code::cleanup_enemies( "start_loading_bay_runners", level.control_room_enemies ); maps\_utility::waittill_dead_or_dying( level.control_room_enemies ); common_scripts\utility::flag_set( "control_room_enemies_dead" ); } spawn_in_wave_2() { common_scripts\utility::flag_wait( "spawn_control_room_enemies_wave_2" ); maps\_utility::array_spawn_function_targetname( "control_room_enemies_wave_2", ::control_room_enemy_wave_2_setup ); var_0 = maps\_utility::array_spawn_targetname( "control_room_enemies_wave_2", 1 ); level.control_room_enemies = common_scripts\utility::array_combine( level.control_room_enemies, var_0 ); } control_room_threatbiasgroup( var_0 ) { createthreatbiasgroup( "ignore_group" ); createthreatbiasgroup( "control_room" ); level.player setthreatbiasgroup( "ignore_group" ); level.allies[0] setthreatbiasgroup( "ignore_group" ); foreach ( var_2 in var_0 ) { if ( isdefined( var_2 ) && isalive( var_2 ) ) var_2 setthreatbiasgroup( "control_room" ); } setignoremegroup( "ignore_group", "control_room" ); common_scripts\utility::flag_wait( "enable_player_rappel" ); level.player setthreatbiasgroup(); level.allies[0] setthreatbiasgroup(); createthreatbiasgroup( "new_group" ); level.player setthreatbiasgroup( "new_group" ); level.allies[0] setthreatbiasgroup( "new_group" ); setthreatbias( "new_group", "control_room", 200 ); } control_room_enemy_setup() { self endon( "death" ); self.health = 50; self.ignoreme = 1; common_scripts\utility::flag_wait( "start_control_room_combat" ); wait 1; self.ignoreme = 0; if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "rooftop_rpgs" ) { self.ignoreme = 1; self.ignoreall = 1; common_scripts\utility::flag_wait( "start_rpg" ); self.health = 5; self.ignoreall = 0; common_scripts\utility::flag_wait( "start_control_room_combat" ); wait( randomfloatrange( 0.3, 1.0 ) ); var_0 = common_scripts\utility::getstruct( "rooftop_rpg_magicbullet_start", "targetname" ); var_1 = self gettagorigin( "j_head" ); magicbullet( level.tower_redshirt.weapon, var_0.origin, var_1 ); wait 0.3; magicbullet( level.tower_redshirt.weapon, var_0.origin, var_1 ); } if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "control_room_runner_1" ) { maps\_utility::magic_bullet_shield(); common_scripts\utility::flag_wait( "control_room_runner_1" ); maps\_utility::stop_magic_bullet_shield(); self.ignoreall = 1; maps\_utility::set_fixednode_false(); var_2 = getent( "control_room_lower_volume", "targetname" ); self setgoalvolumeauto( var_2 ); self waittill( "goal" ); self.ignoreall = 0; } if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "control_room_runner_2" ) { self.ignoreme = 1; common_scripts\utility::flag_wait( "control_room_runner_2" ); self.ignoreme = 0; self.ignoreall = 1; maps\_utility::set_fixednode_false(); var_2 = getent( "control_room_lower_volume", "targetname" ); self setgoalvolumeauto( var_2 ); self waittill( "goal" ); self.ignoreall = 0; } if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "control_room_runner_3" ) { maps\_utility::magic_bullet_shield(); common_scripts\utility::flag_wait( "control_room_runner_1" ); maps\_utility::stop_magic_bullet_shield(); common_scripts\utility::flag_wait( "control_room_runner_2" ); wait 1.25; self.ignoreall = 1; maps\_utility::set_fixednode_false(); var_2 = getent( "control_room_lower_volume", "targetname" ); self setgoalvolumeauto( var_2 ); self waittill( "goal" ); self.ignoreall = 0; } common_scripts\utility::flag_wait( "player_landed" ); var_2 = getent( "control_room_upper_volume", "targetname" ); if ( self istouching( var_2 ) ) { wait( randomfloatrange( 0.3, 1.5 ) ); self kill(); } } control_room_enemy_wave_2_setup() { self endon( "death" ); if ( self.target == "control_room_lower_front_volume" ) maps\_utility::set_fixednode_false(); } control_room_enemies_upper_setup() { self endon( "death" ); wait 0.5; maps\_utility::magic_bullet_shield(); self.favoriteenemy = level.tower_redshirt; common_scripts\utility::flag_wait( "player_landed" ); maps\_utility::stop_magic_bullet_shield(); wait 1; self.favoriteenemy = undefined; self clearenemy(); common_scripts\utility::flag_wait_any( "control_room_three_left", "player_leaving_control_room" ); self.ignoreall = 1; wait( randomfloatrange( 0.3, 0.8 ) ); var_0 = getent( "upper_delete_volume", "targetname" ); self setgoalvolumeauto( var_0 ); for (;;) { if ( self istouching( var_0 ) ) break; wait 0.05; } var_0 = getent( "upper_volume", "targetname" ); if ( level.player istouching( var_0 ) ) { self.ignoreall = 0; maps\_utility::player_seek_enable(); } else self delete(); } remove_ally_tanks() { wait 2; if ( isdefined( level.herotanks ) ) { foreach ( var_1 in level.herotanks ) var_1 delete(); } } sat_view_ally_and_enemy_tanks() { thread remove_ally_tanks(); common_scripts\utility::flag_wait( "spawn_sat_view_ally_choppers" ); var_0 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "sat_view_ally_tanks" ); level.allytanks = common_scripts\utility::array_combine( level.allytanks, var_0 ); common_scripts\utility::array_thread( var_0, maps\satfarm_code::dumb_tank_shoot ); level.sat_view_enemy_tanks = maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "sat_view_enemy_tanks" ); level.enemytanks = common_scripts\utility::array_combine( level.enemytanks, level.sat_view_enemy_tanks ); common_scripts\utility::array_thread( var_0, maps\satfarm_code::dumb_tank_shoot ); common_scripts\utility::flag_wait( "chopper_flyin_begin" ); wait 3; var_1 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "victory_a10s" ); common_scripts\utility::flag_wait( "enable_player_rappel" ); var_2 = getentarray( "air_strip_secured_left_side_tanks", "script_noteworthy" ); foreach ( var_4 in var_2 ) { if ( isdefined( var_4 ) ) var_4 delete(); } common_scripts\utility::flag_wait( "player_landed" ); foreach ( var_4 in var_0 ) { if ( isdefined( var_4 ) ) var_4 delete(); } foreach ( var_4 in level.sat_view_enemy_tanks ) { if ( isdefined( var_4 ) ) var_4 delete(); } } sat_view_spawn_ally_choppers() { common_scripts\utility::flag_wait( "spawn_sat_view_ally_choppers" ); level.player_littlebird = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "player_littlebird" ); level.allies[0] thread allies_ride_chopper( level.player_littlebird, "ghost1_start_firing" ); level.player_littlebird setmaxpitchroll( 5, 5 ); wait 0.05; thread player_chopper_flyin_setup(); level.ally_littlebird_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "ally_littlebird_1" ); maps\_utility::array_spawn_function_targetname( "tower_redshirt", ::tower_redshirt_setup ); level.tower_redshirt = maps\_utility::spawn_targetname( "tower_redshirt", 1 ); level.tower_redshirt thread allies_ride_chopper( level.ally_littlebird_1, "ghost2_start_firing" ); level.ally_littlebird_1 thread ally_chopper_unload(); level.ally_littlebird_2 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "ally_littlebird_2" ); var_0 = getent( "air_strip_secured_delete_volume_1", "targetname" ); level.ally_littlebird_2 thread victory_choppers_land( var_0 ); level.ally_littlebird_3 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "ally_littlebird_3" ); var_0 = getent( "air_strip_secured_delete_volume_2", "targetname" ); level.ally_littlebird_3 thread victory_choppers_land( var_0 ); } tower_redshirt_setup() { self endon( "death" ); self.animname = "merrick"; if ( !isdefined( self.magic_bullet_shield ) ) maps\_utility::magic_bullet_shield(); common_scripts\utility::flag_wait( "ghost2_littlebird_path_end" ); if ( isdefined( self.magic_bullet_shield ) ) maps\_utility::stop_magic_bullet_shield(); self delete(); } allies_ride_chopper( var_0, var_1 ) { if ( self.animname == "hesh" ) { self linkto( var_0, "tag_detach_left", ( 0, 0, 0 ), ( 0, 0, 0 ) ); var_0 thread maps\_anim::anim_loop_solo( self, "little_bird_casual_idle_hesh", "stop_loop", "tag_detach_left" ); while ( !isdefined( level.cinematic_over ) ) wait 0.05; var_0 notify( "stop_loop" ); var_0 maps\_anim::anim_single_solo( self, "satfarm_control_tower_intro_hesh_talk", "tag_detach_left" ); var_0 thread maps\_anim::anim_loop_solo( self, "little_bird_casual_idle_hesh", "stop_loop", "tag_detach_left" ); common_scripts\utility::flag_wait( var_1 ); var_0 notify( "stop_loop" ); var_0 maps\_anim::anim_single_solo( self, "satfarm_control_tower_transition_hesh", "tag_detach_left" ); var_0 thread maps\_anim::anim_loop_solo( self, "satfarm_control_tower_alert_hesh", "stop_loop", "tag_detach_left" ); common_scripts\utility::flag_wait( "start_jump" ); var_0 notify( "stop_loop" ); self unlink(); level.player_chopper_anim_struct thread maps\_anim::anim_single_solo( self, "satfarm_control_tower_hesh" ); self waittillmatch( "single anim", "glass_break" ); var_2 = getglass( "ghost1_window" ); if ( !isglassdestroyed( var_2 ) ) destroyglass( var_2 ); self waittillmatch( "single anim", "end" ); var_3 = getnode( "ghost1_control_room_node", "targetname" ); maps\_utility::set_goalradius( 16 ); self setgoalnode( var_3 ); maps\_utility::set_fixednode_true(); self waittill( "goal" ); maps\_utility::set_fixednode_false(); } else { self linkto( var_0, "tag_detach_right", ( 0, 0, 0 ), ( 0, 0, 0 ) ); var_0 thread maps\_anim::anim_loop_solo( self, "little_bird_casual_idle_merrick", "stop_loop", "tag_detach_right" ); common_scripts\utility::flag_wait( var_1 ); var_0 notify( "stop_loop" ); var_0 maps\_anim::anim_single_solo( self, "satfarm_control_tower_transition_merrick", "tag_detach_right" ); var_0 thread maps\_anim::anim_loop_solo( self, "satfarm_control_tower_alert_merrick", "stop_loop", "tag_detach_right" ); } }