public void AddItemToInventory(Item newItem, ChestContents chest, int itemIndex) { bool breakLoop = false; bool sucessfullyAddedItem = false; for (int i = 0; i < inventory.Count; i++) { if (inventory[i] == null) { switch (newItem.itemType) { case Item.ItemType.Consumable: Consumable inventoryConsumable = Instantiate <Consumable>((Consumable)(newItem)); Consumable tempConsumable = (Consumable)newItem; tempConsumable.CopyTo(out inventoryConsumable); inventory[i] = tempConsumable; breakLoop = true; sucessfullyAddedItem = true; chest.contents[itemIndex] = null; break; case Item.ItemType.Armor: break; default: break; } } else if (inventory[i].itemName == newItem.itemName) { if (itemNumberInStack[i] <= inventory[i].stackLimit - chest.itemNumberInStack[itemIndex]) { itemNumberInStack[i] += chest.itemNumberInStack[itemIndex]; breakLoop = true; sucessfullyAddedItem = true; } else { while (itemNumberInStack[i] < inventory[i].stackLimit) { itemNumberInStack[i]++; chest.itemNumberInStack[itemIndex]--; breakLoop = true; } } } if (breakLoop) { break; } } if (!sucessfullyAddedItem) { inventory.Add(newItem); itemNumberInStack.Add(chest.itemNumberInStack[itemIndex]); chest.RemoveItem(itemIndex); } AutoSortInventory(); }