Exemplo n.º 1
0
        static public void create()
        {
            var barbarian_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("f7d7eb166b3dd594fb330d085df41853");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "BeastkinBerserkerArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Beastkin Berserker");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "While some barbarians take on bestial aspects in their rages, the beastkin berserker descends so deeply into primal fury that she actually transforms into an animal. Berserkers of the surface world often associate with predators such as bears or wolves, and are sometimes mistaken for lycanthropes. Some barbarians shapechange into rampaging dinosaurs or megafauna, crafting their armor out of the hide and bones of their favored animals.");
            });
            Helpers.SetField(archetype, "m_ParentClass", barbarian_class);
            library.AddAsset(archetype, "");

            createSavageRapport();
            createFeralTransformation();

            var fast_movement = library.Get <BlueprintFeature>("d294a5dddd0120046aae7d4eb6cbc4fc");
            var rage_power    = library.Get <BlueprintFeatureSelection>("28710502f46848d48b3f0d6132817c4e");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, fast_movement),
                                                          Helpers.LevelEntry(4, rage_power),
                                                          Helpers.LevelEntry(8, rage_power),
                                                          Helpers.LevelEntry(12, rage_power), };

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, savage_rapport),
                                                       Helpers.LevelEntry(4, feral_transformation_wolf, feral_transformation_leopard),
                                                       Helpers.LevelEntry(8, feral_transformation_bear, feral_transformation_dire_wolf),
                                                       Helpers.LevelEntry(12, feral_transformation_smilodon, feral_transformation_mastodon), };

            barbarian_class.Progression.UIGroups = barbarian_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(feral_transformation_wolf, feral_transformation_dire_wolf, feral_transformation_mastodon));
            barbarian_class.Progression.UIGroups = barbarian_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(feral_transformation_leopard, feral_transformation_bear, feral_transformation_smilodon));
            barbarian_class.Archetypes           = barbarian_class.Archetypes.AddToArray(archetype);
        }
Exemplo n.º 2
0
        public static void create()
        {
            var sorcerer = library.Get <BlueprintCharacterClass>("b3a505fb61437dc4097f43c3f8f9a4cf");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "CrossbloodedSorcererArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Crossblooded");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "A crossblooded bloodline combines the powers of two distinct heritages. In most cases, sorcerers with this bloodline are the offspring of two sorcerers from different ancestries, but occasionally a crossblooded sorcerer arises from the conjunction of other powers. A draconic sorcerer who is also the culmination of a great destiny, an abyssal sorcerer from a family that dealt with devils, and an arcane sorcerer raised from birth by fey are all possible sources for crossblooded bloodlines.");
            });
            Helpers.SetField(archetype, "m_ParentClass", sorcerer);
            library.AddAsset(archetype, "");

            createSelectedMarkers();
            createDrawbacks();
            createCombinedBloodlines();
            archetype.ReplaceSpellbook = spellbook;

            var bloodlines = library.Get <BlueprintFeatureSelection>("24bef8d1bee12274686f6da6ccbc8914");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, bloodlines) };
            archetype.AddFeatures    = new LevelEntry[] { Helpers.LevelEntry(1, bloodline_selection1, bloodline_selection2, drawbacks) };

            sorcerer.Archetypes = sorcerer.Archetypes.AddToArray(archetype);
            sorcerer.Progression.UIDeterminatorsGroup = sorcerer.Progression.UIDeterminatorsGroup.AddToArray();

            addToPrestigeClasses();
        }
Exemplo n.º 3
0
        static public void create()
        {
            var ranger_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("cda0615668a6df14eb36ba19ee881af6");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "DivineTrackerArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Divine Tracker");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Blessed by his deity, a divine tracker hunts down those he deems deserving of his retribution. His weapon is likely to find purchase in his favored enemy.");
            });
            Helpers.SetField(archetype, "m_ParentClass", ranger_class);
            library.AddAsset(archetype, "");

            createBlessings();
            var deity_selection = library.Get <BlueprintFeatureSelection>("59e7a76987fe3b547b9cce045f4db3e4");
            var hunters_bond    = library.Get <BlueprintFeatureSelection>("b705c5184a96a84428eeb35ae2517a14");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(4, hunters_bond) };

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, deity_selection),
                                                       Helpers.LevelEntry(4, blessings, blessings) };

            ranger_class.Progression.UIDeterminatorsGroup = ranger_class.Progression.UIDeterminatorsGroup.AddToArray(deity_selection);
            ranger_class.Archetypes = ranger_class.Archetypes.AddToArray(archetype);
        }
Exemplo n.º 4
0
        static public void create()
        {
            var alchemist_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("0937bec61c0dabc468428f496580c721");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "ToxicantArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Toxicant");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "In lands where poisons are legal and may be openly studied and sold, some alchemists obsess over the myriad ways that poisons and venoms can be applied and delivered. Known as toxicants, these deadly artists induce the production of deadly secretions within their own bodies in order to better inflict crippling conditions upon their foes.");
            });
            Helpers.SetField(archetype, "m_ParentClass", alchemist_class);
            library.AddAsset(archetype, "");

            createPoisonBuffAndPoisonImprovements();
            createToxicSecretionAndPoisonDiscoveries();

            var mutagen             = library.Get <BlueprintFeature>("cee8f65448ce71c4b8b8ca13751dd8ea");
            var throw_anything      = library.Get <BlueprintFeature>("65c538dcfd91930489ad3ab18ad9204b");
            var bombs               = library.Get <BlueprintFeature>("c59b2f256f5a70a4d896568658315b7d");
            var discovery           = library.Get <BlueprintFeatureSelection>("cd86c437488386f438dcc9ae727ea2a6");
            var sneak_attack        = library.Get <BlueprintFeature>("9b9eac6709e1c084cb18c3a366e0ec87");
            var medical_discovery   = library.Get <BlueprintFeatureSelection>("67f499218a0e22944abab6fe1c9eaeee");
            var alchemist_discovery = library.Get <BlueprintFeatureSelection>("cd86c437488386f438dcc9ae727ea2a6");
            var advance_talents     = library.Get <BlueprintFeature>("a33b99f95322d6741af83e9381b2391c");

            var poison_immunity    = library.Get <BlueprintFeature>("202af59b918143a4ab7c33d72c8eb6d5");
            var persistent_mutagen = library.Get <BlueprintFeature>("75ba281feb2b96547a3bfb12ecaff052");


            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, mutagen),
                                                          Helpers.LevelEntry(14, persistent_mutagen) };


            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, poison_secretion),
                                                       Helpers.LevelEntry(3, poison_improvement, poison_move_action),
                                                       Helpers.LevelEntry(6, poison_improvement, poison_swift_action),
                                                       Helpers.LevelEntry(9, poison_improvement),
                                                       Helpers.LevelEntry(12, poison_improvement),
                                                       Helpers.LevelEntry(15, poison_improvement),
                                                       Helpers.LevelEntry(18, poison_improvement), };

            alchemist_class.Progression.UIGroups = alchemist_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(poison_secretion, poison_improvement));
            alchemist_class.Progression.UIGroups = alchemist_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(poison_move_action, poison_swift_action));
            alchemist_class.Archetypes           = alchemist_class.Archetypes.AddToArray(archetype);

            medical_discovery.AllFeatures   = medical_discovery.AllFeatures.AddToArray(sticky_posion, celestial_poison, concentrate_poison);
            alchemist_discovery.AllFeatures = alchemist_discovery.AllFeatures.AddToArray(sticky_posion, celestial_poison, concentrate_poison);

            var dispelling_attack = library.Get <BlueprintFeature>("1b92146b8a9830d4bb97ab694335fa7c");

            ClassToProgression.addClassToFeat(archetype.GetParentClass(), new BlueprintArchetype[] { archetype }, ClassToProgression.DomainSpellsType.NoSpells, dispelling_attack, archetype.GetParentClass());

            var greater_mutagen = library.Get <BlueprintFeature>("76c61966afdd82048911f3d63c6fe0bc");
            var cognatogen      = library.Get <BlueprintFeature>("e3f460ea61fcc504183c7d6818bbbf7a");
            var feral_mutagen   = library.Get <BlueprintFeature>("fd5f7b37ab4301c48a88cc196ee5f0ce");

            greater_mutagen.AddComponent(mutagen.PrerequisiteFeature());
            cognatogen.AddComponent(mutagen.PrerequisiteFeature());
            feral_mutagen.AddComponent(mutagen.PrerequisiteFeature());
        }
