Skip to content

Commit

Permalink
(***ADDB***) Rewrite the Psychic Phenomena customizer since it seems …
Browse files Browse the repository at this point in the history
…like it might've caused crashes for some people.
  • Loading branch information
xADDBx committed Nov 5, 2024
1 parent f0d846c commit 66bc4f2
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 15 deletions.
30 changes: 24 additions & 6 deletions ToyBox/Classes/MainUI/RogueCheats.cs
Original file line number Diff line number Diff line change
Expand Up @@ -182,9 +182,15 @@ public static void OnGUI() {
Space(50);
Label(desc.Green(), Width(400));
if (Settings.excludedRandomPhenomena.Contains(internalName)) {
ActionButton("Allow".localize(), () => Settings.excludedRandomPhenomena.Remove(internalName), AutoWidth());
ActionButton("Allow".localize(), () => {
Settings.excludedRandomPhenomena.Remove(internalName);
Misc.InvalidateFilteredWarpPhenomenaArrays();
}, AutoWidth());
} else {
ActionButton("Disable".localize(), () => Settings.excludedRandomPhenomena.Add(internalName), AutoWidth());
ActionButton("Disable".localize(), () => {
Settings.excludedRandomPhenomena.Add(internalName);
Misc.InvalidateFilteredWarpPhenomenaArrays();
}, AutoWidth());
}
}
ReflectionTreeView.DetailToggle("", psychicphenomena, psychicphenomena, 0);
Expand All @@ -199,9 +205,15 @@ public static void OnGUI() {
using (HorizontalScope()) {
Label(BlueprintExtensions.GetSearchKey(minorPeril.Get(), true).Cyan(), Width(650));
if (Settings.excludedPerilsMinor.Contains(minorPeril.guid)) {
ActionButton("Allow".localize(), () => Settings.excludedPerilsMinor.Remove(minorPeril.guid), AutoWidth());
ActionButton("Allow".localize(), () => {
Settings.excludedPerilsMinor.Remove(minorPeril.guid);
Misc.InvalidateFilteredWarpPhenomenaArrays();
}, AutoWidth());
} else {
ActionButton("Disable".localize(), () => Settings.excludedPerilsMinor.Add(minorPeril.guid), AutoWidth());
ActionButton("Disable".localize(), () => {
Settings.excludedPerilsMinor.Add(minorPeril.guid);
Misc.InvalidateFilteredWarpPhenomenaArrays();
}, AutoWidth());
}
}
ReflectionTreeView.DetailToggle("", minorPeril, minorPeril, 0);
Expand All @@ -216,9 +228,15 @@ public static void OnGUI() {
using (HorizontalScope()) {
Label(BlueprintExtensions.GetSearchKey(majorPeril.Get(), true).Cyan(), Width(650));
if (Settings.excludedPerilsMajor.Contains(majorPeril.guid)) {
ActionButton("Allow".localize(), () => Settings.excludedPerilsMajor.Remove(majorPeril.guid), AutoWidth());
ActionButton("Allow".localize(), () => {
Settings.excludedPerilsMajor.Remove(majorPeril.guid);
Misc.InvalidateFilteredWarpPhenomenaArrays();
}, AutoWidth());
} else {
ActionButton("Disable".localize(), () => Settings.excludedPerilsMajor.Add(majorPeril.guid), AutoWidth());
ActionButton("Disable".localize(), () => {
Settings.excludedPerilsMajor.Add(majorPeril.guid);
Misc.InvalidateFilteredWarpPhenomenaArrays();
}, AutoWidth());
}
}
ReflectionTreeView.DetailToggle("", majorPeril, majorPeril, 0);
Expand Down
51 changes: 42 additions & 9 deletions ToyBox/Classes/MonkeyPatchin/BagOfPatches/MiscRT.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,15 @@ namespace ToyBox.BagOfPatches {
internal static partial class Misc {
public static Settings Settings = Main.Settings;
public static Player player = Game.Instance.Player;
private static BlueprintPsychicPhenomenaRoot.PsychicPhenomenaData[] _psychicPhenomenasFiltered = null;
private static BlueprintAbilityReference[] _minorPerilsFiltered = null;
private static BlueprintAbilityReference[] _majorPerilsFiltered = null;
public static void InvalidateFilteredWarpPhenomenaArrays() {
_psychicPhenomenasFiltered = null;
_minorPerilsFiltered = null;
_majorPerilsFiltered = null;

}
[HarmonyPatch(typeof(RuleCalculatePsychicPhenomenaEffect))]
public static class RuleCalculatePsychicPhenomenaEffect_Patch {
[HarmonyPatch(nameof(RuleCalculatePsychicPhenomenaEffect.OnTrigger))]
Expand Down Expand Up @@ -87,19 +96,43 @@ public static IEnumerable<CodeInstruction> RuleCalculatePsychicPhenomenaEffect_O
}
}
public static BlueprintPsychicPhenomenaRoot.PsychicPhenomenaData[] GetPsychicPhenomenaFiltered() {
var newArr = AccessTools.MakeDeepCopy<BlueprintPsychicPhenomenaRoot.PsychicPhenomenaData[]>(BlueprintRoot.Instance.WarhammerRoot.PsychicPhenomenaRoot.PsychicPhenomena);
newArr.RemoveAll(i => Settings.excludedRandomPhenomena.Contains(i.Bark.Entries[0].Text.name));
return newArr;
if (_psychicPhenomenasFiltered == null) {
BlueprintPsychicPhenomenaRoot.PsychicPhenomenaData[] newArr = null;
try {
newArr = BlueprintRoot.Instance.WarhammerRoot.PsychicPhenomenaRoot.PsychicPhenomena.Clone() as BlueprintPsychicPhenomenaRoot.PsychicPhenomenaData[];
newArr.RemoveAll(i => Settings.excludedRandomPhenomena.Contains(i.Bark.Entries[0].Text.name));
} catch (Exception ex) {
Mod.Error(ex);
}
_psychicPhenomenasFiltered = newArr ?? [];
}
return _psychicPhenomenasFiltered;
}
public static BlueprintAbilityReference[] GetMinorPerilsFiltered() {
var newArr = AccessTools.MakeDeepCopy<BlueprintAbilityReference[]>(BlueprintRoot.Instance.WarhammerRoot.PsychicPhenomenaRoot.PerilsOfTheWarpMinor);
newArr.RemoveAll(i => Settings.excludedPerilsMinor.Contains(i.guid));
return newArr;
if (_minorPerilsFiltered == null) {
BlueprintAbilityReference[] newArr = null;
try {
newArr = BlueprintRoot.Instance.WarhammerRoot.PsychicPhenomenaRoot.PerilsOfTheWarpMinor.Clone() as BlueprintAbilityReference[];
newArr.RemoveAll(i => Settings.excludedPerilsMinor.Contains(i.guid));
} catch (Exception ex) {
Mod.Error(ex);
}
_minorPerilsFiltered = newArr ?? [];
}
return _minorPerilsFiltered;
}
public static BlueprintAbilityReference[] GetMajorPerilsFiltered() {
var newArr = AccessTools.MakeDeepCopy<BlueprintAbilityReference[]>(BlueprintRoot.Instance.WarhammerRoot.PsychicPhenomenaRoot.PerilsOfTheWarpMajor);
newArr.RemoveAll(i => Settings.excludedPerilsMajor.Contains(i.guid));
return newArr;
if (_majorPerilsFiltered == null) {
BlueprintAbilityReference[] newArr = null;
try {
newArr = BlueprintRoot.Instance.WarhammerRoot.PsychicPhenomenaRoot.PerilsOfTheWarpMajor.Clone() as BlueprintAbilityReference[];
newArr.RemoveAll(i => Settings.excludedPerilsMajor.Contains(i.guid));
} catch (Exception ex) {
Mod.Error(ex);
}
_majorPerilsFiltered = newArr ?? [];
}
return _majorPerilsFiltered;
}
// Disables the lockout for reporting achievements
[HarmonyPatch(typeof(AchievementEntity), nameof(AchievementEntity.IsDisabled), MethodType.Getter)]
Expand Down

0 comments on commit 66bc4f2

Please sign in to comment.