Ejemplo n.º 1
0
        public void SelectSkillBonuses(string skillName1, string skillFocus1, string condition1, int bonus1, string skillName2, string skillFocus2, string condition2, int bonus2)
        {
            SetUpSkillBonus(skillName1, skillFocus1, condition1, bonus1);
            SetUpSkillBonus(skillName2, skillFocus2, condition2, bonus2);

            var bonusSelections = skillSelector.SelectBonusesFor("creature");

            Assert.That(bonusSelections.Count, Is.EqualTo(2));

            var selection = bonusSelections.First();

            Assert.That(selection.Bonus, Is.EqualTo(bonus1));
            Assert.That(selection.Condition, Is.EqualTo(condition1));

            var expected = SkillConstants.Build(skillName1, skillFocus1);

            Assert.That(selection.Target, Is.EqualTo(expected));

            selection = bonusSelections.Last();
            Assert.That(selection.Bonus, Is.EqualTo(bonus2));
            Assert.That(selection.Condition, Is.EqualTo(condition2));

            expected = SkillConstants.Build(skillName2, skillFocus2);
            Assert.That(selection.Target, Is.EqualTo(expected));
        }
Ejemplo n.º 2
0
        public void BuildSkillString(string skill, string focus, string expected)
        {
            var skillString = SkillConstants.Build(skill, focus);

            Assert.That(skillString, Is.Not.Null);
            Assert.That(skillString, Is.EqualTo(expected));
        }
Ejemplo n.º 3
0
        public void BuildSkillTypeAndAmountData(string skill, string focus)
        {
            var skillString = SkillConstants.Build(skill, focus);

            var typeAndAmount = TypeAndAmountHelper.Build(skillString, "9266");

            Assert.That(typeAndAmount, Is.EqualTo(skillString + "@9266"));
        }
Ejemplo n.º 4
0
        public void FeatFociForSkillsContainsAllFoci(string skill)
        {
            var skillGroups = collectionMapper.Map(TableNameConstants.Collection.SkillGroups);
            var skillFoci   = skillGroups[skill];

            var featFoci = skillFoci.Select(f => SkillConstants.Build(skill, f));

            Assert.That(table[GroupConstants.Skills], Is.SupersetOf(featFoci));
        }
Ejemplo n.º 5
0
        public void ParseSkillTypeAndAmountData(string skill, string focus)
        {
            var skillString = SkillConstants.Build(skill, focus);

            var typeAndAmount = TypeAndAmountHelper.Parse(skillString + "@9266");

            Assert.That(typeAndAmount[0], Is.EqualTo(skillString));
            Assert.That(typeAndAmount[1], Is.EqualTo("9266"));
            Assert.That(typeAndAmount.Length, Is.EqualTo(2));
        }
Ejemplo n.º 6
0
        private void SetUpSkillBonus(
            string skill,
            string focus     = "",
            string condition = "",
            int bonus        = 1)
        {
            var bonusSelection = new BonusSelection();

            bonusSelection.Bonus     = bonus;
            bonusSelection.Target    = SkillConstants.Build(skill, focus);
            bonusSelection.Condition = condition;

            bonusSelections.Add(bonusSelection);
        }
Ejemplo n.º 7
0
        public void SelectSkillBonus(string skillName, string skillFocus, string condition, int bonus)
        {
            SetUpSkillBonus(skillName, skillFocus, condition, bonus);

            var bonusSelections = skillSelector.SelectBonusesFor("creature");

            Assert.That(bonusSelections.Count, Is.EqualTo(1));

            var selection = bonusSelections.Single();

            Assert.That(selection.Bonus, Is.EqualTo(bonus));
            Assert.That(selection.Condition, Is.EqualTo(condition));

            var expected = SkillConstants.Build(skillName, skillFocus);

            Assert.That(selection.Target, Is.EqualTo(expected));
        }
        public void SelectASingleSkillTypeAndAmount(string skill, string focus)
        {
            var skillString = SkillConstants.Build(skill, focus);

            var entries = new[]
            {
                TypeAndAmountHelper.Build(skillString, "9266"),
            };

            mockCollectionSelector.Setup(s => s.SelectFrom("table name", "name")).Returns(entries);

            SetUpRoll("9266", 42);

            var typeAndAmount = selector.SelectOne("table name", "name");

            Assert.That(typeAndAmount.Type, Is.EqualTo(skillString));
            Assert.That(typeAndAmount.Amount, Is.EqualTo(42));
        }
