static public Dictionary <int, int> GenerateRandomItemList() { List <int> storeItems = UIDrawer.GetStoreItems(); Dictionary <int, int> itemPrices = new Dictionary <int, int>(); List <int> allPrices = new List <int>() { Data.tier1Price, Data.tier2Price, Data.tier3Price, Data.bossPrice, Data.lunarPrice, Data.equipmentPrice, Data.lunarEquipmentPrice, Data.eliteEquipmentPrice, }; List <int> equipmentPrices = new List <int>() { Data.equipmentPrice, Data.lunarEquipmentPrice, Data.eliteEquipmentPrice, }; foreach (int itemID in storeItems) { int itemPrice = Data.GetItemPrice(itemID); itemPrices.Add(itemID, itemPrice); } int points = GetPoints(); Dictionary <int, int> itemsPurchased = new Dictionary <int, int>(); bool equipmentGiven = false; System.Random random = new System.Random(); ReduceItemList(points, equipmentGiven, allPrices, equipmentPrices, itemPrices); while (allPrices.Count > 0) { List <int> availableItems = itemPrices.Keys.ToList(); int nextItem = availableItems[random.Next(availableItems.Count)]; if (!itemsPurchased.ContainsKey(nextItem)) { itemsPurchased.Add(nextItem, 0); } int itemPrice = Data.GetItemPrice(nextItem); int itemsGiven = random.Next(1, Mathf.Min(Mathf.FloorToInt(points / itemPrice) + 1, GetCountRange(nextItem) + 1)); itemsPurchased[nextItem] += itemsGiven; points -= itemPrice * itemsGiven; if (Data.allEquipmentIDs.ContainsKey(nextItem)) { equipmentGiven = true; } ReduceItemList(points, equipmentGiven, allPrices, equipmentPrices, itemPrices); } return(itemsPurchased); }