Ejemplo n.º 1
0
        public void Update()
        {
            if (Menu.SelfRevive && LocalPlayer.IsInWorld)
            {
                if (LocalPlayer.Stats && LocalPlayer.Stats.Dead)
                {
                    Item item = ItemDatabase.ItemByName("meds");
                    ItemUtils.ApplyEffectsToStats(item._usedStatEffect, true, 1);
                    if (item._usedSFX != Item.SFXCommands.None)
                    {
                        LocalPlayer.Inventory.SendMessage(item._usedSFX.ToString());
                    }
                    LocalPlayer.Stats.HealedMp();
                }
            }

            if (UnityEngine.Input.GetKey(KeyCode.F6) && LocalPlayer.IsInWorld)
            {
                if (LocalPlayer.Stats && LocalPlayer.Stats.Dead)
                {
                    Item item = ItemDatabase.ItemByName("meds");
                    ItemUtils.ApplyEffectsToStats(item._usedStatEffect, true, 1);
                    if (item._usedSFX != Item.SFXCommands.None)
                    {
                        LocalPlayer.Inventory.SendMessage(item._usedSFX.ToString());
                    }
                    LocalPlayer.Stats.HealedMp();
                }
            }
        }
Ejemplo n.º 2
0
 protected override bool MainEffect()
 {
     if (!this.ForcePickup && this._playerStatConditionList.IsValid(LocalPlayer.Stats))
     {
         EventRegistry.Player.Publish(TfEvent.UsedItem, this._itemId);
         Item item = ItemDatabase.ItemById(this._itemId);
         ItemUtils.ApplyEffectsToStats(item._usedStatEffect, true, 1);
         if (item._usedSFX != Item.SFXCommands.None)
         {
             LocalPlayer.GameObject.SendMessage(item._usedSFX.ToString());
         }
         return(true);
     }
     return(base.MainEffect());
 }
Ejemplo n.º 3
0
 protected virtual void UseEdible()
 {
     if (this._activeBonus == WeaponStatUpgrade.Types.DirtyWater)
     {
         LocalPlayer.Stats.HitFoodDelayed(10);
     }
     this.ActiveBonus = (WeaponStatUpgrade.Types)(-1);
     this._inventory.BubbleUpInventoryView(this);
     if (!this._item.MatchType(Item.Types.Equipment))
     {
         this._inventory.RemoveItem(this._itemId, 1, false);
         GameStats.EdibleItemUsed.Invoke(this._itemId);
     }
     ItemUtils.ApplyEffectsToStats(this._item._usedStatEffect, true);
     if (this._item._usedSFX != Item.SFXCommands.None)
     {
         this._inventory.SendMessage("PlayInventorySound", this._item._usedSFX);
     }
 }
Ejemplo n.º 4
0
 public virtual void UseEdible()
 {
     InventoryItemView.CombiningItemId       = -1;
     InventoryItemView.CombiningItemProperty = ItemProperties.Any;
     if (this.ActiveBonus == WeaponStatUpgrade.Types.DirtyWater)
     {
         LocalPlayer.Stats.HitWaterDelayed(1);
     }
     this.ActiveBonus = (WeaponStatUpgrade.Types)(-1);
     this._inventory.BubbleUpInventoryView(this);
     if (this._item.MatchType(Item.Types.Armor))
     {
         this._inventory.RemoveItem(this._itemId, 1, false, true);
         if (!ItemUtils.ApplyEffectsToStats(this._item._usedStatEffect, true, 1))
         {
             this._inventory.AddItemNF(this._itemId, 1, false, false, null);
             LocalPlayer.Sfx.PlayItemCustomSfx(this.ItemCache, true);
             return;
         }
         EventRegistry.Player.Publish(TfEvent.UsedItem, this._itemId);
     }
     else if (!this._item.MatchType(Item.Types.Equipment))
     {
         if (!ItemUtils.ApplyEffectsToStats(this._item._usedStatEffect, true, 1))
         {
             LocalPlayer.Sfx.PlayWhoosh();
             return;
         }
         this._inventory.RemoveItem(this._itemId, 1, false, true);
         EventRegistry.Player.Publish(TfEvent.UsedItem, this._itemId);
     }
     else
     {
         ItemUtils.ApplyEffectsToStats(this._item._usedStatEffect, true, 1);
     }
     if (this._item._usedSFX != Item.SFXCommands.None)
     {
         LocalPlayer.Sfx.PlayInventorySound(this._item._usedSFX);
     }
 }
