// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool binoculars_init( var_0 ) { precacheshader( "cnd_face_recog_border_01" ); precacheshader( "cnd_binocs_hud_photo_001" ); precacheshader( "cnd_binocs_hud_photo_002" ); precacheshader( "cnd_binocs_hud_photo_003" ); precacheshader( "cnd_binocs_hud_photo_004" ); precacheshader( "cnd_binocs_hud_photo_005" ); precacheshader( "cnd_binocs_hud_photo_006" ); precacheshader( "cnd_binocs_hud_photo_007" ); precacheshader( "cnd_binocs_hud_photo_008" ); precacheshader( "cnd_binocs_hud_photo_009" ); precacheshader( "cnd_binocs_hud_photo_010" ); precacheshader( "cnd_binocs_hud_photo_011" ); precacheshader( "cnd_binocs_hud_photo_012" ); precacheshader( "overlay_static" ); precacheshader( "white" ); precacheshader( "red_block" ); precacheshader( "cnd_face_recog_reticle_01" ); precacheshader( "cnd_face_recog_reticle_02" ); precacheshader( "cnd_face_recog_reticle_03" ); precacheshader( "cnd_face_recog_reticle_03a" ); precacheshader( "cnd_face_recog_reticle_data_base" ); precacheshader( "cnd_face_recog_reticle_id" ); precacheshader( "cnd_face_recog_frame_01" ); precachemodel( "soccer_ball_static" ); precachemodel( "tag_turret" ); precachemodel( "cnd_facial_rcg_01" ); precachemodel( "cnd_facial_rcg_02" ); precachemodel( "cnd_facial_rcg_03" ); precachemodel( "cnd_facial_rcg_01_non_hvt" ); precachemodel( "cnd_facial_rcg_02_non_hvt" ); precachemodel( "cnd_facial_rcg_03_non_hvt" ); precacheturret( "player_view_controller_binoculars" ); precacheitem( "binoculars_tech" ); precacheshader( "hud_icon_scan_binocs" ); precacheshader( "pip_scene_overlay" ); precachestring( &"CORNERED_READY" ); precachestring( &"CORNERED_NO" ); precachestring( &"CORNERED_MATCH" ); precachestring( &"CORNERED_DATA" ); precachestring( &"CORNERED_SCANNING_DOT" ); precachestring( &"CORNERED_SCANNING_DOT_DOT" ); precachestring( &"CORNERED_SCANNING_DOT_DOT_DOT" ); precachestring( &"CORNERED_IDENTIFIED" ); common_scripts\utility::flag_init( "scan_target_not_facing" ); common_scripts\utility::flag_init( "hvt_confirmed" ); level.default_visionset = var_0; self.binocular_profile_materials = []; self.binocular_profile_materials[self.binocular_profile_materials.size] = "cnd_binocs_hud_photo_001"; self.binocular_profile_materials[self.binocular_profile_materials.size] = "cnd_binocs_hud_photo_002"; self.binocular_profile_materials[self.binocular_profile_materials.size] = "cnd_binocs_hud_photo_003"; self.binocular_profile_materials[self.binocular_profile_materials.size] = "cnd_binocs_hud_photo_004"; self.binocular_profile_materials[self.binocular_profile_materials.size] = "cnd_binocs_hud_photo_005"; self.binocular_profile_materials[self.binocular_profile_materials.size] = "cnd_binocs_hud_photo_006"; self.binocular_profile_materials[self.binocular_profile_materials.size] = "cnd_binocs_hud_photo_007"; self.binocular_profile_materials[self.binocular_profile_materials.size] = "cnd_binocs_hud_photo_008"; self.binocular_profile_materials[self.binocular_profile_materials.size] = "cnd_binocs_hud_photo_009"; self.binocular_profile_materials[self.binocular_profile_materials.size] = "cnd_binocs_hud_photo_010"; self.binocular_profile_materials[self.binocular_profile_materials.size] = "cnd_binocs_hud_photo_011"; self.binocular_profile_materials[self.binocular_profile_materials.size] = "cnd_binocs_hud_photo_012"; self.binocular_body_features_left = []; self.binocular_body_features_left[self.binocular_body_features_left.size] = "J_Hip_LE"; self.binocular_body_features_left[self.binocular_body_features_left.size] = "J_Wrist_LE"; self.binocular_body_features_left[self.binocular_body_features_left.size] = "J_Elbow_LE"; self.binocular_body_features_right = []; self.binocular_body_features_right[self.binocular_body_features_right.size] = "J_Hip_RI"; self.binocular_body_features_right[self.binocular_body_features_right.size] = "J_Wrist_RI"; self.binocular_body_features_right[self.binocular_body_features_right.size] = "J_Elbow_RI"; self.binoculars_linked_to_target = 0; binoculars_pip_init(); } give_binoculars() { if ( isdefined( self.has_binoculars ) && self.has_binoculars ) return; self.has_binoculars = 1; self.binoculars_active = 0; self.show_binoc_scan_hint = 1; self.default_fov = getdvarint( "cg_fov" ); binoculars_set_default_zoom_level( 0 ); binoculars_set_vision_set( "cornered_binoculars" ); thread binoculars_hud(); } take_binoculars() { if ( isdefined( self.has_binoculars ) && !self.has_binoculars ) return; self.has_binoculars = 0; self.show_binoc_scan_hint = undefined; while ( isdefined( self.binoculars_clearing_hud ) && self.binoculars_clearing_hud ) wait 0.05; self notify( "stop_using_binoculars" ); self notify( "take_binoculars" ); if ( isdefined( self.binoculars_active ) && self.binoculars_active ) { if ( self hasweapon( "binoculars_tech" ) ) self takeweapon( "binoculars_tech" ); binoculars_clear_hud(); } self setweaponhudiconoverride( "actionslot1", "none" ); } binoculars_set_default_zoom_level( var_0 ) { self.binoculars_default_zoom_level = var_0; } binoculars_set_vision_set( var_0 ) { self.binoculars_vision_set = var_0; if ( isdefined( self.binoculars_active ) && self.binoculars_active ) self visionsetnakedforplayer( self.binoculars_vision_set, 5.0 ); } binoculars_hud() { self endon( "take_binoculars" ); self notifyonplayercommand( "use_binoculars", "+actionslot 1" ); self notifyonplayercommand( "binocular_zoom", "+sprint_zoom" ); self notifyonplayercommand( "binocular_zoom", "+melee_zoom" ); self setweaponhudiconoverride( "actionslot1", "hud_icon_scan_binocs" ); self.binoculars_hud_item = []; for (;;) { self waittill( "use_binoculars" ); self.last_weapon = self getcurrentprimaryweapon(); self giveweapon( "binoculars_tech" ); self switchtoweapon( "binoculars_tech" ); common_scripts\utility::_disableweaponswitch(); self playsound( "item_nightvision_on" ); binoculars_init_hud(); wait 0.9; common_scripts\utility::_disableweapon(); self takeweapon( "binoculars_tech" ); common_scripts\utility::waittill_either( "use_binoculars", "stop_using_binoculars" ); if ( isdefined( self.binoculars_zooming ) && self.binoculars_zooming ) self waittill( "binoculars_done_zooming" ); self notify( "stop_using_binoculars" ); level notify( "stop_allies_kill_tagged_enemies_without_player_watcher" ); level notify( "stop_allies_kill_tagged_enemies_watcher" ); binoculars_clear_hud(); } } binoculars_init_hud() { self endon( "take_binoculars" ); setsaveddvar( "ammoCounterHide", "1" ); setsaveddvar( "actionSlotsHide", "1" ); setsaveddvar( "hud_showStance", "0" ); setsaveddvar( "cg_drawCrosshair", 0 ); self notify( "binoculars_init_hud" ); self allowmelee( 0 ); self.binocular_target = spawn( "script_model", self getorigin() ); self.binocular_target setmodel( "soccer_ball_static" ); self.binocular_target hide(); self.binocular_target notsolid(); target_set( self.binocular_target ); target_hidefromplayer( self.binocular_target, self ); self.binoculars_active = 1; thread zoom_lerp_dof(); self.binoculars_hud_item["binocular_border"] = maps\_hud_util::create_client_overlay( "cnd_face_recog_border_01", 1, self ); self.binoculars_hud_item["binocular_frame"] = maps\_hud_util::create_client_overlay( "cnd_face_recog_frame_01", 0.66, self ); self.binoculars_hud_item["reticle"] = maps\_hud_util::createicon( "cnd_face_recog_reticle_01", 16, 16 ); self.binoculars_hud_item["reticle"] set_default_hud_parameters(); self.binoculars_hud_item["reticle"].alignx = "center"; self.binoculars_hud_item["reticle"].aligny = "middle"; self.binoculars_hud_item["reticle"].alpha = 0.66; self.binoculars_hud_item["reticle_targetting"] = maps\_hud_util::createicon( "cnd_face_recog_reticle_02", 60, 60 ); self.binoculars_hud_item["reticle_targetting"] set_default_hud_parameters(); self.binoculars_hud_item["reticle_targetting"].alignx = "center"; self.binoculars_hud_item["reticle_targetting"].aligny = "middle"; self.binoculars_hud_item["reticle_targetting"].alpha = 0.0; self.binocular_reticle_target = spawn( "script_origin", self.origin ); self.binoculars_hud_item["reticle_targetting"] settargetent( self.binocular_reticle_target ); self.binoculars_hud_item["reticle_targetting"] setwaypoint( 1, 0 ); self.binoculars_hud_item["reticle_scanning"] = maps\_hud_util::createicon( "cnd_face_recog_reticle_03", 300, 300 ); self.binoculars_hud_item["reticle_scanning"] set_default_hud_parameters(); self.binoculars_hud_item["reticle_scanning"].alignx = "center"; self.binoculars_hud_item["reticle_scanning"].aligny = "middle"; self.binoculars_hud_item["reticle_scanning"].alpha = 0.0; self.binoculars_hud_item["reticle_scanning_frame"] = maps\_hud_util::createicon( "cnd_face_recog_reticle_03a", 300, 300 ); self.binoculars_hud_item["reticle_scanning_frame"] set_default_hud_parameters(); self.binoculars_hud_item["reticle_scanning_frame"].alignx = "left"; self.binoculars_hud_item["reticle_scanning_frame"].aligny = "middle"; self.binoculars_hud_item["reticle_scanning_frame"].x = -2; self.binoculars_hud_item["reticle_scanning_frame"].y = -40; self.binoculars_hud_item["reticle_scanning_frame"].alpha = 0.0; self.binoculars_hud_item["reticle_scanning_status"] = maps\_hud_util::createclientfontstring( "small", 1.3 ); self.binoculars_hud_item["reticle_scanning_status"].x = 9; self.binoculars_hud_item["reticle_scanning_status"].y = -150; self.binoculars_hud_item["reticle_scanning_status"].alignx = "left"; self.binoculars_hud_item["reticle_scanning_status"].aligny = "middle"; self.binoculars_hud_item["reticle_scanning_status"].horzalign = "center"; self.binoculars_hud_item["reticle_scanning_status"].vertalign = "middle"; self.binoculars_hud_item["reticle_scanning_status"].color = ( 1, 1, 1 ); self.binoculars_hud_item["reticle_scanning_status"].alpha = 0.0; self.binoculars_hud_item["reticle_scanning_status"].sort = self.binoculars_hud_item["reticle_scanning_frame"].sort + 10; self.binoculars_hud_item["reticle_scanning_status"] settext( &"CORNERED_READY" ); if ( isdefined( self.binoculars_vision_set ) ) self visionsetnakedforplayer( self.binoculars_vision_set, 0.0 ); thread maps\cornered_audio::aud_binoculars( "on" ); thread maps\cornered_audio::aud_binoculars( "bg_loop" ); thread binoculars_calculate_range(); thread static_overlay(); thread monitor_binoculars_zoom(); thread binoculars_angles_display(); thread binocular_reticle_target_reaction(); thread binoculars_scan_for_targets(); thread binoculars_zoom_display(); thread binoculars_monitor_scanning(); } binoculars_clear_hud() { if ( isdefined( self.binoculars_zooming ) && self.binoculars_zooming ) self waittill( "binoculars_done_zooming" ); thread maps\cornered_audio::aud_binoculars( "off" ); self notify( "stop_binocular_bg_loop_sound" ); self.binoculars_clearing_hud = 1; binoculars_unlock_from_target(); self.binoculars_active = 0; self playsound( "item_nightvision_off" ); static_overlay(); self allowmelee( 1 ); setsaveddvar( "ammoCounterHide", "0" ); setsaveddvar( "actionSlotsHide", "0" ); setsaveddvar( "hud_showStance", "1" ); setsaveddvar( "cg_drawCrosshair", 1 ); common_scripts\utility::_enableweapon(); common_scripts\utility::_enableweaponswitch(); self switchtoweapon( self.last_weapon ); var_0 = getarraykeys( self.binoculars_hud_item ); foreach ( var_2 in var_0 ) { self.binoculars_hud_item[var_2] destroy(); self.binoculars_hud_item[var_2] = undefined; } if ( isdefined( self.binoculars_face_scanning_models ) ) { foreach ( var_5 in self.binoculars_face_scanning_models ) { foreach ( var_7 in var_5 ) var_7 delete(); } self.binoculars_face_scanning_models = undefined; } foreach ( var_11 in target_getarray() ) target_remove( var_11 ); self.binocular_target delete(); self.binocular_target = undefined; self.blend_struct = undefined; maps\_art::dof_disable_script( 0.0 ); setsaveddvar( "cg_fov", self.default_fov ); self disableslowaim(); if ( isdefined( self.binoculars_vision_set ) ) self visionsetnakedforplayer( level.default_visionset, 0.0 ); self.binoculars_clearing_hud = 0; } binoculars_scan_for_targets() { self endon( "stop_using_binoculars" ); self endon( "binoculars_hud_off" ); self endon( "take_binoculars" ); var_0 = 0; self.binoculars_scan_target = undefined; for (;;) { if ( self.current_binocular_zoom_level == 1 && !self.binocular_zooming && !self.binoculars_linked_to_target ) { if ( isdefined( self.binoculars_trace["entity"] ) && isai( self.binoculars_trace["entity"] ) && self.binoculars_trace["entity"] isbadguy() && bullettracepassed( self geteye(), self.binoculars_trace["entity"] gettagorigin( "J_Head" ), 0, undefined ) ) { var_0 = 1; if ( !isdefined( self.binoculars_scan_target ) || self.binoculars_scan_target != self.binoculars_trace["entity"] ) thread binoculars_scan_target_points( self.binoculars_trace["entity"] ); } } if ( !var_0 ) { self.binoculars_scan_target = undefined; self notify( "end_scan_target_points" ); self.binoculars_hud_item["reticle_targetting"].alpha = 0.0; if ( self.binocular_reticle_target islinked() ) self.binocular_reticle_target unlink(); self enableslowaim( 0.5, 0.3 ); } var_0 = 0; wait 0.05; } } binoculars_scan_target_points( var_0 ) { self endon( "stop_using_binoculars" ); self endon( "binoculars_hud_off" ); self endon( "take_binoculars" ); self notify( "end_scan_target_points" ); self endon( "end_scan_target_points" ); self enableslowaim( 0.35, 0.1 ); self.binoculars_scan_target = var_0; if ( self.binocular_reticle_target islinked() ) self.binocular_reticle_target unlink(); thread maps\cornered_audio::aud_binoculars( "seeker_on" ); self.binocular_reticle_target.origin = var_0 gettagorigin( "J_Head" ) - ( 0, 0, 7 ); self.binocular_reticle_target linkto( var_0, "J_Head" ); setsaveddvar( "waypointIconHeight", 36 ); setsaveddvar( "waypointIconWidth", 36 ); wait 0.05; self.binoculars_hud_item["reticle_targetting"].alpha = 1.0; } binoculars_reticle_lerp_to_tag( var_0, var_1, var_2 ) { self endon( "stop_using_binoculars" ); self endon( "binoculars_hud_off" ); self endon( "take_binoculars" ); var_3 = var_2 / 0.05; var_4 = self.binocular_reticle_target.origin; for ( var_5 = 1; var_5 <= var_3; var_5++ ) { self.binocular_reticle_target.origin = var_4 + ( var_0 gettagorigin( var_1 ) - var_4 - ( 0, 0, 7 ) ) * ( var_5 / var_3 ); wait 0.05; } } binoculars_calculate_range() { self endon( "stop_using_binoculars" ); self endon( "binoculars_hud_off" ); self endon( "take_binoculars" ); self.binoculars_hud_item["range"] = maps\_hud_util::createclientfontstring( "small", 1.2 ); self.binoculars_hud_item["range"].x = 75; self.binoculars_hud_item["range"].y = -25; self.binoculars_hud_item["range"].alignx = "right"; self.binoculars_hud_item["range"].aligny = "top"; self.binoculars_hud_item["range"].horzalign = "center"; self.binoculars_hud_item["range"].vertalign = "top"; self.binoculars_hud_item["range"].color = ( 1, 1, 1 ); self.binoculars_hud_item["range"].alpha = 1.0; self.binoculars_hud_item["range"].glowcolor = ( 1, 1, 1 ); self.binoculars_hud_item["range"].glowalpha = 0.0; for (;;) { var_0 = anglestoforward( self getplayerangles() ); if ( self islinked() && isdefined( self.linked_world_space_forward ) ) var_0 = self.linked_world_space_forward; self.binoculars_trace = bullettrace( self geteye(), self geteye() + var_0 * 50000, 1, self, 1, 1 ); var_1 = distance( self geteye(), self.binoculars_trace["position"] ); var_1 = var_1 * 0.0254; var_1 = int( var_1 * 100 ) * 0.01; if ( var_1 > 1000.0 ) self.binoculars_hud_item["range"] settext( "1000+ M" ); else if ( var_1 - int( var_1 ) == 0.0 ) self.binoculars_hud_item["range"] settext( var_1 + ".00 M" ); else if ( var_1 * 10 - int( var_1 * 10 ) == 0.0 ) self.binoculars_hud_item["range"] settext( var_1 + "0 M" ); else self.binoculars_hud_item["range"] settext( var_1 + " M" ); wait 0.05; } } binoculars_remove_target_on_death( var_0 ) { self notify( "end_remove_target_on_death" ); self endon( "end_remove_target_on_death" ); self endon( "stop_using_binoculars" ); self endon( "binoculars_hud_off" ); self endon( "take_binoculars" ); var_0 waittill( "death" ); if ( isdefined( self.binocular_target ) && target_istarget( self.binocular_target ) ) target_hidefromplayer( self.binocular_target, self ); } binoculars_lock_to_target( var_0 ) { self endon( "stop_using_binoculars" ); self endon( "binoculars_hud_off" ); self endon( "take_binoculars" ); if ( !self islinked() ) { self.binoculars_linked_to_target = 1; if ( !isdefined( self.player_view_controller_model ) ) { self.player_view_controller_model = spawn( "script_model", self.origin ); self.player_view_controller_model setmodel( "tag_origin" ); } self.player_view_controller_model.origin = self.origin; self.player_view_controller_model.angles = self getplayerangles(); if ( !isdefined( self.player_view_controller ) ) self.player_view_controller = maps\_utility::get_player_view_controller( self.player_view_controller_model, "tag_origin", ( 0, 0, 0 ), "player_view_controller_binoculars" ); if ( !isdefined( self.turret_look_at_ent ) ) { self.turret_look_at_ent = spawn( "script_model", self.origin ); self.turret_look_at_ent setmodel( "tag_origin" ); } self.turret_look_at_ent.origin = self.origin + anglestoforward( self getplayerangles() ) * 1000; self.player_view_controller snaptotargetentity( self.turret_look_at_ent ); self.prev_origin = self.origin; self playerlinktoabsolute( self.player_view_controller, "tag_aim" ); self.player_view_controller settargetentity( self.binocular_target, self.origin - self geteye() ); self.binoculars_hud_item["reticle"].alpha = 0.0; self.binoculars_hud_item["reticle_targetting"].alpha = 0.0; self.binoculars_hud_item["reticle_scanning"].alpha = 1.0; self.binoculars_hud_item["reticle_scanning_frame"].alpha = 1.0; self.binoculars_hud_item["reticle_scanning_status"].alpha = 1.0; binoculars_pip_enable(); var_1 = 0; while ( self.binoculars_linked_to_target && var_1 < 0.5 ) { self.player_view_controller settargetentity( self.binocular_target, self.origin - self geteye() ); var_1 = var_1 + 0.05; wait 0.05; } } } binoculars_unlock_from_target() { if ( isdefined( self.binoculars_linked_to_target ) && self.binoculars_linked_to_target ) { self unlink(); self.binoculars_linked_to_target = 0; if ( isdefined( self.prev_origin ) ) { self setorigin( self.prev_origin ); self.prev_origin = undefined; } if ( isdefined( self.player_view_controller ) ) { self.player_view_controller delete(); self.player_view_controller = undefined; } if ( isdefined( self.player_view_controller_model ) ) { self.player_view_controller_model delete(); self.player_view_controller_model = undefined; } if ( isdefined( self.turret_look_at_ent ) ) { self.turret_look_at_ent delete(); self.turret_look_at_ent = undefined; } self.binoculars_hud_item["reticle"].alpha = 0.66; self.binoculars_hud_item["reticle_targetting"].alpha = 0.0; self.binoculars_hud_item["reticle_scanning"].alpha = 0.0; self.binoculars_hud_item["reticle_scanning_frame"].alpha = 0.0; self.binoculars_hud_item["reticle_scanning_status"].alpha = 0.0; binoculars_pip_disable(); } } binocular_status_update( var_0, var_1 ) { self endon( "stop_using_binoculars" ); self endon( "take_binoculars" ); self notify( "binoculars_status_updated" ); self endon( "binoculars_status_updated" ); if ( isdefined( var_1 ) && var_1 ) { var_2 = 1; var_3 = 1; for (;;) { switch ( var_2 ) { case 1: var_0 = &"CORNERED_SCANNING_DOT"; break; case 2: var_0 = &"CORNERED_SCANNING_DOT_DOT"; break; case 3: var_0 = &"CORNERED_SCANNING_DOT_DOT_DOT"; break; } self.binoculars_hud_item["reticle_scanning_status"] settext( var_0 ); var_2 = var_2 + var_3; if ( var_2 > 3 || var_2 < 1 ) { var_2 = 2; var_3 = var_3 * -1; } wait 0.15; } } else self.binoculars_hud_item["reticle_scanning_status"] settext( var_0 ); } binocular_face_scanning( var_0 ) { self endon( "stop_using_binoculars" ); self endon( "take_binoculars" ); self endon( "stop_scanning" ); self endon( "scanning_complete" ); self.binoculars_hud_item["profile"] = maps\_hud_util::createicon( self.binocular_profile_materials[0], 70, 70 ); self.binoculars_hud_item["profile"] set_default_hud_parameters(); self.binoculars_hud_item["profile"].alignx = "left"; self.binoculars_hud_item["profile"].aligny = "top"; self.binoculars_hud_item["profile"].horzalign = "center"; self.binoculars_hud_item["profile"].vertalign = "middle"; self.binoculars_hud_item["profile"].x = 142; self.binoculars_hud_item["profile"].y = -137; self.binoculars_hud_item["profile"].alpha = 0.9; self.binoculars_hud_item["profile"].sort = self.binoculars_hud_item["reticle_scanning_frame"].sort + 1; self.binoculars_hud_item["no"] = maps\_hud_util::createclientfontstring( "small", 1.3 ); self.binoculars_hud_item["no"].x = 178; self.binoculars_hud_item["no"].y = -107; self.binoculars_hud_item["no"].alignx = "center"; self.binoculars_hud_item["no"].aligny = "middle"; self.binoculars_hud_item["no"].horzalign = "center"; self.binoculars_hud_item["no"].vertalign = "middle"; self.binoculars_hud_item["no"].color = ( 1, 1, 1 ); self.binoculars_hud_item["no"].alpha = 0.0; self.binoculars_hud_item["no"].sort = self.binoculars_hud_item["reticle_scanning_frame"].sort + 10; self.binoculars_hud_item["no"] settext( &"CORNERED_NO" ); self.binoculars_hud_item["data"] = maps\_hud_util::createclientfontstring( "small", 1.3 ); self.binoculars_hud_item["data"].x = 178; self.binoculars_hud_item["data"].y = -95; self.binoculars_hud_item["data"].alignx = "center"; self.binoculars_hud_item["data"].aligny = "middle"; self.binoculars_hud_item["data"].horzalign = "center"; self.binoculars_hud_item["data"].vertalign = "middle"; self.binoculars_hud_item["data"].color = ( 1, 1, 1 ); self.binoculars_hud_item["data"].alpha = 0.0; self.binoculars_hud_item["data"].sort = self.binoculars_hud_item["reticle_scanning_frame"].sort + 10; self.binoculars_hud_item["data"] settext( &"CORNERED_DATA" ); for (;;) { self.binocular_profile_materials = common_scripts\utility::array_randomize( self.binocular_profile_materials ); foreach ( var_2 in self.binocular_profile_materials ) { if ( !common_scripts\utility::flag( "scan_target_not_facing" ) ) { if ( isdefined( var_0.binocular_facial_profile ) && var_0.binocular_facial_profile == var_2 ) continue; self.binoculars_hud_item["profile"] setshader( var_2, self.binoculars_hud_item["profile"].width, self.binoculars_hud_item["profile"].height ); self.binoculars_hud_item["no"].alpha = 0; self.binoculars_hud_item["data"].alpha = 0; self.binoculars_hud_item["profile"].alpha = 1; wait 0.05; continue; } self.binoculars_hud_item["no"].alpha = 1; self.binoculars_hud_item["data"].alpha = 1; self.binoculars_hud_item["profile"].alpha = 0; wait 0.05; } } } binocular_face_scanning_lines( var_0 ) { self endon( "stop_using_binoculars" ); self endon( "take_binoculars" ); self endon( "stop_scanning" ); self endon( "scanning_complete" ); self.binoculars_face_scanning_models = []; self.binoculars_face_scanning_models[0] = []; self.binoculars_face_scanning_models[1] = []; self.binoculars_face_scanning_models[0][0] = spawn( "script_model", var_0 gettagorigin( "J_Head" ) ); self.binoculars_face_scanning_models[0][0].angles = var_0 gettagangles( "J_Head" ); self.binoculars_face_scanning_models[0][0] setmodel( "cnd_facial_rcg_01_non_hvt" ); self.binoculars_face_scanning_models[0][0] linkto( var_0, "J_Head" ); self.binoculars_face_scanning_models[0][0] hideallparts(); self.binoculars_face_scanning_models[0][1] = spawn( "script_model", var_0 gettagorigin( "J_Head" ) ); self.binoculars_face_scanning_models[0][1].angles = var_0 gettagangles( "J_Head" ); self.binoculars_face_scanning_models[0][1] setmodel( "cnd_facial_rcg_02_non_hvt" ); self.binoculars_face_scanning_models[0][1] linkto( var_0, "J_Head" ); self.binoculars_face_scanning_models[0][1] hideallparts(); self.binoculars_face_scanning_models[0][2] = spawn( "script_model", var_0 gettagorigin( "J_Head" ) ); self.binoculars_face_scanning_models[0][2].angles = var_0 gettagangles( "J_Head" ); self.binoculars_face_scanning_models[0][2] setmodel( "cnd_facial_rcg_03_non_hvt" ); self.binoculars_face_scanning_models[0][2] linkto( var_0, "J_Head" ); self.binoculars_face_scanning_models[0][2] hideallparts(); self.binoculars_face_scanning_models[1][0] = spawn( "script_model", var_0 gettagorigin( "J_Head" ) ); self.binoculars_face_scanning_models[1][0].angles = var_0 gettagangles( "J_Head" ); self.binoculars_face_scanning_models[1][0] setmodel( "cnd_facial_rcg_01" ); self.binoculars_face_scanning_models[1][0] linkto( var_0, "J_Head" ); self.binoculars_face_scanning_models[1][0] hideallparts(); self.binoculars_face_scanning_models[1][1] = spawn( "script_model", var_0 gettagorigin( "J_Head" ) ); self.binoculars_face_scanning_models[1][1].angles = var_0 gettagangles( "J_Head" ); self.binoculars_face_scanning_models[1][1] setmodel( "cnd_facial_rcg_02" ); self.binoculars_face_scanning_models[1][1] linkto( var_0, "J_Head" ); self.binoculars_face_scanning_models[1][1] hideallparts(); self.binoculars_face_scanning_models[1][2] = spawn( "script_model", var_0 gettagorigin( "J_Head" ) ); self.binoculars_face_scanning_models[1][2].angles = var_0 gettagangles( "J_Head" ); self.binoculars_face_scanning_models[1][2] setmodel( "cnd_facial_rcg_03" ); self.binoculars_face_scanning_models[1][2] linkto( var_0, "J_Head" ); self.binoculars_face_scanning_models[1][2] hideallparts(); self.binoculars_hud_item["percentage"] = maps\_hud_util::createclientfontstring( "small", 1.3 ); self.binoculars_hud_item["percentage"].x = 203; self.binoculars_hud_item["percentage"].y = -150; self.binoculars_hud_item["percentage"].alignx = "right"; self.binoculars_hud_item["percentage"].aligny = "middle"; self.binoculars_hud_item["percentage"].horzalign = "center"; self.binoculars_hud_item["percentage"].vertalign = "middle"; self.binoculars_hud_item["percentage"].color = ( 1, 1, 1 ); self.binoculars_hud_item["percentage"].alpha = 1.0; self.binoculars_hud_item["percentage"].sort = self.binoculars_hud_item["reticle_scanning_frame"].sort + 10; self.binoculars_hud_item["percentage_bar"] = maps\_hud_util::createicon( "red_block", 1, 14 ); self.binoculars_hud_item["percentage_bar"] set_default_hud_parameters(); self.binoculars_hud_item["percentage_bar"].alignx = "left"; self.binoculars_hud_item["percentage_bar"].aligny = "bottom"; self.binoculars_hud_item["percentage_bar"].horzalign = "center"; self.binoculars_hud_item["percentage_bar"].vertalign = "middle"; self.binoculars_hud_item["percentage_bar"].x = 6; self.binoculars_hud_item["percentage_bar"].y = -144; self.binoculars_hud_item["percentage_bar"].alpha = 0.0; self.binoculars_hud_item["percentage_bar"].sort = self.binoculars_hud_item["reticle_scanning_frame"].sort - 10; thread binocular_status_update( &"CORNERED_SCANNING_DOT", 1 ); var_1 = 0; if ( isdefined( var_0.binocular_hvt ) && var_0.binocular_hvt ) var_1 = 1; var_2 = []; var_3 = getnumparts( self.binoculars_face_scanning_models[var_1][0].model ); for ( var_4 = 0; var_4 < var_3; var_4++ ) var_2[var_4] = getpartname( self.binoculars_face_scanning_models[var_1][0].model, var_4 ); var_5 = 8; var_6 = []; var_6[0] = 0; var_6[1] = 0; while ( var_2.size > 0 && isdefined( var_0 ) && bullettracepassed( self geteye(), var_0 gettagorigin( "J_Head" ), 0, undefined ) ) { if ( vectordot( anglestoforward( self getplayerangles() ), anglestoforward( var_0 gettagangles( "tag_eye" ) ) ) > 0.0 ) { if ( !common_scripts\utility::flag( "scan_target_not_facing" ) ) thread binocular_status_update( &"CORNERED_READY" ); common_scripts\utility::flag_set( "scan_target_not_facing" ); self notify( "stop_binocular_scan_loop_sound" ); if ( !isdefined( self.scan_loop_red_sound ) ) thread maps\cornered_audio::aud_binoculars( "scan_loop_red" ); for ( var_4 = 0; var_4 <= 1; var_4++ ) { self.binoculars_face_scanning_models[var_1][var_4 + 1] showpart( getpartname( self.binoculars_face_scanning_models[var_1][var_4 + 1].model, var_6[var_4] ) ); if ( var_6[var_4] >= var_5 ) self.binoculars_face_scanning_models[var_1][var_4 + 1] hidepart( getpartname( self.binoculars_face_scanning_models[var_1][var_4 + 1].model, var_6[var_4] - var_5 ) ); else self.binoculars_face_scanning_models[var_1][var_4 + 1] hidepart( getpartname( self.binoculars_face_scanning_models[var_1][var_4 + 1].model, getnumparts( self.binoculars_face_scanning_models[var_1][var_4 + 1].model ) + var_6[var_4] - var_5 ) ); var_6[var_4]++; if ( var_6[var_4] >= getnumparts( self.binoculars_face_scanning_models[var_1][var_4 + 1].model ) ) var_6[var_4] = 0; } wait 0.05; continue; } if ( common_scripts\utility::flag( "scan_target_not_facing" ) ) thread binocular_status_update( &"CORNERED_SCANNING_DOT", 1 ); common_scripts\utility::flag_clear( "scan_target_not_facing" ); if ( !isdefined( self.scan_loop_sound ) ) thread maps\cornered_audio::aud_binoculars( "scan_loop" ); self notify( "stop_binocular_scan_loop_red_sound" ); var_7 = randomint( var_2.size ); self.binoculars_face_scanning_models[var_1][0] showpart( var_2[var_7] ); self.binoculars_face_scanning_models[var_1][1] hideallparts(); self.binoculars_face_scanning_models[var_1][2] hideallparts(); var_2 = maps\_utility::array_remove_index( var_2, var_7 ); self.binoculars_hud_item["percentage_bar"] setshader( "red_block", int( 201 * ( 1.0 - var_2.size / var_3 ) ), self.binoculars_hud_item["percentage_bar"].height ); self.binoculars_hud_item["percentage_bar"].alpha = 1.0; self.binoculars_hud_item["percentage"] settext( int( 100 * ( 1.0 - var_2.size / var_3 ) ) ); wait 0.1; } if ( var_2.size == 0 ) { self notify( "binoculars_facial_scan_finished" ); thread binocular_status_update( &"CORNERED_IDENTIFIED" ); } else self notify( "stop_scanning" ); } binocular_face_scanning_lines_complete( var_0 ) { self endon( "stop_using_binoculars" ); self endon( "take_binoculars" ); self endon( "stop_scanning" ); wait( var_0 ); thread maps\cornered_audio::aud_binoculars( "seeker_move" ); if ( isdefined( self.binoculars_face_scanning_models ) ) { foreach ( var_2 in self.binoculars_face_scanning_models ) { foreach ( var_4 in var_2 ) var_4 delete(); } self.binoculars_face_scanning_models = undefined; } } binocular_face_scanning_data() { self endon( "stop_using_binoculars" ); self endon( "take_binoculars" ); self notify( "face_scanning_data" ); self endon( "face_scanning_data" ); var_0 = 35; var_1 = 1; var_2 = 0.75; for ( var_3 = 0; var_3 < var_0; var_3++ ) { if ( isdefined( self.binoculars_hud_item["profile_data_line_" + var_3] ) ) self.binoculars_hud_item["profile_data_line_" + var_3] destroy(); self.binoculars_hud_item["profile_data_line_" + var_3] = maps\_hud_util::createicon( "white", 1, 64 ); self.binoculars_hud_item["profile_data_line_" + var_3] set_default_hud_parameters(); self.binoculars_hud_item["profile_data_line_" + var_3].alignx = "center"; self.binoculars_hud_item["profile_data_line_" + var_3].aligny = "bottom"; self.binoculars_hud_item["profile_data_line_" + var_3].horzalign = "center"; self.binoculars_hud_item["profile_data_line_" + var_3].vertalign = "middle"; self.binoculars_hud_item["profile_data_line_" + var_3].x = 144 + var_3 * 2; self.binoculars_hud_item["profile_data_line_" + var_3].y = var_1; self.binoculars_hud_item["profile_data_line_" + var_3].color = ( 1, 1, 1 ); self.binoculars_hud_item["profile_data_line_" + var_3].alpha = var_2; self.binoculars_hud_item["profile_data_line_" + var_3].sort = self.binoculars_hud_item["reticle_scanning_frame"].sort - 1; } var_4 = randomfloatrange( -90.0, 90.0 ); var_5 = randomfloatrange( 10.0, 25.0 ); while ( !self.binoculars_scanning_complete && !self.binoculars_stop_scanning ) { var_4 = var_4 + var_5 * 4; if ( common_scripts\utility::flag( "scan_target_not_facing" ) ) { if ( randomint( 10 ) > 8 ) var_5 = randomfloatrange( 10.0, 25.0 ); for ( var_3 = 0; var_3 < var_0; var_3++ ) { self.binoculars_hud_item["profile_data_line_" + var_3].height = int( clamp( 6 * ( sin( var_4 - var_5 * ( var_3 + 1 ) ) + 1.0 ) + pow( randomfloatrange( 0.0, 6.0 ), 2 ), 0, 64 ) ); self.binoculars_hud_item["profile_data_line_" + var_3] setshader( "white", self.binoculars_hud_item["profile_data_line_" + var_3].width, self.binoculars_hud_item["profile_data_line_" + var_3].height ); } } else { for ( var_3 = 0; var_3 < var_0; var_3++ ) { self.binoculars_hud_item["profile_data_line_" + var_3].height = int( clamp( ( sin( var_4 - var_5 * ( var_3 + 1 ) ) + 1.0 + randomfloatrange( 0.0, 0.1 ) ) * 32, 0, 64 ) ); self.binoculars_hud_item["profile_data_line_" + var_3] setshader( "white", self.binoculars_hud_item["profile_data_line_" + var_3].width, self.binoculars_hud_item["profile_data_line_" + var_3].height ); } } wait 0.05; } while ( !self.binoculars_stop_scanning ) { for ( var_3 = 0; var_3 < var_0; var_3++ ) { self.binoculars_hud_item["profile_data_line_" + var_3].height = self.binoculars_hud_item["profile_data_line_" + var_3].height * randomfloatrange( 0.8, 0.95 ); if ( self.binoculars_hud_item["profile_data_line_" + var_3].height < 1 ) { self.binoculars_hud_item["profile_data_line_" + var_3].alpha = 0.0; continue; } if ( self.binoculars_hud_item["profile_data_line_" + var_3].y != var_1 ) self.binoculars_hud_item["profile_data_line_" + var_3].y = var_1 + self.binoculars_hud_item["profile_data_line_" + var_3].height; self.binoculars_hud_item["profile_data_line_" + var_3] setshader( "white", self.binoculars_hud_item["profile_data_line_" + var_3].width, int( self.binoculars_hud_item["profile_data_line_" + var_3].height ) ); } wait 0.05; } for ( var_3 = 0; var_3 < var_0; var_3++ ) { self.binoculars_hud_item["profile_data_line_" + var_3] destroy(); self.binoculars_hud_item["profile_data_line_" + var_3] = undefined; } } binoculars_monitor_scanning_button() { self.show_binoc_scan_hint = 1; for (;;) { while ( !self attackbuttonpressed() ) common_scripts\utility::waitframe(); self notify( "scanning" ); self.show_binoc_scan_hint = 0; while ( self attackbuttonpressed() ) common_scripts\utility::waitframe(); self notify( "stop_scanning" ); self.show_binoc_scan_hint = 1; } } binoculars_monitor_scanning() { self endon( "stop_using_binoculars" ); self endon( "take_binoculars" ); thread binoculars_monitor_scanning_button(); for (;;) { while ( !self attackbuttonpressed() || self.current_binocular_zoom_level == 0 ) wait 0.05; if ( isdefined( self.binoculars_scan_target ) && isdefined( self.binocular_target.linked_to_ent ) && self.binocular_target.linked_to_ent == self.binoculars_scan_target ) { var_0 = self.binoculars_scan_target; if ( !bullettracepassed( self geteye(), var_0 gettagorigin( "J_Head" ), 0, undefined ) ) { wait 0.05; continue; } thread binoculars_lock_to_target( var_0 ); thread scan_blur(); while ( self attackbuttonpressed() && isdefined( var_0 ) && isdefined( self.binoculars_linked_to_target ) && self.binoculars_linked_to_target && !target_isincircle( self.binocular_target, self, getdvarint( "cg_fov" ), 50 ) && bullettracepassed( self geteye(), var_0 gettagorigin( "J_Head" ), 0, undefined ) ) wait 0.05; if ( !bullettracepassed( self geteye(), var_0 gettagorigin( "J_Head" ), 0, undefined ) ) { wait 0.05; var_0 = undefined; } if ( !self attackbuttonpressed() || !isdefined( var_0 ) ) { binoculars_unlock_from_target(); self notify( "stop_scanning" ); continue; } self notify( "scanning_target" ); self.binoculars_scanning_complete = 0; self.binoculars_stop_scanning = 0; thread binocular_face_scanning( var_0 ); thread binocular_face_scanning_lines( var_0 ); thread binocular_face_scanning_data(); var_1 = common_scripts\utility::waittill_any_return( "binoculars_facial_scan_finished", "stop_scanning" ); self notify( "stop_binocular_scan_loop_sound" ); self notify( "stop_binocular_scan_loop_red_sound" ); var_2 = 0.0; if ( var_1 == "binoculars_facial_scan_finished" ) { self notify( "scanning_complete" ); self.binoculars_scanning_complete = 1; if ( isdefined( var_0.binocular_facial_profile ) ) self.binoculars_hud_item["profile"] setshader( var_0.binocular_facial_profile, self.binoculars_hud_item["profile"].width, self.binoculars_hud_item["profile"].height ); else { if ( !isdefined( self.binoculars_hud_item["no"] ) ) self.binoculars_hud_item["no"] = maps\_hud_util::createclientfontstring( "small", 1.3 ); self.binoculars_hud_item["no"].x = 178; self.binoculars_hud_item["no"].y = -107; self.binoculars_hud_item["no"].alignx = "center"; self.binoculars_hud_item["no"].aligny = "middle"; self.binoculars_hud_item["no"].horzalign = "center"; self.binoculars_hud_item["no"].vertalign = "middle"; self.binoculars_hud_item["no"].color = ( 1, 1, 1 ); self.binoculars_hud_item["no"].alpha = 1.0; self.binoculars_hud_item["no"].sort = self.binoculars_hud_item["reticle_scanning_frame"].sort + 10; self.binoculars_hud_item["no"] settext( &"CORNERED_NO" ); self.binoculars_hud_item["match"] = maps\_hud_util::createclientfontstring( "small", 1.3 ); self.binoculars_hud_item["match"].x = 178; self.binoculars_hud_item["match"].y = -95; self.binoculars_hud_item["match"].alignx = "center"; self.binoculars_hud_item["match"].aligny = "middle"; self.binoculars_hud_item["match"].horzalign = "center"; self.binoculars_hud_item["match"].vertalign = "middle"; self.binoculars_hud_item["match"].color = ( 1, 1, 1 ); self.binoculars_hud_item["match"].alpha = 1.0; self.binoculars_hud_item["match"].sort = self.binoculars_hud_item["reticle_scanning_frame"].sort + 10; self.binoculars_hud_item["match"] settext( &"CORNERED_MATCH" ); self.binoculars_hud_item["profile"].alpha = 0; } while ( self attackbuttonpressed() && var_2 < 0.5 ) { var_2 = var_2 + 0.05; wait 0.05; } } if ( var_2 >= 0.5 ) { self notify( "scanning_upload_verified" ); if ( isdefined( var_0.binocular_hvt ) && var_0.binocular_hvt ) { self notify( "hvt_confirmed" ); common_scripts\utility::flag_set( "hvt_confirmed" ); thread maps\cornered_audio::aud_binoculars( "positive" ); } else thread maps\cornered_audio::aud_binoculars( "negative" ); thread binocular_face_scanning_lines_complete( 0.5 ); while ( self attackbuttonpressed() && bullettracepassed( self geteye(), var_0 gettagorigin( "J_Head" ), 0, undefined ) ) wait 0.05; } else self notify( "stop_scanning" ); if ( isdefined( self.binoculars_face_scanning_models ) ) { foreach ( var_4 in self.binoculars_face_scanning_models ) { foreach ( var_6 in var_4 ) var_6 delete(); } self.binoculars_face_scanning_models = undefined; } self.binoculars_stop_scanning = 1; common_scripts\utility::flag_clear( "scan_target_not_facing" ); self.binoculars_hud_item["profile"] destroy(); self.binoculars_hud_item["profile"] = undefined; if ( isdefined( self.binoculars_hud_item["no"] ) ) { self.binoculars_hud_item["no"] destroy(); self.binoculars_hud_item["no"] = undefined; } if ( isdefined( self.binoculars_hud_item["match"] ) ) { self.binoculars_hud_item["match"] destroy(); self.binoculars_hud_item["match"] = undefined; } if ( isdefined( self.binoculars_hud_item["data"] ) ) { self.binoculars_hud_item["data"] destroy(); self.binoculars_hud_item["data"] = undefined; } if ( isdefined( self.binoculars_hud_item["percentage_bar"] ) ) { self.binoculars_hud_item["percentage_bar"] destroy(); self.binoculars_hud_item["percentage_bar"] = undefined; } if ( isdefined( self.binoculars_hud_item["percentage"] ) ) { self.binoculars_hud_item["percentage"] destroy(); self.binoculars_hud_item["percentage"] = undefined; } binoculars_unlock_from_target(); continue; } self waittill( "stop_scanning" ); } } static_overlay() { self.binoculars_hud_item["static"] = newclienthudelem( self ); self.binoculars_hud_item["static"].x = 0; self.binoculars_hud_item["static"].y = 0; self.binoculars_hud_item["static"].alignx = "left"; self.binoculars_hud_item["static"].aligny = "top"; self.binoculars_hud_item["static"].horzalign = "fullscreen"; self.binoculars_hud_item["static"].vertalign = "fullscreen"; self.binoculars_hud_item["static"] setshader( "overlay_static", 640, 480 ); self.binoculars_hud_item["static"].alpha = 0.75; self.binoculars_hud_item["static"].sort = -3; self.binoculars_hud_item["static"] fadeovertime( 0.05 ); self.binoculars_hud_item["static"].alpha = 0.9; wait 0.05; self.binoculars_hud_item["static"] fadeovertime( 0.15 ); self.binoculars_hud_item["static"].alpha = 0.0; wait 0.15; self.binoculars_hud_item["static"] destroy(); self.binoculars_hud_item["static"] = undefined; } monitor_binoculars_zoom() { self endon( "stop_using_binoculars" ); self endon( "take_binoculars" ); self.current_binocular_zoom_level = self.binoculars_default_zoom_level; self.binocular_zoom_levels = 2; self.first_zoom_level_fov = 2; for (;;) { self waittill( "binocular_zoom" ); if ( !self attackbuttonpressed() || self.current_binocular_zoom_level == 0 ) { self.binocular_zooming = 1; if ( self.current_binocular_zoom_level == 0 ) { self notify( "binoculars_zoom_lerp" ); self enableslowaim( 0.5, 0.3 ); thread maps\cornered_audio::aud_binoculars( "zoom_in" ); thread zoom_blur( 1.4 ); thread max_zoom_dof(); self.binoculars_zooming = 1; self lerpfov( self.first_zoom_level_fov, 1.5 ); for ( var_0 = 1; var_0 <= 30.0; var_0++ ) { self.binoculars_hud_item["zoom_level_1"] settext( "" + ( var_0 * 10 + 20 ) ); self.binoculars_hud_item["zoom_level_2"] settext( "" + ( var_0 * 10 + 10 ) ); self.binoculars_hud_item["zoom_level_3"] settext( "" + var_0 * 10 ); self.binoculars_hud_item["zoom_level_4"] settext( "" + common_scripts\utility::ter_op( var_0 * 10 - 10 >= 0, var_0 * 10 - 10, "" ) ); self.binoculars_hud_item["zoom_level_5"] settext( "" + common_scripts\utility::ter_op( var_0 * 10 - 20 >= 0, var_0 * 10 - 20, "" ) ); wait 0.05; } self.binoculars_zooming = 0; self notify( "binoculars_done_zooming" ); } else { maps\_art::dof_disable_script( 0.0 ); self disableslowaim(); thread maps\cornered_audio::aud_binoculars( "zoom_out" ); setsaveddvar( "cg_fov", 65 ); } self.current_binocular_zoom_level++; if ( self.current_binocular_zoom_level >= self.binocular_zoom_levels ) { self.current_binocular_zoom_level = 0; self.binoculars_hud_item["zoom_level_1"] settext( "20" ); self.binoculars_hud_item["zoom_level_2"] settext( "10" ); self.binoculars_hud_item["zoom_level_3"] settext( "0" ); self.binoculars_hud_item["zoom_level_4"] settext( "" ); self.binoculars_hud_item["zoom_level_5"] settext( "" ); } else { self.binoculars_hud_item["zoom_level_1"] settext( "320" ); self.binoculars_hud_item["zoom_level_2"] settext( "310" ); self.binoculars_hud_item["zoom_level_3"] settext( "300" ); self.binoculars_hud_item["zoom_level_4"] settext( "290" ); self.binoculars_hud_item["zoom_level_5"] settext( "280" ); } self.binocular_zooming = 0; } } } zoom_blur( var_0 ) { setblur( 10, 0.1 ); wait 0.1; setblur( 0, var_0 ); } scan_blur() { setblur( 5, 0.0 ); common_scripts\utility::waittill_any( "stop_scanning", "stop_using_binoculars", "take_binoculars", "binoculars_lerp_dof" ); setblur( 0, 0.0 ); } zoom_lerp_dof() { self notify( "binoculars_lerp_dof" ); self endon( "binoculars_lerp_dof" ); maps\_art::dof_enable_script( 50, 100, 10, 100, 200, 6, 0.0 ); maps\_art::dof_disable_script( 0.5 ); } max_zoom_dof() { maps\_art::dof_enable_script( level.dof["base"]["current"]["nearStart"], level.dof["base"]["current"]["nearEnd"], 10, 11000, 12000, 10, 0.1 ); } binoculars_zoom_display() { self.binoculars_hud_item["zoom_level_1"] = maps\_hud_util::createclientfontstring( "small", 0.8 ); self.binoculars_hud_item["zoom_level_1"].x = 63; self.binoculars_hud_item["zoom_level_1"].y = -223; self.binoculars_hud_item["zoom_level_1"].alignx = "right"; self.binoculars_hud_item["zoom_level_1"].aligny = "middle"; self.binoculars_hud_item["zoom_level_1"].horzalign = "left"; self.binoculars_hud_item["zoom_level_1"].vertalign = "middle"; self.binoculars_hud_item["zoom_level_1"].color = ( 1, 1, 1 ); self.binoculars_hud_item["zoom_level_1"].alpha = 0.5; self.binoculars_hud_item["zoom_level_1"] setvalue( 20 ); self.binoculars_hud_item["zoom_level_2"] = maps\_hud_util::createclientfontstring( "small", 0.9 ); self.binoculars_hud_item["zoom_level_2"].x = 63; self.binoculars_hud_item["zoom_level_2"].y = -112; self.binoculars_hud_item["zoom_level_2"].alignx = "right"; self.binoculars_hud_item["zoom_level_2"].aligny = "middle"; self.binoculars_hud_item["zoom_level_2"].horzalign = "left"; self.binoculars_hud_item["zoom_level_2"].vertalign = "middle"; self.binoculars_hud_item["zoom_level_2"].color = ( 1, 1, 1 ); self.binoculars_hud_item["zoom_level_2"].alpha = 0.5; self.binoculars_hud_item["zoom_level_2"] setvalue( 10 ); self.binoculars_hud_item["zoom_level_3"] = maps\_hud_util::createclientfontstring( "small", 1.2 ); self.binoculars_hud_item["zoom_level_3"].x = 64; self.binoculars_hud_item["zoom_level_3"].y = -1; self.binoculars_hud_item["zoom_level_3"].alignx = "right"; self.binoculars_hud_item["zoom_level_3"].aligny = "middle"; self.binoculars_hud_item["zoom_level_3"].horzalign = "left"; self.binoculars_hud_item["zoom_level_3"].vertalign = "middle"; self.binoculars_hud_item["zoom_level_3"].color = ( 1, 1, 1 ); self.binoculars_hud_item["zoom_level_3"].alpha = 1.0; self.binoculars_hud_item["zoom_level_3"] setvalue( 0 ); self.binoculars_hud_item["zoom_level_4"] = maps\_hud_util::createclientfontstring( "small", 0.9 ); self.binoculars_hud_item["zoom_level_4"].x = 63; self.binoculars_hud_item["zoom_level_4"].y = 109; self.binoculars_hud_item["zoom_level_4"].alignx = "right"; self.binoculars_hud_item["zoom_level_4"].aligny = "middle"; self.binoculars_hud_item["zoom_level_4"].horzalign = "left"; self.binoculars_hud_item["zoom_level_4"].vertalign = "middle"; self.binoculars_hud_item["zoom_level_4"].color = ( 1, 1, 1 ); self.binoculars_hud_item["zoom_level_4"].alpha = 0.5; self.binoculars_hud_item["zoom_level_4"] settext( "" ); self.binoculars_hud_item["zoom_level_5"] = maps\_hud_util::createclientfontstring( "small", 0.8 ); self.binoculars_hud_item["zoom_level_5"].x = 63; self.binoculars_hud_item["zoom_level_5"].y = 220; self.binoculars_hud_item["zoom_level_5"].alignx = "right"; self.binoculars_hud_item["zoom_level_5"].aligny = "middle"; self.binoculars_hud_item["zoom_level_5"].horzalign = "left"; self.binoculars_hud_item["zoom_level_5"].vertalign = "middle"; self.binoculars_hud_item["zoom_level_5"].color = ( 1, 1, 1 ); self.binoculars_hud_item["zoom_level_5"].alpha = 0.333; self.binoculars_hud_item["zoom_level_5"] settext( "" ); } binoculars_angles_display() { self endon( "stop_using_binoculars" ); self endon( "take_binoculars" ); self.binoculars_hud_item["angles_seconds_symbol"] = maps\_hud_util::createclientfontstring( "small", 1.2 ); self.binoculars_hud_item["angles_seconds_symbol"].x = -18; self.binoculars_hud_item["angles_seconds_symbol"].y = -25; self.binoculars_hud_item["angles_seconds_symbol"].alignx = "right"; self.binoculars_hud_item["angles_seconds_symbol"].aligny = "top"; self.binoculars_hud_item["angles_seconds_symbol"].horzalign = "center"; self.binoculars_hud_item["angles_seconds_symbol"].vertalign = "top"; self.binoculars_hud_item["angles_seconds_symbol"].color = ( 1, 1, 1 ); self.binoculars_hud_item["angles_seconds_symbol"].alpha = 1.0; self.binoculars_hud_item["angles_seconds_symbol"].glowcolor = ( 1, 1, 1 ); self.binoculars_hud_item["angles_seconds_symbol"].glowalpha = 0.0; self.binoculars_hud_item["angles_seconds_symbol"] settext( "\"" ); self.binoculars_hud_item["angles_seconds"] = maps\_hud_util::createclientfontstring( "small", 1.2 ); self.binoculars_hud_item["angles_seconds"].x = -23; self.binoculars_hud_item["angles_seconds"].y = -25; self.binoculars_hud_item["angles_seconds"].alignx = "right"; self.binoculars_hud_item["angles_seconds"].aligny = "top"; self.binoculars_hud_item["angles_seconds"].horzalign = "center"; self.binoculars_hud_item["angles_seconds"].vertalign = "top"; self.binoculars_hud_item["angles_seconds"].color = ( 1, 1, 1 ); self.binoculars_hud_item["angles_seconds"].alpha = 1.0; self.binoculars_hud_item["angles_seconds"].glowcolor = ( 1, 1, 1 ); self.binoculars_hud_item["angles_seconds"].glowalpha = 0.0; self.binoculars_hud_item["angles_minutes_symbol"] = maps\_hud_util::createclientfontstring( "small", 1.2 ); self.binoculars_hud_item["angles_minutes_symbol"].x = -43; self.binoculars_hud_item["angles_minutes_symbol"].y = -25; self.binoculars_hud_item["angles_minutes_symbol"].alignx = "right"; self.binoculars_hud_item["angles_minutes_symbol"].aligny = "top"; self.binoculars_hud_item["angles_minutes_symbol"].horzalign = "center"; self.binoculars_hud_item["angles_minutes_symbol"].vertalign = "top"; self.binoculars_hud_item["angles_minutes_symbol"].color = ( 1, 1, 1 ); self.binoculars_hud_item["angles_minutes_symbol"].alpha = 1.0; self.binoculars_hud_item["angles_minutes_symbol"].glowcolor = ( 1, 1, 1 ); self.binoculars_hud_item["angles_minutes_symbol"].glowalpha = 0.0; self.binoculars_hud_item["angles_minutes_symbol"] settext( "'" ); self.binoculars_hud_item["angles_minutes"] = maps\_hud_util::createclientfontstring( "small", 1.2 ); self.binoculars_hud_item["angles_minutes"].x = -46; self.binoculars_hud_item["angles_minutes"].y = -25; self.binoculars_hud_item["angles_minutes"].alignx = "right"; self.binoculars_hud_item["angles_minutes"].aligny = "top"; self.binoculars_hud_item["angles_minutes"].horzalign = "center"; self.binoculars_hud_item["angles_minutes"].vertalign = "top"; self.binoculars_hud_item["angles_minutes"].color = ( 1, 1, 1 ); self.binoculars_hud_item["angles_minutes"].alpha = 1.0; self.binoculars_hud_item["angles_minutes"].glowcolor = ( 1, 1, 1 ); self.binoculars_hud_item["angles_minutes"].glowalpha = 0.0; self.binoculars_hud_item["angles_degree_symbol"] = maps\_hud_util::createclientfontstring( "small", 1.3 ); self.binoculars_hud_item["angles_degree_symbol"].x = -67; self.binoculars_hud_item["angles_degree_symbol"].y = -27; self.binoculars_hud_item["angles_degree_symbol"].alignx = "center"; self.binoculars_hud_item["angles_degree_symbol"].aligny = "top"; self.binoculars_hud_item["angles_degree_symbol"].horzalign = "center"; self.binoculars_hud_item["angles_degree_symbol"].vertalign = "top"; self.binoculars_hud_item["angles_degree_symbol"].color = ( 1, 1, 1 ); self.binoculars_hud_item["angles_degree_symbol"].alpha = 1.0; self.binoculars_hud_item["angles_degree_symbol"].glowcolor = ( 1, 1, 1 ); self.binoculars_hud_item["angles_degree_symbol"].glowalpha = 0.0; self.binoculars_hud_item["angles_degree_symbol"] settext( &"CORNERED_BINOCULARS_DEGREE_SYMBOL" ); self.binoculars_hud_item["angles_degrees"] = maps\_hud_util::createclientfontstring( "small", 1.2 ); self.binoculars_hud_item["angles_degrees"].x = -70; self.binoculars_hud_item["angles_degrees"].y = -25; self.binoculars_hud_item["angles_degrees"].alignx = "right"; self.binoculars_hud_item["angles_degrees"].aligny = "top"; self.binoculars_hud_item["angles_degrees"].horzalign = "center"; self.binoculars_hud_item["angles_degrees"].vertalign = "top"; self.binoculars_hud_item["angles_degrees"].color = ( 1, 1, 1 ); self.binoculars_hud_item["angles_degrees"].alpha = 1.0; self.binoculars_hud_item["angles_degrees"].glowcolor = ( 1, 1, 1 ); self.binoculars_hud_item["angles_degrees"].glowalpha = 0.0; self.binoculars_hud_item["heading"] = maps\_hud_util::createclientfontstring( "small", 1.0 ); self.binoculars_hud_item["heading"].x = 0; self.binoculars_hud_item["heading"].y = -17; self.binoculars_hud_item["heading"].alignx = "center"; self.binoculars_hud_item["heading"].aligny = "top"; self.binoculars_hud_item["heading"].horzalign = "center"; self.binoculars_hud_item["heading"].vertalign = "top"; self.binoculars_hud_item["heading"].color = ( 1, 1, 1 ); self.binoculars_hud_item["heading"].alpha = 1.0; self.binoculars_hud_item["heading"].glowcolor = ( 1, 1, 1 ); self.binoculars_hud_item["heading"].glowalpha = 0.0; var_0 = getnorthyaw(); for (;;) { var_1 = abs( angleclamp( 0 - self getplayerangles()[1] ) - var_0 ); var_2 = ( var_1 - int( var_1 ) ) * 60.0; var_3 = ( var_2 - int( var_2 ) ) * 60.0; var_4 = "" + int( var_2 ); if ( var_2 < 10 ) var_4 = "0" + int( var_2 ); var_5 = "" + int( var_3 ); if ( var_3 < 10 ) var_5 = "0" + int( var_3 ); self.binoculars_hud_item["angles_seconds"] settext( var_5 ); self.binoculars_hud_item["angles_minutes"] settext( var_4 ); self.binoculars_hud_item["angles_degrees"] settext( int( var_1 ) ); if ( var_1 > 337.5 || var_1 < 22.5 ) self.binoculars_hud_item["heading"] settext( "N" ); else if ( var_1 < 67.5 ) self.binoculars_hud_item["heading"] settext( "NE" ); else if ( var_1 < 112.5 ) self.binoculars_hud_item["heading"] settext( "E" ); else if ( var_1 < 157.5 ) self.binoculars_hud_item["heading"] settext( "SE" ); else if ( var_1 < 202.5 ) self.binoculars_hud_item["heading"] settext( "S" ); else if ( var_1 < 247.5 ) self.binoculars_hud_item["heading"] settext( "SW" ); else if ( var_1 < 292.5 ) self.binoculars_hud_item["heading"] settext( "W" ); else self.binoculars_hud_item["heading"] settext( "NW" ); wait 0.05; } } binocular_reticle_target_reaction() { self endon( "stop_using_binoculars" ); self endon( "take_binoculars" ); var_0 = 0; var_1 = 0; var_2 = 1; var_3 = 1; var_4 = 0; var_5 = undefined; for (;;) { if ( ( !isdefined( self.binocular_zooming ) || isdefined( self.binocular_zooming ) && !self.binocular_zooming ) && ( !self.binocular_target islinked() || !self attackbuttonpressed() ) ) { if ( isdefined( self.binoculars_trace ) && isdefined( self.binoculars_scan_target ) ) { if ( !isdefined( var_5 ) || var_5 != self.binoculars_scan_target ) { var_4 = 0; if ( self.binocular_target islinked() ) self.binocular_target unlink(); self.binocular_target.origin = self.binoculars_scan_target gettagorigin( "tag_eye" ) - ( 0, 0, 3 ); self.binocular_target.angles = self.binoculars_scan_target gettagangles( "tag_eye" ); self.binocular_target linkto( self.binoculars_scan_target, "tag_eye" ); self.binocular_target.linked_to_ent = self.binoculars_scan_target; thread binoculars_remove_target_on_death( self.binoculars_scan_target ); var_5 = self.binoculars_scan_target; } } else { var_4 = 1; var_5 = undefined; } } wait 0.05; } } binoculars_pip_init() { level.pip = level.player newpip(); level.pip.enable = 0; } binoculars_pip_enable() { level.pip.enableshadows = 1; level.pip.tag = "tag_origin"; level.pip.width = 194; level.pip.height = 193; level.pip.x = 320 - level.pip.width / 2; level.pip.y = 240 - level.pip.height / 2; if ( maps\_utility::is_gen4() ) { level.pip.rendertotexture = 1; self.binoculars_hud_item["pip"] = maps\_hud_util::createicon( "pip_scene_overlay", int( level.pip.width ), int( level.pip.height ) ); self.binoculars_hud_item["pip"] set_default_hud_parameters(); self.binoculars_hud_item["pip"].alignx = "center"; self.binoculars_hud_item["pip"].aligny = "middle"; self.binoculars_hud_item["pip"].alpha = 1; self.binoculars_hud_item["pip"].sort = self.binoculars_hud_item["pip"].sort - 200; self.binoculars_hud_item["pip"].foreground = 0; } else level.pip.rendertotexture = 0; if ( isdefined( level.pip.entity ) ) { level.pip.entity delete(); level.pip.entity = undefined; } level.pip.entity = spawn( "script_model", self geteye() ); level.pip.entity setmodel( "tag_origin" ); level.pip.entity.angles = self getplayerangles(); level.pip.entity linktoplayerview( self, "tag_origin", ( distance( self.binocular_target.origin, self geteye() ) - 300, 0, 0 ), ( 0, 0, 0 ), 0 ); level.pip.freecamera = 1; level.pip.tag = "tag_origin"; level.pip.fov = 5; level.pip.enable = 1; thread binoculars_pip_update_position(); } binoculars_pip_update_position() { level.pip endon( "pip_disabled" ); while ( isdefined( self.binocular_target ) ) { level.pip.entity delete(); level.pip.entity = spawn( "script_model", self geteye() ); level.pip.entity setmodel( "tag_origin" ); level.pip.entity.angles = self getplayerangles(); level.pip.entity linktoplayerview( self, "tag_origin", ( distance( self.binocular_target.origin, self geteye() ) - 300, 0, 0 ), ( 0, 0, 0 ), 0 ); wait 0.05; } } binoculars_pip_disable() { level.pip notify( "pip_disabled" ); level.pip.enable = 0; if ( isdefined( self.binoculars_hud_item["pip"] ) ) { self.binoculars_hud_item["pip"] destroy(); self.binoculars_hud_item["pip"] = undefined; } if ( isdefined( level.pip.entity ) ) { level.pip.entity delete(); level.pip.entity = undefined; } } set_default_hud_parameters() { self.alignx = "left"; self.aligny = "top"; self.horzalign = "center"; self.vertalign = "middle"; self.hidewhendead = 0; self.hidewheninmenu = 1; self.sort = 205; self.foreground = 1; self.alpha = 0.65; }