nx1-gsc-dump/maps/nx_skyscraper_outro.gsc

241 lines
8.6 KiB
Plaintext

//****************************************************************************
// **
// Confidential - (C) Activision Publishing, Inc. 2010 **
// **
//****************************************************************************
// **
// Module: MISSION DESCRIPTION **
// **
// Created: 8/10/2011 - Alan Flores **
// **
//****************************************************************************
#include maps\_utility;
#include maps\_utility_code;
#include maps\_nx_objective_util;
#include common_scripts\utility;
#include maps\_anim;
#include maps\_vehicle;
#include maps\_nx_utility;
#include maps\nx_skyscraper_util;
//*******************************************************************
// OUTRO *
// *
//*******************************************************************
outro_start()
{
//level._player maps\_nx_utility::move_player_to_start_point( "playerstart_outro" );
flag_set( "flag_atrum_crash_done" );
level._player.ignoreme = true;
maps\nx_skyscraper_util::spawn_baker();
}
outro_sequence()
{
flag_wait( "flag_atrum_crash_done" );
level._player unlink();
level._player FreezeControls( false );
level._player allowprone( true );
level._player allowcrouch( true );
flag_set( "flag_outro_start" );
level._player maps\_nx_utility::move_player_to_start_point( "playerstart_outro" );
thread lobby_fire_fx();
thread lobby_baker_control();
thread lobby_squad_a_control();
thread lobby_spawn_enemies();
thread lobby_spawn_civilians();
thread lobby_stumble_walk();
thread outro_mission_end();
}
lobby_fire_fx()
{
node_fire_fx01 = GetEnt( "node_fire_fx01", "targetname");
PlayFx( level._effect[ "firelp_large_pm_bh1" ], node_fire_fx01.origin );
node_fire_fx02 = GetEnt( "node_fire_fx02", "targetname");
PlayFx( level._effect[ "firelp_large_pm_bh1" ], node_fire_fx02.origin );
node_fire_fx03 = GetEnt( "node_fire_fx03", "targetname");
PlayFx( level._effect[ "firelp_large_pm_bh1" ], node_fire_fx03.origin );
node_smoke_fx01 = GetEnt( "node_smoke_fx01", "targetname");
PlayFx( level._effect[ "room_smoke_200" ], node_smoke_fx01.origin );
// spawn the downed helicopter model
node_crashed_heli = GetEnt( "node_crashed_heli", "targetname" );
model = spawn( "script_model", node_crashed_heli.origin );
model.angles = node_crashed_heli.angles;
model setmodel( "vehicle_blackhawk_crash" );
wait 0.25;
explosion_base = GetEnt( "outro_explosion_base", "targetname");
PlayFX( level._effect["nx_explosion_skybridge"], explosion_base.origin );
wait 1.0;
explosion_base = GetEnt( "outro_explosion_base2", "targetname");
PlayFX( level._effect["nx_explosion_skybridge"], explosion_base.origin );
fire_base1 = GetEnt( "fire_fallingdebris_base1", "targetname" );
fire_base2 = GetEnt( "fire_fallingdebris_base2", "targetname" );
fire_base3 = GetEnt( "fire_fallingdebris_base3", "targetname" );
fire_base4 = GetEnt( "fire_fallingdebris_base4", "targetname" );
fire_base5 = GetEnt( "fire_fallingdebris_base5", "targetname" );
while(1)
{
PlayFX( level._effect["fire_fallingdebris"], fire_base1.origin );
wait randomfloatrange(0.35, 1.0);
PlayFX( level._effect["fire_fallingdebris"], fire_base4.origin );
wait randomfloatrange(0.35, 1.0);
PlayFX( level._effect["fire_fallingdebris"], fire_base3.origin );
wait randomfloatrange(0.35, 1.0);
PlayFX( level._effect["fire_fallingdebris"], fire_base2.origin );
wait randomfloatrange(0.35, 1.0);
PlayFX( level._effect["fire_fallingdebris"], fire_base5.origin );
wait randomfloatrange(0.35, 1.0);
}
}
lobby_baker_control()
{
outro_vehicle = spawn_vehicle_from_targetname( "outro_vehicle" );
baker_teleport = GetEnt ("baker_outro_teleport", "targetname");
level.baker ForceTeleport( baker_teleport.origin, baker_teleport.angles);
//wait 0.25;
//
baker_wounded_lobby();
//level.baker.ignoreme = true;
level.baker.ignorerandombulletdamage = true;
level.baker.ignoresupression = true;
level.baker.fixednode = false;
level.baker.disableBulletWhizbyReaction = true;
level.baker disable_pain();
level.baker.dontavoidplayer = true;
level.baker.goalradius = 8;
baker_node = GetNode( "node_baker_outro1", "targetname" );
level.baker SetGoalNode( baker_node );
level.baker enable_cqbwalk();
}
baker_wounded_lobby()
{
level.baker.ignoreall = true;
level.baker.ignoreme = true;
// level.baker.animname = "baker";
node = GetEnt( "node_anim_wounded", "script_noteworthy" );
node anim_reach_solo( level.baker, "hunted_dazed_walk_C_limp" );
node anim_single_solo( level.baker, "hunted_dazed_walk_C_limp" );
node2 = GetEnt( "node_anim_wounded2", "script_noteworthy" );
node2 anim_single_solo( level.baker, "hunted_dazed_walk_C_limp" );
node3 = GetEnt( "node_anim_wounded3", "script_noteworthy" );
node3 anim_single_solo( level.baker, "hunted_dazed_walk_C_limp" );
node4 = GetEnt( "node_anim_wounded4", "script_noteworthy" );
//node4 anim_single_solo( level.baker, "hunted_dazed_walk_C_limp" );
node4 anim_single_run_solo( level.baker, "hunted_dazed_walk_C_limp" );
}
lobby_squad_a_control()
{
level.squad_a1 = spawn_targetname( "squad_A1", true );
level.squad_a2 = spawn_targetname( "squad_A2", true );
wait 0.25;
level.squad_a1.goalradius = 8;
level.squad_a2.goalradius = 8;
squad_a1_node = GetNode( "node_guard_A1", "targetname" );
squad_a2_node = GetNode( "node_guard_A2", "targetname" );
level.squad_a1 SetGoalNode( squad_a1_node );
level.squad_a2 SetGoalNode( squad_a2_node );
level.squad_a1 magic_bullet_shield();
level.squad_a2 magic_bullet_shield();
//level.squad_a1 waittill( "goal" );
wait 3.5;
level.baker.ignoreme = true;
//thread add_dialogue_line( "Squad A", "Baker! Spectre! We've got an exfil vehicle outside. Move, move, move!", "g" );
radio_dialogue( "sky_teama_outro_exfiloutside" );
flag_wait( "flag_outro_start" );
move_trigger = getent ( "squad_A_move_trigger", "targetname" );
move_trigger waittill( "trigger" );
squad_a1_node = GetNode( "node_guard_A1_1", "targetname" );
squad_a2_node = GetNode( "node_guard_A2_1", "targetname" );
level.squad_a1 SetGoalNode( squad_a1_node );
level.squad_a2 SetGoalNode( squad_a2_node );
//thread add_dialogue_line( "Squad A", "Let's go. Now!", "g" );
radio_dialogue( "sky_teama_outro_letsgonow" );
}
lobby_spawn_enemies()
{
array_thread( GetEntArray( "outro_enemies", "script_noteworthy" ), ::spawn_ai );
// if the player hasn't hit the exit yet flood the place with enemies and kill the player
wait 20.0;
level.squad_a1.ignoreme = true;
level.squad_a2.ignoreme = true;
level._player.ignoreme = false;
array_thread( GetEntArray( "outro_enemy_flood", "script_noteworthy" ), ::spawn_ai );
}
lobby_spawn_civilians()
{
array_thread( GetEntArray( "outro_civilian_spawner", "script_noteworthy" ), ::spawn_ai );
//spawners = GetEntArray( "outro_civilian_spawner", "script_noteworthy" );
//array_thread( spawners, ::spawn_ai );
//wait 0.1;
//spawners = get_living_ai_array( "outro_civilian_spawner", "script_noteworthy" );
spawners = get_living_ai_array( "outro_civilian_no_death", "targetname" );
foreach (spawner in spawners)
{
spawner magic_bullet_shield();
spawner.a.nodeath = true;
spawner setCanDamage( false );
}
}
lobby_stumble_walk()
{
level._player shellshock("default", 100);
level thread player_wakeup_movement_speed( 0.8 );
black_overlay = maps\_hud_util::create_client_overlay( "black", 1 );
black_overlay maps\_hud_util::fade_over_time( 1, 0.5 ); // Fade Out
wait 0.2;
black_overlay maps\_hud_util::fade_over_time( 0, 1.0 ); // Fade In
wait 0.4;
black_overlay Destroy();
level._ground_ref_ent = spawn( "script_model", ( 0, 0, 0 ) );
level._player playerSetGroundReferenceEnt( level._ground_ref_ent );
}
player_wakeup_movement_speed( speed )
{
level._player AllowCrouch( false );
level._player AllowProne( false );
level._player AllowJump( false );
level._player AllowSprint( false );
// Turn off the stance HUD indicator while the player cannot crouch
SetSavedDvar( "ammoCounterHide", "1" );
level._player blend_movespeedscale( 0.25, 0.1 );
level._player delayThread( 1, ::blend_movespeedscale, speed, 5 );
}
outro_mission_end()
{
flag_wait( "flag_outro_start" );
end_mission_trigger = getent ( "end_mission_trigger", "targetname" );
end_mission_trigger waittill( "trigger" );
nextmission();
}