예제 #1
0
        static void createOverwhelmingPower()
        {
            overwhelming_power = library.CopyAndAdd <BlueprintFeature>("2496916d8465dbb4b9ddeafdf28c67d8", "OverwhelmingPowerOverwhelmingSoulFeature", "");

            overwhelming_power.SetNameDescription("Overwhelming Power",
                                                  "At 3rd level, an overwhelming soul gains a +1 bonus on attack rolls and damage rolls with her kinetic blasts. The damage bonus doesn’t apply to kinetic blade, kinetic whip, or other infusions that don’t apply the damage bonus from elemental overflow.\n"
                                                  + "This bonus increases by 1 at 6th level and every 3 levels thereafter."
                                                  );
            overwhelming_power.RemoveComponents <RecalculateOnStatChange>();
            overwhelming_power.RemoveComponents <ContextRankConfig>();
            overwhelming_power.AddComponent(Helpers.CreateContextRankConfig(ContextRankBaseValueType.ClassLevel, classes: new BlueprintCharacterClass[] { archetype.GetParentClass() },
                                                                            progression: ContextRankProgression.StartPlusDivStep, startLevel: 3, stepLevel: 3));
        }
예제 #2
0
        static void createMindOverMatter()
        {
            mind_over_matter = library.CopyAndAdd <BlueprintFeature>("2fa48527ba627254ba9bf4556330a4d4", "MindOverMatterBurnFeature", "");
            var burn_resource = Helpers.CreateAbilityResource("OverwhelmingSoulBurnResource", "", "", "", null);

            burn_resource.SetIncreasedByLevel(0, 1, new BlueprintCharacterClass[] { archetype.GetParentClass() });
            burn_resource.SetIncreasedByStat(0, StatType.Charisma);

            var burn_per_round_resource = Helpers.CreateAbilityResource("OverwhelmingSoulBurnPerRoundResource", "", "", "", null);

            burn_per_round_resource.SetFixedResource(1);

            mind_over_matter.ReplaceComponent <AddAbilityResources>(a => a.Resource = burn_resource);
            mind_over_matter.ReplaceComponent <AddKineticistPart>(a =>
            {
                a.MainStat        = StatType.Charisma;
                a.MaxBurn         = burn_resource;
                a.MaxBurnPerRound = burn_per_round_resource;
            }
                                                                  );
            mind_over_matter.RemoveComponents <AddKineticistBurnValueChangedTrigger>();
            mind_over_matter.SetNameDescription("Mind Over Matter",
                                                "An overwhelming soul uses her Charisma modifier instead of her Constitution modifier to determine her damage with wild talents, the DCs of Constitutionbased wild talents, the duration of wild talents with a Constitution-based duration, her bonus on concentration checks for wild talents, and the other Constitutionbased effects of all her wild talents.");
            mind_over_matter.AddComponents(burn_per_round_resource.CreateAddAbilityResource(),
                                           burn_resource.CreateAddAbilityResource()
                                           );
        }
예제 #3
0
        static void createRostlandBravoProficiencies()
        {
            rostland_bravo_proficiencies = library.CopyAndAdd <BlueprintFeature>("8f8c2640ffad89349883fc2e5ff2091e", //magus proficiencies
                                                                                 "RostlandBravoSwashbucklerProficiencies",
                                                                                 "12f3c40bac26460f97ec10e3e5e28035");

            rostland_bravo_proficiencies.RemoveComponents <ArcaneArmorProficiency>();
            rostland_bravo_proficiencies.AddComponent(Common.createAddWeaponProficiencies(WeaponCategory.DuelingSword));
            rostland_bravo_proficiencies.SetName("Rostland Bravo Proficiencies");
            rostland_bravo_proficiencies.SetDescription("The Rostland bravo is not proficient with bucklers.");
        }
