// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool section_main() { maps\_utility::add_hint_string( "pickup_gun", &"LOKI_IN_YOUR_FACE", ::stop_in_your_face_hint ); } section_precache() { precacheitem( level.primary_weapon ); precachestring( &"LOKI_IN_YOUR_FACE" ); precachestring( &"LOKI_IN_YOUR_FACE_FAIL" ); precacheshellshock( "default_nosound" ); precachemodel( "space_module_2_dest_split_01" ); precachemodel( "space_module_2_dest_split_02" ); precachemodel( "space_ctc1" ); precachemodel( "space_ata_box" ); precachemodel( "space_esp1" ); precachemodel( "space_esp2" ); precachemodel( "space_module_2_dest" ); precachemodel( "vehicle_space_shuttle" ); precachemodel( "loki_truss_sail" ); precachemodel( "space_a25_ams" ); precachemodel( "loki_antenna_1" ); precachemodel( "loki_antenna_2" ); precachemodel( "loki_cargo_container_01" ); precachemodel( "loki_p6_battery" ); precachemodel( "space_exterior_airlock_entrance" ); precachemodel( "loki_exterior_round_hatch" ); precachemodel( "space_module_2" ); precachemodel( "space_module_5" ); precachemodel( "space_module_3" ); precachemodel( "space_module_2_panel_01" ); precachemodel( "space_esp2_combined_01" ); precachemodel( "space_esp2_combined_02" ); precachemodel( "space_esp2_combined_03" ); precachemodel( "space_esp2_combined_04" ); precachemodel( "space_module_2_dest_split_01_int" ); precachemodel( "space_module_2_dest_split_01_int_props_01" ); precachemodel( "space_module_2_dest_split_01_int_props_02" ); precachemodel( "space_solar_array_damage" ); precachemodel( "space_module_2_dest_split_02_int" ); precachemodel( "mp_dart_crate_01" ); precachemodel( "loki_crate_01" ); precachemodel( "space_solar_array_damage_posed" ); } section_flag_inits() { common_scripts\utility::flag_init( "gun_picked_up" ); common_scripts\utility::flag_init( "moving_cover_started" ); } moving_cover_start() { maps\loki_util::player_move_to_checkpoint_start( "moving_cover" ); maps\loki_util::spawn_allies(); level.allies[0] maps\_utility::set_force_color( "r" ); level.allies[1] maps\_utility::set_force_color( "g" ); level.allies[2] maps\_utility::set_force_color( "b" ); level.moving_cover_jumped = 1; level.player freezecontrols( 1 ); } moving_cover() { maps\loki_util::loki_autosave_by_name_silent( "moving_cover" ); maps\_utility::battlechatter_off( "allies" ); level.accuracy_ally = 1; level.accuracy_enemy = 1; maps\_utility::stop_exploder( "c1_sunflare" ); maps\_utility::stop_exploder( "blue_flare" ); common_scripts\utility::exploder( "c2_sunflare" ); common_scripts\utility::exploder( "mc_flare" ); thread maps\loki_fx::light_combat2_threads(); level.allow_movement = 1; level.allies[0].baseaccuracy = level.accuracy_ally; level.allies[1].baseaccuracy = level.accuracy_ally; level.allies[2].baseaccuracy = level.accuracy_ally; level thread moving_cover_main(); level.ground_ref_ent = spawn( "script_model", ( 0, 0, 0 ) ); level thread maps\loki_fx::set_motionblur(); level thread maps\loki_combat_two::moving_large_debris(); common_scripts\utility::exploder( "fiery_glow" ); common_scripts\utility::exploder( "mc_exp" ); common_scripts\utility::flag_wait( "moving_cover_done2" ); level thread maps\_utility::notify_delay( "stop_explosions", 30 ); } white_hide() { var_0 = getent( "face_explosion", "targetname" ); level.player maps\_hud_util::fade_out( 0.01, "white" ); wait 0.15; level.player maps\_hud_util::fade_in( 0.15, "white" ); } moving_cover_main() { common_scripts\utility::waitframe(); thread maps\loki_audio::sfx_moving_cover_2(); level.friendlyfiredisabled = 1; var_0 = common_scripts\utility::getstruct( "moving_cover_ally_0", "targetname" ); var_1 = common_scripts\utility::getstruct( "moving_cover_ally_1", "targetname" ); level.allies[0] stopanimscripted(); level.allies[1] stopanimscripted(); level.allies[0] forceteleport( var_0.origin, var_0.angles ); level.allies[1] forceteleport( var_1.origin, var_1.angles ); level.allies[0] setgoalpos( var_0.origin ); level.allies[1] setgoalpos( var_1.origin ); var_2 = maps\loki_combat_one::get_all_wave_guys( 1 ); var_2 = maps\_utility::array_merge( var_2, level.redshirts ); if ( isdefined( var_2 ) ) { var_2 = maps\_utility::array_removedead_or_dying( var_2 ); foreach ( var_4 in var_2 ) { if ( isdefined( var_4.magic_bullet_shield ) ) var_4 maps\_utility::stop_magic_bullet_shield(); var_4.diequietly = 1; var_4 kill(); } } if ( isdefined( level.moving_cover_jumped ) ) { level firstframe_moving_cover(); common_scripts\utility::waitframe(); level thread white_hide(); } var_6 = 12.5; var_7 = getent( "explosion_node2", "targetname" ); var_8 = maps\_utility::spawn_anim_model( "player_rig" ); level.player playerlinktodelta( var_8, "tag_player", 1, 0, 0, 0, 0, 1 ); level thread manage_control( var_8 ); common_scripts\utility::flag_set( "moving_cover_started" ); level.hitsail thread maps\_anim::anim_single_solo( level.hitsail, "explosion_part2_sail" ); common_scripts\utility::waitframe(); level.solar_array0 thread maps\_anim::anim_single_solo( level.solar_array0, "explosion_part2_solar0" ); level.solar_array1 thread maps\_anim::anim_single_solo( level.solar_array1, "explosion_part2_solar1" ); level.moving_cover_start_node thread maps\_anim::anim_single( level.moving_cover, "explosion_part2" ); level.moving_cover_opfor thread moving_cover_opfor_death_tracker(); level.moving_cover_start_node maps\_anim::anim_single_solo( var_8, "explosion_part2" ); level.allies[2] moving_cover_death(); level.player unlink(); var_8 delete(); level.friendlyfiredisabled = 0; common_scripts\utility::flag_set( "moving_cover_done2" ); maps\_utility::stop_exploder( "fiery_glow" ); common_scripts\utility::exploder( "big_dust" ); } moving_cover_lightsoff( var_0 ) { var_0 maps\_utility::ent_flag_clear( "lights_on" ); var_0 notify( "faux_death" ); } #using_animtree("generic_human"); moving_cover_opfor_death_tracker() { thread maps\loki_util::loki_drop_weapon( ( 7000, 0, 500 ) ); common_scripts\utility::flag_set( "no_steam_on_death" ); self waittill( "damage", var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 ); maps\loki_util::jkuprint( "HIT!!!" ); self setanim( %space_pain_1, 1, 0.2 ); if ( self.damagelocation != "neck" ) { wait 0.2; self waittill( "damage", var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 ); maps\loki_util::jkuprint( "HIT AGAIN!!!" ); } self startragdollfromimpact( "torso_lower", ( 3500, 0, 0 ) ); self stopanimscripted(); maps\loki_util::jkuprint( "DEAD!!!" ); self notify( "faux_death" ); } moving_cover_death( var_0 ) { self endon( "death" ); if ( isdefined( self.magic_bullet_shield ) ) maps\_utility::stop_magic_bullet_shield(); if ( isdefined( var_0 ) && var_0 ) { if ( isdefined( self ) ) self stopanimscripted(); if ( isdefined( self ) ) self safeteleport( self.origin + ( 0, 100, -1000 ), self.angles ); } if ( isalive( self ) ) self kill(); } take_control( var_0 ) { level notify( "take_control" ); level.player freezecontrols( 1 ); level.player hideviewmodel(); level.player disableweapons(); level thread maps\loki_combat_two::show_combat_two_intro_debris(); level thread animate_combat_two_intro_debris(); level thread delete_moving_cover_objects(); level thread hit_panel( var_0, 0.5, 0.5, 1, 0.0 ); level.player playrumbleonentity( "heavy_3s" ); level.moving_cover_opfor moving_cover_death( 1 ); common_scripts\utility::flag_clear( "no_steam_on_death" ); level thread maps\loki_combat_two::combat_two_intro_vignette( 0.5 ); level thread maps\loki_combat_two::play_helmet_light_damage( 6 ); var_0 maps\_utility::lerp_player_view_to_tag( level.player, "tag_camera", 0.05, 1, 0, 0, 0, 0 ); } animate_combat_two_intro_debris() { var_0 = getent( "combat_two_intro_debris_move_main", "script_noteworthy" ); var_0.animname = "combat_two_intro_debris"; var_0 maps\_utility::assign_animtree(); var_1 = getentarray( "combat_two_intro_debris_move", "script_noteworthy" ); foreach ( var_3 in var_1 ) var_3 linkto( var_0 ); level.moving_cover_start_node maps\_anim::anim_single_solo( var_0, "combat_two_intro_debris_move" ); } delete_moving_cover_objects() { level.cargo_container delete(); level.module_ext delete(); level.module_int delete(); level.module_int_props01 delete(); level.module_int_props02 delete(); level.space_shuttle delete(); level.ams delete(); level.antenna_2 delete(); level.p6_battery delete(); level.hitsail hidepart( "j_sail_001" ); level.solar_array0 delete(); level.solar_array0 = spawn( "script_model", ( 36277.5, -2451, 2014.5 ) ); level.solar_array0 setmodel( "space_solar_array_damage_posed" ); } firstframe_moving_cover( var_0 ) { if ( !isdefined( var_0 ) ) var_0 = 0; level.moving_cover_start_node = getent( "moving_cover_vignette", "targetname" ); level.moving_cover_obj1 = maps\_utility::spawn_anim_model( "moving_cover_obj1" ); level.moving_cover_obj1 maps\loki_util::spawn_and_link_models_to_tags( "combat_one_cleanup", undefined, var_0 ); level.moving_cover_opfor = maps\loki_util::spawn_space_ai_from_targetname( "enemy_moving_cover_final_new" ); level.moving_cover_opfor.animname = "moving_cover_opfor"; level.moving_cover = []; level.moving_cover["moving_cover_opfor"] = level.moving_cover_opfor; level.moving_cover["ally_2"] = level.allies[2]; level.moving_cover["moving_cover_obj1"] = level.moving_cover_obj1; level.hitsail.animname = "moving_cover_sail"; level.hitsail maps\_utility::assign_animtree(); level.hitsail thread maps\_anim::anim_first_frame_solo( level.hitsail, "explosion_part2_sail" ); level.solar_array0.animname = "moving_cover_solar0"; level.solar_array0 maps\_utility::assign_animtree(); level.solar_array0 thread maps\_anim::anim_first_frame_solo( level.solar_array0, "explosion_part2_solar0" ); level.solar_array1.animname = "moving_cover_solar1"; level.solar_array1 maps\_utility::assign_animtree(); level.solar_array1 thread maps\_anim::anim_first_frame_solo( level.solar_array1, "explosion_part2_solar1" ); level.allies[2] maps\_utility::gun_remove(); level.moving_cover_start_node maps\_anim::anim_first_frame( level.moving_cover, "explosion_part2" ); } manage_control( var_0 ) { level.player endon( "death" ); level.player freezecontrols( 1 ); level.player hideviewmodel(); level.player disableweapons(); wait 3.2; level thread smooth_moving_cover_look(); level.player freezecontrols( 0 ); level.player showviewmodel( 0 ); level.player enableweapons( 0 ); var_0 hide(); } smooth_moving_cover_look() { level endon( "take_control" ); level endon( "moving_cover_done2" ); level.player endon( "death" ); var_0 = gettime(); for (;;) { var_1 = level.player getnormalizedcameramovement(); if ( abs( var_1[0] ) > 0.15 || abs( var_1[1] ) > 0.15 ) break; common_scripts\utility::waitframe(); } var_2 = gettime(); var_3 = var_2 - var_0; if ( var_3 > 2000 ) { maps\loki_util::jkuprint( "no lerp " + var_3 ); level.player lerpviewangleclamp( 0, 0, 0, 45, 45, 20, 30 ); } else { maps\loki_util::jkuprint( "lerp " + var_3 ); level.player lerpviewangleclamp( 2, 1, 0.5, 45, 45, 20, 30 ); } } set_current( var_0, var_1 ) { level.player endon( "death" ); level endon( "stop_explosion_push" ); var_1 = var_1 * 1000; var_2 = var_1 / 50; var_3 = var_0 / var_2; for ( var_4 = 0; var_4 < var_2; var_4++ ) { setsaveddvar( "player_swimWaterCurrent", ( var_0, 0, 0 ) ); var_0 = var_0 - var_3; common_scripts\utility::waitframe(); } maps\loki_util::jkuprint( "push stopped" ); } ramp_up_accurracy( var_0, var_1 ) { self endon( "death" ); var_0 = var_0 * 1000; var_2 = var_0 / 50; var_3 = ( var_1 - self.baseaccuracy ) / var_2; wait 3; for ( var_4 = 0; var_4 < var_2; var_4++ ) { self.baseaccuracy = self.baseaccuracy + var_3; common_scripts\utility::waitframe(); } self.baseaccuracy = var_1; } stop_in_your_face_hint() { if ( common_scripts\utility::flag( "gun_picked_up" ) ) return 1; else return 0; } in_your_face() { level.player endon( "death" ); level endon( "gun_picked_up" ); for (;;) { var_0 = anglestoforward( level.player.angles ); var_1 = level.player.origin + 15 * var_0 + ( randomfloatrange( -10, 10 ), randomfloatrange( -10, 10 ), 55 ); magicbullet( "microtar_space", var_1, level.player.origin ); setdvar( "ui_deadquote", &"LOKI_IN_YOUR_FACE_FAIL" ); wait( randomfloatrange( 1, 2 ) ); } } wait_for_x_pressed() { level.player endon( "death" ); var_0 = 0; var_1 = 5; while ( !( var_0 > var_1 ) ) { var_0 = 0; while ( level.player usebuttonpressed() ) { if ( var_0 > var_1 ) break; var_0 = var_0 + 1; common_scripts\utility::waitframe(); } common_scripts\utility::waitframe(); } common_scripts\utility::flag_set( "gun_picked_up" ); level.player giveweapon( level.primary_weapon ); level.player switchtoweapon( level.primary_weapon ); level.player givemaxammo( level.primary_weapon ); } start_moving_cover( var_0, var_1, var_2 ) { var_3 = getentarray( "explosion_debris_col", "targetname" ); foreach ( var_5 in var_3 ) var_5 linkto( var_5 common_scripts\utility::get_target_ent() ); var_7 = var_1; for ( var_8 = 1; var_8 <= var_7; var_8++ ) { var_9 = getentarray( var_0 + var_8, "script_noteworthy" ); foreach ( var_11 in var_9 ) { var_11 moveto( var_11 common_scripts\utility::getstruct( var_11.target, "targetname" ).origin, var_2, 0, 0 ); var_11 rotatevelocity( ( randomfloatrange( -55, 55 ), randomfloatrange( -55, 55 ), randomfloatrange( -55, 55 ) ), 999 ); } } } start_moving_cover3( var_0, var_1, var_2 ) { var_3 = var_1; for ( var_4 = 1; var_4 <= var_3; var_4++ ) { var_5 = getentarray( var_0 + var_4, "script_noteworthy" ); foreach ( var_7 in var_5 ) { var_8 = getent( var_7.script_linkto, "targetname" ); var_7 linkto( var_8 ); } foreach ( var_7 in var_5 ) { var_8 = getent( var_7.script_linkto, "targetname" ); var_8 moveto( var_8 common_scripts\utility::getstruct( var_8.target, "targetname" ).origin, var_2 ); var_8 rotatevelocity( ( randomfloatrange( -5, 5 ), 0, randomfloatrange( -5, 5 ) ), 999 ); } } } node_test() { var_0 = getnode( "node_test", "targetname" ); for (;;) { maps\loki_util::jkuline( var_0.origin + ( -12, 0, 0 ), var_0.origin + ( 12, 0, 0 ) ); maps\loki_util::jkuline( var_0.origin + ( 0, -12, 0 ), var_0.origin + ( 0, 12, 0 ) ); maps\loki_util::jkuline( var_0.origin + ( 0, 0, -12 ), var_0.origin + ( 0, 0, 12 ) ); common_scripts\utility::waitframe(); } } ai_follow_cover( var_0, var_1 ) { self endon( "death" ); self endon( "stop_follow_cover" ); var_2 = var_0.origin - self.origin; for (;;) { var_3 = var_0.origin - var_2; self setgoalpos( var_3 ); if ( bullettracepassed( self.origin, var_3, 0, undefined ) ) maps\loki_util::jkuline( self.origin, var_3 ); else maps\loki_util::jkuline( self.origin, var_3, ( 1, 0, 0 ) ); if ( distance2d( self.origin, var_3 ) < var_1 - 50 ) { self.ignoreall = 0; maps\loki_util::jkuline( var_3 + ( -12, 0, 0 ), var_3 + ( 12, 0, 0 ) ); maps\loki_util::jkuline( var_3 + ( 0, -12, 0 ), var_3 + ( 0, 12, 0 ) ); maps\loki_util::jkuline( var_3 + ( 0, 0, -12 ), var_3 + ( 0, 0, 12 ) ); } else { self.ignoreall = 1; maps\loki_util::jkuline( var_3 + ( -12, 0, 0 ), var_3 + ( 12, 0, 0 ), ( 1, 0, 0 ) ); maps\loki_util::jkuline( var_3 + ( 0, -12, 0 ), var_3 + ( 0, 12, 0 ), ( 1, 0, 0 ) ); maps\loki_util::jkuline( var_3 + ( 0, 0, -12 ), var_3 + ( 0, 0, 12 ), ( 1, 0, 0 ) ); } common_scripts\utility::waitframe(); } } movement_input_think( var_0, var_1 ) { level.player endon( "death" ); level endon( "swept_take_control" ); for (;;) { var_2 = level.player getnormalizedmovement(); var_3 = ( var_2[1], var_2[0], var_2[2] ); maps\loki_util::jkuprint( var_2 ); var_4 = anglestoright( var_0.angles ) * ( var_2[1] * 100 ); var_5 = anglestoforward( var_0.angles ) * ( var_2[0] * 100 ); maps\loki_util::jkuline( var_0.origin, var_0.origin + ( var_4 + var_5 ), ( 0, 1, 1 ) ); maps\loki_util::jkuline( var_0.origin, var_0.origin + anglestoup( var_0.angles ) * 100, ( 0, 0, 1 ) ); if ( level.allow_movement ) { for ( var_6 = 0.05; length( var_2 ) > 0.1; var_2 = level.player getnormalizedmovement() ) { var_4 = anglestoright( var_0.angles ) * ( var_2[1] * 100 ); var_5 = anglestoforward( var_0.angles ) * ( var_2[0] * 100 ); maps\loki_util::jkuline( var_0.origin, var_0.origin + ( var_4 + var_5 ), ( 0, 1, 1 ) ); var_7 = length( var_2 ); if ( var_7 > 1 ) var_7 = 1; var_8 = anglestoright( var_0.angles ) * ( var_2[1] * ( var_6 * 2 * var_7 ) ); var_9 = anglestoforward( var_0.angles ) * ( var_2[0] * ( var_6 * 2 * var_7 ) ); var_10 = var_0.origin + var_8; if ( distance2d( var_10, var_1.origin ) <= 360 ) { var_0.origin = var_10; var_0 linkto( var_1, "tag_player" ); } else iprintln( "max distance reached" ); if ( var_6 != 1 ) var_6 = var_6 + 0.05; common_scripts\utility::waitframe(); var_3 = var_8; } while ( var_6 != 0.01 && length( var_2 ) < 0.1 ) { if ( var_6 != 0.01 ) var_6 = var_6 - 0.01; var_10 = var_0.origin + var_3 * ( var_6 * 2 ); if ( distance2d( var_10, var_1.origin ) <= 360 ) { var_0.origin = var_10; var_0 linkto( var_1, "tag_player" ); } common_scripts\utility::waitframe(); var_2 = level.player getnormalizedmovement(); } } common_scripts\utility::waitframe(); } } moving_cover_cleanup() { var_0 = getentarray( "moving_cover_cleanup", "script_noteworthy" ); maps\loki_util::jkuprint( var_0.size + ": moving cover ents cleaned up" ); maps\_utility::array_delete( var_0 ); } lastframe_moving_cover() { var_0 = getent( "moving_cover_vignette", "targetname" ); var_1 = maps\_utility::spawn_anim_model( "moving_cover_obj1" ); var_0 thread maps\_anim::anim_last_frame_solo( var_1, "explosion_part2" ); var_1 maps\loki_util::spawn_and_link_models_to_tags( "combat_one_cleanup" ); level.solar_array1.animname = "moving_cover_solar1"; level.solar_array1 maps\_utility::assign_animtree(); level.solar_array1 thread maps\_anim::anim_last_frame_solo( level.solar_array1, "explosion_part2_solar1" ); level thread delete_moving_cover_objects(); } hit_panel( var_0, var_1, var_2, var_3, var_4 ) { level.player endon( "death" ); if ( !isdefined( var_1 ) ) var_1 = 0.3; if ( !isdefined( var_2 ) ) var_2 = 0.5; if ( !isdefined( var_3 ) ) var_3 = 0.5; earthquake( var_1, var_2, level.player.origin, 1000 ); level.player shellshock( "default_nosound", var_3 ); if ( isdefined( var_4 ) && isalive( level.player ) ) { level.player.og_health = level.player.health; level.player.demigod = 1; maps\loki_util::jkuprint( "faux damage pre: " + level.player.health ); wait 0.1; level.player.demigod = 0; maps\loki_util::jkuprint( "faux damage post: " + level.player.health ); } } hit_panel_rumble( var_0 ) { var_0 playrumbleonentity( "light_1s" ); }