Exemplo n.º 5
0
        internal static void create()
        {
            var kineticist_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("42a455d9ec1ad924d889272429eb8391");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "ElementalAnnihilatorArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Elemental Annihilator");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "For some kineticists, nothing in life is as sweet as destruction and pain. Elemental annihilators pursue only uses of their powers that harm others.");
            });
            Helpers.SetField(archetype, "m_ParentClass", kineticist_class);
            library.AddAsset(archetype, "");

            var element_selection     = library.Get <BlueprintFeatureSelection>("1f3a15a3ae8a5524ab8b97f469bf4e3d");
            var infusion_selection    = library.Get <BlueprintFeatureSelection>("58d6f8e9eea63f6418b107ce64f315ea");
            var wild_talent_selection = library.Get <BlueprintFeatureSelection>("5c883ae0cd6d7d5448b7a420f51f8459");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, infusion_selection),
                                                          Helpers.LevelEntry(2, wild_talent_selection),
                                                          Helpers.LevelEntry(3, infusion_selection),
                                                          Helpers.LevelEntry(4, wild_talent_selection),
                                                          Helpers.LevelEntry(5, infusion_selection),
                                                          Helpers.LevelEntry(6, wild_talent_selection),
                                                          Helpers.LevelEntry(8, wild_talent_selection),
                                                          //Helpers.LevelEntry(9, infusion_selection), since no extreme range infusion
                                                          Helpers.LevelEntry(10, wild_talent_selection),
                                                          Helpers.LevelEntry(12, wild_talent_selection),
                                                          Helpers.LevelEntry(14, wild_talent_selection),
                                                          Helpers.LevelEntry(16, wild_talent_selection),
                                                          Helpers.LevelEntry(18, wild_talent_selection),
                                                          Helpers.LevelEntry(20, wild_talent_selection) };
            createDevastatingInfusion();
            // creatBlastTraining();
            // createDampenedVersality();
            // createOmnicide();

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, devastating_infusion),

                                                       /* Helpers.LevelEntry(2, dampened_versality),
                                                        * Helpers.LevelEntry(3, increased_range),
                                                        * Helpers.LevelEntry(5, blast_training),
                                                        * Helpers.LevelEntry(8, dampened_versality),
                                                        * Helpers.LevelEntry(9, blast_training),
                                                        * Helpers.LevelEntry(10, dampened_versality),
                                                        * Helpers.LevelEntry(13, blast_training),
                                                        * Helpers.LevelEntry(14, dampened_versality),
                                                        * Helpers.LevelEntry(17, blast_training),
                                                        * Helpers.LevelEntry(18, dampened_versality),
                                                        * Helpers.LevelEntry(20, omnicide)*/
            };

            archetype.OverrideAttributeRecommendations        = true;
            kineticist_class.Progression.UIDeterminatorsGroup = kineticist_class.Progression.UIDeterminatorsGroup.AddToArray(devastating_infusion);
            kineticist_class.Progression.UIGroups             = kineticist_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(increased_range, dampened_versality, omnicide));
            kineticist_class.Archetypes = kineticist_class.Archetypes.AddToArray(archetype);

            //fix expanded element bonus
            wild_talent_selection.AddComponent(Common.prerequisiteNoArchetype(archetype));
            kineticist_class.Archetypes = kineticist_class.Archetypes.AddToArray(archetype);
        }
Exemplo n.º 6
0
        static public void create()
        {
            var druid = library.Get <BlueprintCharacterClass>("610d836f3a3a9ed42a4349b62f002e96");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "StormDruidArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Storm Druid");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "While most druids focus their attention upon the rich earth and the bounty of nature that springs forth from it, the storm druid’s eyes have ever been cast to the skies and the endless expanse of blue, channeling the most raw and untamed aspects of nature.");
            });
            Helpers.SetField(archetype, "m_ParentClass", druid);
            library.AddAsset(archetype, "");
            createNatureBondAndWindLord();
            createMiscAbilities();


            var druid_bond         = library.Get <BlueprintFeatureSelection>("3830f3630a33eba49b60f511b4c8f2a8");
            var spontaneous_summon = library.Get <BlueprintFeature>("b296531ffe013c8499ad712f8ae97f6b");
            var resis_nature_lure  = library.Get <BlueprintFeature>("ad6a5b0e1a65c3540986cf9a7b006388");
            var venom_immunity     = library.Get <BlueprintFeature>("5078622eb5cecaf4683fa16a9b948c2c");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, druid_bond, spontaneous_summon),
                                                          Helpers.LevelEntry(4, resis_nature_lure),
                                                          Helpers.LevelEntry(9, venom_immunity) };

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, nature_bond, spontaneous_casting),
                                                       Helpers.LevelEntry(2, storm_walker),
                                                       Helpers.LevelEntry(4, eyes_of_the_storm),
                                                       Helpers.LevelEntry(9, wind_lord),
                                                       Helpers.LevelEntry(13, storm_lord) };

            druid.Progression.UIDeterminatorsGroup = druid.Progression.UIDeterminatorsGroup.AddToArray(nature_bond, spontaneous_casting);
            druid.Progression.UIGroups             = druid.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(storm_walker, eyes_of_the_storm, wind_lord, storm_lord));
            druid.Archetypes = druid.Archetypes.AddToArray(archetype);
        }
