12345678910111213141516171819202122232425262728293031323334353637 |
- 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;
- }
- }
|