// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool chase_dog() { wait 0.25; level.player maps\_utility::player_speed_percent( 90 ); level.dog.idlelookattargets = undefined; level.dog maps\_utility_dogs::dyn_sniff_disable(); level.dog.script_nostairs = 1; maps\nml_util::team_unset_colors( 128 ); level.dog maps\nml_util::set_move_rate( 1 ); level.baker maps\nml_util::set_move_rate( 1 ); level.baker allowedstances( "stand", "crouch", "prone" ); level.baker maps\_utility::disable_cqbwalk(); maps\nml_util::hero_paths( "ridge_path", 300, 350, 700, 1, 0 ); common_scripts\utility::flag_wait( "wolf_baker_slide" ); var_0 = common_scripts\utility::get_target_ent( "hesh_slide_start" ); var_0 maps\_anim::anim_generic_reach( level.baker, var_0.animation ); common_scripts\utility::flag_set( "wolf_hesh_slide_done" ); level.baker thread maps\nml_util::slide_sounds( var_0.animation ); var_0 maps\_anim::anim_generic( level.baker, var_0.animation ); if ( !common_scripts\utility::flag( "wolf_start_wolfpack" ) ) level.baker setgoalpos( level.baker.origin ); } chase_dog_dialogue() { wait 2; level.baker maps\_utility::smart_dialogue( "nml_hsh_letsmove_2" ); common_scripts\utility::flag_wait( "wolf_cavern_start" ); level.baker maps\_utility::smart_dialogue( "nml_hsh_delta11stalker2" ); common_scripts\utility::flag_wait( "wolf_cavern_middle" ); level.dog thread maps\_utility_dogs::dog_bark( "anml_dog_attack_npc_jump" ); level.dog maps\nml_util::set_move_rate( 1.4 ); level.baker maps\_utility::disable_cqbwalk(); wait 2; level.baker maps\nml_util::set_move_rate( 1.1 ); level.baker maps\_utility::smart_dialogue( "nml_hsh_rileyslowdown" ); wait 0.6; level.baker maps\_utility::smart_dialogue( "nml_hsh_whatisthisdog" ); wait 0.6; level.baker maps\_utility::smart_dialogue( "nml_hsh_rileyheel" ); level.dog maps\_utility_dogs::dog_bark( "anml_dog_bark" ); wait 0.5; level.dog maps\_utility_dogs::dog_bark( "anml_dog_bark" ); level.dog maps\_utility_dogs::dog_bark( "anml_dog_bark" ); common_scripts\utility::flag_wait( "wolf_baker_slide" ); wait 1.5; level.dog maps\_utility_dogs::dog_bark( "anml_dog_bark" ); wait 0.5; level.dog maps\_utility_dogs::dog_bark( "anml_dog_bark" ); level.dog maps\_utility_dogs::dog_bark( "anml_dog_bark" ); } wolfpack() { level.player maps\_utility::player_speed_percent( 60 ); level.baker.goalradius = 30; level.dog.goalradius = 30; level notify( "wolf_wolfpack_opening" ); set_default_team_move_speed(); level.baker maps\_utility::clear_force_color(); level.dog maps\_utility::clear_force_color(); level.baker maps\_utility::set_ignoreall( 1 ); level.baker maps\_utility::set_ignoreme( 1 ); } ghost_town_sneak() { var_0 = common_scripts\utility::get_target_ent( "ghosttown_stack" ); var_0 common_scripts\utility::trigger_off(); thread init_hover(); maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "ghost_hover_01" ); var_1 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "ghosttown_jeeps" ); common_scripts\utility::array_thread( var_1, maps\_vehicle::godon ); common_scripts\utility::array_thread( var_1, ::ghosttown_jeep_init ); var_2 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "ghosttown_heli" ); common_scripts\utility::array_thread( var_2, ::ghosttown_heli_flyby_think ); common_scripts\utility::array_thread( level.heroes, maps\_utility::set_goalradius, 64 ); level.player.ignoreme = 1; common_scripts\utility::array_thread( level.heroes, maps\_utility::set_ignoreme, 1 ); common_scripts\utility::array_thread( level.heroes, maps\_utility::set_ignoreall, 1 ); level.dog.ignoreme = 1; maps\_utility::array_spawn_targetname( "ghosttown_patrol" ); ghost_town_open_the_gate(); maps\_utility::autosave_by_name( "nml" ); maps\_utility::battlechatter_off( "allies" ); maps\_utility::battlechatter_off( "axis" ); common_scripts\utility::array_call( level.heroes, ::allowedstances, "crouch" ); level.dog thread maps\_utility_dogs::enable_dog_sneak(); thread ghost_town_sneak_end(); thread ghost_town_end(); } ghosttown_heli_flyby_think() { if ( isdefined( self.script_soundalias ) ) { self vehicle_turnengineoff(); thread maps\_utility::play_sound_on_entity( self.script_soundalias ); } } ghosttown_jeep_init() { self endon( "death" ); self waittill( "damage" ); common_scripts\utility::flag_set( "ghosttown_end_patrol" ); } ghosttown_patrol_init() { self endon( "death" ); self addaieventlistener( "grenade danger" ); self addaieventlistener( "projectile_impact" ); self addaieventlistener( "silenced_shot" ); self addaieventlistener( "bulletwhizby" ); self addaieventlistener( "gunshot" ); self addaieventlistener( "gunshot_teammate" ); self addaieventlistener( "explode" ); self addaieventlistener( "death" ); common_scripts\utility::waittill_either( "damage", "ai_event" ); common_scripts\utility::flag_set( "ghosttown_end_patrol" ); } ghost_town_open_the_gate() { var_0 = common_scripts\utility::get_target_ent( "ghosttown_doorkick" ); var_1 = "NML_gate_open"; var_2 = common_scripts\utility::get_target_ent( "nml_gate_r_model" ); var_3 = common_scripts\utility::get_target_ent( "nml_gate_r" ); var_4 = maps\_utility::spawn_anim_model( "gate" ); var_0 maps\_anim::anim_first_frame_solo( var_4, var_1 ); wait 1; var_0 = common_scripts\utility::get_target_ent( "ghosttown_keegan_signal" ); var_0 maps\_anim::anim_generic_reach( level.keegan, "signal_enemy_coverR" ); thread ghost_town_sneak_dialogue(); var_0 maps\_anim::anim_generic( level.keegan, "signal_enemy_coverR" ); var_0 = common_scripts\utility::get_target_ent( "ghosttown_doorkick" ); var_2 linkto( var_4 ); var_3 linkto( var_4 ); level.baker.animname = "hesh"; var_0 maps\_anim::anim_reach_solo( level.baker, var_1 ); var_3 connectpaths(); var_0 maps\_anim::anim_single( [ level.baker, var_4 ], var_1 ); var_3 disconnectpaths(); var_0 = common_scripts\utility::get_target_ent( "ghosttown_doorkick_after" ); level.baker setgoalnode( var_0 ); wait 1; maps\_utility::activate_trigger_with_targetname( "ghosttown_move_sneak" ); maps\_utility::delaythread( 1, ::set_team_colors ); } ghost_town_sneak_dialogue() { common_scripts\utility::flag_init( "merrick_done_talking" ); level endon( "ghosttown_end_patrol" ); level.keegan maps\_utility::smart_dialogue( "nml_kgn_enemycontactahead" ); wait 3; level.merrick maps\_utility::smart_dialogue( "nml_mrk_hangontheyretaking" ); wait 1; level.merrick maps\_utility::smart_dialogue( "nml_mrk_rightonschedule" ); common_scripts\utility::flag_wait( "ghosttown_start_patrol" ); level.keegan maps\_utility::smart_dialogue( "nml_mrk_wevegotsomestragglers" ); wait 1; level.merrick maps\_utility::smart_dialogue( "nml_kgn_probablysomeinthe" ); wait 0.5; level.merrick maps\_utility::smart_dialogue( "nml_mrk_mopemup" ); wait 1; level.keegan maps\_utility::smart_dialogue( "nml_mrk_okkeegankickus" ); wait 0.5; common_scripts\utility::flag_set( "merrick_done_talking" ); wait 0.75; level thread maps\_utility::notify_delay( "stop_keegan_snipe", 1 ); thread keegan_snipes(); wait 1; common_scripts\utility::flag_set( "ghosttown_end_patrol" ); } ghost_town_end() { thread the_end(); level endon( "ghosttown_end" ); common_scripts\utility::flag_wait( "ghosttown_pre_end" ); maps\nml_util::volume_waittill_no_axis( "ghosttown_pre_end_vol", 1 ); common_scripts\utility::array_thread( level.heroes, maps\_utility::set_baseaccuracy, 20 ); common_scripts\utility::array_thread( level.heroes, maps\_utility::disable_ai_color ); common_scripts\utility::array_thread( level.heroes, maps\_utility::disable_cqbwalk ); level.dog maps\_utility::disable_ai_color(); maps\nml_util::hero_paths( "ghosttown_pre_end_pos" ); wait 1; level.merrick thread maps\_utility::smart_dialogue( "nml_mrk_moveuptopof" ); var_0 = getaiarray( "axis" ); foreach ( var_2 in var_0 ) var_2.ignoreme = 0; } ghost_town_end_dialogue() { thread maps\_utility::music_crossfade( "mus_nml_end_reveal", 3.0 ); level.merrick maps\_utility::smart_dialogue( "nml_mrk_youboysstillup" ); wait 1; level.merrick maps\_utility::smart_dialogue( "nml_mrk_hehtherearemore" ); } the_end() { common_scripts\utility::flag_wait( "ghosttown_end" ); level.merrick.ignoresuppression = 1; level.keegan.ignoresuppression = 1; maps\nml_util::hero_paths( "ghosttown_end_pos" ); thread ghost_town_end_dialogue(); common_scripts\utility::flag_wait( "the_end" ); thread stadium_pa(); level.player allowfire( 0 ); level.player disableoffhandweapons( 1 ); level.player enableinvulnerability(); level.player common_scripts\utility::delaycall( 2.0, ::setclienttriggeraudiozone, "nml_fade_out", 6.5 ); wait 4; maps\_hud_util::fade_out( 4 ); wait 1; maps\_utility::nextmission(); } stadium_pa() { common_scripts\utility::play_sound_in_space( "nml_pa_pmc3_allnoncombatpersonnel", ( 20124, 29924, -389 ) ); wait 0.25; common_scripts\utility::play_sound_in_space( "nml_pa_saf1_perimeteroutpostswill", ( 17654, 31217, -389 ) ); } ghost_town_sneak_end() { common_scripts\utility::flag_wait( "ghosttown_end_patrol" ); if ( !common_scripts\utility::flag( "merrick_done_talking" ) ) maps\_utility::smart_radio_dialogue_interrupt( "nml_mrk_weaponsfree" ); else { var_0 = getaiarray( "axis" ); if ( var_0.size > 0 ) { var_1 = var_0[0]; var_1 thread maps\_utility::play_sound_on_entity( "SP_0_stealth_alert" ); wait 0.6; thread maps\_utility::smart_radio_dialogue_interrupt( "nml_mrk_weaponsfree" ); } } maps\_utility::music_play( "mus_nml_battle_end" ); maps\_utility::autosave_by_name( "nml" ); maps\_utility::battlechatter_on( "axis" ); level.player maps\_utility::player_speed_percent( 100, 1 ); level.default_goalheight = 64; level.dog.script_color_delay_override = 1.5; level.baker.script_color_delay_override = undefined; level.keegan.script_color_delay_override = undefined; level.merrick.script_color_delay_override = undefined; level.keegan maps\_utility::disable_pain(); level.merrick maps\_utility::disable_pain(); level.keegan maps\_utility::disable_bulletwhizbyreaction(); level.merrick maps\_utility::disable_bulletwhizbyreaction(); level.merrick.ignoresuppression = 1; level.keegan.ignoresuppression = 1; common_scripts\utility::array_call( level.heroes, ::allowedstances, "stand", "crouch", "prone" ); level.dog maps\_utility_dogs::disable_dog_sneak(); level.dog setdogattackradius( 256 ); level.player.ignoreme = 0; common_scripts\utility::array_thread( level.heroes, maps\_utility::set_ignoreme, 0 ); common_scripts\utility::array_thread( level.heroes, maps\_utility::set_ignoreall, 0 ); level.dog.ignoreme = 0; level.dog.ignoreall = 0; common_scripts\utility::array_thread( level.heroes, maps\_utility::enable_cqbwalk ); common_scripts\utility::array_thread( level.heroes, ::set_fixednodesaferadius, 192 ); thread keegan_sniper_logic(); maps\_utility::activate_trigger_with_targetname( "ghosttown_first_pos" ); maps\_utility::array_spawn_targetname( "ghosttown_w1" ); maps\_utility::set_team_bcvoice( "allies", "seal" ); level.dog maps\_utility_dogs::disable_dog_sneak(); wait 1; wait 0.5; maps\_utility::battlechatter_on( "allies" ); } set_fixednodesaferadius( var_0 ) { self.fixednodesaferadius = var_0; } wolfpack_cairo() { level.dog set_ignore_states(); level.dog notify( "path_end" ); var_0 = common_scripts\utility::get_target_ent( "cairo_wolfevent_01node" ); level.dog setgoalnode( var_0 ); level.dog.goalradius = 32; level.dog maps\nml_util::set_move_rate( 1 ); var_0 = common_scripts\utility::get_target_ent( "cairo_dragback_node" ); var_0 maps\_anim::anim_reach_solo( level.dog, "dog_drag" ); var_0 thread maps\_anim::anim_loop_solo( level.dog, "dog_drag_idle" ); level notify( "dog_reached_goal" ); } wolfpack_hesh() { level endon( "wolfpack_circle" ); thread wolfpack_drag(); thread wolfpack_dialogue(); common_scripts\utility::flag_wait( "wolf_hesh_slide_done" ); level.baker notify( "path_end" ); var_0 = common_scripts\utility::get_target_ent( "hesh_wolfevent_01node" ); var_0 maps\_anim::anim_generic_reach( level.baker, "stand_exposed_wave_halt" ); var_0 thread maps\_anim::anim_generic_first_frame( level.baker, "stand_exposed_wave_halt" ); common_scripts\utility::flag_wait( "wolf_dog_advance" ); var_0 notify( "stop_loop" ); level.baker thread maps\_anim::anim_single_solo( level.baker, "stand_exposed_wave_halt" ); level.baker.goalradius = 64; level.baker.fixednode = 1; level.baker maps\_utility::disable_cqbwalk(); level.baker allowedstances( "crouch" ); level.baker maps\_utility::set_goal_node_targetname( "hesh_wolfevent_02node" ); } wolf_baker_fire_thread() { if ( common_scripts\utility::flag( "begin_wolf_attack" ) ) return; level endon( "begin_wolf_attack" ); level.baker endon( "done_dragging" ); common_scripts\utility::flag_wait( "wolfpack_pack" ); for (;;) { var_0 = randomintrange( 3, 9 ); for ( var_1 = 0; var_1 < var_0; var_1++ ) { level.baker shoot(); wait( randomfloatrange( 0.1, 0.25 ) ); } wait( randomfloatrange( 0.25, 0.75 ) ); } } wolfpack_drag() { level endon( "begin_wolf_attack" ); common_scripts\utility::flag_wait( "wolfpack_circle" ); wait 3; level.baker maps\_utility::smart_dialogue( "nml_hsh_ohshit" ); thread wolfpack_circle_dialogue(); level.baker.animname = "hesh"; var_0 = common_scripts\utility::get_target_ent( "cairo_dragback_node" ); level.baker maps\_utility::enable_cqbwalk(); var_0 maps\_anim::anim_reach_solo( level.baker, "dog_drag" ); var_0 notify( "stop_loop" ); level.baker maps\_utility::disable_cqbwalk(); thread wolf_baker_fire_thread(); level.dog thread maps\_utility::play_sound_on_entity( "scn_nml_wolf_riley_pullback" ); var_0 maps\_anim::anim_single( [ level.baker, level.dog ], "dog_drag_start" ); var_0.origin = level.dog.origin; var_0.angles = level.dog.angles; var_0 maps\_anim::anim_single( [ level.baker, level.dog ], "dog_drag_loop" ); var_0.origin = level.dog.origin; var_0.angles = level.dog.angles; var_0 maps\_anim::anim_single( [ level.baker, level.dog ], "dog_drag_loop" ); var_0.origin = level.dog.origin; var_0.angles = level.dog.angles; var_0 maps\_anim::anim_single( [ level.baker, level.dog ], "dog_drag_end" ); level.baker notify( "done_dragging" ); level.baker maps\_utility::set_ignoreall( 0 ); level.baker.baseaccuracy = 0.3; level.baker setgoalpos( level.baker.origin ); var_0.origin = level.dog.origin; var_0.angles = level.dog.angles; var_0 thread maps\_anim::anim_loop_solo( level.dog, "dog_drag_idle" ); } wolfpack_circle_dialogue() { level endon( "begin_wolf_attack" ); wait 2; level.baker maps\_utility::smart_dialogue( "nml_hsh_okadambackit" ); } wolfpack_dialogue() { level endon( "begin_wolf_attack" ); common_scripts\utility::flag_wait( "wolf_dog_advance" ); maps\_utility::autosave_by_name( "nml" ); level.dog thread maps\_utility_dogs::dog_bark( "anml_dog_attack_npc_jump" ); wait 0.5; level.baker maps\_utility::smart_dialogue( "nml_hsh_woahwoahslowdown" ); wait 1; level.baker maps\_utility::smart_dialogue( "nml_hsh_somethingisntright" ); maps\_utility::music_play( "mus_nml_wolf_appear" ); wait 3; level.baker maps\_utility::smart_dialogue( "nml_hsh_whatswrongboy" ); wait 1; level notify( "wolf_advance" ); level.player thread maps\_utility::play_sound_on_entity( "elm_anml_wolf_howl" ); thread wolf_howls(); common_scripts\utility::flag_set( "wolfpack_circle" ); } wolf_howls() { var_0 = maps\_utility::getstructarray_delete( "wolf_sound_source_a", "targetname" ); common_scripts\utility::array_thread( var_0, ::wolf_howl_struct, "begin_wolf_attack" ); } wolf_howl_struct( var_0 ) { var_1 = common_scripts\utility::spawn_tag_origin(); var_1.origin = self.origin; var_1 playsound( self.script_soundalias ); common_scripts\utility::flag_wait( var_0 ); var_1 stopsounds(); var_1 delete(); } wolf_setup() { self setdogcommand( "attack" ); self.ignoreme = 1; self.ignoreall = 1; wolf_face(); self.custom_deathsound = "scn_wolf_nml_hurt"; thread maps\_utility::deletable_magic_bullet_shield(); maps\_utility::disable_pain(); self setcandamage( 0 ); self.script_nobark = 1; self.script_nostairs = 1; maps\_utility::set_generic_run_anim( "wolf_walk" ); maps\_utility::set_generic_idle_anim( "dog_alert" ); if ( isdefined( self.script_moveplaybackrate ) ) self.moveplaybackrate = self.script_moveplaybackrate; wait( randomfloatrange( 0, 1 ) ); maps\_utility::disable_arrivals(); self.goalradius = 32; maps\_utility::walkdist_zero(); var_0 = common_scripts\utility::get_target_ent(); self setgoalpos( var_0.origin ); thread wolf_growl(); } wolf_growl() { self endon( "death" ); level endon( "stop_growling" ); } #using_animtree("dog"); wolf_face() { if ( getdvarint( "black_wolf", 0 ) ) self setmodel( "fullbody_wolf_b" ); self setanimknobrestart( %nml_wolf_aggressive_face, 1, 0, 1 ); } wolf_face_clear() { self clearanim( %nml_wolf_aggressive_face, 0.5 ); } wolf_init() { self.custom_deathsound = "scn_wolf_nml_hurt"; self.goalradius = 64; self setdogcommand( "attack" ); self.ignoreme = 1; self.ignoreall = 1; self.script_nobark = 1; wolf_face(); var_0 = self; self hide(); self setcandamage( 0 ); thread wolf_player_hunt(); if ( !common_scripts\utility::flag( "wolfpack_pack" ) ) { level endon( "wolfpack_pack" ); thread wolf_start_pos(); self waittill( "damage" ); common_scripts\utility::flag_set( "wolf_died" ); self kill(); common_scripts\utility::flag_set( "wolfpack_pack" ); } } wolf_start_pos() { self endon( "alpha_wolf" ); self endon( "death" ); maps\_utility::disable_arrivals(); maps\_utility::disable_exits(); maps\_utility::set_generic_run_anim( "wolf_walk" ); if ( isdefined( self.script_moveplaybackrate ) ) maps\nml_util::set_move_rate( self.script_moveplaybackrate ); level waittill( "wolf_advance" ); wait( randomfloatrange( 2.5, 4 ) ); self.goalradius = 128; var_0 = common_scripts\utility::get_target_ent( self.target ); thread maps\_utility::follow_path_and_animate( var_0, 0 ); } wolf_player_hunt() { self endon( "death" ); var_0 = self; thread wolf_growl(); common_scripts\utility::flag_wait( "wolf_dog_advance" ); self show(); self setcandamage( 1 ); common_scripts\utility::flag_wait( "wolfpack_pack" ); wait( randomfloatrange( 0.5, 2 ) ); maps\_utility::clear_generic_run_anim(); maps\_utility::enable_arrivals(); maps\_utility::enable_exits(); maps\nml_util::set_move_rate( 1 ); level notify( "stop_growling" ); var_0 notify( "stop_path" ); var_0 thread maps\_utility::play_sound_on_entity( "anml_dog_attack_npc_jump" ); var_0 maps\_utility::set_ignoreme( 0 ); var_0 maps\_utility::set_ignoreall( 0 ); var_0 maps\nml_util::set_move_rate( 1 ); var_0 maps\_utility::set_favoriteenemy( level.player ); var_0.goalradius = 64; var_0 setgoalentity( level.player, 100 ); wait 0.3; } wolfpack_circle() { level endon( "pack_fight" ); level.w_alpha = maps\_utility::spawn_targetname( "wolf_alpha" ); level.w_alpha thread wolf_init(); common_scripts\utility::flag_wait( "wolf_dog_advance" ); wait 3; var_0 = common_scripts\utility::get_target_ent( level.w_alpha.target ); maps\_utility::disable_arrivals(); maps\_utility::disable_exits(); maps\_utility::set_generic_run_anim( "wolf_walk" ); maps\nml_util::set_move_rate( 0.8 ); level.w_alpha.goalradius = 64; level.w_alpha notify( "alpha_wolf" ); level.w_alpha thread maps\_utility::follow_path_and_animate( var_0, 0 ); wait 0.5; level.w_alpha waittill( "path_end_reached" ); common_scripts\utility::flag_wait( "wolfpack_circle" ); wait 8; common_scripts\utility::flag_set( "wolfpack_pack" ); } wolfpack_pack() { var_0 = getentarray( "wolf_2", "targetname" ); foreach ( var_2 in var_0 ) var_2.script_wait = 0.1; thread maps\_spawner::flood_spawner_scripted( var_0 ); common_scripts\utility::flag_wait( "wolfpack_pack" ); level notify( "pack_fight" ); level.baker stopsounds(); level.baker thread maps\_utility::smart_dialogue( "nml_hsh_shit_2" ); level.baker.ignoreall = 0; level.baker.baseaccuracy = 3; thread maps\_utility::music_crossfade( "mus_nml_wolf_rush", 2.0 ); thread wolfpack_watcher(); if ( isdefined( level.w_alpha ) && isalive( level.w_alpha ) ) { level.w_alpha maps\_utility::set_ignoreall( 0 ); level.w_alpha maps\_utility::set_ignoreme( 0 ); level.w_alpha maps\_utility::set_favoriteenemy( level.player ); } if ( !common_scripts\utility::flag( "begin_wolf_attack" ) ) { level endon( "begin_wolf_attack" ); common_scripts\utility::flag_wait_or_timeout( "wolf_died", 3 ); wait 2; thread wolf_backup(); } } wolf_backup() { level endon( "begin_wolf_attack" ); var_0 = getentarray( "wolf_backup", "targetname" ); for (;;) { var_0 = sortbydistance( var_0, level.player.origin ); foreach ( var_2 in var_0 ) { if ( !maps\_utility::player_looking_at( var_2.origin, 0.6, 1 ) ) { var_3 = var_2 maps\_utility::spawn_ai( 1 ); var_3 waittill( "death" ); break; } wait 0.1; } } } wolfpack_watcher() { level endon( "begin_wolf_attack" ); var_0 = 120; for (;;) { var_1 = getaispeciesarray( "axis" ); var_1 = sortbydistance( var_1, level.player.origin ); foreach ( var_3 in var_1 ) { if ( distance2d( var_3.origin, level.player.origin ) < var_0 ) { level.main_wolf = var_3; break; } else break; } if ( isdefined( level.main_wolf ) ) break; wait 0.05; } common_scripts\utility::flag_set( "begin_wolf_attack" ); } wolf_event() { common_scripts\utility::flag_wait( "begin_wolf_attack" ); common_scripts\utility::flag_clear( "start_earthquakes" ); level.player endon( "death" ); setdvar( "hideHudFast", 1 ); setsaveddvar( "ammoCounterHide", 1 ); setsaveddvar( "compass", 0 ); setsaveddvar( "hud_showstance", 0 ); level.baker maps\_utility::set_ignoreall( 1 ); level.baker stopsounds(); thread maps\_utility::smart_radio_dialogue( "nml_hsh_adam" ); maps\_utility::delaythread( 0.5, maps\_utility::music_crossfade, "mus_nml_wolf_takedown", 0.8 ); var_0 = common_scripts\utility::get_target_ent( "wolf_melee" ); maps\_utility::disable_trigger_with_targetname( "wolf_slide_trig" ); var_1 = common_scripts\utility::spawn_tag_origin(); var_1.origin = level.main_wolf.origin; var_1.angles = level.main_wolf.angles; level.main_wolf.animname = "wolf"; level.main_wolf wolf_face_clear(); level.main_wolf show(); var_2 = maps\_player_rig::get_player_rig(); var_2 show(); level.player disableweapons(); level.player notify( "cancel_sliding" ); level.player notify( "stop_sliding" ); level.player allowstand( 1 ); level.player allowcrouch( 0 ); level.player allowprone( 0 ); level.player setstance( "stand" ); level.dog notify( "stop_loop" ); level.main_wolf thread maps\_utility::play_sound_on_entity( "anml_dog_attack_npc_jump" ); var_1 thread maps\_anim::anim_single( [ var_2, level.main_wolf ], "wolf_takedown" ); level.player playerlinktoblend( var_2, "tag_player", 0.1 ); level.player playrumbleonentity( "grenade_rumble" ); wait 0.35; var_3 = getentarray( "grenade", "classname" ); common_scripts\utility::array_call( var_3, ::delete ); level.player stopsounds(); level.player notify( "stop soundfoot_slide_plr_loop" ); if ( isdefined( level.player.slidemodel ) ) level.player.slidemodel delete(); maps\_spawner::killspawner( 100 ); var_4 = getaispeciesarray( "axis" ); foreach ( var_6 in var_4 ) { if ( isdefined( var_6 ) && isalive( var_6 ) && var_6 != level.main_wolf ) var_6 thread maps\_utility_dogs::kill_dog_fur_effect_and_delete(); } var_0 thread maps\_anim::anim_first_frame_solo( level.dog, "wolf_struggle_end" ); level endon( "wolf_eat_player" ); level.player common_scripts\utility::delaycall( 1.3, ::playrumbleonentity, "grenade_rumble" ); level.player common_scripts\utility::delaycall( 2.1, ::playrumbleonentity, "grenade_rumble" ); if ( !level.player isthrowinggrenade() ) thread maps\_utility::autosave_now_silent(); thread mash_to_survive(); setsaveddvar( "r_znear", 0.001 ); if ( maps\_utility::is_gen4() ) { level.old_mb = getdvarint( "r_mbEnable", 0 ); setsaveddvar( "r_mbEnable", 0 ); } maps\_art::dof_enable_script( 0, 0, 10, 6, 9.5, 10, 1 ); level.player thread maps\_utility::play_sound_on_entity( "scn_nml_wolf_in_face" ); level.player playrumbleonentity( "grenade_rumble" ); level.player maps\_utility::delaythread( 0.3, maps\_gameskill::grenade_dirt_on_screen, "right" ); var_0 maps\_anim::anim_single( [ var_2, level.main_wolf ], "wolf_struggle_start" ); thread wolf_event_vfx(); var_0 maps\_anim::anim_single( [ var_2, level.main_wolf ], "wolf_struggle_cycle" ); var_0 maps\_anim::anim_single( [ var_2, level.main_wolf ], "wolf_struggle_cycle" ); thread maps\_utility::autosave_now_silent(); thread wolf_scene_end_dof(); thread wolf_scene_end(); setsaveddvar( "r_znear", 4 ); thread maps\nml_util::mission_fail_on_dog_death(); thread wolf_dog_save( var_2, var_0, var_1 ); level.main_wolf endon( "death" ); level.player common_scripts\utility::delaycall( 0.8, ::playrumbleonentity, "grenade_rumble" ); level.player common_scripts\utility::delaycall( 4.3, ::playrumbleonentity, "damage_heavy" ); level.player common_scripts\utility::delaycall( 4.6, ::playrumbleonentity, "damage_heavy" ); maps\_utility::delaythread( 0.6, maps\_utility::music_crossfade, "mus_nml_wolf_riley_save", 0.1 ); var_8 = maps\_utility::spawn_anim_model( "pistol" ); var_8 common_scripts\utility::delaycall( 5, ::delete ); level.dog thread maps\_utility::play_sound_on_entity( "scn_nml_wolf_riley_attacked_by_wolf" ); level.player maps\_utility::delaythread( 4.4, maps\_utility::play_sound_on_entity, "scn_nml_wolf_plr_grab_gun" ); var_0 thread maps\_anim::anim_single( [ var_2, level.main_wolf, level.dog, var_8 ], "wolf_struggle_end" ); level.dog waittillmatch( "single anim", "dog_death_start" ); level.player common_scripts\utility::delaycall( 0, ::playrumbleonentity, "damage_heavy" ); wait 0.25; level.main_wolf setcandamage( 0 ); playfxontag( common_scripts\utility::getfx( "vfx_dog_attack_throatrip" ), level.main_wolf, "TAG_MOUTH_FX" ); level.dog thread maps\_utility::play_sound_on_entity( "anml_dog_shot_death" ); wait 0.1; level.dog.allowdeath = 1; level.dog.a.nodeath = 1; level.dog kill(); } wolf_scene_end_dof() { thread maps\_art::dof_enable_script( 0, 63, 8, 130, 320, 6, 0.5 ); wait 2.75; thread maps\_art::dof_enable_script( 0, 12.5, 10, 33, 78, 10, 0.1 ); wait 0.5; thread maps\_art::dof_enable_script( 0, 63, 8, 130, 320, 6, 0.25 ); } wolf_event_vfx() { level endon( "wolf_scene_end" ); level.player.screenblood_org = spawn( "script_model", ( 0, 0, 0 ) ); level.player.screenblood_org setmodel( "tag_origin" ); level.player.screenblood_org.origin = level.player.origin; level.player.screenblood_org linktoplayerview( level.player, "tag_origin", ( 25, 0, 0 ), ( 0, 180, 0 ), 1 ); var_0 = [ "right", "left" ]; for (;;) { playfxontag( common_scripts\utility::getfx( "vfx_wolf_droolfoam" ), level.main_wolf, "TAG_MOUTH_FX" ); playfxontag( common_scripts\utility::getfx( "vfx_wolf_screendrool" ), level.player.screenblood_org, "tag_origin" ); wait( randomfloatrange( 0.5, 1.5 ) ); var_1 = common_scripts\utility::random( var_0 ); level.player maps\_utility::delaythread( 0.3, maps\_gameskill::grenade_dirt_on_screen, var_1 ); wait( randomfloatrange( 0.5, 1.5 ) ); } } wolf_dog_save( var_0, var_1, var_2 ) { level.dog endon( "death" ); level thread maps\_slowmo_breach::breach_enemy_track_status( level.main_wolf ); thread player_gets_pistol( var_0 ); level.main_wolf setcandamage( 1 ); level.main_wolf.health = 1; level.main_wolf waittill( "death" ); thread maps\_art::dof_disable_script( 3 ); maps\_utility::music_stop( 0.25 ); level.player lerpviewangleclamp( 2, 0, 0, 25, 5, 15, 15 ); if ( level.player getweaponammoclip( "p226_scripted_nml" ) > 0 ) level.player setweaponammoclip( "p226_scripted_nml", 2 ); var_2 delete(); level.dog setgoalpos( level.dog.origin ); thread merrick_scene( var_1 ); level.dog maps\_utility::delaythread( 0.2, maps\_utility::play_sound_on_entity, "scn_nml_wolf_riley_saved" ); level.dog maps\_utility::delaythread( 0.5, maps\_utility::play_sound_on_entity, "scn_dog_nml_hurt_long" ); var_1 maps\_anim::anim_single( [ var_0, level.dog ], "wolf_end" ); level.dog thread maps\_utility::magic_bullet_shield(); level.dog.a.nodeath = undefined; } player_gets_pistol( var_0 ) { setsaveddvar( "cg_drawCrosshair", 0 ); setsaveddvar( "ammocounterhide", 1 ); level.main_wolf.health = 1; level.main_wolf.allowdeath = 1; level.main_wolf maps\_utility::set_deathanim( "wolf_death" ); var_0 waittillmatch( "single anim", "pistol_bringup" ); level.player allowads( 0 ); level.player.prevweapon = level.player getcurrentweapon(); level.player.prevweapons = level.player getweaponslist( "primary" ); foreach ( var_2 in level.player.prevweapons ) level.player takeweapon( var_2 ); level.player disableoffhandweapons(); level.player giveweapon( "p226_scripted_nml" ); level.player switchtoweaponimmediate( "p226_scripted_nml" ); level.player setweaponammostock( "p226_scripted_nml", 0 ); level.player setweaponammoclip( "p226_scripted_nml", 5 ); level.player disableweaponswitch(); level.player enableweapons(); level.player playerlinktodelta( var_0, "tag_player", 1, 30, 30, 15, 15, 1 ); level.player lerpfov( 55, 0.5 ); maps\_slowmo_breach::slowmo_begins(); level.player allowmelee( 0 ); } merrick_scene( var_0 ) { level.dog endon( "death" ); var_1 = maps\_utility::array_spawn_targetname( "last_wolves" ); var_2 = maps\_utility::spawn_targetname( "last_wolves_main" ); var_2 thread maps\_utility::play_sound_on_entity( "scn_nml_wolf_second_approach" ); var_2.animname = "wolf"; var_3 = common_scripts\utility::get_target_ent( "blocker_wolf_protector" ); var_3 linkto( var_2 ); var_0 waittill( "wolf_end" ); maps\_utility::delaythread( 0.8, maps\_utility::music_crossfade, "mus_nml_wolf_merrick", 3.0 ); var_2 wolf_face_clear(); wait 4; maps\nml_util::spawn_keegan(); maps\nml_util::spawn_merrick(); level notify( "stop_growling" ); var_2 thread maps\_utility::play_sound_on_entity( "anml_dog_attack_npc_jump" ); var_0 = common_scripts\utility::get_target_ent( "wolf_melee" ); var_2 maps\_utility::clear_generic_run_anim(); var_2 maps\_utility::enable_sprint(); var_2.moveplaybackrate = 1.3; var_2 thread maps\_utility::play_sound_on_entity( "scn_nml_wolf_2nd_attack" ); var_0 maps\_anim::anim_reach_solo( var_2, "merrick_entrance" ); var_4 = level.merrick.primaryweapon; level.merrick maps\_utility::forceuseweapon( "p226_scripted_nml", "sidearm" ); var_5 = maps\_player_rig::get_player_rig(); common_scripts\utility::array_thread( var_1, ::wolf_runaway ); var_3 delete(); var_6 = common_scripts\utility::get_target_ent( "wolf_sound_source_b" ); maps\_utility::delaythread( 1, common_scripts\utility::play_sound_in_space, var_6.script_soundalias, var_6.origin ); thread wolf_thrown( var_0, var_2 ); thread wolf_slowmo(); level.player common_scripts\utility::delaycall( 0.4, ::playrumbleonentity, "grenade_rumble" ); level.player maps\_utility::delaythread( 0.4, maps\_utility::play_sound_on_entity, "scn_nml_wolf_merrick_save" ); var_0 maps\_anim::anim_single_solo_run( level.merrick, "merrick_entrance" ); var_7 = maps\_utility::spawn_anim_model( "player_rig" ); var_7 hide(); var_0 = common_scripts\utility::get_target_ent( "wolf_merrick" ); level.baker.animname = "hesh"; level.keegan.animname = "keegan"; level.merrick.animname = "merrick"; var_8 = 0; var_9 = 0.5; level.merrick maps\_utility::forceuseweapon( var_4, "primary" ); level.merrick maps\_utility::disable_arrivals(); level.merrick maps\_utility::disable_exits(); level.merrick maps\_utility::set_generic_run_anim( "active_patrolwalk_gundown" ); level.player maps\_utility::delaythread( 1.0, maps\_utility::play_sound_on_entity, "scn_nml_wolf_plr_grab_merrick" ); level.merrick maps\_utility::delaythread( 0.0, maps\_utility::play_sound_on_entity, "scn_nml_wolf_ending_merrick" ); level.keegan maps\_utility::delaythread( 4.0, maps\_utility::play_sound_on_entity, "scn_nml_wolf_ending_keegan" ); level.baker maps\_utility::delaythread( 2.6, maps\_utility::play_sound_on_entity, "scn_nml_wolf_ending_hesh" ); var_0 maps\_anim::anim_reach_solo( level.merrick, "merrick_scene" ); level.merrick maps\_utility::clear_generic_run_anim(); thread merrick_scene_dialogue( var_7 ); level.player common_scripts\utility::delaycall( var_8, ::playerlinktoblend, var_7, "tag_player", var_9 ); level.player common_scripts\utility::delaycall( 0.6, ::playrumbleonentity, "damage_heavy" ); level.player common_scripts\utility::delaycall( 0.9, ::playrumbleonentity, "grenade_rumble" ); var_7 common_scripts\utility::delaycall( var_8 + var_9, ::show ); thread take_pistol( var_8 ); var_10 = maps\_utility::spawn_anim_model( "dsm" ); level.baker.dsm = var_10; var_10 hide(); var_0 thread maps\_anim::anim_single( [ var_7 ], "merrick_scene" ); enable_team_color(); set_team_colors(); level.dog maps\_utility::disable_ai_color(); maps\_utility::activate_trigger_with_targetname( "wolfpack_end_move" ); var_11 = [ level.baker, level.merrick, level.keegan ]; common_scripts\utility::array_thread( var_11, maps\_utility::disable_exits ); common_scripts\utility::array_thread( var_11, maps\_utility::walkdist_zero ); common_scripts\utility::array_call( var_11, ::orientmode, "face motion" ); var_0 thread maps\_anim::anim_single_solo_run( var_10, "merrick_scene" ); var_0 thread maps\_anim::anim_single_solo_run( level.keegan, "merrick_scene" ); var_0 thread maps\_anim::anim_single_solo_run( level.merrick, "merrick_scene" ); var_0 maps\_anim::anim_single_solo_run( level.baker, "merrick_scene" ); common_scripts\utility::flag_set( "merrick_scene_done" ); enable_team_color(); set_team_colors(); level.player maps\_utility::player_speed_percent( 80 ); set_default_team_move_speed(); level.dog.script_color_delay_override = 3; level.baker.script_color_delay_override = 2; level.keegan.script_color_delay_override = 1; level.merrick.script_color_delay_override = 0; level.merrick maps\_utility::enable_arrivals(); maps\_utility::delaythread( 1, common_scripts\utility::array_thread, var_11, maps\_utility::enable_exits ); maps\_utility::delaythread( 1, common_scripts\utility::array_thread, var_11, maps\_utility::walkdist_reset ); if ( maps\_utility::is_gen4() ) { if ( !isdefined( level.old_mb ) ) level.old_mb = 0; setsaveddvar( "r_mbEnable", level.old_mb ); } } wolf_slowmo() { common_scripts\utility::waitframe(); level.player thread maps\_utility::play_sound_on_entity( "slomo_whoosh_in" ); level.player thread maps\_slowmo_breach::player_heartbeat(); level.player common_scripts\utility::delaycall( 0.1, ::lerpfov, 35, 0.35 ); maps\_utility::slowmo_setspeed_slow( 0.2 ); maps\_utility::slowmo_setlerptime_in( 0.25 ); maps\_utility::slowmo_lerp_in(); wait 0.5; 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(); var_0 = maps\_player_rig::get_player_rig(); level.player playerlinktodelta( var_0, "tag_player", 1, 20, 20, 30, 5 ); wait 2.5; level.player lerpfov( 65, 12 ); wait 2; level.merrick setlookatentity( level.player ); wait 4; level.merrick setlookatentity(); } wolf_thrown( var_0, var_1 ) { var_1 maps\_utility::delaythread( 0.5, maps\_utility::play_sound_on_entity, "anml_dog_run_hurt" ); var_2 = maps\_player_rig::get_player_rig(); level.player allowfire( 0 ); level.player common_scripts\utility::delaycall( 0.3, ::disableweapons ); level.player common_scripts\utility::delaycall( 0.1, ::playerlinktoblend, var_2, "tag_player", 0.1, 0, 0.1 ); var_0 thread maps\_anim::anim_single_solo( level.player_rig, "merrick_entrance" ); var_0 maps\_anim::anim_single_solo( var_1, "merrick_entrance" ); var_1 maps\_utility::stop_magic_bullet_shield(); var_1 thread maps\_utility::play_sound_on_entity( "anml_dog_die_front" ); var_1.a.nodeath = 1; var_1.allowdeath = 1; var_1 kill(); } take_pistol( var_0 ) { wait( var_0 ); level.player allowmelee( 1 ); level.player enableoffhandweapons(); level.player allowfire( 1 ); level.player allowads( 1 ); level.player disableweapons(); level.player takeweapon( "p226_scripted_nml" ); foreach ( var_2 in level.player.prevweapons ) { level.player giveweapon( var_2 ); if ( issubstr( var_2, "p226" ) ) { level.player setweaponammostock( var_2, 0 ); level.player setweaponammoclip( var_2, 0 ); } } level.player switchtoweaponimmediate( level.player.prevweapon ); level.player enableweaponswitch(); } wolf_runaway() { wait( randomfloatrange( 0, 2 ) ); var_0 = common_scripts\utility::getstruct( self.script_noteworthy, "script_noteworthy" ); self.goalradius = 32; maps\_utility::clear_generic_run_anim(); self.moveplaybackrate = 1; self setgoalpos( var_0.origin ); self waittill( "goal" ); maps\_utility_dogs::kill_dog_fur_effect_and_delete(); } merrick_scene_dialogue( var_0 ) { level.dog setgoalpos( level.dog.origin ); level.baker allowedstances( "stand", "crouch", "prone" ); level.merrick.goalradius = 32; level.keegan.goalradius = 32; level.baker.a.pose = "stand"; level.keegan.a.pose = "stand"; maps\_utility::delaythread( 3, ::merrick_scene_player_unlink, var_0 ); thread merrick_scene_dialogue2(); } merrick_scene_player_unlink( var_0 ) { common_scripts\utility::flag_set( "start_earthquakes" ); level.player maps\_utility::player_speed_percent( 30 ); level.player unlink(); level.player allowcrouch( 1 ); level.player allowprone( 1 ); var_0 delete(); if ( isdefined( level.player_rig ) ) level.player_rig delete(); } merrick_scene_dialogue2() { wait 22; level.player maps\_utility::player_speed_percent( 100, 3 ); level.player enableweapons(); setdvar( "hideHudFast", 0 ); setsaveddvar( "cg_drawCrosshair", 1 ); setsaveddvar( "ammocounterhide", 0 ); setsaveddvar( "compass", 1 ); setsaveddvar( "hud_showstance", 1 ); } set_bark_cairo() { level endon( "wolfpack_pack" ); level endon( "death" ); for (;;) level.dog maps\_utility::play_sound_on_entity( "anml_dog_growl" ); } clear_bark_cairo() { } bark_trigger( var_0 ) { self waittill( "trigger" ); var_1 = common_scripts\utility::getstruct( self.target, "targetname" ); thread common_scripts\utility::play_sound_in_space( "anml_dog_bark", var_1.origin ); if ( randomint( 100 ) > 50 ) { wait 0.5; thread common_scripts\utility::play_sound_in_space( "anml_dog_bark", var_1.origin ); } switch ( var_0 ) { case 0: wait 1.2; thread maps\_utility::add_dialogue_line( "Hesh", "Adam- Come on ... we've got to find Cairo" ); break; case 1: wait 1.5; thread maps\_utility::add_dialogue_line( "Hesh", "Through here, Cairo- Komm!" ); break; case 2: wait 1.0; thread maps\_utility::add_dialogue_line( "Hesh", "He's close." ); break; } } faster_baker() { level.player endon( "death" ); level endon( "wolf_wolfpack_opening" ); for (;;) { wait 0.1; if ( distance( level.player.origin, level.baker.origin ) < 400 ) { level.baker maps\nml_util::set_move_rate( 1.15 ); continue; } var_0 = vectornormalize( level.player.origin - level.baker.origin ); var_1 = anglestoforward( level.baker.angles ); var_2 = vectordot( var_1, var_0 ); if ( var_2 > 0 ) level.baker maps\nml_util::set_move_rate( 1.15 ); else level.baker maps\nml_util::set_move_rate( 1.0 ); } } hesh_dialog_dog_calm() { level.player endon( "death" ); level endon( "stop_hesh_dog_calm_dialog" ); thread maps\_utility::add_dialogue_line( "Hesh", "Cairo- Bleib!" ); wait 2.3; thread maps\_utility::add_dialogue_line( "Hesh", "Foos!" ); wait 2.7; } tell_adam_stop() { level.player endon( "death" ); common_scripts\utility::flag_wait( "wolf_adam_stop" ); thread maps\_utility::add_dialogue_line( "Hesh", "Adam STOP! Cover me..." ); level.player setmovespeedscale( 0.5 ); wait 2.0; level.player setmovespeedscale( 1 ); } ghost_patroller_setup() { self endon( "death" ); level endon( "patrol_over" ); maps\_utility::set_ignoreall( 1 ); maps\_utility::set_ignoreme( 1 ); self.health = 50; self addaieventlistener( "grenade danger" ); self addaieventlistener( "projectile_impact" ); self addaieventlistener( "silenced_shot" ); self addaieventlistener( "bulletwhizby" ); self addaieventlistener( "gunshot" ); self addaieventlistener( "gunshot_teammate" ); self addaieventlistener( "explode" ); self addaieventlistener( "death" ); self waittill( "ai_event", var_0 ); common_scripts\utility::flag_set( "ghost_ambush_started" ); level notify( "patrol_over", self ); } ghost_patroller_flee() { common_scripts\utility::flag_wait( "ghost_ambush_started" ); wait 1; var_0 = maps\_utility::get_ai_group_ai( "ghost_town_guys" ); var_1 = common_scripts\utility::get_target_ent( "ghost_delete_1" ); foreach ( var_3 in var_0 ) { if ( isdefined( var_3 ) && isalive( var_3 ) ) { var_3 maps\_utility::anim_stopanimscripted(); var_3 notify( "end_patrol" ); var_3 thread temp_ghost_flee( var_1 ); } } } temp_ghost_flee( var_0 ) { self endon( "death" ); maps\_utility::enable_sprint(); maps\_utility::set_goal_radius( 64 ); self setgoalnode( var_0 ); self waittill( "goal" ); wait 6; self delete(); } wait_until_enemies_in_volume( var_0, var_1 ) { var_2 = getent( var_0, "targetname" ); var_3 = var_2 maps\_utility::get_ai_touching_volume( "axis" ); var_4 = var_3.size; while ( var_4 > var_1 ) { wait 2; var_3 = var_2 maps\_utility::get_ai_touching_volume( "axis" ); var_4 = var_3.size; if ( var_4 - var_1 < 3 ) { foreach ( var_6 in var_3 ) { if ( var_6 maps\_utility::doinglongdeath() || var_6.delayeddeath ) var_4--; } } } } stop_looping_anims() { if ( !isdefined( self.target ) ) { self notify( "stop_loop" ); return; } var_0 = getnode( self.target, "targetname" ); if ( isdefined( var_0 ) && isalive( var_0 ) ) { var_0 notify( "stop_loop" ); return; } } set_default_team_move_speed() { level.baker maps\nml_util::set_move_rate( 1.0 ); level.dog maps\nml_util::set_move_rate( 0.7 ); level.player setmovespeedscale( 1.0 ); if ( isdefined( level.merrick ) ) level.merrick maps\nml_util::set_move_rate( 1.0 ); if ( isdefined( level.keegan ) ) level.keegan maps\nml_util::set_move_rate( 1.0 ); } set_ignore_states() { maps\_utility::set_ignoreall( 1 ); maps\_utility::set_ignoreme( 1 ); } clear_ignore_states() { maps\_utility::set_ignoreall( 0 ); maps\_utility::set_ignoreall( 0 ); } set_team_ignore_states() { level.baker maps\_utility::set_ignoreall( 1 ); level.baker maps\_utility::set_ignoreme( 1 ); level.dog maps\_utility::set_ignoreall( 1 ); level.dog maps\_utility::set_ignoreme( 1 ); if ( isdefined( level.merrick ) ) { level.merrick maps\_utility::set_ignoreall( 1 ); level.merrick maps\_utility::set_ignoreme( 1 ); } if ( isdefined( level.keegan ) ) { level.keegan maps\_utility::set_ignoreall( 1 ); level.keegan maps\_utility::set_ignoreme( 1 ); } } clear_team_ignore_states() { level.baker maps\_utility::set_ignoreall( 0 ); level.baker maps\_utility::set_ignoreme( 0 ); level.dog maps\_utility::set_ignoreall( 0 ); level.dog maps\_utility::set_ignoreme( 0 ); if ( isdefined( level.merrick ) ) { level.merrick maps\_utility::set_ignoreall( 0 ); level.merrick maps\_utility::set_ignoreme( 0 ); } if ( isdefined( level.keegan ) ) { level.keegan maps\_utility::set_ignoreall( 0 ); level.keegan maps\_utility::set_ignoreme( 0 ); } } set_team_colors() { level.baker maps\_utility::set_force_color( "r" ); level.dog maps\_utility::set_force_color( "o" ); if ( isdefined( level.merrick ) ) level.merrick maps\_utility::set_force_color( "p" ); if ( isdefined( level.keegan ) ) level.keegan maps\_utility::set_force_color( "b" ); } enable_team_color() { level.baker maps\_utility::enable_ai_color(); level.dog maps\_utility::enable_ai_color(); if ( isdefined( level.merrick ) ) level.merrick maps\_utility::enable_ai_color(); if ( isdefined( level.keegan ) ) level.keegan maps\_utility::enable_ai_color(); } disable_team_color() { level.baker maps\_utility::disable_ai_color(); level.dog maps\_utility::disable_ai_color(); if ( isdefined( level.merrick ) ) level.merrick maps\_utility::disable_ai_color(); if ( isdefined( level.keegan ) ) level.keegan maps\_utility::disable_ai_color(); } trigger_activate_targetname_safe( var_0 ) { var_1 = getent( var_0, "targetname" ); if ( isdefined( var_1 ) ) var_1 notify( "trigger" ); } select_and_move( var_0, var_1 ) { var_2 = common_scripts\utility::get_target_ent( var_0 ); var_3 = getaiarray( "axis" ); var_4 = common_scripts\utility::get_target_ent( var_1 ); var_5 = getnodesinradius( var_2.origin, var_2.radius, 0, 512, "cover" ); var_6 = maps\_utility::remove_dead_from_array( var_3 ); foreach ( var_8 in var_6 ) { if ( var_8 istouching( var_4 ) && isdefined( var_8 ) ) { var_8.goalradius = 256; var_8.ignoresuppression = 1; var_8 setgoalnode( var_5[randomintrange( 0, var_5.size )] ); } } } select_and_targetplayer( var_0 ) { var_1 = getaiarray( "axis" ); var_2 = common_scripts\utility::get_target_ent( var_0 ); var_3 = maps\_utility::remove_dead_from_array( var_1 ); foreach ( var_5 in var_3 ) { if ( var_5 istouching( var_2 ) && isdefined( var_5 ) ) var_5.favoriteenemy = level.player; } } delete_on_path_end( var_0 ) { self endon( "death" ); maps\_utility::enable_sprint(); maps\_utility::set_goal_radius( 64 ); self setgoalnode( var_0 ); self waittill( "goal" ); self delete(); } #using_animtree("vehicles"); init_hover() { var_0 = common_scripts\utility::get_target_ent( "ghost_hover_lower" ); var_0 useanimtree( #animtree ); wait 1; var_0 setanim( %hovercraft_enemy_upper_fans, 1, 0, 0.025 ); } mash_to_survive() { wait 0.75; fade_in_x_hint( 2 ); thread x_hint_blinks(); thread increase_difficulty(); level endon( "wolf_scene_end" ); level.player endon( "death" ); level.fade_out_death_time = 2.5; level.occumulator = 0; level.drown_max_alpha = 65; for (;;) { fade_out_death(); wait 0.05; } } increase_difficulty() { level waittill( "player_hit_x" ); level.fade_out_death_time = 1; thread lerp_maxalpha_overtime( 55, 3 ); wait 3; level.fade_out_death_time = 0.6; thread lerp_maxalpha_overtime( 45, 3 ); wait 3; if ( level.gameskill > 1 ) level.fade_out_death_time = 0.3; } lerp_maxalpha_overtime( var_0, var_1 ) { level notify( "lerp_maxalpha_overtime" ); level endon( "lerp_maxalpha_overtime" ); var_2 = level.drown_max_alpha; var_3 = int( var_1 / 0.05 ); var_4 = ( var_0 - var_2 ) / var_3; for (;;) { level.drown_max_alpha = level.drown_max_alpha + var_4; wait 0.05; } level.drown_max_alpha = var_0; } mini_earthquakes() { level endon( "player_hit_x" ); level endon( "wolf_scene_end" ); for (;;) { earthquake( 0.15, 0.2, level.player.origin, 512 ); wait 0.1; } } fade_out_death() { thread mini_earthquakes(); thread wait_for_x_input(); level endon( "player_hit_x" ); level.player thread maps\_utility::lerp_saveddvar( "cg_fov", 30, level.fade_out_death_time ); var_0 = max( 0, level.fade_out_death_time - 1.75 ); var_1 = level.fade_out_death_time - var_0; wait( var_0 ); level.occumulator = 0; wait( var_1 ); thread fade_out_x_hint( 0.05 ); thread wolf_scene_death(); } wait_for_x_input() { level.player endon( "death" ); level endon( "wolf_scene_end" ); while ( use_pressed() ) wait 0.05; while ( !use_pressed() ) wait 0.05; level notify( "player_hit_x" ); var_0 = getdvarint( "cg_fov", level.drown_max_alpha ); var_0 = min( var_0 + 7, level.drown_max_alpha ); thread fade_in_to_alpha( 0.1, var_0 ); earthquake( 0.35, 0.2, level.player.origin, 512 ); level.player playrumbleonentity( "damage_light" ); level.occumulator = level.occumulator + 1; } fade_in_to_alpha( var_0, var_1 ) { if ( level.missionfailed ) return; level.player thread maps\_utility::lerp_saveddvar( "cg_fov", var_1, var_0 ); wait( var_0 ); } fade_in_x_hint( var_0 ) { if ( !isdefined( var_0 ) ) var_0 = 1.5; if ( !isdefined( level.x_hint ) ) draw_x_hint(); foreach ( var_2 in level.x_hint ) { var_2 fadeovertime( var_0 ); var_2.alpha = 0.95; } } draw_x_hint() { var_0 = 125; var_1 = 0; var_2 = level.player maps\_hud_util::createclientfontstring( "default", 2 ); var_2.x = var_1 * -1; var_2.y = var_0; var_2.horzalign = "right"; var_2.alignx = "right"; var_2 set_default_hud_stuff(); if ( !level.console && !level.player usinggamepad() ) var_2 settext( &"NML_HINT_X_KB" ); else var_2 settext( &"NML_HINT_X" ); var_3 = []; var_3["text"] = var_2; level.x_hint = var_3; } x_hint_blinks() { level notify( "fade_out_x_hint" ); level endon( "fade_out_x_hint" ); if ( !isdefined( level.x_hint ) ) draw_x_hint(); var_0 = 0.2; var_1 = 0.1; foreach ( var_3 in level.x_hint ) { var_3 fadeovertime( 0.1 ); var_3.alpha = 0.95; } wait 0.1; var_5 = level.x_hint["text"]; var_6 = 2; for (;;) { var_5 fadeovertime( 0.01 ); var_5.alpha = 0.95; var_5 changefontscaleovertime( 0.01 ); if ( !level.console && !level.player usinggamepad() ) var_5.fontscale = 2; else var_5.fontscale = 2 * var_6; wait 0.1; var_5 fadeovertime( var_0 ); var_5.alpha = 0.0; var_5 changefontscaleovertime( var_0 ); if ( !level.console && !level.player usinggamepad() ) var_5.fontscale = 0.25; else var_5.fontscale = 0.25 * var_6; wait( var_1 ); var_7 = 4; while ( isdefined( level.occumulator ) ) { if ( level.occumulator < var_7 ) break; foreach ( var_3 in level.x_hint ) var_3.alpha = 0; var_0 = 0.1; var_1 = 0.1; wait 0.05; } } } fade_out_x_hint( var_0 ) { level notify( "fade_out_x_hint" ); if ( !isdefined( var_0 ) ) var_0 = 1.5; if ( !isdefined( level.x_hint ) ) draw_x_hint(); foreach ( var_2 in level.x_hint ) { var_2 fadeovertime( var_0 ); var_2.alpha = 0; } } set_default_hud_stuff() { self.alignx = "center"; self.aligny = "middle"; self.horzalign = "center"; self.vertalign = "middle"; self.hidewhendead = 1; self.hidewheninmenu = 1; self.sort = 205; self.foreground = 1; self.alpha = 0; } use_pressed() { if ( !level.console && !level.player usinggamepad() ) return level.player attackbuttonpressed(); else return level.player usebuttonpressed(); } wolf_scene_end() { level notify( "wolf_scene_end" ); thread fade_out_x_hint( 0.1 ); thread fade_in_to_alpha( 0.5, 48 ); wait 3; level.player.screenblood_org delete(); } wolf_scene_death() { level notify( "wolf_scene_end" ); thread fade_out_x_hint( 0.1 ); level notify( "wolf_eat_player" ); var_0 = common_scripts\utility::get_target_ent( "wolf_melee" ); var_1 = maps\_player_rig::get_player_rig(); level.player lerpfov( 65, 0.5 ); var_0 thread maps\_anim::anim_single( [ var_1, level.main_wolf ], "wolf_playerdeath" ); wait 0.25; level.player kill(); } end_heli_2_think() { self vehicle_turnengineoff(); thread maps\_utility::play_sound_on_entity( "scn_nml_heli_end_reveal" ); } keegan_sniper_logic() { level.keegan maps\_utility::disable_ai_color(); level.keegan.no_pistol_switch = 1; level.heroes = common_scripts\utility::array_remove( level.heroes, level.keegan ); thread keegan_snipes( 1 ); common_scripts\utility::flag_wait( "ghosttown_pre_end" ); level notify( "stop_keegan_snipe" ); level.keegan.dontevershoot = undefined; level.heroes = common_scripts\utility::array_add( level.heroes, level.keegan ); level.keegan maps\_utility::enable_ai_color(); level.keegan.moveplaybackrate = 1.2; common_scripts\utility::waitframe(); level.keegan waittill( "goal" ); level.keegan.moveplaybackrate = 1; } keegan_snipes( var_0 ) { level notify( "start_keegan_snipe" ); level endon( "start_keegan_snipe" ); level endon( "stop_keegan_snipe" ); var_1 = 3; for (;;) { level.keegan.dontevershoot = 1; var_2 = getaiarray( "axis" ); foreach ( var_4 in var_2 ) { if ( !isdefined( var_4 ) ) continue; if ( isdefined( var_4.syncedmeleetarget ) ) continue; if ( maps\_utility::player_looking_at( var_4 geteye(), 0.8, 1 ) ) { var_5 = bullettracepassed( level.keegan gettagorigin( "tag_flash" ), var_4 geteye(), 0, level.keegan ); if ( var_5 ) { if ( isdefined( var_0 ) && common_scripts\utility::cointoss() ) maps\_utility::smart_radio_dialogue( "nml_kgn_exposed_acquired" ); if ( !isalive( var_4 ) ) continue; playfxontag( common_scripts\utility::getfx( "sniper_muzzleflash" ), level.keegan, "tag_flash" ); level.keegan thread maps\_utility::play_sound_on_tag( "weap_l115a3_fire_npc", "tag_flash" ); var_6 = var_4.origin; if ( distance2d( level.player.origin, level.keegan.origin ) < 300 ) level.keegan maps\nml_stealth::magic_stealth_shot( var_4 ); else level.keegan maps\nml_stealth::magic_stealth_shot( var_4, 2 ); if ( !common_scripts\utility::flag( "ghosttown_end_patrol" ) ) thread teammates_react( var_6 ); wait 0.5; maps\_utility::smart_radio_dialogue( "nml_kgn_inform_killfirm_generic" ); var_1 = var_1 + 2; break; } } } wait( var_1 ); } } teammates_react( var_0 ) { var_1 = getaiarray( "axis" ); foreach ( var_3 in var_1 ) { var_4 = distance2d( var_3.origin, var_0 ); if ( isalive( var_3 ) && var_4 < 400 ) var_3 maps\_utility::delaythread( randomfloat( 0.3 ), ::guy_react, var_4 < 300 ); } } guy_react( var_0 ) { if ( var_0 ) var_1 = [ "exposed_dive_grenade_B", "exposed_dive_grenade_F" ]; else var_1 = [ "_stealth_behavior_generic1", "_stealth_behavior_generic2" ]; var_2 = common_scripts\utility::random( var_1 ); self notify( "end_patrol" ); thread maps\_anim::anim_generic_gravity( self, var_2 ); self.allowdeath = 1; self.allowpain = 1; }