490 lines
14 KiB
Plaintext
490 lines
14 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
maps\mp\mp_fahrenheit_precache::main();
|
|
maps\createart\mp_fahrenheit_art::main();
|
|
maps\mp\mp_fahrenheit_fx::main();
|
|
precache();
|
|
maps\mp\_load::main();
|
|
common_scripts\utility::flag_init( "stop_dynamic_events" );
|
|
level.rainscriptables = [];
|
|
level.rainscriptables = getscriptablearray( "rain_scriptable", "targetname" );
|
|
level.round_start_fraction = 0;
|
|
level.round_end_fraction = 1;
|
|
level.storm_stage = 0;
|
|
level.stage_1_fraction = 0.4;
|
|
level.stage_2_fraction = 0.7;
|
|
var_0 = maps\mp\_utility::gettimelimit() * 60;
|
|
|
|
if ( var_0 <= 0 )
|
|
var_0 = 600;
|
|
|
|
level.assumed_match_length = var_0;
|
|
maps\mp\_compass::setupminimap( "compass_map_mp_fahrenheit" );
|
|
setdvar( "r_reactiveMotionWindAmplitudeScale", 0.5 );
|
|
setdvar( "r_reactiveMotionWindFrequencyScale", 0.5 );
|
|
|
|
if ( level.ps3 || level.xenon )
|
|
setdvar( "sm_sunShadowScale", "0.8" );
|
|
|
|
maps\mp\_utility::setdvar_cg_ng( "r_specularColorScale", 3, 9 );
|
|
maps\mp\_utility::setdvar_cg_ng( "r_diffuseColorScale", 1.6, 2.2 );
|
|
setdvar( "r_ssaorejectdepth", 1500 );
|
|
setdvar( "r_ssaofadedepth", 1200 );
|
|
setdvar( "r_sky_fog_intensity", "1" );
|
|
setdvar( "r_sky_fog_min_angle", "56.6766" );
|
|
setdvar( "r_sky_fog_max_angle", "75" );
|
|
setdvar( "r_lightGridEnableTweaks", 1 );
|
|
setdvar( "r_lightGridIntensity", 1.33 );
|
|
game["attackers"] = "allies";
|
|
game["defenders"] = "axis";
|
|
common_scripts\utility::flag_init( "begin_storm" );
|
|
level thread plant_anims();
|
|
common_scripts\utility::waitframe();
|
|
|
|
if ( maps\mp\_utility::isroundbased() )
|
|
compute_round_based_percentages( var_0 );
|
|
|
|
level thread sky_and_visionsets( level.assumed_match_length, level.round_start_fraction, level.round_end_fraction );
|
|
level thread connect_watch();
|
|
thread setupelevator();
|
|
level thread initextracollision();
|
|
}
|
|
|
|
initextracollision()
|
|
{
|
|
var_0 = getent( "clip128x128x8", "targetname" );
|
|
var_1 = spawn( "script_model", ( -2352, -1938, 512 ) );
|
|
var_1.angles = ( 0, 0, 0 );
|
|
var_1 clonebrushmodeltoscriptmodel( var_0 );
|
|
var_2 = getent( "clip32x32x256", "targetname" );
|
|
var_3 = spawn( "script_model", ( 176, -2420, 848 ) );
|
|
var_3.angles = ( 0, 0, 0 );
|
|
var_3 clonebrushmodeltoscriptmodel( var_2 );
|
|
var_4 = getent( "clip32x32x256", "targetname" );
|
|
var_5 = spawn( "script_model", ( 176, -2452, 848 ) );
|
|
var_5.angles = ( 0, 0, 0 );
|
|
var_5 clonebrushmodeltoscriptmodel( var_4 );
|
|
var_6 = getent( "clip32x32x256", "targetname" );
|
|
var_7 = spawn( "script_model", ( 666, -1824, 868 ) );
|
|
var_7.angles = ( 0, 0, 0 );
|
|
var_7 clonebrushmodeltoscriptmodel( var_6 );
|
|
var_8 = getent( "clip256x256x8", "targetname" );
|
|
var_9 = spawn( "script_model", ( -1372, -3232, 784 ) );
|
|
var_9.angles = ( 0, 0, 0 );
|
|
var_9 clonebrushmodeltoscriptmodel( var_8 );
|
|
var_10 = getent( "clip64x64x256", "targetname" );
|
|
var_11 = spawn( "script_model", ( -1928, 624, 680 ) );
|
|
var_11.angles = ( 0, 0, -90 );
|
|
var_11 clonebrushmodeltoscriptmodel( var_10 );
|
|
var_12 = getent( "clip256x256x8", "targetname" );
|
|
var_13 = spawn( "script_model", ( -1808, 760, 648 ) );
|
|
var_13.angles = ( 0, 0, 0 );
|
|
var_13 clonebrushmodeltoscriptmodel( var_12 );
|
|
var_14 = spawn( "trigger_radius", ( -1216, 80, 496 ), 0, 864, 110 );
|
|
var_14.radius = 864;
|
|
var_14.height = 110;
|
|
var_14.angles = ( 0, 0, 0 );
|
|
var_14.targetname = "gryphonDeath";
|
|
var_15 = spawn( "trigger_radius", ( 576, -3104, 312 ), 0, 2240, 75 );
|
|
var_15.radius = 2240;
|
|
var_15.height = 75;
|
|
var_15.angles = ( 0, 0, 0 );
|
|
var_15.targetname = "gryphonDeath";
|
|
var_16 = spawn( "trigger_radius", ( -1080, -4136, 520 ), 0, 176, 528 );
|
|
var_16.radius = 176;
|
|
var_16.height = 528;
|
|
var_16.angles = ( 0, 0, 0 );
|
|
var_16.targetname = "gryphonDeath";
|
|
var_17 = spawn( "trigger_radius", ( -1184, -3808, 416 ), 0, 176, 96 );
|
|
var_17.radius = 176;
|
|
var_17.height = 96;
|
|
var_17.angles = ( 0, 0, 0 );
|
|
var_17.targetname = "gryphonDeath";
|
|
var_18 = spawn( "trigger_radius", ( 448, -2144, 896 ), 0, 400, 128 );
|
|
var_18.radius = 400;
|
|
var_18.height = 128;
|
|
var_18.angles = ( 0, 0, 0 );
|
|
var_18.targetname = "antiFoliage";
|
|
level thread watchantifoliage( var_18 );
|
|
level thread maps\mp\_utility::killtrigger( ( -194, 198, 352 ), 700, 256 );
|
|
level thread maps\mp\_utility::killtrigger( ( -2148, -340, 718 ), 96, 6 );
|
|
}
|
|
|
|
watchantifoliage( var_0 )
|
|
{
|
|
level endon( "game_ended" );
|
|
|
|
for (;;)
|
|
{
|
|
foreach ( var_2 in level.players )
|
|
{
|
|
wait 0.05;
|
|
|
|
if ( !isdefined( var_2 ) )
|
|
continue;
|
|
|
|
if ( var_2 istouching( var_0 ) )
|
|
{
|
|
if ( isdefined( var_2.wasinantifoliage ) && var_2.wasinantifoliage )
|
|
continue;
|
|
|
|
var_2 setignorefoliagesightingme( 1 );
|
|
var_2.wasinantifoliage = 1;
|
|
continue;
|
|
}
|
|
|
|
if ( isdefined( var_2.wasinantifoliage ) && var_2.wasinantifoliage )
|
|
{
|
|
var_2 setignorefoliagesightingme( 0 );
|
|
var_2.wasinantifoliage = 0;
|
|
}
|
|
}
|
|
|
|
wait 0.1;
|
|
}
|
|
}
|
|
|
|
precache()
|
|
{
|
|
|
|
}
|
|
|
|
setupelevator()
|
|
{
|
|
if ( level.gametype == "horde" )
|
|
return;
|
|
|
|
var_0 = spawnstruct();
|
|
var_0.name = "elevator";
|
|
var_0.doors = [];
|
|
var_0.doors["floor1"] = [ "e_door_floor1_", "e_door_elevator_1_" ];
|
|
var_0.doors["floor2"] = [ "e_door_floor2_", "e_door_elevator_2_" ];
|
|
var_0.doors["elevator"] = [ "e_door_elevator_1_", "e_door_elevator_2_" ];
|
|
var_0.doormovedist = 35;
|
|
var_0.buttons = "elevator_button";
|
|
var_0.trigblockname = "elevator_door_checker";
|
|
maps\mp\_elevator::init_elevator( var_0 );
|
|
}
|
|
|
|
compute_round_based_percentages( var_0 )
|
|
{
|
|
var_1 = maps\mp\_utility::getwatcheddvar( "roundlimit" );
|
|
var_2 = maps\mp\_utility::getwatcheddvar( "winlimit" );
|
|
|
|
if ( var_2 > 0 )
|
|
{
|
|
level.assumed_match_length = var_2 * var_0;
|
|
|
|
if ( maps\mp\_utility::isfirstround() )
|
|
var_3 = 0;
|
|
else
|
|
var_3 = max( game["roundsWon"]["allies"], game["roundsWon"]["axis"] );
|
|
|
|
level.round_start_fraction = var_3 / var_2;
|
|
level.round_end_fraction = ( var_3 + 1 ) / var_2;
|
|
}
|
|
else if ( var_1 > 0 )
|
|
{
|
|
level.assumed_match_length = var_1 * var_0;
|
|
level.round_start_fraction = game["roundsPlayed"] / var_1;
|
|
level.round_end_fraction = ( game["roundsPlayed"] + 1 ) / var_1;
|
|
}
|
|
}
|
|
|
|
plant_anims()
|
|
{
|
|
level.plants = getscriptablearray( "storm_plant", "targetname" );
|
|
level waittill( "storm_stage_1" );
|
|
plant_set_stage_directional( "stage_1", 180, 6, 1 );
|
|
}
|
|
|
|
plant_set_stage_directional( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = anglestoforward( ( 0, var_1, 0 ) );
|
|
var_5 = anglestoright( ( 0, var_1, 0 ) );
|
|
var_6 = undefined;
|
|
var_7 = undefined;
|
|
|
|
foreach ( var_9 in level.plants )
|
|
{
|
|
var_10 = disttoline( var_9.origin, ( 0, 0, 0 ), var_5 );
|
|
|
|
if ( lrtest( var_9.origin, ( 0, 0, 0 ), var_5 ) == 2 )
|
|
var_10 = var_10 * -1;
|
|
|
|
if ( !isdefined( var_6 ) || var_10 < var_6 )
|
|
var_6 = var_10;
|
|
|
|
if ( !isdefined( var_7 ) || var_10 > var_7 )
|
|
var_7 = var_10;
|
|
|
|
var_9.temp_dist = var_10;
|
|
}
|
|
|
|
foreach ( var_9 in level.plants )
|
|
{
|
|
var_13 = ( var_9.temp_dist - var_6 ) / ( var_7 - var_6 );
|
|
var_14 = var_2 * var_13;
|
|
|
|
if ( isdefined( var_3 ) && var_3 > 0 )
|
|
var_14 = var_14 + randomfloatrange( 0, var_3 );
|
|
|
|
level thread plant_set_stage( var_9, var_0, var_14 );
|
|
}
|
|
}
|
|
|
|
plant_set_stage( var_0, var_1, var_2 )
|
|
{
|
|
if ( isdefined( var_2 ) && var_2 > 0 )
|
|
wait( var_2 );
|
|
|
|
var_0 setscriptablepartstate( "storm_plant", var_1 );
|
|
}
|
|
|
|
rainfxstage( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = 0;
|
|
|
|
if ( var_0 > 2 )
|
|
var_0 = 0;
|
|
|
|
if ( isdefined( level.rainscriptables ) )
|
|
{
|
|
foreach ( var_2 in level.rainscriptables )
|
|
var_2 setscriptablepartstate( 0, var_0 );
|
|
}
|
|
}
|
|
|
|
visiontest()
|
|
{
|
|
wait 20;
|
|
var_0 = 0;
|
|
var_1 = 2;
|
|
var_2 = -1;
|
|
level.skydome = getent( "skydome", "targetname" );
|
|
var_0 = var_0 + 1;
|
|
|
|
if ( var_0 >= var_1 )
|
|
var_0 = 0;
|
|
|
|
iprintlnbold( "CHANGING VISIONSETS to:" + var_0 );
|
|
|
|
foreach ( var_4 in level.players )
|
|
var_4 visionsetstage( int( min( 1, var_0 ) ), 3 );
|
|
|
|
level.skydome rotatepitch( var_2 * 45, 3 );
|
|
var_2 = var_2 * -1;
|
|
rainfxstage( 1 );
|
|
wait 6;
|
|
}
|
|
|
|
fx_test()
|
|
{
|
|
var_0 = [];
|
|
var_0 = getscriptablearray( "rain_scriptable", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
var_0[0] setscriptablepartstate( 0, 0 );
|
|
wait 5;
|
|
var_0[0] setscriptablepartstate( 0, 1 );
|
|
wait 5;
|
|
var_0[0] setscriptablepartstate( 0, 2 );
|
|
wait 5;
|
|
var_0[0] setscriptablepartstate( 0, 3 );
|
|
wait 5;
|
|
}
|
|
}
|
|
|
|
sky_and_visionsets( var_0, var_1, var_2 )
|
|
{
|
|
level.volmods = [];
|
|
|
|
if ( common_scripts\utility::flag( "stop_dynamic_events" ) )
|
|
return;
|
|
|
|
level endon( "stop_dynamic_events" );
|
|
var_3 = 0;
|
|
var_4 = 10;
|
|
maps\mp\_utility::gameflagwait( "prematch_done" );
|
|
level.storm_stage = 0;
|
|
var_5 = var_1;
|
|
|
|
if ( var_1 < level.stage_1_fraction )
|
|
{
|
|
foreach ( var_7 in level.players )
|
|
var_7 visionsetstage( int( min( 1, level.storm_stage ) ), 0.1 );
|
|
|
|
var_9 = level.stage_1_fraction * var_0 - var_5 * var_0;
|
|
wait( var_9 );
|
|
var_5 = level.stage_1_fraction;
|
|
}
|
|
|
|
if ( var_1 < level.stage_2_fraction )
|
|
{
|
|
level notify( "storm_stage_1" );
|
|
level.storm_stage = 1;
|
|
common_scripts\utility::exploder( 1 );
|
|
level thread storm_sound_stage( "storm_sound_stage_1" );
|
|
level.rainemitent = spawn( "script_origin", ( 0, 0, 0 ) );
|
|
storm_sounds_volmod( "scripted2", 0, 0 );
|
|
wait 0.05;
|
|
level.rainemitent playloopsound( "amb_fah_rain_light_loop" );
|
|
storm_sounds_volmod( "scripted2", 1, 3 );
|
|
var_10 = getscriptablearray( "sun_scriptable", "targetname" );
|
|
|
|
foreach ( var_12 in var_10 )
|
|
var_12 setscriptablepartstate( 0, "storm_stage_1" );
|
|
|
|
foreach ( var_7 in level.players )
|
|
var_7 visionsetstage( int( min( 1, level.storm_stage ) ), var_4 );
|
|
|
|
wait( var_4 );
|
|
rainfxstage( level.storm_stage );
|
|
var_9 = level.stage_2_fraction * var_0 - ( var_5 * var_0 + var_4 );
|
|
wait( var_9 );
|
|
var_5 = level.stage_2_fraction;
|
|
}
|
|
|
|
level notify( "storm_stage_2" );
|
|
level.storm_stage = 2;
|
|
common_scripts\utility::exploder( 1 );
|
|
level thread storm_sound_stage( "storm_sound_stage_2" );
|
|
level.heavyrainemitent = spawn( "script_origin", ( 0, 0, 0 ) );
|
|
storm_sounds_volmod( "scripted3", 0, 0 );
|
|
wait 0.05;
|
|
level.heavyrainemitent playloopsound( "amb_fah_rain_heavy_loop" );
|
|
storm_sounds_volmod( "scripted3", 1, 3 );
|
|
wait 0.05;
|
|
storm_sounds_volmod( "scripted2", 0, 3 );
|
|
rainfxstage( level.storm_stage );
|
|
|
|
if ( var_1 >= level.stage_2_fraction )
|
|
{
|
|
foreach ( var_7 in level.players )
|
|
var_7 visionsetstage( int( min( 1, level.storm_stage ) ), 0.1 );
|
|
}
|
|
else
|
|
{
|
|
foreach ( var_7 in level.players )
|
|
var_7 visionsetstage( int( min( 1, level.storm_stage ) ), var_4 );
|
|
}
|
|
}
|
|
|
|
storm_sound_stage( var_0 )
|
|
{
|
|
var_1 = 0.9;
|
|
var_2 = getentarray( var_0, "targetname" );
|
|
|
|
foreach ( var_4 in var_2 )
|
|
{
|
|
var_5 = var_4.script_noteworthy;
|
|
|
|
if ( isdefined( var_5 ) )
|
|
var_4 playloopsound( var_5 );
|
|
else
|
|
{
|
|
|
|
}
|
|
|
|
wait( var_1 );
|
|
}
|
|
}
|
|
|
|
storm_sounds_volmod( var_0, var_1, var_2 )
|
|
{
|
|
level.volmods[var_0] = var_1;
|
|
|
|
foreach ( var_4 in level.players )
|
|
var_4 setvolmod( var_0, var_1, var_2 );
|
|
}
|
|
|
|
rotate_skydome( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = 0;
|
|
var_4 = -70;
|
|
var_0 = min( 1, var_0 / level.stage_1_fraction );
|
|
var_1 = min( 1, var_1 / level.stage_1_fraction );
|
|
level.skydome rotatepitch( 180, 0.1 );
|
|
wait 0.1;
|
|
level.skydome rotatepitch( var_0 * var_4, 0.1 );
|
|
maps\mp\_utility::gameflagwait( "prematch_done" );
|
|
level.skydome rotatepitch( ( var_1 - var_0 ) * var_4, max( 0.1, ( var_1 - var_0 ) * var_2 ) );
|
|
}
|
|
|
|
connect_watch()
|
|
{
|
|
for (;;)
|
|
{
|
|
level waittill( "connected", var_0 );
|
|
|
|
if ( isdefined( level.storm_stage ) )
|
|
var_0 visionsetstage( int( min( 1, level.storm_stage ) ), 0.1 );
|
|
|
|
foreach ( var_3, var_2 in level.volmods )
|
|
var_0 setvolmod( var_3, var_2 );
|
|
}
|
|
}
|
|
|
|
areaparallelpipid( var_0, var_1, var_2 )
|
|
{
|
|
return var_0[0] * var_1[1] - var_0[1] * var_1[0] + ( var_1[0] * var_2[1] - var_2[0] * var_1[1] ) + ( var_2[0] * var_0[1] - var_0[0] * var_2[1] );
|
|
}
|
|
|
|
areatriange( var_0, var_1, var_2 )
|
|
{
|
|
return areaparallelpipid( var_0, var_1, var_2 ) * 0.5;
|
|
}
|
|
|
|
lrtest( var_0, var_1, var_2, var_3 )
|
|
{
|
|
if ( !isdefined( var_3 ) )
|
|
var_3 = 0.0;
|
|
|
|
var_4 = areaparallelpipid( var_1, var_2, var_0 );
|
|
|
|
if ( var_4 > var_3 )
|
|
return 1;
|
|
|
|
if ( var_4 < var_3 * -1 )
|
|
return 2;
|
|
|
|
return 3;
|
|
}
|
|
|
|
project( var_0, var_1 )
|
|
{
|
|
var_2 = vectordot( var_0, var_1 ) / lengthsquared( var_1 );
|
|
return [ var_1 * var_2, var_2 ];
|
|
}
|
|
|
|
projecttoline( var_0, var_1, var_2 )
|
|
{
|
|
var_0 = var_0 - var_1;
|
|
[var_0, var_4] = project( var_0, var_2 - var_1 );
|
|
var_0 = var_0 + var_1;
|
|
return [ var_0, var_4 ];
|
|
}
|
|
|
|
projecttolineseg( var_0, var_1, var_2 )
|
|
{
|
|
[var_0, var_4] = projecttoline( var_0, var_1, var_2 );
|
|
|
|
if ( var_4 < 0.0 )
|
|
var_0 = var_1;
|
|
else if ( var_4 > 1.0 )
|
|
var_0 = var_2;
|
|
|
|
return [ var_0, var_4 ];
|
|
}
|
|
|
|
disttoline( var_0, var_1, var_2 )
|
|
{
|
|
[var_4, var_5] = projecttoline( var_0, var_1, var_2 );
|
|
return distance( var_4, var_0 );
|
|
}
|