コード例 #1
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()
                                           );
        }
コード例 #2
0
 static void createBloodlineFamiliar()
 {
     bloodline_familiar = library.CopyAndAdd <BlueprintFeatureSelection>("363cab72f77c47745bf3a8807074d183", "BloodlineFamiliarFeatureSelection", "");
     bloodline_familiar.SetNameDescription("Bloodline Familiar", "Those with an inherent connection to magic often attract creatures who feel a similar instinctive pull toward magical forces. At 1st level, a sorcerer, bloodrager or any other class with bloodline powers can choose to gain a bloodline familiar instead of 1st-level bloodline power.");
     bloodline_familiar.Groups          = new FeatureGroup[0];
     bloodline_familiar.ComponentsArray = new BlueprintComponent[0];
 }
コード例 #3
0
        internal static void RemoveSlumberNerf()
        {
            BlueprintAbility slumber_hex = library.Get <BlueprintAbility>("31f0fa4235ad435e95ebc89d8549c2ce");

            slumber_hex.RemoveComponents <AbilityTargetCasterHDDifference>();
            slumber_hex.SetNameDescription(slumber_hex.GetName(),
                                           "Effect: A witch can cause a creature within 30 feet to fall into a deep, magical sleep, as per the spell sleep. The creature receives a Will save to negate the effect. If the save fails, the creature falls asleep for a number of rounds equal to the witch’s level.\n"
                                           + "The creature will not wake due to noise or light, but others can rouse it with a standard action. This hex ends immediately if the creature takes damage. Whether or not the save is successful, a creature cannot be the target of this hex again for 1 day.");
            BlueprintAbility shaman_slumber_hex = library.Get <BlueprintAbility>("c04cde18e91e4f84898de92a372bc1e0");

            shaman_slumber_hex.RemoveComponents <AbilityTargetCasterHDDifference>();
            shaman_slumber_hex.SetNameDescription(shaman_slumber_hex.GetName(),
                                                  "Effect: A witch can cause a creature within 30 feet to fall into a deep, magical sleep, as per the spell sleep. The creature receives a Will save to negate the effect. If the save fails, the creature falls asleep for a number of rounds equal to the witch’s level.\n"
                                                  + "The creature will not wake due to noise or light, but others can rouse it with a standard action. This hex ends immediately if the creature takes damage. Whether or not the save is successful, a creature cannot be the target of this hex again for 1 day.");

            //hexstrike 82cad6f016c04bf49fa851f5e9e10953

            BlueprintAbility hexstrike_slumber = library.Get <BlueprintAbility>("82cad6f016c04bf49fa851f5e9e10953");

            hexstrike_slumber.SetNameDescription(hexstrike_slumber.GetName(),
                                                 "Effect: A witch can cause a creature within 30 feet to fall into a deep, magical sleep, as per the spell sleep. The creature receives a Will save to negate the effect. If the save fails, the creature falls asleep for a number of rounds equal to the witch’s level.\n"
                                                 + "The creature will not wake due to noise or light, but others can rouse it with a standard action. This hex ends immediately if the creature takes damage. Whether or not the save is successful, a creature cannot be the target of this hex again for 1 day.");

            BlueprintFeature slumber_hex_feature = library.Get <BlueprintFeature>("c086eeb69a4442df9c4bb8469a2c362d");

            slumber_hex_feature.SetNameDescription(slumber_hex.GetName(),
                                                   "Effect: A witch can cause a creature within 30 feet to fall into a deep, magical sleep, as per the spell sleep. The creature receives a Will save to negate the effect. If the save fails, the creature falls asleep for a number of rounds equal to the witch’s level.\n"
                                                   + "The creature will not wake due to noise or light, but others can rouse it with a standard action. This hex ends immediately if the creature takes damage. Whether or not the save is successful, a creature cannot be the target of this hex again for 1 day.");
            BlueprintFeature shaman_slumber_hex_feature = library.Get <BlueprintFeature>("ee7a8e5dc78a4d6c9e44d88affe47088");

            shaman_slumber_hex_feature.SetNameDescription(shaman_slumber_hex.GetName(),
                                                          "Effect: A witch can cause a creature within 30 feet to fall into a deep, magical sleep, as per the spell sleep. The creature receives a Will save to negate the effect. If the save fails, the creature falls asleep for a number of rounds equal to the witch’s level.\n"
                                                          + "The creature will not wake due to noise or light, but others can rouse it with a standard action. This hex ends immediately if the creature takes damage. Whether or not the save is successful, a creature cannot be the target of this hex again for 1 day.");
        }
