// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool jeep_ride_setup() { common_scripts\utility::flag_clear( "introscreen_complete" ); maps\_utility::delaythread( 0.25, maps\_utility::music_play, "mus_deer_jeep_ride" ); var_0 = [ &"DEER_HUNT_JEEP_INTROLINE_1", &"DEER_HUNT_JEEP_INTROLINE_2" ]; thread display_stylized_message(); level.player thread maps\_utility::play_sound_on_entity( "scn_deer_jeep_drive_stop" ); if ( level.start_point == "ride" ) thread maps\deer_hunt_util::fade_out_in( "black", "fade_in_jeep_ride" ); clean_up(); wait 1; thread setup_gate_ai(); thread spawn_and_put_player_in_jeep(); thread spawn_friendlies_and_put_in_jeep(); thread scripted_vehicles(); thread setup_house(); thread ambient_a10s(); thread food_truck(); thread ambient_road_runners(); } display_stylized_message() { wait 1; var_0 = [ &"DEER_HUNT_JEEP_INTROLINE_1", &"DEER_HUNT_JEEP_INTROLINE_2" ]; maps\_utility::stylized_center_text( var_0, 4.5 ); common_scripts\utility::flag_set( "jeep_ride_message_displayed" ); common_scripts\utility::flag_wait( "player_in_jeep" ); common_scripts\utility::flag_set( "fade_in_jeep_ride" ); maps\_utility::autosave_by_name( "jeep_ride_start" ); } #using_animtree("generic_human"); init_hesh_house_animset() { common_scripts\utility::flag_wait( "deer_hunt_beach_tr_loaded" ); var_0 = []; var_0["run"]["straight"] = %dh_hesh_gun_walk; var_0["walk"]["straight"] = %dh_hesh_gun_walk; var_0["run"]["move_f"] = %dh_hesh_gun_walk; var_0["walk"]["move_f"] = %dh_hesh_gun_walk; var_0["run"]["stairs_up_in"] = %dh_hesh_stairs_up_in; var_0["walk"]["stairs_up_out"] = %dh_hesh_stairs_up_out; var_0["run"]["stairs_up_out"] = %dh_hesh_stairs_up_out; var_0["walk"]["stairs_up_in"] = %dh_hesh_stairs_up_in; var_0["run"]["stairs_up"] = %dh_hesh_stairs_up; var_0["walk"]["stairs_up"] = %dh_hesh_stairs_up; maps\_utility::register_archetype( "hesh_house", var_0 ); } init_elias_house_animset() { common_scripts\utility::flag_wait( "deer_hunt_beach_tr_loaded" ); var_0 = []; var_0["run"]["straight"] = %dh_elias_walk; var_0["walk"]["straight"] = %dh_elias_walk; var_0["run"]["move_f"] = %dh_elias_walk; var_0["walk"]["move_f"] = %dh_elias_walk; var_0["run"]["stairs_up_in"] = %dh_elias_stairs_up_in; var_0["walk"]["stairs_up_out"] = %dh_elias_stairs_up_out; var_0["run"]["stairs_up_out"] = %dh_elias_stairs_up_out; var_0["walk"]["stairs_up_in"] = %dh_elias_stairs_up_in; var_0["run"]["stairs_up"] = %dh_elias_stairs_up; var_0["walk"]["stairs_up"] = %dh_elias_stairs_up; var_0["idle"]["stand"][0] = [ %unarmed_cowerstand_idle ]; var_0["idle_weights"]["stand"][0] = [ 1 ]; var_0["cover_trans"]["exposed"][1] = %unarmed_cowerstand_idle; var_0["cover_trans"]["exposed"][2] = %unarmed_cowerstand_idle; var_0["cover_trans"]["exposed"][3] = %unarmed_cowerstand_idle; var_0["cover_trans"]["exposed"][4] = %unarmed_cowerstand_idle; var_0["cover_trans"]["exposed"][5] = %unarmed_cowerstand_idle; var_0["cover_trans"]["exposed"][6] = %unarmed_cowerstand_idle; var_0["cover_trans"]["exposed"][7] = %unarmed_cowerstand_idle; var_0["cover_trans"]["exposed"][8] = %unarmed_cowerstand_idle; var_0["cover_trans"]["exposed"][9] = %unarmed_cowerstand_idle; maps\_utility::register_archetype( "elias_house", var_0 ); } food_truck() { level endon( "player_in_house" ); common_scripts\utility::flag_wait( "gate_clear" ); var_0 = common_scripts\utility::getstruct( "food_truck_ent", "targetname" ); var_1 = maps\_utility::spawn_targetname( "food_truck_guy", 1 ); var_1.animname = "generic"; var_2 = var_1 thread maps\deer_hunt_util::spawn_model_and_linkto_me( "accessories_sack_coffee_animated", "tag_inhand" ); var_0 thread maps\_anim::anim_loop_solo( var_1, "dh_food_server", "player_in_house" ); var_3 = getanimlength( %dh_food_server ); for (;;) { var_1 waittill( "stop_sequencing_notetracks" ); wait 2; var_2 show(); wait 3.8; var_2 hide(); } } ambient_a10s() { var_0 = getvehiclenodearray( "boom", "script_noteworthy" ); common_scripts\utility::array_thread( var_0, vehicle_scripts\_a10_warthog::plane_sound_node ); level endon( "player_in_house" ); common_scripts\utility::flag_wait( "gate_clear" ); var_1 = maps\_utility::getvehiclespawnerarray( "ambient_10" ); foreach ( var_3 in var_1 ) { var_4 = var_3 maps\_vehicle::spawn_vehicle_and_gopath(); var_4 vehicle_setspeedimmediate( 350, 100 ); wait( randomfloatrange( 1, 2.5 ) ); } } ai_debug() { } clean_up( var_0 ) { if ( !isdefined( var_0 ) ) var_0 = getaiarray(); foreach ( var_2 in var_0 ) var_2 thorough_delete(); } is_hero_ai( var_0 ) { if ( isdefined( var_0 ) ) { if ( self == var_0 ) return 1; } return 0; } thorough_delete() { if ( is_hero_ai( level.hesh ) || is_hero_ai( level.elias ) || is_hero_ai( level.dog ) || is_hero_ai( level.brian ) ) return; if ( isdefined( self.magic_bullet_shield ) ) maps\_utility::stop_magic_bullet_shield(); self notify( "deleted" ); self notify( "death" ); self delete(); } spawn_and_put_player_in_jeep() { level.player disableweapons(); level.player freezecontrols( 1 ); level.player allowcrouch( 0 ); level.player allowprone( 0 ); var_0 = ( 0, 0, 0 ); var_1 = "matv"; level.jeep = maps\_vehicle::spawn_vehicle_from_targetname( var_1 ); level.jeep vehicle_turnengineoff(); level.jeep thread jeep_speed_control(); level.player.linker = level.player common_scripts\utility::spawn_tag_origin(); var_2 = level.player.linker; var_3 = undefined; if ( level.jeep.classname == "script_vehicle_matv_noturret" ) { var_3 = "tag_player"; var_0 = ( 5, 0, 15 ); } else var_3 = "tag_player2"; var_2.origin = level.jeep gettagorigin( var_3 ); var_2.angles = level.jeep gettagangles( var_3 ); if ( level.player islinked() ) level.player unlink(); var_2 linkto( level.jeep, var_3, var_0, ( 0, 0, 0 ) ); level.player setorigin( var_2.origin ); level.player setplayerangles( var_2.angles ); level.player playerlinktodelta( var_2, "tag_origin", 1, 60, 60, 50, 30, 0 ); common_scripts\utility::flag_wait( "jeep_ai_spawned" ); common_scripts\utility::flag_set( "player_in_jeep" ); wait 2.5; level.jeep maps\_vehicle::gopath(); level.player playrumblelooponentity( "vegas_drag" ); level.player freezecontrols( 0 ); level thread jeep_exit_logic( var_3 ); maps\_utility::delaythread( 1, ::gate_wallah ); } spawn_friendlies_and_put_in_jeep() { getent( "hesh", "targetname" ).count = 1; getent( "dog", "targetname" ).count = 1; level.hesh = maps\_utility::spawn_targetname( "hesh", 1 ); level.dog = maps\_utility::spawn_targetname( "dog", 1 ); level.dog.name = "Riley"; level.dog.goalradius = 32; level.dog thread maps\_utility::magic_bullet_shield(); level.driver = maps\_utility::spawn_targetname( "driver", 1 ); level.driver.name = "Cpl. Davis"; level.squad = [ level.hesh, level.dog, level.driver ]; while ( !isdefined( level.jeep ) ) wait 0.05; level.driver.script_startingposition = 0; level.jeep.dontunloadonend = 1; level.hesh.script_startingposition = 1; level.jeep maps\_vehicle_aianim::guy_enter( level.hesh ); level.jeep maps\_vehicle_aianim::guy_enter( level.driver ); level.dog.animname = "dog"; level.dog forceteleport( level.jeep.origin, level.jeep.angles, 100000 ); level.jeep thread maps\_anim::anim_loop_solo( level.dog, "matv_idle", "stop_loop", "tag_dog" ); wait 0.1; level.dog linkto( level.jeep, "tag_dog" ); common_scripts\utility::flag_set( "friendlies_in_jeep" ); level thread ride_dog_bark(); var_0 = ( 26444, 8072, -184 ); var_1 = ( 0, 312.4, 0 ); level.jeep waittill( "reached_end_node" ); common_scripts\utility::flag_set( "jeep_arrived" ); level.jeep notify( "stop_loop" ); level.player stoprumble( "vegas_drag" ); level.jeep thread maps\_anim::anim_single_solo( level.dog, "matv_exit", "tag_dog" ); level.hesh delete(); wait 2; var_2 = getent( "hesh", "targetname" ); var_2.count = 10; level.hesh = maps\_utility::spawn_targetname( "hesh", 1 ); level.hesh maps\_utility::set_force_color( "r" ); level.hesh maps\_utility::enable_ai_color(); level.hesh forceteleport( var_0, var_1, 100000 ); var_0 = ( 26415, 8024, -185 ); if ( level.dog islinked() ) { level.dog stopanimscripted(); level.dog unlink(); } var_3 = maps\_utility::groundpos( var_0 ); level.dog forceteleport( var_3 ); level.hesh thread hesh_navigation_logic(); } ride_dog_bark() { common_scripts\utility::flag_wait( "gate_clear" ); wait 4; common_scripts\utility::play_sound_in_space( "deerhunt_us2_heyriley", ( 26053, 9496, -145 ) ); level.dog maps\_utility_dogs::dog_bark(); if ( common_scripts\utility::cointoss() ) level.dog maps\_utility_dogs::dog_bark(); wait 3; level thread common_scripts\utility::play_sound_in_space( "deerhunt_us2_charliecompanyloadup", ( 26049, 8336, -159 ) ); } dog_exits_jeep() { var_0 = ( 26432.5, 8072.2, -145 ); if ( level.dog islinked() ) { level.dog unlink(); level.dog stopanimscripted(); } var_1 = maps\_utility::groundpos( var_0 ); level.dog forceteleport( var_1 ); } hesh_navigation_logic() { self.goalradius = 60; common_scripts\utility::flag_wait( "player_exited_jeep" ); maps\_utility::set_archetype( "hesh_house" ); } house_vo() { var_0 = [ "deerhunt_hsh_dad", "deerhunt_els_iheardaboutthe", "deerhunt_hsh_always", "deerhunt_els_hehwalkwithme" ]; var_1 = [ "deerhunt_hsh_dadtheywereexecuting", "deerhunt_els_theyrelookingforother", "deerhunt_els_sotheyroundup", "deerhunt_els_letsstepoutside", "deerhunt_hsh_sowhatdoyou" ]; var_2 = [ "deerhunt_els_yknowineverwanted", "deerhunt_els_hellyouusedto", "deerhunt_hsh_youtrainedusfor", "deerhunt_els_itrainedyouto", "deerhunt_hsh_isthereadifference" ]; var_3 = [ "deerhunt_els_ineedyouboys", "deerhunt_hsh_waitwherearewe", "deerhunt_els_home" ]; while ( !isdefined( level.elias ) ) wait 0.1; while ( !isdefined( level.hesh ) ) wait 0.1; common_scripts\utility::flag_wait( "player_exited_jeep" ); level.hesh thread house_nav_logic(); level.elias thread house_nav_logic(); wait 2; maps\deer_hunt_util::hesh_line( "deerhunt_hsh_rileystay" ); wait 4; maps\deer_hunt_util::hesh_line( "deerhunt_hsh_cmonletsgofind" ); common_scripts\utility::flag_wait( "2nd_floor_start" ); thread house_vo_wallah(); common_scripts\utility::flag_wait( "2nd_floor_end" ); maps\deer_hunt_util::convo_generator( var_1 ); wait 1.5; maps\deer_hunt_util::hesh_line( "deerhunt_hsh_dad_2" ); } house_vo_wallah() { var_0 = [ "deerhunt_us1_conv1_1", "deerhunt_us2_conv1_2", "deerhunt_us1_conv1_3", "deerhunt_us2_conv1_4", "deerhunt_us1_conv1_5" ]; var_1 = [ "deerhunt_us1_conv2_1", "deerhunt_us2_conv2_2", "deerhunt_us1_conv2_3" ]; var_2 = [ "deerhunt_us1_conv3_1", "deerhunt_us2_conv3_2" ]; var_3 = ( 26542, 7791, -13 ); var_4 = ( 26542, 7870, -15 ); thread house_vo_radio_wallah(); wallah_convo( var_0, var_3, var_4 ); wallah_convo( var_1, var_3, var_4 ); wallah_convo( var_2, var_3, var_4 ); } house_vo_radio_wallah() { var_0 = [ "deerhunt_us1_allfobsalongthe", "deerhunt_us2_neworleansclear", "deerhunt_us3_tusconclear", "deerhunt_us1_confirmsitreponall" ]; maps\_utility::delaythread( 2, ::wallah_convo, var_0, ( 26779, 7821, -5 ) ); var_1 = [ "deerhunt_us3_yeahdidyouhear", "deerhunt_us2_therewasanotherattack", "deerhunt_us2_davidsonwastellingme", "deerhunt_us1_sowhosthatleave", "deerhunt_us3_idontknowbut", "deerhunt_us1_soyouthinkthats", "deerhunt_us1_thentheymovein" ]; var_2 = ( 26818, 8008, 12 ); var_3 = ( 26780, 7984, 12 ); } wallah_convo( var_0, var_1, var_2 ) { var_3 = var_1; foreach ( var_5 in var_0 ) { common_scripts\utility::play_sound_in_space( var_5, var_3 ); maps\deer_hunt_util::vo_wait(); if ( isdefined( var_2 ) ) { if ( var_3 == var_1 ) { var_3 = var_2; continue; } var_3 = var_1; } } } house_nav_logic() { maps\_utility::disable_cqbwalk(); maps\_utility::disable_arrivals(); maps\_utility::disable_exits(); maps\_utility::disable_turnanims(); maps\deer_hunt_util::disable_twitches(); self.goalradius = 32; } dog_navigation_logic() { var_0 = 80; var_1 = var_0 * 0.75; self.goalradius = var_0; self.animname = "generic"; } jeep_exit_logic( var_0 ) { level.jeep waittill( "reached_end_node" ); level.player allowmelee( 0 ); level.player laserforceoff(); level.player_rig = maps\_utility::spawn_anim_model( "player_rig", level.jeep.origin ); level.player_rig.angles = level.jeep.angles; level.player unlink(); level.player thread maps\_utility::play_sound_on_entity( "scn_deerhunt_plyr_jeep_exit_foley" ); level.jeep thread maps\_anim::anim_single_solo( level.player_rig, "intro_jeep_exit_player", "tag_gunner" ); level.player playerlinktoblend( level.player_rig, "tag_player", 0.6, 0.2, 0.4 ); level.player common_scripts\utility::delaycall( 0.5, ::playrumbleonentity, "damage_light" ); level.player common_scripts\utility::delaycall( 2, ::playrumbleonentity, "damage_light" ); level.player common_scripts\utility::delaycall( 3, ::playrumbleonentity, "damage_heavy" ); level.jeep waittill( "intro_jeep_exit_player" ); level.player_rig hide(); level.player unlink(); level.player_rig delete(); level.player takeallweapons(); level.player giveweapon( "noweapon_deer_hunt" ); level.player enableweapons(); level.player allowprone( 1 ); level.player allowcrouch( 1 ); level.player switchtoweapon( "noweapon_deer_hunt" ); common_scripts\utility::flag_set( "player_exited_jeep" ); maps\_utility::autosave_by_name( "elias_house" ); } ambient_road_runners() { level endon( "player_in_house" ); common_scripts\utility::flag_wait( "player_exited_jeep" ); var_0 = getentarray( "road_runners", "targetname" ); var_0 = common_scripts\utility::array_randomize( var_0 ); level.current_runners = []; for (;;) { foreach ( var_2 in var_0 ) { if ( level.current_runners.size < 5 ) { var_2.count = 1; var_3 = var_2 maps\_utility::spawn_ai( 1 ); var_3.goalradius = 32; level.current_runners = common_scripts\utility::add_to_array( level.current_runners, var_3 ); var_3 thread delete_on_goal(); } wait( randomintrange( 3, 6 ) ); level.current_runners = maps\_utility::array_removedead_or_dying( level.current_runners ); } } } delete_on_goal() { self endon( "death" ); self waittill( "goal" ); thorough_delete(); } jeep_speed_control() { self vehicle_setspeed( 10, 10 ); } setup_gate_ai() { maps\_utility::array_spawn_function_targetname( "patrol_jog_guys", ::patrol_jog_guys_logic ); var_0 = maps\_utility::array_spawn_targetname( "jeep_patroller", 1 ); var_1 = maps\_utility::array_spawn_targetname( "road_guys", 1 ); thread maps\_utility::array_spawn_targetname( "patrol_jog_guys", 1 ); var_2 = getent( "gate_spawner", "targetname" ); var_3 = common_scripts\utility::getstructarray( "jeep_anims", "targetname" ); spawn_ai_for_structs( var_2, var_3, 1 ); var_2 = getent( "gate_civ", "targetname" ); var_3 = common_scripts\utility::getstructarray( "jeep_anims_civ", "targetname" ); spawn_ai_for_structs( var_2, var_3, 1 ); common_scripts\utility::flag_set( "jeep_ai_spawned" ); var_4 = getent( "gate_entrance", "targetname" ); var_5 = var_4 maps\_utility::get_drones_touching_volume(); var_6 = var_4 maps\_utility::get_ai_touching_volume(); var_7 = common_scripts\utility::array_combine( var_5, var_6 ); foreach ( var_9 in var_7 ) { if ( !maps\_utility::is_in_array( level.squad, var_9 ) ) var_9 thread delete_when_behind_player(); } common_scripts\utility::flag_wait( "gate_clear" ); var_2 = getent( "garage_spawner", "targetname" ); var_3 = common_scripts\utility::getstructarray( "after_gate", "targetname" ); spawn_ai_for_structs( var_2, var_3, 1 ); maps\_utility::spawn_targetname( "garage_standing_guy", 1 ); thread maps\_utility::delaythread( 1, ::spawn_stair_runner ); } gate_wallah() { var_0 = [ "deerhunt_us1_attentionduetorecent", "deerhunt_us1_againallsupplyrations" ]; var_1 = ( 25560, 11039, -29 ); maps\_utility::delaythread( 3, ::wallah_convo, var_0, var_1 ); wait 1; var_2 = [ "deerhunt_us1_thisareaisrestricted", "deerhunt_civ2_letusinman", "deerhunt_us1_ialreadytoldyou" ]; var_3 = ( 25336, 10555, -184 ); var_4 = ( 25184, 10594, -190 ); thread wallah_convo( var_2, var_3, var_4 ); common_scripts\utility::flag_wait( "jeep_arrived" ); var_1 = ( 26316.5, 6848.5, -13 ); wallah_convo( var_0, var_1 ); } spawn_stair_runner() { var_0 = maps\_utility::spawn_targetname( "stair_runner", 1 ); if ( !maps\_utility::spawn_failed( var_0 ) ) { var_0.goalradius = 24; var_1 = common_scripts\utility::getstruct( var_0.target, "targetname" ); var_0 thread maps\_utility::follow_path_and_animate( var_1, 100000 ); } } delete_when_behind_player() { while ( isdefined( self ) ) { if ( maps\deer_hunt_util::is_behind_player() ) thorough_delete(); wait 1; } } spawn_ai_for_structs( var_0, var_1, var_2, var_3 ) { var_4 = []; foreach ( var_12, var_6 in var_1 ) { var_7 = strtok( var_6.script_parameters, " " ); if ( !isdefined( var_6.angles ) ) var_6.angles = ( 0, 0, 0 ); foreach ( var_9 in var_7 ) { var_0.count = 1; if ( isdefined( var_2 ) ) { var_10 = maps\_utility::dronespawn( var_0 ); var_10.targetname = var_0.targetname; var_10.team = "allies"; if ( !isdefined( var_3 ) ) var_10.dontdonotetracks = 1; if ( isdefined( var_0.script_patroller ) ) var_10.runanim = %patrol_bored_patrolwalk; } else var_10 = var_0 stalingradspawn(); wait 0.05; var_10 thread maps\_utility::magic_bullet_shield( 1 ); var_10 thread play_anim_off_me( var_6, var_9 ); var_4[var_12] = var_10; } } return var_4; } play_anim_off_me( var_0, var_1 ) { self endon( "deleted" ); self endon( "death" ); if ( isdefined( var_0.script_noteworthy ) ) { if ( var_0.script_noteworthy == "gun_hide" ) maps\_utility::gun_remove(); } self.animname = "generic"; if ( isdefined( var_0.script_index ) ) { var_2 = getstartorigin( var_0.origin, var_0.angles, maps\_utility::getanim( var_1 ) ); var_3 = getstartangles( var_0.origin, var_0.angles, maps\_utility::getanim( var_1 ) ); if ( issentient( self ) ) { self forceteleport( var_2, var_3, 10000 ); self.goalradius = 15; self setgoalpos( var_2 ); } else { self.origin = var_2; self.angles = var_2; } thread maps\_utility::notify_delay( "start_scene", var_0.script_index ); self waittill( "start_scene" ); } if ( isarray( level.scr_anim[self.animname][var_1] ) ) var_0 maps\_anim::anim_loop_solo( self, var_1 ); else var_0 thread maps\_anim::anim_single_solo( self, var_1 ); if ( isdefined( var_0.script_delay ) ) { wait 0.05; var_4 = var_0.script_delay; self setanimtime( maps\_utility::getanim( var_1 ), var_4 ); } var_0 waittill( var_1 ); if ( var_0 maps\deer_hunt_util::has_script_noteworthy( "delete_on_end" ) ) { thorough_delete(); return; } if ( !issentient( self ) ) return; if ( !isdefined( self.target ) ) { self.goalradius = 32; self setgoalpos( self.origin ); } } patrol_jog_guys_logic() { self endon( "deleted" ); self.animname = "generic"; var_0 = "run_gun_up"; maps\_utility::set_run_anim( var_0 ); var_1 = common_scripts\utility::getstruct( self.target, "targetname" ); thread maps\_utility::follow_path_and_animate( var_1, 100000 ); } custom_flavor_bursts() { var_0 = 3; var_1 = 800; while ( !isdefined( level.squad ) ) wait 0.05; maps\_utility::battlechatter_off( "allies" ); maps\_utility::flavorbursts_off( "allies" ); for (;;) { var_2 = getaiarray( "allies" ); var_3 = common_scripts\utility::get_array_of_closest( level.player.origin, var_2, level.squad, var_0, var_1 ); common_scripts\utility::array_thread( var_3, ::custom_flavor_burst_on_me ); wait 6; } } custom_flavor_burst_on_me() { self endon( "death" ); self endon( "deleted" ); if ( !isdefined( level.custom_flavorburst_ents ) ) level.custom_flavorburst_ents = []; wait( randomfloatrange( 0.5, 2 ) ); if ( isdefined( self.sound_ent ) ) self.sound_ent notify( "sounddone" ); var_0 = self.voice; var_1 = animscripts\battlechatter::getflavorburstid( self, var_0 ); var_2 = animscripts\battlechatter::getflavorburstaliases( var_0, var_1 ); if ( isdefined( var_2.size ) ) { if ( var_2.size > 0 ) { self.sound_ent = spawn( "script_origin", self geteye() ); self.sound_ent linkto( self ); level.custom_flavorburst_ents = common_scripts\utility::add_to_array( level.custom_flavorburst_ents, self.sound_ent ); self.sound_ent thread maps\deer_hunt_util::delete_me_on_notifies( "sounddone" ); self.sound_ent playsound( common_scripts\utility::random( var_2 ), "sounddone" ); } } } scripted_vehicles() { thread back_alley_humvee(); } back_alley_humvee() { var_0 = maps\_utility::getvehiclespawner( "back_alley_humvee" ); level endon( "player_in_house" ); for (;;) { var_1 = var_0 maps\_vehicle::spawn_vehicle_and_gopath(); wait 0.05; var_1 vehicle_setspeed( randomintrange( 6, 12 ), 10, 5 ); var_1 waittill( "death" ); wait( randomintrange( 2, 4 ) ); } } setup_house() { thread init_hesh_house_animset(); thread init_elias_house_animset(); thread outside_reads(); getent( "elias", "targetname" ) maps\_utility::add_spawn_function( ::elias_logic ); level.elias = maps\_utility::spawn_targetname( "elias", 1 ); thread ending_scene(); common_scripts\utility::flag_wait( "player_in_house" ); maps\_utility::flavorbursts_off(); if ( level.start_point != "elias" ) { var_0 = getnonheroallies(); clean_up( var_0 ); } var_1 = getent( "house_spawner", "targetname" ); var_2 = common_scripts\utility::getstructarray( "house_scene", "targetname" ); spawn_ai_for_structs( var_1, var_2, 1, 1 ); var_0 = maps\_utility::get_drones_with_targetname( "house_spawner" ); var_3 = [ "Cpl. ", "Pvt. ", "Sgt. ", "Lt. " ]; var_4 = [ "DeFields", "Watson", "Sago" ]; for ( var_5 = 0; var_5 < var_4.size; var_5++ ) { var_0[var_5].name = ""; var_0[var_5] setlookattext( common_scripts\utility::random( var_3 ) + var_4[var_5], &"" ); } thread balcony_read(); common_scripts\utility::flag_wait( "3rd_floor_start" ); foreach ( var_7 in var_0 ) var_7.dontdonotetracks = 1; } outside_reads() { common_scripts\utility::flag_wait( "player_in_house" ); var_0 = maps\_utility::array_spawn_targetname( "window_guys", 1 ); common_scripts\utility::flag_wait( "3rd_floor_player" ); maps\_utility::array_delete( var_0 ); while ( !common_scripts\utility::flag( "balcony_player" ) ) { var_1 = maps\_utility::getvehiclespawner( "back_alley_humvee" ); var_2 = getvehiclenode( "house_path", "targetname" ); var_3 = var_1 maps\_utility::spawn_vehicle(); wait 0.05; var_3 attachpath( var_2 ); var_3 thread maps\_vehicle::vehicle_paths( var_2 ); maps\_vehicle::gopath( var_3 ); var_3 vehicle_setspeed( 20, 10, 10 ); var_3 waittill( "death" ); wait( randomintrange( 3, 5 ) ); } } ending_scene() { common_scripts\utility::flag_wait( "player_exited_jeep" ); maps\_anim::addnotetrack_customfunction( "elias", "tablet_switch", ::swap_tablet, "2nd_floor" ); thread house_vo(); var_0 = getent( "house_spawner", "targetname" ); var_0.count = 1; level.brian = var_0 maps\_utility::spawn_ai( 1 ); level.brian.animname = "brian"; level.hesh.animname = "hesh"; level.elias.animname = "elias"; level.elias maps\_utility::gun_remove(); level.brian maps\_utility::gun_remove(); level.second_floor_actors = [ level.elias, level.hesh, level.brian ]; level.third_floor_actors = [ level.elias, level.hesh ]; foreach ( var_2 in level.third_floor_actors ) { var_2.pathrandompercent = 0; var_2 pushplayer( 1 ); var_2.dontavoidplayer = 1; } common_scripts\utility::array_thread( level.third_floor_actors, maps\deer_hunt_util::retain_alert_level, 1 ); var_4 = common_scripts\utility::getstruct( "house1", "targetname" ); var_5 = common_scripts\utility::getstruct( "house2", "targetname" ); var_6 = spawnstruct(); var_6.angles = ( 0, 0, 0 ); var_6.origin = ( 26489, 8027, -57 ); foreach ( var_8 in level.second_floor_actors ) { var_8.second_floor_anim_ent = spawn_anim_ent( var_4 ); var_8.third_floor_anim_ent = spawn_anim_ent( var_5 ); } var_4 thread maps\_anim::anim_loop( [ level.brian, level.elias ], "2nd_floor_idle" ); level.elias.tablet = spawn( "script_model", level.elias.origin ); level.elias.tablet setmodel( "hjk_tablet_01" ); level.elias.tablet.origin = level.elias gettagorigin( "tag_inhand" ); level.elias.tablet.angles = level.elias gettagangles( "tag_inhand" ); level.elias.tablet linkto( level.elias, "tag_inhand" ); level.hesh thread set_goal_and_angle( ( 26662, 7328, -174 ), 90 ); common_scripts\utility::flag_wait( "player_in_house" ); level.hesh thread restore_playback_on_stairs_end(); level.hesh notify( "stop_array_set_goal_pos" ); level.hesh.second_floor_anim_ent maps\_anim::anim_reach_solo( level.hesh, "2nd_floor" ); common_scripts\utility::flag_set( "2nd_floor_start" ); var_4 notify( "stop_loop" ); if ( isdefined( level.dog ) ) level.dog notify( "stop_sniffing" ); maps\_utility::music_play( "mus_deer_elias" ); foreach ( var_8 in level.second_floor_actors ) var_8.second_floor_anim_ent thread maps\_anim::anim_single_solo( var_8, "2nd_floor" ); level.brian thread brian_does_idle_after_scene( "2nd_floor" ); level.hesh thread hesh_stairs_anim( "2nd_floor", var_6 ); level.elias.second_floor_anim_ent waittill( "2nd_floor" ); var_12 = ( 26562, 7940, 79 ); level.elias thread elias_stairs( var_12 ); maps\deer_hunt_util::set_flag_if_not_set( "2nd_floor_end" ); var_6 waittill( "2nd_floor_stairs" ); var_13 = ( 26556, 7742, 79 ); level.hesh setgoalpos( var_13 ); wait 1; level.elias.anim_reach_playback_scale = 0.875; level.hesh.anim_reach_playback_scale = 0.9; var_14 = common_scripts\utility::getstruct( "house2_animreach_path", "targetname" ); var_14 anim_reach_path( level.third_floor_actors, "3rd_floor_start" ); var_5 maps\_anim::anim_reach( [ level.hesh, level.elias ], "3rd_floor_start" ); common_scripts\utility::flag_set( "3rd_floor_start" ); foreach ( var_8 in level.third_floor_actors ) var_8.third_floor_anim_ent thread maps\_anim::anim_single_solo( var_8, "3rd_floor_start" ); level.hesh.third_floor_anim_ent waittill( "3rd_floor_start" ); if ( !common_scripts\utility::flag( "balcony_player" ) ) { var_5 thread maps\_anim::anim_loop( [ level.hesh, level.elias ], "3rd_floor_idle" ); common_scripts\utility::flag_wait( "balcony_player" ); var_5 notify( "stop_loop" ); } maps\_utility::delaythread( 0.5, maps\_utility::music_crossfade, "mus_deer_balcony", 2.0 ); foreach ( var_8 in level.third_floor_actors ) var_8.third_floor_anim_ent thread maps\_anim::anim_single_solo( var_8, "3rd_floor_end" ); var_19 = getanimlength( %dh_ending_hesh_end_b ); wait( var_19 - 3 ); level_end(); } anim_reach_path( var_0, var_1 ) { var_2 = self; for (;;) { var_2 maps\deer_hunt_util::custom_anim_reach_together( var_0, var_1 ); if ( !isdefined( var_2.target ) ) break; var_2 = common_scripts\utility::getstruct( var_2.target, "targetname" ); } } set_goal_and_angle( var_0, var_1 ) { self notify( "stop_array_set_goal_pos" ); self endon( "stop_array_set_goal_pos" ); self setgoalpos( var_0 ); self waittill( "goal" ); wait 0.2; if ( isdefined( var_1 ) ) self orientmode( "face angle", var_1 ); } elias_stairs( var_0 ) { var_1 = ( 26448, 7746, 94 ); self.goalradius = 50; self setgoalpos( var_1 ); self waittill( "goal" ); self.moveplaybackrate = 0.7; self setgoalpos( var_0 ); } hesh_stairs_anim( var_0, var_1 ) { self.second_floor_anim_ent waittill( var_0 ); var_1 maps\_anim::anim_reach_solo( self, "2nd_floor_stairs" ); var_1 maps\_anim::anim_single_solo( self, "2nd_floor_stairs" ); } restore_playback_on_stairs_end() { wait 1.5; maps\_utility::set_moveplaybackrate( 1.2 ); self waittill( "move_loop_restart" ); maps\_utility::set_moveplaybackrate( 1 ); } swap_tablet( var_0 ) { var_0.tablet unlink(); var_0.tablet linkto( level.brian, "tag_inhand" ); } level_end() { level.player setclienttriggeraudiozone( "deer_beach_fade_to_black", 3 ); var_0 = 4.5; level.player common_scripts\utility::delaycall( var_0, ::setclienttriggeraudiozone, "deer_beach_fade_everything", 1.5 ); thread maps\deer_hunt_util::fade_out_in( "black", "never", undefined, 3 ); wait 6; level.player freezecontrols( 1 ); level.elias setlookattext( "", &"" ); level.hesh setlookattext( "", &"" ); maps\_utility::nextmission(); } brian_does_idle_after_scene( var_0 ) { self.second_floor_anim_ent waittill( var_0 ); self.second_floor_anim_ent thread maps\_anim::anim_loop_solo( self, "2nd_floor_idle_end" ); } set_flag_on_anim_reach( var_0, var_1, var_2 ) { self.second_floor_anim_ent waittill( var_0 ); maps\deer_hunt_util::set_flag_if_not_set( "2nd_floor_end" ); if ( self == level.hesh ) thread maps\_utility::set_moveplaybackrate( 1.1, 2 ); self.third_floor_anim_ent maps\_anim::anim_reach_solo( self, var_1 ); common_scripts\utility::flag_set( var_2 ); } spawn_anim_ent( var_0 ) { var_1 = spawn( "script_origin", var_0.origin ); var_1.angles = var_0.angles; return var_1; } elias_logic() { self.name = "Elias"; thread maps\_utility::magic_bullet_shield(); maps\_utility::gun_remove(); common_scripts\utility::flag_wait( "player_exited_jeep" ); maps\_utility::set_archetype( "elias_house" ); } balcony_read() { common_scripts\utility::flag_wait( "3rd_floor_player" ); var_0 = getent( "beach_scene_actor", "targetname" ); var_1 = common_scripts\utility::getstructarray( "beach_anims", "targetname" ); spawn_ai_for_structs( var_0, var_1, 1 ); thread beach_matv(); wait 0.1; thread beach_ai(); var_2 = maps\_utility::getvehiclearray(); common_scripts\utility::array_thread( var_2, ::stop_hovering_at_path_end ); } stop_hovering_at_path_end() { if ( self.classname != "script_vehicle_silenthawk" ) return; self waittill( "reached_dynamic_path_end" ); self sethoverparams( 0, 0, 0 ); } beach_matv() { common_scripts\utility::flag_wait( "balcony_player" ); var_0 = maps\_utility::getvehiclespawner( "balcony_matv" ); for (;;) { var_1 = 2; var_2 = 9; for ( var_3 = 0; var_3 < var_1; var_3++ ) { var_4 = var_0 maps\_vehicle::spawn_vehicle_and_gopath(); wait 5.5; } wait( var_2 ); } } beach_ai() { maps\_utility::array_spawn_function_targetname( "target_practice_guys", ::target_practice_guys_logic ); maps\_utility::array_spawn_function_targetname( "beach_runners_group", ::runner_logic ); maps\_utility::array_spawn_targetname( "beach_ai", 1 ); maps\_utility::array_spawn_targetname( "target_practice_guys", 1 ); common_scripts\utility::flag_wait( "balcony_player" ); maps\_utility::array_spawn_targetname( "beach_runners_group", 1 ); thread beach_runners(); } runner_logic() { maps\_utility::gun_remove(); self.runanim = %training_jog_guy1; maps\_utility::set_moveplaybackrate( randomfloatrange( 0.9, 1.1 ) ); self.name = ""; } beach_runners() { wait 5; var_0 = getentarray( "beach_runners", "targetname" ); for (;;) { var_0 = common_scripts\utility::array_randomize( var_0 ); var_1 = maps\_utility::dronespawn( common_scripts\utility::random( var_0 ) ); var_1.runanim = %training_jog_guy1; wait( randomintrange( 6, 9 ) ); } } getnonheroallies() { var_0 = getaiarray( "allies" ); if ( isdefined( level.hesh ) ) var_0 = common_scripts\utility::array_remove( var_0, level.hesh ); if ( isdefined( level.dog ) ) var_0 = common_scripts\utility::array_remove( var_0, level.dog ); return var_0; } target_practice_guys_logic() { self.goalradius = 32; self setgoalpos( self.origin ); var_0 = getent( self.target, "targetname" ); self setentitytarget( var_0, 1 ); self.dontevershoot = 1; self.pistol = 0; if ( randomint( 100 ) < 33 ) { self.forcesidearm = 1; self.pistol = 1; } for (;;) { if ( common_scripts\utility::cointoss() && !self.pistol ) self allowedstances( "stand" ); burst_fire(); self.bulletsinclip = 0; self allowedstances( "stand", "crouch" ); wait( randomfloatrange( 6, 10 ) ); } } burst_fire() { var_0 = randomintrange( 8, 16 ); for ( var_1 = 0; var_1 < var_0; var_1++ ) { self shoot(); wait( randomfloatrange( 1, 4 ) ); } }