cod4-sdk/raw/maps/ac130_credits.gsc
2008-01-19 00:00:00 +00:00

488 lines
No EOL
11 KiB
Text
Raw Blame History

/*
aimViewAtEnt( entity )
setWeapon( weaponName ) // weaponName can be "105", "40", or "25"
shootWeapon( numberOfShots ) // shoots the curently selected weapon, optional param that defaults to 1
*/
#include common_scripts\utility;
#include maps\_utility;
#include maps\_ac130;
#include maps\ac130_credits_code;
#include maps\_credits;
credits_main()
{
thread initCredits();
setdvar( "credits_load", "0" );
setdvar( "credits_active", "1" );
level.credits_active = true;
if ( getdvar( "credits_frommenu" ) == "1" )
level.credits_frommenu = true;
else
setdvar( "credits_frommenu", "0" );
thread fadeOverlay( "black" );
setExpFog( 1000, 17300, 0/255, 0/255, 0/255, 0 );
setsaveddvar( "scr_dof_enable", "0" );
//setdvar( "cg_subtitles", "0" );
precacheshader("black");
flag_init( "iw_credits_ended" );
flag_init( "credits_ended" );
precacheLevelStuff();
scriptCalls();
spawn_vehicles();
array_thread( getentarray( "destructible_building", "targetname" ), maps\ac130_code::destructible_building );
thread endlevel_transition();
thread stopClouds();
thread playCredits();
thread group1();
}
fadeOverlay( material )
{
duration = 5;
overlay = newHudElem();
overlay.x = 0;
overlay.y = 0;
overlay setshader ( material, 640, 480);
overlay.alignX = "left";
overlay.alignY = "top";
overlay.horzAlign = "fullscreen";
overlay.vertAlign = "fullscreen";
overlay.alpha = 1;
overlay fadeOverTime( duration );
overlay.alpha = 0;
MusicStop( duration );
wait duration;
overlay destroy();
}
stopClouds()
{
wait 2;
level notify( "stop_clounds" );
}
spawn_vehicles()
{
// spawn the vehicle
vehicleArray = maps\_vehicle::spawn_vehicles_from_targetname( "credits_vehicle_1" );
level.vehicle1 = vehicleArray[ 0 ];
vec = anglesToForward( level.vehicle1.angles );
level.vehicle1.forwardEnt = spawn( "script_origin", ( level.vehicle1.origin + vectorscale( vec, 500 ) ) );
level.vehicle1.forwardEnt linkto( level.vehicle1 );
}
group1()
{
focalPoint = getent( "credits_focus_1", "targetname" );
thread aimViewAtEnt( focalPoint );
// Vince
guy1 = spawnAI( "credits_spawner_1" );
guy1.animname = "guy";
wait 3;
guy1 set_run_anim( "patrol_walk" );
thread aimViewAtEnt( guy1, true );
thread setWeapon( "40" );
wait 3;
thread setWeapon( "25" );
// Recalibrate azimuth sweep angle. Adjust elevation scan.
thread radio_dialogue_queue( "ac130_plt_azimuthsweep" );
// Jason
guy3 = spawnAI( "credits_spawner_3" );
guy3.animname = "guy";
wait 3;
thread aimViewAtEnt( guy3, true );
guy3 set_run_anim( "patrol_walk" );
wait 2.6;
thread music();
wait 0.4;
// Set scan range.
thread radio_dialogue_queue( "ac130_plt_scanrange" );
// Roger that.
thread radio_dialogue_queue( "ac130_tvo_rogerthat" );
// Grant
guy2 = spawnAI( "credits_spawner_2" );
guy2.animname = "guy";
wait 3;
guy2 set_run_anim( "patrol_walk" );
thread aimViewAtEnt( guy2, true );
wait 4;
thread setWeapon( "40" );
wait 3;
// back to center
thread aimViewAtEnt( focalPoint );
// Cleared to engage all of those.
thread radio_dialogue_queue( "ac130_plt_clearedtoengage" );
// Copy, smoke <20>em.
thread radio_dialogue_queue( "ac130_plt_copysmoke" );
wait 4;
thread shootWeapon( 2 );
wait 2.0;
// Kaboom!
thread radio_dialogue_queue( "ac130_fco_kaboom" );
thread group2();
}
group2()
{
// some leads try to get away in a vehicle
guy1 = spawnAI( "credits_spawner_4" );
guy2 = spawnAI( "credits_spawner_5" );
guy3 = spawnAI( "credits_spawner_6" );
guysArray = [];
guysArray[ 0 ] = guy1;
guysArray[ 1 ] = guy2;
guysArray[ 2 ] = guy3;
level.vehicle1 maps\_vehicle::vehicle_load_ai( guysArray );
wait 3.0;
thread aimViewAtEnt( level.vehicle1 );
wait 1.0;
thread setWeapon( "25" );
// We got a vehicle on the move.
thread radio_dialogue_queue( "ac130_fco_vehicleonmove" );
level.vehicle1 waittill( "loaded" );
// You are cleared to engage the moving vehicle.
thread radio_dialogue_queue( "ac130_plt_engvehicle" );
// Roger that.
thread radio_dialogue_queue( "ac130_tvo_rogerthat" );
thread maps\_vehicle::gopath( level.vehicle1 );
wait 2.0;
thread setWeapon( "40" );
thread aimViewAtEnt( level.vehicle1.forwardEnt, true, 1.4 );
wait 4;
thread shootWeapon( 3 );
wait 3;
if ( isdefined( level.vehicle1 ) )
level.vehicle1 notify( "death" );
// Confirmed, vehicle neutralized.
thread radio_dialogue_queue( "ac130_fco_confirmed" );
thread group3();
}
group3()
{
guy1 = spawnAI( "credits_spawner_7" );
guy2 = spawnAI( "credits_spawner_8" );
guy3 = spawnAI( "credits_spawner_9" );
wait 4;
focalPoint = getent( "credits_focus_2", "targetname" );
thread movePlaneToPoint( focalPoint.origin, false );
thread aimViewAtEnt( guy1, true );
wait 3;
thread setWeapon( "25" );
wait 2;
thread setWeapon( "40" );
aimViewAtEnt( getent( "credits_group3_aim1", "targetname" ), undefined, 0.8 );
thread shootWeapon( 1 );
aimViewAtEnt( getent( "credits_group3_aim2", "targetname" ), undefined, 0.8 );
thread shootWeapon( 1 );
aimViewAtEnt( getent( "credits_group3_aim3", "targetname" ), undefined, 0.8 );
thread shootWeapon( 1 );
aimViewAtEnt( getent( "credits_group3_aim4", "targetname" ), undefined, 0.8 );
thread shootWeapon( 1 );
aimViewAtEnt( getent( "credits_group3_aim5", "targetname" ), undefined, 0.8 );
thread shootWeapon( 1 );
wait 1;
focalPoint = getent( "credits_focus_3", "targetname" );
thread movePlaneToPoint( focalPoint.origin, false );
aimViewAtEnt( getent( "credits_group3_aim6", "targetname" ), undefined, 0.8 );
thread shootWeapon( 1 );
aimViewAtEnt( getent( "credits_group3_aim7", "targetname" ), undefined, 0.8 );
thread shootWeapon( 1 );
aimViewAtEnt( getent( "credits_group3_aim8", "targetname" ), undefined, 0.8 );
thread shootWeapon( 1 );
thread forceKillAI( guy1 );
thread forceKillAI( guy2 );
thread forceKillAI( guy3 );
thread group4();
}
group4()
{
guy1 = spawnAI( "credits_spawner_10" );
guy2 = spawnAI( "credits_spawner_11" );
guy3 = spawnAI( "credits_spawner_12" );
guy4 = spawnAI( "credits_spawner_13" );
guy5 = spawnAI( "credits_spawner_14" );
guy6 = spawnAI( "credits_spawner_15" );
wait 4;
thread aimViewAtEnt( guy1, true );
wait 4;
thread setWeapon( "25" );
// More enemy personnel.
thread radio_dialogue_queue( "ac130_fco_moreenemy" );
// Cleared to engage all of those.
thread radio_dialogue_queue( "ac130_plt_clearedtoengage" );
wait 2;
thread aimViewAtEnt( guy5, true );
wait 4;
thread aimViewAtEnt( getent( "credits_group4_aim1", "targetname" ) );
thread setWeapon( "105" );
wait 2;
thread shootWeapon( 1 );
focalPoint = getent( "credits_focus_4", "targetname" );
thread movePlaneToPoint( focalPoint.origin, false );
wait 3;
// Hot damn!
thread radio_dialogue_queue( "ac130_fco_hotdamn3" );
wait 1;
thread forceKillAI( guy1 );
thread forceKillAI( guy2 );
thread forceKillAI( guy3 );
thread forceKillAI( guy4 );
thread forceKillAI( guy5 );
thread forceKillAI( guy6 );
thread group5();
}
group5()
{
guy1 = spawnAI( "credits_spawner_16" );
guy2 = spawnAI( "credits_spawner_17" );
guy3 = spawnAI( "credits_spawner_18" );
guy4 = spawnAI( "credits_spawner_19" );
guy5 = spawnAI( "credits_spawner_20" );
guy6 = spawnAI( "credits_spawner_21" );
guy7 = spawnAI( "credits_spawner_22" );
guy8 = spawnAI( "credits_spawner_23" );
thread aimViewAtEnt( guy3, true );
wait 4;
thread setWeapon( "25" );
wait 3;
//Man these guys are goin' to town!
thread radio_dialogue_queue( "ac130_fco_gointotown" );
thread aimViewAtEnt( guy2, true );
wait 3;
//Crew, go ahead and smoke <20>em.
thread radio_dialogue_queue( "ac130_fco_smokeem" );
// Roger that.
thread radio_dialogue_queue( "ac130_tvo_rogerthat" );
thread aimViewAtEnt( getent( "credits_group5_aim1", "targetname" ) );
wait 2;
thread setWeapon( "105" );
wait 3;
thread shootWeapon( 1 );
thread group6();
wait 3;
// Kaboom!
thread radio_dialogue_queue( "ac130_fco_kaboom" );
thread forceKillAI( guy1 );
thread forceKillAI( guy2 );
thread forceKillAI( guy3 );
thread forceKillAI( guy4 );
thread forceKillAI( guy5 );
thread forceKillAI( guy6 );
thread forceKillAI( guy7 );
thread forceKillAI( guy8 );
}
group6()
{
guy1 = spawnAI( "credits_spawner_24" );
guy2 = spawnAI( "credits_spawner_25" );
guy3 = spawnAI( "credits_spawner_26" );
guy4 = spawnAI( "credits_spawner_27" );
guy5 = spawnAI( "credits_spawner_28" );
guy6 = spawnAI( "credits_spawner_29" );
focalPoint = getent( "credits_focus_5", "targetname" );
thread movePlaneToPoint( focalPoint.origin, false );
wait 6;
// There's armed personnel running out of the church.
thread radio_dialogue_queue( "ac130_fco_outofchurch" );
thread aimViewAtEnt( guy3, true );
wait 3;
thread setWeapon( "40" );
// Recalibrate azimuth sweep angle. Adjust elevation scan.
thread radio_dialogue_queue( "ac130_plt_azimuthsweep" );
wait 10;
// Right there...tracking.
thread radio_dialogue_queue( "ac130_fco_rightthere" );
// Rollin' in
thread radio_dialogue_queue( "ac130_plt_rollinin" );
thread setWeapon( "40" );
wait 10;
thread shootWeapon( 6 );
aimViewAtEnt( getent( "credits_group6_aim1", "targetname" ) );
aimViewAtEnt( getent( "credits_group6_aim3", "targetname" ) );
aimViewAtEnt( getent( "credits_group6_aim5", "targetname" ) );
aimViewAtEnt( getent( "credits_group6_aim6", "targetname" ) );
thread forceKillAI( guy1 );
thread forceKillAI( guy2 );
thread forceKillAI( guy3 );
thread forceKillAI( guy4 );
thread forceKillAI( guy5 );
thread forceKillAI( guy6 );
wait 2;
//Hehe, this is gonna be one helluva highlight reel.
thread radio_dialogue_queue( "ac130_fco_highlightreel" );
wait 3;
flag_set( "iw_credits_ended" );
// Roger that. Returning to base.
thread radio_dialogue_queue( "ac130_plt_returningbase" );
}
endlevel_transition()
{
duration = 5;
flag_wait( "iw_credits_ended" );
// Fade screen
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.sort = 1;
overlay fadeOverTime( duration );
overlay.alpha = 1;
AmbientStop( duration );
flag_wait( "credits_ended" );
wait 14;
// Fade music, then end level
MusicStop( duration );
wait duration;
setdvar( "credits_active", "0" );
if ( isdefined( level.credits_frommenu ) )
changelevel( "" );
else
maps\_endmission::credits_end();
}
music()
{
wait 2;
MusicPlayWrapper( "credits_jeepride_defend_music" );
wait 120;
musicStop( 4 );
wait 4.1;
MusicPlayWrapper( "credits_bog_victory" );
wait 80;
musicStop( 6 );
wait 6.1;
MusicPlayWrapper( "deepandhard_music" );
wait 218;
musicStop( 5 );
}