From 49fd5f210d539c637292d0ddc388a121422d6f1a Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Sun, 2 Mar 2025 17:50:18 -0800 Subject: [PATCH] fix: Fixes removing virtue when player is deleted (#2135) --- Projects/UOContent/Engines/Virtues/VirtueSystem.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Projects/UOContent/Engines/Virtues/VirtueSystem.cs b/Projects/UOContent/Engines/Virtues/VirtueSystem.cs index b42020703..737770dc0 100644 --- a/Projects/UOContent/Engines/Virtues/VirtueSystem.cs +++ b/Projects/UOContent/Engines/Virtues/VirtueSystem.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Runtime.InteropServices; +using ModernUO.CodeGeneratedEvents; using Server.Collections; using Server.Logging; using Server.Mobiles; @@ -75,6 +76,9 @@ public class VirtueSystem : GenericPersistence } } + [OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))] + public static void OnPlayerDeleted(PlayerMobile pm) => _playerVirtues.Remove(pm); + public override void Serialize(IGenericWriter writer) { writer.WriteEncodedInt(0); // version @@ -98,7 +102,7 @@ public class VirtueSystem : GenericPersistence var virtues = new VirtueContext(); virtues.Deserialize(reader); - if (virtues.IsUsed()) + if (player != null && virtues.IsUsed()) { _playerVirtues.Add(player, virtues); }