1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- class ShockDamageMdfr: ModifierBase
- {
- const int UNCONSIOUSS_COOLDOWN_TIME = 60;//in s
- override void Init()
- {
- m_TrackActivatedTime = false;
- m_ID = eModifiers.MDF_SHOCK_DAMAGE;
- m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
- m_TickIntervalActive = 0.5;
- }
- override void OnActivate(PlayerBase player)
- {
-
- }
- override void OnReconnect(PlayerBase player)
- {
- }
- override bool ActivateCondition(PlayerBase player)
- {
- if( !player.IsUnconscious() && player.GetHealth("","Blood") <= PlayerConstants.SHOCK_DAMAGE_BLOOD_THRESHOLD_HIGH && GetGame().GetTime() > (player.m_UnconsciousEndTime + UNCONSIOUSS_COOLDOWN_TIME) )
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- override bool DeactivateCondition(PlayerBase player)
- {
- return !ActivateCondition(player);
- }
- // ------------------------------------------------------------------------------
- override void OnTick(PlayerBase player, float deltaT)
- {
- float blood = player.GetHealth("","Blood");
- float value = Math.InverseLerp( PlayerConstants.SHOCK_DAMAGE_BLOOD_THRESHOLD_HIGH, PlayerConstants.SHOCK_DAMAGE_BLOOD_THRESHOLD_LOW, blood );
- value = Math.Clamp(value,0,1);
- float dmg = Math.Lerp( PlayerConstants.SHOCK_DAMAGE_HIGH, PlayerConstants.SHOCK_DAMAGE_LOW, value);
- float damage = -dmg * deltaT;
- player.AddHealth("","Shock", damage);
- //PrintString(damage.ToString());
- }
- };
|