From e18115dd94b5904d30494a6b1a74b1e7c18c2771 Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Mon, 2 Oct 2023 22:24:16 -0700 Subject: [PATCH] fix: Fixes extension method refactors causing crash (#1529) --- .../Engines/CannedEvil/ChampionTitleSystem.cs | 12 ++++++++++-- .../Player Murder System/PlayerMurderSystem.cs | 17 +++++++++++++++-- .../UOContent/Engines/Virtues/VirtueSystem.cs | 7 ++++++- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/Projects/UOContent/Engines/CannedEvil/ChampionTitleSystem.cs b/Projects/UOContent/Engines/CannedEvil/ChampionTitleSystem.cs index 13e7afd80..862eda85d 100644 --- a/Projects/UOContent/Engines/CannedEvil/ChampionTitleSystem.cs +++ b/Projects/UOContent/Engines/CannedEvil/ChampionTitleSystem.cs @@ -65,8 +65,16 @@ public class ChampionTitleSystem : GenericPersistence } } - public static bool GetChampionTitleContext(PlayerMobile player, out ChampionTitleContext context) => - _championTitleContexts.TryGetValue(player, out context); + public static bool GetChampionTitleContext(PlayerMobile player, out ChampionTitleContext context) + { + if (player != null && _championTitleContexts.TryGetValue(player, out context)) + { + return true; + } + + context = null; + return false; + } public static ChampionTitleContext GetOrCreateChampionTitleContext(PlayerMobile player) { diff --git a/Projects/UOContent/Engines/Player Murder System/PlayerMurderSystem.cs b/Projects/UOContent/Engines/Player Murder System/PlayerMurderSystem.cs index 349d98e4d..a6d0a4ceb 100644 --- a/Projects/UOContent/Engines/Player Murder System/PlayerMurderSystem.cs +++ b/Projects/UOContent/Engines/Player Murder System/PlayerMurderSystem.cs @@ -132,11 +132,24 @@ public class PlayerMurderSystem : GenericPersistence } } - public static bool GetMurderContext(PlayerMobile player, out MurderContext context) => - _murderContexts.TryGetValue(player, out context); + public static bool GetMurderContext(PlayerMobile player, out MurderContext context) + { + if (player != null && _murderContexts.TryGetValue(player, out context)) + { + return true; + } + + context = null; + return false; + } public static MurderContext GetOrCreateMurderContext(PlayerMobile player) { + if (player == null) + { + return null; + } + ref var context = ref CollectionsMarshal.GetValueRefOrAddDefault(_murderContexts, player, out var exists); if (!exists) { diff --git a/Projects/UOContent/Engines/Virtues/VirtueSystem.cs b/Projects/UOContent/Engines/Virtues/VirtueSystem.cs index 6ea36c3d9..b42020703 100644 --- a/Projects/UOContent/Engines/Virtues/VirtueSystem.cs +++ b/Projects/UOContent/Engines/Virtues/VirtueSystem.cs @@ -106,10 +106,15 @@ public class VirtueSystem : GenericPersistence } public static VirtueContext GetVirtues(PlayerMobile from) => - _playerVirtues.TryGetValue(from, out var context) ? context : null; + from != null && _playerVirtues.TryGetValue(from, out var context) ? context : null; public static VirtueContext GetOrCreateVirtues(PlayerMobile from) { + if (from == null) + { + return null; + } + ref VirtueContext context = ref CollectionsMarshal.GetValueRefOrAddDefault(_playerVirtues, from, out bool exists); if (!exists) {