static BlueprintFeature CreateFireBreath()
        {
            var feat = Helpers.CreateFeature("MysteryFlameBreath", RES.MysteryFlameBreathName_info,
                                             RES.MysteryFlameBreathDescription_info,
                                             "3f254ece8752466d8fd76ca358990eb9",
                                             Helpers.GetIcon("2a711cd134b91d34ab027b50d721778b"), // gold dragon fire breath
                                             FeatureGroup.None);

            var resource = Helpers.CreateAbilityResource($"{feat.name}Resource", "", "", "f3cc34b0ed9c4457b0b7ad4d1f2cbdd4", null);

            resource.SetIncreasedByLevelStartPlusDivStep(1, 5, 1, 5, 1, 0, 0, oracleArray);

            var ability = library.CopyAndAdd <BlueprintAbility>("4783c3709a74a794dbe7c8e7e0b1b038", // burning hands
                                                                $"{feat.name}Ability", "67c3d034c25c4daf8c55ec97f7af116b");

            ability.Type = AbilityType.Supernatural;
            ability.ReplaceContextRankConfig(c =>
            {
                Helpers.SetField(c, "m_UseMax", false);
                Helpers.SetField(c, "m_Max", 20);
            });
            var components = ability.ComponentsArray.WithoutSpellComponents().ToList();

            components.Add(resource.CreateResourceLogic());
            ability.SetComponents(components);

            feat.SetComponents(
                resource.CreateAddAbilityResource(),
                ability.CreateAddFact(),
                OracleClass.CreateBindToOracle(ability));
            return(feat);
        }
        static BlueprintFeature CreateFireBreath()
        {
            var feat = Helpers.CreateFeature("MysteryFlameBreath", "Fire Breath",
                                             "As a standard action, you can unleash a 15-foot cone of flame from your mouth. This flame deals 1d4 points of fire damage per level. A Reflex save halves this damage. You can use this ability once per day, plus one additional time per day at 5th level and every five levels thereafter. The save DC is Charisma-based.",
                                             "3f254ece8752466d8fd76ca358990eb9",
                                             Helpers.GetIcon("2a711cd134b91d34ab027b50d721778b"), // gold dragon fire breath
                                             FeatureGroup.None);

            var resource = Helpers.CreateAbilityResource($"{feat.name}Resource", "", "", "f3cc34b0ed9c4457b0b7ad4d1f2cbdd4", null);

            resource.SetIncreasedByLevelStartPlusDivStep(1, 5, 1, 5, 1, 0, 0, oracleArray);

            var ability = library.CopyAndAdd <BlueprintAbility>("4783c3709a74a794dbe7c8e7e0b1b038", // burning hands
                                                                $"{feat.name}Ability", "67c3d034c25c4daf8c55ec97f7af116b");

            ability.Type = AbilityType.Supernatural;
            ability.ReplaceContextRankConfig(c =>
            {
                Helpers.SetField(c, "m_UseMax", false);
                Helpers.SetField(c, "m_Max", 20);
            });
            var components = ability.ComponentsArray.WithoutSpellComponents().ToList();

            components.Add(resource.CreateResourceLogic());
            ability.SetComponents(components);

            feat.SetComponents(
                resource.CreateAddAbilityResource(),
                ability.CreateAddFact(),
                OracleClass.CreateBindToOracle(ability));
            return(feat);
        }
