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); }
// Create the Time mystery. // // Note: Time does not have a spell list, because too many spells are missing. // Instead it's used with the Ancient Lorekeeper archetype. // (The prerequsite is added by the archetype.) internal static (BlueprintProgression, BlueprintFeature) Create(String mysteryDescription, BlueprintFeature classSkillFeat) { var revelations = new List <BlueprintFeature>() { CreateAgingTouch(), CreateEraseFromTime(), CreateMomentaryGlimpse(), CreateRewindTime(), CreateKnowledgeOfTheAges(), CreateSpeedOrSlowTime(), CreateTemporalClarity(), CreateTimeFlicker(), CreateTimeHop(), CreateTimeSight() }; var skill1 = StatType.SkillAthletics; var skill2 = StatType.SkillMobility; var description = new StringBuilder(mysteryDescription).AppendLine(); description.AppendLine( $"Class skills: {UIUtility.GetStatText(skill1)}, {UIUtility.GetStatText(skill2)}\n" + "An oracle with the time mystery can choose from any of the following revelations:"); foreach (var r in revelations) { description.AppendLine($"• {r.Name}"); } var mystery = Helpers.CreateProgression("MysteryTimeProgression", "Time Mystery", description.ToString(), "b05d63ba0f634061af15c995c1a3340d", TimeStop.spell.Icon, UpdateLevelUpDeterminatorText.Group, AddClassSkillIfHasFeature.Create(skill1, classSkillFeat), AddClassSkillIfHasFeature.Create(skill2, classSkillFeat)); mystery.Classes = oracleArray; TimeMystery.mystery = mystery; var finalRevelation = CreateFinalRevelation(); mystery.LevelEntries = new LevelEntry[] { Helpers.LevelEntry(20, finalRevelation) }; var revelation = Helpers.CreateFeatureSelection("MysteryTimeRevelation", "Time Revelation", mystery.Description, "d9a38bc21fd6441094e4a48de1aa4fad", null, FeatureGroup.None, mystery.PrerequisiteFeature()); revelation.Mode = SelectionMode.OnlyNew; revelation.SetFeatures(revelations); return(mystery, revelation); }
//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); }