// Token: 0x06002D24 RID: 11556 RVA: 0x000A8B94 File Offset: 0x000A6D94
 public void DoBleed()
 {
     if (base.alive && this._bleedingLevel > 0f)
     {
         float healthPoints           = this._bleedingLevel;
         global::Metabolism component = base.GetComponent <global::Metabolism>();
         if (component)
         {
             healthPoints = this._bleedingLevel * ((!component.IsWarm()) ? 1f : 0.4f);
         }
         global::LifeStatus lifeStatus;
         if (this.bleedAttacker && this.bleedingID)
         {
             lifeStatus = global::TakeDamage.Hurt(this.bleedAttacker, this.bleedingID, healthPoints, null);
         }
         else
         {
             lifeStatus = global::TakeDamage.HurtSelf(this.idMain, healthPoints, null);
         }
         if (lifeStatus == global::LifeStatus.IsAlive)
         {
             float num = 0.2f;
             this.SetBleedingLevel(Mathf.Clamp(this._bleedingLevel - num, 0f, this._bleedingLevel));
         }
         else
         {
             base.CancelInvoke("DoBleed");
         }
     }
     else
     {
         base.CancelInvoke("DoBleed");
     }
 }
    // Token: 0x06003377 RID: 13175 RVA: 0x000C1880 File Offset: 0x000BFA80
    public virtual void UseItem(global::IConsumableItem item)
    {
        global::Inventory  inventory = item.inventory;
        global::Metabolism local     = inventory.GetLocal <global::Metabolism>();

        if (local == null)
        {
            return;
        }
        if (!local.CanConsumeYet())
        {
            return;
        }
        local.MarkConsumptionTime();
        float numCalories = Mathf.Min(local.GetRemainingCaloricSpace(), this.calories);

        if (this.calories > 0f)
        {
            local.AddCalories(numCalories);
        }
        if (this.litresOfWater > 0f)
        {
            local.AddWater(this.litresOfWater);
        }
        if (this.antiRads > 0f)
        {
            local.AddAntiRad(this.antiRads);
        }
        if (this.healthToHeal != 0f)
        {
            global::HumanBodyTakeDamage local2 = inventory.GetLocal <global::HumanBodyTakeDamage>();
            if (local2 != null)
            {
                if (this.healthToHeal > 0f)
                {
                    local2.HealOverTime(this.healthToHeal);
                }
                else
                {
                    global::TakeDamage.HurtSelf(inventory.idMain, Mathf.Abs(this.healthToHeal), null);
                }
            }
        }
        if (this.poisonAmount > 0f)
        {
            local.AddPoison(this.poisonAmount);
        }
        int num = 1;

        if (item.Consume(ref num))
        {
            inventory.RemoveItem(item.slot);
        }
    }
Exemplo n.º 3
0
    // Token: 0x060039D1 RID: 14801 RVA: 0x000CB8D4 File Offset: 0x000C9AD4
    public override void PrimaryAttack(ref global::HumanController.InputSample sample)
    {
        float num = this.datablock.fireRate;
        global::Metabolism local = base.inventory.GetLocal <global::Metabolism>();

        if (local && local.GetCalorieLevel() <= 0f)
        {
            num = this.datablock.fireRate * 2f;
        }
        float num2 = Time.time + num;

        base.nextSecondaryAttackTime = num2;
        base.nextPrimaryAttackTime   = num2;
        T datablock = this.datablock;

        datablock.Local_FireWeapon(base.viewModelInstance, base.itemRepresentation, this.iface as global::IMeleeWeaponItem, ref sample);
    }