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

            Assert.True(featToken.Qualifies(feat));
        }
Example #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));
        }
Example #3
0
        public void Execute(Utility.ComponentContainer components)
        {
            var combatStyle = components.Get <CombatStyle>();
            var rangerLevel = components.Get <ClassLevel>();
            var token       = new FeatToken(combatStyle.GetFeats(rangerLevel.Level), true);

            components.Add(token);
        }
Example #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));
        }
Example #5
0
        private bool FeatIsValid(Feat feat, FeatToken token, CharacterSheet character)
        {
            if (token.IgnorePrerequisites)
            {
                return(feat.IsQualifiedIgnorePrerequisites(character) && token.Qualifies(feat));
            }

            return(feat.IsQualified(character) && token.Qualifies(feat));
        }
Example #6
0
        public void EmptyFeatTokenCanBeUsedForAnyFeat()
        {
            var f = Feat.Named("Combat Reflexes");

            f.Tags.Add("combat");

            var featToken = new FeatToken();

            Assert.True(featToken.Qualifies(f));
        }
Example #7
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));
        }
Example #8
0
        public void Initialize(ComponentContainer components)
        {
            var alignment = components.Get <CharacterAlignment>();
            var good      = new FeatToken("Turn Undead", true);
            var evil      = new FeatToken("Command Undead", true);

            if (alignment.IsGood())
            {
                components.Add(good);
            }
            else if (alignment.IsEvil())
            {
                components.Add(evil);
            }
            else
            {
                components.Add(new FeatToken[] { good, evil }.ChooseOne());
            }
        }
Example #9
0
 private void FilterPreferredFeats(CharacterSheet character, WeightedOptionTable <string> preferredFeats, FeatToken token)
 {
     foreach (var entry in preferredFeats.All)
     {
         var f = feats.Find(entry.Option);
         if (FeatIsValid(f, token, character))
         {
             preferredFeats.Enable(entry.Option);
         }
         else
         {
             preferredFeats.Disable(entry.Option);
             ShortLog.DebugFormat("Preferred Feat [{0}] Token [{1}]- Not meeting requirements", f.Name, token.ToString());
         }
     }
 }