iw6-scripts/maps/mp/_radiation.gsc
2024-02-13 13:20:49 +01:00

200 lines
5.0 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
radiation()
{
var_0 = getentarray( "radiation", "targetname" );
if ( var_0.size > 0 )
{
foreach ( var_2 in var_0 )
var_2 thread common_scripts\_dynamic_world::triggertouchthink( ::playerenterarea, ::playerleavearea );
thread onplayerconnect();
}
}
onplayerconnect()
{
for (;;)
{
level waittill( "connected", var_0 );
var_0.numareas = 0;
}
}
playerenterarea( var_0 )
{
self.numareas++;
if ( self.numareas == 1 )
radiationeffect();
}
playerleavearea( var_0 )
{
self.numareas--;
if ( self.numareas != 0 )
return;
self.poison = 0;
self notify( "leftTrigger" );
if ( isdefined( self.radiationoverlay ) )
self.radiationoverlay fadeoutblackout( 0.1, 0 );
}
soundwatcher( var_0 )
{
common_scripts\utility::waittill_any( "death", "leftTrigger" );
self stoploopsound();
}
radiationeffect()
{
self endon( "disconnect" );
self endon( "game_ended" );
self endon( "death" );
self endon( "leftTrigger" );
self.poison = 0;
thread soundwatcher( self );
for (;;)
{
self.poison++;
switch ( self.poison )
{
case 1:
self.radiationsound = "item_geigercouner_level2";
self playloopsound( self.radiationsound );
self viewkick( 1, self.origin );
break;
case 3:
self shellshock( "mp_radiation_low", 4 );
self.radiationsound = "item_geigercouner_level3";
self stoploopsound();
self playloopsound( self.radiationsound );
self viewkick( 3, self.origin );
doradiationdamage( 15 );
break;
case 4:
self shellshock( "mp_radiation_med", 5 );
self.radiationsound = "item_geigercouner_level3";
self stoploopsound();
self playloopsound( self.radiationsound );
self viewkick( 15, self.origin );
thread blackout();
doradiationdamage( 25 );
break;
case 6:
self shellshock( "mp_radiation_high", 5 );
self.radiationsound = "item_geigercouner_level4";
self stoploopsound();
self playloopsound( self.radiationsound );
self viewkick( 75, self.origin );
doradiationdamage( 45 );
break;
case 8:
self shellshock( "mp_radiation_high", 5 );
self.radiationsound = "item_geigercouner_level4";
self stoploopsound();
self playloopsound( self.radiationsound );
self viewkick( 127, self.origin );
doradiationdamage( 175 );
break;
}
wait 1;
}
wait 5;
}
blackout()
{
self endon( "disconnect" );
self endon( "game_ended" );
self endon( "death" );
self endon( "leftTrigger" );
if ( !isdefined( self.radiationoverlay ) )
{
self.radiationoverlay = newclienthudelem( self );
self.radiationoverlay.x = 0;
self.radiationoverlay.y = 0;
self.radiationoverlay setshader( "black", 640, 480 );
self.radiationoverlay.alignx = "left";
self.radiationoverlay.aligny = "top";
self.radiationoverlay.horzalign = "fullscreen";
self.radiationoverlay.vertalign = "fullscreen";
self.radiationoverlay.alpha = 0;
}
var_0 = 1;
var_1 = 2;
var_2 = 0.25;
var_3 = 1;
var_4 = 5;
var_5 = 100;
var_6 = 0;
for (;;)
{
while ( self.poison > 1 )
{
var_7 = var_5 - var_4;
var_6 = ( self.poison - var_4 ) / var_7;
if ( var_6 < 0 )
var_6 = 0;
else if ( var_6 > 1 )
var_6 = 1;
var_8 = var_1 - var_0;
var_9 = var_0 + var_8 * ( 1 - var_6 );
var_10 = var_3 - var_2;
var_11 = var_2 + var_10 * var_6;
var_12 = var_6 * 0.5;
if ( var_6 == 1 )
break;
var_13 = var_9 / 2;
self.radiationoverlay fadeinblackout( var_13, var_11 );
self.radiationoverlay fadeoutblackout( var_13, var_12 );
wait( var_6 * 0.5 );
}
if ( var_6 == 1 )
break;
if ( self.radiationoverlay.alpha != 0 )
self.radiationoverlay fadeoutblackout( 1, 0 );
wait 0.05;
}
self.radiationoverlay fadeinblackout( 2, 0 );
}
doradiationdamage( var_0 )
{
self thread [[ level.callbackplayerdamage ]]( self, self, var_0, 0, "MOD_SUICIDE", "claymore_mp", self.origin, ( 0, 0, 0 ) - self.origin, "none", 0 );
}
fadeinblackout( var_0, var_1 )
{
self fadeovertime( var_0 );
self.alpha = var_1;
wait( var_0 );
}
fadeoutblackout( var_0, var_1 )
{
self fadeovertime( var_0 );
self.alpha = var_1;
wait( var_0 );
}