Ejemplo n.º 9
0
        private string SelectRandomAndIncludeSkills(IEnumerable <string> foci, IEnumerable <Skill> skills)
        {
            var skillFoci           = collectionsSelector.SelectFrom(TableNameConstants.Collection.FeatFoci, GroupConstants.Skills);
            var applicableSkillFoci = skillFoci.Intersect(foci);

            if (applicableSkillFoci.Any())
            {
                var potentialSkillFoci = skills.Select(s => SkillConstants.Build(s.Name, s.Focus));
                foci = applicableSkillFoci.Intersect(potentialSkillFoci);
            }

            if (!foci.Any())
            {
                return(FeatConstants.Foci.NoValidFociAvailable);
            }

            return(collectionsSelector.SelectRandomFrom(foci));
        }
Ejemplo n.º 10
0
        public bool RequirementMet(IEnumerable <Skill> otherSkills)
        {
            var thisSkill      = SkillConstants.Build(Skill, Focus);
            var requiredSkills = otherSkills.Where(s => s.IsEqualTo(thisSkill));

            if (!requiredSkills.Any())
            {
                return(false);
            }

            if (!string.IsNullOrEmpty(Focus) && !requiredSkills.Any(s => s.Focus == Focus))
            {
                return(false);
            }

            var anyHaveSufficientRanks = requiredSkills.Any(s => s.EffectiveRanks >= Ranks);

            return(anyHaveSufficientRanks);
        }
Ejemplo n.º 11
0
        public void SkillsFoci()
        {
            var foci = new[]
            {
                SkillConstants.Appraise,
                SkillConstants.Balance,
                SkillConstants.Bluff,
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Alchemy),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Armorsmithing),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Blacksmithing),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Bookbinding),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Bowmaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Brassmaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Brewing),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Candlemaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Cloth),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Coppersmithing),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Dyemaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Gemcutting),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Glass),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Goldsmithing),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Hatmaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Hornworking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Jewelmaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Leather),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Locksmithing),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Mapmaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Milling),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Painting),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Parchmentmaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Pewtermaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Potterymaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Sculpting),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Shipmaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Shoemaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Silversmithing),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Skinning),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Soapmaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Stonemasonry),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Tanning),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Trapmaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Weaponsmithing),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Weaving),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Wheelmaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Winemaking),
                SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Woodworking),
                SkillConstants.Climb,
                SkillConstants.Concentration,
                SkillConstants.DecipherScript,
                SkillConstants.Diplomacy,
                SkillConstants.DisableDevice,
                SkillConstants.Disguise,
                SkillConstants.EscapeArtist,
                SkillConstants.Forgery,
                SkillConstants.GatherInformation,
                SkillConstants.HandleAnimal,
                SkillConstants.Heal,
                SkillConstants.Hide,
                SkillConstants.Intimidate,
                SkillConstants.Jump,
                SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Arcana),
                SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.ArchitectureAndEngineering),
                SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Dungeoneering),
                SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Geography),
                SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.History),
                SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Local),
                SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Nature),
                SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.NobilityAndRoyalty),
                SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Religion),
                SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.ThePlanes),
                SkillConstants.Listen,
                SkillConstants.MoveSilently,
                SkillConstants.OpenLock,
                SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Act),
                SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Comedy),
                SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Dance),
                SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.KeyboardInstruments),
                SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Oratory),
                SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.PercussionInstruments),
                SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Sing),
                SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.StringInstruments),
                SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.WindInstruments),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Adviser),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Alchemist),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.AnimalGroomer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.AnimalTrainer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Apothecary),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Appraiser),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Architect),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Armorer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Barrister),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Blacksmith),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Bookbinder),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Bowyer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Brazier),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Brewer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Butler),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Carpenter),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cartographer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cartwright),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Chandler),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.CityGuide),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Clerk),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cobbler),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Coffinmaker),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Coiffeur),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cook),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Coppersmith),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Craftsman),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Dowser),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Dyer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Embalmer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Engineer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Entertainer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.ExoticAnimalTrainer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Farmer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Fletcher),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Footman),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Gemcutter),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Goldsmith),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Governess),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Haberdasher),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Healer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Horner),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Hunter),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Interpreter),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Jeweler),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Laborer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Launderer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Limner),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.LocalCourier),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Locksmith),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Maid),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Masseuse),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Matchmaker),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Midwife),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Miller),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Miner),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Navigator),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Nursemaid),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.OutOfTownCourier),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Painter),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Parchmentmaker),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Pewterer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Polisher),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Porter),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Potter),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Sage),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.SailorCrewmember),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.SailorMate),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Scribe),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Sculptor),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Shepherd),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Shipwright),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Silversmith),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Skinner),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Soapmaker),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Soothsayer),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Tanner),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Teacher),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Teamster),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Trader),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Trapper),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Valet),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Vintner),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Weaponsmith),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Weaver),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Wheelwright),
                SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.WildernessGuide),
                SkillConstants.Ride,
                SkillConstants.Search,
                SkillConstants.SenseMotive,
                SkillConstants.SleightOfHand,
                SkillConstants.Spellcraft,
                SkillConstants.Spot,
                SkillConstants.Survival,
                SkillConstants.Swim,
                SkillConstants.Tumble,
                SkillConstants.UseMagicDevice,
                SkillConstants.UseRope
            };

            base.AssertDistinctCollection(GroupConstants.Skills, foci);
        }
