public Item Generate(string power, string itemName, params string[] traits)
        {
            if (curseGenerator.IsSpecificCursedItem(itemName))
            {
                return(curseGenerator.Generate(itemName, traits));
            }

            var item = innerGenerator.Generate(power, itemName, traits);

            if (curseGenerator.HasCurse(item))
            {
                var canBeSpecific = curseGenerator.CanBeSpecificCursedItem(itemName);

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

                if (item.Magic.Curse == TableNameConstants.Percentiles.Set.SpecificCursedItems && canBeSpecific)
                {
                    var cursedItem = curseGenerator.Generate(itemName, traits);
                    return(cursedItem);
                }
            }

            return(item);
        }
        public void TemplateHasCurse()
        {
            var name     = Guid.NewGuid().ToString();
            var template = itemVerifier.CreateRandomTemplate(name);

            var cursedItems = new[] { "other cursed item", name };

            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Collections.Set.ItemGroups, CurseConstants.SpecificCursedItem)).Returns(cursedItems);

            var isCursed = curseGenerator.IsSpecificCursedItem(template);

            Assert.That(isCursed, Is.True);
        }
        public Item Generate(Item template, bool allowRandomDecoration = false)
        {
            if (curseGenerator.IsSpecificCursedItem(template))
            {
                return(curseGenerator.GenerateSpecificCursedItem(template));
            }

            var item = innerGenerator.Generate(template, allowRandomDecoration);

            if (allowRandomDecoration && curseGenerator.HasCurse(item.IsMagical))
            {
                do
                {
                    item.Magic.Curse = curseGenerator.GenerateCurse();
                }while (item.Magic.Curse == TableNameConstants.Percentiles.Set.SpecificCursedItems);
            }

            return(item);
        }