From 31b34bd66add8e8245c234dd48e6d745ea7f93c8 Mon Sep 17 00:00:00 2001 From: pheonix99 Date: Fri, 3 Feb 2023 18:29:24 -0500 Subject: [PATCH] 1.4.8 --- Readme.md | 10 +- TomeOfTheFirebird/BuildContent.cs | 2 + TomeOfTheFirebird/Config/Blueprints.json | 5 +- TomeOfTheFirebird/Info.json | 2 +- .../AbstractBloodlineMutationComponent.cs | 85 +++++++++++++ .../BloodlineMutation/BloodHavocComponent.cs | 47 +++++++ .../BloodlineSpellComponent.cs | 74 +++++++++++ .../UnitPartBloodlineSpellTracker.cs | 32 +++++ .../New Content/Feats/AncestralScorn.cs | 116 +++++++++++++++++- .../New Content/Features/BloodHavoc.cs | 20 +++ .../Features/BloodlineMutations.cs | 25 ++++ .../New Content/RacialOptions/Tiefling.cs | 30 +++-- TomeOfTheFirebird/Reference/Classes.cs | 14 +++ TomeOfTheFirebird/Settings.cs | 1 + TomeOfTheFirebird/TomeOfTheFirebird.csproj | 7 ++ 15 files changed, 456 insertions(+), 14 deletions(-) create mode 100644 TomeOfTheFirebird/New Components/BloodlineMutation/AbstractBloodlineMutationComponent.cs create mode 100644 TomeOfTheFirebird/New Components/BloodlineMutation/BloodHavocComponent.cs create mode 100644 TomeOfTheFirebird/New Components/BloodlineMutation/BloodlineSpellComponent.cs create mode 100644 TomeOfTheFirebird/New Components/BloodlineMutation/UnitPartBloodlineSpellTracker.cs create mode 100644 TomeOfTheFirebird/New Content/Features/BloodHavoc.cs create mode 100644 TomeOfTheFirebird/New Content/Features/BloodlineMutations.cs create mode 100644 TomeOfTheFirebird/Reference/Classes.cs diff --git a/Readme.md b/Readme.md index f5ee30b..f857052 100644 --- a/Readme.md +++ b/Readme.md @@ -11,6 +11,10 @@ NOW REQUIRES TabletopTweaks Core Module and ModMenu ## Changelog ### +1.4.8 +Fix for Maw And Claw (Claw) natural weapons vanishing - replacing with toggle as game likes to do +Added Ancestral Scorn feat + 1.4.7 Burst Of Radiance has been returned to spell lists from the Shadow Realm? Price Fixes for some horribly overpriced act 1 items - expect further changes here @@ -356,6 +360,8 @@ Made rewards from Monster Slayers and Local Production crusade events permanent ##Coming Soon: +Bloodline Mutations (Havoc first) + Some Crusade Mode goodies Earth Tremor spell @@ -364,12 +370,8 @@ Mountain Witch Patron Witch Unique Patrons -Compatibility Hack for Expanded Content so Death Patron can be used with the EC version of Gloomblind Bolts if that one is enabled and ToTF version is disabled - Extending Draconic Bloodline claw upgrades to Dragon Mystery abilities if Expanded Content is installed -Improved Multi-Archetyping for Witch archetypes that alter patron selection - you explictly *can* take multiple archetypes that reduce your selection as long as you comply with all the restriction on TT - Seasonal Witch archetype Banishing Warden Paladin Archetype diff --git a/TomeOfTheFirebird/BuildContent.cs b/TomeOfTheFirebird/BuildContent.cs index a0be8f9..30a968d 100644 --- a/TomeOfTheFirebird/BuildContent.cs +++ b/TomeOfTheFirebird/BuildContent.cs @@ -78,6 +78,8 @@ static void Postfix() BurnResistance.Make(); BreathWeaponFeats.BuildAbilityFocusBreathWeapons(); ExtraBurn.Make(); + AncestralScorn.Make(); + //New Mythics MythicKineticDefenses.Make(); diff --git a/TomeOfTheFirebird/Config/Blueprints.json b/TomeOfTheFirebird/Config/Blueprints.json index d65fc5b..ea52c75 100644 --- a/TomeOfTheFirebird/Config/Blueprints.json +++ b/TomeOfTheFirebird/Config/Blueprints.json @@ -263,7 +263,10 @@ "AdoptedOwlcat_Feature": "46e282a2-3f42-4348-8095-7abb4d96a662", "AdoptedPipefoxAbility": "0009e2c9-d15f-487c-a215-fa29d8482b88", "AdoptedPipefoxBuff": "08d89828-3ac2-4ed6-a891-db601969feca", - "AdoptedPipefoxFeature": "8e9fc535-4775-4512-a08a-68962f87a6d1" + "AdoptedPipefoxFeature": "8e9fc535-4775-4512-a08a-68962f87a6d1", + "AncestralScorn": "30fb3bc6-c7d4-4609-b68a-bc47f6831f83", + "ClawTieflingRacialBuff": "f122ff39-1c07-4cf5-b1b3-4b4c5caa8c11", + "ClawTieflingRacialToggle": "032a6ce2-8492-41b9-9a48-b0ce6079a2fb" }, diff --git a/TomeOfTheFirebird/Info.json b/TomeOfTheFirebird/Info.json index eedcaba..180d5f5 100644 --- a/TomeOfTheFirebird/Info.json +++ b/TomeOfTheFirebird/Info.json @@ -2,7 +2,7 @@ "Id": "TomeOfTheFirebird", "DisplayName": "Tome Of The Firebird", "Author": "pheonix99", - "Version": "1.4.7", + "Version": "1.4.8", "ManagerVersion": "0.21.3", "AssemblyName": "TomeOfTheFirebird.dll", "EntryMethod": "TomeOfTheFirebird.Main.Load", diff --git a/TomeOfTheFirebird/New Components/BloodlineMutation/AbstractBloodlineMutationComponent.cs b/TomeOfTheFirebird/New Components/BloodlineMutation/AbstractBloodlineMutationComponent.cs new file mode 100644 index 0000000..81c6c06 --- /dev/null +++ b/TomeOfTheFirebird/New Components/BloodlineMutation/AbstractBloodlineMutationComponent.cs @@ -0,0 +1,85 @@ +using BlueprintCore.Utils; +using Kingmaker.Blueprints; +using Kingmaker.Blueprints.Classes.Spells; +using Kingmaker.UnitLogic; +using Kingmaker.UnitLogic.Abilities; +using Kingmaker.UnitLogic.Parts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TomeOfTheFirebird.New_Components.BloodlineMutation +{ + class AbstractBloodlineMutationComponent : UnitFactComponentDelegate + { + public List classes = new(); + + public List archetypeBooks = new(); + + private static Dictionary spellFocuses; + + private static BlueprintFeatureReference _spellFocus; + + + + protected bool AppliesToAbility(AbilityData ability) + { + if (spellFocuses == null) + { + spellFocuses = new(); + spellFocuses.Add(SpellSchool.Abjuration, BlueprintTool.GetRef("71a3f1c1ac77ae3488b9b3d6d2aac01a")); + spellFocuses.Add(SpellSchool.Conjuration, BlueprintTool.GetRef("d342cc595f499434687f9765f56d525c")); + spellFocuses.Add(SpellSchool.Divination, BlueprintTool.GetRef("955e97411611d384db2cbc00d7ed5ead")); + spellFocuses.Add(SpellSchool.Enchantment, BlueprintTool.GetRef("c5bf645f128c39b40850cde005b8538f")); + spellFocuses.Add(SpellSchool.Evocation, BlueprintTool.GetRef("c5bf645f128c39b40850cde005b8538f")); + spellFocuses.Add(SpellSchool.Illusion, BlueprintTool.GetRef("e588279a80eb7a24b813fadad4bc83b5")); + spellFocuses.Add(SpellSchool.Necromancy, BlueprintTool.GetRef("8791da25011fd1844ad61a3fea6ece54")); + spellFocuses.Add(SpellSchool.Transmutation, BlueprintTool.GetRef("49907a2e51b49d641aad3c9781a3a698")); + _spellFocus = BlueprintTool.GetRef("16fa59cc9a72a6043b566b49184f53fe"); + } + + if (ability.Blueprint.IsSpell) + { + if (classes.Any(x=>x.Equals(ability.SpellbookBlueprint.m_CharacterClass) || archetypeBooks.Any(x=>ability.m_SpellbookBlueprint))) + { + var part = Owner.Ensure(); + if (part.IsBloodlineSpell(ability.Blueprint.ToReference())) + { + return true; + } + + var school = ability.Blueprint.School; + if (school == SpellSchool.None) + return false; + else if (Owner.Progression.Features.HasFact(spellFocuses[school])) + return true; + var expandedstudypart = Owner.Get(); + if (expandedstudypart == null) + return false; + else + return expandedstudypart.HasSpellSchoolEntry(school) && Owner.Progression.Features.HasFact(_spellFocus); + + + } + else + { + return false; + } + + + } + else if (ability.Blueprint.Type == Kingmaker.UnitLogic.Abilities.Blueprints.AbilityType.SpellLike || ability.Blueprint.Type == Kingmaker.UnitLogic.Abilities.Blueprints.AbilityType.Supernatural) + { + //For bloodline powers when I add those to this + return false; + } + else + { + return false; + } + } + } +} + \ No newline at end of file diff --git a/TomeOfTheFirebird/New Components/BloodlineMutation/BloodHavocComponent.cs b/TomeOfTheFirebird/New Components/BloodlineMutation/BloodHavocComponent.cs new file mode 100644 index 0000000..aea83ac --- /dev/null +++ b/TomeOfTheFirebird/New Components/BloodlineMutation/BloodHavocComponent.cs @@ -0,0 +1,47 @@ +using Kingmaker.PubSubSystem; +using Kingmaker.RuleSystem; +using Kingmaker.RuleSystem.Rules.Damage; +using Kingmaker.UnitLogic.Mechanics; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TomeOfTheFirebird.New_Components.BloodlineMutation +{ + class BloodHavocComponent : AbstractBloodlineMutationComponent, IInitiatorRulebookHandler, IRulebookHandler, ISubscriber, IInitiatorRulebookSubscriber + { + public void OnEventAboutToTrigger(RuleCalculateDamage evt) + { + MechanicsContext context = evt.Reason.Context; + if (((context != null) ? context.SourceAbility : null) == null) + { + return; + } + if (context.SourceAbilityContext?.Ability == null) + { + return; + } + else if (AppliesToAbility(context.SourceAbilityContext.Ability)) + { + foreach (BaseDamage baseDamage in evt.DamageBundle) + { + if (!baseDamage.Precision) + { + DiceFormula modifiedValue = baseDamage.Dice.ModifiedValue; + int bonus = modifiedValue.Rolls; + baseDamage.AddModifier(bonus, base.Fact); + } + } + } + + + } + + public void OnEventDidTrigger(RuleCalculateDamage evt) + { + + } + } +} diff --git a/TomeOfTheFirebird/New Components/BloodlineMutation/BloodlineSpellComponent.cs b/TomeOfTheFirebird/New Components/BloodlineMutation/BloodlineSpellComponent.cs new file mode 100644 index 0000000..228eb35 --- /dev/null +++ b/TomeOfTheFirebird/New Components/BloodlineMutation/BloodlineSpellComponent.cs @@ -0,0 +1,74 @@ +using BlueprintCore.Blueprints.CustomConfigurators.Classes; +using Kingmaker.Blueprints; +using Kingmaker.UnitLogic; +using Kingmaker.UnitLogic.FactLogic; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TomeOfTheFirebird.New_Components.BloodlineMutation +{ + [AllowMultipleComponents] + public class BloodlineSpellComponent : UnitFactComponentDelegate + { + + public BlueprintAbilityReference m_spell; + public override void OnActivate() + { + OnTurnOn(); + } + + public override void OnDeactivate() + { + OnTurnOff(); + } + + public override void OnTurnOn() + { + + base.OnTurnOn(); + var part = base.Owner.Ensure(); + part.RegisterBloodlineSpell(Fact, m_spell); + + + } + + public override void OnTurnOff() + { + var part = base.Owner.Get(); + if (part != null) + part.UnregisterBloodlineSpell(Fact, m_spell); + + } + + + } + + public static class BloodlineSpellComponentAssistant + { + public static FeatureConfigurator AddBloodlineSpellComponents(this FeatureConfigurator featureConfigurator) + { + List spells = new(); + + featureConfigurator.EditComponents(x => + { + if (!spells.Contains(x.m_Spell)) + { + spells.Add(x.m_Spell); + } + + }, y => true); + foreach(BlueprintAbilityReference spell in spells) + { + featureConfigurator.AddComponent(x => + { + x.m_spell = spell; + }); + } + + return featureConfigurator; + } + } +} diff --git a/TomeOfTheFirebird/New Components/BloodlineMutation/UnitPartBloodlineSpellTracker.cs b/TomeOfTheFirebird/New Components/BloodlineMutation/UnitPartBloodlineSpellTracker.cs new file mode 100644 index 0000000..dd0a0ff --- /dev/null +++ b/TomeOfTheFirebird/New Components/BloodlineMutation/UnitPartBloodlineSpellTracker.cs @@ -0,0 +1,32 @@ +using Kingmaker.Blueprints; +using Kingmaker.UnitLogic; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TomeOfTheFirebird.New_Components.BloodlineMutation +{ + class UnitPartBloodlineSpellTracker : OldStyleUnitPart + { + private Dictionary mappings = new(); + + public void RegisterBloodlineSpell(UnitFact source, BlueprintAbilityReference spell) + { + if (!mappings.ContainsKey(source)) + mappings.Add(source, spell); + } + + public bool IsBloodlineSpell(BlueprintAbilityReference spell) + { + return mappings.ContainsValue(spell); + } + + public void UnregisterBloodlineSpell(UnitFact source, BlueprintAbilityReference spell) + { + + mappings.Remove(source); + } + } +} diff --git a/TomeOfTheFirebird/New Content/Feats/AncestralScorn.cs b/TomeOfTheFirebird/New Content/Feats/AncestralScorn.cs index a3f953a..54ca20a 100644 --- a/TomeOfTheFirebird/New Content/Feats/AncestralScorn.cs +++ b/TomeOfTheFirebird/New Content/Feats/AncestralScorn.cs @@ -1,13 +1,48 @@ -using System; +using BlueprintCore.Utils; +using Kingmaker.Blueprints.Classes; +using Kingmaker.ElementsSystem; +using Kingmaker.RuleSystem.Rules; +using Kingmaker.UnitLogic; +using Kingmaker.UnitLogic.Buffs; +using Kingmaker.UnitLogic.Buffs.Blueprints; +using Kingmaker.UnitLogic.Mechanics; +using Kingmaker.UnitLogic.Mechanics.Actions; +using Kingmaker.Utility; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using TabletopTweaks.Core.NewEvents; +using TomeOfTheFirebird.Helpers; namespace TomeOfTheFirebird.New_Content.Feats { class AncestralScorn { + + public static void Make() + { + string desc = "The fury you harbor for your fiendish ancestors gives evil outsiders great reason to fear you.\nBenefit: Whenever you successfully demoralize an outsider of the evil subtype with an Intimidate check, it becomes sickened for 1 round in addition to being affected by the normal effects of being demoralized. If you beat the DC by 5 or more, the creature is nauseated for 1 round instead."; + + if (Settings.IsEnabled("AncestralScorn")) + { + var config = MakerTools.MakeFeature("AncestralScorn", "Ancestral Scorn", desc, groups: FeatureGroup.Feat); + config.AddPrerequisiteStatValue(Kingmaker.EntitySystem.Stats.StatType.SkillPersuasion, 5); + config.AddPrerequisiteFeature("5c4e42124dc2b4647af6e36cf2590500", group:Kingmaker.Blueprints.Classes.Prerequisites.Prerequisite.GroupType.Any); + config.AddPrerequisiteFeature("5e464d1d5fd0e7a4380b6ce60ef2c83b", group:Kingmaker.Blueprints.Classes.Prerequisites.Prerequisite.GroupType.Any);//Arue + config.AddRecommendationHasFeature("ceea53555d83f2547ae5fc47e0399e14"); + config.AddRecommendationHasFeature("bcbd674ec70ff6f4894bb5f07b6f4095"); + config.AddRecommendationHasFeature("fc37b70e3d064a147a3a99db4a86ee12"); + config.AddComponent(); + config.SetIsClassFeature(); + config.Configure(); + } + else + { + MakerTools.MakeFeature("AncestralScorn", "Ancestral Scorn", desc).Configure(); + } + } //Need to interpile Demoralize for this one /* @@ -22,4 +57,83 @@ Source Blood of Fiends pg. 24 Normal: Demoralizing a foe with a successful Intimidate check causes it to become shaken for 1 round, +1 round for every 5 by which you beat the DC. */ } + + public class AncestralScornComponent : UnitFactComponentDelegate, IInitiatorDemoralizeHandler + { + private static BlueprintFeature _evilSubtype; + private static BlueprintFeature EvilSubtype + { + get + { + _evilSubtype ??= BlueprintTool.Get("5279fc8380dd9ba419b4471018ffadd1"); + return _evilSubtype; + } + } + + private static BlueprintFeature _outsiderType; + private static BlueprintFeature OutsiderType + { + get + { + _outsiderType ??= BlueprintTool.Get("9054d3988d491d944ac144e27b6bc318"); + return _outsiderType; + } + } + + private static BlueprintBuff _sickened; + private static BlueprintBuff Sickened + { + get + { + _sickened ??= BlueprintTool.Get("4e42460798665fd4cb9173ffa7ada323"); + return _sickened; + } + } + + private static BlueprintBuff _nauseated; + private static BlueprintBuff Nauseated + { + get + { + _nauseated ??= BlueprintTool.Get("956331dba5125ef48afe41875a00ca0e"); + return _nauseated; + } + } + + public void AfterIntimidateSuccess(Demoralize action, RuleSkillCheck intimidateCheck, Buff appliedBuff) + { + var target = ContextData.Current?.CurrentTarget?.Unit; + if (target is null) + { + + return; + } + if (appliedBuff is null) + { + + return; + } + + var caster = Context.MaybeCaster; + if (caster is null) + { + + return; + } + + if (!target.HasFact(EvilSubtype) || !target.HasFact(OutsiderType)) + { + return; + } + + target.AddBuff(Sickened, Context, new Rounds(1).Seconds); + + var succeedBy = intimidateCheck.RollResult - intimidateCheck.DC; + + if (succeedBy >= 5) + { + target.AddBuff(Nauseated, Context, new Rounds(1).Seconds); + } + } + } } diff --git a/TomeOfTheFirebird/New Content/Features/BloodHavoc.cs b/TomeOfTheFirebird/New Content/Features/BloodHavoc.cs new file mode 100644 index 0000000..8a7b82a --- /dev/null +++ b/TomeOfTheFirebird/New Content/Features/BloodHavoc.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TomeOfTheFirebird.New_Content.Features +{ + class BloodHavoc + { + /* + * Although heirs to similar arcane bloodlines may share commonalities, the unique circumstances in which a bloodline enters a bloodrager or sorcerer’s lineage can result in the manifestation of particularly strange or unusual bloodline powers known as mutations. Whenever a bloodrager or a sorcerer gains a new bloodline power, she can swap her bloodline power for a bloodline mutation whose prerequisites she meets. Once this choice is made, it cannot be changed, and a bloodrager or sorcerer cannot swap a bloodline power that she has altered or replaced with an archetype for a bloodline mutation. A bloodrager need not be in a bloodrage to use her bloodline mutation powers. + +Alternatively, a bloodrager or sorcerer can select a bloodline mutation in place of a bloodline bonus feat, provided her class level is at least equal to the level of the bloodline ability the mutation normally replaces. + */ + /* + * Whenever you cast a bloodrager or sorcerer spell that deals damage, add 1 point of damage per die rolled. This benefit applies only to damaging spells that belong to schools you have selected with Spell Focus or that are bloodline spells for your bloodline. This ability replaces the sorcerer’s 1st-level bloodline power or the bloodrager’s 4th-level bloodline power. + */ + } +} diff --git a/TomeOfTheFirebird/New Content/Features/BloodlineMutations.cs b/TomeOfTheFirebird/New Content/Features/BloodlineMutations.cs new file mode 100644 index 0000000..9001cb2 --- /dev/null +++ b/TomeOfTheFirebird/New Content/Features/BloodlineMutations.cs @@ -0,0 +1,25 @@ +using BlueprintCore.Utils; +using Kingmaker.Blueprints.Classes; +using Kingmaker.Blueprints.Classes.Selection; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TomeOfTheFirebird.New_Content.Features +{ + class BloodlineMutations + { + public static void Setup() + { + var sorc = BlueprintTool.Get("24bef8d1bee12274686f6da6ccbc8914").AllFeatures.Where(x => x is BlueprintProgression).Select(x => x as BlueprintProgression); + + + } + private static void ProcessProgression(BlueprintProgression blueprintProgression) + { + + } + } +} diff --git a/TomeOfTheFirebird/New Content/RacialOptions/Tiefling.cs b/TomeOfTheFirebird/New Content/RacialOptions/Tiefling.cs index 3ebd52e..a169c42 100644 --- a/TomeOfTheFirebird/New Content/RacialOptions/Tiefling.cs +++ b/TomeOfTheFirebird/New Content/RacialOptions/Tiefling.cs @@ -11,6 +11,7 @@ using Kingmaker.Enums.Damage; using Kingmaker.RuleSystem.Rules.Damage; using Kingmaker.UnitLogic.Abilities.Blueprints; +using Kingmaker.UnitLogic.ActivatableAbilities; using Kingmaker.UnitLogic.FactLogic; using Kingmaker.UnitLogic.Mechanics; using System; @@ -95,13 +96,28 @@ public static void Make() chomp.AddFacts(facts: new() { noSLA }); chomp.SetRanks(1); chomp.Configure(); - var claw = MakerTools.MakeFeature("ClawTieflingRacialFeature", "Maw or Claw (Claw)", "Some tieflings take on the more bestial aspects of their fiendish ancestors. These tieflings exhibit either powerful, toothy maws or dangerous claws. This tiefling gains two claws that each deal 1d4 points of damage. These attacks are primary natural attacks. This racial trait replaces the spell-like ability racial trait."); - claw.AddEmptyHandWeaponOverride(isMonkUnarmedStrike: false, isPermanent: true, weapon: "118fdd03e569a66459ab01a20af6811a"); - claw.AddSLAReplacer(TeiflingSLAs); - claw.AddPrerequisiteNoFeature(feature: noSLA, hideInUI: true); - claw.AddFacts(facts: new() { noSLA }); - claw.SetRanks(1); - claw.Configure(); + + var icon = BlueprintTool.Get("f68af48f9ebf32549b5f9fdc4edfd475").Icon; + + var clawBuff = MakerTools.MakeBuff("ClawTieflingRacialBuff", "Maw or Claw (Claw)", "Some tieflings take on the more bestial aspects of their fiendish ancestors. These tieflings exhibit either powerful, toothy maws or dangerous claws. This tiefling gains two claws that each deal 1d4 points of damage. These attacks are primary natural attacks. This racial trait replaces the spell-like ability racial trait.", icon); + clawBuff.AddEmptyHandWeaponOverride(isMonkUnarmedStrike: false, isPermanent: false, weapon: "118fdd03e569a66459ab01a20af6811a"); + clawBuff.Configure(); + + + var clawToggle = MakerTools.MakeToggle("ClawTieflingRacialToggle", "Maw or Claw (Claw)", "Some tieflings take on the more bestial aspects of their fiendish ancestors. These tieflings exhibit either powerful, toothy maws or dangerous claws. This tiefling gains two claws that each deal 1d4 points of damage. These attacks are primary natural attacks. This racial trait replaces the spell-like ability racial trait.", icon); + clawToggle.SetBuff("ClawTieflingRacialBuff"); + clawToggle.SetActivationType(Kingmaker.UnitLogic.ActivatableAbilities.AbilityActivationType.WithUnitCommand); + clawToggle.SetDeactivateIfCombatEnded(false).SetOnlyInCombat(false).SetDoNotTurnOffOnRest(true); + + + clawToggle.Configure(); + var clawFeature = MakerTools.MakeFeature("ClawTieflingRacialFeature", "Maw or Claw (Claw)", "Some tieflings take on the more bestial aspects of their fiendish ancestors. These tieflings exhibit either powerful, toothy maws or dangerous claws. This tiefling gains two claws that each deal 1d4 points of damage. These attacks are primary natural attacks. This racial trait replaces the spell-like ability racial trait."); + clawFeature.AddFacts(new() { "ClawTieflingRacialToggle" }); + clawFeature.AddSLAReplacer(TeiflingSLAs); + clawFeature.AddPrerequisiteNoFeature(feature: noSLA, hideInUI: true); + clawFeature.AddFacts(facts: new() { noSLA }); + clawFeature.SetRanks(1); + clawFeature.Configure(); foreach(var v in BlueprintTool.Get("c862fd0e4046d2d4d9702dd60474a181").AllFeatures) diff --git a/TomeOfTheFirebird/Reference/Classes.cs b/TomeOfTheFirebird/Reference/Classes.cs new file mode 100644 index 0000000..94f0755 --- /dev/null +++ b/TomeOfTheFirebird/Reference/Classes.cs @@ -0,0 +1,14 @@ +using Kingmaker.Blueprints; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TomeOfTheFirebird.Reference +{ + class Classes + { + + } +} diff --git a/TomeOfTheFirebird/Settings.cs b/TomeOfTheFirebird/Settings.cs index 7122fbf..73bdd81 100644 --- a/TomeOfTheFirebird/Settings.cs +++ b/TomeOfTheFirebird/Settings.cs @@ -90,6 +90,7 @@ public static void Make() builder.AddSubHeader(GetString("Feats.Title"), startExpanded: true); builder.AddToggle(MakeToggle("AbilityFocusBreathWeapons", "Ability Focus Breath Weapons", true, "Increases DC of breath weapon attacks by 2")); + builder.AddToggle(MakeToggle("AncestralScorn", "Ancestral Scorn", true, "Tiefling Racial Feat: Sicken or Nauseate fiends on demoralize.")); builder.AddToggle(MakeToggle("ArmorOfThePit", "Armor Of The Pit", true, "Tiefling Racial Feat: +2 natural armor. +1 and the other two resists with the Scaled Skin racial trait.")); builder.AddToggle(MakeToggle("BurnResistance", "Burn Resistance", true, "Treat character level as two lower when calculating nonlethal damage from burn")); builder.AddToggle(MakeToggle("CoordinatedShot", "Coordinated Shot", true, "Teamwork Feat: +1 to hit if ally engaging target of ranged attack has feat, another if target is flanked by allies")); diff --git a/TomeOfTheFirebird/TomeOfTheFirebird.csproj b/TomeOfTheFirebird/TomeOfTheFirebird.csproj index ed61f28..fc1f82a 100644 --- a/TomeOfTheFirebird/TomeOfTheFirebird.csproj +++ b/TomeOfTheFirebird/TomeOfTheFirebird.csproj @@ -199,6 +199,10 @@ + + + + @@ -253,6 +257,8 @@ + + @@ -336,6 +342,7 @@ +