예제 #4
0
        static void createDeceptiveKi()
        {
            deceptive_ki = library.CopyAndAdd <BlueprintFeature>("e9590244effb4be4f830b1e3fffced13", "DeceptiveKiFeature", "");
            deceptive_ki.RemoveComponents <AddFacts>();

            var resource = deceptive_ki.GetComponent <AddAbilityResources>().Resource;

            var ki_feint = library.CopyAndAdd(NewFeats.improved_feint_ability, "KiFeintAbility", "");

            ki_feint.SetNameDescriptionIcon("Ki Feint",
                                            "A sage counselor can spend 1 ki point while performing a flurry of blows to feint an opponent as a swift action, but he can’t spend 1 ki point to make an additional attack when making a flurry of blows.",
                                            LoadIcons.Image2Sprite.Create(@"FeatIcons/FeintingFlurry.png"));
            ki_feint.ActionType = CommandType.Swift;
            ki_feint.AddComponent(resource.CreateResourceLogic());



            var deceptive_ki_buff = Helpers.CreateBuff("DeceptiveKiBuff",
                                                       "Deceptive Ki",
                                                       "At 3rd level, the sage counselor can spend 1 point from his ki pool as a swift action to give himself a +4 insight bonus on his next Bluff check.",
                                                       "",
                                                       Helpers.GetIcon("b3da3fbee6a751d4197e446c7e852bcb"), //true seeing
                                                       null,
                                                       Helpers.CreateAddStatBonus(StatType.CheckBluff, 4, ModifierDescriptor.Insight)
                                                       );

            deceptive_ki_buff.AddComponents(Helpers.Create <AddInitiatorSkillRollTrigger>(a => { a.Skill = StatType.CheckBluff; a.Action = Helpers.CreateActionList(Common.createContextActionRemoveBuff(deceptive_ki_buff)); }),
                                            Helpers.Create <AddInitiatorPartySkillRollTrigger>(a => { a.Skill = StatType.CheckBluff; a.Action = Helpers.CreateActionList(Common.createContextActionRemoveBuff(deceptive_ki_buff)); })
                                            );

            var ability = Helpers.CreateAbility("DeceptiveKiAbility",
                                                deceptive_ki_buff.Name,
                                                deceptive_ki_buff.Description,
                                                "",
                                                deceptive_ki_buff.Icon,
                                                AbilityType.Supernatural,
                                                CommandType.Swift,
                                                AbilityRange.Personal,
                                                "",
                                                "",
                                                Helpers.CreateRunActions(Common.createContextActionApplyBuff(deceptive_ki_buff, Helpers.CreateContextDuration(), is_permanent: true, dispellable: false)),
                                                resource.CreateResourceLogic()
                                                );

            ability.setMiscAbilityParametersSelfOnly();

            deceptive_ki.AddComponents(Helpers.CreateAddFacts(ki_feint, ability));
            deceptive_ki.SetNameDescription("Deceptive Ki",
                                            "A sage counselor can spend 1 ki point while performing a flurry of blows to feint an opponent as a swift action, but he can’t spend 1 ki point to make an additional attack when making a flurry of blows.\n"
                                            + "In addition, the sage counselor can spend 1 point from his ki pool as a swift action to give himself a +4 insight bonus on his next Bluff check. The sage counselor does not gain the ability to spend ki to increase his speed by 20 feet for 1 round."
                                            );
        }
        private static void ReplaceEvangelistSpells()
        {
            var cleric = library.Get <BlueprintCharacterClass>("67819271767a9dd4fbfd4ae700befea0");
            BlueprintFeature spontaneous_casting = library.Get <BlueprintFeature>("48811518d8204f43b991e4dd967a87b8"); //evangelist spontaneous casting feature

            spontaneous_casting.RemoveComponents <SpontaneousSpellConversion>();                                       //clear all the spontaneous spell conversions that are there

            BlueprintAbility[] spells = new BlueprintAbility[]
            {
                CallOfTheWild.NewSpells.command,
                CallOfTheWild.NewSpells.hypnotic_pattern,
                library.Get <BlueprintAbility>("faabd2cc67efa4646ac58c7bb3e40fcc"), //prayer
                NewSpells.suggestion,
                CallOfTheWild.NewSpells.command_greater,
                library.Get <BlueprintAbility>("d316d3d94d20c674db2c24d7de96f6a7"), //serenity
                NewSpells.suggestion_mass,
                library.Get <BlueprintAbility>("cbf3bafa8375340498b86a3313a11e2f"), //euphoric tranquility
                library.Get <BlueprintAbility>("3c17035ec4717674cae2e841a190e757")  //dominate monster
            };

            var description = "An evangelist does not gain the ability to spontaneously cast cure or inflict spells by sacrificing prepared spells. However, an evangelist can spontaneously cast the following splls, by sacrificing a prepared spell of the noted level: ";

            for (int i = 0; i < spells.Length; i++)
            {
                description += spells[i].Name + $" ({i + 1}{Common.getNumExtension(i + 1)})" + ((i + 1) == spells.Length ? "." : ", ");
            }

            var spells_array = Common.createSpelllistsForSpontaneousConversion(spells);

            spontaneous_casting.SetDescription(description);

            for (int i = 0; i < spells_array.Length; i++)
            {
                spontaneous_casting.AddComponent(Common.createSpontaneousSpellConversion(cleric, spells_array[i].ToArray()));
            }
        }
