Example #1
0
        public void ConfiguresTheAttacksBasedOnAttributesOfTheCharacter()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var claws    = new Claws();

            sorcerer.Add(claws);

            Assert.Equal(2, claws.NumberOfAttacks);
            Assert.Equal(2, claws.CriticalModifier.TotalValue);
            Assert.Equal(20, claws.CriticalThreat);
            Assert.Equal(AttackTypes.Special, claws.AttackType);
            Assert.Equal(0, claws.SaveDC);
            Assert.Equal(0, claws.Range);

            Assert.Equal(3, claws.RoundsPerDay);
            sorcerer.AbilityScores.SetScore(AbilityScoreTypes.Charisma, 16);
            Assert.Equal(6, claws.RoundsPerDay);

            Assert.Equal("1d4", claws.Damage.ToString());
            sorcerer.AbilityScores.SetScore(AbilityScoreTypes.Strength, 16);
            Assert.Equal("1d4+3", claws.Damage.ToString());

            Assert.Equal(3, claws.AttackBonus.TotalValue);

            Assert.Equal("2 claws +3 (1d4+3) 6 rounds/day", claws.DisplayString());
        }
Example #2
0
        public void ProvidesDamageBasedOnEnergyType()
        {
            var sorcerer   = CharacterTestTemplates.Sorcerer();
            var dragonType = new DragonType();

            dragonType.EnergyType  = "cold";
            dragonType.BreathRange = 30;
            dragonType.BreathShape = "cone";
            var draconic = new Mock <IDraconicBloodline>();

            draconic.Setup(x => x.DragonType).Returns(dragonType);
            sorcerer.Add(draconic.Object);

            sorcerer.SetLevel(10);

            var breath = new BreathWeapon();

            sorcerer.Add(breath);

            Assert.Equal("10d6", breath.Damage.ToString());
            Assert.Equal(15, breath.SaveDC);
            sorcerer.AbilityScores.SetScore(AbilityScoreTypes.Charisma, 16);
            Assert.Equal(18, breath.SaveDC);

            Assert.Equal(1, breath.UsesPerDay);
            Assert.Equal("Breath Weapon (30' cone, 10d6 cold, DC 18, 1/day)", breath.DisplayString());
        }
Example #3
0
 public ElementalRayTests()
 {
     sorcerer        = CharacterTestTemplates.Sorcerer();
     type            = new ElementalType();
     type.EnergyType = "acid";
     sorcerer.Add(type);
     ray = new ElementalRay();
     sorcerer.Add(ray);
 }
Example #4
0
        public void AddsDRToSummonedCreaturesBasedOnLevel()
        {
            var arcana   = new CelestialArcana();
            var sorcerer = CharacterTestTemplates.Sorcerer();

            sorcerer.SetLevel(6);
            sorcerer.Add(arcana);
            Assert.Equal("summoned creatures gain DR 3/evil", arcana.BonusAbility);
        }
Example #5
0
        public void FireDamageAddedAtEleventh()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var claws    = new Claws();

            sorcerer.Add(claws);
            sorcerer.SetLevel(11);
            Assert.Contains("1d6 fire", claws.DisplayString());
        }
Example #6
0
        public void MagicalAtFifthLevel()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var claws    = new Claws();

            sorcerer.Add(claws);
            sorcerer.SetLevel(5);
            Assert.Contains("magical", claws.DisplayString());
        }
Example #7
0
        public void DamageIncreasesAt7ThLevel()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var claws    = new Claws();

            sorcerer.Add(claws);
            sorcerer.SetLevel(7);
            Assert.Equal("1d6", claws.Damage.ToString());
        }
Example #8
0
        public void AttackDamageIsBasedOnSizeOfCharacter()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var claws    = new Claws();

            sorcerer.Add(claws);
            sorcerer.Size.SetSize(CharacterSize.Small, 10, 10);
            Assert.Equal("1d3", claws.Damage.ToString());
        }
Example #9
0
        public void PicksASchoolToSuperCharge()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var school   = new SchoolPower();

            sorcerer.Add(school);
            Assert.NotNull(school.School);
            Assert.Equal("School Power (+2 DC for " + school.School.Name + " spells)", school.DisplayString());
        }
