69 lines
1.3 KiB
Plaintext
69 lines
1.3 KiB
Plaintext
main()
|
|
{
|
|
minefields = getentarray( "minefield", "targetname" );
|
|
if ( minefields.size > 0 )
|
|
{
|
|
level._effect[ "mine_explosion" ] = loadfx( "explosions/grenadeExp_dirt" );
|
|
}
|
|
|
|
for ( i = 0;i < minefields.size;i++ )
|
|
{
|
|
minefields[ i ] thread minefield_think();
|
|
}
|
|
}
|
|
|
|
minefield_think()
|
|
{
|
|
while ( 1 )
|
|
{
|
|
self waittill( "trigger", other );
|
|
|
|
if ( isSentient( other ) )
|
|
other thread minefield_kill( self );
|
|
}
|
|
}
|
|
|
|
minefield_kill( trigger )
|
|
{
|
|
if ( isDefined( self.minefield ) )
|
|
return;
|
|
|
|
self.minefield = true;
|
|
self playsound( "minefield_click" );
|
|
|
|
wait( .5 );
|
|
wait( randomFloat( .2 ) );
|
|
|
|
if ( !( isdefined( self ) ) )
|
|
return;
|
|
|
|
if ( self istouching( trigger ) )
|
|
{
|
|
if ( isplayer( self ) )
|
|
{
|
|
level notify( "mine death" );
|
|
self playsound( "explo_mine" );
|
|
}
|
|
else
|
|
level thread play_sound_in_space( "explo_mine", self.origin );
|
|
|
|
origin = self getorigin();
|
|
range = 300;
|
|
maxdamage = 2000;
|
|
mindamage = 50;
|
|
|
|
playfx( level._effect[ "mine_explosion" ], origin );
|
|
level.player enableHealthShield( false );
|
|
radiusDamage( origin, range, maxdamage, mindamage );
|
|
level.player enableHealthShield( true );
|
|
|
|
if ( isplayer( self ) )
|
|
{
|
|
setdvar( "ui_deadquote", "@MINEFIELDS_MINEDIED" );
|
|
maps\_utility::missionFailedWrapper();
|
|
}
|
|
}
|
|
|
|
self.minefield = undefined;
|
|
}
|