mirror of
https://github.com/reaaLx/nx1-gsc-dump.git
synced 2025-04-23 09:35:45 +00:00
802 lines
22 KiB
Plaintext
802 lines
22 KiB
Plaintext
//****************************************************************************
|
|
// **
|
|
// Confidential - (C) Activision Publishing, Inc. 2010 **
|
|
// **
|
|
//****************************************************************************
|
|
// **
|
|
// Module: MISSION DESCRIPTION **
|
|
// **
|
|
// Created: DATE - CREATOR **
|
|
// **
|
|
//****************************************************************************
|
|
|
|
#include maps\_utility;
|
|
#include common_scripts\utility;
|
|
#include maps\_anim;
|
|
#include maps\_vehicle;
|
|
#include maps\nx_harbor_util;
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
main()
|
|
{
|
|
// Add_starts
|
|
default_start( ::nx_harbor_tram_ride_start );
|
|
add_start( "tram_ride", ::nx_harbor_tram_ride_start, "Tram Ride", ::nx_harbor_tram_ride );
|
|
add_start( "station", ::nx_harbor_station_start, "Station", ::nx_harbor_station );
|
|
add_start( "tunnel", ::nx_harbor_tunnel_start, "Tunnel", ::nx_harbor_tunnel );
|
|
add_start( "derail", ::nx_harbor_derail_start, "Derail", ::nx_harbor_derail );
|
|
add_start( "harbor_no_game", ::nx_harbor_no_game_start, "Harbor No Game", ::nx_harbor_no_game );
|
|
|
|
// External Initialization
|
|
maps\nx_harbor_precache::main();
|
|
maps\nx_harbor_anim::main();
|
|
maps\nx_harbor_fx::main();
|
|
maps\_load::main();
|
|
|
|
//start ambiences
|
|
maps\nx_harbor_amb::main();
|
|
|
|
// Internal Initialization
|
|
mission_flag_inits();
|
|
mission_precache();
|
|
|
|
// Mission threads
|
|
level thread mission_music();
|
|
|
|
// Tunnel thread
|
|
level thread tunnel_thread();
|
|
level thread save_point_thread();
|
|
level thread end_mission_thread();
|
|
level thread hide_underwater_box();
|
|
level thread setup_ambients();
|
|
}
|
|
|
|
// All mission specific PreCache calls
|
|
mission_precache()
|
|
{
|
|
PrecacheItem( "hind_FFAR" );
|
|
PrecacheModel( "nx_prototype_harbor_train" );
|
|
PrecacheModel( "nx_prototype_harbor_window01" );
|
|
PrecacheModel( "nx_prototype_harbor_window02" );
|
|
PrecacheModel( "nx_prototype_harbor_floor01" );
|
|
PrecacheModel( "nx_prototype_harbor_floor02" );
|
|
PrecacheModel( "nx_prototype_harbor_glass_botb01" );
|
|
PrecacheModel( "nx_prototype_harbor_glass_botb02" );
|
|
PrecacheModel( "nx_prototype_harbor_glass_botf01" );
|
|
PrecacheModel( "nx_prototype_harbor_glass_botf02" );
|
|
PrecacheModel( "nx_prototype_harbor_glass_topb01" );
|
|
PrecacheModel( "nx_prototype_harbor_glass_topb02" );
|
|
PrecacheModel( "nx_prototype_harbor_glass_topfc01" );
|
|
PrecacheModel( "nx_prototype_harbor_glass_topfc02" );
|
|
PrecacheModel( "nx_prototype_harbor_glass_tops01" );
|
|
PrecacheModel( "nx_prototype_harbor_glass_tops02" );
|
|
}
|
|
|
|
// All mission specific flag_init() calls
|
|
mission_flag_inits()
|
|
{
|
|
flag_init( "tram_end_mission" );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
//*******************************************************************
|
|
|
|
setup_ambients()
|
|
{
|
|
level._ambient_track [ "amb_underwater" ] = "amb_underwater";
|
|
}
|
|
|
|
// Put scripts for tunnel sound / fx
|
|
player_entered_tunnel()
|
|
{
|
|
level notify( "player_entered_tunnel" );
|
|
level._player playsound("train_enter_tunnel");
|
|
thread maps\_utility::set_ambient( "nx_harbor_train_tunnel_int" );
|
|
thread play_subway_announcer();
|
|
transition_time = 7.0;
|
|
// iPrintLnBold( "--- ENTERING Tunnel ---" );
|
|
set_vision_set("nx_harbor_tunnel", transition_time);
|
|
setExpFog( 1083, 14802, 0.7960784, 0.7568628, 0.7137255, 1.0, transition_time );
|
|
}
|
|
|
|
// Put scripts for exterior sound / fx
|
|
player_left_tunnel()
|
|
{
|
|
level notify( "player_left_tunnel" );
|
|
level._player playsound("train_exit_tunnel");
|
|
thread maps\_utility::set_ambient( "nx_harbor_train_int" );
|
|
transition_time = 5.0;
|
|
// iPrintLnBold( "--- EXITING Tunnel ---" );
|
|
set_vision_set("nx_harbor_outside", transition_time);
|
|
setExpFog( 12635, 14802, 0.7215686, 0.7882353, 0.7803922, 0.4, transition_time );
|
|
}
|
|
|
|
play_subway_announcer()
|
|
{
|
|
announcer = spawn( "sound_emitter", ( 2762, 31838, 300 ) );
|
|
wait 2.7;
|
|
announcer PlaySound( "emt_subway_announcer" );
|
|
|
|
wait 12.0;
|
|
announcer delete();
|
|
}
|
|
|
|
tunnel_thread()
|
|
{
|
|
while( true )
|
|
{
|
|
flag_wait( "player_in_tunnel" );
|
|
level thread player_entered_tunnel();
|
|
|
|
while( true )
|
|
{
|
|
if( !flag( "player_in_tunnel" ) )
|
|
break;
|
|
|
|
wait( 0.05 );
|
|
}
|
|
|
|
level thread player_left_tunnel();
|
|
}
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
//*******************************************************************
|
|
|
|
save_point_thread()
|
|
{
|
|
while( true )
|
|
{
|
|
flag_wait( "tram_save_point" );
|
|
|
|
level thread autosave_now();
|
|
|
|
flag_clear( "tram_save_point" );
|
|
}
|
|
}
|
|
|
|
end_mission_thread()
|
|
{
|
|
flag_wait( "tram_end_mission" );
|
|
endmission_goto_frontend();
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
nx_harbor_setup()
|
|
{
|
|
level.platform = maps\_nx_moving_platform::init( "platform_train" );
|
|
waittillframeend;
|
|
|
|
train_setup( level.platform );
|
|
anim_create_paths();
|
|
|
|
player_setup();
|
|
ally_setup( "ally_01", "ally_01", "anim_window_mid_left" );
|
|
ally_setup( "ally_02", "ally_02", "anim_window_mid_left_top" );
|
|
|
|
level thread debug_print_train_speed();
|
|
}
|
|
|
|
debug_print_train_speed()
|
|
{
|
|
//iPrintLn( level.platform train_get_speed() );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
nx_harbor_tram_ride_start()
|
|
{
|
|
}
|
|
|
|
nx_harbor_tram_ride()
|
|
{
|
|
// Setup
|
|
nx_harbor_setup();
|
|
|
|
// Start the ambient vehicles
|
|
level thread tram_ride_ambient_vehicles();
|
|
|
|
// Start the train
|
|
level.platform maps\_nx_moving_platform::init_player_start();
|
|
level.platform maps\_nx_moving_platform::start_path( "train_path_start", "targetname" );
|
|
|
|
// Thread the events
|
|
level thread nx_harbor_tram_ride_choppers();
|
|
}
|
|
|
|
nx_harbor_tram_ride_choppers()
|
|
{
|
|
///////////////////
|
|
// EVENTS
|
|
///////////////////
|
|
|
|
//Chopper 01
|
|
trigger_wait( "enemy_choppers_spawn", "targetname" );
|
|
chopper_01 = maps\nx_harbor_util::vehicle_create( "enemy_chopper_01", ::bridge_chopper_01 );
|
|
chopper_02 = maps\nx_harbor_util::vehicle_create( "enemy_chopper_02", ::bridge_chopper_02);
|
|
chopper_boss = maps\nx_harbor_util::vehicle_create( "enemy_chopper_boss", ::bridge_chopper_boss );
|
|
}
|
|
|
|
bridge_chopper_01()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
|
|
self godon();
|
|
trigger_wait( "enemy_choppers_follow", "targetname" );
|
|
self godoff();
|
|
self thread vehicle_follow( level.platform, 15, 40, level._player );
|
|
self chopper_attack( "gun", level._player );
|
|
level.squad[ "ally_01" ] ally_attack( self );
|
|
level waittill( "player_entered_tunnel" );
|
|
self Delete();
|
|
}
|
|
|
|
bridge_chopper_02()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
|
|
self godon();
|
|
trigger_wait( "enemy_choppers_follow", "targetname" );
|
|
self godoff();
|
|
level.squad[ "ally_02" ] ally_attack( self );
|
|
wait 4.0;
|
|
self thread vehicle_follow( level.platform, 15, 40, level._player );
|
|
self chopper_attack( "gun", level._player );
|
|
level waittill( "player_entered_tunnel" );
|
|
self Delete();
|
|
}
|
|
|
|
bridge_chopper_boss()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
|
|
godon();
|
|
trigger_wait( "enemy_choppers_follow", "targetname" );
|
|
self thread vehicle_follow( level.platform, 15, 40 );
|
|
trigger_wait( "chopper_boss_lead", "targetname" );
|
|
self vehicle_jump_to_path( "enemy_chopper_boss_lead", "targetname" );
|
|
self vehicle_end_follow();
|
|
self thread vehicle_follow( level.platform, 45, 60, level._player );
|
|
wait 6.0;
|
|
self chopper_attack( "missile", level._player );
|
|
level waittill( "player_entered_tunnel" );
|
|
self Delete();
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
//*******************************************************************
|
|
|
|
tram_ride_ambient_vehicles()
|
|
{
|
|
level thread ambient_vehicles_bridge();
|
|
}
|
|
|
|
ambient_vehicles_bridge()
|
|
{
|
|
level thread maps\nx_harbor_util::lane_logic( "lane_1_cars", 60, 1.0, 3000, "stop_ambient_vehicles_bridge" );
|
|
wait( 1.0 );
|
|
level thread maps\nx_harbor_util::lane_logic( "lane_2_cars", 60, 1.0, 3000, "stop_ambient_vehicles_bridge" );
|
|
wait( 1.0 );
|
|
level thread maps\nx_harbor_util::lane_logic( "lane_3_cars", 60, 1.0, 3000, "stop_ambient_vehicles_bridge" );
|
|
}
|
|
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
nx_harbor_station_start()
|
|
{
|
|
// Setup
|
|
nx_harbor_setup();
|
|
|
|
// Start the train
|
|
level.platform maps\_nx_moving_platform::start_path( "train_path_station_start", "targetname" );
|
|
|
|
wait( 0.05 );
|
|
|
|
level.platform maps\_nx_moving_platform::init_player_start();
|
|
}
|
|
|
|
nx_harbor_station()
|
|
{
|
|
// Start the ambient vehicles
|
|
level thread station_ambient_vehicles();
|
|
|
|
level thread station_civilians();
|
|
|
|
// Spawn funcs
|
|
station_enemy_wave_1 = GetEntArray( "station_enemy_wave_1", "targetname" );
|
|
array_thread( station_enemy_wave_1, ::add_spawn_function, ::station_enemy_wave_1_spawn_func );
|
|
station_enemy_wave_2 = GetEntArray( "station_enemy_wave_2", "targetname" );
|
|
array_thread( station_enemy_wave_2, ::add_spawn_function, ::station_enemy_wave_2_spawn_func );
|
|
|
|
// First street encounter.
|
|
level waittill( "player_left_tunnel" );
|
|
autosave_now();
|
|
|
|
trigger_wait( "enemy_car_01_spawn", "targetname" );
|
|
car_01 = vehicle_create( "enemy_car_01", ::car_01_city );
|
|
car_02 = vehicle_create( "enemy_car_02", ::car_02_city );
|
|
|
|
trigger_wait( "enemy_boss_street_01", "targetname" );
|
|
boss = vehicle_create( "enemy_chopper_boss", ::boss_city );
|
|
}
|
|
|
|
station_civilians()
|
|
{
|
|
level endon( "player_left_tunnel" );
|
|
|
|
trigger_wait( "station_civilian_spawn", "targetname" );
|
|
|
|
crowd = maps\nx_crowd_controller::init_crowd( "station_civilians",
|
|
15,
|
|
GetEntArray( "station_civilian", "script_noteworthy" ),
|
|
GetEntArray( "civilian_path", "script_noteworthy"),
|
|
0.5,
|
|
1.0
|
|
);
|
|
|
|
while( 1 )
|
|
{
|
|
maps\nx_crowd_controller::spawn_crowd( "station_civilians" );
|
|
level waittill( "station_civilians" );
|
|
}
|
|
|
|
// civilian_spawners = GetEntArray( "station_civilian", "script_noteworthy" );
|
|
// foreach( spawner in civilian_spawners )
|
|
// {
|
|
// spawner spawn_ai( true );
|
|
// wait RandomFloatRange( 0.6, 1.0 );
|
|
// }
|
|
}
|
|
|
|
station_enemy_wave_1_spawn_func()
|
|
{
|
|
self.baseaccuracy = 0.4;
|
|
}
|
|
|
|
boss_city()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
|
|
self vehicle_jump_to_path( "enemy_chopper_boss_street_01", "targetname" );
|
|
self thread vehicle_follow( level.platform, 45, 70 );
|
|
|
|
trigger_wait( "enemy_boss_face", "targetname" );
|
|
self vehicle_end_follow();
|
|
self thread vehicle_follow( level.platform, 30, 70, level._player );
|
|
wait 10.0;
|
|
self chopper_attack( "missile", level._player );
|
|
|
|
level waittill( "player_entered_tunnel" );
|
|
self Delete();
|
|
}
|
|
|
|
|
|
station_enemy_wave_2_spawn_func()
|
|
{
|
|
self.baseaccuracy = 0.4;
|
|
}
|
|
|
|
car_01_city()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
self.health = 1000;
|
|
self thread vehicle_follow( level.platform, 35, 60 );
|
|
self thread vehicle_kill_on_rider_death( 4 );
|
|
level waittill( "player_entered_tunnel" );
|
|
self Delete();
|
|
}
|
|
|
|
car_02_city()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
self.health = 1000;
|
|
self thread vehicle_follow( level.platform, 35, 60 );
|
|
self thread vehicle_kill_on_rider_death( 4 );
|
|
|
|
level waittill( "player_entered_tunnel" );
|
|
self Delete();
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
//*******************************************************************
|
|
|
|
station_ambient_vehicles()
|
|
{
|
|
flag_wait( "start_ambient_vehicles_city" );
|
|
level thread ambient_vehicles_city();
|
|
}
|
|
|
|
ambient_vehicles_city()
|
|
{
|
|
level thread maps\nx_harbor_util::lane_logic( "lane_1_cars_city", 50, 2.0, 8000, "stop_ambient_vehicles_city" );
|
|
wait( 1.0 );
|
|
level thread maps\nx_harbor_util::lane_logic( "lane_2_cars_city", 50, 2.0, 8000, "stop_ambient_vehicles_city" );
|
|
wait( 1.0 );
|
|
level thread maps\nx_harbor_util::lane_logic( "lane_3_cars_city", 50, 2.0, 8000, "stop_ambient_vehicles_city" );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
nx_harbor_tunnel_start()
|
|
{
|
|
// Setup
|
|
nx_harbor_setup();
|
|
|
|
// Start the train
|
|
level.platform maps\_nx_moving_platform::start_path( "train_path_tunnel_start", "targetname" );
|
|
|
|
wait( 0.05 );
|
|
|
|
level.platform maps\_nx_moving_platform::init_player_start();
|
|
}
|
|
|
|
nx_harbor_tunnel()
|
|
{
|
|
// Start the ambient vehicles
|
|
level thread tunnel_ambient_vehicles( );
|
|
|
|
trigger_wait( "enemy_tunnel_01_spawn", "targetname" );
|
|
car_01 = vehicle_create( "tunnel_car_01", ::car_01_tunnel );
|
|
car_02 = vehicle_create( "tunnel_car_02", ::car_02_tunnel );
|
|
|
|
trigger_wait( "enemy_tunnel_02_spawn", "targetname" );
|
|
car_03 = vehicle_create( "tunnel_car_03", ::car_03_tunnel );
|
|
car_04 = vehicle_create( "tunnel_car_04", ::car_04_tunnel );
|
|
|
|
trigger_wait( "tunnel_semi_spawn", "targetname" );
|
|
level.semi = vehicle_create( "tunnel_semi", ::semi_tunnel );
|
|
|
|
car_03 thread car_truck_death( level.semi );
|
|
car_04 thread car_truck_death( level.semi );
|
|
}
|
|
|
|
car_01_tunnel()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
self thread vehicle_follow( level.platform, 35, 60 );
|
|
self thread vehicle_kill_on_rider_death( 4 );
|
|
self lights_on( "all" );
|
|
|
|
self waittill( "reached_end_node" );
|
|
self vehicle_crash();
|
|
}
|
|
|
|
car_02_tunnel()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
|
|
self thread vehicle_follow( level.platform, 35, 60 );
|
|
self thread vehicle_kill_on_rider_death( 4 );
|
|
self lights_on( "all" );
|
|
|
|
level waittill( "tunnel_combat_end" );
|
|
self Delete();
|
|
}
|
|
|
|
car_03_tunnel()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
self thread vehicle_follow( level.platform, 35, 60 );
|
|
self lights_on( "all" );
|
|
|
|
self.riders[ 2 ].health = 2000;
|
|
level waittill( "tunnel_combat_end" );
|
|
self Delete();
|
|
}
|
|
|
|
car_04_tunnel()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
self thread vehicle_follow( level.platform, 35, 60 );
|
|
self lights_on( "all" );
|
|
|
|
self.riders[ 2 ].health = 2000;
|
|
level waittill( "tunnel_combat_end" );
|
|
self Delete();
|
|
}
|
|
|
|
semi_tunnel()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
self lights_on( "all" );
|
|
level waittill( "tunnel_combat_end" );
|
|
self Delete();
|
|
}
|
|
|
|
car_truck_death( truck )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
|
|
while( 1 )
|
|
{
|
|
if( Distance( self.origin, truck.origin ) < truck.radius )
|
|
{
|
|
self vehicle_crash();
|
|
break;
|
|
}
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
//*******************************************************************
|
|
|
|
tunnel_ambient_vehicles( )
|
|
{
|
|
flag_wait( "start_ambient_vehicles_tunnel" );
|
|
level thread ambient_vehicles_tunnel();
|
|
}
|
|
|
|
ambient_vehicles_tunnel()
|
|
{
|
|
level thread maps\nx_harbor_util::lane_logic( "lane_4_cars_tunnel", 40, 3.0, 5000, "stop_ambient_vehicles_tunnel", true );
|
|
wait( 1.0 );
|
|
level thread maps\nx_harbor_util::lane_logic( "lane_1_cars_tunnel", 40, 3.0, 5000, "stop_ambient_vehicles_tunnel", true );
|
|
wait( 1.0 );
|
|
level thread maps\nx_harbor_util::lane_logic( "lane_5_cars_tunnel", 40, 3.0, 5000, "stop_ambient_vehicles_tunnel", true );
|
|
wait( 1.0 );
|
|
level thread maps\nx_harbor_util::lane_logic( "lane_2_cars_tunnel", 40, 3.0, 5000, "stop_ambient_vehicles_tunnel", true );
|
|
wait( 1.0 );
|
|
level thread maps\nx_harbor_util::lane_logic( "lane_6_cars_tunnel", 40, 3.0, 5000, "stop_ambient_vehicles_tunnel", true );
|
|
wait( 1.0 );
|
|
level thread maps\nx_harbor_util::lane_logic( "lane_3_cars_tunnel", 40, 3.0, 5000, "stop_ambient_vehicles_tunnel", true );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
nx_harbor_derail_start()
|
|
{
|
|
// Setup
|
|
nx_harbor_setup();
|
|
|
|
// Start the train
|
|
level.platform maps\_nx_moving_platform::start_path( "train_path_derail_start", "targetname" );
|
|
|
|
wait( 0.05 );
|
|
|
|
level.platform maps\_nx_moving_platform::init_player_start();
|
|
}
|
|
|
|
nx_harbor_derail()
|
|
{
|
|
// Wait for exploder
|
|
// level thread nx_harbor_derail_exploder();
|
|
trigger_wait( "derail_boss_entrance", "targetname" );
|
|
boss = vehicle_create( "enemy_chopper_boss", ::derail_boss );
|
|
|
|
wait( 1.0 );
|
|
|
|
// Set objective
|
|
level thread derail_set_objective();
|
|
level thread underwater();
|
|
}
|
|
|
|
derail_boss()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "delete" );
|
|
self godon();
|
|
|
|
self vehicle_jump_to_path( "enemy_chopper_boss_derail", "targetname" );
|
|
self thread vehicle_follow( train_get_object( "train_front" ), 70, 80, level._player );
|
|
// self chopper_attack( "missile", level._player);
|
|
self waittill( "reached_dynamic_path_end" );
|
|
self vehicle_end_follow();
|
|
bridge_target = GetEnt( "chopper_bridge_target", "targetname" );
|
|
self SetLookAtEnt( bridge_target );
|
|
// self thread vehicle_follow( train_get_object( "train_front" ), 60, 70, bridge_target );
|
|
|
|
self chopper_attack( "missile", bridge_target);
|
|
wait 1.5;
|
|
nx_harbor_derail_exploder();
|
|
wait 1.0;
|
|
self chopper_end_missiles();
|
|
|
|
self SetLookAtEnt( level._player );
|
|
}
|
|
|
|
derail_set_objective()
|
|
{
|
|
objective_add( 1, "current", &"NX_HARBOR_OBJECTIVE_JUMP_OUT" );
|
|
Objective_OnEntity( 1, level.platform, (-150, 300, -75) );
|
|
|
|
derail_vignette();
|
|
}
|
|
|
|
derail_vignette()
|
|
{
|
|
level.platform waittill( "platform_path_end" );
|
|
|
|
// Sparks fx
|
|
sparks_fx = GetEnt( "derail_sparks_fx", "targetname" );
|
|
sparks_fx thread play_sound_in_space( "car_explode" );
|
|
playFX( level._effect[ "derail_sparks_fx" ], sparks_fx.origin );
|
|
Earthquake( 0.4, 4.0 , level._player.origin, 5000 );
|
|
|
|
// Get node
|
|
node = GetEnt( "derail_vignette", "targetname" );
|
|
new_node = spawn( "script_origin", node.origin );
|
|
new_node.angles = node.angles;
|
|
|
|
// Delete the train
|
|
level.platform train_delete();
|
|
waittillframeend;
|
|
|
|
// Play vignette
|
|
tram = spawn_anim_model( "tram" );
|
|
player_rig = spawn_anim_model( "player_rig" );
|
|
|
|
guys = [];
|
|
guys["player_rig"] = player_rig;
|
|
guys["tram"] = tram;
|
|
|
|
// Play FX on tram
|
|
tram thread tram_fx_thread();
|
|
|
|
level._player playerLinkToBlend( player_rig, "tag_player", 0.75 );
|
|
level._player disableweapons();
|
|
|
|
new_node thread anim_first_frame( guys, "tram_derail" );
|
|
wait( 0.25 );
|
|
|
|
new_node thread anim_single( guys, "tram_derail" );
|
|
|
|
wait( 11.0 );
|
|
|
|
flag_set( "tram_end_mission" );
|
|
}
|
|
|
|
tram_fx_thread()
|
|
{
|
|
wait( 9.5 );
|
|
playFX( level._effect[ "tram_splash" ], self.origin );
|
|
}
|
|
|
|
underwater()
|
|
{
|
|
flag_wait( "underwater" );
|
|
|
|
// Underwater sound
|
|
level._player playsound( "water_submerge" );
|
|
thread maps\_utility::set_ambient( "amb_underwater" );
|
|
thread maps\_ambient::setup_new_eq_settings( "underwater", level._eq_main_track );
|
|
setsaveddvar( "g_enteqdist", 1 );
|
|
|
|
playFX( level._effect[ "splash" ], level._player.origin );
|
|
playFX( level._effect[ "underwater_splash" ], level._player.origin );
|
|
|
|
maps\_utility::set_vision_set( "oilrig_underwater", 0 );
|
|
setExpFog( 0, 482, 0.0461649, 0.25026, 0.221809, 1, 0, 0.0501764, 0.0501764, 0.0501764, (-0.0563281, 0.0228246, -1), 58.2299, 87.711, 1.48781 );
|
|
|
|
level thread show_underwater_box();
|
|
thread underwater_set_culldist( 0, 20000 );
|
|
|
|
// Wait for not underwater
|
|
while( true )
|
|
{
|
|
if( !flag( "underwater" ) )
|
|
{
|
|
break;
|
|
}
|
|
wait( 0.05 );
|
|
}
|
|
|
|
level thread hide_underwater_box();
|
|
}
|
|
|
|
show_underwater_box()
|
|
{
|
|
underwater_box = getent( "underwater_box", "targetname" );
|
|
underwater_box show();
|
|
}
|
|
|
|
hide_underwater_box()
|
|
{
|
|
underwater_box = getent( "underwater_box", "targetname" );
|
|
underwater_box hide();
|
|
}
|
|
|
|
underwater_set_culldist( time, range )
|
|
{
|
|
wait time;
|
|
SetCullDist( range );
|
|
}
|
|
|
|
nx_harbor_derail_exploder()
|
|
{
|
|
// flag_wait( "derail_exploder" );
|
|
// level waittill( "bridge_explode" );
|
|
|
|
// Play fx
|
|
derail_fx = GetEnt( "derail_fx", "targetname" );
|
|
playFX( level._effect[ "derail_fx" ], derail_fx.origin );
|
|
derail_fx thread play_sound_in_space( "car_explode" );
|
|
|
|
// Trigger exploder
|
|
exploder( 1 );
|
|
|
|
// Rumble
|
|
Earthquake( 0.4, 3.0 , level._player.origin, 5000 );
|
|
level._player PlayRumbleOnEntity( "damage_light" );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
nx_harbor_no_game_start()
|
|
{
|
|
}
|
|
|
|
nx_harbor_no_game()
|
|
{
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// 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 );
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|