예제 #6
0
        static void fixFlyingCreatures()
        {
            airborne.AddComponent(Common.createAddConditionImmunity(Kingmaker.UnitLogic.UnitCondition.DifficultTerrain));
            airborne.AddComponent(Common.createBuffDescriptorImmunity(Kingmaker.Blueprints.Classes.Spells.SpellDescriptor.Ground));
            airborne.AddComponent(Common.createSpellImmunityToSpellDescriptor(Kingmaker.Blueprints.Classes.Spells.SpellDescriptor.Ground));
            airborne.AddComponent(Helpers.Create <AddFlying>());
            airborne.AddComponent(Helpers.Create <ManeuverImmunity>(m => m.Type = CombatManeuver.Trip));
            airborne.RemoveComponents <DamageBonusConditional>();
            airborne.RemoveComponents <AttackBonusConditional>();


            BlueprintUnitFact[] facts = new BlueprintUnitFact[] {
                library.Get <BlueprintBuff>("3689b69a30d6d7c48b90e28228fb7b7c"),                                                  //transmuter air elemental 1
                library.Get <BlueprintBuff>("2b2060036a20108448299f3ee2b14015"),                                                  //transmuter air elemental 2
                library.Get <BlueprintBuff>("2641f73f8d7864f4bba0bd6134018094"),                                                  //polymorph air elemental greater
                library.Get <BlueprintBuff>("933c5cd1113d2ef4a84f55660a744008"),                                                  //polymorph air elemental
                library.Get <BlueprintBuff>("70828d40058f2d3428bb767eb6e3e561"),                                                  //air elemental body 1
                library.Get <BlueprintBuff>("3af4d4bc55fa0ae4e851708d7395f1dd"),                                                  //air elemental body 2
                library.Get <BlueprintBuff>("db00581a03e6947419648dfba6aa03b2"),                                                  //air elemental body 3
                library.Get <BlueprintBuff>("ba06b8cff52da9e4d8432144ed6a6d19"),                                                  //air elemental body 4
                library.Get <BlueprintBuff>("dc1ef6f6d52b9fd49bc0696ab1a4f18b"),                                                  //air wildshape 1
                library.Get <BlueprintBuff>("65fdf187fea97c94b9cf4ff6746901a6"),                                                  //air wildshape 2
                library.Get <BlueprintBuff>("814bc75e74f969641bf110addf076ff9"),                                                  //air wildshape 3
                library.Get <BlueprintBuff>("eb52d24d6f60fc742b32fe943b919180"),                                                  //air wildshape 4
                library.Get <BlueprintBuff>("1a482859d9513e4418f57abcd396d315"),                                                  //wyvern

                library.Get <BlueprintBuff>("268fafac0a5b78c42a58bd9c1ae78bcf"),                                                  //black dragon I
                library.Get <BlueprintBuff>("b117bc8b41735924dba3fb23318f39ff"),                                                  //blue dragon I
                library.Get <BlueprintBuff>("17d330af03f5b3042a4417ab1d45e484"),                                                  //brass dragon I
                library.Get <BlueprintBuff>("1032d4ffb1c56444ca5bfce2c778614d"),                                                  //bronze dragon I
                library.Get <BlueprintBuff>("a4cc7169fb7e64a4a8f53bdc774341b1"),                                                  //copper dragon I
                library.Get <BlueprintBuff>("89669cfba3d9c15448c23b79dd604c41"),                                                  //gold dragon I
                library.Get <BlueprintBuff>("02611a12f38bed340920d1d427865917"),                                                  //green dragon buff I
                library.Get <BlueprintBuff>("294cbb3e1d547f341a5d7ec8500ffa44"),                                                  //red dragon I
                library.Get <BlueprintBuff>("feb2ab7613e563e45bcf9f7ffe4e05c6"),                                                  //silver dragon I
                library.Get <BlueprintBuff>("a6acd3ad1e9fa6c45998d43fd5dcd86d"),                                                  //white dragon buff I

                library.Get <BlueprintBuff>("9eb5ba8c396d2c74c8bfabd3f5e91050"),                                                  //black dragon II
                library.Get <BlueprintBuff>("cf8b4e861226e0545a6805036ab2a21b"),                                                  //blue dragon II
                library.Get <BlueprintBuff>("f7fdc15aa0219104a8b38c9891cac17b"),                                                  //brass dragon II
                library.Get <BlueprintBuff>("53e408cab2331bd48a3db846e531dfe8"),                                                  //bronze dragon II
                library.Get <BlueprintBuff>("799c8b6ae43c7d741ac7887c984f2aa2"),                                                  //copper dragon II
                library.Get <BlueprintBuff>("4300f60c00ecabc439deab11ce6d738a"),                                                  //gold dragon II
                library.Get <BlueprintBuff>("070543328d3e9af49bb514641c56911d"),                                                  //green dragon buff II
                library.Get <BlueprintBuff>("40a96969339f3c241b4d989910f255e1"),                                                  //red dragon II
                library.Get <BlueprintBuff>("16857109dafc2b94eafd1e888552ef76"),                                                  //silver dragon II
                library.Get <BlueprintBuff>("2652c61dff50a24479520c84005ede8b"),                                                  //white dragon buff II

                library.Get <BlueprintBuff>("c231e0cf7c203644d81e665d6115ae69"),                                                  //black dragon III
                library.Get <BlueprintBuff>("a4993affb4c4ad6429eca6daeb7b86a8"),                                                  //blue dragon III
                library.Get <BlueprintBuff>("8acd6ac6f89c73b4180191eb63768009"),                                                  //brass dragon III
                library.Get <BlueprintBuff>("1d3d388fd7b740842bde43dfb0aa56bb"),                                                  //bronze dragon III
                library.Get <BlueprintBuff>("c0e8f767f87ac354495865ce3dc3ee46"),                                                  //copper dragon III
                library.Get <BlueprintBuff>("ec6ad3612c4f0e340b54a11a0e78793d"),                                                  //gold dragon III
                library.Get <BlueprintBuff>("2d294863adf81f944a7558f7ae248448"),                                                  //green dragon buff III
                library.Get <BlueprintBuff>("782d09044e895fa44b9b6d9cca3a52b5"),                                                  //red dragon III
                library.Get <BlueprintBuff>("80babfb32011f384ea865d768857da79"),                                                  //silver dragon III
                library.Get <BlueprintBuff>("8dae421e48035a044a4b1a7b9208c5db"),                                                  //white dragon buff III
            };
            for (int i = 0; i < facts.Length; i++)
            {
                facts[i].AddComponents(airborne.ComponentsArray);
                if (i < 12)
                {
                    facts[i].AddComponent(Helpers.CreateAddFact(air_mastery));
                }
            }

            var airborne_types = new BlueprintUnitType[] { library.Get <BlueprintUnitType>("b012216cc6867354fb088d0c36968ea3"), //black dragon
                                                           library.Get <BlueprintUnitType>("f52b75839bb928242b6108df9d7f35a2"), //wyvern
                                                           library.Get <BlueprintUnitType>("284b6fd0b67688a4bb3ec28b15152d69"), //ankou
                                                           library.Get <BlueprintUnitType>("a574fa56e67623d41b538bdeae291fd5"), //gargoyle
                                                           library.Get <BlueprintUnitType>("535823c600a2c8f4a906063b7b949eb5"), //jabberwok
                                                           library.Get <BlueprintUnitType>("248c45d90c2f6e7429358fbe503e9c08")  //manticore
            };

            var units = library.GetAllBlueprints().OfType <BlueprintUnit>();

            foreach (var unit in units)
            {
                if (airborne_types.Contains(unit.Type))
                {
                    unit.AddFacts = unit.AddFacts.AddToArray(airborne);
                }
            }
        }