Exemplo n.º 7
0
        static public void create()
        {
            var cleric_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("67819271767a9dd4fbfd4ae700befea0");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "DivineScourgeArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Divine Scourge");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Some divine servants take on the role of dealing out unique punishments on behalf of their deities, taking pleasure in carrying out their sacrosanct duties. Such divine scourges are most common among worshipers of Abadar (meting out punishment to lawbreakers in concert with local courts), Calistria (punishing those truly deserving of vengeance), and Zon-Kuthon (seeing punishment as an applied form of pain and suffering). Divine scourges make a point of inflicting long-lasting maladies and curses on those deserving of such fates under the tenets of the scourges’ religions.");
            });
            Helpers.SetField(archetype, "m_ParentClass", cleric_class);
            library.AddAsset(archetype, "");

            createSpontaneousConversion();
            createCurseSubdomain();
            createDivineHexes();


            var channel_selection = library.Get <BlueprintFeatureSelection>("d332c1748445e8f4f9e92763123e31bd");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, library.Get <BlueprintFeature>("48525e5da45c9c243a343fc6545dbdb9"), //domain selection
                                                                             library.Get <BlueprintFeature>("43281c3d7fe18cc4d91928395837cd1e"),    //second domain
                                                                             channel_selection) };

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, curse_subdomain, spontnaeous_conversion),
                                                       Helpers.LevelEntry(3, divine_hexes),
                                                       Helpers.LevelEntry(7, divine_hexes),
                                                       Helpers.LevelEntry(11, divine_hexes),
                                                       Helpers.LevelEntry(15, divine_hexes),
                                                       Helpers.LevelEntry(19, divine_hexes), };

            cleric_class.Progression.UIDeterminatorsGroup = cleric_class.Progression.UIDeterminatorsGroup.AddToArray(curse_subdomain);
            cleric_class.Progression.UIGroups             = cleric_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(divine_hexes));
            cleric_class.Archetypes = cleric_class.Archetypes.AddToArray(archetype);
        }
Exemplo n.º 8
0
 public void initialize(BlueprintCharacterClass[] character_classes, BlueprintArchetype character_archetype, int lvl_delay, string name_prefix)
 {
     allowed_classes   = character_classes;
     allowed_archetype = character_archetype;
     delay             = lvl_delay;
     prefix            = name_prefix;
 }
        static public void create()
        {
            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "LoreWardenArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Lore Warden");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Quick wits and deceptive techniques can often succeed where brute force might not. A lore warden is the consummate warrior-scholar of the Explorer’s Society, outsmarting her competition even when locking blades with powerful foes. Outside of Combat, a lore warden’s extensive education also helps her document the past and survive great danger.");
            });
            Helpers.SetField(archetype, "m_ParentClass", fighter_class);
            library.AddAsset(archetype, "");

            createScholastic();
            createExpertise();
            createSwordSecret();

            var fighter_proficiency = library.Get <BlueprintFeature>("a23591cc77086494ba20880f87e73970");
            var bravery             = library.Get <BlueprintFeature>("f6388946f9f472f4585591b80e9f2452");
            var armor_training      = library.Get <BlueprintFeature>("3c380607706f209499d951b29d3c44f3");
            var armor_mastery       = library.Get <BlueprintFeature>("ae177f17cfb45264291d4d7c2cb64671");
            var fighter_feat        = library.Get <BlueprintFeatureSelection>("41c8486641f7d6d4283ca9dae4147a9f");

            var advanced_armor_training = AdvancedFighterOptions.advanced_armor_training ?? armor_training;

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, fighter_proficiency),
                                                          Helpers.LevelEntry(2, bravery, fighter_feat),
                                                          Helpers.LevelEntry(3, armor_training),
                                                          Helpers.LevelEntry(6, bravery),
                                                          Helpers.LevelEntry(7, advanced_armor_training),
                                                          Helpers.LevelEntry(10, bravery),
                                                          Helpers.LevelEntry(11, advanced_armor_training),
                                                          Helpers.LevelEntry(14, bravery),
                                                          Helpers.LevelEntry(15, advanced_armor_training),
                                                          Helpers.LevelEntry(18, bravery),
                                                          Helpers.LevelEntry(19, armor_mastery) };

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, scholastic),
                                                       Helpers.LevelEntry(2, expertise),
                                                       Helpers.LevelEntry(3, sword_secret),
                                                       Helpers.LevelEntry(7, sword_secret),
                                                       Helpers.LevelEntry(11, sword_secret),
                                                       Helpers.LevelEntry(15, sword_secret),
                                                       Helpers.LevelEntry(19, sword_secret) };
            archetype.ReplaceClassSkills       = true;
            archetype.ClassSkills              = fighter_class.ClassSkills.AddToArray(StatType.SkillLoreReligion, StatType.SkillKnowledgeArcana);
            archetype.AddSkillPoints           = 1;
            archetype.ReplaceStartingEquipment = true;
            archetype.StartingItems            = new Kingmaker.Blueprints.Items.BlueprintItem[]
            {
                library.Get <BlueprintItemWeapon>("2fff2921851568a4d80ed52f76cccdb6"),          //great sword
                library.Get <BlueprintItemWeapon>("201f6150321e09048bd59e9b7f558cb0"),          //longbow
                library.Get <BlueprintItemArmor>("c65f6fc979d5556489b20e478189cbdd"),           //chain short
                library.Get <BlueprintItemEquipmentUsable>("d52566ae8cbe8dc4dae977ef51c27d91"), //potion of cure light wounds
                library.Get <BlueprintItemEquipmentUsable>("d52566ae8cbe8dc4dae977ef51c27d91"), //potion of cure light wounds
                library.Get <BlueprintItemEquipmentUsable>("d52566ae8cbe8dc4dae977ef51c27d91")  //potion of cure light wounds
            };

            fighter_class.Progression.UIDeterminatorsGroup = fighter_class.Progression.UIDeterminatorsGroup.AddToArray(scholastic);
            fighter_class.Progression.UIGroups             = fighter_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(expertise, sword_secret));
            fighter_class.Archetypes = fighter_class.Archetypes.AddToArray(archetype);
        }
Exemplo n.º 10
0
        static public void create()
        {
            var alchemist_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("0937bec61c0dabc468428f496580c721");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "BeastmorphArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Beastmorph");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Beastmorphs study the anatomy of monsters, learning how they achieve their strange powers. They use their knowledge to duplicate these abilities, but at the cost of taking on inhuman shapes when they use mutagens.");
            });
            Helpers.SetField(archetype, "m_ParentClass", alchemist_class);
            library.AddAsset(archetype, "");


            var posion_resistance  = library.Get <BlueprintFeature>("c9022272c87bd66429176ce5c597989c");
            var poison_immunity    = library.Get <BlueprintFeature>("202af59b918143a4ab7c33d72c8eb6d5");
            var persistent_mutagen = library.Get <BlueprintFeature>("75ba281feb2b96547a3bfb12ecaff052");

            createFeralMutagenAndWings();
            createBeastformMutagen();

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(5, posion_resistance),
                                                          Helpers.LevelEntry(8, posion_resistance),
                                                          Helpers.LevelEntry(10, poison_immunity),
                                                          Helpers.LevelEntry(14, persistent_mutagen), };

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(3, feral_mutagen),
                                                       Helpers.LevelEntry(6, feral_wings),
                                                       Helpers.LevelEntry(10, pounce),
                                                       Helpers.LevelEntry(14, blindsense), };

            alchemist_class.Progression.UIGroups = alchemist_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(feral_mutagen, feral_wings, pounce, blindsense));
            alchemist_class.Archetypes           = alchemist_class.Archetypes.AddToArray(archetype);
        }
