From 0b452f4ec1546ff8ba2a20e55301c7a488995240 Mon Sep 17 00:00:00 2001 From: Chris Miles Date: Sun, 29 Oct 2023 18:45:24 -0500 Subject: [PATCH] [Crash] Fix spell in AESpell related to beacons (#3659) --- zone/entity.cpp | 10 ++++++++++ zone/entity.h | 1 + zone/mob.cpp | 1 + 3 files changed, 12 insertions(+) diff --git a/zone/entity.cpp b/zone/entity.cpp index c4e82a4e8..9d5e6ee17 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -5850,3 +5850,13 @@ void EntityList::DamageArea( } } } + +void EntityList::RemoveFromBeacons(Mob *p_mob) +{ + for (auto it = beacon_list.begin(); it != beacon_list.end(); ++it) { + if (it->second == p_mob) { + beacon_list.erase(it); + break; + } + } +} diff --git a/zone/entity.h b/zone/entity.h index 27c749efb..919380bde 100644 --- a/zone/entity.h +++ b/zone/entity.h @@ -407,6 +407,7 @@ public: void RemoveFromTargetsFadingMemories(Mob* spell_target, bool RemoveFromXTargets = false, uint32 max_level = 0); void RemoveFromXTargets(Mob* mob); void RemoveFromAutoXTargets(Mob* mob); + void RemoveFromBeacons(Mob *p_mob); void ReplaceWithTarget(Mob* pOldMob, Mob*pNewTarget); void QueueCloseClients(Mob* sender, const EQApplicationPacket* app, bool ignore_sender=false, float distance=200, Mob* skipped_mob = 0, bool is_ack_required = true, eqFilterType filter=FilterNone); void QueueClients(Mob* sender, const EQApplicationPacket* app, bool ignore_sender=false, bool ackreq = true); diff --git a/zone/mob.cpp b/zone/mob.cpp index c85354e8b..7d6ac456f 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -560,6 +560,7 @@ Mob::~Mob() entity_list.RemoveMobFromCloseLists(this); entity_list.RemoveAuraFromMobs(this); + entity_list.RemoveFromBeacons(this); close_mobs.clear();