2054 lines
71 KiB
Plaintext
2054 lines
71 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
section_main()
|
|
{
|
|
|
|
}
|
|
|
|
section_precache()
|
|
{
|
|
precacherumble( "damage_light" );
|
|
precacherumble( "light_2s" );
|
|
precacherumble( "chopper_ride_rumble" );
|
|
precachestring( &"FLOOD_TANKS_FAIL" );
|
|
precachestring( &"FLOOD_FAIL_VEHICLE_CRUSH" );
|
|
}
|
|
|
|
section_flag_inits()
|
|
{
|
|
common_scripts\utility::flag_init( "infil_done" );
|
|
common_scripts\utility::flag_init( "enemy_tank_killed" );
|
|
common_scripts\utility::flag_init( "allies_run_for_garage" );
|
|
common_scripts\utility::flag_init( "allies_in_position" );
|
|
common_scripts\utility::flag_init( "allied_tank_killed" );
|
|
}
|
|
|
|
infil_start()
|
|
{
|
|
maps\flood_util::player_move_to_checkpoint_start( "streets_start" );
|
|
level.player freezecontrols( 1 );
|
|
level.player allowprone( 0 );
|
|
level.player allowcrouch( 0 );
|
|
level.player disableweapons();
|
|
maps\flood_util::spawn_allies();
|
|
maps\_utility::vision_set_changes( "flood_infil", 0 );
|
|
level.allies[0] maps\_utility::forceuseweapon( "r5rgp", "primary" );
|
|
level.allies[1] maps\_utility::forceuseweapon( "r5rgp+reflex_sp", "primary" );
|
|
level.allies[2] maps\_utility::forceuseweapon( "r5rgp+acog_sp", "primary" );
|
|
}
|
|
|
|
infil()
|
|
{
|
|
level.player disableweapons();
|
|
level.player enableinvulnerability();
|
|
maps\_utility::music_play( "mus_flood_infil_ss" );
|
|
level.player setclienttriggeraudiozone( "flood_infil", 0.1 );
|
|
common_scripts\utility::flag_wait( "start_intro_sequence" );
|
|
thread maps\flood_audio::narration_flood_infil();
|
|
thread maps\flood_audio::sfx_heli_infil();
|
|
common_scripts\utility::flag_wait( "intro_show_introtext" );
|
|
level.vtclassname = "script_vehicle_silenthawk_flood_player";
|
|
maps\_vehicle::build_aianims( ::setanims_flood_infil, vehicle_scripts\silenthawk::set_vehicle_anims );
|
|
level.infil_global_offset = 0;
|
|
level thread infil_flyin_player();
|
|
level thread infil_flyin_allies();
|
|
level thread setup_initial_ai();
|
|
level thread setup_dead_destroyed_and_misc();
|
|
level thread allies_first_advance();
|
|
level maps\_utility::delaythread( level.infil_global_offset + 0.0, ::infil_sidestreet );
|
|
level maps\_utility::delaythread( level.infil_global_offset + 0.0, ::rpg_guy_shoot_flyin_choopers );
|
|
level maps\_utility::delaythread( level.infil_global_offset + 0.5, ::tank_battle );
|
|
thread maps\flood_fx::fx_infil_heli_smoke();
|
|
setsaveddvar( "sm_sunSampleSizeNear", 0.6 );
|
|
level waittill( "infil_done" );
|
|
level.player disableinvulnerability();
|
|
maps\flood::streets();
|
|
}
|
|
|
|
health_debug()
|
|
{
|
|
for (;;)
|
|
{
|
|
iprintln( level.player.health );
|
|
common_scripts\utility::waitframe();
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
infil_flyin_player()
|
|
{
|
|
setsaveddvar( "compass", 0 );
|
|
setsaveddvar( "ammoCounterHide", 1 );
|
|
setsaveddvar( "actionSlotsHide", 1 );
|
|
setsaveddvar( "hud_showStance", 0 );
|
|
level.player freezecontrols( 1 );
|
|
level.player allowprone( 0 );
|
|
level.player allowcrouch( 0 );
|
|
level.player disableweapons();
|
|
var_0 = getent( "player_heli_infil_clip", "targetname" );
|
|
var_0 hide();
|
|
var_0 notsolid();
|
|
level.player screenshakeonentity( 0.5, 0.5, 0.5, 21, 0, 3, 0, 2.35, 0.75, 0.75 );
|
|
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "infil_player_chopper_new" );
|
|
level.infil_heli_player = var_1;
|
|
var_1 maps\_vehicle::godon();
|
|
var_1 vehicle_turnengineoff();
|
|
var_1 setmaxpitchroll( 20, 10 );
|
|
var_1 vehicle_setspeedimmediate( 50, 999 );
|
|
var_1 maps\_utility::delaythread( 0.5, maps\_vehicle::vehicle_lights_off, "interior" );
|
|
level thread infil_vo( var_1 );
|
|
var_1 thread infil_silenthawk_landing_gear( 7 );
|
|
level.allies[0].script_startingposition = 2;
|
|
var_1 maps\_utility::guy_enter_vehicle( level.allies[0] );
|
|
level.allies[1].script_startingposition = 3;
|
|
var_1 maps\_utility::guy_enter_vehicle( level.allies[1] );
|
|
level.allies[2].script_startingposition = 6;
|
|
var_1 maps\_utility::guy_enter_vehicle( level.allies[2] );
|
|
var_1.player_link_ent = common_scripts\utility::spawn_tag_origin();
|
|
var_1.player_link_ent linkto( var_1, "tag_player", ( 20, 6, 0 ), ( 0, -66, 0 ) );
|
|
level.player playerlinktodelta( var_1.player_link_ent, "tag_player", 1, 0, 0, 0, 0, 1 );
|
|
level.player common_scripts\utility::delaycall( 0.15, ::playerlinktodelta, var_1.player_link_ent, "tag_player", 1, 25, 25, 20, 20, 1 );
|
|
var_1 thread infil_flyin_player_unload_gt();
|
|
var_2 = common_scripts\utility::getstruct( "player_chopper_lz", "targetname" );
|
|
var_2 waittill( "trigger" );
|
|
thread maps\flood_audio::sfx_infil_heli_flyaway( var_1 );
|
|
wait 2.25;
|
|
thread landing_vo();
|
|
wait 0.5;
|
|
level.player enableweapons();
|
|
level notify( "player_unloading" );
|
|
level.player maps\_utility::lerp_player_view_to_position_oldstyle( ( 2380, -11463, -30 ), ( 0, 45, 0 ), 1 );
|
|
setsaveddvar( "compass", 1 );
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
setsaveddvar( "actionSlotsHide", 0 );
|
|
setsaveddvar( "hud_showStance", 1 );
|
|
level.player unlink();
|
|
var_1.player_link_ent delete();
|
|
level.player freezecontrols( 0 );
|
|
level.player allowprone( 1 );
|
|
level.player allowcrouch( 1 );
|
|
var_0 show();
|
|
var_0 solid();
|
|
wait 0.35;
|
|
common_scripts\utility::flag_set( "infil_done" );
|
|
level thread maps\flood_util::flood_battlechatter_on( 1 );
|
|
level.player.ignoreme = 1;
|
|
wait 1.0;
|
|
var_0 delete();
|
|
wait 2.0;
|
|
level.player.ignoreme = 0;
|
|
}
|
|
|
|
landing_vo()
|
|
{
|
|
level.allies[0] maps\_utility::smart_dialogue( "flood_pri_moveout" );
|
|
level maps\_utility::smart_radio_dialogue( "flood_gp1_ondeck" );
|
|
level maps\_utility::smart_radio_dialogue( "flood_hqr_helix47" );
|
|
level.allies[0] maps\_utility::smart_dialogue( "flood_pri_overlordpatchmeinto" );
|
|
level.player playsound( "flood_hqr_roger" );
|
|
}
|
|
|
|
player_ride_rumble()
|
|
{
|
|
level.player playrumblelooponentity( "chopper_ride_rumble" );
|
|
level waittill( "player_unloading" );
|
|
level.player stoprumble( "chopper_ride_rumble" );
|
|
var_0 = level.infil_heli_player maps\flood_util::create_rumble_ent( 700, undefined, 10 );
|
|
var_0 playrumblelooponentity( "steady_rumble" );
|
|
}
|
|
|
|
#using_animtree("generic_human");
|
|
|
|
setanims_flood_infil()
|
|
{
|
|
var_0 = vehicle_scripts\silenthawk::setanims();
|
|
var_0[2].idle_alert = %flood_infil_ally1_loop;
|
|
var_0[2].getout = %flood_infil_ally1_jumpout;
|
|
var_0[3].idle_alert = %flood_infil_ally2_loop;
|
|
var_0[3].getout = %flood_infil_ally2_jumpout;
|
|
return var_0;
|
|
}
|
|
|
|
infil_silenthawk_landing_gear( var_0 )
|
|
{
|
|
self notify( "gear_up" );
|
|
wait( var_0 );
|
|
self notify( "gear_down" );
|
|
}
|
|
|
|
infil_vo( var_0 )
|
|
{
|
|
var_0 maps\_utility::delaythread( 0.0, maps\_anim::anim_single_solo, level.allies[0], "infil_vo", "tag_detach_right" );
|
|
level maps\_utility::smart_radio_dialogue( "flood_hqr_bythetime" );
|
|
level maps\_utility::smart_radio_dialogue( "flood_gp2_copythat" );
|
|
level maps\_utility::smart_radio_dialogue( "flood_hlx_overlordbeadvisedhelix" );
|
|
var_0 notify( "stop_infil_loop" );
|
|
level.allies[0] notify( "stop_infil_loop" );
|
|
level maps\_utility::smart_radio_dialogue( "flood_hqr_rogerthatfourseven" );
|
|
}
|
|
|
|
infil_flyin_player_unload_gt()
|
|
{
|
|
var_0 = getnode( "streets_leader_start_node", "targetname" );
|
|
var_1 = getnode( "streets_ally_1_start_node", "targetname" );
|
|
var_2 = getnode( "streets_ally_2_start_node", "targetname" );
|
|
level.allies[0] thread gt_get_to_cover_after_landing( self, var_0 );
|
|
level.allies[1] thread gt_get_to_cover_after_landing( self, var_1 );
|
|
level.allies[2] thread gt_get_to_cover_after_landing( self, var_2 );
|
|
}
|
|
|
|
gt_get_to_cover_after_landing( var_0, var_1, var_2 )
|
|
{
|
|
self setgoalnode( var_1 );
|
|
var_3 = self.goalradius;
|
|
self.goalradius = 16;
|
|
self.ignoreall = 1;
|
|
self.ignoreme = 1;
|
|
self.grenadeawareness = 0;
|
|
self.ignoreexplosionevents = 1;
|
|
self.ignorerandombulletdamage = 1;
|
|
self.ignoresuppression = 1;
|
|
self.disablebulletwhizbyreaction = 1;
|
|
maps\_utility::disable_pain();
|
|
|
|
if ( self.animname == "ally_0" )
|
|
{
|
|
self.run_overrideanim = maps\_utility::getanim( "price_exit_chopper_wave" );
|
|
thread revert_runoverrideanim();
|
|
}
|
|
|
|
var_0 waittill( "unloaded" );
|
|
level thread maps\_utility::vision_set_changes( "flood", 3 );
|
|
self unlink();
|
|
self waittill( "goal" );
|
|
self.goalradius = var_3;
|
|
self.ignoreall = 0;
|
|
self.ignoreme = 0;
|
|
self.grenadeawareness = 1;
|
|
self.ignoreexplosionevents = 0;
|
|
self.ignorerandombulletdamage = 0;
|
|
self.ignoresuppression = 0;
|
|
self.disablebulletwhizbyreaction = 0;
|
|
maps\_utility::enable_pain();
|
|
}
|
|
|
|
revert_runoverrideanim()
|
|
{
|
|
self endon( "death" );
|
|
|
|
while ( self getanimtime( maps\_utility::getanim( "price_exit_chopper_wave" ) ) < 0.5 )
|
|
common_scripts\utility::waitframe();
|
|
|
|
while ( self getanimtime( maps\_utility::getanim( "price_exit_chopper_wave" ) ) > 0.45 )
|
|
common_scripts\utility::waitframe();
|
|
|
|
self.run_overrideanim = undefined;
|
|
self.prevmovemode = "none";
|
|
self notify( "move_loop_restart" );
|
|
}
|
|
|
|
infil_flyin_allies()
|
|
{
|
|
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "infil_ally_chopper_new" );
|
|
level.infil_heli_ally = var_0;
|
|
var_0 maps\_vehicle::godon();
|
|
var_0 vehicle_turnengineoff();
|
|
var_0 setmaxpitchroll( 20, 60 );
|
|
var_0 vehicle_setspeedimmediate( 60, 999 );
|
|
var_0 thread infil_silenthawk_landing_gear( 7 );
|
|
var_1 = getnode( "infil_redshirt_death", "targetname" );
|
|
var_2 = var_0 maps\_vehicle::vehicle_get_riders_by_group( "passengers" );
|
|
var_0 waittill( "unloaded" );
|
|
|
|
foreach ( var_4 in var_2 )
|
|
var_4 thread chopper02_ally( var_1.origin );
|
|
}
|
|
|
|
vignette_old_choppers_for_test()
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "vignette_infil_old", "script_noteworthy" );
|
|
var_1 = maps\_vignette_util::vignette_vehicle_spawn( "infil_heli_player", "infil_heli_player" );
|
|
var_2 = maps\_vignette_util::vignette_vehicle_spawn( "infil_heli_ally", "infil_heli_ally" );
|
|
var_3 = [];
|
|
var_3["infil_heli_player"] = var_1;
|
|
var_3["infil_heli_ally"] = var_2;
|
|
var_0 thread maps\_anim::anim_single( var_3, "infil" );
|
|
}
|
|
|
|
infil_flyin_old()
|
|
{
|
|
var_0 = maps\_vignette_util::vignette_vehicle_spawn( "infil_heli_player", "infil_heli_player" );
|
|
level.infil_heli_player = var_0;
|
|
level.infil_heli_player maps\_vehicle::godon();
|
|
var_1 = maps\_vignette_util::vignette_vehicle_spawn( "infil_heli_ally", "infil_heli_ally" );
|
|
level.infil_heli_ally = var_1;
|
|
level.infil_heli_ally maps\_vehicle::godon();
|
|
var_2 = maps\_vignette_util::vignette_actor_spawn( "heli_01_copilot", "heli_01_copilot" );
|
|
var_3 = maps\_vignette_util::vignette_actor_spawn( "heli_02_ally_01", "heli_02_ally_01" );
|
|
var_4 = maps\_vignette_util::vignette_actor_spawn( "heli_02_ally_02", "heli_02_ally_02" );
|
|
var_5 = maps\_vignette_util::vignette_actor_spawn( "heli_02_ally_03", "heli_02_ally_03" );
|
|
var_6 = maps\_vignette_util::vignette_actor_spawn( "heli_02_ally_04", "heli_02_ally_04" );
|
|
var_0 vehicle_turnengineoff();
|
|
var_1 vehicle_turnengineoff();
|
|
thread maps\flood_audio::sfx_heli_infil();
|
|
maps\_utility::delaythread( level.infil_global_offset + 9, maps\flood_fx::fx_heli_land );
|
|
var_7 = common_scripts\utility::getstruct( "vignette_infil_old", "script_noteworthy" );
|
|
setsaveddvar( "compass", 0 );
|
|
setsaveddvar( "ammoCounterHide", 1 );
|
|
setsaveddvar( "actionSlotsHide", 1 );
|
|
setsaveddvar( "hud_showStance", 0 );
|
|
level.player freezecontrols( 1 );
|
|
level.player allowprone( 0 );
|
|
level.player allowcrouch( 0 );
|
|
level.player disableweapons();
|
|
infil_vignette_remove_weapon( var_2 );
|
|
var_8 = [];
|
|
var_8["infil_heli_player"] = var_0;
|
|
var_8["infil_heli_ally"] = var_1;
|
|
var_9 = maps\_utility::spawn_anim_model( "player_rig" );
|
|
var_9 hide();
|
|
var_9 linkto( var_0, "tag_player", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
level.player playerlinktodelta( var_9, "tag_player", 1, 65, 65, 15, 15, 1 );
|
|
level.allies[0] linkto( var_0, "tag_player", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
level.allies[1] linkto( var_0, "tag_player", ( 40, 300, 0 ), ( 0, 0, 0 ) );
|
|
level.allies[2] linkto( var_0, "tag_player", ( 40, 200, 0 ), ( 0, 0, 0 ) );
|
|
var_10 = [];
|
|
var_10["heli_01_copilot"] = var_2;
|
|
var_11 = [];
|
|
var_11["player_rig"] = var_9;
|
|
var_11["ally_0"] = level.allies[0];
|
|
var_12 = [];
|
|
var_12["heli_02_ally_01"] = var_3;
|
|
var_12["heli_02_ally_02"] = var_4;
|
|
var_12["heli_02_ally_03"] = var_5;
|
|
var_12["heli_02_ally_04"] = var_6;
|
|
|
|
foreach ( var_14 in var_10 )
|
|
var_14 linkto( var_0, "tag_player", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
|
|
foreach ( var_14 in var_12 )
|
|
var_14 linkto( var_1, "tag_player", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
|
|
var_7 thread maps\_anim::anim_single( var_8, "infil" );
|
|
var_7 thread maps\_anim::anim_single( var_10, "infil" );
|
|
var_7 thread maps\_anim::anim_single( var_12, "infil" );
|
|
maps\_utility::delaythread( level.infil_global_offset + 0, ::helo_01_palyer_and_price, var_7, var_11, var_9 );
|
|
maps\_utility::delaythread( level.infil_global_offset + 13, ::helo_01_others );
|
|
|
|
foreach ( var_14 in var_12 )
|
|
var_14 maps\_utility::delaythread( level.infil_global_offset + 4.6, ::helo_02_dismount, var_7 );
|
|
|
|
wait( getanimlength( var_0 maps\_utility::getanim( "infil" ) ) );
|
|
var_0 maps\_vignette_util::vignette_vehicle_delete();
|
|
var_1 maps\_vignette_util::vignette_vehicle_delete();
|
|
var_2 maps\_vignette_util::vignette_actor_delete();
|
|
}
|
|
|
|
infil_vignette_remove_weapon( var_0 )
|
|
{
|
|
if ( isdefined( var_0.weapon ) )
|
|
var_0 maps\_utility::gun_remove();
|
|
}
|
|
|
|
helo_01_palyer_and_price( var_0, var_1, var_2 )
|
|
{
|
|
var_0 maps\_anim::anim_single( var_1, "infil" );
|
|
level.player unlink();
|
|
var_2 delete();
|
|
level.player freezecontrols( 0 );
|
|
level.player allowprone( 1 );
|
|
level.player allowcrouch( 1 );
|
|
level.player enableweapons();
|
|
setsaveddvar( "compass", 1 );
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
setsaveddvar( "actionSlotsHide", 0 );
|
|
setsaveddvar( "hud_showStance", 1 );
|
|
var_3 = getnode( "streets_leader_start_node", "targetname" );
|
|
level.allies[0] unlink();
|
|
level.allies[0] setgoalnode( var_3 );
|
|
level.allies[0].ignoresuppression = 1;
|
|
level.allies[0].disablebulletwhizbyreaction = 1;
|
|
common_scripts\utility::flag_set( "infil_done" );
|
|
}
|
|
|
|
helo_01_others()
|
|
{
|
|
var_0 = getnode( "streets_ally_1_start_node", "targetname" );
|
|
var_1 = getnode( "streets_ally_2_start_node", "targetname" );
|
|
level.allies[1] unlink();
|
|
level.allies[1] setgoalnode( var_0 );
|
|
level.allies[1].ignoresuppression = 1;
|
|
level.allies[1].disablebulletwhizbyreaction = 1;
|
|
level.allies[2] unlink();
|
|
level.allies[2] setgoalnode( var_1 );
|
|
level.allies[2].ignoresuppression = 1;
|
|
level.allies[2].disablebulletwhizbyreaction = 1;
|
|
}
|
|
|
|
helo_02_dismount( var_0 )
|
|
{
|
|
self unlink();
|
|
var_0 maps\_anim::anim_single_solo( self, "infil_dismount" );
|
|
var_1 = getnode( "infil_redshirt_death", "targetname" );
|
|
self.goalradius = 8;
|
|
self setgoalnode( var_1 );
|
|
self waittill( "goal" );
|
|
maps\_vignette_util::vignette_actor_delete();
|
|
}
|
|
|
|
chopper02_ally( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self.ignoreall = 1;
|
|
self.ignoreme = 1;
|
|
self.goalradius = 8;
|
|
wait( randomfloatrange( 0.5, 0.7 ) );
|
|
self setgoalpos( var_0 );
|
|
self waittill( "goal" );
|
|
maps\_vignette_util::vignette_actor_delete();
|
|
}
|
|
|
|
unlink_ally_from_heli( var_0 )
|
|
{
|
|
var_0 unlink();
|
|
}
|
|
|
|
swap_hi_res_dam( var_0 )
|
|
{
|
|
var_1 = getent( "flood_dam", "targetname" );
|
|
var_1 hide();
|
|
wait( var_0 );
|
|
var_1 = getent( "flood_dam", "targetname" );
|
|
var_1 show();
|
|
}
|
|
|
|
setup_dead_destroyed_and_misc()
|
|
{
|
|
level endon( "player_on_ladder" );
|
|
var_0 = getentarray( "infil_start_destroyed", "targetname" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
var_3 = maps\_vehicle::vehicle_spawn( var_2 );
|
|
var_3 kill();
|
|
}
|
|
|
|
var_0 = getentarray( "infil_start_destroyed_lynx", "targetname" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
var_2 kill();
|
|
|
|
var_7 = maps\_vehicle::spawn_vehicle_from_targetname( "tanks_burning_man7t" );
|
|
var_7 maps\_vehicle::godon();
|
|
|
|
while ( !isdefined( level.tank_ally_joel ) )
|
|
common_scripts\utility::waitframe();
|
|
|
|
var_8 = common_scripts\utility::getstruct( "vignette_street_stop_sign_01", "script_noteworthy" );
|
|
var_8 thread crush_stop_sign_when_near_tank( 165 );
|
|
}
|
|
|
|
create_dead_guys()
|
|
{
|
|
var_0 = 10;
|
|
var_1 = 8;
|
|
var_2 = getent( "dead_guy_ally", "targetname" );
|
|
var_3 = getnodearray( "infil_dead_ally_node", "targetname" );
|
|
|
|
for ( var_4 = 0; var_4 < var_0; var_4++ )
|
|
{
|
|
var_5 = var_3[randomint( var_3.size )];
|
|
var_3 = common_scripts\utility::array_remove( var_3, var_5 );
|
|
var_2 maps\_utility::add_spawn_function( ::dead_guy_spawn_func );
|
|
var_6 = var_2 maps\_utility::spawn_ai();
|
|
var_6 forceteleport( var_5.origin, ( 0, 0, randomfloat( 300 ) ) );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
dead_guy_spawn_func( var_0 )
|
|
{
|
|
self.allowdeath = 1;
|
|
self.diequietly = 1;
|
|
self kill();
|
|
}
|
|
|
|
setup_initial_ai()
|
|
{
|
|
var_0 = getentarray( "street_start_allies", "targetname" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
var_2 maps\_utility::add_spawn_function( ::infil_redshirts_spawn_func );
|
|
var_2 maps\_utility::delaythread( level.infil_global_offset + 0, maps\_utility::spawn_ai );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "flood_intro_tr_loaded" );
|
|
var_4 = maps\_utility::spawn_anim_model( "lynx_smash" );
|
|
var_4.script_noteworthy = "tanks_cleanup";
|
|
level.lynx_smash_array = [];
|
|
level.lynx_smash_array["lynx_smash"] = var_4;
|
|
var_5 = getent( "lynx_smash_node", "targetname" );
|
|
var_5 thread maps\_anim::anim_first_frame( level.lynx_smash_array, "lynx_smash" );
|
|
var_6 = maps\_utility::spawn_anim_model( "flood_tank_battle_barrier_01" );
|
|
var_6.script_noteworthy = "tanks_cleanup";
|
|
var_7 = maps\_utility::spawn_anim_model( "flood_tank_battle_barrier_02" );
|
|
var_7.script_noteworthy = "tanks_cleanup";
|
|
var_8 = maps\_utility::spawn_anim_model( "flood_tank_battle_window_frame" );
|
|
var_8.script_noteworthy = "tanks_cleanup";
|
|
var_9 = maps\_utility::spawn_anim_model( "flood_tank_battle_tankdebris" );
|
|
var_9.script_noteworthy = "tanks_cleanup";
|
|
level.tank_window_array = [];
|
|
level.tank_window_array["flood_tank_battle_barrier_01"] = var_6;
|
|
level.tank_window_array["flood_tank_battle_barrier_02"] = var_7;
|
|
level.tank_window_array["flood_tank_battle_window_frame"] = var_8;
|
|
level.tank_window_array["flood_tank_battle_tankdebris"] = var_9;
|
|
var_5 = getent( "tank_window_node", "targetname" );
|
|
var_5 thread maps\_anim::anim_first_frame( level.tank_window_array, "tank_window" );
|
|
}
|
|
|
|
enemy_tank_shoot_flyin_choopers()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "end flyin script" );
|
|
self setmode( "manual" );
|
|
|
|
while ( !common_scripts\utility::flag( "infil_done" ) )
|
|
{
|
|
self startfiring();
|
|
self settargetentity( level.infil_heli_player, ( 0, 180, 80 ) );
|
|
wait 1;
|
|
self setmode( "manual" );
|
|
self stopfiring();
|
|
self stopbarrelspin();
|
|
wait( randomfloatrange( 0.5, 1 ) );
|
|
self settargetentity( level.infil_heli_ally, ( 0, 0, -80 ) );
|
|
self startfiring();
|
|
wait 1;
|
|
self setmode( "manual" );
|
|
self stopfiring();
|
|
self stopbarrelspin();
|
|
wait( randomfloatrange( 0.5, 1 ) );
|
|
}
|
|
|
|
self stopfiring();
|
|
self stopbarrelspin();
|
|
self cleartargetentity();
|
|
self turretfiredisable();
|
|
}
|
|
|
|
allies_first_advance()
|
|
{
|
|
common_scripts\utility::flag_wait_all( "enemy_tank_killed", "allies_first_advance" );
|
|
maps\_utility::activate_trigger( "allies_first_advance", "targetname" );
|
|
}
|
|
|
|
infil_sidestreet()
|
|
{
|
|
var_0 = common_scripts\utility::getstructarray( "infil_sidestreet_bullet_array", "targetname" );
|
|
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "infil_heli_flyby01" );
|
|
var_1 thread create_passengers();
|
|
var_1 vehicle_setspeedimmediate( 60, 999 );
|
|
var_1 maps\_vehicle::godon();
|
|
var_1 vehicle_turnengineoff();
|
|
var_2 = common_scripts\utility::getstruct( "infil_chopper_crash01", "targetname" );
|
|
var_1.perferred_crash_location = var_2;
|
|
level maps\_utility::delaythread( 3.2, ::kill_intro_chopper, var_1, var_1.riders );
|
|
var_1 thread spawn_fx_at_hit_pos();
|
|
magicbullet( "rpg_straight", var_0[0].origin, ( 8877.4, -9400, 1890 ) );
|
|
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "infil_heli_flyby02" );
|
|
var_1 vehicle_setspeedimmediate( 60, 999 );
|
|
var_1 maps\_vehicle::godon();
|
|
var_1 vehicle_turnengineoff();
|
|
common_scripts\utility::noself_delaycall( 1.5, ::magicbullet, "rpg_straight", var_0[1].origin, var_1.origin + ( 0, 0, 100 ) );
|
|
var_1 = maps\_vehicle::spawn_vehicle_from_targetname( "infil_heli_flyby03" );
|
|
var_1 vehicle_turnengineoff();
|
|
var_1 maps\_utility::delaythread( 3, maps\_vehicle::gopath );
|
|
common_scripts\utility::noself_delaycall( 5, ::magicbullet, "rpg_straight", var_0[0].origin, var_1.origin + ( 0, 0, 600 ) );
|
|
var_3 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "infil_flyin_jet" );
|
|
|
|
foreach ( var_5 in var_3 )
|
|
var_5 maps\_vehicle::godon();
|
|
|
|
var_1 = maps\_utility::delaythread( 12, maps\_vehicle::spawn_vehicles_from_targetname_and_drive, "tanks_landing_chopper_flyby" );
|
|
}
|
|
|
|
spawn_fx_at_hit_pos()
|
|
{
|
|
self waittill( "damage", var_0, var_1, var_2, var_3, var_4, var_5, var_6 );
|
|
playfx( common_scripts\utility::getfx( "vfx_nh90_impact_smoke" ), var_3 );
|
|
}
|
|
|
|
get_origin_for_rpg()
|
|
{
|
|
maps\flood_util::jkuprint( self.origin );
|
|
}
|
|
|
|
create_passengers()
|
|
{
|
|
var_0 = getent( "infil_chooper_rider1", "targetname" );
|
|
var_1 = getent( "infil_chooper_rider2", "targetname" );
|
|
var_2 = getent( "infil_chooper_rider3", "targetname" );
|
|
var_3 = getent( "infil_chooper_rider4", "targetname" );
|
|
var_4 = var_0 maps\_utility::spawn_ai();
|
|
var_4.script_noteworthy = "tanks_cleanup";
|
|
var_5 = common_scripts\utility::spawn_tag_origin();
|
|
var_5.script_noteworthy = "tanks_cleanup";
|
|
var_5.origin = self gettagorigin( "tag_detach_left" );
|
|
var_5.angles = self gettagangles( "tag_detach_left" );
|
|
var_5 linkto( self, "tag_detach_left" );
|
|
var_5 thread maps\_anim::anim_generic_loop( var_4, "heli_idle1" );
|
|
var_4 teleport( var_5.origin, var_5.angles );
|
|
var_4 linkto( self );
|
|
var_6 = var_1 maps\_utility::spawn_ai();
|
|
var_6.script_noteworthy = "tanks_cleanup";
|
|
var_7 = common_scripts\utility::spawn_tag_origin();
|
|
var_7.script_noteworthy = "tanks_cleanup";
|
|
var_7.origin = self gettagorigin( "tag_detach_left" );
|
|
var_7.angles = self gettagangles( "tag_detach_left" );
|
|
var_7 linkto( self );
|
|
var_7 thread maps\_anim::anim_generic_loop( var_6, "heli_idle2" );
|
|
var_6 teleport( var_7.origin, var_7.angles );
|
|
var_6 linkto( self );
|
|
var_8 = var_2 maps\_utility::spawn_ai();
|
|
var_8.script_noteworthy = "tanks_cleanup";
|
|
var_9 = common_scripts\utility::spawn_tag_origin();
|
|
var_9.script_noteworthy = "tanks_cleanup";
|
|
var_9.origin = self gettagorigin( "tag_detach_right" );
|
|
var_9.angles = self gettagangles( "tag_detach_right" );
|
|
var_9 linkto( self );
|
|
var_9 thread maps\_anim::anim_generic_loop( var_8, "heli_idle1" );
|
|
var_8 teleport( var_9.origin, var_9.angles );
|
|
var_8 linkto( self );
|
|
var_10 = var_3 maps\_utility::spawn_ai();
|
|
var_10.script_noteworthy = "tanks_cleanup";
|
|
var_11 = common_scripts\utility::spawn_tag_origin();
|
|
var_11.script_noteworthy = "tanks_cleanup";
|
|
var_11.origin = self gettagorigin( "tag_detach_right" );
|
|
var_11.angles = self gettagangles( "tag_detach_right" );
|
|
var_11 linkto( self );
|
|
var_11 thread maps\_anim::anim_generic_loop( var_10, "heli_idle2" );
|
|
var_10 teleport( var_11.origin, var_11.angles );
|
|
var_10 linkto( self );
|
|
var_12 = [];
|
|
var_12[var_12.size] = var_4;
|
|
var_12[var_12.size] = var_6;
|
|
var_12[var_12.size] = var_8;
|
|
var_12[var_12.size] = var_10;
|
|
self.infil_passengers = var_12;
|
|
}
|
|
|
|
kill_intro_chopper( var_0, var_1 )
|
|
{
|
|
common_scripts\utility::noself_delaycall( 0.25, ::playrumbleonposition, "grenade_rumble", level.player.origin + ( 0, 0, 200 ) );
|
|
var_0 kill();
|
|
|
|
foreach ( var_3 in var_0.infil_passengers )
|
|
{
|
|
var_3 unlink();
|
|
var_3 stopanimscripted();
|
|
var_3 kill();
|
|
var_3 startragdollfromimpact( "torso_upper", anglestoforward( var_3.angles ) * 3000 );
|
|
wait( randomfloatrange( 0.25, 0.85 ) );
|
|
}
|
|
}
|
|
|
|
tank_damage_player( var_0, var_1 )
|
|
{
|
|
self endon( "death" );
|
|
|
|
if ( isdefined( var_1 ) )
|
|
var_2 = spawn( "trigger_radius", self.origin, 0, 90, 90 );
|
|
else
|
|
var_2 = spawn( "trigger_radius", self.origin + 130 * anglestoforward( self.angles ), 0, 70, 70 );
|
|
|
|
var_2 enablelinkto();
|
|
var_2 linkto( self );
|
|
|
|
while ( isdefined( var_2 ) )
|
|
{
|
|
var_2 waittill( "trigger" );
|
|
|
|
if ( level.player.health <= 34 )
|
|
var_3 = 999;
|
|
else
|
|
var_3 = level.player.health / level.player.damagemultiplier * 0.34;
|
|
|
|
while ( level.player istouching( var_2 ) && isalive( level.player ) )
|
|
{
|
|
if ( isdefined( var_0 ) )
|
|
level.player dodamage( var_0, level.player.origin );
|
|
else
|
|
level.player dodamage( var_3, level.player.origin );
|
|
|
|
level.player playrumbleonentity( "damage_light" );
|
|
wait 0.1;
|
|
}
|
|
|
|
if ( !isalive( level.player ) )
|
|
{
|
|
setdvar( "ui_deadquote", &"FLOOD_FAIL_VEHICLE_CRUSH" );
|
|
self stopanimscripted();
|
|
|
|
foreach ( var_5 in level.lynx_smash_array )
|
|
var_5 stopanimscripted();
|
|
}
|
|
}
|
|
}
|
|
|
|
#using_animtree("vehicles");
|
|
|
|
tank_battle()
|
|
{
|
|
maps\_utility::delaythread( level.infil_global_offset + 5.5, ::tank_wall_stuff );
|
|
level.tank_ally_joel = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "infil_tank_ally_joel" );
|
|
level.tank_ally_joel maps\_vehicle::godon();
|
|
level.tank_ally_joel maps\_utility::delaythread( 0.25, maps\_vehicle::mgoff );
|
|
level.tank_ally_joel vehicle_setspeed( 12, 6 );
|
|
var_0 = getent( "infil_tank_ally_pease", "targetname" );
|
|
var_1 = var_0 maps\_vehicle::spawn_vehicle_and_gopath();
|
|
var_1 vehicle_setspeed( 12, 12 );
|
|
var_1 maps\_vehicle::godon();
|
|
var_2 = maps\_vehicle::spawn_vehicle_from_targetname( "enemy_tank_infil_destroyed" );
|
|
var_2 maps\_vehicle::godon();
|
|
var_2 maps\_vehicle::mgoff();
|
|
var_2.mgturret[1] thread enemy_tank_shoot_flyin_choopers();
|
|
wait 0.5;
|
|
var_2 thread fire_cannon_at_target( var_1, 1, ( 0, 220, -12 ) );
|
|
wait 1.5;
|
|
var_1 thread fire_cannon_at_target( var_2, 1, ( 0, -200, 10 ) );
|
|
maps\_utility::delaythread( 0.75, common_scripts\utility::exploder, "tank_debri_hit_02" );
|
|
wait 1.25;
|
|
var_2 thread fire_cannon_at_target( var_1, 1, ( 0, 0, 45 ) );
|
|
wait 0.85;
|
|
var_1 kill();
|
|
level.tank_ally_joel vehicle_setspeed( 5 );
|
|
maps\_utility::delaythread( 2, maps\_utility::activate_trigger_with_targetname, "redshirts_first_advance" );
|
|
wait 1.5;
|
|
level.tank_ally_joel vehicle_setspeed( 10.5, 6 );
|
|
wait 1;
|
|
level.tank_ally_joel maps\_vehicle::mgon();
|
|
level.tank_ally_joel.mgturret[0] settargetentity( var_2, ( 0, 0, 45 ) );
|
|
level.tank_ally_joel thread fire_cannon_at_target( var_2, 1, ( 0, 120, 20 ) );
|
|
wait 2;
|
|
level.tank_ally_joel.mgturret[0] common_scripts\utility::delaycall( 1.25, ::cleartargetentity );
|
|
level.tank_ally_joel.mgturret[0] common_scripts\utility::delaycall( 1.25, ::stopfiring );
|
|
level.tank_ally_joel fire_cannon_at_target( var_2, 1, ( 0, 0, 45 ) );
|
|
wait 0.85;
|
|
common_scripts\utility::exploder( "tank_explosion_01" );
|
|
var_2 kill();
|
|
wait 3.5;
|
|
level.enemy_tank_wall thread fire_cannon_at_target( level.tank_ally_joel, 2, ( 0, 0, 45 ) );
|
|
wait 2;
|
|
level.tank_ally_joel.mgturret[0] common_scripts\utility::delaycall( 1, ::settargetentity, level.enemy_tank_wall, ( 0, 0, 45 ) );
|
|
wait 2.5;
|
|
level.tank_ally_joel vehicle_setspeed( 0, 6 );
|
|
level.tank_ally_joel fire_cannon_at_target( level.enemy_tank_wall, 1, ( 0, 0, 45 ) );
|
|
playfxontag( common_scripts\utility::getfx( "tank_fire_ground_dust" ), level.tank_ally_joel, "tag_origin" );
|
|
wait 0.5;
|
|
level.enemy_tank_wall kill();
|
|
common_scripts\utility::flag_set( "enemy_tank_killed" );
|
|
level.tank_ally_joel vehicle_setspeed( 10.5, 6 );
|
|
level.tank_ally_joel.mgturret[0] cleartargetentity();
|
|
level.tank_ally_joel.mgturret[0] stopfiring();
|
|
level.tank_ally_joel.mgturret[0] setconvergenceheightpercent( 0.25 );
|
|
level.tank_ally_joel.mgturret[0] common_scripts\utility::delaycall( 2, ::setmode, "auto_nonai" );
|
|
level.tank_ally_joel.mgturret[0] common_scripts\utility::delaycall( 6, ::setconvergenceheightpercent, 1 );
|
|
level.tank_ally_joel.mgturret[0] maps\_utility::delaythread( 6, ::mg_turret_do_something_while_waiting_for_player );
|
|
var_3 = [];
|
|
var_3[0] = "flood_pri_keepupwithteam";
|
|
level.allies[0] maps\_utility::delaythread( 15, maps\flood_util::play_nag, var_3, "player_at_corner", 25, 50, 1, 2 );
|
|
level.tank_ally_joel common_scripts\utility::delaycall( 2, ::setturrettargetvec, anglestoforward( level.tank_ally_joel.angles ) );
|
|
var_4 = getentarray( "streets_enemy_tank_soldiers_2", "targetname" );
|
|
|
|
foreach ( var_6 in var_4 )
|
|
{
|
|
var_6 maps\_utility::add_spawn_function( ::enemy_tank_soldiers_2_init );
|
|
var_6 maps\_utility::spawn_ai();
|
|
}
|
|
|
|
level thread maps\_utility::activate_trigger_with_targetname( "corner_start" );
|
|
wait 1;
|
|
level thread maps\_utility::autosave_by_name( "infil_landing" );
|
|
var_8 = getnodearray( "path_to_garage_node", "targetname" );
|
|
|
|
foreach ( var_10 in var_8 )
|
|
var_10 disconnectnode();
|
|
|
|
var_12 = getvehiclenode( "allied_tank_corner_start", "targetname" );
|
|
var_12 waittill( "trigger" );
|
|
level thread maps\_utility::smart_radio_dialogue( "flood_tnk_ineedvisualon" );
|
|
level thread maps\_utility::smart_radio_dialogue( "flood_tnk_onethreeengageleftgunner" );
|
|
var_13 = %flood_tank_battle_lynx_smash_tank;
|
|
var_14 = getent( "lynx_smash_node", "targetname" );
|
|
var_15 = spawnstruct();
|
|
var_15.origin = getstartorigin( var_14.origin, var_14.angles, var_13 );
|
|
var_15.angles = getstartangles( var_14.origin, var_14.angles, var_13 );
|
|
level.tank_ally_joel vehicle_orientto( var_15.origin, var_15.angles, 0, 0.0 );
|
|
level.tank_ally_joel waittill( "orientto_complete" );
|
|
level.tank_ally_joel vehicle_setspeedimmediate( 0 );
|
|
common_scripts\utility::flag_wait( "player_at_corner" );
|
|
level.tank_ally_joel.mgturret[0] setmode( "manual" );
|
|
level.tank_ally_joel.mgturret[0] stopbarrelspin();
|
|
var_0 = getent( "enemy_tank_2", "targetname" );
|
|
level.enemy_tank_2 = var_0 maps\_utility::spawn_vehicle();
|
|
level.enemy_tank_2 thread tank_invulnerable_warning();
|
|
level.enemy_tank_2 maps\_vehicle::godon();
|
|
level.enemy_tank_2 maps\_utility::delaythread( 0.25, maps\_vehicle::mgoff );
|
|
level.enemy_tank_2 maps\_vehicle::gopath();
|
|
level.enemy_tank_2 vehicle_setspeedimmediate( 6, 5 );
|
|
var_0 = getent( "enemy_tank_3", "targetname" );
|
|
level.enemy_tank_3 = var_0 maps\_utility::spawn_vehicle();
|
|
level.enemy_tank_3 thread tank_invulnerable_warning();
|
|
level.enemy_tank_3 maps\_vehicle::godon();
|
|
level.enemy_tank_3 maps\_utility::delaythread( 0.25, maps\_vehicle::mgoff );
|
|
level.enemy_tank_3 maps\_vehicle::gopath();
|
|
level.enemy_tank_3 vehicle_setspeedimmediate( 7, 5 );
|
|
level maps\_utility::delaythread( 9, maps\_vehicle::spawn_vehicles_from_targetname_and_drive, "tanks_mainstreet_driveby" );
|
|
level maps\_utility::delaythread( 14, ::kill_player_with_tanks, "tanks_patio_loitering" );
|
|
wait 2;
|
|
var_16 = getent( "tank_target_balcony", "targetname" );
|
|
level.tank_ally_joel thread maps\_utility::smart_radio_dialogue_overlap( "flood_us12_on" );
|
|
level.tank_ally_joel fire_cannon_at_target( var_16, 1, undefined, undefined, "flood_us7_away" );
|
|
level thread maps\_utility::kill_deathflag( "streets_wave_2a" );
|
|
wait 1.75;
|
|
var_16 = getent( "tank_target_planters", "targetname" );
|
|
level.tank_ally_joel thread maps\_utility::smart_radio_dialogue_overlap( "flood_us11_on" );
|
|
level.tank_ally_joel fire_cannon_at_target( var_16, 1, undefined, undefined, "flood_us7_away" );
|
|
level thread maps\flood_streets::destroy_planter( "planter_06" );
|
|
level thread maps\flood_streets::destroy_planter( "planter_08" );
|
|
level thread maps\_utility::kill_deathflag( "streets_wave_2b" );
|
|
level.tank_ally_joel.mgturret[0] common_scripts\utility::delaycall( 5.5, ::settargetentity, level.enemy_tank_2, ( 0, 0, 45 ) );
|
|
var_17 = getent( "enemy_tank_2_garage_target", "targetname" );
|
|
level.tank_ally_joel common_scripts\utility::delaycall( 3, ::setturrettargetvec, var_17.origin + ( 400, 0, 300 ) );
|
|
level.tank_ally_joel common_scripts\utility::delaycall( 10, ::setturrettargetent, level.enemy_tank_2 );
|
|
level thread enemy_mg_pin_down_player( level.enemy_tank_2.mgturret[1], level.enemy_tank_3.mgturret[1] );
|
|
wait 1;
|
|
level maps\_utility::delaythread( 4, maps\_utility::smart_radio_dialogue, "flood_gs5_twotargetsat10" );
|
|
level thread maps\_utility::activate_trigger_with_targetname( "second_street_advance" );
|
|
level thread animated_script_model( level.tank_ally_joel, var_14, #animtree, var_13 );
|
|
var_18 = getent( "lynx_smash_col_tank_back", "targetname" );
|
|
var_18 moveto( var_18.origin + ( 0, -224, 96 ), 0.05 );
|
|
var_18 common_scripts\utility::delaycall( 0.1, ::linkto, level.tank_ally_joel );
|
|
level.tank_ally_joel notify( "suspend_drive_anims" );
|
|
level.tank_ally_joel animscripted( "tank_animation", var_14.origin, var_14.angles, var_13 );
|
|
level.tank_ally_joel maps\_utility::delaythread( 3, ::tank_damage_player );
|
|
level.tank_ally_joel common_scripts\utility::delaycall( 3.25, ::playrumblelooponentity, "tank_rumble" );
|
|
var_14 thread maps\_anim::anim_single( level.lynx_smash_array, "lynx_smash" );
|
|
thread maps\flood_audio::sfx_lynx_smash();
|
|
wait 6;
|
|
level.enemy_tank_2 fire_cannon_at_target( level.tank_ally_joel, 1, 200 * anglestoforward( level.tank_ally_joel.angles ) + ( 0, 0, 32 ) );
|
|
level thread middle_tank_vo();
|
|
wait 1.5;
|
|
level.enemy_tank_3 fire_cannon_at_target( level.tank_ally_joel, 1, ( 0, 0, 60 ) );
|
|
|
|
foreach ( var_20 in level.tank_ally_joel.riders )
|
|
{
|
|
if ( isdefined( var_20.magic_bullet_shield ) )
|
|
var_20 maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
|
|
level thread maps\flood_util::hide_models_by_targetname( "lynx_smash_col_before" );
|
|
level.tank_ally_joel kill();
|
|
level.tank_ally_joel playrumbleonentity( "heavy_1s" );
|
|
|
|
foreach ( var_23 in level.allies )
|
|
var_23.forcesuppression = 1;
|
|
|
|
common_scripts\utility::flag_set( "allied_tank_killed" );
|
|
level thread set_flag_when_allies_in_position();
|
|
level thread set_flag_after_timer( "allies_in_position", 5 );
|
|
common_scripts\utility::flag_wait( "allies_in_position" );
|
|
wait 3;
|
|
var_25 = getent( "enemy_tank_2_window_target", "targetname" );
|
|
level.player.og_health = level.player.health;
|
|
level.player.demigod = 1;
|
|
level.enemy_tank_3 fire_cannon_at_target( var_25, 1 );
|
|
var_25 playrumbleonentity( "heavy_1s" );
|
|
level.player maps\_utility::delaythread( 0.2, ::disable_demigod );
|
|
level thread maps\_utility::kill_deathflag( "infil_ally_redshirt" );
|
|
thread maps\flood_audio::sfx_tank_bust_wall();
|
|
wait 4;
|
|
wait 1;
|
|
var_13 = %flood_tank_battle_window_tank;
|
|
var_14 = getent( "tank_window_node", "targetname" );
|
|
var_15 = spawnstruct();
|
|
var_15.origin = getstartorigin( var_14.origin, var_14.angles, var_13 );
|
|
var_15.angles = getstartangles( var_14.origin, var_14.angles, var_13 );
|
|
var_26 = getent( "allied_tank_2", "targetname" );
|
|
var_26 = var_26 maps\_utility::spawn_vehicle();
|
|
var_26 maps\_vehicle::godon();
|
|
level.tank_wall_sfx linkto( var_26, "tag_origin", ( 120, 0, 100 ), ( 0, 0, 0 ) );
|
|
level thread animated_script_model( var_26, var_14, #animtree, var_13 );
|
|
var_26 notify( "suspend_drive_anims" );
|
|
var_26 animscripted( "tank_animation", var_14.origin, var_14.angles, var_13 );
|
|
var_26 playrumblelooponentity( "tank_rumble" );
|
|
var_26 common_scripts\utility::delaycall( 3, ::playrumbleonentity, "heavy_1s" );
|
|
var_26 common_scripts\utility::delaycall( 4.75, ::stoprumble, "tank_rumble" );
|
|
var_26 thread tank_damage_player( 999 );
|
|
var_26 thread tank_damage_player( 999, 1 );
|
|
var_14 thread maps\_anim::anim_single( level.tank_window_array, "tank_window" );
|
|
thread maps\flood_fx::fx_tank_window_break();
|
|
var_26 common_scripts\utility::delaycall( 1.5, ::playrumbleonentity, "heavy_2s" );
|
|
var_25 = getent( "tank_wallsmash_debris_col", "targetname" );
|
|
var_25 common_scripts\utility::delaycall( 4, ::movez, 24, 0.1 );
|
|
wait 2.63;
|
|
var_25 = getent( "flag_remove_after_window_tank", "targetname" );
|
|
var_25 common_scripts\utility::trigger_off();
|
|
var_25 = getent( "streets_run_for_it", "targetname" );
|
|
var_25 common_scripts\utility::trigger_off();
|
|
var_27 = getent( "allied_tank_2_blocker", "targetname" );
|
|
var_27 notsolid();
|
|
level.enemy_tank_2.veh_pathdir = "reverse";
|
|
level.enemy_tank_2.veh_transmission = "reverse";
|
|
level.enemy_tank_2 startpath();
|
|
level.enemy_tank_2 vehicle_setspeed( 5 );
|
|
level.enemy_tank_2 maps\_vehicle::vehicle_wheels_backward();
|
|
wait 0.5;
|
|
var_26 thread maps\_utility::smart_radio_dialogue_overlap( "flood_gs5_on" );
|
|
var_26 fire_cannon_at_target( level.enemy_tank_2, 1, ( 0, 0, 60 ), undefined, "flood_us8_away" );
|
|
wait 0.5;
|
|
level.enemy_tank_3.veh_pathdir = "reverse";
|
|
level.enemy_tank_3.veh_transmission = "reverse";
|
|
level.enemy_tank_3 startpath();
|
|
level.enemy_tank_3 vehicle_setspeed( 5 );
|
|
level.enemy_tank_3 maps\_vehicle::vehicle_wheels_backward();
|
|
level.enemy_tank_2 kill();
|
|
level thread set_flag_when_allies_in_garage();
|
|
var_27 connectpaths();
|
|
|
|
foreach ( var_10 in var_8 )
|
|
var_10 connectnode();
|
|
|
|
var_30 = garage_wave_get_furthest();
|
|
level thread maps\_utility::activate_trigger_with_targetname( "move_to_garage" );
|
|
var_30 thread garage_wave();
|
|
common_scripts\utility::flag_set( "allies_run_for_garage" );
|
|
level.allies[0] thread maps\_utility::smart_dialogue( "flood_pri_headtotheparking" );
|
|
level.allies[0] thread allies_run_for_garage();
|
|
level.allies[1] thread allies_run_for_garage();
|
|
level.allies[2] thread allies_run_for_garage();
|
|
wait 1;
|
|
var_26 setturrettargetent( level.enemy_tank_3 );
|
|
wait 0.5;
|
|
level.enemy_tank_3 fire_cannon_at_target( var_26, 1, ( 0, 0, 60 ) );
|
|
level.enemy_tank_3 vehicle_setspeed( 0 );
|
|
wait 0.5;
|
|
var_31 = [];
|
|
var_31[var_31.size] = "run_stumble";
|
|
var_31[var_31.size] = "run_flinch";
|
|
var_31[var_31.size] = "run_duck";
|
|
|
|
for ( var_32 = 0; var_32 < 3; var_32++ )
|
|
{
|
|
if ( distance2d( level.allies[var_32].origin, var_26.origin ) < 450 && level.allies[var_32].a.movement == "run" )
|
|
level.allies[var_32] thread stumble_anim( var_31[var_32] );
|
|
}
|
|
|
|
var_26 kill();
|
|
var_26 playrumbleonentity( "heavy_1s" );
|
|
maps\_utility::battlechatter_on( "allies" );
|
|
}
|
|
|
|
tank_invulnerable_warning()
|
|
{
|
|
var_0 = [];
|
|
var_1 = 0;
|
|
|
|
while ( isalive( self ) )
|
|
{
|
|
self waittill( "damage", var_2, var_3, var_4, var_5, var_6, var_7, var_8 );
|
|
|
|
if ( isplayer( var_3 ) )
|
|
{
|
|
var_0[var_0.size] = gettime();
|
|
|
|
for ( var_9 = 0; var_9 < var_0.size; var_9++ )
|
|
{
|
|
if ( gettime() - var_0[var_9] > 1000 )
|
|
var_0 = maps\_utility::array_remove_index( var_0, var_9 );
|
|
}
|
|
|
|
maps\flood_util::jkuprint( var_0.size + " type: " + var_6 );
|
|
|
|
if ( var_6 == "MOD_IMPACT" || var_6 == "MOD_GRENADE" || var_6 == "MOD_GRENADE_SPLASH" )
|
|
{
|
|
var_1 = var_1 + 1;
|
|
|
|
if ( var_1 > 1 )
|
|
maps\_utility::display_hint( "invulerable_frags" );
|
|
}
|
|
else if ( var_0.size > 5 )
|
|
{
|
|
var_0 = [];
|
|
maps\_utility::display_hint( "invulerable_bullets" );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
disable_demigod()
|
|
{
|
|
self.demigod = 0;
|
|
self enableinvulnerability();
|
|
common_scripts\utility::delaycall( 2, ::disableinvulnerability );
|
|
}
|
|
|
|
stumble_anim( var_0 )
|
|
{
|
|
var_0 = maps\_utility::getgenericanim( var_0 );
|
|
self.run_overrideanim = var_0;
|
|
self setflaggedanimknob( "stumble_run", var_0, 1, 0.2, 1, 1 );
|
|
wait 1.5;
|
|
|
|
while ( self getanimtime( var_0 ) > 0.45 )
|
|
common_scripts\utility::waitframe();
|
|
|
|
self.run_overrideanim = undefined;
|
|
self notify( "movemode" );
|
|
}
|
|
|
|
garage_wave_get_furthest()
|
|
{
|
|
var_0 = getnode( "tanks_garage_wave", "targetname" );
|
|
var_1 = distance2d( level.allies[1].origin, var_0.origin );
|
|
var_2 = distance2d( level.allies[2].origin, var_0.origin );
|
|
|
|
if ( var_1 > var_2 )
|
|
{
|
|
level.allies[1] maps\_utility::clear_force_color();
|
|
return level.allies[1];
|
|
}
|
|
else
|
|
{
|
|
level.allies[2] maps\_utility::clear_force_color();
|
|
return level.allies[2];
|
|
}
|
|
}
|
|
|
|
#using_animtree("generic_human");
|
|
|
|
garage_wave()
|
|
{
|
|
level endon( "waver_stop" );
|
|
var_0 = getnode( "tanks_garage_wave", "targetname" );
|
|
var_1 = [];
|
|
var_1[var_1.size] = %flood_garage_waving_ally_01;
|
|
maps\_utility::set_force_color( "o" );
|
|
maps\_utility::disable_sprint();
|
|
self.og_goalradius = self.goalradius;
|
|
self.goalradius = 0;
|
|
thread release_waver();
|
|
|
|
if ( self.animname == "ally_1" )
|
|
{
|
|
while ( distance2d( self.origin, level.allies[0].origin ) < 300 || distance2d( self.origin, level.allies[2].origin ) < 300 )
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
else
|
|
{
|
|
while ( distance2d( self.origin, level.allies[0].origin ) < 300 || distance2d( self.origin, level.allies[1].origin ) < 300 )
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
self setgoalnode( var_0 );
|
|
self waittill( "goal" );
|
|
wait 1;
|
|
thread maps\_anim::anim_generic_loop( self, "garage_waving", "stop_loop" );
|
|
}
|
|
|
|
release_waver()
|
|
{
|
|
level.player endon( "death" );
|
|
var_0 = getent( "tanks_release_waver", "targetname" );
|
|
var_0 waittill( "trigger" );
|
|
level notify( "waver_stop" );
|
|
self notify( "stop_loop" );
|
|
self stopanimscripted();
|
|
level thread maps\_utility::activate_trigger_with_targetname( "release_waver" );
|
|
self.goalradius = self.og_goalradius;
|
|
}
|
|
|
|
middle_tank_vo()
|
|
{
|
|
level.player endon( "death" );
|
|
wait 0.5;
|
|
level.allies[0] maps\_utility::smart_dialogue( "flood_pri_enemyarmorgetto" );
|
|
wait 1;
|
|
level maps\_utility::smart_radio_dialogue( "flood_gs6_thompsonisdown" );
|
|
level thread maps\_utility::battlechatter_off( "allies" );
|
|
level.allies[0] maps\_utility::smart_dialogue( "flood_pri_werepinneddownby" );
|
|
level maps\_utility::smart_radio_dialogue( "flood_us9_werealmostthere" );
|
|
}
|
|
|
|
enemy_mg_pin_down_player( var_0, var_1 )
|
|
{
|
|
level.player endon( "death" );
|
|
var_0 setmode( "manual" );
|
|
var_1 setmode( "manual" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( ( common_scripts\utility::flag( "infil_player_in_open" ) || common_scripts\utility::flag( "infil_player_in_open_behind_tank" ) ) && !common_scripts\utility::flag( "allies_run_for_garage" ) )
|
|
{
|
|
if ( isalive( var_0 ) )
|
|
{
|
|
var_0 settargetentity( level.player );
|
|
var_0 startfiring();
|
|
var_0 setconvergencetime( 0 );
|
|
}
|
|
|
|
var_1 settargetentity( level.player );
|
|
var_1 startfiring();
|
|
var_1 setconvergencetime( 0 );
|
|
wait_player_not_in_open_or_needs_garage();
|
|
}
|
|
else if ( !common_scripts\utility::flag( "allies_run_for_garage" ) )
|
|
{
|
|
if ( isalive( var_0 ) )
|
|
{
|
|
var_0 stopfiring();
|
|
var_0 stopbarrelspin();
|
|
}
|
|
|
|
var_1 stopfiring();
|
|
var_1 stopbarrelspin();
|
|
|
|
if ( isalive( var_0 ) )
|
|
{
|
|
var_0.mg_target = var_0 enemy_mg_get_untargeted_random_target();
|
|
var_0 thread enemy_mg_adjust_if_target_dies( var_0.mg_target );
|
|
var_0 thread enemy_mg_burst_fire();
|
|
}
|
|
|
|
var_1.mg_target = var_1 enemy_mg_get_untargeted_random_target();
|
|
var_1 thread enemy_mg_adjust_if_target_dies( var_1.mg_target );
|
|
var_1 thread enemy_mg_burst_fire();
|
|
common_scripts\utility::flag_wait_any( "infil_player_in_open", "infil_player_in_open_behind_tank", "allies_run_for_garage" );
|
|
|
|
if ( isalive( var_0 ) )
|
|
var_0.mg_target.is_currently_mg_target = undefined;
|
|
|
|
var_1.mg_target.is_currently_mg_target = undefined;
|
|
}
|
|
else
|
|
{
|
|
var_2 = [];
|
|
var_2[0] = "flood_vrg_cmoneliaskeepup";
|
|
var_2[1] = "flood_mrk_makearunfor";
|
|
var_2[2] = "flood_pri_cmoneliasgetto";
|
|
level.allies[1] maps\_utility::delaythread( 15, maps\flood_util::play_nag, var_2, "firing_garage_shot", 10, 30, 1, 2 );
|
|
|
|
while ( !common_scripts\utility::flag( "firing_garage_shot" ) )
|
|
{
|
|
var_1 enemy_mg_shoot_randomly_at_player_until_he_runs_for_it();
|
|
maps\flood_util::jkuprint( "player running for it" );
|
|
var_3 = maps\_utility::get_ai_group_ai( "streets_enemy_tank_soldiers" );
|
|
|
|
foreach ( var_5 in var_3 )
|
|
var_5.baseaccuracy = 0;
|
|
|
|
if ( isalive( level.infil_rpg_guy ) )
|
|
level.infil_rpg_guy.baseaccuracy = 0;
|
|
|
|
level.enemy_tank_3 setturrettargetent( level.player );
|
|
var_1 setconvergencetime( 0 );
|
|
var_1 settargetentity( getent( "tank_window_node", "targetname" ) );
|
|
var_1 startfiring();
|
|
var_1 common_scripts\utility::delaycall( 1, ::setconvergencetime, 2 );
|
|
var_1 common_scripts\utility::delaycall( 1, ::settargetentity, level.player );
|
|
maps\_utility::delaythread( 1, maps\flood_util::jkuprint, "player is turret target" );
|
|
common_scripts\utility::flag_waitopen( "infil_player_in_open" );
|
|
common_scripts\utility::flag_waitopen( "infil_player_in_open_behind_tank" );
|
|
}
|
|
|
|
var_1 stopfiring();
|
|
var_1 stopbarrelspin();
|
|
level.enemy_tank_3 fireweapon();
|
|
break;
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
enemy_mg_shoot_randomly_at_player_until_he_runs_for_it()
|
|
{
|
|
self endon( "death" );
|
|
level.player endon( "death" );
|
|
level endon( "infil_player_in_open" );
|
|
level endon( "infil_player_in_open_behind_tank" );
|
|
level endon( "firing_garage_shot" );
|
|
|
|
for (;;)
|
|
{
|
|
self settargetentity( level.player, ( randomintrange( -100, 100 ), randomintrange( -100, 100 ), randomintrange( -100, 100 ) ) );
|
|
self startfiring();
|
|
wait( randomfloatrange( 4, 5.5 ) );
|
|
self stopfiring();
|
|
self stopbarrelspin();
|
|
wait( randomfloatrange( 1.5, 2 ) );
|
|
}
|
|
}
|
|
|
|
wait_player_not_in_open_or_needs_garage()
|
|
{
|
|
level.player endon( "death" );
|
|
level endon( "firing_garage_shot" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( !common_scripts\utility::flag( "infil_player_in_open" ) && !common_scripts\utility::flag( "infil_player_in_open_behind_tank" ) || common_scripts\utility::flag( "allies_run_for_garage" ) )
|
|
break;
|
|
else
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
enemy_mg_adjust_if_target_dies( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
level endon( "infil_player_in_open" );
|
|
level endon( "infil_player_in_open_behind_tank" );
|
|
level endon( "allies_run_for_garage" );
|
|
level endon( "firing_garage_shot" );
|
|
|
|
while ( isalive( var_0 ) )
|
|
common_scripts\utility::waitframe();
|
|
|
|
self.mg_target = enemy_mg_get_untargeted_random_target();
|
|
}
|
|
|
|
enemy_mg_burst_fire()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "infil_player_in_open" );
|
|
level endon( "infil_player_in_open_behind_tank" );
|
|
level endon( "allies_run_for_garage" );
|
|
level endon( "firing_garage_shot" );
|
|
|
|
for (;;)
|
|
{
|
|
wait( randomfloatrange( 3, 4 ) );
|
|
self stopfiring();
|
|
self stopbarrelspin();
|
|
wait( randomfloatrange( 1, 2.5 ) );
|
|
self.mg_target = enemy_mg_get_untargeted_random_target();
|
|
}
|
|
}
|
|
|
|
enemy_mg_get_untargeted_random_target()
|
|
{
|
|
self endon( "death" );
|
|
var_0 = getaiarray( "allies" );
|
|
var_0 = common_scripts\utility::add_to_array( var_0, level.player );
|
|
var_1 = var_0[randomint( var_0.size )];
|
|
var_2 = 0;
|
|
|
|
while ( !var_2 )
|
|
{
|
|
if ( !isdefined( var_1.is_currently_mg_target ) )
|
|
{
|
|
var_1.is_currently_mg_target = 1;
|
|
self setconvergencetime( 2 );
|
|
var_2 = 1;
|
|
}
|
|
else
|
|
var_1 = var_0[randomint( var_0.size )];
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
if ( isplayer( var_1 ) )
|
|
self settargetentity( var_1 );
|
|
else if ( isdefined( var_1.sprint ) && var_1.sprint )
|
|
self settargetentity( var_1 );
|
|
else
|
|
self settargetentity( var_1, ( 0, 0, randomintrange( 16, 60 ) ) );
|
|
|
|
self startfiring();
|
|
|
|
if ( isdefined( self.mg_target ) )
|
|
self.mg_target.is_currently_mg_target = undefined;
|
|
|
|
return var_1;
|
|
}
|
|
|
|
animated_script_model( var_0, var_1, var_2, var_3 )
|
|
{
|
|
if ( getdvarint( "show_script_model" ) == 0 )
|
|
return;
|
|
|
|
var_4 = ( 0, -3000, 0 );
|
|
var_5 = spawn( "script_model", var_1.origin );
|
|
var_5 setmodel( var_0.model );
|
|
var_5 useanimtree( var_2 );
|
|
var_5 animscripted( "blah", var_1.origin + var_4, var_1.angles, var_3 );
|
|
var_0 waittill( "death" );
|
|
wait 1;
|
|
var_5 delete();
|
|
}
|
|
|
|
allies_run_for_garage()
|
|
{
|
|
maps\_utility::enable_sprint();
|
|
self waittill( "in_garage" );
|
|
wait 2.0;
|
|
maps\_utility::disable_sprint();
|
|
self.forcesuppression = undefined;
|
|
}
|
|
|
|
tank_wall_stuff()
|
|
{
|
|
var_0 = getent( "enemy_tank", "targetname" );
|
|
var_1 = var_0 maps\_vehicle::spawn_vehicle_and_gopath();
|
|
level.enemy_tank_wall = var_1;
|
|
var_1 maps\_vehicle::godon();
|
|
var_1 maps\_vehicle::mgoff();
|
|
var_1.mgturret[1] thread enemy_tank_shoot_flyin_choopers();
|
|
var_2 = getentarray( "streets_enemy_tank_soldiers", "targetname" );
|
|
|
|
foreach ( var_4 in var_2 )
|
|
{
|
|
var_4 maps\_utility::add_spawn_function( ::follow_tank_enemies_spawn_func );
|
|
var_4 maps\_utility::spawn_ai();
|
|
}
|
|
|
|
var_6 = getvehiclenode( "enemy_tank_wall_end", "targetname" );
|
|
var_6 waittill( "trigger" );
|
|
var_1.mgturret[1] notify( "end flyin script" );
|
|
var_1.mgturret[1] stopfiring();
|
|
var_1.mgturret[1] stopbarrelspin();
|
|
var_1.mgturret[1] cleartargetentity();
|
|
var_1.mgturret[1] setmode( "manual" );
|
|
var_1.mgturret[1] settargetentity( level.tank_ally_joel, ( 0, 0, 45 ) );
|
|
}
|
|
|
|
infil_redshirts_spawn_func()
|
|
{
|
|
if ( !isdefined( level.street_start_allies ) )
|
|
level.street_start_allies = [];
|
|
|
|
level.street_start_allies[level.street_start_allies.size] = self;
|
|
maps\_utility::magic_bullet_shield( 1 );
|
|
self.grenadeawareness = 0;
|
|
self.ignoreexplosionevents = 1;
|
|
self.ignorerandombulletdamage = 1;
|
|
self.ignoresuppression = 1;
|
|
self.disablebulletwhizbyreaction = 1;
|
|
maps\_utility::disable_pain();
|
|
self.dontavoidplayer = 1;
|
|
common_scripts\utility::flag_wait( "allied_tank_killed" );
|
|
maps\_utility::stop_magic_bullet_shield();
|
|
self.grenadeawareness = 1;
|
|
self.ignoreexplosionevents = 0;
|
|
self.ignorerandombulletdamage = 0;
|
|
self.ignoresuppression = 0;
|
|
self.disablebulletwhizbyreaction = 0;
|
|
maps\_utility::enable_pain();
|
|
self.dontavoidplayer = 0;
|
|
}
|
|
|
|
rpg_guy_shoot_flyin_choopers()
|
|
{
|
|
var_0 = getent( "infil_rpg_guy_start", "targetname" );
|
|
var_1 = var_0 maps\_utility::spawn_ai();
|
|
level.infil_rpg_guy = var_1;
|
|
var_1 endon( "death" );
|
|
var_1 thread maps\flood_streets::remove_rpgs_on_death();
|
|
var_1 maps\_utility::magic_bullet_shield( 1 );
|
|
var_1.grenadeawareness = 0;
|
|
var_1.ignoreexplosionevents = 1;
|
|
var_1.ignorerandombulletdamage = 1;
|
|
var_1.ignoresuppression = 1;
|
|
var_1.disablebulletwhizbyreaction = 1;
|
|
var_1 maps\_utility::disable_pain();
|
|
var_1.ignoreall = 1;
|
|
var_1.ignoreme = 1;
|
|
common_scripts\utility::waitframe();
|
|
var_2 = var_1 gettagorigin( "tag_flash" ) + ( 0, 0, 50 );
|
|
var_3 = common_scripts\utility::getstruct( "rpg_guy_target1", "targetname" );
|
|
common_scripts\utility::noself_delaycall( 1, ::magicbullet, "rpg_straight", var_2 + ( 0, 0, 50 ), var_3.origin );
|
|
var_1 maps\_anim::anim_generic( var_1, "rpg_reload" );
|
|
magicbullet( "rpg_straight", var_2, level.player.origin + ( 0, 100, 100 ) );
|
|
var_1 maps\_anim::anim_generic( var_1, "rpg_reload" );
|
|
magicbullet( "rpg_straight", var_2, level.player.origin + ( 0, 100, 100 ) );
|
|
var_1.grenadeammo = 0;
|
|
var_1 maps\_utility::stop_magic_bullet_shield();
|
|
var_1.grenadeawareness = 1;
|
|
var_1.ignoreexplosionevents = 0;
|
|
var_1.ignorerandombulletdamage = 0;
|
|
var_1.ignoresuppression = 0;
|
|
var_1.disablebulletwhizbyreaction = 0;
|
|
var_1 maps\_utility::enable_pain();
|
|
var_1.ignoreall = 0;
|
|
var_1.ignoreme = 0;
|
|
common_scripts\utility::flag_wait( "enemy_tank_killed" );
|
|
var_4 = getent( "streets_enemy_tank_soldiers_goal_volume_2", "targetname" );
|
|
var_1 setgoalvolumeauto( var_4 );
|
|
}
|
|
|
|
follow_tank_enemies_spawn_func()
|
|
{
|
|
self endon( "death" );
|
|
thread enemies_attack_player_when_in_open();
|
|
var_0 = getent( "streets_enemy_tank_soldiers_goal_volume", "targetname" );
|
|
self setgoalvolumeauto( var_0 );
|
|
maps\_utility::magic_bullet_shield();
|
|
self.ignoreall = 1;
|
|
self.attackeraccuracy = 0;
|
|
self.grenadeawareness = 0;
|
|
self.ignoreexplosionevents = 1;
|
|
self.ignorerandombulletdamage = 1;
|
|
self.ignoresuppression = 1;
|
|
self.disablebulletwhizbyreaction = 1;
|
|
var_1 = getvehiclenode( "wall_tank_past_wall", "targetname" );
|
|
var_1 waittill( "trigger" );
|
|
maps\_utility::stop_magic_bullet_shield();
|
|
common_scripts\utility::flag_wait( "enemy_tank_killed" );
|
|
self.ignoreall = 0;
|
|
var_0 = getent( "streets_enemy_tank_soldiers_goal_volume_2", "targetname" );
|
|
self setgoalvolumeauto( var_0 );
|
|
wait 1;
|
|
self.attackeraccuracy = 1;
|
|
self.grenadeawareness = 1;
|
|
self.ignoreexplosionevents = 0;
|
|
self.ignorerandombulletdamage = 0;
|
|
self.ignoresuppression = 0;
|
|
self.disablebulletwhizbyreaction = 0;
|
|
}
|
|
|
|
enemy_tank_soldiers_2_init()
|
|
{
|
|
self endon( "death" );
|
|
thread enemies_attack_player_when_in_open();
|
|
thread enemies_magic_bullet_until_player_at_corner();
|
|
self.health = 300;
|
|
maps\_utility::magic_bullet_shield();
|
|
self.attackeraccuracy = 0;
|
|
self.grenadeawareness = 0;
|
|
self.ignoreexplosionevents = 1;
|
|
self.ignorerandombulletdamage = 1;
|
|
self.ignoresuppression = 1;
|
|
self.disablebulletwhizbyreaction = 1;
|
|
maps\_utility::disable_pain();
|
|
self.fixednode = 1;
|
|
common_scripts\utility::flag_wait( "player_at_corner" );
|
|
maps\_utility::stop_magic_bullet_shield();
|
|
self.attackeraccuracy = 1;
|
|
self.grenadeawareness = 1;
|
|
self.ignoreexplosionevents = 0;
|
|
self.ignorerandombulletdamage = 0;
|
|
self.ignoresuppression = 0;
|
|
self.disablebulletwhizbyreaction = 0;
|
|
maps\_utility::enable_pain();
|
|
wait 2.5;
|
|
self.fixednode = 0;
|
|
}
|
|
|
|
enemies_magic_bullet_until_player_at_corner()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "player_at_corner" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( !common_scripts\utility::flag( "player_at_corner" ) )
|
|
{
|
|
self waittill( "damage", var_0, var_1, var_2, var_3, var_4, var_5, var_6 );
|
|
|
|
if ( var_1 == level.player )
|
|
common_scripts\utility::flag_set( "player_at_corner" );
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
enemies_attack_player_when_in_open()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait_any( "infil_player_in_open", "infil_player_in_open_behind_tank" );
|
|
self.favoriteenemy = level.player;
|
|
self.baseaccuracy = 50;
|
|
common_scripts\utility::flag_waitopen( "infil_player_in_open" );
|
|
common_scripts\utility::flag_waitopen( "infil_player_in_open_behind_tank" );
|
|
self.favoriteenemy = undefined;
|
|
self.baseaccuracy = 1;
|
|
}
|
|
}
|
|
|
|
infil_heli_outside_city()
|
|
{
|
|
var_0 = [];
|
|
var_1 = getentarray( "infil_blackhawk_outside_city", "targetname" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
var_0[var_0.size] = var_3 thread maps\_utility::spawn_vehicle();
|
|
|
|
wait 3;
|
|
|
|
foreach ( var_3 in var_0 )
|
|
var_3 thread maps\_vehicle::gopath();
|
|
}
|
|
|
|
infil_convoy_outside_city()
|
|
{
|
|
|
|
}
|
|
|
|
crush_stop_sign_when_near_tank( var_0 )
|
|
{
|
|
while ( distance2d( level.tank_ally_joel.origin, self.origin ) > var_0 )
|
|
wait 0.1;
|
|
|
|
common_scripts\utility::flag_set( "vignette_streets_stop_sign_01" );
|
|
}
|
|
|
|
rotate_barrier_when_near_tank( var_0 )
|
|
{
|
|
var_1 = self.angles;
|
|
var_2 = ( 0, 90, 0 );
|
|
self.angles = var_2;
|
|
|
|
while ( distance2d( level.tank_ally_joel.origin, self.origin ) > var_0 )
|
|
common_scripts\utility::waitframe();
|
|
|
|
self rotateto( var_2 + ( 0, 0, -10 ), 0.2 );
|
|
wait 0.2;
|
|
self rotateto( var_1, 0.6 );
|
|
wait 0.6;
|
|
self rotateto( var_1 + ( 0, 0, 5 ), 0.15 );
|
|
wait 0.15;
|
|
self rotateto( var_1, 0.15 );
|
|
wait 0.1;
|
|
self rotateto( var_1 + ( 0, 0, -5 ), 0.1 );
|
|
wait 0.1;
|
|
self rotateto( var_1, 0.1 );
|
|
}
|
|
|
|
fire_cannon_at_target( var_0, var_1, var_2, var_3, var_4 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "stop_firing" );
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
var_1 = 10000;
|
|
|
|
if ( !isdefined( var_2 ) )
|
|
var_2 = ( 0, 0, 0 );
|
|
|
|
if ( !isdefined( var_3 ) )
|
|
var_3 = randomfloatrange( 1.5, 2 );
|
|
|
|
while ( isdefined( var_0 ) && var_1 > 0 )
|
|
{
|
|
if ( isdefined( self ) )
|
|
{
|
|
self setturrettargetvec( var_0.origin + var_2 );
|
|
self waittill( "turret_on_target" );
|
|
|
|
if ( isdefined( var_4 ) )
|
|
thread maps\_utility::smart_radio_dialogue_overlap( var_4 );
|
|
|
|
self fireweapon();
|
|
}
|
|
|
|
var_1--;
|
|
|
|
if ( var_1 > 0 )
|
|
wait( var_3 );
|
|
}
|
|
}
|
|
|
|
set_flag_when_allies_in_garage()
|
|
{
|
|
var_0 = 1;
|
|
var_1 = 1;
|
|
var_2 = 1;
|
|
var_3 = 1;
|
|
|
|
while ( var_0 || var_1 || var_2 || var_3 )
|
|
{
|
|
var_4 = getent( "parking_garage_doorway", "targetname" );
|
|
var_4 waittill( "trigger", var_5 );
|
|
|
|
if ( level.player istouching( var_4 ) )
|
|
var_0 = 0;
|
|
|
|
if ( level.allies[0] istouching( var_4 ) )
|
|
{
|
|
var_1 = 0;
|
|
var_5 notify( "in_garage" );
|
|
}
|
|
|
|
if ( level.allies[1] istouching( var_4 ) )
|
|
{
|
|
var_2 = 0;
|
|
var_5 notify( "in_garage" );
|
|
}
|
|
|
|
if ( level.allies[2] istouching( var_4 ) )
|
|
{
|
|
var_3 = 0;
|
|
var_5 notify( "in_garage" );
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::flag_set( "everyone_in_garage" );
|
|
}
|
|
|
|
mg_turret_do_something_while_waiting_for_player()
|
|
{
|
|
level endon( "player_at_corner" );
|
|
level.tank_ally_joel.mgturret[0] setmode( "auto_nonai" );
|
|
|
|
while ( !common_scripts\utility::flag( "player_at_corner" ) )
|
|
{
|
|
level.tank_ally_joel.mgturret[0] turretfiredisable();
|
|
level.tank_ally_joel.mgturret[0] stopbarrelspin();
|
|
wait( randomfloatrange( 3, 4.5 ) );
|
|
level.tank_ally_joel.mgturret[0] turretfireenable();
|
|
wait( randomfloatrange( 4.5, 7.5 ) );
|
|
}
|
|
|
|
level.tank_ally_joel.mgturret[0] setmode( "manual" );
|
|
}
|
|
|
|
react_correctly_to_tank_fire()
|
|
{
|
|
self.ignoresuppression = 0;
|
|
self.ignorerandombulletdamage = 1;
|
|
self.disablebulletwhizbyreaction = 1;
|
|
self.script_dontpeek = 1;
|
|
maps\_utility::disable_pain();
|
|
}
|
|
|
|
set_flag_when_allies_in_position()
|
|
{
|
|
foreach ( var_1 in level.street_start_allies )
|
|
{
|
|
if ( isdefined( var_1 ) )
|
|
var_1 pushplayer( 1 );
|
|
}
|
|
|
|
var_3 = 1;
|
|
|
|
while ( var_3 && !common_scripts\utility::flag( "allies_in_position" ) )
|
|
{
|
|
var_4 = 0;
|
|
var_5 = 0;
|
|
var_6 = getent( "ally_behind_planter", "targetname" );
|
|
|
|
foreach ( var_1 in level.street_start_allies )
|
|
{
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
if ( var_1 istouching( var_6 ) )
|
|
var_4++;
|
|
|
|
var_5++;
|
|
}
|
|
}
|
|
|
|
if ( var_4 >= var_5 - 1 )
|
|
var_3 = 0;
|
|
|
|
wait 0.1;
|
|
}
|
|
|
|
common_scripts\utility::flag_set( "allies_in_position" );
|
|
|
|
foreach ( var_1 in level.street_start_allies )
|
|
{
|
|
if ( isdefined( var_1 ) )
|
|
var_1 pushplayer( 0 );
|
|
}
|
|
}
|
|
|
|
set_flag_after_timer( var_0, var_1 )
|
|
{
|
|
wait( var_1 );
|
|
common_scripts\utility::flag_set( var_0 );
|
|
}
|
|
|
|
kill_barriers_when_close( var_0, var_1 )
|
|
{
|
|
var_0 endon( "death" );
|
|
|
|
while ( distance2d( var_0.origin, self.origin ) > var_1 )
|
|
{
|
|
wait 0.1;
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
break;
|
|
}
|
|
|
|
if ( isdefined( var_0 ) )
|
|
self delete();
|
|
}
|
|
|
|
infil_flyin_battle_init()
|
|
{
|
|
maps\_utility::delaythread( 28, ::infil_flyin_battle );
|
|
level thread maps\_utility::notify_delay( "kill enemy tank", 37 );
|
|
level thread maps\_utility::notify_delay( "start tanks", 31 );
|
|
}
|
|
|
|
infil_flyin_battle()
|
|
{
|
|
maps\flood_util::jkuprint( "start the battle" );
|
|
var_0 = getentarray( "infil_flyin_battle_tank_destroyed", "targetname" );
|
|
var_1 = getentarray( "infil_flyin_battle_tank_ally_hummer", "targetname" );
|
|
var_2 = getentarray( "infil_flyin_battle_tank_ally", "targetname" );
|
|
var_3 = getentarray( "infil_flyin_battle_static", "targetname" );
|
|
var_4 = getent( "infil_flyin_battle_tank_enemy", "targetname" );
|
|
var_5 = common_scripts\utility::getstruct( "infil_flyin_battle_tank_enemy_target", "targetname" );
|
|
var_6 = common_scripts\utility::getstructarray( "infil_flyin_battle_tank_enemy_barrier_target", "targetname" );
|
|
var_7 = getent( "infil_flyin_battle_tank_ally_aim", "targetname" );
|
|
var_8 = getent( "infil_flyin_battle_tank_ally_bridge_l", "targetname" );
|
|
var_9 = getent( "infil_flyin_battle_tank_ally_bridge_r", "targetname" );
|
|
|
|
foreach ( var_11 in var_0 )
|
|
var_11 kill();
|
|
|
|
var_4 thread enemy_tank_spawn_func( var_6 );
|
|
var_7 common_scripts\utility::delaycall( 6, ::setturrettargetvec, var_4.origin );
|
|
var_8 maps\_utility::add_spawn_function( ::tank_spawn_func, var_5 );
|
|
var_8 = var_8 maps\_vehicle::spawn_vehicle_and_gopath();
|
|
var_9 maps\_utility::add_spawn_function( ::tank_spawn_func, var_5 );
|
|
var_9 = var_9 maps\_vehicle::spawn_vehicle_and_gopath();
|
|
|
|
foreach ( var_14 in var_1 )
|
|
{
|
|
var_14 maps\_utility::add_spawn_function( ::hummer_spawn_func );
|
|
var_14 maps\_vehicle::spawn_vehicle_and_gopath();
|
|
}
|
|
|
|
foreach ( var_11 in var_2 )
|
|
{
|
|
var_11 maps\_utility::add_spawn_function( ::tank_moving_spawn_func );
|
|
var_11 maps\_vehicle::spawn_vehicle_and_gopath();
|
|
}
|
|
|
|
level waittill( "kill enemy tank" );
|
|
maps\flood_util::jkuprint( "kill enemy tank" );
|
|
var_4 kill();
|
|
}
|
|
|
|
enemy_tank_spawn_func( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = var_0[randomintrange( 0, var_0.size )];
|
|
fire_cannon_at_target( var_1, 1 );
|
|
wait( randomfloatrange( 1.5, 3.0 ) );
|
|
}
|
|
}
|
|
|
|
tank_spawn_func( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self vehicle_setspeed( 14, 14, 7 );
|
|
wait 1;
|
|
|
|
for (;;)
|
|
{
|
|
if ( self vehicle_getspeed() < 1 )
|
|
{
|
|
thread fire_cannon_at_target( var_0 );
|
|
break;
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
level waittill( "kill enemy tank" );
|
|
self notify( "stop_firing" );
|
|
level waittill( "infil kill everything" );
|
|
self delete();
|
|
}
|
|
|
|
tank_moving_spawn_func()
|
|
{
|
|
self endon( "death" );
|
|
self vehicle_setspeed( 0, 1, 1 );
|
|
level waittill( "start tanks" );
|
|
self vehicle_setspeed( 14, 14, 7 );
|
|
level waittill( "infil kill everything" );
|
|
self delete();
|
|
}
|
|
|
|
hummer_spawn_func()
|
|
{
|
|
self endon( "death" );
|
|
wait 1;
|
|
|
|
for (;;)
|
|
{
|
|
if ( self vehicle_getspeed() < 0.2 )
|
|
{
|
|
self joltbody( self.origin + ( 0, 0, 64 ), 100 );
|
|
break;
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
maps\_vehicle::vehicle_unload( "all" );
|
|
level waittill( "infil kill everything" );
|
|
self delete();
|
|
}
|
|
|
|
infil_cleanup()
|
|
{
|
|
level notify( "infil kill everything" );
|
|
var_0 = getentarray( "infil_cleanup", "script_noteworthy" );
|
|
maps\_utility::array_delete( var_0 );
|
|
}
|
|
|
|
tanks_cleanup_early()
|
|
{
|
|
var_0 = getentarray( "tanks_cleanup_early", "script_noteworthy" );
|
|
maps\_utility::array_delete( var_0 );
|
|
}
|
|
|
|
tanks_cleanup()
|
|
{
|
|
var_0 = getentarray( "tanks_cleanup", "script_noteworthy" );
|
|
maps\_utility::array_delete( var_0 );
|
|
}
|
|
|
|
streets_start()
|
|
{
|
|
level.street_start_allies = [];
|
|
maps\flood_util::player_move_to_checkpoint_start( "streets_start" );
|
|
maps\flood_util::spawn_allies();
|
|
}
|
|
|
|
streets()
|
|
{
|
|
level thread maps\_utility::autosave_by_name_silent( "streets_old" );
|
|
level thread streets_battle_blackhawk();
|
|
level thread blackhawk_countermeasure();
|
|
level thread kill_player_with_tanks( "streets_beyond_enemy_tank_2" );
|
|
level thread kill_player_with_tanks( "streets_run_for_it" );
|
|
level thread maps\flood_streets::aim_missiles_2();
|
|
level thread maps\flood_streets::hide_missile_launcher_collision();
|
|
level thread maps\flood_streets::hide_spire();
|
|
level thread maps\flood_streets::hide_garage_debris();
|
|
level thread maps\flood_streets::garage_opening_collapse();
|
|
var_0 = getent( "into_parking_garage", "targetname" );
|
|
var_0 waittill( "trigger" );
|
|
level notify( "end_streets" );
|
|
}
|
|
|
|
kill_player_with_tanks( var_0 )
|
|
{
|
|
var_1 = getent( var_0, "targetname" );
|
|
var_1 waittill( "trigger" );
|
|
|
|
if ( isalive( level.enemy_tank_2 ) )
|
|
{
|
|
level.enemy_tank_2 setturrettargetent( level.player );
|
|
wait 0.5;
|
|
level.enemy_tank_2 fireweapon();
|
|
}
|
|
|
|
if ( isalive( level.enemy_tank_3 ) )
|
|
{
|
|
level.enemy_tank_3 setturrettargetent( level.player );
|
|
wait 0.5;
|
|
level.enemy_tank_3 fireweapon();
|
|
}
|
|
|
|
if ( isalive( level.enemy_tank_3 ) )
|
|
level.player kill( level.enemy_tank_3.origin, level.enemy_tank_3, level.enemy_tank_3 );
|
|
else
|
|
{
|
|
wait 0.5;
|
|
level.player kill();
|
|
}
|
|
|
|
wait 0.1;
|
|
setdvar( "ui_deadquote", &"FLOOD_TANKS_FAIL" );
|
|
level thread maps\_utility::missionfailedwrapper();
|
|
}
|
|
|
|
streets_battle_blackhawk()
|
|
{
|
|
var_0 = getent( "trig_battle_blackhawk_fight", "targetname" );
|
|
var_0 waittill( "trigger" );
|
|
thread streets_battle_fire_rocket( "streets_battle_blackhawk_rocket_1", "streets_battle_blackhawk_missile_impact_1" );
|
|
wait 0.9;
|
|
thread streets_battle_fire_rocket( "streets_battle_blackhawk_rocket_2", "streets_battle_blackhawk_missile_impact_2" );
|
|
wait 0.9;
|
|
thread streets_battle_fire_rocket( "streets_battle_blackhawk_rocket_3", "streets_battle_blackhawk_missile_impact_3" );
|
|
wait 1.4;
|
|
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "streets_battle_blackhawk" );
|
|
var_1.path_gobbler = 1;
|
|
var_1.script_vehicle_selfremove = 1;
|
|
var_1 vehicle_setspeed( 60 );
|
|
}
|
|
|
|
streets_battle_fire_rocket( var_0, var_1 )
|
|
{
|
|
var_2 = getent( var_0, "targetname" );
|
|
var_2 thread maps\_utility::add_spawn_function( ::postspawn_crash_blackhawk_rocket );
|
|
var_3 = var_2 maps\_vehicle::spawn_vehicle_and_gopath();
|
|
var_3 waittill( "reached_end_node" );
|
|
var_4 = getent( var_1, "targetname" );
|
|
playfx( level._effect["temp_missile_impact"], var_4.origin );
|
|
}
|
|
|
|
streets_crash_blackhawk()
|
|
{
|
|
|
|
}
|
|
|
|
postspawn_crash_blackhawk_rocket()
|
|
{
|
|
self setmodel( "projectile_rpg7" );
|
|
var_0 = common_scripts\utility::getfx( "rpg_trail" );
|
|
playfxontag( var_0, self, "tag_origin" );
|
|
|
|
if ( isdefined( self.script_sound ) )
|
|
{
|
|
if ( isdefined( self.script_wait ) )
|
|
common_scripts\utility::delaycall( self.script_wait, ::playsound, self.script_sound );
|
|
else
|
|
self playsound( self.script_sound );
|
|
}
|
|
else
|
|
self playloopsound( "weap_rpg_loop" );
|
|
|
|
self waittill( "reached_end_node" );
|
|
|
|
if ( isdefined( self.script_exploder ) )
|
|
common_scripts\utility::exploder( self.script_exploder );
|
|
else if ( isdefined( self.script_fxid ) )
|
|
playfx( common_scripts\utility::getfx( self.script_fxid ), self.origin, anglestoforward( self.angles ) );
|
|
|
|
self delete();
|
|
}
|
|
|
|
crash_blackhawk_missile_impacts()
|
|
{
|
|
var_0 = getentarray( "crash_blackhawk_missile_impact", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( common_scripts\utility::flag( "trig_crash_blackhawk_crash" ) )
|
|
break;
|
|
|
|
var_1 = randomintrange( 0, var_0.size - 1 );
|
|
|
|
if ( isdefined( var_0[var_1] ) )
|
|
playfx( level._effect["temp_missile_impact"], var_0[var_1].origin );
|
|
|
|
var_2 = randomfloatrange( 2.25, 3.0 );
|
|
wait( var_2 );
|
|
}
|
|
}
|
|
|
|
blackhawk_countermeasure()
|
|
{
|
|
var_0 = getent( "trig_countermeasure_blackhawk", "targetname" );
|
|
var_0 waittill( "trigger" );
|
|
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "streets_countermeasure_blackhawk" );
|
|
var_1.script_vehicle_selfremove = 1;
|
|
var_1 vehicle_setspeedimmediate( 60 );
|
|
var_2 = common_scripts\utility::getfx( "chopper_countermeasure" );
|
|
var_3 = common_scripts\utility::spawn_tag_origin();
|
|
var_3.origin = var_1 gettagorigin( "tag_light_l_wing" );
|
|
var_3.angles = var_1 gettagangles( "tag_light_l_wing" );
|
|
var_3 linkto( var_1 );
|
|
var_4 = common_scripts\utility::spawn_tag_origin();
|
|
var_4.origin = var_1 gettagorigin( "tag_light_r_wing" );
|
|
var_4.angles = var_1 gettagangles( "tag_light_r_wing" );
|
|
var_4 linkto( var_1 );
|
|
wait 2.75;
|
|
|
|
for ( var_5 = 0; var_5 < 5; var_5++ )
|
|
wait 0.3;
|
|
|
|
var_3 delete();
|
|
var_4 delete();
|
|
}
|
|
|
|
nh90_convoy_choppers()
|
|
{
|
|
var_0 = getent( "convoy_helicopter_crash_location", "targetname" );
|
|
var_1 = getent( "trig_enemy_convoy_choppers", "targetname" );
|
|
var_1 waittill( "trigger" );
|
|
|
|
if ( !common_scripts\utility::flag( "m880_has_spawned" ) )
|
|
{
|
|
var_2 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "streets_enemy_convoy_chopper1" );
|
|
var_2 vehicle_turnengineoff();
|
|
var_2 thread maps\flood_audio::flood_convoy_chopper1_sfx();
|
|
var_2.script_vehicle_selfremove = 1;
|
|
var_2 vehicle_setspeedimmediate( 60 );
|
|
var_2.perferred_crash_location = var_0;
|
|
wait 2.5;
|
|
var_3 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "streets_enemy_convoy_chopper2" );
|
|
var_3 vehicle_turnengineoff();
|
|
var_3 thread maps\flood_audio::flood_convoy_chopper2_sfx();
|
|
var_3.script_vehicle_selfremove = 1;
|
|
var_3.perferred_crash_location = var_0;
|
|
wait 1;
|
|
wait 2;
|
|
var_4 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "streets_enemy_convoy_chopper4" );
|
|
var_4 vehicle_turnengineoff();
|
|
var_4 thread maps\flood_audio::flood_convoy_chopper4_sfx();
|
|
var_4.script_vehicle_selfremove = 1;
|
|
var_4 hidepart( "door_R", var_4.model );
|
|
var_4 hidepart( "door_R_handle", var_4.model );
|
|
var_4 hidepart( "door_R_lock", var_4.model );
|
|
var_4.perferred_crash_location = var_0;
|
|
}
|
|
}
|
|
|
|
flag_waitopen_any( var_0, var_1 )
|
|
{
|
|
while ( common_scripts\utility::flag( var_0 ) )
|
|
level waittill( var_0 );
|
|
}
|
|
|
|
aent_flag_waitopen_either( var_0, var_1 )
|
|
{
|
|
while ( isdefined( self ) )
|
|
{
|
|
if ( !maps\_utility::ent_flag( var_0 ) )
|
|
return;
|
|
|
|
if ( !maps\_utility::ent_flag( var_1 ) )
|
|
return;
|
|
|
|
common_scripts\utility::waittill_either( var_0, var_1 );
|
|
}
|
|
}
|
|
|
|
awaittill_either( var_0, var_1 )
|
|
{
|
|
self endon( var_0 );
|
|
self waittill( var_1 );
|
|
}
|
|
|
|
kill_infil_enemies()
|
|
{
|
|
var_0 = maps\_utility::get_ai_group_ai( "streets_enemy_tank_soldiers" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
var_2 kill();
|
|
|
|
if ( isalive( level.infil_rpg_guy ) )
|
|
level.infil_rpg_guy kill();
|
|
}
|