static BlueprintFeature CreateBloodlinePower(BlueprintProgression bloodline, int level, BlueprintProgression crossbloodline)
        {
            var power   = EldritchHeritage.GetBloodlinePower(bloodline, level);
            var entries = EldritchHeritage.CollectLevelEntries(level, power, bloodline);

            if (entries.Count == 1)
            {
                return(CreateCrossbloodedFeature(entries[0].Item2, crossbloodline));
            }

            var name = power.name;

            if (name.EndsWith("1"))
            {
                name = name.Substring(0, power.name.Length - 1);
            }

            var feature = Helpers.CreateFeature($"{name}Cross", power.Name, power.Description,
                                                Helpers.MergeIds(power.AssetGuid, "3b983f0653914618844275e20d9fe561"),
                                                power.Icon, FeatureGroup.None);

            var components = new List <BlueprintComponent> {
                crossbloodline.PrerequisiteFeature()
            };

            for (int i = 0; i < entries.Count; i++)
            {
                var e = entries[i];
                components.Add(AddFactOnBloodlineLevel.Create(e.Item2, $"${i}", e.Item1));
            }
            feature.SetComponents(components);
            return(feature);
        }
        //here we make bloodline mutations
        static BlueprintFeature CreateMutateBloodlinePower(BlueprintProgression bloodline, int level, BlueprintProgression crossbloodline)
        {
            var power   = EldritchHeritage.GetBloodlinePower(bloodline, level);
            var entries = EldritchHeritage.CollectLevelEntries(level, power, bloodline);

            /*
             * if (entries.Count == 1)
             * {
             *  return CreateCrossbloodedFeature(entries[0].Item2, crossbloodline);
             * }*/
            var spellFocus = library.Get <BlueprintParametrizedFeature>("16fa59cc9a72a6043b566b49184f53fe");
            var name       = power.name;

            if (name.EndsWith("1"))
            {
                name = name.Substring(0, power.name.Length - 1);
            }
            name += " Mutation Havoc";

            var feature = Helpers.CreateFeature($"{name}CrossMutate", "Blood Havoc Mutation(" + bloodline.Name + ")", "A bloodrager need not be in a bloodrage to use her bloodline mutation powers. Alternatively, a bloodrager or sorcerer can select a bloodline mutation in place of a bloodline bonus feat, provided her class level is at least equal to the level of the bloodline ability the mutation normally replaces.\n" +
                                                "Bloodline Mutation: Blood havoc\n" +
                                                "Whenever you cast a bloodrager or sorcerer spell that deals damage, add 1 point of damage per die rolled. ",
                                                Helpers.MergeIds(power.AssetGuid, "2b983f0653914618844275e20d9fe562"),
                                                Helpers.NiceIcons(28), FeatureGroup.None);
            var components = new List <BlueprintComponent> {
                crossbloodline.PrerequisiteFeature(), spellFocus.PrerequisiteFeature(), Helpers.Create <OrcBloodlineArcana>()
            };

            /*
             * for (int i = 0; i < entries.Count; i++)
             * {
             *  var e = entries[i];
             *  components.Add(AddFactOnBloodlineLevel.Create(e.Item2, $"${i}", e.Item1));
             * }
             */
            feature.SetComponents(components);
            return(feature);
        }
        //here we make bloodline mutations
        static BlueprintFeature CreateMutateBloodlinePower(BlueprintProgression bloodline, int level, BlueprintProgression crossbloodline)
        {
            var power   = EldritchHeritage.GetBloodlinePower(bloodline, level);
            var entries = EldritchHeritage.CollectLevelEntries(level, power, bloodline);

            /*
             * if (entries.Count == 1)
             * {
             *  return CreateCrossbloodedFeature(entries[0].Item2, crossbloodline);
             * }*/
            var spellFocus = library.Get <BlueprintParametrizedFeature>("16fa59cc9a72a6043b566b49184f53fe");
            var name       = power.name;

            if (name.EndsWith("1"))
            {
                name = name.Substring(0, power.name.Length - 1);
            }
            name += " Mutation Havoc";

            var feature = Helpers.CreateFeature($"{name}CrossMutate", string.Format(RES.BloodHavocMutationFeatureName_info, bloodline.Name), RES.BloodHavocMutationFeatureDescription_info,
                                                Helpers.MergeIds(power.AssetGuid, "2b983f0653914618844275e20d9fe562"),
                                                Helpers.NiceIcons(28), FeatureGroup.None);
            var components = new List <BlueprintComponent> {
                crossbloodline.PrerequisiteFeature(), spellFocus.PrerequisiteFeature(), Helpers.Create <OrcBloodlineArcana>()
            };

            /*
             * for (int i = 0; i < entries.Count; i++)
             * {
             *  var e = entries[i];
             *  components.Add(AddFactOnBloodlineLevel.Create(e.Item2, $"${i}", e.Item1));
             * }
             */
            feature.SetComponents(components);
            return(feature);
        }