public ItemBonuses Build(ItemStatsBalance itemStatsBalance, int level, double additionalKoef)
        {
            var minBonusesCount = itemStatsBalance.GetMinItemBonusesCount(level);
            var maxBonusesCount = itemStatsBalance.GetMaxItemBonusesCount(level);
            var bonusesCount    = Dice.GetRange(minBonusesCount, maxBonusesCount);

            var itemBonusesBuilder = new ItemBonusesBuilder(itemStatsBalance, level);

            foreach (var itemBonuseEnum in itemStatsBalance.PossibleItemBonuses.TakeRandom(bonusesCount))
            {
                itemBonusesBuilder.Calculate(itemBonuseEnum, ItemFactory.RollItemDamageKoef(additionalKoef));
            }

            return(itemBonusesBuilder.Build());
        }
 public ItemBonusesBuilder(ItemStatsBalance itemStatsBalance, int level)
 {
     Level             = level;
     _itemStatsBalance = itemStatsBalance;
     _itemBonuses      = new ItemBonuses();
 }