From 8dd17c39d84df50986dfd25d3cd64001d8e4db4e Mon Sep 17 00:00:00 2001 From: TommyXL <104814436+Tommy-XL@users.noreply.github.com> Date: Sun, 12 Apr 2026 14:26:45 +0800 Subject: [PATCH] Add null check (#567) * Add null check in GameSettingMenu * Add more --- Modules/GuessManager.cs | 8 ++++---- Patches/AprilFoolsPatch.cs | 30 +++++++++++++++++------------- Patches/GameOptionsMenuPatch.cs | 6 ++++-- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/Modules/GuessManager.cs b/Modules/GuessManager.cs index 75ec1165b..20f76c237 100644 --- a/Modules/GuessManager.cs +++ b/Modules/GuessManager.cs @@ -1199,27 +1199,27 @@ public static class GuessManager [SuppressMessage("ReSharper", "UnusedMember.Local")] public static void Postfix() { - Object.Destroy(TextTemplate.gameObject); + if (TextTemplate) Object.Destroy(TextTemplate.gameObject); if (GuesserUI) Object.Destroy(GuesserUI); foreach (List roleButtonsValue in RoleButtons.Values) { foreach (Transform transform in roleButtonsValue) { - if (transform.gameObject) + if (transform?.gameObject) Object.Destroy(transform.gameObject); } } foreach (SpriteRenderer spriteRenderer in RoleSelectButtons.Values) { - if (spriteRenderer.gameObject) + if (spriteRenderer?.gameObject) Object.Destroy(spriteRenderer.gameObject); } foreach (SpriteRenderer spriteRenderer in PageButtons) { - if (spriteRenderer.gameObject) + if (spriteRenderer?.gameObject) Object.Destroy(spriteRenderer.gameObject); } diff --git a/Patches/AprilFoolsPatch.cs b/Patches/AprilFoolsPatch.cs index 054c23b09..d82a3743c 100644 --- a/Patches/AprilFoolsPatch.cs +++ b/Patches/AprilFoolsPatch.cs @@ -18,21 +18,25 @@ public static class GetNormalBodyTypePatch { public static void Postfix(ref PlayerBodyTypes __result) { - if (Main.HorseMode.Value || AprilFoolsMode.ShouldHorseAround()) + try { - __result = PlayerBodyTypes.Horse; - return; - } - if (Main.LongMode.Value || AprilFoolsMode.ShouldLongAround()) - { - __result = PlayerBodyTypes.Long; - return; - } - if (Main.ClassicMode.Value || AprilFoolsMode.ShouldClassicMode()) - { - __result = PlayerBodyTypes.Classic; - return; + if (Main.HorseMode.Value || AprilFoolsMode.ShouldHorseAround()) + { + __result = PlayerBodyTypes.Horse; + return; + } + if (Main.LongMode.Value || AprilFoolsMode.ShouldLongAround()) + { + __result = PlayerBodyTypes.Long; + return; + } + if (Main.ClassicMode.Value || AprilFoolsMode.ShouldClassicMode()) + { + __result = PlayerBodyTypes.Classic; + return; + } } + catch { } } } diff --git a/Patches/GameOptionsMenuPatch.cs b/Patches/GameOptionsMenuPatch.cs index 4392cd73e..5de1381c0 100644 --- a/Patches/GameOptionsMenuPatch.cs +++ b/Patches/GameOptionsMenuPatch.cs @@ -1594,10 +1594,12 @@ public static class GameSettingMenuPatch DestroySetting(); ModGameOptionsMenu.DestroyOption(); - foreach (var opt in __instance.GameSettingsTab.Children) + if (__instance.GameSettingsTab && __instance.GameSettingsTab.Children != null) { - if (opt) + foreach (var opt in __instance.GameSettingsTab.Children) { + if (!opt) continue; + if (opt.TryGetComponent(out var btn)) btn.OnClick.RemoveAllListeners();