From 5e9b88a9a9ddf510ee2e7a95861988a1fb3e54ca Mon Sep 17 00:00:00 2001 From: Axel Cocat Date: Thu, 23 Mar 2023 22:56:48 +0100 Subject: [PATCH] feat(Core/Mail): call CanSendMail() when returning to sender (#15553) --- src/server/game/Handlers/MailHandler.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index d09c1d816..626991967 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -415,6 +415,25 @@ void WorldSession::HandleMailReturnToSender(WorldPacket& recvData) player->SendMailResult(mailId, MAIL_RETURNED_TO_SENDER, MAIL_ERR_INTERNAL_ERROR); return; } + + if (m->HasItems()) + { + for (MailItemInfoVec::iterator itr = m->items.begin(); itr != m->items.end(); ++itr) + { + Item* item = player->GetMItem(itr->item_guid); + if (item && !sScriptMgr->CanSendMail(player, ObjectGuid(HighGuid::Player, m->sender), mailbox, m->subject, m->body, m->money, m->COD, item)) + { + player->SendMailResult(mailId, MAIL_RETURNED_TO_SENDER, MAIL_ERR_INTERNAL_ERROR); + return; + } + } + } + else if (!sScriptMgr->CanSendMail(player, ObjectGuid(HighGuid::Player, m->sender), mailbox, m->subject, m->body, m->money, m->COD, nullptr)) + { + player->SendMailResult(mailId, MAIL_RETURNED_TO_SENDER, MAIL_ERR_INTERNAL_ERROR); + return; + } + //we can return mail now //so firstly delete the old one CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();