示例#1
0
        public void AuraOfCourageEnablesImmunityToFear()
        {
            var character = CharacterTestTemplates.AverageBob();

            character.Add(new AuraOfCourage());
            AssertCharacter.IsImmuneTo("Fear", character);
        }
示例#2
0
        public void ProvidesImmunityToPoison()
        {
            var monk = CharacterTestTemplates.MarkyMonk();

            monk.Add(new DiamondBody());
            AssertCharacter.IsImmuneTo("poison", monk);
        }
示例#3
0
        public void HasAttributesLoadedThatSpecifySpecialAbilities()
        {
            var c = CharacterTestTemplates.AverageBob();

            c.Add(dwarf);
            AssertCharacter.ContainsFeature("Darkvision", c);
        }
示例#4
0
 public void GrantsImmunities()
 {
     AssertCharacter.IsImmuneTo("cold", sorcerer);
     AssertCharacter.IsImmuneTo("paralysis", sorcerer);
     AssertCharacter.IsImmuneTo("nonlethal", sorcerer);
     AssertCharacter.IsImmuneTo("sleep", sorcerer);
 }
示例#5
0
        public void LevelsCanModifyStats()
        {
            var level     = new Level(fighter);
            var character = CharacterTestTemplates.AverageBob();

            character.Add(level);
            AssertCharacter.HasWillSave(1, "fear", character);
        }
示例#6
0
        public void EnergyResistanceOverTenThousandIsEqualToImmunity()
        {
            var dr        = new EnergyResistance(10000, "fire");
            var character = CharacterTestTemplates.AverageBob();

            character.Defense.AddDamageResistance(dr);
            AssertCharacter.IsImmuneTo("fire", character);
        }
示例#7
0
 public void GrantsResistanceToColdAndNonLethalDamage()
 {
     AssertCharacter.HasDamageReduction("- vs. nonlethal", 5, sorcerer);
     AssertCharacter.HasResistanceTo("cold", 5, sorcerer);
     sorcerer.SetLevel(9);
     gift.LeveledUp(sorcerer.Components);
     AssertCharacter.HasDamageReduction("- vs. nonlethal", 10, sorcerer);
     AssertCharacter.HasResistanceTo("cold", 10, sorcerer);
 }
示例#8
0
        public void GrantsImmunityToCriticalsAndSneakAttacks()
        {
            var sorc     = CharacterTestTemplates.Sorcerer();
            var aberrant = new AberrantForm();

            sorc.Add(aberrant);
            AssertCharacter.IsImmuneTo("Criticals", sorc);
            AssertCharacter.IsImmuneTo("Sneak Attacks", sorc);
        }
示例#9
0
        public void EnablesImmunityToDisease()
        {
            var character = CharacterTestTemplates.AverageBob();

            character.Add(new DivineHealth());
            var defense = character.Get <DefenseStats>();

            AssertCharacter.IsImmuneTo("Disease", character);
        }
示例#10
0
        public void DivineCastersKnowAllSpellsAvailableAtTime()
        {
            var cleric    = CharacterTestTemplates.Cleric().WithDivineCasting();
            var casting   = cleric.Get <DivineCasting>();
            var spellList = casting.SpellList;

            AssertCharacter.KnowsSpells(0, spellList.GetAllSpells(0), cleric);
            AssertCharacter.KnowsSpells(1, spellList.GetAllSpells(1), cleric);
        }
示例#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);
        }
示例#12
0
        public void GoodCreaturesTakeTurnUndead()
        {
            var wizard = CharacterTestTemplates.Wizard();

            wizard.Alignment = CharacterAlignment.ChaoticGood;
            var power = new PowerOverUndead();

            wizard.Add(power);
            AssertCharacter.HasFeatToken("Turn Undead", wizard);
        }
示例#13
0
        public void EvilCreaturesTakeCommandUndead()
        {
            var wizard = CharacterTestTemplates.Wizard();

            wizard.Alignment = CharacterAlignment.ChaoticEvil;
            var power = new PowerOverUndead();

            wizard.Add(power);
            AssertCharacter.HasFeatToken("Command Undead", wizard);
        }
示例#14
0
        public void CanBeMarkedAsImmunity()
        {
            var dr = new EnergyResistance(5, "fire");

            dr.SetToImmunity();
            var character = CharacterTestTemplates.AverageBob();

            character.Defense.AddDamageResistance(dr);
            AssertCharacter.IsImmuneTo("fire", character);
            Assert.Empty(character.Defense.EnergyResistance);
        }
