public void GenerateCurseGetsFromPercentileSelector()
        {
            mockPercentileSelector.Setup(s => s.SelectFrom(TableNameConstants.Percentiles.Set.Curses)).Returns("curse");

            var curse = curseGenerator.GenerateCurse();

            Assert.That(curse, Is.EqualTo("curse"));
        }
        public Item GenerateAtPower(string power)
        {
            var item = innerGenerator.GenerateAtPower(power);

            if (curseGenerator.HasCurse(item.IsMagical))
            {
                var curse = curseGenerator.GenerateCurse();
                if (curse == TableNameConstants.Percentiles.Set.SpecificCursedItems)
                {
                    return(curseGenerator.GenerateSpecificCursedItem());
                }

                item.Magic.Curse = curse;
            }

            return(item);
        }
        public Item GenerateRandom(string power)
        {
            var item = innerGenerator.GenerateRandom(power);

            if (curseGenerator.HasCurse(item))
            {
                var canBeSpecific = curseGenerator.ItemTypeCanBeSpecificCursedItem(item.ItemType);

                do
                {
                    item.Magic.Curse = curseGenerator.GenerateCurse();
                }while (item.Magic.Curse == TableNameConstants.Percentiles.Set.SpecificCursedItems && !canBeSpecific);

                if (item.Magic.Curse == TableNameConstants.Percentiles.Set.SpecificCursedItems && canBeSpecific)
                {
                    return(curseGenerator.GenerateSpecificCursedItem(item.ItemType));
                }
            }

            return(item);
        }