Example #10
0
        public void GrantsImmunityToCriticalsAndSneakAttacks()
        {
            var sorc     = CharacterTestTemplates.Sorcerer();
            var aberrant = new AberrantForm();

            sorc.Add(aberrant);
            AssertCharacter.IsImmuneTo("Criticals", sorc);
            AssertCharacter.IsImmuneTo("Sneak Attacks", sorc);
        }
Example #11
0
        public void ProvidesImmunities()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();

            sorcerer.SetLevel(20);
            sorcerer.Add(new SoulOfTheFey());
            AssertCharacter.IsImmuneTo("poison", sorcerer);
            AssertCharacter.HasDamageResistance(sorcerer, "cold iron", 10);
        }
Example #12
0
        public void OncePerDayUntilLevelSeventeen()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var meant    = new ItWasMeantToBe();

            sorcerer.Add(meant);
            Assert.Equal(1, meant.UsesPerDay);
            sorcerer.SetLevel(17);
            Assert.Equal(2, meant.UsesPerDay);
        }
Example #13
0
        public void AddsDRToSummonedCreaturesBasedOnLevel()
        {
            var arcana   = new AbyssalArcana();
            var sorcerer = CharacterTestTemplates.Sorcerer();

            sorcerer.SetLevel(6);
            sorcerer.Add(arcana);
            Assert.Equal("summoned creatures gain DR 3/good", arcana.BonusAbility);
            Assert.Equal("Abyssal Arcana (summoned creatures gain DR 3/good)", arcana.DisplayString());
        }
Example #14
0
        public void GrantsBlindSenseSixtyFeet()
        {
            var sorc     = CharacterTestTemplates.Sorcerer();
            var aberrant = new AberrantForm();

            sorc.Add(aberrant);
            var sense = sorc.GetAll <ISense>().First(x => x is Blindsight);

            Assert.Equal("Blindsight 50ft", sense.DisplayString());
        }
Example #15
0
        public void AddsALearnSpellToken()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();

            sorcerer.SetLevel(9);
            var newArcana = new NewArcana();

            sorcerer.Add(newArcana);
            Assert.True(sorcerer.Contains <LearnSpellToken>());
        }
Example #16
0
        public void UsesPerDayBasedOnCharisma()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();

            sorcerer.AbilityScores.SetScore(AbilityScoreTypes.Charisma, 16);
            var laugh = new LaughingTouch();

            sorcerer.Add(laugh);
            Assert.Equal(6, laugh.UsesPerDay);
        }
Example #17
0
        public void WingsOfHeavenLastForLevelNumberOfMinutesPerDay()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var wings    = new WingsOfHeaven();

            sorcerer.Add(wings);
            sorcerer.SetLevel(10);
            Assert.Equal(10, wings.MinutesPerDay);
            Assert.Equal("Wings Of Heaven (10 minutes/day)", wings.DisplayString());
        }
Example #18
0
        public void RoundsPerDayBasedOnLevel()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();

            sorcerer.SetLevel(15);
            var glance = new FleetingGlance();

            sorcerer.Add(glance);
            Assert.Equal(15, glance.RoundsPerDay);
        }
Example #19
0
        public void AddsMoreTokensAtLaterLevels()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();

            sorcerer.SetLevel(9);
            var newArcana = new NewArcana();

            sorcerer.Add(newArcana);
            Assert.Equal(1, sorcerer.GetAll <LearnSpellToken>().Count());
        }
Example #20
0
        public void IncreasesStrengthAndGrowsWithLevels()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();

            sorcerer.Add(new StrengthOfTheAbyss());
            Assert.Equal(12, sorcerer.AbilityScores.GetScore(AbilityScoreTypes.Strength));
            sorcerer.SetLevel(13);
            Assert.Equal(14, sorcerer.AbilityScores.GetScore(AbilityScoreTypes.Strength));
            sorcerer.SetLevel(17);
            Assert.Equal(16, sorcerer.AbilityScores.GetScore(AbilityScoreTypes.Strength));
        }
Example #21
0
        public void AddsSpellResistanceEqualToLevelPlusTen()
        {
            var character = CharacterTestTemplates.Sorcerer();
            var alien     = new AlienResistance();

            character.Add(alien);
            character.SetLevel(5);
            var defense = character.Get <DefenseStats>();

            Assert.Equal(15, defense.SpellResistance.TotalValue);
        }
