//**************************************************************************** // ** // 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(); } //******************************************************************* // * // * //*******************************************************************