Ejemplo n.º 1
0
        public void NoSpellCastingNoQualification()
        {
            var character = CharacterTestTemplates.DruidDonna();

            character.SetLevel(10);
            var prereq = new CasterLevelPrerequisite("3");

            Assert.False(prereq.IsQualified(character.Components));
        }
Ejemplo n.º 2
0
        public void RequiresASpellCastingAbilityWithCorrectCasterLevel()
        {
            var character    = CharacterTestTemplates.DruidDonna().WithDivineCasting();
            var spellCasting = character.Get <ISpellCasting>();
            var prereq       = new CasterLevelPrerequisite("3");

            Assert.False(prereq.IsQualified(character.Components));
            character.SetLevel(3);
            Assert.Equal(3, spellCasting.CasterLevel);
            Assert.True(prereq.IsQualified(character.Components));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Parses the yaml and find prerequisites
        /// </summary>
        /// <param name="yaml">Yaml Node to parse </param>
        private void ParseYaml(YamlNodeWrapper yaml)
        {
            foreach (var prereq in yaml.Children())
            {
                Prerequisite newreq = null;

                // TODO: This seems clunky and weird
                foreach (var key in this.prerequisiteKeyNames)
                {
                    var val = prereq.GetStringOptional(key);
                    if (val != null)
                    {
                        switch (key)
                        {
                        case "ability":
                            newreq = new AbilityPrerequisite(val);
                            break;

                        case "baseattackbonus":
                            newreq = new BaseAttackBonusPrerequisite(val);
                            break;

                        case "casterlevel":
                            newreq = new CasterLevelPrerequisite(val);
                            break;

                        case "classfeature":
                            newreq = new ClassFeaturePrerequisite(val);
                            break;

                        case "classlevel":
                            newreq = new ClassLevelPrerequisite(val);
                            break;

                        case "feat":
                            newreq = new FeatPrerequisite(val);
                            break;

                        case "proficiency":
                            newreq = new ProficiencyPrerequisite(val);
                            break;

                        case "race":
                            newreq = new RacePrerequisite(val);
                            break;

                        case "skillranks":
                            newreq = new SkillRankPrerequisite(val);
                            break;
                        }

                        break;
                    }
                }

                if (newreq != null)
                {
                    this.Add(newreq);
                }
            }
        }