nx1-gsc-dump/maps/nx_rocket_section_gantry.gsc

243 lines
8.0 KiB
Plaintext

//****************************************************************************
// **
// Confidential - (C) Activision Publishing, Inc. 2010 **
// **
//****************************************************************************
// **
// Module: NX_ROCKET_SECTION_GANTRY **
// **
// Created: 7/13/2011 - Justin Rote **
// **
//****************************************************************************
#include maps\_utility;
#include common_scripts\utility;
#include maps\_anim;
#include maps\_vehicle;
//*******************************************************************
// *
// GANTRY ATTACK - From jumping out of the chopper to placing C4 *
// *
//*******************************************************************
start()
{
level._player maps\_nx_utility::move_player_to_start_point( "playerstart_gantry_attack" );
// Spawn chopper that just dropped you off
dropoff_chopper = spawn_vehicle_from_targetname_and_drive( "littlebird_rescue_heli" );
// dropoff_chopper = maps\nx_rocket_util::rescue_chopper_setup( "littlebird_rescue_heli", "targetname" );
dropoff_chopper thread maps\nx_rocket_section_littlebird::kill_littlebird_after_path();
// Hide the final gantry animated swing arm
swing_arm_bits = GetEntArray( "final_gantry_arm_extended", "targetname" );
foreach( bit in swing_arm_bits )
{
bit hide();
}
}
main()
{
thread maps\_utility::set_ambient( "nx_rocket_ext" );
// Setup some spawn funcs
//array_spawn_function_noteworthy( "fgantry_f0_guys_01", maps\nx_rocket_util::run_to_goal_then_aggro );
array_spawn_function_noteworthy( "fgantry_f0_guys_02", maps\nx_rocket_util::run_to_goal_then_aggro );
array_spawn_function_noteworthy( "fgantry_f1_guys_01", maps\nx_rocket_util::run_to_goal_then_aggro );
array_spawn_function_noteworthy( "fgantry_f1_guys_03", maps\nx_rocket_util::run_to_goal_then_aggro );
// Move baker to gantry
// Eventually he will jump out of the chopper
level.squad[ "ALLY_BAKER" ] StopAnimScripted();
level.squad[ "ALLY_BAKER" ] Unlink();
teleport_info = [];
teleport_info[ "ALLY_BAKER" ] = "start_baker_gantry";
maps\nx_rocket_util::squad_teleport( teleport_info );
//level.squad[ "ALLY_BAKER" ] thread show_debug_follow_on_baker();
Objective_SetPointerTextOverride( obj( "OBJ_DESTROY_FINAL_ROCKET" ), &"NX_ROCKET_FOLLOW_MARKER" );
Objective_OnEntity( obj( "OBJ_DESTROY_FINAL_ROCKET" ), level.squad[ "ALLY_BAKER" ], (0, 0, 90) );
// Start the dialogue thread
thread gantry_dialogue();
thread rocket_five_fx();
// Start the baker movement thread
thread gantry_baker_movement();
flag_wait( "flag_at_gantry_jump_down" );
}
//*******************************************************************
// *
// *
//*******************************************************************
section_precache()
{
PreCacheModel("machinery_railing_single_long02");
}
section_flag_inits()
{
flag_init( "gantry_arm_anim_done" );
}
gantry_baker_movement()
{
level endon( "flag_at_gantry_jump_down" );
// Baker setup
level.squad[ "ALLY_BAKER" ].script_forcegoal = true;
// Ignore everything
level.squad[ "ALLY_BAKER" ].moveplaybackrate = 1.2;
level.squad[ "ALLY_BAKER" ].grenadeawareness = 0;
level.squad[ "ALLY_BAKER" ].ignoreexplosionevents = true;
level.squad[ "ALLY_BAKER" ].ignorerandombulletdamage = true;
level.squad[ "ALLY_BAKER" ].ignoresuppression = true;
level.squad[ "ALLY_BAKER" ].disableBulletWhizbyReaction = true;
level.squad[ "ALLY_BAKER" ] disable_pain();
//==========================
// FLOOR 0
//==========================
flag_wait( "flag_gantry_f0_01" );
// Wait for tangos to die
flag_wait( "flag_gantry_f0_01_guys_dead" );
issue_color_orders( "g400", "allies" );
//==========================
// FLOOR 1
//==========================
flag_wait( "flag_gantry_f1_03_guys_dead" );
issue_color_orders( "g404", "allies" );
//==========================
// FLOOR 2
//==========================
// Spawn this extra safety thread to make sure baker doesnt get stuck
thread gantry_floor_two_move_baker();
thread final_gantry_objective_logic();
flag_wait( "flag_gantry_f1_stairs_down" );
level.squad[ "ALLY_BAKER" ].ignoreall = true;
flag_wait( "flag_gantry_f2_baker_in_pos" );
level.squad[ "ALLY_BAKER" ].ignoreall = false;
}
// Baker was getting stuck here,
// so this extra script will make sure he moves his ass
gantry_floor_two_move_baker()
{
level endon( "flag_gantry_f2_baker_in_pos" );
level waittill( "flag_gantry_f2_01_guys_dead" );
issue_color_orders( "g405", "allies" );
}
// Handles the mission objective markers for the end of the mission
final_gantry_objective_logic()
{
flag_wait( "flag_at_gantry_jump_down" );
hint_node = GetEnt( "gantry_jump_objective", "targetname" );
// JR - This does not work
// We need a special version of the asset that is suffixed "_obj" to act as the glow model version
// Make railing glow
//railing = getent( "gantry_jump_railing", "targetname" );
//railing glow();
// Turn off follow marker on Baker
Objective_ClearAllAdditionalEntities( obj( "OBJ_DESTROY_FINAL_ROCKET" ));
// Add extra objective text
objective_setpointertextoverride( obj( "OBJ_DESTROY_FINAL_ROCKET" ), &"NX_ROCKET_JUMP_DOWN" );
objective_position( obj( "OBJ_DESTROY_FINAL_ROCKET" ), hint_node.origin );
flag_wait( "flag_gantry_player_jumped_down" );
hint_node = GetEnt( "place_c4_objective", "targetname" );
objective_setpointertextoverride( obj( "OBJ_DESTROY_FINAL_ROCKET" ), &"NX_ROCKET_PLACE_C4" );
objective_position( obj( "OBJ_DESTROY_FINAL_ROCKET" ), hint_node.origin );
level waittill( "gantry_attack_c4_placed" );
objective_clearAdditionalPositions( obj( "OBJ_DESTROY_FINAL_ROCKET" ));
flag_wait( "gantry_arm_anim_done" );
wait 0.1;
objective_setpointertextoverride( obj( "OBJ_DESTROY_FINAL_ROCKET" ), &"" );
Objective_OnEntity( obj( "OBJ_DESTROY_FINAL_ROCKET" ), level.playerHeli, (0, 0, -50) );
}
gantry_dialogue()
{
// JR - Disabled the debug VO untill it can be updated with the proper audio VO lines
/*
wait 3.0;
thread add_dialogue_line( "Baker", "Lets go!!", "w" );
flag_wait( "gantry_attack_at_gantry" );
thread add_dialogue_line( "Baker", "Lockwood go! Get a charge on the hull!! Ill cover you.", "w" );
level waittill( "gantry_attack_c4_placed" );
wait 3.0;
thread add_dialogue_line( "Baker", "Theyre popping the walkways!!", "w" );
level waittill( "gantry_attack_swing_arm_done" );
wait 2.0;
thread add_dialogue_line( "Williams", "Come on! Jump in!!", "w" );
*/
}
rocket_five_fx()
{
wait 2;
//level endon( "rocket_1_destroyed" );
//self playsound("rocket_launch_close"); //plays the rocket launching sequence sound
exploder("rocketlaunch05_base_smoke_jets");
exploder("rocketlaunch05_base_sparkjets");
wait 10;
exploder("rocketlaunch05_jet_ignite");
wait 5;
//exploder("rocketlaunch_exhaust_01");
//wait 9;
//PlayFXOnTag( level._effect[ "nx_smoke_rocket_afterburner_liftoff" ], self, "j_tag_booster" );
//wait 1;
exploder("rocketlaunch05_blast");
//self playloopsound("rocket_launch_loop"); //looping rocket sound for when it goes in the air forever
// Stop FX with:
//thread stop_rocket_one_prelaunch_fx_on_destroy( self );
//thread stop_rocket_one_afterburn_fx_on_destroy( self );
//thread stop_rocket_one_prelaunch_fx_on_wait();
}
// Displays a debug follow text on Baker
show_debug_follow_on_baker()
{
level endon( "flag_at_gantry_jump_down" );
for( ; ; )
{
Print3d( self.origin + (0,0,60), "FOLLOW", (1,1,1), 1, 0.8, 1 );
wait(0.05);
}
}