3379 lines
118 KiB
Plaintext
3379 lines
118 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
opening_shot()
|
|
{
|
|
maps\_hud_util::start_overlay( "overlay_static" );
|
|
level.player setclienttriggeraudiozone( "nml_dog_camera", 0.1 );
|
|
level.player thread maps\_utility::play_sound_on_entity( "scn_nml_camera_start_level" );
|
|
maps\nml_stealth::stealth_settings_intro();
|
|
level.player maps\_dog_drive::dog_drive_indirect( level.dog );
|
|
level.player notify( "disable_zoom" );
|
|
thread maps\nml_util::mission_fail_on_dog_death();
|
|
level.player notify( "stop_dog_bark" );
|
|
level.dog maps\_utility::ent_flag_clear( "dogcam_acquire_targets" );
|
|
level.see_enemy_dot = 0.99;
|
|
level.see_enemy_dot_close = 0.995;
|
|
level.dog setdogcommand( "attack" );
|
|
level.player allowcrouch( 0 );
|
|
level.player allowstand( 0 );
|
|
level.baker allowedstances( "crouch" );
|
|
level.baker.baseaccuracy = 0.01;
|
|
level.baker.ignoreall = 1;
|
|
level.baker.ignoreme = 1;
|
|
var_0 = common_scripts\utility::get_target_ent( "dog_intro_node" );
|
|
wait 0.1;
|
|
maps\_utility::autosave_by_name( "nml" );
|
|
level.dog endon( "death" );
|
|
level.player setblurforplayer( 20, 0.05 );
|
|
level.player lerpfov( 15, 0.1 );
|
|
level.player lerpviewangleclamp( 0.1, 0, 0, 15, 15, 15, 15 );
|
|
level.player freezecontrols( 1 );
|
|
level.player maps\_dog_drive::delete_model_fx();
|
|
wait 0.1;
|
|
level.player maps\_dog_drive::spawn_model_fx( ( 10, 0, 0 ), ( 150, 0, 0 ), ( 500, 0, 0 ) );
|
|
maps\nml_util::set_start_positions( "start_intro" );
|
|
level.dog maps\_utility_dogs::enable_dog_sniff();
|
|
level.dog maps\_utility_dogs::disable_dog_sniff();
|
|
level.dog notify( "stop_panting" );
|
|
level.dog.allowpain = 1;
|
|
level.dog.allowdeath = 1;
|
|
var_0 thread maps\_anim::anim_generic_loop( level.dog, "dog_sneak_idle_intro" );
|
|
level.dog.ignoreme = 0;
|
|
thread intro_wait_spotted();
|
|
thread intro_wait_dog_attack();
|
|
thread intro_wait_dog_command( var_0 );
|
|
maps\nml_util::team_unset_colors( 128 );
|
|
var_1 = maps\_utility::array_spawn_targetname( "intro_enemy_1" );
|
|
thread maps\nml_util::group_walla( var_1, 1, 2 );
|
|
common_scripts\utility::array_thread( var_1, maps\nml_util::hazmat_if_hazmat );
|
|
common_scripts\utility::array_thread( var_1, maps\_utility::set_baseaccuracy, 999 );
|
|
thread maps\nml_util::make_enemy_squad_burst( var_1, "cave_exit" );
|
|
level.player freezecontrols( 0 );
|
|
thread intro_dialogue();
|
|
level waittill( "camera_clears" );
|
|
var_2 = anim.dogattackaidist;
|
|
anim.dogattackaidist = anim.dogattackaidist * 2;
|
|
thread maps\_hud_util::fade_in( 1, "overlay_static" );
|
|
level.player common_scripts\utility::delaycall( 0.25, ::setblurforplayer, 0, 1.5 );
|
|
earthquake( 0.4, 2.3, level.player.origin, 1000 );
|
|
level.player thread maps\_dog_drive::constant_screen_glitches();
|
|
level.player maps\_utility::notify_delay( "stop_constant_glitch", 2 );
|
|
wait 2;
|
|
level.dog maps\_utility::ent_flag_clear( "pause_dog_command" );
|
|
level.player thread maps\_utility::player_speed_percent( 30, 0.1 );
|
|
level.player allowcrouch( 1 );
|
|
level.player allowstand( 1 );
|
|
level.baker allowedstances( "stand", "crouch", "prone" );
|
|
setsaveddvar( "aim_autoAimRangeScale", "0" );
|
|
common_scripts\utility::flag_wait( "intro_gunup" );
|
|
thread maps\nml_util::mission_fail_on_dog_death( &"NML_HINT_CAIRO_DEATH" );
|
|
level.dog_alt_melee_func = undefined;
|
|
level.player thread maps\_utility::player_speed_percent( 80, 1 );
|
|
level.player allowprone( 0 );
|
|
anim.dogattackaidist = var_2;
|
|
level.player clearclienttriggeraudiozone( 0.5 );
|
|
maps\_hud_util::fade_out( 0.25, "overlay_static" );
|
|
wait 0.05;
|
|
level.player maps\_dog_drive::dog_drive_indirect_disable( level.dog );
|
|
level.dog maps\_utility::ent_flag_set( "pause_dog_command" );
|
|
|
|
if ( common_scripts\utility::flag( "intro_guys_close" ) && isdefined( level.dog.attacked ) )
|
|
{
|
|
level.dog.attacked = undefined;
|
|
thread intro_secondary_kill();
|
|
}
|
|
|
|
level.player disableweaponswitch();
|
|
level.player giveweapon( "remote_chopper_gunner_nopullout" );
|
|
level.player switchtoweaponimmediate( "remote_chopper_gunner_nopullout" );
|
|
setdvar( "hideHudFast", 1 );
|
|
setsaveddvar( "ammoCounterHide", 1 );
|
|
cinematicingameloop( "dog_in" );
|
|
wait 0.05;
|
|
thread maps\_hud_util::fade_in( 0.4, "overlay_static" );
|
|
common_scripts\utility::noself_delaycall( 4, ::stopcinematicingame );
|
|
level.player lerpfov( 65, 1 );
|
|
level.baker thread maps\nml_util::wait_for_group_attack( var_1 );
|
|
level.baker setgoalnode( common_scripts\utility::get_target_ent( "baker_intro_check" ) );
|
|
wait 0.05;
|
|
level.player switchtoweapon( "honeybadger+acog_sp" );
|
|
level.player thread maps\_utility::play_sound_on_entity( "scn_nml_tablet_put_away" );
|
|
maps\nml_util::volume_waittill_no_axis( "intro_volume" );
|
|
var_3 = getaiarray( "axis" );
|
|
|
|
foreach ( var_5 in var_3 )
|
|
var_5 kill();
|
|
|
|
maps\nml_util::team_unset_colors( 128 );
|
|
level.dog.melee = undefined;
|
|
level.dog setcandamage( 1 );
|
|
level.player allowprone( 1 );
|
|
common_scripts\utility::flag_set( "intro_clear" );
|
|
setsaveddvar( "aim_autoAimRangeScale", "1" );
|
|
level.player takeweapon( "remote_chopper_gunner_nopullout" );
|
|
level.player enableweaponswitch();
|
|
setdvar( "hideHudFast", 0 );
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
level.player maps\_ash_falling::ash_fall( 1 );
|
|
wait 1;
|
|
level.baker maps\_utility::delaythread( 4, maps\nml_util::dyn_dogspeed_enable, 150 );
|
|
level.dog maps\_utility::delaythread( 3, maps\_utility_dogs::dyn_sniff_enable, 500, 300 );
|
|
var_7 = common_scripts\utility::get_target_ent( "NML_intro_exit" );
|
|
var_7 thread maps\_anim::anim_generic_gravity( level.baker, "NML_intro_exit" );
|
|
maps\nml_util::hero_paths( "intro_path", 450 );
|
|
maps\_utility::delaythread( 6.5, common_scripts\utility::flag_set, "start_earthquakes" );
|
|
common_scripts\utility::flag_wait( "cave_entrance" );
|
|
level.player maps\_ash_falling::ash_fall( 0.5 );
|
|
level.baker maps\_utility::enable_cqbwalk();
|
|
maps\nml_util::hero_paths( "intro_cave_path" );
|
|
level.baker thread hesh_gate_logic();
|
|
level.baker thread maps\nml_util::dyn_dogspeed_disable();
|
|
thread cave_earthquake();
|
|
}
|
|
|
|
cave_exit_dialogue()
|
|
{
|
|
common_scripts\utility::flag_wait( "cave_hesh_done" );
|
|
wait 2;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_cmonletskeepmoving" );
|
|
wait 2;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_delta11thisis" );
|
|
wait 0.4;
|
|
maps\_utility::smart_radio_dialogue( "nml_mrk_solidcopystalkerdelta" );
|
|
common_scripts\utility::flag_clear( "start_earthquakes" );
|
|
wait 0.1;
|
|
maps\_utility::smart_radio_dialogue( "nml_mrk_wererunningona" );
|
|
wait 0.4;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_hehrogerthat" );
|
|
}
|
|
|
|
cave_exit()
|
|
{
|
|
common_scripts\utility::flag_wait( "cave_exit" );
|
|
common_scripts\utility::flag_wait( "hesh_ready_to_leave_cave" );
|
|
maps\nml_util::team_unset_colors( 128 );
|
|
level.dog maps\_utility_dogs::disable_dog_sniff();
|
|
level.dog thread maps\_utility_dogs::dyn_sniff_enable( 400, 100 );
|
|
maps\nml_util::hero_paths( "intro_house_path", 300, 300, 300, 0, 0 );
|
|
}
|
|
|
|
mansion_exit()
|
|
{
|
|
common_scripts\utility::flag_wait( "house_cqb_done" );
|
|
maps\nml_util::team_unset_colors( 128 );
|
|
level.dog.idlelookattargets = undefined;
|
|
wait 2;
|
|
common_scripts\utility::flag_wait( "player_looking_at_crater" );
|
|
|
|
if ( !common_scripts\utility::flag( "skip_house_cqb" ) )
|
|
{
|
|
maps\_utility::music_play( "mus_nml_reveal" );
|
|
thread crater_reveal_dialogue();
|
|
level.baker maps\_utility::disable_cqbwalk();
|
|
level.baker maps\_utility::clear_generic_idle_anim();
|
|
wait 4;
|
|
}
|
|
else
|
|
{
|
|
level.dog maps\_utility_dogs::dyn_sniff_disable();
|
|
level.dog maps\_utility_dogs::disable_dog_sniff();
|
|
}
|
|
|
|
common_scripts\utility::flag_set( "hesh_mansion_jumpdown" );
|
|
}
|
|
|
|
crater_reveal_dialogue()
|
|
{
|
|
|
|
}
|
|
|
|
house_enter()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "nml_house_cqb" );
|
|
level.rifle = maps\_utility::spawn_anim_model( "rifle" );
|
|
var_0 thread maps\_anim::anim_first_frame_solo( level.rifle, "NML_house_cqb" );
|
|
common_scripts\utility::flag_wait( "hesh_ready_to_leave_cave" );
|
|
common_scripts\utility::flag_wait( "player_enter_mansion" );
|
|
common_scripts\utility::exploder( "church_sunflare" );
|
|
maps\nml_util::baker_noncombat();
|
|
level.dog.idlelookattargets = undefined;
|
|
level notify( "start_birds_crater" );
|
|
level.player maps\_ash_falling::ash_fall( 0 );
|
|
level.baker.animname = "hesh";
|
|
var_1 = level.rifle;
|
|
var_0 maps\_anim::anim_reach_solo( level.baker, "NML_house_cqb" );
|
|
|
|
if ( !common_scripts\utility::flag( "skip_house_cqb" ) )
|
|
{
|
|
maps\_utility::delaythread( 5, maps\_utility::music_stop, 6 );
|
|
thread mansion_dialogue();
|
|
level.player thread maps\_utility::player_speed_percent( 60, 5 );
|
|
level.baker maps\_utility::delaythread( 8, ::track_player_for_time, 0.5 );
|
|
level.baker maps\_utility::delaythread( 14.4, ::track_player_for_time, 0.5 );
|
|
level.baker maps\_utility::disable_cqbwalk();
|
|
level.baker maps\_utility::disable_exits();
|
|
level.baker maps\_utility::disable_arrivals();
|
|
var_0 maps\_anim::anim_single( [ level.baker, var_1 ], "NML_house_cqb" );
|
|
}
|
|
|
|
var_2 = var_1.model;
|
|
level.baker attach( var_2, "tag_stowed_back" );
|
|
var_1 delete();
|
|
common_scripts\utility::flag_set( "house_cqb_done" );
|
|
}
|
|
|
|
mansion_sound_on_helis()
|
|
{
|
|
maps\_utility::trigger_wait_targetname( "spawn_crater_helis" );
|
|
common_scripts\utility::play_sound_in_space( "scn_nml_crater_choppers_by", ( -1209, 729, 92 ) );
|
|
}
|
|
|
|
track_player_for_time( var_0 )
|
|
{
|
|
self notify( "start_tracking" );
|
|
self endon( "start_tracking" );
|
|
self setlookatentity( level.player );
|
|
wait( var_0 );
|
|
self setlookatentity();
|
|
}
|
|
|
|
hesh_crater_look()
|
|
{
|
|
common_scripts\utility::flag_wait( "house_cqb_done" );
|
|
|
|
if ( !common_scripts\utility::flag( "skip_house_cqb" ) )
|
|
{
|
|
level.baker maps\nml_util::switch_from_cqb_to_creepwalk();
|
|
maps\nml_util::hero_paths( "nml_mansion_exit", 300, 300, 300, 0, 0 );
|
|
common_scripts\utility::waitframe();
|
|
var_0 = common_scripts\utility::get_target_ent( "nml_craterview_node" );
|
|
level.baker notify( "stop_path" );
|
|
var_0 maps\_anim::anim_generic_reach( level.baker, "NML_craterview_in" );
|
|
var_0 maps\_anim::anim_generic( level.baker, "NML_craterview_in" );
|
|
var_0 = spawnstruct();
|
|
var_0.origin = level.baker.origin;
|
|
var_0.angles = level.baker.angles;
|
|
var_0 thread maps\_anim::anim_generic_loop( level.baker, "NML_craterview_idle" );
|
|
common_scripts\utility::flag_wait( "hesh_mansion_jumpdown" );
|
|
var_0 notify( "stop_loop" );
|
|
maps\nml_util::hero_paths( "crater_pos_1", 350, undefined, undefined, 1, 1 );
|
|
var_0 maps\_anim::anim_generic( level.baker, "NML_craterview_out" );
|
|
}
|
|
else
|
|
maps\nml_util::hero_paths( "crater_pos_1", 350, undefined, undefined, 0, 0 );
|
|
|
|
common_scripts\utility::flag_set( "hesh_mansion_jumpdown_done" );
|
|
}
|
|
|
|
mansion_quake_sounds()
|
|
{
|
|
thread common_scripts\utility::play_sound_in_space( "elm_nml_quake_house_rattle_01", ( 3059, -3561, 106 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "elm_nml_quake_house_rattle_02", ( 2668, -3836, 65 ) );
|
|
}
|
|
|
|
mansion_dialogue()
|
|
{
|
|
wait 12.5;
|
|
common_scripts\utility::flag_set( "start_earthquakes" );
|
|
level.force_next_earthquake = 1;
|
|
level.next_quake_sound = "elm_nml_quake_house";
|
|
level.next_earthquake = "med_4s";
|
|
level notify( "trigger_earthquake" );
|
|
level.dog maps\_utility_dogs::dyn_sniff_disable();
|
|
thread mansion_quake_sounds();
|
|
var_0 = common_scripts\utility::getstructarray( "mansion_physics_node", "targetname" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
var_2 thread physics_jolt_node();
|
|
|
|
wait 3;
|
|
|
|
if ( !common_scripts\utility::flag( "player_looking_at_crater" ) )
|
|
maps\nml_util::hero_paths( "nml_mansion_exit", 300, 300, 300, 0, 0 );
|
|
}
|
|
|
|
physics_jolt_node()
|
|
{
|
|
wait( randomfloatrange( 0.5, 1.5 ) );
|
|
physicsexplosionsphere( self.origin, 256, 64, 0.1 );
|
|
}
|
|
|
|
house_deer()
|
|
{
|
|
|
|
}
|
|
|
|
deer_earthquake()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
earthquake( 0.2, 0.2, self.origin, 1500 );
|
|
wait( randomfloatrange( 0.05, 0.2 ) );
|
|
}
|
|
}
|
|
|
|
intro_secondary_kill()
|
|
{
|
|
var_0 = getaiarray( "axis" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( isdefined( level.dog.enemy ) && var_2 == level.dog.enemy && isdefined( level.dog.enemy.syncedmeleetarget ) )
|
|
{
|
|
var_2.allowdeath = 1;
|
|
var_2.a.nodeath = 1;
|
|
var_2.forceragdollimmediate = 1;
|
|
var_2 kill();
|
|
continue;
|
|
}
|
|
|
|
var_2 delete();
|
|
}
|
|
|
|
level.baker.baseaccuracy = 1;
|
|
level.baker.ignoreall = 0;
|
|
maps\_utility::array_spawn_function_targetname( "intro_secondary_scene_guys", ::intro_secondary_scene_guys_think );
|
|
maps\_utility::array_spawn_targetname( "intro_secondary_scene_guys", ::intro_secondary_scene_guys_think );
|
|
}
|
|
|
|
intro_secondary_scene_guys_think()
|
|
{
|
|
var_0 = self.spawner;
|
|
|
|
if ( isdefined( self.target ) && self.target == "intro_secondary_node" )
|
|
{
|
|
level.dog endon( "death" );
|
|
|
|
if ( isdefined( level.change_guard_to_hazmat ) )
|
|
{
|
|
self setmodel( "fullbody_hazmat_a" );
|
|
level.change_guard_to_hazmat = undefined;
|
|
}
|
|
|
|
self.animname = "victim";
|
|
level.dog.animname = "dog";
|
|
level.dog unlink();
|
|
level.dog.moveplaybackrate = 1;
|
|
self.ignoreme = 1;
|
|
var_0 = common_scripts\utility::get_target_ent();
|
|
var_0 thread maps\_anim::anim_first_frame( [ self, level.dog ], "iw6_dog_kill_front" );
|
|
wait 0.5;
|
|
var_1 = common_scripts\utility::get_target_ent( "intro_secondary_node_dog" );
|
|
level.dog setgoalpos( var_1.origin );
|
|
thread maps\_utility::play_sound_on_entity( "scn_nml_dog_attack_front_npc" );
|
|
level.dog thread animscripts\shared::donotetracks( "single anim", maps\nml_dogattacks::handlevxnotetrack );
|
|
var_0 maps\_anim::anim_single( [ self, level.dog ], "iw6_dog_kill_front" );
|
|
level.dog setgoalpos( level.dog.origin );
|
|
self.allowdeath = 1;
|
|
self.a.nodeath = 1;
|
|
self.forceragdollimmediate = 1;
|
|
self kill();
|
|
return;
|
|
}
|
|
else if ( isdefined( self.target ) )
|
|
var_0 = common_scripts\utility::get_target_ent();
|
|
|
|
self.allowdeath = 1;
|
|
self.allowpain = 1;
|
|
self.a.disablelongdeath = 1;
|
|
self.ignoreme = 1;
|
|
self.ignoreall = 1;
|
|
self.goalradius = 32;
|
|
maps\_utility::gun_remove();
|
|
self endon( "death" );
|
|
var_0 thread maps\_anim::anim_generic_gravity( self, var_0.animation );
|
|
var_0 = var_0 common_scripts\utility::get_target_ent();
|
|
self setgoalpos( var_0.origin );
|
|
maps\_utility::set_generic_run_anim( "hazmat_run" );
|
|
wait 2;
|
|
self.ignoreme = 0;
|
|
wait 0.5;
|
|
self kill();
|
|
}
|
|
|
|
intro_wait_dog_command( var_0 )
|
|
{
|
|
level endon( "intro_gunup" );
|
|
level.dog waittill( "dog_command_attack", var_1 );
|
|
level.dog maps\_utility::ent_flag_set( "pause_dog_command" );
|
|
level.player lerpviewangleclamp( 0.4, 0.3, 0.1, 20, 20, 0, 0 );
|
|
maps\_utility::music_stop( 1 );
|
|
level.dog notify( "stop_constant_glitch" );
|
|
level.dog notify( "disable_screen_glitch" );
|
|
thread dog_run_earthquakes();
|
|
level.dog_alt_melee_func = maps\nml_dogattacks::meleestrugglevsai_first_attack;
|
|
level.dog.moveplaybackrate = 1.2;
|
|
level.dog maps\_utility::disable_exits();
|
|
level.dog unlink();
|
|
var_0 maps\_anim::anim_generic_run( level.dog, "dog_sneakidle_2_run" );
|
|
var_0 notify( "stop_loop" );
|
|
wait 0.5;
|
|
level.dog maps\_utility::enable_exits();
|
|
}
|
|
|
|
dog_run_earthquakes()
|
|
{
|
|
level endon( "dog_attacks_ai" );
|
|
level.dog endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
screenshake( level.dog.origin, 5, 0, 4, 0.6, 0.3, 0.3, 2000, 8, 15, 12, 1.8 );
|
|
wait 0.25;
|
|
}
|
|
}
|
|
|
|
dog_cam_fov_default()
|
|
{
|
|
level.player setblurforplayer( 3, 0.05 );
|
|
level.player maps\_dog_drive::delete_model_fx();
|
|
level.player maps\_dog_drive::spawn_model_fx( ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
level.player thread maps\_dog_drive::constant_screen_glitches();
|
|
earthquake( 0.4, 0.3, level.player.origin, 1000 );
|
|
wait 0.15;
|
|
level.player common_scripts\utility::delaycall( 0.1, ::setblurforplayer, 0, 0.5 );
|
|
level.player lerpfov( 90, 0.05 );
|
|
level.player thread maps\_utility::notify_delay( "stop_constant_glitch", 0.1 );
|
|
wait 0.1;
|
|
}
|
|
|
|
intro_wait_dog_attack()
|
|
{
|
|
level endon( "intro_gunup" );
|
|
level.dog waittill( "dog_command_attack", var_0 );
|
|
level.dog thread maps\_utility_dogs::dog_pant_think();
|
|
thread dog_cam_fov_default();
|
|
level waittill( "dog_attacks_ai", var_1 );
|
|
thread dog_attack_slowmo( var_1, var_0 );
|
|
}
|
|
|
|
dog_attack_slowmo( var_0, var_1 )
|
|
{
|
|
level.dog.attacked = 1;
|
|
|
|
if ( !issubstr( var_1.model, "hazmat" ) )
|
|
level.change_guard_to_hazmat = 1;
|
|
|
|
level.player stopshellshock();
|
|
var_1 = getaiarray( "axis" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
var_3.no_more_outlines = 1;
|
|
var_3 hudoutlinedisable();
|
|
}
|
|
|
|
common_scripts\utility::flag_set( "intro_dog_attacked" );
|
|
level.player thread maps\_utility::play_sound_on_entity( "slomo_whoosh_in" );
|
|
level.player thread maps\_slowmo_breach::player_heartbeat();
|
|
maps\_utility::slowmo_setspeed_slow( 0.2 );
|
|
maps\_utility::slowmo_setlerptime_in( 0.25 );
|
|
maps\_utility::slowmo_lerp_in();
|
|
wait 0.4;
|
|
level notify( "stop_player_heartbeat" );
|
|
level.player thread maps\_utility::play_sound_on_entity( "slomo_whoosh_out" );
|
|
maps\_utility::slowmo_setlerptime_out( 0.5 );
|
|
maps\_utility::slowmo_lerp_out();
|
|
wait 0.75;
|
|
thread common_scripts\utility::flag_set( "intro_gunup" );
|
|
}
|
|
|
|
intro_wait_spotted()
|
|
{
|
|
|
|
}
|
|
|
|
intro_outlines()
|
|
{
|
|
wait 0.7;
|
|
var_0 = getaiarray( "axis" );
|
|
var_0 = sortbydistance( var_0, level.dog.origin );
|
|
var_1 = [ 0.5, 0.7, 1 ];
|
|
var_2 = 0;
|
|
|
|
foreach ( var_4 in var_0 )
|
|
{
|
|
var_4 thread maps\nml_util::hud_outlineenable();
|
|
wait( var_1[var_2] );
|
|
var_2 = var_2 + 1;
|
|
}
|
|
}
|
|
|
|
intro_dialogue()
|
|
{
|
|
level.dog endon( "dog_command_attack" );
|
|
thread intro_dialogue_2();
|
|
level endon( "intro_gunup" );
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_isiton" );
|
|
level maps\_utility::notify_delay( "camera_clears", 2 );
|
|
wait 0.5;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_oklookslikewere" );
|
|
wait 1.5;
|
|
thread maps\nml_util::blur_pulse( 4 );
|
|
level.player.dog_track_range = 3000;
|
|
level.player.dog_attack_range = 300;
|
|
thread intro_outlines();
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_contact_2" );
|
|
wait 0.7;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_enemypatrolapproaching" );
|
|
wait 0.5;
|
|
level.player setblurforplayer( 3, 0.05 );
|
|
level.player maps\_dog_drive::delete_model_fx();
|
|
level.player maps\_dog_drive::spawn_model_fx( ( 5, 0, 0 ), ( 75, 0, 0 ), ( 300, 0, 0 ) );
|
|
level.player thread maps\_dog_drive::constant_screen_glitches();
|
|
earthquake( 0.4, 0.5, level.player.origin, 1000 );
|
|
wait 0.15;
|
|
level.player lerpfov( 25, 0.05 );
|
|
level.player thread maps\_utility::play_sound_on_entity( "scn_nml_camera_zoom_out" );
|
|
level.player thread maps\_utility::notify_delay( "stop_constant_glitch", 0.3 );
|
|
wait 0.15;
|
|
level.player lerpfov( 30, 0.05 );
|
|
level.player common_scripts\utility::delaycall( 0.2, ::setblurforplayer, 0, 0.5 );
|
|
wait 0.3;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_donotengage" );
|
|
thread maps\nml_util::blur_pulse( 3 );
|
|
wait 2;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_letthemgetcloser" );
|
|
wait 0.6;
|
|
level.player setblurforplayer( 3, 0.05 );
|
|
level.player maps\_dog_drive::delete_model_fx();
|
|
level.player maps\_dog_drive::spawn_model_fx( ( 2, 0, 0 ), ( 25, 0, 0 ), ( 150, 0, 0 ) );
|
|
level.player thread maps\_dog_drive::constant_screen_glitches();
|
|
earthquake( 0.4, 0.5, level.player.origin, 1000 );
|
|
wait 0.15;
|
|
level.player lerpfov( 45, 0.05 );
|
|
level.player thread maps\_utility::play_sound_on_entity( "scn_nml_camera_zoom_out" );
|
|
level.player thread maps\_utility::notify_delay( "stop_constant_glitch", 0.3 );
|
|
wait 0.15;
|
|
level.player lerpfov( 50, 0.05 );
|
|
level.player common_scripts\utility::delaycall( 0.2, ::setblurforplayer, 0, 0.5 );
|
|
wait 0.75;
|
|
hesh_looks_at_cam();
|
|
level.player setblurforplayer( 3, 0.05 );
|
|
level.player maps\_dog_drive::delete_model_fx();
|
|
level.player maps\_dog_drive::spawn_model_fx( ( 2, 0, 0 ), ( 25, 0, 0 ), ( 150, 0, 0 ) );
|
|
level.player thread maps\_dog_drive::constant_screen_glitches();
|
|
earthquake( 0.4, 0.5, level.player.origin, 1000 );
|
|
wait 0.15;
|
|
level.player lerpfov( 65, 0.05 );
|
|
level.player thread maps\_utility::play_sound_on_entity( "scn_nml_camera_zoom_out" );
|
|
level.player thread maps\_utility::notify_delay( "stop_constant_glitch", 0.3 );
|
|
wait 0.15;
|
|
level.player lerpfov( 70, 0.05 );
|
|
level.player common_scripts\utility::delaycall( 0.2, ::setblurforplayer, 0, 0.5 );
|
|
level.dog maps\_utility::ent_flag_clear( "pause_dog_command" );
|
|
common_scripts\utility::flag_set( "intro_guys_close" );
|
|
level.player.dog_attack_range = 2000;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_doit" );
|
|
wait 0.5;
|
|
|
|
if ( getdvarint( "e3" ) == 0 )
|
|
maps\_utility::display_hint_timeout( "hint_dog_attack", 6 );
|
|
}
|
|
|
|
hesh_looks_at_cam()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "dog_intro_node" );
|
|
var_1 = spawnstruct();
|
|
var_1.origin = var_0.origin;
|
|
var_1.angles = var_0.angles;
|
|
var_2 = level.baker.origin;
|
|
var_3 = level.baker.angles;
|
|
level.baker.animname = "hesh";
|
|
level.dog maps\_utility::ent_flag_set( "pause_dog_command" );
|
|
var_0 notify( "stop_loop" );
|
|
level.player lerpviewangleclamp( 0.4, 0.3, 0.1, 0, 0, 0, 0 );
|
|
level.player thread maps\_dog_drive::constant_screen_glitches();
|
|
level.player thread maps\_utility::notify_delay( "stop_constant_glitch", 0.5 );
|
|
earthquake( 0.3, 0.75, level.dog.origin, 1000 );
|
|
maps\_art::dof_enable_script( 0, 0, 6, 35, 280, 5, 0.5 );
|
|
level.player maps\_utility::delaythread( 2.5, maps\_dog_drive::default_dof, 1.75 );
|
|
level.baker maps\_utility::gun_remove();
|
|
var_1 maps\_anim::anim_single( [ level.dog, level.baker ], "dog_intro" );
|
|
maps\_utility::autosave_stealth_silent();
|
|
level.baker maps\_utility::delaythread( 1, maps\_utility::gun_recall );
|
|
level.player lerpviewangleclamp( 0.1, 0, 0, 30, 30, 15, 15 );
|
|
var_0 thread maps\_anim::anim_generic_loop( level.dog, "dog_sneak_idle_intro" );
|
|
wait 0.2;
|
|
level.baker forceteleport( var_2, var_3 );
|
|
level.baker.goalradius = 16;
|
|
level.baker setgoalpos( level.baker.origin );
|
|
}
|
|
|
|
intro_kill_hazmats()
|
|
{
|
|
level endon( "intro_clear" );
|
|
wait 5;
|
|
var_0 = getaiarray( "axis" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( issubstr( var_2.model, "hazmat" ) )
|
|
var_2 kill();
|
|
}
|
|
}
|
|
|
|
intro_dialogue_2()
|
|
{
|
|
level.dog endon( "death" );
|
|
common_scripts\utility::flag_wait( "intro_gunup" );
|
|
wait 0.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_takeemout" );
|
|
thread intro_kill_hazmats();
|
|
common_scripts\utility::flag_wait( "intro_clear" );
|
|
wait 0.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_clear_4" );
|
|
maps\_utility::music_play( "mus_nml_travel" );
|
|
wait 0.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_thatsthethirdgroup" );
|
|
wait 0.75;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_eyespeeledcouldbe" );
|
|
level endon( "hesh_ready_to_leave_cave" );
|
|
level.baker waittill( "starting_anim" );
|
|
thread hesh_gate_logic();
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_standby" );
|
|
level.dog maps\_utility_dogs::disable_dog_sniff();
|
|
maps\_utility::delaythread( 0.3, ::cave_cairo_whine );
|
|
level.baker waittill( "starting_anim" );
|
|
level waittill( "earthquaking" );
|
|
wait 0.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_eeaasycairo" );
|
|
wait 2.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_welcomehomeadam" );
|
|
wait 1.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_whatsleftofit" );
|
|
}
|
|
|
|
hesh_gate_logic()
|
|
{
|
|
level.baker endon( "leaving_cave" );
|
|
|
|
if ( !common_scripts\utility::flag( "hesh_ready_to_leave_cave" ) )
|
|
{
|
|
thread hesh_gate_logic_exit();
|
|
level.baker waittill( "NML_gate_in" );
|
|
var_0 = spawnstruct();
|
|
var_0.origin = level.baker.origin;
|
|
var_0.angles = ( 0, 90, 0 );
|
|
var_0 thread maps\_anim::anim_generic_loop( level.baker, "NML_gate_idle" );
|
|
}
|
|
}
|
|
|
|
hesh_gate_logic_exit()
|
|
{
|
|
common_scripts\utility::flag_wait( "cave_exit" );
|
|
common_scripts\utility::flag_wait( "hesh_ready_to_leave_cave" );
|
|
level.baker notify( "leaving_cave" );
|
|
level.baker notify( "stop_loop" );
|
|
level.baker thread maps\_anim::anim_generic_gravity( level.baker, "NML_gate_out" );
|
|
common_scripts\utility::flag_set( "cave_hesh_done" );
|
|
}
|
|
|
|
cave_cairo_whine()
|
|
{
|
|
level.dog endon( "death" );
|
|
level.dog maps\_utility::play_sound_on_entity( "nml_cairo_whine_1" );
|
|
level.dog maps\_utility::play_sound_on_entity( "nml_cairo_whine_2" );
|
|
}
|
|
|
|
cave_earthquake()
|
|
{
|
|
for (;;)
|
|
{
|
|
level.baker waittill( "starting_anim", var_0 );
|
|
|
|
if ( var_0 == "NML_gate_in" )
|
|
break;
|
|
}
|
|
|
|
wait 1;
|
|
level.force_next_earthquake = 1;
|
|
level.next_quake_sound = "elm_nml_quake_cave";
|
|
level.next_earthquake = "med_4s";
|
|
common_scripts\utility::flag_set( "start_earthquakes" );
|
|
level notify( "trigger_earthquake" );
|
|
level waittill( "earthquaking" );
|
|
maps\_utility::activate_trigger_with_noteworthy( "cave_quake_trig" );
|
|
}
|
|
|
|
children_sounds()
|
|
{
|
|
self waittill( "trigger" );
|
|
level.player thread maps\_utility::play_sound_on_entity( "elm_ghostly_children" );
|
|
}
|
|
|
|
crater_ledge_walk()
|
|
{
|
|
level.dog endon( "death" );
|
|
common_scripts\utility::flag_clear( "start_earthquakes" );
|
|
maps\nml_util::team_unset_colors( 64 );
|
|
level.baker maps\_utility::clear_generic_idle_anim();
|
|
maps\nml_util::hero_paths( "crater_pos_2", 300, 300, 300, 0, 0 );
|
|
wait 0.2;
|
|
common_scripts\utility::flag_wait( "start_ledge_walk" );
|
|
maps\nml_util::hero_paths( "post_crater_setup", 300, 300, 0, 0, 0 );
|
|
wait 0.2;
|
|
thread hesh_crater_walk();
|
|
thread post_crater_dog_scared();
|
|
}
|
|
|
|
hesh_crater_walk()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "cliff_walk_node_2" );
|
|
var_0 maps\_anim::anim_generic_reach( level.baker, "NML_cliff_walk" );
|
|
common_scripts\utility::flag_set( "start_ledge_walk" );
|
|
|
|
if ( !common_scripts\utility::flag( "church_fall" ) )
|
|
{
|
|
var_1 = common_scripts\utility::get_target_ent( "force_church_fall_trigger" );
|
|
var_1 delete();
|
|
level.baker maps\_utility::delaythread( 0.1, maps\_utility::smart_dialogue, "nml_hsh_watchyourstepover_2" );
|
|
var_0 thread maps\_anim::anim_generic( level.baker, "NML_cliff_walk" );
|
|
wait 7.2;
|
|
common_scripts\utility::flag_set( "church_fall" );
|
|
}
|
|
else
|
|
common_scripts\utility::flag_set( "skip_church_walk" );
|
|
|
|
level.baker maps\_utility::enable_cqbwalk();
|
|
}
|
|
|
|
post_crater_dog_scared()
|
|
{
|
|
level.dog endon( "death" );
|
|
level.dog waittill( "path_end_reached" );
|
|
common_scripts\utility::flag_wait( "start_ledge_walk" );
|
|
common_scripts\utility::flag_wait( "church_fall" );
|
|
level.baker pushplayer( 1 );
|
|
level.baker.animname = "hesh";
|
|
var_0 = common_scripts\utility::get_target_ent( "dog_affection_node" );
|
|
var_0 maps\_anim::anim_reach_solo( level.baker, "dog_affection" );
|
|
thread cairo_scared_dialogue();
|
|
level.baker.anim_blend_time_override = 1;
|
|
var_0 thread maps\_anim::anim_single( [ level.dog, level.baker ], "dog_affection" );
|
|
wait 3.35;
|
|
level.baker.anim_blend_time_override = 0.5;
|
|
thread pc_walla();
|
|
level.dog thread maps\_utility::play_sound_on_entity( "scn_nml_dog_crater_growl" );
|
|
wait 0.66;
|
|
level.dog thread maps\_utility_dogs::dog_bark( "scn_nml_dog_crater_bark" );
|
|
thread common_scripts\utility::play_sound_in_space( "scn_nml_dog_crater_bark_dist", ( 1341, -1142, -153 ) );
|
|
wait 0.1;
|
|
common_scripts\utility::flag_set( "baker_cliff_done" );
|
|
common_scripts\utility::flag_set( "start_post_crater" );
|
|
common_scripts\utility::flag_set( "crater_scared_done" );
|
|
level.dog.anim_blend_time_override = 0.75;
|
|
level.dog thread maps\_anim::anim_generic( level.dog, "iw6_dog_attackidle_runout_6" );
|
|
level.dog common_scripts\utility::delaycall( 0.95, ::stopanimscripted );
|
|
level.baker thread maps\_anim::anim_generic_gravity( level.baker, "_stealth_behavior_generic2" );
|
|
level.baker thread maps\_utility::play_sound_on_entity( "scn_nml_hesh_pet_cairo_up" );
|
|
maps\_utility::delaythread( 2, ::scared_danger_dialogue );
|
|
level.baker endon( "follow_path" );
|
|
level.baker waittill( "_stealth_behavior_generic2" );
|
|
level.baker setgoalpos( level.baker.origin );
|
|
level.baker.anim_blend_time_override = undefined;
|
|
level.dog.anim_blend_time_override = undefined;
|
|
level.baker pushplayer( 1 );
|
|
common_scripts\utility::flag_set( "baker_cliff_done" );
|
|
common_scripts\utility::flag_set( "start_post_crater" );
|
|
common_scripts\utility::flag_set( "crater_scared_done" );
|
|
}
|
|
|
|
pc_walla()
|
|
{
|
|
level endon( "start_post_crater_dog" );
|
|
var_0 = common_scripts\utility::get_target_ent( "pc_walla_org" );
|
|
|
|
for ( var_1 = 1; var_1 < 9; var_1++ )
|
|
{
|
|
common_scripts\utility::play_sound_in_space( level.scr_sound["generic"]["walla_4_" + var_1], var_0.origin );
|
|
wait( randomfloatrange( 0.3, 0.6 ) );
|
|
}
|
|
}
|
|
|
|
cairo_scared_dialogue()
|
|
{
|
|
level.dog endon( "death" );
|
|
level.dog notify( "stop_whine" );
|
|
level.dog thread maps\_utility::play_sound_on_entity( "nml_cairo_whine_2" );
|
|
wait 0.6;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_youreallrightboy" );
|
|
}
|
|
|
|
scared_danger_dialogue()
|
|
{
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_soundsliketrouble" );
|
|
}
|
|
|
|
cairo_church_whines()
|
|
{
|
|
level.dog endon( "death" );
|
|
level.dog maps\_utility::play_sound_on_entity( "nml_cairo_whine_7" );
|
|
level.dog endon( "stop_whine" );
|
|
|
|
for (;;)
|
|
{
|
|
level.dog maps\_utility::play_sound_on_entity( "nml_cairo_whine_6" );
|
|
level.dog maps\_utility::play_sound_on_entity( "nml_cairo_whine_4" );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
church_collapse()
|
|
{
|
|
level.dog endon( "death" );
|
|
wait 1;
|
|
common_scripts\utility::flag_set( "start_earthquakes" );
|
|
level.player allowsprint( 0 );
|
|
level.force_next_earthquake = 1;
|
|
level.next_quake_sound = "scn_nml_church_quake1";
|
|
level notify( "trigger_earthquake" );
|
|
level.player thread maps\_utility::player_speed_percent( 30, 0.1 );
|
|
level.player maps\_utility::delaythread( 1.5, maps\_utility::player_speed_percent, 80, 2 );
|
|
maps\_utility::activate_trigger_with_targetname( "crater_mover1" );
|
|
thread attach_dust_to_mover( "crater_mover1", "scn_nml_crater_fall_01" );
|
|
common_scripts\utility::exploder( "crater_chunk_1" );
|
|
wait 4;
|
|
common_scripts\utility::flag_set( "start_earthquakes" );
|
|
level notify( "trigger_earthquake" );
|
|
level.force_next_earthquake = 1;
|
|
level.next_quake_sound = "scn_nml_church_quake2";
|
|
level.next_earthquake = "med_4s";
|
|
level waittill( "earthquaking" );
|
|
level.player thread maps\_utility::player_speed_percent( 10, 0.75 );
|
|
level.player maps\_utility::ent_flag_init( "fall" );
|
|
level.player maps\_utility::ent_flag_init( "collapse" );
|
|
level.player thread maps\_player_limp::stumble( ( 5, 2, 7 ), 0.75, 2 );
|
|
maps\_utility::activate_trigger_with_targetname( "crater_mover2" );
|
|
thread attach_dust_to_mover( "crater_mover2", "scn_nml_crater_fall_02" );
|
|
common_scripts\utility::exploder( "crater_chunk_2" );
|
|
wait 2;
|
|
level.player thread maps\_utility::player_speed_percent( 75, 1.5 );
|
|
level.player allowsprint( 1 );
|
|
common_scripts\utility::exploder( "church_collapse_birds" );
|
|
common_scripts\utility::flag_wait( "church_fall" );
|
|
thread cairo_church_whines();
|
|
common_scripts\utility::flag_set( "start_earthquakes" );
|
|
level notify( "trigger_earthquake" );
|
|
level.force_next_earthquake = 1;
|
|
level.next_quake_sound = "scn_nml_church_quake3";
|
|
level.next_earthquake = "med_4s";
|
|
level waittill( "earthquaking" );
|
|
level.player allowsprint( 0 );
|
|
level.player thread maps\_utility::player_speed_percent( 10, 0.75 );
|
|
level.player thread maps\_utility::play_sound_on_entity( "scn_nml_foot_shuffle_plr" );
|
|
maps\_utility::delaythread( 1, common_scripts\utility::exploder, "cliff_hero_dust" );
|
|
level.player thread maps\_player_limp::stumble( ( 10, 5, 15 ), 0.75, 2 );
|
|
wait 0.5;
|
|
thread common_scripts\utility::do_earthquake( "weak_15s", level.player.origin );
|
|
level.player setstance( "crouch" );
|
|
level.player disableweapons();
|
|
thread crater_baker_stumble();
|
|
maps\_utility::delaythread( 1, ::church_fall );
|
|
wait 5.5;
|
|
level.player enableweapons();
|
|
level.player thread maps\_utility::play_sound_on_entity( "weap_raise_plr" );
|
|
level.player thread maps\_utility::player_speed_percent( 100, 1.5 );
|
|
level.player allowsprint( 1 );
|
|
}
|
|
|
|
crater_baker_stumble()
|
|
{
|
|
level.baker thread maps\_utility::smart_dialogue( "nml_hsh_shimmy" );
|
|
}
|
|
|
|
attach_dust_to_mover( var_0, var_1 )
|
|
{
|
|
var_2 = common_scripts\utility::get_target_ent( var_0 );
|
|
var_3 = var_2.mover common_scripts\utility::get_target_ent();
|
|
playfxontag( common_scripts\utility::getfx( "crater_chunk_dust" ), var_3, "tag_origin" );
|
|
var_3 thread maps\_utility::play_sound_on_entity( var_1 );
|
|
var_2 waittill( "done_moving" );
|
|
wait 8;
|
|
stopfxontag( common_scripts\utility::getfx( "crater_chunk_dust" ), var_3, "tag_origin" );
|
|
}
|
|
|
|
church_fall()
|
|
{
|
|
var_0 = getent( "church_cliff", "targetname" );
|
|
var_0.no_delete = 1;
|
|
var_1 = spawnstruct();
|
|
var_1.origin = var_0.origin;
|
|
var_1.angles = var_0.angles;
|
|
level.player thread common_scripts\utility::play_sound_in_space( "scn_nml_church_mono", ( 1588, 1015, -5 ) );
|
|
level.player maps\_utility::delaythread( 6.326, common_scripts\utility::play_sound_in_space, "scn_nml_churchground_mono", ( 1048, -430, -1854 ) );
|
|
wait 0.075;
|
|
var_2 = 1;
|
|
var_3 = getentarray( "church_pieces", "script_noteworthy" );
|
|
var_4 = 0;
|
|
|
|
foreach ( var_6 in var_3 )
|
|
{
|
|
var_6.animname = var_6.targetname;
|
|
var_6 useanimtree( level.scr_animtree["church_cliff"] );
|
|
var_7 = getanimlength( var_6 maps\_utility::getanim( "collapse" ) ) / var_2;
|
|
|
|
if ( var_4 < var_7 )
|
|
var_4 = var_7;
|
|
}
|
|
|
|
if ( !maps\_utility::game_is_current_gen() )
|
|
{
|
|
var_9 = anglestoforward( var_1.angles );
|
|
var_10 = anglestoup( var_1.angles );
|
|
playfx( common_scripts\utility::getfx( "vfx_church_collapse_debris" ), var_1.origin, var_9, var_10 );
|
|
}
|
|
|
|
common_scripts\utility::exploder( "church_collapse_smoke" );
|
|
var_11 = [ "church_piece_15", "church_piece_14", "church_piece_13", "church_piece_12", "church_piece_11", "church_piece_10", "church_piece_9", "church_piece_8", "church_piece_7", "church_piece_6", "church_piece_5" ];
|
|
var_12 = [ "church_piece_15", "church_piece_14", "church_piece_13", "church_piece_12" ];
|
|
|
|
foreach ( var_6 in var_3 )
|
|
{
|
|
if ( level.ps3 && common_scripts\utility::array_contains( var_11, var_6.animname ) )
|
|
{
|
|
var_6 delete();
|
|
continue;
|
|
}
|
|
|
|
if ( level.xenon && common_scripts\utility::array_contains( var_12, var_6.animname ) )
|
|
{
|
|
var_6 delete();
|
|
continue;
|
|
}
|
|
|
|
var_6 setflaggedanimrestart( "collapse", var_6 maps\_utility::getanim( "collapse" ), 1, 0.1, var_2 );
|
|
var_6 thread delete_on_collapse_done();
|
|
}
|
|
|
|
wait( var_4 );
|
|
var_15 = spawn( "script_model", var_1.origin );
|
|
var_15.angles = var_1.angles;
|
|
var_15 setmodel( "vfx_nml_church_lastframe" );
|
|
}
|
|
|
|
delete_on_collapse_done()
|
|
{
|
|
if ( isdefined( self.no_delete ) )
|
|
return;
|
|
|
|
self waittillmatch( "collapse", "end" );
|
|
self delete();
|
|
}
|
|
|
|
growl_on_path_end()
|
|
{
|
|
level.dog endon( "death" );
|
|
level endon( "start_post_crater_dog" );
|
|
self waittill( "path_end_reached" );
|
|
wait 0.5;
|
|
|
|
while ( isdefined( level.dog.script_growl ) )
|
|
{
|
|
wait( randomfloatrange( 0.5, 1 ) );
|
|
maps\_utility::play_sound_on_entity( "scn_nml_dog_growl_fuss" );
|
|
}
|
|
|
|
level waittill( "hesh_foos_line_finished" );
|
|
wait 0.2;
|
|
maps\_utility::play_sound_on_entity( "scn_nml_dog_growl_fuss_final" );
|
|
}
|
|
|
|
sync_nag()
|
|
{
|
|
level endon( "kill_sync_nag" );
|
|
wait 5;
|
|
|
|
for (;;)
|
|
{
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_adamsynconriley" );
|
|
wait 10;
|
|
}
|
|
}
|
|
|
|
post_crater_dog_setup()
|
|
{
|
|
level.dog endon( "death" );
|
|
common_scripts\utility::flag_wait( "crater_scared_done" );
|
|
level.baker maps\nml_util::set_move_rate( 1 );
|
|
level.baker maps\_utility::clear_generic_idle_anim();
|
|
setsaveddvar( "ai_friendlyFireBlockDuration", 0 );
|
|
maps\nml_util::team_unset_colors( 96 );
|
|
level.baker maps\_utility::delaythread( 2, maps\_utility::enable_cqbwalk );
|
|
level.dog.script_growl = 1;
|
|
level.dog maps\nml_util::set_move_rate( 1 );
|
|
level.dog pushplayer( 1 );
|
|
level.baker pushplayer( 1 );
|
|
maps\nml_util::hero_paths_cairo_first( "post_crater_pos1" );
|
|
level.dog maps\_utility::set_generic_idle_anim( "dog_alert" );
|
|
level.dog thread growl_on_path_end();
|
|
level.dog waittill( "path_end_reached" );
|
|
common_scripts\utility::flag_wait( "post_crater_pos1" );
|
|
wait 0.7;
|
|
level.dog.script_growl = undefined;
|
|
level.dog.script_nobark = 1;
|
|
level notify( "hesh_foos_line_finished" );
|
|
wait 0.5;
|
|
level.baker maps\_utility::disable_cqbwalk();
|
|
level.baker allowedstances( "crouch" );
|
|
level.baker thread maps\_utility::smart_dialogue( "nml_hsh_adamsyncupwith" );
|
|
thread sync_nag();
|
|
setsaveddvar( "r_hudoutlinewidth", 3 );
|
|
var_0 = level.dog.model;
|
|
level.dog maps\_utility_dogs::set_dog_model( "fullbody_dog_a_cam_obj" );
|
|
var_1 = level.dog;
|
|
var_1 makeusable();
|
|
|
|
if ( !level.console && !level.player usinggamepad() )
|
|
var_1 sethintstring( &"NML_HINT_SYNC_KB" );
|
|
else
|
|
var_1 sethintstring( &"NML_HINT_SYNC" );
|
|
|
|
var_1 waittill( "trigger" );
|
|
level notify( "kill_sync_nag" );
|
|
level.dog maps\_utility_dogs::set_dog_model_no_fur( var_0 );
|
|
var_1 makeunusable();
|
|
level.player maps\_utility::player_speed_percent( 1, 0.05 );
|
|
level.player allowjump( 0 );
|
|
level.player allowsprint( 0 );
|
|
level.dog maps\_utility::delaythread( 0.01, maps\_utility_dogs::dog_raise_camera, 0.4 );
|
|
level.baker stopsounds();
|
|
thread maps\_utility::smart_radio_dialogue_interrupt( "nml_hsh_herewego" );
|
|
setsaveddvar( "r_hudoutlinewidth", 1 );
|
|
level.player.pre_dogcam_weapon = level.player getcurrentweapon();
|
|
level.player disableweaponswitch();
|
|
level.player giveweapon( "remote_chopper_gunner" );
|
|
level.player switchtoweapon( "remote_chopper_gunner" );
|
|
setdvar( "hideHudFast", 1 );
|
|
setsaveddvar( "ammoCounterHide", 1 );
|
|
level.player thread maps\_utility::play_sound_on_entity( "uav_remote_raise_plr" );
|
|
cinematicingameloop( "dog_out" );
|
|
wait 1;
|
|
maps\_hud_util::fade_out( 0.5, "overlay_static" );
|
|
wait 0.5;
|
|
thread maps\_lights::lerp_sunsamplesizenear_overtime( 0.25, 0.1 );
|
|
level.dog maps\_utility::clear_generic_idle_anim();
|
|
common_scripts\utility::flag_set( "start_post_crater_dog" );
|
|
wait 0.5;
|
|
level.player setclienttriggeraudiozone( "nml_dog_camera", 0.5 );
|
|
thread maps\_utility::music_play( "mus_nml_post_crater" );
|
|
maps\_hud_util::fade_in( 0.5, "overlay_static" );
|
|
common_scripts\utility::noself_delaycall( 4, ::stopcinematicingame );
|
|
level.player maps\_utility::player_speed_percent( 100, 0.1 );
|
|
level.player allowjump( 1 );
|
|
level.player allowsprint( 1 );
|
|
}
|
|
|
|
player_drive_dog_pc()
|
|
{
|
|
maps\nml_stealth::stealth_settings_dog_pc();
|
|
var_0 = getaiarray( "axis" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
var_2 delete();
|
|
|
|
level.dog.idlelookattargets = undefined;
|
|
level.dog.ignoreall = 1;
|
|
level.baker.ignoreme = 1;
|
|
level.player.ignoreme = 1;
|
|
level.dog maps\_utility::clear_generic_idle_anim();
|
|
level.dog.script_nobark = 1;
|
|
level.dog maps\nml_util::set_move_rate( 0.7 );
|
|
level.dog.ignoreme = 1;
|
|
level.dog maps\_utility::enable_pain();
|
|
level.dog_alt_melee_func = undefined;
|
|
level.player maps\_dog_drive::dog_drive_indirect( level.dog );
|
|
thread maps\nml_stealth::dog_footstep_logic();
|
|
thread maps\nml_util::mission_fail_on_dog_death();
|
|
level.dog maps\_utility::ent_flag_set( "dogcam_acquire_targets" );
|
|
level.player lerpviewangleclamp( 0.3, 0, 0.2, 0, 0, 0, 0 );
|
|
level.dog setdogcommand( "attack" );
|
|
common_scripts\utility::waitframe();
|
|
thread pc_dog_drive_dialogue();
|
|
level.player thread maps\_dog_drive::constant_screen_glitches();
|
|
level.player maps\_utility::notify_delay( "stop_constant_glitch", 2 );
|
|
level.baker.ignoreall = 1;
|
|
thread track_dog_attacks();
|
|
thread hint_for_first_attack();
|
|
var_4 = common_scripts\utility::get_target_ent( "dog_pc_drive_start" );
|
|
level.dog notify( "stop_loop" );
|
|
level.dog stopanimscripted();
|
|
level.dog.pushplayer = 1;
|
|
level.dog pushplayer( 1 );
|
|
level.dog.goalradius = 32;
|
|
var_5 = common_scripts\utility::get_target_ent( "pc_player_teleport" );
|
|
level.player setorigin( var_5.origin );
|
|
level.dog setgoalpos( var_4.origin );
|
|
level.dog maps\_utility::disable_arrivals();
|
|
level.dog maps\_utility::disable_exits();
|
|
thread dog_over_car_sound();
|
|
level.dog waittill( "goal" );
|
|
level.dog thread maps\_anim::anim_generic_gravity( level.dog, "iw6_dog_sneak_runin_8" );
|
|
level.player maps\_dog_drive::default_dog_limits();
|
|
level.dog setdogcommand( "driven" );
|
|
level.dog.ignoreme = 0;
|
|
level.dog.ignoreall = 0;
|
|
maps\_utility::autosave_stealth_silent();
|
|
level.dog maps\_utility::enable_arrivals();
|
|
level.dog maps\_utility::enable_exits();
|
|
}
|
|
|
|
dog_over_car_sound()
|
|
{
|
|
level.dog waittill( "dog_traverse" );
|
|
level.dog maps\_utility::play_sound_on_entity( "scn_nml_dog_traversal" );
|
|
}
|
|
|
|
track_dog_attacks()
|
|
{
|
|
for ( level.dog.attack_times = 0; level.dog.attack_times < 1; level.dog.attack_times = level.dog.attack_times + 1 )
|
|
level waittill( "dog_attacks_ai" );
|
|
}
|
|
|
|
hint_for_first_attack()
|
|
{
|
|
while ( level.dog.attack_times < 1 )
|
|
{
|
|
level.player waittill( "dogcam_acquired_target" );
|
|
maps\_utility::display_hint_timeout( "hint_dog_attack_cam", 3 );
|
|
wait 0.2;
|
|
}
|
|
}
|
|
|
|
pc_dog_drive_dialogue()
|
|
{
|
|
level endon( "pc_dog_moved" );
|
|
wait 0.1;
|
|
thread pc_track_guy_1();
|
|
thread pc_dog_drive_dialogue_2();
|
|
thread pc_dog_drive_dialogue_3();
|
|
thread pc_dog_drive_dialogue_4();
|
|
wait 0.5;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_okthevestis" );
|
|
wait 0.5;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_itllhelpguidehim" );
|
|
wait 1;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_scanaroundfora" );
|
|
}
|
|
|
|
pc_track_guy_1()
|
|
{
|
|
level endon( "stop_dogdrive_script" );
|
|
level.dog endon( "death" );
|
|
var_0 = maps\_utility::get_living_ai( "pc_hazmat_closest", "script_noteworthy" );
|
|
var_0 thread maps\nml_util::hazmat_think( "stand" );
|
|
var_0 maps\nml_util::waittill_player_lookat_on_dog( 1, 0.9 );
|
|
common_scripts\utility::flag_set( "pc_dog_moved" );
|
|
}
|
|
|
|
pc_dog_drive_dialogue_2()
|
|
{
|
|
level endon( "stop_dogdrive_script" );
|
|
var_0 = maps\_utility::get_living_ai( "pc_hazmat_closest", "script_noteworthy" );
|
|
var_0 thread maps\_utility::flag_on_death( "pc_guy_1_dead" );
|
|
var_0 endon( "death" );
|
|
common_scripts\utility::flag_wait( "pc_dog_moved" );
|
|
common_scripts\utility::flag_set( "pc_dog_at_wall" );
|
|
maps\_utility::smart_radio_dialogue_interrupt( "nml_hsh_okiseetwo" );
|
|
wait 1;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_letthemseparate" );
|
|
wait 4;
|
|
thread maps\_utility::smart_radio_dialogue( "nml_hsh_thecloseronetake" );
|
|
maps\_utility::display_hint_timeout( "hint_dog_approach", 15 );
|
|
}
|
|
|
|
pc_dog_drive_dialogue_3()
|
|
{
|
|
level endon( "stop_dogdrive_script" );
|
|
thread maps\nml_util::track_player_bark();
|
|
var_0 = maps\_utility::get_living_ai( "pc_hazmat_farther", "script_noteworthy" );
|
|
var_0 thread maps\_utility::flag_on_death( "pc_guy_2_dead" );
|
|
var_0 endon( "death" );
|
|
common_scripts\utility::flag_wait( "pc_guy_1_dead" );
|
|
level endon( "pc_saw_second_guy" );
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_nice_2" );
|
|
wait 1;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_hmwheredtheother" );
|
|
wait 1.5;
|
|
thread pc_saw_second_guy( var_0 );
|
|
|
|
if ( !level.console && !level.player usinggamepad() )
|
|
maps\_utility::display_hint( "hint_bark_kb" );
|
|
else
|
|
maps\_utility::display_hint( "hint_bark" );
|
|
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_seeifyoucan" );
|
|
}
|
|
|
|
pc_saw_second_guy( var_0 )
|
|
{
|
|
level endon( "stop_dogdrive_script" );
|
|
level.dog endon( "death" );
|
|
var_0 maps\nml_util::waittill_player_lookat_on_dog( 0.75, 0.75 );
|
|
level notify( "pc_saw_second_guy" );
|
|
var_0 maps\_utility::set_hudoutline( "enemy", 0 );
|
|
var_0 endon( "dog_attacks_ai" );
|
|
level.dog thread maps\_utility::play_sound_on_entity( "scn_nml_camera_enemy_contact_on" );
|
|
|
|
if ( isdefined( var_0 ) && distance( var_0.origin, level.dog.origin ) > 450 )
|
|
{
|
|
maps\_utility::smart_radio_dialogue_interrupt( "nml_hsh_thereheis" );
|
|
wait 0.7;
|
|
}
|
|
|
|
var_1 = 1;
|
|
|
|
if ( isalive( var_0 ) && !isdefined( var_0.syncedmeleetarget ) )
|
|
maps\_utility::smart_radio_dialogue_interrupt( "nml_hsh_illtakethisone" );
|
|
|
|
wait 0.6;
|
|
|
|
if ( isalive( var_0 ) && !isdefined( var_0.syncedmeleetarget ) )
|
|
level.baker maps\nml_stealth::magic_stealth_shot( var_0, var_1 );
|
|
}
|
|
|
|
pc_dog_drive_dialogue_4()
|
|
{
|
|
level endon( "stop_dogdrive_script" );
|
|
common_scripts\utility::flag_wait( "pc_guy_1_dead" );
|
|
common_scripts\utility::flag_wait( "pc_guy_2_dead" );
|
|
wait 0.5;
|
|
maps\_utility::smart_radio_dialogue_interrupt( "nml_hsh_alright" );
|
|
wait 0.3;
|
|
maps\_utility::autosave_stealth();
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_havecairosearchthe" );
|
|
}
|
|
|
|
guy_wait_for_bark( var_0 )
|
|
{
|
|
level endon( "pc_saw_second_guy" );
|
|
level waittill( "dog_barked", var_1 );
|
|
var_2 = spawn( "script_origin", var_1.origin );
|
|
var_2.origin = var_1.origin;
|
|
var_2.angles = var_1.angles;
|
|
var_2.targetname = "dog_patrol_node";
|
|
var_0.script_animation = "creepwalk";
|
|
var_0 thread maps\_patrol::patrol( "dog_patrol_node" );
|
|
}
|
|
|
|
pc_dog_drive_killed_by_sniper( var_0 )
|
|
{
|
|
if ( getdvarint( "jimmy", 0 ) == 0 )
|
|
{
|
|
var_0 endon( "death" );
|
|
maps\_utility::trigger_wait_targetname( "pc_courtyard_trigger" );
|
|
common_scripts\utility::flag_set( "_stealth_spotted" );
|
|
wait 1.5;
|
|
var_0 maps\nml_stealth::magic_stealth_shot( level.dog );
|
|
}
|
|
}
|
|
|
|
pc_dog_drive_spotted()
|
|
{
|
|
level endon( "pc_dog_drive_killed_guard" );
|
|
level endon( "start_post_crater_house" );
|
|
level.dog endon( "death" );
|
|
common_scripts\utility::flag_wait( "_stealth_spotted" );
|
|
thread maps\_utility::smart_radio_dialogue_interrupt( "nml_hsh_werespottedtakeem" );
|
|
var_0 = getaiarray( "axis" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
var_2 getenemyinfo( level.dog );
|
|
|
|
if ( issubstr( var_2.model, "hazmat" ) )
|
|
{
|
|
var_2 notify( "runaway", level.dog );
|
|
continue;
|
|
}
|
|
|
|
var_2 notify( "stop_path" );
|
|
var_2 notify( "end_patrol" );
|
|
var_2.favoritenemy = level.dog;
|
|
var_2 setgoalentity( level.dog );
|
|
}
|
|
}
|
|
|
|
courtyard_guys_notify_on_death( var_0 )
|
|
{
|
|
if ( self == var_0 )
|
|
return;
|
|
|
|
if ( issubstr( self.model, "hazmat" ) )
|
|
return;
|
|
|
|
self waittill( "death" );
|
|
level notify( "pc_dog_drive_killed_guard" );
|
|
}
|
|
|
|
pc_dog_drive_enemies()
|
|
{
|
|
level.dog endon( "death" );
|
|
level endon( "stop_dogdrive_script" );
|
|
var_0 = maps\_utility::array_spawn_targetname( "post_crater_dog_guys", 1 );
|
|
thread maps\nml_util::make_enemy_squad_burst( var_0, "cave_exit" );
|
|
common_scripts\utility::array_thread( var_0, maps\nml_util::hud_outlineenable );
|
|
var_1 = common_scripts\utility::get_target_ent( "pc_search_1_volume" );
|
|
var_1 waittill( "trigger" );
|
|
maps\nml_util::volume_waittill_no_axis( "pc_search_1_volume" );
|
|
wait 0.75;
|
|
var_1 = common_scripts\utility::get_target_ent( "pc_search_1_exit" );
|
|
var_1 waittill( "trigger" );
|
|
common_scripts\utility::flag_set( "pc_dogdrive_courtyard" );
|
|
courtyard_guys_walla();
|
|
var_2 = maps\_utility::get_living_ai( "balcony_guy", "script_noteworthy" );
|
|
common_scripts\utility::array_thread( getaiarray( "axis" ), ::courtyard_guys_notify_on_death, var_2 );
|
|
thread pc_dog_drive_killed_by_sniper( var_2 );
|
|
maps\_utility::smart_radio_dialogue_interrupt( "nml_hsh_hangonivegot" );
|
|
var_2 maps\_utility::set_hudoutline( "enemy", 0 );
|
|
level.dog thread maps\_utility::play_sound_on_entity( "scn_nml_camera_enemy_contact_on" );
|
|
wait 1;
|
|
thread maps\_utility::smart_radio_dialogue( "nml_hsh_hesmine" );
|
|
wait 1.6;
|
|
level.baker maps\nml_stealth::magic_stealth_shot( var_2, 2 );
|
|
level.baker.ignoreall = 1;
|
|
common_scripts\utility::flag_set( "pc_sniper_dead" );
|
|
wait 2;
|
|
|
|
if ( !level.console && !level.player usinggamepad() && maps\_utility::is_command_bound( "+sprint_zoom" ) )
|
|
maps\_utility::display_hint_timeout( "hint_dog_sprintzoom", 9 );
|
|
else
|
|
maps\_utility::display_hint_timeout( "hint_dog_sprint", 9 );
|
|
|
|
var_2 = getaiarray( "axis" );
|
|
|
|
if ( var_2.size > 1 )
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_oktaketheguard" );
|
|
}
|
|
|
|
pc_dog_drive_end()
|
|
{
|
|
common_scripts\utility::flag_wait( "pc_dogdrive_courtyard" );
|
|
maps\nml_util::volume_waittill_no_axis( "pc_search_2_volume" );
|
|
maps\nml_util::volume_waittill_no_axis( "post_crater_volume" );
|
|
level notify( "stop_dogdrive_script" );
|
|
wait 0.5;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_allclear" );
|
|
wait 0.7;
|
|
thread maps\_utility::smart_radio_dialogue( "nml_hsh_goodboycairo_2" );
|
|
cinematicingameloop( "dog_out" );
|
|
level.player thread maps\_dog_drive::constant_screen_glitches();
|
|
wait 0.5;
|
|
level.player clearclienttriggeraudiozone( 0.5 );
|
|
level.player thread maps\_utility::play_sound_on_entity( "scn_nml_tablet_put_away" );
|
|
level.player notify( "disable_zoom" );
|
|
maps\_hud_util::fade_out( 0.25, "overlay_static" );
|
|
wait 0.5;
|
|
var_0 = getaiarray( "axis" );
|
|
common_scripts\utility::array_call( var_0, ::delete );
|
|
maps\_stealth_visibility_system::system_state_try_clear_flag( "default" );
|
|
level.player freezecontrols( 1 );
|
|
level.dog_alt_melee_func = undefined;
|
|
level.dog.script_nostairs = undefined;
|
|
level.dog.script_noturnanim = undefined;
|
|
level.baker.ignoreall = 0;
|
|
level.player maps\_dog_drive::dog_drive_indirect_disable( level.dog );
|
|
level.dog.melee = undefined;
|
|
level.dog thread maps\_utility::magic_bullet_shield();
|
|
level.dog maps\_utility_dogs::set_dog_model( level.dog.model );
|
|
common_scripts\utility::flag_waitopen( "_stealth_spotted" );
|
|
maps\nml_util::set_start_positions( "start_post_crater_house" );
|
|
common_scripts\utility::flag_set( "start_post_crater_house" );
|
|
level.player giveweapon( "fraggrenade" );
|
|
maps\_hud_util::fade_in( 0.25, "overlay_static" );
|
|
|
|
if ( !isdefined( level.player.pre_dogcam_weapon ) )
|
|
level.player.pre_dogcam_weapon = "honeybadger+acog_sp";
|
|
|
|
level.player disableweaponswitch();
|
|
level.player switchtoweapon( level.player.pre_dogcam_weapon );
|
|
wait 0.5;
|
|
level.player freezecontrols( 0 );
|
|
wait 1;
|
|
level.player takeweapon( "remote_chopper_gunner" );
|
|
level.player enableweaponswitch();
|
|
setdvar( "hideHudFast", 0 );
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
common_scripts\utility::noself_delaycall( 4, ::stopcinematicingame );
|
|
}
|
|
|
|
courtyard_guys_walla()
|
|
{
|
|
var_0 = maps\_utility::get_living_ai( "balcony_guy", "script_noteworthy" );
|
|
var_1 = getaiarray( "axis" );
|
|
var_2 = [];
|
|
|
|
foreach ( var_4 in var_1 )
|
|
{
|
|
var_4 thread maps\_utility::set_battlechatter( 0 );
|
|
|
|
if ( var_4 != var_0 )
|
|
{
|
|
var_2 = common_scripts\utility::array_add( var_2, var_4 );
|
|
|
|
if ( !issubstr( var_4.model, "hazmat" ) )
|
|
var_4.use_old_dog_attack = 1;
|
|
}
|
|
}
|
|
|
|
thread maps\nml_util::group_walla( var_2, 3, 5 );
|
|
}
|
|
|
|
courtyard_hazmat_guy_think()
|
|
{
|
|
thread maps\nml_util::hazmat_think( "crouch" );
|
|
}
|
|
|
|
post_crater_end()
|
|
{
|
|
maps\_utility::stop_exploder( "church_sunflare" );
|
|
common_scripts\utility::flag_waitopen( "_stealth_spotted" );
|
|
level.baker maps\nml_util::set_move_rate( 1 );
|
|
level.slowmo_breach_start_delay = 0.5;
|
|
level.slomobreachduration = 5.5;
|
|
common_scripts\utility::flag_set( "post_crater_1_clear" );
|
|
thread post_crater_breach_walla();
|
|
wait 1;
|
|
maps\_utility::autosave_by_name( "nml" );
|
|
level.baker allowedstances( "stand", "crouch", "prone" );
|
|
level.dog maps\nml_util::set_move_rate( 1 );
|
|
level.dog maps\_utility_dogs::dyn_sniff_disable();
|
|
maps\nml_util::team_unset_colors( 128 );
|
|
maps\nml_util::hero_paths( "post_crater_exit_path" );
|
|
thread post_crater_breach_dialogue();
|
|
level.baker waittill( "path_end_reached" );
|
|
maps\_utility::trigger_wait_targetname( "post_crater_front_of_house" );
|
|
var_0 = common_scripts\utility::get_target_ent( "pc_house_entrance_dog" );
|
|
var_1 = common_scripts\utility::get_target_ent( "pc_house_baker_node" );
|
|
var_2 = common_scripts\utility::get_target_ent( "post_crater_house_enemy_flee" );
|
|
var_3 = common_scripts\utility::get_target_ent( "player_breach_node" );
|
|
thread pc_house_baker_get_ready( var_1 );
|
|
var_4 = maps\_player_rig::get_player_rig();
|
|
var_4 hide();
|
|
var_4.origin = var_3.origin;
|
|
var_4.angles = var_3.angles;
|
|
var_5 = level.player getcurrentweapon();
|
|
level.player.prebreachcurrentweapon = var_5;
|
|
|
|
if ( level.player maps\_slowmo_breach::should_topoff_breach_weapon( var_5 ) )
|
|
{
|
|
var_6 = weaponclipsize( var_5 );
|
|
|
|
if ( level.player getweaponammoclip( var_5 ) < var_6 )
|
|
level.player setweaponammoclip( var_5, var_6 );
|
|
}
|
|
|
|
level.player.prebreachcurrentweapon = undefined;
|
|
level.player thread maps\_utility::play_sound_on_entity( "scn_nml_plr_weap_down" );
|
|
level.player disableweapons();
|
|
level.player allowstand( 0 );
|
|
level.player allowprone( 0 );
|
|
level.player playerlinktoblend( var_4, "tag_origin", 0.75, 0.25, 0.5 );
|
|
level.player enableinvulnerability();
|
|
level.player maps\_utility::delaythread( 0.25, maps\_utility::play_sound_on_entity, "scn_nml_plr_stackup" );
|
|
wait 0.75;
|
|
common_scripts\utility::flag_clear( "start_earthquakes" );
|
|
level.player playerlinktodelta( var_4, "tag_origin", 0.5, 15, 15, 15, 15 );
|
|
var_7 = common_scripts\utility::get_target_ent( "NML_window_smash_node" );
|
|
var_7 maps\_anim::anim_generic_reach( level.baker, "NML_window_smash" );
|
|
var_7 thread maps\_anim::anim_generic( level.baker, "NML_window_smash" );
|
|
var_7 thread hesh_breach_wait();
|
|
maps\_utility::delaythread( 2.7, common_scripts\utility::exploder, "house_prebreach" );
|
|
wait 2.8;
|
|
level notify( "begin dog breach" );
|
|
wait 0.75;
|
|
level.dog maps\_utility::walkdist_zero();
|
|
var_0 maps\_anim::anim_generic_reach( level.dog, "iw6_dog_traverse_over_36" );
|
|
thread pc_house_yells();
|
|
thread delete_cracked_glass();
|
|
var_8 = spawn( "script_model", level.dog.origin );
|
|
var_8 setmodel( "tag_origin" );
|
|
var_8 linkto( level.dog, "tag_camera", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
var_8 common_scripts\utility::delaycall( 0.5, ::playsound, "scn_nml_house_enemy_mvmt_chaos" );
|
|
var_0 maps\_anim::anim_generic( level.dog, "iw6_dog_traverse_over_36" );
|
|
level.dog setgoalpos( level.dog.origin );
|
|
maps\nml_util::team_unset_colors( 32 );
|
|
level.dog maps\_utility::walkdist_reset();
|
|
var_9 = common_scripts\utility::get_target_ent( "pc_house_blocker" );
|
|
var_9 connectpaths();
|
|
var_9 delete();
|
|
wait 1.2;
|
|
maps\_utility::array_spawn_function_targetname( "crater_enemy_house_breach", ::pc_house_breach_think );
|
|
maps\_utility::array_spawn_targetname( "crater_enemy_house_breach" );
|
|
thread post_crater_house_door_crash();
|
|
maps\_utility::delaythread( 0.5, ::door_push );
|
|
level waittill( "door_knockdown" );
|
|
var_8 stopsounds();
|
|
thread hesh_breach_melee();
|
|
level.dog endon( "death" );
|
|
common_scripts\utility::exploder( "pc_house_breach_door" );
|
|
setsaveddvar( "aim_autoAimRangeScale", "0" );
|
|
level.dog.idlelookattargets = undefined;
|
|
level.baker maps\_utility::disable_pain();
|
|
level.player allowstand( 1 );
|
|
level.player allowprone( 1 );
|
|
setsaveddvar( "ai_friendlyFireBlockDuration", 0 );
|
|
thread maps\_slowmo_breach::slowmo_begins();
|
|
maps\_art::dof_enable_script( 1, 1, 5, 2, 150, 5, 0.1 );
|
|
maps\_utility::delaythread( 0.5, maps\_art::dof_disable_script, 1 );
|
|
level.player playerlinktodelta( var_4, "tag_origin", 0.8, 60, 60, 90, 90 );
|
|
var_7 = var_3 common_scripts\utility::get_target_ent();
|
|
var_10 = 1;
|
|
var_11 = 0.15;
|
|
var_4 maps\_utility::delaythread( var_11, maps\nml_util::moveto_rotateto, var_7, var_10, 0.5, 0 );
|
|
level.player common_scripts\utility::delaycall( var_10 + var_11, ::unlink );
|
|
level.player common_scripts\utility::delaycall( var_10 + var_11, ::disableinvulnerability );
|
|
var_7 = common_scripts\utility::get_target_ent( "baker_post_breach_node" );
|
|
level.baker common_scripts\utility::delaycall( 1.25, ::setgoalnode, var_7 );
|
|
level.player common_scripts\utility::delaycall( 0.75, ::enableweapons );
|
|
common_scripts\utility::flag_wait( "pc_house_baker_ready" );
|
|
wait 0.05;
|
|
maps\nml_util::volume_waittill_no_axis( "post_crater_volume" );
|
|
var_8 delete();
|
|
level.dog.melee = undefined;
|
|
level.dog thread maps\_utility::magic_bullet_shield();
|
|
setsaveddvar( "aim_autoAimRangeScale", "1" );
|
|
thread maps\nml_util::ragdoll_corpses();
|
|
maps\_art::dof_disable_script( 1 );
|
|
thread post_crater_breach_dialogue_2();
|
|
maps\nml_util::team_unset_colors( 196 );
|
|
level.baker maps\_utility::enable_cqbwalk();
|
|
setsaveddvar( "ai_friendlyFireBlockDuration", 2000 );
|
|
level.baker maps\_utility::enable_pain();
|
|
common_scripts\utility::flag_wait( "house_breach_melee_done" );
|
|
var_7 = common_scripts\utility::get_target_ent( "pc_house_breach_exit" );
|
|
var_7 thread maps\_anim::anim_generic_gravity( level.baker, "corner_standR_trans_CQB_OUT_8" );
|
|
maps\nml_util::hero_paths( "sat_entrance_path", 300, 300, 300, 0, 2.5 );
|
|
|
|
if ( getdvarint( "e3", 0 ) )
|
|
{
|
|
level.baker maps\_utility::disable_cqbwalk();
|
|
wait 1.6;
|
|
level.baker waittill( "goal" );
|
|
wait 1.5;
|
|
maps\_utility::trigger_wait_targetname( "nml_mask_trigger" );
|
|
var_7 = common_scripts\utility::get_target_ent( "nml_mask_node" );
|
|
var_7 maps\_anim::anim_generic_reach( level.baker, "NML_mask_pulldown" );
|
|
var_7 thread maps\_anim::anim_generic_first_frame( level.baker, "NML_mask_pulldown" );
|
|
thread hesh_mask_dialogue( var_7 );
|
|
}
|
|
else if ( getdvarint( "jimmy", 0 ) )
|
|
{
|
|
maps\_hud_util::fade_out( 2 );
|
|
level.player freezecontrols( 1 );
|
|
}
|
|
}
|
|
|
|
hesh_breach_wait()
|
|
{
|
|
self waittill( "NML_window_smash" );
|
|
thread maps\_anim::anim_generic_loop( level.baker, "NML_window_wait" );
|
|
}
|
|
|
|
delete_cracked_glass()
|
|
{
|
|
maps\_utility::trigger_wait( "house_prebreach_glass_destroy", "script_noteworthy" );
|
|
var_0 = getent( "house_prebreach_glass", "script_noteworthy" );
|
|
var_0 delete();
|
|
}
|
|
|
|
post_crater_breach_walla()
|
|
{
|
|
var_0 = getentarray( "crater_enemy_house_breach", "targetname" );
|
|
var_1 = common_scripts\utility::spawn_tag_origin();
|
|
var_1.origin = var_0[0].origin;
|
|
var_1 playloopsound( "scn_nml_house_enemy_mvmt_lp" );
|
|
thread scn_nml_house_enemy_mvmt_lp_death( var_1 );
|
|
wait 2;
|
|
var_2 = var_0[0];
|
|
common_scripts\utility::play_sound_in_space( "nml_saf2_perdimoscontactocondos", var_0[0].origin );
|
|
wait 0.5;
|
|
common_scripts\utility::play_sound_in_space( "nml_saf1_cules", var_0[0].origin );
|
|
wait 0.5;
|
|
common_scripts\utility::play_sound_in_space( "nml_saf2_elequipo7y", var_0[0].origin );
|
|
wait 0.5;
|
|
thread common_scripts\utility::play_sound_in_space( "nml_saf1_quevayarodrigocon", var_0[0].origin );
|
|
}
|
|
|
|
scn_nml_house_enemy_mvmt_lp_death( var_0 )
|
|
{
|
|
level waittill( "stop_house_sounds" );
|
|
var_0 stoploopsound();
|
|
wait 0.5;
|
|
var_0 delete();
|
|
}
|
|
|
|
hesh_breach_melee()
|
|
{
|
|
common_scripts\utility::flag_init( "house_breach_melee_done" );
|
|
wait 0.2;
|
|
var_0 = maps\_utility::spawn_targetname( "crater_enemy_house_melee" );
|
|
var_0.ignoreme = 1;
|
|
var_1 = common_scripts\utility::get_target_ent( "NML_window_smash_node" );
|
|
var_0.animname = "victim";
|
|
level.baker.animname = "hesh";
|
|
var_1 notify( "stop_loop" );
|
|
var_1 maps\_anim::anim_single( [ level.baker, var_0 ], "breach_melee" );
|
|
var_0.allowdeath = 1;
|
|
var_0.a.nodeath = 1;
|
|
var_0 kill();
|
|
common_scripts\utility::flag_set( "house_breach_melee_done" );
|
|
}
|
|
|
|
speed_up_slow_mo()
|
|
{
|
|
wait 0.25;
|
|
maps\_utility::slowmo_setspeed_slow( 0.5 );
|
|
maps\_utility::slowmo_setlerptime_in( 0.25 );
|
|
maps\_utility::slowmo_lerp_in();
|
|
}
|
|
|
|
hesh_mask_dialogue( var_0 )
|
|
{
|
|
wait 0.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_wereinposition" );
|
|
wait 0.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_ok" );
|
|
wait 0.35;
|
|
var_0 thread maps\_anim::anim_generic_gravity( level.baker, "NML_mask_pulldown" );
|
|
level.baker thread track_player_for_time( 1.3 );
|
|
wait 1.5;
|
|
level.player thread maps\_utility::play_sound_on_entity( "scn_nml_mask_on_plr" );
|
|
player_pulls_mask_down();
|
|
}
|
|
|
|
player_pulls_mask_down()
|
|
{
|
|
var_0 = maps\_player_rig::get_player_rig();
|
|
var_0.origin = level.player.origin;
|
|
var_0.angles = level.player.angles;
|
|
var_0 maps\_anim::anim_first_frame_solo( var_0, "mask_puton" );
|
|
wait 0.1;
|
|
level.player playerlinktoblend( var_0, "tag_player", 0.5, 0.1, 0.1 );
|
|
level.player disableweapons();
|
|
level.player allowcrouch( 0 );
|
|
level.player allowprone( 0 );
|
|
var_0 show();
|
|
wait 0.4;
|
|
maps\_art::dof_enable_script( 0, 0, 10, 15, 40, 6, 0.25 );
|
|
setsaveddvar( "r_znear", 0.001 );
|
|
var_0 thread maps\_anim::anim_single_solo( var_0, "mask_puton" );
|
|
wait 1;
|
|
var_1 = maps\_hud_util::create_client_overlay( "overlay_mask_edge", 1, level.player );
|
|
var_1.y = var_1.y - 1000;
|
|
var_1 moveovertime( 0.5 );
|
|
var_1.y = 0;
|
|
wait 0.2;
|
|
level.player setclienttriggeraudiozone( "nml_house3_fadeout_for_e3", 0.2 );
|
|
maps\_hud_util::fade_out( 0.3 );
|
|
wait 18;
|
|
maps\_utility::nextmission();
|
|
}
|
|
|
|
post_crater_breach_dialogue()
|
|
{
|
|
level endon( "begin dog breach" );
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_letsmove" );
|
|
wait 2;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_soundslikemoreinside" );
|
|
wait 1;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_stackup" );
|
|
}
|
|
|
|
post_crater_breach_dialogue_2()
|
|
{
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_clear_5" );
|
|
wait 0.75;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_onme_2" );
|
|
}
|
|
|
|
pc_house_breach_think()
|
|
{
|
|
thread maps\_utility::set_battlechatter( 0 );
|
|
|
|
if ( isdefined( self.target ) && self.target == "dog_breach_dog" )
|
|
{
|
|
maps\_utility::forceuseweapon( "p226", "sidearm" );
|
|
maps\_utility::add_damage_function( maps\_slowmo_breach::record_last_player_damage );
|
|
thread maps\_slowmo_breach::breach_enemy_ignored_by_friendlies();
|
|
thread maps\_slowmo_breach::breach_enemy_ragdoll_on_death();
|
|
level thread maps\_slowmo_breach::breach_enemy_track_status( self );
|
|
level waittill( "door_knockdown" );
|
|
self endon( "death" );
|
|
wait 0.1;
|
|
self.animname = "victim";
|
|
level.dog.animname = "dog";
|
|
var_0 = common_scripts\utility::get_target_ent();
|
|
self.health = 1;
|
|
self.allowdeath = 1;
|
|
self.a.nodeath = 1;
|
|
thread release_dog_on_death();
|
|
level.dog.allowpain = 1;
|
|
level.dog.allowdeath = 1;
|
|
thread maps\nml_util::mission_fail_on_dog_death( &"NML_HINT_CAIRO_DEATH" );
|
|
var_0 thread maps\_anim::anim_single( [ self, level.dog ], "dog_attack_kill" );
|
|
level.dog thread animscripts\shared::donotetracks( "single anim", maps\nml_dogattacks::handlevxnotetrack );
|
|
wait 3;
|
|
self kill();
|
|
}
|
|
else
|
|
{
|
|
self endon( "death" );
|
|
thread maps\_slowmo_breach::breach_enemy_spawner_think();
|
|
wait 1;
|
|
self getenemyinfo( level.player );
|
|
self setgoalpos( self.origin );
|
|
self.fixednode = 0;
|
|
self.goalradius = 1024;
|
|
}
|
|
}
|
|
|
|
release_dog_on_death()
|
|
{
|
|
level.dog endon( "death" );
|
|
self waittill( "death" );
|
|
level.dog maps\_anim::anim_generic_gravity( level.dog, "dog_attack_kill_end" );
|
|
level.dog setgoalpos( level.dog.origin );
|
|
level.dog.idlelookattargets = [ level.player ];
|
|
}
|
|
|
|
pc_house_yells()
|
|
{
|
|
level.dog maps\_utility::delaythread( 0.5, maps\_utility::play_sound_on_entity, "nml_saf2_unmomentooyeneso" );
|
|
level.dog maps\_utility::delaythread( 1, maps\_utility::play_sound_on_entity, "nml_saf1_qucooeseso" );
|
|
level.dog maps\_utility::delaythread( 1.5, maps\_utility::play_sound_on_entity, "nml_saf1_salgandeaquya" );
|
|
level.dog maps\_utility::play_sound_on_entity( "anml_dog_bark" );
|
|
wait 0.1;
|
|
level.dog maps\_utility::play_sound_on_entity( "anml_dog_bark" );
|
|
wait 0.1;
|
|
level notify( "stop_house_sounds" );
|
|
}
|
|
|
|
pc_house_baker_get_ready( var_0 )
|
|
{
|
|
common_scripts\utility::flag_init( "pc_house_baker_ready" );
|
|
level.baker setgoalnode( var_0 );
|
|
level.baker waittill( "goal" );
|
|
level.baker.ignoreall = 1;
|
|
wait 2;
|
|
common_scripts\utility::flag_set( "pc_house_baker_ready" );
|
|
}
|
|
|
|
pc_house_fall()
|
|
{
|
|
common_scripts\utility::flag_wait( "pc_house_baker_ready" );
|
|
var_0 = maps\_utility::spawn_targetname( "crater_enemy_house_fall" );
|
|
var_1 = common_scripts\utility::get_target_ent( "pc_house_enemy_fall" );
|
|
var_0 thread maps\_utility::set_battlechatter( 0 );
|
|
var_0.allowpain = 1;
|
|
var_0.allowdeath = 1;
|
|
level.dog maps\nml_util::set_move_rate( 1 );
|
|
level.dog setgoalentity( var_0 );
|
|
var_1 maps\_anim::anim_generic_gravity( var_0, "run_pain_fall" );
|
|
}
|
|
|
|
pc_house_melee( var_0 )
|
|
{
|
|
common_scripts\utility::flag_wait( "pc_house_baker_ready" );
|
|
var_1 = maps\_utility::spawn_targetname( "crater_enemy_house" );
|
|
var_1 maps\_utility::set_battlechatter( 0 );
|
|
var_1 maps\_utility::disable_exits();
|
|
var_1.ignoreme = 1;
|
|
var_1 maps\_utility::set_generic_run_anim( "flee_run_shoot_behind" );
|
|
thread post_crater_house_door_crash();
|
|
var_0 maps\_anim::anim_generic_reach( var_1, "cornerSdR_melee_winD_attacker" );
|
|
var_0 thread maps\_anim::anim_generic( level.baker, "cornerSdR_melee_winD_defender" );
|
|
var_0 maps\_anim::anim_generic( var_1, "cornerSdR_melee_winD_attacker" );
|
|
}
|
|
|
|
post_crater_house_door_crash()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "pc_house_door_trig" );
|
|
var_0 waittill( "trigger" );
|
|
var_1 = getentarray( "pc_house_door", "targetname" );
|
|
thread common_scripts\utility::play_sound_in_space( "scn_nml_house_door_burst", var_1[0].origin );
|
|
common_scripts\utility::array_thread( var_1, ::door_knockdown );
|
|
level notify( "door_knockdown" );
|
|
}
|
|
|
|
door_push()
|
|
{
|
|
var_0 = getentarray( "pc_house_door", "targetname" );
|
|
thread common_scripts\utility::play_sound_in_space( "wood_door_kick", var_0[0].origin );
|
|
common_scripts\utility::exploder( "pc_house_door_nudge" );
|
|
common_scripts\utility::array_thread( var_0, ::door_nudge );
|
|
}
|
|
|
|
door_nudge()
|
|
{
|
|
var_0 = spawnstruct();
|
|
var_0.origin = self.origin;
|
|
var_0.angles = self.angles;
|
|
var_1 = common_scripts\utility::get_target_ent();
|
|
maps\nml_util::moveto_rotateto( var_1, 0.1, 0.1, 0 );
|
|
maps\nml_util::moveto_rotateto( var_0, 0.2, 0, 0.1 );
|
|
}
|
|
|
|
door_knockdown()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent();
|
|
self delete();
|
|
}
|
|
|
|
door_knockback( var_0, var_1 )
|
|
{
|
|
var_2 = anglestoforward( var_1.angles );
|
|
var_3 = var_0 common_scripts\utility::get_target_ent();
|
|
var_3 hide();
|
|
var_0 maps\nml_util::moveto_rotateto_speed( var_3, 120, 0, 0.2 );
|
|
var_0 physicslaunchclient( var_1.origin, var_2 * 350 );
|
|
}
|
|
|
|
nh90_unload()
|
|
{
|
|
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "satellite_heli" );
|
|
var_0 vehicle_turnengineoff();
|
|
var_0 playloopsound( "scn_nml_heli_post_house_lp" );
|
|
common_scripts\utility::flag_wait( "satellite_overlook_1" );
|
|
var_1 = common_scripts\utility::get_target_ent( "sat_heli_unload" );
|
|
wait 5;
|
|
var_0 scalevolume( 0, 4 );
|
|
var_0 thread maps\_utility::play_sound_on_entity( "scn_nml_heli_post_house_move" );
|
|
var_0 maps\_vehicle::vehicle_paths( var_1 );
|
|
var_0 delete();
|
|
}
|
|
|
|
sat_combat()
|
|
{
|
|
level.dog endon( "death" );
|
|
|
|
if ( !isdefined( level.dog ) || !isalive( level.dog ) )
|
|
return;
|
|
|
|
common_scripts\utility::flag_set( "start_earthquakes" );
|
|
maps\_utility::array_spawn_targetname( "sat_combat_starters" );
|
|
common_scripts\utility::flag_set( "_stealth_spotted" );
|
|
setsaveddvar( "ai_friendlyFireBlockDuration", 2000 );
|
|
maps\nml_stealth::disable_stealth();
|
|
level.baker maps\_utility::delaythread( 8, maps\_utility::set_ignoreall, 0 );
|
|
maps\_utility::trigger_wait_targetname( "satellite_combat_start" );
|
|
setsaveddvar( "ai_friendlyFireBlockDuration", 0 );
|
|
level.baker maps\_utility::disable_pain();
|
|
level.dog maps\_utility::disable_pain();
|
|
level.baker.ignoresuppression = 1;
|
|
level.baker.ignoreall = 0;
|
|
level.dog.idlelookattargets = undefined;
|
|
level.baker.baseaccuracy = 0.5;
|
|
wait 1;
|
|
thread sat_dialogue();
|
|
maps\_utility::display_hint_timeout( "hint_dog_attack_3p", 10 );
|
|
common_scripts\utility::flag_wait( "satellite_overlook_1" );
|
|
level.baker.baseaccuracy = 0.8;
|
|
level.baker maps\_utility::enable_pain();
|
|
level.dog maps\_utility::enable_pain();
|
|
level.baker.ignoresuppression = 0;
|
|
setsaveddvar( "ai_friendlyFireBlockDuration", 2000 );
|
|
}
|
|
|
|
sat_dialogue()
|
|
{
|
|
level.baker thread maps\_utility::smart_dialogue( "nml_hsh_contactfront_2" );
|
|
wait 0.75;
|
|
common_scripts\utility::flag_wait( "start_sat_combat" );
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_thisisdefinitelythe" );
|
|
wait 2.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_delta11weare" );
|
|
wait 1;
|
|
maps\_utility::smart_radio_dialogue( "nml_mrk_copykeepusupdated" );
|
|
wait 1.25;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_weveencounteredlightenemy" );
|
|
maps\_utility::autosave_by_name( "nml" );
|
|
maps\_utility::trigger_wait_targetname( "sat_combat_room" );
|
|
maps\_utility::music_stop( 6 );
|
|
maps\_utility::smart_radio_dialogue( "nml_mrk_stalkerweregettingreports" );
|
|
maps\_utility::autosave_by_name( "nml" );
|
|
wait 0.5;
|
|
maps\_utility::smart_radio_dialogue( "nml_mrk_ifyouhurryyou" );
|
|
wait 1;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_rogerthat" );
|
|
wait 1.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_adamletsmove" );
|
|
}
|
|
|
|
transition_to_tunnel()
|
|
{
|
|
level endon( "baker_stop_going_to_slide" );
|
|
level endon( "baker_started_slide" );
|
|
level.baker maps\_utility::disable_cqbwalk();
|
|
level.dog maps\nml_util::set_move_rate( 1 );
|
|
level.dog maps\_utility::disable_ai_color();
|
|
level.baker maps\_utility::disable_ai_color();
|
|
maps\nml_util::hero_paths( "tunnel_enter_path", 300, 300, 300, 0, 3 );
|
|
wait 0.5;
|
|
var_0 = common_scripts\utility::get_target_ent( "satellite_slide_node" );
|
|
var_0 maps\_anim::anim_generic_reach( level.baker, "NML_slide_left" );
|
|
common_scripts\utility::flag_set( "baker_started_slide" );
|
|
}
|
|
|
|
tunnel_slide()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "satellite_slide_node" );
|
|
common_scripts\utility::flag_wait_either( "baker_started_slide", "start_tunnel" );
|
|
|
|
if ( !common_scripts\utility::flag( "baker_started_slide" ) )
|
|
{
|
|
level.dog forceteleport( var_0.origin, var_0.angles );
|
|
common_scripts\utility::flag_set( "baker_started_slide" );
|
|
maps\_anim::anim_reach_cleanup_solo( level.baker );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "baker_started_slide" );
|
|
level notify( "baker_stop_going_to_slide" );
|
|
level.baker thread maps\nml_util::slide_sounds( "NML_slide_left" );
|
|
var_0 thread maps\_anim::anim_generic( level.baker, "NML_slide_left" );
|
|
wait 1;
|
|
maps\nml_util::hero_paths( "tunnel_enter_path", 300, 300, 300, 0, 1 );
|
|
}
|
|
|
|
sat_crane_arm()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "sat_crane_arm" );
|
|
common_scripts\utility::flag_wait( "satellite_overlook_1" );
|
|
var_0 rotateyaw( -45, 5, 1, 2 );
|
|
var_0 waittill( "rotatedone" );
|
|
wait 2;
|
|
|
|
for (;;)
|
|
{
|
|
var_0 rotateyaw( 90, 5, 1, 2 );
|
|
var_0 waittill( "rotatedone" );
|
|
wait( randomfloatrange( 3, 10 ) );
|
|
var_0 rotateyaw( -90, 5, 1, 2 );
|
|
var_0 waittill( "rotatedone" );
|
|
}
|
|
}
|
|
|
|
tunnel_enter()
|
|
{
|
|
maps\_utility::music_stop( 3 );
|
|
maps\nml_util::team_unset_colors( 128 );
|
|
level.baker maps\_utility::enable_cqbwalk();
|
|
thread maps\nml_util::hero_paths( "tunnel_enter_path" );
|
|
level.dog maps\nml_util::set_move_rate( 0.7 );
|
|
common_scripts\utility::flag_wait( "convoy_start_walk" );
|
|
wait 0.75;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_youhearthat" );
|
|
wait 2.75;
|
|
level.baker thread maps\_utility::smart_dialogue( "nml_hsh_enemyconvoygetto" );
|
|
level.baker stopanimscripted();
|
|
level.baker notify( "stop_path" );
|
|
level.baker maps\_utility::disable_cqbwalk();
|
|
maps\nml_util::team_unset_colors( 32 );
|
|
var_0 = common_scripts\utility::get_target_ent( "hesh_tunnel_pos_1" );
|
|
level.baker setgoalnode( var_0 );
|
|
level.baker waittill( "goal" );
|
|
wait 1.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_shittherestoomany" );
|
|
wait 1.5;
|
|
var_0 = common_scripts\utility::get_target_ent( "hesh_tunnel_pos_2" );
|
|
level.baker setgoalnode( var_0 );
|
|
level.baker thread maps\_utility::smart_dialogue( "nml_hsh_thiswaymove" );
|
|
level.baker waittill( "goal" );
|
|
var_0 thread maps\_anim::anim_generic( level.baker, "stand_2_prone" );
|
|
level.baker maps\_utility::set_generic_idle_anim( "prague_prone_idle" );
|
|
level.baker allowedstances( "prone" );
|
|
var_1 = common_scripts\utility::get_noteworthy_ent( "tunnel_sight_blocker" );
|
|
var_1 common_scripts\utility::delaycall( 3.5, ::delete );
|
|
var_2 = common_scripts\utility::get_target_ent( "tunnel_cairo_teleport" );
|
|
level.dog.ignoreall = 1;
|
|
level.dog forceteleport( var_2.origin, var_2.angles );
|
|
level.dog setgoalpos( var_2.origin );
|
|
var_0 = common_scripts\utility::get_target_ent( "hesh_tunnel_pos_3" );
|
|
level.baker.ignoreall = 1;
|
|
level.baker.goalradius = 16;
|
|
level.baker setgoalpos( var_0.origin );
|
|
thread baker_crawl_dialogue();
|
|
level.baker waittill( "goal" );
|
|
common_scripts\utility::flag_wait( "tunnel_player_ready_to_jump" );
|
|
thread maps\_utility::add_dialogue_line( "Hesh", "Shit. We're gonna have to jump." );
|
|
wait 1.5;
|
|
thread maps\_utility::add_dialogue_line( "Hesh", "I'll go first..." );
|
|
thread player_jump_hint();
|
|
var_3 = common_scripts\utility::get_target_ent( "nml_pipe_jump" );
|
|
var_3 maps\_anim::anim_generic_reach( level.baker, "nml_pipe_jump" );
|
|
var_3 maps\_anim::anim_generic( level.baker, "nml_pipe_jump" );
|
|
level.baker thread maps\_utility::play_sound_on_entity( "nml_plr_pipe_land" );
|
|
var_3 thread maps\_anim::anim_generic_loop( level.baker, "nml_pipe_jump_idle" );
|
|
var_0 = common_scripts\utility::get_target_ent( "hesh_tunnel_pos_4" );
|
|
level.baker.ignoreall = 1;
|
|
level.baker.goalradius = 16;
|
|
level.baker setgoalpos( var_0.origin );
|
|
thread baker_post_jump_dialogue();
|
|
wait 5;
|
|
var_3 thread maps\_anim::anim_generic( level.baker, "nml_pipe_jump_out" );
|
|
var_3 notify( "stop_loop" );
|
|
level.baker waittill( "goal" );
|
|
common_scripts\utility::flag_wait( "tunnel_tank_crush_done" );
|
|
level.baker thread maps\_utility::smart_dialogue( "nml_hsh_okcrawloutslowly" );
|
|
level.baker allowedstances( "crouch" );
|
|
level.baker maps\_utility::clear_generic_idle_anim();
|
|
level.baker thread maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "tunnel_hesh_crawl_exit" ), 150 );
|
|
common_scripts\utility::flag_wait( "tunnel_exit" );
|
|
thread tunnel_exit_dialogue();
|
|
maps\nml_util::volume_waittill_no_axis( "tunnel_exit_volume" );
|
|
level notify( "tunnel_exit_clear" );
|
|
level.baker thread maps\_utility::smart_dialogue( "nml_hsh_okletsgo" );
|
|
level.baker allowedstances( "stand", "crouch", "prone" );
|
|
maps\nml_util::team_unset_colors( 196 );
|
|
maps\nml_util::hero_paths( "tunnel_exit_path" );
|
|
}
|
|
|
|
player_jump_hint()
|
|
{
|
|
level endon( "player_jumped" );
|
|
common_scripts\utility::flag_wait( "tunnel_player_tell_to_jump" );
|
|
thread maps\_utility::add_dialogue_line( "Hesh", "Ok, that's good enough." );
|
|
wait 3;
|
|
thread maps\_utility::add_dialogue_line( "Hesh", "Jump!" );
|
|
}
|
|
|
|
baker_post_jump_dialogue()
|
|
{
|
|
thread maps\_utility::add_dialogue_line( "Hesh", "Shit!" );
|
|
wait 1;
|
|
thread maps\_utility::add_dialogue_line( "Hesh", "This isn't going to hold..." );
|
|
wait 1.5;
|
|
thread maps\_utility::add_dialogue_line( "Hesh", "Go find another way around..." );
|
|
}
|
|
|
|
tunnel_pipe_logic()
|
|
{
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "player_on_tunnel_pipes" );
|
|
thread player_force_prone_recover();
|
|
level.player thread maps\_utility::player_speed_percent( 80, 2 );
|
|
var_0 = common_scripts\utility::spawn_tag_origin();
|
|
wait( randomfloatrange( 0.2, 1 ) );
|
|
level.player playersetgroundreferenceent( var_0 );
|
|
thread tunnel_pipe_quake( var_0 );
|
|
thread tunnel_pipe_sway( var_0 );
|
|
common_scripts\utility::flag_waitopen( "player_on_tunnel_pipes" );
|
|
level.player thread maps\_utility::player_speed_percent( 100, 2 );
|
|
var_0 notify( "stop_sway" );
|
|
var_0 rotateto( ( 0, 0, 0 ), 0.5 );
|
|
wait 0.5;
|
|
level.player playersetgroundreferenceent( undefined );
|
|
var_0 delete();
|
|
}
|
|
}
|
|
|
|
tunnel_pipe_quake( var_0 )
|
|
{
|
|
var_0 endon( "stop_sway" );
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = randomfloatrange( 0.1, 0.3 );
|
|
earthquake( 0.1, var_1 * 2, level.player.origin, 512 );
|
|
wait( var_1 );
|
|
}
|
|
}
|
|
|
|
tunnel_pipe_sway( var_0 )
|
|
{
|
|
var_0 endon( "stop_sway" );
|
|
var_1 = common_scripts\utility::get_target_ent( "tunnel_pipes_pitch_trig" );
|
|
var_2 = 2;
|
|
var_3 = 3;
|
|
|
|
if ( level.player istouching( var_1 ) )
|
|
var_0 rotateto( ( var_2, 0, 0 ), var_3, var_3 * 0.3, var_3 * 0.3 );
|
|
else
|
|
var_0 rotateto( ( 0, 0, var_2 ), var_3, var_3 * 0.3, var_3 * 0.3 );
|
|
|
|
var_0 waittill( "rotatedone" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.player istouching( var_1 ) )
|
|
{
|
|
var_4 = ( -2 * var_2, 0, 0 );
|
|
var_5 = ( 2 * var_2, 0, 0 );
|
|
}
|
|
else
|
|
{
|
|
var_4 = ( 0, 0, -2 * var_2 );
|
|
var_5 = ( 0, 0, 2 * var_2 );
|
|
}
|
|
|
|
var_0 rotateto( var_4, var_3, var_3 * 0.3, var_3 * 0.3 );
|
|
var_0 waittill( "rotatedone" );
|
|
|
|
if ( level.player istouching( var_1 ) )
|
|
{
|
|
var_4 = ( -2 * var_2, 0, 0 );
|
|
var_5 = ( 2 * var_2, 0, 0 );
|
|
}
|
|
else
|
|
{
|
|
var_4 = ( 0, 0, -2 * var_2 );
|
|
var_5 = ( 0, 0, 2 * var_2 );
|
|
}
|
|
|
|
var_0 rotateto( var_5, var_3, var_3 * 0.3, var_3 * 0.3 );
|
|
var_0 waittill( "rotatedone" );
|
|
}
|
|
}
|
|
|
|
tunnel_spotted_trigger()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "tunnel_spotted_trigger" );
|
|
var_0 waittill( "trigger" );
|
|
maps\nml_stealth::player_set_spotted();
|
|
}
|
|
|
|
tunnel_player_jump_trigger()
|
|
{
|
|
self waittill( "trigger" );
|
|
level notify( "player_jumped" );
|
|
thread player_force_prone_recover();
|
|
wait 0.1;
|
|
earthquake( 0.5, 1.5, level.player.origin, 512 );
|
|
level.player thread maps\_utility::play_sound_on_entity( "nml_plr_pipe_land" );
|
|
level.player thread maps\_utility::play_sound_on_entity( "nml_plr_pipe_land_ext" );
|
|
level.player thread maps\_utility::player_speed_percent( 10, 0.1 );
|
|
level.player disableweapons();
|
|
wait 1;
|
|
level.player thread maps\_utility::player_speed_percent( 80, 1 );
|
|
level.player enableweapons();
|
|
}
|
|
|
|
player_force_prone_recover()
|
|
{
|
|
level.player allowprone( 1 );
|
|
level.player allowstand( 0 );
|
|
level.player allowcrouch( 0 );
|
|
level.player setstance( "prone" );
|
|
wait 1;
|
|
level.player allowstand( 1 );
|
|
level.player allowcrouch( 1 );
|
|
}
|
|
|
|
tunnel_pipe_fall()
|
|
{
|
|
for (;;)
|
|
{
|
|
level waittill( "pipe_fall", var_0 );
|
|
thread common_scripts\utility::play_sound_in_space( "nml_pipe_break", var_0 );
|
|
thread common_scripts\utility::play_sound_in_space( "nml_pipe_breakoff", var_0 );
|
|
earthquake( 0.5, 1.5, var_0, 1024 );
|
|
maps\_utility::delaythread( 0.8, common_scripts\utility::play_sound_in_space, "nml_pipe_clang", var_0 - ( 0, 0, 200 ) );
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
tunnel_pipe_trigger()
|
|
{
|
|
self endon( "fall" );
|
|
self.brushmodels = getentarray( self.target, "targetname" );
|
|
var_0 = 8.0;
|
|
var_1 = randomfloatrange( 0.5, 0.9 ) * var_0;
|
|
|
|
while ( var_0 > var_1 )
|
|
{
|
|
self waittill( "trigger", var_2 );
|
|
var_3 = var_2 getvelocity();
|
|
|
|
if ( var_3[2] < -50 )
|
|
{
|
|
var_0 = var_0 - 4;
|
|
wait 0.25;
|
|
}
|
|
else
|
|
var_0 = var_0 - 0.05;
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
thread pipe_warning_shift();
|
|
thread pipe_warning_fx();
|
|
|
|
while ( var_0 > 2.5 )
|
|
{
|
|
self waittill( "trigger", var_2 );
|
|
var_3 = var_2 getvelocity();
|
|
|
|
if ( var_3[2] < -50 )
|
|
{
|
|
var_0 = var_0 - 4;
|
|
wait 0.25;
|
|
}
|
|
else
|
|
var_0 = var_0 - 0.05;
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
pipe_warning_shift();
|
|
wait 0.3;
|
|
thread pipe_warning_shift();
|
|
thread pipe_warning_fx();
|
|
|
|
while ( var_0 > 0 )
|
|
{
|
|
self waittill( "trigger", var_2 );
|
|
var_3 = var_2 getvelocity();
|
|
|
|
if ( var_3[2] < -50 )
|
|
{
|
|
var_0 = var_0 - 4;
|
|
wait 0.25;
|
|
}
|
|
else
|
|
var_0 = var_0 - 0.05;
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
thread tunnel_pipe_trigger_fall( 1 );
|
|
}
|
|
|
|
pipe_warning_shift()
|
|
{
|
|
thread common_scripts\utility::play_sound_in_space( "nml_pipe_break", self.origin );
|
|
earthquake( 0.3, 0.5, self.origin, 1024 );
|
|
|
|
foreach ( var_1 in self.brushmodels )
|
|
{
|
|
var_1 movez( -1 * randomfloatrange( 1, 2 ), randomfloatrange( 0.1, 0.2 ) );
|
|
var_1 rotateto( ( randomfloatrange( -1.5, 1.5 ), 0, randomfloatrange( -1, 1 ) ), randomfloatrange( 0.1, 0.2 ) );
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
pipe_warning_fx()
|
|
{
|
|
var_0 = common_scripts\utility::getstructarray( self.target, "targetname" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
common_scripts\utility::noself_delaycall( randomfloatrange( 0, 0.5 ), ::playfx, common_scripts\utility::getfx( "pipe_dust" ), var_2.origin );
|
|
}
|
|
|
|
tunnel_pipe_trigger_fall( var_0 )
|
|
{
|
|
self notify( "fall" );
|
|
|
|
if ( var_0 )
|
|
{
|
|
level notify( "pipe_fall", self.origin );
|
|
var_1 = getentarray( "tunnel_pipe_trigger", "targetname" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
if ( var_3 != self )
|
|
{
|
|
if ( var_3 istouching( level.player ) )
|
|
var_3 thread tunnel_pipe_trigger_fall( 0 );
|
|
}
|
|
}
|
|
}
|
|
|
|
pipe_warning_fx();
|
|
|
|
foreach ( var_6 in self.brushmodels )
|
|
{
|
|
var_6 movegravity( ( 0, 0, -10 ), 20 );
|
|
var_6 rotatevelocity( ( 50, 50, 50 ), 10, 0, 0 );
|
|
wait 0.15;
|
|
var_6 notsolid();
|
|
}
|
|
}
|
|
|
|
baker_crawl_dialogue()
|
|
{
|
|
wait 3;
|
|
thread maps\_utility::add_dialogue_line( "Hesh", "Easy... easy... " );
|
|
wait 2.5;
|
|
thread maps\_utility::add_dialogue_line( "Hesh", "Just stay low, and keep moving forward..." );
|
|
wait 1.5;
|
|
thread maps\_utility::add_dialogue_line( "Hesh", "We wouldn't want these pipes to break on us..." );
|
|
wait 1.5;
|
|
}
|
|
|
|
tunnel_exit_dialogue()
|
|
{
|
|
level endon( "tunnel_exit_clear" );
|
|
wait 2;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_theresalookouton" );
|
|
wait 0.7;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_takehimoutor" );
|
|
}
|
|
|
|
tunnel_convoy()
|
|
{
|
|
var_0 = maps\_utility::array_spawn_targetname( "tunnel_guys_1" );
|
|
var_1 = maps\_vehicle::spawn_vehicles_from_targetname( "tunnel_convoy_vehicles" );
|
|
var_2 = common_scripts\utility::get_target_ent( "tunnel_btr_light" );
|
|
var_3 = var_2 common_scripts\utility::spawn_tag_origin();
|
|
var_3.angles = var_2.angles;
|
|
|
|
foreach ( var_5 in var_1 )
|
|
{
|
|
if ( isdefined( var_5.script_noteworthy ) )
|
|
{
|
|
if ( var_5.script_noteworthy == "tunnel_lead_vehicle" )
|
|
var_3 linkto( var_5 );
|
|
}
|
|
}
|
|
|
|
var_2 thread follow_origin( var_3 );
|
|
var_2 thread light_fade();
|
|
thread convoy_start_walk( var_1 );
|
|
}
|
|
|
|
convoy_start_walk( var_0 )
|
|
{
|
|
common_scripts\utility::flag_wait( "convoy_start_walk" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( var_2.model == "vehicle_btr80" )
|
|
{
|
|
var_2 maps\_utility::delaythread( 4, ::dlight_on_me, "TAG_FRONT_LIGHT_RIGHT" );
|
|
var_2 maps\_vehicle::build_rumble_unique( "subtle_tank_rumble", 0.3, 4.5, 300, 1, 1 );
|
|
}
|
|
|
|
if ( var_2.model == "vehicle_t90_tank_woodland" )
|
|
{
|
|
var_2 maps\_utility::delaythread( 4, ::dlight_on_me, "TAG_FRONT_LIGHT_LEFT" );
|
|
var_2 thread tunnel_tank_crush();
|
|
}
|
|
|
|
var_2 thread maps\_vehicle::gopath();
|
|
var_2 thread tunnel_vehicle_think();
|
|
var_2 thread maps\nml_util::vehicle_rumble_even_if_not_moving();
|
|
}
|
|
}
|
|
|
|
follow_origin( var_0 )
|
|
{
|
|
self endon( "stop_follow" );
|
|
|
|
for (;;)
|
|
{
|
|
self.origin = var_0.origin;
|
|
self.angles = var_0.angles;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
light_fade()
|
|
{
|
|
var_0 = self.old_intensity;
|
|
self setlightintensity( 0 );
|
|
common_scripts\utility::flag_wait( "convoy_start_walk" );
|
|
|
|
for ( var_1 = self getlightintensity(); self getlightintensity() < var_0; var_1 = self getlightintensity() )
|
|
{
|
|
self setlightintensity( min( var_1 + 0.1, var_0 ) );
|
|
wait 0.1;
|
|
}
|
|
|
|
wait 5;
|
|
|
|
for ( var_1 = self getlightintensity(); self getlightintensity() > 0; var_1 = self getlightintensity() )
|
|
{
|
|
self setlightintensity( max( var_1 - 0.1, 0 ) );
|
|
wait 0.15;
|
|
}
|
|
}
|
|
|
|
dlight_on_me( var_0 )
|
|
{
|
|
var_1 = common_scripts\utility::spawn_tag_origin();
|
|
var_1.origin = self gettagorigin( var_0 );
|
|
var_1.angles = self gettagangles( var_0 );
|
|
self.dlight_org = var_1;
|
|
self.dlight_org.tag = var_0;
|
|
var_2 = anglestoforward( var_1.angles );
|
|
var_1.origin = var_1.origin + var_2 * 350;
|
|
var_1 linkto( self );
|
|
playfxontag( common_scripts\utility::getfx( "btr_light_fadein" ), var_1, "tag_origin" );
|
|
wait 3;
|
|
stopfxontag( common_scripts\utility::getfx( "btr_light_fadein" ), var_1, "tag_origin" );
|
|
playfxontag( common_scripts\utility::getfx( "btr_light" ), var_1, "tag_origin" );
|
|
self waittill( "death" );
|
|
var_1 delete();
|
|
}
|
|
|
|
tunnel_guys_think()
|
|
{
|
|
level endon( "start_grass" );
|
|
self endon( "death" );
|
|
self.pathrandompercent = 0;
|
|
maps\_utility::ent_flag_waitopen( "_stealth_normal" );
|
|
maps\nml_stealth::player_set_spotted();
|
|
}
|
|
|
|
tunnel_vehicle_think()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "cancel_spotted_reaction" );
|
|
thread maps\nml_util::btr_attack_player_on_flag( "_stealth_spotted" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "damage", var_0, var_1 );
|
|
|
|
if ( var_1 == level.player )
|
|
{
|
|
maps\nml_stealth::player_set_spotted();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
tunnel_tank_crush()
|
|
{
|
|
level endon( "_stealth_spotted" );
|
|
var_0 = getent( "tankcrush_car", "targetname" );
|
|
var_1 = self;
|
|
var_1 maps\_vehicle::godon();
|
|
var_2 = getvehiclenode( "tunnel_tankcrush", "script_noteworthy" );
|
|
var_2 waittill( "trigger" );
|
|
var_1 vehicle_setspeed( 0, 999999999, 999999999 );
|
|
var_3 = getvehiclenode( "tunnel_tankcrush_2", "targetname" );
|
|
var_1 resumespeed( 5 );
|
|
var_1 notify( "newpath" );
|
|
var_1 vehicle_scripts\_tank_crush::tank_crush( var_0, var_3, level.scr_anim["tank"]["tank_crush"], level.scr_anim["truck"]["tank_crush"], level.scr_animtree["tank_crush"], level.scr_sound["tank_crush"], 0.6 );
|
|
var_1 resumespeed( 5 );
|
|
var_1 notify( "dummy_2_model" );
|
|
common_scripts\utility::flag_set( "tunnel_tank_crush_done" );
|
|
var_1 maps\_vehicle::gopath();
|
|
}
|
|
|
|
link_dlight_to_dummy()
|
|
{
|
|
common_scripts\utility::waitframe();
|
|
self.dlight_org linkto( self.modeldummy, self.dlight_org.tag );
|
|
self waittill( "dummy_2_model" );
|
|
self.dlight_org linkto( self, self.dlight_org.tag );
|
|
}
|
|
|
|
mall_spotted()
|
|
{
|
|
level.player endon( "death" );
|
|
level.dog endon( "death" );
|
|
level endon( "start_dog_hunt" );
|
|
childthread instant_spotted();
|
|
common_scripts\utility::flag_wait( "_stealth_spotted" );
|
|
level.baker.ignoreme = 0;
|
|
level.baker.ignoreall = 0;
|
|
level.baker.dontevershoot = undefined;
|
|
level.dog.ignoreme = 0;
|
|
level.dog.ignoreall = 0;
|
|
level.baker maps\_utility::set_ai_bcvoice( "taskforce" );
|
|
var_0 = getaiarray( "axis" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
var_2.ignoreme = 0;
|
|
var_2.dontattackme = undefined;
|
|
}
|
|
|
|
thread mall_spotted_kill();
|
|
}
|
|
|
|
mall_spotted_kill()
|
|
{
|
|
level.player endon( "death" );
|
|
level.dog endon( "death" );
|
|
level.cansave = 0;
|
|
level.baker thread maps\_utility::smart_dialogue( "nml_hsh_werespottedtakeem" );
|
|
level.player enablehealthshield( 0 );
|
|
thread maps\nml_util::mission_fail_on_dog_death( &"NML_FAIL_SPOTTED" );
|
|
wait 5;
|
|
level.dog kill();
|
|
}
|
|
|
|
instant_spotted()
|
|
{
|
|
level notify( "instant_spotted" );
|
|
level endon( "instant_spotted" );
|
|
level endon( "start_dog_hunt" );
|
|
|
|
for (;;)
|
|
{
|
|
while ( maps\_stealth_utility::stealth_is_everything_normal() )
|
|
wait 0.05;
|
|
|
|
wait 1;
|
|
|
|
if ( maps\_stealth_utility::stealth_is_everything_normal() )
|
|
continue;
|
|
|
|
break;
|
|
}
|
|
|
|
maps\nml_stealth::player_set_spotted();
|
|
var_0 = getaiarray( "axis" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
var_2 notify( "stop_path" );
|
|
var_2 notify( "end_patrol" );
|
|
var_2 getenemyinfo( level.player );
|
|
var_2 setgoalentity( level.player );
|
|
}
|
|
}
|
|
|
|
mall_sniper()
|
|
{
|
|
level endon( "tunnel_exit_clear" );
|
|
|
|
if ( !common_scripts\utility::flag( "tunnel_exit_clear" ) )
|
|
maps\nml_stealth::player_set_spotted();
|
|
}
|
|
|
|
mall_heli()
|
|
{
|
|
thread mall_heli_think( "mall_heli", "mall_heli_leave_node", 1.5, "scn_nml_heli2_post_tunnel" );
|
|
thread mall_heli_think( "mall_heli_2", "mall_heli_leave_node_2", 0, "scn_nml_heli1_post_tunnel" );
|
|
}
|
|
|
|
mall_heli_think( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( var_0 );
|
|
common_scripts\utility::flag_wait( "mall_heli_go" );
|
|
wait( var_2 );
|
|
var_5 = common_scripts\utility::get_target_ent( var_1 );
|
|
var_4 vehicle_turnengineoff();
|
|
var_4 thread maps\_utility::play_sound_on_entity( var_3 );
|
|
var_4 maps\_vehicle::vehicle_paths( var_5 );
|
|
}
|
|
|
|
vargas_think()
|
|
{
|
|
|
|
}
|
|
|
|
mall_btrs()
|
|
{
|
|
var_0 = maps\_vehicle::spawn_vehicles_from_targetname( "mall_btr" );
|
|
common_scripts\utility::array_thread( var_0, maps\nml_util::btr_attack_player_on_flag, "_stealth_spotted" );
|
|
common_scripts\utility::flag_wait( "mall_btr_go" );
|
|
common_scripts\utility::array_thread( var_0, maps\_vehicle::gopath );
|
|
}
|
|
|
|
mall_blockade()
|
|
{
|
|
thread mall_btrs();
|
|
maps\nml_stealth::wait_till_every_thing_stealth_normal_for( 1 );
|
|
level.baker.ignoreall = 1;
|
|
level.player.ignoreme = 0;
|
|
setsaveddvar( "ai_eventDistFootstep", 64 );
|
|
setsaveddvar( "ai_eventDistFootstepWalk", 32 );
|
|
setsaveddvar( "ai_eventDistFootstepSprint", 96 );
|
|
setsaveddvar( "ai_eventDistDeath", 64 );
|
|
thread trigger_restore_dvars();
|
|
thread mall_teleport_dog();
|
|
thread maps\_utility::smart_radio_dialogue_interrupt( "nml_hsh_hangon" );
|
|
maps\nml_util::hero_paths( "mall_start_path", 500, 500, 300, 0, 0 );
|
|
level.baker waittill( "path_end_reached" );
|
|
|
|
if ( !common_scripts\utility::flag( "mall_btr_go" ) && !isdefined( level.dog.favoriteenemy ) )
|
|
thread maps\_utility::autosave_stealth();
|
|
|
|
level.baker pushplayer( 1 );
|
|
level.dog pushplayer( 1 );
|
|
level.baker allowedstances( "crouch" );
|
|
level.baker maps\nml_util::set_move_rate( 1.3 );
|
|
thread mall_lookout();
|
|
common_scripts\utility::flag_set( "mall_btr_go" );
|
|
setsaveddvar( "ai_friendlyFireBlockDuration", 0 );
|
|
var_0 = common_scripts\utility::get_target_ent( "mall_melee" );
|
|
var_1 = maps\_utility::get_living_ai( "mall_lone_patrol", "script_noteworthy" );
|
|
|
|
if ( isalive( var_1 ) )
|
|
{
|
|
var_1 endon( "death" );
|
|
var_0 = common_scripts\utility::get_target_ent( "mall_signal" );
|
|
var_0 maps\_anim::anim_generic_reach( level.baker, "signal_enemy_coverR" );
|
|
var_0 thread maps\_anim::anim_generic( level.baker, "signal_enemy_coverR" );
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_sniper12oclockhigh" );
|
|
wait 1;
|
|
level.player.ignoreme = 0;
|
|
level.baker thread maps\_utility::smart_dialogue( "nml_hsh_takehimout" );
|
|
|
|
if ( !maps\nml_util::player_has_silenced_weapon() )
|
|
maps\_utility::delaythread( 0.25, maps\_utility::display_hint_timeout, "hint_dog_attack_3p", 7 );
|
|
}
|
|
}
|
|
|
|
mall_teleport_dog()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "mall_tunnel_volume" );
|
|
|
|
if ( !level.dog istouching( var_0 ) )
|
|
{
|
|
var_1 = common_scripts\utility::get_target_ent( "mall_dog_teleport" );
|
|
level.dog forceteleport( var_1.origin, var_1.angles );
|
|
}
|
|
}
|
|
|
|
trigger_restore_dvars()
|
|
{
|
|
maps\_utility::trigger_wait_targetname( "mall_restore_dvars" );
|
|
var_0 = "hidden";
|
|
|
|
if ( common_scripts\utility::flag( "_stealth_spotted" ) )
|
|
var_0 = "spotted";
|
|
|
|
setsaveddvar( "ai_eventDistDeath", level._stealth.logic.ai_event["ai_eventDistDeath"][var_0] );
|
|
setsaveddvar( "ai_eventDistFootstepSprint", level._stealth.logic.ai_event["ai_eventDistFootstepSprint"][var_0] );
|
|
setsaveddvar( "ai_eventDistFootstepWalk", level._stealth.logic.ai_event["ai_eventDistFootstepWalk"][var_0] );
|
|
setsaveddvar( "ai_eventDistFootstep", level._stealth.logic.ai_event["ai_eventDistFootstep"][var_0] );
|
|
}
|
|
|
|
mall_lookout()
|
|
{
|
|
common_scripts\utility::flag_wait( "mall_lone_patrol_dead" );
|
|
level.player notify( "cancel_command" );
|
|
level.dog maps\_utility::ent_flag_set( "pause_dog_command" );
|
|
level.dog notify( "stop_path" );
|
|
level.dog.old_path = undefined;
|
|
level.dog setgoalpos( level.dog.origin );
|
|
common_scripts\utility::flag_set( "mall_btr_go" );
|
|
level endon( "_stealth_spotted" );
|
|
maps\nml_stealth::wait_till_every_thing_stealth_normal_for( 1 );
|
|
|
|
if ( !common_scripts\utility::flag( "mall_guy_died_by_dog" ) )
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_goodkill" );
|
|
else
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_goodboyriley" );
|
|
|
|
level.player.ignoreme = 0;
|
|
level.baker maps\_utility::delaythread( 1, maps\_utility::smart_dialogue, "nml_hsh_staylowfollowmy" );
|
|
level.baker maps\nml_util::set_move_rate( 1.3 );
|
|
level.baker maps\_utility::clear_generic_run_anim();
|
|
level.baker maps\_utility::enable_arrivals();
|
|
level.baker maps\_utility::enable_exits();
|
|
level.baker.goalradius = 96;
|
|
level.baker maps\_utility::disable_cqbwalk();
|
|
level.baker allowedstances( "crouch" );
|
|
level.dog maps\_utility_dogs::enable_dog_walk( 1 );
|
|
level.dog maps\nml_util::set_move_rate( 1 );
|
|
level.dog.idlelookattargets = undefined;
|
|
level.dog.ignoreall = 0;
|
|
level.baker pushplayer( 1 );
|
|
level.dog pushplayer( 1 );
|
|
maps\nml_util::hero_paths( "mall_lookout_path" );
|
|
common_scripts\utility::flag_wait( "mall_heli_go" );
|
|
wait 2;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_jackpot" );
|
|
wait 1.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_delta11wereseeing" );
|
|
wait 1.5;
|
|
level.baker maps\_utility::smart_dialogue( "nml_hsh_movingintoinvestigate" );
|
|
maps\nml_stealth::wait_till_every_thing_stealth_normal_for( 1 );
|
|
level.baker thread maps\_utility::smart_dialogue( "nml_hsh_adamsynconriley" );
|
|
thread sync_nag();
|
|
setsaveddvar( "r_hudoutlinewidth", 3 );
|
|
var_0 = level.dog.model;
|
|
level.dog maps\_utility_dogs::set_dog_model( "fullbody_dog_a_cam_obj" );
|
|
var_1 = level.dog;
|
|
var_1 makeusable();
|
|
|
|
if ( !level.console && !level.player usinggamepad() )
|
|
var_1 sethintstring( &"NML_HINT_SYNC_KB" );
|
|
else
|
|
var_1 sethintstring( &"NML_HINT_SYNC" );
|
|
|
|
var_1 waittill( "trigger" );
|
|
thread mall_sync_spotted_logic();
|
|
level notify( "kill_sync_nag" );
|
|
level.dog maps\_utility_dogs::set_dog_model_no_fur( var_0 );
|
|
var_1 makeunusable();
|
|
level.player maps\_utility::player_speed_percent( 1, 0.05 );
|
|
level.player allowjump( 0 );
|
|
level.player allowsprint( 0 );
|
|
level.dog maps\_utility::delaythread( 0.01, maps\_utility_dogs::dog_raise_camera, 0.4 );
|
|
thread common_scripts\utility::play_sound_in_space( "scn_nml_camera_raise", level.dog gettagorigin( "tag_camera" ) );
|
|
level.baker stopsounds();
|
|
thread maps\_utility::smart_radio_dialogue_interrupt( "nml_hsh_herewego" );
|
|
setsaveddvar( "r_hudoutlinewidth", 1 );
|
|
wait 0.5;
|
|
var_1 makeunusable();
|
|
level.player.pre_dogcam_weapon = level.player getcurrentweapon();
|
|
level.player disableweaponswitch();
|
|
level.player giveweapon( "remote_chopper_gunner" );
|
|
level.player switchtoweapon( "remote_chopper_gunner" );
|
|
setdvar( "hideHudFast", 1 );
|
|
setsaveddvar( "ammoCounterHide", 1 );
|
|
level.player thread maps\_utility::play_sound_on_entity( "uav_remote_raise_plr" );
|
|
cinematicingameloop( "dog_out" );
|
|
wait 1;
|
|
maps\_hud_util::fade_out( 0.5, "overlay_static" );
|
|
wait 0.5;
|
|
level.dog maps\_utility::clear_generic_idle_anim();
|
|
common_scripts\utility::flag_set( "start_dog_hunt" );
|
|
wait 0.5;
|
|
thread mall_dog_init();
|
|
level.player setclienttriggeraudiozone( "nml_dog_camera", 0.5 );
|
|
thread maps\_utility::music_play( "mus_nml_dog_stealth" );
|
|
maps\_hud_util::fade_in( 0.5, "overlay_static" );
|
|
level.dog.ignoreall = 0;
|
|
common_scripts\utility::noself_delaycall( 4, ::stopcinematicingame );
|
|
level.player maps\_utility::player_speed_percent( 100, 0.1 );
|
|
level.player allowjump( 1 );
|
|
level.player allowsprint( 1 );
|
|
}
|
|
|
|
mall_sync_spotted_logic()
|
|
{
|
|
level endon( "start_dog_hunt" );
|
|
level.player endon( "death" );
|
|
common_scripts\utility::flag_wait( "_stealth_spotted" );
|
|
|
|
for (;;)
|
|
{
|
|
level.player dodamage( 25, level.player.origin );
|
|
level.player viewkick( 10, level.player.origin );
|
|
wait 0.1;
|
|
}
|
|
}
|
|
|
|
mall_dog_init()
|
|
{
|
|
level.dog maps\_utility::ent_flag_set( "dogcam_acquire_targets" );
|
|
level.player lerpviewangleclamp( 0.3, 0, 0.2, 0, 0, 0, 0 );
|
|
level.dog setdogcommand( "attack" );
|
|
level.dog maps\_utility_dogs::disable_dog_walk();
|
|
level.dog maps\_utility::disable_arrivals();
|
|
level.player thread maps\_dog_drive::constant_screen_glitches();
|
|
level.player maps\_utility::notify_delay( "stop_constant_glitch", 2 );
|
|
var_0 = common_scripts\utility::get_target_ent( "dog_hunt_start_dog" );
|
|
level.dog.pushplayer = 1;
|
|
level.dog pushplayer( 1 );
|
|
level.dog.goalradius = 32;
|
|
var_1 = common_scripts\utility::get_target_ent( "mall_player_teleport" );
|
|
level.player setorigin( var_1.origin );
|
|
level.dog setgoalpos( var_0.origin );
|
|
level.dog waittill( "goal" );
|
|
level.dog thread maps\_anim::anim_generic_gravity( level.dog, "iw6_dog_sneak_runin_8" );
|
|
level.player maps\_dog_drive::default_dog_limits();
|
|
level.dog setdogcommand( "driven" );
|
|
level.dog maps\_utility::enable_arrivals();
|
|
level.dog.ignoreme = 1;
|
|
var_2 = getent( "boat_range_trigger", "script_noteworthy" );
|
|
var_2 common_scripts\utility::trigger_off();
|
|
wait 0.5;
|
|
level.dog.ignoreme = 0;
|
|
}
|
|
|
|
mall_lone_patrol_think()
|
|
{
|
|
self waittill( "death", var_0 );
|
|
var_1 = common_scripts\utility::get_target_ent( "mall_outside_grass_vol" );
|
|
|
|
if ( var_0 == level.dog )
|
|
common_scripts\utility::flag_set( "mall_guy_died_by_dog" );
|
|
|
|
if ( self istouching( var_1 ) )
|
|
common_scripts\utility::flag_set( "mall_lone_patrol_dead" );
|
|
else
|
|
{
|
|
wait 0.3;
|
|
maps\nml_stealth::player_set_spotted();
|
|
}
|
|
}
|
|
|
|
player_drive_dog()
|
|
{
|
|
maps\nml_stealth::stealth_settings_dog();
|
|
setnorthyaw( 223.8 );
|
|
var_0 = getaiarray( "axis" );
|
|
common_scripts\utility::array_call( var_0, ::delete );
|
|
var_1 = maps\_utility::getvehiclearray();
|
|
common_scripts\utility::array_call( var_1, ::delete );
|
|
maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "mall2_btrs" );
|
|
var_2 = maps\_vehicle::spawn_vehicles_from_targetname( "mall_btr_inside" );
|
|
var_3 = maps\_utility::array_spawn_targetname( "dog_hunt_guys1" );
|
|
var_4 = maps\_utility::array_spawn_targetname( "dog_hunt_guys2" );
|
|
level.baker.ignoreme = 1;
|
|
level.player.ignoreme = 1;
|
|
level.dog.ignoreme = 0;
|
|
level.dog_alt_melee_func = undefined;
|
|
level.player maps\_dog_drive::dog_drive_indirect( level.dog );
|
|
thread maps\nml_stealth::dog_footstep_logic();
|
|
thread maps\nml_util::mission_fail_on_dog_death();
|
|
common_scripts\utility::flag_wait( "mall_second_spawn" );
|
|
common_scripts\utility::array_thread( var_2, maps\_vehicle::gopath );
|
|
}
|
|
|
|
mall_walla_guys()
|
|
{
|
|
wait( randomfloatrange( 0, 0.5 ) );
|
|
|
|
if ( isdefined( self.walla ) )
|
|
return;
|
|
|
|
var_0 = getentarray( "mall_walla_volume", "targetname" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( self istouching( var_2 ) )
|
|
{
|
|
var_2 mall_walla_volume();
|
|
break;
|
|
}
|
|
}
|
|
|
|
wait( randomfloatrange( 0, 0.5 ) );
|
|
|
|
if ( isdefined( self.walla ) )
|
|
return;
|
|
|
|
var_0 = getentarray( "mall_radioburst_volume", "targetname" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( self istouching( var_2 ) )
|
|
{
|
|
var_2 mall_radioburst_volume();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
mall_radioburst_volume()
|
|
{
|
|
if ( isdefined( self.used ) )
|
|
return;
|
|
|
|
var_0 = [];
|
|
var_1 = getaiarray( "axis" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
if ( var_3 istouching( self ) )
|
|
{
|
|
self.used = 1;
|
|
var_3.walla = 1;
|
|
var_0 = common_scripts\utility::array_add( var_0, var_3 );
|
|
}
|
|
}
|
|
|
|
if ( var_0.size > 0 )
|
|
thread maps\nml_util::make_enemy_squad_burst( var_0, self.script_parameters );
|
|
}
|
|
|
|
mall_walla_volume()
|
|
{
|
|
if ( isdefined( self.used ) )
|
|
return;
|
|
|
|
var_0 = [];
|
|
var_1 = getaiarray( "axis" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
if ( var_3 istouching( self ) )
|
|
{
|
|
self.used = 1;
|
|
var_3.walla = 1;
|
|
var_0 = common_scripts\utility::array_add( var_0, var_3 );
|
|
}
|
|
}
|
|
|
|
if ( var_0.size > 0 )
|
|
thread maps\nml_util::group_walla( var_0, self.script_count_min, self.script_count_max, self.script_parameters );
|
|
}
|
|
|
|
dog_hunt_spotted()
|
|
{
|
|
level endon( "wolf_start_chase_dog" );
|
|
common_scripts\utility::flag_wait( "_stealth_spotted" );
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_werespottedtakeem" );
|
|
}
|
|
|
|
mall_inside()
|
|
{
|
|
level.vargas = maps\_utility::spawn_targetname( "vargas_spawner" );
|
|
level.oldboy = maps\_utility::spawn_targetname( "oldboy_spawner" );
|
|
level.handler = maps\_utility::spawn_targetname( "handler_spawner" );
|
|
level.vargas maps\_utility::gun_remove();
|
|
level.oldboy maps\_utility::gun_remove();
|
|
thread vargas_scene();
|
|
common_scripts\utility::flag_wait( "mall_inside_2" );
|
|
level.oldboy.name = "";
|
|
level.oldboy.script_friendname = "";
|
|
level.vargas.do_not_acquire = 1;
|
|
level.oldboy.do_not_acquire = 1;
|
|
level.handler.do_not_acquire = 1;
|
|
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "vargas_heli" );
|
|
var_0 vehicle_turnengineoff();
|
|
var_0 thread common_scripts\utility::play_loop_sound_on_entity( "scn_nml_heli_mall_street_lp" );
|
|
common_scripts\utility::flag_wait( "varges_heli_leave" );
|
|
var_0 maps\_vehicle::vehicle_paths( common_scripts\utility::get_target_ent( "vargas_heli_exit" ) );
|
|
var_0 delete();
|
|
}
|
|
|
|
vargas_scene()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "vargas_scene_anim" );
|
|
level.handler.animname = "soldier";
|
|
level.oldboy.animname = "hostage";
|
|
level.vargas.animname = "vargas";
|
|
level.handler hide();
|
|
level.oldboy hide();
|
|
var_0 thread maps\_anim::anim_loop_solo( level.vargas, "vargas_scene_idle" );
|
|
var_0 maps\_anim::anim_first_frame( [ level.handler, level.oldboy ], "vargas_scene" );
|
|
common_scripts\utility::flag_wait( "player_looking_at_vargas" );
|
|
level.handler show();
|
|
level.oldboy show();
|
|
thread vargas_scene_dialogue();
|
|
thread vargas_scene_dialogue_volume();
|
|
level.oldboy maps\_utility::set_hudoutline( "neutral", 0 );
|
|
var_1 = [ level.vargas, level.handler, level.oldboy ];
|
|
var_0 notify( "stop_loop" );
|
|
common_scripts\utility::array_thread( var_1, ::vargas_anim, var_0 );
|
|
}
|
|
|
|
vargas_anim( var_0 )
|
|
{
|
|
self.ignoreme = 1;
|
|
var_0 maps\_anim::anim_single_solo( self, "vargas_scene" );
|
|
|
|
if ( isdefined( self ) )
|
|
self delete();
|
|
}
|
|
|
|
vargas_scene_dialogue_volume()
|
|
{
|
|
level endon( "mall_player_ready_to_leave" );
|
|
level.dog endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
var_0 = min( 1.5, vargas_scene_get_lookat_score() );
|
|
|
|
if ( isdefined( level.vargas ) )
|
|
level.vargas scalevolume( var_0, 0.1 );
|
|
|
|
if ( isdefined( level.oldboy ) )
|
|
level.oldboy scalevolume( var_0, 0.1 );
|
|
|
|
if ( isdefined( level.dog.v_static ) )
|
|
level.dog.v_static scalevolume( min( max( 0, 1.2 - var_0 ), 0.4 ), 0.1 );
|
|
|
|
wait 0.1;
|
|
}
|
|
}
|
|
|
|
vargas_scene_get_lookat_score()
|
|
{
|
|
if ( !level.dog.zoomed && level.gameskill > 2 )
|
|
return 0;
|
|
|
|
var_0 = level.vargas geteye();
|
|
var_1 = 0.97;
|
|
var_2 = level.player;
|
|
var_3 = var_2 maps\_dog_control::get_eye();
|
|
var_4 = vectortoangles( var_0 - var_3 );
|
|
var_5 = anglestoforward( var_4 );
|
|
var_6 = var_2 getplayerangles();
|
|
var_7 = anglestoforward( var_6 );
|
|
var_8 = vectordot( var_5, var_7 );
|
|
|
|
if ( var_8 < var_1 )
|
|
return 0;
|
|
|
|
return ( var_8 - var_1 ) / ( 0.995 - var_1 );
|
|
}
|
|
|
|
vargas_scene_save()
|
|
{
|
|
wait 27;
|
|
var_0 = vargas_scene_get_lookat_score();
|
|
|
|
if ( var_0 > 0.4 )
|
|
maps\_utility::autosave_stealth_silent();
|
|
}
|
|
|
|
vargas_scene_dialogue()
|
|
{
|
|
level.vargas.animname = "vargas";
|
|
level.dog.v_static = common_scripts\utility::spawn_tag_origin();
|
|
level.dog.v_static linkto( level.dog, "tag_camera", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
level.dog.v_static playloopsound( "dogcam_radiostatic" );
|
|
thread vargas_scene_save();
|
|
maps\_utility::delaythread( 3, maps\_utility::smart_radio_dialogue, "nml_hsh_youseethatguys" );
|
|
level.vargas common_scripts\utility::delaycall( 15, ::attach, "weapon_p226", "tag_weapon_right" );
|
|
level.vargas maps\_utility::delaythread( 20.25, maps\_utility::smart_dialogue, "scn_dryfire_pistol_npc" );
|
|
wait 32;
|
|
level.oldboy hudoutlinedisable();
|
|
level.handler hudoutlinedisable();
|
|
level.vargas waittillmatch( "single anim", "ps_nml_rke_iwanteverythingmoved" );
|
|
var_0 = 0;
|
|
var_1 = vargas_scene_get_lookat_score();
|
|
|
|
if ( var_1 < 0.1 )
|
|
{
|
|
maps\nml_util::force_deathquote( &"NML_FAIL_INTEL" );
|
|
maps\_utility::missionfailedwrapper();
|
|
var_0 = 1;
|
|
}
|
|
|
|
wait 0.5;
|
|
level.vargas waittillmatch( "single anim", "ps_nml_rke_operationhomecomingwill_2" );
|
|
wait 1.5;
|
|
|
|
if ( !var_0 )
|
|
common_scripts\utility::flag_set( "mall_player_ready_to_leave" );
|
|
|
|
level.vargas hudoutlinedisable();
|
|
wait 1;
|
|
level.dog.v_static scalevolume( 0, 1 );
|
|
wait 1;
|
|
level.dog.v_static stoploopsound();
|
|
wait 0.1;
|
|
level.dog.v_static delete();
|
|
}
|
|
|
|
mall_dialogue()
|
|
{
|
|
level.dog endon( "death" );
|
|
wait 5;
|
|
thread maps\_utility::autosave_stealth();
|
|
level.dog.attack_times = 0;
|
|
thread hint_for_first_attack();
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_oklotsofenemy" );
|
|
wait 1;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_scoutaroundseeif" );
|
|
thread mall_marker();
|
|
mall_dialogue_grp1();
|
|
common_scripts\utility::flag_waitopen( "_stealth_spotted" );
|
|
}
|
|
|
|
mall_dialogue_grp1()
|
|
{
|
|
level endon( "_stealth_spotted" );
|
|
wait 5;
|
|
thread maps\_utility::smart_radio_dialogue( "nml_hsh_remembermoveslowand" );
|
|
maps\_utility::trigger_wait_targetname( "mall_dialogue_1" );
|
|
wait 3;
|
|
maps\_utility::trigger_wait_targetname( "mall_dialogue_2" );
|
|
maps\_utility::display_hint( "hint_stealthkill", 10 );
|
|
maps\_utility::smart_radio_dialogue_interrupt( "nml_hsh_thisshouldwork" );
|
|
}
|
|
|
|
mall_dialogue_grp2()
|
|
{
|
|
level endon( "_stealth_spotted" );
|
|
wait 2;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_okwerein" );
|
|
wait 2;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_letsfindoutwhats" );
|
|
common_scripts\utility::flag_wait( "mall_inside_2" );
|
|
wait 6;
|
|
thread maps\_utility::smart_radio_dialogue( "nml_hsh_okweremovingup" );
|
|
}
|
|
|
|
mall_marker()
|
|
{
|
|
level.dog endon( "death" );
|
|
var_0 = common_scripts\utility::get_target_ent( "vargas_scene_anim" );
|
|
var_1 = common_scripts\utility::spawn_tag_origin();
|
|
var_1.origin = var_0.origin;
|
|
objective_current( maps\_utility::obj( "1" ) );
|
|
objective_position( maps\_utility::obj( "1" ), var_1.origin );
|
|
level.dog thread maps\_utility::play_sound_on_entity( "scn_nml_camera_enemy_contact_on" );
|
|
common_scripts\utility::flag_wait( "player_close_to_vargas" );
|
|
wait 1;
|
|
objective_position( maps\_utility::obj( "1" ), ( 0, 0, 0 ) );
|
|
var_1 delete();
|
|
}
|
|
|
|
mall_dialogue_2()
|
|
{
|
|
setsaveddvar( "g_friendlyNameDist", 0 );
|
|
common_scripts\utility::flag_waitopen( "_stealth_spotted" );
|
|
mall_dialogue_grp2();
|
|
common_scripts\utility::flag_wait( "varges_heli_leave" );
|
|
common_scripts\utility::flag_wait( "player_close_to_vargas" );
|
|
thread vargas_instakill();
|
|
maps\_utility::autosave_stealth_silent();
|
|
common_scripts\utility::flag_waitopen( "_stealth_spotted" );
|
|
level.dog endon( "death" );
|
|
maps\_utility::smart_radio_dialogue_interrupt( "nml_hsh_theguyonthe" );
|
|
common_scripts\utility::flag_clear( "start_earthquakes" );
|
|
thread vargas_scene_flag_waiter();
|
|
level.vargas maps\_utility::set_hudoutline( "enemy", 0 );
|
|
wait 1;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_zoominletssee" );
|
|
maps\_utility::display_hint( "hint_zoom" );
|
|
common_scripts\utility::flag_wait( "mall_player_ready_to_leave" );
|
|
level endon( "dog_drive_stop_dialogue" );
|
|
level endon( "wolf_start_chase_dog" );
|
|
setsaveddvar( "g_friendlyNameDist", 15000 );
|
|
thread mall_teleport_allies_to_exit();
|
|
wait 0.5;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_firebasecharlieoperation" );
|
|
maps\_utility::smart_radio_dialogue( "nml_mrk_stalker2whatis" );
|
|
wait 0.3;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_rogerthatdeltawere" );
|
|
thread maps\_utility::autosave_stealth();
|
|
wait 1;
|
|
setnorthyaw( 223.8 );
|
|
thread spawn_mall_exit();
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_markingourpositionsnow" );
|
|
wait 1;
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_adamgetrileyout" );
|
|
common_scripts\utility::flag_set( "start_earthquakes" );
|
|
thread exit_nags();
|
|
}
|
|
|
|
vargas_scene_flag_waiter()
|
|
{
|
|
level.dog endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( player_looking_at_vargas() )
|
|
{
|
|
common_scripts\utility::flag_set( "player_looking_at_vargas" );
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
exit_nags()
|
|
{
|
|
level endon( "wolf_start_chase_dog" );
|
|
level endon( "stop_mall_nags" );
|
|
|
|
while ( !common_scripts\utility::flag( "wolf_start_chase_dog" ) )
|
|
{
|
|
wait 8;
|
|
setnorthyaw( 223.8 );
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_guiderileysouthto" );
|
|
wait 8;
|
|
setnorthyaw( 223.8 );
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_logantheexitis" );
|
|
wait 8;
|
|
setnorthyaw( 223.8 );
|
|
maps\_utility::smart_radio_dialogue( "nml_hsh_ivemarkedtherally" );
|
|
wait 8;
|
|
}
|
|
}
|
|
|
|
spawn_mall_exit()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "mall_exit_marker" );
|
|
var_1 = common_scripts\utility::spawn_tag_origin();
|
|
var_1.origin = var_0.origin;
|
|
objective_position( maps\_utility::obj( "1" ), var_1.origin );
|
|
level.dog thread maps\_utility::play_sound_on_entity( "scn_nml_camera_enemy_contact_on" );
|
|
common_scripts\utility::flag_wait( "wolf_start_chase_dog" );
|
|
objective_position( maps\_utility::obj( "1" ), ( 0, 0, 0 ) );
|
|
var_1 delete();
|
|
}
|
|
|
|
mall_teleport_allies_to_exit()
|
|
{
|
|
maps\_utility::trigger_wait_targetname( "mall_teleport_allies_to_exit" );
|
|
level notify( "stop_mall_nags" );
|
|
level.baker.goalradius = 64;
|
|
level.adam.goalradius = 64;
|
|
maps\nml_util::set_start_positions( "mall_exit" );
|
|
level.baker maps\_utility::set_hudoutline( "friendly", 0 );
|
|
level.adam maps\_utility::set_hudoutline( "friendly", 0 );
|
|
level.baker maps\_utility::enable_cqbwalk();
|
|
level.adam maps\_utility::enable_cqbwalk();
|
|
}
|
|
|
|
vargas_instakill()
|
|
{
|
|
level endon( "mall_player_ready_to_leave" );
|
|
level.dog endon( "death" );
|
|
|
|
while ( maps\nml_stealth::stealth_is_everything_normal_for_group( "400" ) )
|
|
wait 0.05;
|
|
|
|
common_scripts\utility::flag_set( "_stealth_spotted" );
|
|
var_0 = getaiarray( "axis" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
var_2 notify( "stop_path" );
|
|
var_2 notify( "end_patrol" );
|
|
var_2 getenemyinfo( level.dog );
|
|
var_2 setgoalentity( level.dog );
|
|
}
|
|
|
|
wait 3;
|
|
level.dog kill();
|
|
}
|
|
|
|
mall_exit()
|
|
{
|
|
common_scripts\utility::flag_wait( "mall_player_ready_to_leave" );
|
|
var_0 = common_scripts\utility::get_target_ent( "mall_exit" );
|
|
|
|
for (;;)
|
|
{
|
|
var_0 waittill( "trigger", var_1 );
|
|
|
|
if ( var_1 == level.dog )
|
|
break;
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
maps\_utility::music_stop( 3 );
|
|
level notify( "dog_drive_stop_dialogue" );
|
|
thread maps\_utility::smart_radio_dialogue_interrupt( "nml_hsh_goodboyriley" );
|
|
level.player clearclienttriggeraudiozone( 0.5 );
|
|
level.player notify( "disable_zoom" );
|
|
maps\_hud_util::fade_out( 0.25, "overlay_static" );
|
|
wait 0.5;
|
|
level.player freezecontrols( 1 );
|
|
|
|
while ( level.adam.origin[2] > -1000 )
|
|
wait 0.05;
|
|
|
|
level.dog_alt_melee_func = undefined;
|
|
level.dog.script_nostairs = undefined;
|
|
level.dog.script_noturnanim = undefined;
|
|
level.baker.ignoreall = 0;
|
|
level.baker hudoutlinedisable();
|
|
level.player maps\_dog_drive::dog_drive_indirect_disable( level.dog );
|
|
level.dog.melee = undefined;
|
|
level.dog thread maps\_utility::magic_bullet_shield();
|
|
level.dog maps\_utility_dogs::set_dog_model( level.dog.model );
|
|
level.player setorigin( level.adam.origin );
|
|
level.player setplayerangles( level.adam.angles );
|
|
level.adam delete();
|
|
var_2 = common_scripts\utility::get_target_ent( "chase_dog_dog_teleport" );
|
|
level.dog forceteleport( var_2.origin, var_2.angles );
|
|
common_scripts\utility::flag_set( "wolf_start_chase_dog" );
|
|
maps\_hud_util::fade_in( 0.25, "overlay_static" );
|
|
|
|
if ( !isdefined( level.player.pre_dogcam_weapon ) )
|
|
level.player.pre_dogcam_weapon = "honeybadger+acog_sp";
|
|
|
|
level.player disableweaponswitch();
|
|
cinematicingameloop( "dog_out" );
|
|
level.player switchtoweapon( level.player.pre_dogcam_weapon );
|
|
wait 0.5;
|
|
level.player freezecontrols( 0 );
|
|
wait 1;
|
|
level.player takeweapon( "remote_chopper_gunner" );
|
|
level.player enableweaponswitch();
|
|
setdvar( "hideHudFast", 0 );
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
}
|
|
|
|
mall_blockers()
|
|
{
|
|
var_0 = maps\_utility::array_spawn_targetname( "mall_blocker_guys" );
|
|
var_1 = common_scripts\utility::get_target_ent( "mall_blocker_brushmodel_a" );
|
|
var_2 = common_scripts\utility::get_target_ent( "mall_blocker_brushmodel_b" );
|
|
var_3 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "mall_blocker_a" );
|
|
var_2 notsolid();
|
|
common_scripts\utility::flag_wait( "mall_player_ready_to_leave" );
|
|
var_3 delete();
|
|
var_1 connectpaths();
|
|
var_1 delete();
|
|
|
|
foreach ( var_5 in var_0 )
|
|
{
|
|
if ( isdefined( var_5 ) )
|
|
var_5 delete();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "wolf_start_chase_dog" );
|
|
wait 0.75;
|
|
var_3 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "mall_blocker_b" );
|
|
var_2 solid();
|
|
common_scripts\utility::array_thread( var_3, ::chase_dog_blocker_think );
|
|
common_scripts\utility::flag_wait( "wolf_start_wolfpack" );
|
|
common_scripts\utility::array_call( var_3, ::delete );
|
|
}
|
|
|
|
chase_dog_blocker_think()
|
|
{
|
|
self endon( "death" );
|
|
thread maps\_vehicle::mgon();
|
|
maps\_utility::trigger_wait_targetname( "mall_blocker_2_spotted_trig" );
|
|
|
|
foreach ( var_1 in self.mgturret )
|
|
{
|
|
var_1 thread maps\_mgturret::burst_fire_unmanned();
|
|
var_1 setmode( "auto_nonai" );
|
|
}
|
|
|
|
thread maps\nml_util::btr_target_player();
|
|
}
|
|
|
|
player_looking_at_vargas()
|
|
{
|
|
var_0 = level.vargas geteye();
|
|
var_1 = distance( level.vargas.origin, level.dog.origin ) < 800 && level.dog.zoomed && level.player maps\nml_util::player_looking_at_on_dog( var_0, 0.992, undefined, level.vargas );
|
|
level.bool = var_1;
|
|
return var_1;
|
|
}
|
|
|
|
play_next_vargas_line()
|
|
{
|
|
if ( !isdefined( level.vargas_lines ) )
|
|
{
|
|
level.vargas_lines = [];
|
|
level.vargas_lines[level.vargas_lines.size] = "** static **";
|
|
level.vargas_lines[level.vargas_lines.size] = "What do you mean we're behind schedule?!";
|
|
level.vargas_lines[level.vargas_lines.size] = "Sir, the dig site was attacked...";
|
|
level.vargas_lines[level.vargas_lines.size] = "What?!";
|
|
level.vargas_lines[level.vargas_lines.size] = "I cannot deal with this incompetence...";
|
|
level.vargas_lines[level.vargas_lines.size] = "** GENERAL SHOOTS PRIVATE **";
|
|
level.vargas_lines[level.vargas_lines.size] = "You! You've just been promoted...";
|
|
level.vargas_lines[level.vargas_lines.size] = "We need this shipment moved to Firebase Charlie in two hours...";
|
|
level.vargas_lines[level.vargas_lines.size] = "Operation Loose Ends will proceed as planned...";
|
|
level.vargas_lines[level.vargas_lines.size] = "** static **";
|
|
level.vargas_line_count = 0;
|
|
}
|
|
|
|
iprintlnbold( level.vargas_lines[level.vargas_line_count] );
|
|
wait 1.5;
|
|
level.vargas_line_count = level.vargas_line_count + 1;
|
|
|
|
if ( level.vargas_line_count >= level.vargas_lines.size )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
enemy_grass_stealth_think()
|
|
{
|
|
var_0 = [];
|
|
var_0["hidden"] = maps\_stealth_behavior_enemy::enemy_state_hidden;
|
|
var_0["spotted"] = ::enemy_grass_stealth_spotted;
|
|
maps\_stealth_behavior_enemy::enemy_custom_state_behavior( var_0 );
|
|
}
|
|
|
|
enemy_grass_stealth_spotted( var_0 )
|
|
{
|
|
thread maps\_stealth_behavior_enemy::enemy_state_spotted( var_0 );
|
|
|
|
if ( isdefined( level.dog.enemy ) && level.dog.enemy == self && level.dog.script == "dog_combat" )
|
|
thread maps\_utility::set_battlechatter( 0 );
|
|
|
|
thread maps\nml_util::run_away_from_dog();
|
|
}
|