mirror of
https://github.com/reaaLx/nx1-gsc-dump.git
synced 2025-04-23 17:45:47 +00:00
796 lines
26 KiB
Plaintext
796 lines
26 KiB
Plaintext
//****************************************************************************
|
|
// **
|
|
// Confidential - (C) Activision Publishing, Inc. 2010 **
|
|
// **
|
|
//****************************************************************************
|
|
// **
|
|
// Module: Hit Hard at Home on foot and Tank Drive Section **
|
|
// **
|
|
// Created: 2-7-11 Alan Flores **
|
|
// **
|
|
//****************************************************************************
|
|
|
|
#include maps\_utility;
|
|
#include common_scripts\utility;
|
|
#include maps\_anim;
|
|
#include maps\_vehicle;
|
|
#include maps\nx_hithard_b_util;
|
|
#include maps\_nx_utility;
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
main()
|
|
{
|
|
// Player Starts
|
|
// default_start( ::playerstart_default );
|
|
// add_start( "city_hall_escape_start", ::playerstart_patriot_run, "Run Through City Hall", maps\nx_hithard_b_patriot_run::city_hall_escape_main );
|
|
add_start( "escort_start", ::playerstart_escort, "Patriot Escort", maps\nx_hithard_b_patriot_run::escort_main );
|
|
add_start( "mall_tunnel_start", ::playerstart_mall_tunnel, "Civilian Rescue", maps\nx_hithard_b_patriot_run::mall_tunnel_main );
|
|
add_start( "plaza_2_start", ::playerstart_plaza_2, "Plaza 2", maps\nx_hithard_b_patriot_run::plaza_enc_main );
|
|
add_start( "monorail_start", ::playerstart_monorail_station, "Monorail Station", maps\nx_hithard_b_monorail_station::monorail_station_main );
|
|
add_start( "onramp_start", ::playerstart_onramp, "Onramp", maps\nx_hithard_b_on_ramp::onramp_main );
|
|
add_start( "vphit_start", ::playerstart_vphit, "VP Hit", maps\nx_hithard_b_on_ramp::onramp_moment_vphit );
|
|
add_start( "bravo_start", ::playerstart_bravo, "Bravo Company", maps\nx_hithard_b_on_ramp::onramp_moment_bravo );
|
|
add_start( "tank_start", ::playerstart_tank, "Tank Rage" );
|
|
|
|
// Internal Initialization
|
|
mission_flag_inits();
|
|
mission_precache();
|
|
mission_globals();
|
|
init_doors();
|
|
|
|
// External Initialization
|
|
maps\nx_hithard_b_precache::main();
|
|
maps\nx_hithard_b_fx::main();
|
|
maps\_threatid::main();
|
|
|
|
maps\_load::main();
|
|
|
|
maps\nx_hithard_b_anim::main();
|
|
thread maps\nx_hithard_b_amb::main();
|
|
|
|
// Init for using UGVs as boundary guards
|
|
maps\_nx_utility::boundry_trigger_planes_init();
|
|
|
|
// Main load / introscreen
|
|
maps\_compass::setupMiniMap( "compass_map_nx_hithard" );
|
|
|
|
// Dead civilian logic
|
|
thread maps\nx_hithard_b_anim::dead_men_setup();
|
|
|
|
// Squad setup
|
|
level.squad = spawn_squad();
|
|
|
|
maps\_drone_civilian::init();
|
|
maps\nx_crowd_controller::main();
|
|
|
|
maps\_threatid::threat_id_enable_toggling();
|
|
}
|
|
|
|
// All mission specific PreCache calls
|
|
mission_precache()
|
|
{
|
|
// HIND WEAPONS
|
|
precacheItem( "hind_turret" );
|
|
|
|
// chad note- adding test of motorized zoom scope weapon
|
|
PreCacheItem( "xm108_asco" ); // Main Weapon
|
|
PrecacheItem( "smoke_grenade_american" );
|
|
PreCacheItem( "flash_grenade" );
|
|
PreCacheItem( "rpg_straight" );
|
|
PreCacheItem( "rpg_straight_no_impact" );
|
|
|
|
// stand in for aerial troop delivery vehicle
|
|
// maps\_nx_chinese_vtol::main( "nx_vehicle_chinese_vtol", "ugv_cabin" );
|
|
|
|
add_hint_string( "hint_tank_fire", &"NX_HITHARD_B_HINT_TANK_FIRE", ::hint_instructions);
|
|
add_hint_string( "hint_tank_guns", &"NX_HITHARD_B_HINT_TANK_GUNS", ::hint_instructions);
|
|
|
|
//Rumble precache
|
|
PreCacheRumble( "c130_flyby" );
|
|
PreCacheRumble( "artillery_rumble" );
|
|
|
|
level._effect[ "vehicle_explosion_hummer" ] = LoadFX( "explosions/vehicle_explosion_hummer" );
|
|
|
|
PreCacheString( &"NX_HITHARD_B_HINT_MOVE_PATRIOT" );
|
|
|
|
// Temp UGV explosion
|
|
}
|
|
|
|
// All mission specific flag_init() calls
|
|
mission_flag_inits()
|
|
{
|
|
maps\nx_hithard_b_patriot_run::flag_inits();
|
|
maps\nx_hithard_b_monorail_station::flag_inits();
|
|
maps\nx_hithard_b_on_ramp::flag_inits();
|
|
|
|
flag_init( "flag_ugv1_go" );
|
|
flag_init( "flag_ugv2_go" );
|
|
flag_init( "flag_building1" );
|
|
flag_init( "flag_chopper1_go" );
|
|
flag_init( "flag_chopper2_go" );
|
|
flag_init( "flag_freeway_explosion" );
|
|
flag_init( "flag_tank_slow1" );
|
|
flag_init( "flag_tank_stop1" );
|
|
flag_init( "flag_end_mission" );
|
|
}
|
|
|
|
init_doors()
|
|
{
|
|
// city hall east exit door
|
|
// level.door_ch_east_exit = make_door_from_prefab( "door_ch_east_exit", 95, -95 );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// Mission specific music thread
|
|
mission_music()
|
|
{
|
|
// Here is an example of how to wait for a flag, and then change music
|
|
// Reminder: These flags must be initialized in the mission_flag_inits() script
|
|
// http://wiki2.neversoft.com/index.php/COD:_Step_By_Step_-_Adding_Music_To_A_Mission
|
|
|
|
// flag_wait( "music_nx_repel_intro_start_flag" );
|
|
// play_music_once( "nx_repel_intro" );
|
|
// flag_wait( "music_nx_repel_battle_start_flag" );
|
|
// play_music_num_times( "nx_repel_battle_1", 2 );
|
|
}
|
|
|
|
mission_globals()
|
|
{
|
|
level.tank = GetEnt( "vehicle_rg_tank", "script_noteworthy");
|
|
level.chopper1 = GetEnt( "chopper1", "script_noteworthy");
|
|
level.chopper2 = GetEnt( "chopper2", "script_noteworthy");
|
|
level.ugv1 = GetEnt( "ugv1", "script_noteworthy");
|
|
level.ugv2 = GetEnt( "ugv2", "script_noteworthy");
|
|
level.ugv3 = GetEnt( "ugv3", "script_noteworthy");
|
|
level.ugv4 = GetEnt( "ugv4", "script_noteworthy");
|
|
}
|
|
|
|
set_squad_colors()
|
|
{
|
|
level.squad[0] set_force_color( "b" ); // Baker
|
|
level.squad[1] set_force_color( "b" ); // Gypsy
|
|
level.squad[2] set_force_color( "p" ); // VP Price
|
|
level.squad[3] set_force_color( "r" ); // SS Walker
|
|
level.squad[4] set_force_color( "r" ); // SS Hayes
|
|
}
|
|
|
|
// Initializae threat bias groups
|
|
setup_threatbias_groups()
|
|
{
|
|
// Global
|
|
CreateThreatBiasGroup( "allies" );
|
|
CreateThreatBiasGroup( "player" );
|
|
CreateThreatBiasGroup( "vp" );
|
|
|
|
// Plaza 1
|
|
CreateThreatBiasGroup( "upper_deck_threats" );
|
|
CreateThreatBiasGroup( "vp_threats" );
|
|
|
|
// Apply group to player and allies
|
|
level._player SetThreatBiasGroup( "player" );
|
|
foreach( guy in level.squad )
|
|
{
|
|
guy SetThreatBiasGroup( "allies" );
|
|
}
|
|
|
|
// Set VP to a threatbias group
|
|
level.squad[2] SetThreatBiasGroup( "vp" );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// PLAYER START SETUPS *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
playerstart_default()
|
|
{
|
|
// Move squad to positions
|
|
ally_start_noteworthies = [ "origin_default_ally_01", "origin_default_ally_02", "origin_default_ally_vp_price", "origin_default_ally_ss_walker", "origin_default_ally_ss_hayes" ];
|
|
ally_set_goal_noteworthies = [ "node_default_ally_01", "node_default_ally_02", "node_default_ally_vp_price", "node_default_ally_ss_walker", "node_default_ally_ss_hayes" ];
|
|
|
|
set_squad_colors();
|
|
level.squad maps\nx_hithard_b_util::moveAlliesToStartPoint( ally_start_noteworthies, ally_set_goal_noteworthies );
|
|
|
|
level._player maps\_nx_utility::move_player_to_start_point( "playerstart_default" );
|
|
level.squad maps\nx_hithard_b_util::ignore_all_off();
|
|
level.squad[2].ignoreall = true; // Setting the VP to not take part in the action
|
|
}
|
|
|
|
playerstart_patriot_run()
|
|
{
|
|
// Move squad to positions
|
|
ally_start_noteworthies = [ "origin_city_hall_escape_ally_01", "origin_city_hall_escape_ally_02", "origin_city_hall_escape_ally_vp_price", "origin_city_hall_escape_ally_ss_walker", "origin_city_hall_escape_ally_ss_hayes" ];
|
|
ally_set_goal_noteworthies = [ "node_city_hall_escape_ally_01", "node_city_hall_escape_ally_02", "node_city_hall_escape_ally_vp_price", "node_city_hall_escape_ally_ss_walker", "node_city_hall_escape_ally_ss_hayes" ];
|
|
|
|
set_squad_colors();
|
|
level.squad maps\nx_hithard_b_util::moveAlliesToStartPoint( ally_start_noteworthies, ally_set_goal_noteworthies );
|
|
|
|
level._player maps\_nx_utility::move_player_to_start_point( "playerstart_city_hall_escape_start" );
|
|
level.squad maps\nx_hithard_b_util::ignore_all_off();
|
|
level.squad[2].ignoreall = true; // Setting the VP to not take part in the action
|
|
}
|
|
|
|
playerstart_escort()
|
|
{
|
|
// Move squad to positions
|
|
ally_start_noteworthies = [ "origin_escort_patriot_ally_01", "origin_escort_patriot_ally_02", "origin_escort_patriot_ally_vp_price", "origin_escort_patriot_ally_ss_walker", "origin_escort_patriot_ally_ss_hayes" ];
|
|
ally_set_goal_noteworthies = [ "node_escort_patriot_ally_01", "node_escort_patriot_ally_02", "node_escort_patriot_ally_vp_price", "node_escort_patriot_ally_ss_walker", "node_escort_patriot_ally_ss_hayes" ];
|
|
|
|
set_squad_colors();
|
|
level.squad maps\nx_hithard_b_util::moveAlliesToStartPoint( ally_start_noteworthies, ally_set_goal_noteworthies );
|
|
|
|
level._player maps\_nx_utility::move_player_to_start_point( "escort_start" );
|
|
level.squad maps\nx_hithard_b_util::ignore_all_off();
|
|
level.squad[2].ignoreall = true; // Setting the VP to not take part in the action
|
|
}
|
|
|
|
playerstart_mall_tunnel()
|
|
{
|
|
// Move squad to positions
|
|
ally_start_noteworthies = [ "origin_mall_tunnel_ally_01", "origin_mall_tunnel_ally_02", "origin_mall_tunnel_ally_vp_price", "origin_mall_tunnel_ally_ss_walker", "origin_mall_tunnel_ally_ss_hayes" ];
|
|
ally_set_goal_noteworthies = [ "node_mall_tunnel_ally_01", "node_mall_tunnel_ally_02", "node_mall_tunnel_ally_vp_price", "node_mall_tunnel_ally_ss_walker", "node_mall_tunnel_ally_ss_hayes" ];
|
|
|
|
set_squad_colors();
|
|
level.squad maps\nx_hithard_b_util::moveAlliesToStartPoint( ally_start_noteworthies, ally_set_goal_noteworthies );
|
|
|
|
level._player maps\_nx_utility::move_player_to_start_point( "mall_tunnel_start" );
|
|
level.squad maps\nx_hithard_b_util::ignore_all_off();
|
|
level.squad[2].ignoreall = true; // Setting the VP to not take part in the action
|
|
}
|
|
|
|
playerstart_plaza_2()
|
|
{
|
|
// Move squad to positions
|
|
ally_start_noteworthies = [ "origin_plaza_2_ally_01", "origin_plaza_2_ally_02", "origin_plaza_2_ally_vp_price", "origin_plaza_2_ally_ss_walker", "origin_plaza_2_ally_ss_hayes" ];
|
|
ally_set_goal_noteworthies = [ "node_plaza_2_ally_01", "node_plaza_2_ally_02", "node_plaza_2_ally_vp_price", "node_plaza_2_ally_ss_walker", "node_plaza_2_ally_ss_hayes" ];
|
|
|
|
set_squad_colors();
|
|
level.squad maps\nx_hithard_b_util::moveAlliesToStartPoint( ally_start_noteworthies, ally_set_goal_noteworthies );
|
|
|
|
level._player maps\_nx_utility::move_player_to_start_point( "plaza_2_start" );
|
|
level.squad maps\nx_hithard_b_util::ignore_all_off();
|
|
level.squad[2].ignoreall = true; // Setting the VP to not take part in the action
|
|
}
|
|
|
|
playerstart_monorail_station()
|
|
{
|
|
// Move squad to positions
|
|
ally_start_noteworthies = [ "origin_monorail_ally_01", "origin_monorail_ally_02", "origin_monorail_ally_vp_price", "origin_monorail_ally_ss_walker", "origin_monorail_ally_ss_hayes" ];
|
|
ally_set_goal_noteworthies = [ "node_monorail_ally_01", "node_monorail_ally_02", "node_monorail_ally_vp_price", "node_monorail_ally_ss_walker", "node_monorail_ally_ss_hayes" ];
|
|
|
|
set_squad_colors();
|
|
level.squad maps\nx_hithard_b_util::moveAlliesToStartPoint( ally_start_noteworthies, ally_set_goal_noteworthies );
|
|
|
|
level._player maps\_nx_utility::move_player_to_start_point( "monorail_start" );
|
|
level.squad maps\nx_hithard_b_util::ignore_all_off();
|
|
level.squad[2].ignoreall = true; // Setting the VP to not take part in the action
|
|
|
|
flag_wait( "plaza_enc_complete" );
|
|
|
|
flag_wait( "flag_monorail_playerstart" );
|
|
flag_set( "monorail_station_start" );
|
|
|
|
// MOVE EVERYONE FORWARD.
|
|
issue_color_orders( "b140", "allies" );
|
|
|
|
// Make the VP and SS lag behind a bit
|
|
wait( 1.4 );
|
|
issue_color_orders( "r14 p14", "allies" );
|
|
}
|
|
|
|
playerstart_onramp()
|
|
{
|
|
// maps\nx_hithard_b_on_ramp::onramp_setup();
|
|
|
|
ally_start_noteworthies = [ "origin_onramp_ally_01", "origin_onramp_ally_02", "origin_onramp_ally_vp_price", "origin_onramp_ally_ss_walker", "origin_onramp_ally_ss_hayes" ];
|
|
ally_set_goal_noteworthies = [ "node_onramp_ally_01", "node_onramp_ally_02", "node_onramp_ally_vp_price", "node_onramp_ally_ss_walker", "node_onramp_ally_ss_hayes" ];
|
|
|
|
set_squad_colors();
|
|
level.squad maps\nx_hithard_b_util::moveAlliesToStartPoint( ally_start_noteworthies, ally_set_goal_noteworthies );
|
|
|
|
level._player maps\_nx_utility::move_player_to_start_point( "onramp_start" );
|
|
level.squad maps\nx_hithard_b_util::ignore_all_off();
|
|
level.squad[2].ignoreall = true; // Setting the VP to not take part in the action
|
|
|
|
maps\nx_hithard_b_on_ramp::onramp_section_started();
|
|
}
|
|
|
|
playerstart_vphit()
|
|
{
|
|
maps\nx_hithard_b_on_ramp::onramp_setup();
|
|
|
|
ally_start_noteworthies = [ "origin_vphit_ally_01", "origin_vphit_ally_02", "origin_vphit_ally_vp_price", "origin_vphit_ally_ss_walker", "origin_vphit_ally_ss_hayes" ];
|
|
ally_set_goal_noteworthies = [ "node_vphit_ally_01", "node_vphit_ally_02", "node_vphit_ally_vp_price", "node_vphit_ally_ss_walker", "node_vphit_ally_ss_hayes" ];
|
|
|
|
set_squad_colors();
|
|
level.squad maps\nx_hithard_b_util::moveAlliesToStartPoint( ally_start_noteworthies, ally_set_goal_noteworthies );
|
|
|
|
level._player maps\_nx_utility::move_player_to_start_point( "vphit_start" );
|
|
level.squad maps\nx_hithard_b_util::ignore_all_off();
|
|
level.squad[2].ignoreall = true; // Setting the VP to not take part in the action
|
|
|
|
level.squad[ 3 ] maps\nx_hithard_b_on_ramp::ss1_kill();
|
|
|
|
maps\nx_hithard_b_on_ramp::onramp_section_started();
|
|
}
|
|
|
|
playerstart_bravo()
|
|
{
|
|
maps\nx_hithard_b_on_ramp::onramp_setup();
|
|
|
|
ally_start_noteworthies = [ "origin_bravo_ally_01", "origin_vphit_ally_02", "origin_bravo_ally_vp_price", "origin_vphit_ally_ss_walker", "origin_vphit_ally_ss_hayes" ];
|
|
ally_set_goal_noteworthies = [ "node_bravo_ally_01", "node_vphit_ally_02", "node_bravo_ally_vp_price", "node_vphit_ally_ss_walker", "node_vphit_ally_ss_hayes" ];
|
|
|
|
set_squad_colors();
|
|
level.squad maps\nx_hithard_b_util::moveAlliesToStartPoint( ally_start_noteworthies, ally_set_goal_noteworthies );
|
|
|
|
level._player maps\_nx_utility::move_player_to_start_point( "player_bravo_start" );
|
|
level.squad maps\nx_hithard_b_util::ignore_all_off();
|
|
level.squad[2].ignoreall = true; // Setting the VP to not take part in the action
|
|
|
|
// level.squad[ 3 ] maps\nx_hithard_b_on_ramp::ss1_kill();
|
|
|
|
maps\nx_hithard_b_on_ramp::onramp_section_started();
|
|
maps\nx_hithard_b_on_ramp::onramp_moment_bravo_debug();
|
|
}
|
|
|
|
playerstart_tank()
|
|
{
|
|
// // Waiting for player to get to the top of the on ramp
|
|
// Objective_State( objective_number, "done" );
|
|
|
|
// Initialize Tank
|
|
level thread initialize_vehicles();
|
|
|
|
// Mission threads
|
|
level thread mission_music();
|
|
|
|
// Civilian panic
|
|
level thread civilian_panic();
|
|
|
|
level thread end_of_mission_flow();
|
|
}
|
|
|
|
|
|
// Tank stuff
|
|
|
|
initialize_vehicles()
|
|
{
|
|
//level._player thread connect_player_to_tank_turret( level.tank );
|
|
level thread tank_drive(level.tank);
|
|
level thread chopper1_control();
|
|
level thread chopper2_control();
|
|
level thread ugv1_control();
|
|
//level thread ugv2_control();
|
|
level.ugv2 thread ugv2_control();
|
|
|
|
level thread ugv3_control();
|
|
level thread freeway_explo_trigger();
|
|
}
|
|
|
|
tank_drive( vehicle )
|
|
{
|
|
self endon( "death" );
|
|
|
|
// we will wait till the player enters the tank
|
|
//vehicle waittill( "vehicle_mount" );
|
|
|
|
level._player MountVehicle( vehicle );
|
|
level._player DisableTurretDismount();
|
|
vehicle MakeUnUsable();
|
|
|
|
|
|
flag_wait( "introscreen_complete");
|
|
|
|
// Tank HUD bootup sequence
|
|
level._player FreezeControls( true );
|
|
//level._player visionSetThermalForPlayer( "ac130", 0 );
|
|
//level._player visionSetThermalForPlayer( "missilecam", 0.51 );
|
|
level._player visionSetThermalForPlayer( "black_bw", 0.51 );
|
|
level._player ThermalVisionOn();
|
|
wait 0.5;
|
|
level thread tank_hud_cycle();
|
|
wait 1.0;
|
|
level._player visionSetThermalForPlayer( "missilecam", 0.51 );
|
|
wait 1.0;
|
|
//level._player ThermalVisionOff();
|
|
//wait 1.0;
|
|
level._player visionSetThermalForPlayer( "black_bw", 0.51 );
|
|
level._player ThermalVisionOn();
|
|
wait 0.25;
|
|
level._player visionSetThermalForPlayer( "missilecam", 0.51 );
|
|
wait 0.25;
|
|
level._player ThermalVisionOff();
|
|
wait 0.1;
|
|
level._player visionSetThermalForPlayer( "black_bw", 0.51 );
|
|
level._player ThermalVisionOn();
|
|
wait 0.1;
|
|
level._player ThermalVisionOff();
|
|
|
|
level._player FreezeControls( false );
|
|
// End HUD bootup sequence
|
|
|
|
level._player EnableInvulnerability();
|
|
// player attaches to vehicle and has turret control, it doesn't look like new controls work though
|
|
|
|
//display_hint( "hint_tank_fire" );
|
|
wait 2.0;
|
|
display_hint_timeout( "hint_tank_guns", 4 );
|
|
wait 1.0;
|
|
display_hint_timeout( "hint_tank_fire", 6 );
|
|
|
|
flag_wait( "flag_building1" );
|
|
|
|
spawners = getEntArray( "enemy_group1", "targetname");
|
|
array_thread( spawners, ::spawn_ai );
|
|
|
|
wait 3.0;
|
|
|
|
vehicle Vehicle_SetSpeed( 45, 5.0 );
|
|
//vehicle.health = 10000;
|
|
vehicle GoPath();
|
|
autosave_now();
|
|
|
|
// slow down and stop stop 1
|
|
flag_wait( "flag_tank_slow1" );
|
|
vehicle Vehicle_SetSpeed( 5, 25.0 );
|
|
flag_wait( "flag_tank_stop1" );
|
|
vehicle Vehicle_SetSpeed( 0, 25.0 );
|
|
|
|
wait 9;
|
|
|
|
vehicle Vehicle_SetSpeed( 15, 5.0 );
|
|
wait 8;
|
|
vehicle Vehicle_SetSpeed( 45, 5.0 );
|
|
|
|
// wait for the explosion and then slow down
|
|
flag_wait( "flag_freeway_explosion");
|
|
//vehicle Vehicle_SetSpeed( 15, 5.0 );
|
|
//wait 5.0;
|
|
vehicle Vehicle_SetSpeed( 10, 5.0 );
|
|
wait 7.0;
|
|
vehicle Vehicle_SetSpeed( 45, 5.0 );
|
|
}
|
|
|
|
hint_instructions()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
connect_player_to_tank_turret( vehicle )
|
|
{
|
|
self endon( "death" );
|
|
|
|
// we will wait till the player enters the tank
|
|
vehicle waittill( "vehicle_mount" );
|
|
|
|
// Delete the player blocker
|
|
//blocker = GetEnt( "brush_blocker01", "targetname" );
|
|
//blocker Delete();
|
|
|
|
level._player EnableInvulnerability();
|
|
// player attaches to vehicle and has turret control, it doesn't look like new controls work though
|
|
|
|
flag_wait( "flag_building1" );
|
|
spawners = getEntArray( "enemy_group1", "targetname");
|
|
array_thread( spawners, ::spawn_ai );
|
|
|
|
wait 3.0;
|
|
|
|
vehicle Vehicle_SetSpeed( 45, 5.0 );
|
|
//vehicle.health = 10000;
|
|
vehicle GoPath();
|
|
autosave_now();
|
|
|
|
// slow down and stop stop 1
|
|
flag_wait( "flag_tank_slow1" );
|
|
vehicle Vehicle_SetSpeed( 5, 25.0 );
|
|
flag_wait( "flag_tank_stop1" );
|
|
vehicle Vehicle_SetSpeed( 0, 25.0 );
|
|
|
|
wait 9;
|
|
|
|
vehicle Vehicle_SetSpeed( 15, 5.0 );
|
|
wait 8;
|
|
vehicle Vehicle_SetSpeed( 45, 5.0 );
|
|
|
|
// wait for the explosion and then slow down
|
|
flag_wait( "flag_freeway_explosion");
|
|
//vehicle Vehicle_SetSpeed( 15, 5.0 );
|
|
//wait 5.0;
|
|
vehicle Vehicle_SetSpeed( 10, 5.0 );
|
|
wait 7.0;
|
|
vehicle Vehicle_SetSpeed( 55, 5.0 );
|
|
}
|
|
|
|
chopper1_control()
|
|
{
|
|
flag_wait( "flag_chopper1_go" );
|
|
level.chopper1 Vehicle_SetSpeed( 80, 5.0);
|
|
level.chopper1 GoPath();
|
|
level.chopper1 setVehWeapon( "hind_turret" );
|
|
level.chopper1 thread maps\_helicopter_globals::shootEnemyTarget_Bullets( level.tank );
|
|
}
|
|
|
|
chopper2_control()
|
|
{
|
|
flag_wait( "flag_chopper2_go" );
|
|
level.chopper2 Vehicle_SetSpeed( 80, 5.0);
|
|
level.chopper2 GoPath();
|
|
level.chopper2 setVehWeapon( "hind_turret" );
|
|
level.chopper2 thread maps\_helicopter_globals::shootEnemyTarget_Bullets( level.tank );
|
|
}
|
|
|
|
// UGV stuff
|
|
|
|
ugv1_control()
|
|
{
|
|
flag_wait( "flag_ugv1_go");
|
|
level.ugv1 Vehicle_SetSpeed( 35, 7.9);
|
|
//level.ugv1 Vehicle_SetSpeedImmediate( 60, 60, 60);
|
|
level.ugv1 thread vehicle_fire_around_entity( level.tank, 0.75);
|
|
level.ugv1 GoPath();
|
|
|
|
}
|
|
|
|
ugv2_control()
|
|
{
|
|
flag_wait( "flag_ugv2_go");
|
|
level.ugv2 Vehicle_SetSpeed( 56.15, 7.5);
|
|
//level.ugv1 Vehicle_SetSpeedImmediate( 60, 60, 60);
|
|
level.ugv2 thread vehicle_fire_around_entity( level.tank, 0.75);
|
|
level.ugv2 GoPath();
|
|
}
|
|
|
|
ugv3_control()
|
|
{
|
|
flag_wait( "flag_ugv1_go");
|
|
level.ugv3 Vehicle_SetSpeed( 30, 3.9);
|
|
//level.ugv1 Vehicle_SetSpeedImmediate( 60, 60, 60);
|
|
level.ugv3 thread vehicle_fire_around_entity( level.tank, 0.75);
|
|
level.ugv3 GoPath();
|
|
}
|
|
|
|
// FX
|
|
|
|
freeway_explo_trigger()
|
|
{
|
|
flag_wait( "flag_freeway_explosion");
|
|
level thread freeway_explosion();
|
|
wait 0.75;
|
|
trig = GetEnt( "bridge_explosion_trigger", "targetname" );
|
|
trig notify( "trigger" );
|
|
// spawn enemies
|
|
spawners = getEntArray( "enemy_group2", "targetname");
|
|
array_thread( spawners, ::spawn_ai );
|
|
}
|
|
|
|
freeway_explosion()
|
|
{
|
|
// Play the FX
|
|
freeway_explo1_fx = GetEnt( "freeway_explo1_fx", "targetname" );
|
|
forward = AnglesToForward( freeway_explo1_fx.angles );
|
|
up = AnglesToUp( freeway_explo1_fx.angles );
|
|
playFX( level._effect[ "freeway_explosion" ], freeway_explo1_fx.origin, forward, up );
|
|
wait 0.25;
|
|
freeway_explo2_fx = GetEnt( "freeway_explo2_fx", "targetname" );
|
|
forward = AnglesToForward( freeway_explo2_fx.angles );
|
|
up = AnglesToUp( freeway_explo2_fx.angles );
|
|
playFX( level._effect[ "freeway_explosion" ], freeway_explo2_fx.origin, forward, up );
|
|
wait 0.25;
|
|
freeway_explo3_fx = GetEnt( "freeway_explo3_fx", "targetname" );
|
|
forward = AnglesToForward( freeway_explo3_fx.angles );
|
|
up = AnglesToUp( freeway_explo3_fx.angles );
|
|
playFX( level._effect[ "freeway_explosion" ], freeway_explo3_fx.origin, forward, up );
|
|
wait 0.15;
|
|
freeway_explo4_fx = GetEnt( "freeway_explo4_fx", "targetname" );
|
|
forward = AnglesToForward( freeway_explo4_fx.angles );
|
|
up = AnglesToUp( freeway_explo4_fx.angles );
|
|
playFX( level._effect[ "nx_debri_explosion" ], freeway_explo4_fx.origin, forward, up );
|
|
playFX( level._effect[ "building_explosion_gulag_bh1" ], freeway_explo4_fx.origin, forward, up );
|
|
|
|
}
|
|
|
|
end_of_mission_flow()
|
|
{
|
|
flag_wait("flag_end_mission");
|
|
nextmission();
|
|
}
|
|
|
|
// UTILITIES //
|
|
|
|
vehicle_fire_around_entity( e, interval )
|
|
{
|
|
self endon( "death" );
|
|
if( !IsDefined( self.mgturret ) )
|
|
return;
|
|
|
|
turret = self.mgturret[0];
|
|
|
|
turret StartBarrelSpin();
|
|
|
|
while( 1 )
|
|
{
|
|
r = RandomFloat( 360 );
|
|
s = RandomFloatRange( 120.0, 240.0 );
|
|
targetPos = e.origin + ( cos(r)*s, sin(r)*s, 0);
|
|
turret SetTurretTargetPosition( targetPos );
|
|
|
|
turret ShootTurret();
|
|
|
|
wait interval;
|
|
}
|
|
}
|
|
|
|
tank_hud_cycle()
|
|
{
|
|
//quick_status_items = [ "Bypass Sequence", "Welcome back Travis" ];
|
|
|
|
status_items = [ "Initializing Heads Up Display...", "!Engaged!",
|
|
"Weapon Systems...", "!Online!",
|
|
"Drive Control...", "!Engaged!"
|
|
];
|
|
|
|
//terminal_status_check( quick_status_items );
|
|
terminal_status_check( status_items );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
terminal_status_check( status_items )
|
|
{
|
|
pos_x = -265;
|
|
pos_x_tab = -240;
|
|
pos_y = 100;
|
|
pos_y_add = 18;
|
|
|
|
hud_elems = [];
|
|
for ( i = 0; i < status_items.size; i=( i + 2 ) )
|
|
{
|
|
hud_elem = maps\_hud_util::get_countdown_hud( pos_x, pos_y );
|
|
hud_elem SetPulseFX( 30, 900000, 700 );
|
|
hud_elem.label = status_items[ i ];
|
|
wait ( 0.3 + RandomFloat( 0.6 ) );
|
|
|
|
hud_elems[ i ] = hud_elem;
|
|
|
|
pos_y = ( pos_y + pos_y_add );
|
|
|
|
hud_elem = maps\_hud_util::get_countdown_hud( pos_x_tab, pos_y );
|
|
hud_elem SetPulseFX( 30, 900000, 700 );
|
|
hud_elem.label = status_items[ i + 1 ];
|
|
wait ( 0.65 + RandomFloat( 0.7 ) );
|
|
|
|
hud_elems[ i + 1 ] = hud_elem;
|
|
|
|
pos_y = ( pos_y + pos_y_add );
|
|
}
|
|
wait( 0.5 );
|
|
|
|
foreach( hud_elem in hud_elems )
|
|
{
|
|
hud_elem destroy();
|
|
}
|
|
}
|
|
|
|
// Civilian panic
|
|
|
|
civilian_panic()
|
|
{
|
|
crowd = maps\nx_crowd_controller::new_crowd( "test",
|
|
12,
|
|
GetEntArray( "test_spawner", "script_noteworthy" ),
|
|
GetEntArray( "test_start", "script_noteworthy"),
|
|
GetEntArray( "test_end", "script_noteworthy") );
|
|
|
|
wait 4.0;
|
|
|
|
while( 1 )
|
|
{
|
|
maps\nx_crowd_controller::spawn_crowd( "test" );
|
|
wait 10.0;
|
|
}
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// Spawn squad members
|
|
spawn_squad()
|
|
{
|
|
// Script Noteworthies for main squad members
|
|
// note: this is an ordered list, so guys are referenced by the same index number.
|
|
// For example: level.squad_noteworthies = ["Price", "Ghost", "Soap"]
|
|
// squad_noteworties[0] would always be "Price"
|
|
// squad_noteworthies[2] will always be "Soap"
|
|
|
|
squad_noteworthies = ["ally_01", "ally_02", "ally_VP", "ally_ss_walker", "ally_ss_hayes" ];
|
|
|
|
squad_spawner = [];
|
|
|
|
for( i = 0; i < squad_noteworthies.size; i++ )
|
|
{
|
|
squad_spawner[ i ] = GetEnt( squad_noteworthies[ i ], "script_noteworthy" );
|
|
}
|
|
|
|
squad_spawner[2] add_spawn_function( ::vp_spawnfunc );
|
|
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();
|
|
|
|
// Set country ID for battlechatter
|
|
squad[i].countryID = "usop";
|
|
}
|
|
}
|
|
|
|
level._player DisableThreatVisualization();
|
|
|
|
squad[0].animname = "baker";
|
|
squad[0].countryId = "usop";
|
|
squad[0].battlechatter = true;
|
|
|
|
squad[1].animname = "gypsy";
|
|
squad[1].countryId = "usop";
|
|
squad[1].battlechatter = true;
|
|
|
|
squad[2].animname = "vp_price";
|
|
squad[2].countryId = "usop";
|
|
squad[2].battlechatter = false;
|
|
squad[2].dontmelee = true;
|
|
|
|
squad[3].animname = "ss_williams";
|
|
squad[3].countryId = "ss";
|
|
squad[3].battlechatter = true;
|
|
squad[3] set_battlechatter_id( "1" );
|
|
squad[3].bc_during_animscripted = true;
|
|
squad[3] maps\nx_hithard_b_anim::init_ss_anims();
|
|
|
|
squad[4].animname = "ss_hayes";
|
|
squad[4].countryId = "ss";
|
|
squad[4].battlechatter = false;
|
|
squad[4] maps\nx_hithard_b_anim::init_ss_anims();
|
|
|
|
return squad;
|
|
}
|
|
|
|
#using_animtree( "generic_human" );
|
|
vp_spawnfunc()
|
|
{
|
|
//self.run_overrideanim = %civilian_walk_cool;
|
|
//self.walk_overrideanim = %civilian_walk_cool;
|
|
maps\nx_hithard_b_anim::init_vp_anims();
|
|
self.run_overrideanim = undefined;
|
|
self.walk_overrideanim = undefined;
|
|
|
|
}
|
|
|
|
vip_spawnfunc()
|
|
{
|
|
self thread magic_bullet_shield();
|
|
}
|
|
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|