1619 lines
54 KiB
Plaintext
1619 lines
54 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
section_main()
|
|
{
|
|
|
|
}
|
|
|
|
section_precache()
|
|
{
|
|
precachemodel( "com_plastic_crate_pallet" );
|
|
precachemodel( "street_trashcan_open_iw6" );
|
|
precachemodel( "com_folding_chair" );
|
|
precachemodel( "com_trashbin01" );
|
|
precachemodel( "com_barrel_green" );
|
|
precachemodel( "flood_crate_plastic_single02" );
|
|
precachemodel( "com_cardboardboxshortclosed_1" );
|
|
precachemodel( "com_pallet_2" );
|
|
precachemodel( "ac_unit_1_lrg_scaled" );
|
|
precachemodel( "ac_unit_2_box1" );
|
|
precachemodel( "ac_unit_2_wide_scaled" );
|
|
precachemodel( "com_plasticcase_beige_rifle" );
|
|
precachemodel( "maintenance_box" );
|
|
precachemodel( "com_plasticcase_beige_big_iw6" );
|
|
precachemodel( "com_plasticcase_beige_big_iw6" );
|
|
precachemodel( "flood_debris_small" );
|
|
precachemodel( "pipe_metal_thick_straight_16_black" );
|
|
precachemodel( "pipe_metal_thick_joint_90_medium_black" );
|
|
precachemodel( "pipe_metal_thick_joint_2way_black" );
|
|
precachemodel( "pipe_metal_thick_straight_64_black" );
|
|
precachemodel( "debris_rubble_pile_02" );
|
|
precachemodel( "flood_antenna_mobile_2" );
|
|
precachemodel( "vehicle_civilian_sedan_gray_destroy_iw6" );
|
|
precachemodel( "vehicle_civilian_sedan_red_destroy_iw6" );
|
|
precachemodel( "vehicle_civilian_sedan_bronze_iw6" );
|
|
precachemodel( "vehicle_city_car_blue" );
|
|
precachemodel( "vehicle_city_car_silver" );
|
|
precachemodel( "vehicle_city_car_red" );
|
|
}
|
|
|
|
section_flag_inits()
|
|
{
|
|
level.player maps\_utility::ent_flag_init( "player_in_swept" );
|
|
common_scripts\utility::flag_init( "player_on_mall_roof" );
|
|
common_scripts\utility::flag_init( "mall_attack_player" );
|
|
common_scripts\utility::flag_init( "rocket_event" );
|
|
common_scripts\utility::flag_init( "ally0_breach_ready" );
|
|
common_scripts\utility::flag_init( "ally2_breach_ready" );
|
|
common_scripts\utility::flag_init( "breach_door_open" );
|
|
common_scripts\utility::flag_init( "event_quaker_big" );
|
|
common_scripts\utility::flag_init( "mall_rooftop_heli_flyaway" );
|
|
common_scripts\utility::flag_init( "mall_rooftop_sfx_fadeout" );
|
|
common_scripts\utility::flag_init( "stair_post_quake_vo_done" );
|
|
common_scripts\utility::flag_init( "mall_weapons_free" );
|
|
common_scripts\utility::flag_init( "mall_player_falling" );
|
|
}
|
|
|
|
mall_start()
|
|
{
|
|
maps\flood_util::player_move_to_checkpoint_start( "mall_start" );
|
|
visionsetnaked( "flood_warehouse", 0 );
|
|
maps\_utility::fog_set_changes( "flood_warehouse", 0 );
|
|
level.cw_vision_above = "flood_warehouse";
|
|
level.cw_fog_above = "flood_warehouse";
|
|
maps\flood_util::spawn_allies();
|
|
maps\flood_util::allies_move_to_checkpoint_start( "mall", 1 );
|
|
common_scripts\utility::flag_set( "stair_post_quake_vo_done" );
|
|
level.allies[0] thread ally0_mall();
|
|
level.allies[1] thread ally1_mall();
|
|
level.allies[2] thread ally2_mall();
|
|
thread maps\flood_flooding::start_coverheight_water_rising( 2, 1, "coverwater_warehouse" );
|
|
thread maps\flood_coverwater::register_coverwater_area( "coverwater_warehouse", "swept_away" );
|
|
level.cw_player_in_rising_water = 0;
|
|
level.cw_player_allowed_underwater_time = 1;
|
|
thread mall_roof_door_firstframe();
|
|
maps\flood_util::setup_default_weapons();
|
|
thread maps\flood_flooding::enemy_spanish_vo();
|
|
thread maps\flood_audio::sfx_flood_int_alarm_stop();
|
|
thread maps\flood_streets::delete_ent_by_script_noteworthy( "streets_helicopter_crash_location" );
|
|
thread maps\flood_fx::mall_light_cleanup();
|
|
thread maps\flood_fx::warelights_off();
|
|
thread maps\flood_fx::garage_malllight_off();
|
|
}
|
|
|
|
mall()
|
|
{
|
|
level thread maps\_utility::autosave_by_name( "mall" );
|
|
common_scripts\utility::flag_clear( "cw_player_no_speed_adj" );
|
|
thread maps\flood_audio::sfx_stop_stairwell_water();
|
|
thread maps\flood_audio::sfx_mall_water();
|
|
thread toggle_mall_door_clip( "hide" );
|
|
thread watch_player();
|
|
thread watch_goalvolume();
|
|
thread enemy_setup_vign();
|
|
thread enemy_twitch();
|
|
thread mall_rootop_event();
|
|
thread mall_rooftop_pickup_heli();
|
|
thread mall_rooftop_flyby_helis();
|
|
thread mall_attack_player_vo();
|
|
thread trigger_player_mall_rooftop();
|
|
thread maps\flood_fx::fx_mall_roof_water_show();
|
|
thread maps\flood_fx::fx_mall_roof_amb_fx();
|
|
thread maps\flood_fx::fx_mall_rooftop_debris();
|
|
thread mall_door_temp_collision();
|
|
level waittill( "swept_away" );
|
|
thread maps\flood_util::kill_all_enemies();
|
|
thread maps\flood_audio::sfx_stop_mall_water();
|
|
var_0 = level.player getweaponslistprimaries();
|
|
|
|
foreach ( var_2 in var_0 )
|
|
level.player takeweapon( var_2 );
|
|
|
|
maps\_utility::battlechatter_off( "allies" );
|
|
maps\_utility::battlechatter_off( "axis" );
|
|
}
|
|
|
|
block_until_ground_collapse( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
level endon( "swept_away" );
|
|
var_1 = getent( "mall_floor", "targetname" );
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = 8;
|
|
|
|
var_2 = undefined;
|
|
var_3 = undefined;
|
|
|
|
for (;;)
|
|
{
|
|
var_4 = bullettrace( self.origin + ( 0, 0, 12 ), self.origin - ( 0, 0, 1024 ), 0, var_1 );
|
|
var_5 = bullettrace( self.origin + ( 0, 6, 12 ), self.origin - ( 0, 6, 1024 ), 0, var_1 );
|
|
|
|
if ( isdefined( var_4["entity"] ) && isdefined( var_4["entity"].targetname ) )
|
|
{
|
|
if ( var_4["entity"].targetname == "flood_mallroof_center" || var_4["entity"].targetname == "flood_mallroof_back" || var_4["entity"].targetname == "acbox_obj" )
|
|
var_2 = 1;
|
|
else
|
|
var_2 = 0;
|
|
}
|
|
else
|
|
var_2 = 0;
|
|
|
|
if ( isdefined( var_5["entity"] ) && isdefined( var_5["entity"].targetname ) )
|
|
{
|
|
if ( var_5["entity"].targetname == "flood_mallroof_center" || var_5["entity"].targetname == "flood_mallroof_back" || var_5["entity"].targetname == "acbox_obj" )
|
|
var_3 = 1;
|
|
else
|
|
var_3 = 0;
|
|
}
|
|
else
|
|
var_3 = 0;
|
|
|
|
if ( var_2 )
|
|
{
|
|
if ( isplayer( self ) )
|
|
{
|
|
if ( abs( self.origin[2] - var_4["position"][2] ) > var_0 && self isonground() )
|
|
{
|
|
maps\flood_util::jkuprint( "PLAYER FALLING! " + var_4["surfacetype"] + " " + ( self.origin[2] - var_4["position"][2] ) );
|
|
player_ground_collapse();
|
|
break;
|
|
}
|
|
}
|
|
else if ( abs( self.origin[2] - var_4["position"][2] ) > var_0 )
|
|
{
|
|
maps\flood_util::jkuprint( "AI FALLING! " + var_4["surfacetype"] + " " + ( self.origin[2] - var_4["position"][2] ) );
|
|
break;
|
|
}
|
|
}
|
|
else if ( var_3 )
|
|
{
|
|
if ( isplayer( self ) )
|
|
{
|
|
if ( abs( self.origin[2] - var_5["position"][2] ) > var_0 && self isonground() )
|
|
{
|
|
maps\flood_util::jkuprint( "PLAYER FALLING! " + var_5["surfacetype"] + " " + ( self.origin[2] - var_5["position"][2] ) );
|
|
player_ground_collapse();
|
|
break;
|
|
}
|
|
}
|
|
else if ( abs( self.origin[2] - var_5["position"][2] ) > var_0 )
|
|
{
|
|
maps\flood_util::jkuprint( "AI FALLING! " + var_5["surfacetype"] + " " + ( self.origin[2] - var_5["position"][2] ) );
|
|
break;
|
|
}
|
|
}
|
|
else if ( isplayer( self ) )
|
|
{
|
|
player_ground_collapse();
|
|
break;
|
|
}
|
|
else if ( isai( self ) )
|
|
break;
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
player_ground_collapse()
|
|
{
|
|
common_scripts\utility::flag_set( "mall_rooftop_sfx_fadeout" );
|
|
level.swept_away = 1;
|
|
earthquake( 0.3, 1, level.player.origin, 1600 );
|
|
}
|
|
|
|
watch_player()
|
|
{
|
|
level endon( "swept_away" );
|
|
level endon( "mall_attack_player" );
|
|
common_scripts\utility::flag_wait( "breach_door_open" );
|
|
var_0 = 0;
|
|
var_1 = randomfloatrange( 10, 12.5 );
|
|
|
|
for (;;)
|
|
{
|
|
var_2 = undefined;
|
|
var_3 = undefined;
|
|
var_4 = getentarray( "grenade", "classname" );
|
|
|
|
foreach ( var_6 in var_4 )
|
|
{
|
|
if ( getmissileowner( var_6 ) == level.player )
|
|
{
|
|
var_2 = 1;
|
|
var_3 = var_6.model;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( isdefined( var_2 ) && var_2 )
|
|
{
|
|
if ( var_3 == "projectile_m67fraggrenade" || var_3 == "projectile_m84_flashbang_grenade" )
|
|
wait 0.75;
|
|
|
|
break;
|
|
}
|
|
else if ( level.player attackbuttonpressed() )
|
|
break;
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
thread mall_attack_player();
|
|
}
|
|
|
|
watch_glass()
|
|
{
|
|
level endon( "swept_away" );
|
|
level endon( "mall_attack_player" );
|
|
common_scripts\utility::flag_wait( "mall_breach_start" );
|
|
var_0 = getglassarray( "mall_roof_glass" );
|
|
var_1 = 0;
|
|
|
|
while ( !var_1 )
|
|
{
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
if ( isglassdestroyed( var_3 ) )
|
|
var_1 = 1;
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
thread mall_attack_player();
|
|
}
|
|
|
|
watch_player_pos()
|
|
{
|
|
if ( common_scripts\utility::flag( "mall_attack_player" ) )
|
|
return;
|
|
|
|
self endon( "death" );
|
|
level endon( "swept_away" );
|
|
level endon( "mall_attack_player" );
|
|
common_scripts\utility::flag_wait( "player_on_mall_roof" );
|
|
var_0 = 1;
|
|
|
|
while ( var_0 )
|
|
{
|
|
var_1 = gettime();
|
|
|
|
while ( self cansee( level.player ) )
|
|
{
|
|
if ( gettime() - var_1 > 2000 )
|
|
{
|
|
var_0 = 0;
|
|
break;
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
self.spotter = 1;
|
|
level.allies[0] thread maps\_utility::dialogue_queue( "flood_bkr_spottedus" );
|
|
thread mall_attack_player();
|
|
}
|
|
|
|
watch_player_onroof_timer()
|
|
{
|
|
if ( common_scripts\utility::flag( "mall_attack_player" ) )
|
|
return;
|
|
|
|
level endon( "swept_away" );
|
|
level endon( "mall_attack_player" );
|
|
common_scripts\utility::flag_wait( "player_on_mall_roof" );
|
|
wait 0.5;
|
|
maps\_utility::radio_dialogue( "flood_bkr_hotonrooksmark" );
|
|
wait 1;
|
|
maps\_utility::radio_dialogue( "flood_bkr_thejump" );
|
|
wait 3;
|
|
maps\_utility::radio_dialogue( "flood_bkr_cantwait" );
|
|
wait 0.5;
|
|
common_scripts\utility::flag_set( "mall_weapons_free" );
|
|
level.allies[0].ignoreall = 0;
|
|
level.allies[1].ignoreall = 0;
|
|
level.allies[2].ignoreall = 0;
|
|
wait 2;
|
|
thread mall_attack_player();
|
|
}
|
|
|
|
watch_goalvolume()
|
|
{
|
|
level endon( "swept_away" );
|
|
level endon( "roofcollapse_start" );
|
|
common_scripts\utility::flag_clear( "enemies_use_left" );
|
|
common_scripts\utility::flag_clear( "enemies_use_main" );
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "enemies_use_left" );
|
|
common_scripts\utility::flag_clear( "enemies_use_main" );
|
|
var_0 = maps\_utility::get_ai_group_ai( "mall_ai" );
|
|
maps\flood_util::reassign_goal_volume( var_0, "mall_goalvolume_left" );
|
|
common_scripts\utility::flag_wait( "enemies_use_main" );
|
|
common_scripts\utility::flag_clear( "enemies_use_left" );
|
|
var_0 = maps\_utility::get_ai_group_ai( "mall_ai" );
|
|
maps\flood_util::reassign_goal_volume( var_0, "mall_goalvolume_main" );
|
|
}
|
|
}
|
|
|
|
flood_spawner( var_0, var_1, var_2 )
|
|
{
|
|
level endon( "swept_away" );
|
|
level endon( var_0 );
|
|
var_3 = [];
|
|
var_3[0] = getent( "mall_ai_rocket_jumprail", "targetname" );
|
|
var_3[1] = getent( "mall_ai_rocket_farbalc", "targetname" );
|
|
var_3[2] = getent( "mall_ai_rocket_backwalkway", "targetname" );
|
|
var_3[3] = getent( "mall_ai_walkway_a", "targetname" );
|
|
var_3[4] = getent( "mall_ai_walkway_b", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
var_4 = maps\_utility::get_living_ai_array( "mall_ai", "script_noteworthy" );
|
|
|
|
if ( var_4.size <= var_1 )
|
|
{
|
|
if ( common_scripts\utility::flag( "enemies_use_main" ) )
|
|
var_5 = var_3[randomint( var_3.size )];
|
|
else
|
|
var_5 = var_3[randomint( var_3.size - 2 )];
|
|
|
|
var_5 maps\_utility::remove_spawn_function( ::mall_enemy_spawn_func );
|
|
var_5 maps\_utility::add_spawn_function( ::mall_enemy_spawn_func, var_2 );
|
|
var_5 maps\_utility::spawn_ai( 1 );
|
|
wait 1;
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
weapon_make_fall()
|
|
{
|
|
self endon( "death" );
|
|
common_scripts\utility::flag_wait( "ally_area_falling" );
|
|
var_0 = spawn( "script_model", self.origin );
|
|
wait 0.1;
|
|
var_0 thread event_gravity();
|
|
self linkto( var_0 );
|
|
wait 1;
|
|
self delete();
|
|
var_0 delete();
|
|
}
|
|
|
|
mall_delete_warehouse_ents()
|
|
{
|
|
var_0 = getentarray( "mall_ware_brush_hide", "targetname" );
|
|
maps\_utility::array_delete( var_0 );
|
|
var_0 = getentarray( "mall_brush_hide", "targetname" );
|
|
maps\_utility::array_delete( var_0 );
|
|
var_0 = getentarray( "warevolumes", "targetname" );
|
|
maps\_utility::array_delete( var_0 );
|
|
var_0 = getentarray( "mall_ware_model_hide", "targetname" );
|
|
maps\_utility::array_delete( var_0 );
|
|
var_1 = getentarray( "warehouse_door_burst1", "targetname" );
|
|
maps\_utility::array_delete( var_1 );
|
|
var_1 = getentarray( "warehouse_door_burst2", "targetname" );
|
|
maps\_utility::array_delete( var_1 );
|
|
var_1 = getentarray( "warehouse_door_burst3", "targetname" );
|
|
maps\_utility::array_delete( var_1 );
|
|
}
|
|
|
|
mall_delete_rooftop_ents()
|
|
{
|
|
var_0 = getentarray( "mall_cleanup", "targetname" );
|
|
maps\_utility::array_delete( var_0 );
|
|
var_0 = getentarray( "acbox_obj", "targetname" );
|
|
maps\_utility::array_delete( var_0 );
|
|
var_0 = getentarray( "mall_bokehdot", "targetname" );
|
|
maps\_utility::array_delete( var_0 );
|
|
var_0 = getentarray( "mall_cleanup", "script_noteworthy" );
|
|
maps\_utility::array_delete( var_0 );
|
|
var_0 = getentarray( "mall_ai", "script_noteworthy" );
|
|
maps\_utility::array_delete( var_0 );
|
|
var_1 = getentarray( "mall_rooftop_heli", "targetname" );
|
|
maps\_utility::array_delete( var_1 );
|
|
var_1 = getentarray( "mall_rooftop_heli_flyby1", "targetname" );
|
|
maps\_utility::array_delete( var_1 );
|
|
var_1 = getentarray( "mall_rooftop_heli_flyby2", "targetname" );
|
|
maps\_utility::array_delete( var_1 );
|
|
var_1 = getentarray( "mall_rooftop_heli_flyby3", "targetname" );
|
|
maps\_utility::array_delete( var_1 );
|
|
}
|
|
|
|
mall_rootop_event()
|
|
{
|
|
level.player endon( "death" );
|
|
level endon( "swept_away" );
|
|
mallroof_firstframe();
|
|
level.mallroof_struct thread maps\_anim::anim_loop_solo( level.mallroof_impact, "mallroof_idle", "stop_loop" );
|
|
var_0 = getent( "warehouse_waters_retarget", "targetname" );
|
|
level.mallroof_acboxes thread maps\flood_util::spawn_and_link_models_to_tags( "acbox_obj", var_0 );
|
|
level.mallroof_smallrubble thread maps\flood_util::spawn_and_link_models_to_tags( "acbox_obj", var_0 );
|
|
mall_delete_warehouse_ents();
|
|
common_scripts\utility::exploder( "mr_dust_slight" );
|
|
var_1 = getentarray( "mall_ware_brush_show", "targetname" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
var_3 show();
|
|
|
|
common_scripts\utility::flag_wait( "mall_attack_player" );
|
|
var_5 = getent( "flood_mall_roof_opfor", "targetname" );
|
|
var_5.animname = "generic";
|
|
var_5 thread maps\_utility::dialogue_queue( "flood_vz2_americans" );
|
|
var_6 = getent( "mall_ai_rocket_backwalkway", "targetname" );
|
|
var_6 maps\_utility::add_spawn_function( ::mall_enemy_spawn_func, "mall_goalvolume_main", "mall_enemy_cover_close" );
|
|
var_6 maps\_utility::spawn_ai( 1 );
|
|
var_6 = getent( "mall_ai_rocket_farbalc", "targetname" );
|
|
var_6 maps\_utility::add_spawn_function( ::mall_enemy_spawn_func, "mall_goalvolume_main", "mall_enemy_cover_balc" );
|
|
var_6 maps\_utility::spawn_ai( 1 );
|
|
var_6 = getent( "mall_ai_rocket_jumprail", "targetname" );
|
|
var_6 maps\_utility::add_spawn_function( ::mall_enemy_spawn_func, "mall_goalvolume_main", "mall_enemy_cover_farplant" );
|
|
var_6 maps\_utility::spawn_ai( 1 );
|
|
common_scripts\utility::flag_wait( "player_on_mall_roof" );
|
|
thread flood_spawner( "rocket_event", 4, "mall_goalvolume_main" );
|
|
var_7 = 8.0;
|
|
wait( var_7 );
|
|
thread ally_roof_collapse_vo();
|
|
common_scripts\utility::exploder( "mall_roof_dust" );
|
|
var_8 = 5.0;
|
|
wait( var_8 );
|
|
maps\_utility::stop_exploder( "mr_dust_slight" );
|
|
common_scripts\utility::exploder( "mall_roof_dust" );
|
|
common_scripts\utility::exploder( "mr_dust_freguent" );
|
|
common_scripts\utility::exploder( "mr_updust" );
|
|
wait 3;
|
|
level notify( "roofcollapse_start" );
|
|
common_scripts\utility::flag_set( "rocket_event" );
|
|
var_9 = maps\_utility::get_ai_group_ai( "mall_ai" );
|
|
|
|
foreach ( var_11 in var_9 )
|
|
{
|
|
var_11.ignoreall = 1;
|
|
var_11 maps\_utility::set_ignoresuppression( 1 );
|
|
var_11 thread ramp_down_accurracy( 2, 0 );
|
|
}
|
|
|
|
maps\flood_util::reassign_goal_volume( var_9, "mall_goalvolume_roofcollapse" );
|
|
|
|
foreach ( var_11 in var_9 )
|
|
var_11 thread roofcollapse_retreat();
|
|
|
|
thread flood_spawner( "swept_away", 4, "mall_goalvolume_roofcollapse" );
|
|
common_scripts\utility::exploder( "mr_updust" );
|
|
wait 3;
|
|
level.mallroof_struct notify( "stop_loop" );
|
|
level.mallroof_struct thread maps\_anim::anim_single( level.mallroof_array, "mallroof_collapse" );
|
|
thread maps\flood_audio::sfx_rooftop_collapse();
|
|
thread event_quaker_collapse();
|
|
common_scripts\utility::exploder( "mall_roof_dust" );
|
|
common_scripts\utility::flag_wait( "enemy_area_falling" );
|
|
var_15 = [];
|
|
var_16 = level.scr_model[level.mallroof_far.animname];
|
|
var_17 = getnumparts( var_16 );
|
|
|
|
for ( var_18 = 0; var_18 < var_17; var_18++ )
|
|
{
|
|
var_19 = getpartname( var_16, var_18 );
|
|
var_20 = getsubstr( var_19, 0, var_19.size - 3 );
|
|
|
|
if ( var_20 == "tag_corpse" )
|
|
{
|
|
var_15[var_15.size] = level.mallroof_far gettagorigin( var_19 );
|
|
continue;
|
|
}
|
|
|
|
var_15[var_15.size] = ( 99999, 99999, 99999 );
|
|
}
|
|
|
|
var_21 = getcorpsearray();
|
|
var_22 = getent( "corpse_fall_volume", "targetname" );
|
|
var_23 = [];
|
|
var_23[var_23.size] = "j_mainroot";
|
|
var_23[var_23.size] = "j_neck";
|
|
var_23[var_23.size] = "j_ankle_le";
|
|
var_23[var_23.size] = "j_ankle_ri";
|
|
|
|
foreach ( var_25 in var_21 )
|
|
{
|
|
var_26 = var_25 common_scripts\utility::spawn_tag_origin();
|
|
|
|
if ( var_26 istouching( var_22 ) )
|
|
{
|
|
var_27 = [];
|
|
|
|
foreach ( var_29 in var_23 )
|
|
{
|
|
var_30 = maps\flood_util::bullet_trace_debug( var_25 gettagorigin( var_29 ) + ( 0, 0, 12 ), var_25 gettagorigin( var_29 ) - ( 0, 0, 60 ), 0, "white", 200, 0 );
|
|
|
|
if ( isdefined( var_30["entity"] ) && isdefined( var_30["entity"].targetname ) && var_30["entity"].targetname == "flood_mallroof_far" )
|
|
var_27[var_27.size] = var_30["position"];
|
|
}
|
|
|
|
if ( var_27.size > 0 )
|
|
{
|
|
var_32 = [];
|
|
|
|
foreach ( var_34 in var_27 )
|
|
var_32[var_32.size] = maps\_utility::get_closest_point( var_34, var_15 );
|
|
|
|
var_36 = [];
|
|
|
|
foreach ( var_34 in var_27 )
|
|
var_36[var_36.size] = distance2d( var_34, var_32[var_36.size] );
|
|
|
|
var_39 = var_36[0];
|
|
var_40 = 0;
|
|
|
|
for ( var_18 = 0; var_18 < var_36.size; var_18++ )
|
|
{
|
|
if ( var_36[var_18] < var_39 )
|
|
var_40 = var_18;
|
|
}
|
|
|
|
var_25 linkto( level.mallroof_far, getpartname( var_16, common_scripts\utility::array_find( var_15, var_32[var_40] ) ) );
|
|
}
|
|
}
|
|
|
|
var_26 delete();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "player_area_falling" );
|
|
thread maps\flood_swept::swept_water_toggle( "swim", "show" );
|
|
thread ally_roof_collapsing_vo();
|
|
thread player_disallow_jump();
|
|
level.player disableweaponpickup();
|
|
var_42 = getent( "weapon_fall_volume", "targetname" );
|
|
var_43 = maps\_utility::getallweapons();
|
|
|
|
foreach ( var_45 in var_43 )
|
|
{
|
|
if ( var_45 istouching( var_42 ) )
|
|
var_45 thread weapon_make_fall();
|
|
}
|
|
|
|
maps\_utility::stop_exploder( "mall_floating_debri_med" );
|
|
maps\_utility::delete_exploder( "mall_floating_debri_med" );
|
|
level.player block_until_ground_collapse();
|
|
var_47 = getentarray( "grenade", "classname" );
|
|
|
|
foreach ( var_49 in var_47 )
|
|
var_49 delete();
|
|
|
|
level.player enableinvulnerability();
|
|
level.player freezecontrols( 1 );
|
|
level.player allowprone( 0 );
|
|
level.player allowcrouch( 0 );
|
|
level.player disableweapons();
|
|
level.player hideviewmodel();
|
|
maps\_utility::slowmo_start();
|
|
maps\_utility::slowmo_setspeed_slow( 0.5 );
|
|
maps\_utility::slowmo_setlerptime_in( 0.1 );
|
|
maps\_utility::slowmo_lerp_in();
|
|
var_51 = maps\_utility::spawn_anim_model( "player_rig", level.player.origin );
|
|
var_51.angles = level.player.angles;
|
|
thread smooth_player_link( var_51, 0.25 );
|
|
level.player thread maps\_anim::anim_single_solo( var_51, "mall_roofcollapse_player01" );
|
|
common_scripts\utility::flag_set( "mall_player_falling" );
|
|
level.flood_mall_weapon_model = level.player maps\flood_util::create_world_model_from_ent_weapon();
|
|
level.flood_mall_weapon_model.origin = var_51 gettagorigin( "tag_weapon" );
|
|
level.flood_mall_weapon_model.angles = var_51 gettagangles( "tag_weapon" );
|
|
level.flood_mall_weapon_model linkto( var_51, "tag_weapon" );
|
|
|
|
for (;;)
|
|
{
|
|
var_52 = bullettrace( level.player.origin + ( 0, 0, 52 ), level.player.origin + ( 0, 0, 100 ), 0, self );
|
|
|
|
if ( var_52["surfacetype"] == "water" )
|
|
{
|
|
thread maps\flood_swept::swept_underwater();
|
|
break;
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
level.player notify( "noHealthOverlay" );
|
|
level.cover_warnings_disabled = 1;
|
|
thread maps\flood_audio::swept_away_scene( "beginning" );
|
|
maps\_utility::slowmo_setlerptime_out( 0.5 );
|
|
maps\_utility::slowmo_lerp_out();
|
|
maps\_utility::slowmo_end();
|
|
level.player unlink();
|
|
var_51 delete();
|
|
level.player freezecontrols( 0 );
|
|
thread maps\flood_audio::kill_sfx_dam_sirens();
|
|
level notify( "swept_away" );
|
|
}
|
|
|
|
ramp_down_accurracy( var_0, var_1 )
|
|
{
|
|
self endon( "death" );
|
|
var_0 = var_0 * 1000;
|
|
var_2 = var_0 / 50;
|
|
var_3 = self.baseaccuracy / var_2;
|
|
|
|
for ( var_4 = 0; var_4 < var_2; var_4++ )
|
|
{
|
|
self.baseaccuracy = self.baseaccuracy - var_3;
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
self.baseaccuracy = var_1;
|
|
}
|
|
|
|
corpse_ragdoll_when_vertical()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "swept_away" );
|
|
|
|
if ( isalive( self ) )
|
|
{
|
|
var_0 = self gettagangles( "tag_origin" );
|
|
|
|
while ( abs( var_0[2] ) < 35 && isalive( self ) )
|
|
{
|
|
var_0 = self gettagangles( "tag_origin" );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
maps\flood_util::jkuprint( "vertical" );
|
|
self unlink();
|
|
var_1 = common_scripts\utility::spawn_tag_origin();
|
|
self linkto( var_1 );
|
|
var_1 movegravity( ( 0, 0, -100 ), 3 );
|
|
wait 3;
|
|
var_1 delete();
|
|
}
|
|
|
|
player_disallow_jump()
|
|
{
|
|
level.player allowjump( 0 );
|
|
}
|
|
|
|
smooth_player_link( var_0, var_1 )
|
|
{
|
|
level.player setstance( "stand" );
|
|
level.player playerlinktoblend( var_0, "tag_player", var_1 );
|
|
wait( var_1 );
|
|
level.player playerlinktodelta( var_0, "tag_player", 1, 15, 15, 15, 15, 1 );
|
|
}
|
|
|
|
mall_rooftop_flyby_helis()
|
|
{
|
|
var_0 = getent( "player_mall_rooftop", "targetname" );
|
|
var_0 waittill( "trigger" );
|
|
thread mall_rooftop_flyby_heli1();
|
|
thread mall_rooftop_flyby_heli2();
|
|
thread mall_rooftop_flyby_heli3();
|
|
}
|
|
|
|
mall_rooftop_flyby_heli1()
|
|
{
|
|
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "mall_rooftop_heli_flyby1" );
|
|
var_0 endon( "deathspin" );
|
|
var_0 vehicle_turnengineoff();
|
|
thread maps\flood_audio::sfx_chopper_4_play( var_0 );
|
|
var_0 sethoverparams( 10, 10, 20 );
|
|
var_0 setmaxpitchroll( 30, 30 );
|
|
var_0 vehicle_setspeed( 30, 10, 10 );
|
|
var_1 = common_scripts\utility::getstruct( "mall_rooftop_heli_flyby1_hover", "targetname" );
|
|
|
|
while ( distancesquared( var_1.origin, var_0.origin ) > 400000 )
|
|
wait 0.05;
|
|
|
|
var_0 thread maps\_utility::vehicle_detachfrompath();
|
|
var_2 = common_scripts\utility::getstruct( "mall_rooftop_heli_flyby1_flyaway", "targetname" );
|
|
var_0 setvehgoalpos( var_2.origin, 1 );
|
|
var_0 vehicle_setspeed( 20 );
|
|
wait 8.0;
|
|
var_0 thread maps\_vehicle::vehicle_paths( var_2 );
|
|
level waittill( "swept_away" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_0 delete();
|
|
}
|
|
|
|
mall_rooftop_flyby_heli2()
|
|
{
|
|
wait 15.0;
|
|
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "mall_rooftop_heli_flyby2" );
|
|
var_0 endon( "deathspin" );
|
|
var_0 vehicle_turnengineoff();
|
|
thread maps\flood_audio::sfx_chooper_wait_and_play( var_0 );
|
|
var_0 setmaxpitchroll( 30, 30 );
|
|
level waittill( "swept_away" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_0 delete();
|
|
}
|
|
|
|
mall_rooftop_flyby_heli3()
|
|
{
|
|
wait 25.0;
|
|
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "mall_rooftop_heli_flyby3" );
|
|
var_0 setmaxpitchroll( 30, 30 );
|
|
level waittill( "swept_away" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_0 delete();
|
|
}
|
|
|
|
mall_rooftop_pickup_heli()
|
|
{
|
|
common_scripts\utility::flag_wait( "mall_attack_player" );
|
|
wait 6.0;
|
|
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "mall_rooftop_heli" );
|
|
var_0 vehicle_turnengineoff();
|
|
thread maps\flood_audio::sfx_play_chopper_5( var_0 );
|
|
var_1 = getent( "mall_roof_helicopter_crash_location", "targetname" );
|
|
var_0.perferred_crash_location = var_1;
|
|
var_0 setmaxpitchroll( 30, 60 );
|
|
var_0 setyawspeedbyname( "slow" );
|
|
var_0 sethoverparams( 50, 10, 20 );
|
|
var_0.path_gobbler = 1;
|
|
var_0 endon( "death" );
|
|
var_2 = common_scripts\utility::getstruct( "mall_rooftop_heli_hover", "targetname" );
|
|
|
|
while ( distancesquared( var_2.origin, var_0.origin ) > 4000 )
|
|
wait 0.05;
|
|
|
|
var_3 = spawn( "script_model", ( 2176, -6784, 672 ) );
|
|
var_0 setlookatent( var_3 );
|
|
common_scripts\utility::flag_set( "mall_rooftop_heli_flyaway" );
|
|
var_0 thread maps\_utility::vehicle_detachfrompath();
|
|
var_4 = common_scripts\utility::getstruct( "mall_rooftop_heli_flyaway", "targetname" );
|
|
var_0 vehicle_setspeed( 2 );
|
|
var_0 setvehgoalpos( var_4.origin, 1 );
|
|
common_scripts\utility::flag_wait( "rocket_event" );
|
|
wait 7.0;
|
|
var_0.script_vehicle_selfremove = 1;
|
|
var_0 clearlookatent();
|
|
var_0 thread maps\_vehicle::vehicle_paths( var_4 );
|
|
wait 2.0;
|
|
var_0 setyawspeed( 100, 15 );
|
|
}
|
|
|
|
mall_rooftop_heli_damage_watcher()
|
|
{
|
|
self endon( "death" );
|
|
var_0 = 0;
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "damage", var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10 );
|
|
|
|
if ( var_2 == level.player )
|
|
var_0++;
|
|
|
|
if ( var_0 > 15 )
|
|
{
|
|
if ( !common_scripts\utility::flag( "mall_rooftop_heli_flyaway" ) )
|
|
{
|
|
thread maps\_utility::vehicle_detachfrompath();
|
|
var_11 = common_scripts\utility::getstruct( "mall_rooftop_heli_hover", "targetname" );
|
|
self vehicle_setspeed( 2 );
|
|
self setvehgoalpos( var_11.origin, 1 );
|
|
}
|
|
|
|
wait 2.5;
|
|
thread maps\flood_audio::sfx_kill_chopper_sound();
|
|
self kill();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
event_quaker_big( var_0 )
|
|
{
|
|
common_scripts\utility::flag_set( "event_quaker_big" );
|
|
level thread post_quake_vo();
|
|
level.player playsound( "scn_flood_mall_rumble_shake_int_lg" );
|
|
wait 1.893;
|
|
earthquake( 0.5, 1.5, level.player.origin, 1600 );
|
|
level.player playrumbleonentity( "light_1s" );
|
|
common_scripts\utility::exploder( "stairwell_dust" );
|
|
thread maps\flood_fx::light_flicker( "mall_flicker_light" );
|
|
wait 2.0;
|
|
thread event_quaker_indoor();
|
|
}
|
|
|
|
post_quake_vo()
|
|
{
|
|
level.player endon( "death" );
|
|
level.allies[0] endon( "death" );
|
|
level.allies[2] endon( "death" );
|
|
wait 2.9;
|
|
level.allies[2] maps\_utility::dialogue_queue( "flood_bkr_thisplaceisntgonna" );
|
|
wait 4.8;
|
|
level.allies[0] maps\_utility::dialogue_queue( "flood_vrg_allrightletsgo" );
|
|
common_scripts\utility::flag_set( "stair_post_quake_vo_done" );
|
|
}
|
|
|
|
event_quaker_indoor()
|
|
{
|
|
level endon( "swept_away" );
|
|
level endon( "player_on_mall_roof" );
|
|
|
|
for (;;)
|
|
{
|
|
level.player playsound( "scn_flood_mall_rumble_shake_int" );
|
|
thread maps\flood_audio::sfx_mall_ceiling_debris();
|
|
earthquake( randomfloatrange( 0.05, 0.175 ), randomfloatrange( 0.5, 1 ), level.player.origin, 1600 );
|
|
level.player playrumbleonentity( "light_1s" );
|
|
common_scripts\utility::exploder( "stairwell_dust" );
|
|
wait( randomfloatrange( 4, 7 ) );
|
|
}
|
|
}
|
|
|
|
event_quaker_outdoor()
|
|
{
|
|
level endon( "swept_away" );
|
|
level endon( "roofcollapse_start" );
|
|
common_scripts\utility::flag_wait( "player_on_mall_roof" );
|
|
|
|
for (;;)
|
|
{
|
|
earthquake( randomfloatrange( 0.075, 0.2 ), randomfloatrange( 2, 3 ), level.player.origin, 1600 );
|
|
level.player playrumbleonentity( "light_1s" );
|
|
common_scripts\utility::exploder( "mall_roof_dust" );
|
|
wait( randomfloatrange( 3, 7 ) );
|
|
}
|
|
}
|
|
|
|
event_quaker_collapse()
|
|
{
|
|
level endon( "swept_away" );
|
|
level thread event_rumble_collapse();
|
|
earthquake( 0.15, 11, level.player.origin, 1600 );
|
|
level.player playsound( "scn_flood_mall_rumble_02" );
|
|
level.player playrumbleonentity( "light_1s" );
|
|
wait 4;
|
|
earthquake( 0.4, 1, level.player.origin, 1600 );
|
|
level.player playsound( "scn_flood_mall_rumble_03" );
|
|
level.player playrumbleonentity( "heavy_1s" );
|
|
wait 1;
|
|
earthquake( 0.25, 1, level.player.origin, 1600 );
|
|
level.player playsound( "scn_flood_mall_rumble_04" );
|
|
level.player playrumbleonentity( "light_1s" );
|
|
wait 2.5;
|
|
earthquake( 0.5, 1, level.player.origin, 1600 );
|
|
level.player playsound( "scn_flood_mall_rumble_05" );
|
|
level.player playrumbleonentity( "heavy_1s" );
|
|
wait 1.5;
|
|
}
|
|
|
|
event_rumble_collapse()
|
|
{
|
|
var_0 = level.player maps\flood_util::create_rumble_ent( 1000, "mall_cleanup" );
|
|
var_0 playrumblelooponentity( "steady_rumble" );
|
|
|
|
while ( !common_scripts\utility::flag( "mall_player_falling" ) )
|
|
{
|
|
var_1 = distance( var_0.origin, level.player.origin );
|
|
|
|
if ( var_1 > 666 )
|
|
var_0.origin = var_0.origin + ( 0, 0, -2 );
|
|
else
|
|
var_0.origin = var_0.origin + ( 0, 0, -8 );
|
|
|
|
var_0 linkto( level.player );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
var_0 delete();
|
|
}
|
|
|
|
event_gravity()
|
|
{
|
|
self endon( "death" );
|
|
var_0 = -105;
|
|
var_1 = 105;
|
|
self movegravity( ( randomfloatrange( var_0, var_1 ), randomfloatrange( var_0, var_1 ), randomfloatrange( var_0, var_1 ) ), 5 );
|
|
}
|
|
|
|
event_debris_fall()
|
|
{
|
|
var_0 = 2;
|
|
self rotatevelocity( ( randomfloatrange( -200, 200 ), randomfloatrange( -200, 200 ), randomfloatrange( -200, 200 ) ), 3000 );
|
|
self moveto( self.origin + ( 0, 0, -300 ), var_0 );
|
|
var_1 = spawn( "script_model", self.origin );
|
|
var_1 setmodel( "tag_origin" );
|
|
playfxontag( level._effect["giant_water_splash"], var_1, "tag_origin" );
|
|
wait( var_0 );
|
|
stopfxontag( level._effect["giant_water_splash"], var_1, "tag_origin" );
|
|
self delete();
|
|
}
|
|
|
|
roofcollapse_retreat()
|
|
{
|
|
self endon( "death" );
|
|
self waittill( "goal" );
|
|
self.ignoreall = 0;
|
|
maps\_utility::set_ignoresuppression( 0 );
|
|
}
|
|
|
|
mall_enemy_spawn_func( var_0, var_1 )
|
|
{
|
|
self endon( "death" );
|
|
|
|
if ( !common_scripts\utility::flag( "player_on_mall_roof" ) )
|
|
{
|
|
if ( randomint( 2 ) == 0 )
|
|
var_2 = getent( "mall_goalvolume_camper1", "targetname" );
|
|
else
|
|
var_2 = getent( "mall_goalvolume_camper2", "targetname" );
|
|
}
|
|
else
|
|
var_2 = getent( var_0, "targetname" );
|
|
|
|
self setgoalvolumeauto( var_2 );
|
|
self.animname = "generic";
|
|
self.noragdoll = 1;
|
|
self.dropweapon = 0;
|
|
self.grenadeammo = 0;
|
|
|
|
if ( isdefined( var_1 ) && common_scripts\utility::flag( "player_on_mall_roof" ) )
|
|
{
|
|
self.goalradius = 8;
|
|
var_3 = getnode( var_1, "targetname" );
|
|
self setgoalnode( var_3 );
|
|
self waittill( "goal" );
|
|
self.goalradius = 2048;
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "mall_attack_player" );
|
|
self.ignoreall = 0;
|
|
}
|
|
|
|
enemy_setup_vign()
|
|
{
|
|
var_0 = getent( "flood_mall_roof_opfor", "targetname" );
|
|
thread enemy_setup_vign_floor( var_0 );
|
|
var_1 = maps\_utility::spawn_anim_model( "mall_roof_opfor_geo", var_0.origin );
|
|
var_2 = getent( "warehouse_waters_retarget", "targetname" );
|
|
var_1 retargetscriptmodellighting( var_2 );
|
|
var_3 = getent( "mall_help_hanging_guy", "targetname" );
|
|
var_4 = var_3 maps\_utility::spawn_ai( 1 );
|
|
var_4.animname = "opfor_1";
|
|
var_4 setgoalvolumeauto( getent( "mall_goalvolume_main", "targetname" ) );
|
|
var_4.noragdoll = 1;
|
|
var_4.health = 1;
|
|
var_4.grenadeammo = 0;
|
|
var_4 maps\_utility::gun_remove();
|
|
var_4.spotter = 0;
|
|
var_4.a.pose = "crouch";
|
|
var_4.allowdeath = 1;
|
|
var_4 thread watch_player_pos();
|
|
var_3 = getent( "mall_hanging_guy", "targetname" );
|
|
var_5 = var_3 maps\_utility::spawn_ai( 1 );
|
|
var_5.animname = "opfor_2";
|
|
var_5.ignoreme = 1;
|
|
var_5.grenadeammo = 0;
|
|
var_6 = [];
|
|
var_6["opfor_1"] = var_4;
|
|
var_6["opfor_2"] = var_5;
|
|
var_6["mall_roof_opfor_geo"] = var_1;
|
|
var_0 thread maps\_anim::anim_loop( var_6, "flood_mall_roof_opfor", "stop_loop" );
|
|
thread enemy_hanging_guy_vo( var_4, var_5 );
|
|
common_scripts\utility::flag_wait( "mall_attack_player" );
|
|
var_0 notify( "stop_loop" );
|
|
var_4 thread kill_help_hanging_guy();
|
|
var_6 = [];
|
|
var_6["opfor_2"] = var_5;
|
|
var_6["mall_roof_opfor_geo"] = var_1;
|
|
var_0 maps\_anim::anim_single( var_6, "flood_mall_roof_opfor_shot" );
|
|
var_5.a.nodeath = 1;
|
|
var_5.allowdeath = 1;
|
|
var_5 kill();
|
|
}
|
|
|
|
enemy_setup_vign_floor( var_0 )
|
|
{
|
|
var_1 = getent( "warehouse_waters_retarget", "targetname" );
|
|
var_2 = getent( "roof_collapse_faling_floor_vign1", "targetname" );
|
|
var_2 show();
|
|
var_2.animname = "mall_roof_opfor_geo_vign";
|
|
var_2 maps\_utility::assign_animtree();
|
|
var_2 retargetscriptmodellighting( var_1 );
|
|
var_3 = level.scr_model[var_2.animname];
|
|
var_4 = getnumparts( var_3 );
|
|
|
|
for ( var_5 = 0; var_5 < var_4; var_5++ )
|
|
{
|
|
var_6 = getpartname( var_3, var_5 );
|
|
var_7 = getsubstr( var_6, 4, var_6.size - 4 );
|
|
|
|
if ( var_6 == "tag_ac_unit_2_wide_scaled_01 " )
|
|
{
|
|
var_8 = spawn( "script_model", var_2 gettagorigin( var_6 ) );
|
|
var_8 setmodel( var_7 );
|
|
var_8.angles = var_2 gettagangles( var_6 );
|
|
var_8.targetname = "acbox_obj";
|
|
var_8 linkto( var_2, var_6 );
|
|
var_8 retargetscriptmodellighting( var_1 );
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
var_0 thread maps\_anim::anim_first_frame_solo( var_2, "flood_mall_roof_opfor_vign1" );
|
|
common_scripts\utility::flag_wait_any( "player_on_mall_roof", "mall_attack_player" );
|
|
thread maps\flood_audio::sfx_mall_hanging_falling_floor();
|
|
var_0 thread maps\_anim::anim_single_solo( var_2, "flood_mall_roof_opfor_vign1" );
|
|
}
|
|
|
|
kill_help_hanging_guy()
|
|
{
|
|
self endon( "death" );
|
|
var_0 = self.origin;
|
|
|
|
if ( isalive( self ) )
|
|
thread maps\_anim::anim_loop_solo( self, "flood_mall_roof_opfor_shot", "stop_loop" );
|
|
|
|
while ( isalive( self ) )
|
|
{
|
|
wait( randomfloatrange( 1.0, 1.5 ) );
|
|
var_0 = self.origin;
|
|
self stopanimscripted();
|
|
magicbullet( "pp19", self.origin, self.origin + ( 0, 0, 32 ) );
|
|
}
|
|
|
|
wait 0.1;
|
|
magicbullet( "pp19", ( 340, -1798, 284 ), var_0 + ( 0, 0, 36 ) );
|
|
}
|
|
|
|
enemy_hanging_guy_vo( var_0, var_1 )
|
|
{
|
|
var_1 endon( "death" );
|
|
var_0 endon( "death" );
|
|
level endon( "mall_attack_player" );
|
|
common_scripts\utility::flag_wait( "player_on_mall_roof" );
|
|
wait 0.5;
|
|
var_0 maps\_utility::dialogue_queue( "flood_vs4_holdon" );
|
|
var_1 maps\_utility::dialogue_queue( "flood_vs5_holdingon" );
|
|
var_1 maps\_utility::dialogue_queue( "flood_vs5_pullmeup" );
|
|
var_0 maps\_utility::dialogue_queue( "flood_vs4_getanyleverage" );
|
|
var_1 maps\_utility::dialogue_queue( "flood_vs5_imslipping" );
|
|
wait( randomfloatrange( 2, 3 ) );
|
|
|
|
for (;;)
|
|
{
|
|
switch ( randomint( 4 ) )
|
|
{
|
|
case 0:
|
|
var_0 maps\_utility::dialogue_queue( "flood_vs4_holdon" );
|
|
break;
|
|
case 1:
|
|
var_1 maps\_utility::dialogue_queue( "flood_vs5_pullmeup" );
|
|
break;
|
|
case 2:
|
|
var_0 maps\_utility::dialogue_queue( "flood_vs4_getanyleverage" );
|
|
break;
|
|
case 3:
|
|
var_1 maps\_utility::dialogue_queue( "flood_vs5_imslipping" );
|
|
break;
|
|
}
|
|
|
|
wait( randomfloatrange( 1, 2 ) );
|
|
}
|
|
}
|
|
|
|
enemy_twitch()
|
|
{
|
|
common_scripts\utility::flag_wait( "player_on_mall_roof" );
|
|
var_0 = getent( "mall_lookat_hanging_guy", "targetname" );
|
|
var_1 = var_0 maps\_utility::spawn_ai( 1 );
|
|
var_1 setgoalvolumeauto( getent( "mall_goalvolume_main", "targetname" ) );
|
|
var_1.animname = "generic";
|
|
var_1.allowdeath = 1;
|
|
var_1.health = 150;
|
|
var_1.noragdoll = 1;
|
|
var_1.spotter = 0;
|
|
var_1.grenadeammo = 0;
|
|
var_1 thread watch_player_pos();
|
|
var_1 thread enemy_stop_vign_and_attack();
|
|
var_1 thread enemy_twitch_runstumble();
|
|
}
|
|
|
|
enemy_twitch_runstumble()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "mall_attack_player" );
|
|
common_scripts\utility::flag_wait( "player_on_mall_roof" );
|
|
|
|
if ( !common_scripts\utility::flag( "mall_attack_player" ) )
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "runstumble_runstumble", "targetname" );
|
|
var_0 maps\_anim::anim_reach_solo( self, "run_react_stumble_non_loop" );
|
|
var_0 maps\_anim::anim_generic_run( self, "run_react_stumble_non_loop" );
|
|
maps\_anim::anim_generic( self, "run_trans_2_readystand_1" );
|
|
thread maps\_anim::anim_generic_loop( self, "readystand_idle_twitch_1", "stop_loop" );
|
|
}
|
|
}
|
|
|
|
enemy_stop_vign_and_attack()
|
|
{
|
|
self endon( "death" );
|
|
common_scripts\utility::flag_wait( "mall_attack_player" );
|
|
self notify( "stop_loop" );
|
|
self stopanimscripted();
|
|
self.ignoreall = 0;
|
|
}
|
|
|
|
enemy_rnd_runner()
|
|
{
|
|
self endon( "death" );
|
|
var_0 = getnodearray( "mall_rnd_runner", "targetname" );
|
|
var_1 = var_0[randomint( var_0.size )];
|
|
var_2 = var_0[randomint( var_0.size )];
|
|
self.fixednode = 1;
|
|
thread maps\_utility::enable_cqbwalk();
|
|
|
|
while ( !common_scripts\utility::flag( "mall_attack_player" ) )
|
|
{
|
|
while ( distance2d( var_1.origin, var_2.origin ) < 300 )
|
|
{
|
|
var_2 = var_0[randomint( var_0.size )];
|
|
wait 0.05;
|
|
}
|
|
|
|
self.goalradius = 96;
|
|
self setgoalpos( var_2.origin );
|
|
self waittill( "goal" );
|
|
var_1 = var_2;
|
|
wait( randomfloatrange( 0.75, 2 ) );
|
|
}
|
|
|
|
thread maps\_utility::disable_cqbwalk();
|
|
self.goalradius = 2048;
|
|
self.ignoreall = 0;
|
|
self.fixednode = 0;
|
|
}
|
|
|
|
ally_make_fall()
|
|
{
|
|
self endon( "death" );
|
|
common_scripts\utility::flag_wait( "ally_area_falling" );
|
|
thread maps\_anim::anim_single_solo( self, "flood_mall_roof_fall" );
|
|
self.grenadeammo = self.mall_grenadeammo;
|
|
}
|
|
|
|
ally0_mall()
|
|
{
|
|
self.ignoreall = 1;
|
|
maps\_utility::clear_force_color();
|
|
self.goalradius = 8;
|
|
self pushplayer( 1 );
|
|
thread maps\_utility::enable_cqbwalk();
|
|
self.mall_grenadeammo = self.grenadeammo;
|
|
self.grenadeammo = 0;
|
|
var_0 = common_scripts\utility::getstruct( "mall_breach_origin", "targetname" );
|
|
var_0 maps\_anim::anim_reach_solo( self, "flood_mall_roof_door" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "flood_mall_roof_door_loop", "stop_loop" );
|
|
common_scripts\utility::flag_set( "ally0_breach_ready" );
|
|
level waittill( "breach_start" );
|
|
var_0 notify( "stop_loop" );
|
|
var_0 maps\_anim::anim_single_solo( self, "flood_mall_roof_door" );
|
|
self pushplayer( 1 );
|
|
thread ally_make_fall();
|
|
self.goalradius = 256;
|
|
var_0 = getnode( "ally0_breach_goal", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
self waittill( "goal" );
|
|
thread watch_player_onroof_timer();
|
|
common_scripts\utility::flag_wait( "mall_attack_player" );
|
|
maps\flood_flooding::ally_clear_flee_behavior();
|
|
self.ignoreall = 0;
|
|
}
|
|
|
|
ally1_mall()
|
|
{
|
|
self.ignoreall = 1;
|
|
maps\_utility::clear_force_color();
|
|
self.goalradius = 8;
|
|
self pushplayer( 1 );
|
|
thread maps\_utility::enable_cqbwalk();
|
|
self.mall_grenadeammo = self.grenadeammo;
|
|
self.grenadeammo = 0;
|
|
var_0 = common_scripts\utility::getstruct( "mall_breach_origin", "targetname" );
|
|
var_0 maps\_anim::anim_reach_solo( self, "flood_mall_roof_door" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "flood_mall_roof_door_loop", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "mall_breach_start" );
|
|
common_scripts\utility::flag_wait( "flood_mid_tr_loaded" );
|
|
common_scripts\utility::flag_wait_all( "ally0_breach_ready", "ally2_breach_ready", "stair_post_quake_vo_done" );
|
|
var_0 notify( "stop_loop" );
|
|
common_scripts\utility::exploder( "warehouse_wall_explode" );
|
|
thread maps\flood_audio::mall_ext_sirens();
|
|
common_scripts\utility::exploder( "mr_doorglow" );
|
|
level notify( "breach_start" );
|
|
thread maps\flood_audio::sfx_flood_int_door();
|
|
level.allies[0] maps\_utility::delaythread( 4, maps\_utility::dialogue_queue, "flood_diz_tangosoutthere" );
|
|
maps\_utility::delaythread( 6, ::remove_hall_clip );
|
|
maps\flood_util::flag_set_delayed( "breach_door_open", 6 );
|
|
var_0 thread maps\_anim::anim_single_solo( level.flood_mall_roof_door_model, "flood_mall_roof_door" );
|
|
var_0 maps\_anim::anim_single_solo( self, "flood_mall_roof_door" );
|
|
self.goalradius = 96;
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "flood_mall_roof_door_open_loop", "stop_loop" );
|
|
var_1 = [];
|
|
var_1[0] = "flood_diz_outthererook";
|
|
maps\_utility::delaythread( 8.0, maps\flood_util::play_nag, var_1, "player_on_mall_roof", 5, 30, 1, 4 );
|
|
common_scripts\utility::flag_wait( "player_on_mall_roof" );
|
|
self notify( "stop nags" );
|
|
var_0 notify( "stop_loop" );
|
|
thread maps\flood_audio::sfx_mall_exit_door();
|
|
thread rooftop_door_outdoor( var_0 );
|
|
var_0 maps\_anim::anim_single_solo( self, "flood_mall_roof_door_outdoor" );
|
|
self pushplayer( 1 );
|
|
thread ally_make_fall();
|
|
self.goalradius = 256;
|
|
var_0 = getnode( "ally1_breach_goal", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
self waittill( "goal" );
|
|
common_scripts\utility::flag_wait( "mall_attack_player" );
|
|
maps\flood_flooding::ally_clear_flee_behavior();
|
|
self.ignoreall = 0;
|
|
}
|
|
|
|
rooftop_door_outdoor( var_0 )
|
|
{
|
|
var_0 maps\_anim::anim_single_solo( level.flood_mall_roof_door_model, "flood_mall_roof_door_outdoor" );
|
|
thread mall_door_temp_collision();
|
|
var_1 = getentarray( "mall_roof_door", "targetname" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
var_3 solid();
|
|
}
|
|
|
|
ally2_mall()
|
|
{
|
|
self.flood_hasmantled = 1;
|
|
self.ignoreall = 1;
|
|
maps\_utility::clear_force_color();
|
|
self.goalradius = 8;
|
|
self pushplayer( 1 );
|
|
thread maps\_utility::enable_cqbwalk();
|
|
self.mall_grenadeammo = self.grenadeammo;
|
|
self.grenadeammo = 0;
|
|
var_0 = common_scripts\utility::getstruct( "mall_breach_origin", "targetname" );
|
|
var_0 maps\_anim::anim_reach_solo( self, "flood_mall_roof_door_walkup" );
|
|
var_0 maps\_anim::anim_single_solo( self, "flood_mall_roof_door_walkup" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "flood_mall_roof_door_loop", "stop_loop" );
|
|
common_scripts\utility::flag_set( "ally2_breach_ready" );
|
|
self.moveplaybackrate = 1;
|
|
self.movetransitionrate = 1;
|
|
self.animplaybackrate = 1;
|
|
level waittill( "breach_start" );
|
|
thread maps\flood_audio::change_zone_stairwell();
|
|
var_0 notify( "stop_loop" );
|
|
var_0 maps\_anim::anim_single_solo( self, "flood_mall_roof_door" );
|
|
self pushplayer( 1 );
|
|
thread ally_make_fall();
|
|
self.goalradius = 256;
|
|
var_0 = getnode( "ally2_breach_goal", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
self waittill( "goal" );
|
|
common_scripts\utility::flag_wait( "mall_attack_player" );
|
|
maps\flood_flooding::ally_clear_flee_behavior();
|
|
self.ignoreall = 0;
|
|
}
|
|
|
|
ally_roof_collapse_vo()
|
|
{
|
|
level.player endon( "death" );
|
|
level endon( "swept_away" );
|
|
level.player maps\flood_audio::sfx_mall_first_screen_shake();
|
|
earthquake( 0.5, 1, level.player.origin, 1600 );
|
|
level.player playrumbleonentity( "light_1s" );
|
|
level.allies[1] maps\_utility::dialogue_queue( "flood_kgn_keepmoving" );
|
|
level.allies[2] maps\_utility::dialogue_queue( "flood_diz_gettingshotat" );
|
|
level.allies[0] maps\_utility::dialogue_queue( "flood_diz_engagingtargets" );
|
|
}
|
|
|
|
ally_roof_collapsing_vo()
|
|
{
|
|
level.player endon( "death" );
|
|
level endon( "swept_away" );
|
|
level.allies[2] maps\_utility::dialogue_queue( "flood_mrk_halftheroofsgone" );
|
|
level.allies[0] maps\_utility::dialogue_queue( "flood_pri_wellihopeyou" );
|
|
}
|
|
|
|
trigger_player_mall_rooftop()
|
|
{
|
|
var_0 = getent( "player_mall_rooftop", "targetname" );
|
|
var_0 waittill( "trigger" );
|
|
common_scripts\utility::flag_set( "player_on_mall_roof" );
|
|
maps\flood_util::jkuprint( "player on mall roof" );
|
|
thread toggle_mall_door_clip( "show" );
|
|
thread maps\flood_fx::destroy_fx_warehouse_floating_debris();
|
|
var_1 = getentarray( "coverwater_warehouse", "targetname" );
|
|
var_2 = getent( "coverwater_warehouse_above", "targetname" );
|
|
var_3 = getent( "coverwater_warehouse_under", "targetname" );
|
|
var_1 = common_scripts\utility::array_add( var_1, var_2 );
|
|
var_1 = common_scripts\utility::array_add( var_1, var_3 );
|
|
|
|
foreach ( var_5 in var_1 )
|
|
{
|
|
var_5 hide();
|
|
var_5 notsolid();
|
|
}
|
|
}
|
|
|
|
toggle_mall_door_clip( var_0 )
|
|
{
|
|
var_1 = getent( "mall_door_clip", "targetname" );
|
|
|
|
switch ( var_0 )
|
|
{
|
|
case "show":
|
|
var_1 show();
|
|
var_1 solid();
|
|
break;
|
|
case "hide":
|
|
var_1 hide();
|
|
var_1 notsolid();
|
|
break;
|
|
}
|
|
}
|
|
|
|
breach_door_open()
|
|
{
|
|
var_0 = getent( "mall_door_roof", "targetname" );
|
|
var_1 = getentarray( var_0.target, "targetname" );
|
|
common_scripts\utility::array_call( var_1, ::linkto, var_0 );
|
|
var_2 = 1;
|
|
var_0 rotateyaw( -65, var_2, 0.1, 0.1 );
|
|
wait( var_2 );
|
|
var_0 connectpaths();
|
|
}
|
|
|
|
breach_door_close()
|
|
{
|
|
var_0 = getent( "mall_door_roof", "targetname" );
|
|
var_1 = getentarray( var_0.target, "targetname" );
|
|
common_scripts\utility::array_call( var_1, ::linkto, var_0 );
|
|
var_2 = 0.2;
|
|
var_0 rotateyaw( 65, var_2, 0.1, 0.1 );
|
|
wait( var_2 );
|
|
var_0 disconnectpaths();
|
|
}
|
|
|
|
breach_door_open_close()
|
|
{
|
|
var_0 = getent( "mall_door_roof", "targetname" );
|
|
var_1 = getentarray( var_0.target, "targetname" );
|
|
common_scripts\utility::array_call( var_1, ::linkto, var_0 );
|
|
var_0 rotateyaw( 125, 0.2, 0.1, 0.1 );
|
|
var_0 connectpaths();
|
|
wait 0.3;
|
|
var_0 rotateyaw( -125, 0.2, 0.1, 0.1 );
|
|
wait 0.3;
|
|
var_0 disconnectpaths();
|
|
}
|
|
|
|
ally_breach_goal( var_0 )
|
|
{
|
|
self.ignoreall = 1;
|
|
var_1 = getnode( var_0, "targetname" );
|
|
self setgoalnode( var_1 );
|
|
self waittill( "goal" );
|
|
wait( randomfloatrange( 6, 7 ) );
|
|
self.ignoreall = 0;
|
|
}
|
|
|
|
mall_rooftop_floor_splash()
|
|
{
|
|
level endon( "swept_away" );
|
|
var_0 = getent( "mall_under_rooftop_splash", "targetname" );
|
|
var_1 = spawn( "script_model", var_0.origin );
|
|
var_1 setmodel( "tag_origin" );
|
|
wait 0.1;
|
|
|
|
for (;;)
|
|
{
|
|
playfxontag( level._effect["giant_water_splash"], var_1, "tag_origin" );
|
|
wait( randomfloatrange( 4.5, 10.0 ) );
|
|
}
|
|
}
|
|
|
|
mall_breach_enemy_1()
|
|
{
|
|
var_0 = getent( "mall_breacher_1", "targetname" );
|
|
var_1 = var_0 maps\_utility::spawn_ai( 1 );
|
|
var_1 thread mall_breach_enemy_setup();
|
|
var_2 = common_scripts\utility::getstruct( "mall_breach_enemy_loc1", "targetname" );
|
|
var_2 maps\_anim::anim_generic( var_1, "mall_breach_enemy_1" );
|
|
}
|
|
|
|
mall_breach_enemy_2()
|
|
{
|
|
var_0 = getent( "mall_breacher_2", "targetname" );
|
|
var_1 = var_0 maps\_utility::spawn_ai( 1 );
|
|
var_1 thread mall_breach_enemy_setup();
|
|
var_1.animname = "breacher2";
|
|
var_0 = getent( "mall_breacher_3", "targetname" );
|
|
var_2 = var_0 maps\_utility::spawn_ai( 1 );
|
|
var_2 thread mall_breach_enemy_setup();
|
|
var_2.animname = "breacher3";
|
|
var_3 = maps\_utility::make_array( var_1, var_2 );
|
|
var_4 = common_scripts\utility::getstruct( "mall_breach_enemy_loc2", "targetname" );
|
|
var_4 maps\_anim::anim_single( var_3, "mall_breach_enemy_2" );
|
|
}
|
|
|
|
mall_breach_enemy_ragdoll_on_death()
|
|
{
|
|
self endon( "breach_enemy_cancel_ragdoll_death" );
|
|
self.ragdoll_immediate = 1;
|
|
var_0 = common_scripts\utility::waittill_any_return( "death", "finished_breach_start_anim" );
|
|
|
|
if ( var_0 == "finished_breach_start_anim" )
|
|
self.ragdoll_immediate = undefined;
|
|
}
|
|
|
|
mall_breach_enemy_setup()
|
|
{
|
|
thread mall_breach_enemy_ragdoll_on_death();
|
|
self.grenadeammo = 0;
|
|
self.allowdeath = 1;
|
|
self.health = 10;
|
|
self.baseaccuracy = 5000;
|
|
}
|
|
|
|
watch_glass_shot()
|
|
{
|
|
var_0 = getentarray( "mall_roof_glass_breaker", "script_noteworthy" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( var_2.target == "mall_roof_glass_2a" || var_2.target == "mall_roof_glass_3b" || var_2.target == "mall_roof_glass_4a" || var_2.target == "mall_roof_glass_4b" || var_2.target == "mall_roof_glass_6b" || var_2.target == "mall_roof_glass_9b" )
|
|
{
|
|
var_3 = getglass( var_2.target );
|
|
destroyglass( var_3 );
|
|
var_2 delete();
|
|
continue;
|
|
}
|
|
|
|
var_2 thread wait_for_bullet();
|
|
}
|
|
}
|
|
|
|
wait_for_bullet()
|
|
{
|
|
level endon( "swept_away" );
|
|
level waittill( "breach_start" );
|
|
self setcandamage( 1 );
|
|
self waittill( "damage", var_0, var_1, var_2, var_3, var_4, var_5, var_6 );
|
|
var_7 = getglass( self.target );
|
|
destroyglass( var_7 );
|
|
thread mall_attack_player();
|
|
self delete();
|
|
}
|
|
|
|
mall_roof_door_firstframe()
|
|
{
|
|
level.flood_mall_roof_door_model = maps\_utility::spawn_anim_model( "flood_mall_roof_door_model" );
|
|
var_0 = common_scripts\utility::getstruct( "mall_breach_origin", "targetname" );
|
|
var_0 thread maps\_anim::anim_first_frame_solo( level.flood_mall_roof_door_model, "flood_mall_roof_door" );
|
|
var_1 = getentarray( "mall_roof_door", "targetname" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
var_3 linkto( level.flood_mall_roof_door_model );
|
|
}
|
|
|
|
remove_hall_clip()
|
|
{
|
|
var_0 = getent( "mall_roof_door_hall_clip", "targetname" );
|
|
var_0 hide();
|
|
var_0 notsolid();
|
|
}
|
|
|
|
mallroof_firstframe( var_0 )
|
|
{
|
|
common_scripts\utility::flag_wait( "flood_mid_tr_loaded" );
|
|
level.mallroof_back = getent( "flood_mallroof_back", "targetname" );
|
|
level.mallroof_back.animname = "mallroof_back";
|
|
level.mallroof_back maps\_utility::assign_animtree();
|
|
level.mallroof_center = getent( "flood_mallroof_center", "targetname" );
|
|
level.mallroof_center.animname = "mallroof_center";
|
|
level.mallroof_center maps\_utility::assign_animtree();
|
|
level.mallroof_center retargetscriptmodellighting( level.mallroof_back );
|
|
level.mallroof_far = getent( "flood_mallroof_far", "targetname" );
|
|
level.mallroof_far.animname = "mallroof_far";
|
|
level.mallroof_far maps\_utility::assign_animtree();
|
|
level.mallroof_impact = getent( "flood_mallroof_impact", "targetname" );
|
|
level.mallroof_impact.animname = "mallroof_impact";
|
|
level.mallroof_impact maps\_utility::assign_animtree();
|
|
level.mallroof_rafters1 = getent( "flood_mallroof_rafters1", "targetname" );
|
|
level.mallroof_rafters1.animname = "mallroof_rafters1";
|
|
level.mallroof_rafters1 maps\_utility::assign_animtree();
|
|
level.mallroof_rafters2 = getent( "flood_mallroof_rafters2", "targetname" );
|
|
level.mallroof_rafters2.animname = "mallroof_rafters2";
|
|
level.mallroof_rafters2 maps\_utility::assign_animtree();
|
|
level.mallroof_acboxes = getent( "flood_mallroof_acboxes", "targetname" );
|
|
level.mallroof_acboxes.animname = "mallroof_acboxes";
|
|
level.mallroof_acboxes maps\_utility::assign_animtree();
|
|
level.mallroof_smallrubble = getent( "flood_mallroof_smallrubble", "targetname" );
|
|
level.mallroof_smallrubble.animname = "mallroof_smallrubble";
|
|
level.mallroof_smallrubble maps\_utility::assign_animtree();
|
|
level.mallroof_cables = getent( "flood_mallroof_cables", "targetname" );
|
|
level.mallroof_cables.animname = "mallroof_cables";
|
|
level.mallroof_cables maps\_utility::assign_animtree();
|
|
level.mallroof_struct = common_scripts\utility::getstruct( "mallroof_collapse", "targetname" );
|
|
level.mallroof_array = [];
|
|
level.mallroof_array["mallroof_back"] = level.mallroof_back;
|
|
level.mallroof_array["mallroof_center"] = level.mallroof_center;
|
|
level.mallroof_array["mallroof_far"] = level.mallroof_far;
|
|
level.mallroof_array["mallroof_impact"] = level.mallroof_impact;
|
|
level.mallroof_array["mallroof_rafters1"] = level.mallroof_rafters1;
|
|
level.mallroof_array["mallroof_rafters2"] = level.mallroof_rafters2;
|
|
level.mallroof_array["mallroof_acboxes"] = level.mallroof_acboxes;
|
|
level.mallroof_array["mallroof_smallrubble"] = level.mallroof_smallrubble;
|
|
level.mallroof_array["mallroof_cables"] = level.mallroof_cables;
|
|
|
|
if ( isdefined( var_0 ) && var_0 == "hide" )
|
|
{
|
|
foreach ( var_2 in level.mallroof_array )
|
|
var_2 hide();
|
|
|
|
var_4 = getent( "roof_collapse_faling_floor_vign1", "targetname" );
|
|
var_4 hide();
|
|
}
|
|
else
|
|
{
|
|
level.mallroof_struct thread maps\_anim::anim_first_frame( level.mallroof_array, "mallroof_collapse" );
|
|
maps\_utility::delaythread( 0.5, ::mallroof_firstframe_show_objects );
|
|
}
|
|
}
|
|
|
|
mallroof_firstframe_show_objects()
|
|
{
|
|
foreach ( var_1 in level.mallroof_array )
|
|
var_1 show();
|
|
}
|
|
|
|
mall_door_temp_collision( var_0 )
|
|
{
|
|
var_1 = getent( "mall_door_temp_collision", "targetname" );
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
{
|
|
var_1 hide();
|
|
var_1 notsolid();
|
|
var_1 connectpaths();
|
|
}
|
|
else
|
|
{
|
|
var_1 show();
|
|
var_1 solid();
|
|
var_1 disconnectpaths();
|
|
}
|
|
}
|
|
|
|
mall_attack_player()
|
|
{
|
|
level.player endon( "death" );
|
|
common_scripts\utility::flag_set( "mall_attack_player" );
|
|
level notify( "mall_attack_player" );
|
|
level.allies[1] notify( "stop nags" );
|
|
var_0 = getent( "mall_start_cover_hack", "targetname" );
|
|
var_0 hide();
|
|
var_0 notsolid();
|
|
}
|
|
|
|
mall_attack_player_vo()
|
|
{
|
|
level.player endon( "death" );
|
|
common_scripts\utility::flag_wait_any( "mall_attack_player", "mall_weapons_free" );
|
|
level.allies[0] thread maps\_utility::dialogue_queue( "flood_bkr_weaponsfree" );
|
|
maps\_utility::battlechatter_on( "allies" );
|
|
maps\_utility::battlechatter_on( "axis" );
|
|
}
|