override void OnSteppedOn(EntityAI victim)
{
bool IsServer = false;
bool IsDisarmed = false;
if ( GetGame().IsServer())
{
IsServer = true;
}
IsDisarmed = GetDisarmed();
if(victim)
{
PlayerBase victim_PB = PlayerBase.Cast( victim );
if ( victim_PB && victim_PB.IsAlive() )
{
if (IsServer)
{
if ( !IsDisarmed )
{
int randNum; //value used for probability evaluation
randNum = Math.RandomInt(0, 100);
if ( randNum <= BROKEN_LEG_PROB )
{
float damage = victim_PB.GetMaxHealth( "RightLeg", "" ); //deal 100% damage to break legs
victim_PB.DamageAllLegs( damage );
}
randNum = Math.RandomInt(0, 100);
if ( randNum < BLEED_SOURCE_PROB )
{
for ( int i = 0; i < MAX_BLEED_SOURCE; i++ )
{
//We add two bleeding sources max to lower half
randNum = Math.RandomIntInclusive(0, PlayerBase.m_BleedingSourcesLow.Count() - 1);
victim_PB.m_BleedingManagerServer.AttemptAddBleedingSourceBySelection(PlayerBase.m_BleedingSourcesLow[randNum]);
}
}
DamageClothing( victim_PB );
Explode( DT_EXPLOSION );
}
m_DeleteTimer = new Timer( CALL_CATEGORY_SYSTEM );
m_DeleteTimer.Run( 1, this, "DeleteThis" );
}
if ( GetGame().IsClient() || !GetGame().IsMultiplayer())
{
if ( GetGame().GetPlayer() )
{
if ( !IsDisarmed )
{
PlaySoundHeart();
}
}
}
SetState(TRIGGERED);
}
}
}
в теории лучше так наверно