Esempio n. 3
0
        static void OnGUI(UnityModManager.ModEntry modEntry)
        {
            if (!enabled)
            {
                return;
            }

            var fixedWidth = new GUILayoutOption[1] {
                GUILayout.ExpandWidth(false)
            };

            if (testedGameVersion != GameVersion.GetVersion())
            {
                GUILayout.Label($"<b>This mod was tested against game version {testedGameVersion}, but you are running {GameVersion.GetVersion()}.</b>", fixedWidth);
            }
            if (failedPatches.Count > 0)
            {
                GUILayout.BeginVertical();
                GUILayout.Label("<b>Error: Some patches failed to apply. These features may not work:</b>", fixedWidth);
                foreach (var featureName in failedPatches)
                {
                    GUILayout.Label($"  • <b>{featureName}</b>", fixedWidth);
                }
                GUILayout.EndVertical();
            }
            if (failedLoading.Count > 0)
            {
                GUILayout.BeginVertical();
                GUILayout.Label("<b>Error: Some assets failed to load. Saves using these features won't work:</b>", fixedWidth);
                foreach (var featureName in failedLoading)
                {
                    GUILayout.Label($"  • <b>{featureName}</b>", fixedWidth);
                }
                GUILayout.EndVertical();
            }

            settings.EldritchKnightFix = GUILayout.Toggle(settings.EldritchKnightFix,
                                                          "Eldritch Knight requires martial class (doesn't affect existing EKs)", fixedWidth);

            settings.ShowCustomPortraits = GUILayout.Toggle(settings.ShowCustomPortraits,
                                                            "Show custom portraits in the portrait list at character creation (if changed, requires restart)", fixedWidth);

            settings.OracleHas3SkillPoints = GUILayout.Toggle(settings.OracleHas3SkillPoints,
                                                              "Give Oracle class 3+int skill points on level up (instead of 4, due to condensed skills)");
            OracleClass.MaybeUpdateSkillPoints();

            settings.RelaxAncientLorekeeper = GUILayout.Toggle(settings.RelaxAncientLorekeeper,
                                                               "Any race can choose the Oracle Ancient Lorekeeper archetype", fixedWidth);

            settings.RelaxTonguesCurse = GUILayout.Toggle(settings.RelaxTonguesCurse,
                                                          "Disable Tongues curse penalty (that party members need 1 rank Knowledge: World to be controlled by PC in combat)", fixedWidth);
        }
