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(); } } }
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()); }
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); } }
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); } }
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; }
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(); } }
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); }
public void ApplyEquipmentEffect(bool forward) { ItemUtils.ApplyEffectsToStats(this._item._equipedStatEffect, forward, 1); }