private static bool Prefix(DragDropCraftingPanel __instance) { if (!LoaderConfig.Instance.FreeCrafting) { return(true); } ProtoCraft instanceField = Util.GetInstanceField <ProtoCraft>(__instance, "_currentCraft"); int _craftMultiplier = Util.GetInstanceField <int>(__instance, "_craftMultiplier"); if (instanceField != null) { if (LoaderConfig.Instance.AvoidCraftNotice) { GameInventoryHelper.AddItem(instanceField.Result, instanceField.ResultCount * _craftMultiplier, false, false); } else { instanceField.Components.ForEach(delegate(CraftComponent comp) { ProtoItem item = comp.ValidItems.PickRandom <ProtoItem>(); int num = comp.RequiredCount * _craftMultiplier; if (!GameInventoryHelper.ContainsItem(item, num, false)) { GameInventoryHelper.AddItem(item, num, false, false); } }); } return(false); } return(true); }
/// <summary> /// Set the transmission state of this SyncState object to synced, and recache its Outlook item. /// </summary> internal void SetSynced() { lock (this.txStateLock) { this.Cache = this.CreateProtoItem(this.OutlookItem); this.TxState = TransmissionState.Synced; this.OModifiedDate = DateTime.UtcNow; } }
public static ProtoCraft getProtoCraft(ProtoItem item) { ProtoCraft result = null; foreach (ProtoCraft protoCraft in Loader.GetGameCraftings().Values) { if (protoCraft.Result == item) { result = protoCraft; break; } } return(result); }
public static void Postfix(Builder __instance, string protoItemName, Vector3i location, Matrix3i rotation, int quickSlotUsed = -1, JSONClass uniqueData = null, int _buildCount = 0) { if (__instance == Player.Local.Builder && LoaderConfig.Instance.InfiniteItem) { UMFGUI.AddConsoleText("Placed: " + protoItemName, false); ProtoItem protoItemByName = ProtoDatabase.GetProtoItemByName(protoItemName, Array.Empty <FindOptions>()); ProtoItemBlock protoItemBlock = protoItemByName as ProtoItemBlock; if (!protoItemName.Contains("hearthstone_white_item")) { protoItemBlock.GetProtoBlock(); GameInventoryHelper.AddItem(protoItemByName, (_buildCount != 0) ? _buildCount : 1, true, false); } } }
public static bool tryGetItemIndexEnough(ProtoItem protoItem, Inventory inv, out short slot, bool isQuickSlot) { for (int i = 0; i < (isQuickSlot ? getInventoryQuickSlotItems().Count : getInventoryItems().Count); i++) { ItemStack itemStack = isQuickSlot ? getInventoryQuickSlotItems()[i] : getInventoryItems()[i]; int num = (itemStack != null) ? ItemStack.MaxStackCountForProtoItem(itemStack.ProtoItem) : 0; if (itemStack.ProtoItem != null && (itemStack.ProtoItem == protoItem && itemStack.StackSize < num && num != 0)) { slot = (short)i; return(true); } } slot = (isQuickSlot ? inv.FirstEmptyQuickSlot() : inv.GetFirstEmptySlot(false)); return(false); }
public static bool ContainsItem(ProtoItem Item, bool quickSlot = false) { bool result = false; checked { for (int i = 0; i < ((!quickSlot) ? getInventoryItems().Count : getInventoryQuickSlotItems().Count); i++) { ItemStack itemStack = (!quickSlot) ? getInventoryItems()[i] : getInventoryQuickSlotItems()[i]; int num = (itemStack != null) ? ItemStack.MaxStackCountForProtoItem(itemStack.ProtoItem) : 0; if (itemStack != null && (itemStack.ProtoItem == Item && itemStack.StackSize < num && num != 0)) { result = true; break; } } return(result); } }
public void InitializesCorrectly() { var proto = new ProtoItem { Vnum = 25300, Keywords = "several keywords", Gender = Gender.Male, Name = new Name(), Look = "Look", Description = "Description" }; var item = new Item(proto); Assert.Equal(proto.Vnum, item.Vnum); Assert.Equal(proto.Keywords, item.Keywords); Assert.Equal(proto.Gender, item.Gender); Assert.Equal(proto.Name, item.Name); Assert.Equal(proto.Look, item.Look); Assert.Equal(proto.Description, item.Description); }
public static bool ContainsItem(ProtoItem Item, bool quickSlot = false) { var result = false; checked { for (var i = 0; i < (!quickSlot ? getInventoryItems().Count : getInventoryQuickSlotItems().Count); i++) { var itemStack = !quickSlot?getInventoryItems()[i] : getInventoryQuickSlotItems()[i]; var num = itemStack != null?ItemStack.MaxStackCountForProtoItem(itemStack.ProtoItem) : 0; if (itemStack != null && itemStack.ProtoItem == Item && itemStack.StackSize < num && num != 0) { result = true; break; } } return(result); } }
public static EntityComponentMessage AddItem(ProtoItem item, int Amount, bool isQuickSlot = false, bool simulateCraft = false) { if (Player.Local == null && !Player.Local.IsConnected) { return(null); } var inventory = Player.Local.Inventory; var num = ItemStack.MaxStackCountForProtoItem(item); var num2 = Amount >= num ? num : Amount; var itemStack = new ItemStack(item, num2); if (!ContainsItem(item, isQuickSlot)) { var num3 = isQuickSlot ? inventory.FirstEmptyQuickSlot() : inventory.GetFirstEmptySlot(); var inventoryAdd = new InventoryAdd(inventory, num3, itemStack, isQuickSlot); inventory.SendToServer(inventoryAdd); inventory.OnComponentMessage(inventoryAdd); if (simulateCraft) { AudioController.Play(Player.Local.Crafting.SfxCraft); NotificationCenter.Default.PostNotification(Player.CraftedSomethingEvent, getProtoCraft(item)); } if (inventoryAdd.Item.ProtoItem is ProtoItemEquipment) { var protoItemEquipment = (ProtoItemEquipment)inventoryAdd.Item.ProtoItem; var inventoryEquip = new InventoryEquip(inventory, true, inventoryAdd.Slot, protoItemEquipment.Slot, inventoryAdd.SlotIsQuickSlot); inventory.SendToServer(inventoryEquip); inventory.OnComponentMessage(inventoryEquip); } return(inventoryAdd); } short num4; if (tryGetItemIndexEnough(itemStack.ProtoItem, inventory, out num4, isQuickSlot)) { var inventoryModified = new InventoryModified(inventory, num4, (short)num2, isQuickSlot); inventory.SendToServer(inventoryModified); inventory.OnComponentMessage(inventoryModified); if (simulateCraft) { AudioController.Play(Player.Local.Crafting.SfxCraft); NotificationCenter.Default.PostNotification(Player.CraftedSomethingEvent, getProtoCraft(itemStack.ProtoItem)); } return(inventoryModified); } if (!tryGetItemIndexEnough(itemStack.ProtoItem, inventory, out num4, isQuickSlot)) { var inventoryAdd2 = new InventoryAdd(inventory, num4, itemStack, isQuickSlot); inventory.OnComponentMessage(inventoryAdd2); inventory.SendToServer(inventoryAdd2); if (simulateCraft) { AudioController.Play(Player.Local.Crafting.SfxCraft); NotificationCenter.Default.PostNotification(Player.CraftedSomethingEvent, getProtoCraft(itemStack.ProtoItem)); } if (inventoryAdd2.Item.ProtoItem is ProtoItemEquipment) { var protoItemEquipment2 = (ProtoItemEquipment)inventoryAdd2.Item.ProtoItem; var inventoryEquip2 = new InventoryEquip(inventory, true, inventoryAdd2.Slot, protoItemEquipment2.Slot, inventoryAdd2.SlotIsQuickSlot); inventory.SendToServer(inventoryEquip2); inventory.OnComponentMessage(inventoryEquip2); } return(inventoryAdd2); } return(null); }