// Token: 0x06001009 RID: 4105 RVA: 0x00050060 File Offset: 0x0004E260
        public void UsePotion()
        {
            ProcChainMask procChainMask = default(ProcChainMask);

            procChainMask.AddProc(ProcType.LunarPotionActivation);
            this.Heal(this.potionReserve, procChainMask, true);
        }
 // Token: 0x06001025 RID: 4133 RVA: 0x00051244 File Offset: 0x0004F444
 private void FixedUpdate()
 {
     this.timer -= Time.fixedDeltaTime;
     if (this.timer <= 0f)
     {
         this.timer = 0.2f;
         if (this.reserve > 0f)
         {
             float num = Mathf.Min(this.healthComponent.fullHealth * this.healthFractionToRestorePerSecond * 0.2f, this.reserve);
             this.reserve -= num;
             ProcChainMask procChainMask = default(ProcChainMask);
             procChainMask.AddProc(ProcType.RepeatHeal);
             this.healthComponent.Heal(num, procChainMask, true);
         }
     }
 }
        // Token: 0x06001008 RID: 4104 RVA: 0x0004FE58 File Offset: 0x0004E058
        public float Heal(float amount, ProcChainMask procChainMask, bool nonRegen = true)
        {
            if (!NetworkServer.active)
            {
                Debug.LogWarning("[Server] function 'System.Single RoR2.HealthComponent::Heal(System.Single, RoR2.ProcChainMask, System.Boolean)' called on client");
                return(0f);
            }
            if (!this.alive || amount <= 0f)
            {
                return(0f);
            }
            float           num             = this.health;
            CharacterMaster characterMaster = null;
            Inventory       inventory       = null;
            bool            flag            = false;

            if (this.body)
            {
                if (this.body.HasBuff(BuffIndex.RepairMode))
                {
                    amount *= 3f;
                }
                characterMaster = this.body.master;
                if (characterMaster)
                {
                    inventory = characterMaster.inventory;
                    if (inventory && inventory.currentEquipmentIndex == EquipmentIndex.LunarPotion && !procChainMask.HasProc(ProcType.LunarPotionActivation))
                    {
                        this.potionReserve += amount;
                        return(amount);
                    }
                    if (nonRegen && !procChainMask.HasProc(ProcType.CritHeal) && Util.CheckRoll(this.body.critHeal, characterMaster))
                    {
                        procChainMask.AddProc(ProcType.CritHeal);
                        flag = true;
                    }
                }
            }
            if (flag)
            {
                amount *= 2f;
            }
            if (this.increaseHealingCount > 0)
            {
                amount *= 1f + (float)this.increaseHealingCount;
            }
            if (nonRegen && this.repeatHealComponent && !procChainMask.HasProc(ProcType.RepeatHeal))
            {
                this.repeatHealComponent.healthFractionToRestorePerSecond = 0.1f / (float)this.repeatHealCount;
                this.repeatHealComponent.AddReserve(amount * (float)(1 + this.repeatHealCount), this.fullHealth);
                return(0f);
            }
            this.Networkhealth = Mathf.Min(this.health + amount, this.fullHealth);
            if (nonRegen)
            {
                HealthComponent.SendHeal(base.gameObject, amount, flag);
                if (inventory && !procChainMask.HasProc(ProcType.HealNova))
                {
                    int itemCount = inventory.GetItemCount(ItemIndex.NovaOnHeal);
                    if (itemCount > 0)
                    {
                        this.devilOrbHealPool = Mathf.Min(this.devilOrbHealPool + amount * (float)itemCount, this.fullCombinedHealth);
                    }
                }
            }
            if (flag)
            {
                GlobalEventManager.instance.OnCrit(this.body, characterMaster, amount / this.fullHealth * 10f, procChainMask);
            }
            if (nonRegen)
            {
                Action <HealthComponent, float> action = HealthComponent.onCharacterHealServer;
                if (action != null)
                {
                    action(this, amount);
                }
            }
            return(this.health - num);
        }