Esempio n. 1
0
        public void CreaturesWithCasterHaveSpellAttack(string creature)
        {
            var attacks   = attackSelector.Select(creature, SizeConstants.Medium, SizeConstants.Medium);
            var hasCaster = table[creature].Any();

            Assert.That(attacks.Any(a => a.Name == "Spells"), Is.EqualTo(hasCaster));
        }
Esempio n. 2
0
        public IEnumerable <Attack> GenerateAttacks(string creatureName, string originalSize, string size, int baseAttackBonus, Dictionary <string, Ability> abilities, int hitDiceQuantity)
        {
            var attackSelections = attackSelector.Select(creatureName, originalSize, size);
            var sizeModifier     = adjustmentsSelector.SelectFrom <int>(TableNameConstants.Adjustments.SizeModifiers, size);
            var attacks          = new List <Attack>();

            foreach (var attackSelection in attackSelections)
            {
                var attack = new Attack();
                attacks.Add(attack);

                attack.Damages      = attackSelection.Damages;
                attack.DamageEffect = attackSelection.DamageEffect;
                attack.DamageBonus  = GetDamageBonus(abilities, attackSelection.DamageBonusMultiplier);
                attack.Name         = attackSelection.Name;
                attack.IsMelee      = attackSelection.IsMelee;
                attack.IsNatural    = attackSelection.IsNatural;
                attack.IsPrimary    = attackSelection.IsPrimary;
                attack.IsSpecial    = attackSelection.IsSpecial;
                attack.AttackType   = attackSelection.AttackType;

                attack.Frequency            = new Frequency();
                attack.Frequency.Quantity   = attackSelection.FrequencyQuantity;
                attack.Frequency.TimePeriod = attackSelection.FrequencyTimePeriod;

                if (!string.IsNullOrEmpty(attackSelection.SaveAbility) || !string.IsNullOrEmpty(attackSelection.Save))
                {
                    attack.Save           = new SaveDieCheck();
                    attack.Save.BaseValue = 10 + attackSelection.SaveDcBonus;
                    attack.Save.Save      = attackSelection.Save;

                    //if (attack.IsNatural)
                    if (attack.IsNatural && !string.IsNullOrEmpty(attackSelection.SaveAbility))
                    {
                        attack.Save.BaseAbility = abilities[attackSelection.SaveAbility];
                        attack.Save.BaseValue  += hitDiceQuantity / 2;
                    }
                }

                attack.BaseAttackBonus = baseAttackBonus;
                attack.SizeModifier    = sizeModifier;
                attack.BaseAbility     = GetAbilityForAttack(abilities, attackSelection);
            }

            return(attacks);
        }