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

1784 lines
55 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
init_a10()
{
precachemodel( "vehicle_a10_warthog_iw6" );
precachemodel( "pose_fed_army_stand_idle" );
precacheitem( "a10_30mm_player_homecoming" );
precacheitem( "remote_tablet" );
precacheitem( "AGM_65" );
precacheshader( "overlay_grain" );
precacheshader( "overlay_static" );
precacheshader( "dogcam_edge" );
precacheshader( "dogcam_center" );
precacheshader( "torpedo_horizonline" );
precacheshader( "torpedo_centerline" );
precacheshader( "torpedo_center" );
precacheshader( "hud_fofbox_self_sp" );
precacheshader( "dogcam_target" );
precacheshader( "remote_chopper_hud_target_hit" );
precacheshader( "apache_target_vehicle" );
precacheshader( "dogcam_bracket_l" );
precacheshader( "dogcam_bracket_r" );
precacheshader( "apache_warn_lock_left" );
precacheshader( "apache_warn_lock_right" );
precacheshader( "apache_warn_incoming_left" );
precacheshader( "apache_warn_incoming_right" );
precacheshader( "dpad_killstreak_a10_support_static" );
precacheshader( "dpad_killstreak_a10_support_inactive" );
precacheshellshock( "homecoming_a10" );
precacheshellshock( "nosound" );
precacherumble( "ac130_25mm_fire" );
setsaveddvar( "r_hudoutlineenable", 1 );
setsaveddvar( "r_hudoutlineWidth", 2 );
setsaveddvar( "r_hudOutlineWhen", 0 );
setsaveddvar( "cg_cinematicFullScreen", "0" );
level.a10_mechanic_skip_end = undefined;
level.a10_mechanic_ambient_dialogue_off = undefined;
level.a10_mechanic_skip_end_vo = undefined;
level.strafetargetvehicles = [];
level.strafevehicles = [];
level.enemydeathicons = 0;
level.strafecooldown = 10000;
level.a10_total_killed_enemies = 0;
level._effect["a10_engineeffect"] = loadfx( "fx/fire/a10_warthog_afterburner" );
level._effect["a10_afterburner"] = loadfx( "fx/fire/a10_warthog_afterburner_ignite" );
level._effect["a10_contrail"] = loadfx( "fx/smoke/jet_contrail" );
level._effect["a10_sonicboom"] = loadfx( "fx/smoke/a10_warthog_sonic_boom" );
level._effect["a10_muzzle_flash"] = loadfx( "fx/_requests/homecoming/a10_muzzle_flash" );
level._effect["a10_player_tracer"] = loadfx( "fx/misc/f15_20mm_tracer_close_ac130" );
level._effect["a10_tracer"] = loadfx( "fx/misc/f15_20mm_tracer_ac130" );
level._effect["a10_impact"] = loadfx( "vfx/moments/homecoming/vfx_a10_exp_dirt_impact" );
level._effect["a10_clouds"] = loadfx( "fx/weather/cloud_tunnel" );
level._effect["flying_face_fx"] = loadfx( "fx/weather/flying_particulates" );
level._effect["a10_shellejects"] = loadfx( "fx/shellejects/a10_shell" );
common_scripts\utility::flag_init( "player_not_doing_strafe" );
common_scripts\utility::flag_init( "used_a10_strafe" );
common_scripts\utility::flag_init( "player_inside_a10" );
common_scripts\utility::flag_init( "player_strafe_done" );
common_scripts\utility::flag_init( "a10_strafe_complete" );
common_scripts\utility::flag_init( "a10_allow_target_elements" );
common_scripts\utility::flag_init( "FLAG_player_used_a10_30mm" );
common_scripts\utility::flag_init( "FLAG_allow_a10_strafe_crash" );
common_scripts\utility::flag_init( "a10_mechanic_off" );
common_scripts\utility::flag_init( "a10_achievement_achieved" );
maps\_utility::add_hint_string( "hint_a10", &"HOMECOMING_HINT_USE_A10_MECHANIC", ::a10_hint_func );
maps\_utility::add_hint_string( "hint_a10_fire", &"HOMECOMING_HINT_A10_FIRE", ::a10_fire_hint_func );
common_scripts\utility::flag_set( "player_not_doing_strafe" );
common_scripts\utility::array_thread( getentarray( "strafe_fov_trig", "targetname" ), ::a10_fov_trig );
level._effect["contrail"] = loadfx( "fx/smoke/jet_contrail" );
}
a10_mechanic_off( var_0 )
{
if ( !common_scripts\utility::flag( "player_not_doing_strafe" ) )
common_scripts\utility::flag_wait( "player_not_doing_strafe" );
common_scripts\utility::flag_set( "a10_mechanic_off" );
level notify( "A10_MECHANIC_OFF" );
if ( isdefined( var_0 ) && var_0 )
level.player setweaponhudiconoverride( "actionslot1", "none" );
else
level.player setweaponhudiconoverride( "actionslot1", "dpad_killstreak_a10_support_inactive" );
level.a10_mechanic_skip_end = undefined;
level.a10_mechanic_skip_end_vo = undefined;
level.a10_mechanic_ambient_dialogue_off = undefined;
level.skipa10endfade = undefined;
level.a10_uses = undefined;
}
a10_strafe_mechanic( var_0, var_1, var_2, var_3 )
{
level endon( "A10_MECHANIC_OFF" );
level.player endon( "death" );
level.player notifyonplayercommand( "BEGIN_A10_STRAFE", "+actionslot 1" );
var_4 = getentarray( var_0, "targetname" );
if ( var_4.size > 1 )
{
var_5 = maps\_utility::array_index_by_script_index( var_4 );
if ( var_5.size > 0 )
var_4 = var_5;
}
common_scripts\utility::flag_clear( "a10_mechanic_off" );
level.a10_uses = 0;
var_6 = 0;
for (;;)
{
thread a10_strafe_use_nag();
level.player setweaponhudiconoverride( "actionslot1", "dpad_killstreak_a10_support_static" );
common_scripts\utility::flag_clear( "used_a10_strafe" );
if ( level.a10_uses == 0 )
maps\_utility::display_hint( "hint_a10" );
else
thread a10_delayed_hint();
level.player waittill( "BEGIN_A10_STRAFE" );
if ( level.player ismeleeing() )
continue;
if ( level.player isthrowinggrenade() )
continue;
if ( common_scripts\utility::flag( "player_mounting_chaingun_turret" ) )
continue;
if ( isdefined( level.player.using_ammo_cache ) )
continue;
common_scripts\utility::flag_set( "used_a10_strafe" );
common_scripts\utility::flag_clear( "player_not_doing_strafe" );
if ( !isdefined( var_4[var_6] ) )
var_6 = 0;
var_7 = var_4[var_6];
var_6++;
thread a10_warthog_strafe( var_7, var_1, var_2, var_3 );
common_scripts\utility::flag_clear( "a10_strafe_complete" );
common_scripts\utility::flag_wait( "a10_strafe_complete" );
common_scripts\utility::flag_set( "player_not_doing_strafe" );
common_scripts\utility::flag_clear( "player_inside_a10" );
common_scripts\utility::flag_clear( "a10_allow_target_elements" );
level.player setweaponhudiconoverride( "actionslot1", "dpad_killstreak_a10_support_inactive" );
a10_strafe_repositioning();
}
}
a10_delayed_hint()
{
level.player endon( "BEGIN_A10_STRAFE" );
wait 10;
maps\_utility::display_hint( "hint_a10" );
}
a10_strafe_get_location_spawner()
{
var_0 = getentarray( "player_a10_location_check", "targetname" );
foreach ( var_2 in var_0 )
{
if ( level.player istouching( var_2 ) )
return var_2.script_noteworthy;
}
}
a10_strafe_use_nag()
{
level endon( "A10_MECHANIC_OFF" );
level.player endon( "BEGIN_A10_STRAFE" );
var_0 = [ "homcom_hsh_thedronesareready", "homcom_hsh_a10dronesarein", "homcom_hsh_takecontrolofthe" ];
var_1 = var_0;
for (;;)
{
var_2 = common_scripts\utility::random( var_1 );
wait( randomintrange( 4, 5 ) );
level.hesh maps\_utility::generic_dialogue_queue( var_2, 0.05 );
var_1 = common_scripts\utility::array_remove( var_0, var_2 );
}
}
a10_strafe_repositioning()
{
level endon( "A10_MECHANIC_OFF" );
thread a10_strafe_respotioning_dialogue();
var_0 = gettime();
while ( gettime() - var_0 < level.strafecooldown )
wait 0.05;
level.player notify( "a10_strafe_cooldown_done" );
}
a10_strafe_respotioning_dialogue()
{
level endon( "A10_MECHANIC_OFF" );
level.player endon( "a10_strafe_cooldown_done" );
for (;;)
{
level.player waittill( "BEGIN_A10_STRAFE" );
maps\_utility::smart_radio_dialogue( "homcom_dcon_dronesarestill", 0.05 );
wait 1;
}
}
a10_warthog_strafe( var_0, var_1, var_2, var_3 )
{
level.player endon( "death" );
var_4 = undefined;
var_5 = [ level.balcony_turret, level.ground_turret ];
if ( level.player isusingturret() )
{
var_4 = level.balcony_turret;
if ( !isdefined( level.balcony_turret ) )
var_4 = level.ground_turret;
var_4.setturretusable = 0;
level.player notify( "turret_dismount" );
while ( common_scripts\utility::flag( "player_on_chaingun_turret" ) )
wait 0.05;
}
foreach ( var_4 in var_5 )
{
if ( isdefined( var_4.destroyed ) )
continue;
level.player maps\_chaingun_player::chaingun_turret_disable( var_4 );
}
level.player.a10_lastweapon = level.player getcurrentweapon();
setdvar( "hideHudFast", 1 );
setsaveddvar( "ammoCounterHide", 1 );
level.player.dont_allow_ammo_cache = 1;
level.player disableweaponswitch();
level.player disableweaponpickup();
level.player allowmelee( 0 );
level.player giveweapon( "remote_tablet" );
level.player switchtoweapon( "remote_tablet" );
level.player.a10_grenades = [];
var_8 = level.player getweaponslistoffhands();
foreach ( var_11, var_10 in var_8 )
{
level.player.a10_grenades[var_11] = spawnstruct();
level.player.a10_grenades[var_11].type = var_10;
level.player.a10_grenades[var_11].ammo = level.player getweaponammoclip( var_10 );
level.player takeweapon( var_10 );
}
level.player thread maps\_utility::play_sound_on_entity( "a10_tablet_take_out" );
cinematicingameloop( "a10tabletin" );
common_scripts\utility::noself_delaycall( 4, ::stopcinematicingame );
wait 1.5;
var_12 = maps\_hud_util::create_client_overlay( "black", 0, level.player );
var_12.foreground = 1;
var_12 maps\_hud_util::fade_over_time( 1, 0.4 );
wait 0.1;
maps\homecoming_util::hud_hide();
level.player disableweapons();
level.player allowsprint( 0 );
level.player allowjump( 0 );
level.player enableinvulnerability();
level.player maps\_utility::set_vision_set( "homecoming_a10", 0 );
level.player enableslowaim( 0.8, 0.5 );
thread maps\_utility::battlechatter_off();
if ( maps\_utility::is_gen4() )
level.player lerpfov( 70, 0.05 );
else
level.player lerpfov( 55, 0.05 );
var_13 = getaiarray( "allies" );
foreach ( var_15 in var_13 )
var_15.no_friendly_fire_penalty = 1;
var_17 = level.drones["allies"].array;
foreach ( var_19 in var_17 )
var_19.no_friendly_fire_penalty = 1;
common_scripts\utility::flag_clear( "player_strafe_done" );
if ( level.a10_uses == 0 || !common_scripts\utility::flag( "FLAG_player_used_a10_30mm" ) )
maps\_utility::display_hint( "hint_a10_fire" );
var_21 = a10_player_init( var_0, var_1 );
var_22 = [];
var_23 = [];
var_24 = var_21 common_scripts\utility::get_linked_ents();
foreach ( var_26 in var_24 )
{
if ( var_26 maps\homecoming_util::parameters_check( "end_strafe" ) )
{
if ( !isspawner( var_26 ) )
continue;
var_23[var_23.size] = var_26;
continue;
}
if ( var_26 maps\homecoming_util::parameters_check( "squadron" ) )
{
var_27 = var_26 maps\_utility::spawn_vehicle();
var_27 thread a10_squadron_logic();
var_27 thread a10_squadron_friendlyfire_watcher();
var_22[var_22.size] = var_27;
if ( isdefined( var_2 ) )
thread [[ var_2 ]]( var_27 );
}
}
var_23 = maps\_utility::array_index_by_script_index( var_23 );
var_22[var_22.size] = var_21;
var_21 thread a10_target_logic();
var_21 thread a10_allies_friendlyfire_watcher();
var_21 thread a10_ambient_clouds();
wait 0.65;
level.player common_scripts\utility::delaycall( 0.35, ::freezecontrols, 0 );
foreach ( var_27 in var_22 )
thread maps\_vehicle::gopath( var_27 );
level.player stopshellshock();
var_12 thread maps\_hud_util::fade_over_time( 0, 0.2 );
common_scripts\utility::flag_set( "a10_allow_target_elements" );
thread a10_strafe_dialogue();
common_scripts\utility::flag_wait( "player_strafe_done" );
var_5 = [ level.balcony_turret, level.ground_turret ];
foreach ( var_4 in var_5 )
{
if ( !isdefined( var_4 ) )
continue;
if ( isdefined( var_4.destroyed ) )
continue;
var_4 thread maps\_chaingun_player::chaingun_turret_init( 1 );
}
var_13 = getaiarray( "allies" );
foreach ( var_15 in var_13 )
var_15.no_friendly_fire_penalty = undefined;
var_17 = level.drones["allies"].array;
foreach ( var_19 in var_17 )
var_19.no_friendly_fire_penalty = undefined;
var_21 a10_strafe_cleanup( var_12, var_22, var_4, var_3 );
level notify( "player_strafe_cleanup_done" );
level.a10_uses++;
if ( isdefined( level.a10_mechanic_skip_end ) )
{
common_scripts\utility::flag_set( "a10_strafe_complete" );
level notify( "a10_mechachanic_skip_end" );
return;
}
wait( randomfloatrange( 0, 0.5 ) );
var_37 = 0;
foreach ( var_0 in var_23 )
{
var_39 = undefined;
var_40 = var_0 maps\_utility::get_linked_structs();
foreach ( var_42 in var_40 )
{
if ( var_42 maps\homecoming_util::parameters_check( "a10_end_target" ) )
var_39 = var_42;
}
var_27 = var_0 maps\_utility::spawn_vehicle();
var_27 thread maps\_utility::play_sound_on_entity( "a10_strafe_roar" );
var_27 thread a10_endrun_shooting( var_39 );
var_27 thread a10_endrun_flyby_sound();
thread maps\_vehicle::gopath( var_27 );
var_44 = 1.5;
var_37 = 0.5;
}
common_scripts\utility::flag_set( "a10_strafe_complete" );
}
a10_strafe_cleanup( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_3 ) )
thread [[ var_3 ]]( self );
if ( !isdefined( level.skipa10endfade ) )
var_0 thread maps\_hud_util::fade_over_time( 1, 0.3 );
wait 0.3;
level.player notify( "player_warthog_finished" );
a10_player_hud_cleanup();
level.player freezecontrols( 1 );
level.player allowstand( 1 );
level.player allowcrouch( 1 );
level.player allowprone( 1 );
level.player lerpfov( 65, 0.05 );
level.player unlink();
self.linker delete();
level.player thread common_scripts\utility::stop_loop_sound_on_entity( "a10p_jet_whine" );
level.player clearclienttriggeraudiozone( 0 );
foreach ( var_5 in var_1 )
{
if ( isdefined( var_5.firing_sound_ent ) )
var_5.firing_sound_ent thread maps\_utility::sound_fade_and_delete( 0.05 );
var_5 hudoutlinedisable();
var_5 delete();
}
maps\_utility::teleport_player( level.player.a10endposition );
level.player setstance( level.player.a10endstance );
wait 0.1;
level.player.a10fakeplayer maps\homecoming_util::delete_safe();
maps\_utility::array_delete( level.fakea10ai["allies"] );
maps\homecoming_util::cinematicmode_off( 1 );
level.player maps\_utility::set_vision_set( "", 0 );
level.player disableslowaim();
level.player disableinvulnerability();
level.player stopshellshock();
level.player freezecontrols( 0 );
maps\_utility::battlechatter_on();
if ( !isdefined( level.skipa10endfade ) )
{
var_0 thread maps\_hud_util::fade_over_time( 0, 0.3 );
var_0 common_scripts\utility::delaycall( 0.3, ::destroy );
}
level.player thread maps\_utility::play_sound_on_entity( "a10_tablet_put_away" );
if ( isdefined( level.lasta10cinematic ) )
cinematicingameloop( "a10tabletinterrupted" );
else
cinematicingameloop( "a10tabletout" );
common_scripts\utility::noself_delaycall( 4, ::stopcinematicingame );
if ( level.player.a10_lastweapon == "none" )
{
var_7 = level.player getweaponslistall();
foreach ( var_9 in var_7 )
{
if ( maps\_utility::isprimaryweapon( var_9 ) )
{
level.player.a10_lastweapon = var_9;
break;
}
}
}
level.player enableweapons();
level.player switchtoweapon( level.player.a10_lastweapon );
var_11 = level.player.a10_grenades;
foreach ( var_13 in level.player.a10_grenades )
{
level.player giveweapon( var_13.type );
level.player setweaponammoclip( var_13.type, var_13.ammo );
}
level.player.a10_grenades = undefined;
level.player common_scripts\utility::delaycall( 1, ::takeweapon, "remote_tablet" );
level.player common_scripts\utility::delaycall( 1, ::enableweaponswitch );
level.player common_scripts\utility::delaycall( 1, ::enableweaponpickup );
level.player common_scripts\utility::delaycall( 1, ::allowmelee, 1 );
setdvar( "hideHudFast", 0 );
setsaveddvar( "ammoCounterHide", 0 );
level.player.dont_allow_ammo_cache = undefined;
}
a10_strafe_dialogue()
{
var_0 = common_scripts\utility::random( [ "homcom_us2_hogonesinfrom", "homcom_us2_riflehogwerecoming", "homcom_us2_copythattargetin", "homcom_us2_hogonesin" ] );
maps\_utility::smart_radio_dialogue( var_0, 0 );
if ( isdefined( level.a10_mechanic_ambient_dialogue_off ) )
return;
var_1 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 10, 11, 12 ];
for ( var_2 = var_1; !common_scripts\utility::flag( "player_strafe_done" ); var_2 = common_scripts\utility::array_remove( var_2, var_3 ) )
{
var_3 = common_scripts\utility::random( var_2 );
var_4 = "a10_ambient_line_" + var_3;
thread maps\_utility::radio_dialogue( var_4 );
var_4 = level.scr_radio[var_4];
var_5 = lookupsoundlength( var_4 );
common_scripts\utility::flag_wait_or_timeout( "player_strafe_done", var_5 / 1000 );
}
maps\_utility::radio_dialogue_clear_stack();
maps\_utility::radio_dialogue_stop();
}
a10_fov_change()
{
level.player lerpfov( 25, 0.05 );
common_scripts\utility::waitframe();
level.player lerpfov( 65, 10 );
}
a10_ambient_clouds()
{
var_0 = anglestoforward( self.angles );
var_1 = self.origin + var_0 * 100;
var_2 = common_scripts\utility::spawn_tag_origin();
playfxontag( common_scripts\utility::getfx( "a10_clouds" ), var_2, "tag_origin" );
common_scripts\utility::flag_wait( "player_strafe_done" );
stopfxontag( common_scripts\utility::getfx( "a10_clouds" ), var_2, "tag_origin" );
var_2 delete();
}
a10_do_shots()
{
var_0 = self.storeshots;
foreach ( var_2 in var_0 )
{
wait( var_2["time"] / 1000 );
foreach ( var_4 in var_2["origins"] )
{
thread common_scripts\utility::play_sound_in_space( "a10p_impact", var_4 );
playfx( common_scripts\utility::getfx( "a10_impact" ), var_4 );
radiusdamage( var_4, 256, 500, 500, self, level.player, "a10_30mm_player_homecoming" );
wait 0.05;
}
}
maps\_utility::play_sound_on_entity( "a10_strafe_roar" );
}
a10_player_init( var_0, var_1 )
{
var_0 a10_get_player_end_position();
thread a10_player_aftermission_report();
level.player thread a10_create_fake_player();
level.fakea10ai = [];
level.fakea10ai["allies"] = [];
level.fakea10ai["axis"] = [];
var_2 = undefined;
var_3 = var_0 maps\_utility::get_linked_structs();
foreach ( var_5 in var_3 )
{
if ( var_5 maps\homecoming_util::parameters_check( "targetStruct" ) )
var_2 = var_5;
if ( var_5 maps\homecoming_util::parameters_check( "fakeAI" ) )
thread a10_create_fake_ai( var_5 );
}
var_7 = var_0 maps\_utility::spawn_vehicle();
var_8 = "tag_camera2";
var_7.linker = var_7 common_scripts\utility::spawn_tag_origin();
var_7.linker.angles = var_7 gettagangles( var_8 );
var_7.linker linkto( var_7, var_8, ( 0, 0, -55 ), ( 0, 0, 0 ) );
var_7.hud = a10_player_init_hud();
var_7 dontcastshadows();
level.player.warthog = var_7;
var_7 thread a10_player_lockon_warning();
level.player playerlinktodelta( var_7.linker, "tag_origin", 1, 20, 20, 15, 5, 1 );
level.player setstance( "stand" );
level.player allowstand( 1 );
level.player allowcrouch( 0 );
level.player allowprone( 0 );
level.player setclienttriggeraudiozone( "homecoming_a10_int", 0 );
common_scripts\utility::flag_set( "player_inside_a10" );
while ( level.player getstance() != "stand" )
wait 0.05;
level.player freezecontrols( 1 );
if ( isdefined( var_2 ) )
{
var_9 = var_2.origin;
if ( isdefined( var_2.radius ) )
var_9 = maps\homecoming_util::return_point_in_circle( var_2.origin, var_2.radius );
var_10 = vectornormalize( var_9 - var_7 gettagorigin( var_8 ) );
var_11 = vectortoangles( var_10 );
level.player setplayerangles( var_11 );
}
else
level.player setplayerangles( var_7 gettagangles( var_8 ) );
level.player.isfiringa10 = 0;
level.player thread a10_player_30mm( var_7 );
level.player thread common_scripts\utility::play_loop_sound_on_entity( "a10p_jet_whine" );
playfxontag( common_scripts\utility::getfx( "flying_face_fx" ), var_7.linker, "tag_origin" );
var_7 hudoutline_enable( 0 );
if ( isdefined( var_1 ) )
thread [[ var_1 ]]( var_7 );
return var_7;
}
a10_player_30mm( var_0 )
{
self endon( "player_warthog_finished" );
self notifyonplayercommand( "a10_fire_30mm", "+attack" );
self notifyonplayercommand( "a10_stop_fire_30mm", "-attack" );
self notifyonplayercommand( "a10_fire_30mm", "+attack_akimbo_accessible" );
self notifyonplayercommand( "a10_stop_fire_30mm", "-attack_akimbo_accessible" );
thread a10_inital_fire_check();
self.storeshots = [];
var_1 = gettime();
var_2 = 0;
var_3 = 1;
for (;;)
{
self waittill( "a10_fire_30mm" );
self.isfiringa10 = 1;
if ( !isdefined( var_3 ) )
var_2 = gettime() - var_1;
var_3 = undefined;
childthread a10_player_30mm_fire( var_0, var_2 );
self waittill( "a10_stop_fire_30mm" );
self.isfiringa10 = 0;
var_1 = gettime();
var_0.firing_sound_ent thread maps\_utility::sound_fade_and_delete( 0.05 );
thread aud_30mm_tail();
}
}
aud_30mm_tail()
{
var_0 = spawn( "script_origin", ( 0, 0, 0 ) );
var_0 playsound( "a10p_gatling_tail", "soundone" );
var_0 waittill( "sounddone" );
var_0 delete();
}
a10_inital_fire_check()
{
self endon( "a10_stop_fire_30mm" );
while ( self attackbuttonpressed() )
{
level.player notify( "a10_fire_30mm" );
wait 0.05;
}
}
a10_player_30mm_fire( var_0, var_1 )
{
self endon( "a10_stop_fire_30mm" );
var_0.firing_sound_ent = spawn( "script_origin", ( 0, 0, 0 ) );
var_0.firing_sound_ent linkto( var_0, "tag_gun", ( 0, 0, 0 ), ( 0, 0, 0 ) );
var_0.firing_sound_ent thread common_scripts\utility::play_loop_sound_on_entity( "a10p_gatling_loop" );
var_2 = self.storeshots.size;
self.storeshots[var_2] = [];
self.storeshots[var_2]["time"] = var_1;
self.storeshots[var_2]["origins"] = [];
var_3 = 0;
for (;;)
{
var_4 = anglestoforward( var_0 gettagangles( "tag_gun" ) );
var_5 = self geteye();
var_4 = anglestoforward( self getplayerangles() );
var_6 = var_5 + var_4 * 99999;
var_7 = var_0 gettagorigin( "tag_gun" );
var_8 = anglestoforward( var_0 gettagangles( "tag_gun" ) );
var_7 = var_7 + var_8 * 150;
var_9 = bullettrace( var_5, var_6, 0 );
var_10 = maps\homecoming_util::return_point_in_circle( var_9["position"], 128 );
var_9 = bullettrace( var_5, var_10, 0 );
var_4 = vectornormalize( var_9["position"] - var_7 );
playfx( common_scripts\utility::getfx( "a10_player_tracer" ), var_7, var_4 );
var_0 thread a10_player_shot_think( var_9, var_7, var_4 );
var_11 = self.storeshots[var_2]["origins"].size;
self.storeshots[var_2]["origins"][var_11] = var_9["position"];
playfxontag( common_scripts\utility::getfx( "a10_muzzle_flash" ), var_0, "tag_gun" );
earthquake( 0.22, 0.05, self.origin, 999999 );
self playrumbleonentity( "ac130_25mm_fire" );
wait 0.05;
}
}
a10_player_shot_think( var_0, var_1, var_2 )
{
level endon( "a10_mechachanic_skip_end" );
var_3 = var_0["position"];
var_4 = var_0["entity"];
if ( isdefined( var_4 ) && isdefined( var_4.vehicletype ) && ( var_4 maps\_vehicle::ishelicopter() || var_4 maps\_vehicle::isairplane() ) )
{
}
else
wait 0.2;
if ( common_scripts\utility::flag( "player_strafe_done" ) )
return;
playfx( common_scripts\utility::getfx( "a10_impact" ), var_3 );
thread common_scripts\utility::play_sound_in_space( "a10p_impact", var_3, 0 );
radiusdamage( var_3, 256, 500, 500, level.player, "MOD_EXPLOSIVE", "a10_30mm_player_homecoming" );
}
a10_player_lockon_warning()
{
self endon( "death" );
level.player waittill( "enable_a10_lockon_warning" );
thread common_scripts\utility::play_loop_sound_on_entity( "apache_player_damaged_alarm" );
var_0 = self.hud;
var_1 = [ 1, 0 ];
for (;;)
{
foreach ( var_3 in var_1 )
{
wait 0.25;
common_scripts\utility::array_thread( var_0["warning"], ::a10_hud_set_alpha, var_3 );
}
}
}
a10_get_player_end_position()
{
var_0 = undefined;
var_1 = undefined;
var_2 = maps\_utility::get_linked_structs();
foreach ( var_4 in var_2 )
{
if ( var_4 maps\homecoming_util::parameters_check( "a10_strafe_watcher" ) )
{
if ( isdefined( var_4.script_count ) )
{
if ( level.a10_uses != var_4.script_count )
break;
}
if ( !isdefined( var_4.angles ) )
var_4.angles = ( 0, 0, 0 );
var_0 = var_4;
var_1 = "stand";
}
}
if ( !isdefined( var_0 ) )
{
var_0 = spawnstruct();
var_0.origin = level.player.origin;
var_0.angles = level.player.angles;
var_1 = level.player getstance();
}
level.player.a10endposition = var_0;
level.player.a10endstance = var_1;
}
a10_create_fake_player()
{
var_0 = getent( "a10_player_spawner", "targetname" );
var_1 = var_0 maps\_utility::spawn_ai();
var_1 maps\_utility::magic_bullet_shield();
var_1.origin = level.player.origin;
var_1.angles = level.player.angles;
level.player.a10fakeplayer = var_1;
common_scripts\utility::flag_wait( "a10_allow_target_elements" );
target_set( var_1, ( 0, 0, 64 ) );
target_setshader( var_1, "hud_fofbox_self_sp" );
}
a10_player_aftermission_report()
{
level.a10_player_kills = [];
level.a10_player_kills["ai"] = 0;
level.a10_player_kills["tanks"] = 0;
level.a10_player_kills["armor"] = 0;
common_scripts\utility::flag_wait( "player_strafe_done" );
if ( isdefined( level.a10_mechanic_skip_end ) || isdefined( level.a10_mechanic_skip_end_vo ) )
return;
wait 0.5;
var_0 = level.a10_player_kills["ai"];
var_1 = level.a10_player_kills["tanks"];
var_2 = "homcom_dcon_repositioningdronestoyour";
if ( var_1 > 0 && var_0 > 0 )
{
if ( common_scripts\utility::cointoss() )
var_2 = "homcom_dcon_enemyarmorconfirmed";
else
var_2 = "homcom_dcon_confirmedarmorandinfantry";
}
else if ( var_1 > 0 )
{
if ( common_scripts\utility::cointoss() )
var_2 = "homcom_dcon_confirmedtankkillsgood";
else
var_2 = "homcom_dcon_enemyarmorconfirmed";
}
else if ( var_0 > 0 && var_0 < 10 )
var_2 = "homcom_dcon_goodkillsraptor21";
else if ( var_0 > 10 )
var_2 = "homcom_dcon_tenpluskiasgood";
maps\_utility::radio_dialogue_clear_stack();
maps\_utility::radio_dialogue_interupt( var_2 );
if ( var_2 != "homcom_dcon_repositioningdronestoyour" )
maps\_utility::smart_radio_dialogue( "homcom_dcon_repositioningdronestoyour", 0.05 );
}
a10_squadron_logic()
{
self endon( "death" );
self endon( "stop_shooting" );
hudoutline_enable( 0 );
self dontcastshadows();
var_0 = common_scripts\utility::getfx( "a10_engineeffect" );
playfxontag( var_0, self, "tag_engine_right" );
playfxontag( var_0, self, "tag_engine_left" );
if ( !isdefined( self.script_linkto ) )
return;
var_1 = maps\_utility::get_linked_structs();
wait 1.5;
var_2 = [];
var_2["long"] = spawnstruct();
var_2["long"].alias = "a10_gatling_long";
var_2["long"].time = 2000;
var_2["short"] = spawnstruct();
var_2["short"].alias = "a10_gatling_short";
var_2["short"].time = 1500.0;
for (;;)
{
thread maps\homecoming_util::playloopingfx( "a10_muzzle_flash", 0.05, undefined, "tag_gun" );
var_3 = common_scripts\utility::random( var_2 );
thread maps\_utility::play_sound_on_tag( var_3.alias, "tag_gun" );
var_4 = common_scripts\utility::random( var_1 );
var_5 = gettime();
var_6 = var_3.time;
while ( gettime() - var_5 <= var_6 )
{
thread a10_squadron_shoot( var_4 );
wait 0.05;
}
self notify( "stop_looping_fx" );
wait( randomfloatrange( 0.5, 1 ) );
}
}
a10_squadron_shoot( var_0 )
{
var_1 = self gettagorigin( "tag_gun" );
var_2 = return_random_spot_in_circle( var_0 );
var_3 = bullettrace( var_1, var_2, 0 );
var_4 = vectornormalize( var_2 - var_1 );
playfx( common_scripts\utility::getfx( "a10_player_tracer" ), var_1, var_4 );
wait 0.2;
playfx( common_scripts\utility::getfx( "a10_impact" ), var_3["position"] );
thread common_scripts\utility::play_sound_in_space( "a10p_impact", var_3["position"], 0 );
}
a10_endrun_shooting( var_0 )
{
self endon( "stop_shooting" );
self endon( "death" );
var_1 = self gettagorigin( "tag_gun" );
var_2 = anglestoforward( self gettagangles( "tag_gun" ) );
var_3 = 200;
var_4 = undefined;
if ( isdefined( var_0 ) )
{
var_4 = var_0.origin;
if ( isdefined( var_0.radius ) )
var_3 = var_0.radius;
}
else
{
var_5 = var_1 + var_2 * 50000;
var_6 = bullettrace( var_1, var_5, 0 );
var_4 = var_6["position"];
}
var_7 = 1;
for (;;)
{
wait( randomfloatrange( 0.05, 0.1 ) );
var_1 = self gettagorigin( "tag_gun" );
var_8 = maps\homecoming_util::return_point_in_circle( var_4, var_3 );
var_6 = bullettrace( var_1, var_8, 0 );
var_9 = vectornormalize( var_6["position"] - var_1 );
playfx( common_scripts\utility::getfx( "a10_player_tracer" ), var_1, var_9 );
common_scripts\utility::noself_delaycall( 0.4, ::playfx, common_scripts\utility::getfx( "a10_impact" ), var_6["position"] );
if ( var_7 )
{
maps\_utility::delaythread( 0.4, ::a10_endrun_shooting_impacts, var_6["position"] );
var_7 = 0;
}
}
}
a10_endrun_shooting_impacts( var_0 )
{
self endon( "stop_shooting" );
for (;;)
common_scripts\utility::play_sound_in_space( "a10p_impact_ground", var_0 );
}
a10_endrun_flyby_sound()
{
self waittill( "flyby_sound" );
thread maps\_utility::play_sound_on_entity( "a10_flyby_short" );
}
a10_player_init_hud()
{
var_0 = [];
var_0["reticle"] = level.player maps\_hud_util::createclienticon( "dogcam_center", 600, 300 );
var_0["reticle"] maps\_hud_util::setpoint( "CENTER", undefined, 0, 0 );
var_0["reticle2"] = level.player maps\_hud_util::createclienticon( "torpedo_center", 300, 300 );
var_0["reticle2"] maps\_hud_util::setpoint( "CENTER", undefined, 1, -5 );
var_0["reticle2"].color = ( 1, 1, 1 );
var_0["hit"] = level.player maps\_hud_util::createclienticon( "remote_chopper_hud_target_hit", 32, 32 );
var_0["hit"] maps\_hud_util::setpoint( "CENTER", undefined, 0, 0 );
var_0["hit"].alpha = 0;
var_1 = 1;
var_2 = 0.5;
var_0["text"] = [];
var_0["text"]["connection"] = level.player maps\_hud_util::createclientfontstring( "objective", var_1 );
var_0["text"]["connection"] maps\_hud_util::setpoint( "CENTER", "CENTER", -4, 175 );
var_0["text"]["connection"].color = ( 1, 1, 1 );
var_0["text"]["connection"].alpha = var_2;
var_0["text"]["connection"].sort = -1;
var_0["text"]["connection"] settext( &"HOMECOMING_CONNECTED" );
var_0["text"]["connection"] thread a10_hud_connected_pulse();
var_0["text"]["ID"] = level.player maps\_hud_util::createclientfontstring( "objective", var_1 );
var_0["text"]["ID"] maps\_hud_util::setpoint( "CENTER", "CENTER", -5, 190 );
var_0["text"]["ID"].color = ( 1, 1, 1 );
var_0["text"]["ID"].alpha = var_2;
var_0["text"]["ID"].sort = -1;
var_0["text"]["ID"] settext( "" );
var_0["text"]["ID"] thread a10_hud_set_id();
var_0["text"]["guns"] = level.player maps\_hud_util::createclientfontstring( "objective", var_1 );
var_0["text"]["guns"] maps\_hud_util::setpoint( "LEFT", "LEFT", 150, 105 );
var_0["text"]["guns"].color = ( 1, 1, 1 );
var_0["text"]["guns"].alpha = var_2;
var_0["text"]["guns"].sort = -1;
var_0["text"]["guns"] settext( &"HOMECOMING_GUNSREADY" );
var_0["text"]["loc"] = level.player maps\_hud_util::createclientfontstring( "objective", var_1 );
var_0["text"]["loc"] maps\_hud_util::setpoint( "CENTER", "CENTER", 0, -185 );
var_0["text"]["loc"].color = ( 1, 1, 1 );
var_0["text"]["loc"].alpha = var_2;
var_0["text"]["loc"].sort = -1;
var_0["text"]["loc"] settext( &"HOMECOMING_SANTAMONICA" );
var_0["text"]["coords"] = level.player maps\_hud_util::createclientfontstring( "objective", var_1 );
var_0["text"]["coords"] maps\_hud_util::setpoint( "CENTER", "CENTER", 2, -175 );
var_0["text"]["coords"].color = ( 1, 1, 1 );
var_0["text"]["coords"].alpha = var_2;
var_0["text"]["coords"].sort = -1;
var_0["text"]["coords"] thread a10_hud_set_coords();
var_0["text"]["30mm"] = level.player maps\_hud_util::createclientfontstring( "objective", var_1 );
var_0["text"]["30mm"] maps\_hud_util::setpoint( "RIGHT", "RIGHT", -200, 100 );
var_0["text"]["30mm"].color = ( 1, 1, 1 );
var_0["text"]["30mm"].alpha = var_2;
var_0["text"]["30mm"].sort = -1;
var_0["text"]["30mm"] settext( &"HOMECOMING_30MM" );
var_0["text"]["rounds"] = level.player maps\_hud_util::createclientfontstring( "objective", var_1 );
var_0["text"]["rounds"] maps\_hud_util::setpoint( "RIGHT", "RIGHT", -193, 110 );
var_0["text"]["rounds"].color = ( 1, 1, 1 );
var_0["text"]["rounds"].alpha = var_2;
var_0["text"]["rounds"].sort = -1;
var_0["text"]["rounds"] settext( &"HOMECOMING_ROUNDS" );
var_0["text"]["ammo"] = level.player maps\_hud_util::createclientfontstring( "objective", var_1 );
var_0["text"]["ammo"] maps\_hud_util::setpoint( "RIGHT", "RIGHT", -140, 110 );
var_0["text"]["ammo"].color = ( 1, 1, 1 );
var_0["text"]["ammo"].alpha = var_2;
var_0["text"]["ammo"].sort = -1;
var_0["text"]["ammo"] thread a10_hud_ammo_counter();
var_3 = 100;
var_4 = 400;
var_5 = randomintrange( -500, -425 );
var_0["sidebars"] = [];
var_0["sidebars"]["right"] = level.player maps\_hud_util::createclienticon( "dogcam_bracket_r", var_3, var_4 );
var_0["sidebars"]["right"] maps\_hud_util::setpoint( "RIGHT", "RIGHT", 0, 0 );
var_0["sidebars"]["right"].alpha = 1.0;
var_0["sidebars"]["right"].sort = 1;
var_0["sidebars"]["left"] = level.player maps\_hud_util::createclienticon( "dogcam_bracket_l", var_3, var_4 );
var_0["sidebars"]["left"] maps\_hud_util::setpoint( "LEFT", "LEFT", 0, 0 );
var_0["sidebars"]["left"].alpha = 1.0;
var_0["sidebars"]["left"].sort = 1;
var_0["hline"] = level.player maps\_hud_util::createclienticon( "torpedo_horizonline", 750, 40 );
var_0["hline"] maps\_hud_util::setpoint( "CENTER", undefined, 0, 0 );
var_0["cline"] = level.player maps\_hud_util::createclienticon( "torpedo_centerline", 100, 50 );
var_0["cline"] maps\_hud_util::setpoint( "CENTER", undefined, 0, -107 );
var_0["edge"] = level.player maps\_hud_util::create_client_overlay( "dogcam_edge", 1, level.player );
var_0["edge"].sort = -1;
var_0["grain"] = maps\_hud_util::create_client_overlay( "overlay_grain", 0.3, level.player );
var_0["grain"] thread a10_hud_grain();
var_6 = 128;
var_7 = 128;
var_0["warning"] = [];
var_0["warning"]["bg_lock_left"] = level.player maps\_hud_util::createclienticon( "apache_warn_lock_left", var_6, var_7 );
var_0["warning"]["bg_lock_left"] maps\_hud_util::setpoint( "CENTER", "CENTER", -185, 0 );
var_0["warning"]["bg_lock_left"].color = ( 1, 0, 0 );
var_0["warning"]["bg_lock_left"].alpha = 0;
var_0["warning"]["bg_lock_right"] = level.player maps\_hud_util::createclienticon( "apache_warn_lock_right", var_6, var_7 );
var_0["warning"]["bg_lock_right"] maps\_hud_util::setpoint( "CENTER", "CENTER", 185, 0 );
var_0["warning"]["bg_lock_right"].color = ( 1, 0, 0 );
var_0["warning"]["bg_lock_right"].alpha = 0;
var_0["warning"]["bg_inc_left"] = level.player maps\_hud_util::createclienticon( "apache_warn_incoming_left", var_6, var_7 );
var_0["warning"]["bg_inc_left"] maps\_hud_util::setpoint( "CENTER", "CENTER", 0, 0 );
var_0["warning"]["bg_inc_left"].color = ( 1, 0, 0 );
var_0["warning"]["bg_inc_left"].alpha = 0;
var_0["warning"]["bg_inc_left"] maps\_hud_util::setparent( var_0["warning"]["bg_lock_left"] );
var_0["warning"]["bg_inc_right"] = level.player maps\_hud_util::createclienticon( "apache_warn_incoming_right", var_6, var_7 );
var_0["warning"]["bg_inc_right"] maps\_hud_util::setpoint( "CENTER", "CENTER", 0, 0 );
var_0["warning"]["bg_inc_right"].color = ( 1, 0, 0 );
var_0["warning"]["bg_inc_right"].alpha = 0;
var_0["warning"]["bg_inc_right"] maps\_hud_util::setparent( var_0["warning"]["bg_lock_right"] );
var_0["warning"]["msg_left"] = level.player maps\_hud_util::createclientfontstring( "objective", 0.8 );
var_0["warning"]["msg_left"] maps\_hud_util::setpoint( "CENTER", "CENTER", 4, 0 );
var_0["warning"]["msg_left"] settext( &"HOMECOMING_ENEMY_LOCK" );
var_0["warning"]["msg_left"].alpha = 0;
var_0["warning"]["msg_left"] maps\_hud_util::setparent( var_0["warning"]["bg_lock_left"] );
var_0["warning"]["msg_right"] = level.player maps\_hud_util::createclientfontstring( "objective", 0.8 );
var_0["warning"]["msg_right"] maps\_hud_util::setpoint( "CENTER", "CENTER", -4, 0 );
var_0["warning"]["msg_right"] settext( &"HOMECOMING_ENEMY_LOCK" );
var_0["warning"]["msg_right"].alpha = 0;
var_0["warning"]["msg_right"] maps\_hud_util::setparent( var_0["warning"]["bg_lock_right"] );
return var_0;
}
a10_hud_grain()
{
self endon( "death" );
for (;;)
{
self.alpha = randomfloatrange( 0.1, 0.2 );
wait( randomfloatrange( 0.4, 1 ) );
}
}
a10_hud_connected_pulse()
{
self endon( "death" );
var_0 = 0.5;
for (;;)
{
self fadeovertime( 1 );
self.alpha = 1;
wait( var_0 );
self fadeovertime( 1 );
self.alpha = 0.4;
wait( var_0 );
}
}
a10_hud_set_id()
{
var_0 = "DRONE ID : ";
var_1 = 15;
for ( var_2 = 0; var_2 < var_1; var_2++ )
{
var_3 = "";
if ( common_scripts\utility::cointoss() )
var_3 = randomint( 10 );
else
var_3 = common_scripts\utility::random( [ "A", "Y", "R", "Q", "V", "O", "Z", "J", "W", "", "B", "S" ] );
var_0 = var_0 + var_3;
}
self settext( var_0 );
}
a10_hud_set_coords()
{
self endon( "death" );
for (;;)
{
var_0 = randomfloatrange( 34.0, 34.5 );
var_1 = randomfloatrange( -118.4, -118.0 );
var_2 = var_0 + " N, " + var_1 + " W";
self settext( var_2 );
wait 0.3;
}
}
a10_hud_ammo_counter()
{
self endon( "death" );
var_0 = randomintrange( 500, 1174 );
self settext( var_0 );
for (;;)
{
while ( level.player attackbuttonpressed() )
{
var_0--;
self settext( var_0 );
wait 0.05;
}
level.player waittill( "a10_fire_30mm" );
}
}
scanline_move()
{
self endon( "death" );
var_0 = 1;
self moveovertime( var_0 / 2 );
self.y = 400;
wait( var_0 / 2 );
for (;;)
{
wait 0.05;
self.y = -400;
wait 0.05;
self moveovertime( var_0 );
self.y = 400;
wait( var_0 );
}
}
scanline_flicker()
{
for (;;)
{
var_0 = randomfloatrange( 0.5, 1 );
self fadeovertime( var_0 );
self.alpha = 0;
wait( var_0 );
self fadeovertime( var_0 );
self.alpha = 0.1;
wait( var_0 );
}
}
a10_hud_set_connection()
{
self endon( "death" );
common_scripts\utility::flag_wait( "player_strafe_done" );
self settext( &"HOMECOMING_DISCONNECTING" );
}
a10_hud_set_altitude( var_0 )
{
self endon( "death" );
var_1 = level.player.origin[2];
for (;;)
{
if ( level.player.origin[2] > var_1 )
var_0++;
else if ( level.player.origin[2] < var_1 )
var_0 = var_0 - 1;
var_1 = var_0;
maps\_hud_util::setpoint( "RIGHT", "BOTTOM", 33, var_0, 0 );
wait 0.05;
}
}
a10_hud_set_speed()
{
self endon( "death" );
var_0 = randomintrange( -20, 20 );
var_1 = var_0 + 20;
var_2 = var_0 - 20;
for (;;)
{
maps\_hud_util::setpoint( "RIGHT", "RIGHT", -60, var_0 );
if ( common_scripts\utility::cointoss() )
var_0++;
else
var_0--;
if ( var_0 == var_1 )
var_0++;
else if ( var_0 == var_2 )
var_0--;
wait 0.05;
}
}
a10_player_hud_cleanup()
{
var_0 = self.hud;
var_0["edge"] destroy();
var_0["reticle"] destroy();
var_0["grain"] destroy();
var_0["hline"] destroy();
var_0["cline"] destroy();
var_0["reticle2"] destroy();
foreach ( var_2 in var_0["sidebars"] )
var_2 destroy();
foreach ( var_2 in var_0["warning"] )
var_2 destroy();
foreach ( var_2 in var_0["text"] )
var_2 destroy();
level.enemydeathicons = 0;
}
a10_hud_set_alpha( var_0 )
{
self.alpha = var_0;
}
a10_target_logic()
{
level.player endon( "player_warthog_finished" );
common_scripts\utility::flag_wait( "a10_allow_target_elements" );
thread a10_vehicle_target_logic();
thread a10_allies_target_logic();
thread a10_enemies_target_logic();
}
a10_allies_target_logic()
{
level.player endon( "player_warthog_finished" );
var_0 = [];
for (;;)
{
var_1 = common_scripts\utility::array_combine( level.drones["allies"].array, getaiarray( "allies" ) );
var_1 = common_scripts\utility::array_combine( var_1, level.fakea10ai["allies"] );
var_1 = common_scripts\utility::array_remove_array( var_1, var_0 );
foreach ( var_3 in var_1 )
{
var_3 thread a10_ally_friendlyfire_think();
var_3 thread hudoutline_enable( 3 );
var_3 thread remove_target_on_death();
var_0 = common_scripts\utility::array_add( var_0, var_3 );
}
wait 0.05;
}
}
a10_enemies_target_logic()
{
level.player endon( "player_warthog_finished" );
var_0 = [];
for (;;)
{
var_1 = common_scripts\utility::array_combine( level.drones["axis"].array, getaiarray( "axis" ) );
var_1 = common_scripts\utility::array_combine( var_1, level.fakea10ai["axis"] );
var_1 = common_scripts\utility::array_remove_array( var_1, var_0 );
var_1 = common_scripts\utility::array_removeundefined( var_1 );
foreach ( var_3 in var_1 )
{
var_3 hudoutline_enable( 4 );
thread a10_kill_notification( var_3 );
var_3 thread remove_target_on_death();
var_0 = common_scripts\utility::array_add( var_0, var_3 );
}
wait 0.05;
}
}
a10_vehicle_target_logic()
{
level.player endon( "player_warthog_finished" );
var_0 = self;
level.strafetargetvehicles = maps\_utility::remove_dead_from_array( level.strafetargetvehicles );
foreach ( var_2 in level.strafetargetvehicles )
{
var_2 thread a10_enable_target( "orange" );
var_2 thread hudoutline_enable( 4 );
var_2 thread remove_target_on_death();
var_2 thread a10_player_hit_strafe_vehicles( var_0 );
var_0 thread a10_kill_notification( var_2 );
}
var_4 = [];
for (;;)
{
level.strafevehicles = maps\_utility::remove_dead_from_array( level.strafevehicles );
var_5 = common_scripts\utility::array_remove_array( level.strafevehicles, var_4 );
foreach ( var_2 in var_5 )
{
var_2 thread hudoutline_enable( 4 );
var_0 thread a10_kill_notification( var_2 );
var_2 thread remove_target_on_death();
var_2 thread a10_player_hit_strafe_vehicles( var_0 );
var_4 = common_scripts\utility::array_add( var_4, var_2 );
}
wait 0.05;
}
}
a10_kill_notification( var_0 )
{
level endon( "player_strafe_cleanup_done" );
var_1 = self;
var_0 waittill( "death", var_2, var_3, var_4 );
if ( !isdefined( var_2 ) || var_2 != level.player )
return;
if ( !isdefined( var_4 ) )
return;
if ( var_4 != "a10_30mm_player_homecoming" )
return;
thread a10_mechanic_achievement_check();
if ( var_0 maps\_vehicle::isvehicle() )
{
if ( issubstr( var_0.classname, "t90ms" ) )
level.a10_player_kills["tanks"]++;
else
level.a10_player_kills["armor"]++;
return;
}
else
level.a10_player_kills["ai"]++;
if ( level.enemydeathicons == 20 )
return;
if ( isdefined( self.lastkilliconloc ) )
{
if ( distancesquared( self.lastkilliconloc, var_0.origin ) < 40000 )
return;
}
if ( !isdefined( self.lastkillsoundtime ) || gettime() - self.lastkillsoundtime > 166 )
{
thread maps\_utility::play_sound_on_entity( "a10_kill_npc_ui_beep" );
self.lastkillsoundtime = gettime();
}
thread a10_player_hit_hudelem();
var_5 = var_0.origin;
self.lastkilliconloc = var_5;
level.enemydeathicons++;
var_6 = spawn( "script_origin", var_5 + ( 0, 0, -32 ) );
var_7 = level.player maps\_hud_util::createclienticon( "dogcam_target", 1, 1 );
var_7.width = 0.1;
var_7.height = 0.1;
var_7 setwaypoint( 1, 0, 1 );
var_7 settargetent( var_6 );
var_8 = 0.75;
var_7.alpha = 0.5;
var_7 fadeovertime( var_8 );
var_7.alpha = 0;
maps\_utility::add_wait( maps\_utility::timeout, var_8 );
maps\_utility::add_wait( common_scripts\utility::flag_wait, "player_strafe_done" );
if ( common_scripts\utility::flag( "FLAG_allow_a10_strafe_crash" ) )
maps\_utility::add_wait( common_scripts\utility::flag_wait, "player_strafe_crash" );
maps\_utility::do_wait_any();
var_7 destroy();
level.enemydeathicons--;
if ( isdefined( self.lastkilliconloc ) && self.lastkilliconloc == var_5 )
self.lastkilliconloc = undefined;
var_6 delete();
}
a10_player_hit_strafe_vehicles( var_0 )
{
level endon( "player_strafe_cleanup_done" );
self endon( "death" );
for (;;)
{
self waittill( "damage", var_1, var_2, var_3, var_4, var_5 );
if ( !isdefined( var_2 ) || var_2 != level.player )
return;
var_0 thread a10_player_hit_hudelem();
}
}
a10_player_hit_hudelem()
{
self notify( "player_hit_hudelem" );
self endon( "player_hit_hudelem" );
self.hud["hit"].alpha = 0.8;
self.hud["hit"] fadeovertime( 0.2 );
self.hud["hit"].alpha = 0;
}
a10_targeting_think( var_0, var_1, var_2 )
{
var_3 = 0;
var_4 = [];
self.avaiabletargets = 0;
for (;;)
{
wait 0.05;
if ( self.avaiabletargets == var_2 )
continue;
var_0 = common_scripts\utility::array_removeundefined( var_0 );
foreach ( var_6 in var_0 )
{
if ( self.avaiabletargets == var_2 )
continue;
if ( isdefined( var_6.alreadytarget ) )
continue;
var_7 = anglestoforward( level.player getplayerangles() );
var_8 = level.player.origin + var_7 * 10000000;
var_9 = bullettrace( level.player.origin, var_8, 0, self );
if ( common_scripts\utility::distance_2d_squared( var_9["position"], var_6.origin ) < 22500 )
{
var_6.alreadytarget = 1;
var_6 a10_enable_target( "red", "apache_enemy_ai_target_s_w" );
var_6 childthread a10_targeting_watcher( var_9 );
self.avaiabletargets--;
}
}
}
}
a10_targeting_watcher( var_0 )
{
self endon( "death" );
while ( common_scripts\utility::distance_2d_squared( var_0["position"], self.origin ) < 22500 )
wait 0.05;
a10_remove_target();
self.avaiabletargets++;
self.alreadytarget = undefined;
}
a10_enable_target( var_0, var_1 )
{
var_2 = self;
var_3 = 1;
if ( isstring( var_0 ) )
{
switch ( tolower( var_0 ) )
{
case "red":
var_0 = ( 1, 0, 0 );
break;
case "green":
var_0 = ( 0, 1, 0 );
break;
case "orange":
var_0 = ( 1, 0.65, 0.2 );
break;
case "cyan":
var_0 = ( 0.35, 1, 1 );
break;
}
}
if ( var_2 maps\_vehicle::isvehicle() )
{
var_2.alreadytarget = 1;
target_set( var_2, ( 0, 0, 32 ) );
target_drawsingle( var_2 );
target_setshader( var_2, "apache_target_vehicle" );
target_showtoplayer( var_2, level.player );
if ( isdefined( var_0 ) )
target_setcolor( var_2, var_0 );
}
else if ( isai( var_2 ) )
{
var_2.alreadytarget = 1;
target_alloc( var_2, ( 0, 0, 0 ) );
target_set( var_2, ( 0, 0, 0 ) );
if ( isdefined( var_1 ) )
target_setshader( var_2, var_1 );
target_setscaledrendermode( var_2, 1 );
if ( isdefined( var_0 ) )
target_setcolor( var_2, var_0 );
target_setmaxsize( var_2, 4 );
target_setminsize( var_2, 4, 0 );
target_flush( var_2 );
}
}
a10_remove_target()
{
self.alreadytarget = undefined;
target_remove( self );
}
set_a10_strafe_target_vehicle()
{
level.strafetargetvehicles = common_scripts\utility::array_add( level.strafetargetvehicles, self );
}
set_a10_strafe_vehicle()
{
level.strafevehicles = common_scripts\utility::array_add( level.strafevehicles, self );
}
remove_target_on_death()
{
maps\_utility::add_wait( maps\_utility::waittill_msg, "death" );
maps\_utility::add_wait( maps\_utility::waittill_msg, "ragdoll" );
level.player maps\_utility::add_wait( maps\_utility::waittill_msg, "player_warthog_finished" );
maps\_utility::do_wait_any();
if ( isdefined( self ) )
{
self.alreadytarget = undefined;
self hudoutlinedisable();
if ( target_istarget( self ) )
target_remove( self );
}
}
a10_create_fake_ai( var_0 )
{
var_1 = "pose_fed_army_stand_idle";
var_2 = randomintrange( 10, 15 );
if ( isdefined( var_0.script_index ) )
var_2 = var_0.script_index;
var_3 = "axis";
if ( var_0 maps\homecoming_util::parameters_check( "allies" ) )
var_3 = "allies";
for ( var_4 = 0; var_4 < var_2; var_4++ )
{
var_5 = maps\homecoming_util::return_point_in_circle( var_0.origin, var_0.radius );
var_6 = spawn( "script_model", var_5 );
var_6 setmodel( var_1 );
var_6.angles = ( 0, randomint( 360 ), 0 );
if ( var_3 == "axis" )
var_6 thread a10_fake_ai_death();
level.fakea10ai[var_3] = common_scripts\utility::array_add( level.fakea10ai[var_3], var_6 );
}
}
a10_fake_ai_death()
{
self setcandamage( 1 );
level.player maps\_utility::add_wait( maps\_utility::waittill_msg, "player_warthog_finished" );
maps\_utility::add_wait( maps\_utility::waittill_msg, "damage" );
maps\_utility::do_wait_any();
level.fakea10ai["axis"] common_scripts\utility::array_remove( level.fakea10ai["axis"], self );
self delete();
}
hudoutline_enable( var_0 )
{
var_1 = 0;
if ( var_1 == 1 )
return;
self hudoutlineenable( var_0, 0 );
}
target_outofrange_check()
{
var_0 = squared( 1500 );
for (;;)
{
var_1 = distancesquared( self.origin, level.player.origin );
if ( var_1 <= var_0 )
break;
wait 0.05;
}
self notify( "out_of_range" );
}
a10_fov_trig()
{
self waittill( "trigger" );
iprintln( "fov change" );
var_0 = self.script_count;
var_1 = self.script_timer;
level.player lerpfov( var_0, var_1 );
}
a10_missile_lockon()
{
var_0 = level.player maps\_hud_util::createclienticon( "apache_warn_lock_left", 128, 128 );
var_0 maps\_hud_util::setpoint( "CENTER", "CENTER", -185, 0 );
var_0.alpha = 0;
var_1 = level.player maps\_hud_util::createclienticon( "apache_warn_lock_right", 128, 128 );
var_1 maps\_hud_util::setpoint( "CENTER", "CENTER", 185, 0 );
var_1.alpha = 0;
}
a10_hint_func()
{
if ( common_scripts\utility::flag( "used_a10_strafe" ) || common_scripts\utility::flag( "a10_mechanic_off" ) )
return 1;
return 0;
}
a10_fire_hint_func()
{
if ( level.player attackbuttonpressed() )
{
common_scripts\utility::flag_set( "FLAG_player_used_a10_30mm" );
return 1;
}
return common_scripts\utility::flag( "player_strafe_done" );
}
a10_allies_friendlyfire_watcher()
{
level.player endon( "player_warthog_finished" );
var_0 = 0;
for (;;)
{
level waittill( "a10_friendlyfire_notify" );
var_1 = gettime();
if ( gettime() - var_1 > 5000 )
var_0 = 0;
var_0++;
if ( 15 == var_0 )
break;
}
maps\_player_death::set_deadquote( &"SCRIPT_MISSIONFAIL_KILLTEAM_AMERICAN" );
maps\_utility::missionfailedwrapper();
}
a10_ally_friendlyfire_think()
{
level.player endon( "player_warthog_finished" );
for (;;)
{
self waittill( "damage", var_0, var_1, var_2, var_3, var_4 );
if ( var_1 != level.player )
continue;
if ( var_4 != "MOD_EXPLOSIVE" )
continue;
level notify( "a10_friendlyfire_notify" );
}
}
a10_squadron_friendlyfire_watcher()
{
level.player endon( "player_warthog_finished" );
maps\_utility::set_allowdeath( 1 );
var_0 = 0;
for (;;)
{
self waittill( "damage", var_1, var_2, var_3, var_4, var_5 );
if ( var_2 != level.player )
continue;
var_6 = gettime();
if ( gettime() - var_6 > 5000 )
var_0 = 0;
var_0++;
if ( 5 == var_0 )
break;
}
maps\_player_death::set_deadquote( &"SCRIPT_MISSIONFAIL_KILLTEAM_AMERICAN" );
maps\_utility::missionfailedwrapper();
}
a10_mechanic_achievement_check()
{
if ( common_scripts\utility::flag( "a10_achievement_achieved" ) )
return;
level.a10_total_killed_enemies++;
if ( level.a10_total_killed_enemies < 50 )
return;
common_scripts\utility::flag_set( "a10_achievement_achieved" );
level.player maps\_utility::player_giveachievement_wrapper( "LEVEL_5A" );
}
return_random_spot_in_circle( var_0 )
{
var_1 = var_0.radius;
var_2 = randomintrange( var_1 * -1, var_1 );
var_3 = var_0.origin[0] + var_2;
var_2 = randomintrange( var_1 * -1, var_1 );
var_4 = var_0.origin[1] + var_2;
return ( var_3, var_4, var_0.origin[2] );
}