AreaDamageOnce.c
class AreaDamageOnce : AreaDamageManager
{
override void OnEnterServerEvent(TriggerInsider insider)
{
super.OnEnterServerEvent(insider);
OnEvaluateDamageEx(insider, 1);
}
}
class AreaDamageOnceDeferred : AreaDamageOnce
{
//! Time the damage should be deferred in seconds
protected float m_DeferDuration = 1.0;
override void SetDeferDuration(float time)
{
m_DeferDuration = time;
}
override void OnStayServerEvent(TriggerInsider insider, float deltaTime)
{
super.OnStayServerEvent(insider, deltaTime);
AreaDamageTriggerInsider dInsider;
if ( CastTo( dInsider, insider ) && dInsider.lastDamaged == 0 )
OnEvaluateDamageEx(insider, 1);
}
override protected float CalculateDamageScale(TriggerInsider insider, float deltaTime)
{
if ( m_DeferDuration > 0 && (insider.lastUpdated - insider.timeEntered) >= m_DeferDuration )
return super.CalculateDamageScale(insider, deltaTime);
return 0;
}
}