2427 lines
87 KiB
Plaintext
2427 lines
87 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
section_precache()
|
|
{
|
|
precacheitem( "factory_knife" );
|
|
precachemodel( "Viewmodel_knife_iw6" );
|
|
precachemodel( "com_flashlight_on" );
|
|
precachemodel( "shipping_frame_50cal" );
|
|
precachemodel( "shipping_frame_crates" );
|
|
precachemodel( "shipping_frame_minigun" );
|
|
precachemodel( "vld_playing_card_deck" );
|
|
precachemodel( "cnd_cellphone_01_on" );
|
|
precachemodel( "com_folding_chair" );
|
|
precachemodel( "weapon_p226" );
|
|
precachemodel( "fac_ambush_desk_search_chair" );
|
|
precachemodel( "trash_cup_tall2" );
|
|
precachestring( &"FACTORY_HINT_THERMAL" );
|
|
precacherumble( "tank_rumble" );
|
|
precacherumble( "slide_loop" );
|
|
}
|
|
|
|
section_flag_init()
|
|
{
|
|
common_scripts\utility::flag_init( "player_ready_for_drop_kill" );
|
|
common_scripts\utility::flag_init( "introkill_weapon_switched" );
|
|
common_scripts\utility::flag_init( "factory_introkill_jungle" );
|
|
common_scripts\utility::flag_init( "playerkill_at_start_ledge" );
|
|
common_scripts\utility::flag_init( "playerkill_jump_from_ledge" );
|
|
common_scripts\utility::flag_init( "playerkill_R3_Pressed" );
|
|
common_scripts\utility::flag_init( "player_starts_moving" );
|
|
common_scripts\utility::flag_init( "intro_drop_kill_done" );
|
|
common_scripts\utility::flag_init( "approaching_reveal" );
|
|
common_scripts\utility::flag_init( "intro_start_slide" );
|
|
common_scripts\utility::flag_init( "ally_start_sliding" );
|
|
common_scripts\utility::flag_init( "ally_done_sliding" );
|
|
common_scripts\utility::flag_init( "ally_at_first_reveal" );
|
|
common_scripts\utility::flag_init( "infil_water_splash" );
|
|
common_scripts\utility::flag_init( "player_at_first_reveal" );
|
|
common_scripts\utility::flag_init( "factory_exterior_reveal" );
|
|
common_scripts\utility::flag_init( "factory_exterior_reveal_between_trains" );
|
|
common_scripts\utility::flag_init( "factory_exterior_approach_infil" );
|
|
common_scripts\utility::flag_init( "intro_infil_done" );
|
|
common_scripts\utility::flag_init( "kill_train" );
|
|
common_scripts\utility::flag_init( "player_exited_train" );
|
|
common_scripts\utility::flag_init( "player_exited_mission_warning" );
|
|
common_scripts\utility::flag_init( "player_exited_mission" );
|
|
common_scripts\utility::flag_init( "trig_intro_vignette" );
|
|
common_scripts\utility::flag_init( "player_ready_for_train_kill" );
|
|
common_scripts\utility::flag_init( "trainyard_kill_sequence_used" );
|
|
common_scripts\utility::flag_init( "trainyard_enemy_alerted" );
|
|
common_scripts\utility::flag_init( "trainyard_enemy_dead" );
|
|
common_scripts\utility::flag_init( "intro_checkpoint_done" );
|
|
common_scripts\utility::flag_init( "factory_entrance_setup" );
|
|
common_scripts\utility::flag_init( "factory_entrance_start" );
|
|
common_scripts\utility::flag_init( "intro_truck_driver_dead" );
|
|
common_scripts\utility::flag_init( "truck_kill_timed_out" );
|
|
common_scripts\utility::flag_init( "player_entered_awning" );
|
|
common_scripts\utility::flag_init( "factory_entrance_reveal" );
|
|
common_scripts\utility::flag_init( "all_allies_at_entrance" );
|
|
common_scripts\utility::flag_init( "truck_kills_done" );
|
|
common_scripts\utility::flag_init( "start_search" );
|
|
common_scripts\utility::flag_init( "outer_perim_cleared" );
|
|
common_scripts\utility::flag_init( "card_swiped" );
|
|
common_scripts\utility::flag_init( "first_door_guard_shot" );
|
|
common_scripts\utility::flag_init( "enter_factory" );
|
|
common_scripts\utility::flag_init( "entered_factory_1" );
|
|
common_scripts\utility::flag_init( "ingress_dialogue_kickoff" );
|
|
common_scripts\utility::flag_init( "entered_conveyor" );
|
|
common_scripts\utility::flag_init( "ready_to_stab_neck" );
|
|
common_scripts\utility::flag_init( "throat_stab_train" );
|
|
}
|
|
|
|
section_hint_string_init()
|
|
{
|
|
maps\_utility::add_hint_string( "train_stab_hint", &"SCRIPT_PLATFORM_OILRIG_HINT_STEALTH_KILL", ::hint_train_stab_should_break );
|
|
maps\_utility::add_hint_string( "drop_kill_hint", &"FACTORY_DROP_KILL_HINT", ::hint_drop_kill_should_break );
|
|
}
|
|
|
|
hint_drop_kill_should_break()
|
|
{
|
|
if ( common_scripts\utility::flag( "playerkill_jump_from_ledge" ) || !common_scripts\utility::flag( "player_ready_for_drop_kill" ) )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
hint_train_stab_should_break()
|
|
{
|
|
if ( common_scripts\utility::flag( "trainyard_kill_sequence_used" ) || !common_scripts\utility::flag( "player_ready_for_train_kill" ) || common_scripts\utility::flag( "trainyard_enemy_dead" ) )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
intro_start()
|
|
{
|
|
foreach ( var_1 in level.squad )
|
|
{
|
|
var_1 maps\_utility::disable_bulletwhizbyreaction();
|
|
var_1 maps\_utility::disable_pain();
|
|
}
|
|
|
|
thread maps\_art::disable_ssao_over_time( 0.1 );
|
|
level.player disableweapons();
|
|
level.player disableweaponpickup();
|
|
level.player takeweapon( "flash_grenade" );
|
|
level.player takeweapon( "fraggrenade" );
|
|
setsaveddvar( "cg_footsteps", 0 );
|
|
common_scripts\utility::flag_clear( "trig_intro_vignette" );
|
|
common_scripts\utility::flag_clear( "kill_train" );
|
|
thread intro_truck_setup();
|
|
maps\_utility::battlechatter_off();
|
|
}
|
|
|
|
intro()
|
|
{
|
|
maps\factory_util::squad_add_ally( "ALLY_ECHO", "ally_echo", "ally_echo" );
|
|
level.squad["ALLY_ECHO"].ignoreall = 1;
|
|
thread intro_infil();
|
|
setsaveddvar( "compass", 0 );
|
|
setsaveddvar( "hud_showStance", 0 );
|
|
setsaveddvar( "ammoCounterHide", 1 );
|
|
thread intro_animated_chopper();
|
|
thread factory_reveal_activity();
|
|
thread maps\factory_fx::fx_intro_rain();
|
|
thread handle_player_leaving_mission();
|
|
common_scripts\utility::flag_wait( "intro_infil_done" );
|
|
}
|
|
|
|
intro_infil()
|
|
{
|
|
maps\_friendlyfire::turnoff();
|
|
var_0 = getent( "PLAYERkill_start_teleport", "targetname" );
|
|
level.squad["ALLY_ALPHA"] thread ally_knife();
|
|
thread loop_train( 2.38, 8000, 30.0 );
|
|
thread maps\_weather::rainhard( 10 );
|
|
thread maps\factory_audio::audio_factory_intro_mix();
|
|
thread maps\factory_audio::audio_player_intro();
|
|
level.player freezecontrols( 1 );
|
|
level.player.ignoreme = 1;
|
|
thread plant_reaction_rain();
|
|
|
|
foreach ( var_2 in level.squad )
|
|
{
|
|
var_2 maps\_utility::disable_ai_color();
|
|
var_2.ignoreall = 1;
|
|
}
|
|
|
|
thread intro_ally_wait_then_slide();
|
|
level.player thread maps\factory_fx::splash_on_player( "player_entered_awning" );
|
|
wait 5.5;
|
|
level.squad["ALLY_BRAVO"] thread maps\_utility::smart_radio_dialogue( "factory_kgn_jericho11and12" );
|
|
wait 2.5;
|
|
thread maps\factory_util::god_rays_intro();
|
|
thread maps\factory_fx::rain_on_actor( level.squad["ALLY_ALPHA"], "player_at_first_reveal", 0.1 );
|
|
var_4 = common_scripts\utility::getstruct( "drop_kill_node", "script_noteworthy" );
|
|
var_4 maps\_anim::anim_first_frame_solo( level.squad["ALLY_ALPHA"], "factory_intro_jungle_drop_ally01" );
|
|
var_5 = getent( "startkill_enemy2", "targetname" );
|
|
var_5 maps\_utility::add_spawn_function( ::start_enemy_enemy_logic, "introkill_enemy2", "stop_loop2", "factory_intro_jungle_drop_opfor02", "factory_intro_jungle_drop_opfor02_loop" );
|
|
level.infil_dropkill_player_enemy = var_5 maps\_utility::spawn_ai();
|
|
var_5 = getent( "startkill_enemy1", "targetname" );
|
|
var_5 maps\_utility::add_spawn_function( ::start_enemy_enemy_logic, "introkill_enemy1", "stop_loop1", "factory_intro_jungle_drop_opfor01", "factory_intro_jungle_drop_opfor01_loop", "factory_intro_jungle_drop_kill_opfor01" );
|
|
level.infil_dropkill_ally_enemy = var_5 maps\_utility::spawn_ai();
|
|
common_scripts\utility::flag_set( "factory_introkill_jungle" );
|
|
thread maps\factory_anim::factory_introkill_jungle_player();
|
|
level.player setwatersheeting( 1, 3.75 );
|
|
thread water_splash_player();
|
|
maps\_utility::player_speed_percent( 0, 0.1 );
|
|
level.player allowsprint( 0 );
|
|
level.player allowjump( 0 );
|
|
level.player allowstand( 0 );
|
|
level.player allowprone( 0 );
|
|
thread lightning_flashes();
|
|
thread introkill_enemy_vo();
|
|
thread check_for_infil_kill();
|
|
common_scripts\utility::exploder( "intro_hero_rain" );
|
|
common_scripts\utility::flag_wait( "factory_introkill_jungle" );
|
|
wait 1.05;
|
|
thread maps\_utility::player_speed_percent( 20, 10 );
|
|
level.squad["ALLY_ALPHA"] infil_creep_up( var_4 );
|
|
level.squad["ALLY_ALPHA"] intro_infil_part2( var_4 );
|
|
}
|
|
|
|
infil_creep_up( var_0 )
|
|
{
|
|
level endon( "playerkill_jump_from_ledge" );
|
|
thread maps\factory_audio::audio_baker_intro();
|
|
var_0 maps\_anim::anim_single_solo( self, "factory_intro_jungle_drop_ally01" );
|
|
|
|
if ( !common_scripts\utility::flag( "playerkill_jump_from_ledge" ) )
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "factory_intro_jungle_drop_ally01_loop01", "stop_loop01" );
|
|
}
|
|
|
|
lightning_flashes()
|
|
{
|
|
var_0 = ( -20, 60, 0 );
|
|
setsaveddvar( "sm_sunSampleSizeNear", 0.025 );
|
|
thread maps\factory_fx::lightning_flash( var_0, 3, 0 );
|
|
wait 2.7;
|
|
var_1 = getent( "lightning_flash_01", "script_noteworthy" );
|
|
maps\factory_fx::lightning_flash( var_0, randomintrange( 2, 4 ), 1 );
|
|
wait 1.0;
|
|
maps\factory_fx::lightning_flash( var_0, randomintrange( 4, 6 ), 0 );
|
|
wait 0.6;
|
|
thread maps\factory_fx::lightning_flash( var_0, 3 );
|
|
wait 1.8;
|
|
var_1 = getent( "lightning_flash_02", "script_noteworthy" );
|
|
thread maps\factory_fx::lightning_flash_primary( var_1, randomintrange( 3, 5 ) );
|
|
setsaveddvar( "sm_sunSampleSizeNear", 0.25 );
|
|
|
|
while ( !common_scripts\utility::flag( "lgt_playerkill_jumpdown" ) )
|
|
{
|
|
level.player thread maps\factory_audio::sfx_factory_intro_lightning_loop();
|
|
maps\factory_fx::lightning_flash( var_0, randomintrange( 2, 4 ) );
|
|
wait( randomfloatrange( 0.3, 3.6 ) );
|
|
}
|
|
|
|
wait 0.2;
|
|
|
|
for ( var_2 = 0; var_2 < randomintrange( 2, 4 ); var_2++ )
|
|
{
|
|
level.player thread maps\factory_audio::sfx_factory_intro_lightning_loop();
|
|
thread maps\factory_fx::lightning_flash( var_0, randomintrange( 3, 5 ), 4 );
|
|
wait( randomfloatrange( 0.4, 4.3 ) );
|
|
}
|
|
|
|
wait 1.0;
|
|
setsaveddvar( "sm_sunSampleSizeNear", 0.25 );
|
|
wait 1.0;
|
|
maps\_utility::delaythread( 0.7, maps\_weather::lightningthink, maps\factory_fx::lightning_normal, maps\factory_fx::lightning_flash );
|
|
}
|
|
|
|
player_movement_reset()
|
|
{
|
|
common_scripts\utility::flag_wait( "playerkill_jump_from_ledge" );
|
|
setsaveddvar( "cg_footsteps", 1 );
|
|
|
|
if ( common_scripts\utility::flag( "playerkill_R3_Pressed" ) )
|
|
common_scripts\utility::flag_wait( "intro_drop_kill_done" );
|
|
|
|
maps\_utility::player_speed_percent( 70 );
|
|
level.player allowjump( 1 );
|
|
level.player allowstand( 1 );
|
|
level.player allowprone( 1 );
|
|
level.player allowsprint( 1 );
|
|
}
|
|
|
|
intro_infil_part2( var_0 )
|
|
{
|
|
thread intro_infil_part2_dialog();
|
|
common_scripts\utility::flag_wait( "playerkill_jump_from_ledge" );
|
|
maps\_friendlyfire::turnbackon();
|
|
var_0 notify( "stop_loop01" );
|
|
|
|
if ( common_scripts\utility::flag( "playerkill_R3_Pressed" ) )
|
|
{
|
|
level.player thread maps\factory_audio::audio_player_intro_jump_kill();
|
|
wait 0.1;
|
|
common_scripts\utility::flag_set( "lgt_playerkill_jumpdown" );
|
|
}
|
|
|
|
thread player_movement_reset();
|
|
common_scripts\utility::flag_wait( "intro_start_slide" );
|
|
thread maps\_art::enable_ssao_over_time( 2.0 );
|
|
level.player thread slide_orient_player();
|
|
common_scripts\utility::flag_set( "lgt_intro_reveal" );
|
|
common_scripts\utility::flag_set( "music_jungle_slide" );
|
|
common_scripts\utility::flag_set( "kill_train" );
|
|
var_1 = getnode( "ALLY_BRAVO_wallhopstart_teleport", "targetname" );
|
|
level.squad["ALLY_BRAVO"] maps\_utility::teleport_ai( var_1 );
|
|
var_1 = getnode( "ALLY_CHARLIE_wallhopstart_teleport", "targetname" );
|
|
level.squad["ALLY_CHARLIE"] maps\_utility::teleport_ai( var_1 );
|
|
var_1 = getnode( "ALLY_ECHO_wallhopstart_teleport", "targetname" );
|
|
level.squad["ALLY_ECHO"] maps\_utility::teleport_ai( var_1 );
|
|
thread intro_allied_entrance();
|
|
common_scripts\utility::flag_wait( "intro_end_slide" );
|
|
|
|
if ( !common_scripts\utility::flag( "ally_start_sliding" ) )
|
|
thread ally_slide_now();
|
|
|
|
level.player setmovespeedscale( 1.0 );
|
|
common_scripts\utility::flag_wait( "player_near_train_kill" );
|
|
common_scripts\utility::flag_set( "intro_infil_done" );
|
|
}
|
|
|
|
slide_orient_player()
|
|
{
|
|
self enableslowaim();
|
|
self playrumblelooponentity( "slide_loop" );
|
|
self.slidemodel.slidevelocity = self.slidemodel.slidevelocity * 0.25;
|
|
|
|
while ( !common_scripts\utility::flag( "intro_end_slide" ) )
|
|
{
|
|
var_0 = self getplayerangles();
|
|
|
|
if ( var_0[1] > -60 )
|
|
self setplayerangles( ( var_0[0], var_0[1] - 5, var_0[2] ) );
|
|
else if ( var_0[1] < -120 )
|
|
self setplayerangles( ( var_0[0], var_0[1] + 5, var_0[2] ) );
|
|
|
|
var_1 = length( self.slidemodel.slidevelocity );
|
|
|
|
if ( var_1 > 100 )
|
|
self.slidemodel.slidevelocity = self.slidemodel.slidevelocity * 0.9;
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
self stoprumble( "slide_loop" );
|
|
self disableslowaim();
|
|
}
|
|
|
|
intro_infil_part2_dialog()
|
|
{
|
|
level endon( "intro_infil_done" );
|
|
common_scripts\utility::flag_wait( "playerkill_jump_from_ledge" );
|
|
maps\_utility::radio_dialogue_stop();
|
|
wait 7.9;
|
|
thread maps\_utility::smart_dialogue( "factory_mrk_theyredowncreeper11" );
|
|
thread maps\factory_audio::audio_distant_train_horn();
|
|
wait 5.0;
|
|
maps\_utility::smart_dialogue( "factory_mrk_housemainwehave" );
|
|
maps\_utility::smart_radio_dialogue( "factory_hqr_rogerjerichomoveto" );
|
|
|
|
if ( !common_scripts\utility::flag( "approaching_reveal" ) )
|
|
maps\_utility::smart_dialogue( "factory_mrk_copythatapproachingentry" );
|
|
|
|
common_scripts\utility::flag_wait( "approaching_reveal" );
|
|
|
|
if ( !common_scripts\utility::flag( "player_at_first_reveal" ) )
|
|
maps\_utility::smart_dialogue( "factory_mrk_jerichoatentrya" );
|
|
|
|
maps\_utility::smart_radio_dialogue( "factory_kgn_creeperatentryb" );
|
|
common_scripts\utility::flag_wait( "player_at_first_reveal" );
|
|
|
|
if ( !common_scripts\utility::flag( "intro_end_slide" ) )
|
|
maps\_utility::smart_dialogue( "factory_mrk_copymovingregroupfifty" );
|
|
|
|
common_scripts\utility::flag_wait( "intro_end_slide" );
|
|
maps\_utility::smart_dialogue( "factory_mrk_weseeyoucreeper" );
|
|
}
|
|
|
|
ally_introkill_knife_anim()
|
|
{
|
|
level endon( "playerkill_jump_from_ledge" );
|
|
var_0 = common_scripts\utility::getstruct( "drop_kill_node", "script_noteworthy" );
|
|
var_0 maps\_anim::anim_single_solo( self, "factory_intro_jungle_drop_ally01_ptr02" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "factory_intro_jungle_drop_ally01_loop02", "stop_loop02" );
|
|
}
|
|
|
|
ally_knife()
|
|
{
|
|
self attach( "Viewmodel_knife_iw6", "tag_inhand", 1 );
|
|
common_scripts\utility::flag_wait( "playerkill_jump_from_ledge" );
|
|
level waittill( "del_knife" );
|
|
self detach( "Viewmodel_knife_iw6", "tag_inhand", 1 );
|
|
}
|
|
|
|
introkill_enemy_vo()
|
|
{
|
|
level endon( "playerkill_jump_from_ledge" );
|
|
wait 4;
|
|
level.infil_dropkill_player_enemy playsound( "factory_vz4_wearealmostdone" );
|
|
wait 3;
|
|
level.infil_dropkill_ally_enemy playsound( "factory_vz5_howmuchlongerdo" );
|
|
wait 3;
|
|
level.infil_dropkill_player_enemy playsound( "factory_vz4_wehaveabout2" );
|
|
wait 3;
|
|
level.infil_dropkill_ally_enemy playsound( "factory_vz5_thatsnottoobad" );
|
|
wait 3;
|
|
level.infil_dropkill_player_enemy playsound( "factory_vz4_alrightletscheckthe" );
|
|
wait 3;
|
|
level.infil_dropkill_ally_enemy playsound( "factory_vz5_dontgetaheadof" );
|
|
wait 3;
|
|
level.infil_dropkill_player_enemy playsound( "factory_vz4_idontneeda" );
|
|
wait 3;
|
|
level.infil_dropkill_ally_enemy playsound( "factory_vz5_whatever" );
|
|
wait 3;
|
|
}
|
|
|
|
check_for_infil_kill()
|
|
{
|
|
level.player endon( "death" );
|
|
level endon( "intro_infil_done" );
|
|
level.player notifyonplayercommand( "drop_kill", "+attack" );
|
|
level.player notifyonplayercommand( "drop_kill", "+melee" );
|
|
level.player notifyonplayercommand( "drop_kill", "+melee_breath" );
|
|
level.player notifyonplayercommand( "drop_kill", "+melee_zoom" );
|
|
thread check_for_player_fall();
|
|
thread check_player_ready_for_drop_kill();
|
|
wait 2;
|
|
|
|
for (;;)
|
|
{
|
|
level.player waittill( "drop_kill" );
|
|
|
|
if ( common_scripts\utility::flag( "player_ready_for_drop_kill" ) )
|
|
{
|
|
common_scripts\utility::flag_set( "playerkill_R3_Pressed" );
|
|
common_scripts\utility::flag_set( "playerkill_jump_from_ledge" );
|
|
common_scripts\utility::flag_set( "playerkill_at_start_ledge" );
|
|
maps\_utility::stop_exploder( "intro_hero_rain" );
|
|
thread introkill_player_splash();
|
|
level.player.in_stab_animation = 1;
|
|
var_0 = player_start_stabbing();
|
|
var_1 = common_scripts\utility::getstruct( "drop_kill_node", "script_noteworthy" );
|
|
var_2 = [];
|
|
var_2[0] = var_0;
|
|
var_2[1] = level.infil_dropkill_player_enemy;
|
|
var_1 thread maps\_anim::anim_first_frame( var_2, "factory_intro_jungle_drop_kill_player" );
|
|
level.infil_dropkill_ally_enemy stopsounds();
|
|
level.infil_dropkill_ally_enemy thread maps\_utility::smart_dialogue( "factory_sp1_enlamadre" );
|
|
var_3 = 0.15;
|
|
level.player playerlinktoblend( var_0, "tag_player", var_3, 0.25, 0.25 );
|
|
wait( var_3 );
|
|
var_4 = 15;
|
|
level.player playerlinktodelta( var_0, "tag_player", 1, var_4, var_4, var_4, var_4, 1 );
|
|
var_0 show();
|
|
var_0 attach( "weapon_parabolic_knife", "tag_weapon_right", 1 );
|
|
level.infil_dropkill_player_enemy stopsounds();
|
|
level.infil_dropkill_player_enemy maps\_utility::delaythread( 1, ::flashlight_drop_detail );
|
|
var_1 notify( "stop_loop2" );
|
|
var_1 maps\_anim::anim_single( var_2, "factory_intro_jungle_drop_kill_player" );
|
|
level.infil_dropkill_player_enemy maps\_vignette_util::vignette_actor_kill();
|
|
level.infil_dropkill_player_enemy dropweapon( level.infil_dropkill_player_enemy.weapon, "right", 0 );
|
|
level.infil_dropkill_player_enemy maps\_utility::gun_remove();
|
|
var_0 detach( "weapon_parabolic_knife", "tag_weapon_right", 1 );
|
|
level.player unlink();
|
|
var_0 delete();
|
|
level.player.in_stab_animation = undefined;
|
|
wait 0.8;
|
|
common_scripts\utility::flag_clear( "introkill_weapon_switched" );
|
|
player_done_stabbing();
|
|
common_scripts\utility::flag_set( "intro_drop_kill_done" );
|
|
return;
|
|
}
|
|
|
|
wait 0.02;
|
|
}
|
|
}
|
|
|
|
check_player_ready_for_drop_kill()
|
|
{
|
|
for (;;)
|
|
{
|
|
if ( maps\_utility::player_looking_at( level.infil_dropkill_player_enemy.origin, 0.9 ) && common_scripts\utility::flag( "playerkill_at_start_ledge" ) && !common_scripts\utility::flag( "playerkill_jump_from_ledge" ) )
|
|
{
|
|
common_scripts\utility::flag_set( "player_ready_for_drop_kill" );
|
|
maps\_utility::display_hint( "drop_kill_hint" );
|
|
level.player allowmelee( 0 );
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_clear( "player_ready_for_drop_kill" );
|
|
level.player allowmelee( 1 );
|
|
|
|
if ( common_scripts\utility::flag( "playerkill_jump_from_ledge" ) )
|
|
break;
|
|
}
|
|
|
|
wait 0.01;
|
|
}
|
|
}
|
|
|
|
check_for_player_fall()
|
|
{
|
|
level.player endon( "death" );
|
|
level endon( "intro_infil_done" );
|
|
common_scripts\utility::flag_wait( "playerkill_jump_from_ledge" );
|
|
wait 0.5;
|
|
|
|
if ( !common_scripts\utility::flag( "playerkill_R3_Pressed" ) )
|
|
{
|
|
common_scripts\utility::flag_clear( "introkill_weapon_switched" );
|
|
level.player enableweaponswitch();
|
|
|
|
while ( isalive( level.infil_dropkill_player_enemy ) )
|
|
wait 0.1;
|
|
|
|
wait 0.1;
|
|
thread maps\factory_fx::fx_intro_kill_player_jump_stab( level.infil_dropkill_player_enemy );
|
|
}
|
|
else
|
|
{
|
|
while ( isdefined( level.player.in_stab_animation ) )
|
|
wait 0.1;
|
|
}
|
|
|
|
setsaveddvar( "compass", 1 );
|
|
setsaveddvar( "hud_showStance", 1 );
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
common_scripts\utility::flag_set( "lgt_playerkill_jumpdown" );
|
|
level.infil_dropkill_player_enemy waittill( "death" );
|
|
common_scripts\utility::flag_set( "intro_drop_kill_done" );
|
|
|
|
if ( level.player getcurrentweapon() == "factory_knife" )
|
|
level.player switchtoweapon( level.default_weapon );
|
|
|
|
level.player takeweapon( "factory_knife" );
|
|
level.player enableweaponpickup();
|
|
level.squad["ALLY_ALPHA"].ignoreall = 1;
|
|
wait 3;
|
|
maps\_utility::autosave_by_name( "intro_kill_done" );
|
|
}
|
|
|
|
player_start_stabbing()
|
|
{
|
|
level.player hideviewmodel();
|
|
level.player.active_anim = 1;
|
|
level.old_weapon = level.player getcurrentweapon();
|
|
level.player disableweapons();
|
|
level.player disableoffhandweapons();
|
|
level.player freezecontrols( 1 );
|
|
var_0 = maps\_utility::spawn_anim_model( "player_rig" );
|
|
var_0 hide();
|
|
return var_0;
|
|
}
|
|
|
|
player_done_stabbing()
|
|
{
|
|
level.player.active_anim = 0;
|
|
level.player takeweapon( "factory_knife" );
|
|
level.player enableweapons();
|
|
level.player enableweaponswitch();
|
|
level.player switchtoweapon( level.old_weapon );
|
|
level.player enableoffhandweapons();
|
|
level.player showviewmodel();
|
|
level.player allowmelee( 1 );
|
|
level.player freezecontrols( 0 );
|
|
level.player allowcrouch( 1 );
|
|
level.player maps\_player_stats::register_kill( undefined, "melee" );
|
|
}
|
|
|
|
introkill_player_splash()
|
|
{
|
|
var_0 = ( 45, 45, 0 );
|
|
thread maps\factory_fx::lightning_flash( var_0, 4 );
|
|
wait 1.05;
|
|
wait 0.33;
|
|
common_scripts\utility::exploder( "intro_kill_splash_01" );
|
|
level.player playrumbleonentity( "artillery_rumble" );
|
|
wait 0.97;
|
|
var_0 = ( 45, 45, 0 );
|
|
thread maps\factory_fx::lightning_flash( var_0, 4 );
|
|
}
|
|
|
|
introkill_ally_splash()
|
|
{
|
|
wait 3.05;
|
|
wait 0.23;
|
|
common_scripts\utility::exploder( "intro_kill_splash_02" );
|
|
wait 0.95;
|
|
common_scripts\utility::exploder( "intro_kill_splash_02a" );
|
|
wait 0.52;
|
|
var_0 = ( 45, 45, 0 );
|
|
thread maps\factory_fx::lightning_flash( var_0, 4 );
|
|
}
|
|
|
|
start_enemy_enemy_logic( var_0, var_1, var_2, var_3, var_4 )
|
|
{
|
|
self endon( "death" );
|
|
thread maps\factory_fx::rain_on_actor( self, "player_at_first_reveal", 0.1 );
|
|
self.animname = var_0;
|
|
self.script_grenades = 0;
|
|
self.disablearrivals = 1;
|
|
self.disableexits = 1;
|
|
self.allowdeath = 1;
|
|
self.health = 1;
|
|
self.ignoreall = 1;
|
|
self.ignoreme = 1;
|
|
|
|
if ( !isdefined( var_4 ) )
|
|
maps\factory_powerstealth::attach_flashlight( 1, undefined, 1 );
|
|
|
|
if ( isdefined( var_4 ) )
|
|
thread introkill_ally_enemy_killcheck();
|
|
else
|
|
thread introkill_player_enemy_killcheck();
|
|
|
|
var_5 = common_scripts\utility::getstruct( "drop_kill_node", "script_noteworthy" );
|
|
maps\_utility::delaythread( 0.5, maps\_anim::anim_set_rate_single, self, var_2, 0.6 );
|
|
|
|
if ( !isdefined( var_4 ) )
|
|
maps\_utility::delaythread( 6.1, maps\_anim::anim_set_rate_single, self, var_2, 1.2 );
|
|
else
|
|
maps\_utility::delaythread( 8.1, maps\_anim::anim_set_rate_single, self, var_2, 1.6 );
|
|
|
|
maps\_utility::delaythread( 10, maps\_anim::anim_set_rate_single, self, var_2, 1 );
|
|
thread start_enemy_anims( var_5, var_2, var_3, var_1 );
|
|
self waittill( "stop_animating" );
|
|
var_5 notify( var_1 );
|
|
self stopanimscripted();
|
|
}
|
|
|
|
start_enemy_anims( var_0, var_1, var_2, var_3 )
|
|
{
|
|
level endon( "playerkill_jump_from_ledge" );
|
|
self endon( "stop_animating" );
|
|
var_0 maps\_anim::anim_single_solo( self, var_1 );
|
|
var_0 maps\_anim::anim_loop_solo( self, var_2, var_3 );
|
|
}
|
|
|
|
introkill_ally_enemy_killcheck()
|
|
{
|
|
common_scripts\utility::flag_wait( "playerkill_jump_from_ledge" );
|
|
level.infil_dropkill_ally_enemy.health = 1000;
|
|
thread introkill_ally_splash();
|
|
var_0 = common_scripts\utility::getstruct( "drop_kill_node", "script_noteworthy" );
|
|
var_0 notify( "stop_loop02" );
|
|
level.squad["ALLY_ALPHA"] stopanimscripted();
|
|
var_0 notify( "stop_loop" );
|
|
|
|
if ( common_scripts\utility::flag( "playerkill_R3_Pressed" ) )
|
|
{
|
|
level.squad["ALLY_ALPHA"] thread maps\factory_audio::audio_ally_intro_jump_kill();
|
|
var_0 thread maps\_anim::anim_single_solo( level.squad["ALLY_ALPHA"], "factory_intro_jungle_drop_kill_ally01" );
|
|
var_0 maps\_anim::anim_single_solo( level.infil_dropkill_ally_enemy, "factory_intro_jungle_drop_kill_opfor01" );
|
|
}
|
|
else
|
|
{
|
|
level.squad["ALLY_ALPHA"] thread maps\factory_audio::audio_ally_intro_jump_kill_short();
|
|
var_0 thread maps\_anim::anim_single_solo( level.squad["ALLY_ALPHA"], "factory_intro_jungle_drop_kill_short_ally01" );
|
|
var_0 maps\_anim::anim_single_solo( level.infil_dropkill_ally_enemy, "factory_intro_jungle_drop_kill_short_opfor01" );
|
|
}
|
|
|
|
level.infil_dropkill_ally_enemy maps\_vignette_util::vignette_actor_kill();
|
|
level.infil_dropkill_ally_enemy dropweapon( level.infil_dropkill_ally_enemy.weapon, "right", 0 );
|
|
level.infil_dropkill_ally_enemy maps\_utility::gun_remove();
|
|
}
|
|
|
|
introkill_player_enemy_killcheck()
|
|
{
|
|
common_scripts\utility::flag_wait( "playerkill_jump_from_ledge" );
|
|
|
|
if ( !common_scripts\utility::flag( "playerkill_R3_Pressed" ) )
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "drop_kill_node", "script_noteworthy" );
|
|
wait 0.5;
|
|
var_0 notify( "stop_loop2" );
|
|
waittillframeend;
|
|
level.infil_dropkill_player_enemy thread flashlight_drop_detail();
|
|
level.infil_dropkill_player_enemy stopanimscripted();
|
|
level.infil_dropkill_player_enemy.ignoreall = 0;
|
|
level.infil_dropkill_player_enemy.ignoreme = 0;
|
|
level.infil_dropkill_player_enemy.attackeraccuracy = 10000;
|
|
level.player.ignoreme = 0;
|
|
level.infil_dropkill_player_enemy.favoriteenemy = level.player;
|
|
level.infil_dropkill_player_enemy.see_player = 1;
|
|
level.infil_dropkill_player_enemy getenemyinfo( level.player );
|
|
level.squad["ALLY_ALPHA"].ignoreall = 0;
|
|
level.squad["ALLY_ALPHA"].favoriteenemy = level.infil_dropkill_player_enemy;
|
|
}
|
|
}
|
|
|
|
water_splash_player()
|
|
{
|
|
level endon( "intro_truck_driver_dead" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( common_scripts\utility::flag( "infil_water_splash" ) )
|
|
{
|
|
level.player setwatersheeting( 1, 1.75 );
|
|
level.player maps\_utility::dirteffect( level.player.origin );
|
|
wait( randomfloatrange( 0.2, 0.5 ) );
|
|
}
|
|
|
|
wait 0.5;
|
|
}
|
|
}
|
|
|
|
plant_reaction_rain()
|
|
{
|
|
level endon( "music_jungle_slide" );
|
|
|
|
for (;;)
|
|
{
|
|
thread maps\factory_fx::fx_set_wind( randomfloatrange( 0.5, 1.5 ), randomfloatrange( 0.5, 1.5 ), 1.8, randomfloatrange( 1.2, 1.9 ) );
|
|
wait( randomfloatrange( 0.8, 1.5 ) );
|
|
thread maps\factory_fx::fx_set_wind( level.defaultreactivewind["strength"], level.defaultreactivewind["amplitudeScale"], level.defaultreactivewind["frequencyScale"], 3.0 );
|
|
wait( randomfloatrange( 8.5, 15.5 ) );
|
|
}
|
|
}
|
|
|
|
intro_ally_wait_then_slide()
|
|
{
|
|
level endon( "ally_start_sliding" );
|
|
common_scripts\utility::flag_wait( "playerkill_jump_from_ledge" );
|
|
level.squad["ALLY_ALPHA"] setlookatentity();
|
|
common_scripts\utility::flag_set( "lgt_playerkill_done" );
|
|
|
|
while ( isalive( level.infil_dropkill_player_enemy ) )
|
|
wait 0.1;
|
|
|
|
level.squad["ALLY_ALPHA"] maps\_utility::set_generic_run_anim( "crouch_fastwalk_F" );
|
|
level.squad["ALLY_ALPHA"].goalradius = 8;
|
|
var_0 = getnode( "ALLY_ALPHA_Start_Alt_01", "targetname" );
|
|
level.squad["ALLY_ALPHA"] setgoalnode( var_0 );
|
|
common_scripts\utility::flag_wait( "player_starts_moving" );
|
|
level.squad["ALLY_ALPHA"] maps\_utility::enable_cqbwalk();
|
|
var_0 = getnode( "factory_slide_node", "targetname" );
|
|
level.squad["ALLY_ALPHA"] setgoalnode( var_0 );
|
|
common_scripts\utility::flag_set( "ally_at_first_reveal" );
|
|
level.squad["ALLY_ALPHA"] waittill( "goal" );
|
|
common_scripts\utility::flag_wait( "player_at_first_reveal" );
|
|
thread ally_slide_now();
|
|
}
|
|
|
|
ally_slide_now()
|
|
{
|
|
thread maps\factory_fx::rain_on_actor( level.squad["ALLY_ALPHA"], "player_entered_awning", 0.1 );
|
|
thread maps\factory_fx::rain_on_actor( level.squad["ALLY_BRAVO"], "player_entered_awning", 0.1 );
|
|
thread maps\factory_fx::rain_on_actor( level.squad["ALLY_CHARLIE"], "player_entered_awning", 0.1 );
|
|
var_0 = common_scripts\utility::getstruct( "factory_baker_slidestart", "script_noteworthy" );
|
|
level.squad["ALLY_ALPHA"] setgoalpos( level.squad["ALLY_ALPHA"].origin );
|
|
level.squad["ALLY_ALPHA"] maps\_utility::clear_run_anim();
|
|
level.squad["ALLY_ALPHA"] maps\_utility::disable_sprint();
|
|
var_0 notify( "stop_loop" );
|
|
waittillframeend;
|
|
thread maps\factory_audio::sfx_bak_mudslide();
|
|
common_scripts\utility::flag_set( "ally_start_sliding" );
|
|
var_0 maps\_anim::anim_single_solo( level.squad["ALLY_ALPHA"], "factory_intro_jungle_slide_baker_exit" );
|
|
level.squad["ALLY_ALPHA"] maps\_utility::enable_ai_color_dontmove();
|
|
self.disableplayeradsloscheck = 1;
|
|
common_scripts\utility::flag_wait( "intro_end_slide" );
|
|
maps\_utility::enable_ai_color();
|
|
maps\factory_util::safe_trigger_by_targetname( "intro_infil_train_kill_staging" );
|
|
common_scripts\utility::flag_set( "ally_done_sliding" );
|
|
thread maps\factory_util::god_rays_trainyard();
|
|
}
|
|
|
|
intro_allied_entrance()
|
|
{
|
|
level.squad["ALLY_BRAVO"] thread intro_allied_entrance_bravo();
|
|
level.squad["ALLY_CHARLIE"] thread intro_allied_entrance_charlie();
|
|
level.squad["ALLY_ECHO"] thread intro_allied_entrance_echo();
|
|
}
|
|
|
|
intro_allied_entrance_bravo()
|
|
{
|
|
level endon( "player_entered_awning" );
|
|
var_0 = common_scripts\utility::getstruct( "factory_infil_wallhop_03", "script_noteworthy" );
|
|
var_0 maps\_anim::anim_first_frame_solo( self, "factory_intro_jungle_wallhop" );
|
|
common_scripts\utility::flag_wait( "player_near_train_kill" );
|
|
var_0 maps\_anim::anim_single_solo( self, "factory_intro_jungle_wallhop" );
|
|
self setgoalnode( getnode( "ALLY_BRAVO_wallhop_teleport", "targetname" ) );
|
|
self.goalradius = 8;
|
|
self waittill( "goal" );
|
|
maps\_utility::enable_ai_color();
|
|
}
|
|
|
|
intro_allied_entrance_charlie()
|
|
{
|
|
level endon( "player_entered_awning" );
|
|
var_0 = common_scripts\utility::getstruct( "factory_infil_wallhop_01", "script_noteworthy" );
|
|
var_0 maps\_anim::anim_first_frame_solo( self, "factory_intro_jungle_wallhop" );
|
|
var_0 maps\_anim::anim_single_solo( self, "factory_intro_jungle_wallhop" );
|
|
maps\_utility::enable_ai_color();
|
|
maps\factory_util::safe_trigger_by_targetname( "sca_train_kill_charlie_position" );
|
|
}
|
|
|
|
intro_allied_entrance_echo()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "player_entered_awning" );
|
|
var_0 = common_scripts\utility::getstruct( "factory_infil_wallhop_02", "script_noteworthy" );
|
|
var_0 maps\_anim::anim_first_frame_solo( self, "factory_intro_jungle_wallhop" );
|
|
common_scripts\utility::flag_wait( "player_near_train_kill" );
|
|
var_0 maps\_anim::anim_single_solo( self, "factory_intro_jungle_wallhop" );
|
|
self setgoalnode( getnode( "ALLY_ECHO_wallhop_teleport", "targetname" ) );
|
|
self.goalradius = 8;
|
|
self waittill( "goal" );
|
|
maps\_utility::enable_ai_color();
|
|
}
|
|
|
|
loop_train( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = "player_near_train_kill";
|
|
thread maps\factory_audio::audio_train_constant_loop();
|
|
thread maps\factory_audio::audio_start_train_click_clacks();
|
|
var_4 = [];
|
|
var_4[0] = getent( "train_reveal_01_org", "targetname" );
|
|
var_4[1] = getent( "train_reveal_02_org", "targetname" );
|
|
var_4[2] = getent( "train_reveal_03_org", "targetname" );
|
|
var_4[3] = getent( "train_reveal_04_org", "targetname" );
|
|
var_4[4] = getent( "train_reveal_05_org", "targetname" );
|
|
var_4[5] = getent( "train_reveal_06_org", "targetname" );
|
|
var_4[6] = getent( "train_reveal_07_org", "targetname" );
|
|
var_4[7] = getent( "train_reveal_08_org", "targetname" );
|
|
var_4[8] = getent( "train_reveal_09_org", "targetname" );
|
|
var_4[9] = getent( "train_reveal_10_org", "targetname" );
|
|
var_4[10] = getent( "train_reveal_11_org", "targetname" );
|
|
var_4[11] = getent( "train_reveal_12_org", "targetname" );
|
|
var_4[12] = getent( "train_reveal_13_org", "targetname" );
|
|
thread train_car_rumble_generator( var_4 );
|
|
var_5 = var_4[0];
|
|
|
|
foreach ( var_7 in var_4 )
|
|
thread set_up_train_car( var_7, var_5, var_1, var_2, var_3 );
|
|
|
|
foreach ( var_7 in var_4 )
|
|
{
|
|
var_7 notify( "go" );
|
|
wait( var_0 );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "intro_checkpoint_done" );
|
|
var_11 = getentarray( "fac_intro_trains", "script_noteworthy" );
|
|
|
|
foreach ( var_13 in var_11 )
|
|
{
|
|
if ( isdefined( var_13 ) )
|
|
var_13 delete();
|
|
}
|
|
}
|
|
|
|
set_up_train_car( var_0, var_1, var_2, var_3, var_4 )
|
|
{
|
|
var_5 = getentarray( var_0.target, "targetname" );
|
|
|
|
foreach ( var_7 in var_5 )
|
|
{
|
|
if ( var_7.classname == "trigger_hurt" )
|
|
var_7 enablelinkto();
|
|
|
|
var_7 linkto( var_0 );
|
|
}
|
|
|
|
var_0 moveto( var_1.origin, 0.1, 0, 0 );
|
|
var_0 waittill( "go" );
|
|
var_0 thread loop_train_car( var_2, var_3, 0.1, var_4 );
|
|
}
|
|
|
|
train_car_rumble_generator( var_0 )
|
|
{
|
|
level endon( "factory_exterior_reveal_between_trains" );
|
|
var_1 = 350;
|
|
|
|
for (;;)
|
|
{
|
|
var_2 = common_scripts\utility::getclosest( level.player.origin, var_0, var_1 );
|
|
|
|
if ( isdefined( var_2 ) )
|
|
var_2 playrumblelooponentity( "tank_rumble" );
|
|
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
loop_train_car( var_0, var_1, var_2, var_3 )
|
|
{
|
|
self endon( "death" );
|
|
maps\_utility::ent_flag_init( "deleteable" );
|
|
maps\_utility::ent_flag_set( "deleteable" );
|
|
thread check_train_car_for_stopping( var_3 );
|
|
self movez( 11.0, 0.1, 0, 0 );
|
|
self waittill( "movedone" );
|
|
|
|
for (;;)
|
|
{
|
|
self movex( 0.0 - var_0, var_1 );
|
|
self waittill( "movedone" );
|
|
|
|
if ( common_scripts\utility::flag( var_3 ) )
|
|
break;
|
|
|
|
self movez( -250, 0.1 );
|
|
self waittill( "movedone" );
|
|
|
|
if ( common_scripts\utility::flag( var_3 ) )
|
|
break;
|
|
|
|
maps\_utility::ent_flag_clear( "deleteable" );
|
|
self movex( var_0, var_2 );
|
|
self waittill( "movedone" );
|
|
|
|
if ( common_scripts\utility::flag( var_3 ) )
|
|
break;
|
|
|
|
maps\_utility::ent_flag_set( "deleteable" );
|
|
self movez( 250, 0.1 );
|
|
self waittill( "movedone" );
|
|
|
|
if ( common_scripts\utility::flag( var_3 ) )
|
|
break;
|
|
}
|
|
}
|
|
|
|
check_train_car_for_stopping( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
common_scripts\utility::flag_wait( var_0 );
|
|
maps\_utility::ent_flag_wait( "deleteable" );
|
|
|
|
if ( self.origin[0] < 4100 )
|
|
{
|
|
self waittill( "movedone" );
|
|
self movex( -8000, 30 );
|
|
self waittill( "movedone" );
|
|
}
|
|
|
|
if ( self.origin[0] > 4100 )
|
|
{
|
|
self movex( 8000, 0.1 );
|
|
self waittill( "movedone" );
|
|
}
|
|
|
|
self notify( "stop_wiggle" );
|
|
}
|
|
|
|
wiggle_train_car()
|
|
{
|
|
level endon( "entered_factory_1" );
|
|
self endon( "death" );
|
|
self endon( "stop_wiggle" );
|
|
|
|
for (;;)
|
|
{
|
|
self rotateto( ( 0, 0, randomfloatrange( 0.8, 2.5 ) ), randomfloatrange( 0.3, 1.2 ) );
|
|
wait( randomfloatrange( 0.3, 1.5 ) );
|
|
self rotateto( ( 0, 0, randomfloatrange( 0.8, 2.5 ) * -1 ), randomfloatrange( 0.3, 1.2 ) );
|
|
wait( randomfloatrange( 0.3, 1.5 ) );
|
|
}
|
|
}
|
|
|
|
#using_animtree("generic_human");
|
|
|
|
factory_reveal_activity()
|
|
{
|
|
level.drone_anims["axis"]["stand"]["run"] = %patrol_bored_patrolwalk;
|
|
var_0 = getentarray( "intro_reveal_pmcs", "targetname" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
var_2 maps\_utility::add_spawn_function( ::intro_reveal_pmc_think );
|
|
|
|
var_4 = getentarray( "reveal_vehicles", "targetname" );
|
|
|
|
foreach ( var_2 in var_4 )
|
|
var_2 maps\_utility::add_spawn_function( ::reveal_vehicles_think_veh );
|
|
|
|
var_7 = getentarray( "intro_reveal_vehicle_pmcs", "targetname" );
|
|
|
|
foreach ( var_2 in var_7 )
|
|
var_2 maps\_utility::add_spawn_function( ::reveal_vehicles_think_pmc );
|
|
}
|
|
|
|
reveal_vehicles_think_veh()
|
|
{
|
|
self.ignoreall = 1;
|
|
thread detect_player_shot();
|
|
playfxontag( level._effect["iveco_headlight_l_night"], self, "TAG_HEADLIGHT_LEFT" );
|
|
playfxontag( level._effect["iveco_headlight_r_night"], self, "TAG_HEADLIGHT_RIGHT" );
|
|
playfxontag( level._effect["car_taillight_btr80_eye"], self, "TAG_BRAKELIGHT_LEFT" );
|
|
playfxontag( level._effect["car_taillight_btr80_eye"], self, "TAG_BRAKELIGHT_RIGHT" );
|
|
}
|
|
|
|
reveal_vehicles_think_pmc()
|
|
{
|
|
self.ignoreall = 1;
|
|
thread detect_player_shot();
|
|
}
|
|
|
|
intro_reveal_pmc_think()
|
|
{
|
|
self endon( "death" );
|
|
self.patrol_walk = [ "walk_gun_unwary", "patrol_bored_patrolwalk", "patrol_bored_patrolwalk_twitch" ];
|
|
self.patrol_idle = [ "patrol_idle_stretch", "patrol_idle_smoke", "patrol_idle_checkphone" ];
|
|
maps\_utility::set_generic_run_anim( "walk_gun_unwary" );
|
|
thread detect_player_shot();
|
|
common_scripts\utility::flag_wait( "player_exited_train" );
|
|
self delete();
|
|
}
|
|
|
|
detect_player_shot()
|
|
{
|
|
level endon( "entered_factory_1" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "damage", var_0, var_1 );
|
|
|
|
if ( var_1 == level.player )
|
|
{
|
|
level notify( "new_quote_string" );
|
|
setdvar( "ui_deadquote", &"FACTORY_FAIL_ALERTED_ENEMY" );
|
|
maps\_utility::missionfailedwrapper();
|
|
}
|
|
}
|
|
}
|
|
|
|
intro_animated_chopper()
|
|
{
|
|
var_0 = getent( "trig_intro_ally_moveto_reveal", "targetname" );
|
|
var_0 waittill( "trigger" );
|
|
level thread maps\factory_anim::intro_chopper();
|
|
thread maps\factory_fx::fx_set_wind( 4.0, 3.5, 1.8, 1 );
|
|
common_scripts\utility::exploder( "intro_helicopter_debris" );
|
|
playfxontag( level._effect["factory_intro_helicopter_raindrops"], level.screenrain, "tag_origin" );
|
|
wait 1.2;
|
|
level.player playrumbleonentity( "artillery_rumble" );
|
|
wait 1.0;
|
|
thread maps\factory_fx::fx_set_wind( 2.0, 2.0, 1.0, 1 );
|
|
wait 2.2;
|
|
thread maps\factory_fx::fx_set_wind( level.defaultreactivewind["strength"], level.defaultreactivewind["amplitudeScale"], level.defaultreactivewind["frequencyScale"], 3.0 );
|
|
}
|
|
|
|
intro_animated_chopper_spotlight()
|
|
{
|
|
self endon( "death" );
|
|
vehicle_scripts\_attack_heli::heli_default_target_setup();
|
|
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "intro_heli_spotlight_target" );
|
|
self setturrettargetent( var_0 );
|
|
self.targetdefault = var_0;
|
|
}
|
|
|
|
intro_train_start()
|
|
{
|
|
foreach ( var_1 in level.squad )
|
|
{
|
|
var_1 maps\_utility::disable_bulletwhizbyreaction();
|
|
var_1 maps\_utility::disable_pain();
|
|
}
|
|
|
|
level.player switchtoweapon( level.default_weapon );
|
|
level.player takeweapon( "flash_grenade" );
|
|
level.player takeweapon( "fraggrenade" );
|
|
maps\_utility::player_speed_percent( 70 );
|
|
thread intro_truck_setup();
|
|
common_scripts\utility::flag_clear( "trig_intro_vignette" );
|
|
common_scripts\utility::flag_clear( "kill_train" );
|
|
thread maps\factory_audio::audio_trainpass_chkpt();
|
|
thread maps\factory_util::god_rays_trainyard();
|
|
var_3 = getnode( "ALLY_ALPHA_fence_infil_teleport", "targetname" );
|
|
level.squad["ALLY_ALPHA"] maps\_utility::teleport_ai( var_3 );
|
|
level.squad["ALLY_ALPHA"] maps\_utility::enable_ai_color();
|
|
maps\factory_util::squad_add_ally( "ALLY_ECHO", "ally_echo", "ally_echo" );
|
|
level.squad["ALLY_ECHO"].ignoreall = 1;
|
|
thread intro_allied_entrance();
|
|
level.player thread maps\factory_fx::splash_on_player( "player_entered_awning" );
|
|
thread handle_player_leaving_mission();
|
|
maps\_utility::battlechatter_off();
|
|
thread maps\_weather::rainhard( 1 );
|
|
thread maps\factory_fx::fx_intro_rain();
|
|
}
|
|
|
|
intro_train()
|
|
{
|
|
foreach ( var_1 in level.squad )
|
|
var_1.ignoreall = 1;
|
|
|
|
level.cosine["70"] = cos( 70 );
|
|
level.goodfriendlydistancefromplayersquared = 62500;
|
|
thread intro_train_pass();
|
|
thread maps\factory_audio::sfx_train_sound();
|
|
common_scripts\utility::flag_wait_any( "intro_checkpoint_done", "player_entered_awning" );
|
|
}
|
|
|
|
intro_train_pass()
|
|
{
|
|
thread maps\factory_fx::lgt_intro_train_light();
|
|
wait 0.3;
|
|
maps\_utility::radio_dialogue_stop();
|
|
|
|
if ( !common_scripts\utility::flag( "trainyard_enemy_dead" ) )
|
|
level.squad["ALLY_ALPHA"] thread maps\_utility::smart_radio_dialogue( "factory_bkr_twoapproaching" );
|
|
|
|
wait 0.7;
|
|
var_0 = getent( "infil_kill", "targetname" );
|
|
var_0 maps\_utility::add_spawn_function( ::trainyard_enemy_logic );
|
|
level.train_kill = var_0 maps\_utility::spawn_ai();
|
|
thread factory_entrance_setup();
|
|
thread intro_kill_vignette();
|
|
|
|
if ( !common_scripts\utility::flag( "trainyard_enemy_dead" ) )
|
|
level.squad["ALLY_ALPHA"] thread maps\_utility::smart_radio_dialogue( "factory_bkr_gotthem" );
|
|
|
|
thread train_kill_ally_second_pos( level.train_kill );
|
|
thread intro_scene();
|
|
common_scripts\utility::flag_wait( "trainyard_enemy_dead" );
|
|
|
|
if ( common_scripts\utility::flag( "trainyard_kill_sequence_used" ) )
|
|
wait 1.0;
|
|
|
|
maps\_utility::radio_dialogue_stop();
|
|
wait 0.5;
|
|
level.squad["ALLY_ALPHA"] thread maps\_utility::smart_dialogue( "factory_mrk_letsmove" );
|
|
|
|
foreach ( var_2 in level.squad )
|
|
var_2 maps\_utility::disable_cqbwalk();
|
|
|
|
level.player.ignoreme = 0;
|
|
wait 1.0;
|
|
thread delta_splitup();
|
|
level.squad["ALLY_ALPHA"] maps\_utility::smart_radio_dialogue( "factory_mrk_oldboyandpickpeeloff" );
|
|
level.squad["ALLY_CHARLIE"] thread maps\_utility::smart_radio_dialogue( "factory_diz_wereonit" );
|
|
wait 2.0;
|
|
maps\_utility::radio_dialogue_stop();
|
|
level.squad["ALLY_ALPHA"] maps\_utility::smart_dialogue( "factory_mrk_everyoneelseweremoving" );
|
|
common_scripts\utility::flag_wait( "factory_exterior_reveal_between_trains" );
|
|
common_scripts\utility::flag_wait( "factory_exterior_approach_infil" );
|
|
wait 3.1;
|
|
|
|
if ( !common_scripts\utility::flag( "player_entered_awning" ) )
|
|
level.squad["ALLY_BRAVO"] thread maps\_utility::smart_dialogue( "factory_bkr_throughhere" );
|
|
|
|
thread factory_entrance_dialogue_management();
|
|
}
|
|
|
|
train_kill_ally_second_pos( var_0 )
|
|
{
|
|
var_0 endon( "death" );
|
|
level endon( "trainyard_kill_sequence_used" );
|
|
level endon( "trainyard_enemy_alerted" );
|
|
wait 4;
|
|
maps\factory_util::safe_trigger_by_targetname( "sca_train_kill_second_pos" );
|
|
wait 4;
|
|
level.squad["ALLY_ALPHA"] thread maps\_utility::smart_radio_dialogue( "factory_bkr_rookonyou" );
|
|
wait 4;
|
|
level.squad["ALLY_ALPHA"] thread maps\_utility::smart_dialogue( "factory_mrk_takehim" );
|
|
}
|
|
|
|
trainyard_enemy_logic()
|
|
{
|
|
level endon( "trainyard_enemy_alerted" );
|
|
self endon( "death" );
|
|
thread maps\factory_fx::rain_on_actor( self, "trainyard_enemy_alerted", 0.1 );
|
|
self.animname = "trainyard_enemy";
|
|
self.script_grenades = 0;
|
|
self.allowdeath = 1;
|
|
self.health = 1;
|
|
self.ignoreall = 1;
|
|
self.ignoreme = 1;
|
|
maps\factory_powerstealth::attach_flashlight( 1, undefined, 1 );
|
|
var_0 = common_scripts\utility::getstruct( "opfor_trainyard_walk", "script_noteworthy" );
|
|
thread trainyard_enemy_breakout_early();
|
|
thread trainyard_enemy_logic_wait_too_long();
|
|
trainyard_enemy_logic_start( var_0 );
|
|
thread trainyard_enemy_logic_dialogue();
|
|
thread trainyard_enemy_logic_wait( var_0 );
|
|
var_0 maps\_anim::anim_loop_solo( self, "factory_opfor_trainyard_patrol_loop", "stop_loop" );
|
|
}
|
|
|
|
trainyard_enemy_breakout_early()
|
|
{
|
|
level endon( "trainyard_kill_sequence_used" );
|
|
level endon( "trainyard_enemy_alerted" );
|
|
self endon( "death" );
|
|
thread wait_for_waking_event();
|
|
|
|
for (;;)
|
|
{
|
|
if ( self cansee( level.player ) )
|
|
break;
|
|
|
|
wait 0.1;
|
|
}
|
|
|
|
trainyard_enemy_wake_up();
|
|
}
|
|
|
|
trainyard_enemy_wake_up()
|
|
{
|
|
thread maps\_utility::smart_dialogue( "factory_sp1_enlamadre" );
|
|
level.player allowmelee( 1 );
|
|
var_0 = common_scripts\utility::getstruct( "opfor_trainyard_walk", "script_noteworthy" );
|
|
self.ignoreme = 0;
|
|
self.ignoreall = 0;
|
|
self.favoriteenemy = level.player;
|
|
level.player.ignoreme = 0;
|
|
self getenemyinfo( level.player );
|
|
self.aggressivemode = 1;
|
|
self.attackeraccuracy = 10000;
|
|
var_0 notify( "stop_loop" );
|
|
self stopanimscripted();
|
|
thread flashlight_drop_detail();
|
|
common_scripts\utility::flag_set( "trainyard_enemy_alerted" );
|
|
}
|
|
|
|
wait_for_waking_event()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "flashbang" );
|
|
self endon( "guy_waking_up" );
|
|
self addaieventlistener( "bulletwhizby" );
|
|
self addaieventlistener( "explode" );
|
|
self addaieventlistener( "projectile_impact" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "ai_event", var_0 );
|
|
|
|
if ( var_0 == "gunshot" || var_0 == "bulletwhizby" || var_0 == "explode" || common_scripts\utility::flag_set( "player_past_train_enemy" ) )
|
|
{
|
|
trainyard_enemy_wake_up();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
trainyard_enemy_logic_start( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
level endon( "trainyard_enemy_alerted" );
|
|
maps\_utility::delaythread( 0.1, maps\_anim::anim_set_rate_single, self, "factory_opfor_trainyard_patrol_enter", 1.5 );
|
|
maps\_utility::delaythread( 1.0, maps\_anim::anim_set_rate_single, self, "factory_opfor_trainyard_patrol_enter", 1.1 );
|
|
maps\_utility::delaythread( 4.9, maps\_anim::anim_set_rate_single, self, "factory_opfor_trainyard_patrol_enter", 1.5 );
|
|
var_0 maps\_anim::anim_single_solo( self, "factory_opfor_trainyard_patrol_enter" );
|
|
level notify( "trainyard_enemy_in_position" );
|
|
}
|
|
|
|
trainyard_enemy_logic_dialogue()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "trainyard_kill_sequence_used" );
|
|
level endon( "trainyard_enemy_alerted" );
|
|
wait 4;
|
|
|
|
if ( isalive( self ) )
|
|
thread maps\_utility::smart_dialogue( "factory_vs2_rogerpatrol" );
|
|
}
|
|
|
|
trainyard_enemy_logic_wait_too_long()
|
|
{
|
|
self endon( "death" );
|
|
common_scripts\utility::flag_wait_or_timeout( "trainyard_enemy_alerted", 18 );
|
|
|
|
if ( common_scripts\utility::flag( "trainyard_enemy_alerted" ) )
|
|
{
|
|
level.squad["ALLY_ALPHA"].ignoreall = 0;
|
|
level.squad["ALLY_ALPHA"].favoriteenemy = self;
|
|
}
|
|
else
|
|
{
|
|
level.squad["ALLY_ALPHA"] maps\_utility::enable_cqbwalk();
|
|
level.squad["ALLY_ALPHA"] setgoalnode( getnode( "ALLY_ALPHA_post_kill_node", "targetname" ) );
|
|
level.squad["ALLY_ALPHA"].goalradius = 64;
|
|
level.squad["ALLY_ALPHA"] waittill( "goal" );
|
|
level.squad["ALLY_ALPHA"] maps\_utility::cqb_aim( self );
|
|
wait 0.6;
|
|
|
|
if ( isalive( self ) && level.player.active_anim == 0 )
|
|
{
|
|
var_0 = level.squad["ALLY_ALPHA"] gettagorigin( "tag_flash" );
|
|
var_1 = self getshootatpos();
|
|
level.squad["ALLY_ALPHA"] safe_magic_bullet( var_0, var_1 );
|
|
self kill();
|
|
}
|
|
}
|
|
}
|
|
|
|
trainyard_enemy_logic_wait( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
level.player notifyonplayercommand( "stab", "+melee" );
|
|
level.player notifyonplayercommand( "stab", "+melee_breath" );
|
|
level.player notifyonplayercommand( "stab", "+melee_zoom" );
|
|
thread check_player_ready_for_train_kill();
|
|
common_scripts\utility::flag_wait( "trig_intro_vignette" );
|
|
maps\_utility::smart_dialogue( "factory_vs3_movingtoloadingdocks" );
|
|
thread maps\_utility::smart_dialogue( "factory_vs2_copythat" );
|
|
common_scripts\utility::flag_wait( "player_exited_train" );
|
|
|
|
while ( !common_scripts\utility::flag( "trainyard_enemy_alerted" ) )
|
|
{
|
|
level.player waittill( "stab" );
|
|
|
|
if ( common_scripts\utility::flag( "player_ready_for_train_kill" ) && isalive( self ) )
|
|
{
|
|
level.player.in_stab_animation = 1;
|
|
var_1 = player_start_stabbing();
|
|
level.player setstance( "stand" );
|
|
level.player allowcrouch( 0 );
|
|
var_2 = common_scripts\utility::getstruct( "opfor_trainyard_walk", "script_noteworthy" );
|
|
var_3 = [];
|
|
var_3[0] = var_1;
|
|
var_3[1] = self;
|
|
thread maps\factory_audio::audio_player_train_track_stealth_kill();
|
|
var_2 maps\_anim::anim_first_frame( var_3, "factory_opfor_trainyard_melee_death" );
|
|
var_4 = 0.15;
|
|
level.player playerlinktoblend( var_1, "tag_player", var_4, 0.25, 0.25 );
|
|
wait( var_4 );
|
|
level.player playerlinktodelta( var_1, "tag_player", 1, 0, 0, 0, 0, 1 );
|
|
var_1 show();
|
|
common_scripts\utility::flag_set( "trainyard_kill_sequence_used" );
|
|
maps\_utility::radio_dialogue_stop();
|
|
var_1 attach( "weapon_parabolic_knife", "tag_weapon_right", 1 );
|
|
thread flashlight_drop_detail();
|
|
maps\_utility::delaythread( 0.5, maps\factory_fx::fx_intro_kill_ally_stab, self );
|
|
maps\_utility::delaythread( 2.5, maps\factory_fx::fx_intro_kill_ally_stab, self );
|
|
var_2 maps\_anim::anim_single( var_3, "factory_opfor_trainyard_melee_death" );
|
|
self dropweapon( self.weapon, "right", 0 );
|
|
maps\_utility::gun_remove();
|
|
var_1 detach( "weapon_parabolic_knife", "tag_weapon_right", 1 );
|
|
level.player unlink();
|
|
var_1 delete();
|
|
level.player.in_stab_animation = undefined;
|
|
player_done_stabbing();
|
|
maps\_vignette_util::vignette_actor_kill();
|
|
return;
|
|
}
|
|
|
|
wait 0.01;
|
|
}
|
|
}
|
|
|
|
check_player_ready_for_train_kill()
|
|
{
|
|
level endon( "trainyard_kill_sequence_used" );
|
|
|
|
while ( !common_scripts\utility::flag( "trainyard_enemy_dead" ) )
|
|
{
|
|
if ( level.player.origin[0] < self.origin[0] && level.player.origin[0] > self.origin[0] - 150 && level.player.origin[1] < self.origin[1] + 35 && level.player.origin[1] > self.origin[1] - 35 && level.player.angles[1] < 20 && level.player.angles[1] > -20 )
|
|
{
|
|
common_scripts\utility::flag_set( "player_ready_for_train_kill" );
|
|
maps\_utility::display_hint( "train_stab_hint" );
|
|
level.player allowmelee( 0 );
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_clear( "player_ready_for_train_kill" );
|
|
level.player allowmelee( 1 );
|
|
}
|
|
|
|
wait 0.01;
|
|
}
|
|
|
|
level.player allowmelee( 1 );
|
|
}
|
|
|
|
flashlight_drop_detail()
|
|
{
|
|
maps\factory_powerstealth::detach_flashlight();
|
|
wait 1.5;
|
|
maps\factory_powerstealth::flashlight_light( 0 );
|
|
}
|
|
|
|
intro_ally_moveout()
|
|
{
|
|
common_scripts\utility::flag_wait( "trig_intro_vignette" );
|
|
thread intro_ally_charlie_train_rollout();
|
|
common_scripts\utility::flag_wait( "trainyard_enemy_dead" );
|
|
|
|
foreach ( var_1 in level.squad )
|
|
var_1 maps\_utility::enable_ai_color();
|
|
}
|
|
|
|
intro_ally_charlie_train_rollout()
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "factory_intro", "script_noteworthy" );
|
|
level.squad["ALLY_CHARLIE"].a.pose = "crouch";
|
|
var_0 maps\_anim::anim_first_frame_solo( level.squad["ALLY_CHARLIE"], "factory_intro_ally03" );
|
|
common_scripts\utility::flag_wait( "trainyard_enemy_dead" );
|
|
|
|
if ( common_scripts\utility::flag( "trainyard_kill_sequence_used" ) )
|
|
wait 1.0;
|
|
|
|
var_0 maps\_anim::anim_single_solo( level.squad["ALLY_CHARLIE"], "factory_intro_ally03" );
|
|
waittillframeend;
|
|
level.squad["ALLY_CHARLIE"] stopanimscripted();
|
|
level.squad["ALLY_CHARLIE"] maps\_utility::enable_ai_color();
|
|
level.squad["ALLY_CHARLIE"] maps\_utility::disable_cqbwalk();
|
|
maps\factory_util::safe_trigger_by_targetname( "sca_post_rollout_charlie" );
|
|
}
|
|
|
|
intro_kill_vignette()
|
|
{
|
|
level.squad["ALLY_ALPHA"] notify( "intro_kill_sequence_start" );
|
|
waittillframeend;
|
|
thread intro_ally_moveout();
|
|
common_scripts\utility::flag_wait( "player_exited_train" );
|
|
|
|
foreach ( var_1 in level.squad )
|
|
var_1 maps\_utility::disable_cqbwalk();
|
|
|
|
level.squad["ALLY_BRAVO"] stopanimscripted();
|
|
level.squad["ALLY_ECHO"] stopanimscripted();
|
|
maps\factory_util::actor_teleport( level.squad["ALLY_BRAVO"], "ALLY_BRAVO_intro_teleport" );
|
|
maps\factory_util::actor_teleport( level.squad["ALLY_ECHO"], "ALLY_ECHO_intro_teleport" );
|
|
common_scripts\utility::flag_wait_all( "trainyard_enemy_dead", "trig_intro_vignette" );
|
|
level.squad["ALLY_ALPHA"] pushplayer( 1 );
|
|
level.squad["ALLY_CHARLIE"] pushplayer( 1 );
|
|
level.squad["ALLY_ALPHA"].disableplayeradsloscheck = 0;
|
|
|
|
foreach ( var_4 in level.squad )
|
|
var_4 maps\_utility::enable_ai_color();
|
|
|
|
maps\factory_util::safe_trigger_by_targetname( "intro_allies_first_moveout" );
|
|
}
|
|
|
|
kill_trainyard_enemy( var_0 )
|
|
{
|
|
var_0.allowdeath = 1;
|
|
var_0 maps\_utility::set_battlechatter( 0 );
|
|
level.squad["ALLY_BRAVO"] shootblank();
|
|
var_0 kill( level.squad["ALLY_BRAVO"].origin, level.squad["ALLY_BRAVO"] );
|
|
}
|
|
|
|
intro_scene()
|
|
{
|
|
common_scripts\utility::flag_wait( "player_exited_train" );
|
|
common_scripts\utility::flag_wait( "factory_exterior_reveal" );
|
|
|
|
if ( !common_scripts\utility::flag( "trainyard_enemy_dead" ) )
|
|
kill_trainyard_enemy( level.train_kill );
|
|
|
|
level.squad["ALLY_ALPHA"] maps\_utility::disable_cqbwalk();
|
|
level.squad["ALLY_BRAVO"] maps\_utility::disable_cqbwalk();
|
|
level.squad["ALLY_CHARLIE"] maps\_utility::disable_cqbwalk();
|
|
maps\factory_util::safe_trigger_by_targetname( "intro_allies_leave_trains" );
|
|
common_scripts\utility::flag_wait( "factory_exterior_reveal_between_trains" );
|
|
wait 1;
|
|
thread maps\factory_util::god_rays_factory_awning();
|
|
maps\factory_util::safe_trigger_by_targetname( "intro_allies_past_trains1" );
|
|
common_scripts\utility::flag_wait( "factory_exterior_approach_infil" );
|
|
wait 0.1;
|
|
maps\factory_util::safe_trigger_by_targetname( "intro_allies_past_trains2" );
|
|
wait 3.1;
|
|
level.squad["ALLY_BRAVO"] maps\_utility::enable_cqbwalk();
|
|
level.squad["ALLY_CHARLIE"] maps\_utility::enable_cqbwalk();
|
|
common_scripts\utility::flag_wait( "intro_checkpoint_done" );
|
|
level.squad["ALLY_ALPHA"] pushplayer( 0 );
|
|
level.squad["ALLY_CHARLIE"] pushplayer( 0 );
|
|
}
|
|
|
|
intro_scene_tweak_ally_runs()
|
|
{
|
|
level endon( "factory_exterior_reveal_between_trains" );
|
|
level.squad["ALLY_BRAVO"] maps\_utility::enable_cqbwalk();
|
|
wait 3.5;
|
|
level.squad["ALLY_BRAVO"] maps\_utility::disable_cqbwalk();
|
|
wait 3.8;
|
|
level.squad["ALLY_BRAVO"] maps\_utility::enable_cqbwalk();
|
|
wait 0.8;
|
|
level.squad["ALLY_CHARLIE"] maps\_utility::enable_cqbwalk();
|
|
}
|
|
|
|
delta_splitup()
|
|
{
|
|
level endon( "intro_truck_driver_dead" );
|
|
level endon( "truck_kill_timed_out" );
|
|
level endon( "deleting_echo" );
|
|
thread buddy_boost_echo();
|
|
var_0 = getent( "vol_delete_squad_splinter", "targetname" );
|
|
|
|
while ( !level.squad["ALLY_ECHO"] istouching( var_0 ) )
|
|
wait 0.1;
|
|
|
|
thread delete_squad_splinter();
|
|
common_scripts\utility::flag_wait( "factory_exterior_reveal" );
|
|
common_scripts\utility::flag_wait( "intro_checkpoint_done" );
|
|
}
|
|
|
|
buddy_boost_echo()
|
|
{
|
|
level endon( "deleting_echo" );
|
|
level.squad["ALLY_ECHO"] maps\factory_rooftop::ally_vignette_traversal( "engine_jump_ally02", "factory_engine_jump_ally02" );
|
|
maps\factory_util::safe_trigger_by_targetname( "squad_splitup" );
|
|
}
|
|
|
|
delete_squad_splinter()
|
|
{
|
|
var_0 = level.squad["ALLY_ALPHA"];
|
|
var_1 = level.squad["ALLY_BRAVO"];
|
|
var_2 = level.squad["ALLY_CHARLIE"];
|
|
var_3 = level.squad["ALLY_ECHO"];
|
|
level.squad = undefined;
|
|
level.squad["ALLY_ALPHA"] = var_0;
|
|
level.squad["ALLY_BRAVO"] = var_1;
|
|
level.squad["ALLY_CHARLIE"] = var_2;
|
|
level notify( "deleting_echo" );
|
|
|
|
if ( isdefined( level.squad["ALLY_ECHO"] ) )
|
|
level.squad["ALLY_ECHO"] delete();
|
|
}
|
|
|
|
handle_player_leaving_mission()
|
|
{
|
|
level endon( "railgun_reveal_setup" );
|
|
thread check_for_player_leaving();
|
|
common_scripts\utility::flag_wait( "player_exited_mission_warning" );
|
|
var_0 = [ "factory_mrk_adamwhatreyoudoing", "factory_mrk_adamgetbackon", "factory_mrk_adamgetbackhere" ];
|
|
level.squad["ALLY_ALPHA"] thread maps\factory_util::nag_line_generator( undefined, "player_came_back" );
|
|
|
|
while ( common_scripts\utility::flag( "player_exited_mission_warning" ) )
|
|
wait 0.1;
|
|
|
|
level notify( "player_came_back" );
|
|
thread handle_player_leaving_mission();
|
|
}
|
|
|
|
check_for_player_leaving()
|
|
{
|
|
level endon( "railgun_reveal_setup" );
|
|
common_scripts\utility::flag_wait( "player_exited_mission" );
|
|
level notify( "new_quote_string" );
|
|
setdvar( "ui_deadquote", &"FACTORY_FAIL_ABANDONED" );
|
|
maps\_utility::missionfailedwrapper();
|
|
}
|
|
|
|
intro_truck_setup()
|
|
{
|
|
var_0 = maps\_vehicle::spawn_vehicle_from_targetname( "factory_truck_cab_spawner" );
|
|
var_0.animname = "het_cab";
|
|
level.intro_truck_cab = var_0;
|
|
var_1 = maps\_vehicle::spawn_vehicle_from_targetname( "factory_truck_trailer_spawner" );
|
|
var_1.animname = "het_trailer";
|
|
var_2 = spawn( "script_model", ( 4740, 3712, 552 ) );
|
|
var_2 setmodel( "tag_origin" );
|
|
var_1 maps\_vehicle::vehicle_lights_on( "running" );
|
|
var_0 maps\_vehicle::vehicle_lights_on( "running" );
|
|
common_scripts\utility::flag_wait( "factory_exterior_reveal" );
|
|
thread maps\factory_audio::audio_sfx_truck_pull_away_start();
|
|
var_0 startpath();
|
|
var_1 startpath();
|
|
var_3 = getent( "truck_sequence_node", "script_noteworthy" );
|
|
var_4 = getent( "intro_truck_driver", "script_noteworthy" );
|
|
var_5 = var_4 maps\_utility::spawn_ai();
|
|
var_5 linkto( var_3 );
|
|
var_5.ignoreall = 1;
|
|
var_5 allowedstances( "stand" );
|
|
var_5.animname = "enemy";
|
|
var_5.noragdoll = 1;
|
|
var_5.deathanim = %factory_truck_driver_death;
|
|
var_5 thread handle_driver_death();
|
|
var_6 = getentarray( "intro_pmcs", "targetname" );
|
|
thread maps\factory_audio::audio_sfx_truck_chatter( var_6, var_0 );
|
|
var_3 thread factory_truck_entrance( var_0, var_1, var_5 );
|
|
var_5 thread maps\factory_powerstealth::ps_check_for_player_damage();
|
|
var_5 thread intro_truck_failsafe();
|
|
common_scripts\utility::flag_wait( "entered_factory_1" );
|
|
}
|
|
|
|
handle_driver_death()
|
|
{
|
|
self endon( "entered_factory_1" );
|
|
self waittill( "damage", var_0, var_1 );
|
|
self linkto( level.intro_truck_cab );
|
|
}
|
|
|
|
factory_truck_entrance( var_0, var_1, var_2 )
|
|
{
|
|
common_scripts\utility::flag_wait( "factory_entrance_reveal" );
|
|
level.intro_truck_cab = maps\_vehicle::spawn_vehicle_from_targetname( "factory_truck_cab_spawner" );
|
|
level.intro_truck_trailer = maps\_vehicle::spawn_vehicle_from_targetname( "factory_truck_trailer_spawner" );
|
|
level.intro_truck_cab.animname = "het_cab";
|
|
level.intro_truck_trailer.animname = "het_trailer";
|
|
level.intro_truck_cab maps\_vehicle::vehicle_lights_on( "running" );
|
|
level.intro_truck_trailer maps\_vehicle::vehicle_lights_on( "running" );
|
|
var_0 delete();
|
|
var_1 delete();
|
|
thread maps\factory_audio::audio_sfx_truck_in_start();
|
|
thread maps\_anim::anim_single_solo( var_2, "factory_truck_driver_loop" );
|
|
level.intro_truck_cab notify( "suspend_drive_anims" );
|
|
level.intro_truck_trailer notify( "suspend_drive_anims" );
|
|
var_3 = getvehiclenode( "truck_entrance_path_end", "targetname" );
|
|
var_4 = [];
|
|
var_4[0] = level.intro_truck_cab;
|
|
var_4[1] = level.intro_truck_trailer;
|
|
thread maps\_anim::anim_single( var_4, "factory_truck_entrance" );
|
|
}
|
|
|
|
factory_ingress_start()
|
|
{
|
|
foreach ( var_1 in level.squad )
|
|
{
|
|
var_1 maps\_utility::disable_bulletwhizbyreaction();
|
|
var_1 maps\_utility::disable_pain();
|
|
}
|
|
|
|
level.player switchtoweapon( level.default_weapon );
|
|
level.player takeweapon( "flash_grenade" );
|
|
level.player takeweapon( "fraggrenade" );
|
|
common_scripts\utility::flag_set( "intro_checkpoint_done" );
|
|
common_scripts\utility::flag_set( "player_entered_awning" );
|
|
maps\factory_powerstealth::teleport_squad( "factory_ingress", "deltaecho" );
|
|
common_scripts\utility::flag_set( "trainyard_enemy_dead" );
|
|
maps\_utility::player_speed_percent( 70 );
|
|
thread factory_entrance_setup();
|
|
thread handle_player_leaving_mission();
|
|
thread factory_entrance_dialogue_management();
|
|
maps\_utility::battlechatter_off();
|
|
thread intro_truck_setup();
|
|
common_scripts\utility::flag_set( "factory_exterior_reveal" );
|
|
var_3 = getent( "sca_trainyard_exit", "targetname" );
|
|
var_3 common_scripts\utility::trigger_off();
|
|
}
|
|
|
|
factory_ingress()
|
|
{
|
|
thread factory_entrance_reveal();
|
|
thread maps\factory_powerstealth::conveyor_crate_setup();
|
|
thread maps\_weather::rainmedium( 0 );
|
|
level.cosine["70"] = cos( 70 );
|
|
level.goodfriendlydistancefromplayersquared = 62500;
|
|
|
|
foreach ( var_1 in level.squad )
|
|
var_1.ignoreall = 1;
|
|
|
|
var_3 = maps\_utility::get_living_ai_array( "intro_pmcs", "targetname" );
|
|
|
|
foreach ( var_5 in var_3 )
|
|
var_5.ignoreall = 1;
|
|
|
|
common_scripts\utility::flag_set( "factory_entrance_setup" );
|
|
|
|
foreach ( var_5 in level.squad )
|
|
{
|
|
var_5 maps\_utility::enable_cqbwalk();
|
|
var_5 maps\_utility::disable_sprint();
|
|
var_5.accuracy = 100;
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "enter_factory" );
|
|
thread maps\_weather::rainnone( 5 );
|
|
}
|
|
|
|
factory_entrance_setup()
|
|
{
|
|
var_0 = getentarray( "intro_pmcs", "targetname" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
var_3 = var_2 maps\_utility::spawn_ai();
|
|
var_3.ignoreall = 1;
|
|
var_3 thread maps\factory_powerstealth::ps_check_for_player_damage();
|
|
}
|
|
|
|
thread maps\factory_fx::fx_show_hide( "intro_cardreader_lock", "intro_cardreader_unlock" );
|
|
maps\_utility::stop_exploder( "intro_cardreader_unlock" );
|
|
common_scripts\utility::exploder( "intro_cardreader_lock" );
|
|
}
|
|
|
|
entrance_first_kill()
|
|
{
|
|
maps\factory_util::safe_trigger_by_targetname( "move_from_entrance_kill" );
|
|
}
|
|
|
|
factory_entrance_enc()
|
|
{
|
|
var_0 = maps\_utility::get_living_ai( "entrance_enemy_03", "script_noteworthy" );
|
|
level.squad["ALLY_ALPHA"].favoriteenemy = var_0;
|
|
var_1 = maps\_utility::get_living_ai( "entrance_enemy_02", "script_noteworthy" );
|
|
level.squad["ALLY_BRAVO"].favoriteenemy = var_1;
|
|
var_2 = maps\_utility::get_living_ai( "entrance_enemy_01", "script_noteworthy" );
|
|
level.squad["ALLY_CHARLIE"].favoriteenemy = var_2;
|
|
|
|
foreach ( var_4 in level.squad )
|
|
{
|
|
var_4.disableplayeradsloscheck = 1;
|
|
var_4 pushplayer( 1 );
|
|
}
|
|
|
|
var_6 = [ var_0, var_1, var_2 ];
|
|
thread handle_player_exposing( var_6 );
|
|
thread setup_factory_entrance_enc( var_6 );
|
|
level.squad["ALLY_BRAVO"] thread bravo_ingress_detail();
|
|
level.squad["ALLY_CHARLIE"] thread charlie_ingress_detail();
|
|
level.squad["ALLY_ALPHA"] thread strafe_entrance();
|
|
thread detect_allies_at_entrance();
|
|
common_scripts\utility::flag_wait_all( "factory_entrance_reveal" );
|
|
wait 0.5;
|
|
level thread set_flag_on_player_action( "intro_truck_driver_dead" );
|
|
level thread truck_kill_timeout();
|
|
common_scripts\utility::flag_wait( "intro_truck_driver_dead" );
|
|
|
|
if ( !common_scripts\utility::flag( "all_allies_at_entrance" ) )
|
|
level notify( "stealth_broken" );
|
|
|
|
foreach ( var_4 in var_6 )
|
|
var_4 stopsounds();
|
|
|
|
eliminate_all_targets( var_6 );
|
|
common_scripts\utility::flag_set( "truck_kills_done" );
|
|
maps\_utility::battlechatter_off( "axis" );
|
|
wait 1.2;
|
|
level.squad["ALLY_ALPHA"] thread alpha_post_truck_sequence();
|
|
wait 1;
|
|
level.squad["ALLY_CHARLIE"] thread charlie_search_body( var_1 );
|
|
wait 2.0;
|
|
thread maps\factory_powerstealth::factory_entrance_reveal_animate_pieces();
|
|
wait 2.0;
|
|
common_scripts\utility::flag_wait( "outer_perim_cleared" );
|
|
common_scripts\utility::flag_wait( "card_swiped" );
|
|
thread maps\factory_fx::fx_intro_cardreader_unlock();
|
|
wait 0.15;
|
|
thread maps\factory_util::god_rays_factory_open();
|
|
thread open_factory_door();
|
|
thread maps\factory_audio::audio_factory_door_open();
|
|
thread factory_ingress_dialogue();
|
|
common_scripts\utility::flag_set( "music_factory_reveal" );
|
|
factory_door_kill();
|
|
maps\factory_util::safe_trigger_by_targetname( "sca_stairway_post" );
|
|
waittillframeend;
|
|
level.squad["ALLY_ALPHA"] thread alpha_ingress_go();
|
|
level.squad["ALLY_BRAVO"] thread bravo_ingress_go();
|
|
common_scripts\utility::flag_set( "outer_perim_cleared" );
|
|
|
|
foreach ( var_4 in level.squad )
|
|
{
|
|
var_4.ignoreall = 1;
|
|
var_4.disableplayeradsloscheck = 0;
|
|
var_4 pushplayer( 0 );
|
|
}
|
|
}
|
|
|
|
eliminate_all_targets( var_0 )
|
|
{
|
|
level endon( "entered_factory_1" );
|
|
|
|
if ( isdefined( level.squad["ALLY_ECHO"] ) )
|
|
delete_squad_splinter();
|
|
|
|
level.truck_kills = 0;
|
|
level.ai_friendlyfireblockduration = getdvarfloat( "ai_friendlyFireBlockDuration" );
|
|
setsaveddvar( "ai_friendlyFireBlockDuration", 0 );
|
|
|
|
foreach ( var_2 in level.squad )
|
|
{
|
|
var_2 thread eliminate_my_target();
|
|
wait 0.25;
|
|
}
|
|
|
|
while ( level.truck_kills < 3 )
|
|
wait 0.1;
|
|
|
|
setsaveddvar( "ai_friendlyFireBlockDuration", level.ai_friendlyfireblockduration );
|
|
}
|
|
|
|
eliminate_my_target()
|
|
{
|
|
self endon( "death" );
|
|
maps\_utility::disable_pain();
|
|
detect_ally_at_entrance();
|
|
|
|
if ( isalive( self.favoriteenemy ) )
|
|
{
|
|
if ( isdefined( self.favoriteenemy.dead ) )
|
|
{
|
|
level.truck_kills = level.truck_kills + 1;
|
|
maps\_utility::enable_pain();
|
|
return;
|
|
}
|
|
|
|
var_0 = self gettagorigin( "tag_flash" );
|
|
var_1 = self.favoriteenemy getshootatpos();
|
|
thread fire_on_target( self.favoriteenemy, var_0, var_1 );
|
|
wait 0.05;
|
|
|
|
if ( self.favoriteenemy.script_noteworthy != "entrance_enemy_02" )
|
|
self.favoriteenemy kill();
|
|
else
|
|
self.favoriteenemy dodamage( 1, ( 0, 0, 0 ) );
|
|
|
|
self.favoriteenemy dropweapon( self.favoriteenemy.weapon, "right", 0 );
|
|
self.favoriteenemy maps\_utility::gun_remove();
|
|
}
|
|
|
|
level.truck_kills = level.truck_kills + 1;
|
|
maps\_utility::enable_pain();
|
|
}
|
|
|
|
detect_ally_at_entrance()
|
|
{
|
|
var_0 = getent( "vol_entrance_squad_count", "script_noteworthy" );
|
|
|
|
while ( !self istouching( var_0 ) )
|
|
wait 0.1;
|
|
}
|
|
|
|
fire_on_target( var_0, var_1, var_2 )
|
|
{
|
|
for ( var_3 = 0; var_3 <= randomintrange( 2, 3 ); var_3++ )
|
|
{
|
|
safe_magic_bullet( var_1, var_2 );
|
|
wait 0.0769;
|
|
}
|
|
}
|
|
|
|
detect_allies_at_entrance()
|
|
{
|
|
level endon( "truck_kills_done" );
|
|
var_0 = getent( "vol_entrance_squad_count", "script_noteworthy" );
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = var_0 maps\_utility::get_ai_touching_volume( "allies" );
|
|
|
|
if ( var_1.size > 2 )
|
|
break;
|
|
|
|
wait 0.15;
|
|
}
|
|
|
|
common_scripts\utility::flag_set( "all_allies_at_entrance" );
|
|
}
|
|
|
|
truck_kill_timeout()
|
|
{
|
|
level endon( "intro_truck_driver_dead" );
|
|
common_scripts\utility::flag_wait_or_timeout( "intro_truck_driver_dead", 12.5 );
|
|
common_scripts\utility::flag_set( "truck_kill_timed_out" );
|
|
wait 1.5;
|
|
common_scripts\utility::flag_set( "intro_truck_driver_dead" );
|
|
}
|
|
|
|
alpha_post_truck_sequence()
|
|
{
|
|
level endon( "entered_factory_1" );
|
|
level.squad["ALLY_BRAVO"] thread bravo_post_truck_sequence();
|
|
var_0 = getnode( "alpha_after_truck_kill", "script_noteworthy" );
|
|
self setgoalnode( var_0 );
|
|
self waittill( "goal" );
|
|
self allowedstances( "crouch", "prone" );
|
|
common_scripts\utility::flag_wait( "start_search" );
|
|
wait 5.5;
|
|
self allowedstances( "crouch", "prone", "stand" );
|
|
self.goalradius = 64;
|
|
self.disablearrivals = 1;
|
|
var_0 = getnode( "alpha_path_to_dock", "script_noteworthy" );
|
|
maps\_utility::follow_path( var_0 );
|
|
maps\factory_util::safe_trigger_by_targetname( "allies_factory_entrance" );
|
|
self waittill( "goal" );
|
|
self.disablearrivals = 0;
|
|
self.disableexits = 0;
|
|
}
|
|
|
|
bravo_post_truck_sequence()
|
|
{
|
|
level endon( "entered_factory_1" );
|
|
wait 0.5;
|
|
self.goalradius = 8;
|
|
var_0 = getnode( "bravo_truck_search_1st_pos", "script_noteworthy" );
|
|
self setgoalnode( var_0 );
|
|
self waittill( "goal" );
|
|
wait 3.0;
|
|
}
|
|
|
|
factory_door_kill()
|
|
{
|
|
var_0 = getent( "factory_door_kill_stationary", "script_noteworthy" );
|
|
var_1 = getent( "factory_door_kill_mobile", "script_noteworthy" );
|
|
var_0 maps\_utility::add_spawn_function( ::factory_door_guard_stationary );
|
|
var_1 maps\_utility::add_spawn_function( ::factory_door_guard_mobile );
|
|
var_2 = var_0 maps\_utility::spawn_ai( 1 );
|
|
var_3 = var_1 maps\_utility::spawn_ai( 1 );
|
|
var_4 = getent( "agv_fac_entry_right", "targetname" );
|
|
var_4 maps\_utility::add_spawn_function( maps\factory_util::forklift_run_over_monitor );
|
|
var_4 maps\_vehicle::spawn_vehicle_and_gopath();
|
|
thread forklift_far();
|
|
thread forklift_lifting();
|
|
thread forklift_parking();
|
|
wait 1.45;
|
|
level.squad["ALLY_BRAVO"] thread maps\_utility::smart_dialogue( "factory_kgn_twoahead" );
|
|
common_scripts\utility::flag_wait_or_timeout( "first_door_guard_shot", 2 );
|
|
|
|
if ( !common_scripts\utility::flag( "first_door_guard_shot" ) )
|
|
level.squad["ALLY_ALPHA"] maps\_utility::smart_dialogue( "factory_bkr_dropem" );
|
|
|
|
wait 0.4;
|
|
|
|
if ( isalive( var_2 ) )
|
|
{
|
|
level.squad["ALLY_BRAVO"] shootblank();
|
|
level.squad["ALLY_BRAVO"] safe_magic_bullet( level.squad["ALLY_BRAVO"] gettagorigin( "tag_flash" ), var_2 getshootatpos() );
|
|
var_2 kill();
|
|
}
|
|
|
|
wait 0.25;
|
|
|
|
if ( isalive( var_3 ) )
|
|
{
|
|
level.squad["ALLY_ALPHA"] shootblank();
|
|
level.squad["ALLY_ALPHA"] safe_magic_bullet( level.squad["ALLY_ALPHA"] gettagorigin( "tag_flash" ), var_3 getshootatpos() );
|
|
var_3 kill();
|
|
}
|
|
|
|
wait 0.5;
|
|
level.squad["ALLY_CHARLIE"] thread maps\_utility::smart_dialogue( "factory_hsh_cleartomove" );
|
|
common_scripts\utility::flag_set( "enter_factory" );
|
|
}
|
|
|
|
forklift_far()
|
|
{
|
|
var_0 = getent( "agv_fac_entry_far_crate", "targetname" );
|
|
var_1 = getent( "col_agv_fac_entry_far_crate", "targetname" );
|
|
var_2 = getent( "agv_fac_entry_far", "targetname" );
|
|
var_2 maps\_utility::add_spawn_function( maps\factory_util::forklift_run_over_monitor );
|
|
var_3 = var_2 maps\_vehicle::spawn_vehicle_and_gopath();
|
|
var_0.angles = var_3.angles;
|
|
var_0 linkto( var_3 );
|
|
var_1 linkto( var_3 );
|
|
}
|
|
|
|
forklift_lifting()
|
|
{
|
|
var_0 = getent( "agv_fac_entry_far_lifting", "targetname" );
|
|
var_1 = getent( "col_agv_fac_entry_far_lifting", "targetname" );
|
|
var_2 = getent( "agv_fac_entry_lifting", "targetname" );
|
|
var_2 maps\_utility::add_spawn_function( maps\factory_util::forklift_run_over_monitor );
|
|
var_3 = var_2 maps\_vehicle::spawn_vehicle_and_gopath();
|
|
var_0.angles = var_3.angles;
|
|
var_0 linkto( var_3 );
|
|
var_1 linkto( var_3 );
|
|
}
|
|
|
|
forklift_parking()
|
|
{
|
|
var_0 = getent( "agv_fac_entry_parking", "targetname" );
|
|
var_0 maps\_utility::add_spawn_function( maps\factory_util::forklift_run_over_monitor );
|
|
var_1 = var_0 maps\_vehicle::spawn_vehicle_and_gopath();
|
|
}
|
|
|
|
safe_magic_bullet( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = 0;
|
|
var_4 = bullettrace( var_0, var_1, 1 );
|
|
var_5 = 0;
|
|
|
|
foreach ( var_7 in level.squad )
|
|
{
|
|
if ( isdefined( var_4["entity"] ) && var_4["entity"] == var_7 )
|
|
var_5 = 1;
|
|
}
|
|
|
|
if ( isdefined( var_4["entity"] ) && var_4["entity"] == level.player || var_5 == 1 )
|
|
var_3 = 1;
|
|
|
|
if ( isdefined( var_4["fraction"] ) < 0.8 )
|
|
var_3 = 1;
|
|
|
|
playfxontag( common_scripts\utility::getfx( "silencer_flash" ), self, "tag_flash" );
|
|
|
|
if ( var_3 )
|
|
{
|
|
var_9 = vectortoangles( var_1 - var_0 );
|
|
var_10 = anglestoforward( var_9 );
|
|
var_0 = var_1 + var_10 * -10;
|
|
}
|
|
|
|
self shootblank();
|
|
|
|
if ( isdefined( var_2 ) )
|
|
magicbullet( var_2, var_0, var_1 );
|
|
else
|
|
magicbullet( self.weapon, var_0, var_1 );
|
|
}
|
|
|
|
factory_door_guard_stationary()
|
|
{
|
|
self endon( "entered_factory_1" );
|
|
thread factory_door_guard_player_spotted();
|
|
thread maps\factory_powerstealth::ps_check_for_player_damage();
|
|
self.animname = "enemy";
|
|
self.ignoreall = 1;
|
|
self.allowdeath = 1;
|
|
self.health = 1;
|
|
var_0 = getent( "factory_door_kill_stationary_node", "targetname" );
|
|
var_0 maps\_anim::anim_reach_solo( self, "factory_truck_enemy02_loop" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "factory_truck_enemy02_loop", "stop_loop" );
|
|
self waittill( "damage", var_1, var_2 );
|
|
common_scripts\utility::flag_set( "first_door_guard_shot" );
|
|
var_0 notify( "stop_loop" );
|
|
wait 0.2;
|
|
var_3 = maps\_utility::get_living_ai( "factory_door_kill_mobile", "script_noteworthy" );
|
|
|
|
if ( isdefined( var_3 ) )
|
|
var_3 maps\_anim::anim_single_solo( var_3, "patrol_bored_walk_2_scared_idle_turn_r_90" );
|
|
}
|
|
|
|
factory_door_guard_mobile()
|
|
{
|
|
self endon( "entered_factory_1" );
|
|
thread factory_door_guard_player_spotted();
|
|
thread maps\factory_powerstealth::ps_check_for_player_damage();
|
|
self.animname = "enemy";
|
|
self.ignoreall = 1;
|
|
self.allowdeath = 1;
|
|
self.health = 1;
|
|
var_0 = getent( "factory_door_kill_mobile_node", "targetname" );
|
|
thread maps\_anim::anim_single_solo( self, "factory_truck_enemy01_enter" );
|
|
self waittill( "damage", var_1, var_2 );
|
|
common_scripts\utility::flag_set( "first_door_guard_shot" );
|
|
wait 0.2;
|
|
var_3 = maps\_utility::get_living_ai( "factory_door_kill_stationary", "script_noteworthy" );
|
|
|
|
if ( isdefined( var_3 ) )
|
|
var_3 maps\_anim::anim_single_solo( var_3, "scared_idle_turn_l_90" );
|
|
}
|
|
|
|
factory_door_guard_player_spotted()
|
|
{
|
|
self endon( "death" );
|
|
var_0 = getent( "factory_door_kill_stationary_node", "targetname" );
|
|
common_scripts\utility::flag_wait( "entered_factory_1" );
|
|
wait( randomfloatrange( 0, 0.25 ) );
|
|
|
|
if ( !isalive( self ) )
|
|
return;
|
|
|
|
var_0 notify( "stop_loop" );
|
|
self stopanimscripted();
|
|
level.player.ignoreme = 0;
|
|
self.ignoreall = 0;
|
|
self getenemyinfo( level.player );
|
|
self.favoriteenemy = level.player;
|
|
self setgoalentity( level.player );
|
|
}
|
|
|
|
strafe_entrance()
|
|
{
|
|
level endon( "truck_kills_done" );
|
|
self.goalradius = 64;
|
|
var_0 = getnode( "alpha_after_first_kill", "script_noteworthy" );
|
|
var_1 = getnode( "alpha_truck_path", "script_noteworthy" );
|
|
self.maxfaceenemydist = 1024;
|
|
maps\_utility::follow_path( var_1 );
|
|
self.moveplaybackrate = 0.5;
|
|
self setgoalnode( var_0 );
|
|
self.moveplaybackrate = 1.0;
|
|
}
|
|
|
|
charlie_search_body( var_0 )
|
|
{
|
|
level endon( "entered_factory_1" );
|
|
self pushplayer( 1 );
|
|
var_1 = getent( "truck_sequence_node_alt", "script_noteworthy" );
|
|
var_0.animname = "enemy";
|
|
self.goalradius = 8;
|
|
var_1 maps\_anim::anim_reach_solo( self, "factory_truck_ally02_search" );
|
|
common_scripts\utility::flag_set( "start_search" );
|
|
var_1 thread maps\_anim::anim_single_solo( self, "factory_truck_ally02_search" );
|
|
thread maps\factory_audio::audio_factory_search_body();
|
|
wait 2.0;
|
|
common_scripts\utility::exploder( "body_roll_dust" );
|
|
wait 1.5;
|
|
thread maps\_utility::smart_dialogue( "factory_rgs_gotone" );
|
|
var_2 = getent( "security_card", "targetname" );
|
|
var_2.origin = level.squad["ALLY_CHARLIE"] gettagorigin( "tag_inhand" );
|
|
var_2 linkto( level.squad["ALLY_CHARLIE"], "tag_inhand", ( 0.6, 0, 1 ), ( -50, 0, 0 ) );
|
|
self.goalradius = 8;
|
|
thread charlie_ingress_go();
|
|
wait 1.7;
|
|
var_2 delete();
|
|
}
|
|
|
|
bravo_ingress_detail()
|
|
{
|
|
common_scripts\utility::flag_wait( "factory_entrance_reveal" );
|
|
self setgoalnode( getnode( "bravo_truck_kill_node", "script_noteworthy" ) );
|
|
}
|
|
|
|
charlie_ingress_detail()
|
|
{
|
|
level endon( "intro_truck_driver_dead" );
|
|
common_scripts\utility::flag_wait( "factory_entrance_reveal" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( maps\_utility::players_within_distance( 48, getnode( "fac_ent_charlie_node", "targetname" ).origin ) )
|
|
{
|
|
self.goalradius = 8;
|
|
var_0 = getnode( "fac_ent_stand_forklift_org", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
break;
|
|
}
|
|
|
|
wait 1.0;
|
|
}
|
|
}
|
|
|
|
handle_player_exposing( var_0 )
|
|
{
|
|
level endon( "truck_kills_done" );
|
|
common_scripts\utility::flag_wait_any( "player_scene_interrupt", "intro_truck_driver_dead" );
|
|
level.player.ignoreme = 0;
|
|
maps\_utility::battlechatter_on( "axis" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( isalive( var_2 ) )
|
|
{
|
|
var_2.ignoreall = 0;
|
|
var_2.favoriteenemy = level.player;
|
|
|
|
if ( var_2.team == "axis" )
|
|
var_2 stopanimscripted();
|
|
|
|
var_2 setgoalpos( var_2.origin );
|
|
var_2 maps\_utility::cqb_aim( level.player );
|
|
}
|
|
}
|
|
|
|
var_4 = getent( "truck_sequence_node_alt", "script_noteworthy" );
|
|
var_4 thread maps\_anim::anim_single_solo( level.clipboard, "factory_truck_enemy02_death" );
|
|
wait 1.0;
|
|
maps\_utility::battlechatter_off();
|
|
common_scripts\utility::flag_set( "intro_truck_driver_dead" );
|
|
wait 1.0;
|
|
}
|
|
|
|
setup_factory_entrance_enc( var_0 )
|
|
{
|
|
level endon( "intro_truck_driver_dead" );
|
|
var_0[0] endon( "death" );
|
|
var_0[1] endon( "death" );
|
|
var_0[2] endon( "death" );
|
|
common_scripts\utility::flag_wait( "factory_entrance_reveal" );
|
|
var_0[0] thread ingress_enc_think_enemy01();
|
|
var_0[1] thread ingress_enc_think_enemy02();
|
|
var_0[2] thread ingress_enc_think_enemy03();
|
|
}
|
|
|
|
ingress_enc_think_enemy01()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "entered_factory_1" );
|
|
self.allowdeath = 1;
|
|
self.noragdoll = 1;
|
|
self.animname = "enemy";
|
|
self.fixednode = 1;
|
|
var_0 = getent( "truck_sequence_node", "script_noteworthy" );
|
|
var_0 maps\_anim::anim_single_solo( self, "factory_truck_enemy01" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "factory_truck_enemy01_loop", "stop_loop" );
|
|
}
|
|
|
|
ingress_enc_enemy01_kill( var_0 )
|
|
{
|
|
self waittill( "damage", var_1, var_2 );
|
|
|
|
if ( common_scripts\utility::flag( "truck_kill_timed_out" ) )
|
|
wait 1.0;
|
|
}
|
|
|
|
ingress_enc_think_enemy02()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "entered_factory_1" );
|
|
self.health = 999;
|
|
self.allowdeath = 1;
|
|
self.a.nodeath = 1;
|
|
self.ignoreme = 1;
|
|
self.animname = "enemy";
|
|
maps\_utility::magic_bullet_shield();
|
|
maps\_utility::disable_surprise();
|
|
self.fixednode = 1;
|
|
self.dontmelee = 1;
|
|
self.delete_on_death = 0;
|
|
level.clipboard = maps\_utility::spawn_anim_model( "factory_intro_clipboard" );
|
|
var_0 = [];
|
|
var_0[0] = self;
|
|
var_0[1] = level.clipboard;
|
|
var_1 = getent( "truck_sequence_node_alt", "script_noteworthy" );
|
|
thread ingress_enc_enemy02_kill( var_0, var_1 );
|
|
var_1 thread maps\_anim::anim_single( var_0, "factory_truck_enemy02" );
|
|
wait 0.05;
|
|
var_1 maps\_anim::anim_set_time( var_0, "factory_truck_enemy02", 0.1 );
|
|
}
|
|
|
|
ingress_enc_enemy02_kill( var_0, var_1 )
|
|
{
|
|
self endon( "death" );
|
|
self waittill( "damage", var_2, var_3 );
|
|
self.team = "neutral";
|
|
self.no_pain_sound = 1;
|
|
self.allowdeath = 0;
|
|
self.allowpain = 0;
|
|
self.diequietly = 1;
|
|
self.nocorpsedelete = 1;
|
|
self.dead = 1;
|
|
self setcontents( 0 );
|
|
var_1 thread maps\_anim::anim_single_solo( self, "factory_truck_enemy02_death" );
|
|
|
|
if ( common_scripts\utility::flag( "truck_kill_timed_out" ) )
|
|
var_1 thread maps\_anim::anim_single_solo( level.clipboard, "factory_truck_enemy02_death" );
|
|
|
|
wait 2;
|
|
wait( getanimlength( maps\_utility::getanim( "factory_truck_enemy02_death" ) ) - 2 );
|
|
var_1 maps\_anim::anim_first_frame_solo( self, "factory_truck_enemy02_death_searched" );
|
|
common_scripts\utility::flag_wait( "start_search" );
|
|
var_1 maps\_anim::anim_single_solo( self, "factory_truck_enemy02_death_searched" );
|
|
maps\_utility::stop_magic_bullet_shield();
|
|
maps\factory_anim::kill_no_react();
|
|
}
|
|
|
|
wait_for_damage_or_flag( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
|
|
while ( !common_scripts\utility::flag( var_0 ) )
|
|
common_scripts\utility::waittill_notify_or_timeout_return( "damage", 0.1 );
|
|
}
|
|
|
|
ingress_enc_think_enemy03()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "entered_factory_1" );
|
|
self.allowdeath = 1;
|
|
self.animname = "enemy";
|
|
self.fixednode = 1;
|
|
var_0 = getent( "truck_sequence_node", "script_noteworthy" );
|
|
var_0 maps\_anim::anim_single_solo( self, "factory_truck_enemy03" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "factory_truck_enemy03_loop", "stop_loop" );
|
|
}
|
|
|
|
intro_truck_failsafe()
|
|
{
|
|
level endon( "entered_factory_1" );
|
|
common_scripts\utility::flag_wait( "intro_truck_driver_dead" );
|
|
|
|
if ( isalive( self ) )
|
|
{
|
|
self stopanimscripted();
|
|
level.squad["ALLY_ALPHA"] shootblank();
|
|
level.squad["ALLY_ALPHA"] safe_magic_bullet( level.squad["ALLY_ALPHA"] gettagorigin( "tag_flash" ), self getshootatpos() );
|
|
self kill();
|
|
}
|
|
}
|
|
|
|
open_factory_door()
|
|
{
|
|
var_0 = getent( "factory_entrance_door", "script_noteworthy" );
|
|
var_0 movez( 184, 8, 1, 3 );
|
|
common_scripts\utility::exploder( "door_open" );
|
|
thread maps\factory_audio::sfx_garage_reveal_crane();
|
|
wait 4;
|
|
var_0 connectpaths();
|
|
common_scripts\utility::flag_wait( "exited_conveyor" );
|
|
var_0 movez( -184, 5, 1, 1 );
|
|
var_0 disconnectpaths();
|
|
}
|
|
|
|
factory_entrance_reveal()
|
|
{
|
|
common_scripts\utility::flag_wait( "player_entered_awning" );
|
|
thread maps\factory_audio::sfx_garage_reveal_filtered();
|
|
entrance_first_kill();
|
|
factory_entrance_enc();
|
|
common_scripts\utility::flag_wait( "outer_perim_cleared" );
|
|
common_scripts\utility::flag_wait( "entered_factory_1" );
|
|
}
|
|
|
|
factory_ingress_dialogue()
|
|
{
|
|
level endon( "entered_conveyor" );
|
|
common_scripts\utility::flag_wait( "entered_factory_1" );
|
|
wait 0.5;
|
|
thread maps\factory_audio::audio_factory_reveal_mix( "one" );
|
|
wait 0.5;
|
|
thread maps\factory_audio::audio_factory_wait_for_mix_change();
|
|
common_scripts\utility::flag_wait( "ingress_dialogue_kickoff" );
|
|
level.squad["ALLY_ALPHA"] thread maps\_utility::smart_dialogue( "factory_mrk_keepyoureyesout" );
|
|
wait 0.5;
|
|
level.squad["ALLY_ALPHA"] maps\_utility::smart_dialogue( "factory_mrk_oldboyhowarethose" );
|
|
maps\_utility::smart_radio_dialogue( "factory_oby_merrickeyesonyour" );
|
|
level.squad["ALLY_ALPHA"] maps\_utility::smart_dialogue( "factory_mrk_wellmakeourown" );
|
|
}
|
|
|
|
charlie_ingress_go()
|
|
{
|
|
level endon( "powerstealth_end" );
|
|
self notify( "stop_adjust_movement_speed" );
|
|
self.goalradius = 8;
|
|
var_0 = getnode( "factory_ingress_node_ally01", "script_noteworthy" );
|
|
var_0 maps\_anim::anim_reach_and_approach_solo( self, "factory_allies_enter_factory_ally_01", undefined );
|
|
self setgoalnode( var_0 );
|
|
common_scripts\utility::flag_wait( "outer_perim_cleared" );
|
|
thread maps\factory_audio::audio_play_unlock_sound();
|
|
common_scripts\utility::flag_set( "card_swiped" );
|
|
common_scripts\utility::flag_wait( "enter_factory" );
|
|
maps\_utility::disable_cqbwalk();
|
|
var_0 = getnode( "charlie_anim1", "targetname" );
|
|
self.goalradius = 16;
|
|
var_0 maps\_anim::anim_reach_solo( self, "combatwalk_F_spin" );
|
|
common_scripts\utility::flag_set( "ingress_dialogue_kickoff" );
|
|
|
|
if ( !common_scripts\utility::flag( "entered_loading_area" ) )
|
|
{
|
|
var_0 maps\_anim::anim_single_solo( self, "combatwalk_F_spin" );
|
|
self setgoalpos( self.origin );
|
|
}
|
|
|
|
self setgoalnode( getnode( "charlie_anim1_end", "targetname" ) );
|
|
maps\_utility::enable_ai_color();
|
|
self waittill( "goal" );
|
|
self.moveplaybackrate = 1.0;
|
|
self notify( "stop_adjust_movement_speed" );
|
|
maps\factory_util::safe_trigger_by_targetname( "sca_powerstealth_regroup" );
|
|
}
|
|
|
|
bravo_ingress_go()
|
|
{
|
|
level endon( "exited_conveyor" );
|
|
self notify( "stop_adjust_movement_speed" );
|
|
self.goalradius = 8;
|
|
maps\_utility::disable_cqbwalk();
|
|
var_0 = getnode( "stairway_post_bravo", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
self waittill( "goal" );
|
|
common_scripts\utility::flag_wait( "ps_begin" );
|
|
self.moveplaybackrate = 1.0;
|
|
self notify( "stop_adjust_movement_speed" );
|
|
}
|
|
|
|
alpha_ingress_go()
|
|
{
|
|
level endon( "exited_conveyor" );
|
|
self notify( "stop_adjust_movement_speed" );
|
|
self.goalradius = 128;
|
|
maps\_utility::disable_cqbwalk();
|
|
manage_ally_cqb();
|
|
self setgoalnode( getnode( "alpha_ingress_path2", "script_noteworthy" ) );
|
|
self waittill( "goal" );
|
|
self notify( "stop_adjust_movement_speed" );
|
|
}
|
|
|
|
manage_ally_cqb()
|
|
{
|
|
self endon( "stop_cqb_management" );
|
|
var_0 = getent( "vol_ps_staircase", "targetname" );
|
|
|
|
while ( self istouching( var_0 ) )
|
|
{
|
|
maps\_utility::enable_cqbwalk();
|
|
self.moveplaybackrate = 1.0;
|
|
self notify( "stop_adjust_movement_speed" );
|
|
wait 0.5;
|
|
}
|
|
|
|
maps\_utility::disable_cqbwalk();
|
|
self notify( "stop_cqb_management" );
|
|
}
|
|
|
|
factory_entrance_dialogue_management()
|
|
{
|
|
level endon( "entered_factory_1" );
|
|
common_scripts\utility::flag_wait( "player_entered_awning" );
|
|
|
|
if ( !common_scripts\utility::flag( "intro_truck_driver_dead" ) && !common_scripts\utility::flag( "player_scene_interrupt" ) )
|
|
level.squad["ALLY_ALPHA"] maps\_utility::radio_dialogue( "factory_bkr_targetsahead" );
|
|
|
|
common_scripts\utility::flag_wait( "factory_entrance_reveal" );
|
|
common_scripts\utility::flag_wait_any( "all_allies_at_entrance", "intro_truck_driver_dead", "player_scene_interrupt" );
|
|
|
|
if ( !common_scripts\utility::flag( "intro_truck_driver_dead" ) && !common_scripts\utility::flag( "truck_kill_timed_out" ) )
|
|
{
|
|
thread maps\_utility::smart_radio_dialogue( "factory_bkr_getatarget" );
|
|
thread factory_entrance_nag_line();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait_any( "intro_truck_driver_dead", "truck_kill_timed_out", "player_scene_interrupt" );
|
|
|
|
if ( common_scripts\utility::flag( "truck_kill_timed_out" ) )
|
|
{
|
|
level.squad["ALLY_ALPHA"] maps\_utility::smart_dialogue( "factory_bkr_dropem" );
|
|
level.squad["ALLY_ALPHA"] thread maps\_utility::smart_dialogue( "factory_mrk_donthaveallday" );
|
|
wait 1.5;
|
|
}
|
|
|
|
if ( common_scripts\utility::flag( "player_scene_interrupt" ) )
|
|
{
|
|
level notify( "stealth_broken" );
|
|
maps\_utility::smart_radio_dialogue( "factory_mrk_adamwhatreyoudoing" );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "truck_kills_done" );
|
|
level.squad["ALLY_ALPHA"] thread maps\_utility::smart_dialogue( "factory_mrk_allclearheshgrab" );
|
|
wait 3;
|
|
level.squad["ALLY_BRAVO"] thread maps\_utility::smart_dialogue( "factory_kgn_coverleft" );
|
|
common_scripts\utility::flag_wait( "start_search" );
|
|
level.squad["ALLY_CHARLIE"] thread maps\_utility::smart_dialogue( "factory_hsh_grabbinghissecuritybadge" );
|
|
wait 4.5;
|
|
level.squad["ALLY_ALPHA"] thread maps\_utility::smart_dialogue( "factory_mrk_onthedoor" );
|
|
common_scripts\utility::flag_wait( "card_swiped" );
|
|
maps\_utility::smart_radio_dialogue( "factory_rgs_opening" );
|
|
common_scripts\utility::flag_wait( "outer_perim_cleared" );
|
|
}
|
|
|
|
factory_entrance_nag_line()
|
|
{
|
|
level endon( "intro_truck_driver_dead" );
|
|
level endon( "player_scene_interrupt" );
|
|
level endon( "truck_kill_timed_out" );
|
|
wait 7;
|
|
thread maps\_utility::smart_radio_dialogue( "factory_bkr_taketheshot" );
|
|
}
|
|
|
|
train_cleanup()
|
|
{
|
|
var_0 = getentarray( "fac_intro_trains", "script_noteworthy" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( isdefined( var_2 ) )
|
|
var_2 delete();
|
|
}
|
|
}
|
|
|
|
set_flag_on_player_action( var_0, var_1, var_2 )
|
|
{
|
|
level notify( "kill_action_flag" );
|
|
level endon( "kill_action_flag" );
|
|
level endon( var_0 );
|
|
|
|
if ( common_scripts\utility::flag( var_0 ) )
|
|
return;
|
|
|
|
for (;;)
|
|
{
|
|
var_3 = level.player common_scripts\utility::waittill_any_return( "weapon_fired", "fraggrenade", "flash_grenade", "smoke_grenade_american" );
|
|
|
|
if ( !isdefined( var_3 ) )
|
|
break;
|
|
|
|
if ( var_3 == "weapon_fired" )
|
|
break;
|
|
|
|
if ( var_3 == "fraggrenade" && isdefined( var_2 ) )
|
|
break;
|
|
|
|
if ( var_3 == "flash_grenade" && isdefined( var_1 ) )
|
|
break;
|
|
}
|
|
|
|
common_scripts\utility::flag_set( var_0 );
|
|
}
|