Exemplo n.º 11
0
        static public void create()
        {
            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "DrillSergeantArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Drill Sergeant");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Drill sergeants excel at training other combatants in fighting techniques.");
            });
            Helpers.SetField(archetype, "m_ParentClass", fighter_class);
            library.AddAsset(archetype, "");

            createTactician();
            createWeaponTrainer();

            var bravery = library.Get <BlueprintFeature>("f6388946f9f472f4585591b80e9f2452");
            var weapon_training_extra = library.Get <BlueprintFeature>("b8cecf4e5e464ad41b79d5b42b76b399");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(2, bravery),
                                                          Helpers.LevelEntry(6, bravery),
                                                          Helpers.LevelEntry(9, weapon_training_extra),
                                                          Helpers.LevelEntry(10, bravery),
                                                          Helpers.LevelEntry(13, weapon_training_extra),
                                                          Helpers.LevelEntry(14, bravery),
                                                          Helpers.LevelEntry(17, weapon_training_extra),
                                                          Helpers.LevelEntry(18, bravery) };

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(2, tactician),
                                                       Helpers.LevelEntry(9, greater_tactician),
                                                       Helpers.LevelEntry(13, weapon_trainer),
                                                       Helpers.LevelEntry(17, master_tactician) };

            fighter_class.Progression.UIGroups = fighter_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(tactician, greater_tactician, weapon_trainer, master_tactician));
            fighter_class.Archetypes           = fighter_class.Archetypes.AddToArray(archetype);
        }
Exemplo n.º 12
0
        static void FixBloodlinePrerequisites(BlueprintArchetype crossblooded)
        {
            // Fix sorcerer bonus feats.
            var sorcererFeatSelection = library.Get <BlueprintFeatureSelection>("3a60f0c0442acfb419b0c03b584e1394");

            sorcererFeatSelection.AllFeatures.ForEach(FixBloodlinePrerequisite);

            // Fix blood of dragon selection: add draconic crossbloodlines.
            var bloodOfDragonsSelection = library.Get <BlueprintFeatureSelection>("da48f9d7f697ae44ca891bfc50727988");
            var draconicBloodlines      = bloodOfDragonsSelection.AllFeatures.ToArray();
            var draconicCrossbloods     = draconicBloodlines.Select(f => crossbloodForBloodline[f as BlueprintProgression]).ToArray();

            bloodOfDragonsSelection.SetFeatures(draconicBloodlines.Concat(draconicCrossbloods));
            foreach (var draconic in draconicCrossbloods)
            {
                // Ensure the crossblood ones can only be chosen if this is a crossblooded sorcerer.
                draconic.AddComponent(Helpers.Create <PrerequisiteArchetypeLevel>(p =>
                {
                    p.CharacterClass = sorcererClass;
                    p.Archetype      = crossblooded;
                    p.Level          = 1;
                }));
            }

            // Fix dragon disciple features.
            var dragonDiscipleProgression = library.Get <BlueprintProgression>("69fc2bad2eb331346a6c777423e0d0f7");

            foreach (var entry in dragonDiscipleProgression.LevelEntries)
            {
                foreach (var feat in entry.Features.OfType <BlueprintFeature>())
                {
                    FixDragonDisciple(feat, draconicBloodlines);
                }
            }
        }
Exemplo n.º 13
0
        internal static void create()
        {
            var kineticist_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("42a455d9ec1ad924d889272429eb8391");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "OverhelmingSoulArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Overwhelming Soul");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Some kineticists have such a powerful personality that they can seize control of their element with their minds alone, without endangering their bodies.");
            });
            Helpers.SetField(archetype, "m_ParentClass", kineticist_class);
            library.AddAsset(archetype, "");

            var burn_feature = library.Get <BlueprintFeature>("57e3577a0eb53294e9d7cc649d5239a3");
            var overflow     = library.Get <BlueprintProgression>("86beb0391653faf43aec60d5ec05b538");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, burn_feature, overflow),
                                                          Helpers.LevelEntry(6, KineticistFix.internal_buffer) };

            createMindOverMatter();
            createMentalProwess();
            createOverwhelmingPower();

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, mind_over_matter, mental_prowess),
                                                       Helpers.LevelEntry(3, overwhelming_power) };

            archetype.OverrideAttributeRecommendations = true;
            archetype.RecommendedAttributes            = new StatType[] { StatType.Charisma, StatType.Dexterity };
            archetype.ReplaceClassSkills = true;
            archetype.ClassSkills        = kineticist_class.ClassSkills.AddToArray(StatType.SkillPersuasion);
            kineticist_class.Progression.UIDeterminatorsGroup = kineticist_class.Progression.UIDeterminatorsGroup.AddToArray(mind_over_matter);
            kineticist_class.Progression.UIGroups             = kineticist_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(mental_prowess, overwhelming_power));
            kineticist_class.Archetypes = kineticist_class.Archetypes.AddToArray(archetype);
        }
        public static void create()
        {
            var sorcerer = library.Get <BlueprintCharacterClass>("b3a505fb61437dc4097f43c3f8f9a4cf");

            createPrimalBloodlines();

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "PrimalSorcererArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Primal Sorcerer");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Your powers are attuned to the concentrated core of the elemental plane.");
            });
            Helpers.SetField(archetype, "m_ParentClass", sorcerer);
            library.AddAsset(archetype, "");
            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, library.Get <BlueprintFeatureSelection>("24bef8d1bee12274686f6da6ccbc8914")), //original bloodline
            };
            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, primal_bloodline_selection) };

            sorcerer.Archetypes = sorcerer.Archetypes.AddToArray(archetype);

            //fix dragon disciple
            var dragon_disicple = library.Get <BlueprintCharacterClass>("72051275b1dbb2d42ba9118237794f7c");

            dragon_disicple.AddComponent(Common.prerequisiteNoArchetype(sorcerer, archetype));
        }
        static public void create()
        {
            var druid = library.Get <BlueprintCharacterClass>("610d836f3a3a9ed42a4349b62f002e96");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "DraconicDruidArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Draconic Druid");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Some druids believe that dragons are the ultimate expression of nature, combining elemental fury with majestic beauty.\nThese druids consort with dragons and eventually transform into draconic forms.");
            });
            Helpers.SetField(archetype, "m_ParentClass", druid);
            library.AddAsset(archetype, "");
            createDrakeCompanion();
            createMiscFeats();
            createDragonShape();

            var nature_sense       = library.Get <BlueprintFeature>("3a859e435fdd6d343b80d4970a7664c1");
            var resist_nature_lure = library.Get <BlueprintFeature>("ad6a5b0e1a65c3540986cf9a7b006388");
            var venom_immunity     = library.Get <BlueprintFeature>("5078622eb5cecaf4683fa16a9b948c2c");
            var woodland_stride    = library.Get <BlueprintFeature>("11f4072ea766a5840a46e6660894527d");
            var nature_bond        = library.Get <BlueprintFeature>("3830f3630a33eba49b60f511b4c8f2a8");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, nature_bond, nature_sense, Wildshape.druid_wildshapes_progression),
                                                          Helpers.LevelEntry(2, woodland_stride),
                                                          Helpers.LevelEntry(4, resist_nature_lure),
                                                          Helpers.LevelEntry(9, venom_immunity), };

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, dragon_shape, drake_companion, dragon_sense),
                                                       Helpers.LevelEntry(4, resist_dragons_might) };


            druid.Progression.UIGroups             = druid.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(dragon_sense, resist_dragons_might));
            druid.Progression.UIDeterminatorsGroup = druid.Progression.UIDeterminatorsGroup.AddToArray(drake_companion);
            druid.Archetypes = druid.Archetypes.AddToArray(archetype);
        }
