using UnityEngine; [RequireComponent(typeof(Hp))] public class PlayerHpRegen : MonoBehaviour { private Hp hp; public float delayTillRegenerationStarts; public float timeToRegenerateFullHealth; private float timeSinceLastTakenDamage; private float hpRemember; private bool heavyArmorEquipped; private bool godsLotionEquipped; private bool godOfDeseaseActive; [SerializeField] private Equippable heavyArmorPerk; [SerializeField] private Equippable godsLotionPerk; private void Start() { hp = GetComponent(); hpRemember = hp.HpValue; heavyArmorEquipped = PerkManager.IsEquipped(heavyArmorPerk); godsLotionEquipped = PerkManager.IsEquipped(godsLotionPerk); if (heavyArmorEquipped) { timeToRegenerateFullHealth *= PerkManager.instance.heavyArmor_HpMultiplyer; hp.maxHp *= PerkManager.instance.heavyArmor_HpMultiplyer; hp.Heal(float.MaxValue); } if (godsLotionEquipped) { delayTillRegenerationStarts *= PerkManager.instance.godsLotion_RegenDelayMultiplyer; timeToRegenerateFullHealth /= PerkManager.instance.godsLotion_RegenRateMultiplyer; } } private void Update() { timeSinceLastTakenDamage += Time.deltaTime; if (hp.HpValue < hpRemember) { timeSinceLastTakenDamage = 0f; } hpRemember = hp.HpValue; if (timeSinceLastTakenDamage >= delayTillRegenerationStarts) { hp.Heal(hp.maxHp / timeToRegenerateFullHealth * Time.deltaTime); } } }