コード例 #4
0
        static internal void create()
        {
            lamashtu = library.CopyAndAdd <BlueprintFeature>("04bc2b62273ab744092d992ed72bff41", "LamashtuFeature", "");//rovagug

            lamashtu.SetNameDescriptionIcon("Lamashtu",
                                            "Lamashtu (pronounced lah-MAHSH-too) is the mother and patroness of many misshapen and malformed creatures that crawl, slither, or flap on, above, or below the surface of Golarion. Her unholy symbol is a three-eyed jackal head, which may be represented in many ways, and her sacred animal is the jackal.\n"
                                            + "Domains: Chaos, Evil, Madness, Strength, Trickery.\nFavored Weapon: Kukri.",
                                            LoadIcons.Image2Sprite.Create(@"FeatIcons/Lamashtu.png"));
            kukri_proficiency = library.CopyAndAdd <BlueprintFeature>("70ab8880eaf6c0640887ae586556a652", "KukriProficiency", "");
            kukri_proficiency.SetNameDescription("Weapon Proficiency (Kukri)",
                                                 "You become proficient with kukris and can use them as a weapon.");
            kukri_proficiency.ReplaceComponent <AddProficiencies>(a => a.WeaponProficiencies = new Kingmaker.Enums.WeaponCategory[] { Kingmaker.Enums.WeaponCategory.Kukri });

            lamashtu.ReplaceComponent <AddFeatureOnClassLevel>(a => a.Feature     = kukri_proficiency);
            lamashtu.ReplaceComponent <AddStartingEquipment>(a => a.CategoryItems = new Kingmaker.Enums.WeaponCategory[] { Kingmaker.Enums.WeaponCategory.Kukri });
            lamashtu.ReplaceComponent <AddFacts>(a => a.Facts = new Kingmaker.Blueprints.Facts.BlueprintUnitFact[]
            {
                library.Get <BlueprintFeature>("8c7d778bc39fec642befc1435b00f613"), //chaos
                library.Get <BlueprintFeature>("351235ac5fc2b7e47801f63d117b656c"), //evil
                library.Get <BlueprintFeature>("c346bcc77a6613040b3aa915b1ceddec"), //madness
                library.Get <BlueprintFeature>("eaa368e08628a8641b16cd41cbd2cb33"), //trickery
                library.Get <BlueprintFeature>("58d2867520de17247ac6988a31f9e397"), //strength
                library.Get <BlueprintFeature>("dab5255d809f77c4395afc2b713e9cd6"), //channel negative
            });
            //lamashtu.AddComponent(Helpers.Create<RaceMechanics.PrerequisiteRace>(p => p.race = library.Get<BlueprintRace>("9d168ca7100e9314385ce66852385451")));

            var deities = library.Get <BlueprintFeatureSelection>("59e7a76987fe3b547b9cce045f4db3e4");

            deities.AllFeatures = deities.AllFeatures.AddToArray(lamashtu);
        }