示例#15
0
        public void MarksTheAppropriateSkillAsClassSkill()
        {
            var yaml      = @"---
skills: [Climb, Swim, Diplomacy]";
            var clsSkill  = new ClassSkills(yaml.ParseYaml());
            var character = CharacterTestTemplates.AverageBob().FullInitialize();

            character.Add(clsSkill);
            AssertCharacter.HasClassSkill("Climb", character);
            AssertCharacter.HasClassSkill("Swim", character);
            AssertCharacter.HasClassSkill("Diplomacy", character);
        }
示例#16
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);
        }
示例#17
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);
        }
示例#18
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);
        }
示例#19
0
        public void GrantsResistanceBasedOnEnergyType()
        {
            var sorcerer      = CharacterTestTemplates.Sorcerer();
            var elementalType = new ElementalType();

            elementalType.EnergyType = "cold";
            sorcerer.Add(elementalType);
            var resist = new ElementalResistance();

            sorcerer.Add(resist);

            AssertCharacter.HasDamageResistance(sorcerer, "cold", 10);
            sorcerer.SetLevel(9);
            resist.LeveledUp(sorcerer.Components);
            AssertCharacter.HasDamageResistance(sorcerer, "cold", 20);
        }
示例#20
0
        public void SelectsAnEnergyTypeToGenerateResistanceTo()
        {
            var wizard     = CharacterTestTemplates.Wizard();
            var energyType = new EnergyType();

            energyType.Name = "fire";
            var abjRes = new AbjurationResistance(EntityGateway <EnergyType> .LoadWithSingleItem(energyType));

            wizard.Add(abjRes);
            AssertCharacter.HasDamageResistance("fire", 5, wizard);

            wizard.SetLevel(11);
            AssertCharacter.HasDamageResistance("fire", 10, wizard);

            wizard.SetLevel(20);
            AssertCharacter.IsImmuneTo("fire", wizard);
        }
示例#21
0
        public void ChoosesAFeatFromTheAvailableFeats()
        {
            var yaml        = @"
- name: Archery
  bonus-feats:
    - level: 1
      feats: [feat one]".ParseYaml().Children.First();
            var combatStyle = new CombatStyle(yaml);
            var character   = CharacterTestTemplates.Ranger();

            character.SetLevel(2);
            character.Add(combatStyle);
            var step = new SelectCombatStyleFeat();

            step.ExecuteStep(character);
            AssertCharacter.HasFeatToken("feat one", character);
        }
示例#22
0
        public void AddsDRAndImmunities()
        {
            var sorcerer  = CharacterTestTemplates.Sorcerer();
            var ascension = new Ascension();

            sorcerer.Add(ascension);
            Assert.True(
                sorcerer.Defense.EnergyResistance.Any(dr =>
                                                      dr.DamageType == "electricity" && dr.Amount == 10)
                );
            Assert.True(
                sorcerer.Defense.EnergyResistance.Any(dr =>
                                                      dr.DamageType == "fire" && dr.Amount == 10)
                );

            AssertCharacter.IsImmuneTo("acid", sorcerer);
            AssertCharacter.IsImmuneTo("cold", sorcerer);
            AssertCharacter.IsImmuneTo("petrification", sorcerer);

            Assert.Equal(4, sorcerer.Defense.FortitudeSave.GetConditionalValue("poison"));
        }
示例#23
0
 public void SpellbookCastersHaveASpellbookInTheirInventory()
 {
     AssertCharacter.IsCarrying <Spellbook>(wizard);
 }
示例#24
0
 public void GrantsDR()
 {
     AssertCharacter.HasDamageReduction("-", 5, sorcerer);
 }
示例#25
0
 public void GrantsResistances()
 {
     AssertCharacter.HasDamageResistance(sorcerer, "fire", 5);
     sorcerer.SetLevel(9);
     resistances.LeveledUp(sorcerer.Components);
 }
示例#26
0
 public void GrantsImmunities()
 {
     AssertCharacter.IsImmuneTo("electricity", sorcerer);
     AssertCharacter.IsImmuneTo("paralysis", sorcerer);
     AssertCharacter.IsImmuneTo("sleep", sorcerer);
 }