mirror of
https://github.com/reaaLx/nx1-gsc-dump.git
synced 2025-04-22 09:05:45 +00:00
951 lines
25 KiB
Plaintext
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 );
|
|
}
|
|
}
|