Ejemplo n.º 5
0
        public override void UseEdible()
        {
            InventoryItemView.CombiningItemId = -1;
            LocalPlayer.Sfx.PlayItemCustomSfx(base.ItemCache, true);
            LocalPlayer.Sfx.PlayWhoosh();
            int calories = 0;

            switch (this.DecayProperties._state)
            {
            case DecayingInventoryItemView.DecayStates.Spoilt:
                LocalPlayer.Stats.Invoke("PoisonMe", 2f);
                break;

            default:
                LocalPlayer.Stats.AteFreshMeat(this._isLimb, this._size, calories);
                break;

            case DecayingInventoryItemView.DecayStates.DriedEdible:
                LocalPlayer.Stats.AteEdibleMeat(this._isLimb, this._size, calories);
                break;

            case DecayingInventoryItemView.DecayStates.DriedSpoilt:
                LocalPlayer.Stats.AteSpoiltMeat(this._isLimb, this._size, calories);
                break;
            }
            if (this.DecayProperties._state >= DecayingInventoryItemView.DecayStates.DriedFresh)
            {
                LocalPlayer.Stats.Thirst += 0.05f * GameSettings.Survival.DriedMeatThirstRatio;
            }
            this._inventory.BubbleUpInventoryView(this);
            this._inventory.RemoveItem(this._itemId, 1, false, true);
            EventRegistry.Player.Publish(TfEvent.UsedItem, this._itemId);
            ItemUtils.ApplyEffectsToStats(base.ItemCache._usedStatEffect, true, 1);
            if (base.ItemCache._usedSFX != Item.SFXCommands.None)
            {
                this._inventory.SendMessage("PlayInventorySound", base.ItemCache._usedSFX);
            }
            this.ActiveBonus = WeaponStatUpgrade.Types.RawFood;
        }
Ejemplo n.º 6
0
        public override void AddArmorVisible(ArmorTypes type)
        {
            int      armorSetIndex = GetArmorSetIndex(type);
            ArmorSet armorSet      = (armorSetIndex == -1) ? null : ArmorSets[armorSetIndex];

            if (type == ArmorTypes.Warmsuit)
            {
                for (int i = 0; i < 10; i++)
                {
                    int num = i;
                    if (CurrentArmorTypes[num] != 0)
                    {
                        ArmorTypes type2          = CurrentArmorTypes[num];
                        int        armorSetIndex2 = GetArmorSetIndex(type2);
                        ArmorSet   armorSet2      = ArmorSets[armorSetIndex2];
                        ToggleArmorPiece(armorSet2.ModelType, armorSet2.Mat, num, false);
                        ToggleArmorPiece(armorSet2.ModelType2, armorSet2.Mat2, num, false);
                        if (UpgradePointsMod.instance.specialUpgrades[5].bought)
                        {
                            for (int x = 0; x < armorSet.Effects.Length; x++)
                            {
                                if (armorSet.Effects[x]._type == StatEffect.Types.Armor)
                                {
                                    armorSet.Effects[x]._amount *= 2;
                                }
                            }
                        }
                        ItemUtils.ApplyEffectsToStats(armorSet2.Effects, false, 1);
                        if (armorSet2.HP - CurrentArmorHP[num] < 4 && !Player.AddItem(armorSet2.ItemId, 1, false, false, null))
                        {
                            LocalPlayer.Inventory.FakeDrop(armorSet2.ItemId, null);
                        }
                        CurrentArmorTypes[num] = ArmorTypes.None;
                    }
                }
                ArmorVis             = 0;
                CurrentArmorTypes[0] = ArmorTypes.Warmsuit;
                GetArmorPiece(ArmorTypes.Warmsuit, 0).SetActive(true);
                if (UpgradePointsMod.instance.specialUpgrades[5].bought)
                {
                    for (int x = 0; x < armorSet.Effects.Length; x++)
                    {
                        if (armorSet.Effects[x]._type == StatEffect.Types.Armor)
                        {
                            armorSet.Effects[x]._amount *= 2;
                        }
                    }
                }
                ItemUtils.ApplyEffectsToStats(armorSet.Effects, true, 1);
                UpdateArmorNibbles();
                LocalPlayer.Clothing.RefreshVisibleClothing();
            }
            else
            {
                if (!Warmsuit)
                {
                    for (int j = 0; j < 10; j++)
                    {
                        int num2 = (int)Mathf.Repeat((float)(ArmorVis + j), 10f);
                        if (CurrentArmorTypes[num2] == ArmorTypes.None)
                        {
                            CurrentArmorTypes[num2] = type;
                            if (armorSet != null)
                            {
                                ToggleArmorPiece(armorSet.ModelType, armorSet.Mat, num2, true);
                                ToggleArmorPiece(armorSet.ModelType2, armorSet.Mat2, num2, true);
                                CurrentArmorHP[num2] = armorSet.HP;
                                ArmorVis             = num2 + 1;
                                if (UpgradePointsMod.instance.specialUpgrades[5].bought)
                                {
                                    for (int x = 0; x < armorSet.Effects.Length; x++)
                                    {
                                        if (armorSet.Effects[x]._type == StatEffect.Types.Armor)
                                        {
                                            armorSet.Effects[x]._amount *= 2;
                                        }
                                    }
                                }
                                ItemUtils.ApplyEffectsToStats(armorSet.Effects, true, 1);
                            }
                            UpdateArmorNibbles();
                            return;
                        }
                    }
                }
                if (ArmorVis == 10)
                {
                    ArmorVis = 0;
                }
                if (CurrentArmorTypes[ArmorVis] != 0)
                {
                    ArmorTypes type3          = CurrentArmorTypes[ArmorVis];
                    int        armorSetIndex3 = GetArmorSetIndex(type3);
                    ArmorSet   armorSet3      = ArmorSets[armorSetIndex3];
                    ToggleArmorPiece(armorSet3.ModelType, armorSet3.Mat, ArmorVis, false);
                    ToggleArmorPiece(armorSet3.ModelType2, armorSet3.Mat2, ArmorVis, false);
                    if (UpgradePointsMod.instance.specialUpgrades[5].bought)
                    {
                        for (int x = 0; x < armorSet.Effects.Length; x++)
                        {
                            if (armorSet.Effects[x]._type == StatEffect.Types.Armor)
                            {
                                armorSet.Effects[x]._amount *= 2;
                            }
                        }
                    }
                    ItemUtils.ApplyEffectsToStats(armorSet3.Effects, false, 1);
                    if (armorSet3.HP - CurrentArmorHP[ArmorVis] < 4 && !Warmsuit && !Player.AddItem(armorSet3.ItemId, 1, false, false, null))
                    {
                        LocalPlayer.Inventory.FakeDrop(armorSet3.ItemId, null);
                    }
                    if (Warmsuit)
                    {
                        CurrentArmorTypes[ArmorVis] = ArmorTypes.None;
                        LocalPlayer.Inventory.UnequipItemAtSlot(Item.EquipmentSlot.FullBody, false, true, false);
                        LocalPlayer.Clothing.RefreshVisibleClothing();
                    }
                }
                CurrentArmorHP[ArmorVis]    = (armorSet?.HP ?? 0);
                CurrentArmorTypes[ArmorVis] = type;
                if (armorSet != null)
                {
                    ToggleArmorPiece(armorSet.ModelType, armorSet.Mat, ArmorVis, true);
                    ToggleArmorPiece(armorSet.ModelType2, armorSet.Mat2, ArmorVis, true);
                    if (UpgradePointsMod.instance.specialUpgrades[5].bought)
                    {
                        for (int x = 0; x < armorSet.Effects.Length; x++)
                        {
                            if (armorSet.Effects[x]._type == StatEffect.Types.Armor)
                            {
                                armorSet.Effects[x]._amount *= 2;
                            }
                        }
                    }
                    ItemUtils.ApplyEffectsToStats(armorSet.Effects, true, 1);
                    ArmorVis++;
                }
                UpdateArmorNibbles();
            }
        }
