// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool #using_animtree("vehicles"); vehicles() { level.scr_animtree["dominator_uav_vehicle"] = #animtree; level.scr_anim["dominator_uav_vehicle"]["dominator_uav"] = %domintaor_uav_driving_idle_forward; } torpedo_go( var_0, var_1 ) { vehicles(); setdvar( "dominator_speed", 5 ); if ( level.gameskill == 0 ) setdvar( "dominator_speed", 4 ); setdvar( "dominator_angle", 0 ); if ( !level.console && !level.player usinggamepad() ) { setdvar( "dominator_pitch_angle_acceleration", 1.8 ); setdvar( "dominator_yaw_angle_acceleration", 1.8 ); setdvar( "dominator_max_pitch_angle_velocity", 3.5 ); setdvar( "dominator_max_yaw_angle_velocity", 3.5 ); } else { setdvar( "dominator_pitch_angle_acceleration", 1 ); setdvar( "dominator_yaw_angle_acceleration", 1 ); setdvar( "dominator_max_pitch_angle_velocity", 2 ); setdvar( "dominator_max_yaw_angle_velocity", 2 ); } setdvar( "domgrav", 25 ); setdvar( "domthermal", 1 ); setdvar( "dpfov", 110 ); setdvar( "dph", 440 ); setdvar( "dpw", 150 ); setdvar( "dpx", 570 ); setdvar( "dpy", 20 ); setdvar( "dp1fov", 100 ); setdvar( "dp1h", 150 ); setdvar( "dp1w", 225 ); setdvar( "dp1x", 480 ); var_2 = common_scripts\utility::get_target_ent( "remote_missile_source" ); var_2.origin = var_0; var_2.angles = var_1; var_3 = anglestoforward( var_2.angles ); common_scripts\utility::flag_init( "force_detonate_dom" ); level.player disableweaponswitch(); level.player giveweapon( "remote_torpedo_tablet" ); level.player switchtoweapon( "remote_torpedo_tablet" ); setsaveddvar( "cg_cinematicFullScreen", "0" ); cinematicingameloop( "torpedo" ); setsaveddvar( "player_swimSpeed", 0 ); level.player enableslowaim( 0.01, 0.01 ); var_4 = level.player common_scripts\utility::spawn_tag_origin(); var_4.angles = level.player getplayerangles(); wait 2.5; var_5 = 0; level.player disableslowaim(); setsaveddvar( "player_swimSpeed", 90 ); level.player unlink(); var_4 delete(); common_scripts\utility::flag_set( "torpedo_out" ); maps\_hud_util::fade_out( 0.5 ); stopcinematicingame(); level.player.breathing_overlay["gasmask_overlay"].alpha = 0; level.player notify( "stop_scuba_breathe" ); level.player maps\_underwater::player_scuba_mask_disable( 1 ); maps\_utility::delaythread( 0.1, maps\_hud_util::fade_in, 0.3 ); maps\_utility::delaythread( 12, common_scripts\utility::flag_set, "force_detonate_dom" ); level.player enablemousesteer( 1 ); level.player torpedo_fire( var_2, var_5 ); level.player enablemousesteer( 0 ); setsaveddvar( "sm_cameraOffset", 0 ); setsaveddvar( "sm_sunShadowScale", 1 ); setsaveddvar( "sm_sunSampleSizeNear", 0.25 ); level.player maps\_underwater::player_scuba_mask( 1 ); level.f_min["gasmask_overlay"] = 0.3; level.f_max["gasmask_overlay"] = 0.95; level.player maps\_utility::delaythread( 0.1, maps\_swim_player::flashlight ); level.player takeweapon( "remote_torpedo_tablet" ); level.player switchtoweapon( level.player.last_weapon ); level.player enableweaponswitch(); common_scripts\utility::flag_wait( "turn_on_bubbles_after_torpedo" ); level.player thread maps\_underwater::player_scuba(); } pick_manual_or_auto() { var_0 = 0; thread choose_fire(); thread choose_ads(); thread draw_trigger_hints(); common_scripts\utility::flag_wait( "picked_torpedo_mode" ); if ( common_scripts\utility::flag( "player_chose_auto" ) ) { var_0 = 1; thread fade_out_hint( level.torpedo_choice_hints["left_trig_hint"] ); thread fade_out_hint( level.torpedo_choice_hints["right_trig_hint"], 0.05 ); thread fade_out_hint( level.torpedo_choice_hints["left_trig_hint_text"] ); thread fade_out_hint( level.torpedo_choice_hints["right_trig_hint_text"], 0.05 ); } else { thread fade_out_hint( level.torpedo_choice_hints["left_trig_hint"], 0.05 ); thread fade_out_hint( level.torpedo_choice_hints["right_trig_hint"] ); thread fade_out_hint( level.torpedo_choice_hints["left_trig_hint_text"], 0.05 ); thread fade_out_hint( level.torpedo_choice_hints["right_trig_hint_text"] ); } return var_0; } choose_fire() { level endon( "picked_torpedo_mode" ); level.player waittill( "fire weapon" ); common_scripts\utility::flag_set( "picked_torpedo_mode" ); } choose_ads() { level endon( "picked_torpedo_mode" ); level.player waittill( "used ads" ); common_scripts\utility::flag_set( "player_chose_auto" ); common_scripts\utility::flag_set( "picked_torpedo_mode" ); } draw_trigger_hints() { var_0 = 125; var_1 = 25; var_2 = 150; var_3 = -150; var_4 = 2; var_5 = level.player maps\_hud_util::createclientfontstring( "default", 2 ); var_6 = level.player maps\_hud_util::createclientfontstring( "default", 2 ); var_7 = level.player maps\_hud_util::createclientfontstring( "default", 2 ); var_8 = level.player maps\_hud_util::createclientfontstring( "default", 2 ); if ( !maps\ship_graveyard_util::game_is_pc() ) { var_2 = var_2 * -1; var_3 = var_3 * -1; } var_5.x = var_2; var_5.y = var_0; var_5 set_default_hud_stuff(); if ( maps\ship_graveyard_util::game_is_pc() ) var_5 settext( &"SHIP_GRAVEYARD_HINT_LT" ); else var_5 settext( &"SHIP_GRAVEYARD_HINT_LT_360" ); var_7.x = var_2; var_7.y = var_0 + var_1; var_7 set_default_hud_stuff(); var_7 settext( &"SHIP_GRAVEYARD_HINT_LT_TEXT" ); var_6.x = var_3; var_6.y = var_0; var_6 set_default_hud_stuff(); var_6 settext( &"SHIP_GRAVEYARD_HINT_RT" ); var_8.x = var_3; var_8.y = var_0 + var_1; var_8 set_default_hud_stuff(); var_8 settext( &"SHIP_GRAVEYARD_HINT_RT_TEXT" ); if ( !level.console && !level.player usinggamepad() ) { var_5.fontscale = 2; var_6.fontscale = 2; } else { var_5.fontscale = 2 * var_4; var_6.fontscale = 2 * var_4; } var_9 = []; var_9["left_trig_hint"] = var_5; var_9["right_trig_hint"] = var_6; var_9["left_trig_hint_text"] = var_7; var_9["right_trig_hint_text"] = var_8; level.torpedo_choice_hints = var_9; thread fade_in_hint( var_5 ); thread fade_in_hint( var_6 ); thread fade_in_hint( var_7 ); thread fade_in_hint( var_8 ); } set_default_hud_stuff() { self.alignx = "center"; self.aligny = "middle"; self.horzalign = "center"; self.vertalign = "middle"; self.hidewhendead = 1; self.hidewheninmenu = 1; self.sort = 205; self.foreground = 1; self.alpha = 0; } fade_in_hint( var_0, var_1 ) { if ( !isdefined( var_1 ) ) var_1 = 1.5; var_0 fadeovertime( var_1 ); var_0.alpha = 0.95; wait( var_1 ); } fade_out_hint( var_0, var_1 ) { if ( !isdefined( var_1 ) ) var_1 = 1.5; var_0 fadeovertime( var_1 ); var_0.alpha = 0; wait( var_1 ); } torpedo_accel() { var_0 = common_scripts\utility::spawn_tag_origin(); var_0.origin = ( 0, 0, 5 ); var_0 movez( 15, 3 ); var_0 endon( "movedone" ); for (;;) { setdvar( "dominator_speed", var_0.origin[2] ); wait 0.05; } } torpedo_fire( var_0, var_1 ) { var_2 = common_scripts\utility::get_target_ent( "sonar_wreck_crash_player" ); self.dom = spawnstruct(); self.start_origin = var_2.origin; self.start_angles = var_2.angles; var_3 = var_1; var_4 = 0; var_5 = [ ( 2816, -62112, 48 ), ( 2960, -62352, 81 ), ( 3146, -62643, 154 ), ( 3368, -62965, 232 ) ]; var_6 = var_5[0]; var_7 = anglestoforward( var_0.angles ); var_8 = var_0.origin; if ( var_3 ) var_8 = var_6; var_9 = spawn( "script_model", var_8 ); var_9.angles = var_0.angles; if ( var_3 ) var_9.angles = ( 0, 300, 0 ); var_9 setmodel( "viewmodel_torpedo" ); var_9 useanimtree( level.scr_animtree["torpedo"] ); var_9 setanim( level.scr_anim["torpedo"]["torpedo_idle"] ); var_9.dominator_angular_velocity = ( 0, 0, 0 ); self.dom.ref_ent = var_9; playfxontag( common_scripts\utility::getfx( "torpedo_propellor_loop" ), var_9, "spinner0_JNT" ); var_10 = spawn( "script_model", var_9.origin + var_7 * -200.0 ); var_10.angles = var_9.angles; var_10 setmodel( "tag_origin" ); var_11 = 0; var_10 linkto( var_9, "tag_body", ( -1.5, 0, -6.5 ), ( var_11, 0, 0 ) ); self playerlinktodelta( var_10, "tag_origin", 1.0, 0, 0, 0, 0, 1 ); self.dom.player_ent = var_10; lock_player_controls( 1 ); var_12 = 0; self.dom.sprint = 0; self.dom.sprint_time = 0; thread enable_torpedo_ui( var_1 ); self thermalvisionon(); self visionsetthermalforplayer( "shpg_thermal", 0 ); level.sonar_boat setmodel( "vehicle_lcs_flir" ); setsaveddvar( "r_cc_mode", "clut" ); if ( !maps\_utility::game_is_current_gen() ) setsaveddvar( "r_thermalColorOffset", -0.01 ); level notify( "torpedo_ready" ); level.player thread spawn_model_fx( ( 3, 0, 0 ) ); level waittill( "fire_torpedo" ); wait 0.25; var_9 unlink(); earthquake( 0.75, 0.7, level.player.origin, 1024 ); thread torpedo_accel(); var_9 playsound( "scn_shipg_torpedo_start", "start_sound_done" ); var_9 common_scripts\utility::delaycall( 0.75, ::playloopsound, "scn_shipg_torpedo_loop" ); var_13 = var_9 common_scripts\utility::spawn_tag_origin(); self.dom.auto_pilot_rot_control_ref_ent = var_13; var_13.angles = var_9.angles; for (;;) { var_13.origin = var_9.origin; var_14 = self getnormalizedcameramovement(); var_15 = self getnormalizedmovement(); if ( !level.console && !level.player usinggamepad() ) { var_14 = var_14 * ( 1, -1, 1 ); var_14 = ( max( min( 1, var_14[0] ), -1 ), max( min( 1, var_14[1] ), -1 ), 0 ); } else { if ( var_14[0] == 0 ) { if ( isdefined( self getlocalplayerprofiledata( "invertedPitch" ) ) && self getlocalplayerprofiledata( "invertedPitch" ) ) var_14 = ( var_15[0] * -1.0, var_14[1], var_14[2] ); else var_14 = ( var_15[0], var_14[1], var_14[2] ); } if ( var_14[1] == 0 ) var_14 = ( var_14[0], var_15[1], var_14[2] ); } var_9.dominator_angular_velocity = ( var_9 dominator_accelerate( "pitch", var_9.dominator_angular_velocity, var_14 ), var_9 dominator_accelerate( "yaw", var_9.dominator_angular_velocity, var_14 ), var_9 dominator_accelerate( "roll", var_9.dominator_angular_velocity, var_14 ) ); var_9.angles = var_9.angles + var_9.dominator_angular_velocity * ( 1, 1, 0 ); var_16 = 80; var_17 = 55; if ( var_9.angles[0] > var_16 ) var_9.angles = ( var_16, var_9.angles[1], 0 ); else if ( var_9.angles[0] < var_17 * -1 ) var_9.angles = ( var_17 * -1, var_9.angles[1], 0 ); var_9.angles = var_9.angles * ( 1, 1, 0 ); var_9.angles = var_9.angles + ( 0, 0, var_9.dominator_angular_velocity[2] * -5.0 ); if ( var_3 == 1 ) { var_18 = 1; if ( distance( var_6, var_9.origin ) < 128 ) { var_4++; if ( var_4 < var_5.size ) var_6 = var_5[var_4]; else if ( var_4 == var_5.size ) { var_6 = level.sonar_boat.target_points[0].origin + ( -166, 154, -156 ); var_18 = 0.25; } else var_6 = level.sonar_boat.target_points[0].origin; } var_19 = vectortoangles( var_6 - var_9.origin ); var_13 rotateto( var_19, var_18 ); var_9.angles = var_13.angles; } var_20 = var_9.angles[0] / 90.0; if ( var_9.angles[0] < 0 ) var_20 = var_20 / 3.0; var_21 = getdvarfloat( "dominator_speed" ); var_9.velocity = anglestoforward( var_9.angles ) * var_21; var_22 = var_9.origin + var_9.velocity; var_23 = anglestoforward( var_9.angles ) * 5; var_24 = bullettrace( var_9.origin, var_22 + var_9.velocity, 0, var_9 ); var_25 = bullettrace( self geteye(), self geteye() + ( 0, 0, 5 ), 0, var_9 ); if ( var_24["fraction"] < 1 || var_25["fraction"] < 1 || common_scripts\utility::flag( "force_detonate_dom" ) ) { thread detonate_dominator( var_9.origin, var_22 + var_9.velocity ); break; } var_26 = var_9.origin; var_9.origin = var_22; wait 0.01; } var_27 = 0; foreach ( var_29 in level.sonar_boat.target_points ) { if ( distance( self.origin, var_29.origin ) < 196 ) { var_27 = 1; break; } } level notify( "exit_torpedo", var_27 ); wait 0.25; disable_torpedo_ui(); self thermalvisionoff(); setsaveddvar( "r_cc_mode", "off" ); } lock_player_controls( var_0 ) { if ( var_0 == 1 ) { self disableweapons(); self disableoffhandweapons(); self hideviewmodel(); } else { self showviewmodel(); self enableweapons(); self enableoffhandweapons(); } self allowcrouch( !var_0 ); self allowprone( !var_0 ); self allowsprint( !var_0 ); self allowads( !var_0 ); } dominator_accelerate( var_0, var_1, var_2 ) { if ( var_0 == "yaw" ) { var_3 = getdvarfloat( "dominator_max_yaw_angle_velocity" ); var_4 = getdvarfloat( "dominator_yaw_angle_acceleration" ); var_5 = 1; var_6 = 1; var_7 = 0.01; } else if ( var_0 == "roll" ) { var_3 = getdvarfloat( "dominator_max_yaw_angle_velocity" ); var_4 = getdvarfloat( "dominator_yaw_angle_acceleration" ); var_5 = 2; var_6 = 1; var_7 = 0.01; } else { var_3 = getdvarfloat( "dominator_max_pitch_angle_velocity" ); var_4 = getdvarfloat( "dominator_pitch_angle_acceleration" ); var_5 = 0; var_6 = 0; var_7 = 0.3; } var_8 = dominator_get_dead_zone_range( var_2[var_6] * -1.0, var_7 ); if ( var_8 == 0 ) { if ( var_0 == "yaw" ) var_4 = var_4 * 3.5; else if ( var_0 == "roll" ) var_4 = var_4 * 1.5; else var_4 = var_4 * 2.1; } var_9 = var_1[var_5] / var_3; var_10 = var_8 - var_9; var_4 = var_10 * var_4; if ( var_0 == "yaw" ) var_1 = var_1 + ( 0, var_4, 0 ); else if ( var_0 == "roll" ) var_1 = var_1 + ( 0, 0, var_4 ); else var_1 = var_1 + ( var_4, 0, 0 ); return var_1[var_5]; } dominator_get_dead_zone_range( var_0, var_1 ) { var_2 = clamp( abs( var_0 ) - var_1, 0, 1 ); var_3 = 1.0 - var_1; var_2 = var_2 / var_3; if ( var_0 < 0.0 ) var_2 = var_2 * -1.0; return var_2; } detonate_dominator( var_0, var_1 ) { if ( isdefined( level.sound_torpedo_ent ) ) { level.sound_torpedo_ent stoploopsound(); level.sound_torpedo_ent delete(); } var_2 = anglestoforward( self getplayerangles() ); thread dominator_earthquake( 1.0, 1 ); thread common_scripts\utility::play_sound_in_space( "underwater_explosion", self.origin ); maps\_hud_util::fade_out( 0.1, "white" ); self setorigin( self.start_origin ); self setplayerangles( self.start_angles ); self.dom.ref_ent delete(); self.dom.player_ent delete(); self.dom.auto_pilot_rot_control_ref_ent delete(); level notify( "kill_torpedo_model" ); self.dom.ref_ent = undefined; lock_player_controls( 0 ); wait 0.2; thread maps\_hud_util::fade_in( 0.35, "white" ); } dominator_earthquake( var_0, var_1 ) { if ( var_1 == 0 ) earthquake( var_0 * 0.8, 2.0, self.origin, 100000.0 ); if ( var_0 < 0.2 ) self playrumbleonentity( "damage_heavy" ); else { self playrumbleonentity( "damage_heavy" ); wait 0.2; self playrumbleonentity( "damage_light" ); wait 0.2; self playrumbleonentity( "damage_light" ); } } track_lcs_targets() { var_0 = level.sonar_boat; var_1 = level.sonar_boat.target_points; foreach ( var_3 in var_1 ) { var_4 = "apache_targeting_circle"; var_5 = ( 1, 0, 0 ); target_enable( var_3, var_4, var_5, 128 ); var_3 thread disable_target_on_death(); } } disable_target_on_death() { level waittill( "exit_torpedo" ); if ( target_istarget( self ) ) target_remove( self ); } target_enable( var_0, var_1, var_2, var_3 ) { if ( !isdefined( var_0 ) ) return; var_4 = ( 0, 0, 0 ); target_alloc( var_0, var_4 ); target_setshader( var_0, var_1 ); target_drawsquare( var_0, 24 ); if ( isdefined( var_2 ) ) target_setcolor( var_0, var_2 ); target_setmaxsize( var_0, 128 ); target_setminsize( var_0, 64, 0 ); target_setdelay( var_0, 0.6 ); target_flush( var_0 ); } enable_torpedo_ui( var_0 ) { common_scripts\utility::flag_set( "pause_dynamic_dof" ); maps\_art::dof_enable_script( 1, 20, 5, 9000, 90000, 3, 0.1 ); level.torpedo_hud_items = []; var_1 = level.player maps\_hud_util::createclienticon( "torpedo_connection_frame", 256, 12 ); var_1 maps\_hud_util::setpoint( "CENTER", "CENTER", 0, 0, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_2 = var_1; var_1 = level.player maps\_hud_util::createclienticon( "torpedo_connection_text", 256, 12 ); var_1 maps\_hud_util::setpoint( "CENTER", "CENTER", 0, -12, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_3 = var_1; var_1 = level.player maps\_hud_util::createclienticon( "torpedo_connection_bar", 4, 4 ); var_1 maps\_hud_util::setpoint( "CENTER", "CENTER", -115, -2, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_4 = var_1; var_1 = maps\_hud_util::create_client_overlay( "torpedo_frame_edge", 1, level.player ); var_1.foreground = 0; level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; level thread torpedo_boot_sequence( var_2, var_3 ); level thread torpedo_load_bar( var_4 ); level waittill( "torpedo_one_quarter_loaded" ); var_1 = level.player maps\_hud_util::createclienticon( "torpedo_sidebracket_l", 30, 340 ); var_1 maps\_hud_util::setpoint( "LEFT", "LEFT", 60, 0, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_1 = level.player maps\_hud_util::createclienticon( "torpedo_sidebracket_r", 30, 340 ); var_1 maps\_hud_util::setpoint( "RIGHT", "RIGHT", -60, 0, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; level waittill( "torpedo_half_loaded" ); var_1 = level.player maps\_hud_util::createclienticon( "torpedo_databit_1", 200, 26 ); var_1 maps\_hud_util::setpoint( "LEFT TOP", "LEFT", 60, 120, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; wait 0.1; var_1 = level.player maps\_hud_util::createclienticon( "torpedo_databit_2", 200, 26 ); var_1 maps\_hud_util::setpoint( "RIGHT TOP", "RIGHT", -105, 120, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; level thread track_lcs_targets(); wait 0.1; var_1 = level.player maps\_hud_util::createclienticon( "torpedo_databit_3", 200, 26 ); var_1 maps\_hud_util::setpoint( "TOP", "TOP", 0, 14, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; level waittill( "torpedo_three_quarter_loaded" ); var_1 = level.player maps\_hud_util::createclienticon( "torpedo_centerbox", 800, 320 ); var_1 maps\_hud_util::setpoint( "CENTER", undefined, 0, 0, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_1 = level.player maps\_hud_util::createclienticon( "torpedo_frame_center", 200, 12 ); var_1 maps\_hud_util::setpoint( "TOP", "TOP", 0, 10, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_1 = level.player maps\_hud_util::createclienticon( "torpedo_frame_center_bottom", 200, 12 ); var_1 maps\_hud_util::setpoint( "BOTTOM", "BOTTOM", 0, -10, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; level waittill( "torpedo_bar_loading_complete" ); var_1 = level.player maps\_hud_util::createclienticon( "torpedo_center", 200, 200 ); var_1 maps\_hud_util::setpoint( "CENTER", undefined, 0, 0, 0 ); var_1.alpha = 0.4; level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_1 = level.player maps\_hud_util::createclienticon( "torpedo_horizonline", 700, 60 ); var_1 maps\_hud_util::setpoint( "CENTER", undefined, 0, 0, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_1 thread move_horizon_line_on_torpedo_hud(); var_1 = level.player maps\_hud_util::createclienticon( "torpedo_centerline", 110, 60 ); var_1 maps\_hud_util::setpoint( "BOTTOM", "CENTER", 0, -20, 0 ); level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_1 = level.player maps\_hud_util::createclientfontstring( "bigfixed", 0.48 ); var_1.color = ( 0.733, 0.878, 0.905 ); var_1 maps\_hud_util::setpoint( "CENTER", "CENTER", -140, 128, 0 ); var_1.foreground = 1; var_1.sort = 0; var_1.alpha = 1; level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_1 thread torpedo_get_distance_to_target(); var_1 = level.player maps\_hud_util::createclientfontstring( "bigfixed", 0.48 ); var_1.color = ( 1, 0.419, 0.831 ); var_1 maps\_hud_util::setpoint( "CENTER", "CENTER", -138, 128, 0 ); var_1.sort = -1; var_1.alpha = 0.5; level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_1 thread torpedo_get_distance_to_target(); var_1 = level.player maps\_hud_util::createclientfontstring( "bigfixed", 0.48 ); var_1.color = ( 0.45, 1, 0.419 ); var_1 maps\_hud_util::setpoint( "CENTER", "CENTER", -142, 128, 0 ); var_1.sort = -2; var_1.alpha = 0.5; level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_1 thread torpedo_get_distance_to_target(); if ( var_0 ) { var_1 = level.player maps\_hud_util::createclientfontstring( "bigfixed", 1.5 ); var_1.color = ( 1, 1, 1 ); var_1 maps\_hud_util::setpoint( "CENTER", "CENTER", -160, 70, 0 ); var_1.foreground = 1; var_1.alpha = 0.5; level.torpedo_hud_items[level.torpedo_hud_items.size] = var_1; var_1 thread auto_flash_text(); } level.sonar_boat thread hud_outlineenable(); } auto_flash_text() { level endon( "kill_hud_logic" ); level endon( "kill_torpedo_model" ); var_0 = 0.75; self settext( &"SHIP_GRAVEYARD_AUTO" ); for (;;) { wait( var_0 ); self.alpha = 0.5; wait( var_0 / 2 ); self.alpha = 0; } } torpedo_boot_sequence( var_0, var_1 ) { level endon( "kill_hud_logic" ); level endon( "kill_torpedo_model" ); var_2 = 0.25; var_0.alpha = 1; var_1.alpha = 1; wait( var_2 ); var_1.alpha = 0; wait( var_2 ); var_1.alpha = 1; wait( var_2 ); var_1.alpha = 0; wait( var_2 ); var_1.alpha = 1; wait( var_2 ); var_1.alpha = 0; level waittill( "torpedo_bar_loading_complete" ); var_1.alpha = 0; var_0.alpha = 0; } torpedo_load_bar( var_0 ) { level endon( "kill_hud_logic" ); level endon( "kill_torpedo_model" ); var_1 = 29; var_2 = 8; for ( var_3 = 0; var_3 < var_1; var_3++ ) { var_0.width = var_0.width + var_2; var_0 setshader( "torpedo_connection_bar", var_0.width, 4 ); var_0.x = var_0.x + var_2 / 2; var_0 maps\_hud_util::setpoint( "CENTER", "CENTER", var_0.x, -2, 0 ); common_scripts\utility::waitframe(); if ( var_3 > var_1 * 0.25 ) level notify( "torpedo_one_quarter_loaded" ); if ( var_3 > var_1 * 0.5 ) level notify( "torpedo_half_loaded" ); if ( var_3 > var_1 * 0.75 ) level notify( "torpedo_three_quarter_loaded" ); } level notify( "torpedo_bar_loading_complete" ); var_0.alpha = 0; } torpedo_get_distance_to_target() { level endon( "kill_hud_logic" ); wait 0.2; while ( isdefined( level.sonar_boat.target_points ) ) { var_0 = distance( level.player.origin, level.sonar_boat.target_points[0].origin ) - 35; if ( var_0 < 16 ) var_0 = 0; self settext( abs( int( var_0 ) ) + "m" ); common_scripts\utility::waitframe(); } } move_horizon_line_on_torpedo_hud() { level endon( "kill_hud_logic" ); level endon( "kill_torpedo_model" ); var_0 = 30; var_1 = -30; var_2 = -285; var_3 = -139; for (;;) { var_4 = level.player.dom.ref_ent.angles[0]; var_5 = 1 - ( var_4 - var_0 ) / ( var_1 - var_0 ); var_6 = abs( var_2 ) - abs( var_3 ); var_7 = var_3 + -1 * max( 0, var_5 * var_6 ); var_7 = int( clamp( var_7, var_2, var_3 ) ); wait 0.05; maps\_hud_util::setpoint( "CENTER", "BOTTOM", 0, var_7, 0 ); } } move_center_line_on_torpedo_hud() { level endon( "kill_hud_logic" ); level endon( "kill_torpedo_model" ); var_0 = 180; var_1 = -180; var_2 = -200; var_3 = 0; for (;;) { var_4 = level.player getplayerangles()[1]; var_4 = clamp( var_4, var_0, var_1 ); var_5 = 1 - ( var_4 - var_0 ) / ( var_1 - var_0 ); var_6 = abs( var_2 ) - abs( var_3 ); var_7 = var_3 + -1 * max( 0, var_5 * var_6 ); var_7 = int( clamp( var_7, var_2, var_3 ) ); wait 0.05; maps\_hud_util::setpoint( "bottom", "center", var_7, 0, 0 ); } } disable_torpedo_ui() { maps\_art::dof_disable_script( 0.1 ); level notify( "kill_hud_logic" ); foreach ( var_1 in level.torpedo_hud_items ) var_1 destroy(); if ( common_scripts\utility::flag( "pause_dynamic_dof" ) ) common_scripts\utility::flag_clear( "pause_dynamic_dof" ); } spawn_model_fx( var_0 ) { self.crt_plane = spawn( "script_model", ( 0, 0, 0 ) ); self.crt_plane setmodel( "torpedo_crtplane" ); self.crt_plane linktoplayerview( self, "tag_origin", ( 2, 0, 0 ) + var_0, ( 0, -90, 0 ), 1 ); self.crt_plane notsolid(); level waittill( "exit_torpedo" ); self.crt_plane unlinkfromplayerview( self ); self.crt_plane delete(); } hud_outlineenable() { setsaveddvar( "r_hudOutlineWidth", 2 ); self hudoutlineenable( 0, 1 ); self waittill( "death" ); if ( isdefined( self ) ) self hudoutlinedisable(); }