2269 lines
73 KiB
Plaintext
2269 lines
73 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
section_main()
|
|
{
|
|
|
|
}
|
|
|
|
section_precache()
|
|
{
|
|
precachemodel( "flood_angryflood_edge_tracker_0" );
|
|
precachemodel( "flood_angryflood_big_wave_1" );
|
|
precachemodel( "flood_alley_flood_near_trackers" );
|
|
precachemodel( "flood_alley_flood_far_trackers" );
|
|
precachemodel( "com_coffee_machine_destroyed" );
|
|
precachemodel( "road_barrier_post" );
|
|
precachemodel( "com_trafficcone01" );
|
|
precachemodel( "cardboard_box03_iw6" );
|
|
precachemodel( "com_cardboardboxshortclosed_1" );
|
|
precachemodel( "flood_framed_picture_bw_01" );
|
|
precachemodel( "intro_wood_floorboard_piece02" );
|
|
precachemodel( "intro_wood_floorboard_piece03" );
|
|
precachemodel( "intro_wood_floorboard_piece01" );
|
|
precachemodel( "flood_framed_picture_bw_02" );
|
|
precachemodel( "flood_crate_plastic_single02" );
|
|
precachemodel( "com_plastic_crate_pallet" );
|
|
precachemodel( "com_barrel_green" );
|
|
precachemodel( "street_trashcan_open_iw6" );
|
|
precachemodel( "com_folding_chair" );
|
|
precachemodel( "com_trafficcone02" );
|
|
precachemodel( "com_plasticcase_beige_big_iw6" );
|
|
precachemodel( "com_pallet_2" );
|
|
precachemodel( "cardboard_box02_iw6" );
|
|
precachemodel( "furniture_shelf_wood_1" );
|
|
precachemodel( "com_trashbin01" );
|
|
precachemodel( "com_bookshelves1_d" );
|
|
precachemodel( "com_office_chair_killhouse" );
|
|
precachemodel( "com_plasticcase_beige_big_iw6" );
|
|
precacheshellshock( "default_nosound" );
|
|
precacheshellshock( "player_limp" );
|
|
precacherumble( "water_splash" );
|
|
}
|
|
|
|
section_flag_inits()
|
|
{
|
|
common_scripts\utility::flag_init( "alley_move_toend" );
|
|
common_scripts\utility::flag_init( "alley_move_shitfuck" );
|
|
common_scripts\utility::flag_init( "alley_move_kickdoor" );
|
|
common_scripts\utility::flag_init( "warehouse_door_breached" );
|
|
common_scripts\utility::flag_init( "player_doing_warehouse_mantle" );
|
|
common_scripts\utility::flag_init( "stop_alley_wakes" );
|
|
common_scripts\utility::flag_init( "ally0_stair_ready" );
|
|
common_scripts\utility::flag_init( "ally1_stair_ready" );
|
|
common_scripts\utility::flag_init( "ally1_stair_vo_hack" );
|
|
common_scripts\utility::flag_init( "moving_to_mall" );
|
|
common_scripts\utility::flag_init( "player_killed_by_angry" );
|
|
}
|
|
|
|
flooding_ext_start()
|
|
{
|
|
maps\flood_util::player_move_to_checkpoint_start( "flooding_ext_start" );
|
|
maps\flood_util::spawn_allies();
|
|
maps\flood_util::setup_default_weapons();
|
|
allies_dam_vign();
|
|
level.allies[0] thread ally0_main();
|
|
level.allies[1] thread ally1_main();
|
|
level.allies[2] thread ally2_main();
|
|
common_scripts\utility::flag_set( "end_of_dam" );
|
|
}
|
|
|
|
flooding_ext()
|
|
{
|
|
common_scripts\utility::flag_wait( "end_of_dam" );
|
|
level thread switch_to_last_player_weapon();
|
|
level thread maps\_utility::autosave_by_name( "flood_exterior" );
|
|
maps\_utility::stop_exploder( "flak" );
|
|
thread maps\flood_fx::alley_end_of_alley_fx();
|
|
thread maps\flood_fx::fx_warehouse_floating_debris();
|
|
thread maps\flood_fx::fx_warehouse_underwater_fx_on();
|
|
thread maps\flood_fx::fx_warehouse_underwater_fx_off();
|
|
common_scripts\utility::flag_set( "cw_player_abovewater" );
|
|
common_scripts\utility::flag_clear( "cw_player_underwater" );
|
|
level.oldangryflood = 0;
|
|
thread maps\flood_audio::sfx_dam_start_water();
|
|
|
|
if ( level.oldangryflood )
|
|
{
|
|
thread waterball_main_setup( "waterball_path_1" );
|
|
maps\_utility::delaythread( 10, ::waterball_alley_stream_setup );
|
|
thread alley_giantsplashes_left();
|
|
}
|
|
|
|
thread inside_loadingdocks();
|
|
thread breach_warehouse_doors();
|
|
thread player_adjust_speed();
|
|
thread alley_bokehdots();
|
|
thread warehouse_collision_hacks_toggle();
|
|
thread close_loading_dock_doors();
|
|
thread alley_kill_triggers( "off" );
|
|
thread crush_player_with_floating_lynx();
|
|
var_0 = getent( "inside_loadingdocks", "targetname" );
|
|
var_0 waittill( "trigger" );
|
|
stopfxontag( common_scripts\utility::getfx( "bokehdots_and_waterdrops_heavy" ), level.flood_source_bokehdots, "tag_origin" );
|
|
}
|
|
|
|
switch_to_last_player_weapon()
|
|
{
|
|
if ( isdefined( level.dam_break_weapon ) )
|
|
level.player switchtoweapon( level.dam_break_weapon );
|
|
}
|
|
|
|
fade_up_black( var_0 )
|
|
{
|
|
level.black_overlay fadeovertime( var_0 );
|
|
level.black_overlay.alpha = 0;
|
|
}
|
|
|
|
setup_missile_launcher()
|
|
{
|
|
var_0 = getent( "missile_launcher_4", "targetname" );
|
|
var_0 rotateyaw( -180, 0.01 );
|
|
}
|
|
|
|
player_adjust_speed()
|
|
{
|
|
level.player maps\_utility::blend_movespeedscale( 0.4, 0.01 );
|
|
level.player thread maps\_utility::blend_movespeedscale_default( 3 );
|
|
maps\flood_util::player_water_movement( 95, 0.01 );
|
|
setsaveddvar( "player_sprintUnlimited", "1" );
|
|
common_scripts\utility::flag_wait( "player_at_stairs" );
|
|
maps\flood_util::player_water_movement( 100, 2 );
|
|
setsaveddvar( "player_sprintUnlimited", "0" );
|
|
}
|
|
|
|
ally_flee_setup( var_0 )
|
|
{
|
|
maps\_utility::clear_force_color();
|
|
maps\_utility::disable_cqbwalk();
|
|
setsaveddvar( "ai_friendlyFireBlockDuration", 0 );
|
|
maps\_utility::disable_surprise();
|
|
maps\_utility::disable_pain();
|
|
self.ignoreall = 1;
|
|
self.ignoreme = 1;
|
|
self.grenadeawareness = 0;
|
|
self.dontavoidplayer = 1;
|
|
self.ignoresuppression = 1;
|
|
self.ignorerandombulletdamage = 1;
|
|
self.ignoreexplosionevents = 1;
|
|
self.disablebulletwhizbyreaction = 1;
|
|
self.disablefriendlyfirereaction = 1;
|
|
animscripts\weaponlist::refillclip();
|
|
self.cw_in_rising_water = 1;
|
|
thread ai_water_rising_think( "breach_start" );
|
|
self.flood_og_moveplaybackrate = self.moveplaybackrate;
|
|
self.flood_og_movetransitionrate = self.movetransitionrate;
|
|
self.flood_og_animplaybackrate = self.animplaybackrate;
|
|
var_1 = 1;
|
|
self.moveplaybackrate = var_1;
|
|
self.movetransitionrate = var_1;
|
|
self.animplaybackrate = var_1;
|
|
}
|
|
|
|
ally_clear_flee_behavior()
|
|
{
|
|
maps\_utility::disable_sprint();
|
|
setsaveddvar( "ai_friendlyFireBlockDuration", 2000 );
|
|
maps\_utility::enable_surprise();
|
|
maps\_utility::enable_pain();
|
|
maps\_utility::disable_heat_behavior();
|
|
self.ignoreall = 0;
|
|
self.ignoreme = 0;
|
|
self.grenadeawareness = 1;
|
|
self.dontavoidplayer = 0;
|
|
self.ignoresuppression = 0;
|
|
self.ignorerandombulletdamage = 0;
|
|
self.ignoreexplosionevents = 0;
|
|
self.disablebulletwhizbyreaction = 0;
|
|
self.disablefriendlyfirereaction = 0;
|
|
|
|
if ( isdefined( self.flood_og_moveplaybackrate ) )
|
|
{
|
|
self.moveplaybackrate = self.flood_og_moveplaybackrate;
|
|
self.movetransitionrate = self.flood_og_movetransitionrate;
|
|
self.animplaybackrate = self.flood_og_animplaybackrate;
|
|
}
|
|
}
|
|
|
|
ally_start_cornerwaving( var_0, var_1 )
|
|
{
|
|
self endon( "death" );
|
|
|
|
if ( !var_1 )
|
|
{
|
|
while ( self.a.movement != "stop" )
|
|
common_scripts\utility::waitframe();
|
|
|
|
wait( randomfloatrange( 0.75, 1.25 ) );
|
|
}
|
|
|
|
maps\_utility::disable_heat_behavior();
|
|
self.prevmovemode = "none";
|
|
self notify( "move_loop_restart" );
|
|
|
|
while ( !common_scripts\utility::flag( "alley_move_toend" ) )
|
|
var_0 maps\_anim::anim_loop_solo( self, "flood_cornerwaving_loop", "stop_loop" );
|
|
}
|
|
|
|
block_ally_cornerwaving( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
common_scripts\utility::flag_wait( "alley_move_toend" );
|
|
var_1 = distance2d( level.allies[1].origin, self.origin );
|
|
|
|
while ( var_1 < var_0 )
|
|
{
|
|
var_1 = distance2d( level.allies[1].origin, self.origin );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
allies_dam_vign()
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "vignette_dam_break", "script_noteworthy" );
|
|
var_1 = [];
|
|
var_1["ally_0"] = level.allies[0];
|
|
var_1["ally_1"] = level.allies[1];
|
|
var_1["ally_2"] = level.allies[2];
|
|
var_0 thread maps\_anim::anim_single( var_1, "dam_break" );
|
|
maps\_utility::delaythread( 0.05, maps\_anim::anim_set_time, var_1, "dam_break", 0.9 );
|
|
wait 3;
|
|
}
|
|
|
|
ally_turnanim_hack( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self.noturnanims = 1;
|
|
wait( var_0 );
|
|
self.noturnanims = undefined;
|
|
}
|
|
|
|
block_until_fully_stopped_and_idle( var_0, var_1, var_2 )
|
|
{
|
|
self endon( "death" );
|
|
|
|
while ( self.a.movement != "stop" )
|
|
common_scripts\utility::waitframe();
|
|
|
|
wait( var_2 );
|
|
|
|
if ( !common_scripts\utility::flag( "alley_move_toend" ) )
|
|
var_0 thread maps\_anim::anim_loop_solo( self, var_1, "stop_loop" );
|
|
}
|
|
|
|
ally0_main()
|
|
{
|
|
thread ally_flee_setup( "r" );
|
|
maps\_utility::disable_heat_behavior();
|
|
self pushplayer( 1 );
|
|
maps\_utility::ent_flag_init( "started_cornerwaving" );
|
|
self.alertlevelint = 1;
|
|
self.moveplaybackrate = self.moveplaybackrate - 0.06;
|
|
var_0 = common_scripts\utility::getstruct( "ally0_flee_face", "targetname" );
|
|
var_0 thread maps\_anim::anim_reach_solo( self, "flood_cornerwaving_enter" );
|
|
var_1 = distance2d( var_0.origin, self.origin );
|
|
|
|
while ( var_1 > 200 )
|
|
{
|
|
var_1 = distance2d( var_0.origin, self.origin );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
if ( !common_scripts\utility::flag( "alley_move_toend" ) )
|
|
{
|
|
self waittill( "goal" );
|
|
var_0 maps\_anim::anim_single_solo( self, "flood_cornerwaving_enter" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "flood_cornerwaving_loop", "stop_loop" );
|
|
maps\_utility::ent_flag_set( "started_cornerwaving" );
|
|
var_2 = [];
|
|
var_2[0] = "flood_pri_keepupwithteam";
|
|
var_2[1] = "flood_diz_hurry";
|
|
maps\_utility::delaythread( 0, maps\flood_util::play_nag, var_2, "alley_move_toend", 3, 15, 3, 2 );
|
|
}
|
|
|
|
self.moveplaybackrate = self.moveplaybackrate + 0.06;
|
|
block_ally_cornerwaving( 230 );
|
|
var_0 notify( "stop_loop" );
|
|
|
|
if ( maps\_utility::ent_flag( "started_cornerwaving" ) )
|
|
var_0 maps\_anim::anim_single_run_solo( self, "flood_cornerwaving_run" );
|
|
|
|
maps\_utility::enable_sprint();
|
|
self.prevmovemode = "none";
|
|
self notify( "move_loop_restart" );
|
|
var_0 = common_scripts\utility::getstruct( var_0.target, "targetname" );
|
|
thread ally_alley_flood_spawn( var_0 );
|
|
var_0 maps\_anim::anim_reach_solo( self, "flood_warehouse_breach" );
|
|
thread maps\flood_audio::sfx_stop_alley_water();
|
|
thread ally0_inhere();
|
|
maps\_utility::disable_sprint();
|
|
common_scripts\utility::exploder( "wh_lipwater" );
|
|
var_0 maps\_anim::anim_single_run_solo( self, "flood_warehouse_breach" );
|
|
ally0_main_int();
|
|
}
|
|
|
|
ally1_main()
|
|
{
|
|
thread ally_flee_setup( "r" );
|
|
maps\_utility::enable_sprint();
|
|
maps\_utility::disable_heat_behavior();
|
|
self pushplayer( 1 );
|
|
self.alertlevelint = 1;
|
|
maps\_utility::delaythread( 2, maps\_utility::dialogue_queue, "flood_diz_floodwaters" );
|
|
self.goalradius = 128;
|
|
self.moveplaybackrate = self.moveplaybackrate + 0.03;
|
|
var_0 = getnode( "ally1_flee_face", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
self.flood_current_goalnode = var_0.targetname;
|
|
self waittill( "goal" );
|
|
self.moveplaybackrate = self.moveplaybackrate - 0.03;
|
|
thread block_until_fully_stopped_and_idle( var_0, "flood_cornerwaving_loop", 1 );
|
|
thread ally_turnanim_hack( 4 );
|
|
var_1 = distance2d( level.player.origin, self.origin );
|
|
|
|
while ( var_1 > 550 )
|
|
{
|
|
var_1 = distance2d( level.player.origin, self.origin );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
common_scripts\utility::flag_set( "alley_move_toend" );
|
|
var_0 notify( "stop_loop" );
|
|
self stopanimscripted();
|
|
self.prevmovemode = "none";
|
|
self notify( "move_loop_restart" );
|
|
level.allies[1] thread maps\_utility::dialogue_queue( "flood_bkr_downthealley" );
|
|
var_0 = common_scripts\utility::getstruct( var_0.target, "targetname" );
|
|
var_0 = maps\flood_util::block_until_at_struct( var_0, 666 );
|
|
common_scripts\utility::flag_set( "alley_move_shitfuck" );
|
|
level notify( "stop_crazyness" );
|
|
thread maps\flood_audio::stop_sfx_dam_siren_ext();
|
|
thread maps\flood_audio::start_sfx_dam_siren_int();
|
|
var_0 = common_scripts\utility::getstruct( var_0.target, "targetname" );
|
|
self.moveplaybackrate = self.moveplaybackrate - 0.1;
|
|
var_0 = maps\flood_util::block_until_at_struct( var_0, 666 );
|
|
self.moveplaybackrate = self.moveplaybackrate + 0.1;
|
|
maps\_utility::disable_sprint();
|
|
ally1_main_int();
|
|
}
|
|
|
|
ally2_main()
|
|
{
|
|
thread ally_flee_setup( "r" );
|
|
maps\_utility::enable_sprint();
|
|
maps\_utility::disable_heat_behavior();
|
|
self pushplayer( 1 );
|
|
self.alertlevelint = 1;
|
|
self.flood_hasmantled = 0;
|
|
thread maps\_utility::dialogue_queue( "flood_kgn_letsmoveit" );
|
|
self.goalradius = 128;
|
|
self.moveplaybackrate = self.moveplaybackrate + 0.04;
|
|
var_0 = getnode( "ally2_flee_face", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
self.flood_current_goalnode = var_0.targetname;
|
|
self waittill( "goal" );
|
|
self.moveplaybackrate = self.moveplaybackrate - 0.04;
|
|
var_1 = gettime();
|
|
var_0 = common_scripts\utility::getstruct( var_0.target, "targetname" );
|
|
thread ally_turnanim_hack( 4 );
|
|
block_ally_cornerwaving( 88 );
|
|
var_1 = gettime() - var_1;
|
|
self.prevmovemode = "none";
|
|
self notify( "move_loop_restart" );
|
|
var_0 = maps\flood_util::block_until_at_struct( var_0 );
|
|
var_0 = common_scripts\utility::getstruct( var_0.target, "targetname" );
|
|
self.moveplaybackrate = self.moveplaybackrate - 0.1;
|
|
var_0 = maps\flood_util::block_until_at_struct( var_0, 666 );
|
|
self.moveplaybackrate = self.moveplaybackrate + 0.1;
|
|
maps\_utility::disable_sprint();
|
|
ally2_main_int();
|
|
}
|
|
|
|
ally0_start_path2( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
var_1 = distance2d( var_0.origin, self.origin );
|
|
|
|
for (;;)
|
|
{
|
|
if ( var_1 < 510 )
|
|
{
|
|
thread waterball_main_setup( "waterball_path_2" );
|
|
break;
|
|
}
|
|
|
|
var_1 = distance2d( var_0.origin, self.origin );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
alley_stumble()
|
|
{
|
|
self endon( "death" );
|
|
self.run_overrideanim = maps\_utility::getgenericanim( "run_stumble_non_loop" );
|
|
wait( getanimlength( maps\_utility::getgenericanim( "run_stumble_non_loop" ) ) );
|
|
self.run_overrideanim = undefined;
|
|
self.prevmovemode = "none";
|
|
self notify( "move_loop_restart" );
|
|
}
|
|
|
|
ally_alley_flood_spawn( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
var_1 = distance2d( var_0.origin, self.origin );
|
|
|
|
while ( var_1 > 850 )
|
|
{
|
|
var_1 = distance2d( var_0.origin, self.origin );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
thread maps\flood_audio::sfx_dam_tidal_wave_02();
|
|
thread maps\flood_anim::alley_flood_spawn();
|
|
}
|
|
|
|
ally0_inhere()
|
|
{
|
|
wait 0.3;
|
|
level.allies[1] thread maps\_utility::dialogue_queue( "flood_kgn_weretrapped" );
|
|
wait 0.2;
|
|
|
|
if ( level.allies[1].flood_current_goalnode == "ally1_alley_node" )
|
|
level.allies[1] notify( "goal" );
|
|
|
|
wait 0.6;
|
|
thread maps\_utility::dialogue_queue( "flood_diz_inhere" );
|
|
wait 0.2;
|
|
|
|
if ( level.allies[2].flood_current_goalnode == "ally2_alley_node" )
|
|
level.allies[2] notify( "goal" );
|
|
}
|
|
|
|
open_loading_dock_doors( var_0 )
|
|
{
|
|
thread start_loadingdocks_water();
|
|
common_scripts\utility::waitframe();
|
|
var_1 = getentarray( "alley_door_l", "targetname" );
|
|
var_2 = getentarray( "alley_door_r", "targetname" );
|
|
thread maps\flood_audio::diaz_door_kick_sfx();
|
|
thread maps\flood_fx::fx_warehouse_door_breach();
|
|
var_3 = 0.3;
|
|
|
|
foreach ( var_5 in var_1 )
|
|
{
|
|
var_5 rotateyaw( 85, var_3, 0, 0.2 );
|
|
|
|
if ( var_5.classname == "script_brushmodel" )
|
|
var_5 connectpaths();
|
|
}
|
|
|
|
foreach ( var_5 in var_2 )
|
|
{
|
|
var_5 rotateyaw( -85, var_3, 0, 0.2 );
|
|
|
|
if ( var_5.classname == "script_brushmodel" )
|
|
var_5 connectpaths();
|
|
}
|
|
|
|
wait 0.2;
|
|
var_9 = getent( "loading_dock_door_hack", "targetname" );
|
|
var_9 notsolid();
|
|
}
|
|
|
|
close_loading_dock_doors()
|
|
{
|
|
common_scripts\utility::flag_wait( "player_at_stairs" );
|
|
var_0 = getentarray( "alley_door_l", "targetname" );
|
|
var_1 = getentarray( "alley_door_r", "targetname" );
|
|
var_2 = 0.3;
|
|
|
|
foreach ( var_4 in var_0 )
|
|
{
|
|
var_4 rotateyaw( -85, var_2, 0, 0.2 );
|
|
|
|
if ( var_4.classname == "script_brushmodel" )
|
|
var_4 disconnectpaths();
|
|
}
|
|
|
|
foreach ( var_4 in var_1 )
|
|
{
|
|
var_4 rotateyaw( 85, var_2, 0, 0.2 );
|
|
|
|
if ( var_4.classname == "script_brushmodel" )
|
|
var_4 disconnectpaths();
|
|
}
|
|
}
|
|
|
|
waterball_main_setup( var_0 )
|
|
{
|
|
level endon( "enter_loadingdocks" );
|
|
level endon( "stop_crazyness" );
|
|
var_1 = 0.25;
|
|
|
|
if ( var_0 == "waterball_path_1" )
|
|
{
|
|
thread waterball_main_startfx( var_0 );
|
|
thread waterball_main_stream_setup( var_0 );
|
|
wait 4;
|
|
}
|
|
|
|
for ( var_2 = 0; var_2 < 15; var_2++ )
|
|
thread waterball_main_spawn( var_0, "debris", 666, 1 );
|
|
|
|
for ( var_2 = 0; var_2 < 6; var_2++ )
|
|
thread waterball_main_spawn( var_0, "medium_water_splash", 4, 1 );
|
|
|
|
wait( var_1 );
|
|
|
|
if ( var_0 == "waterball_path_1" )
|
|
thread waterball_main_side_setup( var_0 );
|
|
|
|
for (;;)
|
|
{
|
|
thread waterball_main_spawn( var_0, "debris", 666, 0 );
|
|
thread waterball_main_spawn( var_0, "debris", 666, 0 );
|
|
thread waterball_main_spawn( var_0, "debris", 666, 0 );
|
|
|
|
if ( var_0 == "waterball_path_1" )
|
|
thread waterball_main_spawn( var_0, "medium_water_splash", 8, 0 );
|
|
else
|
|
thread waterball_main_spawn( var_0, "medium_water_splash", 666, 0 );
|
|
|
|
wait( var_1 );
|
|
}
|
|
}
|
|
|
|
waterball_test()
|
|
{
|
|
|
|
}
|
|
|
|
waterball_debris_whee()
|
|
{
|
|
self rotatevelocity( ( randomfloatrange( -200, 200 ), randomfloatrange( -200, 200 ), randomfloatrange( -200, 200 ) ), 3000 );
|
|
wait 4;
|
|
self rotatevelocity( ( 0, 0, randomfloatrange( 50, 200 ) ), 3000 );
|
|
}
|
|
|
|
waterball_main_spawn( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = waterball_get_pathnodes( var_0 );
|
|
|
|
if ( isdefined( var_3 ) && var_3 )
|
|
var_5 = randomfloatrange( -300, 0 );
|
|
else
|
|
var_5 = randomfloatrange( -300, 300 );
|
|
|
|
var_6 = randomfloatrange( -1000, 0 );
|
|
var_7 = randomfloatrange( 30, 50 );
|
|
var_8 = randomfloatrange( 1100, 1450 );
|
|
var_9 = 0;
|
|
var_10 = spawn( "script_model", var_4[var_9].origin + ( var_5, var_6, var_7 ) );
|
|
var_10 thread trigger_radius_damage( 128, 50 );
|
|
|
|
if ( var_1 == "debris" )
|
|
{
|
|
var_11[0] = "ac_prs_bld_debris_wood_a_6";
|
|
var_11[1] = "ac_prs_enm_crates_b_debris_3";
|
|
var_11[2] = "ac_prs_prp_roof_debris_a_01";
|
|
var_11[3] = "com_coffee_machine_destroyed";
|
|
var_11[4] = "vehicle_man_7t_iw6";
|
|
var_11[5] = "foliage_tree_destroyed_tree_a";
|
|
var_11[6] = "vehicle_iveco_lynx_iw6";
|
|
var_1 = var_11[randomint( var_11.size )];
|
|
var_10 startusinglessfrequentlighting();
|
|
var_10 rotatevelocity( ( randomfloatrange( -200, 200 ), randomfloatrange( -200, 200 ), randomfloatrange( -200, 200 ) ), 3000 );
|
|
}
|
|
else
|
|
{
|
|
var_10 setmodel( "tag_origin" );
|
|
var_10 thread waterball_play_fx( var_1 );
|
|
var_10 thread waterball_play_bigfx( var_2 );
|
|
}
|
|
|
|
for ( var_12 = 1; isdefined( var_4[var_12] ); var_12++ )
|
|
{
|
|
var_13 = distance( var_4[var_9].origin, var_4[var_12].origin ) / var_8;
|
|
var_10 moveto( var_4[var_12].origin + ( var_5, var_6, var_7 ), var_13 );
|
|
wait( var_13 );
|
|
var_9++;
|
|
}
|
|
|
|
var_10 delete();
|
|
}
|
|
|
|
waterball_main_side_setup( var_0 )
|
|
{
|
|
level endon( "enter_loadingdocks" );
|
|
level endon( "stop_crazyness" );
|
|
wait 5;
|
|
|
|
for (;;)
|
|
{
|
|
thread waterball_main_side_spawn( var_0, 320 );
|
|
thread waterball_main_side_spawn( var_0, -500 );
|
|
wait( randomfloatrange( 0.3, 0.5 ) );
|
|
}
|
|
}
|
|
|
|
waterball_main_side_spawn( var_0, var_1 )
|
|
{
|
|
level endon( "enter_loadingdocks" );
|
|
var_2 = waterball_get_pathnodes( var_0 );
|
|
var_3 = 0;
|
|
var_4 = spawn( "script_model", var_2[var_3].origin + ( var_1, 0, 0 ) );
|
|
var_4 setmodel( "tag_origin" );
|
|
var_4 thread trigger_radius_damage( 256, 50 );
|
|
var_4 thread waterball_play_fx( "medium_water_splash" );
|
|
|
|
for ( var_5 = 1; isdefined( var_2[var_5] ); var_5++ )
|
|
{
|
|
var_6 = distance( var_2[var_3].origin, var_2[var_5].origin ) / 1500;
|
|
var_4 moveto( var_2[var_5].origin + ( var_1, 0, 0 ), var_6 );
|
|
wait( var_6 );
|
|
var_3++;
|
|
}
|
|
|
|
var_4 delete();
|
|
}
|
|
|
|
waterball_main_stream_setup( var_0 )
|
|
{
|
|
for ( var_1 = 0; var_1 < 10; var_1++ )
|
|
{
|
|
for ( var_2 = 0; var_2 < 6; var_2++ )
|
|
thread waterball_main_stream( var_0 );
|
|
|
|
wait 0.25;
|
|
}
|
|
}
|
|
|
|
waterball_main_stream( var_0 )
|
|
{
|
|
var_1 = waterball_get_pathnodes( var_0 );
|
|
var_2 = randomfloatrange( -300, 300 );
|
|
var_3 = randomfloatrange( -100, 0 );
|
|
var_4 = randomfloatrange( 5, 15 );
|
|
var_5 = randomfloatrange( 800, 1000 );
|
|
var_6 = randomintrange( 1, 4 );
|
|
var_7 = spawn( "script_model", var_1[var_6].origin + ( var_2, var_3, var_4 ) );
|
|
var_7 setmodel( "tag_origin" );
|
|
var_7.angles = ( 275, 270, 90 );
|
|
var_7 thread trigger_radius_push( 128, 50 );
|
|
var_7 thread waterball_play_smallfx_fast();
|
|
var_7 rotatevelocity( ( 0, 0, randomfloatrange( -50, 50 ) ), 3000 );
|
|
|
|
for ( var_8 = var_6 + 1; isdefined( var_1[var_8] ); var_8++ )
|
|
{
|
|
if ( var_8 == 4 )
|
|
var_7 rotateto( ( -90, 0, 0 ), 0.25 );
|
|
|
|
var_9 = distance( var_1[var_6].origin, var_1[var_8].origin ) / var_5;
|
|
var_7 moveto( var_1[var_8].origin + ( var_2, var_3, var_4 ), var_9 );
|
|
wait( var_9 );
|
|
var_6++;
|
|
}
|
|
|
|
var_7 notify( "finished" );
|
|
var_7 delete();
|
|
}
|
|
|
|
waterball_get_pathnodes( var_0 )
|
|
{
|
|
var_1 = common_scripts\utility::getstruct( var_0, "targetname" );
|
|
|
|
for ( var_2 = 0; isdefined( var_1.target ); var_2++ )
|
|
{
|
|
var_3[var_2] = var_1;
|
|
var_1 = common_scripts\utility::getstruct( var_1.target, "targetname" );
|
|
}
|
|
|
|
var_3[var_2] = var_1;
|
|
return var_3;
|
|
}
|
|
|
|
waterball_play_smallfx( var_0 )
|
|
{
|
|
if ( randomint( var_0 ) == 1 )
|
|
playfxontag( level._effect["small_water_splash"], self, "tag_origin" );
|
|
}
|
|
|
|
waterball_play_smallfx_fast()
|
|
{
|
|
playfxontag( level._effect["small_water_splash_fast"], self, "tag_origin" );
|
|
}
|
|
|
|
waterball_play_fx( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
playfxontag( level._effect["medium_water_splash"], self, "tag_origin" );
|
|
}
|
|
|
|
waterball_play_bigfx( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
|
|
if ( var_0 != 666 )
|
|
{
|
|
wait( randomfloatrange( 1, 5 ) );
|
|
|
|
if ( randomint( var_0 ) == 1 )
|
|
playfx( level._effect["giant_water_splash"], self.origin );
|
|
}
|
|
}
|
|
|
|
waterball_main_startfx( var_0 )
|
|
{
|
|
level endon( "enter_loadingdocks" );
|
|
level endon( "stop_crazyness" );
|
|
var_1 = getent( var_0, "targetname" ).origin;
|
|
playfx( level._effect["giant_water_splash"], var_1 + ( 0, 0, -200 ) );
|
|
|
|
for ( var_2 = 0; var_2 < 12; var_2++ )
|
|
{
|
|
playfx( level._effect["giant_water_splash"], var_1 + ( randomfloatrange( -600, 600 ), -400, randomfloatrange( -300, -200 ) ) );
|
|
wait( randomfloatrange( 0.1, 0.4 ) );
|
|
}
|
|
}
|
|
|
|
waterball_alley_stream_setup()
|
|
{
|
|
level endon( "enter_loadingdocks" );
|
|
var_0 = 0.15;
|
|
var_1 = getent( "waterball_path_3", "targetname" );
|
|
var_2 = getent( "waterball_path_4", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
thread waterball_alley_stream_spawn( "flood_waterball_mini", var_1, -90, 2 );
|
|
thread waterball_alley_stream_spawn( "flood_waterball_mini", var_2, 90, 2 );
|
|
wait( var_0 );
|
|
}
|
|
}
|
|
|
|
waterball_alley_stream_spawn( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = randomfloatrange( -100, 100 );
|
|
var_5 = randomfloatrange( -100, 100 );
|
|
var_6 = randomfloatrange( 5, 12 );
|
|
var_7 = randomfloatrange( 150, 200 );
|
|
var_8 = spawn( "script_model", var_1.origin + ( var_4, var_5, var_6 ) );
|
|
var_8 setmodel( "tag_origin" );
|
|
var_8.angles = ( -90, 0, 0 );
|
|
var_8 startusinglessfrequentlighting();
|
|
var_8 rotatevelocity( ( 0, 0, randomfloatrange( -50, 0 ) ), 3000 );
|
|
var_8 thread waterball_play_smallfx( var_3 );
|
|
var_9 = getent( var_1.target, "targetname" );
|
|
var_10 = distance( var_1.origin, var_9.origin ) / var_7;
|
|
var_8 moveto( var_9.origin + ( var_4, var_5, var_6 ), var_10 );
|
|
wait( var_10 );
|
|
var_8 delete();
|
|
}
|
|
|
|
waterball_alley_setup()
|
|
{
|
|
level endon( "breach_start" );
|
|
var_0 = 1;
|
|
var_1 = getent( "waterball_path_3", "targetname" );
|
|
var_2 = getent( "waterball_path_4", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
thread waterball_alley_spawn( var_1 );
|
|
thread waterball_alley_spawn( var_2 );
|
|
wait( var_0 );
|
|
}
|
|
}
|
|
|
|
waterball_alley_spawn( var_0 )
|
|
{
|
|
var_1 = 0;
|
|
var_2 = 200;
|
|
var_3 = spawn( "script_model", var_0.origin + ( 0, var_1, 0 ) );
|
|
var_3 setmodel( "tag_origin" );
|
|
var_3 thread waterball_play_fx( "medium_water_splash" );
|
|
var_3 thread trigger_radius_damage( 180, 75 );
|
|
var_4 = getent( var_0.target, "targetname" );
|
|
var_5 = distance( var_0.origin, var_4.origin ) / var_2;
|
|
var_3 moveto( var_4.origin + ( 0, var_1, 0 ), var_5 );
|
|
wait( var_5 );
|
|
var_3 delete();
|
|
}
|
|
|
|
waterball_loadingdocks_setup()
|
|
{
|
|
level endon( "breach_start" );
|
|
wait 4;
|
|
var_0 = 1;
|
|
var_1 = getent( "waterball_path_5", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
thread waterball_loadingdocks_spawn( var_1 );
|
|
wait( var_0 );
|
|
}
|
|
}
|
|
|
|
waterball_loadingdocks_spawn( var_0 )
|
|
{
|
|
var_1 = 0;
|
|
var_2 = 200;
|
|
var_3 = spawn( "script_model", var_0.origin + ( 0, var_1, 0 ) );
|
|
var_3 setmodel( "tag_origin" );
|
|
var_3 thread waterball_play_fx( "medium_water_splash" );
|
|
var_3 thread trigger_radius_damage( 130, 20 );
|
|
var_4 = getent( var_0.target, "targetname" );
|
|
var_5 = distance( var_0.origin, var_4.origin ) / var_2;
|
|
var_3 moveto( var_4.origin + ( 0, var_1, 0 ), var_5 );
|
|
wait( var_5 );
|
|
var_3 delete();
|
|
}
|
|
|
|
waterball_loadingdocks_floor()
|
|
{
|
|
level endon( "breach_start" );
|
|
var_0 = 0.05;
|
|
var_1 = getentarray( "loadingdocks_floor", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
var_2 = var_1[randomint( var_1.size )];
|
|
playfx( level._effect["small_water_splash"], var_2.origin + ( 0, 0, 10 ) );
|
|
wait( var_0 );
|
|
}
|
|
}
|
|
|
|
moving_damage_radius_think_damage( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self waittill( "trigger" );
|
|
level.player dodamage( var_0, level.player.origin );
|
|
level.player shellshock( "default_nosound", 0.5 );
|
|
}
|
|
|
|
moving_damage_radius_think_push( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self waittill( "trigger" );
|
|
}
|
|
|
|
trigger_radius_damage( var_0, var_1 )
|
|
{
|
|
var_2 = spawn( "trigger_radius", self.origin, 0, var_0, var_0 );
|
|
var_2 enablelinkto();
|
|
var_2 linkto( self );
|
|
var_2 thread moving_damage_radius_think_damage( var_1 );
|
|
self waittill( "death" );
|
|
var_2 delete();
|
|
}
|
|
|
|
trigger_radius_push( var_0, var_1 )
|
|
{
|
|
var_2 = spawn( "trigger_radius", self.origin, 0, var_0, var_0 );
|
|
var_2 enablelinkto();
|
|
var_2 linkto( self );
|
|
var_2 thread moving_damage_radius_think_push( var_1 );
|
|
self waittill( "death" );
|
|
var_2 delete();
|
|
}
|
|
|
|
damage_vehicles_path1()
|
|
{
|
|
level endon( "enter_loadingdocks" );
|
|
level endon( "stop_crazyness" );
|
|
var_0 = getent( "flood_street_car_1", "script_noteworthy" );
|
|
var_0 thread damage_vehicle_think( 1 );
|
|
var_0 = getent( "flood_street_car_2", "script_noteworthy" );
|
|
var_0 thread damage_vehicle_think( 3 );
|
|
var_0 = getent( "flood_street_car_3", "script_noteworthy" );
|
|
var_0 thread damage_vehicle_think( 4.5 );
|
|
var_0 = getent( "flood_street_car_4", "script_noteworthy" );
|
|
var_0 thread damage_vehicle_think( 4.5 );
|
|
var_0 = getent( "flood_street_car_5", "script_noteworthy" );
|
|
var_0 thread damage_vehicle_think( 5 );
|
|
}
|
|
|
|
damage_vehicles_path2()
|
|
{
|
|
var_0 = getent( "flood_street_car_path2_1", "script_noteworthy" );
|
|
var_0 thread damage_vehicle_think( 1.8 );
|
|
wait 2.2;
|
|
thread alley_giantsplashes_right();
|
|
}
|
|
|
|
damage_vehicle_think( var_0 )
|
|
{
|
|
wait( var_0 );
|
|
self dodamage( 999999, self.origin );
|
|
var_1 = anglestoup( self.origin ) * 1000;
|
|
self vehphys_launch( var_1, 2 );
|
|
wait 5;
|
|
}
|
|
|
|
alley_giantsplashes_left()
|
|
{
|
|
level endon( "enter_loadingdocks" );
|
|
var_0 = getent( "alley_splashes", "targetname" );
|
|
var_0 waittill( "trigger" );
|
|
|
|
for (;;)
|
|
{
|
|
playfx( level._effect["giant_water_splash"], getent( "alley_giantsplash_left", "targetname" ).origin );
|
|
wait 3;
|
|
}
|
|
}
|
|
|
|
alley_giantsplashes_right()
|
|
{
|
|
level endon( "enter_loadingdocks" );
|
|
|
|
for (;;)
|
|
{
|
|
playfx( level._effect["giant_water_splash"], getent( "alley_giantsplash_right", "targetname" ).origin );
|
|
wait 3;
|
|
}
|
|
}
|
|
|
|
inside_loadingdocks()
|
|
{
|
|
var_0 = getent( "inside_loadingdocks", "targetname" );
|
|
var_0 waittill( "trigger" );
|
|
level notify( "enter_loadingdocks" );
|
|
}
|
|
|
|
setup_loadingdocks_water()
|
|
{
|
|
thread start_coverheight_water_rising( -125, 1, "coverwater_warehouse" );
|
|
thread start_coverheight_water_rising( -125, 1, "coverwater_warehouse_postmantle" );
|
|
thread start_coverheight_water_rising( 0, 1, "coverwater_warehouse_premantle" );
|
|
wait 0.1;
|
|
}
|
|
|
|
start_loadingdocks_water()
|
|
{
|
|
level.flood_double_door_center = getent( "double_door_center_ent", "targetname" );
|
|
var_0 = getentarray( "coverwater_warehouse", "targetname" );
|
|
level.flood_double_door_center linkto( var_0[0] );
|
|
setup_loadingdocks_water();
|
|
thread maps\flood_coverwater::register_coverwater_area( "coverwater_warehouse", "swept_away" );
|
|
thread start_coverheight_water_rising( 1, 0, "coverwater_warehouse" );
|
|
level.cw_player_in_rising_water = 1;
|
|
level.cw_player_allowed_underwater_time = 1;
|
|
}
|
|
|
|
flooding_int_start()
|
|
{
|
|
maps\flood_util::player_move_to_checkpoint_start( "flooding_int_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( "flooding_int", 1 );
|
|
level.allies[0] ally_flee_setup( "r" );
|
|
level.allies[1] ally_flee_setup( "r" );
|
|
level.allies[2] ally_flee_setup( "r" );
|
|
level.allies[0] thread ally0_main_int();
|
|
level.allies[1] thread ally1_main_int();
|
|
level.allies[2] thread ally2_main_int();
|
|
thread maps\flood_fx::fx_warehouse_floating_debris_int();
|
|
|
|
if ( !isdefined( level.already_checking_udwfx ) )
|
|
{
|
|
thread maps\flood_fx::fx_warehouse_underwater_fx_on();
|
|
thread maps\flood_fx::fx_warehouse_underwater_fx_off();
|
|
common_scripts\utility::flag_set( "cw_player_abovewater" );
|
|
common_scripts\utility::flag_clear( "cw_player_underwater" );
|
|
}
|
|
|
|
thread start_loadingdocks_water();
|
|
thread breach_warehouse_doors();
|
|
thread player_adjust_speed();
|
|
thread warehouse_collision_hacks_toggle();
|
|
thread maps\flood_fx::warelights_off();
|
|
maps\flood_util::setup_default_weapons();
|
|
}
|
|
|
|
flooding_int()
|
|
{
|
|
level thread maps\_utility::autosave_by_name( "flood_interior" );
|
|
thread close_warehouse_doors();
|
|
thread trigger_warehouse_door_burst();
|
|
thread check_player_warehouse_mantle();
|
|
thread teleport_ally2();
|
|
thread maps\flood_util::setup_bokehdot_volume( "flooding_bokehdot" );
|
|
thread maps\flood_mall::mall_roof_door_firstframe();
|
|
thread warehouse_double_doors();
|
|
thread enemy_spanish_vo();
|
|
thread player_set_stairwell_speed();
|
|
thread alley_kill_triggers( "on" );
|
|
thread exit_water_tired();
|
|
thread broken_door_rumbles();
|
|
thread angry_flood_cleanup();
|
|
thread runback_death_toggle( "on" );
|
|
thread maps\flood_fx::fx_warehouse_amb_fx();
|
|
thread maps\flood_fx::fx_retarget_warehouse_waters_lighting();
|
|
thread maps\flood_audio::sfx_warehouse_water();
|
|
thread maps\flood_audio::sfx_small_rumble_loop();
|
|
common_scripts\utility::flag_wait( "mall_breach_start" );
|
|
}
|
|
|
|
hide_hole1_pieces()
|
|
{
|
|
var_0 = getent( "mall_roof_hole1_trig", "targetname" );
|
|
var_0 common_scripts\utility::trigger_off();
|
|
}
|
|
|
|
ally_main_walk()
|
|
{
|
|
maps\_utility::disable_heat_behavior();
|
|
maps\_utility::cqb_walk( "on" );
|
|
}
|
|
|
|
ally0_main_int()
|
|
{
|
|
maps\flood_util::jkuprint( "mall int start time: " + gettime() );
|
|
self endon( "death" );
|
|
maps\_utility::ent_flag_init( "stop_alley_wakes" );
|
|
maps\_utility::ent_flag_set( "stop_alley_wakes" );
|
|
var_0 = common_scripts\utility::getstruct( "ally0_flee_int_start", "targetname" );
|
|
var_0 maps\_anim::anim_reach_solo( self, "flood_warehouse_mantle" );
|
|
thread maps\flood_fx::character_make_wet( 1, 0 );
|
|
thread maps\flood_fx::fx_warehouse_ally_mantle( 0.3, 0.3 );
|
|
maps\flood_audio::sfx_flood_mall_int_npc_mantles( "scn_flood_mall_ally_mantle_01" );
|
|
var_0 maps\_anim::anim_single_run_solo( self, "flood_warehouse_mantle" );
|
|
thread trigger_splash_wet( "warehouse_wet01", 50 );
|
|
thread trigger_splash_wet( "warehouse_wet02", 40 );
|
|
thread maps\_utility::dialogue_queue( "flood_bkr_notsafehere" );
|
|
level.allies[1] maps\_utility::delaythread( 4, maps\_utility::dialogue_queue, "flood_diz_dontstoprunning" );
|
|
level.allies[1] maps\_utility::delaythread( 8, maps\_utility::dialogue_queue, "flood_kgn_keepmoving2" );
|
|
thread maps\flood_audio::sfx_big_metal_stress();
|
|
thread trigger_warehouse_hallway_vo();
|
|
var_0 = common_scripts\utility::getstruct( "warehouse_stairs", "targetname" );
|
|
var_0 maps\_anim::anim_reach_solo( self, "warehouse_stairs_start" );
|
|
thread maps\flood_fx::character_make_wet( 20, 0 );
|
|
var_0 maps\_anim::anim_single_solo( self, "warehouse_stairs_start" );
|
|
common_scripts\utility::flag_set( "ally0_stair_ready" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "warehouse_stairs_loop", "stop_loop" );
|
|
common_scripts\utility::flag_wait_all( "player_at_stairs", "ally1_stair_ready" );
|
|
var_0 notify( "stop_loop" );
|
|
maps\_utility::delaythread( 2, common_scripts\utility::flag_set, "moving_to_mall" );
|
|
var_0 maps\_anim::anim_single_solo( self, "warehouse_stairs_end" );
|
|
level.player enableweaponswitch();
|
|
level.player enableoffhandweapons();
|
|
thread maps\flood_audio::sfx_stop_warehouse_water();
|
|
maps\flood_mall::ally0_mall();
|
|
}
|
|
|
|
flooding_stairs_vo( var_0 )
|
|
{
|
|
level.player endon( "death" );
|
|
level.allies[0] endon( "death" );
|
|
level.allies[1] endon( "death" );
|
|
level.allies[2] endon( "death" );
|
|
common_scripts\utility::flag_set( "moving_to_mall" );
|
|
maps\flood_util::jkuprint( "starting long vo: " + gettime() );
|
|
level.allies[0] maps\_utility::dialogue_queue( "flood_vrg_commentarylieutenant" );
|
|
wait 0.25;
|
|
level.allies[1] maps\_utility::dialogue_queue( "flood_mrk_ithinkitsbad" );
|
|
wait 0.3;
|
|
level.allies[0] maps\_utility::dialogue_queue( "flood_vrg_runofthemill" );
|
|
wait 0.15;
|
|
level.allies[1] maps\_utility::dialogue_queue( "flood_mrk_sir" );
|
|
wait 0.2;
|
|
level.allies[0] maps\_utility::dialogue_queue( "flood_vrg_thatwouldbesitrep" );
|
|
wait 0.2;
|
|
level.allies[1] maps\_utility::dialogue_queue( "flood_mrk_sitrepconfirmedsir" );
|
|
wait 0.5;
|
|
level.allies[1] maps\_utility::dialogue_queue( "flood_mrk_whatkindofman" );
|
|
wait 0.2;
|
|
level.allies[0] maps\_utility::dialogue_queue( "flood_vrg_amanwhowont" );
|
|
wait 0.9;
|
|
level.allies[2] maps\_utility::dialogue_queue( "flood_bkr_thisplaceisntgonna" );
|
|
wait 0.3;
|
|
level.allies[0] maps\_utility::dialogue_queue( "flood_vrg_itshotoutthere" );
|
|
wait 0.3;
|
|
level.allies[0] maps\_utility::dialogue_queue( "flood_vrg_anyobjectionstofinishing" );
|
|
wait 0.4;
|
|
level.allies[0] maps\_utility::dialogue_queue( "flood_vrg_allrightletsgo" );
|
|
maps\flood_util::jkuprint( "ending long vo: " + gettime() );
|
|
}
|
|
|
|
ally1_main_int()
|
|
{
|
|
self endon( "death" );
|
|
maps\_utility::ent_flag_init( "stop_alley_wakes" );
|
|
maps\_utility::ent_flag_set( "stop_alley_wakes" );
|
|
thread maps\flood_fx::fx_alley_froth();
|
|
self.moveplaybackrate = 1.1;
|
|
self.movetransitionrate = 1.1;
|
|
self.animplaybackrate = 1.1;
|
|
var_0 = common_scripts\utility::getstruct( "ally1_flee_int_start", "targetname" );
|
|
maps\_utility::delaythread( 0.1, maps\flood_util::push_player, 0 );
|
|
var_0 maps\_anim::anim_reach_solo( self, "flood_warehouse_mantle" );
|
|
thread maps\flood_fx::character_make_wet( 1, 0 );
|
|
thread maps\flood_fx::fx_warehouse_ally_mantle( 0.3, 0.25 );
|
|
maps\flood_audio::sfx_flood_mall_int_npc_mantles( "scn_flood_mall_ally_mantle_02" );
|
|
var_0 maps\_anim::anim_single_run_solo( self, "flood_warehouse_mantle" );
|
|
thread trigger_splash_wet( "warehouse_wet01", 50 );
|
|
thread trigger_splash_wet( "warehouse_wet02", 40 );
|
|
var_0 = common_scripts\utility::getstruct( "warehouse_stairs", "targetname" );
|
|
maps\_utility::delaythread( 0.1, maps\flood_util::push_player, 0 );
|
|
var_0 maps\_anim::anim_reach_solo( self, "warehouse_stairs_start" );
|
|
thread maps\flood_fx::character_make_wet( 20, 0 );
|
|
level maps\_utility::delaythread( getanimlength( maps\_utility::getanim( "warehouse_stairs_start" ) ) - 2, common_scripts\utility::flag_set, "ally1_stair_vo_hack" );
|
|
var_0 maps\_anim::anim_single_solo( self, "warehouse_stairs_start" );
|
|
common_scripts\utility::flag_set( "ally1_stair_ready" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "warehouse_stairs_loop", "stop_loop" );
|
|
common_scripts\utility::flag_wait_all( "player_at_stairs", "ally0_stair_ready" );
|
|
var_0 notify( "stop_loop" );
|
|
var_0 maps\_anim::anim_single_solo( self, "warehouse_stairs_end" );
|
|
self.moveplaybackrate = 1;
|
|
self.movetransitionrate = 1;
|
|
self.animplaybackrate = 1;
|
|
maps\flood_mall::ally1_mall();
|
|
}
|
|
|
|
ally2_main_int()
|
|
{
|
|
self endon( "death" );
|
|
maps\_utility::ent_flag_init( "stop_alley_wakes" );
|
|
maps\_utility::ent_flag_set( "stop_alley_wakes" );
|
|
self.flood_hasmantled = 0;
|
|
var_0 = common_scripts\utility::getstruct( "ally2_flee_int_start", "targetname" );
|
|
maps\_utility::delaythread( 0.1, maps\flood_util::push_player, 0 );
|
|
var_0 maps\_anim::anim_reach_solo( self, "flood_warehouse_mantle" );
|
|
self.flood_hasmantled = 1;
|
|
thread maps\flood_fx::character_make_wet( 1, 0 );
|
|
thread maps\flood_fx::fx_warehouse_ally_mantle( 0.4, 0.2 );
|
|
maps\flood_audio::sfx_flood_mall_int_npc_mantles( "scn_flood_mall_ally_mantle_03" );
|
|
var_0 maps\_anim::anim_single_run_solo( self, "flood_warehouse_mantle" );
|
|
thread trigger_splash_wet( "warehouse_wet01", 50 );
|
|
thread trigger_splash_wet( "warehouse_wet02", 40 );
|
|
var_0 = common_scripts\utility::getstruct( var_0.target, "targetname" );
|
|
var_0 = maps\flood_util::block_until_at_struct( var_0, 48 );
|
|
var_0 = common_scripts\utility::getstruct( "warehouse_stairs", "targetname" );
|
|
maps\_utility::delaythread( 0.1, maps\flood_util::push_player, 0 );
|
|
thread maps\flood_audio::sfx_oldboy_stumble_stairs();
|
|
var_0 maps\_anim::anim_reach_solo( self, "warehouse_stairs_start" );
|
|
thread maps\flood_fx::character_make_wet( 20, 0 );
|
|
var_0 maps\_anim::anim_single_solo( self, "warehouse_stairs_start" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "warehouse_stairs_loop", "stop_loop" );
|
|
thread ally_main_walk();
|
|
common_scripts\utility::flag_wait_all( "player_at_stairs", "ally0_stair_ready", "ally1_stair_ready" );
|
|
var_0 notify( "stop_loop" );
|
|
wait 1;
|
|
var_0 maps\_anim::anim_single_run_solo( self, "warehouse_stairs_end" );
|
|
maps\flood_mall::ally2_mall();
|
|
}
|
|
|
|
trigger_warehouse_hallway_vo()
|
|
{
|
|
self endon( "death" );
|
|
var_0 = common_scripts\utility::getstruct( "warehouse_hallway_vo", "targetname" );
|
|
|
|
while ( distance2d( var_0.origin, self.origin ) > 100 )
|
|
common_scripts\utility::waitframe();
|
|
|
|
thread maps\_utility::dialogue_queue( "flood_bkr_upthestairs" );
|
|
}
|
|
|
|
trigger_splash_wet( var_0, var_1 )
|
|
{
|
|
self endon( "death" );
|
|
var_2 = common_scripts\utility::getstruct( var_0, "targetname" );
|
|
|
|
while ( distance2d( var_2.origin, self.origin ) > var_1 )
|
|
common_scripts\utility::waitframe();
|
|
|
|
thread maps\flood_fx::character_make_wet( 2, 0 );
|
|
}
|
|
|
|
hallway_blocker()
|
|
{
|
|
level endon( "breach_start" );
|
|
var_0 = getent( "flooding_hallway_blocker", "targetname" );
|
|
var_0.origin = self.origin;
|
|
var_0 linkto( self, "tag_origin", ( 0, 0, 48 ), ( 0, 0, 0 ) );
|
|
|
|
for (;;)
|
|
{
|
|
var_0 linkto( self, "tag_origin", ( 0, 0, 48 ), ( 0, self.angles[1] * -1, 0 ) );
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
breach_warehouse_doors()
|
|
{
|
|
var_0 = getentarray( "warehouse_door_int_l", "targetname" );
|
|
var_1 = getentarray( "warehouse_door_int_r", "targetname" );
|
|
var_2 = getent( "warehouse_door_int_l_lock", "targetname" );
|
|
var_3 = getent( "warehouse_door_int_r_lock", "targetname" );
|
|
var_2 linkto( var_0[0] );
|
|
var_3 linkto( var_1[0] );
|
|
|
|
foreach ( var_5 in var_0 )
|
|
{
|
|
var_5 rotateyaw( 85, 0.2, 0.1, 0.1 );
|
|
|
|
if ( var_5.classname == "script_brushmodel" )
|
|
var_5 connectpaths();
|
|
}
|
|
|
|
foreach ( var_5 in var_1 )
|
|
{
|
|
var_5 rotateyaw( -85, 0.2, 0.1, 0.1 );
|
|
|
|
if ( var_5.classname == "script_brushmodel" )
|
|
var_5 connectpaths();
|
|
}
|
|
|
|
var_9 = getentarray( "mall_ware_brush_show", "targetname" );
|
|
|
|
foreach ( var_5 in var_9 )
|
|
{
|
|
var_5 hide();
|
|
var_5 notsolid();
|
|
}
|
|
|
|
common_scripts\utility::flag_set( "warehouse_door_breached" );
|
|
}
|
|
|
|
close_warehouse_doors()
|
|
{
|
|
level endon( "swept_away" );
|
|
common_scripts\utility::flag_wait( "mall_breach_start" );
|
|
var_0 = getentarray( "warehouse_door_int_l", "targetname" );
|
|
var_1 = getentarray( "warehouse_door_int_r", "targetname" );
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
var_3 rotateyaw( -85, 0.2, 0.1, 0.1 );
|
|
|
|
if ( var_3.classname == "script_brushmodel" )
|
|
var_3 connectpaths();
|
|
}
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
var_3 rotateyaw( 85, 0.2, 0.1, 0.1 );
|
|
|
|
if ( var_3.classname == "script_brushmodel" )
|
|
var_3 connectpaths();
|
|
}
|
|
}
|
|
|
|
wait_for_intro_vignette_use()
|
|
{
|
|
level.player endon( "mantle_used" );
|
|
var_0 = getent( "train_coupling", "targetname" );
|
|
notifyoncommand( "mantle", "+gostand" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( common_scripts\utility::flag( "trig_intro_vignette" ) && maps\_utility::player_looking_at( var_0.origin, 0.3 ) && level.player getstance() == "stand" )
|
|
{
|
|
setsaveddvar( "hud_forceMantleHint", 1 );
|
|
level.player allowjump( 0 );
|
|
level.player thread player_mantle_wait();
|
|
|
|
while ( common_scripts\utility::flag( "trig_intro_vignette" ) && maps\_utility::player_looking_at( var_0.origin, 0.3 ) && level.player getstance() == "stand" )
|
|
{
|
|
if ( level.player getstance() != "stand" )
|
|
break;
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
level.player notify( "not_active" );
|
|
setsaveddvar( "hud_forceMantleHint", 0 );
|
|
level.player allowjump( 1 );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
player_mantle_wait()
|
|
{
|
|
self endon( "not_active" );
|
|
self waittill( "mantle" );
|
|
setsaveddvar( "hud_forceMantleHint", 0 );
|
|
self notify( "mantle_used" );
|
|
}
|
|
|
|
loadingdocks_no_jump()
|
|
{
|
|
level endon( "swept_away" );
|
|
level endon( "mall_attack_player" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( common_scripts\utility::flag( "loadingdocks_no_jump" ) )
|
|
level.player allowjump( 0 );
|
|
else
|
|
level.player allowjump( 1 );
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
trigger_warehouse_door_burst()
|
|
{
|
|
level endon( "player_on_mall_roof" );
|
|
var_0 = getent( "warehouse_door_burst1", "targetname" );
|
|
var_0.animname = "warehouse_door_burst";
|
|
var_0 maps\_utility::assign_animtree();
|
|
var_1 = getent( "warehouse_door_burst2", "targetname" );
|
|
var_1.animname = "warehouse_door_burst";
|
|
var_1 maps\_utility::assign_animtree();
|
|
var_2 = getent( "warehouse_door_burst3", "targetname" );
|
|
var_2.animname = "warehouse_door_burst";
|
|
var_2 maps\_utility::assign_animtree();
|
|
var_0 thread maps\_anim::anim_loop_solo( var_0, "flood_warehouse_doorbuckling_door_loop1" );
|
|
var_1 thread maps\_anim::anim_loop_solo( var_1, "flood_warehouse_doorbuckling_door_loop1", "stop_loop" );
|
|
var_2 thread maps\_anim::anim_loop_solo( var_2, "flood_warehouse_doorbuckling_door_loop1", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "warehouse_door_burst_alt" );
|
|
thread maps\flood_audio::sfx_warehouse_door_burst_01( var_1 );
|
|
thread maps\flood_fx::fx_warehouse_door_burst_02();
|
|
var_1 notify( "stop_loop" );
|
|
var_1 maps\_anim::anim_single_solo( var_1, "flood_warehouse_doorbuckling_door_alt" );
|
|
var_1 thread maps\_anim::anim_loop_solo( var_1, "flood_warehouse_doorbuckling_door_loop2_alt" );
|
|
common_scripts\utility::flag_wait( "warehouse_door_burst" );
|
|
thread maps\flood_audio::sfx_warehouse_door_burst_02( var_2 );
|
|
var_2 notify( "stop_loop" );
|
|
thread maps\flood_fx::fx_warehouse_door_burst();
|
|
var_2 maps\_anim::anim_single_solo( var_2, "flood_warehouse_doorbuckling_door" );
|
|
var_2 thread maps\_anim::anim_loop_solo( var_2, "flood_warehouse_doorbuckling_door_loop2" );
|
|
}
|
|
|
|
check_player_warehouse_mantle()
|
|
{
|
|
level endon( "player_on_mall_roof" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( common_scripts\utility::flag( "player_warehouse_mantle" ) )
|
|
{
|
|
if ( level.player ismantling() )
|
|
common_scripts\utility::flag_set( "player_doing_warehouse_mantle" );
|
|
else
|
|
common_scripts\utility::flag_clear( "player_doing_warehouse_mantle" );
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
teleport_ally2()
|
|
{
|
|
level endon( "player_on_mall_roof" );
|
|
common_scripts\utility::flag_wait( "player_doing_warehouse_mantle" );
|
|
|
|
if ( !level.allies[2].flood_hasmantled && distance2d( level.player.origin, level.allies[2].origin ) > 169 )
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "ally2_warehouse_snap", "targetname" );
|
|
level.allies[2] forceteleport( var_0.origin, var_0.angles );
|
|
level.allies[2] setgoalpos( var_0.origin );
|
|
}
|
|
}
|
|
|
|
angry_flood_collision( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = 25;
|
|
|
|
foreach ( var_6 in var_0 )
|
|
{
|
|
var_7 = level.scr_model[var_6.animname];
|
|
var_8 = getnumparts( var_7 );
|
|
|
|
for ( var_9 = 0; var_9 < var_8; var_9++ )
|
|
{
|
|
var_10 = getpartname( var_7, var_9 );
|
|
|
|
if ( randomint( var_2 ) == 0 )
|
|
thread angry_flood_collision_spawn( var_6, var_10, var_1, var_4, var_3 );
|
|
}
|
|
}
|
|
}
|
|
|
|
angry_flood_collision_spawn( var_0, var_1, var_2, var_3, var_4 )
|
|
{
|
|
var_5 = spawn( "trigger_radius", var_0 gettagorigin( var_1 ), 0, var_2, var_2 );
|
|
var_5 enablelinkto();
|
|
var_5 linkto( var_0, var_1 );
|
|
var_5 thread angry_flood_collision_dodamage( var_3 );
|
|
common_scripts\utility::flag_wait( var_4 );
|
|
var_5 delete();
|
|
}
|
|
|
|
angry_flood_collision_dodamage( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "player_killed_by_angry" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "trigger" );
|
|
|
|
if ( var_0 * level.player.damagemultiplier > level.player.health )
|
|
thread angry_flood_finishing_move( var_0 );
|
|
else
|
|
{
|
|
thread maps\flood_fx::fx_bokehdots_close();
|
|
level.player dodamage( var_0, level.player.origin );
|
|
}
|
|
|
|
wait 3;
|
|
}
|
|
}
|
|
|
|
angry_flood_finishing_move( var_0 )
|
|
{
|
|
if ( !common_scripts\utility::flag( "player_killed_by_angry" ) )
|
|
{
|
|
common_scripts\utility::flag_set( "player_killed_by_angry" );
|
|
level.player disableweapons();
|
|
level.player hideviewmodel();
|
|
level.player freezecontrols( 1 );
|
|
thread maps\flood_fx::water_death_fx();
|
|
level.player dodamage( var_0, level.player.origin );
|
|
setdvar( "ui_deadquote", &"FLOOD_SKYBRIDGE_FAIL" );
|
|
level thread maps\_utility::missionfailedwrapper();
|
|
}
|
|
}
|
|
|
|
angry_flood_collision_cheater( var_0 )
|
|
{
|
|
level endon( "enter_loadingdocks" );
|
|
|
|
for (;;)
|
|
{
|
|
maps\_utility::delaythread( 0.3, ::angry_flood_collision_cheater_spawn, var_0, 150, 352, 1 );
|
|
maps\_utility::delaythread( 0.3, ::angry_flood_collision_cheater_spawn, var_0, 150, 256, 0 );
|
|
maps\_utility::delaythread( 0.15, ::angry_flood_collision_cheater_spawn, var_0, -80, 256, 0 );
|
|
thread angry_flood_collision_cheater_spawn( var_0, -300, 256, 0 );
|
|
wait 0.55;
|
|
}
|
|
}
|
|
|
|
alley_flood_collision_cheater( var_0 )
|
|
{
|
|
level endon( "player_at_stairs" );
|
|
|
|
for (;;)
|
|
{
|
|
thread angry_flood_collision_cheater_spawn( var_0, 0, 184, 0, 700 );
|
|
wait 0.4;
|
|
}
|
|
}
|
|
|
|
angry_flood_collision_cheater_spawn( var_0, var_1, var_2, var_3, var_4 )
|
|
{
|
|
if ( !isdefined( var_4 ) )
|
|
var_4 = 1000;
|
|
|
|
var_5 = waterball_get_pathnodes( var_0 );
|
|
var_6 = 0;
|
|
var_7 = var_2;
|
|
var_8 = spawn( "script_model", var_5[var_6].origin + ( var_1, 0, 0 ) );
|
|
var_9 = spawn( "trigger_radius", var_5[var_6].origin + ( var_1, 0, 0 ), 0, var_7, var_7 );
|
|
var_9 enablelinkto();
|
|
var_9 linkto( var_8 );
|
|
|
|
if ( isdefined( var_3 ) && var_3 )
|
|
var_9 thread maps\flood_fx::fx_angry_flood_nearmiss( 0 );
|
|
else
|
|
var_9 thread angry_flood_collision_dodamage( 100 );
|
|
|
|
for ( var_10 = 1; isdefined( var_5[var_10] ); var_10++ )
|
|
{
|
|
var_11 = distance( var_5[var_6].origin, var_5[var_10].origin ) / var_4;
|
|
var_8 moveto( var_5[var_10].origin + ( var_1, 0, 0 ), var_11 );
|
|
wait( var_11 );
|
|
var_6++;
|
|
}
|
|
|
|
var_8 delete();
|
|
var_9 delete();
|
|
}
|
|
|
|
alley_bokehdots()
|
|
{
|
|
level endon( "enter_loadingdocks" );
|
|
level endon( "player_on_mall_roof" );
|
|
maps\flood_fx::fx_create_bokehdots_source();
|
|
common_scripts\utility::flag_wait( "alley_bokehdots" );
|
|
stopfxontag( common_scripts\utility::getfx( "bokehdots_close" ), level.flood_source_bokehdots, "tag_origin" );
|
|
common_scripts\utility::waitframe();
|
|
stopfxontag( common_scripts\utility::getfx( "bokehdots_and_waterdrops_heavy" ), level.flood_source_bokehdots, "tag_origin" );
|
|
common_scripts\utility::flag_wait( "alley_move_shitfuck" );
|
|
|
|
for (;;)
|
|
{
|
|
thread maps\flood_fx::fx_bokehdots_and_waterdrops_heavy( 3 );
|
|
wait 1;
|
|
}
|
|
|
|
stopfxontag( common_scripts\utility::getfx( "bokehdots_and_waterdrops_heavy" ), level.flood_source_bokehdots, "tag_origin" );
|
|
}
|
|
|
|
alley_bokehdots_old()
|
|
{
|
|
level endon( "player_on_mall_roof" );
|
|
var_0 = getent( "alley_bokehdots", "targetname" );
|
|
var_1 = common_scripts\utility::getstruct( var_0.target, "targetname" );
|
|
var_2 = common_scripts\utility::getstruct( var_1.target, "targetname" );
|
|
var_1 = var_1.origin;
|
|
var_2 = var_2.origin;
|
|
var_3 = distance2d( var_2, var_1 );
|
|
maps\flood_fx::fx_create_bokehdots_source();
|
|
stopfxontag( common_scripts\utility::getfx( "bokehdots_close" ), level.flood_source_bokehdots, "tag_origin" );
|
|
common_scripts\utility::waitframe();
|
|
stopfxontag( common_scripts\utility::getfx( "bokehdots_and_waterdrops_heavy" ), level.flood_source_bokehdots, "tag_origin" );
|
|
|
|
for (;;)
|
|
{
|
|
while ( common_scripts\utility::flag( "alley_bokehdots" ) )
|
|
{
|
|
if ( common_scripts\utility::flag( "alley_move_shitfuck" ) )
|
|
thread maps\flood_fx::fx_bokehdots_and_waterdrops_heavy();
|
|
else
|
|
{
|
|
|
|
}
|
|
|
|
var_4 = distance2d( level.player.origin, var_1 ) / var_3;
|
|
var_4 = randomfloatrange( var_4 * 2.85, var_4 * 3.15 );
|
|
wait( var_4 );
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
warehouse_double_doors()
|
|
{
|
|
level endon( "player_on_mall_roof" );
|
|
var_0 = common_scripts\utility::getstruct( "ware_double_doors", "targetname" );
|
|
var_1 = maps\_utility::spawn_anim_model( "warehouse_double_doorl", var_0.origin );
|
|
var_2 = maps\_utility::spawn_anim_model( "warehouse_double_doorr", var_0.origin );
|
|
var_0 thread maps\_anim::anim_loop_solo( var_1, "warehouse_double_door" );
|
|
var_0 thread maps\_anim::anim_loop_solo( var_2, "warehouse_double_door" );
|
|
}
|
|
|
|
enemy_spanish_vo()
|
|
{
|
|
level endon( "swept_away" );
|
|
level endon( "mall_attack_player" );
|
|
common_scripts\utility::flag_wait( "mall_spanish_vo" );
|
|
var_0 = getent( "flood_mall_roof_opfor", "targetname" );
|
|
common_scripts\utility::flag_wait( "event_quaker_big" );
|
|
wait 6;
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs2_everyonecheckyour" );
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs2_jimenezramosgarciacheck" );
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs1_onit" );
|
|
wait 2;
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs2_howmuchlongerfor" );
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs3_5minutes" );
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs2_wemightnotbe" );
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs2_makesuretheyunderstand" );
|
|
wait 2;
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs2_rodriguezineedyou" );
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs4_imabitbusy" );
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs2_hurryupandpull" );
|
|
wait 2;
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs2_sanchezandcastillomake" );
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs2_idontwantanything" );
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs6_yessir" );
|
|
wait 1;
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs2_anyupdateonthat" );
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs2_anyoneseeingasafe" );
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs2_howrethingslookingon" );
|
|
var_0 maps\_utility::play_sound_on_entity( "flood_vs6_itfeelslikethe" );
|
|
}
|
|
|
|
warehouse_collision_hacks_toggle( var_0 )
|
|
{
|
|
var_1 = getent( "warehouse_big_rollup_collision", "targetname" );
|
|
var_2 = getent( "loading_dock_rollup_collision", "targetname" );
|
|
var_3 = getent( "warehouse_front_door_collision", "targetname" );
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = "default";
|
|
|
|
maps\flood_util::jkuprint( "turning on hack collision: " + var_0 );
|
|
|
|
switch ( var_0 )
|
|
{
|
|
case "big_rollup":
|
|
var_1 show();
|
|
var_1 solid();
|
|
break;
|
|
case "side":
|
|
var_2 show();
|
|
var_2 solid();
|
|
break;
|
|
case "front_door":
|
|
var_3 show();
|
|
var_3 solid();
|
|
break;
|
|
default:
|
|
var_1 hide();
|
|
var_1 notsolid();
|
|
var_2 hide();
|
|
var_2 notsolid();
|
|
var_3 hide();
|
|
var_3 notsolid();
|
|
}
|
|
}
|
|
|
|
player_set_stairwell_speed()
|
|
{
|
|
common_scripts\utility::flag_wait( "player_at_stairs" );
|
|
common_scripts\utility::flag_set( "cw_player_no_speed_adj" );
|
|
maps\flood_util::jkuprint( "settting stairwell speed" );
|
|
thread maps\flood_util::player_water_movement( 50, 2 );
|
|
}
|
|
|
|
alley_kill_triggers( var_0 )
|
|
{
|
|
var_1 = getent( "alley_runback_kill_left", "targetname" );
|
|
var_2 = getent( "alley_runback_kill_loadingdocks", "targetname" );
|
|
|
|
switch ( var_0 )
|
|
{
|
|
case "on":
|
|
var_1 common_scripts\utility::trigger_on();
|
|
break;
|
|
case "off":
|
|
var_1 common_scripts\utility::trigger_off();
|
|
var_2 common_scripts\utility::trigger_off();
|
|
break;
|
|
}
|
|
}
|
|
|
|
crush_player_with_floating_lynx()
|
|
{
|
|
var_0 = getent( "flooding_crush_player", "targetname" );
|
|
var_0 waittill( "trigger" );
|
|
level.player kill();
|
|
}
|
|
|
|
flooding_cleanup()
|
|
{
|
|
var_0 = getentarray( "flooding_bokehdot", "targetname" );
|
|
maps\_utility::array_delete( var_0 );
|
|
var_0 = getentarray( "flooding_cleanup", "script_noteworthy" );
|
|
maps\_utility::array_delete( var_0 );
|
|
}
|
|
|
|
start_coverheight_water_rising( var_0, var_1, var_2 )
|
|
{
|
|
if ( var_1 )
|
|
{
|
|
var_3 = getentarray( var_2, "targetname" );
|
|
var_4 = getent( var_2 + "_above", "targetname" );
|
|
var_5 = getent( var_2 + "_under", "targetname" );
|
|
var_3 = common_scripts\utility::array_add( var_3, var_4 );
|
|
var_3 = common_scripts\utility::array_add( var_3, var_5 );
|
|
var_5 setcontents( 33 );
|
|
|
|
foreach ( var_7 in var_3 )
|
|
var_7 movez( var_0, 0.01, 0, 0 );
|
|
|
|
if ( var_2 == "coverwater_warehouse" )
|
|
{
|
|
var_9 = getent( var_2 + "_foam", "targetname" );
|
|
|
|
if ( isdefined( var_9 ) )
|
|
{
|
|
wait 1.01;
|
|
var_9 movex( -1368, 0.01, 0, 0 );
|
|
wait 1.01;
|
|
var_9 movey( 317, 0.01, 0, 0 );
|
|
return;
|
|
}
|
|
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
thread maps\flood_fx::fx_wh_splashes();
|
|
var_10 = getentarray( "water_alley", "targetname" );
|
|
var_11 = getentarray( "coverwater_warehouse", "targetname" );
|
|
var_12 = getent( "coverwater_warehouse_above", "targetname" );
|
|
var_13 = getent( "coverwater_warehouse_under", "targetname" );
|
|
var_14 = getent( "wh_splashes_upper", "targetname" );
|
|
var_15 = getent( "coverwater_warehouse_debris", "targetname" );
|
|
var_16 = getent( "coverwater_warehouse_foam", "targetname" );
|
|
var_11 = common_scripts\utility::array_add( var_11, var_12 );
|
|
var_11 = common_scripts\utility::array_add( var_11, var_13 );
|
|
var_11 = common_scripts\utility::array_add( var_11, var_14 );
|
|
var_11 = common_scripts\utility::array_add( var_11, var_15 );
|
|
|
|
if ( isdefined( var_16 ) )
|
|
var_11 = common_scripts\utility::array_add( var_11, var_16 );
|
|
|
|
var_17 = getentarray( "coverwater_warehouse_premantle", "targetname" );
|
|
var_18 = getent( "coverwater_warehouse_premantle_above", "targetname" );
|
|
var_19 = getent( "coverwater_warehouse_premantle_under", "targetname" );
|
|
var_20 = getent( "wh_splashes_lower", "targetname" );
|
|
var_21 = getent( "coverwater_warehouse_premantle_debris_T", "targetname" );
|
|
var_17 = common_scripts\utility::array_add( var_17, var_18 );
|
|
var_17 = common_scripts\utility::array_add( var_17, var_19 );
|
|
var_17 = common_scripts\utility::array_add( var_17, var_20 );
|
|
var_17 = common_scripts\utility::array_add( var_17, var_21 );
|
|
var_22 = getentarray( "coverwater_warehouse_postmantle", "targetname" );
|
|
var_23 = getent( "coverwater_warehouse_postmantle_above", "targetname" );
|
|
var_24 = getent( "coverwater_warehouse_postmantle_under", "targetname" );
|
|
var_22 = common_scripts\utility::array_add( var_22, var_23 );
|
|
var_22 = common_scripts\utility::array_add( var_22, var_24 );
|
|
var_25 = common_scripts\utility::array_combine( var_11, var_17 );
|
|
var_25 = common_scripts\utility::array_combine( var_25, var_22 );
|
|
var_13 setcontents( 33 );
|
|
var_19 setcontents( 33 );
|
|
var_24 setcontents( 33 );
|
|
|
|
foreach ( var_27 in var_22 )
|
|
{
|
|
var_27 hide();
|
|
var_27 notsolid();
|
|
}
|
|
|
|
thread start_coverheight_water_swap( var_17, var_22 );
|
|
var_29 = getent( "inside_loadingdocks", "targetname" );
|
|
var_29 waittill( "trigger" );
|
|
maps\flood_util::jkuprint( "wr: ld" );
|
|
var_30 = 4;
|
|
|
|
foreach ( var_7 in var_17 )
|
|
var_7 movez( 45, var_30, 0, 4 );
|
|
|
|
wait( var_30 );
|
|
common_scripts\utility::flag_wait_or_timeout( "start_warehouse_water", 2 );
|
|
maps\_utility::delaythread( 0.9, ::coverheight_water_rising_lip );
|
|
maps\_utility::delaythread( 3, ::warehouse_collision_hacks_toggle, "front_door" );
|
|
maps\flood_util::jkuprint( "wr: ware" );
|
|
var_30 = 5;
|
|
|
|
foreach ( var_7 in var_25 )
|
|
var_7 movez( 53, var_30, 2, 2 );
|
|
|
|
wait( var_30 );
|
|
common_scripts\utility::flag_wait_or_timeout( "start_stairs_water", 7 );
|
|
thread warehouse_collision_hacks_toggle( "side" );
|
|
|
|
if ( common_scripts\utility::flag( "start_stairs_water" ) )
|
|
{
|
|
maps\flood_util::jkuprint( "wr: stairs no close" );
|
|
var_30 = 5;
|
|
|
|
foreach ( var_7 in var_25 )
|
|
var_7 movez( 40, var_30, 2, 2 );
|
|
|
|
wait( var_30 );
|
|
}
|
|
else
|
|
{
|
|
maps\flood_util::jkuprint( "wr: ware close" );
|
|
var_30 = 2;
|
|
|
|
foreach ( var_7 in var_25 )
|
|
var_7 movez( 10, var_30, 1, 1 );
|
|
|
|
wait( var_30 );
|
|
maps\flood_util::jkuprint( "wr: stairs" );
|
|
var_30 = 3;
|
|
|
|
foreach ( var_7 in var_25 )
|
|
var_7 movez( 30, var_30, 1, 2 );
|
|
|
|
wait( var_30 );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait_or_timeout( "player_at_stairs", 3 );
|
|
thread warehouse_collision_hacks_toggle( "big_rollup" );
|
|
|
|
if ( common_scripts\utility::flag( "player_at_stairs" ) )
|
|
{
|
|
maps\flood_util::jkuprint( "wr: final no close" );
|
|
var_30 = 12;
|
|
|
|
foreach ( var_7 in var_25 )
|
|
var_7 movez( 35, var_30, 6, 6 );
|
|
}
|
|
else
|
|
{
|
|
maps\flood_util::jkuprint( "wr: stairs close" );
|
|
var_30 = 3;
|
|
|
|
foreach ( var_7 in var_25 )
|
|
var_7 movez( 10, var_30, 1, 1 );
|
|
|
|
wait( var_30 );
|
|
maps\flood_util::jkuprint( "wr: final" );
|
|
var_30 = 8;
|
|
|
|
foreach ( var_7 in var_25 )
|
|
var_7 movez( 25, var_30, 4, 4 );
|
|
}
|
|
}
|
|
}
|
|
|
|
start_coverheight_water_swap( var_0, var_1 )
|
|
{
|
|
common_scripts\utility::flag_wait( "player_doing_warehouse_mantle" );
|
|
wait 0.2;
|
|
thread maps\flood_fx::destroy_lip_debris_fx();
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
var_3 show();
|
|
var_3 solid();
|
|
}
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
var_3 hide();
|
|
var_3 notsolid();
|
|
}
|
|
}
|
|
|
|
coverheight_water_rising_lip()
|
|
{
|
|
var_0 = getent( "warehouse_water_lip_02", "targetname" );
|
|
var_0 hide();
|
|
var_0 notsolid();
|
|
}
|
|
|
|
ai_water_rising_think( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
level endon( var_0 );
|
|
self.flooding_last_water_state = "out";
|
|
level ai_flooding_hip_anims();
|
|
level ai_flooding_under_anims();
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = bullettrace( self.origin, self geteye(), 0, self );
|
|
|
|
if ( var_1["surfacetype"] == "water" )
|
|
{
|
|
var_2 = var_1["position"][2] - self.origin[2];
|
|
|
|
if ( var_2 > 40 )
|
|
{
|
|
if ( self.flooding_last_water_state != "under" )
|
|
{
|
|
self.flooding_last_water_state = "under";
|
|
self.standruntranstime = 0.8;
|
|
maps\_utility::set_archetype( "under_water" );
|
|
}
|
|
}
|
|
else if ( var_2 > 20 )
|
|
{
|
|
if ( self.flooding_last_water_state != "hip" && ( var_2 < 36 || self.flooding_last_water_state == "out" ) )
|
|
{
|
|
self.flooding_last_water_state = "hip";
|
|
self.standruntranstime = 0.8;
|
|
maps\_utility::set_archetype( "hip_water" );
|
|
}
|
|
}
|
|
else if ( self.flooding_last_water_state != "out" )
|
|
{
|
|
self.flooding_last_water_state = "out";
|
|
self.standruntranstime = undefined;
|
|
maps\_utility::clear_archetype();
|
|
thread maps\flood_fx::character_make_wet();
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
#using_animtree("generic_human");
|
|
|
|
ai_flooding_hip_anims()
|
|
{
|
|
if ( !isdefined( anim.archetypes ) || !isdefined( anim.archetypes["hip_water"] ) )
|
|
{
|
|
var_0 = [];
|
|
var_1 = [];
|
|
var_1["straight"] = %flood_ally_water_walking_mid_70;
|
|
var_1["straight_twitch"] = [ %flood_ally_water_walking_mid_70 ];
|
|
var_1["move_f"] = %flood_ally_water_walking_mid_70;
|
|
var_0["run"] = var_1;
|
|
var_0["walk"] = var_1;
|
|
maps\_utility::register_archetype( "hip_water", var_0 );
|
|
}
|
|
}
|
|
|
|
ai_flooding_under_anims()
|
|
{
|
|
if ( !isdefined( anim.archetypes ) || !isdefined( anim.archetypes["under_water"] ) )
|
|
{
|
|
var_0 = [];
|
|
var_1 = [];
|
|
var_1["straight"] = %flood_ally_water_walking_high;
|
|
var_1["straight_twitch"] = [ %flood_ally_water_walking_high ];
|
|
var_1["move_f"] = %flood_ally_water_walking_high;
|
|
var_0["run"] = var_1;
|
|
var_0["walk"] = var_1;
|
|
maps\_utility::register_archetype( "under_water", var_0 );
|
|
}
|
|
}
|
|
|
|
exit_water_tired()
|
|
{
|
|
level endon( "exit_water_stop_tired" );
|
|
common_scripts\utility::flag_waitopen( "cw_player_underwater" );
|
|
common_scripts\utility::flag_wait( "player_at_stairs" );
|
|
common_scripts\utility::exploder( "mr_sunflare" );
|
|
thread maps\flood_audio::sfx_play_outofwater_sound();
|
|
|
|
if ( !common_scripts\utility::flag( "ally1_stair_vo_hack" ) )
|
|
level.allies[0] thread maps\_utility::dialogue_queue( "flood_bkr_catchyourbreath" );
|
|
|
|
var_0 = 6;
|
|
var_1 = gettime();
|
|
level.tired_time_remaining = var_0 - ( gettime() - var_1 ) / 1000;
|
|
level.player thread enable_tired( 75, level.tired_time_remaining );
|
|
thread exit_water_tired_timer( var_1, var_0 );
|
|
maps\flood_util::jkuprint( "tired" );
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "cw_player_underwater" );
|
|
level.player thread disable_tired( 1, 0 );
|
|
common_scripts\utility::flag_clear( "cw_player_no_speed_adj" );
|
|
maps\flood_util::jkuprint( "disabled" );
|
|
common_scripts\utility::flag_waitopen( "cw_player_underwater" );
|
|
level.tired_time_remaining = var_0 - ( gettime() - var_1 ) / 1000;
|
|
level.player thread enable_tired( 75, level.tired_time_remaining );
|
|
common_scripts\utility::flag_set( "cw_player_no_speed_adj" );
|
|
maps\flood_util::jkuprint( "enabled " + level.tired_time_remaining );
|
|
}
|
|
}
|
|
|
|
exit_water_tired_timer( var_0, var_1 )
|
|
{
|
|
level.tired_time_remaining = var_1 - ( gettime() - var_0 ) / 1000;
|
|
|
|
while ( level.tired_time_remaining > 0 )
|
|
{
|
|
level.tired_time_remaining = var_1 - ( gettime() - var_0 ) / 1000;
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
maps\flood_util::jkuprint( "done" );
|
|
common_scripts\utility::flag_clear( "cw_player_no_speed_adj" );
|
|
level notify( "exit_water_stop_tired" );
|
|
}
|
|
|
|
enable_tired( var_0, var_1 )
|
|
{
|
|
init_default_tired();
|
|
self.limp_strength = 1.0;
|
|
self.ground_ref_ent = spawn( "script_model", ( 0, 0, 0 ) );
|
|
self playersetgroundreferenceent( self.ground_ref_ent );
|
|
maps\_utility::player_speed_percent( var_0, 0.05 );
|
|
self.player_speed = var_0;
|
|
thread tired();
|
|
thread fade_tired( var_1 );
|
|
maps\_utility::player_speed_percent( 100, var_1 );
|
|
self.player_speed = 100;
|
|
}
|
|
|
|
init_default_tired()
|
|
{
|
|
level.player_tired["pitch"]["min"] = -1;
|
|
level.player_tired["pitch"]["max"] = 1;
|
|
level.player_tired["yaw"]["min"] = -1;
|
|
level.player_tired["yaw"]["max"] = 1;
|
|
level.player_tired["roll"]["min"] = 2;
|
|
level.player_tired["roll"]["max"] = 5;
|
|
}
|
|
|
|
disable_tired( var_0, var_1 )
|
|
{
|
|
self notify( "stop_limp" );
|
|
self notify( "stop_random_blur" );
|
|
self fadeoutshellshock();
|
|
thread maps\_utility::vision_set_changes( level.cw_vision_above, 0.25 );
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
var_1 = 0;
|
|
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
self playersetgroundreferenceent( undefined );
|
|
setsaveddvar( "player_sprintUnlimited", "0" );
|
|
self notify( "stop_limp_forgood" );
|
|
}
|
|
else
|
|
{
|
|
var_2 = randomfloatrange( 0.65, 1.25 );
|
|
var_3 = adjust_angles_to_player( ( 0, 0, 0 ) );
|
|
self.ground_ref_ent rotateto( var_3, var_2, 0, var_2 / 2 );
|
|
self.ground_ref_ent waittill( "rotatedone" );
|
|
}
|
|
|
|
level.player maps\_utility::player_speed_percent( 100 );
|
|
setblur( 0, randomfloatrange( 0.5, 0.75 ) );
|
|
self allowstand( 1 );
|
|
self allowcrouch( 1 );
|
|
self allowsprint( 1 );
|
|
self allowjump( 1 );
|
|
}
|
|
|
|
fade_tired( var_0 )
|
|
{
|
|
self endon( "stop_limp" );
|
|
wait( var_0 );
|
|
thread disable_tired();
|
|
}
|
|
|
|
tired( var_0 )
|
|
{
|
|
self endon( "stop_limp" );
|
|
self shellshock( "player_limp", 9999 );
|
|
self allowsprint( 0 );
|
|
self allowjump( 0 );
|
|
thread player_random_blur();
|
|
thread player_hurt_sounds();
|
|
|
|
for (;;)
|
|
{
|
|
if ( self playerads() > 0.3 )
|
|
{
|
|
wait 0.05;
|
|
continue;
|
|
}
|
|
|
|
var_1 = level.player getstance();
|
|
|
|
if ( var_1 == "crouch" || var_1 == "prone" )
|
|
{
|
|
wait 0.05;
|
|
continue;
|
|
}
|
|
|
|
var_2 = self getvelocity();
|
|
var_3 = abs( var_2[0] ) + abs( var_2[1] );
|
|
|
|
if ( var_3 < 10 )
|
|
{
|
|
wait 0.05;
|
|
continue;
|
|
}
|
|
|
|
var_4 = var_3 / self.player_speed;
|
|
var_5 = randomfloatrange( level.player_tired["pitch"]["min"], level.player_tired["pitch"]["max"] );
|
|
|
|
if ( randomint( 100 ) < 20 )
|
|
var_5 = var_5 * 1.5;
|
|
|
|
var_6 = randomfloatrange( level.player_tired["roll"]["min"], level.player_tired["roll"]["max"] );
|
|
var_7 = randomfloatrange( level.player_tired["yaw"]["min"], level.player_tired["yaw"]["max"] );
|
|
var_8 = ( var_5, var_7, var_6 );
|
|
var_8 = var_8 * var_4;
|
|
var_8 = var_8 * self.limp_strength;
|
|
var_9 = randomfloatrange( 0.15, 0.45 );
|
|
var_10 = randomfloatrange( 0.65, 1.25 );
|
|
thread maps\_utility::vision_set_changes( "flood_stairs_pain", 3 );
|
|
thread stumble( var_8, var_9, var_10 );
|
|
wait( var_9 );
|
|
thread maps\_utility::vision_set_changes( level.cw_vision_above, var_10 );
|
|
self waittill( "recovered" );
|
|
}
|
|
}
|
|
|
|
stumble( var_0, var_1, var_2, var_3 )
|
|
{
|
|
self endon( "stop_stumble" );
|
|
self endon( "stop_limp" );
|
|
var_0 = adjust_angles_to_player( var_0 );
|
|
self notify( "stumble" );
|
|
self.ground_ref_ent rotateto( var_0, var_1, var_1 / 4 * 3, var_1 / 4 );
|
|
self.ground_ref_ent waittill( "rotatedone" );
|
|
var_4 = ( randomfloat( 4 ) - 4, randomfloat( 5 ), 0 );
|
|
var_4 = adjust_angles_to_player( var_4 );
|
|
self.ground_ref_ent rotateto( var_4, var_2, 0, var_2 / 2 );
|
|
self.ground_ref_ent waittill( "rotatedone" );
|
|
|
|
if ( !isdefined( var_3 ) )
|
|
self notify( "recovered" );
|
|
}
|
|
|
|
player_random_blur()
|
|
{
|
|
self endon( "dying" );
|
|
self endon( "stop_random_blur" );
|
|
|
|
for (;;)
|
|
{
|
|
wait 0.05;
|
|
|
|
if ( randomint( 100 ) > 10 )
|
|
continue;
|
|
|
|
var_0 = randomint( 3 ) + 4;
|
|
var_1 = randomfloatrange( 0.1, 0.3 );
|
|
var_2 = randomfloatrange( 0.3, 1 );
|
|
setblur( var_0 * 1.2, var_1 );
|
|
wait( var_1 );
|
|
setblur( 0, var_2 );
|
|
wait( var_2 );
|
|
wait( randomfloatrange( 0, 1.5 ) );
|
|
common_scripts\utility::waittill_notify_or_timeout( "blur", 5 );
|
|
}
|
|
}
|
|
|
|
player_hurt_sounds()
|
|
{
|
|
self endon( "stop_limp" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( player_playing_hurt_sounds() )
|
|
{
|
|
wait 0.05;
|
|
continue;
|
|
}
|
|
|
|
self notify( "blur" );
|
|
common_scripts\utility::play_sound_in_space( "breathing_limp_start" );
|
|
common_scripts\utility::play_sound_in_space( "breathing_limp_better" );
|
|
wait( randomfloatrange( 0, 1 ) );
|
|
var_0 = ( level.tired_time_remaining - 0 ) * -5 / 15 + 6;
|
|
common_scripts\utility::waittill_notify_or_timeout( "stumble", var_0 );
|
|
}
|
|
}
|
|
|
|
player_playing_hurt_sounds()
|
|
{
|
|
if ( level.player.health < 50 )
|
|
return 1;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
adjust_angles_to_player( var_0 )
|
|
{
|
|
var_1 = var_0[0];
|
|
var_2 = var_0[2];
|
|
var_3 = anglestoright( self.angles );
|
|
var_4 = anglestoforward( self.angles );
|
|
var_5 = ( var_3[0], 0, var_3[1] * -1 );
|
|
var_6 = ( var_4[0], 0, var_4[1] * -1 );
|
|
var_7 = var_5 * var_1;
|
|
var_7 = var_7 + var_6 * var_2;
|
|
return var_7 + ( 0, var_0[1], 0 );
|
|
}
|
|
|
|
angry_flood_cleanup()
|
|
{
|
|
var_0 = getentarray( "angry_flood_cleanup", "script_noteworthy" );
|
|
maps\_utility::array_delete( var_0 );
|
|
var_1 = [];
|
|
var_1[var_1.size] = "flood_shake_tree_left_1";
|
|
var_1[var_1.size] = "flood_shake_tree_left_2";
|
|
var_1[var_1.size] = "flood_shake_tree_left_3";
|
|
var_1[var_1.size] = "flood_shake_tree_left_4";
|
|
var_1[var_1.size] = "flood_shake_tree_left_5";
|
|
var_1[var_1.size] = "flood_shake_tree_right_1";
|
|
var_1[var_1.size] = "flood_shake_tree_right_2";
|
|
var_1[var_1.size] = "flood_shake_tree_right_3";
|
|
var_1[var_1.size] = "flood_shake_tree_right_4";
|
|
var_1[var_1.size] = "flood_shake_tree_right_5";
|
|
var_1[var_1.size] = "flood_shake_tree_right_6";
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
var_3 = getent( var_3, "script_noteworthy" );
|
|
|
|
if ( isdefined( var_3 ) )
|
|
var_3 delete();
|
|
}
|
|
}
|
|
|
|
angry_flood_rumble()
|
|
{
|
|
var_0 = level.player maps\flood_util::create_rumble_ent( 1000, "flooding_cleanup" );
|
|
var_0 playrumblelooponentity( "steady_rumble" );
|
|
|
|
while ( distance( var_0.origin, level.player.origin ) > 200 && isalive( level.player ) )
|
|
{
|
|
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();
|
|
}
|
|
|
|
maps\flood_util::jkuprint( "done moving rumbler" );
|
|
level thread angry_flood_rumble_loop( "angry_flood_rumble_ent" );
|
|
level thread angry_flood_rumble_loop( "alley_flood_rumble_ent" );
|
|
|
|
while ( isalive( level.player ) && !common_scripts\utility::flag( "alley_bokehdots" ) )
|
|
common_scripts\utility::waitframe();
|
|
|
|
var_0 stoprumble( "steady_rumble" );
|
|
var_0 delete();
|
|
}
|
|
|
|
angry_flood_rumble_loop( var_0 )
|
|
{
|
|
level endon( "player_warehouse_mantle" );
|
|
level.player endon( "death" );
|
|
var_1 = getent( var_0, "targetname" );
|
|
var_1 playrumblelooponentity( "steady_rumble" );
|
|
|
|
while ( isalive( level.player ) )
|
|
common_scripts\utility::waitframe();
|
|
|
|
var_1 stoprumble( "steady_rumble" );
|
|
}
|
|
|
|
broken_door_rumbles()
|
|
{
|
|
var_0 = getentarray( "warehouse_rumble", "targetname" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
var_2 playrumblelooponentity( "water_splash" );
|
|
|
|
level waittill( "player_at_stairs" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
var_2 delete();
|
|
}
|
|
|
|
runback_death_toggle( var_0 )
|
|
{
|
|
var_1 = getentarray( "alley_kill_runback_trigger", "targetname" );
|
|
|
|
switch ( var_0 )
|
|
{
|
|
case "on":
|
|
foreach ( var_3 in var_1 )
|
|
var_3 common_scripts\utility::trigger_on();
|
|
|
|
break;
|
|
case "off":
|
|
foreach ( var_3 in var_1 )
|
|
var_3 common_scripts\utility::trigger_off();
|
|
|
|
break;
|
|
}
|
|
}
|