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

3883 lines
129 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
intro_setup()
{
level.player takeallweapons();
level.player freezecontrols( 1 );
thread move_player_to_start( "intro_player_start" );
thread deer_init();
thread lobby_ruckus();
thread intro_enemies();
thread crouch_hint();
spawn_hesh_and_dog();
common_scripts\utility::flag_wait( "friendlies_spawned" );
thread intro_vo();
thread intro_fx();
thread team2_nav_logic();
thread intro_scene();
thread maps\deer_hunt_util::do_bokeh( "lobby_exit_approach" );
var_0 = getentarray( "deer_ruckus", "script_noteworthy" );
common_scripts\utility::array_thread( var_0, ::deer_ruckus_trig_logic );
common_scripts\utility::flag_wait_any( "pipe_enter", "player_rushed_lariver" );
thread lariver_global_setup();
}
crouch_hint()
{
if ( maps\deer_hunt_util::gameskill_is_difficult() )
return;
common_scripts\utility::flag_wait( "player_up" );
var_0 = getent( "player_approaching_stage", "targetname" );
var_1 = 30625;
while ( distance2dsquared( level.player.origin, var_0.origin ) > var_1 )
wait 0.25;
thread maps\_utility::display_hint_timeout( "crouch_hint", 5 );
}
player_control()
{
switch ( level.start_point )
{
case "default":
case "intro":
level.player maps\_utility::blend_movespeedscale_percent( 25, 0.1 );
level.player allowsprint( 0 );
common_scripts\utility::flag_wait( "player_up" );
level.player maps\_utility::blend_movespeedscale_percent( 65, 0.1 );
common_scripts\utility::flag_wait( "hallway_halfway" );
level.player allowsprint( 1 );
common_scripts\utility::flag_wait( "screen_arrive" );
wait 2;
level.player maps\_utility::blend_movespeedscale_percent( 85, 0.1 );
case "lariver":
case "encounter2":
case "encounter1":
case "street":
case "lobby":
common_scripts\utility::flag_wait( "pipe_exit" );
case "lariver_defend":
level.player maps\_utility::blend_movespeedscale_percent( 95, 0.1 );
case "ride":
case "lariver_exit":
common_scripts\utility::flag_wait( "player_exited_jeep" );
case "house":
level.player maps\_utility::blend_movespeedscale_percent( 50, 0.1 );
wait 0.05;
case "elias":
}
}
intro_scene_player()
{
var_0 = getent( "player_gate", "targetname" );
var_1 = ( -7499.94, 9432.14, -345.875 );
var_2 = ( 0, 57.7601, 0 );
level.player setorigin( var_1 );
level.player setplayerangles( var_2 );
level.player setstance( "crouch" );
level.player allowstand( 0 );
level.player allowprone( 0 );
thread intro_player_blur();
common_scripts\utility::flag_wait( "introscreen_complete" );
wait 0.5;
level.player freezecontrols( 0 );
level.player allowstand( 1 );
level.player allowprone( 1 );
common_scripts\utility::flag_wait( "intro_ruckus" );
var_0 delete();
wait 1;
if ( level.player getstance() != "stand" )
level.player setstance( "stand" );
common_scripts\utility::flag_wait( "player_up" );
var_3 = [ "honeybadger+acog_sp", "m9a1", "fraggrenade" ];
maps\deer_hunt_util::arm_player( var_3 );
wait 3;
if ( isdefined( var_0 ) )
var_0 delete();
}
intro_player_blur()
{
setblur( 2, 0.05 );
common_scripts\utility::flag_wait( "introscreen_complete" );
wait 2;
setblur( 0, 0.5 );
wait 1;
setblur( 1.2, 0.5 );
wait 1;
setblur( 0, 0.5 );
wait 1.5;
setblur( 1.2, 0.5 );
wait 1;
setblur( 0, 0.5 );
}
set_player_speed( var_0 )
{
level.current_speed_percent = var_0;
level.player setmovespeedscale( var_0 );
}
intro_vo()
{
switch ( level.start_point )
{
case "default":
case "intro":
common_scripts\utility::flag_wait( "introscreen_complete" );
common_scripts\utility::flag_set( "intro_fade_in" );
wait 8;
thread common_scripts\utility::play_sound_in_space( "scn_deer_ruckus_01", ( -7634, 9926, -286 ) );
wait 0.5;
common_scripts\utility::flag_set( "intro_ruckus" );
wait 0.4;
level.dog maps\deer_hunt_util::dog_growl();
wait 1.1;
wait 7;
common_scripts\utility::flag_set( "player_up" );
wait 2;
wait 1.5;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_teamtwoareyou" );
wait 1;
level.player maps\_utility::play_sound_on_entity( "deerhunt_us1_negativewereoutside" );
level.player maps\_utility::play_sound_on_entity( "deerhunt_us1_youboysgotsomethin" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_rileydoes" );
wait 0.5;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_werecheckinitnow" );
wait 0.25;
level.player maps\_utility::play_sound_on_entity( "deerhunt_us1_rogwellsecurethe" );
common_scripts\utility::flag_wait( "curtain_cut" );
common_scripts\utility::flag_wait( "through_screen" );
wait 2;
var_0 = spawn( "script_origin", ( -8928, 10464, -368 ) );
var_0 playsound( "scn_deer_birds_flyaway_chips" );
var_0 moveto( ( -8784, 10560, 16 ), 1 );
common_scripts\utility::flag_set( "exit_theater" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_coverme" );
wait 8;
if ( level.player.origin[2] < -190 )
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_itsclearcomeon" );
common_scripts\utility::flag_wait( "theater_exit" );
thread common_scripts\utility::play_sound_in_space( "scn_deer_ruckus_03", ( -9313, 11456, -18 ) );
thread maps\deer_hunt_util::play_loop_sound_in_space_stop_on_flag( "scn_deer_ruckus_loop", ( -8951, 12053, -138 ), "lobby_entrance" );
wait 1;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_thatsclose" );
common_scripts\utility::flag_wait( "to_lobby_entrance" );
case "lobby":
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_takethedooron" );
common_scripts\utility::flag_wait( "lobby_entrance" );
wait 4;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_hehguessrileywas" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_youdontwannaeat" );
common_scripts\utility::flag_wait( "lobby_exit" );
maps\_utility::autosave_by_name_silent( "theater_exit" );
case "outside":
wait 2;
level.player maps\_utility::play_sound_on_entity( "deerhunt_us1_sixonesitrep" );
wait 0.6;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_justsomelocalwildlife" );
level.player maps\_utility::play_sound_on_entity( "deerhunt_us1_check" );
wait 0.2;
level.player maps\_utility::play_sound_on_entity( "deerhunt_us1_weremovingup" );
wait 0.5;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_yeahwelljoinya" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_meetusatthe" );
wait 0.15;
level.player maps\_utility::play_sound_on_entity( "deerhunt_us1_rog" );
common_scripts\utility::flag_wait( "promenade_exit" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_sigholdfaithful" );
case "street":
common_scripts\utility::flag_wait( "road_chasm_approach" );
common_scripts\utility::flag_wait( "meetup_completed" );
common_scripts\utility::flag_set( "hesh_to_shop_door" );
case "encounter1":
maps\_utility::autosave_by_name_silent( "shop_approach" );
common_scripts\utility::flag_wait( "encounter1_affection_started" );
level.dog maps\deer_hunt_util::dog_growl();
wait 0.5;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_rileyrileysearch" );
common_scripts\utility::flag_wait( "player_at_shop_door" );
thread common_scripts\utility::play_sound_in_space( "stealth_2_huh", ( -13290.7, 14145.4, -212 ) );
wait 1.5;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_youhearthatsomeones" );
thread common_scripts\utility::play_sound_in_space( "stealth_2_huh", ( -13290.7, 14145.4, -212 ) );
wait 0.5;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_waitforcairoif" );
common_scripts\utility::flag_wait( "shop_exit" );
maps\_utility::autosave_by_name( "encounter1_approach" );
common_scripts\utility::flag_wait( "dog_kill_started" );
wait 1;
level.hesh maps\_utility::smart_radio_dialogue( "deerhunt_hsh_droptheseguys" );
common_scripts\utility::flag_wait_any( "dog_attack_enemies_dead", "player_rushed_gas_station" );
wait 1;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_dogcall_3" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_rileystay_2" );
wait 0.5;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_fedreconagain" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_thatsfivethismonth" );
wait 0.2;
common_scripts\utility::flag_set( "hesh_moves_from_encounter1" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_twoonewejust" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_meetusatoverwatch" );
level.team2[0] maps\_utility::smart_radio_dialogue( "deerhunt_us1_checkwereonour" );
common_scripts\utility::flag_wait( "player_at_encounter1" );
wait 2;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_dogcall_1" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_rileyhere" );
case "encounter2":
common_scripts\utility::flag_wait( "hesh_to_lookout" );
level.team2[1] maps\_utility::smart_dialogue_generic( "deerhunt_us2_holyshit" );
common_scripts\utility::flag_wait_any( "bully_kick_victim_dead", "bully_kick_aborted", "bully_kick_complete", "player_dropped_down", "civilians_shot" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_theyreexecutingcivvies" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_rileygo" );
common_scripts\utility::flag_wait( "gasstation_clear" );
wait 2;
level.hesh maps\_utility::smart_radio_dialogue( "deerhunt_hsh_thisway_2" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_dogcall_2" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_rileyfollow" );
maps\_utility::battlechatter_off();
level.player maps\_utility::play_sound_on_entity( "deerhunt_us3_allavailableunitswe" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_creepersixonesgotyou" );
level.player maps\_utility::play_sound_on_entity( "deerhunt_us3_rogerthatpoppinggreen" );
maps\_utility::battlechatter_on();
common_scripts\utility::flag_wait( "pipe_enter" );
maps\_utility::autosave_by_name( "pipe_enter" );
wait 4;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_pushtothewall" );
case "lariver":
common_scripts\utility::flag_wait( "player_under_bridge" );
maps\_utility::smart_radio_dialogue( "deerhunt_hsh_friendliesatthegreen" );
wait 3;
maps\_utility::smart_radio_dialogue( "deerhunt_hsh_thatsfriendliesatthe" );
common_scripts\utility::flag_wait( "squad_to_defend" );
wait 3;
level.balcony_friendlies[0] maps\_utility::smart_dialogue_generic( "deerhunt_us3_morebirdsinbound" );
level.hesh maps\_utility::smart_radio_dialogue( "deerhunt_hsh_thisway_2" );
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_riley" );
case "lariver_defend":
wait 1;
maps\_utility::smart_radio_dialogue( "deerhunt_hsh_logangrabalauncher" );
common_scripts\utility::flag_wait( "player_in_defend_area" );
common_scripts\utility::flag_wait( "drag_complete" );
common_scripts\utility::flag_wait( "chopper_fight_start" );
wait 3;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_loganusetheguided" );
common_scripts\utility::flag_wait( "lariver_defend_bridge_clear" );
case "lariver_exit":
wait 2;
level.team2[1] maps\_utility::smart_dialogue_generic( "deerhunt_us1_clear" );
level.team2[0] maps\_utility::smart_dialogue_generic( "deerhunt_us2_wereclear" );
wait 1;
maps\deer_hunt_util::hesh_line( "deerhunt_hsh_corporalholmesyoureon" );
level.team2[0] maps\_utility::smart_dialogue_generic( "deerhunt_us1_rogercommandeeringfor" );
maps\deer_hunt_util::hesh_line( "deerhunt_hsh_loganyoureonsecurity" );
case "ride":
common_scripts\utility::flag_wait( "jeep_arrived" );
level.driver maps\_utility::smart_dialogue_generic( "deerhunt_us3_thisisussergeant" );
case "house":
}
}
intro_vo_team2_chopper_convo()
{
common_scripts\utility::flag_wait( "ambient_chopper_shoots_wall" );
wait 3;
level.team2[1] maps\_utility::smart_dialogue_generic( "deerhunt_us2_shitwheredidthat" );
wait 0.5;
level.team2[0] maps\_utility::smart_dialogue_generic( "deerhunt_us1_couldnthearituntil" );
}
intro_fx()
{
switch ( level.start_point )
{
case "default":
case "street":
case "outside":
case "lobby":
case "intro":
common_scripts\utility::flag_wait( "dropdown_arrive" );
common_scripts\utility::exploder( "street_start_birds" );
case "ride":
case "lariver":
case "encounter2":
case "encounter1":
}
}
flashlight_on()
{
wait 1;
self endon( "death" );
self.flashlight_tag_origin = common_scripts\utility::spawn_tag_origin();
self.flashlight_tag_origin.origin = self gettagorigin( "tag_flash" );
self.flashlight_tag_origin.angles = self gettagangles( "tag_flash" );
wait 0.05;
self.flashlight_tag_origin linkto( self, "tag_flash" );
wait 0.1;
playfxontag( common_scripts\utility::getfx( "flashlight" ), self.flashlight_tag_origin, "tag_origin" );
}
flashlight_off()
{
if ( isdefined( self.flashlight_tag_origin ) )
stopfxontag( common_scripts\utility::getfx( "flashlight" ), self.flashlight_tag_origin, "tag_origin" );
}
team2_nav_logic()
{
common_scripts\utility::flag_wait( "road_chasm_approach" );
spawn_team2();
level.team2[1].colornode_setgoal_func = ::hesh_does_360;
var_0 = common_scripts\utility::getstruct( "meetup", "targetname" );
var_1 = [ level.hesh, level.team2[0] ];
level.hesh.animname = "generic";
level.team2[0].animname = "guy2";
level.team2[0] maps\_utility::disable_ai_color();
common_scripts\utility::flag_wait( "outside_360_complete" );
level.hesh maps\_utility::disable_ai_color();
var_0 maps\_anim::anim_reach_together( var_1, "meetup" );
common_scripts\utility::flag_set( "meetup_started" );
thread common_scripts\utility::trigger_off( "road_chasm_approach", "targetname" );
common_scripts\utility::array_thread( var_1, maps\_utility::delaythread, 3, maps\_utility::enable_ai_color );
var_0 maps\_anim::anim_single( var_1, "meetup" );
common_scripts\utility::flag_set( "meetup_completed" );
if ( !common_scripts\utility::flag( "player_on_bus" ) )
maps\_utility::activate_trigger_with_targetname( "team2_covers_chasm" );
}
spawn_team2()
{
maps\_utility::array_spawn_function_targetname( "team2", ::lariver_team2_logic );
level.team2 = maps\_utility::array_spawn_targetname( "team2", 1 );
level.team2[0].name = "Cpl. Davis";
}
spawn_hesh_and_dog()
{
getent( "hesh", "targetname" ) maps\_utility::add_spawn_function( ::hesh_logic );
level.hesh = maps\_utility::spawn_targetname( "hesh", 1 );
getent( "dog", "targetname" ) maps\_utility::add_spawn_function( ::dog_logic );
level.dog = maps\_utility::spawn_targetname( "dog", 1 );
level.dog.name = "Riley";
level.squad = [ level.hesh, level.dog ];
maps\_utility::battlechatter_off( "allies" );
maps\_utility::flavorbursts_off( "allies" );
common_scripts\utility::flag_set( "friendlies_spawned" );
}
sniff_system_init()
{
while ( !isdefined( level.dog ) )
wait 0.05;
common_scripts\utility::flag_wait( "introscreen_complete" );
wait 1;
var_0 = common_scripts\utility::getstructarray( "dog_sniff", "targetname" );
foreach ( var_2 in var_0 )
{
var_3 = spawn( "script_origin", var_2.origin );
var_3.targetname = "dog_sniff";
}
var_5 = getentarray( "dog_sniff", "targetname" );
var_6 = getentarray( "sniff_zone", "script_noteworthy" );
foreach ( var_8 in var_6 )
var_8 sniff_assign_structs_to_volume( var_5 );
level.current_sniff_zone = undefined;
var_10 = getentarray( "sniff_trig", "targetname" );
common_scripts\utility::array_thread( var_10, ::sniff_trig_logic );
common_scripts\utility::array_call( var_5, ::delete );
common_scripts\utility::flag_wait( "promenade_exit" );
common_scripts\utility::array_thread( var_10, common_scripts\utility::trigger_off );
common_scripts\utility::flag_wait( "player_in_jeep" );
common_scripts\utility::array_thread( var_10, common_scripts\utility::trigger_on );
}
sniff_trig_logic()
{
self.did_riley_call = 0;
for (;;)
{
self waittill( "trigger" );
var_0 = getent( self.target, "targetname" );
if ( !isdefined( level.current_sniff_zone ) )
level.current_sniff_zone = var_0;
else if ( level.current_sniff_zone == var_0 )
{
wait 2;
continue;
}
level.current_sniff_zone = var_0;
level.dog maps\_utility_dogs::disable_dog_sniff();
if ( maps\deer_hunt_util::has_script_noteworthy( "walk" ) )
level.dog maps\_utility_dogs::enable_dog_walk( 1 );
else
level.dog maps\_utility_dogs::disable_dog_walk();
if ( isdefined( self.script_index ) )
{
if ( !self.did_riley_call )
{
self.did_riley_call = 1;
level.hesh maps\deer_hunt_util::call_riley( undefined, 1 );
}
}
level.dog thread dog_sniff_spots( level.current_sniff_zone.sniff_spots );
wait 2;
}
}
sniff_assign_structs_to_volume( var_0 )
{
self.sniff_spots = [];
foreach ( var_3, var_2 in var_0 )
{
if ( var_2 istouching( self ) )
self.sniff_spots[var_3] = var_2.origin;
}
}
dog_logic()
{
level thread sniff_system_init();
self endon( "deleted" );
self.animname = "generic";
self.meleealwayswin = 1;
self.ignoreme = 1;
thread maps\_utility::magic_bullet_shield();
maps\_utility::disable_ai_color();
maps\deer_hunt_util::ignore_me_ignore_all();
self.goalradius = 32;
switch ( level.start_point )
{
case "default":
case "intro":
common_scripts\utility::flag_wait( "introscreen_complete" );
thread maps\_utility_dogs::dog_pant_think();
common_scripts\utility::flag_wait( "curtain_cut" );
thread dog_jump_up_sound();
case "lobby":
common_scripts\utility::flag_wait( "lobby_entrance" );
wait 2.5;
maps\_utility_dogs::dog_bark();
wait 0.5;
maps\_utility_dogs::dog_bark();
case "outside":
common_scripts\utility::flag_wait( "lobby_exit" );
var_0 = getent( "bark", "targetname" );
while ( !self istouching( var_0 ) )
wait 0.5;
maps\_utility_dogs::dog_bark();
wait 0.5;
maps\_utility_dogs::dog_bark();
case "street":
common_scripts\utility::flag_wait( "promenade_exit" );
self notify( "stop_sniffing" );
maps\_utility_dogs::disable_dog_sniff();
var_1 = getnode( "dog_stay", "targetname" );
self setgoalnode( var_1 );
thread dog_jump_up_sound();
self waittill( "goal" );
maps\_utility_dogs::enable_dog_sniff();
common_scripts\utility::flag_wait( "hesh_to_shop_door" );
self notify( "stop_sniffing" );
maps\_utility_dogs::disable_dog_sniff();
case "encounter1":
var_1 = getnode( "dog_outside_shop", "targetname" );
self.goalradius = 20;
self setgoalnode( var_1 );
thread maps\deer_hunt_util::dog_node_wait( var_1, "dog_in_affection_position" );
common_scripts\utility::flag_wait( "player_out_of_chasm" );
var_2 = getent( "dropdown_blocker", "targetname" );
var_2.origin = var_2.origin + ( 0, 0, 400 );
var_2 connectpaths();
wait 0.05;
var_2 delete();
common_scripts\utility::flag_wait( "encounter1_affection_done" );
common_scripts\utility::flag_wait( "player_at_shop_door" );
maps\_utility_dogs::enable_dog_sneak();
common_scripts\utility::flag_wait( "player_entered_coffee_shop" );
maps\_utility_dogs::disable_dog_sneak();
common_scripts\utility::flag_wait( "back_enemies_fight_begin" );
wait 3;
while ( getaiarray( "axis" ).size > 2 )
wait 0.5;
level.hesh maps\_utility::smart_dialogue_generic( "deerhunt_hsh_rileygo" );
var_1 = getnode( "riley_flank", "targetname" );
self.goalradius = 32;
maps\_utility::disable_ai_color();
self setgoalnode( var_1 );
self waittill( "goal" );
self.ignoreall = 0;
common_scripts\utility::flag_wait( "dog_attack_enemies_dead" );
self setgoalpos( self.origin );
wait 7;
maps\deer_hunt_util::clear_dog_master();
maps\_utility::enable_ai_color();
maps\deer_hunt_util::ignore_me_ignore_all();
case "encounter2":
common_scripts\utility::flag_wait( "execution_start" );
case "lariver":
common_scripts\utility::flag_wait( "pipe_halfway" );
maps\deer_hunt_util::ignore_me_ignore_all();
maps\_utility::disable_pain();
case "ride":
common_scripts\utility::flag_wait( "player_exited_jeep" );
self pushplayer( 1 );
}
}
dog_jump_up_sound()
{
self waittill( "traverseAnim" );
maps\_utility::play_sound_on_entity( "scn_deer_dog_jump_on_car" );
}
dog_stays_in_front_of_player()
{
maps\_utility::ent_flag_init( "override_follow_logic" );
self endon( "stop_following_player" );
self.goalradius = 32;
self.animname = "generic";
var_0 = level.player getplayerangles();
var_0 = ( 0, var_0[1], 0 );
var_1 = anglestoforward( var_0 );
var_2 = var_1 * 375;
var_3 = level.player.origin + var_2;
level.target_ent = spawn( "script_origin", var_3 );
level.target_ent.angles = ( 0, var_0[1], 0 );
level.target_ent linkto( level.player );
var_4 = common_scripts\utility::getstructarray( "sniff_spots", "targetname" );
maps\_utility_dogs::disable_dog_sniff();
for (;;)
{
if ( maps\_utility::ent_flag( "override_follow_logic" ) )
{
wait 0.1;
continue;
}
var_5 = maps\_utility::groundpos( level.target_ent.origin );
var_6 = distance2d( self.origin, var_5 );
if ( var_6 > 75 )
{
self notify( "moving_up" );
var_7 = common_scripts\utility::get_array_of_closest( var_5, var_4, undefined, 5, 200, 0 );
if ( maps\deer_hunt_util::array_is_greater_than( var_7, 0 ) )
thread dog_sniff_spots( var_7 );
else
{
iprintln( "No sniff spots" );
self setgoalpos( var_5 );
}
var_8 = 6;
if ( level.console )
var_9 = maps\deer_hunt_util::waittill_player_moves_or_timeout_controller( var_8 );
else
var_9 = maps\deer_hunt_util::waittill_player_moves_or_timeout_kb( var_8 );
iprintln( "Moving up because of " + var_9 );
}
wait 0.15;
}
}
dog_sniff_spots( var_0 )
{
self notify( "new_spots" );
self endon( "new_spots" );
self endon( "stop_sniffing" );
var_1 = common_scripts\utility::random( var_0 );
self setgoalpos( var_1 );
while ( distance2dsquared( self.origin, var_1 ) > 5625 )
wait 0.25;
maps\_utility_dogs::disable_dog_walk();
wait 0.05;
maps\_utility_dogs::enable_dog_sniff();
for (;;)
{
var_0 = common_scripts\utility::array_randomize( var_0 );
foreach ( var_3 in var_0 )
{
self setgoalpos( var_3 );
self waittill( "goal" );
wait( randomintrange( 4, 8 ) );
}
}
}
dog_teleport_trig_logic()
{
var_0 = common_scripts\utility::getstruct( self.target, "targetname" );
self waittill( "trigger", var_1 );
if ( var_1.type == "dog" )
{
var_1 forceteleport( var_0.origin, var_0.angles );
wait 0.05;
var_1 notify( "teleported" );
}
}
intro_enemies()
{
maps\_utility::battlechatter_off();
level.gasstation_guys = [];
getent( "dog_victim", "targetname" ) maps\_utility::add_spawn_function( ::dog_attack_victim_logic );
getent( "dog_attack_guard", "targetname" ) maps\_utility::add_spawn_function( ::dog_attack_guard_logic, "dog_attack_guard" );
getent( "dog_attack_guard_stairs", "targetname" ) maps\_utility::add_spawn_function( ::dog_attack_guard_logic, "dog_attack_guard_stairs" );
maps\_utility::array_spawn_function_targetname( "dog_attack_back_enemies", ::dog_attack_back_enemies_logic );
createthreatbiasgroup( "dog_attack_enemies" );
createthreatbiasgroup( "player" );
createthreatbiasgroup( "team2" );
setignoremegroup( "team2", "dog_attack_enemies" );
maps\_utility::array_spawn_function_targetname( "executioners", ::gasstation_executioners_logic );
maps\_utility::array_spawn_function_targetname( "gasstation_backup", ::gasstation_executioners_logic );
switch ( level.start_point )
{
case "default":
case "street":
case "outside":
case "lobby":
case "intro":
common_scripts\utility::flag_wait( "promenade_exit" );
case "encounter1":
level.dog_victim = maps\_utility::spawn_targetname( "dog_victim", 1 );
level.dog_attack_guard = maps\_utility::spawn_targetname( "dog_attack_guard", 1 );
level.dog_attack_guard_stairs = maps\_utility::spawn_targetname( "dog_attack_guard_stairs", 1 );
thread dog_attack();
level.dog_attack_guard_stairs maps\_utility::enable_sprint();
thread gasstation_did_player_rush();
common_scripts\utility::flag_wait_any( "dog_attack_enemies_dead", "player_rushed_gas_station" );
maps\_utility::autosave_by_name( "encounter1_done" );
case "encounter2":
var_0 = getentarray( "center_guard_nodes", "targetname" );
foreach ( var_2 in var_0 )
var_2 disconnectnode();
thread gasstation_execution_timing();
thread gasstation_civs();
thread gasstation_ambient_aa72();
thread wall_alarm_start();
maps\_utility::array_spawn_targetname( "executioners", 1 );
common_scripts\utility::flag_wait( "player_dropped_down" );
var_4 = getent( "gasstation_flag_trig", "targetname" );
if ( !level.hesh istouching( var_4 ) )
{
level.backdoor_guy = maps\_utility::spawn_targetname( "backdoor_runner", 1 );
level.backdoor_guy thread gasstation_enemy_globals();
level.backdoor_guy maps\deer_hunt_util::set_forcegoal_nosight();
level.backdoor_guy maps\_utility::delaythread( 3, maps\deer_hunt_util::unset_forcegoal_nosight );
level thread maps\deer_hunt_util::dog_attack_guy( level.backdoor_guy );
}
common_scripts\utility::flag_wait( "gasstation_front_approach" );
var_5 = maps\_utility::array_spawn_targetname( "gasstation_backup", 1 );
level.gasstation_guys = common_scripts\utility::array_add( level.gasstation_guys, var_5 );
common_scripts\utility::flag_wait( "gasstation_clear" );
foreach ( var_2 in var_0 )
var_2 connectnode();
}
}
gasstation_did_player_rush()
{
common_scripts\utility::flag_wait( "hesh_to_lookout" );
maps\deer_hunt_util::if_flag_and_not_flag( "hesh_to_lookout", "dog_attack_enemies_dead", "player_rushed_gas_station" );
}
gasstation_execution_timing()
{
var_0 = common_scripts\utility::flag_wait_any_return( "bully_kick_victim_dead", "bully_kick_aborted", "bully_kick_complete", "player_dropped_down", "civilians_shot" );
maps\_utility::delaythread( randomfloatrange( 0.25, 0.8 ), common_scripts\utility::play_sound_in_space, "deerhunt_civ1_nooooo", ( -13770.7, 12401.9, -500.6 ) );
maps\_utility::delaythread( randomfloatrange( 0.25, 0.8 ), common_scripts\utility::play_sound_in_space, "deerhunt_civ2_ahhhhhhh", ( -13770.7, 12401.9, -500.6 ) );
if ( var_0 == "player_dropped_down" && isdefined( level.bully ) )
level.bully common_scripts\utility::delaycall( 1, ::stopanimscripted );
wait 0.5;
common_scripts\utility::flag_set( "execution_start" );
common_scripts\utility::array_call( level.team2, ::setthreatbiasgroup, "allies" );
level.player setthreatbiasgroup( "allies" );
common_scripts\utility::array_thread( getaiarray( "allies" ), maps\deer_hunt_util::ignore_me_ignore_all_off );
var_1 = getent( "hill_pos1", "targetname" );
var_1 common_scripts\utility::trigger_off();
var_1 = getent( "hesh_to_lookout", "targetname" );
var_1 common_scripts\utility::trigger_off();
maps\_utility::activate_trigger_with_targetname( "hill_pos2" );
common_scripts\utility::array_thread( getaiarray( "axis" ), maps\deer_hunt_util::ignore_me_ignore_all_off );
wait 3;
maps\_utility::battlechatter_on( "allies" );
maps\_utility::battlechatter_on( "axis" );
var_2 = common_scripts\utility::play_loopsound_in_space( "emt_deer_distant_war_lp", ( -16366.9, 11819.1, -511.1 ) );
thread lariver_ambient_magicbullets();
thread lariver_spawn_wall_battle_guys_early();
common_scripts\utility::flag_wait( "gasstation_clear" );
common_scripts\utility::flag_wait( "to_pipe" );
wait 3;
var_3 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "gasstation_hind" );
var_3 maps\_vehicle::mgoff();
var_3 vehicle_turnengineoff();
var_3 vehicle_setspeed( 55, 25 );
var_3 waittill( "missiles" );
common_scripts\utility::flag_set( "ambient_chopper_shoots_wall" );
var_3 vehicle_turnengineon();
var_3 thread chopper_missile_burst();
common_scripts\utility::flag_wait( "pipe_exit" );
var_2 delete();
}
lariver_ambient_magicbullets()
{
var_0 = ( -16493.7, 13633.5, -207.1 );
level.temp_green_fx_tag = common_scripts\utility::spawn_tag_origin();
level.temp_green_fx_tag.origin = var_0;
level.temp_green_fx_tag.angles = ( 0, 0, 180 );
var_1 = ( -18346.3, 15553.2, -121.6 );
playfx( common_scripts\utility::getfx( "green_smoke" ), var_1 );
playfxontag( common_scripts\utility::getfx( "green_smoke" ), level.temp_green_fx_tag, "tag_origin" );
var_2 = [ ( -16640, 11472, -416 ), ( -16400, 12624, -416 ), ( -17536, 12448, -416 ) ];
var_3 = [];
foreach ( var_7, var_5 in level.possible_guns )
{
var_6 = strtok( var_5, "+" )[0];
if ( !isdefined( var_6[0] ) )
continue;
if ( var_6 != "honeybadger" && !maps\_utility::is_in_array( var_3, var_6 ) )
var_3 = common_scripts\utility::add_to_array( var_3, var_6 );
}
while ( !common_scripts\utility::flag( "pipe_halfway" ) )
{
var_8 = randomfloatrange( 0.7, 1.2 );
foreach ( var_7, var_1 in var_2 )
{
var_10 = var_1;
var_11 = maps\deer_hunt_util::get_random_from_array_except( var_2, var_10 );
maps\deer_hunt_util::magicburst( common_scripts\utility::random( var_3 ), var_10, var_11 );
wait( var_8 );
}
}
foreach ( var_13 in level.team2 )
var_13 maps\_utility::forceuseweapon( common_scripts\utility::random( var_3 ), "primary" );
level.hesh maps\_utility::forceuseweapon( common_scripts\utility::random( var_3 ), "primary" );
}
gasstation_ambient_aa72()
{
level endon( "pipe_enter" );
common_scripts\utility::flag_wait( "gasstation_front_approach" );
var_0 = common_scripts\utility::getstructarray( "ambient_aa72x_splines", "targetname" );
var_1 = 2;
var_2 = [];
var_3 = 0;
var_0 = common_scripts\utility::array_randomize( var_0 );
for (;;)
{
foreach ( var_5 in var_0 )
{
var_6 = maps\_vehicle::spawn_vehicle_from_targetname( "ambient_aa72x" );
wait 0.1;
if ( isdefined( var_6 ) )
{
var_6 maps\_vehicle::godon();
var_2 = common_scripts\utility::add_to_array( var_2, var_6 );
if ( !isdefined( var_5.angles ) )
var_5.angles = ( 0, 0, 0 );
var_6 vehicle_teleport( var_5.origin, var_5.angles );
wait 0.05;
var_6 thread maps\_vehicle_code::vehicle_paths_helicopter( var_5 );
wait( randomintrange( 10, 15 ) );
}
}
wait 1;
}
}
wall_alarm_start()
{
self endon( "lariver_defend_bridge_clear" );
common_scripts\utility::flag_wait( "gasstation_front_approach" );
for (;;)
{
wait 6;
thread common_scripts\utility::play_sound_in_space( "emt_deer_wall_siren_dist", ( -19099, 15676, 1567 ) );
}
}
gasstation_executioners_logic()
{
self endon( "death" );
level.gasstation_guys = common_scripts\utility::add_to_array( level.gasstation_guys, self );
maps\deer_hunt_util::ignore_me_ignore_all();
self.dontevershoot = 1;
self.dontmelee = 1;
self.goalradius = 24;
self setgoalpos( self.origin );
self.anchor = spawn( "script_origin", self.origin );
self linkto( self.anchor );
thread gasstation_guard_damage_detection();
while ( !isdefined( level.execuioner_targets ) )
wait 0.25;
common_scripts\utility::flag_wait( "execution_start" );
wait( randomfloatrange( 0.25, 0.5 ) );
self.dontevershoot = undefined;
maps\deer_hunt_util::ignore_me_ignore_all_off();
common_scripts\utility::flag_wait( "civilians_shot" );
self unlink();
var_0 = getent( "gasstation_enemy_vol", "targetname" );
self setgoalvolumeauto( var_0 );
}
dog_attack_back_enemies_logic()
{
self.grenadeammo = 0;
maps\_utility::disable_long_death();
maps\_utility::set_ignoresuppression( 1 );
self setthreatbiasgroup( "dog_attack_enemies" );
}
dog_attack_guard_logic( var_0 )
{
self endon( "death" );
maps\deer_hunt_util::ignore_me_ignore_all();
maps\_utility::disable_long_death();
self setthreatbiasgroup( "dog_attack_enemies" );
self.goalradius = 20;
self.grenadeammo = 0;
maps\_utility::disable_careful();
var_1 = getnode( var_0, "targetname" );
thread dog_attack_on_damage();
common_scripts\utility::flag_wait( "dog_kill_started" );
wait 1.8;
self setgoalnode( var_1 );
maps\deer_hunt_util::ignore_me_ignore_all_off();
if ( var_0 == "dog_attack_guard_stairs" )
{
while ( isalive( self ) && isalive( level.player ) )
{
if ( abs( level.player.origin[2] ) - abs( self.origin[2] ) >= 30 )
{
self setgoalpos( self.origin );
return;
}
wait 0.1;
}
}
}
dog_attack_victim_logic()
{
self endon( "death" );
maps\deer_hunt_util::ignore_me_ignore_all();
self.maxvisibledist = 0.01;
self.animname = "victim";
self.goalradius = 24;
self.allowdeath = 1;
self.a.nodeath = 1;
maps\_utility::disable_surprise();
self.ragdoll_immediate = 1;
self.forceragdollimmediate = 1;
var_0 = common_scripts\utility::getstruct( "dog_attack", "targetname" );
var_1 = maps\_utility::getanim( "dog_kill_long" );
thread dog_victim_radio_sounds();
var_2 = getstartorigin( var_0.origin, var_0.angles, var_1 );
var_3 = getstartangles( var_0.origin, var_0.angles, var_1 );
thread maps\deer_hunt_util::retain_alert_level( 1, "player_fired_outside_coffee_shop" );
self.anchor = spawn( "script_origin", var_2 );
self.anchor.angles = var_3;
self forceteleport( var_2, var_3 );
self linkto( self.anchor );
common_scripts\utility::flag_wait( "player_at_shop_door" );
thread dog_victim_enemy_early_damage_detection();
self endon( "death" );
common_scripts\utility::flag_wait( "dog_kill_started" );
var_4 = self.origin;
if ( !common_scripts\utility::flag( "dog_kill_aborted" ) )
thread common_scripts\utility::play_sound_in_space( "scn_nml_dog_attack_front_npc" );
if ( common_scripts\utility::flag( "player_fired_outside_coffee_shop" ) )
{
maps\deer_hunt_util::ignore_me_ignore_all_off();
self unlink();
return;
}
self unlink();
wait 0.25;
thread maps\_utility::play_sound_on_tag( "generic_meleecharge_enemy_7", "tag_eye", 1 );
wait 1.5;
thread maps\_utility::play_sound_on_tag( maps\deer_hunt_util::get_random_death_sound(), "tag_eye", 1 );
wait 2;
thread maps\_utility::play_sound_on_tag( maps\deer_hunt_util::get_random_death_sound(), "tag_eye", 1 );
wait 1;
thread maps\_utility::play_sound_on_tag( maps\deer_hunt_util::get_random_death_sound(), "tag_eye", 1 );
}
dog_victim_death_internal()
{
wait 8.33;
if ( isalive( self ) )
maps\_utility::die();
level thread maps\deer_hunt_util::ragdoll_corpses();
}
dog_victim_radio_sounds()
{
self endon( "death" );
for (;;)
{
maps\_utility::play_sound_on_tag_endon_death( "fed_flavor_burst", "tag_eye" );
wait( randomintrange( 2, 3 ) );
if ( common_scripts\utility::flag( "dog_kill_started" ) || common_scripts\utility::flag( "dog_kill_aborted" ) )
return;
}
}
dog_victim_enemy_early_damage_detection()
{
self waittill( "damage", var_0, var_1, var_2, var_3, var_4, var_5, var_6 );
if ( !common_scripts\utility::flag( "dog_kill_aborted" ) )
{
maps\_utility::gun_remove();
maps\_utility::die();
common_scripts\utility::flag_set( "dog_kill_aborted" );
common_scripts\utility::flag_set( "dog_kill_ended" );
maps\deer_hunt_util::set_flag_if_not_set( "dog_kill_started" );
}
}
dog_attack_on_damage()
{
self waittill( "damage" );
maps\deer_hunt_util::set_flag_if_not_set( "dog_kill_started" );
}
dog_attack()
{
while ( !isdefined( level.dog_victim ) )
wait 0.05;
var_0 = common_scripts\utility::getstruct( "dog_attack", "targetname" );
var_1 = [ level.dog_victim, level.dog ];
common_scripts\utility::flag_wait( "player_entered_coffee_shop" );
if ( common_scripts\utility::flag( "player_fired_outside_coffee_shop" ) )
{
common_scripts\utility::flag_set( "dog_kill_started" );
common_scripts\utility::flag_set( "dog_kill_aborted" );
common_scripts\utility::flag_set( "dog_kill_ended" );
return;
}
common_scripts\utility::flag_wait( "shop_exit" );
wait 0.5;
common_scripts\utility::flag_set( "dog_kill_started" );
if ( isalive( level.dog_victim ) )
{
maps\_utility::battlechatter_on( "axis" );
level.dog thread dog_attack_dog_ends_early();
level.dog_victim.allowdeath = 1;
level.dog_victim.a.nodeath = 1;
level.dog_victim maps\_utility::disable_surprise();
level.dog_victim.ragdoll_immediate = 1;
level.dog_victim.forceragdollimmediate = 1;
var_0 maps\_anim::anim_single( var_1, "dog_kill_long" );
if ( isalive( level.dog_victim ) )
level.dog_victim kill();
wait 0.1;
level thread maps\deer_hunt_util::ragdoll_corpses();
}
maps\deer_hunt_util::set_flag_if_not_set( "dog_kill_ended" );
}
dog_attack_dog_ends_early()
{
level endon( "encounter1_approach" );
thread maps\_utility::play_sound_on_entity( "anml_dog_attack_npc_jump" );
common_scripts\utility::flag_wait( "dog_kill_aborted" );
self stopanimscripted();
maps\_utility_dogs::disable_dog_walk();
maps\_utility::enable_ai_color();
}
gasstation_civs()
{
level.civs = maps\_utility::array_spawn_targetname( "gasstation_civs", "targetname" );
common_scripts\utility::array_thread( level.civs, ::gasstation_civs_logic );
var_0 = [ "_us_civ_male_a", "_us_civ_male_e", "_us_civ_male_i" ];
var_0 = common_scripts\utility::array_randomize( var_0 );
foreach ( var_5, var_2 in level.civs )
{
var_3 = "head" + var_0[var_5];
var_4 = "body" + var_0[var_5];
var_2 replace_my_models( var_3, var_4 );
}
common_scripts\utility::flag_wait_any( "hesh_to_lookout", "player_rushed_gas_station" );
thread gasstation_bully_kick();
wait( randomfloatrange( 1, 2.5 ) );
foreach ( var_2 in level.civs )
{
if ( isalive( var_2 ) )
{
thread common_scripts\utility::play_sound_in_space( "deerhunt_civ1_leavehimalone", var_2.origin );
break;
}
}
}
replace_my_models( var_0, var_1 )
{
self detach( self.headmodel, "" );
if ( isdefined( self.hatmodel ) )
self detach( self.hatmodel, "" );
self setmodel( var_1 );
self attach( var_0, "", 1 );
self.headmodel = var_0;
}
#using_animtree("generic_human");
gasstation_bully_kick()
{
var_0 = common_scripts\utility::getstruct( "bully_kick", "targetname" );
var_1 = maps\_utility::spawn_targetname( "bully_guard", 1 );
level.bully = var_1;
var_1.animname = "guard";
var_1 thread kick_bully_logic();
var_2 = maps\_utility::spawn_targetname( "bully_civ", 1 );
var_2.animname = "civ";
var_2 thread kick_civ_logic();
var_3 = [ var_1, var_2 ];
var_0 thread maps\_anim::anim_single( var_3, "bully_kick" );
wait 0.05;
var_1 setanimtime( %prague_bully_a_kick, 0.22 );
var_2 setanimtime( %prague_bully_civ_kick, 0.24 );
var_0 waittill( "bully_kick" );
maps\deer_hunt_util::set_flag_if_not_set( "bully_kick_complete" );
}
anim_timing( var_0 )
{
self setanimtime( maps\_utility::getanim( "bully_kick" ), var_0 );
}
kick_bully_logic()
{
maps\deer_hunt_util::ignore_me_ignore_all();
maps\_utility::delaythread( 3.5, maps\_utility::play_sound_on_tag_endon_death, "deerhunt_saf1_yourcountrywillfall", "tag_eye" );
self waittill( "damage" );
self stopanimscripted();
common_scripts\utility::flag_set( "bully_kick_aborted" );
common_scripts\utility::flag_set( "bully_kick_complete" );
}
gasstation_guard_damage_detection()
{
level endon( "execution_start" );
self waittill( "damage" );
if ( isdefined( level.bully ) )
level.bully dodamage( 10, ( 0, 0, 0 ) );
}
kick_civ_logic()
{
self endon( "death" );
self.allowdeath = 1;
self.a.nodeath = 1;
self.ragdoll_immediate = 1;
self.forceragdollimmediate = 1;
maps\deer_hunt_util::ignore_me_ignore_all();
common_scripts\utility::flag_wait( "execution_start" );
if ( isalive( self ) )
maps\_utility::die();
}
gasstation_civs_logic()
{
self.animname = "generic";
self.name = "";
self.team = "allies";
self.scream_spot = self geteye();
self.dontmelee = 1;
maps\_utility::set_battlechatter( 0 );
self.deathanim = %exposed_crouch_death_fetal;
self.ignoreme = 1;
if ( !isdefined( level.execuioner_targets ) )
level.execuioner_targets = [];
var_0 = spawn( "script_origin", self geteye() );
var_0 linkto( self, "tag_eye" );
level.execuioner_targets = common_scripts\utility::add_to_array( level.execuioner_targets, var_0 );
if ( common_scripts\utility::cointoss() )
var_1 = "knees_idle";
else
var_1 = "knees_idle2";
thread maps\_anim::anim_loop_solo( self, var_1 );
maps\_utility::set_moveplaybackrate( randomfloatrange( 0.6, 1.3 ) );
thread civs_set_flag_on_damage();
common_scripts\utility::flag_wait_any( "bully_kick_victim_dead", "bully_kick_aborted", "bully_kick_complete", "player_dropped_down", "civilians_shot" );
wait( randomfloatrange( 1, 2 ) );
if ( isalive( self ) )
{
self notify( "stop_loop" );
self stopanimscripted();
maps\_utility::die();
}
}
civs_set_flag_on_damage()
{
self waittill( "damage", var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 );
maps\deer_hunt_util::set_flag_if_not_set( "civilians_shot" );
}
gasstation_enemy_globals()
{
level.gasstation_guys = common_scripts\utility::add_to_array( level.gasstation_guys, self );
maps\_utility::set_ai_bcvoice( "shadowcompany" );
self.grenadeammo = 0;
maps\_utility::disable_long_death();
}
intro_scene()
{
common_scripts\utility::flag_wait( "start_intro_scene" );
var_0 = common_scripts\utility::getstruct( "intro_scene", "targetname" );
level.intro_ball = maps\_utility::spawn_anim_model( "intro_ball", var_0.origin );
var_1 = [ level.hesh, level.dog, level.intro_ball ];
thread intro_scene_player();
level.hesh.animname = "generic";
level.dog.animname = "dog";
var_2 = 3;
var_3 = level.intro_ball maps\deer_hunt_util::get_anim_start_time( var_2, "intro1" );
var_4 = var_2 / getanimlength( %dh_intro1_guy );
var_5 = var_2 / getanimlength( level.dog maps\_utility::getanim( "intro1" ) );
common_scripts\utility::flag_wait( "introscreen_complete" );
maps\_utility::delaythread( 2, common_scripts\utility::flag_set, "intro_scene_complete" );
if ( !getdvarint( "steve", 1 ) )
{
var_0 thread maps\_anim::anim_single_run( var_1, "intro1" );
wait 0.05;
level.hesh thread maps\_utility::play_sound_on_entity( "scn_deer_intro_hesh_mvmt" );
level.intro_ball thread maps\_utility::play_sound_on_entity( "scn_deer_intro_ball_hits" );
level.dog thread maps\_utility::play_sound_on_entity( "scn_deer_intro_dog_mvmt" );
level.hesh setanimtime( %dh_intro1_guy, var_4 );
level.dog setanimtime( level.dog maps\_utility::getanim( "intro1" ), var_5 );
level.intro_ball setanimtime( level.intro_ball maps\_utility::getanim( "intro1" ), var_3 );
}
else
common_scripts\utility::flag_set( "player_up" );
maps\_utility::delaythread( 2, maps\_utility::activate_trigger_with_targetname, "to_corner" );
}
hesh_logic()
{
self endon( "deleted" );
self.animname = "generic";
thread maps\_utility::magic_bullet_shield();
maps\_utility::set_baseaccuracy( 2 );
self.grenadeammo = 0;
maps\_utility::disable_surprise();
maps\_utility::disable_pain();
maps\_utility::set_ignoresuppression( 1 );
self.goalradius = 32;
maps\_utility::set_ai_bcvoice( "taskforce" );
switch ( level.start_point )
{
case "default":
case "intro":
maps\deer_hunt_util::switch_from_cqb_to_creepwalk();
var_0 = getent( "theater_curtain", "targetname" );
var_0.animname = "curtain";
var_0 maps\_utility::assign_animtree();
var_1 = common_scripts\utility::getstruct( "curtain_open", "targetname" );
var_2 = "curtain_cut_in";
var_1 thread maps\_anim::anim_first_frame_solo( var_0, var_2 );
self.ignoreme = 1;
self.ignoreall = 1;
self.animname = "generic";
maps\_utility::set_force_color( "r" );
maps\_utility::enable_ai_color();
maps\_utility::enable_readystand();
common_scripts\utility::flag_wait( "intro_scene_complete" );
common_scripts\utility::flag_wait( "hallway_halfway" );
var_3 = common_scripts\utility::getstruct( "crouch_test", "targetname" );
var_4 = "creepwalk_duck";
maps\_utility::disable_ai_color();
var_3 maps\_anim::anim_reach_solo( self, var_4 );
maps\_utility::delaythread( 1, maps\_utility::enable_ai_color );
var_3 maps\_anim::anim_single_solo( self, var_4 );
maps\deer_hunt_util::switch_from_creepwalk_to_cqb();
common_scripts\utility::flag_wait( "player_approaching_stage" );
var_5 = getent( "theater_curtain_blocker", "targetname" );
maps\_utility::disable_ai_color();
var_1 maps\_anim::anim_reach_solo( self, var_2 );
thread maps\deer_hunt_util::flag_set_delayed( 14.5, "curtain_cut" );
level thread unblock_curtain( var_5 );
var_1 maps\_anim::anim_single( [ self, var_0 ], var_2 );
var_1 thread maps\_anim::anim_loop( [ self, var_0 ], "curtain_cut_idle" );
common_scripts\utility::flag_wait( "through_screen" );
var_1 notify( "stop_loop" );
maps\_utility::delaythread( 0.7, common_scripts\utility::play_sound_in_space, "scn_deer_cut_screen_release", ( -8755, 10166, -302 ) );
var_1 thread maps\_anim::anim_single( [ self, var_0 ], "curtain_cut_out" );
maps\_utility::delaythread( 1, maps\_utility::enable_ai_color );
maps\_utility::activate_trigger_with_targetname( "theater_exit_wait" );
common_scripts\utility::flag_set( "to_theater_exit" );
wait 5;
maps\_utility::disable_cqbwalk();
thread maps\deer_hunt_util::hesh_nag_til_flag( "player_on_upper_level", 13, 1 );
common_scripts\utility::flag_wait( "player_on_upper_level" );
case "lobby":
maps\deer_hunt_util::switch_from_creepwalk_to_cqb();
common_scripts\utility::flag_wait( "to_lobby_entrance" );
thread maps\deer_hunt_util::hesh_nag_til_flag( "lobby_entrance", 15 );
common_scripts\utility::flag_wait( "lobby_exit_approach" );
case "outside":
maps\_utility::disable_readystand();
if ( !common_scripts\utility::flag( "promenade_exit" ) )
{
var_6 = common_scripts\utility::getstruct( "pie_slice", "targetname" );
maps\_utility::disable_ai_color();
var_6 maps\_anim::anim_reach_solo( level.hesh, "360" );
maps\_utility::delaythread( 2, maps\_utility::enable_ai_color );
var_6 maps\_anim::anim_single_solo( level.hesh, "360" );
}
common_scripts\utility::flag_set( "outside_360_complete" );
common_scripts\utility::flag_wait( "promenade_exit_halfway" );
case "street":
level thread bus_movement();
maps\deer_hunt_util::ignore_me_ignore_all();
case "encounter1":
common_scripts\utility::flag_wait( "meetup_completed" );
level thread hesh_dog_interaction();
common_scripts\utility::flag_wait( "encounter1_affection_done" );
var_6 = common_scripts\utility::getstruct( "shop_door_anim_ent", "targetname" );
var_7 = spawn( "script_origin", var_6.origin );
var_7.angles = var_6.angles;
maps\_utility::disable_ai_color();
var_7 maps\_anim::anim_reach_and_approach( [ self ], "shop_door_open", undefined, "Cover Right" );
var_7 thread maps\_anim::anim_loop_solo( self, "shop_door_idle" );
common_scripts\utility::flag_wait( "player_at_shop_door" );
maps\_utility::clear_generic_run_anim();
var_8 = getentarray( "shop_door_left", "targetname" );
var_9 = var_8[0];
var_10 = getanimlength( %hunted_open_barndoor_flathand );
if ( isdefined( var_8[1] ) )
var_8[1] delete();
var_7 notify( "stop_loop" );
self pushplayer( 1 );
common_scripts\utility::delaycall( var_10, ::pushplayer, 0 );
var_7 thread maps\_anim::anim_single_solo( self, "shop_door_open" );
var_9 thread maps\deer_hunt_util::shop_door_open();
wait 0.5;
maps\_utility::enable_ai_color();
common_scripts\utility::flag_wait( "dog_kill_started" );
level.player setthreatbiasgroup( "player" );
foreach ( var_12 in level.team2 )
var_12 setthreatbiasgroup( "team2" );
var_7 delete();
wait 2.3;
self.baseaccuracy = 0.8;
maps\deer_hunt_util::ignore_me_ignore_all_off();
common_scripts\utility::array_thread( level.team2, maps\deer_hunt_util::ignore_me_ignore_all_off );
maps\_utility::battlechatter_on( "allies" );
maps\_utility::delaythread( 3, maps\deer_hunt_util::activate_trig_if_not_flag, "back_enemies_fight_begin" );
common_scripts\utility::flag_wait_any( "dog_attack_enemies_dead", "player_rushed_gas_station" );
maps\_utility::battlechatter_off();
common_scripts\utility::array_thread( level.team2, maps\deer_hunt_util::ignore_me_ignore_all );
maps\_utility::activate_trigger_with_targetname( "player_on_bus" );
wait 3;
common_scripts\utility::flag_wait( "hesh_moves_from_encounter1" );
var_6 = common_scripts\utility::getstruct( "wall_kick", "targetname" );
var_6.origin = ( -13736.5, 14092, -232 );
var_7 = spawn( "script_origin", var_6.origin );
var_7.angles = var_6.angles;
var_7 maps\_anim::anim_reach_and_approach( [ level.hesh ], "wall_kick", undefined, "Exposed" );
common_scripts\utility::flag_wait( "player_at_encounter1" );
var_6 thread maps\_anim::anim_single_solo( self, "wall_kick" );
wait 1;
level thread maps\_utility::activate_trigger_with_targetname( "hesh_to_dropdown" );
maps\_utility::enable_ai_color();
case "encounter2":
maps\deer_hunt_util::ignore_me_ignore_all();
common_scripts\utility::flag_wait( "hesh_to_lookout" );
common_scripts\utility::flag_wait_either( "player_dropped_down", "execution_start" );
if ( !common_scripts\utility::flag( "player_dropped_down" ) )
maps\_utility::activate_trigger_with_targetname( "player_dropped_down" );
thread hesh_gasstation_logic();
common_scripts\utility::flag_wait_or_timeout( "player_approaches_gasstation", 4.5 );
if ( !common_scripts\utility::flag( "execution_start" ) )
maps\_utility::activate_trigger_with_targetname( "hill_pos1" );
common_scripts\utility::flag_wait( "gasstation_clear" );
case "lariver":
}
}
gasstation_did_player_rush_pipe()
{
maps\deer_hunt_util::if_flag_and_not_flag( "pipe_enter", "gasstation_clear", "player_rushed_lariver" );
}
unblock_curtain( var_0 )
{
common_scripts\utility::flag_wait_or_timeout( "start_cut", 10 );
wait 3;
var_0.origin = var_0.origin + ( 0, 0, 300 );
var_0 connectpaths();
}
hesh_dog_interaction()
{
while ( !isdefined( level.hesh ) )
wait 0.5;
common_scripts\utility::flag_wait( "meetup_completed" );
level.hesh maps\_utility::disable_ai_color();
var_0 = common_scripts\utility::getstruct( "dog_interact", "targetname" );
var_0 maps\_anim::anim_reach_solo( level.hesh, "affection" );
common_scripts\utility::flag_wait_all( "player_out_of_chasm", "dog_in_affection_position" );
level.dog.animname = "dog";
common_scripts\utility::flag_set( "encounter1_affection_started" );
level.dog common_scripts\utility::delaycall( 5, ::stopanimscripted );
level.dog maps\_utility::delaythread( 2.5, maps\_utility::enable_ai_color );
var_0 maps\_anim::anim_single( level.squad, "affection" );
common_scripts\utility::flag_set( "encounter1_affection_done" );
level.dog.animname = "generic";
level.hesh maps\_utility::enable_ai_color();
}
hesh_waits_for_player( var_0 )
{
}
bus_movement()
{
thread bus_movement_sounds_rumble_etc();
}
bus_movement_model_logic()
{
var_0 = getent( self.targetname + "_clip", "targetname" );
var_0 linkto( self );
var_0 connectpaths();
}
bus_movement_internal()
{
var_0 = ( 272.4, 52.6004, 89.9999 );
var_1 = ( 275.186, 115.125, 27.5734 );
self rotatepitch( 2, 0.5 );
wait 2;
var_2 = 3;
self rotatepitch( 4, var_2, 0.5, var_2 - 0.5 );
}
bus_movement_sounds_rumble_etc()
{
common_scripts\utility::flag_wait( "player_on_bus" );
wait 1;
thread common_scripts\utility::exploder( 1 );
var_0 = level.player.origin - ( 0, 0, 400 );
earthquake( 0.3, 1, level.player.origin, 600 );
earthquake( 0.1, 8, level.player.origin, 600 );
playrumbleonposition( "deer_hunt_earthquake", level.player.origin + ( 0, 0, 500 ) );
thread common_scripts\utility::play_sound_in_space( "scn_deer_cementbridge_back", ( -11659.9, 15248.6, -58 ) );
thread common_scripts\utility::play_sound_in_space( "scn_deer_cementbridge_front", ( -11835.1, 14961.6, -78.5 ) );
}
hesh_does_360( var_0 )
{
var_1 = common_scripts\utility::getstruct( "360_turn", "targetname" );
var_1 maps\_anim::anim_reach_solo( self, "360" );
var_1 maps\_anim::anim_single_solo( self, "360" );
maps\_utility::enable_ai_color();
self.colornode_setgoal_func = undefined;
}
hesh_gasstation_logic()
{
common_scripts\utility::flag_wait( "player_dropped_down" );
var_0 = getentarray( "pipe_trigs", "script_noteworthy" );
common_scripts\utility::array_thread( var_0, common_scripts\utility::trigger_off );
common_scripts\utility::flag_wait( "execution_start" );
var_1 = getent( "hesh_foliage_clip", "targetname" );
var_1 delete();
self.baseaccuracy = 5;
common_scripts\utility::flag_wait( "gasstation_front_approach" );
level thread gasstation_waittill_clear_or_bypassed( var_0 );
common_scripts\utility::flag_wait_any( "gasstation_enemies_dead", "player_rushed_lariver" );
maps\_utility::activate_trigger_with_targetname( "gasstation_clear" );
}
gasstation_waittill_clear_or_bypassed( var_0 )
{
while ( level.gasstation_guys.size > 1 )
{
level.gasstation_guys = maps\_utility::array_removedead_or_dying( level.gasstation_guys );
wait 1;
}
var_1 = getentarray( "hill_trigs", "script_noteworthy" );
common_scripts\utility::array_thread( var_1, common_scripts\utility::trigger_off );
common_scripts\utility::array_thread( var_0, common_scripts\utility::trigger_on );
if ( isdefined( level.gasstation_guys[0] ) )
level.gasstation_guys[0] thread maps\deer_hunt_util::kill_me_from_closest_enemy();
common_scripts\utility::flag_set( "gasstation_enemies_dead" );
}
dog_gasstation_logic()
{
common_scripts\utility::flag_wait( "hill_pos1" );
common_scripts\utility::flag_wait_or_timeout( "gas_station_open_fire", 45 );
if ( !common_scripts\utility::flag( "roof_guy_dead" ) )
{
common_scripts\utility::flag_set( "send_dog_to_roof" );
dog_kills_roof_guy();
maps\deer_hunt_util::ignore_me_ignore_all();
}
}
dog_kills_roof_guy()
{
if ( common_scripts\utility::flag( "roof_guy_dead" ) )
return;
if ( !common_scripts\utility::flag( "gas_station_open_fire" ) )
level.hesh maps\_utility::smart_radio_dialogue( "deerhunt_hsh_cairocantakeout" );
self endon( "roof_guy_dead" );
maps\_utility::disable_ai_color();
self setgoalentity( level.roof_guy );
common_scripts\utility::flag_wait( "dog_on_roof" );
wait 2;
self.ignoreall = 0;
common_scripts\utility::flag_wait( "roof_guy_dead" );
}
get_my_meeting_group()
{
if ( maps\_utility::is_in_array( level.left_meeting_guys, self ) )
return level.left_meeting_guys;
else if ( maps\_utility::is_in_array( level.right_meeting_guys, self ) )
return level.right_meeting_guys;
else
return undefined;
}
move_player_to_start( var_0 )
{
var_1 = common_scripts\utility::getstruct( var_0, "targetname" );
if ( !isdefined( var_1 ) )
{
var_1 = getent( var_0, "targetname" );
if ( !isdefined( var_1 ) )
return;
}
level.player setorigin( var_1.origin );
var_2 = undefined;
if ( isdefined( var_1.target ) )
var_2 = getent( var_1.target, "targetname" );
if ( isdefined( var_2 ) )
level.player setplayerangles( vectortoangles( var_2.origin - var_1.origin ) );
else
level.player setplayerangles( var_1.angles );
wait 0.1;
}
deer_ruckus_trig_logic()
{
self waittill( "trigger" );
if ( isdefined( self.target ) )
thread common_scripts\utility::play_sound_in_space( "scn_deer_ruckus_02", ( -8636, 10060, -315 ) );
}
deer_ruckus( var_0 )
{
var_1 = [ "deer_metal_impact", "deer_glass_break" ];
var_1 = common_scripts\utility::array_randomize( var_1 );
thread common_scripts\utility::play_sound_in_space( var_1[0], var_0 );
wait( randomfloatrange( 0.5, 0.8 ) );
thread common_scripts\utility::play_sound_in_space( var_1[1], var_0 );
}
deer_init()
{
deer_reveal_chairs();
common_scripts\utility::exploder( "deer_dust_still" );
level.drone_lookahead_value = 500;
var_0 = getentarray( "lobby_deer", "targetname" );
var_1 = getentarray( "promenade_deer", "targetname" );
var_2 = getentarray( "promenade_exit_deer", "targetname" );
var_3 = [];
var_4 = [];
var_5 = [];
foreach ( var_8, var_7 in var_0 )
var_3[var_8] = maps\_drone_deer::deer_dronespawn( var_7 );
foreach ( var_8, var_7 in var_2 )
var_5[var_8] = maps\_drone_deer::deer_dronespawn( var_7 );
thread theatre_doors( var_3 );
var_10 = common_scripts\utility::getstruct( "deer_reveal", "targetname" );
foreach ( var_8, var_12 in var_3 )
{
var_12.animname = "deer" + var_8;
var_12 thread maps\_utility::magic_bullet_shield();
}
var_5[0] thread maps\_utility::magic_bullet_shield();
var_10 thread maps\_anim::anim_loop( var_3, "reveal_idle" );
var_13 = getanimlength( var_3[0] maps\_utility::getanim( "reveal" ) );
thread deer_player_leaning_detect();
common_scripts\utility::flag_wait( "lobby_entrance" );
var_3[1] thread maps\_utility::play_sound_on_entity( "scn_deer_run_away_left" );
var_3[0] thread maps\_utility::play_sound_on_entity( "scn_deer_run_away_right" );
thread common_scripts\utility::play_sound_in_space( "scn_deer_run_away_glass", ( -9404, 12199, -138 ) );
thread common_scripts\utility::play_sound_in_space( "scn_deer_run_away_door_left", ( -9382, 12525, -138 ) );
thread common_scripts\utility::play_sound_in_space( "scn_deer_run_away_door_right", ( -9151, 12584, -138 ) );
level.chair_models[1] thread maps\_utility::play_sound_on_entity( "scn_deer_run_away_chair3" );
level.chair_models[2] thread maps\_utility::play_sound_on_entity( "scn_deer_run_away_chair2" );
level.chair_models[4] thread maps\_utility::play_sound_on_entity( "scn_deer_run_away_chair1" );
level.chair_anim_ent thread maps\_anim::anim_single( level.chair_models, "reveal" );
thread maps\_utility::stop_exploder( "deer_dust_still" );
thread common_scripts\utility::exploder( "deer_dust_kickup" );
var_10 notify( "stop_loop" );
maps\_utility::delaythread( var_13 - 0.4, maps\_utility::array_notify, var_3, "move" );
var_10 maps\_anim::anim_single_run( var_3, "reveal" );
var_5[0] thread deer_detects_when_to_run();
}
deer_player_leaning_detect()
{
var_0 = getent( "deer_doorway", "targetname" );
level endon( "lobby_entrance" );
for (;;)
{
if ( level.player istouching( var_0 ) && level.player playerads() > 0.5 )
{
maps\_utility::activate_trigger_with_targetname( "lobby_entrance" );
return;
}
wait 0.1;
}
}
deer_reveal_chairs()
{
level.drone_lookahead_value = 800;
var_0 = "chair_";
var_1 = "reveal";
var_2 = common_scripts\utility::getstruct( "deer_reveal", "targetname" );
var_3 = "lv_redchair_dust";
level.chair_models = [];
level.chair_anim_ent = spawnstruct();
level.chair_anim_ent.origin = var_2.origin;
level.chair_anim_ent.angles = var_2.angles;
for ( var_4 = 0; var_4 < 5; var_4++ )
{
if ( var_4 == 0 )
continue;
level.chair_models[var_4] = maps\_utility::spawn_anim_model( var_0 + var_4, level.chair_anim_ent.origin );
level.chair_models[var_4].attached_actor = spawn( "script_model", level.chair_anim_ent.origin );
level.chair_models[var_4].attached_actor setmodel( var_3 );
level.chair_models[var_4].attached_actor linkto( level.chair_models[var_4] );
level.chair_anim_ent thread maps\_anim::anim_first_frame_solo( level.chair_models[var_4], var_1 );
wait 0.1;
}
}
theatre_doors( var_0 )
{
var_1 = [ getent( "theatre_doors_a_1", "targetname" ), getent( "theatre_doors_a_2", "targetname" ) ];
var_2 = [ getent( "theatre_doors_b_1", "targetname" ), getent( "theatre_doors_b_2", "targetname" ) ];
thread theater_door_deer_dist_check( var_1, var_0 );
thread theater_door_deer_dist_check( var_2, var_0 );
}
theater_door_deer_dist_check( var_0, var_1 )
{
wait 2;
var_2 = 14400;
for (;;)
{
foreach ( var_4 in var_1 )
{
if ( distance2dsquared( var_0[0].origin, var_4.origin ) <= var_2 )
{
thread smash_open( var_0 );
return;
}
}
wait 0.05;
}
}
smash_open( var_0 )
{
foreach ( var_2 in var_0 )
{
if ( var_2.targetname == "theatre_doors_b_1" || var_2.targetname == "theatre_doors_a_1" )
var_3 = 96;
else
var_3 = -96;
var_2 thread open_and_connect( var_3 );
}
}
open_and_connect( var_0 )
{
var_1 = 0.1;
self rotateyaw( var_0, var_1 );
self connectpaths();
self waittill( "rotatedone" );
var_2 = randomintrange( 18, 27 );
if ( var_0 > 0 )
var_2 = var_2 * -1;
var_3 = randomintrange( 10, 15 );
var_4 = 0.1;
var_5 = var_3 - var_4;
self rotateyaw( var_2, var_3, var_4, var_5 );
thread connect_while_opening();
self waittill( "rotatedone" );
self notify( "stop_updating_door_paths" );
}
connect_while_opening()
{
self endon( "stop_updating_door_paths" );
for (;;)
{
self connectpaths();
self disconnectpaths();
wait 0.05;
}
}
deer_detects_when_to_run()
{
wait 1;
thread deer_allies_dist_detection();
thread deer_damage_detection();
thread deer_player_aim_detection();
self waittill( "move" );
level common_scripts\utility::flag_set( "deer_moved_away" );
}
deer_allies_dist_detection()
{
self endon( "stop_deciding_when_to_move" );
var_0 = 250000;
var_1 = common_scripts\utility::add_to_array( level.squad, level.player );
while ( !maps\deer_hunt_util::is_array_close( var_1, var_0 ) )
wait 0.05;
self notify( "move" );
self notify( "stop_deciding_when_to_move" );
}
deer_damage_detection()
{
self endon( "stop_deciding_when_to_move" );
var_0 = 0;
for (;;)
{
self waittill( "damage", var_1, var_2 );
var_0 = var_0 + var_1;
if ( isdefined( var_2 ) )
{
if ( var_2 == level.player )
{
wait 0.25;
self notify( "move" );
self notify( "stop_deciding_when_to_move" );
return;
}
}
}
}
deer_player_aim_detection()
{
self endon( "stop_deciding_when_to_move" );
for (;;)
{
var_0 = vectornormalize( anglestoforward( level.player getplayerangles() ) );
var_1 = level.player.origin + var_0 * 10000;
var_2 = bullettrace( level.player geteye(), var_1, 1, level.player );
if ( isdefined( var_2["entity"] ) )
{
if ( var_2["entity"] == self )
{
wait 0.25;
self notify( "move" );
self notify( "stop_deciding_when_to_move" );
return;
}
}
wait 0.1;
}
}
do_physics_pulse()
{
common_scripts\utility::flag_wait( "lobby_entrance" );
wait 0.4;
physicsexplosionsphere( self.origin, 50, 30, 1 );
}
lobby_ruckus()
{
common_scripts\utility::flag_wait( "lobby_entrance" );
var_0 = ( -9124.8, 12167.3, -170 );
var_1 = [ "deer_metal_fall", "deer_glass_break", "deer_metal_impact" ];
var_1 = common_scripts\utility::array_randomize( var_1 );
wait 0.5;
wait( randomfloatrange( 0.5, 0.8 ) );
wait( randomfloatrange( 0.5, 0.8 ) );
}
lariver_spawn_wall_battle_guys_early()
{
createthreatbiasgroup( "final_pos_enemies" );
createthreatbiasgroup( "final_pos_friendlies" );
setthreatbias( "final_pos_enemies", "final_pos_friendlies", 10000 );
setthreatbias( "final_pos_friendlies", "final_pos_enemies", 10000 );
setthreatbias( "axis", "final_pos_friendlies", 0 );
setthreatbias( "allies", "final_pos_enemies", 0 );
maps\_utility::array_spawn_function_targetname( "rpg_guys", ::lariver_balcony_friendly_logic );
maps\_utility::array_spawn_function_targetname( "lariver_backline_guys", ::lariver_backline_guys_logic );
level.lariver_early_ai = [];
var_0 = maps\_utility::array_spawn_targetname( "rpg_guys", 1 );
level.lariver_early_ai = common_scripts\utility::array_combine( level.lariver_early_ai, var_0 );
foreach ( var_2 in level.lariver_early_ai )
var_2.spawner = common_scripts\utility::random( getentarray( "rpg_guys", "targetname" ) );
var_4 = maps\_utility::array_spawn_targetname( "lariver_backline_guys", 1 );
level.lariver_early_ai = common_scripts\utility::array_combine( level.lariver_early_ai, var_4 );
level.balcony_friendlies = var_0;
}
lariver_global_setup()
{
maps\deer_hunt_color_system::init_enemy_color_volumes();
thread lariver_friendly_setup();
thread lariver_enemies();
level.hesh thread maps\deer_hunt_util::hesh_calls_riley( 4, "squad_to_defend" );
createthreatbiasgroup( "final_pos_enemies" );
createthreatbiasgroup( "final_pos_friendlies" );
setthreatbias( "final_pos_enemies", "final_pos_friendlies", 10000 );
setthreatbias( "final_pos_friendlies", "final_pos_enemies", 10000 );
setthreatbias( "axis", "final_pos_friendlies", 0 );
setthreatbias( "allies", "final_pos_enemies", 0 );
if ( isdefined( level.temp_green_fx_tag ) )
{
stopfxontag( common_scripts\utility::getfx( "green_smoke" ), level.temp_green_fx_tag, "tag_origin" );
level.temp_green_fx_tag delete();
}
level.matv = maps\_vehicle::spawn_vehicle_from_targetname( "gate_matv" );
level.matv.godmode = 1;
level.matv.obj_ent = getent( "obj_ramp", "targetname" );
level.matv.obj_ent linkto( level.matv );
level.matv.obj_ent hide();
wait 0.05;
var_0 = getvehiclenode( "matv_start", "targetname" );
level.matv attachpath( var_0 );
common_scripts\utility::flag_wait( "player_under_bridge" );
thread lariver_defend_globals();
thread la_river_defend_weapons_spawn();
}
lariver_defend_spawn_choppers()
{
common_scripts\utility::flag_wait( "spawn_defend_choppers" );
level.choppers = [];
var_0 = [ "lariver_defend_chopper_left" ];
foreach ( var_2 in var_0 )
getent( var_2, "targetname" ) maps\_utility::add_spawn_function( ::chopper_spawn_func );
common_scripts\utility::flag_wait( "defend_chopp1_dead" );
common_scripts\utility::flag_wait( "spawn_defend_chopper2" );
level.chopper2 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "lariver_defend_chopper_left" );
level.choppers = common_scripts\utility::array_add( level.choppers, level.chopper2 );
level.chopper2 thread make_me_a_target();
level.valid_missile_target = level.chopper2;
level.chopper2 chopper_does_first_flyby();
thread choppers_do_strafe_attacks();
common_scripts\utility::flag_wait( "defend_chopp2_dead" );
common_scripts\utility::flag_set( "choppers_dead" );
}
chopper_spawn_func()
{
self.shoot_tag = "tag_flash";
self.is_dying = 0;
self.enablerocketdeath = 1;
self.alwaysrocketdeath = 1;
self.is_dodging = 0;
self.last_dodge = "left";
self.is_strafing = 0;
self.preferred_crash_style = 0;
self setmaxpitchroll( 10, 10 );
self.node_array = maps\deer_hunt_util::return_struct_spline( common_scripts\utility::getstruct( self.spawner.target, "targetname" ) );
thread chopper_attacker_check();
thread chopper_outline_monitor();
maps\_vehicle::godon();
maps\_vehicle::mgoff();
self setyawspeedbyname( "faster" );
level.player.head_target = spawn( "script_origin", level.player geteye() );
level.player.head_target linkto( level.player );
self.had_mercy = 0;
self.mgturret[0].bottomarc = 180;
self.mgturret[0].leftarc = 180;
self.mgturret[0].rightarc = 180;
self.mgturret[0].toparc = 180;
self waittill( "death" );
if ( !common_scripts\utility::flag( "defend_chopp1_dead" ) )
common_scripts\utility::flag_set( "defend_chopp1_dead" );
}
choppers_do_strafe_attacks()
{
level endon( "defend_chopp2_dead" );
wait 15;
for (;;)
{
level.choppers = common_scripts\utility::array_removeundefined( level.choppers );
if ( level.choppers.size == 0 )
{
wait 2;
continue;
}
common_scripts\utility::random( level.choppers ) chopper_strafe_attack();
var_0 = randomintrange( 15, 22 );
wait( var_0 );
}
}
chopper_strafe_attack()
{
if ( self.is_dying )
return;
if ( self.is_strafing )
return;
self endon( "stop_strafing" );
self notify( "strafe_run" );
self.is_strafing = 1;
self.attack_pos = undefined;
self setneargoalnotifydist( 500 );
var_0 = common_scripts\utility::getstructarray( "strafe_attack", "script_noteworthy" );
self.old_node = self.currentnode;
maps\_utility::vehicle_detachfrompath();
var_1 = common_scripts\utility::getclosest( self.origin, var_0 );
self.attack_pos = var_1.origin;
while ( self.is_dodging )
wait 0.25;
self vehicle_setspeed( 45, 20 );
self setvehgoalpos( self.attack_pos, 1 );
self setlookatent( level.player );
while ( distance( self.origin, self.attack_pos ) > 300 )
wait 0.25;
thread chopper_attack_logic();
thread chopper_destroys_cover();
var_2 = common_scripts\utility::getstruct( var_1.target, "targetname" );
self.attack_pos = var_2.origin;
while ( self.is_dodging )
wait 0.25;
self setvehgoalpos( self.attack_pos );
self vehicle_setspeed( 50, 25 );
while ( distance( self.origin, self.attack_pos ) > 300 )
wait 0.25;
common_scripts\utility::delaycall( 4, ::clearlookatent );
self.is_strafing = 0;
thread maps\_utility::notify_delay( "stop_shooting", 10 );
self.attack_pos = undefined;
thread chopper_resume_path( 1 );
}
chopper_resume_path( var_0 )
{
if ( self.is_dying )
return;
var_1 = common_scripts\utility::getstruct( "right_spline", "script_noteworthy" );
var_2 = common_scripts\utility::getstruct( "left_spline", "script_noteworthy" );
if ( maps\_utility::is_in_array( self.node_array, var_2 ) )
{
self.node_array = maps\deer_hunt_util::return_struct_spline( var_1 );
var_3 = common_scripts\utility::getclosest( self.origin, self.node_array, 10000 );
}
else
{
self.node_array = maps\deer_hunt_util::return_struct_spline( var_2 );
var_3 = common_scripts\utility::getclosest( self.origin, self.node_array, 10000 );
}
self.is_strafing = 0;
thread maps\_vehicle_code::vehicle_paths_helicopter( var_3 );
self vehicle_setspeed( 50, 50 );
if ( isdefined( var_0 ) )
thread chopper_attack_logic();
}
chopper_side_dodge()
{
if ( self.is_dodging )
return;
self.is_dodging = 1;
var_0 = 200;
var_1 = self.angles;
var_1 = ( 0, var_1[1], 0 );
var_2 = anglestoright( var_1 );
var_3 = var_2 * var_0;
var_4 = self.origin + var_3;
var_5 = undefined;
if ( bullettracepassed( self.origin, var_4, 0, self ) && self.last_dodge == "left" )
{
self.last_dodge = "right";
var_5 = var_4;
}
else
{
var_3 = var_3 * -1;
var_4 = self.origin + var_3;
if ( bullettracepassed( self.origin, var_4, 0, self ) )
{
self.last_dodge = "left";
var_5 = var_4;
}
}
if ( !isdefined( var_5 ) )
{
self.is_dodging = 0;
return;
}
else
{
self setvehgoalpos( var_5 + ( 0, 0, 100 ) );
self vehicle_setspeed( 60, 60, 60 );
thread maps\_utility::play_sound_on_entity( "scn_deer_hind_avoid" );
wait 3;
self.is_dodging = 0;
if ( isdefined( self.attack_pos ) )
self setvehgoalpos( self.attack_pos, 1 );
else
thread chopper_resume_path();
return;
}
}
chopper_does_first_flyby()
{
var_0 = ( -17617.2, 13590, 80.9 );
var_1 = ( -18519.2, 15965, 1282.9 );
self.old_node = self.currentnode;
maps\_utility::vehicle_detachfrompath();
maps\_utility::delaythread( 6, ::chopper_missile_burst );
self vehicle_setspeed( 75, 35 );
self setvehgoalpos( var_0 );
self waittill( "goal" );
self setvehgoalpos( var_1 );
self waittill( "goal" );
self vehicle_setspeed( 40, 40 );
chopper_strafe_attack();
level thread choppers_do_strafe_attacks();
}
chopper_missile_burst()
{
var_0 = [ ( -18265.1, 14554.4, -511.1 ), ( -18457.2, 14546, -511.1 ), ( -17975.9, 14705.3, -511.1 ), ( -17996.2, 14528.5, -511.1 ) ];
var_1 = "tag_missile_right";
foreach ( var_3 in var_0 )
{
var_4 = self gettagorigin( var_1 ) - ( 0, 0, 50 );
var_5 = magicbullet( "zippy_rockets", var_4, var_3 );
wait 0.3;
if ( var_1 == "tag_missile_right" )
{
var_1 = "tag_missile_left";
continue;
}
var_1 = "tag_missile_right";
}
var_7 = getent( "player_defend_area", "script_noteworthy" );
if ( level.player istouching( var_7 ) )
{
level.player_is_stunned = 1;
level.player enableinvulnerability();
earthquake( 0.8, 2, level.player.origin, 500 );
level.player maps\_utility::blend_movespeedscale_percent( 20, 0.1 );
level.player maps\_utility::delaythread( 3, maps\_utility::blend_movespeedscale_percent, 95, 0.1 );
level.player shellshock( "default", 4 );
level.player playrumbleonentity( "damage_heavy" );
level.player disableweapons();
wait 3;
level.player enableweapons();
level.player disableinvulnerability();
wait 1;
level.player_is_stunned = 0;
}
if ( common_scripts\utility::flag( "squad_to_defend" ) )
{
common_scripts\utility::flag_set( "chopper_fight_start" );
maps\_utility::autosave_by_name( "chopper_fight" );
}
}
chopper_attack_logic()
{
if ( self.is_dying )
return;
self endon( "death" );
self endon( "stop_shooting" );
self notify( "shooting_mg" );
self endon( "shooting_mg" );
var_0 = 3;
var_1 = 50;
var_2 = maps\_utility::getdifficulty();
switch ( var_2 )
{
case "easy":
var_0 = 5;
var_1 = 25;
break;
case "medium":
var_0 = 3;
var_1 = 50;
break;
case "fu":
case "hard":
var_0 = 2;
var_1 = 75;
break;
}
var_3 = cos( 70 );
while ( self.health > 0 )
{
burst_mg( level.player );
if ( randomint( 100 ) <= var_1 )
maps\deer_hunt_util::shoot_rocket( "zippy_rockets" );
wait( var_0 );
}
}
burst_mg( var_0 )
{
self endon( "stop_shooting_mg" );
var_1 = self.mgturret[0];
var_2 = randomintrange( 40, 50 );
var_3 = 150;
var_4 = 200;
var_5 = 50;
var_6 = 0;
var_7 = maps\_utility::getdifficulty();
switch ( var_7 )
{
case "easy":
var_3 = 10;
var_4 = 40;
var_5 = 25;
var_2 = randomintrange( 15, 20 );
break;
case "medium":
var_3 = 9;
var_4 = 28;
var_5 = 50;
var_2 = randomintrange( 25, 35 );
break;
case "fu":
case "hard":
var_3 = 8;
var_4 = 12;
var_5 = 75;
var_2 = randomintrange( 8, 12 );
break;
}
for ( var_8 = 0; var_8 < var_2; var_8++ )
{
var_6 = randomint( 10 );
var_9 = randomintrange( var_3, var_4 );
if ( common_scripts\utility::cointoss() )
var_9 = var_9 * -1;
var_1 settargetentity( level.player.head_target, ( var_9, var_9, 0 ) );
var_1 shootturret();
if ( !self.had_mercy && level.player.health <= 20 )
{
self.had_mercy = 1;
return;
}
wait 0.05;
}
}
chopper_attacker_check()
{
self.shot_with_rpg = 0;
var_0 = 2;
var_1 = maps\_utility::getdifficulty();
switch ( var_1 )
{
case "easy":
var_0 = 2;
break;
case "medium":
var_0 = 2;
break;
case "fu":
case "hard":
var_0 = 2;
break;
}
for (;;)
{
self waittill( "damage", var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10, var_11 );
if ( isdefined( var_3 ) )
{
if ( isplayer( var_3 ) )
{
if ( isdefined( var_11 ) )
{
if ( var_11 == "rpg_player" || var_11 == "maaws" )
{
thread chopper_damage_state();
self.shot_with_rpg++;
if ( self.shot_with_rpg >= var_0 )
{
thread chopper_scripted_death();
return;
}
}
}
}
}
}
}
chopper_scripted_death()
{
common_scripts\utility::flag_set( "defend_chopp2_dead" );
level.valid_missile_target = undefined;
var_0 = randomintrange( 420, 550 );
var_1 = [ ( -18376, 12256, var_0 ), ( -17368, 12856, var_0 ), ( -16400, 13392, var_0 ) ];
var_2 = common_scripts\utility::random( var_1 );
self.is_dying = 1;
self.preferred_death_anim = "battle_hind_explode_singleV3";
level.chopper_death_anim = self.preferred_death_anim;
self notify( "stop_shooting" );
self notify( "stop_strafing" );
self notify( "scripted_death" );
maps\_utility::vehicle_detachfrompath();
thread chopper_custom_death_spin();
self setvehgoalpos( var_2, 1 );
self vehicle_setspeed( 50, 25 );
thread common_scripts\utility::play_loop_sound_on_entity( "hind_helicopter_dying_loop" );
self setneargoalnotifydist( 200 );
common_scripts\utility::waittill_notify_or_timeout( "near_goal", 3 );
maps\_vehicle::godoff();
common_scripts\utility::stop_loop_sound_on_entity( "hind_helicopter_dying_loop" );
level thread common_scripts\utility::play_sound_in_space( "hind_helicopter_hit", self.origin );
self notify( "stop_roatating" );
self kill( self.origin );
earthquake( 1, 0.7, level.player.origin, 500 );
self vehicle_turnengineoff();
wait 2;
}
chopper_custom_death_spin()
{
self endon( "stop_roatating" );
self clearlookatent();
self setyawspeed( 400, 100, 100 );
for (;;)
{
if ( !isdefined( self ) )
return;
var_0 = randomintrange( 90, 120 );
self settargetyaw( self.angles[1] + var_0 );
wait 0.5;
}
}
chopper_damage_state()
{
if ( isdefined( self.is_damaged ) )
return;
self.is_damaged = 1;
playfxontag( common_scripts\utility::getfx( "chopper_damage_smoke" ), self, "tag_engine_left" );
self playsound( "scn_deer_hind_pain1" );
wait 0.5;
playfxontag( common_scripts\utility::getfx( "chopper_damage_smoke2" ), self, "tail_rotor_jnt" );
self waittill( "scripted_death" );
self playsound( "scn_deer_hind_pain2" );
stopfxontag( common_scripts\utility::getfx( "chopper_damage_smoke" ), self, "tag_engine_left" );
stopfxontag( common_scripts\utility::getfx( "chopper_damage_smoke2" ), self, "tail_rotor_jnt" );
}
chopper_destroys_cover()
{
if ( !isdefined( level.destroyed_hesco_count ) )
level.destroyed_hesco_count = 0;
if ( level.destroyed_hesco_count >= 2 )
return;
if ( !isdefined( level.defend_cover_nodes ) )
level.defend_cover_nodes = getnodearray( "defend_cover_nodes", "script_noteworthy" );
var_0 = undefined;
level.hescos = common_scripts\utility::array_randomize( level.hescos );
var_1 = get_player_hesco();
if ( !isdefined( var_1 ) )
var_1 = common_scripts\utility::random( level.hescos );
var_0 = maps\deer_hunt_util::shoot_rocket( "zippy_rockets", var_1.origin );
var_0 waittill( "death" );
var_1 setscriptablepartstate( 0, "destroyed" );
foreach ( var_3 in level.defend_cover_nodes )
{
if ( distance2dsquared( var_3.origin, var_1.trig.origin ) < 1600 )
{
var_3 common_scripts\utility::delaycall( 4, ::disconnectnode );
level.defend_cover_nodes = common_scripts\utility::array_remove( level.defend_cover_nodes, var_3 );
foreach ( var_5 in getaiarray( "allies" ) )
{
if ( isdefined( var_5.node ) )
{
if ( var_5.node == var_3 )
{
foreach ( var_3 in level.defend_cover_nodes )
{
if ( !isnodeoccupied( var_3 ) )
{
var_5 maps\_utility::disable_ai_color();
var_5.goalradius = 32;
var_5 setgoalnode( var_3 );
break;
}
}
break;
}
}
}
break;
}
}
level.hescos = common_scripts\utility::array_remove( level.hescos, var_1 );
level.destroyed_hesco_count++;
return 1;
}
get_player_hesco()
{
foreach ( var_2, var_1 in level.hescos )
{
if ( level.player istouching( var_1.trig ) )
{
maps\_utility::notify_delay( "stop_shooting_mg", 2 );
return var_1;
}
}
return undefined;
}
lariver_defend_globals( var_0 )
{
maps\_utility::array_spawn_function_targetname( "chopper_defend_pilots", ::lariver_assign_pilot_func );
level.player_is_stunned = 0;
level.valid_missile_target = undefined;
thread lariver_setup_launchers();
thread lariver_defend_guided_missile_setup();
if ( !isdefined( var_0 ) )
{
while ( getaiarray( "axis" ).size > 1 )
wait 0.15;
var_1 = getaiarray( "axis" );
if ( isdefined( var_1 ) )
common_scripts\utility::array_thread( var_1, maps\deer_hunt_util::kill_me_from_closest_enemy );
thread chopper_sounds_for_defend();
thread maps\_utility::music_stop( 30 );
wait 4;
level.lariver_early_ai = maps\_utility::array_removedead( level.lariver_early_ai );
common_scripts\utility::array_thread( level.lariver_early_ai, ::drone_stops_shooting );
}
common_scripts\utility::flag_set( "squad_to_defend" );
var_2 = getentarray( "color_trig", "script_noteworthy" );
level notify( "stop_custom_color_system" );
foreach ( var_4 in var_2 )
var_4 common_scripts\utility::trigger_off();
level thread chopper_achievement_check();
maps\_utility::activate_trigger_with_targetname( "squad_to_defend" );
var_1 = getaiarray( "allies" );
common_scripts\utility::array_thread( var_1, maps\deer_hunt_util::ignore_me_ignore_all );
var_6 = common_scripts\utility::getstruct( "dog_drag_defend", "targetname" );
level maps\deer_hunt_util::dog_drag_to_cover( var_6, 6 );
thread lariver_defend_destructible_cover();
thread lariver_defend_enemy_population();
maps\_utility::autosave_by_name( "defend_begin" );
maps\_utility::set_team_bcvoice( "allies", "delta" );
common_scripts\utility::flag_wait( "defend_chopp2_dead" );
wait 5;
var_1 = getaiarray( "axis" );
if ( var_1.size > 0 )
{
getent( "squad_to_defend", "targetname" ) common_scripts\utility::trigger_off();
common_scripts\utility::array_thread( getaiarray( "allies" ), maps\_utility::enable_ai_color );
maps\_utility::activate_trigger_with_targetname( "squad_charges_final_enemies" );
wait 6;
var_1 = maps\_utility::array_removedead_or_dying( var_1 );
if ( var_1.size > 0 )
common_scripts\utility::array_thread( var_1, maps\deer_hunt_util::kill_me_from_closest_enemy );
}
common_scripts\utility::flag_set( "lariver_defend_bridge_clear" );
}
chopper_sounds_for_defend()
{
level.bridge_chopper = maps\_vehicle::spawn_vehicle_from_targetname( "lariver_defend_bridge_guys_chopper" );
wait 0.5;
common_scripts\utility::array_thread( level.bridge_chopper.riders, maps\deer_hunt_util::ignore_me_ignore_all );
common_scripts\utility::flag_wait( "player_in_defend_area" );
common_scripts\utility::array_thread( level.bridge_chopper.riders, maps\deer_hunt_util::ignore_me_ignore_all_off );
}
chopper_achievement_check()
{
common_scripts\utility::flag_wait_all( "player_killed_defend_aa72x", "defend_chopp2_dead" );
wait 5;
level.player maps\_utility::player_giveachievement_wrapper( "LEVEL_2A" );
}
drone_stops_shooting()
{
self notify( "stop_drone_fighting" );
wait( randomfloatrange( 0.3, 1.3 ) );
thread maps\_drone::drone_idle();
}
lariver_setup_launchers()
{
var_0 = getentarray( "left_launchers", "targetname" );
var_1 = getentarray( "right_launchers", "targetname" );
var_2 = [ var_0[0], var_0[1], var_1[0], var_1[1] ];
common_scripts\utility::array_thread( var_2, maps\deer_hunt_util::set_flag_on_weapon_pickup, "player_picked_up_launcher" );
common_scripts\utility::array_thread( var_2, ::replenish_on_pickup );
common_scripts\utility::flag_wait_or_timeout( "player_in_defend_area", 5 );
var_3 = [];
var_3[0] = spawn_obj_on_launchers( var_0 );
var_3[1] = spawn_obj_on_launchers( var_1 );
common_scripts\utility::flag_wait( "player_picked_up_launcher" );
foreach ( var_5 in var_3 )
var_5 delete();
}
spawn_obj_on_launchers( var_0 )
{
foreach ( var_2 in var_0 )
{
if ( isdefined( var_2 ) )
{
var_3 = var_2 maps\deer_hunt_util::spawn_model_on_me( "weapon_maaws_obj" );
return var_3;
}
}
}
replenish_on_pickup()
{
level endon( "defend_chopp2_dead" );
var_0 = self.origin;
var_1 = self.angles;
var_2 = self;
for (;;)
{
var_2 waittill( "trigger" );
level.player givemaxammo( "maaws" );
var_3 = spawn( "weapon_maaws", var_0, 1 );
var_3.angles = var_1;
var_2 = var_3;
}
}
lariver_defend_destructible_cover()
{
level.hescos = [];
var_0 = 6;
var_1 = 0;
for ( var_2 = 0; var_2 <= var_0; var_2++ )
{
if ( var_2 == 0 )
{
var_1++;
continue;
}
var_3 = "hesco_" + var_2;
level.hescos[var_1] = getent( var_3, "targetname" );
var_1++;
}
common_scripts\utility::array_thread( level.hescos, ::hesco_logic );
}
hesco_logic()
{
var_0 = strtok( self.model, "_" );
if ( var_0[0] == "concrete" )
{
var_1 = self.angles;
var_1 = ( 0, var_1[1], 0 );
var_2 = anglestoright( var_1 );
var_3 = var_2 * -54;
var_4 = self.origin + var_3;
}
else
var_4 = maps\deer_hunt_util::get_spot_in_front_of_ent( 54 );
self.trig = spawn( "trigger_radius", var_4, 0, 30, 128 );
}
lariver_defend_guided_missile_setup()
{
level endon( "la_river_complete" );
var_0 = level.player getplayerangles();
var_1 = anglestoforward( var_0 );
var_2 = var_1 * 10000;
var_3 = level.player.origin + var_2;
var_4 = level.player geteye();
level.missile_target = spawn( "script_model", var_3 );
level.missile_target setmodel( "tag_origin" );
level.player.laser_ent = spawn( "script_model", ( 0, 0, 0 ) );
level.player.laser_ent setmodel( "tag_laser" );
level.player.laser_ent.angles = level.player.angles;
level.player.laser_ent linktoplayerview( level.player, "tag_origin", ( 0, -30, 5 ), ( 0, 0, 0 ), 0 );
level.player thread lariver_defend_player_laser_toggle();
level.player thread laser_hint();
maps\_utility::setsaveddvar_cg_ng( "laserRadius", 1, 1.5 );
var_5 = 50000;
setsaveddvar( "laserRange", var_5 );
setsaveddvar( "laserRangePlayer", var_5 );
setsaveddvar( "LaserLightRadius", 7 );
level thread lariver_defend_missile_attractor_logic();
level thread la_river_defend_missile_dist_check();
for (;;)
{
var_6 = level.player getcurrentweapon();
if ( var_6 == "maaws" )
{
level.player setweaponammoclip( var_6, 2 );
return;
}
wait 0.25;
}
}
lariver_defend_missile_attractor_logic()
{
level endon( "la_river_complete" );
level.dummy_ent = common_scripts\utility::spawn_tag_origin();
level.missile_target.tagged_ent = level.dummy_ent;
level.is_playing_locked_on_sound = 0;
var_0 = ( 0, 0, -60 );
var_1 = 50;
var_2 = maps\_utility::getdifficulty();
switch ( var_2 )
{
case "easy":
var_1 = 60;
break;
case "medium":
var_1 = 60;
break;
case "fu":
case "hard":
var_1 = 60;
break;
}
for (;;)
{
if ( level.player.is_targeting && enemy_chopper_within_circle( var_1 ) )
{
level.missile_target.origin = level.valid_missile_target.origin + var_0;
if ( level.valid_missile_target != level.missile_target.tagged_ent )
level.missile_target.tagged_ent = level.valid_missile_target;
}
else if ( level.player.is_targeting )
{
var_3 = anglestoforward( level.player getplayerangles() );
var_4 = var_3 * 10000;
var_5 = var_3 * 250;
var_6 = bullettrace( level.player geteye() + var_5, level.player.origin + var_4, 1, level.player, 1, 0, 1 );
level.missile_target.origin = var_6["position"];
if ( isdefined( var_6["entity"] ) )
{
if ( var_6["entity"] != level.missile_target.tagged_ent )
level.missile_target.tagged_ent = var_6["entity"];
}
level.missile_target.tagged_ent = level.dummy_ent;
}
wait 0.05;
}
}
enemy_chopper_within_circle( var_0 )
{
var_1 = getdvarint( "cg_fov", 65 );
if ( isdefined( level.valid_missile_target ) )
{
if ( target_isincircle( level.valid_missile_target, level.player, var_1, var_0 ) )
return 1;
return 0;
}
return 0;
}
make_me_a_target()
{
if ( isdefined( self.is_targeted ) )
return;
self.is_targeted = 1;
target_set( self );
foreach ( var_1 in level.players )
target_hidefromplayer( self, var_1 );
}
chopper_outline_monitor()
{
return;
}
play_locked_on_sound()
{
if ( level.is_playing_locked_on_sound )
return;
level.is_playing_locked_on_sound = 1;
level.player maps\_utility::play_sound_on_entity( "laser_guided_missile_locked" );
level.is_playing_locked_on_sound = 0;
}
disable_hudoutline_on_death()
{
self waittill( "death" );
self notify( "stop_monitoring_outline" );
if ( isdefined( self ) )
self hudoutlinedisable();
}
la_river_defend_missile_dist_check()
{
level endon( "player_in_matv" );
for (;;)
{
level.player waittill( "missile_fire", var_0 );
var_0 missile_settargetent( level.missile_target );
if ( !common_scripts\utility::flag( "defend_chopp2_dead" ) )
{
var_0 thread missile_dist_internal();
level thread chopper_reacts_to_lockon();
}
}
}
chopper_reacts_to_lockon()
{
if ( !common_scripts\utility::flag( "spawn_defend_chopper2" ) )
return;
if ( !common_scripts\utility::flag( "chopper_fight_start" ) )
return;
var_0 = 70;
if ( level.chopper2 == level.missile_target.tagged_ent )
{
wait( randomfloatrange( 0.5, 1 ) );
level.chopper2 chopper_side_dodge();
}
else if ( randomint( 100 ) < var_0 )
{
wait( randomfloatrange( 0.5, 1 ) );
level.chopper2 chopper_side_dodge();
}
}
missile_dist_internal()
{
if ( !isdefined( self ) )
return;
if ( !isdefined( level.choppers ) )
return;
self endon( "death" );
var_0 = 1210000;
while ( isdefined( self ) )
{
foreach ( var_2 in level.choppers )
{
if ( isdefined( var_2 ) && distancesquared( self.origin, var_2.origin ) <= var_0 )
{
var_2 thread chopper_decoys_and_evade( self );
return;
}
}
wait 0.1;
}
}
chopper_decoys_and_evade( var_0 )
{
if ( isdefined( self.did_flares ) || self.shot_with_rpg == 0 || common_scripts\utility::flag( "defend_chopp2_dead" ) )
return;
self.did_flares = 1;
if ( isdefined( var_0 ) )
{
var_1 = var_0.origin;
thread maps\deer_hunt_util::shootflares( var_0 );
thread chopper_side_dodge();
wait 1;
playfx( common_scripts\utility::getfx( "chopper_flare_explosion" ), var_1 );
level thread common_scripts\utility::play_sound_in_space( "chopper_trophy_fire", var_1 );
if ( isdefined( var_0 ) )
var_0 delete();
}
}
lariver_defend_player_laser_toggle()
{
level endon( "player_in_matv" );
createthreatbiasgroup( "missile_player" );
thread lariver_defend_playerbias();
level.player.is_targeting = 0;
level thread lariver_ignore_player_if_in_defend_area();
for (;;)
{
self waittill( "weapon_change" );
var_0 = level.player getcurrentweapon();
if ( var_0 == "maaws" )
{
level.player laserforceon();
level.player.is_targeting = 1;
level.player disableautoreload();
continue;
}
level.player laserforceoff();
level.player setthreatbiasgroup( "allies" );
level.player.is_targeting = 0;
level.player enableautoreload();
}
}
lariver_ignore_player_if_in_defend_area()
{
level endon( "load_matv" );
var_0 = getent( "player_defend_area", "script_noteworthy" );
for (;;)
{
if ( level.player istouching( var_0 ) )
level.player setthreatbiasgroup( "missile_player" );
else
level.player setthreatbiasgroup( "allies" );
wait 1;
}
}
lariver_defend_playerbias()
{
common_scripts\utility::flag_wait( "squad_to_defend" );
setignoremegroup( "missile_player", "axis" );
}
laser_hint()
{
level endon( "defend_chopp2_dead" );
for (;;)
{
self waittill( "weapon_change" );
var_0 = level.player getcurrentweapon();
if ( var_0 == "maaws" )
{
maps\_utility::display_hint_timeout( "laser_hint", 6 );
thread periodically_display_laser_hint();
return;
}
}
}
periodically_display_laser_hint()
{
level endon( "defend_chopp2_dead" );
for (;;)
{
var_0 = 25;
wait( var_0 );
while ( maps\deer_hunt_util::player_is_using_missile_launcher() || level.player_is_stunned == 1 || level.player isreloading() )
wait 0.5;
maps\_utility::display_hint_timeout( "laser_hint", 6 );
}
}
la_river_defend_weapons_spawn()
{
if ( !isdefined( level.possible_guns ) )
return;
level.possible_guns = common_scripts\utility::array_randomize( level.possible_guns );
level.defend_weapons = [];
var_0 = common_scripts\utility::getstructarray( "defend_weapons", "targetname" );
foreach ( var_6, var_2 in var_0 )
{
if ( !isdefined( level.possible_guns[var_6] ) )
return;
var_3 = check_weapon( level.possible_guns[var_6] );
if ( isdefined( var_3 ) )
{
var_4 = "weapon_" + var_3;
var_5 = spawn( var_4, var_2.origin );
level.defend_weapons = common_scripts\utility::add_to_array( level.defend_weapons, var_3 );
}
}
}
check_weapon( var_0 )
{
var_1 = strtok( var_0, "+" );
if ( !isdefined( var_1[1] ) )
return undefined;
if ( level.defend_weapons.size == 0 )
return var_0;
else
{
foreach ( var_3 in level.defend_weapons )
{
var_4 = strtok( var_3, "+" );
if ( var_4[0] == var_1[0] )
return undefined;
}
return var_0;
}
}
lariver_defend_enemy_population()
{
maps\_utility::array_spawn_function_targetname( "defend_bridge_spawner", ::lariver_bridge_enemy_logic );
maps\_utility::array_spawn_function_noteworthy( "slide", ::lariver_defend_slide_down_river_wall );
level.close_enemy_volume = getent( "close_volume", "targetname" );
thread lariver_defend_is_player_in_defend_area();
common_scripts\utility::flag_wait_or_timeout( "player_in_defend_area", 20 );
maps\deer_hunt_util::set_flag_if_not_set( "player_in_defend_area" );
var_0 = [];
foreach ( var_3, var_2 in level.lariver_early_ai )
{
var_2 maps\_utility::stop_magic_bullet_shield();
var_0[var_3] = maps\_spawner::spawner_makerealai( var_2 );
wait 0.1;
if ( isdefined( var_0[var_3] ) )
var_0[var_3] maps\deer_hunt_util::ignore_me_ignore_all();
}
level.balcony_friendlies = maps\_utility::array_removedead( level.balcony_friendlies );
level.balcony_friendlies = common_scripts\utility::array_combine( level.balcony_friendlies, var_0 );
maps\_utility::battlechatter_on();
maps\_utility::flavorbursts_on();
thread lariver_defend_bridge_enemies();
thread lariver_defend_spawn_choppers();
common_scripts\utility::flag_wait_or_timeout( "player_killed_defend_aa72x", 25 );
common_scripts\utility::flag_set( "spawn_defend_choppers" );
common_scripts\utility::flag_set( "defend_chopp1_dead" );
common_scripts\utility::flag_set( "spawn_defend_chopper2" );
common_scripts\utility::flag_wait( "defend_chopp1_dead" );
maps\_spawner::killspawner( 200 );
while ( getaiarray( "axis" ).size > 3 )
wait 1;
common_scripts\utility::flag_set( "spawn_defend_chopper2" );
common_scripts\utility::flag_wait( "defend_chopp2_dead" );
while ( getaiarray( "axis" ).size > 0 )
wait 1;
maps\_utility::autosave_by_name( "matv_load" );
wait 3;
thread lariver_matv_load_and_go();
}
lariver_matv_load_and_go()
{
level thread lariver_matv_ride();
common_scripts\utility::flag_set( "load_matv" );
thread wall_ride_cilivians();
wait 2;
var_0 = level.team2[0];
var_0.script_startingposition = 0;
level.hesh.script_startingposition = 1;
var_0 maps\_utility::disable_ai_color();
level.hesh maps\_utility::disable_ai_color();
var_1 = getnode( "team2_standby", "targetname" );
level.team2[1] maps\_utility::disable_ai_color();
level.team2[1] maps\_utility::disable_cqbwalk();
level.team2[1].goalradius = 32;
level.team2[1] maps\_utility::enable_readystand();
level.team2[1] common_scripts\utility::delaycall( 3, ::setgoalnode, var_1 );
level.matv maps\_vehicle::vehicle_load_ai( [ var_0, level.hesh ] );
level.matv hidepart( "ramp_jnt" );
level.matv.obj_ent show();
var_2 = getnode( "riley_jeep-", "targetname" );
level.dog maps\_utility::disable_ai_color();
level.dog.goalradius = 32;
level.dog maps\_utility::delaythread( 4, ::lariver_matv_dog_nag, var_2 );
thread maps\deer_hunt_util::hesh_nag_til_flag( "player_in_matv", 10 );
player_gets_in_matv();
level.matv.obj_ent hide();
while ( level.matv.riders.size != 2 )
wait 0.5;
common_scripts\utility::flag_set( "matv_loaded" );
thread lariver_transition_to_beach();
}
lariver_matv_dog_nag( var_0 )
{
self setgoalnode( var_0 );
self waittill( "goal" );
while ( !common_scripts\utility::flag( "player_in_matv" ) )
{
maps\_utility_dogs::dog_bark();
if ( common_scripts\utility::cointoss() )
maps\_utility_dogs::dog_bark();
wait( randomintrange( 6, 9 ) );
}
}
lariver_transition_to_beach()
{
common_scripts\utility::flag_wait( "lariver_turn" );
var_0 = 1;
thread maps\deer_hunt_util::fade_out_in( "black", "fade_in_jeep_ride", undefined, var_0 );
wait( var_0 );
level.player common_scripts\utility::delaycall( 1, ::stoprumble, "vegas_drag" );
maps\_utility::transient_switch( "deer_hunt_intro_tr", "deer_hunt_beach_tr" );
common_scripts\utility::flag_set( "la_river_complete" );
getent( "hesh", "targetname" ) maps\_utility::remove_spawn_function( ::hesh_logic );
getent( "dog", "targetname" ) maps\_utility::remove_spawn_function( ::dog_logic );
maps\deer_hunt_ride::jeep_ride_setup();
}
chopper_crash_fx_cleanup()
{
level.stopped_crash_fx = [];
var_0 = level.scr_notetrack["battle_hind"][level.chopper_death_anim];
foreach ( var_2 in var_0 )
{
foreach ( var_4 in var_2 )
stop_crash_fx_in_array( var_4 );
}
}
stop_crash_fx_in_array( var_0 )
{
if ( !isdefined( var_0["selftag"] ) )
return;
var_1 = undefined;
if ( var_0["selftag"] == "tag_fx_expl_missile" || var_0["selftag"] == "tag_fx_expl_fuel" )
return;
if ( isdefined( var_0["effect"] ) )
var_1 = common_scripts\utility::getfx( var_0["effect"] );
else if ( isdefined( var_0["trace_part_for_efx"] ) )
var_1 = common_scripts\utility::getfx( var_0["trace_part_for_efx"] );
if ( !isdefined( var_1 ) )
return;
var_2 = var_0["selftag"];
iprintln( "stopping fx: " + var_1 + " on tag " + var_2 );
stopfxontag( var_1, self, var_2 );
level.stopped_crash_fx = common_scripts\utility::add_to_array( level.stopped_crash_fx, var_2 );
}
#using_animtree("player");
player_gets_in_matv()
{
var_0 = "tag_gunner";
var_1 = getstartorigin( level.matv gettagorigin( "tag_gunner" ), level.matv gettagangles( "tag_gunner" ), %dh_matv_getin_player );
level.player_rig = maps\_utility::spawn_anim_model( "player_rig", var_1 );
level.player_rig.angles = level.matv.angles;
level.player_rig hide();
level.player_rig linkto( level.matv, "tag_player" );
var_2 = maps\_utility::groundpos( var_1 + ( 0, 0, 300 ) );
var_3 = spawn( "script_origin", var_2, 0, 300, 200 );
var_4 = maps\deer_hunt_util::getactionbind( "matv_enter" );
var_3 sethintstring( var_4.hint );
var_3 makeusable();
thread matv_player_jumped_in( var_3 );
var_3 waittill( "trigger" );
var_3 sethintstring( "" );
common_scripts\utility::flag_set( "player_in_matv" );
level.player disableweapons();
level.player setstance( "stand" );
level.player allowprone( 0 );
level.player allowcrouch( 0 );
if ( isdefined( level.player.laser_ent ) )
{
level.player.laser_ent laserforceoff();
level.player.laser_ent delete();
}
level.player thread maps\_utility::play_sound_on_entity( "scn_deer_truck_plr_getin" );
level.player thread maps\_utility::play_sound_on_entity( "scn_deer_jeep_start_drive" );
maps\_utility::delaythread( 2.3, common_scripts\utility::play_sound_in_space, "scn_deer_truck_call_dog", ( -18343, 15331, -486 ) );
maps\_utility::delaythread( 2.3, common_scripts\utility::play_sound_in_space, "scn_deer_truck_dog_getin", ( -18320, 15365, -486 ) );
var_5 = getanimlength( %dh_matv_getin_player );
level.matv thread maps\_anim::anim_single_solo( level.player_rig, "matv_player_getin", var_0 );
level.player common_scripts\utility::delaycall( 0.5, ::playrumbleonentity, "damage_heavy" );
level.player common_scripts\utility::delaycall( 0.95, ::playrumbleonentity, "damage_light" );
level.player common_scripts\utility::delaycall( 1.7, ::playrumbleonentity, "damage_heavy" );
level.player playerlinktoblend( level.player_rig, "tag_player", 0.4, 0.2, 0.2 );
wait 0.5;
level.player playerlinktodelta( level.player_rig, "tag_player", 1, 40, 40, 50, 30, 0 );
level.player_rig show();
setsaveddvar( "ammocounterHide", "1" );
wait( var_5 );
level.player_rig hide();
}
matv_player_jumped_in( var_0 )
{
var_1 = 2500;
level endon( "player_in_matv" );
for (;;)
{
if ( distance2dsquared( var_0.origin, level.player.origin ) < var_1 && level.player jumpbuttonpressed() )
{
while ( !level.player isonground() )
wait 0.05;
var_0 useby( level.player );
return;
}
wait 0.05;
}
}
wall_ride_cilivians()
{
common_scripts\utility::flag_wait( "load_matv" );
var_0 = common_scripts\utility::getstructarray( "river_gate_civs", "targetname" );
var_1 = getent( "river_gate_civ", "targetname" );
level.river_drones = maps\deer_hunt_ride::spawn_ai_for_structs( var_1, var_0, 1 );
var_0 = common_scripts\utility::getstructarray( "river_gate_soldiers", "targetname" );
var_1 = getent( "river_soldier_spawner", "targetname" );
var_2 = maps\deer_hunt_ride::spawn_ai_for_structs( var_1, var_0, 1 );
level.river_drones = common_scripts\utility::array_combine( level.river_drones, var_2 );
common_scripts\utility::flag_wait( "lariver_turn" );
wait 2;
maps\_utility::array_delete( level.river_drones );
}
dog_gets_in_matv()
{
wait 2;
level.dog.animname = "dog";
level.matv maps\_anim::anim_single_solo( level.dog, "matv_enter", "tag_dog" );
level.dog linkto( level.matv, "tag_dog" );
level.matv thread maps\_anim::anim_loop_solo( level.dog, "matv_idle", "stop_loop", "tag_dog" );
}
lariver_matv_ride()
{
thread lariver_matv_open_doors();
common_scripts\utility::flag_wait( "open_gate" );
thread lariver_ride_cowbell();
wait 3.6;
level.matv vehicle_turnengineoff();
level.matv maps\_vehicle::gopath();
level.player playrumblelooponentity( "vegas_drag" );
level.matv vehicle_setspeedimmediate( 8, 2 );
wait 3;
level.matv vehicle_setspeed( 20, 5 );
}
matv_sounds()
{
level.player thread maps\_utility::play_sound_on_entity( "scn_deer_jeep_start_drive" );
}
lariver_ride_cowbell()
{
var_0 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "river_vehicles" );
var_1 = maps\_utility::array_spawn_targetname( "lariver_runners", 1 );
wait 4;
var_2 = maps\_utility::array_spawn_targetname( "river_gate_civ_runners", 1 );
common_scripts\utility::flag_wait( "la_river_complete" );
maps\_utility::array_delete( var_0 );
}
lariver_matv_open_doors()
{
thread lariver_doors_sound_setup();
common_scripts\utility::flag_wait( "open_gate" );
var_0 = [ "river_door_left", "river_door_right" ];
maps\deer_hunt_util::set_flag_if_not_set( "gate_opening" );
foreach ( var_4, var_2 in var_0 )
{
var_2 = getent( var_2, "targetname" );
if ( var_4 == 1 )
var_3 = ( 120, 0, 0 );
else
var_3 = ( -120, 0, 0 );
var_2 moveto( var_2.origin + var_3, 5.6, 2.8, 2.8 );
var_2 common_scripts\utility::delaycall( 5.6, ::connectpaths );
var_2 common_scripts\utility::delaycall( 5.6, ::disconnectpaths );
}
}
lariver_doors_sound_setup()
{
var_0 = getent( "river_door_left", "targetname" );
var_1 = getent( "river_door_right", "targetname" );
var_0 create_door_sound_ents( ( -18417, 15837, -535 ), ( -18696, 15837, -535 ) );
var_1 create_door_sound_ents( ( -18349, 15858, -537 ), ( -18057, 15858, -537 ) );
var_2 = spawn( "script_origin", ( -18371, 15820, -349 ) );
var_3 = spawn( "script_origin", ( -18372, 15733, -17 ) );
var_4 = spawn( "script_origin", ( -17721, 15733, -136 ) );
var_5 = ( -18550, 16695, -465 );
var_6 = ( -18057, 16695, -476 );
common_scripts\utility::flag_wait( "load_matv" );
wait 5;
thread lariver_doors_siren();
var_4 thread common_scripts\utility::play_loop_sound_on_entity( "scn_deer_wall_alarm1" );
common_scripts\utility::flag_wait( "matv_loaded" );
var_0.corner_sound_ent thread maps\_utility::play_sound_on_entity( "scn_deer_wall_unlock_left_corner" );
var_1.corner_sound_ent thread maps\_utility::play_sound_on_entity( "scn_deer_wall_unlock_right_corner" );
var_2 thread maps\_utility::play_sound_on_entity( "scn_deer_wall_unlock_middle" );
wait 4;
var_3 thread maps\_utility::play_sound_on_entity( "scn_deer_wall_alarm2" );
wait 1.68;
common_scripts\utility::flag_set( "open_gate" );
var_0 thread door_play_sounds( "scn_deer_wall_open_left_edge", "scn_deer_wall_open_left_corner" );
var_1 thread door_play_sounds( "scn_deer_wall_open_right_edge", "scn_deer_wall_open_right_corner" );
var_2 thread maps\_utility::play_sound_on_entity( "scn_deer_wall_open_middle" );
wait 3.15;
thread common_scripts\utility::play_sound_in_space( "scn_deer_wall_crowd_left", var_5 );
thread common_scripts\utility::play_sound_in_space( "scn_deer_wall_crowd_right", var_6 );
wait 1.5;
var_0.corner_sound_ent thread maps\_utility::play_sound_on_entity( "scn_deer_wall_stop_left" );
var_1.corner_sound_ent thread maps\_utility::play_sound_on_entity( "scn_deer_wall_stop_right" );
var_2 thread maps\_utility::play_sound_on_entity( "scn_deer_wall_stop_middle" );
wait 2;
var_2 thread maps\_utility::play_sound_on_entity( "scn_deer_wall_transition_middle" );
wait 1;
var_0.edge_sound_ent thread maps\_utility::play_sound_on_entity( "scn_deer_wall_close_stop_left" );
var_1.edge_sound_ent thread maps\_utility::play_sound_on_entity( "scn_deer_wall_close_stop_right" );
var_2 thread maps\_utility::play_sound_on_entity( "scn_deer_wall_close_stop_middle" );
var_4 notify( "stop soundscn_deer_wall_alarm1" );
}
lariver_doors_siren()
{
var_0 = [ ( -18553, 15385, -255 ), ( -18232, 15384, -255 ) ];
var_1 = getentarray( "wall_sirens", "targetname" );
var_2 = [];
var_3 = 1;
foreach ( var_6, var_5 in var_1 )
{
var_2[var_6] = common_scripts\utility::spawn_tag_origin();
var_2[var_6].origin = var_5.origin;
var_2[var_6].angles = var_5.angles;
var_2[var_6] thread siren_logic( var_3 );
var_3++;
}
}
siren_logic( var_0 )
{
wait( var_0 );
playfxontag( common_scripts\utility::getfx( "siren_red" ), self, "tag_origin" );
var_1 = randomfloatrange( 0.4, 0.6 );
while ( !common_scripts\utility::flag( "lariver_turn" ) )
{
self rotatepitch( 360, var_1 );
self waittill( "rotatedone" );
}
stopfxontag( common_scripts\utility::getfx( "siren_red" ), self, "tag_origin" );
wait 0.05;
self delete();
}
create_door_sound_ents( var_0, var_1 )
{
self.corner_sound_ent = spawn( "script_origin", var_1 );
self.edge_sound_ent = spawn( "script_origin", var_0 );
self.corner_sound_ent linkto( self );
self.edge_sound_ent linkto( self );
}
door_play_sounds( var_0, var_1 )
{
if ( isdefined( var_0 ) )
self.edge_sound_ent thread maps\_utility::play_sound_on_entity( var_0 );
if ( isdefined( var_1 ) )
self.corner_sound_ent thread maps\_utility::play_sound_on_entity( var_1 );
}
lariver_defend_is_player_in_defend_area()
{
level endon( "player_in_defend_area" );
var_0 = getent( "player_defend_area", "script_noteworthy" );
while ( !level.player istouching( var_0 ) )
wait 0.25;
common_scripts\utility::flag_set( "player_in_defend_area" );
}
lariver_defend_bridge_enemies()
{
level endon( "defend_chopp2_dead" );
common_scripts\utility::flag_wait( "player_in_defend_area" );
var_0 = level.bridge_chopper;
maps\_vehicle::gopath( var_0 );
var_0 thread make_me_a_target();
level.valid_missile_target = var_0;
var_0 thread lariver_defend_aa72x_missile_detection();
var_0 thread chopper_outline_monitor();
var_0 common_scripts\utility::waittill_any( "unloaded", "death" );
var_1 = getaiarray( "allies" );
common_scripts\utility::array_thread( var_1, maps\deer_hunt_util::ignore_me_ignore_all_off );
var_2 = 2;
level.bridge_enemies = [];
var_3 = maps\_utility::getdifficulty();
switch ( var_3 )
{
case "easy":
var_2 = 1;
break;
case "medium":
var_2 = 3;
break;
case "fu":
case "hard":
var_2 = 5;
break;
}
var_4 = getentarray( "defend_bridge_spawner", "targetname" );
for (;;)
{
level.bridge_enemies = maps\_utility::array_removedead_or_dying( level.bridge_enemies );
if ( level.bridge_enemies.size < var_2 )
{
var_5 = common_scripts\utility::random( var_4 );
var_6 = var_5 maps\_utility::spawn_ai();
if ( !maps\_utility::spawn_failed( var_6 ) )
level.bridge_enemies = common_scripts\utility::add_to_array( level.bridge_enemies, var_6 );
}
wait( randomintrange( 4, 8 ) );
}
}
lariver_defend_aa72x_missile_detection()
{
for (;;)
{
self waittill( "damage", var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 );
if ( maps\deer_hunt_util::array_is_defined( [ var_9, var_1 ] ) && var_9 == "maaws" && isplayer( var_1 ) )
{
self kill( ( 0, 0, 0 ), level.player );
common_scripts\utility::flag_set( "player_killed_defend_aa72x" );
if ( isdefined( level.chopper2 ) )
{
level.chopper2 thread make_me_a_target();
level.valid_missile_target = level.chopper2;
}
return;
}
}
}
lariver_bridge_enemy_logic()
{
maps\_utility::disable_long_death();
self.goalradius = 32;
}
lariver_defend_populate_close_area()
{
level endon( "defend_chopp1_dead" );
common_scripts\utility::flag_wait( "spawn_close_guys" );
var_0 = getentarray( "defend_left_close", "targetname" );
var_1 = getentarray( "defend_right_close", "targetname" );
var_2 = getentarray( "defend_back_flood_spawner", "targetname" );
thread maps\_utility::flood_spawn( var_2 );
wait 15;
iprintln( "slide guys" );
var_3 = level.close_enemy_volume;
if ( !player_is_on_right_incline() )
{
var_4 = var_1;
var_5 = "right_spawners";
}
else
{
var_4 = var_0;
var_5 = "left_spawners";
}
for (;;)
{
var_6 = var_3 maps\_utility::get_ai_touching_volume( "axis" );
if ( var_6.size < 5 )
{
var_7 = common_scripts\utility::random( var_4 );
var_7.count = 1;
var_8 = var_7 maps\_utility::spawn_ai();
if ( !maps\_utility::spawn_failed( var_8 ) )
{
if ( var_5 == "right_spawners" && !player_is_on_left_incline() )
{
var_4 = var_0;
var_5 = "left_spawners";
}
else if ( var_5 == "left_spawners" && !player_is_on_right_incline() )
{
var_4 = var_1;
var_5 = "right_spawners";
}
}
}
wait( randomfloatrange( 1, 4 ) );
}
}
player_is_on_right_incline()
{
return level.player istouching( getent( "defend_right_incline", "targetname" ) );
}
player_is_on_left_incline()
{
return level.player istouching( getent( "defend_left_incline", "targetname" ) );
}
lariver_defend_enemy_global_logic()
{
self.grenadeammo = 0;
}
lariver_defend_slide_down_river_wall()
{
thread lariver_defend_enemy_global_logic();
lariver_slide_anim( self, common_scripts\utility::getstruct( self.target, "targetname" ) );
self setgoalvolumeauto( level.close_enemy_volume );
}
lariver_enemies()
{
maps\_utility::array_spawn_function_noteworthy( "lariver_enemies", ::lariver_enemies_global_logic );
maps\_utility::array_spawn_function_noteworthy( "lariver_enemies", maps\deer_hunt_color_system::enemy_color_volume_logic );
maps\_utility::array_spawn_function_targetname( "chopper_guys", ::lariver_enemies_global_logic );
maps\_utility::array_spawn_function_targetname( "lariver_frontline", ::lariver_frontline_logic );
common_scripts\utility::flag_wait( "pipe_halfway" );
common_scripts\utility::exploder( 2 );
maps\_utility::array_spawn_targetname( "lariver_frontline", 1 );
wait 0.5;
level.chopper = maps\_utility::get_vehicle( "lariver_enemy_chopper", "targetname" );
level.chopper thread lariver_enemy_chopper_logic();
level thread kill_bridge_guys();
level thread lariver_bridge_rappel_enemies();
level thread lariver_bridge_drones();
var_0 = getentarray( "lariver_flood_filler", "targetname" );
foreach ( var_2 in var_0 )
var_2.count = 10;
maps\_utility::flood_spawn( var_0 );
common_scripts\utility::flag_wait( "la_river_complete" );
}
lariver_assign_pilot_func()
{
self endon( "death" );
self allowedstances( "crouch" );
common_scripts\utility::flag_wait( "player_killed_defend_aa72x" );
wait( randomfloatrange( 0.2, 1 ) );
if ( !isalive( self ) )
return;
self startragdoll();
}
lariver_stop_pilot_stand_on_death()
{
self.allowdeath = 1;
self.a.nodeath = 1;
self.ragdoll_immediate = 1;
self.forceragdollimmediate = 1;
}
lariver_frontline_logic()
{
self endon( "death" );
var_0 = getnode( self.target, "targetname" );
var_1 = getent( "enemy_line_2", "targetname" );
self.ignoreall = 1;
self.ignoreme = 1;
self.script_forcegoal = 1;
common_scripts\utility::flag_wait( "pipe_exit" );
self setgoalvolumeauto( var_1 );
self.ignoreall = 0;
if ( randomint( 100 ) < 20 )
{
wait( randomintrange( 1, 3 ) );
self.goalradius = 32;
self setgoalnode( var_0 );
wait 5;
self setgoalvolumeauto( var_1 );
self.ignoreme = 0;
}
}
lariver_bridge_drones()
{
var_0 = getentarray( "bridge_drones", "targetname" );
level endon( "color_line_2" );
for (;;)
{
var_1 = maps\_utility::dronespawn( common_scripts\utility::random( var_0 ) );
wait( randomintrange( 3, 6 ) );
}
}
#using_animtree("generic_human");
lariver_bridge_rappel_enemies()
{
common_scripts\utility::flag_wait( "player_under_bridge" );
while ( level.player.origin[2] > -410 )
wait 1;
var_0 = common_scripts\utility::getstructarray( "rappel_spot", "targetname" );
var_1 = common_scripts\utility::getclosest( level.player.origin, var_0 );
var_2 = maps\_utility::groundpos( var_1.origin ) + ( 0, 0, 810 );
var_3 = var_1.angles;
var_4 = ( 0, 0, 57 );
var_5 = ( 0, -20, -12 );
var_6 = ( 0, 90, 0 );
var_7 = spawn( "script_model", var_2 );
var_7.angles = var_1.angles + ( 0, 0, 90 );
var_7 setmodel( "tag_origin" );
var_8 = common_scripts\utility::random( getentarray( "defend_bridge_spawner", "targetname" ) );
var_8.count = 100;
var_9 = var_8 maps\_utility::spawn_ai( 1 );
level.rappel_guy = var_9;
var_9.ignoreme = 1;
var_9 thread maps\_utility::magic_bullet_shield();
var_9 thread rappel_guy_internal();
var_9 linkto( var_7, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
var_9.team = "axis";
var_10 = spawn( "script_model", var_2 );
var_10 setmodel( "fastrope_80ft_ri" );
var_10 useanimtree( #animtree );
var_10 linkto( var_7, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
var_11 = 0.5 / getanimlength( %bh_1_drop );
var_12 = 4 / getanimlength( %bh_rope_drop_ri );
var_9 animscripted( "start_rappel", var_7.origin + var_5, var_6, %bh_1_drop );
var_10 animscripted( "start_rappel", var_7.origin + var_4, var_7.angles, %bh_rope_drop_ri );
wait 0.05;
var_9 setanimtime( %bh_1_drop, var_12 );
var_10 setanimtime( %bh_rope_drop_ri, var_11 );
wait 0.05;
var_10 setflaggedanim( "single anim", %bh_rope_drop_ri, 1, 0, 2.8 );
wait 4;
if ( isdefined( var_9 ) )
{
var_9.ignoreme = 0;
var_9 unlink();
var_9.goalradius = 800;
var_9 notify( "stopScript" );
var_9 findbestcovernode();
if ( isdefined( var_9.magic_bullet_shield ) )
var_9 maps\_utility::stop_magic_bullet_shield();
}
}
rappel_guy_internal()
{
self endon( "stopScript" );
for (;;)
{
self waittill( "damage", var_0, var_1 );
if ( isdefined( var_1 ) )
{
if ( var_1 == level.player )
{
if ( isdefined( self.magic_bullet_shield ) )
maps\_utility::stop_magic_bullet_shield();
self stopanimscripted();
maps\_utility::die();
self startragdoll();
}
}
}
}
lariver_enemies_global_logic()
{
self endon( "death" );
maps\deer_hunt_util::grenades_by_difficulty();
self.script_forcegoal = 1;
maps\_utility::set_ai_bcvoice( "shadowcompany" );
self waittill( "jumpedout" );
wait 2;
var_0 = getnode( self.target, "targetname" );
if ( isdefined( var_0 ) )
{
self.goalradius = 32;
self setgoalnode( var_0 );
}
}
lariver_backline_guys_logic()
{
self.grenadeammo = 0;
self setthreatbiasgroup( "final_pos_enemies" );
thread maps\deer_hunt_util::only_take_damage_from_player( "player_under_bridge" );
while ( !isdefined( level.drone_targets ) )
wait 0.25;
wait 2;
self setentitytarget( common_scripts\utility::random( level.drone_targets ) );
common_scripts\utility::flag_wait( "player_under_bridge" );
self endon( "death" );
self endon( "entitydeleted" );
wait 6;
if ( !isdefined( self ) )
return;
self setthreatbiasgroup( "axis" );
self clearentitytarget();
var_0 = getent( "enemy_line_4", "targetname" );
self setgoalvolumeauto( var_0 );
if ( isdefined( self.magic_bullet_shield ) )
thread maps\_utility::stop_magic_bullet_shield();
}
lariver_friendly_setup()
{
maps\_utility::battlechatter_on( "allies" );
maps\_utility::array_spawn_function_targetname( "fodder", ::lariver_fodder_friendly_logic );
maps\_utility::array_spawn_targetname( "fodder", 1 );
}
lariver_fodder_friendly_logic()
{
self endon( "death" );
self.baseaccuracy = 0.1;
self.dropweapon = 0;
thread maps\_utility::magic_bullet_shield();
self.script_forcegoal = 1;
self setgoalnode( getnode( self.target, "targetname" ) );
common_scripts\utility::flag_wait( "pipe_exit" );
wait( randomfloatrange( 0.6, 1.4 ) );
maps\_utility::stop_magic_bullet_shield();
maps\deer_hunt_util::kill_me_from_closest_enemy();
}
lariver_balcony_friendly_logic( var_0 )
{
thread maps\_utility::magic_bullet_shield();
self.grenadeammo = 0;
if ( !isdefined( level.drone_targets ) )
level.drone_targets = [];
var_1 = spawn( "script_origin", self.origin + ( 0, 0, 85 ) );
var_1 linkto( self );
level.drone_targets = common_scripts\utility::add_to_array( level.drone_targets, var_1 );
}
lariver_rivertop_friendly_logic()
{
self.grenadeammo = 0;
if ( randomint( 100 ) < 33 )
self laserforceon();
self.dontevershoot = 1;
thread maps\_utility::magic_bullet_shield();
wait 6;
self.dontevershoot = undefined;
self.baseaccuracy = 3;
}
lariver_enemy_chopper_logic()
{
self endon( "death" );
self.preferred_crash_style = 1;
wait 2;
self notify( "stop_kicking_up_dust" );
self waittill( "unloaded" );
wait 1.5;
common_scripts\utility::array_thread( self.riders, ::lariver_chopper_passanger_logic );
maps\_utility::delaythread( 2, maps\_vehicle::aircraft_wash );
self waittill( "player_attacked_riders" );
self vehicle_setspeed( 50, 10 );
}
lariver_chopper_evade()
{
var_0 = self.currentnode.origin;
self.currentnode.origin = self.currentnode.origin + ( 0, 0, 200 );
wait 5;
self.currentnode.origin = self.currentnode.origin - ( 0, 0, 200 );
}
lariver_chopper_passanger_logic()
{
self waittill( "death", var_0 );
if ( !isdefined( self.ridingvehicle ) )
return;
if ( isdefined( var_0 ) )
{
if ( isplayer( var_0 ) )
self.ridingvehicle notify( "player_attacked_riders" );
}
}
kill_bridge_guys()
{
common_scripts\utility::flag_wait( "player_under_bridge" );
while ( level.player.origin[2] > -410 )
wait 1;
foreach ( var_1 in getaiarray( "axis" ) )
{
if ( isdefined( level.rappel_guy ) )
{
if ( var_1 == level.rappel_guy )
continue;
}
if ( var_1.origin[2] > -340 )
var_1 maps\_utility::die();
}
}
lariver_team2_leader_logic()
{
thread maps\_utility::magic_bullet_shield();
lariver_team2_logic();
}
lariver_team2_logic()
{
self.flavorbursts = 0;
self.animname = "generic";
maps\_utility::set_force_color( "o" );
maps\_utility::enable_ai_color();
maps\_utility::set_ai_bcvoice( "american" );
self.grenadeammo = 0;
maps\deer_hunt_util::ignore_me_ignore_all();
maps\_utility::enable_cqbwalk();
thread maps\_utility::magic_bullet_shield();
}
lariver_slide_anim( var_0, var_1 )
{
var_0 endon( "death" );
if ( common_scripts\utility::cointoss() )
var_2 = "la_river_slide_1";
else
var_2 = "la_river_slide_2";
var_0.allowdeath = 1;
self.a.nodeath = 1;
var_0.ragdoll_immediate = 1;
var_0.animname = "generic";
wait( randomfloatrange( 0.5, 1.5 ) );
var_1 thread maps\_anim::anim_single_solo( var_0, var_2 );
wait 0.05;
maps\_anim::anim_set_rate_single( var_0, var_2, 1.4 );
var_0.ragdoll_immediate = undefined;
}