コード例 #5
0
 static void createTinkering()
 {
     tinkering = library.CopyAndAdd <BlueprintFeature>("dbb6b3bffe6db3547b31c3711653838e", "SeekerSorcererTinkeringFeature", "");
     tinkering.SetNameDescription("Tinkering",
                                  "Seekers often look to ancient devices, old tomes, and strange magical items in order to learn more about their sorcerous bloodlines. As a result of this curiosity and thanks to an innate knack at deciphering the strange and weird, a seeker gains Disable Device as a class skill. In addition, at 1st level, a seeker adds half his oracle or sorcerer level on Perception checks made to locate traps and on all Disable Device skill checks (minimum +1). A seeker can use Disable Device to disarm magical traps. If the seeker also possesses levels in rogue or another class that provides the trapfinding ability, those levels stack with his sorcerer levels for determining his overall bonus on these skill checks."
                                  );
     tinkering.ReplaceComponent <ContextRankConfig>(c => Helpers.SetField(c, "m_Class", new BlueprintCharacterClass[] { archetype.GetParentClass() }));
     tinkering.AddComponent(Helpers.Create <AddClassSkill>(a => a.Skill = StatType.SkillThievery));
 }
コード例 #6
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."
                                            );
        }
コード例 #7
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));
        }
コード例 #8
0
        static void createMartialTraining()
        {
            var combat_trick        = library.Get <BlueprintFeatureSelection>("c5158a6622d0b694a99efb1d0025d2c1");
            var martial_proficiency = library.Get <BlueprintFeature>("203992ef5b35c864390b4e4a1e200629");

            martial_training = library.CopyAndAdd <BlueprintFeature>("203992ef5b35c864390b4e4a1e200629", "SwashbucklerRogueMartialTraining", "");
            martial_training.SetNameDescription("Martial Training",
                                                "At 1st level, the swashbuckler receives proficiency with all martial weapons. In addition, she may take the combat trick rogue talent up to two times.");
            martial_training.ComponentsArray = new BlueprintComponent[] { Helpers.CreateAddFact(martial_proficiency) };
            swashbucler_combat_trick         = library.CopyAndAdd <BlueprintFeatureSelection>("c5158a6622d0b694a99efb1d0025d2c1", "SwashbucklerRogueCombatTrickFeatureSelection", "");
            swashbucler_combat_trick.ReplaceComponent <PrerequisiteNoFeature>(p => p.Feature = swashbucler_combat_trick);
            swashbucler_combat_trick.AddComponents(Helpers.PrerequisiteFeature(martial_training));
            swashbucler_combat_trick.AddComponents(Helpers.PrerequisiteFeature(combat_trick));
            RogueTalents.addToTalentSelection(swashbucler_combat_trick, false, false);
        }
