iw6-scripts/maps/las_vegas_casino.gsc
2024-02-13 13:20:49 +01:00

4397 lines
146 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
casino_spawn_functions()
{
maps\_utility::array_spawn_function_targetname( "rescue_enemy_spawners", ::postspawn_rescue_enemy );
maps\_utility::array_spawn_function_targetname( "rescue_enemy_standers", ::postspawn_rescue_stander );
maps\_utility::array_spawn_function_targetname( "rescue_extra_enemies", ::postspawn_rescue_extra );
maps\_utility::array_spawn_function_targetname( "casino_bar_walkers", ::postspawn_bar_enemy );
maps\_utility::array_spawn_function_targetname( "bar_talkers", ::postspawn_bar_talker );
maps\_utility::array_spawn_function_targetname( "kitchen_enemy_spawners", ::postspawn_kitchen_enemy );
maps\_utility::array_spawn_function_targetname( "kitchen_reinforcements", ::postspawn_kitchen_reinforcement );
maps\_utility::array_spawn_function_targetname( "drag1_enemies", ::postspawn_drag_enemies );
maps\_utility::array_spawn_function_targetname( "drag2_enemies", ::postspawn_drag_enemies );
maps\_utility::array_spawn_function_targetname( "atrium_escalator_enemies", ::postspawn_atrium_enemy );
maps\_utility::array_spawn_function_targetname( "atrium_balcony_enemies", ::postspawn_atrium_enemy );
maps\_utility::array_spawn_function_targetname( "atrium_balcony_reinforcements", ::postspawn_balcony_reinforcement );
maps\_utility::array_spawn_function_noteworthy( "kitchen_flashlight_enemy", ::postspawn_kitchen_flashlight );
maps\_utility::array_spawn_function_noteworthy( "kitchen_flashlight_enemy", maps\_utility::set_moveplaybackrate, 1.2 );
maps\_utility::array_spawn_function_targetname( "floor_ambush_spawners", ::postspawn_floor_ambush );
maps\_utility::array_spawn_function_noteworthy( "floor_spawners", ::postspawn_floor_enemy );
maps\_utility::array_spawn_function_noteworthy( "floor_last_spawners", ::postspawn_floor_gate );
maps\_utility::array_spawn_function_targetname( "chase_room_enemies", ::postspawn_chase_room_enemies );
maps\_utility::array_spawn_function_targetname( "chase_enemies", ::postspawn_chase_enemies );
maps\_utility::array_spawn_function_targetname( "floor_snipers", ::postspawn_floor_sniper );
}
casino_threatbias_groups()
{
createthreatbiasgroup( "drones_stealth" );
maps\_utility::ignoreeachother( "heroes", "drones_stealth" );
setthreatbias( "heroes", "drones_stealth", 0 );
createthreatbiasgroup( "chase_wall" );
maps\_utility::ignoreeachother( "heroes", "chase_wall" );
setthreatbias( "heroes", "chase_wall", 0 );
}
main_init()
{
if ( isdefined( level.casino_init ) )
return;
level.casino_init = 1;
thread maps\_utility::battlechatter_off( "allies" );
thread maps\_utility::battlechatter_off( "axis" );
}
start_ambush()
{
maps\las_vegas_code::disable_all_triggers();
}
start_drag1()
{
maps\las_vegas_code::disable_all_triggers();
maps\_hud_util::fade_out( 0, "black" );
}
start_drag2()
{
maps\las_vegas_code::disable_all_triggers();
maps\_hud_util::fade_out( 0, "black" );
}
start_elias_death()
{
maps\las_vegas_code::disable_all_triggers();
maps\_hud_util::fade_out( 0, "black" );
}
start_rescue()
{
maps\las_vegas_code::set_player_speed();
maps\las_vegas_code::disable_all_triggers();
maps\las_vegas_code::spawn_hero( "merrick" );
maps\las_vegas_code::spawn_hero( "hesh" );
maps\las_vegas_code::set_start_locations( "rescue_start_spots" );
maps\_hud_util::fade_out( 0, "black" );
main_init();
}
start_bar()
{
maps\las_vegas_code::set_player_speed();
maps\las_vegas_code::spawn_hero( "merrick" );
maps\las_vegas_code::spawn_hero( "hesh" );
maps\las_vegas_code::set_start_locations( "bar_startspots" );
common_scripts\utility::array_thread( level.heroes, maps\las_vegas_code::start_scripted_movement );
level.hesh maps\_utility::set_archetype( "creepwalk" );
level.merrick maps\las_vegas_code::set_wounded();
common_scripts\utility::flag_set( "merrick_human_shield_ready" );
}
start_kitchen()
{
maps\las_vegas_code::set_player_speed();
maps\las_vegas_code::spawn_hero( "merrick" );
maps\las_vegas_code::spawn_hero( "hesh" );
maps\las_vegas_code::set_start_locations( "kitchen_startspots" );
level.hesh maps\_utility::set_archetype( "creepwalk" );
level.merrick maps\las_vegas_code::set_wounded();
common_scripts\utility::array_thread( level.heroes, maps\las_vegas_code::start_scripted_movement );
maps\las_vegas_code::init_enemy_radio( 1 );
}
start_atrium()
{
maps\las_vegas_code::set_player_speed();
maps\las_vegas_code::set_start_locations( "atrium_startspots" );
level.hesh maps\_utility::set_archetype( "creepwalk" );
common_scripts\utility::array_thread( level.heroes, maps\las_vegas_code::start_scripted_movement );
}
start_casino_floor()
{
maps\las_vegas_code::set_player_speed();
common_scripts\utility::flag_set( "player_atrium_halfway" );
maps\las_vegas_code::set_start_locations( "casino_floor_startspots" );
common_scripts\utility::array_thread( level.heroes, maps\las_vegas_code::start_scripted_movement );
common_scripts\utility::array_thread( level.heroes, maps\_utility::enable_cqbwalk );
}
start_hotel()
{
maps\las_vegas_code::set_player_speed();
maps\las_vegas_code::set_start_locations( "casino_hotel_startspots" );
common_scripts\utility::array_thread( level.heroes, maps\_utility::enable_cqbwalk );
}
start_hotel_chase()
{
maps\las_vegas_code::set_player_speed();
common_scripts\utility::flag_set( "player_in_hotel" );
maps\las_vegas_code::set_start_locations( "hotel_chase_startspots" );
common_scripts\utility::array_thread( level.heroes, maps\las_vegas_code::start_scripted_movement );
common_scripts\utility::array_thread( level.heroes, maps\_utility::enable_cqbwalk );
}
start_slide()
{
maps\las_vegas_code::set_player_speed();
common_scripts\utility::flag_set( "start_outside_animated_props" );
common_scripts\utility::array_thread( level.heroes, maps\_utility::enable_cqbwalk );
}
ambush()
{
maps\las_vegas_code::disable_all_triggers();
main_init();
level.player takeallweapons();
var_0 = "r5rgp_gundown+acog_sp";
level.player giveweapon( var_0 );
level.player givemaxammo( var_0 );
level.player switchtoweapon( var_0 );
disable_player_settings( 1 );
maps\las_vegas_code::spawn_hero( "elias_intro" );
maps\las_vegas_code::spawn_hero( "merrick_intro" );
maps\las_vegas_code::spawn_hero( "hesh_intro" );
maps\las_vegas_code::spawn_hero( "riley" );
maps\las_vegas_code::set_player_speed( "ambush", 0.05 );
maps\las_vegas_code::set_start_locations( "ambush_startspots" );
level.elias maps\_utility::delaythread( 1, maps\_utility::smart_dialogue, "vegas_els_jsocllwanttomove" );
maps\las_vegas_code::intro_time( &"LAS_VEGAS_INTRO_TIME1", 8, 3, 1 );
level.dog.movementtype = "walk";
level.dog thread maps\las_vegas_code::start_scripted_movement();
var_1 = common_scripts\utility::getstruct( "ambush_struct", "targetname" );
var_2 = [ level.hesh, level.elias, level.merrick ];
maps\_utility::delaythread( 11, ::ambush_gas_grenades );
maps\_utility::delaythread( 15, ::ambush_riley_getout );
maps\_utility::delaythread( 10, ::riley_bark );
maps\_utility::delaythread( 14, ::player_fall );
thread ambush_dialogue();
var_1 maps\_anim::anim_single( var_2, "ambush" );
level.dog maps\_utility_dogs::kill_dog_fur_effect();
foreach ( var_4 in level.heroes )
{
if ( isdefined( var_4.magic_bullet_shield ) )
var_4 maps\_utility::stop_magic_bullet_shield();
var_4.allowdeath = 1;
var_4.a.nodeath = 1;
var_4.script_noteworthy = "";
var_4 kill();
}
common_scripts\utility::flag_wait( "ambush_done" );
foreach ( var_7 in level.gas_grenades )
{
if ( !isdefined( var_7 ) )
continue;
if ( isdefined( var_7.fx ) )
var_7.fx delete();
var_7 delete();
}
var_9 = getcorpsearray();
foreach ( var_11 in var_9 )
var_11 delete();
}
disable_player_settings( var_0 )
{
var_0 = !var_0;
level.player allowfire( var_0 );
level.player allowads( var_0 );
level.player allowprone( var_0 );
level.player allowjump( var_0 );
level.player allowsprint( var_0 );
level.player allowmelee( var_0 );
setsaveddvar( "cg_drawcrosshair", var_0 );
}
ambush_dialogue()
{
level.merrick maps\_utility::delaythread( 3.8, maps\_utility::smart_dialogue, "vegas_mrk_holdup" );
level.merrick maps\_utility::delaythread( 5.5, maps\_utility::smart_dialogue, "vegas_mrk_somethingfeeloffto" );
maps\_utility::delaythread( 13.3, maps\_utility::music_play, "mus_vegas_kidnapped" );
}
riley_bark()
{
level.dog.defaultidlestateoverride = "alertidle";
for ( var_0 = 0; var_0 < 10; var_0++ )
{
if ( common_scripts\utility::flag( "ambush_riley_getout" ) )
return;
level.dog maps\_utility_dogs::dog_bark();
}
}
ambush_riley_getout()
{
level.dog.movementtype = "run";
common_scripts\utility::flag_set( "ambush_riley_getout" );
}
ambush_gas_grenades()
{
var_0 = common_scripts\utility::getstructarray( "ambush_nade_structs", "targetname" );
var_0 = common_scripts\utility::array_randomize( var_0 );
foreach ( var_3, var_2 in var_0 )
{
if ( common_scripts\utility::flag( "ambush_done" ) )
return;
thread maps\las_vegas_code::launch_gas_grenade( var_2, var_3 );
wait( randomfloatrange( 0.3, 0.6 ) );
}
}
player_fall()
{
thread player_drunk();
thread common_scripts\utility::play_sound_in_space( "scn_vegas_gassed_plr_fall", level.player.origin );
level.player disableweapons();
maps\las_vegas_code::ui_show_stance( 0 );
disable_player_settings( 0 );
level.player common_scripts\utility::delaycall( 0.5, ::allowstand, 0 );
level.player common_scripts\utility::delaycall( 2, ::allowcrouch, 0 );
maps\_utility::delaythread( 2, common_scripts\utility::flag_set, "player_drunk" );
maps\_utility::delaythread( 4, ::blur_pulse );
var_0 = 2;
maps\_utility::player_speed_set( 10, var_0 );
level.player shellshock( "vegas_gas", 30 );
level.player playrumbleonentity( "grenade_rumble" );
level.player thread maps\_utility::play_sound_on_entity( "scn_vegas_plr_cough" );
level.player allowjump( 0 );
level.player setclienttriggeraudiozone( "las_vegas_gassed_black", 6 );
thread pulse_in_out();
thread gas_rorke_shows_up();
var_1 = common_scripts\utility::spawn_tag_origin();
level.player playersetgroundreferenceent( var_1 );
var_1 common_scripts\utility::delaycall( 2, ::rotatepitch, -10, 3, 1, 2 );
var_1 common_scripts\utility::delaycall( 4, ::rotatepitch, 30, 8, 5, 2 );
level.player common_scripts\utility::delaycall( 2, ::playrumbleonentity, "damage_heavy" );
wait 10;
setblur( 60, 4 );
level notify( "stop_pulsing" );
thread maps\_hud_util::fade_out( 4 );
wait 4.5;
level.player allowstand( 1 );
level.player allowcrouch( 1 );
level.player takeallweapons();
level.player unlink();
level.player playersetgroundreferenceent( undefined );
var_1 delete();
common_scripts\utility::flag_set( "ambush_done" );
}
blur_pulse()
{
thread maps\_hud_util::fade_out( 2 );
setblur( 15, 1 );
wait 1;
level.player thread maps\_utility::play_sound_on_entity( "breathing_limp_better" );
thread maps\_hud_util::fade_in( 1 );
setblur( 0, 2 );
}
pitch_and_roll()
{
self notify( "stop_bob" );
self endon( "stop_bob" );
self endon( "death" );
var_0 = self;
var_1 = ( 0, var_0.angles[1], 0 );
var_2 = 20;
if ( isdefined( var_0.script_max_left_angle ) )
var_2 = var_0.script_max_left_angle;
var_3 = 1;
if ( var_2 < 0 )
var_3 = 4;
var_4 = var_2 * 0.5 * var_3;
var_5 = 4;
if ( isdefined( var_0.script_duration ) )
var_5 = var_0.script_duration;
var_6 = var_5 * 0.5;
var_0 = undefined;
for (;;)
{
var_7 = ( randomfloatrange( var_4, var_2 ), 0, randomfloatrange( var_4, var_2 ) );
var_8 = randomfloatrange( var_6, var_5 );
self rotateto( var_1 + var_7, var_8, var_8 * 0.2, var_8 * 0.2 );
self waittill( "rotatedone" );
self rotateto( var_1 - var_7, var_8, var_8 * 0.2, var_8 * 0.2 );
self waittill( "rotatedone" );
}
}
gas_rorke_shows_up()
{
wait 5;
level notify( "stop_pulsing" );
setblur( 10, 1 );
maps\_hud_util::fade_out( 1 );
if ( isdefined( level.dog ) )
level.dog hide();
maps\las_vegas_code::spawn_rorke();
level.rorke maps\_utility::gun_remove();
level.rorke setlookatentity( level.player );
var_0 = maps\_utility::array_spawn_targetname( "elite_gas_guys" );
foreach ( var_2 in var_0 )
var_2 thread gas_guys_think();
var_4 = common_scripts\utility::get_target_ent( "rorke_gas_pos" );
var_4 thread maps\_anim::anim_generic_loop( level.rorke, "NML_vargas_idle" );
var_5 = common_scripts\utility::get_target_ent( "gas_player_final_pos" );
level.player setorigin( var_5.origin );
level.player setplayerangles( var_5.angles );
wait 0.15;
level notify( "stop_player_drunk" );
level.player pushplayervector( ( 0, 0, 0 ) );
setblur( 1, 3 );
maps\_hud_util::fade_in( 1.5 );
thread pulse_in_out();
common_scripts\utility::flag_wait( "ambush_done" );
level.rorke delete();
common_scripts\utility::array_call( var_0, ::delete );
}
gas_guys_think( var_0 )
{
maps\_utility::set_generic_run_anim( "london_dock_soldier_walk" );
maps\_utility::walkdist_zero();
maps\_utility::disable_arrivals();
maps\_utility::disable_exits();
self.goalradius = 32;
self.combatmode = "no_cover";
if ( self.script_index == 0 )
self.moveplaybackrate = 0.5;
else
self.moveplaybackrate = 0.3;
self setgoalentity( level.player );
}
pulse_in_out( var_0 )
{
level endon( "stop_pulsing" );
for (;;)
{
thread maps\_hud_util::fade_out( 10, var_0 );
wait 4;
thread maps\_hud_util::fade_in( 5, var_0 );
wait 3;
}
}
player_drunk()
{
level endon( "stop_player_drunk" );
common_scripts\utility::flag_init( "player_drunk" );
var_0 = 1;
var_1 = 0;
var_2 = 0;
while ( !common_scripts\utility::flag( "ambush_done" ) && !common_scripts\utility::flag( "player_drunk" ) )
{
var_3 = sin( gettime() * 0.15 ) * 4;
var_4 = cos( gettime() * 0.15 ) * -3;
level.player pushplayervector( ( var_3, var_4, 0 ) );
if ( var_3 == 0 )
var_0 = var_0 * -1;
wait 0.05;
}
level.player pushplayervector( ( 0, 0, 0 ) );
}
drag1()
{
common_scripts\utility::waitframe();
maps\las_vegas_code::ui_show_stance( 0 );
level.player setclienttriggeraudiozone( "las_vegas_drag1", 5 );
level.ground_ref_ent = common_scripts\utility::spawn_tag_origin();
level.player playersetgroundreferenceent( level.ground_ref_ent );
level.ground_ref_ent.script_max_left_angle = 30;
level.ground_ref_ent.script_duration = 3;
level.ground_ref_ent thread pitch_and_roll();
thread maps\las_vegas_code::intro_time( &"LAS_VEGAS_INTRO_TIME2", 5, 3 );
level.player shellshock( "vegas_drag", 999 );
maps\_utility::array_spawn_targetname( "drag1_enemies", 1 );
var_0 = common_scripts\utility::getstruct( "drag1_struct", "targetname" );
level.player common_scripts\utility::delaycall( 3, ::playrumblelooponentity, "vegas_drag" );
thread blur_fadein();
thread maps\las_vegas_code::do_player_drag( var_0 );
var_0 = common_scripts\utility::getstruct( "drag1_hesh_struct", "targetname" );
thread maps\las_vegas_code::do_hesh_drag( var_0 );
thread drag1_audio();
wait 7;
level.player common_scripts\utility::delaycall( 6, ::stoprumble, "vegas_drag" );
blur_fadeout();
}
drag1_audio()
{
level.player maps\_utility::delaythread( 3.0, maps\_utility::play_sound_on_entity, "scn_vegas_dragged1_plr" );
}
postspawn_drag_enemies()
{
if ( !isdefined( level.drag_enemies ) )
level.drag_enemies = [];
level.drag_enemies[level.drag_enemies.size] = self;
self.ignoreall = 1;
self.ignoreme = 1;
self.goalradius = 4;
self.script_forcegoal = 1;
maps\_utility::disable_arrivals();
if ( !isdefined( self.target ) )
self setgoalpos( self.origin );
maps\_utility::set_generic_run_anim( "active_patrolwalk_gundown" );
}
blur_fadein( var_0 )
{
level notify( "stop_any_blur" );
level endon( "stop_any_blur" );
if ( !isdefined( var_0 ) )
var_0 = 30;
setblur( var_0, 0.1 );
wait 2;
thread maps\_hud_util::fade_in( 5, "black" );
setblur( 0, 5 );
}
dof_on( var_0 )
{
maps\_art::dof_enable_script( 1, 1799, 30, 1800, 3800, 10, var_0 );
}
dof_off( var_0 )
{
maps\_art::dof_disable_script( var_0 );
}
blur_fadeout( var_0 )
{
if ( !isdefined( var_0 ) )
var_0 = 5;
level notify( "stop_any_blur" );
level endon( "stop_any_blur" );
level.player setclienttriggeraudiozone( "las_vegas_between_drags_black", var_0 );
setblur( 10, var_0 );
thread maps\_hud_util::fade_out( var_0, "black" );
wait( var_0 );
}
drag2()
{
if ( !isdefined( level.ground_ref_ent ) )
{
level.ground_ref_ent = common_scripts\utility::spawn_tag_origin();
level.player playersetgroundreferenceent( level.ground_ref_ent );
}
maps\las_vegas_code::ui_show_stance( 0 );
level.ground_ref_ent.script_max_left_angle = -10;
level.ground_ref_ent.script_duration = 3;
level.ground_ref_ent thread pitch_and_roll();
common_scripts\utility::waitframe();
level.player setclienttriggeraudiozone( "las_vegas_drag2", 5 );
level.player shellshock( "vegas_drag", 999 );
maps\_utility::array_spawn_targetname( "drag2_enemies", 1 );
var_0 = common_scripts\utility::getstruct( "drag2_struct", "targetname" );
thread blur_fadein();
maps\_utility::delaythread( 7, ::blur_pulse );
level.player common_scripts\utility::delaycall( 3, ::playrumblelooponentity, "vegas_drag" );
thread maps\las_vegas_code::do_player_drag( var_0 );
thread merrick_beatup();
var_0 = common_scripts\utility::getstruct( "drag2_hesh_struct", "targetname" );
thread maps\las_vegas_code::do_hesh_drag( var_0 );
thread drag2_audio();
common_scripts\utility::flag_wait( "drag2_start_fadeout" );
level.player common_scripts\utility::delaycall( 7, ::stoprumble, "vegas_drag" );
blur_fadeout( 7 );
maps\las_vegas_code::cleanup_player_drag();
maps\_utility::cleanup_ents( "drag2" );
}
drag2_audio()
{
level.player maps\_utility::delaythread( 3.0, maps\_utility::play_sound_on_entity, "scn_vegas_dragged2_plr" );
}
merrick_beatup()
{
var_0 = common_scripts\utility::getstruct( "drag2_beatup_struct", "targetname" );
var_1 = [];
var_2 = getentarray( "beatup_spawners", "targetname" );
foreach ( var_4 in var_2 )
var_1[var_1.size] = var_4 spawndrone();
var_6 = undefined;
var_7 = undefined;
foreach ( var_9 in var_1 )
{
maps\_utility::add_cleanup_ent( var_9, "drag2" );
if ( isdefined( var_9.script_noteworthy ) && var_9.script_noteworthy == "merrick" )
{
var_9.animname = "merrick";
var_6 = var_9;
}
else
{
var_9.animname = "enemy";
var_7 = var_9;
}
var_9.origin = var_0.origin;
var_9 maps\_anim::setanimtree();
}
thread merrick_beatup_sounds( var_6, var_7 );
wait 6;
level notify( "start_beatup" );
var_0 maps\_anim::anim_single( var_1, "beatup" );
}
merrick_beatup_sounds( var_0, var_1 )
{
var_1 maps\_utility::delaythread( 0, maps\_utility::smart_dialogue, "vegas_rke_itsinthemanual" );
var_1 maps\_utility::delaythread( 2, maps\_utility::smart_dialogue, "vegas_rke_thatanditook" );
var_1 maps\_utility::delaythread( 5, maps\_utility::smart_dialogue, "vegas_els_iunderstandaboutbreaking" );
level waittill( "start_beatup" );
maps\_utility::delaythread( 2.05, common_scripts\utility::play_sound_in_space, "drag_punch", var_0 gettagorigin( "j_head" ) );
maps\_utility::delaythread( 3.65, common_scripts\utility::play_sound_in_space, "drag_punch", var_0 gettagorigin( "j_head" ) );
maps\_utility::delaythread( 5.15, common_scripts\utility::play_sound_in_space, "drag_punch", var_0 gettagorigin( "j_head" ) );
maps\_utility::delaythread( 5.8, common_scripts\utility::play_sound_in_space, "drag_punch", var_0 gettagorigin( "j_head" ) );
var_0 maps\_utility::delaythread( 7, maps\_utility::smart_dialogue, "vegas_rke_killthesonin" );
var_1 maps\_utility::delaythread( 9, maps\_utility::smart_dialogue, "vegas_pmc3_wevebeenatthis" );
}
elias_death()
{
wait 2;
maps\las_vegas_code::ui_show_stance( 0 );
thread maps\las_vegas_code::intro_time( &"LAS_VEGAS_INTRO_TIME4", 5, 3 );
maps\las_vegas_code::sun_direction( "elias_death" );
setdvarifuninitialized( "intro_origin", "" );
setdvarifuninitialized( "intro_angles", "" );
setdvarifuninitialized( "eliasdeath_win", "0" );
if ( isdefined( level.ground_ref_ent ) )
{
level.player playersetgroundreferenceent( undefined );
level.ground_ref_ent delete();
}
maps\las_vegas_code::spawn_hero( "elias" );
maps\las_vegas_code::spawn_hero( "hesh" );
maps\las_vegas_code::spawn_rorke();
maps\las_vegas_code::init_player_body();
maps\_utility::add_cleanup_ent( level.elias, "elias_death" );
maps\_utility::add_cleanup_ent( level.rorke, "elias_death" );
level.heroes = common_scripts\utility::array_removeundefined( level.heroes );
var_0 = common_scripts\utility::array_add( level.heroes, level.rorke );
foreach ( var_2 in var_0 )
{
var_2.ignoreall = 1;
var_2.ignoreme = 1;
var_2 maps\las_vegas_code::remove_name();
var_2 maps\_utility::gun_remove();
}
level.rorke attach( "viewmodel_mp443", "tag_inhand" );
var_4 = common_scripts\utility::getstruct( "elias_death_struct", "targetname" );
var_0 = [ level.hesh, level.elias, level.rorke, level.player.body, level.player.rig ];
var_4 maps\_anim::anim_first_frame( var_0, "elias_death_start" );
level.hesh.chair = maps\las_vegas_code::spawn_linked_model( "com_cafe_chair", level.hesh, "tag_sync" );
level.elias.chair = maps\las_vegas_code::spawn_linked_model( "com_cafe_chair", level.elias, "tag_sync" );
level.elias.chair common_scripts\utility::delaycall( 5, ::unlink );
maps\_utility::add_cleanup_ent( level.hesh.chair, "elias_death" );
maps\_utility::add_cleanup_ent( level.elias.chair, "elias_death" );
maps\_utility::add_cleanup_ent( level.player.body, "elias_death" );
var_4 maps\_anim::anim_first_frame_solo( level.player.rig, "elias_death_start" );
level.ground_ref_ent = common_scripts\utility::spawn_tag_origin();
level.ground_ref_ent linkto( level.player.rig, "tag_player", ( 0, 0, 0 ), ( 0, 0, 0 ) );
level.player playersetgroundreferenceent( level.ground_ref_ent );
level.player playerlinktodelta( level.player.rig, "tag_player", 1, 0, 0, 0, 0, 1 );
level.rorke.anim_playsound_func = maps\las_vegas_code::custom_playsound_on_ent;
thread maps\las_vegas_code::print_fov();
common_scripts\utility::flag_set( "elias_death_start" );
elias_death_start( var_4 );
common_scripts\utility::flag_set( "elias_death_struggle" );
elias_death_struggle( var_4 );
common_scripts\utility::flag_set( "elias_death_end" );
elias_death_end( var_4 );
level.player.rig delete();
maps\las_vegas_code::sun_direction( "og" );
}
elias_death_start( var_0 )
{
level.player setclienttriggeraudiozone( "las_vegas_torture", 2.0 );
level.player shellshock( "vegas_chair", 999 );
level.player lerpfov( 50, 0.1 );
var_1 = [ level.hesh, level.elias, level.rorke, level.player.body, level.player.rig ];
wait 1;
level.rorke maps\_utility::delaythread( 1, maps\_utility::play_sound_on_tag, "vegas_rke_killthefatherin", "j_head" );
setblur( 0, 1 );
thread elias_death_fadein();
thread elias_death_start_sounds();
wait 3;
maps\_utility::delaythread( 4, maps\_utility::autosave_now_silent );
level.player lerpviewangleclamp( 10, 0, 0, 35, 35, 60, 30 );
thread maps\las_vegas_code::print_timer();
thread elias_death_visual_tweaks();
level.elias maps\_utility::delaythread( 67.8, maps\_utility::play_sound_on_tag, "vegas_els_death_efforts_1", "j_head" );
var_2 = getanimlength( level.rorke maps\_utility::getanim( "elias_death_start" ) );
var_0 thread maps\_anim::anim_single( var_1, "elias_death_start" );
level.player common_scripts\utility::delaycall( 4.5, ::playrumbleonentity, "vegas_brash" );
level.player common_scripts\utility::delaycall( 6.5, ::playrumbleonentity, "damage_heavy" );
wait( var_2 );
var_3 = 7;
var_4 = level.rorke maps\_utility::getanim( "elias_death_start_b" );
var_5 = getnotetracktimes( var_4, "player_fail" );
var_2 = getanimlength( var_4 ) * var_5[0];
maps\_utility::delaythread( var_2 - var_3, maps\las_vegas_code::hand_hint_thread, maps\las_vegas_code::grab_gun_smash_count() );
level.player common_scripts\utility::delaycall( var_2 - var_3, ::lerpviewangleclamp, 2, 0, 0, 15, 35, 60, 30 );
level.player common_scripts\utility::delaycall( var_2 - var_3, ::springcamenabled, 1 );
level.player common_scripts\utility::delaycall( var_2 - var_3 + 2, ::springcamdisabled, 0 );
var_2 = getanimlength( level.rorke maps\_utility::getanim( "elias_death_start_b" ) );
var_0 = var_0 maps\las_vegas_code::makestruct();
var_1 = common_scripts\utility::array_remove( var_1, level.player.rig );
var_1 = common_scripts\utility::array_remove( var_1, level.player.body );
var_0 thread maps\_anim::anim_single( var_1, "elias_death_start_b" );
wait( var_2 );
if ( common_scripts\utility::flag( "elias_death_player_failed" ) )
level waittill( "forever" );
}
elias_death_visual_tweaks()
{
thread maps\_art::dof_enable_script( 0, 0, 10, 35, 75, 6, 0.1 );
wait 7;
thread elias_death_dof_normal();
level.ground_ref_ent rotateto( ( -45, 30, 0 ), 1 );
level.player lerpfov( 45, 8 );
common_scripts\utility::flag_wait( "elias_death_struggle" );
level notify( "stop_hurt_overlay" );
level.player lerpviewangleclamp( 5, 3, 0, 5, 5, 0, 15 );
thread elias_death_dof_normal();
thread maps\_hud_util::fade_in( 5 );
common_scripts\utility::flag_wait( "elias_death_end" );
level.player lerpviewangleclamp( 2, 1, 1, 5, 5, 20, -5 );
level.player lerpfov( 55, 0.5 );
level.player common_scripts\utility::delaycall( 3, ::lerpviewangleclamp, 15, 1, 1, 25, 10, 30, -15 );
level.player common_scripts\utility::delaycall( 28, ::lerpviewangleclamp, 4, 1, 1, 12, 10, 40, 2 );
level.player common_scripts\utility::delaycall( 54, ::lerpviewangleclamp, 1, 0.5, 0.5, 5, 5, 5, 2 );
}
elias_death_start_sounds()
{
wait 4.85;
level.player maps\_utility::delaythread( 0.0, maps\_utility::play_sound_on_entity, "scn_vegas_torture_plr_wakeup" );
wait 0.2;
level.elias maps\_utility::delaythread( 5.167, maps\_utility::play_sound_on_tag, "scn_vegas_torture_elias_01", "j_spinelower" );
level.elias maps\_utility::delaythread( 31.2, maps\_utility::play_sound_on_tag, "scn_vegas_torture_elias_02", "j_spinelower" );
level.elias maps\_utility::delaythread( 53.2, maps\_utility::play_sound_on_tag, "scn_vegas_torture_elias_03", "j_spinelower" );
level.elias maps\_utility::delaythread( 59.167, maps\_utility::play_sound_on_tag, "scn_vegas_torture_elias_04", "j_spinelower" );
level.elias maps\_utility::delaythread( 64.533, maps\_utility::play_sound_on_tag, "scn_vegas_torture_elias_05", "j_spinelower" );
level.rorke maps\_utility::delaythread( 64.434, maps\_utility::play_sound_on_tag, "scn_vegas_torture_rorke_03", "j_spinelower" );
level.rorke maps\_utility::delaythread( 5.933, maps\_utility::play_sound_on_tag, "scn_vegas_torture_rorke_01", "j_spinelower" );
level.rorke maps\_utility::delaythread( 41.8, maps\_utility::play_sound_on_tag, "scn_vegas_torture_rorke_02", "j_spinelower" );
level.hesh maps\_utility::delaythread( 24.533, maps\_utility::play_sound_on_entity, "scn_vegas_torture_hesh_01" );
level.hesh maps\_utility::delaythread( 64.933, maps\_utility::play_sound_on_entity, "scn_vegas_torture_hesh_02" );
}
audio_player_frees_hand()
{
level.player thread maps\_utility::play_sound_on_entity( "scn_vegas_torture_plr_rope_free_hand" );
}
audio_player_grabs_gun()
{
level.player thread maps\_utility::play_sound_on_entity( "scn_vegas_torture_plr_grab_gun" );
}
audio_player_takes_shot()
{
level.player thread maps\_utility::play_sound_on_entity( "scn_vegas_torture_plr_shot" );
}
elias_death_struggle( var_0 )
{
level.player.rig show();
level.player.body hide();
var_1 = [ level.hesh, level.elias, level.rorke, level.player.rig ];
thread maps\las_vegas_code::print_timer();
level.player thread maps\_utility::play_sound_on_entity( "scn_vegas_torture_plr_struggle" );
thread maps\las_vegas_code::hand_hint_thread( maps\las_vegas_code::struggle_smash_count(), 1 );
thread elias_death_struggle_thread( var_1, var_0 );
var_0 maps\_anim::anim_single( var_1, "elias_death_struggle" );
common_scripts\utility::flag_set( "elias_death_struggle_done" );
stopallrumbles();
}
elias_death_struggle_thread( var_0, var_1 )
{
wait 0.1;
var_2 = 0.6;
var_3 = 1;
var_4 = level.hand_hint.check - 10;
var_5 = level.hand_hint.check + 10;
var_6 = var_5 - var_4;
var_7 = maps\las_vegas_code::struggle_smash_count();
var_8 = 0;
while ( !common_scripts\utility::flag( "elias_death_struggle_done" ) )
{
if ( isdefined( level.player.smash_use_pause ) )
{
wait 0.2;
continue;
}
if ( maps\las_vegas_code::player_smash_check( var_7 ) )
{
var_8 = 1;
break;
}
var_9 = 1 - ( level.hand_hint.meter - var_4 ) / var_6;
var_9 = clamp( var_9, var_2, var_3 );
maps\_anim::anim_set_rate( var_0, "elias_death_struggle", var_9 );
wait 0.05;
}
level notify( "stop_player_smash_use" );
thread maps\las_vegas_code::cleanup_hand_hint();
level.player common_scripts\utility::delaycall( 1, ::playrumbleonentity, "vegas_brash" );
if ( var_8 )
{
level.rorke.playsound_ents = common_scripts\utility::array_removeundefined( level.rorke.playsound_ents );
foreach ( var_11 in level.rorke.playsound_ents )
var_11 scalevolume( 0, 0.2 );
common_scripts\utility::array_thread( var_0, maps\_utility::anim_stopanimscripted );
var_1 maps\las_vegas_code::struct_stopanimscripted();
}
}
elias_death_end( var_0 )
{
var_1 = [ level.hesh, level.elias, level.rorke, level.player.rig ];
var_2 = getanimlength( level.elias maps\_utility::getanim( "elias_death_end" ) );
thread elias_death_end_thread();
thread maps\las_vegas_code::print_timer();
thread elias_death_end_sounds();
maps\_utility::delaythread( 33, ::elias_death_blood_pool );
maps\_utility::delaythread( 36, maps\_hud_util::fade_in, 2 );
maps\_utility::delaythread( 36, ::elias_death_dof_normal );
level thread maps\_utility::notify_delay( "stop_hurt_overlay", 35 );
var_0 = var_0 maps\las_vegas_code::makestruct();
maps\_utility::delaythread( 55.65, maps\las_vegas_anim::end_shot_ringing );
level.player lerpviewangleclamp( 2, 1, 1, 30, 30, 30, 30 );
var_0 thread maps\_anim::anim_single( var_1, "elias_death_end" );
level.player common_scripts\utility::delaycall( 3, ::playrumbleonentity, "heavy_1s" );
level.elias waittillmatch( "single anim", "end" );
level notify( "stop_print_timer" );
common_scripts\utility::flag_wait( "elias_death_done" );
}
elias_death_dof_normal()
{
maps\_art::dof_disable_script( 2 );
}
elias_death_end_sounds()
{
maps\_utility::delaythread( 3.5, maps\_utility::music_stop, 0.2 );
level.player maps\_utility::delaythread( 0.9, maps\_utility::play_sound_on_entity, "scn_vegas_torture_plr_pistol_whipped" );
level.hesh maps\_utility::delaythread( 4.734, maps\_utility::play_sound_on_entity, "scn_vegas_torture_hesh_03" );
level.elias maps\_utility::delaythread( 5.333, maps\_utility::play_sound_on_tag, "scn_vegas_torture_elias_06", "j_spinelower" );
level.elias maps\_utility::delaythread( 23.2, maps\_utility::play_sound_on_tag, "scn_vegas_torture_elias_07", "j_spinelower" );
level.rorke maps\_utility::delaythread( 4.966, maps\_utility::play_sound_on_tag, "scn_vegas_torture_rorke_04", "j_spinelower" );
level.rorke maps\_utility::delaythread( 43.633, maps\_utility::play_sound_on_tag, "scn_vegas_torture_rorke_06_gun", "tag_inhand" );
level.elias maps\_utility::delaythread( 42.666, common_scripts\utility::play_sound_in_space, "scn_vegas_torture_rorke_05_foot", ( -29126, -31533, 1392 ) );
level.player maps\_utility::delaythread( 54.166, maps\_utility::play_sound_on_entity, "scn_vegas_torture_gun_to_head" );
level.player common_scripts\utility::delaycall( 1.5, ::fadeoutshellshock );
wait 2.85;
level.player thread maps\_utility::play_sound_on_entity( "pistol_hit" );
thread maps\_hud_util::fade_out( 0.1, "white" );
wait 0.1;
maps\_hud_util::fade_in( 0.5, "white" );
thread maps\las_vegas_anim::player_hurt_overlay();
}
elias_death_fadein()
{
wait 0.1;
var_0 = 12;
wait 4;
thread maps\_hud_util::fade_in( var_0 );
wait 3;
thread maps\_hud_util::fade_in( 0.2 );
}
elias_death_blood_pool()
{
var_0 = level.elias gettagorigin( "J_Spine4" );
var_0 = common_scripts\utility::drop_to_ground( var_0, 0, -100 ) + ( 0, 0, -1 );
playfx( common_scripts\utility::getfx( "blood_pool" ), var_0 );
}
intro_struct_realign( var_0, var_1 )
{
var_2 = common_scripts\utility::getstruct( "elias_death_struct", "targetname" );
if ( isdefined( var_0 ) )
var_2.origin = common_scripts\utility::drop_to_ground( var_0, 10, -200 );
else if ( getdvar( "intro_origin" ) != "" )
{
var_3 = strtok( getdvar( "intro_origin" ), " " );
var_2.origin = ( float( var_3[0] ), float( var_3[1] ), float( var_3[2] ) );
var_2.origin = common_scripts\utility::drop_to_ground( var_2.origin, 10, -200 );
}
if ( isdefined( var_1 ) )
var_2.angles = var_1 + ( 0, 90, 0 );
else if ( getdvar( "intro_angles" ) != "" )
{
var_3 = strtok( getdvar( "intro_angles" ), " " );
var_2.angles = ( float( var_3[0] ), float( var_3[1] ) + 90, float( var_3[2] ) );
}
}
elias_death_end_thread()
{
wait 0.1;
var_0 = level.elias maps\_utility::getanim( "elias_death_end" );
while ( level.elias getanimtime( var_0 ) < 0.992 )
wait 0.05;
maps\_utility::set_vision_set( "lv_tunnel_overbloom", 0.1 );
level.player setclienttriggeraudiozone( "las_vegas_post_torture_black", 0.1 );
wait 0.05;
maps\_hud_util::fade_out( 0, "black" );
wait 4;
common_scripts\utility::flag_set( "elias_death_done" );
level.player lerpfov( 65, 0.1 );
if ( isdefined( level.ground_ref_ent ) )
{
level.player playersetgroundreferenceent( undefined );
level.ground_ref_ent delete();
}
maps\_utility::delaythread( 3, maps\_utility::cleanup_ents, "elias_death" );
maps\_utility::delaythread( 0.2, maps\_utility::set_vision_set, "", 0.1 );
}
rescue()
{
maps\las_vegas_code::ui_show_stance( 0 );
thread maps\las_vegas_code::intro_time( &"LAS_VEGAS_INTRO_TIME5", 10, 3 );
var_0 = common_scripts\utility::getstruct( "rescue_struct", "targetname" );
rescue_player_init( var_0 );
wait 8;
level.player clearclienttriggeraudiozone( 3 );
maps\_utility::delaythread( 1, maps\_hud_util::fade_in, 5, "black" );
thread maps\_utility::autosave_now_silent();
setsaveddvar( "laserrange", 20000 );
maps\_utility::array_spawn_targetname( "rescue_enemy_spawners", 1 );
maps\_utility::array_spawn_targetname( "rescue_enemy_standers", 1 );
maps\las_vegas_code::spawn_hero( "hesh" );
maps\las_vegas_code::spawn_hero( "merrick" );
if ( isdefined( level.elias ) )
level.heroes = common_scripts\utility::array_remove( level.heroes, level.elias );
level.heroes = common_scripts\utility::array_removeundefined( level.heroes );
foreach ( var_2 in level.heroes )
var_2 maps\_utility::gun_remove();
thread rescue_sniper();
thread rescue_player_thread();
thread player_flinch();
thread rescue_dialogue();
thread rescue_merrick_thread( var_0 );
thread maps\las_vegas_code::print_timer();
level.merrick maps\las_vegas_code::set_wounded();
thread rescue_sounds();
level.hesh rescue_tie( ( -0.2, 0.5, 1 ), ( 0, -30, -270 ) );
level.merrick rescue_tie( ( -0.2, -0.5, 0.5 ), ( 0, -10, -90 ) );
level.hesh.tie common_scripts\utility::delaycall( 40, ::delete );
var_4 = common_scripts\utility::array_combine( level.heroes, level.rescue_enemies );
var_0 maps\_anim::anim_single( var_4, "rescue" );
level.hesh waittillmatch( "single anim", "end" );
common_scripts\utility::flag_set( "show_chyron" );
level notify( "stop_print_timer" );
}
rescue_tie( var_0, var_1 )
{
var_2 = getent( self.script_noteworthy + "_tie", "targetname" );
var_2 notsolid();
var_2 linkto( self, "J_Wrist_RI", var_0, var_1 );
self.tie = var_2;
}
rescue_sounds()
{
level.hesh maps\_utility::delaythread( 16.92, maps\_utility::play_sound_on_tag, "vegas_hsh_rescue_push", "j_head" );
level.hesh maps\_utility::delaythread( 17.2, maps\_utility::play_sound_on_tag, "vegas_hsh_rescue_strike_1", "j_head" );
level.hesh maps\_utility::delaythread( 19.2, maps\_utility::play_sound_on_tag, "vegas_hsh_rescue_strike_2", "j_head" );
var_0 = getent( "gunner2_ai", "targetname" );
var_0 maps\_utility::delaythread( 18.43, maps\_utility::play_sound_on_tag, "vegas_fs1_rescue_hit", "j_head" );
var_0 maps\_utility::delaythread( 19.6, maps\_utility::play_sound_on_tag, "vegas_fs1_rescue_struggle", "j_head" );
var_0 maps\_utility::delaythread( 20.92, maps\_utility::play_sound_on_tag, "vegas_fs1_rescue_strangle", "j_head" );
}
rescue_merrick_thread( var_0 )
{
level.merrick waittillmatch( "single anim", "end" );
var_1 = getstartorigin( var_0.origin, var_0.angles, level.merrick maps\_utility::getanim( "rescue_end" ) );
level.merrick.goalradius = 8;
level.merrick.dontavoidplayer = 1;
level.merrick setgoalpos( var_1 );
level.merrick.grenadeammo = 0;
level.merrick.tie delete();
level.merrick maps\_utility::delaythread( 0.5, maps\_utility::forceuseweapon, "msbs+eotech_sp", "primary" );
level.rescue_standers = common_scripts\utility::array_removeundefined( level.rescue_standers );
common_scripts\utility::array_thread( level.rescue_standers, maps\_utility::set_ignoreme, 0 );
common_scripts\utility::array_thread( level.rescue_standers, maps\_utility::set_ignoreall, 0 );
level.merrick waittill( "goal" );
level.merrick.ignoreall = 0;
level.merrick.ignoreme = 0;
common_scripts\utility::flag_wait( "rescue_merrick_end" );
var_0 = var_0 maps\las_vegas_code::makestruct();
var_0 maps\_anim::anim_reach_solo( level.merrick, "rescue_end" );
thread rescue_end_dialogue();
var_0 maps\_anim::anim_single_solo( level.merrick, "rescue_end" );
common_scripts\utility::array_thread( level.heroes, maps\las_vegas_code::start_scripted_movement );
level.merrick.dontavoidplayer = 0;
}
rescue_dialogue()
{
wait 15;
level.merrick maps\_utility::smart_dialogue( "vegas_mrk_heshnow" );
wait 5;
level.merrick maps\_utility::smart_dialogue( "vegas_mrk_igotchalogan" );
}
rescue_end_dialogue()
{
wait 0.5;
level.hesh maps\_utility::smart_dialogue( "vegas_hsh_youokmerrick" );
level.merrick maps\_utility::smart_dialogue( "vegas_mrk_ribsbrokenbuti" );
level.merrick maps\_utility::smart_dialogue( "vegas_mrk_wegottagetgoing" );
wait 1;
level.hesh maps\_utility::smart_dialogue( "vegas_hsh_keeganigotem" );
maps\_utility::smart_radio_dialogue( "vegas_kgn_checkimonmy" );
wait 1;
level.merrick maps\_utility::smart_dialogue( "vegas_mrk_weneedtomake" );
}
rescue_player_init( var_0 )
{
level.player takeallweapons();
level.player allowstand( 0 );
level.player allowprone( 0 );
level.player allowcrouch( 1 );
level.player allowsprint( 0 );
level.player giveweapon( "flash_grenade" );
level.player setweaponammostock( "flash_grenade", 0 );
level.player giveweapon( "fraggrenade" );
level.player setweaponammostock( "fraggrenade", 0 );
var_1 = common_scripts\utility::spawn_tag_origin();
var_1.origin = var_0.origin;
var_1.angles = var_0.angles;
level.player.link = var_1;
var_2 = ( 0, -175, 0 );
var_3 = var_1 localtoworldcoords( var_2 );
var_4 = vectortoangles( var_0.origin - var_3 );
var_1.origin = var_3;
var_1.angles = var_4;
level.player playerlinktodelta( var_1, "tag_origin", 1, 0, 0, 0, 0 );
level.player lerpviewangleclamp( 2, 0, 0, 30, 30, 60, 20 );
}
rescue_player_thread()
{
common_scripts\utility::flag_wait( "rescue_sniper_start" );
var_0 = level.merrick.threatbias;
level.merrick.threatbias = 0;
level.merrick maps\_utility::delaythread( 10, ::set_threatbias, var_0 );
level.player lerpviewangleclamp( 5, 0, 0, 50, 50, 60, 40 );
thread player_threatbias_thread();
common_scripts\utility::flag_wait( "rescue_unlink_player" );
level.player setcandamage( 0 );
thread maps\_art::dof_disable_script( 1 );
level.player unlink();
level.player allowstand( 1 );
level.player allowprone( 1 );
level.player allowcrouch( 1 );
level.player allowjump( 1 );
level.player allowsprint( 1 );
maps\las_vegas_code::ui_show_stance( 1 );
foreach ( var_2 in level.heroes )
var_2 maps\las_vegas_code::restore_name();
wait 5;
level.player setcandamage( 1 );
}
set_threatbias( var_0 )
{
self.threatbias = var_0;
}
player_threatbias_thread()
{
var_0 = level.player.threatbias;
level.player.threatbias = 0;
common_scripts\utility::flag_wait( "rescue_unlink_player" );
var_1 = 10;
if ( maps\_utility::getdifficulty() == "hard" )
var_1 = 15;
else if ( maps\_utility::getdifficulty() == "fu" )
var_1 = 30;
var_2 = var_1 * 20;
var_3 = var_0 / var_2;
var_4 = 0;
for ( var_5 = 0; var_5 < var_2; var_5++ )
{
var_4 = var_4 + var_3;
level.player.threatbias = int( var_4 );
wait 0.05;
}
level.player.threatbias = var_0;
}
player_flinch()
{
wait 11;
var_0 = maps\_hud_util::get_overlay( "white" );
var_1 = 0.1;
var_0 fadeovertime( var_1 );
var_0.alpha = 1;
maps\_utility::set_vision_set( "lv_tunnel_overbloom", var_1 + 0.2 );
wait( var_1 );
wait 0.3;
var_1 = 0.2;
maps\_utility::set_vision_set( "", var_1 - 0.1 );
var_0 fadeovertime( var_1 );
var_0.alpha = 0;
}
rescue_sniper()
{
var_0 = common_scripts\utility::getstruct( "sniper_glint_struct", "targetname" );
var_1 = gettime();
var_2 = var_1 + 11000;
sniper_sort_targets();
wait 8;
var_3 = common_scripts\utility::getfx( "sniper_glint_large" );
playfx( var_3, var_0.origin );
wait 1;
playfx( var_3, var_0.origin );
wait 0.2;
playfx( var_3, var_0.origin );
wait 1;
playfx( var_3, var_0.origin );
var_4 = ( var_2 - gettime() ) * 0.001;
var_4 = max( var_4, 0 );
wait( var_4 );
var_5 = spawn( "script_model", var_0.origin );
var_5 setmodel( "tag_flash" );
var_5.angles = vectortoangles( var_5.origin - level.player.origin );
var_6 = maps\las_vegas_code::array_get_noteworthy( level.rescue_enemies, "gunner1" );
var_7 = spawn( "script_origin", level.player.origin );
var_5 thread rescue_sniper_track_target( var_7 );
var_5 thread rescue_kill_targets( var_1 );
var_5 rescue_snipe_gunner( var_6, var_7 );
var_8 = 600;
var_9 = undefined;
var_10 = gettime() + randomintrange( 2000, 4000 );
while ( !common_scripts\utility::flag( "rescue_sniper_done" ) )
{
if ( gettime() > var_10 )
{
var_10 = gettime() + randomintrange( 4000, 8000 );
playfx( var_3, var_0.origin );
}
var_9 = sniper_get_target();
if ( !isdefined( var_9 ) )
{
wait 0.1;
continue;
}
var_11 = var_9 gettagorigin( "J_SpineUpper" );
var_12 = distance( var_7.origin, var_11 );
var_4 = var_12 / var_8;
var_7 moveto( var_11, var_4 );
var_4 = max( var_4, 0.06 );
wait( var_4 - 0.05 );
}
}
rescue_snipe_gunner( var_0, var_1 )
{
var_1.origin = var_0 gettagorigin( "J_SpineUpper" );
rescue_sniper_shot( var_0, "J_SpineUpper", 1 );
wait 3;
self laserforceon();
var_1 linkto( var_0, "j_head", ( 0, 0, 0 ), ( 0, 0, 0 ) );
wait 0.5;
thread rescue_sniper_shot( var_0, "j_head", 1 );
var_1 unlink();
common_scripts\utility::flag_set( "rescue_sniper_start" );
thread turn_off_laser();
}
turn_off_laser()
{
common_scripts\utility::flag_wait( "rescue_sniper_done" );
self laserforceoff();
}
rescue_sniper_track_target( var_0 )
{
self endon( "death" );
var_1 = 0.2;
for (;;)
{
var_2 = vectortoangles( var_0.origin - self.origin );
self rotateto( var_2, var_1 );
wait( var_1 );
}
}
rescue_kill_targets( var_0 )
{
self endon( "death" );
for (;;)
{
if ( level.rescue_targets.size == 0 )
break;
wait 0.05;
foreach ( var_4, var_2 in level.rescue_targets )
{
if ( !isdefined( var_2 ) || !isalive( var_2 ) )
break;
var_3 = var_0 + var_2.kill_time * 1000;
for (;;)
{
wait 0.05;
if ( gettime() >= var_3 )
{
if ( !isdefined( var_2 ) || !isalive( var_2 ) )
break;
rescue_sniper_shot( var_2, "J_SpineUpper" );
level.rescue_targets = common_scripts\utility::array_remove( level.rescue_targets, var_2 );
if ( common_scripts\utility::cointoss() )
{
wait( randomfloatrange( 0.3, 0.7 ) );
rescue_sniper_shot( var_2, "J_SpineUpper" );
}
if ( isdefined( var_2 ) && isalive( var_2 ) )
{
if ( !isdefined( var_2.animname ) )
{
var_2.deathfunction = maps\las_vegas_code::sniper_ragdoll_death;
var_2 kill( self.origin );
}
}
break;
}
}
}
}
common_scripts\utility::flag_set( "rescue_sniper_done" );
}
rescue_sniper_shot( var_0, var_1, var_2 )
{
if ( !isdefined( var_0 ) || !isalive( var_0 ) )
return;
var_3 = var_0 gettagorigin( var_1 );
var_4 = self.origin + vectornormalize( var_3 - self.origin ) * 10000;
magicbullet( "l115a3_nosound", self.origin, var_3 );
var_5 = bullettrace( self.origin, var_3, 0 );
var_3 = var_0 gettagorigin( var_1 );
var_6 = vectornormalize( self.origin - var_3 );
var_7 = var_3 + var_6 * 100;
magicbullet( "l115a3_nosound", var_7, var_3 );
var_8 = bullettrace( var_7, var_4, 0 );
var_6 = vectornormalize( var_4 - var_7 );
playfx( common_scripts\utility::getfx( "big_blood_spurt" ), var_3, var_6 );
var_9 = common_scripts\utility::spawn_tag_origin();
var_9.origin = var_5["position"];
playfxontag( common_scripts\utility::getfx( "bullettrail" ), var_9, "tag_origin" );
if ( isdefined( var_2 ) )
{
var_10 = getent( "gunner1_ai", "targetname" );
var_10 thread maps\_utility::play_sound_on_tag( "sniper_bullet_large_flesh_npc", "j_SpineUpper" );
}
var_9 moveto( var_8["position"], 0.2 );
var_9 common_scripts\utility::delaycall( 2, ::delete );
level thread common_scripts\utility::play_sound_in_space( "weap_l115a3_fire_sniper", self.origin );
}
sniper_sort_targets()
{
var_0 = [];
var_0[var_0.size] = maps\las_vegas_code::array_get_noteworthy( level.rescue_enemies, "enemy2" );
var_0[var_0.size] = maps\las_vegas_code::array_get_noteworthy( level.rescue_enemies, "enemy1" );
var_0 = common_scripts\utility::array_combine( var_0, level.rescue_standers );
var_1 = 0;
foreach ( var_3 in var_0 )
{
if ( isdefined( var_3.animname ) )
{
if ( var_3.animname == "enemy2" )
{
var_3.kill_time = 20.5;
var_3.targetname = "rescue_enemy2";
}
else if ( var_3.animname == "enemy1" )
{
var_3 thread shootable_by_player();
var_3.kill_time = 32.4;
}
continue;
}
if ( isdefined( var_3.script_delay ) )
var_3.kill_time = var_3.script_delay;
}
for ( var_5 = 0; var_5 < var_0.size - 1; var_5++ )
{
for ( var_6 = var_5 + 1; var_6 < var_0.size; var_6++ )
{
if ( var_0[var_6].kill_time < var_0[var_5].kill_time )
{
var_7 = var_0[var_6];
var_0[var_6] = var_0[var_5];
var_0[var_5] = var_7;
}
}
}
level.rescue_targets = var_0;
}
shootable_by_player()
{
self endon( "death" );
common_scripts\utility::flag_wait( "rescue_unlink_player" );
self.allowdeath = 1;
self.deathfunction = maps\las_vegas_code::death_ragdoll;
}
sniper_get_target()
{
level.rescue_targets = common_scripts\utility::array_removeundefined( level.rescue_targets );
level.rescue_targets = maps\_utility::array_removedead_or_dying( level.rescue_targets );
if ( level.rescue_targets.size == 0 )
return undefined;
var_0 = level.rescue_targets[0];
if ( isdefined( var_0 ) && isalive( var_0 ) )
return var_0;
return undefined;
}
postspawn_rescue_enemy()
{
if ( !isdefined( level.rescue_enemies ) )
level.rescue_enemies = [];
level.rescue_enemies[level.rescue_enemies.size] = self;
self.ignoreme = 1;
if ( isdefined( self.script_noteworthy ) )
{
self.animname = self.script_noteworthy;
switch ( self.script_noteworthy )
{
case "gunner1":
maps\_utility::gun_remove();
maps\_utility::forceuseweapon( self.sidearm, "primary" );
self.targetname = "gunner1_ai";
break;
case "gunner2":
maps\_utility::gun_remove();
animscripts\shared::placeweaponon( self.sidearm, "none" );
self.targetname = "gunner2_ai";
break;
}
}
}
postspawn_rescue_extra()
{
level.rescue_enemies[level.rescue_enemies.size] = self;
level.rescue_targets[level.rescue_targets.size] = self;
self.baseaccuracy = self.baseaccuracy * 0.5;
var_0 = level.rescue_targets[level.rescue_targets.size - 1];
if ( isdefined( var_0.script_noteworthy ) && var_0.script_noteworthy == "extra" )
self.kill_time = 36;
else
self.kill_time = 34;
}
postspawn_rescue_stander()
{
if ( !isdefined( level.rescue_standers ) )
level.rescue_standers = [];
level.rescue_standers[level.rescue_standers.size] = self;
self.alertlevelint = 0;
self.goalradius = 16;
common_scripts\utility::flag_wait( "rescue_sniper_start" );
self.alertlevelint = 1;
}
bar()
{
maps\las_vegas_code::enable_all_triggers();
main_init();
maps\las_vegas_code::set_player_speed( "bar" );
maps\_utility::autosave_by_name( "bar" );
common_scripts\utility::flag_set( "rescue_sniper_done" );
thread bar_dialogue();
level.hesh maps\_utility::set_archetype( "creepwalk" );
level.hesh pushplayer( 1 );
level.hesh.accuracy = 9999;
level.hesh maps\_utility::pathrandompercent_zero();
level.merrick.og_baseaccuracy = level.merrick.baseaccuracy;
level.merrick.baseaccuracy = 0.1;
common_scripts\utility::array_thread( level.heroes, maps\_utility::set_ignoreall, 1 );
common_scripts\utility::flag_wait( "human_shield" );
level.merrick.ignoreall = 0;
level.bar_enemies = [];
var_0 = getent( "casino_bar_idler", "targetname" );
var_1 = var_0 maps\_utility::spawn_ai();
level.bar_enemies[level.bar_enemies.size] = var_1;
var_2 = getnode( var_0.script_linkto, "script_linkname" );
var_3 = getnode( var_0.target, "targetname" );
var_1 thread maps\las_vegas_code::idle_and_react( var_2, var_0.animation, "none", var_3 );
var_1 thread bar_humanshield_deaths();
thread bar_radio_scene();
var_4 = getentarray( "casino_bar_walkers", "targetname" );
common_scripts\utility::array_thread( var_4, maps\_utility::spawn_ai );
var_5 = level.player getweaponslistall();
if ( level.player getcurrentweapon() == "none" )
{
level.player disableweapons();
level.player giveweapon( "p226" );
level.player enableweapons();
level.player switchtoweapon( "p226" );
}
common_scripts\utility::flag_wait( "bar_enemies_dead" );
level.merrick.baseaccuracy = level.merrick.og_baseaccuracy;
level.merrick.ignoreall = 1;
level.player disableinvulnerability();
common_scripts\utility::array_call( level.heroes, ::pushplayer, 1 );
level.hesh maps\_utility::disable_cqbwalk();
level.hesh maps\_utility::set_archetype( "creepwalk" );
common_scripts\utility::flag_wait( "human_shield_done" );
level.bar_enemies = undefined;
}
bar_dialogue()
{
common_scripts\utility::flag_wait( "at_bar" );
var_0 = [ "vegas_fs5_shitmandidyou", "vegas_pmc3_nowhat", "vegas_fs5_hetookagarrote", "vegas_pmc3_holyshitthatsbrutalman", "vegas_fs5_yeahremindmenever", "vegas_saf2_youwanttoknow", "vegas_fs5_whatsthat", "vegas_saf2_ithinkoneof", "vegas_pmc3_whatthefuck", "vegas_saf2_yeahhekilledthe" ];
var_1 = common_scripts\utility::getstructarray( "bar_sound_structs", "targetname" );
var_2 = [];
foreach ( var_4 in var_1 )
var_2[var_2.size] = spawn( "script_origin", var_4.origin );
var_6 = undefined;
foreach ( var_10, var_8 in var_0 )
{
if ( common_scripts\utility::flag( "humanshield_start" ) )
{
var_6 stopsounds();
break;
}
if ( isdefined( var_6 ) )
var_6 waittill( "walla_stop" );
if ( common_scripts\utility::flag( "humanshield_start" ) )
break;
var_9 = var_2[var_10 % 2];
var_9 playsound( var_8, "walla_stop", 1 );
var_6 = var_9;
wait 0.1;
}
common_scripts\utility::array_call( var_2, ::delete );
}
human_shield_hesh( var_0 )
{
var_0 maps\_anim::anim_reach_solo( self, "humanshield_doorstack" );
var_0 maps\_anim::anim_single_solo( self, "humanshield_doorstack" );
var_1 = maps\las_vegas_code::makestruct();
var_1 thread maps\_anim::anim_loop_solo( self, "humanshield_doorstack_idle" );
var_2 = [ "vegas_hsh_loganoverherequick", "vegas_mrk_getoverherekid", "vegas_mrk_dammitgetyourass" ];
level.hesh thread maps\las_vegas_code::nag_thread( var_2, "humanshield_start" );
common_scripts\utility::flag_wait( "merrick_human_shield_ready" );
common_scripts\utility::flag_wait( "human_shield" );
level.breach_ai = [];
maps\_utility::array_spawn_targetname( "bar_talkers" );
var_3 = getent( "bar_left_entry_door", "targetname" );
var_1 maps\las_vegas_code::struct_stopanimscripted();
var_4 = common_scripts\utility::getstruct( "human_shield_spot", "targetname" );
var_4 thread maps\_anim::anim_first_frame( level.breach_ai, "vegas_humanshield_breach" );
common_scripts\utility::flag_set( "humanshield_start" );
level.breach_ai[level.breach_ai.size] = self;
var_4 thread humanshield_breach_code( level.breach_ai );
level thread humandshield_end_dialogue();
maps\_utility::delaythread( 3.1, ::bar_player_ads_breathin );
var_5 = common_scripts\utility::getclosest( self.origin, getaiarray( "axis" ) );
var_5 maps\_utility::delaythread( 2.8, maps\_utility::smart_dialogue, "vegas_pmc2_huh" );
level.hesh thread maps\_utility::smart_dialogue( "vegas_hsh_letsmakethisquick" );
var_4 thread maps\_anim::anim_single( level.breach_ai, "vegas_humanshield_breach" );
var_6 = getanimlength( maps\_utility::getanim( "vegas_humanshield_breach" ) );
wait( var_6 );
level notify( "stealth_event_notify" );
level endon( "bar_enemies_dead" );
level.breach_ai = maps\_utility::remove_dead_from_array( level.breach_ai );
level notify( "keegan_humanshield_shooting_start" );
maps\_utility::delaythread( 0.1, common_scripts\utility::flag_set, "human_shield_ready_for_end" );
var_4 maps\_anim::anim_single( level.breach_ai, "vegas_humanshield_breach_loop" );
if ( !common_scripts\utility::flag( "bar_enemies_dead" ) )
{
level.hostage setcandamage( 1 );
var_4 maps\_anim::anim_single( level.breach_ai, "vegas_humanshield_breach_ending" );
common_scripts\utility::flag_set( "human_shield_done" );
}
}
humandshield_end_dialogue()
{
common_scripts\utility::flag_wait( "human_shield_done" );
var_0 = [ "vegas_death_turnthetvdown", 1, "vegas_sp2_butthegameson", 0.5, "vegas_death_whatifthecaptain", 0.5, "vegas_sp2_yknowimgettingreally", 0.5, "vegas_death_ifyouwerentsuch", 0.5, "vegas_sp2_whatthehelldid", 0.5, "vegas_spl_whatthefuckare" ];
maps\_utility::delaythread( 1, maps\las_vegas_code::array_play_enemy_radio, var_0 );
level.merrick thread maps\_utility::smart_dialogue( "vegas_mrk_wereclear" );
wait 4;
level.merrick maps\_utility::smart_dialogue( "vegas_mrk_whereskeegan" );
level.hesh maps\_utility::smart_dialogue( "vegas_hsh_hesonhisway" );
}
postspawn_bar_talker()
{
if ( isdefined( self.script_noteworthy ) )
{
self.animname = "hostage";
self setcandamage( 0 );
level.hostage = self;
}
else
{
self.animname = "sacrifice";
self.headshotfx = 1;
maps\_utility::gun_remove();
}
level.breach_ai[level.breach_ai.size] = self;
}
humanshield_breach_code( var_0 )
{
self endon( "vegas_humanshield_breach_loop" );
wait 2;
var_1 = getent( "bar_left_entry_door", "targetname" );
var_2 = getent( "bar_right_entry_door", "targetname" );
var_1 thread maps\las_vegas_code::door_open( 0.8, "double_door_wood_creeky", 96, undefined, 0.4 );
var_2 thread maps\las_vegas_code::door_open( 1, undefined, 100, undefined, 0.4 );
wait 0.5;
level notify( "give_player_weapons" );
common_scripts\utility::flag_wait( "bar_enemies_dead" );
common_scripts\utility::flag_wait( "human_shield_ready_for_end" );
level.breach_ai = maps\_utility::remove_dead_from_array( level.breach_ai );
var_3 = [];
foreach ( var_5 in level.breach_ai )
{
if ( var_5.animname == "sacrifice" )
continue;
var_3[var_3.size] = var_5;
}
level.breach_ai = var_3;
common_scripts\utility::array_call( level.breach_ai, ::stopanimscripted );
maps\_anim::anim_single( level.breach_ai, "vegas_humanshield_breach_ending" );
common_scripts\utility::flag_set( "human_shield_done" );
}
bar_player_ads_breathin()
{
level endon( "bar_enemies_dead" );
var_0 = "weap_sniper_breathin";
for (;;)
{
if ( level.player maps\_utility::isads() || level.player adsbuttonpressed() )
{
level.player thread maps\_utility::play_sound_on_entity( var_0 );
level.player notify( "stop_fake_shellshock" );
break;
}
wait 0.05;
}
}
bar_radio_scene()
{
var_0 = getent( "casino_bar_radio_guy", "targetname" );
var_1 = common_scripts\utility::getstruct( var_0.target, "targetname" );
var_2 = maps\_utility::dronespawn_bodyonly( var_0 );
level.enemy_radio_guy = var_2;
var_2.animname = "radio_guy";
var_2 maps\_utility::gun_remove();
var_2 notsolid();
var_3 = "bar_radioguy_idle";
var_4 = "bar_radioguy_react";
var_5 = "bar_radioguy_death";
var_2 thread maps\_anim::anim_loop_solo( var_2, var_3, "stop_anim" );
level waittill( "stealth_event_notify" );
var_2 notify( "stop_anim" );
var_2 maps\_anim::anim_single_solo( var_2, var_4 );
var_1 maps\_anim::anim_single_solo( var_2, var_5 );
maps\las_vegas_code::init_enemy_radio();
level.enemy_radio linkto( var_2, "tag_weapon_chest", ( 0, 0, 0 ), ( 0, 0, 0 ) );
common_scripts\utility::flag_wait( "bar_enemies_dead" );
}
hesh_pickup_radio( var_0 )
{
var_1 = common_scripts\utility::getstruct( "casino_bar_radio_spot", "targetname" );
var_1 maps\_anim::anim_reach_solo( self, "bar_radio_pickup" );
level.merrick thread maps\_utility::smart_dialogue( "vegas_mrk_grabhisradiowe" );
maps\_utility::delaythread( 2, maps\las_vegas_code::radio_volume, 1, 4 );
var_2 = [ level.enemy_radio_guy, self ];
maps\_utility::delaythread( 4, maps\_utility::smart_dialogue, "vegas_hsh_soundsliketheyheard" );
thread post_bar_talk();
var_1 maps\_anim::anim_single( var_2, "bar_radio_pickup" );
}
post_bar_talk()
{
wait 6;
maps\_utility::smart_radio_dialogue( "vegas_kgn_heshwhatsyourlocation" );
wait 0.5;
level.hesh maps\_utility::smart_dialogue( "vegas_mrk_sohowarewe" );
maps\_utility::smart_radio_dialogue( "vegas_hsh_thewestwingbut" );
level.hesh maps\_utility::smart_dialogue( "vegas_mrk_wellhavetogo" );
wait 0.5;
maps\_utility::smart_radio_dialogue( "vegas_kgn_toomany" );
}
postspawn_bar_enemy()
{
level.bar_enemies[level.bar_enemies.size] = self;
var_0 = self.spawner;
self endon( "death" );
level endon( "stealth_event_notify" );
self.ignoreall = 1;
self.ignoreme = 1;
maps\_utility::disable_arrivals();
maps\_utility::disable_exits();
maps\_utility::disable_surprise();
maps\_utility::disable_pain();
maps\_utility::pathrandompercent_zero();
self.animname = "box_guy";
maps\_utility::set_run_anim( self.animation );
var_1 = strtok( self.animation, "_" );
self.num = var_1[2];
self.deathanim = maps\_utility::getanim( "vegas_guy_" + self.num + "_box_carry_dead" );
self.reactanim = "vegas_guy_" + self.num + "_box_carry_turn_shoot";
var_2 = "com_cardboardbox_dusty_01";
self.box = spawn( "script_model", self.origin );
self.box setmodel( var_2 );
self.box linkto( self, "tag_inhand", ( 0, 0, 0 ), ( 0, 90, 0 ) );
self.stealth_radius_multiplier = 0;
thread maps\las_vegas_code::waittill_stealth_notify();
thread bar_walkers_reset();
thread bar_humanshield_deaths();
self.goalradius = 5;
self setgoalpos( self.origin );
wait 4;
var_3 = common_scripts\utility::getstruct( var_0.script_linkto, "script_linkname" );
var_4 = maps\las_vegas_code::get_target_chain_array( var_3 );
for ( var_5 = 0; var_5 < var_4.size; var_5++ )
{
var_3 = var_4[var_5];
self.goalradius = var_3.radius;
self setgoalpos( var_3.origin );
self waittill( "goal" );
if ( !common_scripts\utility::flag( "humanshield_start" ) )
{
thread maps\_anim::anim_first_frame_solo( self, self.animation );
common_scripts\utility::flag_wait( "humanshield_start" );
self stopanimscripted();
}
}
}
bar_walkers_reset()
{
self endon( "death" );
level waittill( "stealth_event_notify" );
wait( randomfloatrange( 0.2, 0.5 ) );
self.ignoreall = 0;
maps\_utility::clear_run_anim();
maps\_utility::clear_deathanim();
maps\_utility::delaythread( 0.5, maps\_utility::clear_deathanim );
thread maps\las_vegas_code::waittill_dead_and_stop_anim( self, self.reactanim );
thread bar_walkers_boxes();
thread maps\_anim::anim_single_solo( self, self.reactanim );
common_scripts\utility::waitframe();
maps\_anim::anim_set_rate_single( self, self.reactanim, 2 );
wait( getanimlength( maps\_utility::getanim( self.reactanim ) ) / 2 );
self.box unlink();
self.box physicslaunchclient( self.origin + ( 0, 0, 2 ), ( 0, 0, -10 ) );
self.box notify( "phy_launched" );
self setgoalpos( self.origin );
self.favoriteenemy = level.hesh;
}
bar_walkers_boxes()
{
self endon( self.reactanim );
var_0 = self.box;
var_0 endon( "phy_launched" );
self waittill( "death" );
playfx( level._effect["bar_box_exp"], var_0.origin );
var_0 unlink();
var_0 physicslaunchclient( self.origin + ( 0, 0, 2 ), ( 0, 0, -10 ) );
}
bar_humanshield_deaths()
{
self endon( "death" );
level waittill( "keegan_humanshield_shooting_start" );
if ( isdefined( self.script_death ) )
{
wait( self.script_death );
playfxontag( level._effect["headshot_blood"], self, "j_head" );
maps\_utility::die();
}
}
kitchen()
{
main_init();
init_kitchen_carts();
thread kitchen_spawn_keegan();
maps\las_vegas_code::set_player_speed( "kitchen" );
maps\_utility::autosave_by_name( "kitchen" );
common_scripts\utility::flag_wait( "kitchen_hide_done" );
}
init_kitchen_carts()
{
var_0 = init_kitchen_cart( "kitchen_cart1" );
var_1 = common_scripts\utility::getstruct( "kitchen_enter", "script_noteworthy" );
var_1 maps\_anim::anim_first_frame_solo( var_0, "kitchen_stumble" );
var_0 = init_kitchen_cart( "kitchen_cart2" );
var_0 init_kitchen_cart_plates();
var_1 = common_scripts\utility::getstruct( "casino_kitchen_flashlight_scene", "targetname" );
var_1 maps\_anim::anim_first_frame_solo( var_0, "kitchen_hide_enter" );
}
init_kitchen_cart( var_0 )
{
var_1 = getentarray( var_0, "script_noteworthy" );
var_2 = undefined;
var_3 = undefined;
foreach ( var_5 in var_1 )
{
if ( var_5.classname == "script_model" )
{
var_2 = var_5;
continue;
}
var_3 = var_5;
}
var_2.animname = "cart";
var_2 maps\_utility::assign_animtree();
var_2.clip = var_3;
var_3 linkto( var_2 );
var_2.targetname = var_0;
return var_2;
}
init_kitchen_cart_plates()
{
var_0 = getentarray( "kitchen_cart2_plates", "script_noteworthy" );
foreach ( var_2 in var_0 )
var_2 delete();
var_4 = [ [ "a", "b", "c", "d" ], [ "d", "e" ] ];
var_4 = [ [ "tag_plates_level2_1", "small", -1 ], [ "tag_plates_level2_3", "large", 1.0 ], [ "tag_plates_level3_1", "small", -1 ], [ "tag_plates_level4_2", "small", -1 ], [ "tag_plates_level4_3", "large", 1.1 ], [ "tag_plates_level5_2", "small", -1 ], [ "tag_plates_level5_3", "large", -1 ], [ "tag_plates_level6_2", "small", -1 ], [ "tag_plates_level7_1", "large", -1 ], [ "tag_plates_level7_2", "large", 2.75 ] ];
var_0 = [];
foreach ( var_6 in var_4 )
{
var_2 = spawn( "script_model", self gettagorigin( var_6[0] ) );
if ( var_6[1] == "large" )
var_2 setmodel( "com_breakable_platestack_large" );
else
var_2 setmodel( "com_breakable_platestack_large" );
var_2 linkto( self, var_6[0] );
var_2.tagname = var_6[0];
var_2.falltime = var_6[2];
var_0[var_0.size] = var_2;
}
self.plates = var_0;
}
kitchen_enter_merrick( var_0 )
{
common_scripts\utility::flag_wait( "kitchen_doors_open" );
var_1 = common_scripts\utility::getstruct( "kitchen_enter", "script_noteworthy" );
var_1 maps\_anim::anim_reach_solo( self, "kitchen_stumble" );
var_2 = getent( "kitchen_cart1", "targetname" );
var_2.animname = "cart";
var_2 maps\_utility::assign_animtree();
level.merrick maps\_utility::delaythread( 1, maps\_utility::smart_dialogue, "vegas_mrk_aghdammitgrunt" );
level.merrick maps\_utility::delaythread( 4, maps\_utility::smart_dialogue, "vegas_mrk_sonofaaghcmonmerrick" );
var_3 = [ var_2, self ];
var_1 thread maps\_anim::anim_single( var_3, "kitchen_stumble" );
var_4 = getanimlength( maps\_utility::getanim( "kitchen_stumble" ) );
var_5 = 6.6;
wait( var_5 );
if ( !common_scripts\utility::flag( "player_in_kitchen" ) )
{
var_1 waittill( "kitchen_stumble" );
var_1 thread maps\_anim::anim_loop_solo( self, "kitchen_stumble_idle" );
common_scripts\utility::flag_wait( "player_in_kitchen" );
var_1 maps\las_vegas_code::struct_stopanimscripted();
var_1 maps\_anim::anim_single_solo( self, "kitchen_stumble_idle_exit" );
}
else
{
var_1 maps\las_vegas_code::struct_stopanimscripted();
maps\_utility::anim_stopanimscripted();
}
common_scripts\utility::flag_set( "kitchen_spawn_keegan" );
}
kitchen_hide_merrick( var_0 )
{
var_0 maps\_anim::anim_reach_solo( self, "kitchen_hide_enter" );
var_1 = getent( "kitchen_cart2", "targetname" );
var_0 maps\_anim::anim_first_frame_solo( var_1, "kitchen_hide_enter" );
foreach ( var_3 in var_1.plates )
var_3 thread kitchen_cart_plate_fall( var_1 );
common_scripts\utility::flag_set( "kitchen_hide_start" );
thread kitchen_hide_dialogue();
var_5 = [ level.merrick, level.hesh, var_1 ];
var_1.animating = 1;
var_1 thread player_in_cart_thread();
var_0 maps\_anim::anim_single( var_5, "kitchen_hide_enter" );
var_1.animating = 0;
var_5 = common_scripts\utility::array_remove( var_5, var_1 );
common_scripts\utility::array_thread( var_5, ::kitchen_spotted, var_0 );
if ( !common_scripts\utility::flag( "kitchen_stealth_alert" ) )
var_0 thread maps\_anim::anim_loop( var_5, "kitchen_hide_loop" );
common_scripts\utility::flag_wait( "kitchen_hide_everyone_up" );
if ( !common_scripts\utility::flag( "kitchen_stealth_alert" ) )
{
var_0 maps\las_vegas_code::struct_stopanimscripted();
var_0 maps\_anim::anim_single( var_5, "kitchen_hide_exit" );
}
level.hesh maps\_utility::disable_cqbwalk();
level.hesh maps\_utility::set_archetype( "creepwalk" );
}
player_in_cart_thread()
{
var_0 = 0;
var_1 = ( 7, -7, 0 );
while ( self.animating || var_0 )
{
wait 0.05;
if ( level.player istouching( self.clip ) )
{
var_0 = 1;
self.clip notsolid();
level.player pushplayervector( var_1 );
continue;
}
var_0 = 0;
self.clip solid();
level.player pushplayervector( ( 0, 0, 0 ) );
}
level.player pushplayervector( ( 0, 0, 0 ) );
}
kitchen_spotted( var_0 )
{
level endon( "kitchen_enemies_gone" );
common_scripts\utility::flag_wait( "kitchen_stealth_alert" );
common_scripts\utility::flag_wait( "kitchen_enemy_doors_open" );
var_0 maps\las_vegas_code::struct_stopanimscripted();
maps\_utility::anim_stopanimscripted();
var_0 maps\_anim::anim_single_solo( self, "kitchen_alert_exit" );
self.goalradius = 200;
self.ignoreme = 0;
self.ignoreall = 0;
self.ignoresuppression = 0;
var_0 = getnode( "kitchen_" + self.script_noteworthy + "_node", "targetname" );
self setgoalnode( var_0 );
}
kitchen_cart_plate_fall( var_0 )
{
if ( self.falltime == -1 )
return;
self endon( "death" );
wait( self.falltime );
thread maps\_utility::play_sound_on_entity( "scn_vegas_kitchen_dish_break" );
playfxontag( level._effect["com_platestack_large_tip1"], var_0, self.tagname );
self delete();
}
kitchen_hide_dialogue()
{
level.merrick thread maps\_utility::smart_dialogue( "vegas_mrk_ahshit" );
level.merrick maps\_utility::delaythread( 1.5, maps\_utility::smart_dialogue, "vegas_mrk_heavywoundedbreathing" );
level.hesh maps\_utility::delaythread( 3.5, maps\_utility::smart_dialogue, "vegas_hsh_keegan_3" );
level.hesh maps\_utility::delaythread( 5, maps\_utility::smart_dialogue, "vegas_hsh_wegottahidenow" );
level.keegan maps\_utility::delaythread( 6, maps\_utility::smart_dialogue, "vegas_kgn_shitgethimup" );
level.keegan maps\_utility::delaythread( 7, maps\_utility::smart_dialogue, "vegas_kgn_hideinherequick" );
wait 11;
if ( !common_scripts\utility::flag( "kitchen_hide_started" ) )
{
level.hesh thread maps\_utility::smart_dialogue( "vegas_hsh_logangetinhere" );
var_0 = [ "vegas_hsh_loganoverherequick", "vegas_hsh_logangetinhere", "vegas_hsh_inhere" ];
level.hesh maps\_utility::delaythread( 4, maps\las_vegas_code::nag_thread, var_0, [ "kitchen_player_hidden", "kitchen_stealth_alert", "kitchen_hide_started" ], 5, 7 );
}
common_scripts\utility::flag_wait( "kitchen_hide_everyone_up" );
level.hesh maps\_utility::smart_dialogue( "vegas_hsh_weregoodletsgo" );
}
kitchen_spawn_keegan()
{
common_scripts\utility::flag_wait( "kitchen_spawn_keegan" );
var_0 = common_scripts\utility::getstruct( "keegan_kitchen_spot", "targetname" );
maps\las_vegas_code::spawn_hero( "keegan", var_0 );
level.keegan.dontavoidplayer = 1;
level.keegan pushplayer( 1 );
level.keegan kitchen_hide_keegan();
var_1 = getnode( "keegan_hallway_node", "targetname" );
level.keegan thread maps\las_vegas_code::scripted_movement( var_1, 1 );
}
kitchen_hide_keegan()
{
common_scripts\utility::flag_wait( "player_in_kitchen" );
var_0 = common_scripts\utility::getstruct( "kitchen_hide", "script_noteworthy" );
var_1 = var_0 maps\las_vegas_code::makestruct();
var_1 maps\_anim::anim_reach_and_approach_node_solo( self, "kitchen_hide_enter", undefined, "Exposed", "stand" );
common_scripts\utility::flag_wait( "kitchen_hide_start" );
level thread kitchen_hide_radio_loop();
thread kitchen_hide_keegan_anim( var_1 );
wait 11;
common_scripts\utility::flag_wait( "kitchen_player_hidden" );
common_scripts\utility::flag_set( "kitchen_hide_started" );
level notify( "stop_keegan_hide_enter" );
var_1 maps\las_vegas_code::struct_stopanimscripted();
maps\_utility::anim_stopanimscripted();
maps\_utility::delaythread( 2, ::kitchen_spawn_enemies );
level thread kitchen_hide_enemy_dialogue();
level thread kitchen_hide_loop_dialogue();
var_1 maps\_anim::anim_single_solo( self, "kitchen_hide_wave_exit" );
maps\_utility::music_play( "mus_vegas_kitchen_suspense" );
var_1 thread maps\_anim::anim_loop_solo( self, "kitchen_hide_loop" );
self setgoalpos( ( -31244, -27300, 2120 ) );
kitchen_ambush_keegan( var_1 );
}
kitchen_hide_keegan_anim( var_0 )
{
level endon( "stop_keegan_hide_enter" );
var_0 maps\_anim::anim_single_solo( self, "kitchen_hide_enter" );
var_0 thread maps\_anim::anim_loop_solo( self, "kitchen_hide_wave_loop" );
}
kitchen_ambush_keegan( var_0 )
{
if ( !isdefined( level.kitchen_flashlight_enemy ) )
level waittill( "kitchen_flashlight_enemy" );
thread kitchen_ambush_keegan_handler( var_0 );
var_1 = undefined;
var_2 = [ self ];
if ( isdefined( level.kitchen_flashlight_enemy ) )
{
var_1 = level.kitchen_flashlight_enemy;
var_1.animname = "flashlight_guy";
var_1 maps\_utility::gun_remove();
var_2 = [ var_1, self ];
maps\_utility::delaythread( 10.75, common_scripts\utility::play_sound_in_space, "scn_vegas_stealthkill_flashlight", ( -31286, -27272, 2115 ) );
var_0 maps\_anim::anim_reach_solo( var_1, "kitchen_ambush_start" );
}
if ( !common_scripts\utility::flag( "kitchen_stealth_alert" ) )
{
var_1 thread maps\_utility::notify_delay( "stop_stealth_notify", 7.7 );
var_0 maps\las_vegas_code::struct_stopanimscripted();
var_0 = var_0 maps\las_vegas_code::makestruct();
maps\_utility::anim_stopanimscripted();
var_1 maps\_utility::anim_stopanimscripted();
var_1.stealth_radius_multiplier = 0.5;
level notify( "flashlight_start_wait" );
var_2 = [ var_1, self ];
self.kitchen_ambush_time = gettime();
maps\_utility::friendlyfire_warnings_off();
maps\_utility::delaythread( 7.7, ::flag_set_flagcheck, "doing_kitchen_ambush", "kitchen_stealth_alert" );
var_1 thread kitchen_flashlight_alert_radius();
level thread keegan_ambush_sounds( var_1 );
level.keegan.detach_gun_angles = ( 1.91891, 220.76, -83.3337 );
level.keegan.detach_gun_origin = ( -31228.4, -27310.3, 2112.88 );
var_0 maps\_anim::anim_single( var_2, "kitchen_ambush_start" );
maps\_utility::friendlyfire_warnings_on();
if ( maps\_utility::ent_flag( "doing_kitchen_ambush" ) )
var_0 thread maps\_anim::anim_loop( var_2, "kitchen_ambush_loop" );
}
common_scripts\utility::flag_wait_any( "kitchen_enemies_gone", "kitchen_stealth_alert" );
if ( maps\_utility::ent_flag( "doing_kitchen_ambush" ) )
{
var_0 maps\las_vegas_code::struct_stopanimscripted();
var_1.allowdeath = 1;
var_1.deathfunction = maps\las_vegas_code::death_wait;
var_1.dontavoidplayer = 1;
var_1 common_scripts\utility::delaycall( 1, ::kill );
if ( common_scripts\utility::flag( "kitchen_stealth_alert" ) )
thread keegan_ambush_end_early( var_0 );
var_0 maps\_anim::anim_single( var_2, "kitchen_ambush_end" );
level thread keegan_knife_off();
if ( common_scripts\utility::flag( "kitchen_stealth_alert" ) )
{
common_scripts\utility::flag_wait( "kitchen_enemies_gone" );
common_scripts\utility::flag_set( "kitchen_hide_everyone_up" );
}
}
common_scripts\utility::flag_wait( "kitchen_enemies_gone" );
common_scripts\utility::flag_set( "kitchen_hide_done" );
level.merrick.a.pose = "stand";
level.hesh.a.pose = "stand";
level.keegan.a.pose = "stand";
level.keegan maps\_utility::set_archetype( "creepwalk" );
}
keegan_knife_off()
{
wait 0.5;
level.keegan detach( "weapon_commando_knife_bloody", "tag_inhand" );
level.keegan.has_knife = undefined;
}
flag_set_flagcheck( var_0, var_1 )
{
if ( !common_scripts\utility::flag( var_1 ) )
maps\_utility::ent_flag_set( "doing_kitchen_ambush" );
}
keegan_ambush_sounds( var_0 )
{
wait 8.4;
if ( common_scripts\utility::flag( "kitchen_stealth_alert" ) )
return;
if ( !isdefined( var_0 ) || !isalive( var_0 ) )
return;
var_0 thread maps\_utility::play_sound_on_tag( "vegas_fs1_kitchen_stealthkill", "j_head" );
}
keegan_ambush_end_early( var_0 )
{
wait 4.5;
set_pose( "crouch" );
var_0 maps\las_vegas_code::struct_stopanimscripted();
maps\_utility::anim_stopanimscripted();
kitchen_keegan_cleanup();
}
kitchen_keegan_cleanup()
{
if ( isdefined( level.keegan.has_knife ) )
level.keegan detach( "weapon_commando_knife_bloody", "tag_inhand" );
if ( isdefined( level.keegan.dropped_gun ) )
maps\las_vegas_anim::attach_gun_custom( level.keegan );
}
kitchen_flashlight_alert_radius()
{
self endon( "death" );
wait 5;
self.stealth_radius_multiplier = 0.6;
}
kitchen_hide_loop_dialogue()
{
level endon( "kitchen_stealth_alert" );
if ( common_scripts\utility::flag( "kitchen_stealth_alert" ) )
return;
level.keegan maps\_utility::smart_dialogue( "vegas_kgn_downgetdown" );
wait 1;
level.merrick thread maps\_utility::smart_dialogue( "vegas_mrk_turntheradiodown" );
maps\_utility::delaythread( 1.5, maps\las_vegas_code::radio_volume, 0, 2 );
wait 2;
level.keegan maps\_utility::smart_dialogue( "vegas_kgn_shhhh" );
}
kitchen_hide_radio_loop()
{
wait 4;
var_0 = [ "vegas_fs5_teamfivegiveme", "vegas_saf2_almosttoteamtwos", "vegas_fs5_thecaptainwantsto", "vegas_saf2_wereonourway", "vegas_fs5_okwellifhe", "vegas_saf2_haveyoutriedteam", "vegas_fs5_donttellmehow", "vegas_saf2_sorryoneoneyourebreaking", "vegas_fs5_whenyougetback" ];
maps\las_vegas_code::array_play_enemy_radio( var_0 );
}
kitchen_hide_enemy_dialogue()
{
common_scripts\utility::flag_wait( "kitchen_enemy_doors_open" );
var_0 = [ "vegas_saf2_ihearditthe", "vegas_pmc3_checkyourcornersdont", "vegas_saf2_rodrigocheckinthere", "vegas_saf1_imonit" ];
foreach ( var_5, var_2 in var_0 )
{
if ( common_scripts\utility::flag( "kitchen_stealth_alert" ) )
break;
var_3 = [];
if ( isdefined( level.kitchen_flashlight_enemy ) )
var_3[var_3.size] = level.kitchen_flashlight_enemy;
var_4 = maps\_utility::get_closest_ai_exclude( level.player.origin, "axis", var_3 );
if ( isdefined( var_4 ) )
var_4 maps\_utility::smart_dialogue_generic( var_2 );
}
}
kitchen_ambush_keegan_handler( var_0 )
{
common_scripts\utility::flag_wait( "kitchen_stealth_alert" );
var_1 = -1;
if ( isdefined( self.kitchen_ambush_time ) )
var_1 = ( gettime() - self.kitchen_ambush_time ) * 0.001;
if ( var_1 < 7.1 )
{
set_pose( "crouch" );
common_scripts\utility::flag_wait( "kitchen_enemy_doors_open" );
wait 1;
var_0 maps\las_vegas_code::struct_stopanimscripted();
maps\_utility::anim_stopanimscripted();
kitchen_keegan_cleanup();
wait 0.2;
self.suppressionwait = 5;
self orientmode( "face point", level.merrick.origin );
var_2 = getnode( "kitchen_" + self.script_noteworthy + "_node", "targetname" );
self setgoalnode( var_2 );
self.og_suppressionthreshold = self.suppressionthreshold;
self.suppressionthreshold = 0.1;
self.ignoresuppression = 0;
self.goalradius = 200;
self.ignoreall = 0;
self.ignoreme = 0;
self.dontmelee = 1;
if ( isdefined( level.kitchen_flashlight_enemy ) && isalive( level.kitchen_flashlight_enemy ) )
level.kitchen_enemies[level.kitchen_enemies.size] = level.kitchen_flashlight_enemy;
}
else if ( var_1 < 7.7 )
{
maps\_utility::anim_stopanimscripted();
kitchen_keegan_cleanup();
}
else
{
maps\_utility::ent_flag_set( "doing_kitchen_ambush" );
return;
}
if ( isdefined( level.kitchen_flashlight_enemy ) && isalive( level.kitchen_flashlight_enemy ) )
{
level.kitchen_enemies[level.kitchen_enemies.size] = level.kitchen_flashlight_enemy;
level.kitchen_flashlight_enemy maps\_utility::anim_stopanimscripted();
level.kitchen_flashlight_enemy kitchen_attack_player();
}
common_scripts\utility::flag_wait( "kitchen_enemies_gone" );
thread maps\_utility::battlechatter_off( "allies" );
thread maps\_utility::battlechatter_off( "axis" );
foreach ( var_4 in level.heroes )
{
var_4.ignoreme = 1;
var_4.ignoreall = 1;
var_4 allowedstances( "stand", "crouch", "prone" );
var_4.forcesuppression = undefined;
if ( isdefined( var_4.og_suppressionthreshold ) )
var_4.suppressionthreshold = var_4.og_suppressionthreshold;
var_4.dontmelee = undefined;
var_4.dontavoidplayer = 0;
var_4 pushplayer( 0 );
}
self.kitchen_ambush_time = undefined;
common_scripts\utility::flag_set( "kitchen_hide_everyone_up" );
}
set_pose( var_0 )
{
animscripts\notetracks::setpose( var_0 );
}
kitchen_spawn_enemies()
{
maps\_utility::spawn_script_noteworthy( "kitchen_flashlight_enemy", 1 );
maps\_utility::array_spawn_targetname( "kitchen_enemy_spawners" );
thread kitchen_nade_door();
thread kitchen_spawn_reinforcements();
var_0 = gettime();
common_scripts\utility::flag_wait_or_timeout( "kitchen_stealth_alert", 14 );
if ( common_scripts\utility::flag( "kitchen_stealth_alert" ) )
{
maps\_utility::battlechatter_on( "axis" );
maps\_utility::battlechatter_on( "allies" );
maps\_utility::wait_for_buffer_time_to_pass( var_0, 7 );
}
maps\_utility::array_spawn_targetname( "kitchen_enemy_spawners" );
maps\_utility::delaythread( 0.1, ::kitchen_enemy_pass_count );
}
kitchen_spawn_reinforcements()
{
level endon( "kitchen_enemies_gone" );
common_scripts\utility::flag_wait( "kitchen_stealth_alert" );
common_scripts\utility::flag_wait( "kitchen_enemy_doors_open" );
foreach ( var_1 in level.kitchen_enemies )
var_1 kitchen_attack_player();
level.hesh maps\_utility::smart_dialogue( "vegas_hsh_loganno" );
}
postspawn_kitchen_enemy()
{
if ( !isdefined( level.kitchen_enemies ) )
level.kitchen_enemies = [];
level.kitchen_enemies[level.kitchen_enemies.size] = self;
if ( common_scripts\utility::flag( "kitchen_stealth_alert" ) )
{
kitchen_attack_player();
return;
}
self.disabledoorbehavior = 1;
self.doorflashchance = 1;
self.ignoreall = 1;
self.ignoreme = 1;
thread kitchen_hold_position();
thread kitchen_sight_check();
thread maps\las_vegas_code::waittill_stealth_notify( "kitchen_stealth_alert" );
maps\_utility::enable_cqbwalk();
self.movement_funcs["remove_from_array"] = ::kitchen_remove_check;
self.movement_funcs["delete_me"] = ::delete_self;
thread maps\las_vegas_code::scripted_movement( self );
self waittill( "stealth_event_notify" );
self notify( "stop_scripted_movement" );
}
kitchen_remove_check( var_0 )
{
self.removed = 1;
if ( !common_scripts\utility::flag( "kitchen_stealth_alert" ) )
thread kitchen_remove_thread();
}
kitchen_remove_thread()
{
self endon( "death" );
common_scripts\utility::flag_wait( "kitchen_enemies_gone" );
if ( common_scripts\utility::flag( "kitchen_stealth_alert" ) )
return;
self notify( "stop_sight_stealth_notify" );
self notify( "stop_stealth_notify" );
maps\_utility::disable_cqbwalk();
maps\_utility::enable_sprint();
self.disablebulletwhizbyreaction = 1;
self setcandamage( 0 );
self.ignoreall = 1;
}
kitchen_sight_check()
{
self endon( "death" );
common_scripts\utility::flag_wait( "kitchen_enemy_doors_open" );
if ( !common_scripts\utility::flag( "kitchen_stealth_alert" ) )
thread maps\las_vegas_code::sight_stealth_notify( "kitchen_stealth_alert", "kitchen_player_hidden" );
}
kitchen_hold_position()
{
level endon( "kitchen_enemy_doors_open" );
self endon( "death" );
common_scripts\utility::flag_wait( "kitchen_stealth_alert" );
if ( !common_scripts\utility::flag( "kitchen_enemy_doors_open" ) )
{
self notify( "stop_going_to_node" );
self notify( "stop_scripted_movement" );
var_0 = common_scripts\utility::getstruct( "kitchen_hold_struct", "targetname" );
self.goalradius = 100;
self setgoalpos( var_0.origin );
common_scripts\utility::flag_wait( "kitchen_enemy_doors_open" );
}
kitchen_attack_player();
}
kitchen_attack_player()
{
self notify( "stop_scripted_movement" );
self notify( "stop_going_to_node" );
self.goalradius = 500;
self setgoalpos( self.origin );
self setgoalentity( level.player );
self.ignoresuppression = 1;
self.ignoreall = 0;
self.ignoreme = 0;
self.doorflashchance = 1;
self.disabledoorbehavior = undefined;
}
kitchen_nade_door()
{
level endon( "kitchen_enemies_gone" );
var_0 = common_scripts\utility::getstruct( "kitchen_nade_struct", "targetname" );
var_1 = common_scripts\utility::getstruct( var_0.target, "targetname" );
common_scripts\utility::flag_wait( "kitchen_stealth_alert" );
var_2 = vectornormalize( var_1.origin - var_0.origin );
wait 4;
if ( common_scripts\utility::flag( "kitchen_enemy_doors_open" ) )
return;
var_3 = gettime();
var_4 = [];
for ( var_5 = 0; var_5 < 3; var_5++ )
{
if ( var_5 == 0 )
var_6 = 1000;
else
var_6 = randomfloatrange( 800, 900 );
var_4[var_4.size] = magicgrenademanual( "fraggrenade", var_0.origin, var_2 * var_6 );
wait( randomfloatrange( 0.5, 1 ) );
}
var_7 = ( gettime() - var_3 ) * 0.001;
maps\_utility::delaythread( 4 - var_7, common_scripts\utility::flag_set, "kitchen_enemy_doors_open" );
var_8 = getentarray( "casino_kitchen_doors02", "targetname" );
var_4[0] waittill( "death" );
maps\las_vegas_code::doors_open( var_8, 0.25, undefined, undefined, 0, 0.25 );
}
kitchen_enemy_remove( var_0 )
{
level.kitchen_enemies = common_scripts\utility::array_remove( level.kitchen_enemies, self );
}
delete_self( var_0 )
{
kitchen_enemy_remove();
self delete();
}
postspawn_kitchen_flashlight()
{
level.kitchen_flashlight_enemy = self;
level notify( "kitchen_flashlight_enemy", self );
maps\_utility::set_generic_run_anim( "active_patrolwalk_v1" );
self.ignoreall = 1;
self.ignoreme = 1;
self.stealth_radius_multiplier = 0.5;
thread kitchen_hold_position();
thread maps\las_vegas_code::waittill_stealth_notify( "kitchen_stealth_alert" );
var_0 = common_scripts\utility::getfx( "flashlight_spotlight" );
var_1 = spawn( "script_model", self.origin );
var_1 setmodel( "com_flashlight_on" );
var_1 linkto( self, "tag_inhand", ( 0, 0, 0 ), ( 0, 0, 0 ) );
self.flashlight = var_1;
playfxontag( var_0, var_1, "tag_light" );
level waittill( "unlink_flashlight" );
var_1 unlink();
var_1 setmodel( "com_flashlight_off" );
stopfxontag( var_0, var_1, "tag_light" );
}
postspawn_kitchen_reinforcement()
{
if ( !isdefined( level.kitchen_enemies ) )
level.kitchen_enemies = [];
level.kitchen_enemies[level.kitchen_enemies.size] = self;
self.doorflashchance = 1;
self.goalradius = 150;
self setgoalentity( level.player );
self.ignoresuppression = 1;
}
kitchen_enemy_pass_count()
{
for (;;)
{
var_0 = 0;
level.kitchen_enemies = common_scripts\utility::array_removeundefined( level.kitchen_enemies );
if ( level.kitchen_enemies.size < 4 )
{
if ( common_scripts\utility::flag( "kitchen_stealth_alert" ) )
{
foreach ( var_2 in level.kitchen_enemies )
{
var_2.goalradius = 100;
var_2 setgoalentity( level.player );
}
}
}
if ( common_scripts\utility::flag( "kitchen_stealth_alert" ) )
{
if ( level.kitchen_enemies.size == 0 )
break;
}
else
{
foreach ( var_5 in level.kitchen_enemies )
{
if ( isdefined( var_5.removed ) )
var_0++;
}
if ( var_0 == level.kitchen_enemies.size )
break;
}
wait 0.05;
}
common_scripts\utility::flag_set( "kitchen_enemies_gone" );
}
atrium()
{
maps\las_vegas_code::radio_volume( 1, 2 );
common_scripts\utility::flag_wait( "player_in_hallway" );
common_scripts\utility::array_thread( level.heroes, maps\_utility::set_ignoreall, 1 );
thread maps\las_vegas_code::random_radio_chatter();
thread atrium_dialogue();
thread atrium_thread();
thread atrium_runners();
thread atrium_player_shoots();
thread atrium_rorke_pa();
thread maps\_utility::autosave_by_name( "atrium" );
maps\las_vegas_code::set_player_speed( "atrium" );
level.keegan maps\_utility::enable_cqbwalk();
level.hesh maps\_utility::enable_cqbwalk();
wait 0.1;
var_0 = getent( "atrium_volume", "targetname" );
var_0 maps\_utility::waittill_volume_dead_or_dying();
common_scripts\utility::flag_set( "shops_area_clear" );
common_scripts\utility::flag_set( "shops_move_in" );
if ( !common_scripts\utility::flag( "shops_combat_start" ) )
{
level.hesh maps\_utility::smart_dialogue( "vegas_hsh_oktheyregone" );
wait 1;
}
else
{
foreach ( var_2 in level.heroes )
{
var_2 maps\_utility::ent_flag_clear( "scripted_movement_pause" );
var_2 maps\_utility::disable_ai_color();
}
}
common_scripts\utility::flag_wait( "headed_to_casino_floor" );
}
atrium_thread()
{
common_scripts\utility::flag_wait( "shops_combat_start" );
foreach ( var_1 in level.heroes )
{
var_1 maps\_utility::ent_flag_set( "scripted_movement_pause" );
var_1.ignoreall = 0;
var_1.ignoreme = 0;
var_1 maps\_utility::set_force_color( "g" );
var_1 maps\_utility::enable_ai_color();
}
maps\_utility::activate_trigger_with_targetname( "color_atrium" );
level.hesh maps\_utility::smart_dialogue( "vegas_hsh_dammitloganwhatthe" );
common_scripts\utility::flag_set( "shops_move_in" );
wait 1;
level.merrick maps\_utility::smart_dialogue( "vegas_mrk_gohot" );
}
atrium_dialogue()
{
common_scripts\utility::flag_wait( "player_in_hallway" );
var_0 = [ "vegas_saf2_oneonewevegota", "vegas_fs5_whatisitnow", "vegas_saf2_theyrekiabothteams", "vegas_fs5_comeagainoneoneyou", "vegas_saf2_thatscorrectweneed" ];
level thread maps\las_vegas_code::array_play_enemy_radio( var_0 );
wait 1.5;
level.merrick maps\_utility::smart_dialogue( "vegas_mrk_quietnobodymove" );
}
atrium_rorke_pa()
{
common_scripts\utility::flag_wait( "player_in_hallway" );
wait 2;
maps\las_vegas_code::pa_queue( "vegas_rke_attentioneveryone", "shops_combat_start" );
wait 1;
maps\las_vegas_code::pa_queue( "vegas_rke_somefriendsofmine", "shops_combat_start" );
maps\las_vegas_code::pa_queue( "vegas_rke_returnthemtome", "shops_combat_start" );
wait 2;
maps\las_vegas_code::pa_queue( "vegas_rke_merrickheshadamifyoure", "shops_combat_start" );
wait 1;
maps\las_vegas_code::pa_queue( "vegas_rke_goodluck", "shops_combat_start" );
wait 1;
level.merrick thread maps\_utility::smart_dialogue( "vegas_mrk_thanksfortheshoutout" );
}
atrium_player_shoots()
{
level endon( "cleared_atrium_no_fight" );
level endon( "headed_to_casino_floor" );
level endon( "shops_area_clear" );
common_scripts\utility::flag_wait( "atrium_stealth_alert" );
common_scripts\utility::flag_set( "shops_combat_start" );
var_0 = getaiarray( "axis" );
foreach ( var_2 in var_0 )
{
if ( !isalive( var_2 ) )
continue;
if ( var_2 maps\_utility::doinglongdeath() )
continue;
if ( isdefined( var_2.script_noteworthy ) && var_2.script_noteworthy == "atrium_escalator_enemies" )
{
var_2.pathrandompercent = 0;
continue;
}
var_2.ignoreme = 0;
var_2.ignoreall = 0;
var_2.goalradius = 1000;
var_2 notify( "stop_going_to_node" );
var_2 setgoalpos( var_2.origin );
}
maps\_utility::array_spawn_targetname( "atrium_balcony_reinforcements" );
wait 2;
var_0 = getaiarray( "axis" );
foreach ( var_2 in var_0 )
{
if ( !isdefined( var_2 ) )
continue;
if ( isdefined( var_2.rappeller ) )
continue;
if ( isdefined( var_2.script_noteworthy ) && var_2.script_noteworthy == "atrium_escalator_enemies" )
continue;
if ( isdefined( var_2.rappeller ) )
continue;
if ( !isalive( var_2 ) )
continue;
if ( var_2 maps\_utility::doinglongdeath() )
continue;
wait( randomfloatrange( 1, 3 ) );
var_5 = common_scripts\utility::getstructarray( "balcony_rope", "script_noteworthy" );
var_5 = sortbydistance( var_5, var_2.origin );
var_2 thread actor_rappel( "rail", var_5[0] );
}
}
atrium_runners()
{
maps\_utility::array_spawn_targetname( "atrium_escalator_enemies", 1 );
wait 3;
maps\_utility::array_spawn_targetname( "atrium_balcony_enemies", 1 );
}
postspawn_atrium_enemy()
{
self endon( "stop_going_to_node" );
self.ignoreall = 1;
self.ignoreme = 1;
if ( isdefined( self.script_sound ) )
{
self playloopsound( self.script_sound );
thread atrium_sound_guy_death();
thread atrium_sound_guy();
}
thread maps\las_vegas_code::waittill_stealth_notify( "atrium_stealth_alert", 0 );
self waittill( "reached_path_end" );
self stoploopsound();
self delete();
}
atrium_sound_guy_death()
{
self endon( "entitydeleted" );
self waittill( "death" );
self stoploopsound();
}
atrium_sound_guy()
{
self endon( "death" );
common_scripts\utility::flag_wait( "shops_combat_start" );
self stoploopsound();
}
postspawn_balcony_reinforcement()
{
wait( randomfloatrange( 1, 3 ) );
actor_rappel( "rail" );
}
actor_rappel( var_0, var_1 )
{
self endon( "death" );
if ( isdefined( self.rappeller ) )
return;
self.rappeller = 1;
self.animname = "rappeler";
if ( !isdefined( var_1 ) )
var_1 = maps\_utility::getent_or_struct_or_node( self.script_linkto, "script_linkname" );
if ( var_0 == "rail" )
{
if ( !isdefined( var_1.rope ) )
var_1.rope = maps\_utility::spawn_anim_model( "rappel_rope_rail", var_1.origin );
self.goalradius = 16;
var_2 = var_1.origin + anglestoforward( var_1.angles ) * 16;
var_2 = ( var_2[0], var_2[1], self.origin[2] );
self setgoalpos( var_2 );
self waittill( "goal" );
while ( isdefined( var_1.inuse ) && var_1.inuse )
wait 0.05;
var_3[0] = self;
var_3[1] = var_1.rope;
thread actor_rappel_death( var_1 );
var_1.inuse = 1;
if ( !maps\_utility::doinglongdeath() )
{
var_1 thread maps\_anim::anim_single( var_3, "temp_rappel_over_rail" );
common_scripts\utility::waitframe();
var_1 maps\_anim::anim_set_rate( var_3, "temp_rappel_over_rail", 0.8 );
wait 2.6;
foreach ( var_5 in var_3 )
{
var_1 maps\las_vegas_code::struct_stopanimscripted();
var_5 maps\_utility::anim_stopanimscripted();
}
var_1 thread maps\_anim::anim_last_frame_solo( var_1.rope, "temp_rappel_over_rail" );
self notify( "rappel_done" );
var_1.inuse = 0;
self.a.nodeath = 0;
}
}
self.goalradius = 1000;
self setgoalpos( self.origin );
self.ignoreme = 0;
}
actor_rappel_death( var_0 )
{
self endon( "rappel_done" );
self.allowdeath = 1;
common_scripts\utility::waittill_any( "damage" );
var_0.inuse = 0;
if ( !isdefined( self ) )
return;
maps\_utility::anim_stopanimscripted();
self.skipdeathanim = 1;
self kill();
}
atrium_room_destruction()
{
wait( randomfloatrange( 2, 4 ) );
var_0 = getent( "atrium_car_fall", "targetname" );
var_1 = maps\_utility::getent_or_struct_or_node( var_0.target, "targetname" );
var_2 = maps\las_vegas_code::get_target_chain_array( var_1 );
foreach ( var_4 in var_2 )
{
var_0 moveto( var_4.origin, 0.4 );
var_0 rotateto( var_4.angles, 0.4 );
wait 0.4;
}
var_6 = getglass( "atrium_car_fall_glass" );
destroyglass( var_6, ( -1, 0, 0 ) );
}
to_casino_floor( var_0 )
{
if ( !common_scripts\utility::flag( "shops_combat_start" ) )
common_scripts\utility::flag_wait_or_timeout( "player_atrium_halfway", randomfloatrange( 3, 5 ) );
else
self.goalradius = 200;
common_scripts\utility::flag_set( "player_atrium_halfway" );
var_1 = getnodearray( "floor_start_path", "targetname" );
var_0 = maps\las_vegas_code::array_get_noteworthy( var_1, self.script_noteworthy );
if ( !common_scripts\utility::flag( "shops_combat_start" ) )
wait( randomfloat( 2 ) );
thread maps\las_vegas_code::scripted_movement( var_0 );
}
casino_floor()
{
init_casino_door();
init_gate();
level.merrick maps\las_vegas_code::set_not_wounded();
common_scripts\utility::array_thread( level.heroes, maps\_utility::enable_cqbwalk );
maps\las_vegas_code::set_player_speed( "floor" );
common_scripts\utility::array_thread( level.heroes, maps\_utility::set_ignoreall, 1 );
maps\_utility::autosave_by_name( "casino_floor" );
common_scripts\utility::flag_wait( "casino_floor_done" );
level notify( "stop_enemy_radio_chatter" );
maps\_utility::music_stop( 20 );
}
init_casino_door()
{
var_0 = getent( "casino_door", "targetname" );
var_1 = getentarray( var_0.target, "targetname" );
common_scripts\utility::array_call( var_1, ::linkto, var_0 );
}
open_casino_door_anim( var_0 )
{
self setgoalnode( var_0 );
common_scripts\utility::flag_wait( "headed_to_casino_floor" );
var_1 = common_scripts\utility::getstruct( var_0.target, "targetname" );
var_2 = getanimlength( maps\_utility::getanim( "open_casino_door" ) );
var_1 maps\_anim::anim_reach_solo( self, "open_casino_door" );
var_1 thread maps\_anim::anim_single_solo( self, "open_casino_door" );
var_3 = getent( "casino_door", "targetname" );
var_3 maps\_utility::delaythread( 1.25, ::open_casino_door );
level maps\_utility::delaythread( 1, common_scripts\utility::flag_set, "casino_door_opened" );
}
open_casino_door()
{
self playsound( "scn_vegas_glass_door_open" );
self rotateyaw( 93, 1.5 );
wait 3;
self connectpaths();
}
casino_ambush_keegan( var_0 )
{
self.dontavoidplayer = 1;
self pushplayer( 1 );
level thread casino_floor_ambush();
}
casino_floor_ambush()
{
common_scripts\utility::flag_wait( "start_casino_ambush" );
thread maps\_utility::array_spawn_targetname( "floor_ambush_spawners" );
thread casino_ambush_dialogue();
thread casino_floor_end();
thread casino_battle();
thread floor_restore_heroes();
thread floor_colors();
}
floor_restore_heroes()
{
common_scripts\utility::flag_wait( "floor_battle_start" );
foreach ( var_1 in level.heroes )
{
var_1.ignoreall = 0;
var_1.ignoreme = 0;
var_1 maps\_utility::enable_arrivals();
var_1 maps\_utility::enable_exits();
var_1.dontevershoot = undefined;
var_1 clearentitytarget();
var_1 allowedstances( "stand", "crouch", "prone" );
var_1.dontavoidplayer = 0;
var_1 pushplayer( 0 );
}
}
floor_colors()
{
var_0 = getent( "start_casino_floor_colors", "targetname" );
var_0 waittill( "trigger" );
if ( !common_scripts\utility::flag( "floor_battle_start" ) )
{
common_scripts\utility::flag_wait( "floor_battle_start" );
wait 2;
}
level.hesh maps\_utility::set_force_color( "r" );
level.keegan maps\_utility::set_force_color( "b" );
level.merrick maps\_utility::set_force_color( "g" );
}
casino_battle()
{
level.casino_floor = spawnstruct();
level.casino_floor.enemy_volume = getent( "floor_volume_start", "targetname" );
level.casino_floor.enemies = [];
var_0 = getentarray( "floor_volume_triggers", "targetname" );
common_scripts\utility::array_thread( var_0, maps\las_vegas_code::enemy_volume_trigger_thread, level.casino_floor, "casino_floor_done" );
thread casino_battle_think();
common_scripts\utility::flag_wait( "floor_battle_start" );
thread maps\las_vegas_code::enemy_radio_battle_loop();
maps\_utility::battlechatter_on( "axis" );
maps\_utility::battlechatter_on( "allies" );
thread floor_go_colors();
thread floor_reinforcements();
if ( level.gameskill > 1 )
maps\_utility::delaythread( 2.5, maps\_utility::array_spawn_targetname, "floor_snipers" );
maps\_utility::delaythread( 2, maps\_utility::music_play, "mus_vegas_casino_battle" );
maps\_utility::delaythread( 30, maps\_spawner::killspawner, 300 );
}
floor_go_colors()
{
var_0 = getent( "start_casino_floor_colors", "targetname" );
var_0 endon( "trigger" );
wait 5;
var_1 = getent( "floor_volume_start", "targetname" );
for (;;)
{
wait 0.1;
var_2 = var_1 maps\_utility::get_ai_touching_volume( "axis" );
if ( var_2.size < 6 )
break;
}
maps\_utility::activate_trigger_with_targetname( "start_casino_floor_colors" );
}
floor_reinforcements()
{
var_0 = 4;
while ( !common_scripts\utility::flag( "casino_floor_done" ) )
{
wait 0.2;
level.casino_floor.enemies = common_scripts\utility::array_removeundefined( level.casino_floor.enemies );
if ( level.casino_floor.enemies.size >= var_0 )
continue;
var_1 = getentarray( "floor_reinforcements", "targetname" );
if ( var_1.size == 0 )
return;
var_2 = var_1[randomint( var_1.size )];
var_2 maps\_utility::spawn_ai();
}
}
casino_battle_think()
{
while ( !common_scripts\utility::flag( "casino_floor_done" ) )
{
wait 0.1;
maps\las_vegas_code::update_enemy_volume( level.casino_floor );
}
}
casino_ambush_dialogue()
{
level endon( "floor_battle_start" );
thread floor_keegan_shoot();
level.hesh.bulletsinclip = 1;
level.keegan.old_primaryweapon = level.keegan.primaryweapon;
level.hesh maps\_utility::smart_dialogue( "vegas_hsh_holduphere" );
level.keegan maps\_utility::forceuseweapon( level.keegan.secondaryweapon, "primary" );
wait 1;
level.merrick.bulletsinclip = 1;
level.merrick maps\_utility::smart_dialogue( "vegas_mrk_wewontbeable" );
level.hesh maps\_utility::smart_dialogue( "vegas_hsh_waituntiltheyget" );
wait 1;
maps\_utility::notify_delay( "keegan_do_it", 0.5 );
level.hesh maps\_utility::smart_dialogue( "vegas_hsh_alrightkeegankickit" );
}
floor_keegan_shoot()
{
level endon( "floor_battle_start" );
if ( common_scripts\utility::flag( "floor_battle_start" ) )
return;
level waittill( "keegan_do_it" );
var_0 = getaiarray( "axis" );
foreach ( var_2 in var_0 )
var_2.ignoreme = 0;
level.keegan.ignoreall = 0;
level.keegan waittill( "shooting" );
common_scripts\utility::flag_set( "floor_battle_start" );
}
postspawn_floor_ambush()
{
self endon( "death" );
maps\_utility::enable_cqbwalk();
self.ignoreall = 1;
self.ignoreme = 1;
self.script_forcegoal = 1;
self.stealth_radius_multiplier = 4.25;
thread ambush_handler();
thread maps\las_vegas_code::waittill_stealth_notify( "floor_battle_start" );
level waittill( "stealth_event_notify" );
if ( !common_scripts\utility::flag( "floor_battle_start" ) )
common_scripts\utility::flag_set( "floor_battle_start" );
self.ignoreall = 0;
self.ignoreme = 0;
maps\_utility::clear_archetype();
maps\_utility::disable_cqbwalk();
wait( randomfloatrange( 0.2, 5 ) );
add_casino_enemy();
}
ambush_handler()
{
level endon( "stealth_event_notify" );
var_0 = common_scripts\utility::getstruct( self.target, "targetname" );
var_0 waittill( "trigger" );
maps\_utility::disable_cqbwalk();
maps\_utility::set_archetype( "creepwalk" );
}
postspawn_floor_enemy()
{
self endon( "death" );
add_casino_enemy();
}
add_casino_enemy()
{
level.casino_floor.enemies[level.casino_floor.enemies.size] = self;
maps\las_vegas_code::set_goal_volume( level.casino_floor.enemy_volume );
}
postspawn_floor_sniper()
{
self endon( "death" );
self.ignoresuppression = 1;
self.disablelongdeath = 1;
var_0 = self.origin;
self.accuracy = 0.3;
if ( isdefined( self.script_noteworthy ) )
{
if ( self.script_noteworthy == "left_side_first" )
self allowedstances( "crouch" );
else
self allowedstances( "stand" );
}
self laserforceon();
common_scripts\utility::flag_wait( "player_halfway_casino_floor" );
self.goalradius = 50;
self setgoalpos( var_0 );
self waittill( "goal" );
self delete();
}
send_friends_down_first_stairs_guys_alive_setflag()
{
var_0 = getaiarray( "axis" );
maps\_utility::waittill_dead_or_dying( var_0, 3, 35 );
common_scripts\utility::flag_set( "player_on_stairs_casino_floor" );
}
last_snipers_think()
{
self endon( "death" );
self allowedstances( "stand" );
if ( isdefined( self.script_noteworthy ) )
{
maps\_utility::forceuseweapon( "l115a3+scopel115a3_sp", "primary" );
self.dontdropweapon = 1;
self.disablelongdeath = 1;
self laserforceon();
}
}
casino_floor_end()
{
common_scripts\utility::flag_wait( "player_escalator_casino_floor" );
var_0 = getent( "floor_end_volume", "targetname" );
var_0 maps\_utility::waittill_volume_dead_or_dying();
common_scripts\utility::flag_set( "casino_floor_done" );
}
postspawn_floor_gate()
{
self endon( "death" );
var_0 = undefined;
if ( isdefined( self.script_parameters ) && self.script_parameters == "last_guy" )
{
self.ignoreall = 1;
self.dontavoidplayer = 1;
self setcandamage( 0 );
self waittill( "goal" );
var_1 = getent( "floor_gate", "targetname" );
var_1 moveto( var_1.origin + ( 0, 0, -40 ), 0.5, 0.4, 0.1 );
self.ignoreall = 0;
self.dontavoidplayer = 0;
self setcandamage( 1 );
}
add_casino_enemy();
}
hotel()
{
init_gate();
maps\las_vegas_code::set_player_speed( "hotel" );
maps\_utility::delaythread( 2, ::radio_conversation );
thread open_gate_dialogue();
var_0 = getnode( "keegan_floor_end", "targetname" );
level.keegan thread maps\las_vegas_code::scripted_movement( var_0, 1 );
var_0 = getnode( "merrick_floor_end", "targetname" );
level.merrick thread maps\las_vegas_code::scripted_movement( var_0, 1 );
var_0 = getnode( "hesh_floor_end", "targetname" );
level.hesh thread maps\las_vegas_code::scripted_movement( var_0, 1 );
maps\_utility::autosave_by_name( "hotel" );
thread escalator_birds();
thread hotel_hallway_dialogue();
common_scripts\utility::flag_wait( "player_at_junction" );
}
radio_conversation()
{
level endon( "stop_radio_conversation" );
var_0 = [ "conversation_1", "conversation_2", "conversation_3" ];
foreach ( var_3, var_2 in var_0 )
maps\las_vegas_code::enemy_radio_chatter( var_2 );
}
init_gate()
{
var_0 = getent( "floor_gate", "targetname" );
if ( isdefined( var_0.init ) )
return;
var_0.animname = "gate";
var_0 maps\_anim::setanimtree();
var_0.init = 1;
var_1 = common_scripts\utility::getstruct( "open_gate", "script_noteworthy" );
var_2 = var_1 maps\las_vegas_code::makestruct();
var_2.origin = var_2.origin + ( 0, 0, 40 );
var_2 maps\_anim::anim_first_frame_solo( var_0, "gate_lift" );
}
open_gate_keegan( var_0 )
{
var_0 maps\_anim::anim_reach_solo( level.keegan, "gate_lift" );
level maps\_utility::delaythread( 3.5, common_scripts\utility::flag_set, "merrick_under_gate" );
level maps\_utility::delaythread( 5, common_scripts\utility::flag_set, "hesh_under_gate" );
level.keegan maps\_utility::delaythread( 3, maps\_utility::smart_dialogue, "vegas_kgn_effortsoundsoflifting" );
var_1 = getent( "floor_gate", "targetname" );
var_1.animname = "gate";
var_1 maps\_anim::setanimtree();
var_2 = getent( "gate_playerclip", "targetname" );
var_2.og_pos = var_2.origin;
var_2 common_scripts\utility::delaycall( 3.6, ::moveto, var_2.origin + ( 0, 0, 51 ), 2 );
var_3 = [ level.keegan, var_1 ];
var_0 maps\_anim::anim_single( var_3, "gate_lift" );
common_scripts\utility::flag_set( "player_under_gate_ready" );
var_0 thread maps\_anim::anim_loop( var_3, "gate_idle" );
thread player_under_gate();
common_scripts\utility::flag_wait( "player_under_gate" );
foreach ( var_5 in level.heroes )
{
var_5 maps\_utility::enable_arrivals();
var_5 maps\_utility::enable_exits();
}
var_2.origin = var_2.og_pos;
var_0 maps\las_vegas_code::struct_stopanimscripted();
var_0 thread maps\_anim::anim_single( var_3, "under_gate" );
}
open_gate_dialogue()
{
level.hesh thread maps\_utility::smart_dialogue( "vegas_hsh_keepusmovinkeegan" );
wait 3;
level.keegan thread maps\_utility::smart_dialogue( "vegas_kgn_throughhere" );
common_scripts\utility::flag_wait( "player_under_gate_ready" );
level.hesh thread maps\_utility::smart_dialogue( "vegas_hsh_waitwheresriley" );
wait 3;
level.merrick thread maps\_utility::smart_dialogue( "vegas_mrk_itgotchaoticpretty" );
}
hotel_hallway_dialogue()
{
common_scripts\utility::flag_wait( "player_exiting_escalators" );
level.merrick thread maps\_utility::smart_dialogue( "vegas_mrk_exitstotheleft" );
wait 1;
level.hesh thread maps\_utility::smart_dialogue( "vegas_hsh_goinleft" );
}
player_under_gate()
{
var_0 = getent( "through_gate_volume", "targetname" );
var_1 = [ level.hesh, level.merrick, level.player ];
for (;;)
{
var_2 = 0;
foreach ( var_4 in var_1 )
{
if ( var_4 istouching( var_0 ) )
var_2++;
}
if ( var_2 == var_1.size )
break;
wait 0.05;
}
common_scripts\utility::flag_set( "player_under_gate" );
common_scripts\utility::flag_set( "floor_gate_done" );
}
escalator_birds()
{
var_0 = [];
var_1 = getentarray( "casino_er_interactive_birds", "targetname" );
foreach ( var_3 in var_1 )
var_0[var_0.size] = var_3 maps\interactive_models\_birds::birds_savetostruct();
common_scripts\utility::flag_wait( "player_in_escalators" );
wait( randomfloatrange( 0.2, 1 ) );
foreach ( var_6 in var_0 )
var_6 maps\interactive_models\_birds::birds_loadfromstruct();
var_8 = getentarray( "casion_er_pigeons_trigs", "script_noteworthy" );
var_8 = common_scripts\utility::array_randomize( var_8 );
var_8[0] notify( "trigger" );
}
casino_hotel_runners( var_0 )
{
wait( randomfloatrange( var_0[0], var_0[1] ) );
var_1 = common_scripts\utility::getstruct( self.target, "targetname" );
var_2 = maps\_utility::spawn_ai( 1 );
if ( !isdefined( var_2 ) )
return;
var_2 maps\_utility::disable_arrivals();
var_2 maps\_utility::disable_exits();
var_2 maps\las_vegas_code::ignore_everything();
var_2 thread maps\las_vegas_code::set_goal_any( var_1, 1 );
}
hotel_chase()
{
maps\las_vegas_code::set_player_speed( "chase", 2 );
maps\_utility::autosave_by_name( "hotel_chase" );
common_scripts\utility::flag_wait( "door_react_count" );
common_scripts\utility::flag_set( "disable_autosaves" );
common_scripts\utility::flag_wait( "chase_started" );
common_scripts\utility::array_thread( level.heroes, maps\_utility::disable_cqbwalk );
casino_jumpout_sequence();
}
react_doors()
{
level notify( "stop_radio_conversation" );
thread maps\las_vegas_code::enemy_radio_battle_loop();
forever_spawn_targetname( "chase_enemies", "FLAG_player_start_slide" );
common_scripts\utility::flag_set( "chase_started" );
var_0 = getentarray( "white_doors", "targetname" );
var_1 = undefined;
foreach ( var_3 in var_0 )
{
var_4 = getentarray( var_3.target, "targetname" );
common_scripts\utility::array_call( var_4, ::linkto, var_3 );
}
level thread nade_room();
thread maps\las_vegas_code::doors_open( var_0, 1.4, "double_door_wood_creeky", 110, 0, 0.7 );
wait 1.9;
maps\_utility::music_play( "mus_vegas_hallway_chase" );
wait 8;
}
hallway_timed_grenades()
{
wait 1;
thread maps\las_vegas_code::launch_gas_by_targetname( "hallway_nade_structs" );
add_gas_struct( "chase_enemy_gas1", "FLAG_player_start_slide" );
wait 2;
thread maps\las_vegas_code::launch_gas_by_targetname( "hallway_nade_structs01" );
add_gas_struct( "chase_enemy_gas2", "FLAG_player_start_slide" );
wait 3;
thread maps\las_vegas_code::launch_gas_by_targetname( "hallway_nade_structs02" );
add_gas_struct( "chase_enemy_gas3", "FLAG_player_start_slide" );
common_scripts\utility::flag_wait( "player_in_hotel_room" );
}
add_gas_struct( var_0, var_1 )
{
var_2 = common_scripts\utility::getstruct( var_0, "targetname" );
var_2.end = common_scripts\utility::getstruct( var_2.target, "targetname" );
var_3 = 0;
if ( !isdefined( level.gas_handler ) )
{
level.gas_handler = spawnstruct();
level.gas_handler.structs = [];
var_3 = 1;
}
var_2.normal = vectornormalize( var_2.end.origin - var_2.origin );
level.gas_handler.structs[level.gas_handler.structs.size] = var_2;
if ( var_3 )
level thread gas_struct_think( var_1 );
}
gas_struct_think( var_0 )
{
var_1 = 50;
var_2 = 30;
var_3 = 0;
while ( !common_scripts\utility::flag( var_0 ) )
{
var_4 = 0;
foreach ( var_6 in level.gas_handler.structs )
{
var_7 = vectornormalize( level.player.origin - var_6.end.origin );
var_8 = vectordot( var_7, var_6.normal );
if ( var_8 < 0 )
{
var_9 = pointonsegmentnearesttopoint( var_6.origin, var_6.end.origin, level.player.origin );
if ( distancesquared( var_9, level.player.origin ) > squared( var_6.radius ) )
continue;
}
var_10 = maps\_utility::get_progress( var_6.origin, var_6.end.origin, level.player.origin );
if ( var_10 > var_4 )
var_4 = var_10;
}
var_12 = int( var_4 * 100 );
if ( var_4 > 0 )
level.player dodamage( var_12 / level.player.damagemultiplier, level.player.origin + ( 0, 0, 60 ) );
level.player maps\_utility::player_speed_percent( 100 - var_12 );
var_13 = var_2 * var_4;
if ( var_13 != var_3 )
{
var_3 = var_13;
setblur( var_13, 5 );
}
wait 0.1;
}
level.player maps\_utility::player_speed_percent( 100 );
}
door_react_merrick( var_0 )
{
maps\_utility::ent_flag_init( "door_react_done" );
var_1 = var_0 maps\las_vegas_code::makestruct();
var_1.angles = ( 0, 0, 0 );
anim_reach_goalnode( var_0 );
maps\_utility::flag_count_decrement( "door_react_count" );
common_scripts\utility::flag_wait( "door_react_count" );
common_scripts\utility::flag_wait( "player_at_junction" );
level.merrick maps\_utility::delaythread( 2, maps\_utility::smart_dialogue, "vegas_mrk_backitupback" );
maps\_utility::delaythread( 1, ::react_doors );
level thread hallway_timed_grenades();
var_1 = var_0 maps\las_vegas_code::makestruct();
var_1.angles = ( 0, 90, 0 );
thread temp_delayed_run();
var_1 maps\_anim::anim_single_solo( self, "door_react" );
common_scripts\utility::flag_set( "door_react_done" );
maps\_utility::ent_flag_set( "door_react_done" );
}
door_react_hesh( var_0 )
{
maps\_utility::ent_flag_init( "door_react_done" );
var_1 = var_0 maps\las_vegas_code::makestruct();
var_1.angles = ( 0, 0, 0 );
anim_reach_goalnode( var_0 );
maps\_utility::flag_count_decrement( "door_react_count" );
common_scripts\utility::flag_wait( "door_react_count" );
common_scripts\utility::flag_wait( "player_at_junction" );
var_1 = var_0 maps\las_vegas_code::makestruct();
var_1.angles = ( 0, -90, 0 );
thread temp_delayed_run();
var_1 maps\_anim::anim_single_solo( self, "door_react" );
maps\_utility::ent_flag_set( "door_react_done" );
}
door_react_keegan( var_0 )
{
maps\_utility::ent_flag_init( "door_react_done" );
var_1 = var_0 maps\las_vegas_code::makestruct();
var_1.origin = var_1.origin + ( -5, 0, 0 );
var_1.angles = ( 0, 0, 0 );
anim_reach_goalnode( var_0 );
maps\_utility::flag_count_decrement( "door_react_count" );
common_scripts\utility::flag_wait( "door_react_count" );
common_scripts\utility::flag_wait( "player_at_junction" );
thread temp_delayed_run();
var_0 maps\_anim::anim_single_solo( self, "door_react" );
maps\_utility::ent_flag_set( "door_react_done" );
}
delayed_goal_fix_animation_issues( var_0, var_1 )
{
wait 0.2;
var_2 = getstartorigin( var_0.origin, var_0.angles, level.scr_anim[self.animname][var_1] );
self setgoalpos( var_2 );
}
anim_reach_goalnode( var_0 )
{
var_1 = self.goalradius;
self.goalradius = 4;
self setgoalnode( var_0 );
self waittill( "goal" );
self.goalradius = var_1;
}
temp_delayed_run()
{
wait 3;
self.a.movement = "run";
}
forever_spawn_targetname( var_0, var_1 )
{
var_2 = getentarray( var_0, "targetname" );
foreach ( var_4 in var_2 )
var_4 thread forever_spawn_thread( var_1 );
}
forever_spawn_thread( var_0 )
{
level endon( var_0 );
self endon( "death" );
for (;;)
{
self.count = 1;
var_1 = maps\_utility::spawn_ai();
if ( !isdefined( var_1 ) )
{
wait 0.2;
continue;
}
var_1 waittill( "death" );
if ( !maps\_utility::script_delay() )
wait( randomfloatrange( 1, 3 ) );
}
}
postspawn_chase_enemies()
{
self endon( "death" );
self.baseaccuracy = 0.1;
self setthreatbiasgroup( "chase_wall" );
self.targetname = "chase_enemy_ai";
if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "crouch" )
common_scripts\utility::delaycall( 2, ::allowedstances, "crouch" );
self waittill( "goal" );
self allowedstances( "stand", "crouch", "prone" );
thread chase_enemy_path();
common_scripts\utility::flag_wait( "FLAG_player_slide_complete" );
self delete();
}
postspawn_chase_room_enemies()
{
self endon( "death" );
self.flashbangimmunity = 1;
self.disablepain = 1;
self.doorflashchance = 1;
self.goalradius = 200;
self waittill( "reached_path_end" );
self setgoalentity( level.player );
}
chase_enemy_path()
{
self endon( "death" );
if ( !isdefined( self.target ) )
return;
var_0 = getnode( self.target, "targetname" );
for (;;)
{
if ( isdefined( var_0.radius ) )
self.goalradius = var_0.radius;
self setgoalnode( var_0 );
self waittill( "goal" );
if ( isdefined( var_0.script_flag_wait ) )
common_scripts\utility::flag_wait( var_0.script_flag_wait );
var_1 = var_0 maps\_utility::script_delay();
if ( var_1 )
{
if ( isdefined( var_0.script_delay_min ) )
var_0.script_delay_min = undefined;
if ( isdefined( var_0.script_delay_max ) )
var_0.script_delay_max = undefined;
if ( isdefined( var_0.script_delay ) )
var_0.script_delay = undefined;
}
if ( !isdefined( var_0.target ) )
break;
var_0 = getnode( var_0.target, "targetname" );
}
}
nade_room()
{
level endon( "FLAG_player_start_slide" );
common_scripts\utility::flag_wait( "player_in_hotel_room" );
wait 4;
common_scripts\utility::flag_wait_any( "player_nade_room", "player_in_hotel_room" );
maps\_utility::delaythread( 2, ::forever_spawn_targetname, "chase_room_enemies", "FLAG_player_start_slide" );
maps\_spawner::killspawner( 600 );
var_0 = getentarray( "chase_enemy_ai", "targetname" );
common_scripts\utility::array_call( var_0, ::delete );
var_1 = common_scripts\utility::getstructarray( "nade_room_struct", "targetname" );
foreach ( var_3 in var_1 )
{
var_4 = common_scripts\utility::getstruct( var_3.target, "targetname" );
var_3.dir = vectornormalize( var_4.origin - var_3.origin );
}
var_6 = "fraggrenade";
var_7 = 2;
var_8 = 3;
for ( var_9 = 0; var_9 < var_7; var_9++ )
{
var_3 = var_1[var_9 % 2];
if ( var_6 == "fraggrenade" )
magicgrenademanual( var_6, var_3.origin, var_3.dir * randomfloatrange( 700, 1000 ), var_8 );
else
magicgrenademanual( var_6, var_3.origin, var_3.dir * randomfloatrange( 600, 1000 ) );
wait( randomfloatrange( 0.5, 2 ) );
}
}
anim_reach_arrival_solo( var_0, var_1, var_2, var_3, var_4, var_5 )
{
self endon( "death" );
var_6[0] = var_0;
var_7 = maps\_anim::get_anim_position( var_2 );
var_8 = var_7["origin"];
var_9 = var_7["angles"];
var_10 = var_0.animname;
if ( isdefined( level.scr_anim[var_10][var_1] ) )
{
if ( isarray( level.scr_anim[var_10][var_1] ) )
var_11 = level.scr_anim[var_10][var_1][0];
else
var_11 = level.scr_anim[var_10][var_1];
var_8 = getstartorigin( var_8, var_9, var_11 );
var_9 = getstartorigin( var_8, var_9, var_11 );
}
if ( isdefined( var_5 ) )
var_9 = var_5;
var_12 = spawn( "script_origin", var_8 );
var_12.angles = var_9;
if ( isdefined( var_3 ) )
var_12.type = var_3;
else
var_12.type = self.type;
if ( isdefined( var_4 ) )
var_12.arrivalstance = var_4;
else
var_12.arrivalstance = self gethighestnodestance();
var_0.scriptedarrivalent = var_12;
maps\_anim::anim_reach_and_approach( var_6, var_1, var_2 );
var_0.scriptedarrivalent = undefined;
var_12 delete();
while ( var_0.a.movement != "stop" )
wait 0.05;
}
casino_jumpout_sequence()
{
if ( isdefined( level.jumpoutdone ) )
{
level.jumpoutdone = undefined;
return;
}
setsaveddvar( "player_sprintUnlimited", 1 );
setsaveddvar( "ai_friendlyFireBlockDuration", "0" );
maps\_utility::battlechatter_off( "allies" );
foreach ( var_1 in level.heroes )
{
var_1 setcandamage( 0 );
var_1.disableplayeradsloscheck = 1;
var_1 maps\las_vegas_code::ignore_everything();
}
level.jumpout_enemies = [];
var_3 = getent( "casino_hotel_trig_5", "targetname" );
thread maps\las_vegas_code::func_waittill_msg( var_3, "trigger", ::casino_raid_end_hallway_guys );
var_4 = common_scripts\utility::getstruct( "casino_raid_sequence_spot", "targetname" );
var_5 = getent( "casino_hotel_door", "targetname" );
var_6 = getentarray( var_5.target, "targetname" );
foreach ( var_8 in var_6 )
{
var_8 linkto( var_5 );
if ( isdefined( var_8.script_noteworthy ) )
var_5.breakpiece = var_8;
}
thread lerp_threatbias();
thread casino_jumpout_trenchrun();
common_scripts\utility::array_thread( level.heroes, ::casino_jumpout_code, var_4, var_5 );
common_scripts\utility::flag_wait( "player_in_hotel_room" );
if ( !common_scripts\utility::flag( "TRACKFLAG_KEEGAN_JUMP" ) )
{
level.player allowsprint( 0 );
common_scripts\utility::flag_wait( "TRACKFLAG_KEEGAN_JUMP" );
level.player allowsprint( 1 );
}
maps\las_vegas_code::trigger_waittill_trigger( "casino_slide_start_trig" );
common_scripts\utility::flag_set( "FLAG_player_start_slide" );
level notify( "player_not_looking_into_wind" );
level.windspot maps\_utility::delaythread( 2, common_scripts\utility::stop_loop_sound_on_entity, "loop_wind_near" );
level.windspot common_scripts\utility::delaycall( 3, ::delete );
foreach ( var_1 in level.heroes )
var_1 setcandamage( 1 );
setsaveddvar( "player_sprintUnlimited", 1 );
}
lerp_threatbias()
{
level endon( "FLAG_player_start_slide" );
wait 8;
var_0 = 0;
for (;;)
{
var_0 = var_0 + 1;
setthreatbias( "heroes", "chase_wall", var_0 );
if ( var_0 == 1000 )
return;
wait 0.1;
}
}
casino_jumpout_code( var_0, var_1 )
{
maps\_utility::disable_arrivals();
maps\_utility::disable_exits();
self pushplayer( 1 );
self.dontavoidplayer = 1;
var_2 = var_0 maps\las_vegas_code::makestruct();
maps\_utility::ent_flag_wait( "door_react_done" );
var_3 = self.pathrandompercent;
self.pathrandompercent = 0;
if ( self == level.keegan )
{
self.animplaybackrate = 1.3;
self.doslide = 1;
maps\_utility::set_run_anim( "sprint_1hand_gundown" );
var_2 maps\_anim::anim_reach_solo( self, "vegas_raid_jump" );
var_2 thread maps\_anim::anim_single_solo( self, "vegas_raid_jump" );
thread casino_heroes_tarp_anim( var_2 );
level.hesh maps\_utility::delaythread( 1, maps\_utility::smart_dialogue, "vegas_hsh_leftgoleft" );
level.merrick maps\_utility::delaythread( 3, maps\_utility::smart_dialogue, "vegas_bkr_throughheregogo" );
var_4 = [ "vegas_mrk_logancatchup", "vegas_hsh_loganhurry" ];
maps\_utility::delaythread( 4, maps\las_vegas_code::nag_thread, var_4, "player_in_hotel_room", 3, 7, 0 );
var_1 maps\_utility::delaythread( 2.4, maps\las_vegas_code::door_open, 0.4, undefined, 105 );
var_1 maps\_utility::delaythread( 2.85, maps\las_vegas_code::door_open, 0.8, undefined, -10, 0, 0.2 );
wait 5;
var_5 = getent( "casino_raidroom_wind_trig", "targetname" );
if ( !level.player maps\_utility::player_looking_at( var_5.origin + ( -20, 0, 0 ) ) )
{
var_2 maps\_anim::anim_set_rate_single( self, "vegas_raid_jump", 0 );
for (;;)
{
if ( level.player maps\_utility::player_looking_at( var_5.origin + ( -20, 0, 0 ) ) )
break;
if ( common_scripts\utility::flag( "player_in_hotel_room" ) )
break;
wait 0.05;
}
var_2 maps\_anim::anim_set_rate_single( self, "vegas_raid_jump", 1 );
}
thread maps\_utility::smart_dialogue( "vegas_mrk_gettothewindow" );
var_6 = getent( "casino_raidroom_glass", "targetname" );
level.windspot = spawn( "script_origin", var_6.origin + ( 0, -500, 0 ) );
level.windspot maps\_utility::delaythread( 1.3, common_scripts\utility::play_loop_sound_on_entity, "loop_wind_near" );
maps\_utility::delaythread( 1.3, common_scripts\utility::play_sound_in_space, "glass_pane_blowout", var_6.origin );
maps\_utility::delaythread( 1.3, maps\_utility::deleteent, var_6 );
maps\_utility::delaythread( 1.3, common_scripts\utility::exploder, "raidroom_dust_enter" );
var_7 = common_scripts\utility::getstruct( "raidroom_glass_spot", "targetname" );
var_8 = maps\_utility::spawn_anim_model( "window", var_7.origin );
var_7 maps\_anim::anim_first_frame_solo( var_8, "raid_window_shatter" );
var_8 hide();
var_7 maps\_utility::delaythread( 0.7, maps\_anim::anim_single_solo, var_8, "raid_window_shatter" );
var_8 common_scripts\utility::delaycall( 0.35, ::show );
maps\_utility::delaythread( 1.3, ::casino_raidroom_wind );
maps\_utility::delaythread( 1.3, common_scripts\utility::exploder, "raidroom_paper_vortex" );
var_9 = 3;
for ( var_10 = 0; var_10 < var_9; var_10++ )
{
self shoot();
wait( randomfloatrange( 0.2, 0.4 ) );
}
maps\_utility::clear_run_anim();
wait 1.3;
var_11 = gettime();
var_12 = 2500;
if ( !common_scripts\utility::flag( "FLAG_player_start_slide" ) )
{
var_2 maps\_anim::anim_set_rate_single( self, "vegas_raid_jump", 0 );
while ( !common_scripts\utility::flag( "FLAG_player_start_slide" ) )
{
if ( gettime() - var_11 >= var_12 )
break;
wait 0.05;
}
var_2 maps\_anim::anim_set_rate_single( self, "vegas_raid_jump", 1 );
var_2 waittill( "vegas_raid_jump" );
wait 0.05;
var_2 = common_scripts\utility::getstruct( "outside_temp_spot", "targetname" );
self forceteleport( var_2.origin, var_2.angles, 10000 );
self setgoalpos( var_2.origin );
}
}
else
{
self.animplaybackrate = 0.7;
maps\_utility::enable_sprint();
maps\_utility::disable_cqbwalk();
if ( self == level.merrick )
maps\_utility::delaythread( 3, maps\_utility::smart_dialogue, "vegas_mrk_shitshitshit" );
var_2 anim_reach_solo_funcs( self, "vegas_raid_enter_jump2" );
var_2 maps\_anim::anim_single_solo( self, "vegas_raid_enter_jump2" );
maps\_utility::disable_sprint();
var_2 maps\_anim::anim_reach_solo( self, "vegas_raid_jump" );
if ( !common_scripts\utility::flag( "FLAG_player_start_slide" ) )
{
self.doslide = 1;
thread jumpout_ahead_of_player();
var_2 maps\_anim::anim_single_solo( self, "vegas_raid_jump" );
wait 0.05;
var_2 = common_scripts\utility::getstruct( "outside_temp_spot", "targetname" );
self forceteleport( var_2.origin, var_2.angles, 10000 );
self setgoalpos( var_2.origin );
}
thread casino_heroes_tarp_anim( var_2 );
}
self.pathrandompercent = var_3;
self.dontavoidplayer = 0;
maps\_utility::enable_arrivals();
maps\_utility::enable_exits();
self pushplayer( 0 );
self.moveloopoverridefunc = undefined;
}
anim_reach_solo_funcs( var_0, var_1, var_2, var_3 )
{
var_4 = [ var_0 ];
maps\_anim::anim_reach_with_funcs( var_4, var_1, var_2, var_3, ::hack_reach_start_func, ::hack_reach_end_func );
}
hack_reach_start_func( var_0 )
{
self.oldgoalradius = self.goalradius;
self.oldpathenemyfightdist = self.pathenemyfightdist;
self.oldpathenemylookahead = self.pathenemylookahead;
self.pathenemyfightdist = 128;
self.pathenemylookahead = 128;
maps\_utility::disable_ai_color();
maps\_anim::anim_changes_pushplayer( 1 );
self.nododgemove = 0;
self.og_interval = self.interval;
self.interval = 50;
self.fixednodewason = self.fixednode;
self.fixednode = 0;
if ( !isdefined( self.scriptedarrivalent ) )
{
self.old_disablearrivals = self.disablearrivals;
self.disablearrivals = 1;
}
self.reach_goal_pos = undefined;
return var_0;
}
hack_reach_end_func()
{
maps\_anim::reach_with_standard_adjustments_end();
self.interval = self.og_interval;
self.og_interval = undefined;
}
jumpout_ahead_of_player()
{
var_0 = maps\_utility::getanim( "vegas_raid_jump" );
var_1 = 5;
var_2 = 1.1;
while ( self getanimtime( var_0 ) < 0.333 )
{
wait 0.05;
if ( level.player.origin[1] - self.origin[1] < 80 )
{
var_2 = var_2 + 0.2;
var_3 = min( 5, var_2 );
maps\_anim::anim_set_rate_single( self, "vegas_raid_jump", var_2 );
}
}
maps\_anim::anim_set_rate_single( self, "vegas_raid_jump", 1 );
}
casino_jumpout_trenchrun()
{
var_0 = getentarray( "hotel_hallway_trenchrun_phys_obj", "targetname" );
level.objectforce = [];
level.objectforce["ac_prs_imp_com_lamp_ornate_off"] = 400;
level.objectforce["lv_luggagedestroyed_03_dust"] = 100;
level.objectforce["lv_luggagedestroyed_04_dust"] = 100;
var_1 = common_scripts\utility::getstructarray( "hotel_hallway_trenchrun_fake_shooters", "targetname" );
common_scripts\utility::array_thread( common_scripts\utility::getstructarray( "hotel_hallway_trenchrun_shot_obj", "targetname" ), ::trenchrun_objdamage, "bullet" );
common_scripts\utility::array_thread( var_0, ::trenchrun_objdamage, "phys", undefined );
var_2 = 0;
var_3 = common_scripts\utility::getstructarray( "hotel_hallway_trenchrun_lights_start", "targetname" );
foreach ( var_5 in var_3 )
{
var_6 = var_5;
var_7 = randomfloatrange( 0.5, 1 );
for (;;)
{
if ( var_2 == 0 )
{
if ( common_scripts\utility::cointoss() )
{
var_6 thread trenchrun_objdamage( "radius", var_7 );
var_2 = 0;
}
else
var_2 = 1;
}
else
{
var_6 thread trenchrun_objdamage( "radius", var_7 );
var_2 = 0;
}
if ( !isdefined( var_6.target ) )
break;
var_6 = common_scripts\utility::getstruct( var_6.target, "targetname" );
var_7 = var_7 + randomfloatrange( 0.5, 1 );
wait 0.05;
}
}
}
trenchrun_objdamage( var_0, var_1, var_2 )
{
var_3 = self.origin;
var_4 = undefined;
var_5 = undefined;
if ( isdefined( var_1 ) )
{
var_4 = gettime();
var_5 = var_1 * 1000;
}
if ( var_0 == "phys" )
{
self endon( "damage" );
thread trenchrun_objdamage_phys_cancel();
}
for (;;)
{
if ( isdefined( var_1 ) )
{
var_6 = gettime();
if ( var_6 - var_4 >= var_5 )
break;
}
if ( common_scripts\utility::distance_2d_squared( level.player.origin, var_3 ) < squared( 300 ) )
break;
wait 0.05;
}
if ( common_scripts\utility::cointoss() )
wait( randomfloatrange( 0.1, 0.3 ) );
switch ( var_0 )
{
case "radius":
radiusdamage( var_3, 25, 999, 999 );
break;
case "bullet":
var_7 = trenchrun_get_gun();
magicbullet( var_7, var_3 + ( 10, 0, 0 ), var_3 );
wait 0.05;
magicbullet( var_7, var_3 + ( 10, 0, 0 ), var_3 );
break;
case "phys":
self notify( "trenchrun_throw" );
self physicslaunchclient( var_3 + ( 5, 0, 0 ), ( -25, 0, 0 ) * level.objectforce[self.model] );
break;
}
if ( isdefined( self.script_fxid ) )
playfx( common_scripts\utility::getfx( self.script_fxid ), var_3 );
}
trenchrun_objdamage_phys_cancel()
{
self endon( "trenchrun_throw" );
self setcandamage( 1 );
self waittill( "damage" );
self physicslaunchclient( self.origin, ( 0, 0, -25 ) );
}
trenchrun_get_gun()
{
var_0 = [ "fads", "msbs" ];
var_0 = common_scripts\utility::array_randomize( var_0 );
return var_0[0];
}
trenchrun_fake_shooters()
{
level endon( "player_in_hotel_room" );
var_0 = getent( "casino_hotel_trig_4", "targetname" );
var_0 waittill( "trigger" );
maps\_utility::battlechatter_on( "axis" );
var_1 = common_scripts\utility::getstruct( self.target, "targetname" );
for (;;)
{
wait( randomfloatrange( 0.5, 1 ) );
if ( common_scripts\utility::cointoss() )
continue;
var_2 = bullettrace( self.origin, var_1.origin, 1 );
if ( isdefined( var_2["entity"] ) && var_2["entity"] == level.player )
continue;
if ( level.player maps\_utility::player_looking_at( var_0.origin ) )
continue;
if ( common_scripts\utility::cointoss() )
{
var_3 = randomintrange( 3, 5 );
for ( var_4 = 0; var_4 < var_3; var_4++ )
{
var_5 = trenchrun_get_gun();
magicbullet( var_5, self.origin, var_1.origin );
wait( randomfloatrange( 0.1, 0.2 ) );
var_2 = bullettrace( self.origin, var_1.origin, 1 );
if ( isdefined( var_2["entity"] ) && var_2["entity"] == level.player )
continue;
if ( level.player maps\_utility::player_looking_at( var_0.origin ) )
continue;
}
continue;
}
magicbullet( "fads", self.origin, var_1.origin );
}
}
casino_heroes_tarp_anim( var_0 )
{
if ( isdefined( self.doslide ) )
{
self.doslide = undefined;
var_0 waittill( "vegas_raid_jump" );
}
}
casino_raid_end_hallway_guys()
{
forever_spawn_targetname( "casino_hotel_baddies_flooders01", "FLAG_player_start_slide" );
common_scripts\utility::flag_wait( "FLAG_player_start_slide" );
}
play_nag_lines( var_0, var_1, var_2 )
{
if ( !isdefined( var_1 ) )
var_1 = "";
for ( var_3 = ""; !common_scripts\utility::flag( var_2 ); var_1 = var_3 )
{
for (;;)
{
var_3 = var_0[randomint( var_0.size )];
if ( var_3 != var_1 )
break;
}
maps\_utility::dialogue_queue( var_3 );
wait( randomfloatrange( 1, 1.5 ) );
}
}
casino_raidroom_wind()
{
level endon( "delete_interior_sandstorm" );
var_0 = getent( "casino_raidroom_wind_trig", "targetname" );
maps\las_vegas_code::trigger_waittill_trigger( "casino_raidroom_wind_trig" );
var_1 = 0;
for (;;)
{
if ( !level.player istouching( var_0 ) )
break;
var_2 = 0.15;
var_3 = anglestoforward( level.player.angles );
if ( var_3[0] <= 0 && var_3[1] <= 0 || var_3[0] >= 0 && var_3[1] <= 0 )
{
setblur( randomfloatrange( 0.3, 1 ), 0.1 );
if ( var_1 == 0 )
{
var_1 = 1;
thread casino_wind_screen_dirt( "player_not_looking_into_wind" );
}
}
else
{
var_2 = 0.1;
level notify( "player_not_looking_into_wind" );
var_1 = 0;
}
earthquake( var_2, 0.1, level.player.origin, 9999 );
wait 0.1;
}
thread maps\_utility::set_blur( 0, 0.1 );
level notify( "player_out_of_current" );
thread casino_raidroom_wind();
}
casino_wind_screen_dirt( var_0 )
{
var_1 = [];
var_1[var_1.size] = [ "fullscreen_dirt_left", -100, 5 ];
var_1[var_1.size] = [ "fullscreen_dirt_right", -200, 15 ];
var_2 = 1.5;
var_3 = [];
foreach ( var_5 in var_1 )
{
var_6 = newhudelem();
var_6 setshader( var_5[0], int( 640 * var_2 ), int( 480 * var_2 ) );
var_6.horzalign = "fullscreen";
var_6.vertalign = "fullscreen";
var_6.y = var_6.y + var_5[1];
var_6 fadeovertime( 0.2 );
var_6.alpha = 1;
var_6 thread casino_wind_screen_dirt_loop( var_0 );
var_3[var_3.size] = var_6;
}
level waittill( var_0 );
foreach ( var_6 in var_3 )
{
var_9 = randomfloatrange( 0.2, 0.6 );
var_6 fadeovertime( var_9 );
var_6.alpha = 0;
var_6 common_scripts\utility::delaycall( var_9, ::destroy );
}
}
casino_wind_screen_dirt_loop( var_0 )
{
level endon( var_0 );
for (;;)
{
var_1 = randomfloatrange( 0.2, 0.4 );
self fadeovertime( var_1 );
self.alpha = randomfloatrange( 0.5, 1 );
wait( var_1 );
}
}
casino_heroes_slide_hide( var_0 )
{
level endon( "FLAG_player_slide_complete" );
wait( var_0 );
self hide();
}
#using_animtree("script_model");
slide()
{
level notify( "stop_enemy_radio_chatter" );
var_0 = getentarray( "player_slide_ambient_tarps", "targetname" );
foreach ( var_2 in var_0 )
{
var_2.animname = "tarp";
var_2 useanimtree( #animtree );
}
var_4 = getent( "vegas_window_hdr", "targetname" );
var_4 hide();
var_5 = common_scripts\utility::getstruct( "casino_player_slide_start", "targetname" );
var_6 = var_5 maps\las_vegas_code::makestruct();
var_7 = maps\_utility::spawn_anim_model( "player_rig", level.player.origin );
var_7 hide();
var_8 = maps\_utility::spawn_anim_model( "player_legs", level.player.origin );
var_9 = getent( "player_slide_tarp", "targetname" );
var_9 useanimtree( #animtree );
var_9.animname = "tarp";
var_10 = [ var_7, var_8 ];
var_11 = level.player getcurrentweapon();
if ( isdefined( var_11 ) )
{
var_12 = weaponclipsize( var_11 );
level.player setweaponammoclip( var_11, var_12 );
}
var_13 = -78.6855;
var_14 = var_13 + 36;
var_15 = var_13 - 36;
var_16 = level.player.origin[0] - var_6.origin[0];
var_16 = clamp( var_16, var_15, var_14 );
var_16 = var_16 - var_13;
var_6.origin = var_6.origin + ( var_16, 0, 0 );
maps\las_vegas_code::cinematicmode_on();
var_6 maps\_anim::anim_first_frame_solo( var_7, "casino_player_slide" );
var_17 = 0.8;
var_18 = anglestoforward( level.player.angles );
if ( var_18[0] <= 0 && var_18[1] <= 0 || var_18[0] >= 0 && var_18[1] <= 0 )
var_17 = 0.3;
var_19 = 10;
maps\_utility::delaythread( 1, maps\_utility::music_stop, 2 );
if ( !isalive( level.player ) )
level waittill( "forever" );
level.player playerlinktoblend( var_7, "tag_player", var_17 );
wait( var_17 );
level.player playerlinktodelta( var_7, "tag_player", 1, var_19, var_19, var_19, var_19, var_19, 1 );
thread slide_hide_heroes();
var_6 thread maps\_anim::anim_single( var_10, "casino_player_slide" );
level.player common_scripts\utility::delaycall( 0.5, ::playrumbleonentity, "heavy_1s" );
level.player common_scripts\utility::delaycall( 1, ::playrumblelooponentity, "slide_loop" );
level.player common_scripts\utility::delaycall( 2.5, ::stoprumble, "slide_loop" );
thread casino_wind_screen_dirt( "TRACKFLAG_slide_stop_dirt_screen" );
level.player common_scripts\utility::delaycall( 6, ::lerpfov, 100, 2.5 );
maps\_utility::delaythread( 2, common_scripts\utility::flag_set, "FLAG_stop_feet_slide_fx" );
wait 0.1;
var_7 show();
thread player_slide_fx( var_6, var_7, var_8 );
wait 3.2;
earthquake( 0.3, 0.6, level.player.origin, 999 );
setblur( 3, 0 );
wait 0.1;
setblur( 0, 0.8 );
level.player playrumbleonentity( "heavy_1s" );
var_6 waittill( "casino_player_slide" );
level.player common_scripts\utility::delaycall( 0.6, ::setclienttriggeraudiozone, "las_vegas_gassed_black", 0.2 );
level.fadein = maps\_hud_util::create_client_overlay( "black", 1, level.player );
level notify( "player_not_looking_into_wind" );
level notify( "delete_interior_sandstorm" );
common_scripts\utility::array_call( level.heroes, ::show );
if ( isdefined( level.baker_glight ) )
level.baker_glight delete();
common_scripts\utility::flag_set( "FLAG_player_slide_complete" );
level.player playrumbleonentity( "grenade_rumble" );
if ( isdefined( level.jumpout_enemies ) )
{
level.jumpout_enemies = maps\_utility::remove_dead_from_array( level.jumpout_enemies );
foreach ( var_21 in level.jumpout_enemies )
var_21 delete();
}
var_23 = getaiarray( "axis" );
common_scripts\utility::array_call( var_23, ::delete );
maps\las_vegas_code::cinematicmode_off();
level.player unlink();
var_7 delete();
var_8 delete();
setblur( 0, 0 );
level.player lerpfov( 65, 0.05 );
var_4 show();
}
slide_hide_heroes()
{
var_0 = gettime() + 3000;
while ( gettime() < var_0 )
{
wait 0.05;
foreach ( var_2 in level.heroes )
{
if ( var_2.origin[1] > level.player.origin[1] + 10 )
var_2 hide();
}
}
}
player_slide_fx( var_0, var_1, var_2 )
{
var_3 = [ "j_ball_le", "j_ball_ri" ];
foreach ( var_5 in var_3 )
thread player_slide_fx_legs( var_5, var_2 );
var_3 = [ "j_ringpalm_le", "j_ringpalm_ri" ];
foreach ( var_5 in var_3 )
maps\_utility::flagwaitthread( "TRACKFLAG_player_fall_grab", ::player_slide_fx_clap, var_1, var_5 );
var_9 = anglestoforward( var_0.angles );
var_9 = var_9 * -80;
var_10 = var_0.origin + var_9;
var_11 = anglestoright( var_0.angles );
var_11 = var_11 + ( 0, 0, -1 );
playfx( level._effect["raidroom_jump_slide_glass"], var_10, var_11 );
wait 3;
var_10 = level.player.origin;
playfx( level._effect["raidroom_jump_slide_glass"], var_10, var_11 );
wait 2.5;
playfx( level._effect["raidroom_jump_drop_glass"], level.player.origin + ( 0, 25, 50 ) );
}
player_slide_fx_legs( var_0, var_1 )
{
var_2 = [ "j_ball_le", "j_ball_ri" ];
var_3 = common_scripts\utility::getfx( "slide_boot_dust" );
var_4 = anglestoforward( ( -45, 90, 0 ) );
var_5 = anglestoforward( ( 45, 270, 0 ) );
while ( !common_scripts\utility::flag( "FLAG_stop_feet_slide_fx" ) )
{
var_6 = var_1 gettagorigin( var_0 ) + var_5 * 25;
playfx( var_3, var_6, var_4 );
wait 0.05;
}
}
player_slide_fx_clap( var_0, var_1 )
{
var_2 = anglestoforward( ( -270, 0, -90 ) );
if ( var_1 == "j_ringpalm_ri" )
wait 0.13;
else
wait 0.09;
var_3 = var_0 gettagorigin( var_1 ) + ( -4, 0, 2 );
var_4 = common_scripts\utility::getfx( "vfx_dust_hand_clap" );
playfx( var_4, var_3, var_2 );
}