Exemplo n.º 16
0
            private static bool Prefix(CharGenClassPhaseVM __instance, BlueprintArchetype archetype)
            {
                if (!settings.toggleMultiArchetype)
                {
                    return(true);
                }
                __instance.UpdateTooltipTemplate(false);
                if (__instance.LevelUpController.State.SelectedClass == null)
                {
                    return(false);
                }
                var Progression = __instance.LevelUpController.Preview.Progression;
                var classData   = __instance.LevelUpController.Preview
                                  .Progression.GetClassData(__instance.LevelUpController.State.SelectedClass);

                if (classData != null && (archetype == null || !Progression.CanAddArchetype(classData.CharacterClass, archetype)))
                {
                    classData.Archetypes.ForEach(delegate(BlueprintArchetype a) {
                        __instance.LevelUpController.RemoveArchetype(a);
                    });
                }
                if (archetype != null)
                {
                    __instance.LevelUpController.RemoveArchetype(archetype);
                    if (!__instance.LevelUpController.AddArchetype(archetype))
                    {
                        MainThreadDispatcher.Post(delegate(object _) {
                            __instance.SelectedArchetypeVM.Value = null;
                        }, null);
                    }
                }
                __instance.UpdateClassInformation();
                return(false);
            }
Exemplo n.º 17
0
        internal static void create()
        {
            var slayer_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("c75e0971973957d4dbad24bc7957e4fb");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "GraveWardenArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Grave Warden");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "While paladins and inquisitors use their connection with the divine to fight undead hordes and other horrors of the night, a grave warden relies on knowledge, skill with weapons, and tenacity to put an end to these night-born terrors.");
            });
            Helpers.SetField(archetype, "m_ParentClass", slayer_class);
            library.AddAsset(archetype, "");

            var slayer_talent2  = library.Get <BlueprintFeatureSelection>("04430ad24988baa4daa0bcd4f1c7d118");
            var slayer_talent10 = library.Get <BlueprintFeatureSelection>("913b9cf25c9536949b43a2651b7ffb66");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(2, slayer_talent2),
                                                          Helpers.LevelEntry(10, slayer_talent10) };

            createHolyWaterSprinkerAndDeathWard();
            createDustBringer();

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(2, holy_water_sprinkler),
                                                       Helpers.LevelEntry(7, death_ward),
                                                       Helpers.LevelEntry(10, dustbringer) };

            slayer_class.Progression.UIGroups = slayer_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(holy_water_sprinkler, death_ward, dustbringer));
            slayer_class.Archetypes           = slayer_class.Archetypes.AddToArray(archetype);
        }
Exemplo n.º 18
0
        static public void create()
        {
            Main.DebugLog("Creating Flying Blade archetype");
            flying_blade = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "FlyingBladeArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Flying Blade");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "While most swashbucklers prefer their battles up close, others prefer dealing death from a distance.");
            });
            SetField(flying_blade, "m_ParentClass", Swashbuckler.swashbuckler_class);
            library.AddAsset(flying_blade, "fbe20107f5f24a47aed0dc5836862758");

            flying_blade.ReplaceStartingEquipment = true;
            flying_blade.StartingItems            = new BlueprintItem[]
            {
                library.Get <BlueprintItem>("afbe88d27a0eb544583e00fa78ffb2c7"), //StuddedStandard
                library.Get <BlueprintItem>("aa514dbf4c3d61f4e9c0738bd4d373cb"), //DaggerStandard
                library.Get <BlueprintItem>("bc93a78d71bef084fa155e529660ed0d"), //PotionOfShieldOfFaith
                library.Get <BlueprintItem>("d52566ae8cbe8dc4dae977ef51c27d91"), //PotionOfCureLightWounds
            };

            //Create Features
            createFlyingPanache();
            createFlyingBladeTraining();
            createFlyingBladeMastery();
            createSubtleThrow();
            createDisruptingCounter();
            createPreciseThrow();
            createTargetedThrow();
            createBleedingWound();
            createPerfectThrow();

            flying_blade.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, Swashbuckler.panache, Swashbuckler.dodging_panache_deed),
                                                             Helpers.LevelEntry(3, Swashbuckler.kip_up_deed, Swashbuckler.menacing_swordplay_deed),
                                                             Helpers.LevelEntry(5, Swashbuckler.swashbuckler_weapon_training),
                                                             Helpers.LevelEntry(7, Swashbuckler.targeted_strike_deed),
                                                             Helpers.LevelEntry(9, Swashbuckler.swashbuckler_weapon_training),
                                                             Helpers.LevelEntry(13, Swashbuckler.swashbuckler_weapon_training),
                                                             Helpers.LevelEntry(15, Swashbuckler.perfect_thrust_deed),
                                                             Helpers.LevelEntry(17, Swashbuckler.swashbuckler_weapon_training),
                                                             Helpers.LevelEntry(20, Swashbuckler.swashbuckler_weapon_mastery), };

            flying_blade.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, flying_panache, subtle_throw_deed_first),
                                                          Helpers.LevelEntry(3, disrupting_counter_deed, precise_throw_deed),
                                                          Helpers.LevelEntry(5, flying_blade_training),
                                                          Helpers.LevelEntry(6, subtle_throw_deed_sixth),
                                                          Helpers.LevelEntry(7, targeted_throw_deed),
                                                          Helpers.LevelEntry(9, flying_blade_training),
                                                          Helpers.LevelEntry(11, bleeding_wound_deed),
                                                          Helpers.LevelEntry(13, flying_blade_training),
                                                          Helpers.LevelEntry(15, perfect_throw_deed),
                                                          Helpers.LevelEntry(17, flying_blade_training),
                                                          Helpers.LevelEntry(20, flying_blade_mastery), };

            Swashbuckler.swashbuckler_progression.UIDeterminatorsGroup = Swashbuckler.swashbuckler_progression.UIDeterminatorsGroup.AddToArray(flying_panache);
            Swashbuckler.swashbuckler_progression.UIGroups             = Swashbuckler.swashbuckler_progression.UIGroups.AddToArray(CreateUIGroup(flying_blade_training, flying_blade_mastery));
            Swashbuckler.swashbuckler_progression.UIGroups             = Swashbuckler.swashbuckler_progression.UIGroups.AddToArray(CreateUIGroup(subtle_throw_deed_first, subtle_throw_deed_sixth));
            Swashbuckler.swashbuckler_class.Archetypes = Swashbuckler.swashbuckler_class.Archetypes.AddToArray(flying_blade);
        }
Exemplo n.º 19
0
 public ImplementsEngine(string name_prefix, BlueprintAbilityResource ability_resource, BlueprintCharacterClass[] scaling_classes, StatType scaling_stat, bool check_focus_investment = true, BlueprintArchetype scaling_archetype = null)
 {
     stat                 = scaling_stat;
     classes              = scaling_classes;
     archetype            = scaling_archetype;
     resource             = ability_resource;
     prefix               = name_prefix + "Implement";
     check_invested_focus = check_focus_investment;
 }
