Skip to content

Commit

Permalink
Fixed Mixed Blood Bloodrager
Browse files Browse the repository at this point in the history
  • Loading branch information
Vek17 committed Oct 22, 2021
1 parent 02cad17 commit daa3f33
Show file tree
Hide file tree
Showing 11 changed files with 141 additions and 12 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
## Version 1.9.3
* Added new modified version of Armor Master as a homebrew option
* Updated icon for Aeon Bane
* Minor fixes to nestest activatable abilities
* Aberant bloodline should now work correctly with Mixed Blood Bloodrager
* Destined bloodline should now work correctly with Mixed Blood Bloodrager

## Version 1.9.2
* Removed the movement impairing descriptor from staggered
Expand Down
4 changes: 2 additions & 2 deletions TabletopTweaks/Bugfixes/UI/FeatureSelection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

namespace TabletopTweaks.Bugfixes.UI {
static class FeatureSelection {
[HarmonyPatch(typeof(NestedFeatureSelectionUtils), "AllNestedFeaturesUnavailable", new[] { typeof(UnitDescriptor), typeof(LevelUpState), typeof(FeatureSelectionState), typeof(BlueprintFeature) })]
//[HarmonyPatch(typeof(NestedFeatureSelectionUtils), "AllNestedFeaturesUnavailable", new[] { typeof(UnitDescriptor), typeof(LevelUpState), typeof(FeatureSelectionState), typeof(BlueprintFeature) })]
static class NestedFeatureSelectionUtils_AllNestedFeaturesUnavailable_Patch {
static bool Prefix(ref bool __result, UnitDescriptor unit, LevelUpState state, FeatureSelectionState selectionState, BlueprintFeature feature) {
IFeatureSelection selection = (feature as IFeatureSelection);
Expand All @@ -17,7 +17,7 @@ static bool Prefix(ref bool __result, UnitDescriptor unit, LevelUpState state, F
return false;
}
}
[HarmonyPatch(typeof(FeatureSelectionExtensions), "CanSelectAny", new[] { typeof(IFeatureSelection), typeof(UnitDescriptor), typeof(LevelUpState), typeof(FeatureSelectionState) })]
//[HarmonyPatch(typeof(FeatureSelectionExtensions), "CanSelectAny", new[] { typeof(IFeatureSelection), typeof(UnitDescriptor), typeof(LevelUpState), typeof(FeatureSelectionState) })]
static class FeatureSelectionExtensions_CanSelectAny_Patch {
static bool Prefix(ref bool __result, IFeatureSelection selection, UnitDescriptor unit, LevelUpState state, FeatureSelectionState selectionState) {
FeatureSelectionState newSelectionState = new FeatureSelectionState(selectionState, selectionState.Source, selection, 0, 0);
Expand Down
2 changes: 2 additions & 0 deletions TabletopTweaks/Config/Blueprints.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
"BloodragerAberrantAbnormalReachBuff": "d447b775-3acd-4c72-b3e7-3489508772af",
"BloodragerAberrantBaseBuff": "d0b261cf-cb9a-4223-b36e-b132f4bd302b",
"BloodragerAberrantBloodline": "540390e4-7356-4601-9137-625a37910df0",
"BloodragerAberrantBloodlineWandering": "188983cb-a4b9-4ab0-a8b5-b9f96dab06e3",
"BloodragerAberrantFeatSelection": "78ffea9a-643e-4c60-8cbb-6798c894c3b4",
"BloodragerAberrantFeatSelectionGreenrager": "5c4d1685-cae4-446f-883c-4db9a09e8d68",
"BloodragerAberrantForm": "cbc0ba36-8e8e-4c60-b0f8-218c1711e445",
Expand Down Expand Up @@ -122,6 +123,7 @@
"BloodragerDestinedAbility": "4c3f4703-f03d-4759-9261-6e81d8fbcf72",
"BloodragerDestinedBaseBuff": "5fd6712d-428b-4112-853e-24bd2f8f8a7b",
"BloodragerDestinedBloodline": "7076fd5a-ffd1-4207-9ac6-c9ff4882c16e",
"BloodragerDestinedBloodlineWandering": "5f609b85-d5c0-4d04-977d-0e906d4f7abf",
"BloodragerDestinedCertainStrike": "6edb06a6-c96c-433d-a06c-b66a33897df7",
"BloodragerDestinedCertainStrikeBuff": "6ac01a69-ab51-46f9-9f63-4a4c325d76fa",
"BloodragerDestinedDefyDeath": "092250b1-e7af-4ea7-a169-1a3695f76b3b",
Expand Down
5 changes: 5 additions & 0 deletions TabletopTweaks/Config/Homebrew.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
"Homebrew": true,
"Description": "Aeon Bane is now a free action to activate instead of a swift."
},
"AeonBaneIcon": {
"Enabled": true,
"Homebrew": true,
"Description": "Update Aeon Bane's Icon."
},
"AeonBaneSpellResistance": {
"Enabled": true,
"Homebrew": true,
Expand Down
2 changes: 1 addition & 1 deletion TabletopTweaks/Info.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@
"ManagerVersion": "0.23.0",
"Repository": "https://raw.githubusercontent.com/Vek17/WrathMods-TabletopTweaks/master/Repository.json",
"Requirements": [],
"Version": "1.9.2"
"Version": "1.9.3"
}
11 changes: 11 additions & 0 deletions TabletopTweaks/MythicReworks/Aeon.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ static void Postfix() {
Initialized = true;
Main.LogHeader("Aeon Rework");

PatchAeonBaneIcon();
PatchAeonBaneAction();
PatchAeonBaneSpellResistance();
PatchAeonBaneUses();
Expand All @@ -58,6 +59,16 @@ static void Postfix() {
PatchAeonGazeSelection();
}

static void PatchAeonBaneIcon() {
if (ModSettings.Homebrew.MythicReworks.Aeon.IsDisabled("AeonBaneIcon")) { return; }
var Icon_AeonBane = AssetLoader.LoadInternal("Abilities", "Icon_AeonBane.png");
var AeonBaneFeature = Resources.GetBlueprint<BlueprintFeature>("0b25e8d8b0488c84c9b5714e9ca0a204");
var AeonBaneAbility = Resources.GetBlueprint<BlueprintActivatableAbility>("67fb31f553f2bb14bbfae0b1040169f1");
AeonBaneFeature.m_Icon = Icon_AeonBane;
AeonBaneAbility.m_Icon = Icon_AeonBane;
Main.LogPatch("Patched", AeonBaneFeature);
Main.LogPatch("Patched", AeonBaneAbility);
}
static void PatchAeonBaneAction() {
if (ModSettings.Homebrew.MythicReworks.Aeon.IsDisabled("AeonBaneAction")) { return; }
var AeonBaneAbility = Resources.GetBlueprint<BlueprintActivatableAbility>("67fb31f553f2bb14bbfae0b1040169f1");
Expand Down
29 changes: 26 additions & 3 deletions TabletopTweaks/NewContent/Bloodlines/AberrantBloodline.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,12 @@ public static void AddBloodragerAberrantBloodline() {
+ "throw or be staggered for 1 round. The DC of this save is equal to 10 + 1/2 your bloodrager level + your "
+ "Constitution modifier. These effects stack with the Staggering Critical feat; the target must save against "
+ "each effect individually.");
bp.IsClassFeature = true;
});
var BloodragerAberrantStaggeringStrikeBuff = Helpers.CreateBuff("BloodragerAberrantStaggeringStrikeBuff", bp => {
bp.SetName(BloodragerAberrantStaggeringStrike.Name);
bp.SetDescription(BloodragerAberrantStaggeringStrike.Description);
bp.IsClassFeature = true;
bp.m_Flags = BlueprintBuff.Flags.HiddenInUi;
var Staggered = Resources.GetBlueprint<BlueprintBuff>("df3950af5a783bd4d91ab73eb8fa0fd3").ToReference<BlueprintBuffReference>();

Expand Down Expand Up @@ -105,10 +107,12 @@ public static void AddBloodragerAberrantBloodline() {
var BloodragerAberrantAbnormalReach = Helpers.CreateBlueprint<BlueprintFeature>("BloodragerAberrantAbnormalReach", bp => {
bp.SetName("Abnormal Reach");
bp.SetDescription("At 4th level, your limbs elongate and your reach increases by 5 feet.");
bp.IsClassFeature = true;
});
var BloodragerAberrantAbnormalReachBuff = Helpers.CreateBuff("BloodragerAberrantAbnormalReachBuff", bp => {
bp.SetName(BloodragerAberrantAbnormalReach.Name);
bp.SetDescription(BloodragerAberrantAbnormalReach.Description);
bp.IsClassFeature = true;
bp.m_Flags = BlueprintBuff.Flags.HiddenInUi;
bp.AddComponent<AddStatBonus>(c => {
c.Descriptor = ModifierDescriptor.UntypedStackable;
Expand All @@ -119,10 +123,12 @@ public static void AddBloodragerAberrantBloodline() {
var BloodragerAberrantFortitude = Helpers.CreateBlueprint<BlueprintFeature>("BloodragerAberrantFortitude", bp => {
bp.SetName("Aberrant Fortitude");
bp.SetDescription("At 8th level, you become immune to the sickened and nauseated conditions.");
bp.IsClassFeature = true;
});
var BloodragerAberrantFortitudeBuff = Helpers.CreateBuff("BloodragerAberrantFortitudeBuff", bp => {
bp.SetName(BloodragerAberrantFortitude.Name);
bp.SetDescription(BloodragerAberrantFortitude.Description);
bp.IsClassFeature = true;
bp.m_Flags = BlueprintBuff.Flags.HiddenInUi;
bp.AddComponent<AddConditionImmunity>(c => {
c.Condition = UnitCondition.Sickened;
Expand All @@ -141,10 +147,12 @@ public static void AddBloodragerAberrantBloodline() {
bp.SetName("Unusual Anatomy");
bp.SetDescription("At 12th level, your internal anatomy shifts and changes, giving you a 50% chance to negate "
+ "any critical hit or sneak attack that hits you. The damage is instead rolled normally.");
bp.IsClassFeature = true;
});
var BloodragerAberrantUnusualAnatomyBuff = Helpers.CreateBuff("BloodragerAberrantUnusualAnatomyBuff", bp => {
bp.SetName(BloodragerAberrantUnusualAnatomy.Name);
bp.SetDescription(BloodragerAberrantUnusualAnatomy.Description);
bp.IsClassFeature = true;
bp.m_Flags = BlueprintBuff.Flags.HiddenInUi;
bp.AddComponent<AddFortification>(c => {
c.UseContextValue = false;
Expand All @@ -154,10 +162,12 @@ public static void AddBloodragerAberrantBloodline() {
var BloodragerAberrantResistance = Helpers.CreateBlueprint<BlueprintFeature>("BloodragerAberrantResistance", bp => {
bp.SetName("Aberrant Resistance");
bp.SetDescription("At 16th level, you are immune to disease, exhaustion, fatigue, and poison, and to the staggered condition.");
bp.IsClassFeature = true;
});
var BloodragerAberrantResistanceBuff = Helpers.CreateBuff("BloodragerAberrantResistanceBuff", bp => {
bp.SetName(BloodragerAberrantResistance.Name);
bp.SetDescription(BloodragerAberrantResistance.Description);
bp.IsClassFeature = true;
bp.m_Flags = BlueprintBuff.Flags.HiddenInUi;
bp.AddComponent<AddConditionImmunity>(c => {
c.Condition = UnitCondition.Fatigued;
Expand All @@ -180,6 +190,7 @@ public static void AddBloodragerAberrantBloodline() {
bp.SetDescription("At 20th level, your body becomes truly unnatural. You are immune to critical hits and sneak attacks. "
+ "In addition, you gain blindsight with a range of 60 feet and your bloodrager damage reduction increases by 1. "
+ "You have these benefits constantly, even while not bloodraging.");
bp.IsClassFeature = true;
bp.AddComponent<Blindsense>(c => {
c.Range.m_Value = 60;
c.Blindsight = true;
Expand Down Expand Up @@ -208,6 +219,7 @@ public static void AddBloodragerAberrantBloodline() {
var BloodragerAberrantFeatSelection = Helpers.CreateBlueprint<BlueprintFeatureSelection>("BloodragerAberrantFeatSelection", bp => {
bp.SetName("Bonus Feats");
bp.SetDescription("Bonus Feats: Combat Reflexes, Great Fortitude, Improved Disarm, Improved Dirty Trick, Improved Initiative, Improved Unarmed Strike, Iron Will.");
bp.IsClassFeature = true;
bp.Ranks = 1;
bp.IsClassFeature = true;
bp.HideNotAvailibleInUI = true;
Expand Down Expand Up @@ -243,6 +255,7 @@ public static void AddBloodragerAberrantBloodline() {
var spell = EnlargePerson;
bp.SetName($"Bonus Spell — {EnlargePerson.Get().Name}");
bp.SetDescription("At 7th, 10th, 13th, and 16th levels, a bloodrager learns an additional spell derived from his bloodline.");
bp.IsClassFeature = true;
bp.AddComponent<AddKnownSpell>(c => {
c.m_CharacterClass = BloodragerClass;
c.m_Spell = spell;
Expand All @@ -253,6 +266,7 @@ public static void AddBloodragerAberrantBloodline() {
var spell = SeeInvisibility;
bp.SetName($"Bonus Spell — {EnlargePerson.Get().Name}");
bp.SetDescription("At 7th, 10th, 13th, and 16th levels, a bloodrager learns an additional spell derived from his bloodline.");
bp.IsClassFeature = true;
bp.AddComponent<AddKnownSpell>(c => {
c.m_CharacterClass = BloodragerClass;
c.m_Spell = spell;
Expand All @@ -263,6 +277,7 @@ public static void AddBloodragerAberrantBloodline() {
var spell = Displacement;
bp.SetName($"Bonus Spell — {EnlargePerson.Get().Name}");
bp.SetDescription("At 7th, 10th, 13th, and 16th levels, a bloodrager learns an additional spell derived from his bloodline.");
bp.IsClassFeature = true;
bp.AddComponent<AddKnownSpell>(c => {
c.m_CharacterClass = BloodragerClass;
c.m_Spell = spell;
Expand All @@ -273,6 +288,7 @@ public static void AddBloodragerAberrantBloodline() {
var spell = SpikeStones;
bp.SetName($"Bonus Spell — {EnlargePerson.Get().Name}");
bp.SetDescription("At 7th, 10th, 13th, and 16th levels, a bloodrager learns an additional spell derived from his bloodline.");
bp.IsClassFeature = true;
bp.AddComponent<AddKnownSpell>(c => {
c.m_CharacterClass = BloodragerClass;
c.m_Spell = spell;
Expand All @@ -286,6 +302,7 @@ public static void AddBloodragerAberrantBloodline() {
+ "While bloodraging, you gain the abilities and immunities of some aberrations, but show signs of your tainted heritage.\n"
+ BloodragerAberrantFeatSelection.Description
+ "\nBonus Spells: Enlarge Person (7th), See Invisibility (10th), Displacement (13th), Spike Stones (16th).");
bp.IsClassFeature = true;
bp.m_Classes = new BlueprintProgression.ClassWithLevel[] {
new BlueprintProgression.ClassWithLevel {
m_Class = BloodragerClass
Expand Down Expand Up @@ -322,8 +339,13 @@ public static void AddBloodragerAberrantBloodline() {
Helpers.CreateUIGroup(BloodragerAberrantFeatSelection, BloodragerAberrantFeatSelectionGreenrager)
};
});
var BloodragerAberrantBloodlineWandering = BloodlineTools.CreateMixedBloodFeature("BloodragerAberrantBloodlineWandering", BloodragerAberrantBloodline, bp => {
bp.m_Icon = AssetLoader.LoadInternal("Abilities", "Icon_AberrantBloodline.png");
});
var BloodragerAberrantBaseBuff = Helpers.CreateBuff("BloodragerAberrantBaseBuff", bp => {
bp.SetName("Aberrant Bloodrage");
bp.m_Flags = BlueprintBuff.Flags.HiddenInUi;
bp.IsClassFeature = true;
});

BloodragerAberrantBaseBuff.AddConditionalBuff(BloodragerAberrantStaggeringStrike, BloodragerAberrantStaggeringStrikeBuff);
Expand All @@ -339,7 +361,7 @@ public static void AddBloodragerAberrantBloodline() {
BloodlineTools.ApplyPrimalistException(BloodragerAberrantResistance, 16, BloodragerAberrantBloodline);
BloodlineTools.ApplyPrimalistException(BloodragerAberrantForm, 20, BloodragerAberrantBloodline);
if (ModSettings.AddedContent.Bloodlines.IsDisabled("AberrantBloodline")) { return; }
BloodlineTools.RegisterBloodragerBloodline(BloodragerAberrantBloodline);
BloodlineTools.RegisterBloodragerBloodline(BloodragerAberrantBloodline, BloodragerAberrantBloodlineWandering);
}
public static void AddSorcererAberrantBloodline() {
var SorcererClass = Resources.GetBlueprint<BlueprintCharacterClass>("b3a505fb61437dc4097f43c3f8f9a4cf").ToReference<BlueprintCharacterClassReference>();
Expand Down Expand Up @@ -517,20 +539,21 @@ public static void AddSorcererAberrantBloodline() {
ValueRank = AbilityRankType.StatBonus
};
});
bp.AddComponent(Helpers.CreateContextRankConfig(c => {
bp.AddContextRankConfig(c => {
c.m_Type = AbilityRankType.StatBonus;
c.m_BaseValueType = ContextRankBaseValueType.SummClassLevelWithArchetype;
c.m_Progression = ContextRankProgression.BonusValue;
c.m_StepLevel = 10;
c.m_Max = 20;
c.m_Class = new BlueprintCharacterClassReference[] { SorcererClass, MagusClass };
c.Archetype = EldritchScionArchetype;
}));
});
});
var SorcererAberrantForm = Helpers.CreateBlueprint<BlueprintFeature>("SorcererAberrantForm", bp => {
bp.SetName("Aberrant Form");
bp.SetDescription("At 20th level, your body becomes truly unnatural. You are immune to critical hits and sneak attacks. +"
+ "In addition, you gain blindsight with a range of 60 feet and damage reduction 5/—");
bp.IsClassFeature = true;
bp.AddComponent<Blindsense>(c => {
c.Range.m_Value = 60;
c.Blindsight = true;
Expand Down
Loading

0 comments on commit daa3f33

Please sign in to comment.