public TierName[] GetRollTiers(GamePlayer player, Random random) { var shopLength = player.Shop.Length; var resultTiers = new TierName[shopLength]; var tierChances = TierInfo.GetChances(player.Lvl); for (var i = 0; i < shopLength; i++) { var randomNum = random.Next(1, 101); var temp = 0; for (var j = 0; j < tierChances.Length; j++) { var tierChance = tierChances[j]; if (randomNum <= tierChance + temp) { while ( this[(TierName)j].Count - resultTiers.Count(item => (int)item == j) == 0 ) { j--; } resultTiers[i] = (TierName)j; break; } temp += tierChance; } } return(resultTiers); }