public void ReturnSpecialAbilityAttributesResult()
        {
            var attributes = new[] { "42", "base name", "9266" };

            mockInnerSelector.Setup(s => s.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributes, "name")).Returns(attributes);

            var result = selector.SelectFrom("name");

            Assert.That(result.BaseName, Is.EqualTo("base name"));
            Assert.That(result.BonusEquivalent, Is.EqualTo(42));
            Assert.That(result.Power, Is.EqualTo(9266));
        }
Beispiel #2
0
        private SpecialAbility GetSpecialAbility(string abilityName)
        {
            var ability          = new SpecialAbility();
            var abilitySelection = specialAbilityDataSelector.SelectFrom(abilityName);

            ability.Name     = abilityName;
            ability.BaseName = abilitySelection.BaseName;
            ability.AttributeRequirements = collectionsSelector.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributeRequirements, ability.BaseName);
            ability.BonusEquivalent       = abilitySelection.BonusEquivalent;
            ability.Power = abilitySelection.Power;

            var damagesData = collectionsSelector.SelectFrom(TableNameConstants.Collections.Set.WeaponDamages, abilityName).ToArray();

            if (!damagesData.Any())
            {
                return(ability);
            }

            if (!string.IsNullOrEmpty(damagesData[0]))
            {
                var damageEntries = damageHelper.ParseEntries(damagesData[0]);

                foreach (var damageEntry in damageEntries)
                {
                    ability.Damages.Add(new Damage
                    {
                        Roll      = damageEntry[DataIndexConstants.Weapon.DamageData.RollIndex],
                        Type      = damageEntry[DataIndexConstants.Weapon.DamageData.TypeIndex],
                        Condition = damageEntry[DataIndexConstants.Weapon.DamageData.ConditionIndex],
                    });
                }
            }

            if (string.IsNullOrEmpty(damagesData[1]))
            {
                return(ability);
            }

            var multipliers = new[] { "x2", "x3", "x4" };

            for (var i = 1; i < damagesData.Length; i++)
            {
                var multiplier = multipliers[i - 1];
                ability.CriticalDamages[multiplier] = new List <Damage>();

                var criticalDamageEntries = damageHelper.ParseEntries(damagesData[i]);

                foreach (var criticalDamageEntry in criticalDamageEntries)
                {
                    var damage = new Damage
                    {
                        Roll      = criticalDamageEntry[DataIndexConstants.Weapon.DamageData.RollIndex],
                        Type      = criticalDamageEntry[DataIndexConstants.Weapon.DamageData.TypeIndex],
                        Condition = criticalDamageEntry[DataIndexConstants.Weapon.DamageData.ConditionIndex],
                    };

                    ability.CriticalDamages[multiplier].Add(damage);
                }
            }

            return(ability);
        }