public void NotCursedIfNoMagic()
        {
            mockBooleanPercentileSelector.Setup(s => s.SelectFrom(TableNameConstants.Percentiles.Set.IsItemCursed)).Returns(true);
            var cursed = curseGenerator.HasCurse(false);

            Assert.That(cursed, Is.False);
        }
        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);
        }