コード例 #9
0
        static void createConfidentDefense()
        {
            var monk = library.Get <BlueprintCharacterClass>("e8f21e5b58e0569468e420ebea456124");
            var paladin_proficiencies   = library.Get <BlueprintFeature>("b10ff88c03308b649b50c31611c2fefb");
            var simple_proficiency      = library.Get <BlueprintFeature>("e70ecf1ed95ca2f40b754f1adb22bbdd");
            var martial_proficiency     = library.Get <BlueprintFeature>("203992ef5b35c864390b4e4a1e200629");
            var light_armor_proficiency = library.Get <BlueprintFeature>("6d3728d4e9c9898458fe5e9532951132");

            confident_defense = library.CopyAndAdd(paladin_proficiencies, "IroranPaladinConfidentDefenseFeature", "");
            confident_defense.ReplaceComponent <AddFacts>(a => a.Facts = new BlueprintUnitFact[] { light_armor_proficiency, martial_proficiency, simple_proficiency });


            var scaled_fist_ac = library.Get <BlueprintFeature>("3929bfd1beeeed243970c9fc0cf333f8");

            scaled_fist_ac.SetDescription("");
            scaled_fist_ac.Ranks++;
            foreach (var c in scaled_fist_ac.GetComponents <ContextRankConfig>().ToArray())
            {
                if (c.IsBasedOnClassLevel)
                {
                    //fix it to not to work with normal monk levels
                    var new_c = Helpers.CreateContextRankConfig(ContextRankBaseValueType.SummClassLevelWithArchetype,
                                                                classes: new BlueprintCharacterClass[] { monk },
                                                                type: c.Type,
                                                                archetype: library.Get <BlueprintArchetype>("5868fc82eb11a4244926363983897279"),
                                                                progression: ContextRankProgression.DivStep,
                                                                stepLevel: 4);
                    scaled_fist_ac.ReplaceComponent(c, new_c);
                }
                if (c.IsBasedOnCustomProperty) //for balance fixes (class level limiter on charisma)
                {
                    var property = Helpers.GetField <BlueprintUnitProperty>(c, "m_CustomProperty");
                    var cfg      = property.GetComponent <NewMechanics.ContextValueWithLimitProperty>().max_value;
                    ClassToProgression.addClassToContextRankConfig(archetype.GetParentClass(), new BlueprintArchetype[] { archetype }, cfg, "IroranPaladin", monk);
                }
            }

            confident_defense.AddComponents(Helpers.Create <MonkNoArmorAndMonkWeaponFeatureUnlock>(c => c.NewFact = scaled_fist_ac));
            confident_defense.AddComponents(Helpers.Create <WeaponTrainingMechanics.AddFeatureOnArmor>(a =>
            {
                a.feature         = scaled_fist_ac;
                a.required_armor  = new ArmorProficiencyGroup[] { ArmorProficiencyGroup.Light, ArmorProficiencyGroup.None };
                a.forbidden_armor = new ArmorProficiencyGroup[] { ArmorProficiencyGroup.Buckler, ArmorProficiencyGroup.LightShield, ArmorProficiencyGroup.HeavyShield, ArmorProficiencyGroup.TowerShield };
            }));
            confident_defense.SetNameDescription("Confident Defense",
                                                 $"At 1st level, when wearing light or no armor and not using a shield, an Iroran paladin adds 1 point of his Charisma bonus (if any){(Main.settings.balance_fixes_monk_ac ? " per class level" : "")} as a dodge bonus to his Armor Class. If he is caught flat-footed or otherwise denied his Dexterity bonus, he also loses this bonus. This ability replaces his proficiency with medium armor, heavy armor, and shields.");
        }
コード例 #10
0
 static void createNinjaProficiencies()
 {
     ninja_proficiencies = library.CopyAndAdd <BlueprintFeature>("33e2a7e4ad9daa54eaf808e1483bb43c", "NinjaProficiencies", "");
     ninja_proficiencies.ReplaceComponent <AddProficiencies>(a => a.WeaponProficiencies = new WeaponCategory[]
     {
         WeaponCategory.Kama,
         WeaponCategory.Nunchaku,
         WeaponCategory.Sai,
         WeaponCategory.Shortbow,
         WeaponCategory.Shortsword,
         WeaponCategory.Shuriken,
         WeaponCategory.Scimitar
     });
     ninja_proficiencies.AddComponent(Helpers.CreateAddFact(library.Get <BlueprintFeature>("9c37279588fd9e34e9c4cb234857492c")));//duelling sword proficiency
     ninja_proficiencies.SetNameDescription("Ninja Proficiencies",
                                            "Ninja are proficient with all simple weapons, plus the kama, dueling sword, nunchaku, sai, shortbow, short sword, shuriken, and scimitar. Ninjas are proficient with light armor but not with shields.");
 }
