nx1-gsc-dump/maps/nx_rocket_section_rescue.gsc

951 lines
25 KiB
Plaintext

//****************************************************************************
// **
// Confidential - (C) Activision Publishing, Inc. 2010 **
// **
//****************************************************************************
// **
// Module: NX_ROCKET_SECTION_ **
// **
// Created: 7/13/2011 - **
// **
//****************************************************************************
#include maps\_utility;
#include common_scripts\utility;
#include maps\_anim;
#include maps\_vehicle;
ORDER_AXIS_WAREHOUSE = "o220";
ORDER_AXIS_FRONT = "p220"; // PURPLE
ORDER_AXIS_LEFT_GROUND = "g220"; // GREEN
ORDER_AXIS_LEFT_CATWALK = "y220"; // YELLOW
ORDER_AXIS_RIGHT_GROUND = "r220"; // RED
ORDER_AXIS_RIGHT_CATWALK = "b220"; // BLUE
ORDER_AXIS_ALL = ORDER_AXIS_WAREHOUSE + " "
+ ORDER_AXIS_FRONT + " "
+ ORDER_AXIS_LEFT_GROUND + " "
+ ORDER_AXIS_LEFT_CATWALK + " "
+ ORDER_AXIS_RIGHT_GROUND + " "
+ ORDER_AXIS_RIGHT_CATWALK;
DEBUG_WAVE_INFO = false;
//*******************************************************************
// *
//*******************************************************************
start()
{
teleport_info = [];
teleport_info[ "ALLY_BAKER" ] = "start_default_ally_00";
teleport_info[ "ALLY_JENKINS" ] = "start_rescue_ally_01";
teleport_info[ "ALLY_WILLIAMS" ] = "start_rescue_ally_02";
maps\nx_rocket_util::squad_teleport( teleport_info );
level._player maps\_nx_utility::move_player_to_start_point( "start_rescue_player" );
// Turn on post AA turret smoke and destruction
maps\nx_rocket_util::post_turret_event();
flag_set( "turret_control_complete" );
maps\nx_rocket_fx::forest_fire_fx();
// This is here as a fall through untill this section is created
}
main()
{
level thread section_dialogue();
level thread objective_defend();
//ambience
thread maps\_utility::set_ambient( "nx_rocket_ext" );
// SAVE POINT
level thread autosave_now();
issue_color_orders( "b200 p200", "allies" );
// Begin safe-zone checking
// level._player thread player_safe_zone();
// WAREHOUSE ENEMIES
wave_warehouse();
flag_set( "defend_start" );
// WAVE 01
wave_01();
// WAVE 02
wave_02();
// WAVE 03
wave_03();
// WAVE 04
wave_04();
// WAVE 05
wave_05();
flag_wait( "rescue_chopper_allies_loaded" );
// Rescue!!!
// chopper_rescue();
// flag_set( "rescue_arrived" );
}
// Warehouse enemies pre-wave /////////////////////////////////////////
wave_warehouse()
{
debug_wave_info( "Wave 00", "Warehouse Ground Troops" );
// Set allies to ignore all enemies until we reach the warehouse
// ignore_everything_array( level.squad, true);
// wait 0.05;
warehouse_enemies = maps\nx_rocket_util::spawn_ai_group( "enemy_group_rescue_warehouse_01", "script_noteworthy" );
array_thread( warehouse_enemies, maps\nx_rocket_util::ignore_until_damage_group, warehouse_enemies );
array_thread( warehouse_enemies, maps\nx_rocket_util::ignore_until_flag, "rescue_encounter_start" );
// ignore_everything_array( warehouse_enemies_01, true );
// issue_color_orders( "o220", "axis" );
// flag_wait( "rescue_encounter_start" );
// flag_wait( "rescue_encounter_start" );
//SAVE POINT
level thread autosave_now();
// ignore_everything_array( level.squad, false );
// ignore_everything_array( warehouse_enemies_01, false );
// issue_color_orders( "o220", "axis" );
waittill_aigroupcount( "enemy_group_rescue_warehouse_01", 2 );
// warehouse_enemies_02 = maps\nx_rocket_util::spawn_ai_group( "enemy_group_rescue_warehouse_02", "script_noteworthy" );
// issue_color_orders( "o220", "axis" );
// waittill_aigroupcount( "enemy_group_rescue_warehouse_01", 1 );
// waittill_aigroupcount( "enemy_group_rescue_warehouse_02", 1 );
}
wave_01()
{
flag_set( "wave_01_start" );
debug_wave_info( "Wave 01", "Ground Troops" );
//SAVE POINT
level thread autosave_now();
// Wave 01 /////////////////////////////////////////
issue_color_orders( "b230 p230", "allies" );
wave_01_enemies = maps\nx_rocket_util::spawn_ai_group( "enemy_group_rescue_01_01", "script_noteworthy" );
issue_color_orders( ORDER_AXIS_ALL, "axis" );
waittill_aigroupcount( "enemy_group_rescue_01_01", 4 );
//SAVE POINT
level thread autosave_now();
jeep_01 = vehicle_spawn( GetEnt( "rescue_jeep_01", "targetname" ) );
jeep_01 thread jeep_update();
waittill_aigroupcount( "enemy_group_rescue_01_01", 3 );
waittill_aigroupcount( "enemy_group_rescue_01_02", 3 );
}
wave_02()
{
flag_set( "wave_02_start" );
debug_wave_info( "Wave 02", "Ground Troops" );
//SAVE POINT
level thread autosave_now();
enemies_right = maps\nx_rocket_util::spawn_ai_group( "enemy_group_rescue_02_01", "script_noteworthy" );
waittill_aigroupcount( "enemy_group_rescue_02_01", 4 );
enemies_left = maps\nx_rocket_util::spawn_ai_group( "enemy_group_rescue_02_02", "script_noteworthy" );
waittill_aigroupcount( "enemy_group_rescue_02_01", 3 );
waittill_aigroupcount( "enemy_group_rescue_02_02", 3 );
}
wave_03()
{
flag_set( "wave_03_start" );
debug_wave_info( "Wave 03", "Two Jeeps, 4 Ground Troops Each" );
//SAVE POINT
level thread autosave_now();
jeep_02 = vehicle_spawn( GetEnt( "rescue_jeep_02", "targetname" ) );
jeep_02 thread jeep_update();
wait 3.0;
jeep_01 = vehicle_spawn( GetEnt( "rescue_jeep_03", "targetname" ) );
jeep_01 thread jeep_update();
waittill_aigroupcount( "enemy_group_rescue_03_01", 3 );
waittill_aigroupcount( "enemy_group_rescue_03_02", 3 );
}
wave_04()
{
flag_set( "wave_04_start" );
debug_wave_info( "Wave 04", "VTOL and Hummer" );
//SAVE POINT
level thread autosave_now();
vtol = vehicle_spawn( GetEnt( "rescue_vtol_01", "targetname" ) );
vtol GodOn();
vtol thread vtol_update();
vtol waittill( "reached_dynamic_path_end" );
flag_set( "vtol_enter" );
//SAVE POINT
level thread autosave_now();
hummer = vehicle_spawn( GetEnt( "rescue_hummer_01", "targetname" ) );
level.rescue_hummer = hummer;
hummer godon();
hummer thread hummer_update();
flag_wait( "hummer_enter" );
flag_wait( "hummer_mounted" );
vtol GodOff();
vtol waittill( "death" );
// Blow up the hummer!!!
level._player EnableInvulnerability();
expl_origin = vtol.origin;
for( i = 0; i < 12; i++ )
{
MagicBullet( "rpg", expl_origin, expl_origin + ( RandomFloatRange( -1000, 1000 ), RandomFloatRange( -1000, 1000 ), RandomFloatRange( -1000, 1000 ) ) );
wait RandomFloatRange( 0.1, 0.3 );
}
hummer GodOff();
hummer.health = 100;
MagicBullet( "rpg_straight", expl_origin, level._player.origin );
MagicBullet( "rpg_straight", expl_origin, hummer.origin );
hummer thread hummer_wait_then_die();// TEMP KILL HUMMER
hummer waittill( "death" );
level._player DisableInvulnerability();
// hummer_player_dismount();
level._player Unlink();
level._player SetOrigin( Getent( "rescue_vtol_destroy_player_origin", "targetname" ).origin );
}
wave_05()
{
flag_set( "wave_05_start" );
debug_wave_info( "Wave 05 (FINAL)", "APC, Ground Troops, Rescue" );
//SAVE POINT
level thread autosave_now();
// APC
apc = vehicle_spawn( GetEnt( "rescue_apc_01", "targetname" ) );
apc thread apc_update();
// JEEPS
wait 0.75;
jeep_01 = vehicle_spawn( GetEnt( "rescue_jeep_04", "targetname" ) );
jeep_01 thread jeep_update();
wait 0.1;
jeep_02 = vehicle_spawn( GetEnt( "rescue_jeep_05", "targetname" ) );
jeep_02 thread jeep_update();
wait 0.75;
jeep_03 = vehicle_spawn( GetEnt( "rescue_jeep_06", "targetname" ) );
jeep_03 thread jeep_update();
wait 0.1;
jeep_04 = vehicle_spawn( GetEnt( "rescue_jeep_07", "targetname" ) );
jeep_04 thread jeep_update();
wait 3.0;
// CHOPPER
level notify( "rescue_baker_landed" );
flag_set( "rescue_chopper_arrived" );
level.rescue_heli = vehicle_spawn( GetEnt( "rescue_heli", "targetname" ) );
leader = level.squad[ "ALLY_BAKER" ];
leader.script_startingposition = 3;
level.rescue_heli guy_enter_vehicle( leader );
level.rescue_heli godon();
level.rescue_heli GoPath();
convoy = [ jeep_03, jeep_04, jeep_01, jeep_02, apc ];
level.rescue_heli thread chopper_waittill_destroy_convoy( convoy );
level.rescue_heli chopper_load_allies();
}
chopper_waittill_destroy_convoy( convoy )
{
foreach( turret in self.mgturret )
{
turret TurretFireDisable();
}
wait 5.0;
foreach( turret in self.mgturret )
{
turret TurretFireEnable();
}
foreach( vehicle in convoy )
{
// self SetTurretTargetEnt( vehicle );
foreach( turret in self.mgturret )
{
turret SetMode( "manual" );
turret SetTargetEntity( vehicle );
}
// vehicle waittill( "death" );
// while( IsAlive( vehicle ) )
// {
// wait 0.05;
// }
wait RandomFloatRange( 1.0, 2.5 );
vehicle Kill();
}
foreach( turret in self.mgturret )
{
turret SetMode( "auto_ai" );
turret ClearTargetEntity( );
}
}
// TEMP
hummer_wait_then_die()
{
self endon( "death" );
wait 4.0;
self Kill();
}
chopper_rescue()
{
level notify( "rescue_baker_landed" );
level.rescue_heli = vehicle_spawn( GetEnt( "rescue_heli", "targetname" ) );
leader = level.squad[ "ALLY_BAKER" ];
leader.script_startingposition = 3;
level.rescue_heli guy_enter_vehicle( leader );
level.rescue_heli godon();
level.rescue_heli GoPath();
level waittill( "apc_destroyed" );
level.rescue_heli chopper_load_allies();
}
chopper_load_allies()
{
self waittill( "reached_dynamic_path_end" );
self vehicle_detachfrompath();
self vehicle_land();
flag_set( "rescue_chopper_landed" );
level.squad[ "ALLY_WILLIAMS" ].script_startingposition = 7;
level.squad[ "ALLY_JENKINS" ].script_startingposition = 2;
wait 2;
guys = [ level.squad[ "ALLY_WILLIAMS" ], level.squad[ "ALLY_JENKINS" ] ];
//iprintln( "load ai" );
self thread vehicle_load_ai( guys );
trigger = GetEnt( "rescue_chopper_start", "targetname" );
trigger trigger_on();
trigger SetHintString( "Hold [{+usereload}] to board Blackhawk." );
trigger waittill( "trigger" );
trigger trigger_off();
self maps\nx_rocket_util::rescue_chopper_player_setup();
flag_set( "rescue_chopper_allies_loaded" );
}
//*******************************************************************
// *
// *
//*******************************************************************
ignore_everything_array( actors, enable )
{
if( !IsDefined( actors ) )
return;
foreach( actor in actors )
{
actor ignore_everything( enable );
}
}
ignore_everything( enable )
{
if( !IsAlive( self ) )
return;
self.ignoreall = enable;
self.ignoreexplosionevents = enable;
self.ignorerandombulletdamage = enable;
self.ignoresuppression = enable;
// self.fixednode = !enable;
self.disableBulletWhizbyReaction = enable;
if( enable )
{
self disable_pain();
self.grenadeawareness = 0;
self.og_newEnemyReactionDistSq = self.newEnemyReactionDistSq;
self.newEnemyReactionDistSq = 0;
}
else
{
self enable_pain();
self.grenadeawareness = 1;
if( IsDefined( self.og_newEnemyReactionDistSq ) )
{
self.newEnemyReactionDistSq = self.og_newEnemyReactionDistSq;
}
}
}
enemy_preview( )
{
if( IsDefined( self.target ) )
self SetgoalNode( GetNode( self.target, "targetname" ) );
wait 1.0;
self waittill( "goal" );
if( IsDefined( self.script_animation ) )
{
goal = GetEnt( self.target, "targetname" );
self.animname = "enemy_opfor";
goal anim_single_solo( self, self.script_animation );
}
}
//*******************************************************************
// *
// *
//*******************************************************************
apc_update()
{
self endon( "death" );
self vehicle_lights_on( "all" );
self GoPath();
foreach( turret in self.mgturret )
{
turret TurretFireDisable();
}
}
hummer_player_dismount()
{
level._player Unlink();
level._player SetOrigin( level._player.origin_old );
}
hummer_update()
{
self endon( "death" );
self vehicle_lights_on( "all" );
self thread hummer_turret_update();
self thread maps\nx_rocket_util::vehicle_enable_fire( false );
self GoPath();
self vehicle_waittill_node( "rescue_01_hummer_node_warn", "targetname" );
flag_set( "hummer_enter" );
self thread maps\nx_rocket_util::vehicle_firing( 1.0, 2.0, 2.0, 5.0, "hummer_mounted" );
self vehicle_waittill_node( "rescue_01_hummer_node_crash", "targetname" );
self thread hummer_crash_bullets();
// self VehPhys_Crash( );
self waittill( "reached_end_node" );
self Vehicle_Unload( "passengers" );
// issue_color_orders( "o250", "axis" );
// wait 6.0;
// flag_wait( "rescue_warehouse_entered" );
// wait 2.0;
//
//// self vehicle_pathdetach();
// guard_path = GetVehicleNode( "rescue_hummer_01_path_guard", "targetname" );
// self StartPath( guard_path );
//// self vehicle_resumepath();
}
hummer_crash_bullets()
{
for( i = 0; i < 20; i++ )
{
MagicBullet( "mp5", self GetTagOrigin( "tag_driver" ) + random_vector( 500 ), self GetTagOrigin( "tag_driver" ) );
wait randomfloatrange( 0.1, 0.2 );
}
}
hummer_turret_update()
{
self endon( "death" );
gunner = self.riders[ 4 ];
driver = self.riders[ 0 ];
gunner.ignoreMe = true;
self waittill( "reached_end_node" );
if( IsAlive( gunner ) )
gunner waittill( "death" );
flag_set( "hummer_gunner_killed" );
wait 0.5;
// driver_forward = vector_multiply( AnglesToForward(driver.angles), 1000 );
// bullet_src = driver.origin + driver_forward + (0, 0, 70 );
// MagicBullet( "mp5", bullet_src, driver GetTagOrigin( "tag_eye" ) );
// driver StopAnimScripted();
// driver Kill();
self Vehicle_Unload();
turret = self.mgturret[ 0 ];
turret SetMode( "manual" );
turret MakeUsable();
// Player turret mounting
turret waittill( "trigger" );
flag_set( "hummer_mounted" );
self maps\nx_rocket_util::vehicle_enable_fire( true );
level._player DisableTurretDismount();
level._player.origin_old = level._player.origin;
level._player SetOrigin( self GetTagOrigin( "tag_player" ) );
level._player PlayerLinkToDelta( self, "tag_player", 0.35, 360, 360, 45, 30, true );
self waittill( "death" );
turret EnableTurretDismount();
// while( 1 )
// {
// turret waittill( "trigger" );
// level._player.origin_old = level._player.origin;
// level._player SetOrigin( self GetTagOrigin( "tag_player" ) );
// level._player PlayerLinkToDelta( self, "tag_player", 0.35, 360, 360, 45, 30, true );
//
//// level._player waittill( "dismount_turret" );
// wait 0.4;
// player_waittill_turret_dismount();
// level._player Unlink();
// level._player SetOrigin( level._player.origin_old );
// }
}
vehicle_turret_waittill_node( node_value, node_key )
{
turret = self.mgturret[ 0 ];
turret TurretFireDisable();
self vehicle_waittill_node( node_value, node_key );
turret TurretFireEnable();
}
jeep_update()
{
self endon( "death" );
self vehicle_lights_on( "all" );
self GoPath();
self waittill( "reached_end_node" );
self Vehicle_Unload( "passengers" );
// maps\nx_rocket_util::ai_array_color_reset( self.riders, "o" );
// issue_color_orders( "o250", "axis" );
}
trucks_departing()
{
foreach( spawner in GetEntArray( "rescue_truck", "script_noteworthy" ) )
{
truck = vehicle_spawn( spawner );
truck thread truck_update();
}
}
truck_update()
{
self endon( "death" );
self GoPath();
self waittill( "reached_end_node" );
self Delete();
}
vtol_update()
{
self endon( "death" );
self.ignoreme = true;
self vtol_fire_enable( false );
self GoPath();
// Turn on spotlight
self thread maps\_attack_heli::heli_spotlight_on( undefined, true );
self thread maps\nx_rocket_util::vehicle_search_ents(
[ level.squad[ "ALLY_WILLIAMS" ], level.squad[ "ALLY_JENKINS" ], level._player ]
);
self waittill( "reached_dynamic_path_end" );
// Point spotlight at drop-point
unload_target = spawn( "script_origin", self.origin + (0,0,-10000) );
// self SetTurretTargetEnt( unload_target );
// Unload passengers
self Vehicle_Unload();
self waittill( "unloaded" );
self thread vtol_strafe( );
// self thread vtol_firing();
self thread maps\nx_rocket_util::vehicle_firing( 1.0, 2.0, 3.0, 5.0 );
unload_target Delete();
}
vtol_fire_enable( enable )
{
foreach( turret in self.mgturret )
{
// turret SetMode( "manual" );
if( enable )
turret TurretFireEnable();
else
turret TurretFireDisable();
}
}
vtol_update_target( target_ent )
{
self endon( "death" );
while( 1 )
{
foreach( turret in self.mgturret )
{
turret SetTargetEntity( target_ent );
}
wait 0.05;
}
}
vtol_firing()
{
self endon( "death" );
firing = false;
// target_org = spawn( "script_origin", level._player.origin );
// self SetTurretTargetEnt( level._player );
// self thread vtol_update_target( target_org );
while( 1 )
{
firing = !firing;
self vtol_fire_enable( firing );
if( firing )
{
wait RandomFloatRange( 0.75, 1.5 );
}
else
{
wait RandomfloatRange( 5.0, 6.0 );
// target_org MoveTo( level._player.origin, 3.5 );
// target_org waittill( "movedone");
}
}
}
vtol_strafe( circle_targetname )
{
self SetLookAtEnt( level._player );
self Vehicle_SetSpeed( 5.0 );
self maps\nx_rocket_util::heli_start_path( "rescue_vtol_strafe", "targetname" );
}
//*******************************************************************
// PLAYER *
//*******************************************************************
player_safe_zone()
{
self endon( "death" );
level endon( "rescue_baker_landed" );
flag_wait( "rescue_warehouse_entered" );
safe_zone_trigger = GetEnt( "rescue_player_safe_zone", "targetname" );
max_distance = safe_zone_trigger.radius + 500;
interval = 0.0;
level thread dialogue_player_safe_zone_warn( safe_zone_trigger, "rescue_baker_landed" );
while( 1 )
{
if( !( self IsTouching( safe_zone_trigger ) ) )
{
bullet_src = self.origin + ( RandomFloatRange( -1000, 1000 ), RandomFloatRange( -1000, 1000 ), RandomFloatRange( 20, 50 ) );
MagicBullet( "mp5", bullet_src, self.origin + ( 0, 0, 30 ) );
}
dist = DistanceSquared( level._player.origin, safe_zone_trigger.origin );
distance_scale = ( 1.0 - dist/( max_distance * max_distance ) );
if( distance_scale <= 0 )
distance_scale = 0.25;
interval = RandomFloatRange( 1.0, 1.25 ) * distance_scale;
wait interval;
}
}
player_waittill_turret_dismount()
{
//HAAAACK
while( 1 )
{
if( level._player UseButtonPressed() )
break;
wait 0.05;
}
}
//*******************************************************************
// *
// *
//*******************************************************************
squad_to_warehouse()
{
level waittill( "hummer_warn" );
foreach( ally in level.squad )
{
ally thread ally_to_warehouse();
}
// level thread maps\nx_rocket_util::set_goal_volume_array( [ level.squad["ALLY_JENKINS"], level.squad["ALLY_WILLIAMS"] ], "rescue_goal_warehouse" );
// issue_color_orders( "b211 p211", "allies" );
// array_thread( level.squad, ::ally_to_warehouse );
// flag_wait( "rescue_warehouse_entered" );
// ignore_everything_array( level.squad, false );
}
ally_to_warehouse()
{
self ignore_everything( true );
self thread maps\nx_rocket_util::set_goal_volume( "rescue_goal_warehouse" );
self waittill( "goal" );
self ignore_everything( false );
}
objective_defend()
{
flag_wait( "defend_start" );
defend_marker = GetEnt( "rescue_defend_objective", "targetname" );
Objective_State( obj( "OBJ_FIND_BAKER" ), "current" );
Objective_SetPointerTextOverride( obj( "OBJ_FIND_BAKER" ), "Defend" );
Objective_OnEntity( obj( "OBJ_FIND_BAKER" ), defend_marker );
flag_wait( "hummer_gunner_killed" );
hummer_marker = GetEnt( "rescue_hummer_objective", "targetname" );
Objective_State( obj( "OBJ_FIND_BAKER" ), "current" );
Objective_SetPointerTextOverride( obj( "OBJ_FIND_BAKER" ), "" );
Objective_OnEntity( obj( "OBJ_FIND_BAKER" ), hummer_marker );
flag_wait( "rescue_chopper_landed" );
chopper_marker = GetEnt( "rescue_chopper_objective", "targetname" );
Objective_State( obj( "OBJ_FIND_BAKER" ), "current" );
Objective_SetPointerTextOverride( obj( "OBJ_FIND_BAKER" ), "" );
Objective_OnEntity( obj( "OBJ_FIND_BAKER" ), chopper_marker );
}
//*******************************************************************
// Dialogue *
//*******************************************************************
section_dialogue()
{
maps\nx_rocket_util::wait_play_dialogue_wait( 3, "roc_jen_rescue_holyshit" );
maps\nx_rocket_util::wait_play_dialogue_wait( 0, "roc_jen_rescue_strongmsg" );
maps\nx_rocket_util::wait_play_dialogue_wait( 0, "roc_wil_rescue_rollout" );
// flag_wait( "rescue_encounter_start" );
maps\nx_rocket_util::wait_play_dialogue_wait( 3, "roc_wil_rescue_tangowarehouse" );
flag_wait( "wave_01_start" );
maps\nx_rocket_util::wait_play_dialogue_wait( 0, "roc_wil_rescue_getoutofhere" );
maps\nx_rocket_util::wait_play_dialogue_wait( 1.5, "roc_jen_rescue_moretangosincoming" );
maps\nx_rocket_util::wait_play_dialogue_wait( 1, "roc_wil_echo_shit" );
maps\nx_rocket_util::wait_play_dialogue_wait( 0, "roc_wil_rescue_takecoverawhile" );
flag_wait( "wave_02_start" );
maps\nx_rocket_util::wait_play_dialogue_wait( 0, "roc_wil_rescue_takethemout" );
flag_wait( "wave_03_start" );
maps\nx_rocket_util::wait_play_dialogue_wait( 0, "roc_jen_rescue_tangosdrivingin" );
flag_wait( "vtol_enter" );
maps\nx_rocket_util::wait_play_dialogue_wait( 0, "roc_jen_rescue_vtolbadnews" );
// add_dialogue_line( "Williams", "That VTOL is bad news...", undefined, 3.0 );
flag_wait( "hummer_enter" );
maps\nx_rocket_util::wait_play_dialogue_wait( 0, "roc_jen_rescue_humveetakecover" );
maps\nx_rocket_util::dialogue_nag( "roc_wil_rescue_takeoutgunner", 4.0, 6.0, "hummer_gunner_killed" );
// level thread maps\nx_rocket_util::dialogue_nag_temp( "Williams", "Lockwood! Take out that gunner in the Humvee!", 3.0, 2.0, 4.0, "hummer_gunner_killed" );
flag_wait( "hummer_gunner_killed" );
maps\nx_rocket_util::dialogue_nag( "roc_wil_rescue_getongun", 4.0, 6.0, "hummer_mounted" );
flag_wait( "wave_05_start" );
maps\nx_rocket_util::wait_play_dialogue_wait( 0, "roc_jen_rescue_apc" );
flag_wait( "rescue_chopper_arrived" );
maps\nx_rocket_util::wait_play_dialogue_wait( 8, "roc_jen_rescue_baker" );
flag_wait( "rescue_chopper_landed" );
maps\nx_rocket_util::wait_play_dialogue_wait( 0, "roc_wil_rescue_makearun" );
// level thread maps\nx_rocket_util::dialogue_nag_temp( "Williams", "Lockwood! Get on that gun and take down that VTOL! I'll cover you!", 3.0, 2.0, 4.0, "hummer_mounted" );
}
dialogue_player_safe_zone_warn( trigger, end_on )
{
level endon( end_on );
while( 1 )
{
if( !( level._player IsTouching( trigger ) ) )
add_dialogue_line( "Williams", "Lockwood! Get back here!", undefined, 3.0 );
wait RandomFloatRange( 2.0, 4.0 );
}
}
//*******************************************************************
// Section *
//*******************************************************************
section_precache()
{
PrecacheItem( "mp5" );
PrecacheItem( "rpg" );
PrecacheItem( "rpg_straight" );
}
section_flag_inits()
{
flag_init( "turret_destroyed" );
flag_init( "rescue_enemy_preview" );
flag_init( "rescue_jumpdown" );
flag_init( "rescue_encounter_start" );
flag_init( "rescue_arrived" );
flag_init( "rescue_warehouse_entered" );
flag_init( "vignette_aa_control_exit" );
flag_init( "defend_start" );
flag_init( "wave_01_start" );
flag_init( "wave_02_start" );
flag_init( "wave_03_start" );
flag_init( "wave_04_start" );
flag_init( "wave_05_start" );
flag_init( "rescue_chopper_arrived" );
flag_init( "rescue_chopper_landed" );
flag_init( "vtol_enter" );
flag_init( "hummer_enter" );
flag_init( "hummer_gunner_killed" );
flag_init( "hummer_mounted" );
flag_init( "rescue_chopper_allies_loaded" );
}
//*******************************************************************
// DEBUG *
//*******************************************************************
debug_wave_info( wave_name, wave_info )
{
if( !DEBUG_WAVE_INFO )
return;
if( !IsArray( wave_info ) )
{
wave_info = [ wave_info ];
}
iPrintln( wave_name + ":" );
foreach( line in wave_info )
{
iPrintln( line );
}
}