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

2347 lines
75 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
enemyhq_rooftop_intro_pre_load()
{
common_scripts\utility::flag_init( "finished_intro_dof" );
common_scripts\utility::flag_init( "bishop_glimpse_over" );
common_scripts\utility::flag_init( "watching_bishop_glimpse" );
common_scripts\utility::flag_init( "activate_vip_sniper" );
common_scripts\utility::flag_init( "enable_butchdance" );
common_scripts\utility::flag_init( "start_rpg_kibble" );
common_scripts\utility::flag_init( "start_exfil_sniper" );
common_scripts\utility::flag_init( "blow_koolaid_wall" );
common_scripts\utility::flag_init( "FLAG_move_to_player_truck" );
common_scripts\utility::flag_init( "checkit_zoom" );
common_scripts\utility::flag_init( "checkit_dryfire" );
common_scripts\utility::flag_init( "checkit_pan" );
common_scripts\utility::flag_init( "start_convoy" );
common_scripts\utility::flag_init( "bishop_glimpse" );
common_scripts\utility::flag_init( "kill_player_fail" );
common_scripts\utility::flag_init( "FLAG_dead_guys_near_truck" );
common_scripts\utility::flag_init( "bishop_in_crosshairs" );
common_scripts\utility::flag_init( "merrick_done_lookat" );
precachemodel( "weapon_bursted_sticky_grenade" );
precachemodel( "weapon_sticky_grenade" );
precachemodel( "ehq_seat_dyn" );
precachemodel( "viewmodel_mk14" );
precachemodel( "cargocontainer_20ft_white" );
precachemodel( "com_ammo_pallet" );
precachemodel( "berlin_barrelcluster_pallet_01" );
precachemodel( "shipping_frame_boxes" );
precachemodel( "weapon_remote_sniper_tripod" );
precachemodel( "weapon_remote_sniper_gun" );
precachemodel( "mil_mre_chocolate02" );
precachemodel( "ehq_intro_window_vines_anim" );
precachemodel( "viewmodel_mk32_dud_bolt_ring_off" );
precachemodel( "dub_restaurant_chair_dirty_01b" );
precacheshader( "killiconheadshot" );
precacheitem( "remote_chopper_gunner" );
precacheitem( "remote_chopper_gunner_nopullout" );
precachemodel( "weapon_mts_255_small" );
precacheitem( "remote_tablet_nopullout" );
precacheitem( "remote_tablet" );
precacheshader( "remote_chopper_hud_target_enemy" );
precacheshader( "remote_chopper_hud_target_friendly" );
precacheshader( "remote_chopper_hud_target_e_vehicle" );
precacheshader( "inventory_stickybomb" );
precacheitem( "nosound_magicbullet" );
precacheitem( "mk32_dud_rocket" );
precacheitem( "mk32_dud" );
precacheitem( "freerunner" );
thread sniper_vip_breach();
thread butchdance();
thread rpg_kibble();
thread exfil_sniper();
thread handle_m32_launcher();
level.player thread handle_sticky_clacker();
level.switching_to_detonator = 0;
level.switching_from_detonator = 0;
var_0 = getentarray( "intro_hide_on_load", "script_noteworthy" );
var_1 = getentarray( "flyby_hide_on_load", "script_noteworthy" );
var_2 = getentarray( "flybyA_hide_on_load", "script_noteworthy" );
var_3 = common_scripts\utility::array_combine( var_0, var_1 );
var_4 = common_scripts\utility::array_combine( var_3, var_2 );
common_scripts\utility::array_call( var_4, ::hide );
common_scripts\utility::array_call( var_4, ::notsolid );
precachedigitaldistortcodeassets();
precachestring( &"ENEMY_HQ_ZOOMHINT" );
precachestring( &"ENEMY_HQ_ZOOMHINT_NO_GLYPH" );
level.mk32_mode = "instant";
thread listen_mk32_mode();
thread sniper_nade_setup();
}
listen_mk32_mode()
{
wait 1;
common_scripts\utility::flag_wait( "FLAG_player_enter_truck" );
level.mk32_mode = "instant";
}
setup_rooftop_intro()
{
level.remote_target_override_function = ::handle_intro_sniper_outline;
level.ehq_blackout_time = 5;
maps\_utility::intro_screen_create( &"ENEMY_HQ_INTROSCREEN_LINE_1", &"ENEMY_HQ_INTROSCREEN_LINE_2", &"ENEMY_HQ_INTROSCREEN_LINE_3" );
maps\_utility::intro_screen_custom_timing( 2, 1 );
maps\_utility::intro_screen_custom_func( ::introscreen );
level.sniper_wait_extra_black = 1;
level.start_point = "intro";
maps\enemyhq::setup_common( "introroof" );
thread cargo_choppers();
level.mk32_mode = "delay";
level.dog maps\enemyhq_code::lock_player_control();
}
begin_rooftop_intro()
{
level.ehq_znear_default = getdvar( "r_znear" );
setsaveddvar( "r_znear", 40.0 );
thread maps\enemyhq_intro::spawn_player_truck();
maps\_utility::disable_trigger_with_targetname( "TRIG_get_in_truck" );
thread intro_common();
thread maps\_utility::autosave_tactical();
thread field_activity();
thread maps\enemyhq_intro::dead_guys_near_truck();
level.player.allow_dry_fire = 1;
level.intro_grenades = level.player getweaponammoclip( "fraggrenade" );
level.player takeallweapons();
level.player_intro_weapon = "freerunner";
level.player giveweapon( level.player_intro_weapon );
level.player switchtoweapon( level.player_intro_weapon );
level.player.presniper_weapon = level.player_intro_weapon;
level.player.presniper_weapon_clip = 0;
level.player.presniper_weapon_stock = 0;
level.player giveweapon( "remote_tablet" );
level.player switchtoweapon( "remote_tablet" );
level.player freezecontrols( 1 );
maps\_utility::battlechatter_off( "allies" );
maps\_utility::battlechatter_off( "axis" );
wait( level.ehq_blackout_time );
thread digital_malarky( 0.5, 1.75 );
level.player freezecontrols( 0 );
maps\enemyhq_code::safe_activate_trigger_with_targetname( "rooftop_intro_color" );
thread bishop_glimpse();
level.player intro_overlook_static();
common_scripts\utility::flag_set( "FLAG_dead_guys_near_truck" );
common_scripts\utility::flag_wait( "bishop_glimpse_over" );
setsaveddvar( "r_znear", level.ehq_znear_default );
}
setup_rooftop_shoot()
{
level.start_point = "introshoot";
maps\enemyhq_intro::spawn_player_truck();
maps\enemyhq::setup_common( "introroof" );
thread maps\enemyhq_audio::aud_check( "rooftop_shoot" );
thread intro_common();
thread air_armada();
level.mk32_mode = "delay";
level.dog maps\enemyhq_code::lock_player_control();
setsaveddvar( "ammoCounterHide", 1 );
}
begin_rooftop_shoot()
{
thread cargo_choppers();
thread maps\_vehicle::create_vehicle_from_spawngroup_and_gopath( 989 );
common_scripts\utility::exploder( "5600" );
level.allies[0].disable_sniper_glint = 1;
level.allies[0].old_weap = level.allies[0].primaryweapon;
level.allies[0] maps\_utility::forceuseweapon( "mk32_dud_rocket", "primary" );
level.allies[0].noreload = 1;
level.remote_target_override_function = undefined;
level.player_intro_weapon = "sc2010+reflex_sp";
level.mk32_intro_fire = 1;
level.player_mk32 = "mk32_dud+eotech_sp_mk32dud";
thread watch_weaponswitch();
thread maps\enemyhq_intro::player_failcase_road();
thread player_failcase_road_mk32();
maps\_utility::disable_trigger_with_targetname( "picked_up_mk32" );
maps\_utility::disable_trigger_with_targetname( "TRIG_get_in_truck" );
level.player.allow_dry_fire = 0;
level.next_repeat_vo = 0;
thread keegan_tinkers_with_rifle();
level.player setstance( "crouch" );
wait 0.05;
level.player setstance( "crouch" );
thread maps\_utility::autosave_by_name( "intro_rooftop" );
maps\enemyhq_code::safe_activate_trigger_with_targetname( "rooftop_crawl_forward" );
level.allies[1] thread maps\enemyhq_intro::keegan_enter_veh();
thread intro_plane_flyby_01();
pickup_mk32();
level waittill( "stop_convoy" );
level.player thread swapout_mk32();
thread go_street();
thread remove_ally_mk32();
common_scripts\utility::flag_set( "kill_player_fail" );
}
player_failcase_road_mk32()
{
thread player_failcase_road_overrun_mk32();
level endon( "kill_player_fail" );
var_0 = [];
var_0[0] = "enemyhq_mrk_logangetbackhere";
var_0[1] = "enemyhq_mrk_whereareyougoing";
for (;;)
{
common_scripts\utility::flag_wait( "FLAG_player_failcase_road_mk32" );
var_1 = 0;
while ( common_scripts\utility::flag( "FLAG_player_failcase_road_mk32" ) )
{
if ( var_1 > var_0.size - 1 )
{
setdvar( "ui_deadquote", &"ENEMY_HQ_YOU_LEFT_YOUR_TEAM_BEHIND" );
maps\_utility::missionfailedwrapper();
break;
}
level.allies[0] maps\enemyhq_code::char_dialog_add_and_go( var_0[var_1] );
var_1++;
wait( randomfloatrange( 2, 4 ) );
}
}
}
player_failcase_road_overrun_mk32()
{
level endon( "kill_player_fail" );
common_scripts\utility::flag_wait( "FLAG_player_failcase_road_overrun_mk32" );
setdvar( "ui_deadquote", &"ENEMY_HQ_YOU_LEFT_YOUR_TEAM_BEHIND" );
maps\_utility::missionfailedwrapper();
}
remove_ally_mk32()
{
common_scripts\utility::flag_wait( "FLAG_player_enter_truck" );
wait 3;
level.allies[0].noreload = undefined;
level.allies[0] maps\_utility::forceuseweapon( level.allies[0].old_weap, "primary" );
level.allies[0].old_weapon = "none";
if ( isdefined( level.allies[0].weaponinfo["mk32_dud_rocket"] ) && isdefined( level.allies[0].weaponinfo["mk32_dud_rocket"].hasclip ) )
level.allies[0].weaponinfo["mk32_dud_rocket"].hasclip = 0;
}
introscreen()
{
maps\_utility::delaythread( 2, maps\_utility::smart_radio_dialogue, "enemyhq_kgn_poweringupremotesniper" );
thread maps\enemyhq_audio::aud_start_sniper_intro();
maps\_introscreen::introscreen( 0, level.ehq_blackout_time );
}
intro_common()
{
thread ship_vista();
}
monitor_player_used_zoom( var_0 )
{
while ( !common_scripts\utility::flag( "checkit_zoom" ) )
{
if ( abs( var_0 - level.remote_turret_current_fov ) > 20 )
common_scripts\utility::flag_set( "checkit_zoom" );
wait 0.05;
}
}
sniper_paces()
{
sniper_paces_static();
level.player forceusehintoff();
}
zoom_hint_wait()
{
if ( common_scripts\utility::flag( "checkit_zoom" ) )
return 1;
return 0;
}
sniper_paces_static()
{
level endon( "bishop_glimpse" );
level.player.prev_stance = "crouch";
maps\_utility::smart_radio_dialogue( "enemyhq_mrk_scanaroundforfed" );
wait 4;
if ( !common_scripts\utility::flag( "checkit_zoom" ) )
{
maps\_utility::smart_radio_dialogue( "enemyhq_mrk_zoominonthe" );
common_scripts\utility::flag_wait_or_timeout( "checkit_zoom", 2 );
if ( !common_scripts\utility::flag( "checkit_zoom" ) )
{
maps\_utility::display_hint( "zoom_hint" );
common_scripts\utility::flag_wait_or_timeout( "checkit_zoom", 4 );
var_0 = 9;
while ( !common_scripts\utility::flag( "checkit_zoom" ) )
{
maps\_utility::smart_radio_dialogue( "enemyhq_mrk_logantryzoomingin" );
common_scripts\utility::flag_wait_or_timeout( "checkit_zoom", var_0 );
if ( var_0 < 30 )
var_0 = var_0 * 1.5;
}
}
wait 0.1;
}
}
watch_dryfire()
{
level.player endon( "use_remote_turret" );
var_0 = 0;
var_0 = gettime();
var_1 = 7000;
for (;;)
{
common_scripts\utility::flag_wait( "checkit_dryfire" );
common_scripts\utility::flag_clear( "checkit_dryfire" );
if ( var_0 < gettime() )
{
var_0 = gettime() + var_1;
var_1 = var_1 * 1.5;
maps\_utility::smart_radio_dialogue( "enemyhq_kgn_itsnotloaded" );
}
wait 0.05;
}
}
intro_overlook_static()
{
var_0 = common_scripts\utility::getstruct( "sniper_introaim_static", "targetname" );
level.remote_turret_current_fov = 55;
level.remote_turret_right_arc = 22;
level.remote_turret_left_arc = 45;
level.remote_turret_top_arc = 15;
level.remote_turret_bottom_arc = 17;
setup_sniper_view( "sniper_introaim_static" );
common_scripts\utility::flag_wait( "remote_sniper_ready" );
self.turret_look_at_ent.origin = var_0.origin;
level.remote_turret_current_fov = 55;
self lerpfov( level.remote_turret_current_fov, 0.05 );
thread air_armada();
thread monitor_player_used_zoom( 55 );
thread watch_dryfire();
wait 2;
thread intro_objectives();
thread sniper_paces();
monitor_player_bishop();
if ( !common_scripts\utility::flag( "bishop_glimpse" ) )
{
self notify( "remote_turret_nozoom" );
thread maps\_utility::add_dialogue_line( "Merrick", "I see activity in VIP suites. I'm Overriding control." );
thread maps\_utility::smart_radio_dialogue( "enemyhq_mrk_iseeactivityin" );
thread intro_dof( 0.7 );
wait 0.4;
var_1 = length( self.turret_look_at_ent.origin - self.origin );
var_0 = common_scripts\utility::getstruct( "sniper_introaim_4", "targetname" );
var_2 = self.origin + anglestoforward( level.player getplayerangles() ) * var_1;
self.turret_look_at_ent.origin = var_2;
self.player_view_controller snaptotargetentity( self.turret_look_at_ent );
self lerpviewangleclamp( 0, 0, 0, 0, 0, 0, 0 );
level.remote_turret_right_arc = 0;
level.remote_turret_left_arc = 0;
level.remote_turret_top_arc = 0;
level.remote_turret_bottom_arc = 0;
var_3 = length( var_0.origin - self.turret_look_at_ent.origin ) / 1000;
var_3 = min( var_3, 4 );
var_3 = max( var_3, 1 );
wait 0.05;
self.turret_look_at_ent moveto( var_0.origin, var_3, var_3 / 4, var_3 / 4 );
var_4 = 2;
self lerpfov( var_4, var_3 );
level.remote_turret_current_fov = var_4;
thread maps\enemyhq_audio::aud_focus_zoom();
common_scripts\utility::flag_set( "watching_bishop_glimpse" );
wait( var_3 );
self lerpviewangleclamp( 0, 0, 0, 5, 5, 1, 1 );
level.remote_turret_right_arc = 5;
level.remote_turret_left_arc = 5;
level.remote_turret_top_arc = 1;
level.remote_turret_bottom_arc = 1;
level.remote_turret_min_fov = 1;
level.remote_turret_max_fov = 4;
thread maps\enemyhq_remoteturret::remote_turret_handle_zoom();
}
else
{
common_scripts\utility::flag_set( "watching_bishop_glimpse" );
maps\_utility::radio_dialogue_stop();
wait 0.05;
thread maps\_utility::smart_radio_dialogue( "enemyhq_mrk_waityouhavesomething" );
level.remote_turret_min_fov = 1;
}
var_5 = gettime();
var_6 = level common_scripts\utility::waittill_any_return( "bishop_in_crosshairs", "identify_vo_timeout" );
thread maps\_utility::smart_radio_dialogue( "enemyhq_mrk_wehaveapossible" );
if ( var_6 != "identify_vo_timeout" )
level waittill( "identify_vo_timeout" );
var_7 = 9.5;
maps\_utility::delaythread( var_7, maps\_utility::send_notify, "use_remote_turret" );
level maps\_utility::delaythread( var_7, common_scripts\utility::flag_set, "bishop_glimpse_over" );
wait 4.5;
thread maps\_utility::smart_radio_dialogue( "enemyhq_kgn_thenthatswherewere" );
wait 1;
thread maps\_utility::smart_radio_dialogue( "enemyhq_hsh_weregoinginthere" );
wait 1;
maps\_utility::smart_radio_dialogue( "enemyhq_mrk_alrightadamletsfinish" );
}
monitor_player_bishop()
{
var_0 = gettime() + 45000;
var_1 = 0;
var_2 = 0;
var_3 = [];
var_3[var_3.size] = "enemyhq_mrk_heavyfedactivity12";
var_3[var_3.size] = "enemyhq_mrk_fedactivitydeadahead";
var_4 = 8000;
var_5 = [];
var_5["field_area"] = 0;
var_5["stadium_left"] = 0;
var_5["stadium_right"] = 0;
var_5["armada"] = 0;
var_6 = common_scripts\utility::getstructarray( "bishop_search", "targetname" );
var_7 = 0;
var_8 = [];
var_8[var_8.size] = "enemyhq_mrk_enemypatrolsnothingmore";
var_8[var_8.size] = "enemyhq_mrk_morepatrolsnosign";
var_8[var_8.size] = "enemyhq_mrk_thatsjustanenemy";
var_9 = [];
var_9[var_9.size] = "enemyhq_mrk_lookaroundthepress";
var_9[var_9.size] = "enemyhq_mrk_iseeactivityon";
var_9[var_9.size] = "enemyhq_mrk_checkoutthevip";
var_10 = 0;
var_11 = gettime() + 25000;
var_12 = 0;
for (;;)
{
if ( var_11 < gettime() )
{
var_11 = gettime() + 35000;
thread maps\_utility::smart_radio_dialogue( var_9[var_10] );
var_10++;
if ( var_10 >= var_9.size )
var_10 = 0;
}
var_13 = level.player getplayerangles();
var_14 = anglestoforward( var_13 );
if ( common_scripts\utility::flag( "bishop_glimpse_lookflag" ) )
{
if ( level.remote_turret_current_fov <= 6 && var_13[0] > 0.5 && var_13[0] < 2.2 && var_13[1] > -100 && var_13[1] < -97.5 )
{
level.glimpse_time = gettime();
common_scripts\utility::flag_set( "bishop_glimpse" );
break;
}
else if ( var_1 < gettime() && level.remote_turret_current_fov <= 30 )
{
thread maps\_utility::smart_radio_dialogue( var_3[var_2] );
var_2++;
if ( var_2 >= var_3.size )
var_2 = 0;
var_1 = gettime() + var_4;
var_4 = var_4 * 1.5;
}
}
if ( level.remote_turret_current_fov < 45 )
{
foreach ( var_16 in var_6 )
{
if ( !isdefined( var_16.found ) )
{
var_17 = vectornormalize( var_16.origin - level.player.origin );
var_18 = vectordot( var_17, var_14 );
var_19 = 0.9975;
if ( isdefined( var_16.script_parameters ) )
var_19 = int( var_16.script_parameters );
if ( var_18 > var_19 )
{
var_16.found = 1;
var_5[var_16.script_noteworthy]++;
break;
}
}
}
}
var_21 = 1;
if ( var_13[1] > -104 && var_13[1] < -94 && var_13[0] < 10 )
var_21 = 0;
if ( var_21 && var_7 < gettime() && level.remote_turret_current_fov < 25 )
{
var_7 = gettime() + 1000;
var_22 = 0;
var_23 = [];
foreach ( var_25 in level.drones["axis"].array )
{
if ( isdefined( var_25.found ) )
continue;
var_17 = vectornormalize( var_25.origin - level.player.origin );
var_18 = vectordot( var_17, var_14 );
if ( var_18 > 0.998 )
{
var_23[var_23.size] = var_25;
var_22++;
}
if ( var_22 >= 3 )
{
foreach ( var_27 in var_23 )
var_27.found = 1;
thread maps\_utility::smart_radio_dialogue( var_8[var_12] );
var_12++;
if ( var_12 >= var_8.size )
var_12 = 0;
var_7 = gettime() + 8000;
break;
}
}
}
if ( var_5["field_area"] == 3 )
{
var_5["field_area"]++;
thread maps\_utility::smart_radio_dialogue( "enemyhq_mrk_doesntlooklikehes_2" );
}
if ( var_5["field_area"] == 6 )
{
var_5["field_area"]++;
thread maps\_utility::smart_radio_dialogue( "enemyhq_mrk_fieldclear" );
}
if ( var_5["stadium_left"] == 4 )
{
var_5["stadium_left"]++;
thread maps\_utility::smart_radio_dialogue( "enemyhq_mrk_leftsideclear" );
}
if ( var_5["stadium_right"] == 4 )
{
var_5["stadium_right"]++;
thread maps\_utility::smart_radio_dialogue( "enemyhq_mrk_rightsideclear" );
}
if ( var_5["armada"] == 4 )
var_5["armada"]++;
wait 0.05;
}
}
bishop_in_crosshairs()
{
level endon( "intro_done" );
for (;;)
{
if ( isdefined( level.remote_turret_trace["entity"] ) )
{
var_0 = level.remote_turret_trace["entity"];
if ( isai( var_0 ) && var_0.team == "allies" && level.remote_turret_current_fov < 4 )
{
common_scripts\utility::flag_set( "bishop_in_crosshairs" );
break;
}
}
wait 0.05;
}
}
bishop_glimpse()
{
var_0 = common_scripts\utility::getstruct( "vip_sniper_breach_struct", "targetname" );
var_1 = maps\_utility::spawn_targetname( "bishop_tease_hech", 1 );
var_1.animname = "bishop";
var_1.disable_sniper_outline = 1;
var_1.script_friendname = "Ajax";
var_1.name = "Ajax";
var_2 = maps\enemyhq_code::array_spawn_targetname_allow_fail( "bishop_tease" );
var_2[0].animname = "bish_e1";
var_2[1].animname = "bish_e2";
var_2[2].animname = "bish_e3";
var_2[var_2.size] = var_1;
var_2[3] maps\_utility::gun_remove();
var_3 = maps\_utility::spawn_anim_model( "mr_chair" );
var_4 = maps\_utility::spawn_anim_model( "mr_chair" );
var_4 setmodel( "dub_restaurant_chair_dirty_01b" );
var_4 linkto( var_3, "J_Prop_1" );
var_5 = [ var_2[0], var_2[2] ];
var_6 = [ var_1, var_3, var_2[1] ];
var_0 maps\_anim::anim_first_frame( [ var_3 ], "bishop_glimpse" );
var_7 = 2.8;
level.start_len = 2.5;
var_7 = 1.3;
level.start_len = 2.7;
wait 0.05;
level.start_anim_time = gettime() - level.start_len * 1000;
var_0 thread maps\_anim::anim_loop( var_2, "bishop_glimpse_loop" );
common_scripts\utility::flag_wait( "bishop_glimpse" );
common_scripts\utility::array_thread( var_2, maps\_utility::anim_stopanimscripted );
waittillframeend;
var_0 thread maps\_anim::anim_single( var_2, "bishop_glimpse" );
var_8 = 11800;
level.time_cut = var_8;
level thread maps\_utility::notify_delay( "identify_vo_timeout", var_8 / 1000 );
thread bishop_in_crosshairs();
common_scripts\utility::flag_wait( "bishop_glimpse_over" );
wait 0.2;
common_scripts\utility::array_call( var_2, ::delete );
var_4 delete();
}
glimpsethefuture( var_0, var_1 )
{
var_2 = var_1 / getanimlength( level.scr_anim["bish_e1"]["bishop_glimpse"] );
level.future_start_percent = var_2;
foreach ( var_4 in var_0 )
var_4 setanimtime( maps\_utility::getanim_from_animname( "bishop_glimpse", var_4.animname ), level.future_start_percent );
}
intro_dof( var_0 )
{
level notify( "stop_introdof" );
level endon( "stop_introdof" );
if ( isdefined( var_0 ) )
{
var_1 = var_0;
maps\_art::dof_enable_script( 50, 55, 10, 60, 65, 10, var_1 );
wait( var_1 );
var_1 = var_0 * 2;
maps\_art::dof_disable_script( var_1 );
wait( var_1 );
return;
}
var_1 = 4;
maps\_art::dof_enable_script( 50, 55, 8, 60, 65, 8, var_1 );
wait( var_1 );
var_1 = 1;
maps\_art::dof_disable_script( var_1 );
wait( var_1 );
common_scripts\utility::flag_set( "finished_intro_dof" );
}
opening_view_anims( var_0 )
{
maps\_utility::delaythread( 5, ::player_get_mk32 );
var_1 = common_scripts\utility::getstruct( var_0, "targetname" );
var_2 = var_1;
var_3 = maps\_utility::spawn_anim_model( "remote_sniper" );
var_4 = maps\_utility::spawn_anim_model( "remote_sniper" );
var_4 setmodel( "weapon_remote_sniper_gun" );
var_5 = maps\_utility::spawn_anim_model( "remote_sniper" );
var_5 setmodel( "weapon_remote_sniper_tripod" );
var_4 linkto( var_3, "j_prop_2" );
var_5 linkto( var_3, "j_prop_1" );
level.prop_sentry = var_3;
level.intro_anim_from = var_1;
level.intro_anim_from_keegan = var_2;
level.allies[0].goalradius = 128;
level.vines = maps\_utility::spawn_anim_model( "viney" );
level.vines setmodel( "ehq_intro_window_vines_anim" );
var_6 = level.allies[0] gettagorigin( "tag_weapon_left" );
level.bone = spawn( "script_model", var_6 );
level.bone setmodel( "mil_mre_chocolate02" );
level.bone linkto( level.allies[0], "tag_weapon_left", ( 0, 0, 0 ), ( 0, 0, 0 ) );
level.allies[1] thread end_anim_then_loop( var_2, "intro_loop_keegan", "stop_intro_loop", 1 );
level.allies[2] thread end_anim_then_loop( var_1, "intro_player_loop", "stop_intro_loop", 0 );
var_2 maps\_anim::anim_first_frame( [ level.prop_sentry ], "intro_player" );
var_1 maps\_anim::anim_first_frame( [ level.allies[2], level.dog ], "intro_player" );
var_1 thread maps\_anim::anim_single( [ level.allies[0], level.vines ], "intro_player" );
thread maps\enemyhq_audio::aud_intro_keegan_tinkering();
var_2 thread maps\_anim::anim_single( [ level.allies[1] ], "intro_player" );
}
anim_intro_dog( var_0 )
{
level.intro_anim_from maps\_anim::anim_single( [ level.allies[2], level.dog ], "intro_player" );
}
anim_intro_sniper( var_0 )
{
level.intro_anim_from_keegan maps\_anim::anim_single( [ level.prop_sentry ], "intro_player" );
}
anim_drop_bone( var_0 )
{
level.bone unlink();
}
end_anim_then_loop( var_0, var_1, var_2, var_3 )
{
wait 0.1;
self waittillmatch( "single anim", "end" );
if ( var_3 )
{
if ( common_scripts\utility::flag( "picked_up_mk32" ) )
return;
}
var_0 thread maps\_anim::anim_loop_solo( self, var_1, var_2 );
level waittill( "stop_intro_loop" );
var_0 notify( "stop_intro_loop" );
}
trig_active_on_look( var_0, var_1, var_2 )
{
common_scripts\utility::trigger_off();
var_3 = 0;
while ( !common_scripts\utility::flag( var_2 ) )
{
var_4 = anglestoforward( level.player.angles );
var_5 = vectornormalize( var_0 - level.player.origin );
var_6 = vectordot( var_4, var_5 );
if ( var_3 && var_6 < var_1 )
{
var_3 = 0;
common_scripts\utility::trigger_off();
}
else if ( !var_3 && var_6 >= var_1 )
{
var_3 = 1;
common_scripts\utility::trigger_on();
}
wait 0.05;
}
}
handle_intro_ammo_counter()
{
while ( isdefined( level.sniper_wait_extra_black ) )
wait 0.05;
setsaveddvar( "ammoCounterHide", 1 );
}
pickup_mk32( var_0 )
{
var_1 = getent( "mk32_noglow", "targetname" );
var_2 = getent( "mk32_glowy", "targetname" );
var_2 hide();
thread opening_view_anims( "sniper_placement_merrick" );
maps\_utility::enable_trigger_with_targetname( "picked_up_mk32" );
var_3 = common_scripts\utility::getstruct( "mk32_noglow_lookstruct", "targetname" );
var_4 = getent( "picked_up_mk32", "targetname" );
var_4 thread trig_active_on_look( var_3.origin, 0.8, "picked_up_mk32" );
common_scripts\utility::flag_wait_or_timeout( "picked_up_mk32", 10 );
var_1 delete();
if ( !common_scripts\utility::flag( "picked_up_mk32" ) )
var_2 show();
var_5 = common_scripts\utility::getstruct( "sniper_placement_forward", "targetname" );
thread convoy();
common_scripts\utility::flag_wait( "picked_up_mk32" );
setsaveddvar( "ammoCounterHide", 0 );
thread intro_helis_overhead();
level.prop_sentry setanimtime( maps\_utility::getanim_from_animname( "intro_player", "remote_sniper" ), 1 );
thread maps\enemyhq_audio::aud_pickup_mk32();
var_2 delete();
level.player disableweaponswitch();
maps\enemyhq_code::safe_disable_trigger_with_targetname( "picked_up_mk32" );
maps\enemyhq_code::setupplayerforgameplay();
level.player giveweapon( level.player_mk32 );
level.player switchtoweapon( level.player_mk32 );
wait 0.1;
var_6 = spawn( "script_model", level.player.origin );
var_6 setmodel( "viewmodel_mk32_dud_bolt_ring_off" );
var_6 linktoplayerview( level.player, "J_Ammo1_Cap", ( 0, 0, 0 ), ( 0, 0, 0 ), 1 );
if ( level.start_point != "introshoot" )
wait 2.6;
else
wait 3.1;
var_6 unlinkfromplayerview( level.player );
var_6 delete();
}
intro_helis_overhead()
{
var_0 = thread maps\_vehicle::create_vehicle_from_spawngroup_and_gopath( 988 );
wait 1;
foreach ( var_2 in var_0 )
{
var_2 setmaxpitchroll( 20, 60 );
var_2 setturningability( 1 );
}
}
fast_convoy()
{
level endon( "stop_fast_convoy" );
level endon( "stop_convoy" );
var_0 = getentarray( "intro_convoy_fast", "targetname" );
wait 8;
var_1 = 0;
while ( var_1 < 2 )
{
var_2 = var_0[0];
var_1++;
var_3 = var_2 maps\_vehicle::spawn_vehicle_and_gopath();
thread maps\enemyhq_audio::aud_convoy_start( var_3 );
var_3.cargo = [];
wait( randomfloatrange( 1.2, 2 ) );
}
while ( level.player_hit_convoy < 3 )
{
level waittill( "safe_spawn_fast" );
var_2 = var_0[0];
var_1++;
var_3 = var_2 maps\_vehicle::spawn_vehicle_and_gopath();
thread maps\enemyhq_audio::aud_convoy_start( var_3 );
var_3.cargo = [];
}
}
convoy()
{
common_scripts\utility::flag_wait( "start_convoy" );
maps\_utility::delaythread( 11, common_scripts\utility::flag_set, "intro_littlebirds" );
wait 2;
thread fast_convoy();
level.allies[0] thread ally_shoot_convoy();
level endon( "stop_convoy" );
thread watch_convoy_trig();
level.player_hit_convoy = 0;
var_0 = 0;
var_1 = getentarray( "intro_convoy", "targetname" );
var_2 = undefined;
var_3 = 1;
var_4 = 10;
while ( var_3 < var_4 )
{
if ( var_3 % 3 )
var_5 = var_1[0];
else
var_5 = var_1[1];
level thread maps\_utility::notify_delay( "safe_spawn_fast", 10 );
var_2 = var_5 maps\_vehicle::spawn_vehicle_and_gopath();
thread maps\enemyhq_audio::aud_convoy_start( var_2 );
var_2.cargo = [];
if ( common_scripts\utility::string_starts_with( var_2.classname, "script_vehicle_man_7t" ) )
var_2 load_up();
var_0++;
if ( var_3 % 3 )
wait( randomfloatrange( 3, 4 ) );
else
wait( randomfloatrange( 2.5, 3 ) );
var_3++;
if ( level.player_hit_convoy > 0 )
var_4 = 6;
}
level.last_spawned_veh = var_2;
level notify( "stop_fast_convoy" );
level waittill( "stop_convoy" );
}
load_up()
{
var_0 = [];
var_0[var_0.size] = "com_ammo_pallet";
var_0[var_0.size] = "berlin_barrelcluster_pallet_01";
var_0[var_0.size] = "shipping_frame_boxes";
var_0[var_0.size] = "com_ammo_pallet";
var_0[var_0.size] = "shipping_frame_boxes";
var_0[var_0.size] = "empty";
var_1 = 3;
var_2 = anglestoforward( self gettagangles( "tag_body" ) );
for ( var_3 = 0; var_3 < var_1; var_3++ )
{
var_4 = randomint( var_0.size );
if ( var_0[var_4] == "empty" )
continue;
var_5 = self gettagorigin( "tag_body" ) + var_2 * -80 * var_3;
self.cargo[self.cargo.size] = spawn( "script_model", var_5 );
self.cargo[self.cargo.size - 1].angles = self gettagangles( "tag_body" );
self.cargo[self.cargo.size - 1] setmodel( var_0[var_4] );
self.cargo[self.cargo.size - 1] linkto( self );
self.cargo[self.cargo.size - 1].linked_vehicle = self;
}
}
watch_convoy_trig()
{
var_0 = getent( "convoy_touchup", "targetname" );
while ( isdefined( var_0 ) )
{
var_0 waittill( "trigger", var_1 );
if ( isdefined( level.last_spawned_veh ) && var_1 == level.last_spawned_veh )
var_0 delete();
foreach ( var_3 in var_1.cargo )
var_3 delete();
var_1 delete();
}
}
player_get_mk32()
{
wait 4;
if ( !common_scripts\utility::flag( "picked_up_mk32" ) )
{
level.allies[0] maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_mrk_grabthatgrenadelauncher" );
var_0 = 0;
var_1 = 0.2;
var_2 = 8;
for (;;)
{
wait( var_1 );
if ( common_scripts\utility::string_starts_with( level.player getcurrentprimaryweapon(), "mk32_du" ) )
break;
var_0++;
if ( var_0 * var_1 > var_2 )
{
level.allies[0] maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_mrk_pickupthelauncher" );
var_2 = var_2 * 1.5;
var_0 = 0;
}
}
}
level.allies[0] maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_mrk_thegrenadesareon" );
common_scripts\utility::flag_set( "start_convoy" );
wait 4.5;
level.allies[0] thread maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_mrk_heretheycometag" );
}
keegan_tinkers_with_rifle()
{
level waittill( "stop_intro_loop" );
wait 0.1;
level.allies[1] maps\_utility::enable_ai_color();
maps\enemyhq_code::safe_activate_trigger_with_targetname( "keegan_post_tinker" );
var_0 = getnode( "keegan_please_shift_it", "targetname" );
level.allies[1] setgoalnode( var_0 );
level.allies[1].goalradius = 64;
wait 0.2;
level.allies[1] maps\_utility::gun_recall();
}
go_street()
{
level.allies[0] thread maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_mrk_convoyclearletsmove" );
common_scripts\utility::flag_set( "intro_done" );
thread maps\enemyhq_audio::aud_convoy_done();
common_scripts\utility::flag_waitopen_or_timeout( "player_looking_out_window", 5 );
level notify( "keegan_stop_tinkering" );
level notify( "stop_intro_loop" );
waittillframeend;
var_0 = getent( "beta_blocker_player_clip", "targetname" );
if ( isdefined( var_0 ) )
var_0 notsolid();
common_scripts\utility::flag_set( "FLAG_move_to_player_truck" );
if ( isdefined( level.intro_grenades ) )
{
level.player giveweapon( "fraggrenade" );
level.player setweaponammoclip( "fraggrenade", level.intro_grenades );
}
}
merrick_look_at_flyby()
{
wait 2;
level.allies[0] maps\_utility::disable_ai_color();
var_0 = common_scripts\utility::getstruct( "merrick_plane_look", "targetname" );
level.allies[0].animname = "baker";
var_0 maps\_anim::anim_reach_solo( level.allies[0], "merrick_intro_watch_planes" );
var_0 maps\_anim::anim_single_solo( level.allies[0], "merrick_intro_watch_planes" );
common_scripts\utility::flag_set( "merrick_done_lookat" );
level notify( "merrick_done_lookat" );
}
ally_shoot_convoy()
{
level endon( "stop_convoy" );
self.old_weapon = self.weapon;
self notify( "got_mk32dud" );
thread ally_grenade();
anim.grenadetimers["AI_teargas_grenade"] = randomintrange( 0, 20000 );
var_0 = self;
var_1 = getent( "stick_me", "targetname" );
var_2 = 0;
var_3 = 0;
thread watch_last_truck();
for (;;)
{
var_1 waittill( "trigger", var_4 );
if ( var_4 maps\_vehicle::isvehicle() && var_0 != var_4 )
{
var_0 = var_4;
self setentitytarget( var_4 );
wait 0.5;
var_5 = self getmuzzlepos();
var_6 = var_4.origin + ( 0, 0, 90 );
wait 0.5;
self clearentitytarget( var_4 );
var_2++;
if ( level.player_hit_convoy == 0 && common_scripts\utility::mod( var_2, 4 ) == 0 )
{
if ( var_2 < 5 )
level.allies[0] thread maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_mrk_tagthetrucks" );
else
level.allies[0] thread maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_mrk_logantagem" );
}
continue;
}
wait 1.2;
}
}
watch_last_truck()
{
var_0 = getent( "stick_me", "targetname" );
var_1 = level.player;
for (;;)
{
var_0 waittill( "trigger", var_2 );
if ( var_1 == var_2 )
continue;
var_1 = var_2;
if ( isdefined( level.last_spawned_veh ) && var_2 == level.last_spawned_veh )
{
wait 3;
if ( level.player_hit_convoy == 0 )
{
setdvar( "ui_deadquote", &"ENEMY_HQ_YOU_FAILED_TO_HIT_ENOUGH" );
maps\_utility::missionfailedwrapper();
wait 20;
}
level notify( "stop_convoy" );
break;
}
}
}
ally_grenade()
{
level endon( "intro_done" );
for (;;)
{
level.allies[0] waittill( "missile_fire", var_0, var_1 );
playfxontag( common_scripts\utility::getfx( "vfx_glow_stickyg_static" ), var_0, "tag_origin" );
var_0.ally_fired = 1;
var_0 thread track_dud();
}
}
handle_m32_launcher()
{
level notify( "watching_player_mk32" );
level endon( "watching_player_mk32" );
level endon( "death" );
level.mk32_intro_fire = 0;
thread maps\enemyhq_audio::aud_listen_mk32_reload();
for (;;)
{
level.player waittill( "grenade_fire", var_0, var_1 );
if ( common_scripts\utility::string_starts_with( var_1, "mk32_du" ) )
{
var_2 = level.player getweaponammoclip( "mk32_dud+eotech_sp_mk32dud" );
if ( var_2 == 0 )
level.player notify( level.c4_weaponname );
playfxontag( common_scripts\utility::getfx( "vfx_glow_stickyg_static" ), var_0, "tag_origin" );
var_0.ally_fired = 0;
if ( level.mk32_intro_fire )
var_0 thread track_dud();
else
var_0 thread track_live();
}
}
}
handle_sticky_clacker()
{
self endon( "death" );
var_0 = 0;
level.num_active_clacks = 0;
for (;;)
{
var_1 = common_scripts\utility::waittill_any_return( "sticky_gone_boom", "new_sticky_attached", "clack_stickies" );
var_2 = getentarray( "live_sticky_grenade", "targetname" );
if ( var_1 == "sticky_gone_boom" )
{
if ( var_2.size == 0 )
self notify( "cancel_clacker_ui" );
continue;
}
if ( var_1 == "clack_stickies" )
{
level.my_clack_num = 0;
level.player notify( "exploderize_me" );
self notify( "cancel_clacker_ui" );
continue;
}
if ( var_1 == "new_sticky_attached" )
{
if ( var_2.size == 1 )
{
var_0 = 1;
thread watch_clacker();
}
}
}
}
safe_switch_to_detonator()
{
while ( level.switching_from_detonator )
wait 0.05;
level.switching_to_detonator = 1;
level.preclack_weapon = self getcurrentweapon();
self giveweapon( level.c4_weaponname );
self setweaponammoclip( level.c4_weaponname, 0 );
self switchtoweapon( level.c4_weaponname );
self disableweaponswitch();
self disableweaponpickup();
self waittill( "weapon_change", var_0 );
level.switching_to_detonator = 0;
}
safe_switch_from_detonator()
{
while ( level.switching_to_detonator )
wait 0.05;
level.switching_from_detonator = 1;
self switchtoweapon( level.preclack_weapon );
self waittill( "weapon_change" );
self takeweapon( level.c4_weaponname );
level.switching_from_detonator = 0;
self enableweaponswitch();
self enableweaponpickup();
}
watch_clacker()
{
self endon( "death" );
self notify( "stop_watch_clacker" );
self endon( "stop_watch_clacker" );
self notifyonplayercommand( level.c4_weaponname, "+actionslot 4" );
self setweaponhudiconoverride( "actionslot4", "inventory_stickybomb" );
refreshhudammocounter();
var_0 = common_scripts\utility::waittill_any_return( "cancel_clacker_ui", level.c4_weaponname );
if ( var_0 == "cancel_clacker_ui" )
{
self setweaponhudiconoverride( "actionslot4", "none" );
self notifyonplayercommand( "", "+actionslot 4" );
refreshhudammocounter();
return;
}
thread safe_switch_to_detonator();
for (;;)
{
var_0 = common_scripts\utility::waittill_any_return( "detonate", level.c4_weaponname, "cancel_clacker_ui" );
thread safe_switch_from_detonator();
if ( var_0 == "detonate" )
{
self notify( "clack_stickies" );
self setweaponhudiconoverride( "actionslot4", "none" );
self notifyonplayercommand( "", "+actionslot 4" );
refreshhudammocounter();
return;
}
else
{
if ( var_0 == level.c4_weaponname )
{
self setweaponhudiconoverride( "actionslot4", "none" );
self notifyonplayercommand( "", "+actionslot 4" );
thread watch_clacker();
wait 1;
continue;
}
if ( var_0 == "cancel_clacker_ui" )
{
self setweaponhudiconoverride( "actionslot4", "none" );
self notifyonplayercommand( "", "+actionslot 4" );
refreshhudammocounter();
return;
}
else
{
iprintlnbold( "WATCH CLACKER messedup- got unknown message" );
return;
}
}
}
}
track_live()
{
level.player endon( "death" );
var_0 = self.origin;
self waittill( "explode", var_1 );
if ( !isdefined( self ) )
return;
stopfxontag( common_scripts\utility::getfx( "vfx_glow_stickyg_static" ), self, "tag_origin" );
if ( level.mk32_mode != "delay" )
{
var_2 = length( level.player.origin + ( 0, 0, 36 ) - self.origin );
if ( var_2 > 256 )
{
magicgrenademanual( "fraggrenade", var_1, ( 0, 0, 0 ), 0 );
return;
}
}
var_3 = ( var_0 - var_1 ) / 2;
var_0 = var_3 + var_1;
var_1 = var_1 - var_3;
var_4 = 6;
var_5 = bullettrace( var_0, var_1, 1, level.player, 1, 1 );
if ( isdefined( var_5 ) && isdefined( var_5["position"] ) )
{
var_1 = var_5["position"] + var_5["normal"] * 1;
var_6 = spawn( "script_model", var_1 );
var_6 setmodel( "weapon_sticky_grenade" );
var_6.angles = vectortoangles( var_5["normal"] );
var_6.targetname = "live_sticky_grenade";
var_7 = common_scripts\utility::spawn_tag_origin();
var_8 = undefined;
var_9 = 1;
if ( isdefined( var_5["entity"] ) )
{
var_10 = var_5["entity"];
if ( isai( var_10 ) && isalive( var_10 ) )
{
var_11 = 1;
if ( !var_10.delayeddeath && !isdefined( var_10.melee ) && ( !isdefined( var_10.magic_bullet_shield ) || var_10.magic_bullet_shield == 0 ) )
{
var_10 thread maps\_utility::magic_bullet_shield( 1 );
var_11 = 0;
}
else
var_9 = 0;
var_10 thread do_dud_damage( var_0, var_1 );
var_10 waittill( "damage", var_12, var_13, var_14, var_15, var_16, var_17, var_18, var_19, var_20, var_21 );
if ( !var_11 )
var_10 maps\_utility::stop_magic_bullet_shield();
var_22 = "";
if ( isdefined( var_19 ) && var_19 != "" )
var_22 = var_19;
else if ( isdefined( var_18 ) && var_18 != "" )
var_22 = var_18;
if ( var_22 != "" )
var_6 linkto( var_10, var_22 );
else
var_9 = 0;
}
else
var_6 linkto( var_10 );
}
if ( var_9 )
{
var_7 linkto( var_6 );
playfxontag( common_scripts\utility::getfx( "vfx_glow_stickyg_blink" ), var_7, "tag_origin" );
wait 7;
stopfxontag( common_scripts\utility::getfx( "vfx_glow_stickyg_blink" ), var_7, "tag_origin" );
var_7 unlink();
var_7 delete();
var_6 unlink();
}
var_6 delete();
}
}
do_dud_damage( var_0, var_1 )
{
wait 0.05;
magicbullet( "nosound_magicbullet", var_0, var_1, level.player );
}
track_dud()
{
level endon( "death" );
var_0 = self.origin;
var_1 = common_scripts\utility::spawn_tag_origin();
var_1 linkto( self );
thread maps\enemyhq_audio::aud_mk32_dud_beep( var_1 );
self waittill( "explode", var_2 );
if ( !isdefined( self ) )
return;
stopfxontag( common_scripts\utility::getfx( "vfx_glow_stickyg_static" ), self, "tag_origin" );
var_3 = self.ally_fired;
var_1 unlink();
var_4 = ( var_0 - var_2 ) / 2;
var_0 = var_4 + var_2;
var_2 = var_2 - var_4;
var_5 = bullettrace( var_0, var_2, 1, level.player, 1, 1 );
if ( isdefined( var_5 ) && isdefined( var_5["position"] ) )
{
var_6 = "default";
if ( isdefined( var_5["surfacetype"] ) )
var_6 = var_5["surfacetype"];
var_2 = var_5["position"] + var_5["normal"] * 1.5;
var_7 = spawn( "script_model", var_2 );
var_7 setmodel( "weapon_sticky_grenade" );
var_7.angles = vectortoangles( var_5["normal"] );
var_8 = undefined;
var_9 = undefined;
if ( isdefined( var_5["entity"] ) )
{
var_9 = var_5["entity"];
if ( isdefined( var_9.linked_vehicle ) )
var_9 = var_9.linked_vehicle;
}
if ( isdefined( var_9 ) && ( var_9 == level.player_truck || isai( var_9 ) && var_9.team == "allies" ) )
{
if ( var_9 == level.player_truck )
setdvar( "ui_deadquote", &"ENEMY_HQ_YOUR_ACTIONS_COMPROMISED" );
else
setdvar( "ui_deadquote", &"ENEMY_HQ_FRIENDLY_FIRE_WILL_NOT" );
maps\_utility::missionfailedwrapper();
wait 10;
}
var_10 = 0;
if ( isdefined( var_9 ) && var_9 maps\_vehicle::isvehicle() )
{
var_10 = 1;
if ( !isdefined( var_9.already_stuck ) && var_3 == 0 )
{
var_9.already_stuck = 0;
if ( level.player_hit_convoy < 5 && level.player_hit_convoy % 2 == 0 )
thread player_hit_vo( var_9.vehicletype, level.player_hit_convoy );
level.player_hit_convoy++;
level.player notify( "player_tagged_truck" );
}
var_7 linkto( var_9 );
}
var_1 linkto( var_7 );
thread maps\enemyhq_audio::aud_mk32_dud_beep_hit( var_1, var_10, var_6 );
playfxontag( common_scripts\utility::getfx( "vfx_glow_stickyg_blink" ), var_1, "tag_origin" );
wait 0.6;
wait 7;
stopfxontag( common_scripts\utility::getfx( "vfx_glow_stickyg_blink" ), var_1, "tag_origin" );
var_1 unlink();
var_1 delete();
var_7 unlink();
var_7 delete();
}
else
var_1 delete();
}
player_hit_vo( var_0, var_1 )
{
if ( !isdefined( level.hit_vo ) )
level.hit_vo = 0;
var_2 = [];
var_2[var_2.size] = "enemyhq_mrk_thatsahit";
var_2[var_2.size] = "enemyhq_mrk_confirmedhit";
var_2[var_2.size] = "enemyhq_mrk_thatstuck";
var_2[var_2.size] = "enemyhq_mrk_gotit";
var_2[var_2.size] = "enemyhq_mrk_ontarget";
level.allies[0] thread maps\enemyhq_code::char_dialog_add_and_go( var_2[level.hit_vo] );
level.hit_vo++;
if ( level.hit_vo >= var_2.size )
level.hit_vo = 0;
}
watch_for_remote_turret_activate( var_0 )
{
self endon( "death" );
self notify( "stop_watching_remote_sniper" );
self endon( "stop_watching_remote_sniper" );
var_1 = common_scripts\utility::getstruct( "sniper_placement", "targetname" );
var_2 = common_scripts\utility::getstruct( "sniper_teleport_default", "targetname" );
for (;;)
{
self waittill( "use_remote_turret" );
if ( self getstance() == "prone" )
self setstance( "crouch" );
var_3 = var_2.origin + anglestoforward( var_2.angles ) * var_0;
var_4 = var_2.angles;
maps\enemyhq_remoteturret::remote_turret_activate( "remote_sniper", var_3, var_4, level.remote_turret_right_arc, level.remote_turret_left_arc, level.remote_turret_top_arc, level.remote_turret_bottom_arc );
var_5 = common_scripts\utility::waittill_any_return( "use_remote_turret", "remote_turret_deactivate" );
if ( var_5 == "use_remote_turret" )
{
setsaveddvar( "cg_cinematicFullScreen", "0" );
thread maps\enemyhq_code::set_black_fade( 1, 0.1 );
self notify( "remote_turret_nozoom" );
wait 0.2;
var_6 = 0;
if ( isdefined( level.sniper_wait_extra_black ) )
{
var_6 = level.sniper_wait_extra_black;
if ( isdefined( level.ps3 ) && level.ps3 )
var_6 = var_6 + 0.75;
}
self giveweapon( "remote_tablet_nopullout" );
level.pre_sniping_weapon = "remote_tablet_nopullout";
thread maps\enemyhq_remoteturret::remote_turret_deactivate();
if ( var_6 )
wait( var_6 );
cinematicingame( "ehq_tablet_outro" );
wait 0.1;
self giveweapon( self.presniper_weapon, 0, 0, 0, 1 );
self setweaponammoclip( self.presniper_weapon, self.presniper_weapon_clip );
self setweaponammostock( self.presniper_weapon, self.presniper_weapon_stock );
self switchtoweapon( self.presniper_weapon );
self notify( "remote_sniper_pad_down" );
wait 0.9;
thread maps\enemyhq_code::set_black_fade( 0, 0.1 );
wait 0.1;
self.ignoreme = 0;
self.allow_dry_fire = 0;
if ( isdefined( level.presnipe_grenades ) )
{
level.player giveweapon( "fraggrenade" );
level.player setweaponammoclip( "fraggrenade", level.presnipe_grenades );
level.presnipe_grenades = undefined;
}
wait 0.1;
wait 1.5;
self takeweapon( "remote_tablet" );
self takeweapon( "remote_tablet_nopullout" );
}
}
}
handle_loopers()
{
var_0 = maps\_vehicle::create_vehicle_from_spawngroup_and_gopath( 983 );
common_scripts\utility::array_thread( var_0, ::handle_looper );
}
handle_looper()
{
self endon( "kill_war_ambiance" );
var_0 = self.origin;
var_1 = self.angles;
var_2 = self.target;
for (;;)
{
self waittill( "reached_dynamic_path_end" );
self hide();
self vehicle_teleport( var_0, var_1 );
wait 0.1;
self show();
var_3 = common_scripts\utility::getstruct( var_2, "targetname" );
thread maps\_vehicle::vehicle_paths( var_3 );
}
}
cargo_choppers()
{
var_0 = getentarray( "intro_hide_on_load", "script_noteworthy" );
common_scripts\utility::array_call( var_0, ::show );
common_scripts\utility::array_call( var_0, ::notsolid );
var_1 = maps\_vehicle::create_vehicle_from_spawngroup_and_gopath( 982 );
thread handle_loopers();
var_2 = getentarray( "cargo_heli_group2", "targetname" );
foreach ( var_4 in var_2 )
{
var_5 = getentarray( var_4.script_noteworthy, "targetname" );
foreach ( var_7 in var_5 )
var_7 hide();
var_4.cargo_item_spawners = var_5;
}
var_10 = 0;
for ( var_11 = 1; var_11 > 0; var_11-- )
{
for ( var_12 = var_2.size; var_12 > 0; var_12-- )
{
if ( var_10 >= var_2.size )
var_10 = 0;
thread spawn_cargo_carrier( var_2[var_10] );
var_10++;
}
}
}
spawn_cargo_carrier( var_0 )
{
var_1 = maps\_vehicle::vehicle_spawn( var_0 );
wait 0.1;
var_2 = var_0.cargo_item_spawners;
var_3 = [];
for ( var_4 = 0; var_4 < var_2.size; var_4++ )
{
var_3[var_4] = spawn( var_2[var_4].classname, var_2[var_4].origin );
var_3[var_4].angles = var_2[var_4].angles;
if ( var_3[var_4].classname == "script_model" )
{
var_3[var_4] setmodel( var_2[var_4].model );
var_3[var_4] notsolid();
}
var_3[var_4] linkto( var_1 );
}
wait 0.1;
thread maps\_vehicle::gopath( var_1 );
var_1 waittill( "death" );
foreach ( var_6 in var_3 )
var_6 delete();
}
air_armada()
{
var_0 = getentarray( "air_armada", "targetname" );
common_scripts\utility::array_thread( var_0, ::oneshot_armada, 60000, 15 );
var_0 = getentarray( "air_armada_looper", "targetname" );
common_scripts\utility::array_thread( var_0, ::loop_armada, 140000, 28 );
}
oneshot_armada( var_0, var_1 )
{
if ( !isdefined( var_0 ) )
var_0 = 20000;
if ( !isdefined( var_1 ) )
var_1 = int( self.script_noteworthy );
var_2 = anglestoforward( self.angles );
var_3 = self.origin + var_2 * var_0;
self moveto( var_3, var_1, 1, 1 );
wait( var_1 );
self delete();
}
loop_armada( var_0, var_1 )
{
if ( !isdefined( var_0 ) )
var_0 = 30000.0;
if ( !isdefined( var_1 ) )
var_1 = int( self.script_noteworthy ) * 1.5;
var_1 = var_1 + ( randomfloat( 2 ) - 1 );
self endon( "kill_war_ambiance" );
var_2 = self.origin;
var_3 = self.angles;
for (;;)
{
var_4 = anglestoforward( self.angles );
var_5 = self.origin + var_4 * var_0;
self moveto( var_5, var_1, 1, 1 );
thread maps\enemyhq_audio::aud_fx_planes();
wait( var_1 );
self hide();
wait( randomfloatrange( 3, 8 ) );
self.origin = var_2;
self.angles = var_3;
wait 0.1;
self show();
}
}
ship_vista()
{
var_0 = getentarray( "ship_cards", "script_noteworthy" );
var_1 = 30000.0;
var_2 = 300;
foreach ( var_4 in var_0 )
{
var_4.my_extra = 1;
var_5 = 3;
if ( var_4.origin[1] > -30000 )
var_5 = 0;
else if ( var_4.origin[1] > -36000 )
var_5 = 1;
else if ( var_4.origin[1] > -42000 )
{
var_4.my_extra = 1.5;
var_5 = 2;
}
else
var_4.my_extra = 2;
var_6 = anglestoforward( var_4.angles );
var_4.startpos = var_4.origin - var_6 * var_1 / 2;
var_4.origpos = var_4.origin;
var_4.startang = var_4.angles;
var_4.dest = var_4.origin + var_6 * var_1 / 2 * var_4.my_extra;
var_4.curr_movetime = var_2 / 2;
var_4.my_speed = var_5;
var_7 = spawn( "script_model", var_4.startpos );
var_7.startpos = var_7.origin;
var_7.angles = var_4.angles;
var_7.startang = var_7.angles;
var_7.dest = var_4.dest;
var_7.curr_movetime = var_2;
var_7.my_speed = var_5;
var_7 setmodel( var_4.model );
var_4 thread loop_new_ships();
var_7 thread loop_new_ships();
}
}
loop_new_ships()
{
var_0 = 30000.0;
var_1 = 300;
if ( !isdefined( self.my_extra ) )
self.my_extra = 1;
self endon( "kill_war_ambiance" );
var_2 = anglestoforward( self.angles );
var_3 = [ 1, 1.3, 1.7, 2 ];
for (;;)
{
self moveto( self.dest, self.curr_movetime * var_3[self.my_speed] * self.my_extra, 1, 1 );
wait( self.curr_movetime * var_3[self.my_speed] * self.my_extra );
self.curr_movetime = var_1;
self.origin = self.startpos;
self.angles = self.startang;
}
}
blow_wall()
{
common_scripts\utility::flag_wait( "kick_off_atrium_combat" );
var_0 = getent( "security_gate_crash_pieces2", "targetname" );
var_1 = common_scripts\utility::getstruct( "player_teleport_atrium", "targetname" );
var_0.animname = "hamburg_security_gate_crash";
common_scripts\utility::exploder( 666 );
common_scripts\utility::exploder( 777 );
playfxontag( level._effect["vfx_ehq_seat_trail"], var_0, "J_frag_05" );
playfxontag( level._effect["vfx_ehq_seat_trail"], var_0, "J_frag_17" );
playfxontag( level._effect["vfx_ehq_seat_trail"], var_0, "J_frag_23" );
playfxontag( level._effect["vfx_ehq_seat_trail"], var_0, "J_frag_28" );
playfxontag( level._effect["vfx_ehq_seat_trail"], var_0, "J_frag_49" );
playfxontag( level._effect["vfx_ehq_seat_trail"], var_0, "J_frag_51" );
playfxontag( level._effect["vfx_ehq_seat_trail"], var_0, "J_frag_30" );
var_0 useanimtree( level.scr_animtree[var_0.animname] );
thread maps\enemyhq_code::play_rumble_seconds( "damage_heavy", 1 );
var_1 thread maps\_anim::anim_single_solo( var_0, "security_gate_crash" );
wait 1;
thread maps\enemyhq_code::play_rumble_seconds( "damage_light", 1 );
wait 1.25;
thread maps\enemyhq_code::play_rumble_seconds( "damage_heavy", 1 );
}
handle_intro_sniper_outline()
{
for (;;)
{
var_0 = gettime();
var_1 = anglestoforward( level.player getplayerangles() );
var_2 = common_scripts\utility::array_combine( level.drones["axis"].array, getaiarray() );
foreach ( var_4 in var_2 )
{
if ( !isdefined( var_4 ) )
continue;
if ( isdefined( var_4.dot_check_time ) && var_4.dot_check_time > var_0 )
continue;
var_5 = 0.998;
var_6 = 0;
var_7 = vectornormalize( var_4.origin - level.player.origin );
if ( vectordot( var_1, var_7 ) >= var_5 )
var_6 = 1;
if ( isdefined( var_4.has_target_shader ) && var_4.has_target_shader && ( !isdefined( var_4.disable_sniper_outline ) || !var_4.disable_sniper_outline ) )
{
if ( var_6 )
continue;
}
if ( ( !isdefined( var_4.has_target_shader ) || var_4.has_target_shader == 0 ) && isdefined( var_4.disable_sniper_outline ) && var_4.disable_sniper_outline )
continue;
if ( ( !isdefined( var_4.disable_sniper_outline ) || !var_4.disable_sniper_outline ) && var_6 )
{
var_4.has_target_shader = 1;
if ( var_4.team == "axis" )
var_4 maps\_utility::set_hudoutline( "enemy", 1 );
else
var_4 maps\_utility::set_hudoutline( "friendly", 1 );
var_4.dot_check_time = var_0 + 2000;
var_4 thread maps\enemyhq_remoteturret::remove_remote_turret_target_on_death();
continue;
}
var_4.has_target_shader = 0;
var_4 notify( "remove_sniper_outline" );
}
if ( isdefined( level.dog ) )
{
if ( isdefined( level.dog.has_target_shader ) && level.dog.has_target_shader && isdefined( level.dog.disable_sniper_outline ) && level.dog.disable_sniper_outline )
{
level.dog hudoutlinedisable();
level.dog.has_target_shader = 0;
}
else if ( ( !isdefined( level.dog.has_target_shader ) || !level.dog.has_target_shader ) && ( !isdefined( level.dog.disable_sniper_outline ) || !level.dog.disable_sniper_outline ) )
{
level.dog maps\_utility::set_hudoutline( "friendly", 1 );
level.dog.has_target_shader = 1;
}
}
wait 0.05;
}
}
intro_plane_flyby_01()
{
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "intro_escort_01a" );
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "intro_escort_01b" );
var_2 = getentarray( "flybyA_hide_on_load", "script_noteworthy" );
common_scripts\utility::array_call( var_2, ::show );
var_3 = getent( "intro_transport_03", "targetname" );
var_4 = getent( "intro_transport_04", "targetname" );
var_5 = getent( "intro_transport_05", "targetname" );
var_3 thread maps\enemyhq_intro::intro_transport_mover( 65000, 17 );
var_4 thread maps\enemyhq_intro::intro_transport_mover( 65000, 17 );
var_5 thread maps\enemyhq_intro::intro_transport_mover( 65000, 17 );
}
watch_weaponswitch()
{
if ( level.start_point != "introshoot" )
{
wait 0.5;
level.player waittill( "weapon_change", var_0 );
level.player disableweaponswitch();
}
level.player disableweapons();
}
digital_malarky( var_0, var_1 )
{
level.player digitaldistortsetparams( 1, 0 );
wait 0.7;
var_2 = 1;
var_3 = 0.3;
var_4 = var_2;
if ( isdefined( var_0 ) )
var_3 = var_0;
var_5 = 1.25;
if ( isdefined( var_1 ) )
var_5 = var_1;
var_6 = 0.05;
var_7 = var_5 / var_6;
var_8 = var_2 / var_7;
var_9 = 90 / var_7;
for ( var_10 = 0; var_4 > var_8; var_10 = var_10 + var_9 )
{
level.player digitaldistortsetparams( cos( var_10 ), var_3 );
wait 0.05;
var_4 = var_4 - var_8;
}
level.player digitaldistortsetparams( 0, 1 );
}
swapout_mk32()
{
self giveweapon( level.player_intro_weapon );
if ( maps\_utility::player_has_weapon( "m9a1" ) )
self takeweapon( "m9a1" );
if ( maps\_utility::player_has_weapon( "freerunner" ) )
self takeweapon( "freerunner" );
self enableweaponswitch();
self enableweaponpickup();
common_scripts\utility::flag_wait( "FLAG_player_enter_truck" );
level.mk32_intro_fire = 0;
}
text_3d_ent( var_0 )
{
}
#using_animtree("generic_human");
pick_drone_patrol_anim()
{
var_0 = undefined;
if ( self.update_drone_anim )
{
var_0 = spawnstruct();
if ( randomint( 5 ) == 1 )
{
self.moveplaybackrate = randomfloatrange( 0.9, 1.1 );
var_1 = %patrol_bored_patrolwalk_twitch;
}
else
{
self.moveplaybackrate = randomfloatrange( 0.95, 1.05 );
var_1 = %patrol_bored_patrolwalk;
}
var_0.runanim = var_1;
var_2 = maps\_drone::get_anim_data( var_0.runanim );
var_0.anim_relative = var_2.anim_relative;
var_0.run_speed = var_2.run_speed;
return var_0;
}
return var_0;
}
pick_drone_gundown_anim()
{
var_0 = undefined;
if ( self.update_drone_anim )
{
var_0 = spawnstruct();
self.update_drone_anim = 0;
if ( !randomint( 5 ) )
{
self.moveplaybackrate = randomfloatrange( 0.9, 1.1 );
var_1 = randomint( level.gundown_twitch.size );
var_2 = level.gundown_twitch[var_1];
self.gundown_walk = undefined;
}
else
{
self.moveplaybackrate = randomfloatrange( 0.95, 1.05 );
if ( !isdefined( self.gundown_walk ) )
{
var_1 = randomint( level.gundown_patrol.size );
self.gundown_walk = level.gundown_patrol[var_1];
}
var_2 = self.gundown_walk;
}
var_0.runanim = var_2;
var_3 = maps\_drone::get_anim_data( var_0.runanim );
var_0.anim_relative = var_3.anim_relative;
var_0.run_speed = var_3.run_speed;
return var_0;
}
return var_0;
}
watch_anim_end( var_0 )
{
if ( !isdefined( var_0 ) )
var_0 = "gundown";
self endon( "death" );
self endon( "goal" );
self.update_drone_anim = 1;
for (;;)
{
self waittillmatch( "drone_anim", "end" );
self.update_drone_anim = 1;
if ( var_0 == "gundown" )
var_1 = pick_drone_gundown_anim();
else
var_1 = pick_drone_patrol_anim();
if ( !isdefined( self.last_runanim ) || isdefined( var_1 ) && var_1.runanim != self.last_runanim )
{
self.last_runanim = var_1.runanim;
var_2 = var_1.runanim;
var_3 = var_1.run_speed;
var_4 = var_1.anim_relative;
if ( !var_4 )
thread maps\_drone::drone_move_z( var_3 );
else
self notify( "drone_move_z" );
maps\_drone::drone_play_looping_anim( var_2, self.moveplaybackrate );
wait 0.3;
}
}
}
pick_drone_gundown_dummy()
{
return undefined;
}
field_activity()
{
level.runanimdebug = 0;
var_0 = maps\_utility::array_spawn_targetname( "field_activity_drones" );
level.gundown_twitch = [ %patrol_bored_gundown_walk_twitch1, %patrol_bored_gundown_walk_twitch1, %patrol_bored_gundown_walk_twitch2, %patrol_bored_gundown_walk_twitch2, %patrol_bored_gundown_walk_twitch3, %patrol_bored_gundown_walk_twitch4, %patrol_bored_gundown_walk_twitch4 ];
level.gundown_patrol = [ %patrol_bored_gundown_walk1, %patrol_bored_gundown_walk1, %patrol_bored_gundown_walk2, %patrol_bored_gundown_walk2, %patrol_bored_gundown_walk3 ];
thread setup_soccer_scene();
foreach ( var_2 in var_0 )
{
var_2.ignoreall = 1;
if ( isdefined( var_2.script_noteworthy ) && var_2.script_noteworthy == "pushup_guy1" )
{
var_2.animname = "generic";
var_2 thread maps\_anim::anim_loop_solo( var_2, "intro_pushups1" );
continue;
}
if ( isdefined( var_2.script_noteworthy ) && var_2.script_noteworthy == "pushup_guy2" )
{
var_2.animname = "generic";
var_2 thread maps\_anim::anim_loop_solo( var_2, "intro_pushups2" );
continue;
}
if ( !isdefined( var_2.script_patroller ) )
{
if ( randomint( 4 ) )
{
var_2.debug_anim = 0;
var_2.drone_move_time = -1;
var_2 thread watch_anim_end();
var_2.drone_move_callback = ::pick_drone_gundown_dummy;
continue;
}
var_2 thread watch_anim_end( "patrol" );
var_2.drone_move_time = -1;
var_2.drone_move_callback = ::pick_drone_gundown_dummy;
}
}
var_4 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "field_activity_veh_01" );
var_5 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "field_activity_veh_02" );
common_scripts\utility::flag_wait( "FLAG_player_enter_truck" );
foreach ( var_2 in var_0 )
{
if ( isdefined( var_2 ) )
var_2 delete();
}
}
setup_soccer_scene()
{
var_0 = common_scripts\utility::getstruct( "field_soccer_struct", "targetname" );
var_1 = getent( "soccer_pass_guy1", "targetname" );
level.soccer_pass_guy1 = var_1 maps\_utility::spawn_ai( 1 );
var_2 = getent( "soccer_pass_guy2", "targetname" );
level.soccer_pass_guy2 = var_2 maps\_utility::spawn_ai( 1 );
var_3 = getent( "soccer_goal_guy1", "targetname" );
level.soccer_goal_guy1 = var_3 maps\_utility::spawn_ai( 1 );
var_4 = getent( "soccer_goal_guy2", "targetname" );
level.soccer_goal_guy2 = var_4 maps\_utility::spawn_ai( 1 );
level.soccer_goal_guy1.animname = "soccer_goal_guy1";
level.soccer_goal_guy2.animname = "soccer_goal_guy2";
level.soccer_pass_guy1.animname = "soccer_pass_guy1";
level.soccer_pass_guy2.animname = "soccer_pass_guy2";
level.soccerball_goal = maps\_utility::spawn_anim_model( "soccerball_goal", var_0.origin );
level.soccerball_goal setmodel( "soccer_ball" );
level.soccerball_goal.animname = "soccerball_goal";
level.soccerball_pass = maps\_utility::spawn_anim_model( "soccerball_pass", var_0.origin );
level.soccerball_pass setmodel( "soccer_ball" );
level.soccerball_pass.animname = "soccerball_pass";
var_5 = [];
var_5[0] = level.soccer_pass_guy1;
var_5[1] = level.soccer_pass_guy2;
var_5[2] = level.soccerball_pass;
var_6 = [];
var_6[0] = level.soccer_goal_guy1;
var_6[1] = level.soccer_goal_guy2;
var_6[2] = level.soccerball_goal;
var_0 thread maps\_anim::anim_loop( var_5, "soccer_scene_pass" );
var_0 thread maps\_anim::anim_loop( var_6, "soccer_scene_goal" );
common_scripts\utility::flag_wait( "FLAG_player_enter_truck" );
foreach ( var_8 in var_5 )
{
if ( isdefined( var_8 ) )
var_8 delete();
}
foreach ( var_8 in var_6 )
{
if ( isdefined( var_8 ) )
var_8 delete();
}
}
exfil_sniper()
{
level.player endon( "death" );
common_scripts\utility::flag_wait( "start_exfil_sniper" );
level.remote_turret_right_arc = 30;
level.remote_turret_left_arc = 30;
level.remote_turret_top_arc = 2;
level.remote_turret_bottom_arc = 25;
wait_for_dpad();
level.player.remote_canreload = 1;
level.player setup_sniper_view( "exfil_sniper_struct" );
level.player endon( "remote_turret_deactivate" );
common_scripts\utility::flag_wait( "remote_sniper_ready" );
level.remote_turret_max_fov = 45;
level.remote_turret_min_fov = 5;
var_0 = common_scripts\utility::getstruct( "exfil_sniper_struct", "targetname" );
level.player.turret_look_at_ent.origin = var_0.origin;
level.remote_turret_current_fov = 25;
level.player lerpfov( level.remote_turret_current_fov, 0.05 );
level.player thread intro_dof( 0.3 );
level waittill( "done_sniping_early" );
level.player notify( "use_remote_turret" );
}
butchdance()
{
level.player endon( "death" );
common_scripts\utility::flag_wait( "enable_butchdance" );
level.remote_turret_right_arc = 30;
level.remote_turret_left_arc = 10;
level.remote_turret_top_arc = 8;
level.remote_turret_bottom_arc = 8;
wait_for_dpad();
level.player.remote_canreload = 1;
level.player setup_sniper_view( "butchdance_struct", 2000 );
level.player endon( "remote_turret_deactivate" );
common_scripts\utility::flag_wait( "remote_sniper_ready" );
level.remote_turret_max_fov = 30;
level.remote_turret_min_fov = 5;
var_0 = common_scripts\utility::getstruct( "butchdance_struct", "targetname" );
level.player.turret_look_at_ent.origin = var_0.origin;
var_1 = 4;
level.remote_turret_current_fov = 20;
level.player lerpfov( level.remote_turret_current_fov, 0.05 );
level.player thread intro_dof( 0.3 );
level.player waittill( "weapon_fired" );
level notify( "hot_butchdance_action" );
level waittill( "done_sniping_early" );
wait 0.5;
level.player notify( "use_remote_turret" );
}
rpg_kibble()
{
level.player endon( "death" );
level endon( "cancel_rpg_sniper" );
common_scripts\utility::flag_wait( "start_rpg_kibble" );
level.remote_turret_right_arc = 5;
level.remote_turret_left_arc = 5;
level.remote_turret_top_arc = 3;
level.remote_turret_bottom_arc = 3;
wait_for_dpad();
level.player.remote_canreload = 1;
var_0 = common_scripts\utility::spawn_tag_origin();
level.player setup_sniper_view( "rpg_kibble_struct" );
level.player endon( "remote_turret_deactivate" );
common_scripts\utility::flag_wait( "remote_sniper_ready" );
level.remote_turret_max_fov = 15;
level.remote_turret_min_fov = 4;
var_1 = common_scripts\utility::getstruct( "rpg_kibble_struct", "targetname" );
level.player.turret_look_at_ent.origin = var_1.origin;
level.remote_turret_current_fov = 12;
level.player lerpfov( level.remote_turret_current_fov, 0.05 );
level.player thread intro_dof( 0.3 );
level notify( "ppoor_kibble_action" );
common_scripts\utility::flag_wait_or_timeout( "done_sniping_early", 60 );
wait 0.5;
level.player notify( "use_remote_turret" );
var_0 delete();
}
sniper_vip_breach()
{
level.player endon( "death" );
common_scripts\utility::flag_wait( "activate_vip_sniper" );
var_0 = common_scripts\utility::getstruct( "vip_sniper_breach_struct", "targetname" );
level.remote_turret_start_look = var_0.origin;
level.remote_turret_right_arc = 10;
level.remote_turret_left_arc = 10;
level.remote_turret_top_arc = 5;
level.remote_turret_bottom_arc = 5;
wait_for_dpad();
level.player.remote_canreload = 1;
level.player setup_sniper_view( "vip_sniper_breach_struct", 1000 );
level.player endon( "remote_turret_deactivate" );
common_scripts\utility::flag_wait( "remote_sniper_ready" );
level.remote_turret_max_fov = 20;
level.remote_turret_min_fov = 2;
level.player.turret_look_at_ent.origin = var_0.origin;
var_1 = 4;
level.remote_turret_current_fov = 6;
level.player lerpfov( level.remote_turret_current_fov, 0.05 );
level.player thread intro_dof( 0.3 );
level.player waittill( "weapon_fired" );
level.player giveweapon( "freerunner" );
level.player.presniper_weapon = "freerunner";
level.player giveweapon( "freerunner" );
level.player.presniper_weapon = "freerunner";
level notify( "vip_breach_hot" );
level common_scripts\utility::waittill_notify_or_timeout( "done_sniping_early", 10 );
wait 0.5;
level.player notify( "use_remote_turret" );
}
wait_for_dpad()
{
level.player notifyonplayercommand( "scripted_sniper_dpad", "+actionslot 1" );
level.player setweaponhudiconoverride( "actionslot1", "killiconheadshot" );
refreshhudammocounter();
setsaveddvar( "cg_cinematicFullScreen", "0" );
cinematicingame( "ehq_tablet_intro", 1 );
var_0 = 0;
while ( !var_0 )
{
var_0 = 1;
level.player waittill( "scripted_sniper_dpad" );
if ( level.player isthrowinggrenade() || common_scripts\utility::flag( "sniper_block_player_nade" ) )
var_0 = 0;
}
level.presnipe_grenades = level.player getweaponammoclip( "fraggrenade" );
level.player takeweapon( "fraggrenade" );
level.player.ignoreme = 1;
level.player setweaponhudiconoverride( "actionslot1", "none" );
level.player notifyonplayercommand( "", "+actionslot 1" );
level.player.presniper_weapon = level.player getcurrentweapon();
level.player.presniper_weapon_clip = level.player getweaponammoclip( level.player.presniper_weapon );
level.player.presniper_weapon_stock = level.player getweaponammostock( level.player.presniper_weapon );
level.player giveweapon( "remote_tablet" );
level.player switchtoweapon( "remote_tablet" );
level.player notify( "player_switching_to_tablet" );
wait 1.0;
pausecinematicingame( 0 );
wait 0.4;
thread maps\enemyhq_code::set_black_fade( 1, 0.15 );
maps\_utility::delaythread( 0.45, maps\enemyhq_code::set_black_fade, 0, 0.15, 1 );
wait 0.25;
}
sniper_nade_setup()
{
if ( common_scripts\utility::flag_exist( "sniper_block_player_nade" ) )
return;
common_scripts\utility::flag_init( "sniper_block_player_nade" );
level.sniper_player_nades = 0;
level.player sniper_grenade_check();
}
sniper_grenade_check()
{
for (;;)
{
self waittill( "grenade_fire", var_0 );
common_scripts\utility::flag_set( "sniper_block_player_nade" );
thread sniper_grenade_check_dieout( var_0 );
}
}
sniper_grenade_check_dieout( var_0 )
{
level.sniper_player_nades++;
var_0 common_scripts\utility::waittill_notify_or_timeout( "death", 10 );
level.sniper_player_nades--;
waittillframeend;
if ( !level.sniper_player_nades )
common_scripts\utility::flag_clear( "sniper_block_player_nade" );
}
setup_sniper_view( var_0, var_1 )
{
self endon( "death" );
if ( !isdefined( var_1 ) )
var_1 = 0;
level.player thread watch_for_remote_turret_activate( var_1 );
var_2 = common_scripts\utility::getstruct( "sniper_placement", "targetname" );
level.remote_sniper_origin = var_2.origin;
var_3 = common_scripts\utility::getstruct( var_0, "targetname" );
if ( !isdefined( self.turret_look_at_ent ) )
{
self.turret_look_at_ent = spawn( "script_model", self.origin );
self.turret_look_at_ent setmodel( "tag_origin" );
}
self.turret_look_at_ent.origin = var_3.origin;
self notify( "use_remote_turret" );
}
intro_objectives()
{
var_0 = maps\_utility::obj( "find_ajax" );
objective_add( var_0, "active", &"ENEMY_HQ_LOCATE_AJAX_USING_THE" );
objective_current( var_0 );
common_scripts\utility::flag_wait( "bishop_glimpse_over" );
maps\_utility::objective_complete( var_0 );
common_scripts\utility::flag_wait( "picked_up_mk32" );
var_1 = maps\_utility::obj( "tag_trucks" );
objective_add( var_1, "active", &"ENEMY_HQ_MARK_THE_CONVOY_WITH" );
objective_current( var_1 );
level.player waittill( "player_tagged_truck" );
maps\_utility::objective_complete( var_1 );
}