private void Update() { bool flag = !this._heldStorage || this._heldStorage.UsedSlots.Count > 0; if (this._nextSteal < Time.realtimeSinceStartup) { if (TheForest.Utils.Input.GetButtonAfterDelay("Take", 0.5f, false)) { this._nextSteal = Time.realtimeSinceStartup + 5f; LocalPlayer.Sfx.PlayWhoosh(); if (this._entity.isAttached && this._entity.source != LocalPlayer.Entity.source) { StealItem stealItem = StealItem.Create(this._entity.source); stealItem.thief = LocalPlayer.Entity; stealItem.robbed = this._entity; stealItem.Send(); } else { ItemStorage componentInParent = this._entity.GetComponentInParent <ItemStorage>(); if (componentInParent) { bool useAltWorldPrefab = LocalPlayer.Inventory.UseAltWorldPrefab; LocalPlayer.Inventory.UseAltWorldPrefab = true; for (int i = 0; i < componentInParent.UsedSlots.Count; i++) { LocalPlayer.Inventory.AddItem(componentInParent.UsedSlots[i]._itemId, componentInParent.UsedSlots[i]._amount, componentInParent.UsedSlots[i]._itemId != LocalPlayer.Inventory._defaultWeaponItemId, false, componentInParent.UsedSlots[i]._properties); } LocalPlayer.Inventory.FixMaxAmountBonuses(); if (this._entity.isAttached) { BoltNetwork.Destroy(componentInParent.gameObject); } else { UnityEngine.Object.Destroy(componentInParent.gameObject); } LocalPlayer.Inventory.UseAltWorldPrefab = useAltWorldPrefab; } } this._sheenIcon.SetActive(false); this._pickupIcon.SetActive(false); base.gameObject.SetActive(false); base.enabled = false; } else if (!this._pickupIcon.activeSelf != flag || this._sheenIcon.activeSelf) { this._sheenIcon.SetActive(false); this._pickupIcon.SetActive(flag); } } else if (this._pickupIcon.activeSelf || this._sheenIcon.activeSelf != flag) { this._sheenIcon.SetActive(flag); this._pickupIcon.SetActive(false); } }
private void Update() { if (this._nextSteal < Time.realtimeSinceStartup) { if (TheForest.Utils.Input.GetButtonAfterDelay("Take", 0.5f)) { this._nextSteal = Time.realtimeSinceStartup + 5f; LocalPlayer.Sfx.PlayWhoosh(); if (this._entity.isAttached && this._entity.source != LocalPlayer.Entity.source) { StealItem stealItem = StealItem.Create(this._entity.source); stealItem.thief = LocalPlayer.Entity; stealItem.robbed = this._entity; stealItem.Send(); } else { ItemStorage componentInParent = this._entity.GetComponentInParent <ItemStorage>(); if (componentInParent) { bool useAltProjectile = LocalPlayer.Inventory.UseAltProjectile; LocalPlayer.Inventory.UseAltProjectile = true; for (int i = 0; i < componentInParent.UsedSlots.Count; i++) { LocalPlayer.Inventory.AddItem(componentInParent.UsedSlots[i]._itemId, componentInParent.UsedSlots[i]._amount, true, false, (WeaponStatUpgrade.Types)(-2)); if (componentInParent.UsedSlots[i]._maxAmountBonus > 0) { LocalPlayer.Inventory.SetMaxAmountBonus(componentInParent.UsedSlots[i]._itemId, componentInParent.UsedSlots[i]._maxAmountBonus); } } if (this._entity.isAttached) { BoltNetwork.Destroy(componentInParent.gameObject); } else { UnityEngine.Object.Destroy(componentInParent.gameObject); } LocalPlayer.Inventory.UseAltProjectile = useAltProjectile; } } this._sheenIcon.SetActive(false); this._pickupIcon.SetActive(false); base.gameObject.SetActive(false); } else if (!this._pickupIcon.activeSelf) { this._sheenIcon.SetActive(false); this._pickupIcon.SetActive(true); } } else if (this._pickupIcon.activeSelf) { this._sheenIcon.SetActive(true); this._pickupIcon.SetActive(false); } }
public override void OnEvent(StealItem evnt) { if (BoltNetwork.isServer && evnt.robbed != LocalPlayer.Entity) { StealItem stealItem = StealItem.Create(evnt.robbed.source); stealItem.thief = evnt.thief; stealItem.robbed = evnt.robbed; stealItem.Send(); } else if (evnt.robbed == LocalPlayer.Entity) { if (!LocalPlayer.Inventory.IsRightHandEmpty()) { ItemStorageProxy component = LocalPlayer.Inventory.RightHand._held.GetComponent <ItemStorageProxy>(); if (component) { for (int i = 0; i < component._storage.UsedSlots.Count; i++) { PlayerAddItem playerAddItem = PlayerAddItem.Create(GlobalTargets.OnlyServer); playerAddItem.Player = evnt.thief; playerAddItem.ItemId = component._storage.UsedSlots[i]._itemId; playerAddItem.Amount = component._storage.UsedSlots[i]._amount; playerAddItem.Send(); } component._storage.Close(); component._storage.UsedSlots.Clear(); component._storage.UpdateContentVersion(); component.CheckContentVersion(); } else { PlayerAddItem playerAddItem = PlayerAddItem.Create(GlobalTargets.OnlyServer); playerAddItem.Player = evnt.thief; playerAddItem.ItemId = LocalPlayer.Inventory.RightHand._itemId; playerAddItem.Send(); LocalPlayer.Inventory.UnequipItemAtSlot(Item.EquipmentSlot.RightHand, false, false, false); } } } else if (evnt.robbed.source == LocalPlayer.Entity.source) { ItemStorage component2 = evnt.robbed.GetComponent <ItemStorage>(); if (component2) { for (int j = 0; j < component2.UsedSlots.Count; j++) { PlayerAddItem playerAddItem2 = PlayerAddItem.Create(GlobalTargets.OnlyServer); playerAddItem2.Player = evnt.thief; playerAddItem2.ItemId = component2.UsedSlots[j]._itemId; playerAddItem2.Amount = component2.UsedSlots[j]._amount; playerAddItem2.Send(); } BoltNetwork.Destroy(component2.gameObject); } } }
public override void OnEvent(StealItem evnt) { if (BoltNetwork.isServer && evnt.robbed != LocalPlayer.Entity) { StealItem stealItem = StealItem.Create(evnt.robbed.source); stealItem.thief = evnt.thief; stealItem.robbed = evnt.robbed; stealItem.Send(); } else if (evnt.robbed == LocalPlayer.Entity) { if (!LocalPlayer.Inventory.IsRightHandEmpty()) { ItemStorageProxy component = LocalPlayer.Inventory.RightHand._held.GetComponent <ItemStorageProxy>(); if (component) { for (int i = 0; i < component._storage.UsedSlots.Count; i++) { PlayerAddItem playerAddItem = PlayerAddItem.Create(GlobalTargets.OnlyServer); playerAddItem.Player = evnt.thief; playerAddItem.ItemId = component._storage.UsedSlots[i]._itemId; playerAddItem.Amount = component._storage.UsedSlots[i]._amount; component._storage.UsedSlots[i]._properties.Fill(playerAddItem); playerAddItem.Send(); Item item = ItemDatabase.ItemById(playerAddItem.ItemId); if (item.MatchType(Item.Types.Weapon)) { EventRegistry.Achievements.Publish(TfEvent.Achievements.SharedWeapon, null); } else if (item.MatchType(Item.Types.Edible)) { EventRegistry.Achievements.Publish(TfEvent.Achievements.SharedEdible, null); } } component._storage.Close(); component._storage.UsedSlots.Clear(); component._storage.UpdateContentVersion(); component.CheckContentVersion(); } else { PlayerAddItem playerAddItem = PlayerAddItem.Create(GlobalTargets.OnlyServer); playerAddItem.Player = evnt.thief; playerAddItem.ItemId = LocalPlayer.Inventory.RightHand._itemId; LocalPlayer.Inventory.RightHand.Properties.Fill(playerAddItem); playerAddItem.Send(); LocalPlayer.Inventory.UnequipItemAtSlot(Item.EquipmentSlot.RightHand, false, false, false); } } } else if (evnt.robbed.source == LocalPlayer.Entity.source) { ItemStorage component2 = evnt.robbed.GetComponent <ItemStorage>(); if (component2) { for (int j = 0; j < component2.UsedSlots.Count; j++) { PlayerAddItem playerAddItem2 = PlayerAddItem.Create(GlobalTargets.OnlyServer); playerAddItem2.Player = evnt.thief; playerAddItem2.ItemId = component2.UsedSlots[j]._itemId; playerAddItem2.Amount = component2.UsedSlots[j]._amount; playerAddItem2.Send(); } BoltNetwork.Destroy(component2.gameObject); } } }