From 0f6dccd98cb10dffb22f43366679ff03431c4973 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Fri, 6 Aug 2021 16:26:49 +0200 Subject: [PATCH] fix(Core/Items): destroy invalid own guild/arena charters (#7211) - Closes #6642 --- src/server/game/Petitions/PetitionMgr.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/server/game/Petitions/PetitionMgr.cpp b/src/server/game/Petitions/PetitionMgr.cpp index ad1b98f3d..fc721086b 100644 --- a/src/server/game/Petitions/PetitionMgr.cpp +++ b/src/server/game/Petitions/PetitionMgr.cpp @@ -5,6 +5,7 @@ #include "DatabaseEnv.h" #include "Log.h" #include "PetitionMgr.h" +#include "Player.h" #include "QueryResult.h" #include "Timer.h" @@ -99,6 +100,18 @@ void PetitionMgr::RemovePetitionByOwnerAndType(ObjectGuid ownerGuid, uint8 type) { if (itr->second.ownerGuid == ownerGuid && (!type || type == itr->second.petitionType)) { + // Remove invalid charter item + if (type == itr->second.petitionType) + { + if (Player* owner = ObjectAccessor::FindConnectedPlayer(ownerGuid)) + { + if (Item* item = owner->GetItemByGuid(itr->first)) + { + owner->DestroyItem(item->GetBagSlot(), item->GetSlot(), true); + } + } + } + // remove signatures SignatureStore.erase(itr->first); PetitionStore.erase(itr++);