747 lines
21 KiB
Plaintext
747 lines
21 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
maps\mp\mp_strikezone_precache::main();
|
|
maps\createart\mp_strikezone_art::main();
|
|
maps\mp\mp_strikezone_fx::main();
|
|
maps\mp\_teleport::main();
|
|
maps\mp\_teleport::teleport_set_minimap_for_zone( "start", "compass_map_mp_strikezone" );
|
|
maps\mp\_teleport::teleport_set_minimap_for_zone( "destroyed", "compass_map_mp_strikezone_after" );
|
|
maps\mp\_teleport::teleport_set_a10_splines_for_zone( "start", [ 1, 2, 3, 4 ], [ 2, 1, 4, 3 ] );
|
|
maps\mp\_teleport::teleport_set_a10_splines_for_zone( "destroyed", [ 5, 6, 7, 8 ], [ 6, 5, 8, 7 ] );
|
|
maps\mp\_teleport::teleport_origin_use_offset( 0 );
|
|
maps\mp\_teleport::teleport_set_pre_func( ::pre_teleport, "destroyed" );
|
|
maps\mp\_teleport::teleport_set_post_func( ::post_teleport, "destroyed" );
|
|
maps\mp\_teleport::teleport_set_post_func( ::pre_teleport_to_start, "start" );
|
|
level.donuke_fx = ::donuke_fx_strikezone;
|
|
level thread sunflare();
|
|
level thread flip_sky();
|
|
level thread init_destroyed_zone();
|
|
level.mapcustomcratefunc = ::strikezonecustomcratefunc;
|
|
level.mapcustomkillstreakfunc = ::strikezonecustomkillstreakfunc;
|
|
level.mapcustombotkillstreakfunc = ::strikezonecustombotkillstreakfunc;
|
|
maps\mp\_load::main();
|
|
thread maps\mp\_fx::func_glass_handler();
|
|
common_scripts\utility::flag_init( "nuke_event_active" );
|
|
level.vision_set_stage = 0;
|
|
setdvar( "r_reactiveMotionWindAmplitudeScale", 0.3 );
|
|
setdvar( "r_reactiveMotionWindFrequencyScale", 0.5 );
|
|
setdvar( "r_lightGridEnableTweaks", 1 );
|
|
setdvar( "r_lightGridIntensity", 1.33 );
|
|
maps\mp\_utility::setdvar_cg_ng( "r_diffuseColorScale", 1.639, 1.5 );
|
|
maps\mp\_utility::setdvar_cg_ng( "r_specularcolorscale", 2.5, 3 );
|
|
setdvar( "r_ssaorejectdepth", 1500 );
|
|
setdvar( "r_ssaofadedepth", 1200 );
|
|
game["attackers"] = "allies";
|
|
game["defenders"] = "axis";
|
|
game["allies_outfit"] = "urban";
|
|
game["axis_outfit"] = "desert";
|
|
|
|
if ( level.ps3 )
|
|
setdvar( "sm_sunShadowScale", "0.6" );
|
|
else if ( level.xenon )
|
|
setdvar( "sm_sunShadowScale", "0.7" );
|
|
|
|
level.pre_org = common_scripts\utility::getstruct( "world_origin_pre", "targetname" );
|
|
level.post_org = common_scripts\utility::getstruct( "world_origin_post", "targetname" );
|
|
level.mid_z = 0;
|
|
|
|
if ( isdefined( level.post_org ) && isdefined( level.pre_org ) )
|
|
level.mid_z = ( level.pre_org.origin[2] + level.post_org.origin[2] ) / 2;
|
|
|
|
common_scripts\utility::flag_init( "teleport_to_destroyed" );
|
|
common_scripts\utility::flag_init( "start_fog_fade_in" );
|
|
common_scripts\utility::flag_init( "start_fog_fade_out" );
|
|
level thread nuke_activate_at_end_of_match();
|
|
level thread fall_objects();
|
|
level thread ronnie_talks();
|
|
level thread connect_watch();
|
|
level thread initextracollision();
|
|
}
|
|
|
|
initextracollision()
|
|
{
|
|
var_0 = getent( "clip128x128x128", "targetname" );
|
|
var_1 = spawn( "script_model", ( 1488, 448, 34992 ) );
|
|
var_1.angles = ( 0, 0, 0 );
|
|
var_1 clonebrushmodeltoscriptmodel( var_0 );
|
|
var_2 = getent( "clip256x256x8", "targetname" );
|
|
var_3 = spawn( "script_model", ( -1589.73, 167.941, 34846 ) );
|
|
var_3.angles = ( 7.64427, 359.534, -40.4325 );
|
|
var_3 clonebrushmodeltoscriptmodel( var_2 );
|
|
|
|
if ( maps\mp\_utility::is_gen4() )
|
|
{
|
|
var_4 = getent( "player256x256x128", "targetname" );
|
|
var_5 = spawn( "script_model", ( 1091.96, -1218, 35088 ) );
|
|
var_5.angles = ( 0, 60, -90 );
|
|
var_5 clonebrushmodeltoscriptmodel( var_4 );
|
|
var_6 = getent( "player256x256x128", "targetname" );
|
|
var_7 = spawn( "script_model", ( 1314.31, -727.89, 34967.3 ) );
|
|
var_7.angles = ( 345.369, 351.123, 18.9223 );
|
|
var_7 clonebrushmodeltoscriptmodel( var_6 );
|
|
var_8 = getent( "player256x256x128", "targetname" );
|
|
var_9 = spawn( "script_model", ( 955.98, 485.142, 34875.7 ) );
|
|
var_9.angles = ( 336.26, 306.702, -30.7675 );
|
|
var_9 clonebrushmodeltoscriptmodel( var_8 );
|
|
}
|
|
}
|
|
|
|
flip_sky()
|
|
{
|
|
var_0 = getent( "after_sky", "targetname" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_0.angles = ( 180, 0, 0 );
|
|
}
|
|
|
|
connect_watch()
|
|
{
|
|
for (;;)
|
|
{
|
|
level waittill( "connected", var_0 );
|
|
|
|
if ( isdefined( level.vision_set_stage ) )
|
|
var_0 visionsetstage( level.vision_set_stage, 0.1 );
|
|
|
|
var_0 thread watch_throwing_knife();
|
|
playfxontagforclients( level._effect["vfx_sunflare"], level.sunflare_ent, "tag_origin", var_0 );
|
|
}
|
|
}
|
|
|
|
watch_throwing_knife()
|
|
{
|
|
self endon( "disconnect" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "grenade_fire", var_0, var_1 );
|
|
|
|
if ( isdefined( var_1 ) && isdefined( var_0 ) && var_1 == "throwingknife_mp" )
|
|
level thread watch_throwing_knife_land( var_0 );
|
|
}
|
|
}
|
|
|
|
watch_throwing_knife_land( var_0 )
|
|
{
|
|
var_0 endon( "death" );
|
|
var_0 waittill( "missile_stuck", var_1 );
|
|
level notify( "hit_by_knife", var_0, var_1 );
|
|
}
|
|
|
|
sunflare()
|
|
{
|
|
var_0 = ( -2827.98, -25930.5, 12914.9 );
|
|
var_1 = ( 270, 0, 0 );
|
|
var_2 = ( -1831.25, -12492.3, 41020.6 );
|
|
var_3 = ( 270, 0, 0 );
|
|
level.sunflare_ent = spawn( "script_model", var_0 );
|
|
level.sunflare_ent setmodel( "tag_origin" );
|
|
level.sunflare_ent.angles = var_1;
|
|
common_scripts\utility::flag_wait( "teleport_setup_complete" );
|
|
|
|
if ( level.teleport_zone_current != "start" )
|
|
{
|
|
level.sunflare_ent.origin = var_2;
|
|
level.sunflare_ent.angles = var_3;
|
|
}
|
|
|
|
for (;;)
|
|
{
|
|
level waittill( "teleport_to_zone", var_4 );
|
|
|
|
if ( var_4 == "start" )
|
|
{
|
|
level.sunflare_ent.origin = var_0;
|
|
level.sunflare_ent.angles = var_1;
|
|
continue;
|
|
}
|
|
|
|
level.sunflare_ent.origin = var_2;
|
|
level.sunflare_ent.angles = var_3;
|
|
}
|
|
}
|
|
|
|
init_destroyed_zone()
|
|
{
|
|
common_scripts\utility::flag_wait( "teleport_setup_complete" );
|
|
|
|
if ( level.teleport_zone_current != "start" )
|
|
destroyed_fire_fx();
|
|
}
|
|
|
|
donuke_fx_strikezone()
|
|
{
|
|
if ( !level.allow_level_killstreak )
|
|
return 0;
|
|
|
|
game["player_holding_level_killstrek"] = 0;
|
|
disable_strikezone_rog();
|
|
thread maps\mp\_teleport::teleport_to_zone( "destroyed" );
|
|
return 1;
|
|
}
|
|
|
|
pre_teleport()
|
|
{
|
|
level notify( "nuke_start" );
|
|
common_scripts\utility::flag_set( "nuke_event_active" );
|
|
level.allow_level_killstreak = 0;
|
|
level.disable_killcam = 1;
|
|
maps\mp\gametypes\_damage::erasefinalkillcam();
|
|
|
|
if ( !maps\mp\_utility::levelflag( "post_game_level_event_active" ) )
|
|
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( level.nuketimer - 2 );
|
|
|
|
var_0 = 2;
|
|
var_1 = 0.2;
|
|
var_2 = 0.1;
|
|
level thread nuke_earthquake( 0.3, var_0 );
|
|
thread nuke_fx_exploders( 2 );
|
|
level.nuke_fx_start_time = gettime();
|
|
common_scripts\utility::exploder( 60 );
|
|
level thread nuke_sounds();
|
|
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( var_0 );
|
|
|
|
foreach ( var_4 in level.players )
|
|
{
|
|
if ( isdefined( var_4.setspawnpoint ) )
|
|
var_4 maps\mp\perks\_perkfunctions::deleteti( var_4.setspawnpoint );
|
|
}
|
|
|
|
level thread nuke_slow_motion( 0.1, var_1 + var_2, 0 );
|
|
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( var_1 );
|
|
level thread nuke_earthquake( 0.5, 5 );
|
|
level thread rumble_all_players( "hijack_plane_medium" );
|
|
level thread nuke_ground_tilt();
|
|
|
|
if ( !maps\mp\_utility::levelflag( "post_game_level_event_active" ) && isdefined( level.nukeinfo.team ) )
|
|
level thread maps\mp\killstreaks\_nuke::nukedeath();
|
|
|
|
visionsetnaked( "mp_strikezone_flash", var_2 );
|
|
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( var_2 );
|
|
wait 0.1;
|
|
common_scripts\utility::exploder( 70, undefined, level.nuke_fx_start_time / 1000 );
|
|
common_scripts\utility::flag_set( "teleport_to_destroyed" );
|
|
}
|
|
|
|
post_teleport()
|
|
{
|
|
level thread maps\mp\killstreaks\_nuke::nukecleartimer();
|
|
level thread updatemlgcameras();
|
|
|
|
if ( level.gametype == "grnd" )
|
|
level thread maps\mp\gametypes\grnd::cyclezones();
|
|
|
|
var_0 = 0.5;
|
|
var_1 = 2.5;
|
|
var_2 = 3.5;
|
|
nuke_blur( 3, 0.1 );
|
|
common_scripts\utility::flag_set( "start_fog_fade_out" );
|
|
visionsetnaked( "mp_strikezone_explosion", var_0 );
|
|
common_scripts\utility::waitframe();
|
|
level thread nuke_slow_motion( 0, var_0, 1 );
|
|
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( var_0 );
|
|
nuke_blur( 0, var_1 + 2 );
|
|
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( var_1 );
|
|
visionsetnaked( "mp_strikezone_after", var_2 );
|
|
setexpfog( 431.294, 2011.37, 0.54, 0.54, 0.54, 1, 0.5, var_2, 0.92, 0.69, 0.44, 1, ( -0.05, -0.89, 0.44 ), 0, 100, 0.625, 1, 140.897, 114.026 );
|
|
wait( var_2 );
|
|
visionsetnaked( "", 0 );
|
|
clearfog( 0 );
|
|
level.disable_killcam = 0;
|
|
common_scripts\utility::flag_clear( "nuke_event_active" );
|
|
}
|
|
|
|
updatemlgcameras()
|
|
{
|
|
if ( level.gameended )
|
|
return;
|
|
|
|
foreach ( var_1 in level.players )
|
|
{
|
|
if ( isai( var_1 ) )
|
|
continue;
|
|
|
|
var_1 setmlgcameradefaults( 0, level.camera5pos, level.camera5ang );
|
|
var_1 setmlgcameradefaults( 1, level.camera6pos, level.camera6ang );
|
|
var_1 setmlgcameradefaults( 2, level.camera7pos, level.camera7ang );
|
|
var_1 setmlgcameradefaults( 3, level.camera8pos, level.camera8ang );
|
|
}
|
|
}
|
|
|
|
pre_teleport_to_start()
|
|
{
|
|
visionsetnaked( "", 0 );
|
|
}
|
|
|
|
nuke_activate_at_end_of_match()
|
|
{
|
|
level endon( "nuke_start" );
|
|
common_scripts\utility::flag_wait( "teleport_setup_complete" );
|
|
level waittill( "spawning_intermission" );
|
|
|
|
if ( level.allow_level_killstreak )
|
|
level thread nuke_end_of_match();
|
|
}
|
|
|
|
nuke_end_of_match()
|
|
{
|
|
maps\mp\_utility::levelflagset( "post_game_level_event_active" );
|
|
visionsetnaked( "", 0.5 );
|
|
maps\mp\_teleport::teleport_to_zone( "destroyed" );
|
|
wait 5;
|
|
maps\mp\_utility::levelflagclear( "post_game_level_event_active" );
|
|
}
|
|
|
|
nuke_fx_exploders( var_0 )
|
|
{
|
|
if ( isdefined( var_0 ) && var_0 > 0 )
|
|
wait( var_0 );
|
|
|
|
common_scripts\utility::exploder( 2 );
|
|
wait 2;
|
|
destroyed_fire_fx();
|
|
wait 2.5;
|
|
common_scripts\utility::exploder( 19 );
|
|
wait 4.8;
|
|
common_scripts\utility::exploder( 23 );
|
|
}
|
|
|
|
destroyed_fire_fx()
|
|
{
|
|
exploder_with_connect_watch( 8, -2 );
|
|
}
|
|
|
|
exploder_with_connect_watch( var_0, var_1 )
|
|
{
|
|
common_scripts\utility::exploder( var_0, undefined, var_1 );
|
|
level thread exploder_connect_watch( var_0, var_1 );
|
|
}
|
|
|
|
exploder_connect_watch( var_0, var_1 )
|
|
{
|
|
for (;;)
|
|
{
|
|
level waittill( "connected", var_2 );
|
|
common_scripts\utility::exploder( var_0, var_2, var_1 );
|
|
}
|
|
}
|
|
|
|
set_vision_set_stage( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( var_1 ) )
|
|
var_1 = 1.0;
|
|
|
|
foreach ( var_3 in level.players )
|
|
var_3 visionsetstage( var_0, var_1 );
|
|
|
|
level.vision_set_stage = var_0;
|
|
}
|
|
|
|
set_all_players_undying( var_0 )
|
|
{
|
|
if ( !isdefined( level.players_undying ) )
|
|
level.players_undying = 0;
|
|
|
|
if ( var_0 == level.players_undying )
|
|
return;
|
|
|
|
if ( var_0 )
|
|
{
|
|
level.prev_modifyplayerdamage = level.modifyplayerdamage;
|
|
level.modifyplayerdamage = ::undying;
|
|
}
|
|
else
|
|
level.modifyplayerdamage = level.prev_modifyplayerdamage;
|
|
|
|
level.players_undying = var_0;
|
|
}
|
|
|
|
undying( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
|
|
{
|
|
if ( isdefined( var_0 ) )
|
|
return var_0.health - 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
nuke_slow_motion( var_0, var_1, var_2 )
|
|
{
|
|
setslowmotion( 1.0, 0.25, var_0 );
|
|
wait( var_1 );
|
|
setslowmotion( 0.25, 1, var_2 );
|
|
}
|
|
|
|
nuke_earthquake( var_0, var_1 )
|
|
{
|
|
var_2 = common_scripts\utility::getstructarray( "nuke_earthquake", "targetname" );
|
|
|
|
foreach ( var_4 in var_2 )
|
|
earthquake( var_0, var_1, var_4.origin, var_4.radius );
|
|
}
|
|
|
|
nuke_sounds()
|
|
{
|
|
var_0 = 40000;
|
|
var_1 = anglestoforward( ( 319.008, 265.869, 88.6746 ) );
|
|
var_2 = ( -3892.33, 1244.78, -156.711 );
|
|
var_3 = var_2 + var_1 * var_0;
|
|
playsoundatpos( var_3, "kem_launch" );
|
|
var_4 = 2;
|
|
var_5 = spawn( "script_model", var_3 );
|
|
var_5 setmodel( "tag_origin" );
|
|
var_5 common_scripts\utility::delaycall( 0.05, ::playsoundonmovingent, "kem_incoming" );
|
|
var_5 moveto( var_2, var_4 );
|
|
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( var_4 );
|
|
|
|
if ( !isdefined( level.nuke_soundobject ) )
|
|
{
|
|
level.nuke_soundobject = spawn( "script_origin", ( 0, 0, 1 ) );
|
|
level.nuke_soundobject hide();
|
|
}
|
|
|
|
level.nuke_soundobject playsound( "kem_explosion" );
|
|
}
|
|
|
|
nuke_ground_tilt()
|
|
{
|
|
var_0 = spawnstruct();
|
|
var_1 = spawnstruct();
|
|
var_2 = 0.2;
|
|
var_3 = 1;
|
|
var_4 = 20;
|
|
var_5 = spawn( "script_model", ( 0, 0, 0 ) );
|
|
var_5.angles = ( 0, 0, 0 );
|
|
|
|
foreach ( var_7 in level.players )
|
|
var_7 playersetgroundreferenceent( var_5 );
|
|
|
|
var_5 rotateto( ( var_4, 0, 0 ), var_2, 0, var_2 );
|
|
wait( var_2 );
|
|
var_5 rotateto( ( 0, 0, 0 ), var_3, 0, var_3 );
|
|
wait( var_3 );
|
|
|
|
foreach ( var_7 in level.players )
|
|
var_7 playersetgroundreferenceent( undefined );
|
|
|
|
var_5 delete();
|
|
}
|
|
|
|
nuke_blur( var_0, var_1 )
|
|
{
|
|
foreach ( var_3 in level.players )
|
|
var_3 setblurforplayer( var_0, var_1 );
|
|
}
|
|
|
|
rumble_all_players( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( var_1 ) )
|
|
var_1 = 0;
|
|
|
|
foreach ( var_3 in level.players )
|
|
{
|
|
if ( var_1 )
|
|
{
|
|
var_3 playrumblelooponentity( var_0 );
|
|
continue;
|
|
}
|
|
|
|
var_3 playrumbleonentity( var_0 );
|
|
}
|
|
|
|
if ( !var_1 )
|
|
return;
|
|
|
|
level waittill( "stop_rumble_loop" );
|
|
|
|
foreach ( var_3 in level.players )
|
|
var_3 stoprumble( var_0 );
|
|
}
|
|
|
|
stop_rumble_all_players()
|
|
{
|
|
level notify( "stop_rumble_loop" );
|
|
}
|
|
|
|
generic_swing_ents()
|
|
{
|
|
var_0 = [];
|
|
var_0["small"] = "mp_strikezone_chunk_sway_small";
|
|
var_0["large"] = "mp_strikezone_chunk_sway_large";
|
|
|
|
foreach ( var_3, var_2 in var_0 )
|
|
precachempanim( var_2 );
|
|
|
|
var_4 = getentarray( "generic_swing", "targetname" );
|
|
|
|
foreach ( var_6 in var_4 )
|
|
{
|
|
if ( !isdefined( var_6.angles ) )
|
|
var_6.angles = ( 0, 0, 0 );
|
|
|
|
var_7 = spawn( "script_model", var_6.origin );
|
|
var_7.angles = var_6.angles;
|
|
var_7 setmodel( "generic_prop_raven" );
|
|
var_6 linkto( var_7, "j_prop_1" );
|
|
var_8 = "small";
|
|
|
|
if ( isdefined( var_6.script_noteworthy ) && isdefined( var_0[var_6.script_noteworthy] ) )
|
|
var_8 = var_6.script_noteworthy;
|
|
|
|
var_7 scriptmodelplayanim( var_0[var_6.script_noteworthy] );
|
|
}
|
|
}
|
|
|
|
fall_objects()
|
|
{
|
|
var_0 = getentarray( "fall_object", "targetname" );
|
|
common_scripts\utility::array_thread( var_0, ::fall_object_init );
|
|
}
|
|
|
|
fall_object_init()
|
|
{
|
|
self.end = self;
|
|
var_0 = [];
|
|
|
|
if ( isdefined( self.target ) )
|
|
{
|
|
var_1 = common_scripts\utility::getstructarray( self.target, "targetname" );
|
|
set_default_script_noteworthy( var_1, "angle_ref" );
|
|
var_0 = common_scripts\utility::array_combine( var_0, var_1 );
|
|
var_2 = getentarray( self.target, "targetname" );
|
|
var_0 = common_scripts\utility::array_combine( var_0, var_2 );
|
|
}
|
|
|
|
if ( isdefined( self.script_linkto ) )
|
|
{
|
|
var_1 = common_scripts\utility::getstructarray( self.script_linkto, "script_linkname" );
|
|
set_default_script_noteworthy( var_1, "start" );
|
|
var_0 = common_scripts\utility::array_combine( var_0, var_1 );
|
|
var_2 = getentarray( self.script_linkto, "script_linkname" );
|
|
var_0 = common_scripts\utility::array_combine( var_0, var_2 );
|
|
}
|
|
|
|
foreach ( var_4 in var_0 )
|
|
{
|
|
if ( !isdefined( var_4.script_noteworthy ) )
|
|
continue;
|
|
|
|
switch ( var_4.script_noteworthy )
|
|
{
|
|
case "angle_ref":
|
|
self.end = var_4;
|
|
break;
|
|
case "start":
|
|
self.start = var_4;
|
|
break;
|
|
case "link":
|
|
var_4 linkto( self );
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
set_default_angles( var_0 );
|
|
|
|
if ( isdefined( self.start ) && isdefined( self.end ) )
|
|
thread fall_object_run();
|
|
}
|
|
|
|
set_default_script_noteworthy( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
var_1 = "";
|
|
|
|
if ( !isarray( var_0 ) )
|
|
var_0 = [ var_0 ];
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
if ( !isdefined( var_3.script_noteworthy ) )
|
|
var_3.script_noteworthy = var_1;
|
|
}
|
|
}
|
|
|
|
set_default_angles( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
var_1 = ( 0, 0, 0 );
|
|
|
|
if ( !isarray( var_0 ) )
|
|
var_0 = [ var_0 ];
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
if ( !isdefined( var_3.angles ) )
|
|
var_3.angles = var_1;
|
|
}
|
|
}
|
|
|
|
fall_object_run()
|
|
{
|
|
var_0 = self.origin;
|
|
var_1 = self.angles;
|
|
var_2 = transformmove( self.start.origin, self.start.angles, self.end.origin, self.end.angles, self.origin, self.angles );
|
|
self.origin = var_2["origin"];
|
|
self.angles = var_2["angles"];
|
|
common_scripts\utility::flag_wait( "start_fog_fade_out" );
|
|
wait( randomfloatrange( 0.8, 1.0 ) );
|
|
|
|
if ( isdefined( self.script_delay ) )
|
|
{
|
|
if ( self.script_delay < 0 )
|
|
self.script_delay = randomfloatrange( 30, 120 );
|
|
|
|
wait( self.script_delay );
|
|
}
|
|
|
|
playsoundatpos( self.origin, "cobra_helicopter_crash" );
|
|
var_3 = randomfloatrange( 300, 320 );
|
|
var_4 = distance( var_0, self.origin );
|
|
var_5 = var_4 / var_3;
|
|
self moveto( var_0, var_5, var_5, 0 );
|
|
|
|
if ( var_1 != self.angles )
|
|
self rotateto( var_1, var_5, 0, 0 );
|
|
|
|
wait( var_5 );
|
|
}
|
|
|
|
ronnie_talks()
|
|
{
|
|
var_0 = [];
|
|
var_0["low"] = [];
|
|
var_0["high"] = [];
|
|
var_0["high"][0] = "mp_strikezone_hdg_01";
|
|
var_0["high"][1] = "mp_strikezone_hdg_02";
|
|
var_0["high"][2] = "mp_strikezone_hdg_03";
|
|
var_0["high"][3] = "mp_strikezone_hdg_05";
|
|
var_0["high"][4] = "mp_strikezone_hdg_06";
|
|
var_0["high"][4] = "mp_strikezone_hdg_07";
|
|
var_0["high"][4] = "mp_strikezone_hdg_09";
|
|
var_0["low"][0] = "mp_strikezone_hdg_04";
|
|
var_0["low"][1] = "mp_strikezone_hdg_08";
|
|
var_0["low"][2] = "mp_strikezone_hdg_10";
|
|
var_1 = getentarray( "ronnie_talk_location", "targetname" );
|
|
common_scripts\utility::array_thread( var_1, ::ronnie_knife_watcher );
|
|
|
|
for (;;)
|
|
{
|
|
level waittill( "ronnie_speak", var_2 );
|
|
var_3 = common_scripts\utility::random( var_0[var_2.script_noteworthy] );
|
|
playsoundatpos( var_2.origin, var_3 );
|
|
}
|
|
}
|
|
|
|
ronnie_knife_watcher()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
level waittill( "hit_by_knife", var_0, var_1 );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
if ( var_0 istouching( self ) )
|
|
level notify( "ronnie_speak", self );
|
|
}
|
|
}
|
|
}
|
|
|
|
strikezonecustomcratefunc()
|
|
{
|
|
if ( !isdefined( game["player_holding_level_killstrek"] ) )
|
|
game["player_holding_level_killstrek"] = 0;
|
|
|
|
level.allow_level_killstreak = maps\mp\_utility::allowlevelkillstreaks();
|
|
|
|
if ( !level.allow_level_killstreak || game["player_holding_level_killstrek"] )
|
|
return;
|
|
|
|
maps\mp\killstreaks\_airdrop::addcratetype( "airdrop_assault", "nuke", 55, maps\mp\killstreaks\_airdrop::killstreakcratethink, maps\mp\killstreaks\_airdrop::get_friendly_crate_model(), maps\mp\killstreaks\_airdrop::get_enemy_crate_model(), &"KILLSTREAKS_HINTS_STRIKEZONE_ROG" );
|
|
level thread strikezone_rog_post_teleport_init();
|
|
}
|
|
|
|
strikezone_rog_post_teleport_init()
|
|
{
|
|
common_scripts\utility::flag_wait( "teleport_setup_complete" );
|
|
|
|
if ( level.teleport_allowed )
|
|
{
|
|
if ( level.allow_level_killstreak )
|
|
level thread watch_for_strikezone_rog_crate();
|
|
}
|
|
else
|
|
{
|
|
level.allow_level_killstreak = 0;
|
|
disable_strikezone_rog();
|
|
}
|
|
}
|
|
|
|
watch_for_strikezone_rog_crate()
|
|
{
|
|
for (;;)
|
|
{
|
|
level waittill( "createAirDropCrate", var_0 );
|
|
|
|
if ( isdefined( var_0 ) && isdefined( var_0.cratetype ) && var_0.cratetype == "nuke" )
|
|
{
|
|
disable_strikezone_rog();
|
|
var_1 = wait_for_capture( var_0 );
|
|
|
|
if ( !var_1 )
|
|
{
|
|
enable_strikezone_rog();
|
|
continue;
|
|
}
|
|
|
|
game["player_holding_level_killstrek"] = 1;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
wait_for_capture( var_0 )
|
|
{
|
|
var_1 = watch_for_air_drop_death( var_0 );
|
|
return !isdefined( var_1 );
|
|
}
|
|
|
|
watch_for_air_drop_death( var_0 )
|
|
{
|
|
var_0 endon( "captured" );
|
|
var_0 waittill( "death" );
|
|
waittillframeend;
|
|
return 1;
|
|
}
|
|
|
|
enable_strikezone_rog()
|
|
{
|
|
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "nuke", 55 );
|
|
}
|
|
|
|
disable_strikezone_rog()
|
|
{
|
|
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "nuke", 0 );
|
|
}
|
|
|
|
strikezonecustomkillstreakfunc()
|
|
{
|
|
|
|
}
|
|
|
|
strikezonecustombotkillstreakfunc()
|
|
{
|
|
|
|
}
|