Exemplo n.º 20
0
        internal static void Load()
        {
            if (loaded)
            {
                return;
            }
            loaded = true;

            // Create feature selections that we can use to allows spontaneous casters to replace known spells.
            //
            // The idea for this came from how the devs implemented Mystic Theurge and Inquisitor. The spellbook
            // selection UI doesn't support 2 classes, so they used parameterized feature selections to choose
            // the inquisitor spells.
            //
            // A similar approach is used here to replace spells. This has the nice side effect that the spell is
            // removed before adding new spells.
            //
            // The progression is based on caster level, which cannot be implemented using a BlueprintProgression
            // directly. So instead we rely on the `HandleUpdateCasterLevel` method being called from our patches to
            // ApplySpellbook.Apply and SelectFeature.Apply (used for Prestigious Spellcaster).
            foreach (var characterClass in Helpers.classes)
            {
                BlueprintCharacterClass occultistClass       = library.Get <BlueprintCharacterClass>("1b76f3c73aa84f91a1c65513fb23aa01");
                BlueprintArchetype      relicHunterArchetype = library.Get <BlueprintArchetype>("ee3aefc7cb19461f95f5d254009664e0");
                if (characterClass == occultistClass)
                {
                    break;
                }
                //Main.logger.Log($"Spell Replacement Progression function started for {characterClass.name}");
                if (characterClass.Spellbook != null)
                {
                    CreateSpellReplacementProgression(characterClass.Spellbook);
                }
                foreach (var archetype in characterClass.Archetypes)
                {
                    //if (archetype == relicHunterArchetype)
                    //    break;
                    //Main.logger.Log($"Spell Replacement Progression function started for {archetype.name}");
                    if (archetype.ReplaceSpellbook != null)
                    {
                        CreateSpellReplacementProgression(archetype.ReplaceSpellbook);
                    }
                }
            }

            //As explained by elmindra in the previous comment, this is supposed to apply a patch to ApplySpellbook.Apply and SelectFeature.Apply but one of those functions seems to no longer be present
            //there is error test in output_log.txt for it but I don't really understand exactly how it works
            ApplySpellbook_Apply_Patch.onApplySpellbook.Add((state, unit, previousCasterLevel) =>
            {
                var spellbook = unit.GetSpellbook(state.SelectedClass);
                if (spellbook != null && spellbook.CasterLevel != previousCasterLevel)
                {
                    HandleUpdateCasterLevel(unit, state, spellbook);
                }
            });
        }
Exemplo n.º 21
0
        public static PrerequisiteArchetypeLevel CreatePrerequisite(this BlueprintArchetype @class, int level, bool any = true)
        {
            var result = CallOfTheWild.Helpers.Create <PrerequisiteArchetypeLevel>();

            result.CharacterClass = @class.GetParentClass();
            result.Archetype      = @class;
            result.Level          = level;
            result.Group          = any ? Prerequisite.GroupType.Any : Prerequisite.GroupType.All;
            return(result);
        }
Exemplo n.º 22
0
        static public void create()
        {
            var barbarian_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("f7d7eb166b3dd594fb330d085df41853");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "UntamedRagerArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Untamed Rager");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "There are no rules in the wild. Some barbarians enter combat with only victory in mind and do anything in their power to achieve it.");
            });
            Helpers.SetField(archetype, "m_ParentClass", barbarian_class);
            library.AddAsset(archetype, "");

            createDirtyTrickTactics();
            createFeralAppearance();
            createDishonorable();

            var uncanny_dodge          = library.Get <BlueprintFeature>("3c08d842e802c3e4eb19d15496145709");
            var improved_uncanny_dodge = library.Get <BlueprintFeature>("485a18c05792521459c7d06c63128c79");
            var danger_sense           = library.Get <BlueprintFeature>("fdd591c1fbf1c0b41a359d59756f2888");
            var damage_reduction       = library.Get <BlueprintFeature>("cffb5cddefab30140ac133699d52a8f8");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(2, uncanny_dodge),
                                                          Helpers.LevelEntry(3, danger_sense),
                                                          Helpers.LevelEntry(5, improved_uncanny_dodge),
                                                          Helpers.LevelEntry(6, danger_sense),
                                                          Helpers.LevelEntry(7, damage_reduction),
                                                          Helpers.LevelEntry(9, danger_sense),
                                                          Helpers.LevelEntry(10, damage_reduction),
                                                          Helpers.LevelEntry(12, danger_sense),
                                                          Helpers.LevelEntry(13, damage_reduction),
                                                          Helpers.LevelEntry(15, danger_sense),
                                                          Helpers.LevelEntry(16, damage_reduction),
                                                          Helpers.LevelEntry(18, danger_sense),
                                                          Helpers.LevelEntry(19, damage_reduction), };

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(2, despicable_tactics),
                                                       Helpers.LevelEntry(3, feral_appearance),
                                                       Helpers.LevelEntry(5, deplorable_tactics),
                                                       Helpers.LevelEntry(6, feral_appearance),
                                                       Helpers.LevelEntry(7, dishonorable),
                                                       Helpers.LevelEntry(9, feral_appearance),
                                                       Helpers.LevelEntry(10, dishonorable),
                                                       Helpers.LevelEntry(12, feral_appearance),
                                                       Helpers.LevelEntry(13, dishonorable),
                                                       Helpers.LevelEntry(15, feral_appearance),
                                                       Helpers.LevelEntry(16, dishonorable),
                                                       Helpers.LevelEntry(18, feral_appearance),
                                                       Helpers.LevelEntry(19, dishonorable), };

            barbarian_class.Progression.UIGroups = barbarian_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(feral_appearance));
            barbarian_class.Progression.UIGroups = barbarian_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(dishonorable));
            barbarian_class.Progression.UIGroups = barbarian_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(despicable_tactics, deplorable_tactics));
            barbarian_class.Archetypes           = barbarian_class.Archetypes.AddToArray(archetype);
        }
Exemplo n.º 23
0
        internal static void create()
        {
            var kineticist_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("42a455d9ec1ad924d889272429eb8391");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "KineticChirurgeonArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Kinetic Chirurgeon");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "While any hydrokineticist can learn the rudiments of healing, some kineticists are virtuosos of the curative arts.");
            });
            Helpers.SetField(archetype, "m_ParentClass", kineticist_class);
            library.AddAsset(archetype, "");

            var element_selection     = library.Get <BlueprintFeatureSelection>("1f3a15a3ae8a5524ab8b97f469bf4e3d");
            var infusion_selection    = library.Get <BlueprintFeatureSelection>("58d6f8e9eea63f6418b107ce64f315ea");
            var wild_talent_selection = library.Get <BlueprintFeatureSelection>("5c883ae0cd6d7d5448b7a420f51f8459");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, infusion_selection),
                                                          Helpers.LevelEntry(2, wild_talent_selection),
                                                          Helpers.LevelEntry(4, wild_talent_selection),
                                                          Helpers.LevelEntry(6, wild_talent_selection, KineticistFix.internal_buffer),
                                                          Helpers.LevelEntry(8, wild_talent_selection),
                                                          Helpers.LevelEntry(10, wild_talent_selection),
                                                          Helpers.LevelEntry(12, wild_talent_selection),
                                                          Helpers.LevelEntry(14, wild_talent_selection),
                                                          Helpers.LevelEntry(16, wild_talent_selection),
                                                          Helpers.LevelEntry(18, wild_talent_selection),
                                                          Helpers.LevelEntry(20, wild_talent_selection) };
            createKineticChirurgery();
            createMetahealerTalent();
            createHealingBuffer();

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, kinetic_chirurgery),
                                                       Helpers.LevelEntry(2, metahealer_wild_talent),
                                                       Helpers.LevelEntry(4, metahealer_wild_talent),
                                                       Helpers.LevelEntry(6, healing_buffer, metahealer_wild_talent),
                                                       Helpers.LevelEntry(8, metahealer_wild_talent),
                                                       Helpers.LevelEntry(10, metahealer_wild_talent),
                                                       Helpers.LevelEntry(12, metahealer_wild_talent),
                                                       Helpers.LevelEntry(14, metahealer_wild_talent),
                                                       Helpers.LevelEntry(16, metahealer_wild_talent),
                                                       Helpers.LevelEntry(18, metahealer_wild_talent),
                                                       Helpers.LevelEntry(20, metahealer_wild_talent) };

            archetype.OverrideAttributeRecommendations        = true;
            kineticist_class.Progression.UIDeterminatorsGroup = kineticist_class.Progression.UIDeterminatorsGroup.AddToArray(kinetic_chirurgery);
            kineticist_class.Archetypes = kineticist_class.Archetypes.AddToArray(archetype);

            //fix expanded element bonus
            wild_talent_selection.AddComponent(Common.prerequisiteNoArchetype(archetype));
            metahealer_wild_talent.AddComponent(Common.createPrerequisiteArchetypeLevel(archetype, 1));


            KineticistFix.expanded_element_bonus_talent_selection.AllFeatures = KineticistFix.expanded_element_bonus_talent_selection.AllFeatures.AddToArray(metahealer_wild_talent);
        }