Esempio n. 4
0
        static void OnGUI(UnityModManager.ModEntry modEntry)
        {
            if (!enabled)
            {
                return;
            }

            var fixedWidth = new GUILayoutOption[1] {
                GUILayout.ExpandWidth(false)
            };

            if (testedGameVersion != GameVersion.GetVersion())
            {
                GUILayout.Label(string.Format(RES.testedGameVersion_warning, testedGameVersion, GameVersion.GetVersion()), fixedWidth);
            }
            if (failedPatches.Count > 0)
            {
                GUILayout.BeginVertical();
                GUILayout.Label(RES.failedPatches_error, fixedWidth);
                foreach (var featureName in failedPatches)
                {
                    GUILayout.Label(string.Format(RES.featureName_error, featureName), fixedWidth);
                }
                GUILayout.EndVertical();
            }
            if (failedLoading.Count > 0)
            {
                GUILayout.BeginVertical();
                GUILayout.Label(RES.failedLoading_error, fixedWidth);
                foreach (var featureName in failedLoading)
                {
                    GUILayout.Label(string.Format(RES.featureName_error, featureName), fixedWidth);
                }
                GUILayout.EndVertical();
            }

            settings.EldritchKnightFix      = GUILayout.Toggle(settings.EldritchKnightFix, RES.EldritchKnightFix_info, fixedWidth);
            settings.DrawbackForextraTraits = GUILayout.Toggle(settings.DrawbackForextraTraits, RES.DrawbackForextraTraits_info, fixedWidth);
            settings.OracleHas3SkillPoints  = GUILayout.Toggle(settings.OracleHas3SkillPoints, RES.OracleHas3SkillPoints_info, fixedWidth);
            OracleClass.MaybeUpdateSkillPoints();

            settings.RelaxAncientLorekeeper = GUILayout.Toggle(settings.RelaxAncientLorekeeper, RES.RelaxAncientLorekeeper_info, fixedWidth);
            settings.RelaxTonguesCurse      = GUILayout.Toggle(settings.RelaxTonguesCurse, RES.RelaxTonguesCurse_info, fixedWidth);
            settings.ShowCustomPortraits    = GUILayout.Toggle(settings.ShowCustomPortraits, RES.ShowCustomPortraits_info, fixedWidth);
            settings.CheatCustomTraits      = GUILayout.Toggle(settings.CheatCustomTraits, RES.CheatCustomTraits_info, fixedWidth);
            settings.HighDCl = GUILayout.Toggle(settings.HighDCl, RES.HighDCl_info, fixedWidth);
        }
        static BlueprintFeature CreateFormOfFlame()
        {
            var feat = Helpers.CreateFeature("MysteryFlameForm", RES.MysteryFlameFormName_info,
                                             RES.MysteryFlameFormDescription_info,
                                             "1c18972911284249a0bc38f6f4ec4304",
                                             Helpers.GetIcon("bb6bb6d6d4b27514dae8ec694433dcd3"), // elemental body fire 1
                                             FeatureGroup.None);

            var resource = Helpers.CreateAbilityResource($"{feat.name}Resource", "", "", "e86f5231a48548f2a4d76a9e664acfab", null);

            resource.SetFixedResource(1);

            var formIds = new string[] {
                "bb6bb6d6d4b27514dae8ec694433dcd3",
                "9a87d2fb0e288664c8dff299ff030a38",
                "2c40b391368f05e4b91aa8a8a51109ef",
                "c281eeecc554b72449fef43924e522ce"
            };

            var components = new List <BlueprintComponent> {
                Helpers.PrerequisiteClassLevel(oracle, 7),
                resource.CreateAddAbilityResource()
            };
            var abilities = new List <BlueprintAbility>();

            for (int i = 0; i < formIds.Length; i++)
            {
                var spellId = formIds[i];
                var spell   = library.Get <BlueprintAbility>(spellId);
                var ability = DragonMystery.CopyBuffSpellToAbility(spell, $"{feat.name}{i + 1}",
                                                                   Helpers.MergeIds("7bcf2c58cd3f4b64862c7d3b33daa305", spellId),
                                                                   AbilityType.Supernatural,
                                                                   feat.Description,
                                                                   resource, DurationRate.Hours);
                abilities.Add(ability);

                var isLast   = i == formIds.Length - 1;
                var minLevel = 7 + i * 2;
                var maxLevel = isLast ? 20 : 8 + i * 2;
                components.Add(ability.CreateAddFactOnLevelRange(oracle, minLevel, maxLevel));
            }
            components.Add(OracleClass.CreateBindToOracle(abilities.ToArray()));
            feat.SetComponents(components);
            return(feat);
        }
Esempio n. 6
0
        static void OnGUI(UnityModManager.ModEntry modEntry)
        {
            if (!enabled)
            {
                return;
            }

            GL.BeginVertical("box");

            if (testedGameVersion != GameVersion.GetVersion())
            {
                SingleLineLabel(string.Format(RES.testedGameVersion_warning, testedGameVersion, GameVersion.GetVersion()));
            }
            if (failedPatches.Count > 0)
            {
                SingleLineLabel(RES.failedPatches_error);
                foreach (var featureName in failedPatches)
                {
                    SingleLineLabel(string.Format(RES.featureName_error, featureName));
                }
            }
            if (failedLoading.Count > 0)
            {
                SingleLineLabel(RES.failedLoading_error);
                foreach (var featureName in failedLoading)
                {
                    SingleLineLabel(string.Format(RES.featureName_error, featureName));
                }
            }

            SingleLineToggle(ref settings.EldritchKnightFix, RES.EldritchKnightFix_info, RES.EldritchKnightFix_tip);
            SingleLineToggle(ref settings.DrawbackForextraTraits, RES.DrawbackForextraTraits_info);
            SingleLineToggle(ref settings.OracleHas3SkillPoints, RES.OracleHas3SkillPoints_info);
            OracleClass.MaybeUpdateSkillPoints();
            SingleLineToggle(ref settings.RelaxAncientLorekeeper, RES.RelaxAncientLorekeeper_info);
            SingleLineToggle(ref settings.RelaxTonguesCurse, RES.RelaxTonguesCurse_info, RES.RelaxTonguesCurse_tip);
            SingleLineToggle(ref settings.ShowCustomPortraits, RES.ShowCustomPortraits_info);
            SingleLineToggle(ref settings.CheatCustomTraits, RES.CheatCustomTraits_info);
            SingleLineToggle(ref settings.HighDCl, RES.HighDCl_info);

            GL.EndVertical();
            ShowTooltip();
        }
