Exemplo n.º 1
0
        static void createKiPool()
        {
            var scaled_fist_archetype = library.Get <BlueprintArchetype>("5868fc82eb11a4244926363983897279");
            var scaled_fist_ki_pool   = library.Get <BlueprintFeature>("ae98ab7bda409ef4bb39149a212d6732");
            var resource = library.Get <BlueprintAbilityResource>("7d002c1025fbfe2458f1509bf7a89ce1");

            var amount = CallOfTheWild.ExtensionMethods.getMaxAmount(resource);

            Helpers.SetField(amount, "ArchetypesDiv", new BlueprintArchetype[] { scaled_fist_archetype });

            ClassToProgression.addClassToResource(archetype.GetParentClass(), new BlueprintArchetype[] { archetype }, resource, scaled_fist_archetype.GetParentClass());

            ki_pool = Common.featureToFeature(scaled_fist_ki_pool, false, "", "IroranPaladin");


            var ki_ignore_dr_buff = Helpers.CreateBuff("IroranPaladinKiIgnoreDRBuff",
                                                       "Ki Power: Ignore DR",
                                                       "By spending 1 point from his ki pool, an iroran paladin can ignore any damage reduction possessed by the target of his personal trial ability for 1 round.",
                                                       "",
                                                       Helpers.GetIcon("2c38da66e5a599347ac95b3294acbe00"),
                                                       null,
                                                       Helpers.Create <NewMechanics.IgnoreDamageReductionIfTargetHasFact>(i =>
            {
                i.fact        = personal_trial_buff;
                i.from_caster = true;
            })
                                                       );

            var ability = library.CopyAndAdd <BlueprintAbility>("ca948bb4ce1a2014fbf4d8d44b553074", "IroranPaladinKiPowerIgnoreDRBuff", "");

            ability.SetNameDescriptionIcon(ki_ignore_dr_buff);
            ability.ReplaceComponent <AbilityEffectRunAction>(Helpers.CreateRunActions(Common.createContextActionApplyBuff(ki_ignore_dr_buff, Helpers.CreateContextDuration(1), dispellable: false)));

            ki_pool.AddComponent(Helpers.CreateAddFacts(ability));


            ki_strike_magic = library.CopyAndAdd <BlueprintFeature>("1188005ee3160f84f8bed8b19a7d46cf", "IroranPaladinKiStrikeMagic", "");
            ki_strike_magic.SetDescription("At 4th level, ki strike allows the iroran paladin's unarmed attacks to be treated as magic weapons for the purpose of overcoming damage reduction.");

            ki_strike_cold_iron_silver = library.CopyAndAdd <BlueprintFeature>("7b657938fde78b14cae10fc0d3dcb991", "IroranPaladinKiStrikeColdIronSilver", "");
            ki_strike_cold_iron_silver.SetDescription("At 7th level, the iroran paladin's unarmed attacks are treated as cold iron and silver for the purpose of overcoming damage reduction.");

            ki_strike_lawful = library.CopyAndAdd <BlueprintFeature>("34439e527a8f5fb4588024e71960dd42", "IroranPaladinKiStrikeLawful", "");
            ki_strike_lawful.SetDescription("At 10th level, the iroran paladin's unarmed attacks are treated as lawful weapons for the purpose of overcoming damage reduction.");

            ki_strike_adamantine = library.CopyAndAdd <BlueprintFeature>("ddc10a3463bd4d54dbcbe993655cf64e", "IroranPaladinKiStrikeAdamantine", "");
            ki_strike_adamantine.SetDescription("At 16th level, the iroran paladin's unarmed attacks are treated as adamantine weapons for the purpose of overcoming damage reduction and bypassing hardness.");
        }