Example #22
0
        public void UnlimitedMinutesIfAscended()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var wings    = new WingsOfHeaven();

            sorcerer.Add(wings);
            sorcerer.Add(new Ascension());
            sorcerer.SetLevel(10);
            Assert.Equal(int.MaxValue, wings.MinutesPerDay);
            Assert.Equal("Wings Of Heaven (unlimited minutes/day)", wings.DisplayString());
        }
Example #23
0
        public void GrantsDamageResistanceFive()
        {
            var sorc     = CharacterTestTemplates.Sorcerer();
            var aberrant = new AberrantForm();

            sorc.Add(aberrant);
            var dr = sorc.Defense.EnergyResistance.First();

            Assert.Equal(5, dr.Amount);
            Assert.Equal("-", dr.DamageType);
        }
Example #24
0
        public void RoundsPerDayBasedOnSorcererLevel()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var incForm  = new IncorporealForm();

            sorcerer.Add(incForm);


            Assert.Equal(1, incForm.RoundsPerDay);
            sorcerer.SetLevel(15);
            Assert.Equal(15, incForm.RoundsPerDay);
        }
Example #25
0
        public void ProvidesImmunities()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var power    = new PowerOfThePit();

            sorcerer.Add(power);

            AssertCharacter.HasDamageResistance(sorcerer, "acid", 10);
            AssertCharacter.HasDamageResistance(sorcerer, "cold", 10);
            AssertCharacter.IsImmuneTo("fire", sorcerer);
            AssertCharacter.IsImmuneTo("poison", sorcerer);
        }
Example #26
0
        public void GrantsImmunitiesBasedOnElementType()
        {
            var sorcerer    = CharacterTestTemplates.Sorcerer();
            var elementType = new ElementalType();

            elementType.EnergyType = "acid";
            sorcerer.Add(elementType);
            sorcerer.Add(new ElementalBody());

            AssertCharacter.IsImmuneTo("acid", sorcerer);
            AssertCharacter.IsImmuneTo("sneak attacks", sorcerer);
            AssertCharacter.IsImmuneTo("critical hits", sorcerer);
        }
Example #27
0
        public void SomeRayPropertiesAreBasedOnCharacter()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var ray      = new AcidicRay();

            sorcerer.Add(ray);
            sorcerer.AbilityScores.SetScore(AbilityScoreTypes.Charisma, 16);
            sorcerer.SetLevel(4);
            Assert.Equal(6, ray.UsesPerDay);
            Assert.Equal("1d6+2", ray.Damage.ToString());
            Assert.Equal(0, ray.AttackBonus.TotalValue);
            Assert.Equal("6/day Acidic Ray +0 (1d6+2 acid) 30'", ray.DisplayString());
        }
Example #28
0
        public void ChoosesADragonTypeWhenAdded()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer().WithSkills();
            var draconic = DraconicBloodline.Create("draconic",
                                                    new string[] { "perception" },
                                                    new Dictionary <int, string>(),
                                                    new Dictionary <int, string>(),
                                                    new string[] { });

            sorcerer.Add(draconic);
            Assert.NotNull(draconic.DragonType);
            Assert.Equal(string.Format("Draconic Bloodline ({0})", draconic.DragonType.Name), draconic.DisplayString());
        }
Example #29
0
        public void AddsDRAndImmunities()
        {
            var sorcerer = CharacterTestTemplates.Sorcerer();
            var might    = new DemonicMight();

            sorcerer.Add(might);

            AssertExtensions.Contains("acid", sorcerer.Defense.EnergyResistance.Select(x => x.DamageType));
            AssertExtensions.Contains("cold", sorcerer.Defense.EnergyResistance.Select(x => x.DamageType));
            AssertExtensions.Contains("fire", sorcerer.Defense.EnergyResistance.Select(x => x.DamageType));
            AssertCharacter.IsImmuneTo("electricity", sorcerer);
            AssertCharacter.IsImmuneTo("poison", sorcerer);
        }
Example #30
0
        public PowerOfWyrmsTests()
        {
            sorcerer = CharacterTestTemplates.Sorcerer();
            power    = new PowerOfWyrms();
            var draconicBloodline = new Mock <IDraconicBloodline>();
            var dragonType        = new DragonType();

            dragonType.EnergyType = "electricity";
            draconicBloodline.Setup(x => x.DragonType).Returns(dragonType);

            sorcerer.Add(draconicBloodline.Object);
            sorcerer.Add(power);
        }