1248 lines
53 KiB
Plaintext
1248 lines
53 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
depth_charge_init()
|
|
{
|
|
precacherumble( "minigun_rumble" );
|
|
precacheshader( "crr_dpad_osprey_active" );
|
|
precacheshader( "crr_dpad_osprey_inactive" );
|
|
precacheshader( "crr_hud_osprey_overlay_01" );
|
|
precacheshader( "crr_hud_osprey_overlay_02" );
|
|
precacheitem( "remote_tablet_osprey" );
|
|
precacheitem( "osprey_missile" );
|
|
precachemodel( "weapon_osprey_turret" );
|
|
precacheturret( "osprey_minigun" );
|
|
precachestring( &"SCRIPT_X" );
|
|
precachestring( &"CARRIER_HUD_PERIOD" );
|
|
precachestring( &"CARRIER_RNDS" );
|
|
precacheshader( "hud_dpad" );
|
|
precacheshader( "hud_arrow_up" );
|
|
precacheshader( "ac130_overlay_grain" );
|
|
precachestring( &"CARRIER_OSPREY_HUD_MG" );
|
|
precachestring( &"CARRIER_OSPREY_HUD_MISSILE" );
|
|
precachestring( &"CARRIER_DEPTH_CHARGE_HINT" );
|
|
precachestring( &"CARRIER_DEPTH_CHARGE_MISSILE_HINT" );
|
|
precachestring( &"CARRIER_DEPTH_CHARGE_MG_HINT" );
|
|
precachestring( &"CARRIER_DEPTH_CHARGE_MG_PC_HINT" );
|
|
common_scripts\utility::flag_init( "defend_osprey_ready" );
|
|
level.osprey_hit_zodiacs = 0;
|
|
level.osprey_hit_gunboats = 0;
|
|
level.osprey_hit_fake_targets = 0;
|
|
level.osprey_total_hits = 0;
|
|
level.depth_charge_max_fov = 65;
|
|
level.depth_charge_min_fov = 50;
|
|
level.depth_charge_min_slow_aim_yaw = 0.25;
|
|
level.depth_charge_max_slow_aim_yaw = 0.3;
|
|
level.depth_charge_min_slow_aim_pitch = 0.25;
|
|
level.depth_charge_max_slow_aim_pitch = 0.35;
|
|
level.depth_charge_current_slow_yaw = 0.3;
|
|
level.depth_charge_current_slow_pitch = 0.5;
|
|
level.depth_charge_firing_slow_aim_modifier = 0.0;
|
|
level.depth_charge_current_fov = level.depth_charge_max_fov;
|
|
level.fov_range = level.depth_charge_max_fov - level.depth_charge_min_fov;
|
|
level.slow_aim_yaw_range = level.depth_charge_max_slow_aim_yaw - level.depth_charge_min_slow_aim_yaw;
|
|
level.slow_aim_pitch_range = level.depth_charge_max_slow_aim_pitch - level.depth_charge_min_slow_aim_pitch;
|
|
level.fake_targets = [];
|
|
level.first_time_depth_charge = 1;
|
|
level.depth_charge_friendly_fire_kills_to_fail = 2;
|
|
level.depth_charge_friendly_fire_kills = 0;
|
|
}
|
|
|
|
depth_charge_give_device()
|
|
{
|
|
self setweaponhudiconoverride( "actionslot1", "crr_dpad_osprey_inactive" );
|
|
refreshhudammocounter();
|
|
}
|
|
|
|
depth_charge_give_control()
|
|
{
|
|
self endon( "depth_charge_remove_control" );
|
|
self endon( "death" );
|
|
|
|
if ( !isalive( level.player ) )
|
|
return;
|
|
|
|
self notifyonplayercommand( "use_depth_charge", "+actionslot 1" );
|
|
self setweaponhudiconoverride( "actionslot1", "crr_dpad_osprey_active" );
|
|
refreshhudammocounter();
|
|
self.osprey_control = 1;
|
|
self notify( "defend_osprey_ready" );
|
|
thread depth_charge_hint();
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "use_depth_charge" );
|
|
|
|
if ( !self isonground() || self isthrowinggrenade() || self ismeleeing() )
|
|
continue;
|
|
|
|
thread depth_charge_use();
|
|
break;
|
|
}
|
|
|
|
self waittill( "depth_charge_run_finished" );
|
|
thread depth_charge_replay();
|
|
thread depth_charge_exit();
|
|
}
|
|
|
|
depth_charge_remove_control( var_0 )
|
|
{
|
|
self notify( "depth_charge_remove_control" );
|
|
self.osprey_control = 0;
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = 0;
|
|
|
|
if ( isdefined( self.using_depth_charge ) && self.using_depth_charge )
|
|
depth_charge_exit();
|
|
|
|
if ( var_0 )
|
|
self setweaponhudiconoverride( "actionslot1", "crr_dpad_osprey_inactive" );
|
|
else
|
|
self setweaponhudiconoverride( "actionslot1", "none" );
|
|
|
|
self notifyonplayercommand( "", "+actionslot 1" );
|
|
refreshhudammocounter();
|
|
}
|
|
|
|
#using_animtree("vehicles");
|
|
|
|
depth_charge_use()
|
|
{
|
|
self endon( "depth_charge_exit" );
|
|
self endon( "death" );
|
|
self notify( "start_using_depth_charge" );
|
|
self.using_depth_charge = 1;
|
|
|
|
if ( self getstance() == "prone" )
|
|
self setstance( "crouch" );
|
|
|
|
self setmovespeedscale( 0 );
|
|
self allowjump( 0 );
|
|
depth_charge_control_up();
|
|
self.in_osprey = 1;
|
|
level.old_player_origin = self.origin;
|
|
level.old_player_angles = self.angles;
|
|
self.prev_stance = self getstance();
|
|
level.osprey_hit_zodiacs = 0;
|
|
level.osprey_hit_gunboats = 0;
|
|
level.osprey_hit_fake_targets = 0;
|
|
level.osprey_total_hits = 0;
|
|
self hide();
|
|
self enabledeathshield( 1 );
|
|
self enableinvulnerability();
|
|
self.rain = 0;
|
|
maps\_utility::store_players_weapons( "depth_charge" );
|
|
self takeallweapons();
|
|
self allowads( 0 );
|
|
self allowmelee( 0 );
|
|
self allowcrouch( 0 );
|
|
self allowprone( 0 );
|
|
|
|
if ( isdefined( level.defend_zodiac_osprey ) )
|
|
level.defend_zodiac_osprey delete();
|
|
|
|
level.defend_zodiac_osprey = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "defend_zodiac_osprey" );
|
|
level.defend_zodiac_osprey useanimtree( #animtree );
|
|
level.defend_zodiac_osprey setanim( %v22_osprey_flying_idle );
|
|
level.defend_zodiac_osprey.godmode = 1;
|
|
level.defend_zodiac_osprey setmaxpitchroll( 3, 18 );
|
|
level.depth_charge_default_pitch = 30;
|
|
level.depth_charge_pitch_up_allowance = 25;
|
|
level.depth_charge_pitch_down_allowance = 25;
|
|
self setorigin( level.defend_zodiac_osprey gettagorigin( "tag_ground" ) - anglestoup( level.defend_zodiac_osprey.angles ) * 60 );
|
|
self setplayerangles( ( level.depth_charge_default_pitch, level.defend_zodiac_osprey.angles[1], level.defend_zodiac_osprey.angles[2] ) );
|
|
self enableslowaim( 0.25, 0.25 );
|
|
thread depth_charge_linkto();
|
|
self.osprey_turret = spawnturret( "misc_turret", level.defend_zodiac_osprey gettagorigin( "tag_player" ), "osprey_minigun" );
|
|
self.osprey_turret.angles = self getplayerangles();
|
|
self.osprey_turret maketurretinoperable();
|
|
self.osprey_turret setcandamage( 0 );
|
|
self.osprey_turret setmodel( "weapon_osprey_turret" );
|
|
self.osprey_turret setturretteam( "allies" );
|
|
self.osprey_turret setmode( "manual" );
|
|
self.osprey_turret.weaponinfo = "osprey_minigun";
|
|
self.osprey_turret.weaponname = "osprey_minigun";
|
|
self.osprey_turret.turret_target = common_scripts\utility::spawn_tag_origin();
|
|
self.osprey_turret.turret_target.origin = self geteye() + anglestoforward( self getplayerangles() ) * 2000;
|
|
self.osprey_turret settargetentity( self.osprey_turret.turret_target );
|
|
self.osprey_turret linkto( level.defend_zodiac_osprey );
|
|
|
|
if ( !isdefined( self.osprey_minigun_ammo ) )
|
|
self.osprey_minigun_ammo = 9999;
|
|
|
|
setsaveddvar( "ammoCounterHide", "1" );
|
|
setsaveddvar( "actionSlotsHide", "1" );
|
|
setsaveddvar( "cg_fov", 65 );
|
|
setsaveddvar( "compassHideSansObjectivePointer", 1 );
|
|
level.depth_charge_current_fov = level.depth_charge_max_fov;
|
|
level.depth_charge_start_time = gettime();
|
|
level.depth_charges = [];
|
|
level.defend_zodiac_osprey.old_contents = level.defend_zodiac_osprey setcontents( 0 );
|
|
thread maps\carrier_audio::aud_carr_osprey_zone_on();
|
|
thread depth_charge_run_finished();
|
|
self notify( "using_depth_charge" );
|
|
depth_charge_hud();
|
|
thread setup_fake_destroyer_targets();
|
|
thread depth_charge_mark_friendlies();
|
|
thread depth_charge_update_target_location();
|
|
thread depth_charge_drop_hint();
|
|
thread depth_charge_minigun_hint();
|
|
thread depth_charge_turn();
|
|
thread depth_charge_monitor_drop();
|
|
thread monitor_machine_gun();
|
|
thread depth_charge_handle_zoom();
|
|
thread depth_charge_monitor_wet();
|
|
}
|
|
|
|
depth_charge_linkto()
|
|
{
|
|
self playerlinktodelta( level.defend_zodiac_osprey, "tag_ground", 0.85, 70, 70, level.depth_charge_pitch_up_allowance, level.depth_charge_pitch_down_allowance, 0 );
|
|
self playerlinkedoffsetenable();
|
|
}
|
|
|
|
depth_charge_turn()
|
|
{
|
|
self endon( "death" );
|
|
common_scripts\utility::flag_wait( "defend_zodiac_osprey_turn" );
|
|
level.player notify( "teleport_zodiacs" );
|
|
common_scripts\utility::flag_wait( "defend_zodiac_osprey_end_turn" );
|
|
common_scripts\utility::flag_clear( "defend_zodiac_osprey_turn" );
|
|
common_scripts\utility::flag_clear( "defend_zodiac_osprey_turn_spawn" );
|
|
}
|
|
|
|
depth_charge_run_finished()
|
|
{
|
|
self endon( "death" );
|
|
common_scripts\utility::flag_clear( "defend_zodiac_osprey_pre_finished" );
|
|
common_scripts\utility::flag_wait( "defend_zodiac_osprey_pre_finished" );
|
|
self playersetstreamorigin( level.old_player_origin );
|
|
maps\_utility::delaythread( 0.7, ::fade_from_black );
|
|
depth_charge_check_failure();
|
|
common_scripts\utility::flag_clear( "defend_zodiac_osprey_finished" );
|
|
common_scripts\utility::flag_wait( "defend_zodiac_osprey_finished" );
|
|
clear_target_array();
|
|
self notify( "depth_charge_run_finished" );
|
|
}
|
|
|
|
fade_from_black()
|
|
{
|
|
if ( isdefined( level.black_overlay ) )
|
|
{
|
|
level.black_overlay.alpha = 0;
|
|
level.black_overlay fadeovertime( 0.25 );
|
|
level.black_overlay.alpha = 1;
|
|
wait 0.35;
|
|
level.black_overlay fadeovertime( 0.25 );
|
|
level.black_overlay.alpha = 0;
|
|
}
|
|
}
|
|
|
|
clear_target_array()
|
|
{
|
|
var_0 = 0;
|
|
|
|
while ( target_getarray().size > 0 )
|
|
{
|
|
var_1 = target_getarray();
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
if ( !isdefined( var_3 ) )
|
|
continue;
|
|
|
|
if ( var_0 > 15 )
|
|
{
|
|
wait 0.05;
|
|
var_0 = 0;
|
|
}
|
|
|
|
if ( target_istarget( var_3 ) )
|
|
{
|
|
target_remove( var_3 );
|
|
var_0++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
depth_charge_exit()
|
|
{
|
|
self notify( "depth_charge_exit" );
|
|
self endon( "death" );
|
|
self.using_depth_charge = 0;
|
|
self.in_osprey = 0;
|
|
maps\_utility::vision_set_fog_changes( "carrier", 0 );
|
|
thread depth_charge_clear_hud();
|
|
thread maps\carrier_audio::aud_carr_osprey_zone_off();
|
|
|
|
if ( isdefined( level.defend_zodiac_osprey ) )
|
|
level.defend_zodiac_osprey stoploopsound( "scn_carr_osprey_gun_loop" );
|
|
|
|
self unlink();
|
|
|
|
if ( isdefined( self.osprey_turret ) )
|
|
{
|
|
self.osprey_turret.turret_target delete();
|
|
self.osprey_turret delete();
|
|
}
|
|
|
|
self setstance( self.prev_stance );
|
|
self setorigin( level.old_player_origin );
|
|
self setplayerangles( level.old_player_angles );
|
|
setsaveddvar( "ammoCounterHide", "0" );
|
|
setsaveddvar( "actionSlotsHide", "0" );
|
|
setsaveddvar( "compassHideSansObjectivePointer", 0 );
|
|
setsaveddvar( "cg_fov", 65 );
|
|
depth_charge_control_down();
|
|
self enableweaponswitch();
|
|
self enableoffhandweapons();
|
|
self show();
|
|
self disableslowaim();
|
|
self allowads( 1 );
|
|
self allowmelee( 1 );
|
|
self allowcrouch( 1 );
|
|
self allowprone( 1 );
|
|
self setmovespeedscale( 1 );
|
|
self allowjump( 1 );
|
|
self enabledeathshield( 0 );
|
|
self disableinvulnerability();
|
|
self notify( "cleanup_depth_charges" );
|
|
level.depth_charges = [];
|
|
|
|
if ( isdefined( level.defend_zodiac_osprey ) )
|
|
level.defend_zodiac_osprey setcontents( level.defend_zodiac_osprey.old_contents );
|
|
|
|
if ( isdefined( level.depth_charge_target ) )
|
|
{
|
|
level.depth_charge_target delete();
|
|
level.depth_charge_target = undefined;
|
|
}
|
|
|
|
self setweaponhudiconoverride( "actionslot1", "crr_dpad_osprey_inactive" );
|
|
refreshhudammocounter();
|
|
wait 0.05;
|
|
setsaveddvar( "cg_fov", 65 );
|
|
}
|
|
|
|
depth_charge_hud()
|
|
{
|
|
self.depth_charge_hud_elements = [];
|
|
self.depth_charge_hud_elements["screen_overlay"] = newclienthudelem( self );
|
|
self.depth_charge_hud_elements["screen_overlay"].x = 0;
|
|
self.depth_charge_hud_elements["screen_overlay"].y = 0;
|
|
self.depth_charge_hud_elements["screen_overlay"].alignx = "left";
|
|
self.depth_charge_hud_elements["screen_overlay"].aligny = "top";
|
|
self.depth_charge_hud_elements["screen_overlay"].horzalign = "fullscreen";
|
|
self.depth_charge_hud_elements["screen_overlay"].vertalign = "fullscreen";
|
|
self.depth_charge_hud_elements["screen_overlay"].alpha = 1;
|
|
self.depth_charge_hud_elements["screen_overlay"] setshader( "crr_hud_osprey_overlay_01", 640, 480 );
|
|
self.depth_charge_hud_elements["screen_vignette"] = newclienthudelem( self );
|
|
self.depth_charge_hud_elements["screen_vignette"].x = 0;
|
|
self.depth_charge_hud_elements["screen_vignette"].y = 0;
|
|
self.depth_charge_hud_elements["screen_vignette"].alignx = "left";
|
|
self.depth_charge_hud_elements["screen_vignette"].aligny = "top";
|
|
self.depth_charge_hud_elements["screen_vignette"].horzalign = "fullscreen";
|
|
self.depth_charge_hud_elements["screen_vignette"].vertalign = "fullscreen";
|
|
self.depth_charge_hud_elements["screen_vignette"].alpha = 1;
|
|
self.depth_charge_hud_elements["screen_vignette"] setshader( "crr_hud_osprey_overlay_02", 640, 480 );
|
|
self.depth_charge_hud_elements["grain_overlay"] = newclienthudelem( self );
|
|
self.depth_charge_hud_elements["grain_overlay"].x = 0;
|
|
self.depth_charge_hud_elements["grain_overlay"].y = 0;
|
|
self.depth_charge_hud_elements["grain_overlay"].alignx = "left";
|
|
self.depth_charge_hud_elements["grain_overlay"].aligny = "top";
|
|
self.depth_charge_hud_elements["grain_overlay"].horzalign = "fullscreen";
|
|
self.depth_charge_hud_elements["grain_overlay"].vertalign = "fullscreen";
|
|
self.depth_charge_hud_elements["grain_overlay"].alpha = 0.25;
|
|
self.depth_charge_hud_elements["grain_overlay"] setshader( "ac130_overlay_grain", 640, 480 );
|
|
self.depth_charge_hud_elements["mg_text"] = maps\_hud_util::createfontstring( "hudsmall", 1 );
|
|
self.depth_charge_hud_elements["mg_text"].x = -140;
|
|
|
|
if ( !common_scripts\utility::is_player_gamepad_enabled() )
|
|
self.depth_charge_hud_elements["mg_text"].x = 140;
|
|
|
|
self.depth_charge_hud_elements["mg_text"].y = -5;
|
|
self.depth_charge_hud_elements["mg_text"].alignx = "center";
|
|
self.depth_charge_hud_elements["mg_text"].aligny = "top";
|
|
self.depth_charge_hud_elements["mg_text"].horzalign = "center";
|
|
self.depth_charge_hud_elements["mg_text"].vertalign = "top";
|
|
self.depth_charge_hud_elements["mg_text"].alpha = 0.7;
|
|
self.depth_charge_hud_elements["mg_text"].sort = 1;
|
|
self.depth_charge_hud_elements["mg_text"] settext( &"CARRIER_OSPREY_HUD_MG" );
|
|
create_box( "mg_text_bg", self.depth_charge_hud_elements["mg_text"].x, self.depth_charge_hud_elements["mg_text"].y, 165, 25, ( 1, 1, 1 ), 0 );
|
|
self.depth_charge_hud_elements["missile_text"] = maps\_hud_util::createfontstring( "hudsmall", 1 );
|
|
self.depth_charge_hud_elements["missile_text"].x = 140;
|
|
|
|
if ( !common_scripts\utility::is_player_gamepad_enabled() )
|
|
self.depth_charge_hud_elements["missile_text"].x = -140;
|
|
|
|
self.depth_charge_hud_elements["missile_text"].y = -5;
|
|
self.depth_charge_hud_elements["missile_text"].alignx = "center";
|
|
self.depth_charge_hud_elements["missile_text"].aligny = "top";
|
|
self.depth_charge_hud_elements["missile_text"].horzalign = "center";
|
|
self.depth_charge_hud_elements["missile_text"].vertalign = "top";
|
|
self.depth_charge_hud_elements["missile_text"].alpha = 0.7;
|
|
self.depth_charge_hud_elements["missile_text"].sort = 1;
|
|
self.depth_charge_hud_elements["missile_text"] settext( &"CARRIER_OSPREY_HUD_MISSILE" );
|
|
create_box( "missile_text_bg", self.depth_charge_hud_elements["missile_text"].x, self.depth_charge_hud_elements["missile_text"].y, 165, 25, ( 1, 1, 1 ), 0 );
|
|
var_0 = 10;
|
|
var_1 = 20;
|
|
self.depth_charge_hud_elements["crosshair_vertical"] = maps\_hud_util::createicon( "white", 1, 5000 );
|
|
self.depth_charge_hud_elements["crosshair_vertical"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["crosshair_vertical"].alpha = 0.25;
|
|
self.depth_charge_hud_elements["crosshair_horizontal"] = maps\_hud_util::createicon( "white", 5000, 1 );
|
|
self.depth_charge_hud_elements["crosshair_horizontal"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["crosshair_horizontal"].alpha = 0.25;
|
|
self.depth_charge_hud_elements["crosshair_top_left_vertical"] = maps\_hud_util::createicon( "white", 1, var_0 );
|
|
self.depth_charge_hud_elements["crosshair_top_left_vertical"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["crosshair_top_left_vertical"].alignx = "left";
|
|
self.depth_charge_hud_elements["crosshair_top_left_vertical"].aligny = "top";
|
|
self.depth_charge_hud_elements["crosshair_top_left_vertical"].x = 0 - var_1;
|
|
self.depth_charge_hud_elements["crosshair_top_left_vertical"].y = 0 - var_1;
|
|
self.depth_charge_hud_elements["crosshair_top_left_vertical"].original_width = self.depth_charge_hud_elements["crosshair_top_left_vertical"].width;
|
|
self.depth_charge_hud_elements["crosshair_top_left_vertical"].original_height = self.depth_charge_hud_elements["crosshair_top_left_vertical"].height;
|
|
self.depth_charge_hud_elements["crosshair_top_left_horizontal"] = maps\_hud_util::createicon( "white", var_0, 1 );
|
|
self.depth_charge_hud_elements["crosshair_top_left_horizontal"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["crosshair_top_left_horizontal"].alignx = "left";
|
|
self.depth_charge_hud_elements["crosshair_top_left_horizontal"].aligny = "top";
|
|
self.depth_charge_hud_elements["crosshair_top_left_horizontal"].x = 0 - var_1;
|
|
self.depth_charge_hud_elements["crosshair_top_left_horizontal"].y = 0 - var_1;
|
|
self.depth_charge_hud_elements["crosshair_top_left_horizontal"].original_width = self.depth_charge_hud_elements["crosshair_top_left_horizontal"].width;
|
|
self.depth_charge_hud_elements["crosshair_top_left_horizontal"].original_height = self.depth_charge_hud_elements["crosshair_top_left_horizontal"].height;
|
|
self.depth_charge_hud_elements["crosshair_top_right_vertical"] = maps\_hud_util::createicon( "white", 1, var_0 );
|
|
self.depth_charge_hud_elements["crosshair_top_right_vertical"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["crosshair_top_right_vertical"].alignx = "right";
|
|
self.depth_charge_hud_elements["crosshair_top_right_vertical"].aligny = "top";
|
|
self.depth_charge_hud_elements["crosshair_top_right_vertical"].x = var_1;
|
|
self.depth_charge_hud_elements["crosshair_top_right_vertical"].y = 0 - var_1;
|
|
self.depth_charge_hud_elements["crosshair_top_right_vertical"].original_width = self.depth_charge_hud_elements["crosshair_top_right_vertical"].width;
|
|
self.depth_charge_hud_elements["crosshair_top_right_vertical"].original_height = self.depth_charge_hud_elements["crosshair_top_right_vertical"].height;
|
|
self.depth_charge_hud_elements["crosshair_top_right_horizontal"] = maps\_hud_util::createicon( "white", var_0, 1 );
|
|
self.depth_charge_hud_elements["crosshair_top_right_horizontal"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["crosshair_top_right_horizontal"].alignx = "right";
|
|
self.depth_charge_hud_elements["crosshair_top_right_horizontal"].aligny = "top";
|
|
self.depth_charge_hud_elements["crosshair_top_right_horizontal"].x = var_1;
|
|
self.depth_charge_hud_elements["crosshair_top_right_horizontal"].y = 0 - var_1;
|
|
self.depth_charge_hud_elements["crosshair_top_right_horizontal"].original_width = self.depth_charge_hud_elements["crosshair_top_right_horizontal"].width;
|
|
self.depth_charge_hud_elements["crosshair_top_right_horizontal"].original_height = self.depth_charge_hud_elements["crosshair_top_right_horizontal"].height;
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_vertical"] = maps\_hud_util::createicon( "white", 1, var_0 );
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_vertical"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_vertical"].alignx = "left";
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_vertical"].aligny = "bottom";
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_vertical"].x = 0 - var_1;
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_vertical"].y = var_1;
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_vertical"].original_width = self.depth_charge_hud_elements["crosshair_bottom_left_vertical"].width;
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_vertical"].original_height = self.depth_charge_hud_elements["crosshair_bottom_left_vertical"].height;
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"] = maps\_hud_util::createicon( "white", var_0, 1 );
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"].alignx = "left";
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"].aligny = "bottom";
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"].x = 0 - var_1;
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"].y = var_1;
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"].original_width = self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"].width;
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"].original_height = self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"].height;
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_vertical"] = maps\_hud_util::createicon( "white", 1, var_0 );
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_vertical"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_vertical"].alignx = "right";
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_vertical"].aligny = "bottom";
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_vertical"].x = var_1;
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_vertical"].y = var_1;
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_vertical"].original_width = self.depth_charge_hud_elements["crosshair_bottom_right_vertical"].width;
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_vertical"].original_height = self.depth_charge_hud_elements["crosshair_bottom_right_vertical"].height;
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"] = maps\_hud_util::createicon( "white", var_0, 1 );
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"].alignx = "right";
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"].aligny = "bottom";
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"].x = var_1;
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"].y = var_1;
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"].original_width = self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"].width;
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"].original_height = self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"].height;
|
|
self.depth_charge_hud_elements["zoom_x"] = maps\_hud_util::createclientfontstring( "hudsmall", 0.75 );
|
|
self.depth_charge_hud_elements["zoom_x"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["zoom_x"].alignx = "right";
|
|
self.depth_charge_hud_elements["zoom_x"].aligny = "top";
|
|
self.depth_charge_hud_elements["zoom_x"].horzalign = "left";
|
|
self.depth_charge_hud_elements["zoom_x"].vertalign = "middle";
|
|
self.depth_charge_hud_elements["zoom_x"].x = 5;
|
|
self.depth_charge_hud_elements["zoom_x"].y = 5;
|
|
self.depth_charge_hud_elements["zoom_x"] settext( &"SCRIPT_X" );
|
|
self.depth_charge_hud_elements["zoom_decimal"] = maps\_hud_util::createclientfontstring( "hudsmall", 0.75 );
|
|
self.depth_charge_hud_elements["zoom_decimal"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["zoom_decimal"].point = "TOPRIGHT";
|
|
self.depth_charge_hud_elements["zoom_decimal"].relativepoint = "TOPLEFT";
|
|
self.depth_charge_hud_elements["zoom_decimal"].xoffset = -8;
|
|
self.depth_charge_hud_elements["zoom_decimal"] maps\_hud_util::setparent( self.depth_charge_hud_elements["zoom_x"] );
|
|
self.depth_charge_hud_elements["zoom_decimal"] setvalue( 0 );
|
|
self.depth_charge_hud_elements["zoom_decimal_point"] = maps\_hud_util::createclientfontstring( "hudsmall", 0.75 );
|
|
self.depth_charge_hud_elements["zoom_decimal_point"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["zoom_decimal_point"].point = "TOPRIGHT";
|
|
self.depth_charge_hud_elements["zoom_decimal_point"].relativepoint = "TOPLEFT";
|
|
self.depth_charge_hud_elements["zoom_decimal_point"].xoffset = -8;
|
|
self.depth_charge_hud_elements["zoom_decimal_point"] maps\_hud_util::setparent( self.depth_charge_hud_elements["zoom_decimal"] );
|
|
self.depth_charge_hud_elements["zoom_decimal_point"] settext( &"CARRIER_HUD_PERIOD" );
|
|
self.depth_charge_hud_elements["zoom_int"] = maps\_hud_util::createclientfontstring( "hudsmall", 0.75 );
|
|
self.depth_charge_hud_elements["zoom_int"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["zoom_int"].point = "TOPRIGHT";
|
|
self.depth_charge_hud_elements["zoom_int"].relativepoint = "TOPLEFT";
|
|
self.depth_charge_hud_elements["zoom_int"].xoffset = -4.5;
|
|
self.depth_charge_hud_elements["zoom_int"] maps\_hud_util::setparent( self.depth_charge_hud_elements["zoom_decimal_point"] );
|
|
self.depth_charge_hud_elements["zoom_int"] setvalue( 1 );
|
|
self.depth_charge_hud_elements["RNDS"] = maps\_hud_util::createclientfontstring( "hudsmall", 0.75 );
|
|
self.depth_charge_hud_elements["RNDS"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["RNDS"].alignx = "left";
|
|
self.depth_charge_hud_elements["RNDS"].aligny = "top";
|
|
self.depth_charge_hud_elements["RNDS"].horzalign = "left";
|
|
self.depth_charge_hud_elements["RNDS"].vertalign = "top";
|
|
self.depth_charge_hud_elements["RNDS"].x = -20;
|
|
self.depth_charge_hud_elements["RNDS"].y = 34;
|
|
self.depth_charge_hud_elements["RNDS"] settext( &"CARRIER_RNDS" );
|
|
self.depth_charge_hud_elements["ammo"] = maps\_hud_util::createclientfontstring( "hudsmall", 0.75 );
|
|
self.depth_charge_hud_elements["ammo"] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements["ammo"].alignx = "left";
|
|
self.depth_charge_hud_elements["ammo"].aligny = "top";
|
|
self.depth_charge_hud_elements["ammo"].horzalign = "left";
|
|
self.depth_charge_hud_elements["ammo"].vertalign = "top";
|
|
self.depth_charge_hud_elements["ammo"].x = -20;
|
|
self.depth_charge_hud_elements["ammo"].y = 44;
|
|
self.depth_charge_hud_elements["ammo"] setvalue( self.osprey_minigun_ammo );
|
|
}
|
|
|
|
depth_charge_weapon_hit()
|
|
{
|
|
self endon( "depth_charge_exit" );
|
|
self notify( "depth_charge_weapon_hit" );
|
|
self endon( "depth_charge_weapon_hit" );
|
|
|
|
if ( !isdefined( self.depth_charge_hud_elements ) )
|
|
return;
|
|
|
|
self.depth_charge_hud_elements["crosshair_top_left_vertical"] setshader( "white", self.depth_charge_hud_elements["crosshair_top_left_vertical"].width + 2, self.depth_charge_hud_elements["crosshair_top_left_vertical"].height + 2 );
|
|
self.depth_charge_hud_elements["crosshair_top_left_horizontal"] setshader( "white", self.depth_charge_hud_elements["crosshair_top_left_horizontal"].width + 2, self.depth_charge_hud_elements["crosshair_top_left_horizontal"].height + 2 );
|
|
self.depth_charge_hud_elements["crosshair_top_right_vertical"] setshader( "white", self.depth_charge_hud_elements["crosshair_top_right_vertical"].width + 2, self.depth_charge_hud_elements["crosshair_top_right_vertical"].height + 2 );
|
|
self.depth_charge_hud_elements["crosshair_top_right_horizontal"] setshader( "white", self.depth_charge_hud_elements["crosshair_top_right_horizontal"].width + 2, self.depth_charge_hud_elements["crosshair_top_right_horizontal"].height + 2 );
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_vertical"] setshader( "white", self.depth_charge_hud_elements["crosshair_bottom_left_vertical"].width + 2, self.depth_charge_hud_elements["crosshair_bottom_left_vertical"].height + 2 );
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"] setshader( "white", self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"].width + 2, self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"].height + 2 );
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_vertical"] setshader( "white", self.depth_charge_hud_elements["crosshair_bottom_right_vertical"].width + 2, self.depth_charge_hud_elements["crosshair_bottom_right_vertical"].height + 2 );
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"] setshader( "white", self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"].width + 2, self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"].height + 2 );
|
|
wait 0.25;
|
|
self.depth_charge_hud_elements["crosshair_top_left_vertical"] scaleovertime( 0.25, self.depth_charge_hud_elements["crosshair_top_left_vertical"].original_width, self.depth_charge_hud_elements["crosshair_top_left_vertical"].original_height );
|
|
self.depth_charge_hud_elements["crosshair_top_left_horizontal"] scaleovertime( 0.25, self.depth_charge_hud_elements["crosshair_top_left_horizontal"].original_width, self.depth_charge_hud_elements["crosshair_top_left_horizontal"].original_height );
|
|
self.depth_charge_hud_elements["crosshair_top_right_vertical"] scaleovertime( 0.25, self.depth_charge_hud_elements["crosshair_top_right_vertical"].original_width, self.depth_charge_hud_elements["crosshair_top_right_vertical"].original_height );
|
|
self.depth_charge_hud_elements["crosshair_top_right_horizontal"] scaleovertime( 0.25, self.depth_charge_hud_elements["crosshair_top_right_horizontal"].original_width, self.depth_charge_hud_elements["crosshair_top_right_horizontal"].original_height );
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_vertical"] scaleovertime( 0.25, self.depth_charge_hud_elements["crosshair_bottom_left_vertical"].original_width, self.depth_charge_hud_elements["crosshair_bottom_left_vertical"].original_height );
|
|
self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"] scaleovertime( 0.25, self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"].original_width, self.depth_charge_hud_elements["crosshair_bottom_left_horizontal"].original_height );
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_vertical"] scaleovertime( 0.25, self.depth_charge_hud_elements["crosshair_bottom_right_vertical"].original_width, self.depth_charge_hud_elements["crosshair_bottom_right_vertical"].original_height );
|
|
self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"] scaleovertime( 0.25, self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"].original_width, self.depth_charge_hud_elements["crosshair_bottom_right_horizontal"].original_height );
|
|
}
|
|
|
|
create_box( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
|
|
{
|
|
var_7 = var_1;
|
|
var_8 = var_2 - 5;
|
|
self.depth_charge_hud_elements[var_0] = maps\_hud_util::createicon( "white", var_3, var_4 );
|
|
self.depth_charge_hud_elements[var_0] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements[var_0].x = var_7;
|
|
self.depth_charge_hud_elements[var_0].y = var_8;
|
|
self.depth_charge_hud_elements[var_0].alignx = "center";
|
|
self.depth_charge_hud_elements[var_0].aligny = "top";
|
|
self.depth_charge_hud_elements[var_0].horzalign = "center";
|
|
self.depth_charge_hud_elements[var_0].vertalign = "top";
|
|
self.depth_charge_hud_elements[var_0].alpha = var_6;
|
|
self.depth_charge_hud_elements[var_0].color = var_5;
|
|
self.depth_charge_hud_elements[var_0].sort = 0;
|
|
create_line( var_0 + "_top", var_7, var_8, var_3, 1, var_5 );
|
|
create_line( var_0 + "_right", var_7 + var_3 / 2, var_8, 1, var_4, var_5 );
|
|
create_line( var_0 + "_bottom", var_7, var_8 + var_4 - 1, var_3, 1, var_5 );
|
|
create_line( var_0 + "_left", var_7 - var_3 / 2, var_8, 1, var_4, var_5 );
|
|
}
|
|
|
|
create_line( var_0, var_1, var_2, var_3, var_4, var_5 )
|
|
{
|
|
self.depth_charge_hud_elements[var_0] = maps\_hud_util::createicon( "white", var_3, var_4 );
|
|
self.depth_charge_hud_elements[var_0] set_default_hud_parameters();
|
|
self.depth_charge_hud_elements[var_0].x = var_1;
|
|
self.depth_charge_hud_elements[var_0].y = var_2;
|
|
self.depth_charge_hud_elements[var_0].alignx = "center";
|
|
self.depth_charge_hud_elements[var_0].aligny = "top";
|
|
self.depth_charge_hud_elements[var_0].horzalign = "center";
|
|
self.depth_charge_hud_elements[var_0].vertalign = "top";
|
|
self.depth_charge_hud_elements[var_0].alpha = 1;
|
|
self.depth_charge_hud_elements[var_0].color = var_5;
|
|
}
|
|
|
|
set_box( var_0, var_1, var_2, var_3 )
|
|
{
|
|
if ( isdefined( var_3 ) )
|
|
self.depth_charge_hud_elements[var_0] fadeovertime( var_3 );
|
|
|
|
self.depth_charge_hud_elements[var_0].alpha = var_1;
|
|
self.depth_charge_hud_elements[var_0].color = var_2;
|
|
set_line( var_0 + "_top", 1, var_2, var_3 );
|
|
set_line( var_0 + "_right", 1, var_2, var_3 );
|
|
set_line( var_0 + "_bottom", 1, var_2, var_3 );
|
|
set_line( var_0 + "_left", 1, var_2, var_3 );
|
|
}
|
|
|
|
set_line( var_0, var_1, var_2, var_3 )
|
|
{
|
|
if ( isdefined( var_3 ) )
|
|
self.depth_charge_hud_elements[var_0] fadeovertime( var_3 );
|
|
|
|
self.depth_charge_hud_elements[var_0].alpha = var_1;
|
|
self.depth_charge_hud_elements[var_0].color = var_2;
|
|
}
|
|
|
|
hud_mg_active()
|
|
{
|
|
self.depth_charge_hud_elements["mg_text"].color = ( 1, 0, 0 );
|
|
self.depth_charge_hud_elements["mg_text"].alpha = 1;
|
|
set_box( "mg_text_bg", 0.2, ( 1, 0, 0 ) );
|
|
}
|
|
|
|
hud_mg_inactive()
|
|
{
|
|
self.depth_charge_hud_elements["mg_text"].color = ( 1, 1, 1 );
|
|
self.depth_charge_hud_elements["mg_text"].alpha = 0.7;
|
|
set_box( "mg_text_bg", 0, ( 1, 1, 1 ) );
|
|
}
|
|
|
|
hud_missile_active()
|
|
{
|
|
var_0 = 0.5;
|
|
self.depth_charge_hud_elements["missile_text"].color = ( 1, 0, 0 );
|
|
self.depth_charge_hud_elements["missile_text"].alpha = 1;
|
|
self.depth_charge_hud_elements["missile_text"] fadeovertime( var_0 );
|
|
self.depth_charge_hud_elements["missile_text"].color = ( 1, 1, 1 );
|
|
self.depth_charge_hud_elements["missile_text"].alpha = 0.7;
|
|
set_box( "missile_text_bg", 0.2, ( 1, 0, 0 ) );
|
|
set_box( "missile_text_bg", 0, ( 1, 1, 1 ), var_0 );
|
|
}
|
|
|
|
depth_charge_clear_hud()
|
|
{
|
|
if ( !isdefined( self.depth_charge_hud_elements ) )
|
|
return;
|
|
|
|
var_0 = getarraykeys( self.depth_charge_hud_elements );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( isarray( self.depth_charge_hud_elements[var_2] ) )
|
|
{
|
|
foreach ( var_5, var_4 in self.depth_charge_hud_elements[var_2] )
|
|
{
|
|
var_4 destroy();
|
|
var_4 = undefined;
|
|
}
|
|
|
|
self.depth_charge_hud_elements[var_2] = [];
|
|
continue;
|
|
}
|
|
|
|
self.depth_charge_hud_elements[var_2] destroy();
|
|
self.depth_charge_hud_elements[var_2] = undefined;
|
|
}
|
|
|
|
self.depth_charge_hud_elements = undefined;
|
|
}
|
|
|
|
depth_charge_update_target_location()
|
|
{
|
|
self endon( "depth_charge_exit" );
|
|
self endon( "death" );
|
|
level.depth_charge_target = spawn( "script_origin", level.defend_zodiac_osprey.origin );
|
|
|
|
for (;;)
|
|
{
|
|
var_0 = ( self geteye()[2] - level.water_level ) / cos( 90 - self getplayerangles()[0] );
|
|
|
|
if ( var_0 <= 0 )
|
|
var_0 = 100000;
|
|
|
|
level.depth_charge_target.origin = self geteye() + anglestoforward( self getplayerangles() ) * var_0;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
depth_charge_monitor_drop()
|
|
{
|
|
self endon( "depth_charge_remove_control" );
|
|
self endon( "depth_charge_run_finished" );
|
|
self endon( "death" );
|
|
self notifyonplayercommand( "drop_depth_charge", "+attack" );
|
|
self notifyonplayercommand( "drop_depth_charge", "+attack_akimbo_accessible" );
|
|
|
|
while ( self.using_depth_charge )
|
|
{
|
|
self waittill( "drop_depth_charge" );
|
|
thread depth_charge_drop();
|
|
wait 0.75;
|
|
}
|
|
}
|
|
|
|
depth_charge_drop()
|
|
{
|
|
self endon( "death" );
|
|
|
|
if ( !isdefined( level.osprey_missile_side_left ) )
|
|
level.osprey_missile_side_left = 1;
|
|
|
|
var_0 = anglestoforward( level.defend_zodiac_osprey.angles ) * 200;
|
|
var_1 = magicbullet( "osprey_missile", level.defend_zodiac_osprey gettagorigin( common_scripts\utility::ter_op( level.osprey_missile_side_left, "tag_light_l_wing1", "tag_light_r_wing1" ) ) + anglestoforward( level.defend_zodiac_osprey.angles ) * 100 - anglestoup( level.defend_zodiac_osprey.angles ) * 50 + anglestoright( level.defend_zodiac_osprey.angles ) * common_scripts\utility::ter_op( level.osprey_missile_side_left, -200, 200 ), level.depth_charge_target.origin + var_0, self );
|
|
self playrumbleonentity( "heavy_1s" );
|
|
thread maps\carrier_audio::aud_osprey_fire();
|
|
thread hud_missile_active();
|
|
var_1 thread depth_charge_lockon_to_target();
|
|
var_2 = spawnstruct();
|
|
var_2.impact_loc = maps\_utility::set_z( level.depth_charge_target.origin, level.water_level );
|
|
|
|
if ( distance2d( var_2.impact_loc, level.old_player_origin ) <= 1500 )
|
|
self.rain = 1;
|
|
|
|
var_2.time = gettime();
|
|
level.depth_charges[level.depth_charges.size] = var_2;
|
|
level.osprey_missile_side_left = !level.osprey_missile_side_left;
|
|
}
|
|
|
|
depth_charge_lockon_to_target()
|
|
{
|
|
level.player endon( "death" );
|
|
var_0 = ( level.player geteye()[2] - level.water_level ) / cos( 90 - level.player getplayerangles()[0] );
|
|
var_1 = spawn( "script_origin", level.player geteye() + anglestoforward( level.player getplayerangles() ) * var_0 );
|
|
wait 0.25;
|
|
|
|
if ( isvalidmissile( self ) && var_0 > 0 )
|
|
self missile_settargetent( var_1 );
|
|
|
|
while ( isdefined( self ) && isvalidmissile( self ) && self.origin[2] > level.water_level )
|
|
wait 0.05;
|
|
|
|
if ( isdefined( self ) )
|
|
{
|
|
var_2 = 0;
|
|
|
|
if ( self.origin[2] < level.water_level + 32 )
|
|
var_2 = 1;
|
|
|
|
var_3 = undefined;
|
|
|
|
if ( self istouching( level.osprey_carrier_vol ) )
|
|
var_3 = level._effect["vfx_ac130_105mm_impact"];
|
|
|
|
thread depth_charge_explode( self.origin, var_2, var_3 );
|
|
|
|
if ( isvalidmissile( self ) )
|
|
self missile_cleartarget();
|
|
}
|
|
|
|
var_1 delete();
|
|
}
|
|
|
|
depth_charge_explode( var_0, var_1, var_2 )
|
|
{
|
|
level.player endon( "death" );
|
|
var_0 = maps\_utility::set_z( var_0, level.water_level - 52 );
|
|
var_3 = level._effect["depth_charge_explosion"];
|
|
|
|
if ( isdefined( var_2 ) )
|
|
var_3 = var_2;
|
|
|
|
if ( var_1 )
|
|
{
|
|
playfx( var_3, var_0 );
|
|
thread common_scripts\utility::play_sound_in_space( "scn_carr_osprey_charge_exp", var_0 );
|
|
}
|
|
|
|
thread common_scripts\utility::play_sound_in_space( "scn_carr_sparrow_exp", var_0 );
|
|
var_4 = gettime();
|
|
wait 0.1;
|
|
var_5 = common_scripts\utility::spawn_tag_origin();
|
|
var_5.origin = var_0;
|
|
var_5 screenshakeonentity( 4.5, 2, 3.5, 3, 0, 3, 25000, 5, 2, 7, 2.6 );
|
|
level.player playrumbleonentity( "heavy_2s" );
|
|
maps\_utility::delaythread( 0.25, maps\carrier_code_zodiac::explode_zodiacs, var_0, 1300, 200 );
|
|
maps\_utility::delaythread( 0.1, maps\carrier_code::explode_gunboats, var_0, 1000, 200 );
|
|
maps\_utility::delaythread( 0.1, ::explode_fake_targets, var_0, 1000 );
|
|
maps\_utility::delaythread( 0.1, ::check_friendly_fire, var_0, 1000, 2000 );
|
|
level.player waittill( "cleanup_depth_charges" );
|
|
|
|
if ( var_1 && var_4 + 3000 < gettime() && common_scripts\utility::distance_2d_squared( level.player.origin, var_0 ) < 12960000 )
|
|
thread common_scripts\utility::play_sound_in_space( "scn_carr_water_plume", var_0 );
|
|
|
|
var_5 delete();
|
|
}
|
|
|
|
depth_charge_replay()
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "defend_zodiac_osprey_replay", "targetname" );
|
|
level.defend_zodiac_osprey vehicle_teleport( var_0.origin, var_0.angles );
|
|
level.defend_zodiac_osprey thread maps\_vehicle::vehicle_paths( var_0 );
|
|
var_1 = common_scripts\utility::spawn_tag_origin();
|
|
var_1.origin = level.defend_zodiac_osprey.origin;
|
|
var_1 linkto( level.defend_zodiac_osprey );
|
|
var_1 screenshakeonentity( 0.2, 0.17, 0.1, 5, 1, 2, 5000, 12, 8, 5 );
|
|
|
|
if ( maps\carrier_code::eval( self.rain ) )
|
|
thread maps\carrier_code::rain_overlay_alpha( 12, 0 );
|
|
|
|
level.first_time_depth_charge = 0;
|
|
common_scripts\utility::waitframe();
|
|
var_1 delete();
|
|
}
|
|
|
|
depth_charge_monitor_wet()
|
|
{
|
|
self endon( "depth_charge_remove_control" );
|
|
self endon( "depth_charge_run_finished" );
|
|
self endon( "depth_charge_exit" );
|
|
self endon( "death" );
|
|
var_0 = 7000;
|
|
var_1 = 1000000;
|
|
|
|
for (;;)
|
|
{
|
|
var_2 = gettime();
|
|
|
|
foreach ( var_4 in level.depth_charges )
|
|
{
|
|
if ( isdefined( var_4 ) && isdefined( var_4.time ) && var_2 <= var_4.time + var_0 && distance2dsquared( level.player.origin, var_4.impact_loc ) <= var_1 )
|
|
{
|
|
thread maps\carrier_code::rain_overlay_alpha( 4, 0 );
|
|
wait 2;
|
|
break;
|
|
}
|
|
}
|
|
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
set_default_hud_parameters()
|
|
{
|
|
self.alignx = "center";
|
|
self.aligny = "middle";
|
|
self.horzalign = "center";
|
|
self.vertalign = "middle";
|
|
self.hidewhendead = 0;
|
|
self.hidewheninmenu = 0;
|
|
self.sort = 205;
|
|
self.foreground = 1;
|
|
self.alpha = 1;
|
|
}
|
|
|
|
depth_charge_hint()
|
|
{
|
|
var_0 = 1.0;
|
|
var_1 = 0.75;
|
|
var_2 = 0.95;
|
|
var_3 = 0.4;
|
|
|
|
if ( level.first_time_depth_charge )
|
|
{
|
|
level.iconelem2 = maps\_hud_util::createicon( "crr_dpad_osprey_active", 32, 32 );
|
|
level.iconelem2.hidewheninmenu = 1;
|
|
level.iconelem2 maps\_hud_util::setpoint( "TOP", undefined, 0, 125 );
|
|
level.iconelem2.alpha = 0;
|
|
level.iconelem2 fadeovertime( var_0 );
|
|
level.iconelem2.alpha = 1;
|
|
}
|
|
|
|
var_4 = maps\_hud_util::createfontstring( "default", 1.75 );
|
|
var_4.horzalign = "center";
|
|
var_4.vertalign = "middle";
|
|
var_4.alignx = "center";
|
|
var_4.aligny = "middle";
|
|
var_4.x = 0;
|
|
var_4.y = common_scripts\utility::ter_op( level.first_time_depth_charge, -30, 90 );
|
|
var_4 settext( &"CARRIER_DEPTH_CHARGE_HINT" );
|
|
var_4.alpha = 1;
|
|
var_4.sort = 0.5;
|
|
var_4.foreground = 1;
|
|
var_4.hidewheninmenu = 1;
|
|
var_4.alpha = 0;
|
|
var_4 fadeovertime( var_0 );
|
|
var_4.alpha = var_2;
|
|
thread hint_pulse_alpha( var_4, var_1, var_2, var_3 );
|
|
common_scripts\utility::waittill_any( "using_depth_charge", "depth_charge_remove_control", "death" );
|
|
var_4 notify( "stop_pulse" );
|
|
var_4 destroy();
|
|
var_4 = undefined;
|
|
|
|
if ( level.first_time_depth_charge )
|
|
{
|
|
if ( isdefined( level.iconelem ) )
|
|
level.iconelem destroy();
|
|
|
|
if ( isdefined( level.iconelem2 ) )
|
|
level.iconelem2 destroy();
|
|
|
|
if ( isdefined( level.iconelem3 ) )
|
|
level.iconelem3 destroy();
|
|
}
|
|
}
|
|
|
|
depth_charge_drop_hint()
|
|
{
|
|
self endon( "depth_charge_run_finished" );
|
|
self endon( "depth_charge_remove_control" );
|
|
|
|
if ( !isdefined( level.first_time_depth_charge_drop_hint ) )
|
|
level.first_time_depth_charge_drop_hint = 1;
|
|
else
|
|
level.first_time_depth_charge_drop_hint = 0;
|
|
|
|
var_0 = maps\_hud_util::createfontstring( "default", 1.75 );
|
|
var_0.horzalign = "center";
|
|
var_0.vertalign = "middle";
|
|
var_0.alignx = "center";
|
|
var_0.aligny = "middle";
|
|
var_0.x = 120;
|
|
var_0.y = common_scripts\utility::ter_op( level.first_time_depth_charge_drop_hint, -40, 130 );
|
|
var_0 settext( &"CARRIER_DEPTH_CHARGE_MISSILE_HINT" );
|
|
var_0.alpha = 1;
|
|
var_0.sort = 0.5;
|
|
var_0.foreground = 1;
|
|
var_0.hidewheninmenu = 1;
|
|
|
|
if ( !common_scripts\utility::is_player_gamepad_enabled() )
|
|
{
|
|
var_0.fontscale = 1.25;
|
|
var_0.x = var_0.x * -1;
|
|
}
|
|
|
|
var_1 = 1.0;
|
|
var_2 = 0.75;
|
|
var_3 = 0.95;
|
|
var_4 = 0.4;
|
|
var_0.alpha = 0;
|
|
var_0 fadeovertime( var_1 );
|
|
var_0.alpha = var_3;
|
|
thread hint_pulse_alpha( var_0, var_2, var_3, var_4 );
|
|
thread cleanup_weapon_hint( var_0 );
|
|
common_scripts\utility::waittill_any( "drop_depth_charge", "fire_mg" );
|
|
wait 1;
|
|
var_0.y = 130;
|
|
}
|
|
|
|
depth_charge_minigun_hint()
|
|
{
|
|
self endon( "depth_charge_run_finished" );
|
|
self endon( "depth_charge_remove_control" );
|
|
|
|
if ( !isdefined( level.first_time_depth_charge_minigun_hint ) )
|
|
level.first_time_depth_charge_minigun_hint = 1;
|
|
else
|
|
level.first_time_depth_charge_minigun_hint = 0;
|
|
|
|
var_0 = maps\_hud_util::createfontstring( "default", 1.75 );
|
|
var_0.horzalign = "center";
|
|
var_0.vertalign = "middle";
|
|
var_0.alignx = "center";
|
|
var_0.aligny = "middle";
|
|
var_0.x = -120;
|
|
var_0.y = common_scripts\utility::ter_op( level.first_time_depth_charge_minigun_hint, -40, 130 );
|
|
var_1 = getkeybinding( "+speed_throw" );
|
|
var_2 = isdefined( var_1 ) && var_1["count"] != 0;
|
|
var_1 = getkeybinding( "+ads_akimbo_accessible" );
|
|
var_3 = isdefined( var_1 ) && var_1["count"] != 0;
|
|
|
|
if ( var_2 )
|
|
var_0 settext( &"CARRIER_DEPTH_CHARGE_MG_HINT" );
|
|
else if ( var_3 )
|
|
var_0 settext( &"CARRIER_DEPTH_CHARGE_MG_NOMAD_HINT" );
|
|
else
|
|
var_0 settext( &"CARRIER_DEPTH_CHARGE_MG_PC_HINT" );
|
|
|
|
var_0.alpha = 1;
|
|
var_0.sort = 0.5;
|
|
var_0.foreground = 1;
|
|
var_0.hidewheninmenu = 1;
|
|
|
|
if ( !common_scripts\utility::is_player_gamepad_enabled() )
|
|
{
|
|
var_0.fontscale = 1.25;
|
|
var_0.x = var_0.x * -1;
|
|
}
|
|
|
|
var_4 = 1.0;
|
|
var_5 = 0.75;
|
|
var_6 = 0.95;
|
|
var_7 = 0.4;
|
|
var_0.alpha = 0;
|
|
var_0 fadeovertime( var_4 );
|
|
var_0.alpha = var_6;
|
|
thread hint_pulse_alpha( var_0, var_5, var_6, var_7 );
|
|
thread cleanup_weapon_hint( var_0 );
|
|
common_scripts\utility::waittill_any( "drop_depth_charge", "fire_mg" );
|
|
wait 1;
|
|
var_0.y = 130;
|
|
}
|
|
|
|
cleanup_weapon_hint( var_0 )
|
|
{
|
|
common_scripts\utility::waittill_any( "depth_charge_run_finished", "depth_charge_remove_control" );
|
|
var_0 notify( "stop_pulse" );
|
|
var_0 destroy();
|
|
var_0 = undefined;
|
|
}
|
|
|
|
hint_pulse_alpha( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_0 endon( "stop_pulse" );
|
|
|
|
for (;;)
|
|
{
|
|
var_0 fadeovertime( var_1 );
|
|
var_0.alpha = var_3;
|
|
wait( var_1 );
|
|
var_0 fadeovertime( var_1 );
|
|
var_0.alpha = var_2;
|
|
wait( var_1 );
|
|
}
|
|
}
|
|
|
|
depth_charge_control_up()
|
|
{
|
|
self.last_weapon = self getcurrentweapon();
|
|
self giveweapon( "remote_tablet_osprey" );
|
|
self switchtoweapon( "remote_tablet_osprey" );
|
|
thread maps\carrier_audio::aud_osprey_controller_on();
|
|
wait 1.65;
|
|
level.black_overlay = maps\_hud_util::create_client_overlay( "black", 0, self );
|
|
level.black_overlay.sort = 999;
|
|
level.black_overlay fadeovertime( 0.25 );
|
|
level.black_overlay.alpha = 1;
|
|
wait 0.25;
|
|
level.black_overlay fadeovertime( 0.25 );
|
|
level.black_overlay.alpha = 0;
|
|
}
|
|
|
|
depth_charge_control_down()
|
|
{
|
|
maps\_utility::restore_players_weapons( "depth_charge" );
|
|
self enableslowaim( 0.15, 0.15 );
|
|
wait 0.05;
|
|
self switchtoweapon( self.last_weapon );
|
|
wait 0.9;
|
|
self takeweapon( "remote_tablet_osprey" );
|
|
thread maps\carrier_audio::aud_osprey_controller_off();
|
|
self disableslowaim();
|
|
}
|
|
|
|
monitor_machine_gun()
|
|
{
|
|
self endon( "depth_charge_remove_control" );
|
|
self endon( "depth_charge_run_finished" );
|
|
self endon( "death" );
|
|
self notifyonplayercommand( "fire_mg", "+speed_throw" );
|
|
self notifyonplayercommand( "fire_mg", "+toggleads_throw" );
|
|
self notifyonplayercommand( "fire_mg", "+ads_akimbo_accessible" );
|
|
var_0 = 0;
|
|
|
|
while ( self.using_depth_charge )
|
|
{
|
|
var_1 = ( self geteye()[2] - level.water_level ) / cos( 90 - self getplayerangles()[0] );
|
|
|
|
if ( var_1 <= 0 )
|
|
var_1 = 100000;
|
|
|
|
self.osprey_turret.turret_target.origin = self geteye() + anglestoforward( self getplayerangles() ) * var_1;
|
|
|
|
if ( self adsbuttonpressed( 1 ) )
|
|
{
|
|
if ( !var_0 )
|
|
{
|
|
level.player playsound( "scn_carr_osprey_gun_start" );
|
|
self.osprey_turret startfiring();
|
|
}
|
|
|
|
thread hud_mg_active();
|
|
level.defend_zodiac_osprey playloopsound( "scn_carr_osprey_gun_loop" );
|
|
self playrumbleonentity( "minigun_rumble" );
|
|
self.osprey_turret shootturret();
|
|
var_2 = 250;
|
|
var_3 = bullettrace( self geteye(), self.osprey_turret.turret_target.origin, 0 );
|
|
var_4 = var_3["position"];
|
|
maps\_utility::delaythread( 0.05, maps\carrier_code_zodiac::explode_zodiacs, var_4, var_2, 0 );
|
|
maps\_utility::delaythread( 0.05, ::explode_fake_targets, var_4, var_2 );
|
|
maps\_utility::delaythread( 0.05, ::check_friendly_fire, var_4, var_2, 65 );
|
|
var_0 = 1;
|
|
self.osprey_minigun_ammo = self.osprey_minigun_ammo - 3;
|
|
self.depth_charge_hud_elements["ammo"] setvalue( self.osprey_minigun_ammo );
|
|
}
|
|
else
|
|
{
|
|
if ( var_0 )
|
|
{
|
|
level.defend_zodiac_osprey playsound( "scn_carr_osprey_gun_stop" );
|
|
self.osprey_turret stopfiring();
|
|
}
|
|
|
|
thread hud_mg_inactive();
|
|
level.defend_zodiac_osprey stoploopsound( "scn_carr_osprey_gun_loop" );
|
|
var_0 = 0;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
depth_charge_handle_zoom()
|
|
{
|
|
self endon( "depth_charge_remove_control" );
|
|
self endon( "depth_charge_run_finished" );
|
|
self endon( "depth_charge_exit" );
|
|
self endon( "death" );
|
|
var_0 = 0;
|
|
level.depth_charge_firing_slow_aim_modifier = 0.0;
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = self getnormalizedmovement();
|
|
|
|
if ( var_1[0] == 0 )
|
|
{
|
|
wait 0.05;
|
|
var_0 = 0;
|
|
continue;
|
|
}
|
|
|
|
if ( var_0 <= 0 && var_1[0] > 0 && level.depth_charge_current_fov > level.depth_charge_min_fov || var_0 >= 0 && var_1[0] < 0 && level.depth_charge_current_fov < level.depth_charge_max_fov )
|
|
thread depth_charge_lerp_dof();
|
|
|
|
var_0 = var_1[0];
|
|
var_2 = level.depth_charge_current_fov / 20.0;
|
|
var_2 = min( 3, var_2 );
|
|
var_2 = max( 0.5, var_2 );
|
|
level.depth_charge_current_fov = level.depth_charge_current_fov - var_1[0] * var_2;
|
|
|
|
if ( level.depth_charge_current_fov < level.depth_charge_min_fov )
|
|
level.depth_charge_current_fov = level.depth_charge_min_fov;
|
|
else if ( level.depth_charge_current_fov > level.depth_charge_max_fov )
|
|
level.depth_charge_current_fov = level.depth_charge_max_fov;
|
|
|
|
self lerpfov( level.depth_charge_current_fov, 0.05 );
|
|
depth_charge_set_slow_aim();
|
|
var_3 = 1.0 + ( level.depth_charge_max_fov - getdvarfloat( "cg_fov" ) ) / ( level.depth_charge_max_fov - level.depth_charge_min_fov ) * 3.0;
|
|
var_4 = int( var_3 );
|
|
var_5 = int( ( var_3 - int( var_3 ) ) * 10 );
|
|
|
|
if ( isdefined( self.depth_charge_hud_elements["zoom_int"] ) )
|
|
{
|
|
self.depth_charge_hud_elements["zoom_int"] setvalue( var_4 );
|
|
self.depth_charge_hud_elements["zoom_decimal"] setvalue( var_5 );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
depth_charge_set_slow_aim()
|
|
{
|
|
var_0 = ( level.fov_range - ( level.depth_charge_max_fov - level.depth_charge_current_fov ) ) / level.fov_range;
|
|
level.depth_charge_current_slow_yaw = level.depth_charge_min_slow_aim_yaw + level.slow_aim_yaw_range * var_0 + level.depth_charge_firing_slow_aim_modifier;
|
|
level.depth_charge_current_slow_pitch = level.depth_charge_min_slow_aim_pitch + level.slow_aim_pitch_range * var_0 + level.depth_charge_firing_slow_aim_modifier;
|
|
self enableslowaim( level.depth_charge_current_slow_pitch, level.depth_charge_current_slow_yaw );
|
|
}
|
|
|
|
depth_charge_lerp_dof( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = 0.5;
|
|
|
|
self notify( "depth_charge_lerp_dof" );
|
|
self endon( "depth_charge_lerp_dof" );
|
|
maps\_art::dof_enable_script( 50, 100, 10, 100, 200, 6, 0.0 );
|
|
maps\_art::dof_disable_script( var_0 );
|
|
}
|
|
|
|
depth_charge_mark_friendlies()
|
|
{
|
|
foreach ( var_1 in getaiarray() )
|
|
{
|
|
if ( var_1.team == "allies" )
|
|
var_1 thread maps\carrier_code::setup_target_on_vehicle();
|
|
}
|
|
|
|
foreach ( var_4 in level.drones["allies"].array )
|
|
var_4 thread maps\carrier_code::setup_target_on_vehicle();
|
|
}
|
|
|
|
setup_fake_destroyer_targets()
|
|
{
|
|
level.fake_targets = common_scripts\utility::array_removeundefined( level.fake_targets );
|
|
|
|
foreach ( var_1 in level.fake_targets )
|
|
{
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
var_1 thread maps\carrier_code::setup_target_on_vehicle();
|
|
wait 0.05;
|
|
}
|
|
}
|
|
}
|
|
|
|
explode_fake_targets( var_0, var_1 )
|
|
{
|
|
var_2 = var_1 * var_1;
|
|
|
|
foreach ( var_4 in level.fake_targets )
|
|
{
|
|
if ( isdefined( var_4 ) )
|
|
{
|
|
var_5 = distancesquared( var_4.origin, var_0 );
|
|
|
|
if ( var_5 <= var_2 )
|
|
{
|
|
level.osprey_hit_fake_targets++;
|
|
level.osprey_total_hits++;
|
|
var_4 thread explode_single_fake_target( var_0 );
|
|
level.player thread depth_charge_weapon_hit();
|
|
wait 0.05;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
explode_single_fake_target( var_0 )
|
|
{
|
|
self notify( "death" );
|
|
|
|
if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "big" )
|
|
{
|
|
playfx( common_scripts\utility::getfx( "vfx_destroyer_vert_missile_impact" ), self.origin );
|
|
screenshake( self.origin, 3.5, 2, 2.5, 2, 0, 2, 10000, 5, 2, 7, 2.6 );
|
|
level.player playrumbleonentity( "heavy_1s" );
|
|
thread common_scripts\utility::play_sound_in_space( "exp_armor_vehicle", self.origin );
|
|
level notify( "stop_fed_destroyer_guns" );
|
|
common_scripts\utility::flag_set( "destroyed_fed_destroyer_guns" );
|
|
self delete();
|
|
}
|
|
else if ( isdefined( self.model ) && issubstr( self.model, "zodiac" ) )
|
|
maps\carrier_code_zodiac::explode_single_zodiac( 0.5, var_0 );
|
|
else if ( maps\_vehicle::isvehicle() && maps\_vehicle::ishelicopter() )
|
|
self kill();
|
|
}
|
|
|
|
check_friendly_fire( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = 1300;
|
|
|
|
if ( var_0[2] > var_3 )
|
|
radiusdamage( var_0, var_1, var_2, var_2 / 2, level.player );
|
|
}
|
|
|
|
depth_charge_check_failure()
|
|
{
|
|
var_0 = level.difficultysettings["osprey_hitsToSucceed"][maps\_gameskill::get_skill_from_index( level.gameskill )];
|
|
|
|
if ( var_0 <= 0 )
|
|
return;
|
|
|
|
if ( level.osprey_total_hits < var_0 )
|
|
{
|
|
setdvar( "ui_deadquote", &"CARRIER_FAIL_FAR_AWAY" );
|
|
maps\_utility::missionfailedwrapper();
|
|
}
|
|
}
|