コード例 #11
0
        static void createBlessedHunterFeats()
        {
            blessed_hunter = Helpers.CreateFeature("BlessedHunterBloodHunterFeat",
                                                   "Blessed Hunter",
                                                   "While in his favored terrain, blood hunter gains +1 bonus on damage rolls and saving throws.",
                                                   "",
                                                   null,
                                                   FeatureGroup.None,
                                                   Helpers.Create <FavoredEnemyMechanics.BlessedHunterTerrain>(b => b.Settings = hunting_ground.GetComponent <FavoredTerrain>().Settings)
                                                   );


            blessed_hunter_stride = library.CopyAndAdd <BlueprintFeature>("11f4072ea766a5840a46e6660894527d", "BlessedHunterStrideFeature", "");
            blessed_hunter_stride.SetNameDescription("Blessed Hunter's Stride",
                                                     "Blood hunter's speed increases by 10 feet while he is in his favored terrain, and he ignores difficult terrain effects.");
            blessed_hunter_stride.AddComponent(Helpers.CreateAddStatBonus(StatType.Speed, 10, ModifierDescriptor.UntypedStackable));
            var animal_focus_engine = new AnimalFocusEngine();

            animal_focus_engine.initialize(new BlueprintCharacterClass[] { archetype.GetParentClass() }, archetype, 0, "BloodHunter");

            var animal_focus = animal_focus_engine.createAnimalFocus("At 13th level, while in his favored terrain, blood hunter gains the benefits of the hunter’s animal focus class feature, with an effective hunter level equal to his blood hunter level. If blood hunter formed a bond with animal companion, he can also apply animal focus to it.");

            animal_focus.HideInCharacterSheetAndLevelUp = true;

            var apply_focus_ability = animal_focus_engine.createApplyAnimalFocusAbility(animal_focus.name, "Apply Animal Focus (Permanent)", "This abilitiy applies selected animal foci.", animal_focus.Icon);

            animal_focus.AddComponent(Helpers.CreateAddFact(apply_focus_ability));


            blessed_hunters_focus = Helpers.CreateFeature("BlessedHunterFocusBloodHunterFeature",
                                                          "Blessed Hunter's Focus",
                                                          "At 13th level, while in his favored terrain, blood hunter gains the benefits of the hunter’s animal focus class feature, with an effective hunter level equal to his blood hunter level. The chosen aspect remains active until changed. If blood hunter formed a bond with animal companion, he can also apply animal focus to it. The blood hunter can apply extra animal focus if his animal companion is dead.",
                                                          "",
                                                          animal_focus.Icon,
                                                          FeatureGroup.None,
                                                          Helpers.CreateAddFact(animal_focus),
                                                          Common.createAddFeatToAnimalCompanion(animal_focus)
                                                          );

            var ranger_ac_selection = library.Get <BlueprintFeatureSelection>("ee63330662126374e8785cc901941ac7");
            var planar_focus        = animal_focus_engine.createPlanarFocus("Blood Hunter", ranger_ac_selection);

            planar_focus.AddComponents(Common.createPrerequisiteArchetypeLevel(archetype.GetParentClass(), archetype, 13));
        }
