private static void LoadFavoredPrestigeClass()
        {
            alertnessFeat = library.Get <BlueprintFeature>("1c04fe9a13a22bc499ffac03e6f79153");

            PrerequisiteNoFeature noFeature = Helpers.Create <PrerequisiteNoFeature>();

            favoredPrestigeClass = Helpers.CreateFeatureSelection(
                "FavoredPresitgeClassSelection",
                "Favored Prestige Class",
                "You have come to favor a certain prestige class, either because you are particularly devoted to the class’s cause, have trained more than most others have for that specific role, or have simply been destined to excel in the prestige class all along. Regardless of the reason, levels gained in your favored prestige class grant additional benefits in a way similar to those you gain for taking levels in your base favored class.\n" +
                "You can select this feat before you gain levels in your chosen favored prestige class, but the benefits of the feat do not apply until you actually gain at least 1 level in that prestige class.",
                "4fab2e6256e644daaa637093bc2421aa",
                Helpers.skillFocusFeat.Icon,
                FeatureGroup.Feat,
                noFeature,
                Helpers.Create <LevelUpRecommendation>(l => {
                // Mark this feat recommended if a prestige class is taken.
                l.ClassPriorities = new ClassesPriority[] {
                    new ClassesPriority()
                    {
                        Classes  = Helpers.prestigeClasses.ToArray(),
                        Priority = RecommendationPriority.Good
                    }
                };
            }));
            // Note: feat order should match Helpers.prestigeClasses so Prestigious Spellcaster can index into this.
            favoredPrestigeClass.SetFeatures(Helpers.prestigeClasses.Select(CreateFavoredPrestigeClass));
            noFeature.Feature = favoredPrestigeClass;

            library.AddFeats(favoredPrestigeClass);
        }
        ///internal static BlueprintParametrizedFeature spellPerfection;

        internal static void Load()
        {
            if (!Main.settings.DrawbackForextraTraits)
            {
                return;
            }
            magus = library.Get <BlueprintCharacterClass>("45a4607686d96a1498891b3286121780");

            for (int i = 1000; i < 1010; i++)
            {
                DrawFeatGuids[i - 1000] = $"{i}63947738b04ecc8e069e050751cc";
                //Log.Write($"{i}63947738b04ecc8e069e050751cc");
            }
            // Load metamagic feats
            //var metamagicFeats = SafeLoad(MetamagicFeats.CreateMetamagicFeats, "Metamagic feats")?.ToArray();
            var DrawbackFeat = Array.Empty <BlueprintFeature>();
            var feats        = DrawbackFeat.ToList();

            // Add metamagics to Magus/Sorcerer bonus feat list.
            //var feats = ;
            //----------------------------drawbackfeats testing
            var noFrail    = Helpers.PrerequisiteNoFeature(null);
            var noOneleg   = Helpers.PrerequisiteNoFeature(null);
            var noSpellVul = Helpers.PrerequisiteNoFeature(null);


            var Frailfeat          = CreateFrail();
            var OneLegged          = CreateOneLegged();
            var SpellVulnerability = CreateSpellVulnerability();

            noFrail.Feature    = Frailfeat;
            noOneleg.Feature   = OneLegged;
            noSpellVul.Feature = SpellVulnerability;

            var NoDrawback = new PrerequisiteNoFeature[] { noFrail, noOneleg, noSpellVul };


            feats.Add(Frailfeat);
            feats.Add(OneLegged);
            feats.Add(SpellVulnerability);

            //feats.Add(CreateSpellVulnerability());
            var BasicFeatSelection = library.Get <BlueprintFeatureSelection>("247a4068296e8be42890143f451b4b45");

            foreach (var feat in feats)
            {
                feat.AddComponents(NoDrawback);
                SelectFeature_Apply_Patch.onApplyFeature.Add(feat, (state, unit) =>
                {
                    BasicFeatSelection.AddSelection(state, unit, 1);
                    BasicFeatSelection.AddSelection(state, unit, 1);
                });
            }


            library.AddFeats(feats.ToArray());
        }
        private static void LoadFavoredClass()
        {
            // Note: the favored class choice has no components for behavior, because the logic is implemented by
            // AddFavoredClassBonusChoice on level up.
            BlueprintFeature favoredClassAny = Helpers.CreateFeature(
                "FavoredClassAny",
                "Favored Class — Any",
                "The favored class is automatically determined each level-up, and an extra hit point is awarded if gaining a level in that class. The favored class is your highest level non-prestige class. This is the default game behavior.",
                "ea5f395c351a4f00be7f7a300d3bb5b4",
                null,
                FeatureGroup.Feat);

            List <BlueprintFeature> choices = new List <BlueprintFeature> {
                favoredClassAny
            };

            // Per FAQ, half-elf and half-orcs can qualify for human favored class bonuses (or elf/orc ones, respectively).
            // In the game, Aasimar appear to be treated as having "Scion of Humanity" (they don't have Darkvision, but
            // spells that affect humanoids work on them), so they should also qualify.
            // TODO: Tiefling should qualify too.
            extraSpellRaces = new BlueprintRace[] { Helpers.halfElf, Helpers.halfOrc, Helpers.human, Helpers.aasimar, Helpers.tiefling };

            foreach (BlueprintCharacterClass characterClass in Helpers.classes)
            {
                if (characterClass.PrestigeClass)
                {
                    continue;
                }
                choices.Add(CreateFavoredClassProgression(characterClass));
            }

            EventBus.Subscribe(new UpdateLevelUpDeterminatorText());

            PrerequisiteNoFeature     noFeature    = Helpers.PrerequisiteNoFeature(null);
            BlueprintFeatureSelection favoredClass = Helpers.CreateFeatureSelection(
                "FavoredClass",
                "Favored Class",
                "Each character begins play with a single favored class of their choosing—typically, this is the same class as the one they choose at 1st level. " +
                "Whenever a character gains a level in their favored class, they receive either +1 hit point, +1 skill rank, or the racial bonus associated with their favored class. " +
                "The choice of favored class cannot be changed once the character is created.",
                "bc4c271ef0954eceb808d84978c500f7",
                null,
                UpdateLevelUpDeterminatorText.Group,
                noFeature);

            noFeature.Feature = favoredClass;
            favoredClass.SetFeatures(choices);
            ApplyClassMechanics_Apply_Patch.onChargenApply.Add((state, unit) => {
                favoredClass.AddSelection(state, unit, 1);
            });
        }