public void WeaponsThatAreBothMeleeAndRangedGetRandomlyBetweenTables()
        {
            itemAttributes.Add(AttributeConstants.Melee);
            itemAttributes.Add(AttributeConstants.Ranged);

            var tableName = string.Format(TableNameConstants.Percentiles.Formattable.POWERATTRIBUTESpecialAbilities, power, AttributeConstants.Melee);

            mockPercentileSelector.Setup(p => p.SelectAllFrom(tableName)).Returns(new[] { "melee ability" });
            tableName = string.Format(TableNameConstants.Percentiles.Formattable.POWERATTRIBUTESpecialAbilities, power, AttributeConstants.Ranged);
            mockPercentileSelector.Setup(p => p.SelectAllFrom(tableName)).Returns(new[] { "ranged ability" });

            var meleeResult = new SpecialAbilityAttributesResult();

            meleeResult.BaseName = "melee ability";
            mockSpecialAbilityAttributesSelector.Setup(s => s.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributes, meleeResult.BaseName)).Returns(meleeResult);
            mockCollectionsSelector.Setup(p => p.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributeRequirements, meleeResult.BaseName)).Returns(itemAttributes);

            var rangedResult = new SpecialAbilityAttributesResult();

            rangedResult.BaseName = "ranged ability";
            mockSpecialAbilityAttributesSelector.Setup(s => s.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributes, rangedResult.BaseName)).Returns(rangedResult);
            mockCollectionsSelector.Setup(p => p.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributeRequirements, rangedResult.BaseName)).Returns(itemAttributes);

            mockDice.SetupSequence(d => d.Roll(1).d(2).AsSum()).Returns(1).Returns(2);

            var abilities = specialAbilitiesGenerator.GenerateFor(ItemTypeConstants.Armor, itemAttributes, power, 1, 2);
            var names     = abilities.Select(a => a.Name);

            Assert.That(names, Contains.Item("melee ability"));
            Assert.That(names, Contains.Item("ranged ability"));
            Assert.That(names.Count(), Is.EqualTo(2));
        }
Esempio n. 2
0
        public SpecialAbilityAttributesResult SelectFrom(string tableName, string name)
        {
            var attributes = innerSelector.SelectFrom(tableName, name).ToList();

            if (attributes.Count < 3)
            {
                throw new Exception("Attributes are not formatted for special abilities");
            }

            var result = new SpecialAbilityAttributesResult();

            result.BaseName        = attributes[1];
            result.BonusEquivalent = Convert.ToInt32(attributes[0]);
            result.Power           = Convert.ToInt32(attributes[2]);

            return(result);
        }
        private void CreateSpecialAbility(string name, string baseName = "", int bonus = 0, int power = 0)
        {
            var result = new SpecialAbilityAttributesResult();

            if (string.IsNullOrEmpty(baseName))
            {
                result.BaseName = name;
            }
            else
            {
                result.BaseName = baseName;
            }

            result.BonusEquivalent = bonus;
            result.Power           = power;
            names.Add(name);

            mockSpecialAbilityAttributesSelector.Setup(s => s.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributes, name)).Returns(result);
            mockCollectionsSelector.Setup(p => p.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributeRequirements, result.BaseName)).Returns(itemAttributes);
        }