diff --git a/CHANGELOG.md b/CHANGELOG.md index ce937aa2..06c4c72c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## Version 2.4.5 +* Fix for 2.0.5o + +## Version 2.4.4 +* Fixes + * Spells + * Cone of Cold + * Added to the Witch spell list. + ## Version 2.4.3 * Fixes * Removed Overtip Fixes as they are now in vanilla. diff --git a/Repository.json b/Repository.json index 0cdb5bb9..c9c82846 100644 --- a/Repository.json +++ b/Repository.json @@ -2,7 +2,7 @@ "Releases": [ { "Id": "TabletopTweaks-Base", - "Version": "2.4.3" + "Version": "2.4.5" } ] } \ No newline at end of file diff --git a/TabletopTweaks-Base/Bugfixes/Abilities/Spells.cs b/TabletopTweaks-Base/Bugfixes/Abilities/Spells.cs index f74d3fc1..25a248e0 100644 --- a/TabletopTweaks-Base/Bugfixes/Abilities/Spells.cs +++ b/TabletopTweaks-Base/Bugfixes/Abilities/Spells.cs @@ -93,6 +93,7 @@ static void Postfix() { PatchChainLightning(); PatchCommand(); PatchCommandGreater(); + PatchConeOfCold(); PatchCrusadersEdge(); PatchDeathWard(); PatchDispelMagicGreater(); @@ -842,7 +843,6 @@ static void PatchSuddenSquall() { static void PatchUnbreakableBond() { if (Main.TTTContext.Fixes.Spells.IsDisabled("UnbreakableBond")) { return; } - string path = @"C:\Users\spetrie\Documents\Exported"; var UnbreakableBond = BlueprintTools.GetBlueprint("947a929f3347d3e458a524424fbceccb"); var UnbreakableBondArea = BlueprintTools.GetBlueprint("9063d387e8d90a24f8bdd8c0c95f72f4"); var UnbreakableBondImmunityBuff = BlueprintTools.GetBlueprint("e60806180806b4c488f0d45af1035917"); @@ -875,7 +875,6 @@ static void PatchUnbreakableBond() { c.Actions.AddAction(embedded); } }); - BlueprintTools.TryExportBlueprint(bp, path); }); UnbreakableBondArea.TemporaryContext(bp => { bp.GetComponent().TemporaryContext(c => { @@ -887,7 +886,6 @@ static void PatchUnbreakableBond() { c.IfTrue.RemoveActions(a => a.Buff == UnbreakableBondImmunityBuff); c.IfFalse.RemoveActions(a => a.Buff == UnbreakableBondImmunityBuff); }); - BlueprintTools.TryExportBlueprint(bp, path); }); UnbreakableBondImmunityBuff.TemporaryContext(bp => { bp.AddComponent(c => { @@ -901,7 +899,6 @@ static void PatchUnbreakableBond() { c.m_CasterIgnoreImmunityFact = new BlueprintUnitFactReference(); }); - BlueprintTools.TryExportBlueprint(UnbreakableBondImmunityBuff, path); }); TTTContext.Logger.LogPatch(UnbreakableBondImmunityBuff); } @@ -1249,6 +1246,13 @@ static void PatchCommandGreater() { TTTContext.Logger.LogPatch(ability); }); } + static void PatchConeOfCold() { + if (Main.TTTContext.Fixes.Spells.IsDisabled("ConeOfCold")) { return; } + + var ConeOfCold = BlueprintTools.GetBlueprint("e7c530f8137630f4d9d7ee1aa7b1edc0"); + ConeOfCold.AddToSpellList(SpellTools.SpellList.WitchSpellList, 6); + TTTContext.Logger.LogPatch(ConeOfCold); + } static void PatchCrusadersEdge() { if (Main.TTTContext.Fixes.Spells.IsDisabled("CrusadersEdge")) { return; } diff --git a/TabletopTweaks-Base/Bugfixes/Features/Feats.cs b/TabletopTweaks-Base/Bugfixes/Features/Feats.cs index d8f43e30..8961fb17 100644 --- a/TabletopTweaks-Base/Bugfixes/Features/Feats.cs +++ b/TabletopTweaks-Base/Bugfixes/Features/Feats.cs @@ -907,9 +907,9 @@ public void OnEventDidTrigger(RulePrepareDamage evt) { private readonly UnitEntityData m_Unit; private readonly EntityFact m_Fact; - private int m_DamageMod; - private bool m_Mythic; - private bool m_Rowdy; + private readonly int m_DamageMod; + private readonly bool m_Mythic; + private readonly bool m_Rowdy; } } } diff --git a/TabletopTweaks-Base/Bugfixes/General/FeatSelections.cs b/TabletopTweaks-Base/Bugfixes/General/FeatSelections.cs index d1c26a4d..211587fd 100644 --- a/TabletopTweaks-Base/Bugfixes/General/FeatSelections.cs +++ b/TabletopTweaks-Base/Bugfixes/General/FeatSelections.cs @@ -23,7 +23,7 @@ static void FixFeatSelections() { TTTContext.Logger.LogHeader("Patching Feat Selections"); var allFeats = FeatTools.Selections.BasicFeatSelection.m_AllFeatures; - foreach (var feat in allFeats) { + foreach (var feat in allFeats.Where(f => f.Get() is not null)) { FeatTools.Selections.FeatSelections .Where(selection => feat.Get().HasGroup(selection.Group) || feat.Get().HasGroup(selection.Group2)) .ForEach(selection => selection.AddFeatures(feat)); diff --git a/TabletopTweaks-Base/Config/Fixes.json b/TabletopTweaks-Base/Config/Fixes.json index 7b1abb64..a8ecfaaa 100644 --- a/TabletopTweaks-Base/Config/Fixes.json +++ b/TabletopTweaks-Base/Config/Fixes.json @@ -1141,6 +1141,11 @@ "Homebrew": false, "Description": "Adds missing spell descriptors to match tabletop." }, + "ConeOfCold": { + "Enabled": true, + "Homebrew": false, + "Description": "Adds Cone of Cold to the Witch spell list." + }, "CorruptMagic": { "Enabled": true, "Homebrew": false, @@ -1363,7 +1368,7 @@ "DisableAll": false, "Settings": { "AnimalCompanionProgression": { - "Enabled": true, + "Enabled": false, "Homebrew": false, "Description": "Updates animal companion progressions to reflect tabletop values." } diff --git a/TabletopTweaks-Base/Info.json b/TabletopTweaks-Base/Info.json index 54f9fae9..b5aa3da2 100644 --- a/TabletopTweaks-Base/Info.json +++ b/TabletopTweaks-Base/Info.json @@ -10,5 +10,5 @@ "Repository": "https://raw.githubusercontent.com/Vek17/TabletopTweaks-Base/master/Repository.json", "Requirements": [ "TabletopTweaks-Core-0.5.3" ], "LoadAfter": [ "TabletopTweaks-Core" ], - "Version": "2.4.3" + "Version": "2.4.5" } \ No newline at end of file diff --git a/TabletopTweaks-Base/NewContent/Archetypes/MetamagicRager.cs b/TabletopTweaks-Base/NewContent/Archetypes/MetamagicRager.cs index d30ec87b..5620c3ca 100644 --- a/TabletopTweaks-Base/NewContent/Archetypes/MetamagicRager.cs +++ b/TabletopTweaks-Base/NewContent/Archetypes/MetamagicRager.cs @@ -92,7 +92,7 @@ public static void AddMetamagicRager() { private static BlueprintBuff CreateMetamagicBuff(string name, BlueprintFeature metamagicFeat, int level, Action init = null) { var result = Helpers.CreateBlueprint(TTTContext, name, bp => { bp.m_Icon = metamagicFeat.Icon; - bp.AddComponent(Helpers.Create(c => { + bp.AddComponent(c => { c.m_Spellbooks = new BlueprintSpellbookReference[] { BloodragerSpellbook.ToReference() }; c.m_Ability = new BlueprintAbilityReference(); c.Action = new ActionList() { @@ -102,14 +102,14 @@ private static BlueprintBuff CreateMetamagicBuff(string name, BlueprintFeature m }; c.AfterCast = true; c.FromSpellbook = true; - })); - bp.AddComponent(Helpers.Create(c => { + }); + bp.AddComponent(c => { c.m_Spellbook = BloodragerSpellbook.ToReference(); c.Metamagic = metamagicFeat.GetComponent().Metamagic; c.School = SpellSchool.None; c.MaxSpellLevel = level; c.CheckSpellbook = true; - })); + }); }); init?.Invoke(result); return result; @@ -124,7 +124,7 @@ private static BlueprintAbility CreateMetamagicAbility(string name, BlueprintBuf bp.LocalizedDuration = new LocalizedString(); bp.LocalizedSavingThrow = new LocalizedString(); bp.m_Icon = metamagicFeat.Icon; - bp.AddComponent(Helpers.Create(c => { + bp.AddComponent(c => { c.Actions = new ActionList() { Actions = new GameAction[] { Helpers.Create(a => { @@ -141,18 +141,18 @@ private static BlueprintAbility CreateMetamagicAbility(string name, BlueprintBuf } }; - })); - bp.AddComponent(Helpers.Create(c => { + }); + bp.AddComponent(c => { c.m_RequiredResource = BloodragerRageResource.ToReference(); c.m_IsSpendResource = true; c.Amount = buff.GetComponent().MaxSpellLevel * 2 + cost; - })); - bp.AddComponent(Helpers.Create(c => { + }); + bp.AddComponent(c => { c.m_UnitFact = metamagicFeat.ToReference(); - })); - bp.AddComponent(Helpers.Create(c => { + }); + bp.AddComponent(c => { c.m_Facts = blockedBuffs; - })); + }); }); init?.Invoke(result); return result; @@ -265,7 +265,7 @@ private static BlueprintAbility CreateMetaRageLevel(int level) { bp.LocalizedDuration = new LocalizedString(); bp.LocalizedSavingThrow = new LocalizedString(); bp.m_Icon = AssetLoader.LoadInternal(TTTContext, folder: "Abilities", file: $"Icon_MetaRage{level}.png"); - bp.AddComponent(Helpers.Create(c => { + bp.AddComponent(c => { c.m_Variants = new BlueprintAbilityReference[] { MetaRageEmpowerAbility.ToReference(), MetaRageExtendAbility.ToReference(), @@ -276,11 +276,11 @@ private static BlueprintAbility CreateMetaRageLevel(int level) { MetaRageSelectiveAbility.ToReference(), MetaRageBolsteredAbility.ToReference() }; - })); - bp.AddComponent(Helpers.Create(c => { + }); + bp.AddComponent(c => { c.Class = BloodragerClass.ToReference(); c.Level = level; - })); + }); }); return MetaRageBaseAbility; diff --git a/TabletopTweaks-Base/NewContent/Classes/Cavalier.cs b/TabletopTweaks-Base/NewContent/Classes/Cavalier.cs index 1b8afb0d..6c3ef344 100644 --- a/TabletopTweaks-Base/NewContent/Classes/Cavalier.cs +++ b/TabletopTweaks-Base/NewContent/Classes/Cavalier.cs @@ -23,10 +23,10 @@ public static void AddCavalierFeatures() { bp.SetDescription(TTTContext, "A cavalier does not take an armor check penalty on Mobility checks while riding his mount."); bp.IsClassFeature = true; bp.m_Flags = BlueprintBuff.Flags.HiddenInUi; - bp.AddComponent(Helpers.Create(c => { + bp.AddComponent(c => { c.Descriptor = ModifierDescriptor.UntypedStackable; c.Stat = StatType.SkillMobility; - })); + }); }); var CavalierMobilityFeature = Helpers.CreateBlueprint(TTTContext, "CavalierMobilityFeature", bp => { @@ -34,10 +34,10 @@ public static void AddCavalierFeatures() { bp.SetDescription(TTTContext, "A cavalier does not take an armor check penalty on Mobility checks while riding his mount."); bp.IsClassFeature = true; bp.Ranks = 1; - bp.AddComponent(Helpers.Create(c => { + bp.AddComponent(c => { c.m_CheckedBuff = MountedBuff.ToReference(); c.m_ExtraEffectBuff = CavalierMobilityBuff.ToReference(); - })); + }); }); var CavalierMountFeatureWolf = Helpers.CreateBlueprint(TTTContext, "CavalierMountFeatureWolf", bp => { diff --git a/TabletopTweaks-Base/NewContent/Feats/MetamagicFeats/ElementalSpell.cs b/TabletopTweaks-Base/NewContent/Feats/MetamagicFeats/ElementalSpell.cs index 4187d610..63319ae0 100644 --- a/TabletopTweaks-Base/NewContent/Feats/MetamagicFeats/ElementalSpell.cs +++ b/TabletopTweaks-Base/NewContent/Feats/MetamagicFeats/ElementalSpell.cs @@ -346,7 +346,7 @@ private class ElementalSpellMechanics : IAfterRulebookEventTriggerHandler