示例#1
0
        public void FeatTokensCanMatchByNameAsWell()
        {
            var feat      = Feat.Named("Turtle Snapper");
            var featToken = new FeatToken("Turtle Snapper");

            Assert.True(featToken.Qualifies(feat));
        }
示例#2
0
        public void IfFeatIsTaggedAsRequireSpecificTokenIgnoreEmptyToken()
        {
            var featToken   = new FeatToken();
            var specialFeat = Feat.Named("Foo");

            specialFeat.Tags.Add("ignore-generic-token");
            Assert.False(featToken.Qualifies(specialFeat));
        }
示例#3
0
        public void IgnoringPrerequisitesStillRequiresUniqueFeats()
        {
            var feat      = Feat.Named("Testing");
            var copy      = feat.Copy();
            var character = CharacterTestTemplates.AverageBob();

            character.Add(feat);
            Assert.False(copy.IsQualifiedIgnorePrerequisites(character));
        }
示例#4
0
        public void CanReceiveAListOfFeats()
        {
            var featToken = new FeatToken(new string[] { "Dodge", "Mobility" });
            var dodge     = Feat.Named("Dodge");
            var mobility  = Feat.Named("Mobility");

            Assert.True(featToken.Qualifies(dodge));
            Assert.True(featToken.Qualifies(mobility));
        }
示例#5
0
        public void IfFeatHasPrerequisitesTheyCanBeBypassed()
        {
            var CombatExpertise = Feat.Named("Combat Expertise");

            CombatExpertise.Prerequisites.Add(new AbilityPrerequisite(AbilityScoreTypes.Intelligence, 13));
            var character = CharacterTestTemplates.AverageBob();

            Assert.False(CombatExpertise.IsQualified(character));
            Assert.True(CombatExpertise.IsQualifiedIgnorePrerequisites(character));
        }
示例#6
0
        public void IfFeatIsAlreadySelectedItCannotBeSelectedAgain()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());
            var cr1       = Feat.Named("Combat Reflexes");
            var cr2       = Feat.Named("Combat Reflexes");

            Assert.True(cr2.IsQualified(character));
            character.Add(cr1);
            Assert.False(cr2.IsQualified(character));
        }
示例#7
0
        public void EmptyFeatTokenCanBeUsedForAnyFeat()
        {
            var f = Feat.Named("Combat Reflexes");

            f.Tags.Add("combat");

            var featToken = new FeatToken();

            Assert.True(featToken.Qualifies(f));
        }
示例#8
0
        public void FeatTokensKnowWhetherAFeatMatches()
        {
            var combatFeat = Feat.Named("Power Attack");

            combatFeat.Tags.Add("combat");
            combatFeat.Tags.Add("critical");
            var magicFeat = Feat.Named("Create Potion");

            magicFeat.Tags.Add("item creation");

            var featToken = new FeatToken("combat");

            Assert.True(featToken.Qualifies(combatFeat));
            Assert.False(featToken.Qualifies(magicFeat));
        }
示例#9
0
        public void FeatsKnowWhetherYouQualify()
        {
            var smartCharacter = CharacterTestTemplates.AverageBob();

            smartCharacter.AbilityScores.SetScore(AbilityScoreTypes.Intelligence, 15);
            var dumbCharacter = CharacterTestTemplates.AverageBob();

            dumbCharacter.AbilityScores.SetScore(AbilityScoreTypes.Intelligence, 5);

            var CombatExpertise = Feat.Named("Combat Expertise");

            CombatExpertise.Prerequisites.Add(new AbilityPrerequisite(AbilityScoreTypes.Intelligence, 13));

            Assert.True(CombatExpertise.IsQualified(smartCharacter));
            Assert.False(CombatExpertise.IsQualified(dumbCharacter));
        }
示例#10
0
        public FeatSelectorTests()
        {
            powerattack = Feat.Named("Power Attack");

            cleave = Feat.Named("Cleave");
            cleave.Prerequisites.Add(new SpecialAbilityPrerequisite("power attack"));

            empowerspell = Feat.Named("Empower Spell");
            empowerspell.Tags.Add("metamagic");

            var list = new List <Feat>();

            list.Add(powerattack);
            list.Add(cleave);
            list.Add(empowerspell);
            gateway = EntityGateway <Feat> .LoadFromList(list);

            selector = new FeatSelector(gateway);
        }