Exemplo n.º 24
0
 private static void RemoveAdvancedArmorTrainingFromArchetypes(BlueprintArchetype archetype, BlueprintFeatureSelection armorTrainingWithAdvandedArmorTraining, BlueprintFeature armorTraining)
 {
     foreach (var levelEntry in archetype.RemoveFeatures)
     {
         if (levelEntry.Level == 3 || levelEntry.Level == 7 || levelEntry.Level == 11 || levelEntry.Level == 15)
         {
             levelEntry.Features.Remove(armorTraining);
             levelEntry.Features.Add(armorTrainingWithAdvandedArmorTraining);
         }
     }
 }
Exemplo n.º 25
0
        public Profile getCopy(string new_name, BlueprintArchetype archetype = null)
        {
            var new_profile = new Profile(new_name, acl.CharacterClass, acl.LevelsStat, acl.Skills, archetype);

            new_profile.acl.MemorizeSpells = acl.MemorizeSpells.CloneObject <BlueprintAbility[]>();
            new_profile.acl.SelectSpells   = acl.SelectSpells.CloneObject <BlueprintAbility[]>();
            new_profile.acl.Selections     = acl.Selections.CloneObject <SelectionEntry[]>();
            new_profile.brain.Actions      = brain.Actions.CloneObject <BlueprintAiAction[]>();

            return(new_profile);
        }
Exemplo n.º 26
0
        internal static void create()
        {
            var bard_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("772c83a25e2268e448e841dcd548235f");

            createSpellbook();
            createPreciseMinstrel();
            createArrowSongStrike();
            createArcaneArchery();
            createWeaponProficiency();

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "ArrowsongMinstrelArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Arrowsong Minstrel");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Arrowsong minstrels combine the elven traditions of archery, song, and spellcasting into a seamless harmony of dazzling magical effects.");
            });
            Helpers.SetField(archetype, "m_ParentClass", bard_class);
            library.AddAsset(archetype, "");
            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, library.Get <BlueprintFeature>("fa3d3b2211a51994785d85e753f612d3")),  //bard proficiencies
                                                          Helpers.LevelEntry(2, bard_class.Progression.LevelEntries[1].Features),                     //well versed and versatile
                                                          Helpers.LevelEntry(3, bard_class.Progression.LevelEntries[2].Features),                     //inspire competence
                                                          Helpers.LevelEntry(6, library.Get <BlueprintFeature>("ddaec3a5845bc7d4191792529b687d65")),  //fascinate
                                                          Helpers.LevelEntry(7, library.Get <BlueprintFeature>("6d3fcfab6d935754c918eb0e004b5ef7")),  //inspire competence
                                                          Helpers.LevelEntry(8, library.Get <BlueprintFeature>("1d48ab2bded57a74dad8af3da07d313a")),  //dirge of doom
                                                          Helpers.LevelEntry(11, library.Get <BlueprintFeature>("6d3fcfab6d935754c918eb0e004b5ef7")), //inspire competence
                                                          Helpers.LevelEntry(12, library.Get <BlueprintFeature>("546698146e02d1e4ea00581a3ea7fe58")), //soothing performance
                                                          Helpers.LevelEntry(14, library.Get <BlueprintFeature>("cfd8940869a304f4aa9077415f93febe")), //frightening tune
                                                          Helpers.LevelEntry(15, library.Get <BlueprintFeature>("6d3fcfab6d935754c918eb0e004b5ef7")), //inspire competence
                                                          Helpers.LevelEntry(19, library.Get <BlueprintFeature>("6d3fcfab6d935754c918eb0e004b5ef7")), //inspire competence
            };
            archetype.ReplaceSpellbook = spellbook;
            archetype.AddFeatures      = new LevelEntry[] { Helpers.LevelEntry(1, weapon_proficiency),
                                                            Helpers.LevelEntry(1, arcane_achery),
                                                            Helpers.LevelEntry(2, precise_minstrel),
                                                            Helpers.LevelEntry(6, arrowsong_strike),
                                                            Helpers.LevelEntry(18, ray_spell_combat) };

            bard_class.Progression.UIDeterminatorsGroup = bard_class.Progression.UIDeterminatorsGroup.AddToArray(weapon_proficiency);
            bard_class.Progression.UIGroups             = bard_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(arcane_achery, precise_minstrel, arrowsong_strike, ray_spell_combat));
            bard_class.Archetypes = bard_class.Archetypes.AddToArray(archetype);


            archetype.ReplaceStartingEquipment = true;
            var starting_items = library.Get <BlueprintArchetype>("44388c01eb4a29d4d90a25cc0574320d").StartingItems; //from eldritch archer

            //replace scroll of snowball with cure light wounds
            archetype.StartingItems = starting_items.RemoveFromArray(library.Get <BlueprintItemEquipmentUsable>("66fc961f9c39ae94fb87a79adc87212e")).AddToArray(library.Get <BlueprintItemEquipmentUsable>("cd635d5720937b044a354dba17abad8d"));
            addToPrestigeClasses();

            var magus = library.Get <BlueprintCharacterClass>("45a4607686d96a1498891b3286121780");

            magus.AddComponent(Common.prerequisiteNoArchetype(bard_class, archetype));
            archetype.AddComponent(Helpers.Create <PrerequisiteMechanics.PrerequisiteNoClassLevelVisible>(p => p.CharacterClass = magus));
        }
