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

1758 lines
58 KiB
Plaintext

// 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;
}