Ejemplo n.º 12
0
        public static IEnumerable <string> GetFeatsWithFoci()
        {
            var featsWithFoci = new List <string>();

            var simpleWeapons = WeaponConstants.GetAllSimple(false, false);

            foreach (var weapon in simpleWeapons)
            {
                featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Simple}/{weapon}");
            }

            var martialWeapons = WeaponConstants.GetAllMartial(false, false);

            foreach (var weapon in martialWeapons)
            {
                featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Martial}/{weapon}");
            }

            //INFO: Adding in some exotic as martial, for weapon familiarity
            featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Martial}/{WeaponConstants.DwarvenUrgrosh}");
            featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Martial}/{WeaponConstants.DwarvenWaraxe}");
            featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Martial}/{WeaponConstants.OrcDoubleAxe}");
            featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Martial}/{WeaponConstants.GnomeHookedHammer}");

            var exoticWeapons = WeaponConstants.GetAllExotic(false, false);

            foreach (var weapon in exoticWeapons)
            {
                featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Exotic}/{weapon}");
            }

            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Appraise}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Balance}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Bluff}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Climb}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Concentration}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Craft}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Alchemy)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Armorsmithing)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Blacksmithing)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Bookbinding)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Bowmaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Brassmaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Brewing)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Candlemaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Cloth)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Coppersmithing)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Dyemaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Gemcutting)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Glass)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Goldsmithing)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Hatmaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Hornworking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Jewelmaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Leather)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Locksmithing)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Mapmaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Milling)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Painting)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Parchmentmaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Pewtermaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Potterymaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Sculpting)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Shipmaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Shoemaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Silversmithing)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Skinning)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Soapmaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Stonemasonry)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Tanning)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Trapmaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Weaponsmithing)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Weaving)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Wheelmaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Winemaking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Woodworking)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.DecipherScript}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Diplomacy}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.DisableDevice}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Disguise}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.EscapeArtist}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Forgery}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.GatherInformation}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.HandleAnimal}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Heal}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Hide}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Intimidate}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Jump}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Knowledge}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Arcana)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.ArchitectureAndEngineering)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Dungeoneering)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Geography)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.History)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Local)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Nature)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.NobilityAndRoyalty)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Religion)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.ThePlanes)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Listen}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.MoveSilently}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.OpenLock}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Perform}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Act)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Comedy)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Dance)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.KeyboardInstruments)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Oratory)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.PercussionInstruments)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Sing)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.StringInstruments)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.WindInstruments)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Profession}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Adviser)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Alchemist)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.AnimalGroomer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.AnimalTrainer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Apothecary)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Appraiser)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Architect)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Armorer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Barrister)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Blacksmith)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Bookbinder)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Bowyer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Brazier)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Brewer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Butler)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Carpenter)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cartographer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cartwright)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Chandler)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.CityGuide)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Clerk)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cobbler)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Coffinmaker)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Coiffeur)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cook)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Coppersmith)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Craftsman)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Dowser)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Dyer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Embalmer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Engineer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Entertainer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.ExoticAnimalTrainer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Farmer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Fletcher)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Footman)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Gemcutter)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Goldsmith)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Governess)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Haberdasher)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Healer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Horner)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Hunter)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Interpreter)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Jeweler)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Laborer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Launderer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Limner)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.LocalCourier)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Locksmith)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Maid)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Masseuse)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Matchmaker)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Midwife)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Miller)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Miner)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Navigator)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Nursemaid)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.OutOfTownCourier)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Painter)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Parchmentmaker)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Pewterer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Polisher)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Porter)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Potter)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Sage)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.SailorCrewmember)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.SailorMate)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Scribe)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Sculptor)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Shepherd)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Shipwright)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Silversmith)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Skinner)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Soapmaker)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Soothsayer)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Tanner)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Teacher)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Teamster)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Trader)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Trapper)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Valet)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Vintner)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Weaponsmith)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Weaver)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Wheelwright)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.WildernessGuide)}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Ride}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Search}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.SenseMotive}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.SleightOfHand}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Spellcraft}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Spot}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Survival}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Swim}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Tumble}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.UseMagicDevice}");
            featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.UseRope}");

            featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Boar}");
            featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Rat}");
            featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Raven}");
            featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Spider_Monstrous_Hunter_Small}");
            featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Spider_Monstrous_Hunter_Medium}");
            featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Spider_Monstrous_WebSpinner_Small}");
            featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Spider_Monstrous_WebSpinner_Medium}");

            return(featsWithFoci);
        }