feat: Converts player deletion handling to a generated event (#2029)

This commit is contained in:
Kamron Batman 2024-12-21 20:55:10 -08:00 committed by GitHub
parent 059f008b48
commit 2bff1d2cbc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 32 additions and 17 deletions

View file

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using ModernUO.CodeGeneratedEvents;
using Server.Collections;
using Server.Mobiles;
@ -25,6 +26,7 @@ public class ChampionTitleSystem : GenericPersistence
_championTitleTimer.Start();
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
public static void OnPlayerDeleted(Mobile m)
{
if (m is PlayerMobile pm)

View file

@ -620,6 +620,7 @@ namespace Server.Engines.MLQuests
context?.HandleDeath();
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
public static void HandleDeletion(PlayerMobile pm)
{
var context = GetContext(pm);

View file

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using ModernUO.CodeGeneratedEvents;
using Server.Collections;
using Server.Logging;
using Server.Mobiles;
@ -41,6 +42,7 @@ public class PlayerMurderSystem : GenericPersistence
EventSink.Disconnected += OnDisconnected;
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
public static void OnPlayerDeleted(Mobile m)
{
if (m is PlayerMobile pm && _murderContexts.Remove(pm, out var context))

View file

@ -1,5 +1,6 @@
using System;
using System.Runtime.CompilerServices;
using ModernUO.CodeGeneratedEvents;
using Server.Gumps;
using Server.Mobiles;
using Server.Network;
@ -84,6 +85,7 @@ public class JusticeVirtue
VirtueGump.Register(109, OnVirtueUsed);
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
public static void OnPlayerDeleted(Mobile m)
{
if (m is PlayerMobile pm)

View file

@ -70,6 +70,7 @@ public class DisguisePersistence : GenericPersistence
t.Stop();
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
[OnEvent(nameof(PlayerMobile.PlayerDeathEvent))]
public static void RemoveTimer(Mobile m)
{

View file

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ModernUO.CodeGeneratedEvents;
using Server.Collections;
using Server.Logging;
using Server.Mobiles;
@ -75,6 +76,7 @@ public static class StaminaSystem
}
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
public static void OnPlayerDeleted(Mobile m)
{
RemoveEntry(m as IHasSteps);

View file

@ -3357,23 +3357,7 @@ namespace Server.Mobiles
var faction = Faction.Find(this);
faction?.RemoveMember(this);
MLQuestSystem.HandleDeletion(this);
BaseHouse.HandleDeletion(this);
DisguisePersistence.RemoveTimer(this);
StaminaSystem.OnPlayerDeleted(this);
JusticeVirtue.OnPlayerDeleted(this);
PlayerMurderSystem.OnPlayerDeleted(this);
ChampionTitleSystem.OnPlayerDeleted(this);
// Spells
MagicReflectSpell.EndReflect(this);
ReactiveArmorSpell.EndArmor(this);
ProtectionSpell.EndProtection(this);
StoneFormSpell.RemoveEffects(this);
AnimateDeadSpell.RemoveEffects(this);
SummonFamiliarSpell.RemoveEffects(this);
AnimalForm.RemoveLastAnimalForm(this);
PlayerDeletedEvent(this);
}
public override void GetProperties(IPropertyList list)
@ -4142,6 +4126,9 @@ namespace Server.Mobiles
{
}
[GeneratedEvent(nameof(PlayerDeletedEvent))]
public static partial void PlayerDeletedEvent(PlayerMobile pm);
public override void OnDelete()
{
ReceivedHonorContext?.Cancel();

View file

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using ModernUO.CodeGeneratedEvents;
using Server.Accounting;
using Server.Collections;
using Server.ContextMenus;
@ -3260,6 +3261,7 @@ namespace Server.Multis
}
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
public static void HandleDeletion(Mobile mob)
{
var houses = GetHouses(mob);

View file

@ -1,4 +1,6 @@
using System.Collections.Generic;
using ModernUO.CodeGeneratedEvents;
using Server.Mobiles;
namespace Server.Spells.Fifth
{
@ -132,6 +134,7 @@ namespace Server.Spells.Fifth
FinishSequence();
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
public static void EndReflect(Mobile m)
{
if (!_table.Remove(m, out var mods))

View file

@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using ModernUO.CodeGeneratedEvents;
using Server.Mobiles;
namespace Server.Spells.First
{
@ -142,6 +144,7 @@ namespace Server.Spells.First
}
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
public static void EndArmor(Mobile m)
{
if (!_table.Remove(m, out var mods))

View file

@ -134,6 +134,7 @@ namespace Server.Spells.Mysticism
FinishSequence();
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
[OnEvent(nameof(PlayerMobile.PlayerDeathEvent))]
public static void RemoveEffects(Mobile m)
{

View file

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using ModernUO.CodeGeneratedEvents;
using Server.Engines.Quests;
using Server.Engines.Quests.Necro;
using Server.Items;
@ -194,6 +195,7 @@ public class AnimateDeadSpell : NecromancerSpell, ITargetingSpell<Item>
Caster.SendLocalizedMessage(1061083); // Animate what corpse?
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
public static void RemoveEffects(Mobile caster)
{
if (_table.Remove(caster, out var list))

View file

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using ModernUO.CodeGeneratedEvents;
using Server.Gumps;
using Server.Mobiles;
using Server.Network;
@ -38,6 +39,7 @@ public class SummonFamiliarSpell : NecromancerSpell
new(typeof(VampireBatFamiliar), 1060144, 100.0, 100.0) // Vampire Bat
};
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
public static void RemoveEffects(Mobile m)
{
if (Table.Remove(m, out var summon))

View file

@ -255,6 +255,7 @@ public class AnimalForm : NinjaSpell
}
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
[OnEvent(nameof(PlayerMobile.PlayerDeathEvent))]
public static void RemoveContext(Mobile m)
{
@ -303,6 +304,7 @@ public class AnimalForm : NinjaSpell
public static bool UnderTransformation(Mobile m, Type type) => GetContext(m)?.Type == type;
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
public static void RemoveLastAnimalForm(Mobile m) => _table.Remove(m);
public class AnimalFormEntry

View file

@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using ModernUO.CodeGeneratedEvents;
using Server.Mobiles;
namespace Server.Spells.Second
{
@ -93,6 +95,7 @@ namespace Server.Spells.Second
}
}
[OnEvent(nameof(PlayerMobile.PlayerDeletedEvent))]
public static void EndProtection(Mobile m)
{
if (!_table.Remove(m, out var mods))