From 0f2f86171a1ff82a8109360bad21e16902f78211 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Fri, 17 Mar 2023 15:15:58 +0100 Subject: [PATCH] fix(Core/Mail): Reorder mail attachment checks (#15418) * The check never hits as CanBeTraded() checks for empty bag too and we need to check it before as it uses a different error * Cherry-pick : https://github.com/TrinityCore/TrinityCore/commit/9658d15b0c4189962e7600c34b70f9ceed2b3abe Co-authored-by: Anton Popovichenko --- src/server/game/Handlers/MailHandler.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index a2217dbfd..d09c1d816 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -237,6 +237,13 @@ void WorldSession::HandleSendMail(WorldPacket& recvData) return; } + // handle empty bag before CanBeTraded, since that func already has that check + if (item->IsNotEmptyBag()) + { + player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS); + return; + } + if (!item->CanBeTraded(true)) { player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_MAIL_BOUND_ITEM); @@ -261,12 +268,6 @@ void WorldSession::HandleSendMail(WorldPacket& recvData) return; } - if (item->IsNotEmptyBag()) - { - player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS); - return; - } - if (!sScriptMgr->CanSendMail(player, receiverGuid, mailbox, subject, body, money, COD, item)) { player->SendMailResult(0, MAIL_SEND, MAIL_ERR_INTERNAL_ERROR);