Exemplo n.º 27
0
        internal static void create()
        {
            var paladin_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("bfa11238e7ae3544bbeb4d0b92e897ec");


            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "SacredServantArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Sacred Servant");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Paladins as a general rule, venerate the gods of good and purity, but some take this a step further, dedicating themselves to a specific deity and furthering the cause of the faith. These sacred servants are rewarded for their devotion with additional spells and powerful allies.");
            });
            Helpers.SetField(archetype, "m_ParentClass", paladin_class);
            library.AddAsset(archetype, "");

            createDomainSelection();
            createDivineBond();
            createCallCelestialAlly();

            var smite_evil_extra      = library.Get <BlueprintFeature>("0f5c99ffb9c084545bbbe960b825d137");
            var weapon_bond_feature   = library.Get <BlueprintFeature>("1c7cdc1605554954f838d85bbdd22d90");
            var weapon_bond_feature2  = library.Get <BlueprintFeature>("c8db0772b7059ec4eabe55b7e0e79824");
            var weapon_bond_feature3  = library.Get <BlueprintFeature>("d2f45a2034d4f7643ba1a450bc5c4c06");
            var weapon_bond_feature4  = library.Get <BlueprintFeature>("6d73f49b602e29a43a6faa2ea1e4a425");
            var weapon_bond_feature5  = library.Get <BlueprintFeature>("f17c3ba33bb44d44782cb3851d823011");
            var weapon_bond_feature6  = library.Get <BlueprintFeature>("b936ee90c070edb46bd76025dc1c5936");
            var weapon_bond_extra_use = library.Get <BlueprintFeature>("5a64de5435667da4eae2e4c95ec87917");
            var aura_of_resolve       = library.Get <BlueprintFeature>("a28693b24cc412c478b8b85877f2dad2");

            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, paladin_deity),
                                                          Helpers.LevelEntry(4, smite_evil_extra),
                                                          Helpers.LevelEntry(5, weapon_bond_feature),
                                                          Helpers.LevelEntry(8, aura_of_resolve, weapon_bond_feature2),
                                                          Helpers.LevelEntry(9, weapon_bond_extra_use),
                                                          Helpers.LevelEntry(10, smite_evil_extra),
                                                          Helpers.LevelEntry(11, weapon_bond_feature3),
                                                          Helpers.LevelEntry(13, weapon_bond_extra_use),
                                                          Helpers.LevelEntry(14, weapon_bond_feature4),
                                                          Helpers.LevelEntry(16, smite_evil_extra),
                                                          Helpers.LevelEntry(17, weapon_bond_feature5, weapon_bond_extra_use),
                                                          Helpers.LevelEntry(20, weapon_bond_feature6), };

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, paladin_deity, domain_selection),
                                                       Helpers.LevelEntry(5, divine_bond[0]),
                                                       Helpers.LevelEntry(8, divine_bond[1], call_celestial_ally),
                                                       Helpers.LevelEntry(11, divine_bond[2]),
                                                       Helpers.LevelEntry(14, divine_bond[3]),
                                                       Helpers.LevelEntry(17, divine_bond[4]),
                                                       Helpers.LevelEntry(20, divine_bond[5]), };

            paladin_class.Progression.UIDeterminatorsGroup = paladin_class.Progression.UIDeterminatorsGroup.AddToArray(domain_selection);
            paladin_class.Progression.UIGroups[0].Features.AddRange(divine_bond);
            paladin_class.Progression.UIGroups[2].Features.Add(call_celestial_ally);
            paladin_class.Archetypes = paladin_class.Archetypes.AddToArray(archetype);
        }
            static void Postfix(UnitProgressionData __instance, BlueprintArchetype archetype)
            {
                var combined_archetypes = archetype.GetComponent<CombineArchetypes>();
                if (combined_archetypes == null)
                {
                    return;
                }

                foreach (var a in combined_archetypes.archetypes)
                {
                    __instance.AddArchetype(a.GetParentClass(), a);
                }
            }
Exemplo n.º 29
0
 static void createTwinnedArchetype()
 {
     twinned_archetype = Helpers.Create <BlueprintArchetype>(a =>
     {
         a.name                 = "TwinnedEidolonArchetype";
         a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Twinned Eidolon");
         a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", eidolon_class.Description);
     });
     Helpers.SetField(twinned_archetype, "m_ParentClass", eidolon_class);
     library.AddAsset(twinned_archetype, "");
     twinned_archetype.RemoveFeatures = new LevelEntry[0];
     twinned_archetype.AddFeatures    = new LevelEntry[] { Helpers.LevelEntry(10, library.Get <BlueprintFeatureSelection>("247a4068296e8be42890143f451b4b45")) };
 }
Exemplo n.º 30
0
        static public void create()
        {
            var druid = library.Get <BlueprintCharacterClass>("610d836f3a3a9ed42a4349b62f002e96");

            archetype = Helpers.Create <BlueprintArchetype>(a =>
            {
                a.name                 = "NatureFangDruidArchetype";
                a.LocalizedName        = Helpers.CreateString($"{a.name}.Name", "Nature Fang");
                a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "A nature fang is a druid who stalks and slays those who despoil nature, kill scarce animals, or introduce diseases to unprotected habitats. She gives up a close empathic connection with the natural world to become its deadly champion and avenger.");
            });
            Helpers.SetField(archetype, "m_ParentClass", druid);
            library.AddAsset(archetype, "");
            createStudiedTarget();
            createSlayerTalents();

            var nature_sense       = library.Get <BlueprintFeature>("3a859e435fdd6d343b80d4970a7664c1");
            var resist_nature_lure = library.Get <BlueprintFeature>("ad6a5b0e1a65c3540986cf9a7b006388");
            var venom_immunity     = library.Get <BlueprintFeature>("5078622eb5cecaf4683fa16a9b948c2c");
            var woodland_stride    = library.Get <BlueprintFeature>("11f4072ea766a5840a46e6660894527d");
            var advanced_talents   = library.Get <BlueprintFeature>("a33b99f95322d6741af83e9381b2391c");
            var sneak_attack       = library.Get <BlueprintFeature>("9b9eac6709e1c084cb18c3a366e0ec87");
            var sneak_attack_give  = library.CopyAndAdd <BlueprintFeature>("9b9eac6709e1c084cb18c3a366e0ec87", "NatureFangSneakAttack", "");

            sneak_attack_give.SetDescription("At 4th level, a nature fang gains sneak attack +1d6. This functions as the rogue sneak attack ability. If the nature fang gets a sneak attack bonus from another source, the bonuses on damage stack.");
            sneak_attack_give.ComponentsArray = new BlueprintComponent[] { Helpers.Create <AddFeatureOnApply>(a => a.Feature = sneak_attack) };
            advanced_talents.SetDescription("A character can choose one of the advanced rogue or slayer talents in place of a standard talent.");


            archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, nature_sense, Wildshape.druid_wildshapes_progression),
                                                          Helpers.LevelEntry(2, woodland_stride),
                                                          Helpers.LevelEntry(4, resist_nature_lure),
                                                          Helpers.LevelEntry(9, venom_immunity), };

            archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, studied_target),
                                                       Helpers.LevelEntry(4, sneak_attack_give, slayer_talent4),
                                                       Helpers.LevelEntry(5, studied_target),
                                                       Helpers.LevelEntry(6, slayer_talent6),
                                                       Helpers.LevelEntry(8, slayer_talent6),
                                                       Helpers.LevelEntry(9, swift_study),
                                                       Helpers.LevelEntry(10, studied_target, slayer_talent10),
                                                       Helpers.LevelEntry(12, slayer_talent10, advanced_talents),
                                                       Helpers.LevelEntry(14, slayer_talent10),
                                                       Helpers.LevelEntry(15, studied_target),
                                                       Helpers.LevelEntry(16, slayer_talent10),
                                                       Helpers.LevelEntry(18, slayer_talent10),
                                                       Helpers.LevelEntry(20, studied_target, slayer_talent10) };

            druid.Progression.UIGroups = druid.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(sneak_attack_give, studied_target, swift_study, advanced_talents));
            druid.Progression.UIGroups = druid.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(slayer_talent4, slayer_talent6, slayer_talent10));
            druid.Archetypes           = druid.Archetypes.AddToArray(archetype);
        }