Exemplo n.º 2
0
        static void createPerformance()
        {
            var cleric   = library.Get <BlueprintCharacterClass>("67819271767a9dd4fbfd4ae700befea0");
            var resource = library.Get <BlueprintAbilityResource>("e190ba276831b5c4fa28737e5e49e6a6");

            ClassToProgression.addClassToResource(cleric, new BlueprintArchetype[] { archetype }, resource, library.Get <BlueprintCharacterClass>("772c83a25e2268e448e841dcd548235f"));

            var archatype_list_feature = Helpers.CreateFeature("BardicPerformanceArchetypeExtensionFeature",
                                                               "",
                                                               "",
                                                               "",
                                                               null,
                                                               FeatureGroup.None);

            archatype_list_feature.AddComponent(Helpers.Create <ContextRankConfigArchetypeList>(c => c.archetypes = new BlueprintArchetype[] { archetype }));
            archatype_list_feature.HideInCharacterSheetAndLevelUp = true;

            var inspire_courage_ability = library.CopyAndAdd <BlueprintActivatableAbility>("70274c5aa9124424c984217b62dabee8", "EvangelistInspireCourageToggleAbility", "");

            inspire_courage_ability.SetDescription("A 1st level evangelist can use his performance to inspire courage in his allies (including himself), bolstering them against fear and improving their combat abilities. To be affected, an ally must be able to perceive the evangelist's performance. An affected ally receives a +1 morale bonus on saving throws against charm and fear effects and a +1 competence bonus on attack and weapon damage rolls. At 5th level, and every six evangelist levels thereafter, this bonus increases by +1, to a maximum of +4 at 17th level.");
            var inspire_courage_buff = library.Get <BlueprintBuff>("6d6d9e06b76f5204a8b7856c78607d5d");

            ClassToProgression.addClassToBuff(cleric, new BlueprintArchetype[] { archetype }, inspire_courage_ability.Buff, library.Get <BlueprintCharacterClass>("772c83a25e2268e448e841dcd548235f"));

            var inspire_competence_ability = library.CopyAndAdd <BlueprintActivatableAbility>("430ab3bb57f2cfc46b7b3a68afd4f74e", "EvangelistInspireCompetenceToggleAbility", "");

            inspire_competence_ability.SetDescription("An evangelist of 3rd level or higher can use his performance to help allies succeed at a task. They must be within 30 feet and able to see and hear the evangelist. They get a +2 competence bonus on all skill checks as long as they continue to hear the evangelist's performance. This bonus increases by +1 for every four levels the evangelist has attained beyond 3rd (+3 at 7th, +4 at 11th, +5 at 15th, and +6 at 19th).");
            ClassToProgression.addClassToBuff(cleric, new BlueprintArchetype[] { archetype }, inspire_competence_ability.Buff, library.Get <BlueprintCharacterClass>("772c83a25e2268e448e841dcd548235f"));


            var inspire_greatness_ability = library.CopyAndAdd <BlueprintActivatableAbility>("be36959e44ac33641ba9e0204f3d227b", "EvangelistInspireGreatnessToggleAbility", "");

            inspire_greatness_ability.SetDescription("An evangelist of 9th level or higher can use his performance to inspire greatness in all allies within 30 feet, granting extra fighting capability. A creature inspired with greatness gains 2 bonus Hit Dice (d10s), the commensurate number of temporary hit points (apply the target's Constitution modifier, if any, to these bonus Hit Dice), a +2 competence bonus on attack rolls, and a +1 competence bonus on Fortitude saves.");

            var inspire_heroics_ability = library.CopyAndAdd <BlueprintActivatableAbility>("a4ce06371f09f504fa86fcf6d0e021e4", "EvangelistInspireHeroicsToggleAbility", "");

            inspire_heroics_ability.SetDescription("An evangelist of 15th level or higher can inspire tremendous heroism in all allies within 30 feet. Inspired creatures gain a +4 morale bonus on saving throws and a +4 dodge bonus to AC. The effect lasts for as long as the targets are able to witness the performance.");

            var fascinate_ability = library.CopyAndAdd <BlueprintActivatableAbility>("993908ad3fb81f34ba0ed168b7c61f58", "EvangelistFascinateToggleAbility", "");

            fascinate_ability.SetDescription("At 6th level, an evangelist can use his performance to cause one or more creatures to become fascinated with him. Each creature to be fascinated must be within 30 feet.\nEach creature within range receives a Will save (DC 10 + 1/2 the evangelist's level + the evangelist's Cha modifier) to negate the effect. If a creature's saving throw succeeds, the evangelist cannot attempt to fascinate that creature again for 24 hours. If its saving throw fails, the creature stands quietly and observes the performance for as long as the bard continues to maintain it. Any damage to the target automatically breaks the effect.");

            var fasciante_area = library.CopyAndAdd <BlueprintAbilityAreaEffect>("a4fc1c0798359974e99e1d790935501d", "EvangelistFascianteArea", "");

            fasciante_area.ReplaceComponent <ContextCalculateAbilityParamsBasedOnClass>(c => c.CharacterClass = cleric);
            var fascinate_buff = library.CopyAndAdd <BlueprintBuff>("555930f121b364a4e82670b433028728", "EvangelistFascianteBuff", "");

            fascinate_buff.SetDescription(fascinate_ability.Description);
            fascinate_buff.ReplaceComponent <AddAreaEffect>(a => a.AreaEffect = fasciante_area);
            fascinate_ability.Buff = fascinate_buff;


            inspire_courage    = Common.ActivatableAbilityToFeature(inspire_courage_ability, false);
            inspire_competence = Common.ActivatableAbilityToFeature(inspire_competence_ability, false);
            inspire_heroics    = Common.ActivatableAbilityToFeature(inspire_heroics_ability, false);
            inspire_greatness  = Common.ActivatableAbilityToFeature(inspire_greatness_ability, false);
            fascinate          = Common.ActivatableAbilityToFeature(fascinate_ability, false);

            performance_resource = library.CopyAndAdd <BlueprintFeature>("b92bfc201c6a79e49afd0b5cfbfc269f", "EvangelistPerformanceResource", "");
            performance_resource.ReplaceComponent <IncreaseResourcesByClass>(i => i.CharacterClass = cleric);
            performance_resource = library.Get <BlueprintFeature>("b92bfc201c6a79e49afd0b5cfbfc269f");
            performance_resource.AddComponent(Helpers.Create <NewMechanics.IncreaseResourcesByClassWithArchetype>(i =>
            {
                i.CharacterClass = archetype.GetParentClass();
                i.Archetype      = archetype;
                i.Resource       = resource;
            }));
        }