iw6-scripts/vehicle_scripts/_apache_player_pilot.gsc
2024-02-13 13:20:49 +01:00

913 lines
27 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
_precache()
{
precacheshader( "apache_compass_back" );
precacheshader( "apache_hint_back" );
precacheshader( "apache_speed_arrow" );
precacheshader( "apache_speed_back" );
precacheshader( "apache_altitude_arrow" );
precacheshader( "apache_altitude_back" );
precacheshader( "apache_roll_back" );
precacheshader( "apache_roll_marker" );
precacheshader( "apache_roll_marker_left1" );
precacheshader( "apache_roll_marker_left2" );
precacheshader( "apache_roll_marker_right1" );
precacheshader( "apache_roll_marker_right2" );
precacheshader( "apache_reticle" );
precacheshader( "apache_zoom_overlay" );
precacheshader( "apache_mg_heat_back" );
precacheshader( "apache_mg_heat_warn" );
precacheshader( "osp_hud_color_red" );
precacheshader( "apache_bottom_mark" );
precacheshader( "apache_enemy_thermalbody" );
precacheshader( "apache_enemy_thermalbody_no_pulse" );
precachemodel( "viewmodel_prototype_apache_visor" );
vehicle_scripts\_apache_player_missile_hydra_and_lockon::_precache();
_fx();
_anim();
}
_fx()
{
level._effect["FX_apache_pilot_turret_projectile"] = loadfx( "fx/_requests/apache/apache_pilot_turret_projectile" );
level._effect["FX_apache_pilot_turret_flash_view"] = loadfx( "fx/_requests/apache/apache_pilot_turret_flash_view" );
level._effect["FX_apache_pilot_shot_blood"] = loadfx( "fx/_requests/apache/apache_pilot_shot_blood" );
}
#using_animtree("generic_human");
_anim()
{
level.scr_animtree["generic"] = #animtree;
level.scr_anim["generic"]["helicopter_pilot1_idle"] = %helicopter_pilot1_idle;
level.scr_anim["generic"]["helicopter_pilot1_twitch_lookback"] = %helicopter_pilot1_twitch_lookback;
level.scr_anim["generic"]["helicopter_pilot1_twitch_lookoutside"] = %helicopter_pilot1_twitch_lookoutside;
level.scr_anim["generic"]["helicopter_pilot1_twitch_clickpannel"] = %helicopter_pilot1_twitch_clickpannel;
level.scr_anim["generic"]["apache_cockpit_copilot_death"] = %apache_cockpit_copilot_death;
}
_init( var_0, var_1 )
{
var_2 = getent( "apache_pilot", "targetname" );
var_2.origin = var_0 gettagorigin( "tag_passenger" );
var_2.angles = var_0 gettagangles( "tag_passenger" );
var_3 = var_2 spawndrone();
var_3 dontcastshadows();
var_3.animname = "generic";
var_3 maps\_anim::setanimtree();
var_3 linkto( var_0, "tag_passenger" );
var_3 thread pilot_ai_start( var_1, self, "tag_passenger" );
var_4 = spawnstruct();
var_4.owner = var_1;
var_4.vehicle = var_0;
var_4.pilot_ai_spawner = var_2;
var_4.pilot_ai = var_3;
var_4.type = "pilot";
var_4.weapon = [];
var_4 hud_init();
var_4.weapon["hydra_lockOn_missile"] = vehicle_scripts\_apache_player_missile_hydra_and_lockon::_init( var_1, var_0, var_4.hud );
var_4.currentweapon = "hydra_lockOn_missile";
var_4.vehicle.mgturret[0] maps\_utility::ent_flag_init( "FLAG_turret_init" );
var_4.vehicle.mgturret[0] thread turret_init( var_4.vehicle, var_4.owner );
var_1 maps\_utility::ent_flag_init( "FLAG_apache_pilot_has_changed_weapons" );
var_1 maps\_utility::ent_flag_init( "FLAG_apache_pilot_changed_weapons" );
var_1 maps\_utility::ent_flag_init( "FLAG_apache_pilot_ADS" );
return var_4;
}
pilot_ai_start( var_0, var_1, var_2 )
{
self endon( "death" );
childthread pilot_ai_anim( var_1, var_2 );
thread pilot_ai_death( var_1, var_2 );
for (;;)
{
self waittill( "LISTEN_end_pilot" );
self hideonclient( var_0 );
self waittill( "LISTEN_start_pilot" );
self showonclient( var_0 );
}
}
pilot_ai_anim( var_0, var_1 )
{
var_0 endon( "LISTEN_pilot_death" );
for (;;)
{
var_0 maps\_anim::anim_generic( self, "helicopter_pilot1_idle", var_1 );
var_0 maps\_anim::anim_generic( self, "helicopter_pilot1_twitch_lookback", var_1 );
var_0 maps\_anim::anim_generic( self, "helicopter_pilot1_twitch_lookoutside", var_1 );
var_0 maps\_anim::anim_generic( self, "helicopter_pilot1_twitch_clickpannel", var_1 );
}
}
pilot_ai_death( var_0, var_1 )
{
var_0 endon( "death" );
var_0 waittill( "LISTEN_pilot_death" );
thread common_scripts\utility::play_sound_in_space( "apache_player_pilot_death", self gettagorigin( "tag_eye" ) );
var_0 thread maps\_anim::anim_generic( self, "apache_cockpit_copilot_death", var_1 );
wait 0.1;
playfxontag( common_scripts\utility::getfx( "FX_apache_pilot_shot_blood" ), self, "j_head" );
}
hud_init()
{
var_0 = self.owner;
var_1 = [];
var_1["mg_reticle"] = var_0 maps\_hud_util::createclienticon( "apache_reticle", 128, 128 );
var_1["mg_reticle"] maps\_hud_util::setpoint( "CENTER", undefined, 0, 0 );
var_1["mg_reticle"].alpha = 1.0;
var_1["mg_bar"] = var_0 maps\_hud_util::createclientprogressbar( var_0, 36, "osp_hud_color_red", "apache_mg_heat_back", 64, 6, 9, 2 );
var_1["mg_bar"] maps\_hud_util::updatebar( 1 );
var_1["mg_bar"].alpha = 0.15;
var_1["mg_bar_bar"] = var_1["mg_bar"].bar;
var_1["mg_bar_bar"].alpha = 0.25;
var_1["mg_warn"] = var_0 maps\_hud_util::createclienticon( "apache_mg_heat_warn", 32, 32 );
var_1["mg_warn"] maps\_hud_util::setpoint( "TOP", "BOTTOM", 0, -9 );
var_1["mg_warn"].alpha = 0;
var_1["mg_warn"] maps\_hud_util::setparent( var_1["mg_bar"] );
var_1["zoom_overlay"] = var_0 maps\_hud_util::createclienticon( "apache_zoom_overlay", 256, 256 );
var_1["zoom_overlay"] maps\_hud_util::setpoint( "CENTER", undefined, 0, 0 );
var_1["zoom_overlay"].alpha = 0.0;
var_1["missile_roll"] = [];
var_1["roll"]["bg"] = var_0 maps\_hud_util::createclienticon( "apache_roll_back", 128, 32 );
var_1["roll"]["bg"] maps\_hud_util::setpoint( "TOP", "TOP", 0, 42 );
var_1["roll"]["bg"].alpha = 1;
var_1["roll"]["marker"] = var_0 maps\_hud_util::createclienticon( "apache_roll_marker", 64, 64 );
var_1["roll"]["marker"] maps\_hud_util::setpoint( "TOP", "TOP", 0, 40 );
var_1["roll"]["marker"].alpha = 1;
var_1["speed"] = [];
var_1["speed"]["bg"] = var_0 maps\_hud_util::createclienticon( "apache_speed_back", 128, 512 );
var_1["speed"]["bg"] maps\_hud_util::setpoint( "RIGHT", "RIGHT", 0, 0 );
var_1["speed"]["bg"].alpha = 1.0;
var_1["speed"]["arrow"] = var_0 maps\_hud_util::createclienticon( "apache_speed_arrow", 64, 32 );
var_1["speed"]["arrow"] maps\_hud_util::setpoint( "LEFT", "BOTTOM", -24, -118 );
var_1["speed"]["arrow"].alpha = 1.0;
var_1["speed"]["arrow"] maps\_hud_util::setparent( var_1["speed"]["bg"] );
var_1["speed"]["number"] = var_0 maps\_hud_util::createclientfontstring( "objective", 1.0 );
var_1["speed"]["number"] maps\_hud_util::setpoint( "LEFT", "RIGHT", -10, 0 );
var_1["speed"]["number"].color = ( 1, 1, 1 );
var_1["speed"]["number"].alpha = 1.0;
var_1["speed"]["number"].sort = -1;
var_1["speed"]["number"] maps\_hud_util::setparent( var_1["speed"]["arrow"] );
var_1["speed"]["number"] settext( "0" );
var_1["altitude"] = [];
var_1["altitude"]["line"] = var_0 maps\_hud_util::createclienticon( "apache_altitude_back", 128, 512 );
var_1["altitude"]["line"] maps\_hud_util::setpoint( "LEFT", "LEFT", 0, 0 );
var_1["altitude"]["line"].alpha = 1.0;
var_1["altitude"]["arrow"] = var_0 maps\_hud_util::createclienticon( "apache_altitude_arrow", 64, 32 );
var_1["altitude"]["arrow"] maps\_hud_util::setpoint( "RIGHT", "BOTTOM", 33, -119 );
var_1["altitude"]["arrow"].alpha = 1.0;
var_1["altitude"]["arrow"] maps\_hud_util::setparent( var_1["altitude"]["line"] );
var_1["bottom_mark"] = var_0 maps\_hud_util::createclienticon( "apache_bottom_mark", 128, 6 );
var_1["bottom_mark"] maps\_hud_util::setpoint( "CENTER", "CENTER", 0, 120 );
var_1["bottom_mark"].alpha = 1;
self.hud = var_1;
thread hud_update();
}
hud_update()
{
self endon( "LISTEN_destroy_pilot" );
var_0 = self.owner;
var_1 = self.hud;
var_2 = self.vehicle;
childthread hud_update_roll();
var_1["speed"]["number"].lastspeed = int( floor( var_2 vehicle_getspeed() ) );
var_1["speed"]["number"] setvalue( var_1["speed"]["number"].lastspeed );
for (;;)
{
hud_update_speed();
hud_update_look_meter();
hud_update_mg_heat();
wait 0.05;
}
}
hud_update_roll()
{
self endon( "LISTEN_destroy_pilot" );
var_0 = self.owner;
var_1 = self.hud;
var_2 = self.vehicle;
var_3 = getdvarfloat( "vehHelicopterMaxRoll" );
var_4 = -1 * var_3;
var_5 = var_3 - var_4;
var_6 = var_5 / 4.0;
var_7 = ceil( var_6 * 0.5 );
var_8 = [ "apache_roll_marker_right2", "apache_roll_marker_right1", "apache_roll_marker", "apache_roll_marker_left1", "apache_roll_marker_left2" ];
var_9 = [];
for ( var_10 = 0; var_10 < var_8.size; var_10++ )
var_9[int( var_4 + var_6 * var_10 )] = var_8[var_10];
var_8 = undefined;
var_11 = "";
for (;;)
{
var_12 = clamp( var_2.angles[2], var_4, var_3 );
var_13 = int( maps\_utility::linear_interpolate( 1.0 - ( var_12 - var_4 ) / var_5, var_4, var_3 ) );
level.audio_roll = var_12;
var_14 = undefined;
foreach ( var_17, var_16 in var_9 )
{
if ( var_13 >= var_17 - var_7 && var_13 <= var_17 + var_7 )
{
var_14 = var_16;
break;
}
}
if ( var_14 != var_11 )
{
var_1["roll"]["marker"] setshader( var_14, 64, 64 );
var_11 = var_14;
}
wait 0.05;
}
}
hud_update_mg_heat()
{
var_0 = self.hud;
var_1 = self.vehicle.mgturret[0];
if ( !isdefined( var_1.heat ) )
var_1.heat = 0;
var_0["mg_bar"] maps\_hud_util::updatebar( var_1.heat );
var_0["mg_bar"].alpha = 0.24;
var_0["mg_bar_bar"].alpha = 0.25 + var_1.heat * 0.75;
if ( !isdefined( var_1.heat_warn_toggle ) )
{
var_1.heat_warn_toggle = 0;
var_1.heat_warn_lastoggle = gettime();
}
if ( !isdefined( var_1.overheated ) )
var_1.overheated = 0;
if ( var_1.heat > 0.5 && gettime() - var_1.heat_warn_lastoggle >= 100 )
{
var_0["mg_warn"].alpha = var_1.heat_warn_toggle;
var_1.heat_warn_toggle = !var_1.heat_warn_toggle;
var_1.heat_warn_lastoggle = gettime();
}
else if ( !var_1.overheated )
var_0["mg_warn"].alpha = 0;
if ( var_1.overheated )
{
var_0["mg_bar"] maps\_hud_util::updatebar( var_1.heat );
var_0["mg_warn"].alpha = 1;
var_0["mg_bar_bar"].alpha = var_1.heat_warn_toggle;
if ( gettime() - var_1.heat_warn_lastoggle >= 100 )
{
var_1.heat_warn_toggle = !var_1.heat_warn_toggle;
var_1.heat_warn_lastoggle = gettime();
}
}
}
hud_update_speed()
{
var_0 = self.vehicle;
var_1 = self.hud;
var_2 = var_1["speed"]["number"].lastspeed;
var_3 = 160;
var_4 = var_0 vehicle_getspeed();
var_5 = abs( -400 ) - abs( -118 );
var_6 = -118 + -1 * max( 0, var_4 / var_3 * var_5 );
var_7 = var_5 * 0.04;
var_6 = var_6 / var_7 * var_7;
var_6 = int( var_6 );
var_6 = clamp( var_6, -400, -118 );
var_1["speed"]["arrow"] maps\_hud_util::setpoint( "LEFT", "BOTTOM", -24, var_6, 0 );
if ( var_2 != var_4 )
{
var_1["speed"]["number"] setvalue( int( var_4 ) );
var_1["speed"]["number"].lastspeed = var_4;
}
}
hud_update_look_meter()
{
var_0 = self.vehicle;
var_1 = self.hud;
var_2 = self.owner;
var_3 = angleclamp180( var_2 getplayerangles()[0] );
var_4 = 1 - ( var_3 - 30 ) / -60;
var_5 = abs( -395 ) - abs( -119 );
var_6 = -119 + -1 * max( 0, var_4 * var_5 );
var_6 = int( clamp( var_6, -395, -119 ) );
var_7 = var_5 * 0.04;
var_6 = int( var_6 / var_7 ) * var_7;
var_1["altitude"]["arrow"] maps\_hud_util::setpoint( "RIGHT", "BOTTOM", 33, var_6, 0 );
}
_start( var_0 )
{
var_1 = self.owner;
self.pilot_ai notify( "LISTEN_start_pilot" );
self.weapon["hydra_lockOn_missile"] thread vehicle_scripts\_apache_player_missile_hydra_and_lockon::_start();
if ( !isplatformweakfillrate() )
{
self.hud_mask_model = spawn( "script_model", var_1 geteye() );
self.hud_mask_model setmodel( "viewmodel_prototype_apache_visor" );
self.hud_mask_model linktoplayerview( var_1, "tag_origin", ( 7.5, 0, 0.3 ), ( 0, 0, 0 ), 1 );
}
hud_start();
thread monitorsaverecentlyloaded();
thread monitorturretfire();
thread monitorweaponchange();
if ( var_0 )
thread monitorads();
thread monitorthermalvision();
}
isplatformweakfillrate()
{
return !maps\_utility::is_gen4();
}
monitorsaverecentlyloaded()
{
self endon( "LISTEN_end_pilot" );
for (;;)
{
if ( issaverecentlyloaded() )
{
self.owner notify( "SAVGAME_RELEASES_BUTTONS" );
setdvar( "ui_deadquote", "" );
}
wait 0.05;
}
}
hud_start()
{
maps\_utility::deep_array_thread( self.hud, ::set_key, [ 1, "alpha" ] );
}
turret_init( var_0, var_1 )
{
self dontcastshadows();
self.owner = var_1;
maps\_utility::ent_flag_set( "FLAG_turret_init" );
}
monitorturretfire()
{
var_0 = self.owner;
var_1 = self.vehicle;
var_2 = var_1.mgturret[0];
var_0 endon( "LISTEN_end_pilot" );
var_2 maps\_utility::ent_flag_wait( "FLAG_turret_init" );
childthread monitorturretearthquake();
childthread monitorturretlookat();
var_3 = common_scripts\utility::getfx( "FX_apache_pilot_turret_projectile" );
var_4 = common_scripts\utility::getfx( "FX_apache_pilot_turret_flash_view" );
var_2.heat = 0;
var_2.overheated = 0;
var_5 = 0;
for (;;)
{
if ( var_2.overheated )
{
wait 3;
var_2.heat = 0;
var_2.overheated = 0;
var_6 = var_2 maps\_utility::create_blend( ::turret_overheat_cool, 1.0, 0 );
var_6.time = 1;
wait 1;
}
var_1 waittill( "turret_fire" );
var_2 shootturret();
var_7 = var_2 gettagangles( "tag_flash" );
var_8 = anglestoforward( var_7 );
var_9 = anglestoright( var_7 );
var_10 = anglestoup( var_7 );
var_11 = randomfloatrange( -8, 8 );
var_12 = randomfloatrange( -8, 8 );
playfx( var_3, var_2 gettagorigin( "tag_flash" ) + var_11 * var_9 + var_12 * var_10, var_8 );
playfxontag( var_4, var_2, "tag_flash" );
var_2 childthread turret_heat_and_cool();
}
}
turret_overheat_cool( var_0, var_1, var_2 )
{
self.heat = 1 - var_0;
}
turret_heat_and_cool()
{
self.heat = self.heat + 0.01;
self notify( "turret_cool" );
self endon( "turret_cool" );
if ( self.heat >= 1 )
{
self.overheated = 1;
return;
}
wait 0.2;
while ( self.heat >= 0 )
{
wait 0.05;
self.heat = self.heat - 0.02;
}
self.heat = 0;
}
monitorturretlookat( var_0, var_1 )
{
var_1 = self.owner;
var_0 = self.vehicle;
var_2 = var_0.mgturret[0];
var_3 = var_1 getplayerangles();
var_4 = var_1 geteye();
var_5 = anglestoforward( var_3 );
var_6 = 10000;
var_7 = var_4 + var_6 * var_5;
var_8 = spawn( "script_model", var_7 );
var_8 setmodel( "tag_origin" );
var_9 = gettime();
var_2.mytarget = var_8;
var_2 settargetentity( var_8 );
for (;;)
{
var_3 = var_1 getplayerangles();
var_5 = anglestoforward( var_3 );
var_10 = var_1 geteye();
var_11 = var_10 + 512 * var_5;
var_12 = var_11 + 10000 * var_5;
var_13 = bullettrace( var_11, var_12, 0, var_0 );
var_6 = var_13["fraction"] * 10000;
var_9 = gettime();
var_8.origin = var_10 + ( 512 + var_6 ) * var_5;
wait 0.05;
}
}
monitorturretearthquake()
{
var_0 = self.owner;
var_0 notifyonplayercommand( "LISTEN_startTurretFire", "+attack" );
var_0 notifyonplayercommand( "LISTEN_stopTurretFire", "-attack" );
for (;;)
{
var_0 waittill( "LISTEN_startTurretFire" );
childthread doturretearthquake();
var_0 childthread player_poll_button_release_and_notify( "attack", "LISTEN_stopTurretFire" );
var_0 waittill( "LISTEN_stopTurretFire" );
}
}
doturretearthquake()
{
var_0 = self.owner;
var_0 endon( "LISTEN_stopTurretFire" );
wait 0.1;
for (;;)
{
earthquake( 0.1, 0.5, var_0.origin, 512 );
wait 0.1;
}
}
player_poll_button_release_and_notify( var_0, var_1 )
{
self endon( "death" );
self endon( var_1 );
waittillframeend;
for (;;)
{
if ( !button_pressed_from_string( var_0 ) )
{
self notify( var_1 );
break;
}
wait 0.05;
}
}
button_pressed_from_string( var_0 )
{
var_4 = undefined;
var_5 = undefined;
switch ( var_0 )
{
case "frag":
var_4 = ::fragbuttonpressed;
break;
case "ads":
var_4 = ::adsbuttonpressed;
var_5 = 1;
break;
case "attack":
var_4 = ::attackbuttonpressed;
break;
case "melee":
var_4 = ::meleebuttonpressed;
break;
case "use":
var_4 = ::usebuttonpressed;
break;
case "vehicle_attack":
var_4 = ::vehicleattackbuttonpressed;
break;
case "secondary_attack_off_hand":
var_4 = ::secondaryoffhandbuttonpressed;
break;
default:
break;
}
var_6 = undefined;
if ( isdefined( var_5 ) )
var_6 = self call [[ var_4 ]]( var_5 );
else
var_6 = self call [[ var_4 ]]();
return var_6;
}
fov_get_default()
{
return 65;
}
fov_get_ads()
{
return 15;
}
monitorads()
{
var_0 = self.owner;
self endon( "LISTEN_end_pilot" );
self.adstoggled = 0;
self.adszoomed = 0;
var_1 = 0;
self.hud["zoom_overlay"].alpha = 0.0;
thread monitoradshold();
thread monitoradstoggle();
var_2 = "LISTEN_apache_player_stop_ADS";
var_0 endon( "death" );
for (;;)
{
var_3 = 0;
if ( self.adszoomed && var_1 && !var_0 adsbuttonpressed() )
{
var_2 = "LISTEN_apache_player_stop_ADS";
var_3 = 1;
}
if ( !var_3 )
var_2 = var_0 common_scripts\utility::waittill_any_return( "LISTEN_apache_player_toggle_ADS", "LISTEN_apache_player_start_ADS", "LISTEN_apache_player_stop_ADS", "SAVGAME_RELEASES_BUTTONS" );
if ( var_2 == "SAVGAME_RELEASES_BUTTONS" )
continue;
var_4 = var_2 == "LISTEN_apache_player_toggle_ADS";
var_1 = var_2 == "LISTEN_apache_player_start_ADS";
var_5 = var_2 == "LISTEN_apache_player_stop_ADS";
if ( self.adszoomed )
{
if ( self.adstoggled )
{
if ( var_4 || var_5 )
{
self.adstoggled = 0;
self.adszoomed = 0;
monitorads_zoom_out();
}
}
else if ( var_5 )
{
monitorads_zoom_out();
self.adszoomed = 0;
}
continue;
}
self.adstoggled = 0;
if ( var_4 )
{
self.adstoggled = 1;
self.adszoomed = 1;
monitorads_zoom_in();
continue;
}
if ( var_1 )
{
self.adszoomed = 1;
monitorads_zoom_in();
}
}
}
monitoradstoggle()
{
var_0 = self.owner;
var_0 notifyonplayercommand( "LISTEN_apache_player_toggle_ADS", "+sprint_zoom" );
var_0 notifyonplayercommand( "LISTEN_apache_player_toggle_ADS", "+sprint" );
var_0 notifyonplayercommand( "LISTEN_apache_player_toggle_ADS", "+ads_akimbo_accessible" );
var_0 notifyonplayercommand( "LISTEN_apache_player_toggle_ADS", "+toggleads_throw" );
}
monitoradshold()
{
var_0 = self.owner;
var_0 notifyonplayercommand( "LISTEN_apache_player_start_ADS", "+speed" );
var_0 notifyonplayercommand( "LISTEN_apache_player_start_ADS", "+speed_throw" );
var_0 notifyonplayercommand( "LISTEN_apache_player_stop_ADS", "-speed" );
var_0 notifyonplayercommand( "LISTEN_apache_player_stop_ADS", "-speed_throw" );
}
monitorads_blend_dof( var_0 )
{
var_1 = self.owner;
self notify( "monitorADS_blend_dof" );
self endon( "monitorADS_blend_dof" );
self endon( "LISTEN_end_pilot" );
if ( var_0 )
{
maps\_art::dof_enable_script( 0, 207, 5.4, 70000, 130000, 0.0, 0.15 );
wait 0.15;
var_1 maps\_utility::ent_flag_set( "FLAG_apache_pilot_ADS" );
}
else
{
maps\_art::dof_disable_script( 0.2 );
var_1 maps\_utility::ent_flag_clear( "FLAG_apache_pilot_ADS" );
}
}
monitorads_zoom_elem_offset( var_0, var_1 )
{
if ( !isdefined( self.xoffset_default ) )
self.xoffset_default = self.xoffset;
if ( !isdefined( self.yoffset_default ) )
self.yoffset_default = self.yoffset;
var_0 = common_scripts\utility::ter_op( isdefined( var_0 ), var_0, self.xoffset_default );
var_1 = common_scripts\utility::ter_op( isdefined( var_1 ), var_1, self.yoffset_default );
maps\_hud_util::setpoint( self.point, self.relativepoint, var_0, var_1 );
}
monitorads_zoom_elem_reset()
{
if ( isdefined( self.xoffset_default ) && isdefined( self.yoffset_default ) )
{
maps\_hud_util::setpoint( self.point, self.relativepoint, self.xoffset_default, self.yoffset_default );
self.xoffset_default = undefined;
self.yoffset_default = undefined;
}
}
monitorads_zoom_hud_delay( var_0, var_1 )
{
self notify( "monitorADS_zoom_overlay_delay" );
self endon( "monitorADS_zoom_overlay_delay" );
var_2 = self.vehicle.heli.missiledefense;
var_3 = self.weapon[self.weapon_curr];
if ( var_0 )
{
if ( isdefined( var_1 ) )
wait( var_1 );
maps\_utility::deep_array_thread( self.hud, ::set_key, [ 0.0, "alpha" ] );
self.hud["mg_reticle"].alpha = 1.0;
self.hud["zoom_overlay"].alpha = 1.0;
if ( isdefined( var_3.hud ) && isdefined( var_3.hud["missile_bg"] ) )
{
var_3.hud["missile_bg"] monitorads_zoom_elem_offset( 230, 101 );
var_3.hud["missile_straight_bg"] monitorads_zoom_elem_offset( 230, 61 );
}
if ( isdefined( var_2.hud ) )
{
if ( isdefined( var_2.hud["flares"] ) && isdefined( var_2.hud["flares"]["back"] ) )
var_2.hud["flares"]["back"] monitorads_zoom_elem_offset( -230, 101 );
if ( isdefined( var_2.hud["warning"] ) && isdefined( var_2.hud["warning"]["bg_lock_left"] ) )
var_2.hud["warning"]["bg_lock_left"] monitorads_zoom_elem_offset( -230 );
if ( isdefined( var_2.hud["warning"] ) && isdefined( var_2.hud["warning"]["bg_lock_right"] ) )
var_2.hud["warning"]["bg_lock_right"] monitorads_zoom_elem_offset( 230 );
}
wait 0.05;
self.hud["mg_reticle"].alpha = 0.0;
}
else
{
if ( isdefined( var_1 ) )
wait( var_1 );
maps\_utility::deep_array_thread( self.hud, ::set_key, [ 1.0, "alpha" ] );
if ( isdefined( var_3.hud ) && isdefined( var_3.hud["missile_bg"] ) )
{
var_3.hud["missile_bg"] monitorads_zoom_elem_reset();
var_3.hud["missile_straight_bg"] monitorads_zoom_elem_reset();
}
if ( isdefined( var_2.hud ) )
{
if ( isdefined( var_2.hud["flares"] ) && isdefined( var_2.hud["flares"]["back"] ) )
var_2.hud["flares"]["back"] monitorads_zoom_elem_reset();
if ( isdefined( var_2.hud["warning"] ) && isdefined( var_2.hud["warning"]["bg_lock_left"] ) )
var_2.hud["warning"]["bg_lock_left"] monitorads_zoom_elem_reset();
if ( isdefined( var_2.hud["warning"] ) && isdefined( var_2.hud["warning"]["bg_lock_right"] ) )
var_2.hud["warning"]["bg_lock_right"] monitorads_zoom_elem_reset();
}
wait 0.05;
self.hud["zoom_overlay"].alpha = 0.0;
}
}
monitorads_zoom_in()
{
var_0 = self.owner;
var_0 maps\_utility::lerpfov_saved( 15, 0.15 );
if ( !maps\_utility::is_coop() )
monitorads_blend_dof( 1 );
thread monitorads_zoom_hud_delay( 1 );
}
monitorads_zoom_out()
{
var_0 = self.owner;
var_0 maps\_utility::lerpfov_saved( 65, 0.2 );
if ( !maps\_utility::is_coop() )
monitorads_blend_dof( 0 );
thread monitorads_zoom_hud_delay( 0 );
}
monitorthermalvision()
{
self endon( "LISTEN_end_pilot" );
var_0 = self.owner;
self.thermal_state = "ON_PULSE";
}
monitorweaponchange()
{
self endon( "LISTEN_end_pilot" );
var_0 = self.owner;
var_1 = [];
var_2 = 0;
foreach ( var_5, var_4 in self.weapon )
{
var_1[var_1.size] = var_5;
if ( var_5 == self.currentweapon )
{
var_2 = var_1.size - 1;
activateweapon( var_5 );
}
}
var_6 = var_1.size;
if ( var_6 == 1 )
return;
var_0 notifyonplayercommand( "LISTEN_pilot_weaponSwitch", "weapnext" );
for (;;)
{
var_0 maps\_utility::ent_flag_clear( "FLAG_apache_pilot_changed_weapons" );
var_0 waittill( "LISTEN_pilot_weaponSwitch" );
var_0 maps\_utility::ent_flag_set( "FLAG_apache_pilot_has_changed_weapons" );
var_0 maps\_utility::ent_flag_set( "FLAG_apache_pilot_changed_weapons" );
deactivateweapon( self.currentweapon );
var_2++;
var_2 = var_2 % var_6;
self.currentweapon = var_1[var_2];
activateweapon( self.currentweapon );
wait 0.1;
}
}
activateweapon( var_0 )
{
switch ( var_0 )
{
case "hydra_lockOn_missile":
self.weapon[var_0] vehicle_scripts\_apache_player_missile_hydra_and_lockon::activate();
break;
default:
break;
}
self.weapon_curr = var_0;
}
deactivateweapon( var_0 )
{
switch ( var_0 )
{
case "hydra_lockOn_missile":
self.weapon[var_0] vehicle_scripts\_apache_player_missile_hydra_and_lockon::deactivate();
break;
default:
break;
}
}
_end()
{
var_0 = self.owner;
self notify( "LISTEN_end_pilot" );
var_0 notify( "LISTEN_end_pilot" );
self.pilot_ai notify( "LISTEN_end_pilot" );
maps\_utility::deep_array_thread( self.hud, ::set_key, [ 0, "alpha" ] );
var_0 thermalvisionoff();
self.weapon["hydra_lockOn_missile"] vehicle_scripts\_apache_player_missile_hydra_and_lockon::_end();
maps\_art::dof_disable_script( 0.2 );
}
_destroy()
{
var_0 = self.owner;
_end();
var_0 maps\_utility::ent_flag_clear( "FLAG_apache_pilot_has_changed_weapons", 1 );
var_0 maps\_utility::ent_flag_clear( "FLAG_apache_pilot_changed_weapons", 1 );
var_0 maps\_utility::ent_flag_clear( "FLAG_apache_pilot_ADS", 1 );
self.pilot_ai notify( "death" );
self notify( "LISTEN_destroy_pilot" );
var_0 notify( "LISTEN_destroy_pilot" );
maps\_utility::deep_array_call( self.hud, ::destroy );
self.pilot_ai delete();
self.vehicle.mgturret[0].mytarget delete();
self.weapon["hydra_lockOn_missile"] vehicle_scripts\_apache_player_missile_hydra_and_lockon::_destroy();
if ( !isplatformweakfillrate() )
self.hud_mask_model delete();
}
set_key( var_0, var_1 )
{
if ( !isdefined( self ) || !isdefined( var_1 ) )
return;
switch ( var_1 )
{
case "alpha":
self.alpha = var_0;
break;
}
}