class HealthRegenMdfr: ModifierBase
{
override void Init()
{
m_TrackActivatedTime = false;
m_ID = eModifiers.MDF_HEALTH_REGEN;
m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE;
DisableDeactivateCheck();
}
override bool ActivateCondition(PlayerBase player)
{
return true;
}
override void OnActivate(PlayerBase player)
{
}
override void OnReconnect(PlayerBase player)
{
}
override bool DeactivateCondition(PlayerBase player)
{
return false;
}
override void OnTick(PlayerBase player, float deltaT)
{
if (player.IsAlive())//this needs to be here, some of the other modifiers can kill the character during the same modifier tick, and not checking here can partially revive him(resulting in a broken char)
{
float regen_speed = player.GetHealthRegenSpeed() * deltaT;;
player.AddHealth("GlobalHealth", "Health" , regen_speed );
player.AddHealth("RightArm","Health",regen_speed * PlayerConstants.DAMAGE_ZONE_BLOOD_REGEN_MODIFIER );
player.AddHealth("RightHand","Health",regen_speed * PlayerConstants.DAMAGE_ZONE_BLOOD_REGEN_MODIFIER);
player.AddHealth("LeftArm","Health",regen_speed * PlayerConstants.DAMAGE_ZONE_BLOOD_REGEN_MODIFIER);
player.AddHealth("LeftHand","Health",regen_speed * PlayerConstants.DAMAGE_ZONE_BLOOD_REGEN_MODIFIER);
//Leg regen when legs are NOT BROKEN
if ( player.GetBrokenLegs() == eBrokenLegs.NO_BROKEN_LEGS )
{
player.AddHealth("RightLeg","Health", PlayerConstants.LEG_HEALTH_REGEN);
player.AddHealth("RightFoot","Health", PlayerConstants.LEG_HEALTH_REGEN);
player.AddHealth("LeftLeg","Health", PlayerConstants.LEG_HEALTH_REGEN);
player.AddHealth("LeftFoot","Health", PlayerConstants.LEG_HEALTH_REGEN);
}
else
{
//Leg regen when legs are BROKEN or SPLINTED
player.AddHealth("RightLeg","Health", PlayerConstants.LEG_HEALTH_REGEN_BROKEN);
player.AddHealth("RightFoot","Health",PlayerConstants.LEG_HEALTH_REGEN_BROKEN);
player.AddHealth("LeftLeg","Health", PlayerConstants.LEG_HEALTH_REGEN_BROKEN);
player.AddHealth("LeftFoot","Health", PlayerConstants.LEG_HEALTH_REGEN_BROKEN);
}
player.AddHealth("Torso","Health",regen_speed * PlayerConstants.DAMAGE_ZONE_BLOOD_REGEN_MODIFIER);
// We increase head health regeneration as it is unclear to players what health level individual zones have
player.AddHealth("Head","Health",( regen_speed * PlayerConstants.DAMAGE_ZONE_BLOOD_REGEN_MODIFIER ) * 2 );
}
}
};