1784 lines
55 KiB
Plaintext
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] );
|
|
}
|