Ejemplo n.º 7
0
        private void Update()
        {
            bool canDrink = this.CanDrink;

            if (canDrink)
            {
                if (this._nextUseTime < Time.time)
                {
                    bool canGather = this.CanGather;
                    if (canGather)
                    {
                        if (TheForest.Utils.Input.GetButtonAfterDelay("Craft", 0.5f, false))
                        {
                            if (this.AtLake)
                            {
                                base.Invoke("doGatherWater", 1f);
                            }
                            else
                            {
                                LocalPlayer.Inventory.GatherWater(!this._polluted);
                            }
                            if (this._maxAmount > 0f)
                            {
                                this.RemoveWater(1f);
                            }
                            base.SendMessage("OnGatherWater", SendMessageOptions.DontRequireReceiver);
                            if (this.AtLake)
                            {
                                this._nextUseTime   = Time.time + 3f;
                                this._canAutoRepeat = false;
                                LocalPlayer.SpecialActions.SendMessage("doFillPotRoutine");
                                this._billboardGather.SetActive(false);
                                this._billboardGatherSheen.SetActive(false);
                            }
                            else
                            {
                                LocalPlayer.Sfx.PlayTwinkle();
                            }
                        }
                    }
                    else if (TheForest.Utils.Input.GetButtonAfterDelay("Take", 0.5f, this._canAutoRepeat))
                    {
                        float num;
                        if (this._maxAmount == 0f)
                        {
                            num = LocalPlayer.Stats.Thirst;
                        }
                        else
                        {
                            num = Mathf.Min(this.AmountReal, Mathf.Max(LocalPlayer.Stats.Thirst, 0.15f));
                            this.RemoveWater(num);
                        }
                        LocalPlayer.Stats.Thirst -= num * ((!this._polluted) ? 1f : GameSettings.Survival.PolutedWaterThirstRatio);
                        ItemUtils.ApplyEffectsToStats(this._usedStatEffect, true, 1);
                        if (this.AtLake)
                        {
                            this.enableDrinkParams();
                            base.Invoke("playDrinkSFX", 1f);
                            base.Invoke("doPollutedDamage", 2.2f);
                            return;
                        }
                        this.playDrinkSFX();
                        this.doPollutedDamage();
                        this._nextUseTime   = Time.time + this._useDelay;
                        this._canAutoRepeat = false;
                        base.SendMessage("OnDrinkWater", SendMessageOptions.DontRequireReceiver);
                    }
                }
                else if (TheForest.Utils.Input.GetButtonDown("Take"))
                {
                    this._canAutoRepeat = true;
                }
            }
            this.ToggleIcons(this._nextUseTime < Time.time);
        }
Ejemplo n.º 8
0
 public void ApplyEquipmentEffect(bool forward)
 {
     ItemUtils.ApplyEffectsToStats(this._item._equipedStatEffect, forward, 1);
 }