internal static (BlueprintFeature, BlueprintFeature) Create(String mysteryDescription, BlueprintFeature classSkillFeat) { var skill1 = StatType.SkillKnowledgeArcana; var skill2 = StatType.SkillPerception; var mystery = Helpers.CreateProgression("MysteryHeavensProgression", "夜空秘视域", $"{mysteryDescription}\n" + "被深邃夜空吸引的先知可以学到一系列从夜空中汲取力量的法术和启示,璀璨炫目的星光,空灵皎洁的银月,或是幽暗深沉的虚空,都是他们的力量之源。\n" + $"本职技能: {UIUtility.GetStatText(skill1)}, {UIUtility.GetStatText(skill2)}", "dabcaefe63bc471dac44e8e23c1c330f", Helpers.GetIcon("91da41b9793a4624797921f221db653c"), // color spray UpdateLevelUpDeterminatorText.Group, AddClassSkillIfHasFeature.Create(skill1, classSkillFeat), AddClassSkillIfHasFeature.Create(skill2, classSkillFeat)); mystery.Classes = oracleArray; var spells = Bloodlines.CreateSpellProgression(mystery, new String[] { "91da41b9793a4624797921f221db653c", // color spray Spells.hypnoticPatternId, "bf0accce250381a44b857d4af6c8e10d", // searing light (should be: daylight) "4b8265132f9c8174f87ce7fa6d0fe47b", // rainbow pattern FlySpells.overlandFlight.AssetGuid, "645558d63604747428d55f0dd3a4cb58", // chain lightning "b22fd434bdb60fb4ba1068206402c4cf", // prismatic spray "e96424f70ff884947b06f41a765b7658", // sunburst FireSpells.meteorSwarm.AssetGuid, }); var revelations = new List <BlueprintFeature>() { // TODO }; var description = new StringBuilder(mystery.Description).AppendLine(); description.AppendLine("选择了火焰秘视域的先知可以选择以下启示:"); foreach (var r in revelations) { description.AppendLine($"• {r.Name}"); r.InsertComponent(0, Helpers.PrerequisiteFeature(mystery)); } mystery.SetDescription(description.ToString()); var entries = new List <LevelEntry>(); for (int level = 1; level <= 9; level++) { entries.Add(Helpers.LevelEntry(level * 2, spells[level - 1])); } // TODO: //var finalRevelation = CreateFinalRevelation(); //entries.Add(Helpers.LevelEntry(20, finalRevelation)); mystery.LevelEntries = entries.ToArray(); mystery.UIGroups = Helpers.CreateUIGroups(new List <BlueprintFeatureBase>(spells) /*TODO:finalRevelation*/ }
internal static (BlueprintFeature, BlueprintFeature) Create(String mysteryDescription, BlueprintFeature classSkillFeat) { var skill1 = StatType.SkillKnowledgeArcana; var skill2 = StatType.SkillPerception; var mystery = Helpers.CreateProgression("MysteryHeavensProgression", "Heavens Mystery", $"{mysteryDescription}\n" + "Oracles who drawn to the night sky learn spells and revelations that draw power from the heavens: the many colors of starlight, the moon, or the empty void of space.\n" + $"Class skills: {UIUtility.GetStatText(skill1)}, {UIUtility.GetStatText(skill2)}", "dabcaefe63bc471dac44e8e23c1c330f", Helpers.GetIcon("91da41b9793a4624797921f221db653c"), // color spray UpdateLevelUpDeterminatorText.Group, AddClassSkillIfHasFeature.Create(skill1, classSkillFeat), AddClassSkillIfHasFeature.Create(skill2, classSkillFeat)); mystery.Classes = oracleArray; var spells = Bloodlines.CreateSpellProgression(mystery, new String[] { "91da41b9793a4624797921f221db653c", // color spray Spells.hypnoticPatternId, "bf0accce250381a44b857d4af6c8e10d", // searing light (should be: daylight) "4b8265132f9c8174f87ce7fa6d0fe47b", // rainbow pattern FlySpells.overlandFlight.AssetGuid, "645558d63604747428d55f0dd3a4cb58", // chain lightning "b22fd434bdb60fb4ba1068206402c4cf", // prismatic spray "e96424f70ff884947b06f41a765b7658", // sunburst FireSpells.meteorSwarm.AssetGuid, }); var revelations = new List <BlueprintFeature>() { // TODO }; var description = new StringBuilder(mystery.Description).AppendLine(); description.AppendLine("An oracle with the flame mystery can choose from any of the following revelations:"); foreach (var r in revelations) { description.AppendLine($"• {r.Name}"); r.InsertComponent(0, Helpers.PrerequisiteFeature(mystery)); } mystery.SetDescription(description.ToString()); var entries = new List <LevelEntry>(); for (int level = 1; level <= 9; level++) { entries.Add(Helpers.LevelEntry(level * 2, spells[level - 1])); } // TODO: //var finalRevelation = CreateFinalRevelation(); //entries.Add(Helpers.LevelEntry(20, finalRevelation)); mystery.LevelEntries = entries.ToArray(); mystery.UIGroups = Helpers.CreateUIGroups(new List <BlueprintFeatureBase>(spells) /*TODO:finalRevelation*/ }
internal static (BlueprintFeature, BlueprintFeature) Create(String mysteryDescription, BlueprintFeature classSkillFeat) { var revelations = new List <BlueprintFeature>() { CreateChannel(), CreateCombatHealer(), CreateDelayAffliction(), CreateEnergyBody(), CreateEnhancedCures(), CreateHealingHands(), CreateLifeLink(), CreateLifeSense(), CreateSafeCuring(), CreateSpiritBoost() }; var skill1 = StatType.SkillAthletics; var skill2 = StatType.SkillLoreNature; var description = new StringBuilder(mysteryDescription).AppendLine(); description.AppendLine(string.Format(RES.LifeMysteryProgressionDescription_info, UIUtility.GetStatText(skill1), UIUtility.GetStatText(skill2))); foreach (var r in revelations) { description.AppendLine(string.Format(RES.SingleLineDescription_info, r.Name)); } var mystery = Helpers.CreateProgression("MysteryLifeProgression", RES.LifeMysteryProgressionName_info, description.ToString(), "a2c3c801deb84bc9bab6bd35e5290d5d", Helpers.GetIcon("d5847cad0b0e54c4d82d6c59a3cda6b0"), // channel energy // a79013ff4bcd4864cb669622a29ddafb UpdateLevelUpDeterminatorText.Group, AddClassSkillIfHasFeature.Create(skill1, classSkillFeat), AddClassSkillIfHasFeature.Create(skill2, classSkillFeat)); mystery.Classes = oracleArray; var spells = Bloodlines.CreateSpellProgression(mystery, new String[] { "f6f95242abdfac346befd6f4f6222140", // remove sickness (should be: detect undead) "e84fc922ccf952943b5240293669b171", // lesser restoration "e7240516af4241b42b2cd819929ea9da", // neutralize poison "f2115ac1148256b4ba20788f7e966830", // restoration "d5847cad0b0e54c4d82d6c59a3cda6b0", // breath of life "5da172c4c89f9eb4cbb614f3a67357d3", // heal "fafd77c6bfa85c04ba31fdc1c962c914", // greater restoration "867524328b54f25488d371214eea0d90", // mass heal //FireSpells.meteorSwarm.AssetGuid, // if miracle does not work (should be: true resurrection) //Spells.MassResurrectionId, // true rez //"bd623ae7179a4d19a40b977ffca1b84g" //true rez WishSpells.miracle.AssetGuid, // miracle (should be: true resurrection) }); var entries = new List <LevelEntry>(); for (int level = 1; level <= 9; level++) { entries.Add(Helpers.LevelEntry(level * 2, spells[level - 1])); } var finalRevelation = CreateFinalRevelation(); entries.Add(Helpers.LevelEntry(20, finalRevelation)); mystery.LevelEntries = entries.ToArray(); mystery.UIGroups = Helpers.CreateUIGroups(new List <BlueprintFeatureBase>(spells) { finalRevelation }); var revelation = Helpers.CreateFeatureSelection("MysteryLifeRevelation", RES.LifeRevelationFeatureName_info, mystery.Description, "6949da6445394dabbfb327c000706122", null, FeatureGroup.None, mystery.PrerequisiteFeature()); revelation.Mode = SelectionMode.OnlyNew; revelation.SetFeatures(revelations); return(mystery, revelation); }
internal static (BlueprintFeature, BlueprintFeature) Create(String mysteryDescription, BlueprintFeature classSkillFeat) { // Note: Gaze of Flames removed, as it wouldn't do anything in PF:K var revelations = new List <BlueprintFeature>() { CreateBurningMagic(), CreateFirestorm(), CreateCinderDance(), CreateHeatAura(), CreateFireBreath(), CreateFormOfFlame(), CreateMoltenSkin(), CreateTouchOfFlame(), CreateWingsOfFire() }; var skill1 = StatType.SkillAthletics; var skill2 = StatType.SkillMobility; var description = new StringBuilder(mysteryDescription).AppendLine(); description.AppendLine(String.Format(RES.MysteryFlameDescription_info, UIUtility.GetStatText(skill1), UIUtility.GetStatText(skill2))); foreach (var r in revelations) { description.AppendLine($"• {r.Name}"); } var mystery = Helpers.CreateProgression("MysteryFlameProgression", RES.MysteryFlameName_info, description.ToString(), "11205333c1be4c6f868e413633fc7557", Helpers.GetIcon("17cc794d47408bc4986c55265475c06f"), // Fire elemental bloodline UpdateLevelUpDeterminatorText.Group, AddClassSkillIfHasFeature.Create(skill1, classSkillFeat), AddClassSkillIfHasFeature.Create(skill2, classSkillFeat)); mystery.Classes = oracleArray; var spells = Bloodlines.CreateSpellProgression(mystery, new String[] { "4783c3709a74a794dbe7c8e7e0b1b038", // burning hands "21ffef7791ce73f468b6fca4d9371e8b", // resist energy "2d81362af43aeac4387a3d4fced489c3", // fireball FireSpells.wallOfFire.AssetGuid, // wall of fire "ebade19998e1f8542a1b55bd4da766b3", // fire snake (should be: summon elemental, moved to 6th level) "4814f8645d1d77447a70479c0be51c72", // summon elemental huge fire (should be: fire seeds) "e3d0dfe1c8527934294f241e0ae96a8d", // fire storm FireSpells.incendiaryCloud.AssetGuid, "08ccad78cac525040919d51963f9ac39", // fiery body }); var entries = new List <LevelEntry>(); for (int level = 1; level <= 9; level++) { entries.Add(Helpers.LevelEntry(level * 2, spells[level - 1])); } var finalRevelation = CreateFinalRevelation(); entries.Add(Helpers.LevelEntry(20, finalRevelation)); mystery.LevelEntries = entries.ToArray(); mystery.UIGroups = Helpers.CreateUIGroups(new List <BlueprintFeatureBase>(spells) { finalRevelation }); var revelation = Helpers.CreateFeatureSelection("MysteryFlameRevelation", RES.MysteryFlameRevelationName_info, mystery.Description, "40db1e0f9b3a4f5fb9fde0801b158216", null, FeatureGroup.None, mystery.PrerequisiteFeature()); revelation.Mode = SelectionMode.OnlyNew; revelation.SetFeatures(revelations); return(mystery, revelation); }
internal static (BlueprintFeature, BlueprintFeature) Create(String mysteryDescription, BlueprintFeature classSkillFeat) { var skill1 = StatType.SkillPerception; var skill2 = StatType.SkillMobility; var revelations = new List <BlueprintFeature> { CreateBattlecry(), CreateBattlefieldClarity(), CreateCombatHealer(), CreateIronSkin(), CreateManeuverMastery(), CreateResiliency(), CreateSkillAtArms(), CreateSurprisingCharge(), CreateWarSight(), CreateWeaponMastery(), }; var description = new StringBuilder(mysteryDescription); description.AppendLine( $"\nClass skills: {UIUtility.GetStatText(skill1)}, {UIUtility.GetStatText(skill2)}\n" + "An oracle with the battle mystery can choose from any of the following revelations:"); foreach (var r in revelations) { description.AppendLine($"• {r.Name}"); } var mystery = Helpers.CreateProgression("MysteryBattleProgression", "Battle Mystery", description.ToString(), "4c1f09f08d984c05993c552a27a04b12", Helpers.GetIcon("27203d62eb3d4184c9aced94f22e1806"), // Transformation spell UpdateLevelUpDeterminatorText.Group, AddClassSkillIfHasFeature.Create(skill1, classSkillFeat), AddClassSkillIfHasFeature.Create(skill2, classSkillFeat)); mystery.Classes = oracleArray; var spells = Bloodlines.CreateSpellProgression(mystery, new String[] { "c60969e7f264e6d4b84a1499fdcf9039", // enlarge person "5181c2ed0190fc34b8a1162783af5bf4", // stone call (should be: fog cloud) "2d4263d80f5136b4296d6eb43a221d7d", // magic vestment FireSpells.wallOfFire.AssetGuid, // wall of fire "90810e5cf53bf854293cbd5ea1066252", // righteous might "6a234c6dcde7ae94e94e9c36fd1163a7", // mass bull's strength "8eb769e3b583f594faabe1cfdb0bb696", // summon elemental, greater (should be: control weather) "7cfbefe0931257344b2cb7ddc4cdff6f", // stormbolts (should be: earthquake) "ba48abb52b142164eba309fd09898856", // polar midnight (should be: storm of vengeance) }); var entries = new List <LevelEntry>(); for (int level = 1; level <= 9; level++) { entries.Add(Helpers.LevelEntry(level * 2, spells[level - 1])); } entries.Add(Helpers.LevelEntry(20, CreateFinalRevelation())); mystery.LevelEntries = entries.ToArray(); mystery.UIGroups = Helpers.CreateUIGroups(new List <BlueprintFeatureBase>(spells) { finalRevelation }); var revelation = Helpers.CreateFeatureSelection("MysteryBattleRevelation", "Battle Revelation", mystery.Description, "3c553e119a484a179e70b0aada836283", null, FeatureGroup.None, mystery.PrerequisiteFeature()); revelation.Mode = SelectionMode.OnlyNew; revelations.Add(UndoSelection.Feature.Value); revelation.SetFeatures(revelations); return(mystery, revelation); }