mirror of
https://github.com/reaaLx/nx1-gsc-dump.git
synced 2025-04-19 07:42:54 +00:00
571 lines
21 KiB
Plaintext
571 lines
21 KiB
Plaintext
//****************************************************************************
|
|
// **
|
|
// Confidential - (C) Activision Publishing, Inc. 2010 **
|
|
// **
|
|
//****************************************************************************
|
|
// **
|
|
// Module: Hit Hard at Home **
|
|
// **
|
|
// Created: 10/4/2010 - Brian Marvin **
|
|
// **
|
|
//****************************************************************************
|
|
|
|
#include maps\_utility;
|
|
#include common_scripts\utility;
|
|
#include maps\_anim;
|
|
#include maps\_vehicle;
|
|
#include maps\_nx_utility;
|
|
#include maps\nx_hithard_util;
|
|
|
|
//*******************************************************************
|
|
// *
|
|
//*******************************************************************
|
|
|
|
main()
|
|
{
|
|
// Inits
|
|
maps\nx_hithard_fx::main();
|
|
maps\nx_hithard_precache::main();
|
|
maps\_threatid::main();
|
|
// maps\createart\nx_hithard_art::main();
|
|
|
|
// Parachute
|
|
maps\_chute::main();
|
|
|
|
// Vehicles
|
|
//maps\_luxurysedan::main( "vehicle_luxurysedan" );
|
|
//maps\_suburban::main( "vehicle_suburban" );
|
|
//maps\_truck::main( "vehicle_pickup_4door" );
|
|
|
|
// Setup cevilians
|
|
maps\_drone_civilian::init();
|
|
maps\nx_crowd_controller::main();
|
|
|
|
// Player Starts
|
|
// NOTE: This mission's objetcives are split across multiple scripts:
|
|
// 1) nx_hithard.gsc - Main script file (this file). contains player starts and references to objective script files.
|
|
// 2) nx_hithard_parachute.gsc - Osprey intro, parachute,
|
|
// 3) nx_hithard_rooftop.gsc - Library parking lot through rooftop
|
|
// 4) nx_hithard_secure.gsc - secure the motorcade objectives
|
|
// 5) nx_hithard_motorcade.gsc - Motorcade travel to ambush outside city hall
|
|
// 6) nx_hithard_charge.gsc - Traversal through city hall up to tank drop
|
|
|
|
default_start( ::playerstart_osprey );
|
|
add_start( "osprey", ::playerstart_osprey, "Osprey Intro", maps\nx_hithard_parachute::main_osprey );
|
|
add_start( "parachute", ::playerstart_parachute_jump, "Parachute", maps\nx_hithard_parachute::main_parachute_jump );
|
|
|
|
// JR - Temp start for debugging skybridge explosion
|
|
//add_start( "skybridge_debug", maps\nx_hithard_parachute::playerstart_skybridge_debug, "Skybridge Debug", maps\nx_hithard_parachute::skybridge_debug );
|
|
|
|
add_start( "rooftop", ::playerstart_rooftop, "Rooftop", maps\nx_hithard_rooftop::main_rooftop );
|
|
add_start( "secure_start", ::playerstart_secure, "Secure The Motorcade: Snipe", maps\nx_hithard_secure::main_secure );
|
|
add_start( "secure_rappel", ::playerstart_secure_rappel, "Secure The Motorcade: Rappel", maps\nx_hithard_secure::main_rappel );
|
|
add_start( "secure_ground", ::playerstart_secure_ground, "Secure The Motorcade: Ground", maps\nx_hithard_secure::main_secure_ground );
|
|
add_start( "motorcade_start", ::playerstart_motorcade, "Motorcade Drive", maps\nx_hithard_motorcade::main );
|
|
add_start( "motorcade_end", maps\nx_hithard_motorcade::motorcade_end, "Motorcade End - Debug!!!" );
|
|
|
|
// Main load / introscreen
|
|
huds = [];
|
|
huds[huds.size] = "hud_chute";
|
|
maps\_load::main( huds );
|
|
maps\nx_hithard_anim::main();
|
|
thread maps\nx_hithard_amb::main();
|
|
maps\_compass::setupMiniMap( "compass_map_nx_hithard" );
|
|
PreCacheRumble( "artillery_rumble" );
|
|
|
|
// Internal Initialization
|
|
mission_precache();
|
|
mission_flag_inits();
|
|
mission_hint_string_inits();
|
|
|
|
//set timescale factors
|
|
SoundSetTimeScaleFactor( "Mission", 0 );
|
|
SoundSetTimeScaleFactor( "Shellshock", 0 );
|
|
SoundSetTimeScaleFactor( "Voice", 0 );
|
|
SoundSetTimeScaleFactor( "Menu", 0 );
|
|
SoundSetTimeScaleFactor( "Effects1", 0 );
|
|
SoundSetTimeScaleFactor( "Effects2", 0 );
|
|
SoundSetTimeScaleFactor( "Announcer", 0 );
|
|
SoundSetTimeScaleFactor( "Music", 0 );
|
|
SoundSetTimeScaleFactor( "vignette3d", 1 );
|
|
SoundSetTimeScaleFactor( "vignette2d", 1 );
|
|
|
|
// Objective Array
|
|
level.objective = [];
|
|
|
|
// Current Objective
|
|
level.current_objective = "none";
|
|
|
|
// Squad setup
|
|
level.squad = spawn_squad();
|
|
|
|
// Setup Threatbias groups
|
|
setup_threatbias_groups();
|
|
|
|
// Setup cleanup triggers
|
|
array_thread( getentarray( "trigger_delete_parachute_all_ai", "targetname" ), maps\nx_hithard_util::delete_ai_volume_trigger_wait );
|
|
|
|
// Grab all entities on spawn (for debug purposes)
|
|
level.ai_at_start = getaiarray();
|
|
|
|
// hide the landing zone
|
|
maps\nx_hithard_fx::hide_lz();
|
|
|
|
// Mission threads
|
|
//thread the music script
|
|
level thread maps\nx_hithard_audio::mission_music();
|
|
|
|
thread maps\nx_hithard_anim::building_2_fall(); // Building 2
|
|
thread maps\nx_hithard_anim::building_4_fall(); // Building 4
|
|
// thread maps\nx_hithard_anim::hanging(); // Hanging Civs
|
|
//fx triggering and cleanup
|
|
thread maps\nx_hithard_anim::trigger_building03_04_fx_cleanup_building01(); // Building 5
|
|
|
|
thread maps\nx_hithard_fx::sequence_vision_and_fog_parachute_land(); /// parachute landing vision & fog
|
|
|
|
// init the parachute lz icon
|
|
thread maps\nx_hithard_parachute::parachute_lz_init();
|
|
|
|
// init rappel
|
|
maps\_rappel_util::rappel_setup();
|
|
}
|
|
|
|
|
|
//***************************************************************************************************************************************************************
|
|
// *
|
|
// INITIALIZATIONS *
|
|
// *
|
|
//***************************************************************************************************************************************************************
|
|
|
|
// All PreCache calls
|
|
mission_precache()
|
|
{
|
|
//Global
|
|
// chad note- adding test of motorized zoom scope weapon
|
|
PreCacheItem( "xm108_asco" ); // Main Weapon
|
|
//precacheturret( "turret_minigun_sp" ); // Turrent - For Motorcade
|
|
precacheshader( "cinematic" );
|
|
precacheshader( "cinematic_trans" );
|
|
precacheshader( "chute_landing_marker" );
|
|
precacheshader( "hint_mantle" );
|
|
PrecacheItem( "smoke_grenade_american" );
|
|
PreCacheItem( "rpg_straight" );
|
|
|
|
maps\_mi17::main( "vehicle_mi17_woodland_fly_cheap" );
|
|
PreCacheRumble( "c130_flyby" );
|
|
|
|
PreCacheString( &"NX_HITHARD_RAPPEL_HINT" );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// All mission specific flag_init() calls
|
|
mission_flag_inits()
|
|
{
|
|
flag_init( "flag_global_ltrig_pressed" );
|
|
|
|
// Objective-specific flag initializations
|
|
maps\nx_hithard_parachute::flag_inits();
|
|
maps\nx_hithard_rooftop::flag_inits();
|
|
maps\nx_hithard_secure::flag_inits();
|
|
maps\nx_hithard_motorcade::flag_inits();
|
|
maps\nx_hithard_audio::flag_inits();
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// Initialize hints
|
|
mission_hint_string_inits()
|
|
{
|
|
// Objective-specific hint-string initializations
|
|
maps\nx_hithard_parachute::hint_string_inits();
|
|
maps\nx_hithard_rooftop::hint_string_inits();
|
|
maps\nx_hithard_secure::hint_string_inits();
|
|
maps\nx_hithard_motorcade::hint_string_inits();
|
|
}
|
|
|
|
//***************************************************************************************************************************************************************
|
|
// *
|
|
// PLAYER STARTS *
|
|
// *
|
|
//***************************************************************************************************************************************************************
|
|
|
|
// Osprey intro
|
|
playerstart_osprey()
|
|
{
|
|
//stopping osprey sounds?
|
|
osprey1 = GetEnt( "hithard_osprey_01", "targetname" );
|
|
osprey1 Vehicle_TurnEngineOff();
|
|
osprey2 = GetEnt( "hithard_osprey_02", "targetname" );
|
|
osprey2 Vehicle_TurnEngineOff();
|
|
osprey3 = GetEnt( "hithard_osprey_03", "targetname" );
|
|
osprey3 Vehicle_TurnEngineOff();
|
|
osprey4 = GetEnt( "hithard_osprey_04", "targetname" );
|
|
osprey4 Vehicle_TurnEngineOff();
|
|
|
|
// Take weapons away
|
|
level._player takeallweapons();
|
|
|
|
level._player maps\_nx_utility::move_player_to_start_point( "playerstart_osprey" );
|
|
|
|
// Get Landing Zone Marker
|
|
level.parachute_landing_zone = GetEnt( "playerstart_parachute_land", "targetname" );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// Parachute jump
|
|
playerstart_parachute_jump()
|
|
{
|
|
thread maps\nx_hithard_parachute::para_clear_flags();
|
|
|
|
delete_intro_ai();
|
|
// Take weapons away
|
|
level._player takeallweapons();
|
|
|
|
level._player maps\_nx_utility::move_player_to_start_point( "playerstart_parachute_jump" );
|
|
|
|
|
|
// Turn on billboards
|
|
thread maps\nx_hithard_parachute::parachute_billboard_binks( true );
|
|
|
|
// Get Landing Zone Marker
|
|
level.parachute_landing_zone = GetEnt( "playerstart_parachute_land", "targetname" );
|
|
|
|
thread maps\nx_hithard_parachute::parachute_enemy_UGVs();
|
|
|
|
flag_set( "flag_vnode_parasecure_parachute_player_start" );
|
|
level notify( "notify_parachute_start" );
|
|
level._player PlaySound( "hithard_para_jump" );
|
|
thread maps\_utility::set_ambient( "nx_hithard_chute" );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// Parachute landing
|
|
playerstart_rooftop()
|
|
{
|
|
maps\_threatid::threat_id_enable_toggling();
|
|
|
|
// Remove intro AI
|
|
maps\nx_hithard_util::delete_all_ai_immediately();
|
|
|
|
// Remove any other straggling AI
|
|
maps\_nx_utility::delete_ai_in_volume_not_bullet_shielded( "volume_parachute_all_ai", "axis" );
|
|
|
|
// JR - Enemies no longer spawn before you land
|
|
//thread maps\nx_hithard_rooftop::prep_parachute_library_rooftop();
|
|
|
|
// Move squad to positions
|
|
ally_start_noteworthies = [ "origin_parachute_land_ally_01_start", "origin_parachute_land_ally_02_start" ];
|
|
level.squad maps\nx_hithard_util::moveAlliesToStartPoint( ally_start_noteworthies );
|
|
level.squad maps\nx_hithard_util::ignore_all_off();
|
|
|
|
// Move player to start position
|
|
level._player maps\_nx_utility::move_player_to_start_point( "playerstart_parachute_land" );
|
|
|
|
// Play the landing bink
|
|
thread maps\nx_hithard_rooftop::rooftop_landing_bink( true );
|
|
|
|
// Spawn VTOL and move it into position
|
|
maps\nx_hithard_rooftop::vtol_flyin_logic( true ) ;
|
|
|
|
// Prep the rooftop
|
|
level waittill( "notify_prep_parachute_library_rooftop_complete" );
|
|
|
|
level notify( "notify_parachute_objective_complete" );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// Secure Motorcade
|
|
playerstart_secure()
|
|
{
|
|
maps\_threatid::threat_id_enable_toggling();
|
|
|
|
// Remove intro AI
|
|
maps\nx_hithard_util::delete_all_ai_immediately();
|
|
|
|
// Remove any other straggling AI
|
|
maps\_nx_utility::delete_ai_in_volume_not_bullet_shielded( "volume_parachute_all_ai", "axis" );
|
|
|
|
// Prepare the main intersection
|
|
flag_set( "flag_prep_secure" );
|
|
thread maps\nx_hithard_secure::prep_secure_intersection( true );
|
|
|
|
// Move squad to positions
|
|
ally_start_noteworthies = [ "origin_secure_ally_02_start", "origin_secure_ally_01_start" ];
|
|
ally_set_goal_noteworthies = [ "node_secure_ally_02_cover", "node_secure_ally_01_cover" ];
|
|
level.squad maps\nx_hithard_util::moveAlliesToStartPoint( ally_start_noteworthies, ally_set_goal_noteworthies );
|
|
level.squad maps\nx_hithard_util::ignore_all_on();
|
|
|
|
level._player maps\_nx_utility::move_player_to_start_point( "playerstart_secure" );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// Secure Motorcade: Rappel
|
|
playerstart_secure_rappel()
|
|
{
|
|
// Remove intro AI
|
|
maps\nx_hithard_util::delete_all_ai_immediately();
|
|
|
|
// Remove any other straggling AI
|
|
maps\_nx_utility::delete_ai_in_volume_not_bullet_shielded( "volume_parachute_all_ai", "axis" );
|
|
|
|
// Get the numbers on the ground up
|
|
level.secure_ground_num_guys_allowed = level.secure_wave_2_num_enemies;
|
|
|
|
// Prepare the main intersection
|
|
flag_set( "flag_prep_secure" );
|
|
thread maps\nx_hithard_secure::prep_secure_intersection( false );
|
|
|
|
// Get the numbers on the ground up again (reset by prep_secure_intersection
|
|
level.secure_ground_num_guys_allowed = level.secure_wave_2_num_enemies;
|
|
|
|
// Move squad to positions
|
|
ally_start_noteworthies = [ "origin_secure_ally_02_start", "origin_secure_ally_01_start" ];
|
|
|
|
//level.squad maps\nx_hithard_util::moveAlliesToStartPoint( ally_set_goal_noteworthies, ally_set_goal_noteworthies, true );
|
|
for( i = 0; i < level.squad.size; i++ )
|
|
{
|
|
node = GetEnt( ally_start_noteworthies[ i ], "script_noteworthy" );
|
|
level.squad[ i ] ForceTeleport( node.origin );
|
|
}
|
|
|
|
// Warp player
|
|
level._player maps\_nx_utility::move_player_to_start_point( "playerstart_rappel" );
|
|
|
|
// enable threat ID usage
|
|
flag_set( "flag_script_ground_threat_id_allow" );
|
|
thread maps\_threatid::threatid_bootup_and_enable();
|
|
|
|
// Start snipe objective
|
|
objective_start( "obj_secure_snipe", &"NX_HITHARD_SECURE_OBJ_SNIPE" );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// Secure Motorcade: Ground
|
|
playerstart_secure_ground( alt_start_point, alt_ally_1_start, alt_ally_2_start )
|
|
{
|
|
// Remove intro AI
|
|
maps\nx_hithard_util::delete_all_ai_immediately();
|
|
|
|
// Remove any other straggling AI
|
|
maps\_nx_utility::delete_ai_in_volume_not_bullet_shielded( "volume_parachute_all_ai", "axis" );
|
|
|
|
// Get the numbers on the ground up
|
|
level.secure_ground_num_guys_allowed = level.secure_wave_2_num_enemies;
|
|
|
|
// Prepare the main intersection
|
|
flag_set( "flag_prep_secure" );
|
|
thread maps\nx_hithard_secure::prep_secure_intersection( false );
|
|
|
|
// Get the numbers on the ground up again (reset by prep_secure_intersection
|
|
level.secure_ground_num_guys_allowed = level.secure_wave_2_num_enemies;
|
|
|
|
// Move squad to positions
|
|
ally_set_goal_noteworthies = [ "node_secure_ground_ally_02", "node_secure_ground_ally_01" ];
|
|
|
|
level.squad maps\nx_hithard_util::moveAlliesToStartPoint( ally_set_goal_noteworthies, ally_set_goal_noteworthies, true );
|
|
|
|
level.squad set_fixednode_true_array();
|
|
|
|
// Warp player
|
|
level._player maps\_nx_utility::move_player_to_start_point( "playerstart_secure_ground" );
|
|
|
|
// Send in spawners under cover of smoke
|
|
// Turn on the spawn pool (as "wave_1" ground enemies die, new ones will spawn to keep the threat level at "awesomesauce")
|
|
thread maps\nx_hithard_secure::spawn_smoke();
|
|
|
|
// enable threat ID usage
|
|
flag_set( "flag_script_ground_threat_id_allow" );
|
|
thread maps\_threatid::threatid_bootup_and_enable();
|
|
|
|
waittillframeend;
|
|
|
|
// Send false notify to get smoke to spawn
|
|
level._player notify( "notify_rappel_start" );
|
|
|
|
// Start snipe objective
|
|
objective_start( "obj_secure_snipe", &"NX_HITHARD_SECURE_OBJ_SNIPE" );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
playerstart_motorcade()
|
|
{
|
|
// Remove intro AI
|
|
maps\nx_hithard_util::delete_all_ai_immediately();
|
|
|
|
// Remove any other straggling AI
|
|
maps\_nx_utility::delete_ai_in_volume_not_bullet_shielded( "volume_parachute_all_ai", "axis" );
|
|
|
|
// Remove placeholder noclip brushes (so motorcade doesn't try to run over them)
|
|
maps\nx_hithard_util::delete_secure_barricade();
|
|
|
|
// Move player
|
|
level._player maps\_nx_utility::move_player_to_start_point( "playerstart_secure_ground" );
|
|
|
|
// Move your squad
|
|
//node_baker = getnode ("node_baker_door_kick", "script_noteworthy");
|
|
node_baker = getnode ("node_baker_transition1", "script_noteworthy");
|
|
level.squad[0] ForceTeleport( node_baker.origin, node_baker.angles );
|
|
//node_gypsy = getnode ("node_gypsy_transition0", "script_noteworthy");
|
|
node_gypsy = getnode ("node_gypsy_transition1", "script_noteworthy");
|
|
level.squad[1] ForceTeleport( node_gypsy.origin, node_gypsy.angles );
|
|
|
|
// Spawn VP and SS
|
|
spawners = getentarray( "vp_ss", "targetname" );
|
|
array_thread( spawners, ::spawn_ai );
|
|
level.secure_vip = get_living_ai ( "vp_transition", "script_noteworthy");
|
|
level.secure_vip magic_bullet_shield();
|
|
level.secure_vip maps\nx_hithard_anim::init_vp_anims();
|
|
level.secure_vip.animname = "vp";
|
|
level.secure_vip.dontmelee = true;
|
|
|
|
level.ss_fodder1 = get_living_ai ( "ss_fodder1", "script_noteworthy");
|
|
level.ss_fodder2 = get_living_ai ( "ss_fodder2", "script_noteworthy");
|
|
level.ss_fodder3 = get_living_ai ( "ss_fodder3", "script_noteworthy");
|
|
|
|
fodder_guys = [ level.ss_fodder1, level.ss_fodder2, level.ss_fodder3 ];
|
|
fodder_guys prep_ss_motorcade_array();
|
|
}
|
|
|
|
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// Initializae threat bias groups
|
|
setup_threatbias_groups()
|
|
{
|
|
// Global
|
|
CreateThreatBiasGroup( "squad" );
|
|
CreateThreatBiasGroup( "player" );
|
|
|
|
// Rooftop
|
|
CreateThreatBiasGroup( "rooftop_guards" );
|
|
CreateThreatBiasGroup( "rooftop_fastropers" );
|
|
|
|
// Secure
|
|
CreateThreatBiasGroup( "secure_vip_guard" );
|
|
CreateThreatBiasGroup( "secure_wave_1" );
|
|
CreateThreatBiasGroup( "secure_wave_1_front_0" );
|
|
CreateThreatBiasGroup( "secure_vip" );
|
|
CreateThreatBiasGroup( "secure_wave_cortel" );
|
|
CreateThreatBiasGroup( "secure_wave_bon" );
|
|
CreateThreatBiasGroup( "secure_wave_uavs" );
|
|
|
|
// Apply group to player and allies
|
|
level._player SetThreatBiasGroup( "player" );
|
|
foreach( guy in level.squad )
|
|
{
|
|
guy SetThreatBiasGroup( "allies" );
|
|
guy SetThreatBiasGroup( "squad" );
|
|
}
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// Spawn squad members
|
|
spawn_squad()
|
|
{
|
|
// Script Noteworthies for main squad members used to create level.squad
|
|
//
|
|
// Baker is "ally_01" (level.squad[0])
|
|
// Gypsy is "ally_02" (level.squad[1])
|
|
|
|
squad_noteworthies = ["ally_01", "ally_02"];
|
|
|
|
squad_spawner = [];
|
|
|
|
for( i = 0; i < squad_noteworthies.size; i++ )
|
|
{
|
|
squad_spawner[ i ] = GetEnt( squad_noteworthies[ i ], "script_noteworthy" );
|
|
}
|
|
|
|
squad = array_spawn_function( squad_spawner, ::vip_spawnfunc );
|
|
|
|
if ( !isdefined( squad ))
|
|
{
|
|
for( i = 0; i < squad_spawner.size; i++ )
|
|
{
|
|
squad[ i ] = squad_spawner[ i ] spawn_ai();
|
|
}
|
|
}
|
|
|
|
return squad;
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// Spawnfunc for squad members
|
|
vip_spawnfunc()
|
|
{
|
|
self thread magic_bullet_shield();
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// Deletes intro AI
|
|
delete_intro_ai()
|
|
{
|
|
level.intro_ai_noteworthies = [];
|
|
|
|
// List of all ai and vehicles used in intro (to be deleted if jumping past intro sequence)
|
|
level.intro_ai_noteworthies =
|
|
[
|
|
"hithard_intro_pilot1",
|
|
"hithard_intro_pilot2",
|
|
"hithard_intro_ally1",
|
|
"hithard_intro_ally2",
|
|
"hithard_intro_ally3",
|
|
"hithard_intro_ally4",
|
|
"hithard_intro_ally5",
|
|
"squad_ally_osprey",
|
|
"squad_osprey"
|
|
];
|
|
|
|
maps\nx_hithard_util::delete_array_of_ai( level.intro_ai_noteworthies );
|
|
}
|
|
|
|
|
|
|