コード例 #12
0
        private static BlueprintFeature AddSpiderCompanion()
        {
            PortraitData portraitData = new PortraitData("AdvancedMartialArtsSpider");

            BlueprintPortrait portrait = Helpers.Create <BlueprintPortrait>();

            portrait.Data = portraitData;
            Main.library.AddAsset(portrait, Helpers.getGuid("GiantSpiderPortrait"));

            BlueprintUnitFact reducedReachFact = Main.library.Get <BlueprintUnitFact>("c33f2d68d93ceee488aa4004347dffca");
            BlueprintFeature  weaponFinesse    = Main.library.Get <BlueprintFeature>("90e54424d682d104ab36436bd527af09");

            BlueprintFeature animalCompanionUpgradeCentipede = Main.library.Get <BlueprintFeature>("c938099ca0438b242b3edecfa9083e9f");
            BlueprintUnit    animalCompanionUnitCentipede    = Main.library.Get <BlueprintUnit>("f9df16ffd0c8cec4d99a0ae6f025a3f8");

            BlueprintUnit giantSpider = Main.library.CopyAndAdd <BlueprintUnit>("c4b33e5fd3d3a6f46b2aade647b0bf25", "GiantSpiderCompanion", Helpers.getGuid("GiantSpiderCompanion"));

            BlueprintItemWeapon Bite1d6         = Main.library.Get <BlueprintItemWeapon>("a000716f88c969c499a535dadcf09286");
            BlueprintItemWeapon EmptyHandWeapon = Main.library.Get <BlueprintItemWeapon>("20375b5a0c9243d45966bd72c690ab74");

            giantSpider.Brain           = animalCompanionUnitCentipede.Brain;
            giantSpider.ComponentsArray = animalCompanionUnitCentipede.ComponentsArray;
            giantSpider.Body            = animalCompanionUnitCentipede.Body;
            giantSpider.AddFacts        = giantSpider.AddFacts.AddToArray(weaponFinesse);
            giantSpider.Faction         = Main.library.Get <BlueprintFaction>("d8de50cc80eb4dc409a983991e0b77ad"); // Neutral faction

            Helpers.SetField(giantSpider, "m_Portrait", portrait);

            BlueprintUnitAsksList giantSpiderBarks = Main.library.CopyAndAdd <BlueprintUnitAsksList>("7d340f75a57c47d45b0e79200a6b5eac", "SpiderAnimalCompanionBarks", Helpers.getGuid("SpiderAnimalCompanionBarks"));
            UnitAsksComponent     component        = giantSpiderBarks.GetComponent <UnitAsksComponent>();

            foreach (var componentAnimationBark in component.AnimationBarks)
            {
                if (componentAnimationBark.AnimationEvent == MappedAnimationEventType.AlertSound1 || componentAnimationBark.AnimationEvent == MappedAnimationEventType.AlertSound2)
                {
                    componentAnimationBark.Cooldown = 10f;
                    componentAnimationBark.DelayMin = 5f;
                }
            }

            ChangeUnitSize unitSize = Helpers.Create <ChangeUnitSize>(x => x.SizeDelta = 1);

            FieldInfo typeField = unitSize.GetType().GetField("m_Type", BindingFlags.NonPublic | BindingFlags.Instance);
            object    delta     = unitSize.GetType().GetNestedType("ChangeType", BindingFlags.NonPublic).GetField("Delta").GetValue(unitSize);

            typeField.SetValue(unitSize, delta);

            AddMechanicsFeature addMechanicsFeature = Helpers.Create <AddMechanicsFeature>();

            Traverse traverse = Traverse.Create(addMechanicsFeature);

            traverse.Field("m_Feature").SetValue(AddMechanicsFeature.MechanicsFeatureType.IterativeNaturalAttacks);


            typeField.SetValue(unitSize, delta);

            BlueprintFeature animalCompanionFeatureSpider = Main.library.CopyAndAdd <BlueprintFeature>("f9ef7717531f5914a9b6ecacfad63f46", "AnimalCompanionFeatureGiantSpider", Helpers.getGuid("AnimalCompanionFeatureGiantSpider"));

            animalCompanionFeatureSpider.SetNameDescription("Animal Companion — Giant Spider", "Size Medium\nSpeed 30 ft.\nAC +1 natural armor\nAttack bite (1d6 plus poison)\nAbility Scores Str 11, Dex 17, Con 12, Int 1, Wis 10, Cha 2\nSpecial Attacks poison (frequency 1 round (4); effect 1d2 Str damage; cure 1 save; Con-based DC)\nCMD +8 vs. trip.\nAt 7th level size becomes Large, Str +2, Dex +8, Con +4, +2 natural armor.");

            AddPet addPetFact = animalCompanionFeatureSpider.ComponentsArray.OfType <AddPet>().First();

            animalCompanionFeatureSpider.RemoveComponent(addPetFact);
            addPetFact = UnityEngine.Object.Instantiate(addPetFact);
            animalCompanionFeatureSpider.AddComponent(addPetFact);

            addPetFact.Pet            = giantSpider;
            addPetFact.UpgradeFeature = Helpers.CreateFeature(
                "AnimalCompanionUpgradeGiantSpider",
                "",
                "",
                Helpers.getGuid("AnimalCompanionUpgradeGiantSpider"),
                animalCompanionUpgradeCentipede.Icon,
                FeatureGroup.None,
                unitSize,
                Helpers.Create <AddStatBonus>(x =>
            {
                x.Stat       = StatType.AC;
                x.Value      = 2;
                x.Descriptor = ModifierDescriptor.NaturalArmor;
            }),
                Helpers.Create <AddStatBonus>(x =>
            {
                x.Stat  = StatType.Strength;
                x.Value = 2;
            }),
                Helpers.Create <AddStatBonus>(x =>
            {
                x.Stat  = StatType.Dexterity;
                x.Value = 8;
            }),
                Helpers.Create <AddStatBonus>(x =>
            {
                x.Stat  = StatType.Constitution;
                x.Value = 4;
            }),
                addMechanicsFeature,
                Helpers.CreateAddFacts(reducedReachFact)
                );
            addPetFact.UpgradeLevel = 7;
            return(animalCompanionFeatureSpider);
        }
