// 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; } }