743 lines
30 KiB
Plaintext
743 lines
30 KiB
Plaintext
|
#include maps\_utility;
|
|||
|
#include common_scripts\utility;
|
|||
|
#include maps\_anim;
|
|||
|
|
|||
|
#using_animtree( "generic_human" );
|
|||
|
main()
|
|||
|
{
|
|||
|
dialog();
|
|||
|
|
|||
|
talking_anims();
|
|||
|
forward_run_anims();
|
|||
|
sniper_anims();
|
|||
|
bouncing_betty_anims();
|
|||
|
breach_anims();
|
|||
|
breach_data();
|
|||
|
ending_anims();
|
|||
|
ending_playerview_anims();
|
|||
|
ending_heli_anims();
|
|||
|
}
|
|||
|
|
|||
|
talking_anims()
|
|||
|
{
|
|||
|
level.scr_anim[ "ghost" ][ "temp_cellphone" ] = %patrol_bored_idle_cellphone;
|
|||
|
level.scr_anim[ "ghost" ][ "temp_walkto" ] = %patrol_bored_patrolwalk;
|
|||
|
level.scr_anim[ "generic" ][ "estate_ghost_radio" ] = %estate_ghost_radio;
|
|||
|
level.scr_anim[ "generic" ][ "estate_house_photoshoot" ] = %estate_house_photoshoot;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "exposed_crouch_extendedpainA" ] = %exposed_crouch_extendedpainA;
|
|||
|
}
|
|||
|
|
|||
|
forward_run_anims()
|
|||
|
{
|
|||
|
level.scr_anim[ "ghost" ][ "downhill_run" ] = %estate_downhill_1;
|
|||
|
level.scr_anim[ "generic" ][ "downhill_run" ] = %estate_downhill_1;
|
|||
|
level.scr_anim[ "ozone" ][ "downhill_run" ] = %estate_downhill_1;
|
|||
|
level.scr_anim[ "scarecrow" ][ "downhill_run" ] = %estate_downhill_1;
|
|||
|
|
|||
|
level.scr_anim[ "ghost" ][ "run" ] = %run_lowready_F;
|
|||
|
level.scr_anim[ "generic" ][ "run" ] = %run_lowready_F;
|
|||
|
level.scr_anim[ "ozone" ][ "run" ] = %run_lowready_F;
|
|||
|
level.scr_anim[ "scarecrow" ][ "run" ] = %run_lowready_F;
|
|||
|
}
|
|||
|
|
|||
|
breach_anims()
|
|||
|
{
|
|||
|
level.scr_anim[ "generic" ][ "exposed_idle_reactA" ] = %exposed_idle_reactA;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "favela_chaotic_cornerR_med90" ] = %favela_chaotic_cornerR_med90;
|
|||
|
level.scr_anim[ "generic" ][ "favela_chaotic_cornerCrL_fire_mid" ] = %favela_chaotic_cornerCrL_fire_mid;
|
|||
|
level.scr_anim[ "generic" ][ "favela_chaotic_cornerCrR_fire_mid" ] = %favela_chaotic_cornerCrR_fire_mid;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "favela_chaotic_crouchcover_fireA" ] = %favela_chaotic_crouchcover_fireA;
|
|||
|
level.scr_anim[ "generic" ][ "favela_chaotic_crouchcover_fireB" ] = %favela_chaotic_crouchcover_fireB;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_blowback_v1" ] = %breach_react_blowback_v1;
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_blowback_v2" ] = %breach_react_blowback_v2;
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_blowback_v3" ] = %breach_react_blowback_v3;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_knife_charge" ] = %breach_react_knife_charge;
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_knife_charge_death" ] = %death_shotgun_back_v1;
|
|||
|
|
|||
|
//NOT USED
|
|||
|
|
|||
|
/*
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_desk_v1" ] = %breach_react_desk_v1; //cool
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_desk_v2" ] = %breach_react_desk_v2;
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_desk_v3" ] = %breach_react_desk_v3;
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_desk_v4" ] = %breach_react_desk_v4; //cool
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_desk_v7" ] = %breach_react_desk_v7;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "patrol_bored_react_walkstop" ] = %patrol_bored_react_walkstop;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "heat_stand_turn_R" ] = %heat_stand_turn_R;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "favela_chaotic_crouchcover_fireC" ] = %favela_chaotic_crouchcover_fireC;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "favela_chaotic_standcover_fireA" ] = %favela_chaotic_standcover_fireA;
|
|||
|
level.scr_anim[ "generic" ][ "favela_chaotic_standcover_fireB" ] = %favela_chaotic_standcover_fireB;
|
|||
|
level.scr_anim[ "generic" ][ "favela_chaotic_standcover_fireC" ] = %favela_chaotic_standcover_fireC;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "favela_chaotic_cornerL_mid90" ] = %favela_chaotic_cornerL_mid90;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_guntoss_v2_guy1" ] = %breach_react_guntoss_v2_guy1;
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_guntoss_v2_guy2" ] = %breach_react_guntoss_v2_guy2;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_push_guy1" ] = %breach_react_push_guy1;
|
|||
|
level.scr_anim[ "generic" ][ "breach_react_push_guy2" ] = %breach_react_push_guy2;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "breach_chair_hide_reaction_v1" ] = %breach_chair_hide_reaction_v1;
|
|||
|
level.scr_anim[ "generic" ][ "breach_chair_hide_reaction_v1_death" ] = %covercrouch_death_1;
|
|||
|
level.scr_anim[ "generic" ][ "breach_chair_hide_reaction_v1_death2" ] = %covercrouch_death_2;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "breach_chair_hide_reaction_v2" ] = %breach_chair_hide_reaction_v2; //cool
|
|||
|
level.scr_anim[ "generic" ][ "breach_chair_hide_reaction_v2_death" ] = %breach_chair_hide_reaction_death_v2;
|
|||
|
|
|||
|
level.scr_anim[ "generic" ][ "takedown_room2A_soldier" ] = %takedown_room2A_soldier;
|
|||
|
level.scr_anim[ "generic" ][ "takedown_room2A_soldier_idle" ][ 0 ] = %takedown_room2A_soldier_end_idle;
|
|||
|
level.scr_anim[ "generic" ][ "takedown_room2B_soldier" ] = %takedown_room2B_soldier;
|
|||
|
level.scr_anim[ "generic" ][ "takedown_room2B_soldier_idle" ][ 0 ] = %takedown_room2B_soldier_idle;
|
|||
|
level.scr_anim[ "generic" ][ "takedown_room1A_soldier" ] = %takedown_room1A_soldier;
|
|||
|
level.scr_anim[ "generic" ][ "takedown_room1A_soldier_idle" ][ 0 ] = %takedown_room1A_soldier_idle;
|
|||
|
level.scr_anim[ "generic" ][ "takedown_room1B_soldier" ] = %takedown_room1B_soldier;
|
|||
|
level.scr_anim[ "generic" ][ "takedown_room1B_soldier_idle" ][ 0 ] = %takedown_room1B_soldier_idle;
|
|||
|
|
|||
|
*/
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
ending_anims()
|
|||
|
{
|
|||
|
level.scr_model[ "body_ending" ] = "body_tf141_assault_a";
|
|||
|
level.scr_animtree[ "body_ending" ] = #animtree;
|
|||
|
level.scr_anim[ "body_ending" ][ "estate_ending_part1" ] = %estate_chopper_sequence_body;
|
|||
|
|
|||
|
level.scr_anim[ "ghost" ][ "estate_ending_drag" ] = %estate_drag_friendly;
|
|||
|
level.scr_anim[ "ghost_ending" ][ "estate_ending_part1" ] = %estate_chopper_sequence_soldier;
|
|||
|
|
|||
|
level.scr_anim[ "shepherd_ending" ][ "estate_ending_part1" ] = %estate_chopper_sequence_leader;
|
|||
|
addNotetrack_dialogue( "shepherd_ending" , "shepherd_dsm_talk" , "estate_ending_part1" , "est_shp_havethedsm" );
|
|||
|
addNotetrack_dialogue( "shepherd_ending" , "shepherd_talk_looseend" , "estate_ending_part1" , "est_shp_looseend" );
|
|||
|
|
|||
|
level.scr_anim[ "guy1_ending" ][ "estate_ending_part1" ] = %estate_chopper_sequence_enemy1;
|
|||
|
level.scr_anim[ "guy2_ending" ][ "estate_ending_part1" ] = %estate_chopper_sequence_enemy2;
|
|||
|
|
|||
|
level.scr_anim[ "guy1_ending" ][ "estate_ending_part2" ] = %estate_body_toss_guy1;
|
|||
|
level.scr_anim[ "guy2_ending" ][ "estate_ending_part2" ] = %estate_body_toss_guy2;
|
|||
|
level.scr_anim[ "body_ending" ][ "estate_ending_part2" ] = %estate_body_toss_body;
|
|||
|
|
|||
|
level.scr_anim[ "guy1_ending" ][ "estate_ending_part2_2ndbody" ] = %estate_2ND_body_toss_guy1;
|
|||
|
level.scr_anim[ "guy2_ending" ][ "estate_ending_part2_2ndbody" ] = %estate_2ND_body_toss_guy2;
|
|||
|
//level.scr_anim[ "body_ending" ][ "estate_ending_part2_2ndbody" ] = %estate_2ND_body_toss_body;
|
|||
|
level.scr_anim[ "ghost_ending_dead" ][ "estate_ending_part2_2ndbody" ] = %estate_2ND_body_toss_body;
|
|||
|
|
|||
|
level.scr_anim[ "gasolineGuy" ][ "estate_ending_part3" ] = %estate_ending_gasoline_guy;
|
|||
|
level.scr_anim[ "shepherd_ending" ][ "estate_ending_part3" ] = %estate_ending_gasoline_leader;
|
|||
|
|
|||
|
//play gascan effects
|
|||
|
addNotetrack_customFunction( "gasolineGuy", "gas_splash_start", ::play_gas_can_fx_splash );
|
|||
|
addNotetrack_customFunction( "gasolineGuy", "gas_drip_start", ::play_gas_can_fx_drips );
|
|||
|
addNotetrack_customFunction( "gasolineGuy", "gas_splash_end", ::stop_gas_can_fx_splash );
|
|||
|
addNotetrack_customFunction( "gasolineGuy", "gas_drip_end", ::stop_gas_can_fx_drips );
|
|||
|
addNotetrack_customFunction( "ghost_ending_dead", "bodyfall large", ::play_bodyimpact_fx );
|
|||
|
addNotetrack_customFunction( "ghost_ending", "blood_splat", ::play_ghost_shot_fx );
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
play_ghost_shot_fx( ghost_ending )
|
|||
|
{
|
|||
|
//iprintlnbold( "ghost betrayed" );
|
|||
|
PlayFXOnTag( getfx( "flesh_hit_body_fatal_exit" ), ghost_ending, "J_SpineUpper" );
|
|||
|
}
|
|||
|
|
|||
|
play_gas_can_fx_splash( gasolineGuy )
|
|||
|
{
|
|||
|
self endon("gas_splash_end");
|
|||
|
// iprintlnbold( "splash!" );
|
|||
|
for ( ;; )
|
|||
|
{
|
|||
|
PlayFXOnTag( getfx( "gas_can_splash" ), gasolineGuy, "TAG_FX" );
|
|||
|
wait( 0.03 );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
play_gas_can_fx_drips( gasolineGuy )
|
|||
|
{
|
|||
|
self endon("gas_drip_end");
|
|||
|
// iprintlnbold( "drip!" );
|
|||
|
for ( ;; )
|
|||
|
{
|
|||
|
PlayFXOnTag( getfx( "gas_can_splash" ), gasolineGuy, "TAG_FX" );
|
|||
|
wait( 0.03 );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
stop_gas_can_fx_splash( gasolineGuy )
|
|||
|
{
|
|||
|
// iprintlnbold( "stop splash!" );
|
|||
|
self notify( "gas_splash_end" );
|
|||
|
}
|
|||
|
|
|||
|
stop_gas_can_fx_drips( gasolineGuy )
|
|||
|
{
|
|||
|
// iprintlnbold( "stop drip!" );
|
|||
|
self notify( "gas_drip_end" );
|
|||
|
}
|
|||
|
|
|||
|
play_bodyimpact_fx( ghost_ending )
|
|||
|
{
|
|||
|
//iprintlnbold( "poof_ghost" );
|
|||
|
PlayFXOnTag( getfx( "bodydump_dust_large" ), ghost_ending, "J_SpineLower" );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
sniper_anims()
|
|||
|
{
|
|||
|
level.scr_anim[ "ghillie" ][ "prone_2_stand" ] = %prone_2_stand;
|
|||
|
level.scr_anim[ "ghillie" ][ "prone_2_stand_firing" ] = %prone_2_stand_firing;
|
|||
|
}
|
|||
|
|
|||
|
dialog()
|
|||
|
{
|
|||
|
// Archer: Snipers in position.
|
|||
|
level.scr_radio[ "est_snp1_inposition" ] = "est_snp1_inposition";
|
|||
|
|
|||
|
// Scarecrow: Roger that.
|
|||
|
level.scr_radio[ "est_sld1_rogerthat" ] = "est_sld1_rogerthat";
|
|||
|
|
|||
|
// Ozone: Solid copy.
|
|||
|
level.scr_radio[ "est_sld2_solidcopy" ] = "est_sld2_solidcopy";
|
|||
|
|
|||
|
// Ghost: Strike team, go. Engage Makarov on sight.
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_engageonsight" ] = "est_gst_engageonsight";
|
|||
|
|
|||
|
// Let's go, let's go!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_letsgoletsgo" ] = "est_gst_letsgoletsgo";
|
|||
|
|
|||
|
// AMBUUUSH!!!!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_ambush" ] = "est_gst_ambush";
|
|||
|
|
|||
|
// AMBUUUSH!!!!!
|
|||
|
level.scr_sound[ "ozone" ][ "est_tf1_ambush" ] = "est_tf1_ambush";
|
|||
|
|
|||
|
// AMBUUUSH!!!!!
|
|||
|
level.scr_sound[ "scarecrow" ][ "est_tf2_ambush" ] = "est_tf2_ambush";
|
|||
|
|
|||
|
// Taaargeets!!!! Left sidde!! Left siide!!!!!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_targetsleftside" ] = "est_gst_targetsleftside";
|
|||
|
|
|||
|
// COUNTERATTACK INTO THE SMOKE! Push push push!!!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_counterattack" ] = "est_gst_counterattack";
|
|||
|
|
|||
|
// Roach! You're gonna get hit by a mortar! Lose 'em in the smoke!! Go go gooo!!!!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_loseeminsmoke" ] = "est_gst_loseeminsmoke";
|
|||
|
|
|||
|
// They've got this area presighted for mortar fire!!!
|
|||
|
level.scr_sound[ "scarecrow" ][ "est_scr_presighted" ] = "est_scr_presighted";
|
|||
|
|
|||
|
// Hostile chopper to the south!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_hostchopper" ] = "est_gst_hostchopper";
|
|||
|
|
|||
|
// Archer: We got two trucks leaving the target building!
|
|||
|
level.scr_radio[ "est_snp1_trucksleaving" ] = "est_snp1_trucksleaving";
|
|||
|
|
|||
|
// Don't let those trucks get awaay!!!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_trucksgetaway" ] = "est_gst_trucksgetaway";
|
|||
|
|
|||
|
// Bloody hell, these trucks are bulletproofed!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_bulletproofed" ] = "est_gst_bulletproofed";
|
|||
|
|
|||
|
// Archer: Roger! Firing Javelin, danger close!
|
|||
|
level.scr_radio[ "est_snp1_firingjavelin" ] = "est_snp1_firingjavelin";
|
|||
|
|
|||
|
//Javelin, danger clooose!!! Get back from the roaaad!!!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_dangerclose" ] = "est_gst_dangerclose";
|
|||
|
|
|||
|
// Archer: Two away!
|
|||
|
level.scr_radio[ "est_snp1_twoaway" ] = "est_snp1_twoaway";
|
|||
|
|
|||
|
// Archer: Moving vehicles have been neutralized.
|
|||
|
level.scr_radio[ "est_snp1_neutralized" ] = "est_snp1_neutralized";
|
|||
|
|
|||
|
// Archer: Be advised, we have not, I repeat, we have not spotted Makarov, and no one else has left the house. Those trucks may have been decoys.
|
|||
|
level.scr_radio[ "est_snp1_decoys" ] = "est_snp1_decoys";
|
|||
|
|
|||
|
//Roger that, we're advancing on the house now!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_advancingonhouse" ] = "est_gst_advancingonhouse";
|
|||
|
|
|||
|
//Clear the perimeter!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_clearperimieter" ] = "est_gst_clearperimieter";
|
|||
|
|
|||
|
//Breach and clear the safehouse! Go! Go!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_breachnclear" ] = "est_gst_breachnclear";
|
|||
|
|
|||
|
//Office clear!
|
|||
|
level.scr_radio[ "est_gst_officeclear" ] = "est_gst_officeclear";
|
|||
|
|
|||
|
//Dining room clear!
|
|||
|
level.scr_radio[ "est_gst_diningroomclr" ] = "est_gst_diningroomclr";
|
|||
|
|
|||
|
//Clear!
|
|||
|
level.scr_radio[ "est_gst_clear" ] = "est_gst_clear";
|
|||
|
|
|||
|
//Let's go, let's go!
|
|||
|
level.scr_radio[ "est_gst_letsgo2" ] = "est_gst_letsgo2";
|
|||
|
|
|||
|
//Roach, go upstairs and check any locked rooms on the top floor. Breach and clear.
|
|||
|
level.scr_radio[ "est_gst_lockedrooms" ] = "est_gst_lockedrooms";
|
|||
|
|
|||
|
//I've got this area covered Roach. Get upstairs and check the rooms on the top floor.
|
|||
|
level.scr_radio[ "est_scr_getupstairs" ] = "est_scr_getupstairs";
|
|||
|
|
|||
|
//Roach, check the basement for enemy activity. Breach and clear. Go.
|
|||
|
level.scr_radio[ "est_gst_checkbasement" ] = "est_gst_checkbasement";
|
|||
|
|
|||
|
//Scarecrow, gimme a sitrep.
|
|||
|
level.scr_radio[ "est_gst_sitrep" ] = "est_gst_sitrep";
|
|||
|
|
|||
|
//No one's leaving through the front of the basement.
|
|||
|
level.scr_radio[ "est_scr_noonesleaving" ] = "est_scr_noonesleaving";
|
|||
|
|
|||
|
//Ozone, make sure no one leaves through the kitchen.
|
|||
|
level.scr_radio[ "est_gst_thrukitchen" ] = "est_gst_thrukitchen";
|
|||
|
|
|||
|
//Roger that.
|
|||
|
level.scr_radio[ "est_ozn_rogerthat" ] = "est_ozn_rogerthat";
|
|||
|
|
|||
|
//Main floor clear!
|
|||
|
level.scr_radio[ "est_scr_mainfloor" ] = "est_scr_mainfloor";
|
|||
|
|
|||
|
//Copy that, main floor clear!
|
|||
|
level.scr_radio[ "est_gst_mainfloor" ] = "est_gst_mainfloor";
|
|||
|
|
|||
|
//I got your back, Roach.
|
|||
|
level.scr_radio[ "est_scr_gotyourback" ] = "est_scr_gotyourback";
|
|||
|
|
|||
|
//Basement clear!
|
|||
|
level.scr_radio[ "est_scr_basement" ] = "est_scr_basement";
|
|||
|
|
|||
|
//Copy, basement clear!
|
|||
|
level.scr_radio[ "est_gst_basement" ] = "est_gst_basement";
|
|||
|
|
|||
|
//Top floor clear!
|
|||
|
level.scr_radio[ "est_scr_topfloor" ] = "est_scr_topfloor";
|
|||
|
|
|||
|
//Roger that, top floor clear!
|
|||
|
level.scr_radio[ "est_gst_topfloor" ] = "est_gst_topfloor";
|
|||
|
|
|||
|
//All clear. Squad, regroup on me.
|
|||
|
level.scr_radio[ "est_gst_regroup" ] = "est_gst_regroup";
|
|||
|
|
|||
|
//Scarecrow, photographs.
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_photos" ] = "est_gst_photos";
|
|||
|
|
|||
|
//Roger that.
|
|||
|
level.scr_radio[ "est_scr_rogerthat" ] = "est_scr_rogerthat";
|
|||
|
|
|||
|
//Shepherd, this is Ghost. No sign of Makarov, I repeat, no sign of Makarov. Captain Price, any luck in Afghanistan?
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_nosign" ] = "est_gst_nosign";
|
|||
|
|
|||
|
//Negative. Soap and I are in position at the boneyard. No sign of Makarov. So much for the intel.
|
|||
|
level.scr_radio[ "est_pri_somuchforintel" ] = "est_pri_somuchforintel";
|
|||
|
|
|||
|
//Price: Plenty...at least fifty hired guns here, but no sign of Makarov. Perhaps our intel was off.
|
|||
|
level.scr_radio[ "est_pri_atleast50" ] = "est_pri_atleast50";
|
|||
|
|
|||
|
//Well, the quality of the intel's about to change. This safehouse's a bloody gold mine.
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_goldmine" ] = "est_gst_goldmine";
|
|||
|
|
|||
|
//Shepherd: Copy that. Ghost, have your team collect everything you can for an operations playbook. Names, contacts, places, everything.
|
|||
|
level.scr_radio[ "est_shp_everything" ] = "est_shp_everything";
|
|||
|
|
|||
|
//We're already on it sir. Makarov will have nowhere to run.
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_alreadyonit" ] = "est_gst_alreadyonit";
|
|||
|
|
|||
|
//Shepherd: That's the idea. I'm bringing up the extraction force, E.T.A. five minutes. Get that intel. Shepherd out.
|
|||
|
level.scr_radio[ "est_shp_eta5mins" ] = "est_shp_eta5mins";
|
|||
|
|
|||
|
//Roach, get to Makarov's computer and start the transfer.
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_starttransfer" ] = "est_gst_starttransfer";
|
|||
|
|
|||
|
//Ozone, you're on rear security. I've got the front. Go.
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_rearsecurity" ] = "est_gst_rearsecurity";
|
|||
|
|
|||
|
//On my way.
|
|||
|
level.scr_radio[ "est_ozn_onmyway" ] = "est_ozn_onmyway";
|
|||
|
|
|||
|
//Price: Task Force, this is Price. More of Makarov's men just arrived at the boneyard. They're searching for something<6E>
|
|||
|
level.scr_radio[ "est_pri_searching" ] = "est_pri_searching";
|
|||
|
|
|||
|
//Price: Wait...they're getting closer to us<75>
|
|||
|
level.scr_radio[ "est_pri_gettingcloser" ] = "est_pri_gettingcloser";
|
|||
|
|
|||
|
//Price: We're going silent for a few minutes. Good luck up there in Russia. Price out.
|
|||
|
level.scr_radio[ "est_pri_goingsilent" ] = "est_pri_goingsilent";
|
|||
|
|
|||
|
//Roach - connect the DSM to Makarov's computer.
|
|||
|
level.scr_radio[ "est_gst_filesoff" ] = "est_gst_filesoff";
|
|||
|
|
|||
|
//Roach, we're not leaving without those files. Start the transfer.
|
|||
|
level.scr_radio[ "est_gst_startdownload" ] = "est_gst_startdownload";
|
|||
|
|
|||
|
//Sniper Team One to strike team, be advised, we got enemy helos approaching from the northwest and southeast.
|
|||
|
level.scr_radio[ "est_snp1_mainroad" ] = "est_snp1_mainroad";
|
|||
|
|
|||
|
//We got 60 seconds tops, over.
|
|||
|
level.scr_radio[ "est_snp1_60seconds" ] = "est_snp1_60seconds";
|
|||
|
|
|||
|
//Makarov's men are going to do whatever it takes to keep us from leaving with this intel. We need to protect the DSM until the transfer's done.
|
|||
|
level.scr_radio[ "est_gst_withintel" ] = "est_gst_withintel";
|
|||
|
|
|||
|
//Use the weapons caches and set up your claymores if you've got any left. Defensive positions, let's go!
|
|||
|
level.scr_radio[ "est_gst_weaponscache" ] = "est_gst_weaponscache";
|
|||
|
|
|||
|
//Enemy choppers in 15 seconds.
|
|||
|
level.scr_radio[ "est_snp1_15seconds" ] = "est_snp1_15seconds";
|
|||
|
|
|||
|
//Roger that, 15 seconds!
|
|||
|
level.scr_radio[ "est_gst_15seconds" ] = "est_gst_15seconds";
|
|||
|
|
|||
|
//I'm in position!
|
|||
|
level.scr_radio[ "est_scr_inposition" ] = "est_scr_inposition";
|
|||
|
|
|||
|
//Ready to engage!
|
|||
|
level.scr_radio[ "est_ozn_readyengage" ] = "est_ozn_readyengage";
|
|||
|
|
|||
|
//Roach, there's an armory in the basement. Better stock up while you can.
|
|||
|
level.scr_radio[ "est_ozn_stockup" ] = "est_ozn_stockup";
|
|||
|
|
|||
|
//********* MD500_rush strikepackage
|
|||
|
|
|||
|
//Enemy fast-attack choppers coming in from the northwest.
|
|||
|
level.scr_radio[ "est_snp1_fastattack" ] = "est_snp1_fastattack";
|
|||
|
|
|||
|
//Roger that. Enemy helos approaching from the northwest.
|
|||
|
level.scr_radio[ "est_gst_helosnw" ] = "est_gst_helosnw";
|
|||
|
|
|||
|
//We gotta cover the front lawn!
|
|||
|
level.scr_radio[ "est_scr_frontlawn" ] = "est_scr_frontlawn";
|
|||
|
|
|||
|
//I'm moving to the main windows, I need someone to mine and cover the driveway approach.
|
|||
|
level.scr_radio[ "est_ozn_mainwindows" ] = "est_ozn_mainwindows";
|
|||
|
|
|||
|
//Roach, use your claymores on the driveway and pull back to the house!
|
|||
|
level.scr_radio[ "est_gst_useclaymores" ] = "est_gst_useclaymores";
|
|||
|
|
|||
|
//********* Birchfield FenceBreachers Pkg
|
|||
|
|
|||
|
//What the hell was that?
|
|||
|
level.scr_radio[ "est_scr_whatwasthat" ] = "est_scr_whatwasthat";
|
|||
|
|
|||
|
//Be advised, you have a large concentration of hostiles moving in from the southeast, they just breached the perimeter!
|
|||
|
level.scr_radio[ "est_snp1_hostilesse" ] = "est_snp1_hostilesse";
|
|||
|
|
|||
|
//I'll try to thin 'em out before they get too close. Recommend you switch to scoped weapons, over.
|
|||
|
level.scr_radio[ "est_snp1_thinemout" ] = "est_snp1_thinemout";
|
|||
|
|
|||
|
//Roger that! Everyone cover the field to the southeast! Move!
|
|||
|
level.scr_radio[ "est_gst_fieldtose" ] = "est_gst_fieldtose";
|
|||
|
|
|||
|
//I got eyes on! Here they come! They're in the field to the the southeast!
|
|||
|
level.scr_radio[ "est_ozn_eyeson" ] = "est_ozn_eyeson";
|
|||
|
|
|||
|
//********* Boathouse Helidrop Pkg
|
|||
|
|
|||
|
//They're dropping in more troops west of the house!
|
|||
|
level.scr_radio[ "est_snp1_troopswest" ] = "est_snp1_troopswest";
|
|||
|
|
|||
|
//They must be by the boathouse! Cover the west approach!
|
|||
|
level.scr_radio[ "est_gst_boathouse" ] = "est_gst_boathouse";
|
|||
|
|
|||
|
//We got 249s and RPGs at the dining room window, plus L86 machine guns.
|
|||
|
level.scr_radio[ "est_ozn_249sandrpgs" ] = "est_ozn_249sandrpgs";
|
|||
|
|
|||
|
//Roger that, use 'em to cut 'em down as they come outta the treeline!
|
|||
|
level.scr_radio[ "est_gst_cutemdown" ] = "est_gst_cutemdown";
|
|||
|
|
|||
|
//You have hostiles approaching from the boathouse to the west, over.
|
|||
|
level.scr_radio[ "est_snp1_boathousewest" ] = "est_snp1_boathousewest";
|
|||
|
|
|||
|
//Roger that, hostiles approaching from the west side of the house!
|
|||
|
level.scr_radio[ "est_gst_westsideofhouse" ] = "est_gst_westsideofhouse";
|
|||
|
|
|||
|
//********* Solarfield SmokeAssault Pkg
|
|||
|
|
|||
|
//I have eyes on additional hostile forces moving in on your position. They're approaching through the solar panels east of the house.
|
|||
|
level.scr_radio[ "est_snp1_additionalhostile" ] = "est_snp1_additionalhostile";
|
|||
|
|
|||
|
//They're moving in through the solar panels east of the house!
|
|||
|
level.scr_radio[ "est_gst_solarpanelseast" ] = "est_gst_solarpanelseast";
|
|||
|
|
|||
|
//Roger, I'll try to cut 'em off as they come through the trees.
|
|||
|
level.scr_radio[ "est_scr_comethrutrees" ] = "est_scr_comethrutrees";
|
|||
|
|
|||
|
//Use your claymores if you have 'em. Plant 'em around the trail east of the house.
|
|||
|
level.scr_radio[ "est_gst_easttrail" ] = "est_gst_easttrail";
|
|||
|
|
|||
|
//********* Archer the Magical Sniper
|
|||
|
|
|||
|
//Tango down.
|
|||
|
level.scr_radio[ "est_snp1_tangodown" ] = "est_snp1_tangodown";
|
|||
|
|
|||
|
//Got one.
|
|||
|
level.scr_radio[ "est_snp1_gotone" ] = "est_snp1_gotone";
|
|||
|
|
|||
|
//Hostile neutralized.
|
|||
|
level.scr_radio[ "est_snp1_hostneut" ] = "est_snp1_hostneut";
|
|||
|
|
|||
|
//That's one down.
|
|||
|
level.scr_radio[ "est_snp1_thatsakill" ] = "est_snp1_thatsakill";
|
|||
|
|
|||
|
//Tango down.
|
|||
|
level.scr_radio[ "est_snp1_thatsone" ] = "est_snp1_thatsone";
|
|||
|
|
|||
|
//That's a kill.
|
|||
|
level.scr_radio[ "est_snp1_tangodown2" ] = "est_snp1_tangodown2";
|
|||
|
|
|||
|
//Dropped him.
|
|||
|
level.scr_radio[ "est_snp1_droppedhim" ] = "est_snp1_droppedhim";
|
|||
|
|
|||
|
//He's down.
|
|||
|
level.scr_radio[ "est_snp1_hesdown" ] = "est_snp1_hesdown";
|
|||
|
|
|||
|
//I'm moving to a different vantage point. Sniper support will be unavailable for forty-five seconds, standby.
|
|||
|
level.scr_radio[ "est_snp1_moving" ] = "est_snp1_moving";
|
|||
|
|
|||
|
//I'm displacing. You're gonna be without sniper support for thirty seconds, standby.
|
|||
|
level.scr_radio[ "est_snp1_displacing" ] = "est_snp1_displacing";
|
|||
|
|
|||
|
//********* RPG Components **********//
|
|||
|
|
|||
|
//RPG team moving in from the east!!
|
|||
|
level.scr_radio[ "est_snp1_rpgteameast" ] = "est_snp1_rpgteameast";
|
|||
|
|
|||
|
//Roger that, RPG team moving in from the east!!
|
|||
|
level.scr_radio[ "est_ozn_rpgteameast" ] = "est_ozn_rpgteameast";
|
|||
|
|
|||
|
//RPG team approaching from the west!!
|
|||
|
level.scr_radio[ "est_snp1_rpgteamwest" ] = "est_snp1_rpgteamwest";
|
|||
|
|
|||
|
//Solid copy! RPG team approaching from the west!!
|
|||
|
level.scr_radio[ "est_gst_rpgteamwest" ] = "est_gst_rpgteamwest";
|
|||
|
|
|||
|
//RPG team moving in from the southwest!!
|
|||
|
level.scr_radio[ "est_snp1_rpgteamsw" ] = "est_snp1_rpgteamsw";
|
|||
|
|
|||
|
//Got it! RPG team moving in from the southwest!!
|
|||
|
level.scr_radio[ "est_ozn_rpgteamsw" ] = "est_ozn_rpgteamsw";
|
|||
|
|
|||
|
//********* FRIENDLY OBITUARIES ***********//
|
|||
|
|
|||
|
//Aaagh! I'm hit!!! Need assis- (static hiss)
|
|||
|
level.scr_radio[ "est_ozn_imhit" ] = "est_ozn_imhit";
|
|||
|
|
|||
|
//Ozone is down!
|
|||
|
level.scr_radio[ "est_snp1_ozoneisdown" ] = "est_snp1_ozoneisdown";
|
|||
|
|
|||
|
//I'm hit - (static hiss)
|
|||
|
level.scr_radio[ "est_scr_imhit" ] = "est_scr_imhit";
|
|||
|
|
|||
|
//Scarecrow is down, I repeat Scarecrow is down!
|
|||
|
level.scr_radio[ "est_snp1_scarecrowdown" ] = "est_snp1_scarecrowdown";
|
|||
|
|
|||
|
//********* ABANDONMENT MECHANIC ***********//
|
|||
|
|
|||
|
//Roach! Stay the close to the house!
|
|||
|
level.scr_radio[ "est_gst_stayclose" ] = "est_gst_stayclose";
|
|||
|
|
|||
|
//Roach! Don't stray too far from the safehouse! We need to protect the transfer!
|
|||
|
level.scr_radio[ "est_gst_dontstray" ] = "est_gst_dontstray";
|
|||
|
|
|||
|
//Roach, where the hell are you?! Fall back to the house! Move!
|
|||
|
level.scr_radio[ "est_gst_fallback" ] = "est_gst_fallback";
|
|||
|
|
|||
|
//Roach, pull back to the safehouse! They're trying to stop the transfer!
|
|||
|
level.scr_radio[ "est_gst_tryingtostop" ] = "est_gst_tryingtostop";
|
|||
|
|
|||
|
//There's too many of them in here! Roach!!! We've lost the DSM, I repeat we've lost-(static hiss)
|
|||
|
level.scr_radio[ "est_gst_lostthedsm" ] = "est_gst_lostthedsm";
|
|||
|
|
|||
|
//Roach! They've destroyed the DSM!! They've destroyed-(static hiss)
|
|||
|
level.scr_radio[ "est_gst_destroyedthedsm" ] = "est_gst_destroyedthedsm";
|
|||
|
|
|||
|
//********* GET THE DSM ***********//
|
|||
|
|
|||
|
//Roach, the transfer's complete! I'll cover the main approach while you get the DSM! Move!
|
|||
|
level.scr_radio[ "est_gst_dsmcomplete" ] = "est_gst_dsmcomplete";
|
|||
|
|
|||
|
//Roach! I'm covering the front! Get the DSM! We gotta get outta here!
|
|||
|
level.scr_radio[ "est_gst_getouttahere" ] = "est_gst_getouttahere";
|
|||
|
|
|||
|
|
|||
|
//********* Birchfield Exfil *********//
|
|||
|
|
|||
|
//This is Shepherd. We're almost at the LZ. What's your status, over?
|
|||
|
level.scr_radio[ "est_shp_almostatlz" ] = "est_shp_almostatlz";
|
|||
|
|
|||
|
//We're on our way to the LZ! Roach, let's go!!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_onourway" ] = "est_gst_onourway";
|
|||
|
|
|||
|
//They're bracketing our position with mortars, keep moving but watch your back!!!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_bracketing" ] = "est_gst_bracketing";
|
|||
|
|
|||
|
//We gotta get to the LZ! Roach, come on!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_gettothelz" ] = "est_gst_gettothelz";
|
|||
|
|
|||
|
//Roach, I got you covered!! Go! Go!!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_gotyoucovered" ] = "est_gst_gotyoucovered";
|
|||
|
|
|||
|
//I'll cover you! Move!!!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_illcoveryou" ] = "est_gst_illcoveryou";
|
|||
|
|
|||
|
//Get to the LZ! Keep moving!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_keepmoving" ] = "est_gst_keepmoving";
|
|||
|
|
|||
|
//Go! Go!
|
|||
|
level.scr_sound[ "ghost" ][ "est_gst_gogo" ] = "est_gst_gogo";
|
|||
|
|
|||
|
//********* Ending - Player Drag *************//
|
|||
|
|
|||
|
//I've got you Roach, hang on!
|
|||
|
level.scr_radio[ "est_gst_gotyouroach" ] = "est_gst_gotyouroach";
|
|||
|
|
|||
|
//Thunder Two-One, I've popped red smoke in the treeline! Standby to engage on my mark!
|
|||
|
level.scr_radio[ "est_gst_redsmoke" ] = "est_gst_redsmoke";
|
|||
|
|
|||
|
//Roger that, I have a visual on the red smoke. Standing by.
|
|||
|
level.scr_radio[ "est_fp1_visual" ] = "est_fp1_visual";
|
|||
|
|
|||
|
//Thunder Two-One, cleared hot!
|
|||
|
level.scr_radio[ "est_gst_clearedhot" ] = "est_gst_clearedhot";
|
|||
|
|
|||
|
//Roger that cleared hot.
|
|||
|
level.scr_radio[ "est_fp1_clearedhot" ] = "est_fp1_clearedhot";
|
|||
|
|
|||
|
//Guns guns guns.
|
|||
|
level.scr_radio[ "est_hp1_gunsgunsguns" ] = "est_hp1_gunsgunsguns";
|
|||
|
|
|||
|
//Roach, hang in there!!!
|
|||
|
level.scr_radio[ "est_gst_hanginthere" ] = "est_gst_hanginthere";
|
|||
|
|
|||
|
//********* Ending - Final Walk *************//
|
|||
|
|
|||
|
//Come on, get up!
|
|||
|
level.scr_sound[ "ghost_ending" ][ "est_gst_comeongetup" ] = "est_gst_comeongetup";
|
|||
|
|
|||
|
//Get up! Get up! We're almost there!
|
|||
|
level.scr_sound[ "ghost_ending" ][ "est_gst_getupgetup" ] = "est_gst_getupgetup";
|
|||
|
|
|||
|
//This is Viper Two-Six, standby for rocket attack, over.
|
|||
|
level.scr_radio[ "est_hp1_rocketattck" ] = "est_hp1_rocketattck";
|
|||
|
|
|||
|
//Uh, roger<65>hit 'em hard on that hill, make sure they're down.
|
|||
|
level.scr_radio[ "est_hp2_hitemhard" ] = "est_hp2_hitemhard";
|
|||
|
|
|||
|
//Roger I'm on it. Coming around on heading two-five-zero.
|
|||
|
level.scr_radio[ "est_hp1_imonit" ] = "est_hp1_imonit";
|
|||
|
|
|||
|
//Roger, I got 'em lined up.
|
|||
|
level.scr_radio[ "est_hp1_linedup" ] = "est_hp1_linedup";
|
|||
|
|
|||
|
//Gold Eagle is on the ground. Watch for snipers on thermal, over.
|
|||
|
level.scr_radio[ "est_hp2_watchforsnipers" ] = "est_hp2_watchforsnipers";
|
|||
|
|
|||
|
//********* Ending - Shepherd's Greeting *************//
|
|||
|
|
|||
|
//Do you have the DSM?
|
|||
|
//level.scr_sound[ "shepherd_ending" ][ "est_shp_havethedsm" ] = "est_shp_havethedsm";
|
|||
|
|
|||
|
//We got it, sir!
|
|||
|
level.scr_sound[ "ghost_ending" ][ "est_gst_wegotit" ] = "est_gst_wegotit";
|
|||
|
|
|||
|
//Well done, soldier.
|
|||
|
level.scr_sound[ "shepherd_ending" ][ "est_shp_welldone" ] = "est_shp_welldone";
|
|||
|
|
|||
|
//Good. That's one less loose end.
|
|||
|
//level.scr_sound[ "shepherd_ending" ][ "est_shp_looseend" ] = "est_shp_looseend";
|
|||
|
|
|||
|
//NO!
|
|||
|
level.scr_sound[ "ghost_ending" ][ "est_gst_no" ] = "est_gst_no";
|
|||
|
|
|||
|
//Area is sanitized. All targets destroyed.
|
|||
|
level.scr_radio[ "est_hp2_sanitized" ] = "est_hp2_sanitized";
|
|||
|
|
|||
|
//Solid copy, no movement detected. Two-six going into holding pattern.
|
|||
|
level.scr_radio[ "est_hp1_holdingpattern" ] = "est_hp1_holdingpattern";
|
|||
|
|
|||
|
//********* Ending - Price on radio *************//
|
|||
|
|
|||
|
//Ghost, come in, this is Price! We're under attack by Shepherd's men at the boneyard!
|
|||
|
level.scr_radio[ "est_pri_comein" ] = "est_pri_comein";
|
|||
|
|
|||
|
//(off mike) Soap, hold the left flank!
|
|||
|
level.scr_radio[ "est_pri_holdleftflank" ] = "est_pri_holdleftflank";
|
|||
|
|
|||
|
//Do not trust Shepherd - I say again, do not trust Shepherd!
|
|||
|
level.scr_radio[ "est_pri_donottrust" ] = "est_pri_donottrust";
|
|||
|
|
|||
|
//(off mike) Soap get dowwwwn!!!
|
|||
|
level.scr_radio[ "est_pri_getdown" ] = "est_pri_getdown";
|
|||
|
|
|||
|
//All 4 above lines combined and edited into one cool sounding delivery
|
|||
|
level.scr_radio[ "est_pri_underattack" ] = "est_pri_underattack";
|
|||
|
}
|
|||
|
|
|||
|
#using_animtree( "script_model" );
|
|||
|
bouncing_betty_anims()
|
|||
|
{
|
|||
|
level.scr_animtree[ "bouncingbetty" ] = #animtree;
|
|||
|
level.scr_anim[ "bouncingbetty" ][ "bouncing_betty_detonate" ] = %bouncing_betty_detonate;
|
|||
|
level.scr_model[ "bouncingbetty" ] = "projectile_bouncing_betty_grenade";
|
|||
|
}
|
|||
|
|
|||
|
breach_data()
|
|||
|
{
|
|||
|
level.scr_anim[ "breach_door_model_estate" ][ "breach" ] = %breach_player_door_v2;
|
|||
|
level.scr_animtree[ "breach_door_model_estate" ] = #animtree;
|
|||
|
level.scr_model[ "breach_door_model_estate" ] = "com_door_02_handleright";
|
|||
|
//level.scr_model[ "breach_door_model_estate" ] = "com_door_02_handleleft";
|
|||
|
|
|||
|
level.scr_anim[ "breach_door_hinge_estate" ][ "breach" ] = %breach_player_door_hinge_v1;
|
|||
|
level.scr_animtree[ "breach_door_hinge_estate" ] = #animtree;
|
|||
|
level.scr_model[ "breach_door_hinge_estate" ] = "com_door_piece_hinge2";
|
|||
|
}
|
|||
|
|
|||
|
#using_animtree( "player" );
|
|||
|
ending_playerview_anims()
|
|||
|
{
|
|||
|
level.scr_animtree[ "playerview" ] = #animtree;
|
|||
|
//level.scr_model[ "playerview" ] = "viewhands_player_sas_woodland";
|
|||
|
level.scr_model[ "playerview" ] = "viewhands_player_tf141";
|
|||
|
|
|||
|
level.scr_anim[ "playerview" ][ "estate_ending_drag" ] = %estate_drag_player;
|
|||
|
level.scr_anim[ "playerview" ][ "estate_ending_part1" ] = %estate_chopper_sequence_player;
|
|||
|
level.scr_anim[ "playerview" ][ "estate_ending_part2" ] = %estate_body_toss_player;
|
|||
|
|
|||
|
addNotetrack_customFunction( "playerview", "bodyfall large", ::play_bodyimpact_fx_player );
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
play_bodyimpact_fx_player( playerview )
|
|||
|
{
|
|||
|
//iprintlnbold( "poof player" );
|
|||
|
PlayFXOnTag( getfx( "bodydump_dust_large" ), playerview, "J_Wrist_RI" );
|
|||
|
}
|
|||
|
|
|||
|
#using_animtree( "vehicles" );
|
|||
|
ending_heli_anims()
|
|||
|
{
|
|||
|
level.scr_animtree[ "pavelow" ] = #animtree;
|
|||
|
level.scr_anim[ "pavelow" ][ "estate_ending_part1" ] = %estate_chopper_sequence_pavelow;
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
|
|||
|
house breach anims
|
|||
|
|
|||
|
breach_react_desk_v1
|
|||
|
breach_chair_hide_reaction_v1
|
|||
|
breach_chair_hide_reaction_v2
|
|||
|
breach_react_desk_v4
|
|||
|
|
|||
|
*/
|