コード例 #13
0
        static void createPhantomProgression()
        {
            outsider.HideInCharacterSheetAndLevelUp = true;
            outsider.HideInUI = true;
            //devotion
            //evasion
            //natural armorc
            //str/dex increase
            //improved evasion

            devotion = library.CopyAndAdd <BlueprintFeature>("226f939b7dfd47b4697ec52f79799012", "PhantomDevotionFeature", "");
            devotion.SetDescription("The phantom gains a +4 morale bonus on Will saves against enchantment spells and effects.");

            endure_torment = Helpers.CreateFeature("EndureTormentPhantomFeature",
                                                   "Endure Torment",
                                                   "At 5th level, a scourge’s phantom gains a +4 bonus on saving throws against death effects and effects that could cause it to become staggered or stunned.",
                                                   "",
                                                   null,
                                                   FeatureGroup.None,
                                                   Common.createSavingThrowBonusAgainstDescriptor(4, ModifierDescriptor.UntypedStackable, SpellDescriptor.Stun | SpellDescriptor.Staggered | SpellDescriptor.Death)
                                                   );


            var natural_armor = library.CopyAndAdd <BlueprintFeature>("0d20d88abb7c33a47902bd99019f2ed1", "PhantomNaturalArmorFeature", "");

            natural_armor.SetNameDescription("Armor Bonus",
                                             "Phantom receives bonuses to their natural armor. A phantom cannot wear armor of any kind, as the armor interferes with the spiritualist’s connection to the phantom.");
            dex_cha_bonus = library.CopyAndAdd <BlueprintFeature>("0c80276018694f24fbaf59ec7b841f2b", "PhantomDexChaIncreaseFeature", "");
            dex_cha_bonus.SetNameDescription("Phantom Prowess", "Phantom receives +1 bonus to their Dexterity and Charisma.");
            dex_cha_bonus.ComponentsArray = new BlueprintComponent[]
            {
                Helpers.CreateAddStatBonus(StatType.Dexterity, 1, ModifierDescriptor.None),
                Helpers.CreateAddStatBonus(StatType.Charisma, 1, ModifierDescriptor.None),
            };
            str_cha_bonus = library.CopyAndAdd <BlueprintFeature>("0c80276018694f24fbaf59ec7b841f2b", "PhantomStrChaIncreaseFeature", "");
            str_cha_bonus.SetNameDescription("Phantom Prowess", "Anger phantom receives +1 bonus to their Strength and Charisma.");
            str_cha_bonus.ComponentsArray = new BlueprintComponent[]
            {
                Helpers.CreateAddStatBonus(StatType.Strength, 1, ModifierDescriptor.None),
                Helpers.CreateAddStatBonus(StatType.Charisma, 1, ModifierDescriptor.None),
            };

            createExtraClassSkill();
            createSlamDamage();
            createDr();
            phantom_progression = Helpers.CreateProgression("PhantomProgression",
                                                            phantom_class.Name,
                                                            phantom_class.Description,
                                                            "",
                                                            phantom_class.Icon,
                                                            FeatureGroup.None);
            phantom_progression.Classes = new BlueprintCharacterClass[] { phantom_class };


            magic_attacks = Helpers.CreateFeature("PhantomMagicAttacksFeature",
                                                  "Magic Attacks",
                                                  "Starting from 3rd level, the phantom treats its slam attacks as if they were magic for the purposes of overcoming damage reduction.",
                                                  "",
                                                  null,
                                                  FeatureGroup.None,
                                                  Common.createAddOutgoingMagic()
                                                  );


            var bonus_feat = library.Get <BlueprintFeatureSelection>("247a4068296e8be42890143f451b4b45");

            phantom_progression.LevelEntries = new LevelEntry[] { Helpers.LevelEntry(1, outsider, dr5_slashing, slam_damage,
                                                                                     library.Get <BlueprintFeature>("d3e6275cfa6e7a04b9213b7b292a011c"),  // ray calculate feature
                                                                                     library.Get <BlueprintFeature>("62ef1cdb90f1d654d996556669caf7fa"),  //touch calculate feature
                                                                                     library.Get <BlueprintFeature>("0aeba56961779e54a8a0f6dedef081ee")), //inside the storm
                                                                  Helpers.LevelEntry(2, natural_armor, dex_cha_bonus, extra_class_skills, bonus_feat),
                                                                  Helpers.LevelEntry(3, magic_attacks),
                                                                  Helpers.LevelEntry(4, natural_armor, dex_cha_bonus, dr_magic),
                                                                  Helpers.LevelEntry(5, devotion),
                                                                  Helpers.LevelEntry(6, natural_armor, dex_cha_bonus),
                                                                  Helpers.LevelEntry(7, Eidolon.multi_attack),
                                                                  Helpers.LevelEntry(8, natural_armor, dex_cha_bonus),
                                                                  Helpers.LevelEntry(9, natural_armor, dex_cha_bonus),
                                                                  Helpers.LevelEntry(10),
                                                                  Helpers.LevelEntry(11),
                                                                  Helpers.LevelEntry(12, natural_armor, dex_cha_bonus),
                                                                  Helpers.LevelEntry(13, natural_armor, dex_cha_bonus),
                                                                  Helpers.LevelEntry(14),
                                                                  Helpers.LevelEntry(15, natural_armor, dex_cha_bonus, dr15),
                                                                  Helpers.LevelEntry(16),
                                                                  Helpers.LevelEntry(17),
                                                                  Helpers.LevelEntry(18),
                                                                  Helpers.LevelEntry(19),
                                                                  Helpers.LevelEntry(20) };


            phantom_progression.UIGroups = new UIGroup[]  { Helpers.CreateUIGroup(slam_damage, magic_attacks, devotion, Eidolon.multi_attack, endure_torment),
                                                            Helpers.CreateUIGroup(dr5_slashing, dr_magic, dr15),
                                                            Helpers.CreateUIGroup(natural_armor),
                                                            Helpers.CreateUIGroup(dex_cha_bonus, str_cha_bonus), };
        }
コード例 #14
0
 static void createDesertStride()
 {
     desert_stride = library.CopyAndAdd <BlueprintFeature>("11f4072ea766a5840a46e6660894527d", "DawnflowerDervishDesertStride", ""); //woodland stride
     desert_stride.SetNameDescription("Desert Stride", "At 7th level, a Dawnflower dervish can move through any sort difficult terrain at her normal speed and without taking damage or suffering any other impairment.");
 }