nx1-gsc-dump/maps/nx_border_church.gsc

447 lines
12 KiB
Plaintext

//****************************************************************************
// **
// Confidential - (C) Activision Publishing, Inc. 2010 **
// **
//****************************************************************************
// **
// Module: Border, Church **
// **
// Created: 11/11/11 - Travis Chen (trchen x 4143) **
// **
//****************************************************************************
#include maps\_utility;
#include maps\_nx_utility;
#include common_scripts\utility;
#include maps\_vehicle;
#include maps\_anim;
//*******************************************************************
// *
// *
//*******************************************************************
section_main()
{
}
//*******************************************************************
// *
// *
//*******************************************************************
section_precache()
{
}
section_flag_inits()
{
flag_init( "flag_market_objective_complete" );
flag_init( "flag_church_heli_inbound" );
}
//*******************************************************************
// *
// *
//*******************************************************************
section_objectives( objective_num )
{
return objective_num;
}
//*******************************************************************
// *
// *
//*******************************************************************
church_start()
{
maps\nx_border_util::player_start( "player_start_church" );
nodes = GetNodeArray( "node_ally_church_final", "script_noteworthy" );
Assert( IsDefined( nodes ));
maps\nx_border_util::spawn_allies( nodes );
}
church()
{
CreateThreatBiasGroup( "church_player" );
CreateThreatBiasGroup( "church_enemies" );
CreateThreatBiasGroup( "church_allies" );
level._player SetThreatBiasGroup( "church_player" );
level.church_num_enemies_done = 0;
// Enemy spawners
thread enemy_spawner_setup();
// Ally / enemy movement
thread ally_control();
thread enemy_control();
// Kills the flood spawners
thread heli_called_in();
// Church voiceovers
thread church_vo();
// Setting flag so you play the correct helicopter sound
flag_set( "helicopter_reveal" );
// Danger zone to keep player in quad
thread player_danger_zone();
}
//*******************************************************************
// *
// *
//*******************************************************************
church_vo()
{
flag_wait( "flag_church_start" );
battlechatter_off( "allies" );
battlechatter_off( "axis" );
if( !flag( "flag_church_heli_inbound" ))
{
// Dialogue: Baker - We can't get through! Cartel is digging in! Jackson, call in the chopper!
level.leader dialogue_queue( "bor_bak_church_carteldiggingin3" );
}
battlechatter_on( "allies" );
battlechatter_on( "axis" );
level waittill( "notify_church_all_enemies_dead" );
wait 3;
battlechatter_off( "allies" );
battlechatter_off( "axis" );
// Dialogue: Baker - We're still registering heat signatures from inside the church. Continue with the assault, Panther One.
radio_dialogue( "bor_oly_market_heatsignatures" );
// Dialogue: Baker - Solid copy. (to squad) Check you weapons and ammo. We're not done yet.
//radio_dialogue( "bor_bak_market_notdoneyet" );
flag_set( "flag_market_objective_complete" );
thread ending_blackout();
// Dialogue: Baker - Solid copy. Charlie Mike. <beat, to squad> Let's go.
level.leader dialogue_queue( "bor_bak_market_letsgo" );
nextmission();
}
//*******************************************************************
// *
// *
//*******************************************************************
heli_target_focus()
{
self endon( "notify_church_all_enemies_dead" );
target = GetEnt( "origin_anything_I_want", "targetname" );
Assert( IsDefined( target ));
// Focus on generic target when no targets in sight
while( 1 )
{
level waittill( "helicopter_support_inbound" );
level.heli_support_turret SetTargetEntity( target );
level waittill( "helicopter_support_unloaded" );
level.heli_support_turret ClearTargetEntity();
level.heli_support_turret_guy.ignoreall = true;
}
}
heli_kills_heli()
{
// Destroyed model
destroyed = GetEnt( "vehicle_hind_destroyed", "targetname" );
Assert( IsDefined( destroyed ));
destroyed hide();
fx = GetEnt( "origin_church_heli_destroy", "targetname" );
Assert( IsDefined( fx ));
// Get heli on ground and kill it
heli = GetEnt( "vehicle_church_hind", "targetname" );
Assert( IsDefined( heli ));
MagicBullet( "nx_turret_blackhawk_ai", level.heli_support_turret.origin + (0, 0, 300), fx.origin );
MagicBullet( "nx_turret_blackhawk_ai", level.heli_support_turret.origin + (0, 0, 300), fx.origin );
MagicBullet( "nx_turret_blackhawk_ai", level.heli_support_turret.origin + (0, 0, 300), fx.origin );
wait( 1 );
PlayFX( GetFX( "nx_border_helicopter_explosion" ), fx.origin );
heli hide();
destroyed show();
destroyed playsound ("scn_helo_explode");
destroyed PlayLoopSound ("scn_helo_burn");
// Focuses heli fire when it doesn't have a target
thread heli_target_focus();
}
//*******************************************************************
// *
// *
//*******************************************************************
player_danger_zone()
{
while( 1 )
{
// Player enters danger zone enemies seek the player out
if( flag( "flag_church_player_danger" ))
{
SetThreatBias( "church_enemies", "church_player", 1000 );
while( flag( "flag_church_player_danger" ))
{
guys = GetAIArray( "axis" );
foreach( guy in guys )
{
if( IsAlive( guy ))
{
guy set_baseaccuracy( 10000 );
guy player_seek_enable();
}
}
wait( 0.05 );
}
// Player leaves zone, return enemies to normal
SetThreatBias( "church_enemies", "church_player", 0 );
guys = GetAIArray( "axis" );
foreach( guy in guys )
{
if( IsAlive( guy ))
{
guy set_baseaccuracy( 1 );
guy player_seek_disable();
}
}
}
wait( 0.05 );
}
}
//*******************************************************************
// *
// *
//*******************************************************************
ally_control()
{
issue_color_orders( "r400", "allies" );
issue_color_orders( "y400", "allies" );
foreach( guy in level.allies )
{
if( guy != level.leader )
{
if( !IsDefined( self.Melee ) )
{
guy thread magic_bullet_shield();
}
}
guy SetThreatBiasGroup( "church_allies" );
}
}
//*******************************************************************
// *
// *
//*******************************************************************
enemy_control()
{
// Waits for spawners to be triggered
flag_wait( "flag_church_start" );
wait( 0.05 );
// Enemies initially ignore player
SetIgnoreMeGroup( "church_enemies", "church_player" );
// Wait for guys to die
while( 1 )
{
ai = get_living_ai_array( "actor_church_spawners" , "script_noteworthy" );
if( ai.size == level.church_num_enemies_done )
break;
wait( 0.05 );
}
level notify( "notify_church_all_enemies_dead" );
}
//*******************************************************************
// *
// *
//*******************************************************************
enemy_spawner_setup()
{
// Add spawnfunc to all enemies
array_spawn_function_noteworthy( "actor_church_spawners", ::spawnfunc_enemy_church );
}
//*******************************************************************
// *
// *
//*******************************************************************
heli_called_in()
{
flag_wait( "flag_church_start" );
// Grab spawn flood kill trigger
kill_flooder = GetEnt( "trig_church_ground_spawner", "targetname" );
// If the player decides not to throw the grenade
thread heli_not_called_in( kill_flooder );
level waittill( "helicopter_support_inbound" );
flag_set( "flag_church_heli_inbound" );
thread heli_kills_heli();
// Kill spawners
kill_flooder notify( "trigger" );
// Enemies ignores player and allies
SetIgnoreMeGroup( "church_enemies", "church_allies" );
SetIgnoreMeGroup( "church_enemies", "church_player" );
level._player.ignoreme = true;
ai = get_living_ai_array( "actor_church_spawners", "script_noteworthy" );
Assert( IsDefined( level.support_heli ));
foreach( guy in ai )
{
if( IsSubStr( guy.classname, "rpg" ))
guy thread rpg_target_heli();
guy.baseaccuracy = 0.01;
}
}
heli_not_called_in( trig )
{
level endon( "helicopter_support_inbound" );
wait 30;
trig notify( "trigger" );
level.church_num_enemies_done = 4;
}
//*******************************************************************
// *
// *
//*******************************************************************
rpg_target_heli()
{
self endon( "death" );
self enable_cqbwalk();
while( 1 )
{
while( self CanSee( level.support_heli ))
{
//self.ignoreall = true;
//self cqb_aim( level.support_heli );
//self Shoot();
//wait_random( 4, 10 );
self SetEntityTarget( level.support_heli );
wait( 0.05 );
}
self ClearEntityTarget();
self.ignoreall = false;
wait( 0.05 );
}
}
//*******************************************************************
// *
// *
//*******************************************************************
spawnfunc_enemy_church()
{
if( IsSubStr( self.classname, "rpg" ))
{
self.health = 1;
self.ragdoll_immediate = true;
}
self disable_long_death();
self SetThreatBiasGroup( "church_enemies" );
}
//*******************************************************************
// *
// *
//*******************************************************************
// Blackout at end of level
ending_blackout()
{
wait 1;
fadeInTime = 2;
//setSavedDvar( "compass", 0 );
//setSavedDvar( "hud_showStance", 0 );
overlay = newHudElem();
overlay.x = 0;
overlay.y = 0;
overlay setshader( "black", 640, 480 );
overlay.alignX = "left";
overlay.alignY = "top";
overlay.horzAlign = "fullscreen";
overlay.vertAlign = "fullscreen";
overlay.alpha = 0;
overlay fadeOverTime( fadeInTime );
overlay.alpha = 1;
wait fadeInTime;
level._player freezeControls( true );
enablePlayerWeapons( false );
}