Esempio n. 7
0
        static void OnGUI(UnityModManager.ModEntry modEntry)
        {
            if (!enabled)
            {
                return;
            }

            var fixedWidth = new GUILayoutOption[1] {
                GUILayout.ExpandWidth(false)
            };

            if (testedGameVersion != GameVersion.GetVersion())
            {
                GUILayout.Label($"<b>This mod was tested against game version {testedGameVersion}, but you are running {GameVersion.GetVersion()}.</b>", fixedWidth);
            }
            if (failedPatches.Count > 0)
            {
                GUILayout.BeginVertical();
                GUILayout.Label("<b>Error: Some patches failed to apply. These features may not work:</b>", fixedWidth);
                foreach (var featureName in failedPatches)
                {
                    GUILayout.Label($"  • <b>{featureName}</b>", fixedWidth);
                }
                GUILayout.EndVertical();
            }
            if (failedLoading.Count > 0)
            {
                GUILayout.BeginVertical();
                GUILayout.Label("<b>Error: Some assets failed to load. Saves using these features won't work:</b>", fixedWidth);
                foreach (var featureName in failedLoading)
                {
                    GUILayout.Label($"  • <b>{featureName}</b>", fixedWidth);
                }
                GUILayout.EndVertical();
            }

            settings.EldritchKnightFix = GUILayout.Toggle(settings.EldritchKnightFix,
                                                          "Eldritch Knight requires martial class (doesn't affect existing EKs)", fixedWidth);

            settings.ShowCustomPortraits = GUILayout.Toggle(settings.ShowCustomPortraits,
                                                            "Show custom portraits in the portrait list at character creation (if changed, requires restart)", fixedWidth);

            settings.CheatCustomTraits = GUILayout.Toggle(settings.CheatCustomTraits,
                                                          "Enable Show alll traits,spells even custom and homebrew(if changed, requires restart for changes to show up)", fixedWidth);


            string message = "Enable Picking Bloodline mutations on every bloodline class(if changed, requires new save but it doesn't work yet)";

            settings.DrawbackForextraTraits = GUILayout.Toggle(settings.DrawbackForextraTraits,
                                                               "features incompatible with call of the wild(Turn off for compatibility Call of the wild 1.57+)(if changed, requires restart)", fixedWidth);

            settings.FavoredMetamagic = GUILayout.Toggle(settings.FavoredMetamagic,
                                                         "favored class bonus and metamagic feats", fixedWidth);

            settings.HighDCl = GUILayout.Toggle(settings.HighDCl,
                                                "Outlander spells gain caster level and Dc max{cheat}", fixedWidth);

            settings.OracleHas3SkillPoints = GUILayout.Toggle(settings.OracleHas3SkillPoints,
                                                              "Give Oracle class 3+int skill points on level up (instead of 4, due to condensed skills)");
            OracleClass.MaybeUpdateSkillPoints();

            settings.RelaxAncientLorekeeper = GUILayout.Toggle(settings.RelaxAncientLorekeeper,
                                                               "Any race can choose the Oracle Ancient Lorekeeper archetype", fixedWidth);

            settings.RelaxTonguesCurse = GUILayout.Toggle(settings.RelaxTonguesCurse,
                                                          "Disable Tongues curse penalty (that party members need 1 rank Knowledge: World to be controlled by PC in combat)", fixedWidth);
        }