292 lines
7.3 KiB
Plaintext
292 lines
7.3 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
rainhard( var_0 )
|
|
{
|
|
level notify( "rain_change", "hard", var_0 );
|
|
level thread raineffectchange( 10, var_0 );
|
|
wait( var_0 * 0.5 );
|
|
level.ambient_modifier["rain"] = "";
|
|
wait( var_0 * 0.5 );
|
|
}
|
|
|
|
rainmedium( var_0 )
|
|
{
|
|
level notify( "rain_change", "hard", var_0 );
|
|
level thread raineffectchange( 8, var_0 );
|
|
wait( var_0 * 0.5 );
|
|
level.ambient_modifier["rain"] = "";
|
|
wait( var_0 * 0.5 );
|
|
}
|
|
|
|
rainlight( var_0 )
|
|
{
|
|
level notify( "rain_change", "light", var_0 );
|
|
level thread raineffectchange( 5, var_0 );
|
|
wait( var_0 * 0.5 );
|
|
level.ambient_modifier["rain"] = "light";
|
|
wait( var_0 * 0.5 );
|
|
}
|
|
|
|
rainnone( var_0 )
|
|
{
|
|
level notify( "rain_change", "none", var_0 );
|
|
level thread raineffectchange( 0, var_0 );
|
|
wait( var_0 * 0.5 );
|
|
level.ambient_modifier["rain"] = "norain";
|
|
wait( var_0 * 0.5 );
|
|
}
|
|
|
|
raininit( var_0 )
|
|
{
|
|
common_scripts\utility::flag_init( "_weather_lightning_enabled" );
|
|
common_scripts\utility::flag_set( "_weather_lightning_enabled" );
|
|
|
|
if ( var_0 == "none" )
|
|
{
|
|
level.rainlevel = 0;
|
|
level._effect["rain_drops"] = level._effect["rain_" + level.rainlevel];
|
|
rainnone( 0.1 );
|
|
}
|
|
else if ( var_0 == "light" )
|
|
{
|
|
level.rainlevel = 5;
|
|
level._effect["rain_drops"] = level._effect["rain_" + level.rainlevel];
|
|
rainlight( 0.1 );
|
|
}
|
|
else
|
|
{
|
|
level.rainlevel = 10;
|
|
level._effect["rain_drops"] = level._effect["rain_" + level.rainlevel];
|
|
rainhard( 0.1 );
|
|
}
|
|
}
|
|
|
|
lightning( var_0, var_1 )
|
|
{
|
|
[[ var_0 ]]();
|
|
waittillframeend;
|
|
|
|
for (;;)
|
|
lightningthink( var_0, var_1 );
|
|
}
|
|
|
|
raineffectchange( var_0, var_1 )
|
|
{
|
|
level notify( "rain_level_change" );
|
|
level endon( "rain_level_change" );
|
|
|
|
if ( level.rainlevel > var_0 )
|
|
{
|
|
var_2 = level.rainlevel - var_0;
|
|
var_1 = var_1 / var_2;
|
|
|
|
for ( var_3 = 0; var_3 < var_2; var_3++ )
|
|
{
|
|
wait( var_1 );
|
|
level.rainlevel--;
|
|
level._effect["rain_drops"] = level._effect["rain_" + level.rainlevel];
|
|
}
|
|
}
|
|
|
|
if ( level.rainlevel < var_0 )
|
|
{
|
|
var_2 = var_0 - level.rainlevel;
|
|
var_1 = var_1 / var_2;
|
|
|
|
for ( var_3 = 0; var_3 < var_2; var_3++ )
|
|
{
|
|
wait( var_1 );
|
|
level.rainlevel++;
|
|
level._effect["rain_drops"] = level._effect["rain_" + level.rainlevel];
|
|
}
|
|
}
|
|
}
|
|
|
|
addlightningexploder( var_0 )
|
|
{
|
|
if ( !isdefined( level.lightningexploder ) )
|
|
{
|
|
level.lightningexploder = [];
|
|
level.lightningexploderindex = 0;
|
|
}
|
|
|
|
level.lightningexploder[level.lightningexploder.size] = var_0;
|
|
}
|
|
|
|
playerweather()
|
|
{
|
|
var_0 = getentarray( "player", "classname" )[0];
|
|
|
|
for (;;)
|
|
{
|
|
playfx( level._effect["rain_drops"], var_0.origin + ( 0, 0, 650 ), var_0.origin + ( 0, 0, 680 ) );
|
|
wait 0.3;
|
|
}
|
|
}
|
|
|
|
rainlevelrandomwait()
|
|
{
|
|
if ( level.rainlevel == 0 )
|
|
return randomfloat( 30 );
|
|
else if ( level.rainlevel == 1 )
|
|
return randomfloat( 24 );
|
|
else if ( level.rainlevel == 2 )
|
|
return randomfloat( 20 );
|
|
else if ( level.rainlevel == 3 )
|
|
return randomfloat( 15 );
|
|
else if ( level.rainlevel == 4 )
|
|
return randomfloat( 12 );
|
|
else if ( level.rainlevel == 5 )
|
|
return randomfloat( 9 );
|
|
else if ( level.rainlevel == 6 )
|
|
return randomfloat( 8 );
|
|
else if ( level.rainlevel == 7 )
|
|
return randomfloat( 8 );
|
|
else if ( level.rainlevel == 8 )
|
|
return randomfloat( 7 );
|
|
else if ( level.rainlevel == 9 )
|
|
return randomfloat( 6 );
|
|
else if ( level.rainlevel == 10 )
|
|
return randomfloat( 5 );
|
|
}
|
|
|
|
rainlevelwait()
|
|
{
|
|
if ( level.rainlevel == 0 )
|
|
return 20;
|
|
else if ( level.rainlevel == 1 )
|
|
return 18;
|
|
else if ( level.rainlevel == 2 )
|
|
return 16;
|
|
else if ( level.rainlevel == 3 )
|
|
return 14;
|
|
else if ( level.rainlevel == 4 )
|
|
return 12;
|
|
else if ( level.rainlevel == 5 )
|
|
return 10;
|
|
else if ( level.rainlevel == 6 )
|
|
return 9;
|
|
else if ( level.rainlevel == 7 )
|
|
return 8;
|
|
else if ( level.rainlevel == 8 )
|
|
return 7;
|
|
else if ( level.rainlevel == 9 )
|
|
return 6;
|
|
else if ( level.rainlevel == 10 )
|
|
return 5;
|
|
}
|
|
|
|
lightningthink( var_0, var_1 )
|
|
{
|
|
level endon( "rain_change" );
|
|
var_2 = gettime() + ( rainlevelwait() + rainlevelrandomwait() ) * 1000;
|
|
|
|
if ( var_2 < level.nextlightning )
|
|
level.nextlightning = var_2;
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "_weather_lightning_enabled" );
|
|
var_3 = ( level.nextlightning - gettime() ) * 0.001;
|
|
|
|
if ( var_3 > 0 )
|
|
wait( var_3 );
|
|
|
|
if ( !common_scripts\utility::flag( "_weather_lightning_enabled" ) )
|
|
continue;
|
|
|
|
lightningflash( var_0, var_1 );
|
|
level.nextlightning = gettime() + ( rainlevelwait() + rainlevelrandomwait() ) * 1000;
|
|
}
|
|
}
|
|
|
|
fogflash( var_0 )
|
|
{
|
|
if ( isdefined( level.lightningexploderindex ) )
|
|
common_scripts\utility::exploder( level.lightningexploder[level.lightningexploderindex] );
|
|
|
|
[[ var_0 ]]();
|
|
}
|
|
|
|
lightningflash( var_0, var_1, var_2 )
|
|
{
|
|
var_3[0] = "quick";
|
|
var_3[1] = "double";
|
|
var_3[2] = "triple";
|
|
thread thunder();
|
|
|
|
if ( !isdefined( var_2 ) )
|
|
var_2 = randomint( var_3.size );
|
|
|
|
var_4 = 0;
|
|
|
|
if ( isdefined( level.lightningexploderindex ) )
|
|
{
|
|
while ( var_4 == level.lightningexploderindex )
|
|
var_4 = randomint( level.lightningexploder.size );
|
|
|
|
level.lightningexploderindex = var_4;
|
|
}
|
|
|
|
switch ( var_3[var_2] )
|
|
{
|
|
case "quick":
|
|
fogflash( var_1 );
|
|
break;
|
|
case "double":
|
|
fogflash( var_1 );
|
|
wait 0.05;
|
|
fogflash( var_1 );
|
|
break;
|
|
case "triple":
|
|
fogflash( var_1 );
|
|
wait 0.05;
|
|
fogflash( var_1 );
|
|
wait 0.5;
|
|
fogflash( var_1 );
|
|
break;
|
|
}
|
|
}
|
|
|
|
thunder()
|
|
{
|
|
if ( level.rainlevel == 0 )
|
|
wait( 6 + randomfloat( 2 ) );
|
|
else if ( level.rainlevel == 1 )
|
|
wait( 5 + randomfloat( 1.8 ) );
|
|
else if ( level.rainlevel == 2 )
|
|
wait( 4.5 + randomfloat( 1.6 ) );
|
|
else if ( level.rainlevel == 3 )
|
|
wait( 4 + randomfloat( 1.6 ) );
|
|
else if ( level.rainlevel == 4 )
|
|
wait( 3.5 + randomfloat( 1.5 ) );
|
|
else if ( level.rainlevel == 5 )
|
|
wait( 3 + randomfloat( 1.5 ) );
|
|
else if ( level.rainlevel == 6 )
|
|
wait( 2.5 + randomfloat( 1.2 ) );
|
|
else if ( level.rainlevel == 7 )
|
|
wait( 2 + randomfloat( 1 ) );
|
|
else if ( level.rainlevel == 8 )
|
|
wait( 1.9 + randomfloat( 0.5 ) );
|
|
else if ( level.rainlevel == 9 )
|
|
wait 1.5;
|
|
else if ( level.rainlevel == 10 )
|
|
wait 1;
|
|
|
|
var_0 = spawn( "script_origin", ( 0, 0, 0 ) );
|
|
var_0.origin = level.player.origin + ( 0, 0, 60 );
|
|
var_0 linkto( level.player );
|
|
|
|
if ( level.rainlevel <= 8 )
|
|
var_0 playsound( "elm_thunder_distant", "sounddone" );
|
|
else
|
|
{
|
|
var_0 playsound( "elm_thunder_distant", "sounddone" );
|
|
var_0 thread maps\_utility::play_sound_on_entity( "elm_thunder_strike" );
|
|
}
|
|
|
|
var_0 waittill( "sounddone" );
|
|
var_0 delete();
|
|
}
|