diff options
author | Shauren <shauren.trinity@gmail.com> | 2014-06-18 00:19:00 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2014-06-18 00:19:00 +0200 |
commit | 41daea5b4eef1f91b1cc5cbc37b335677d440b8b (patch) | |
tree | d7b11d8a413698f834d959ea3545b14cc376fd16 /src/server/game/Handlers/MailHandler.cpp | |
parent | 6e35288d5cc72c8607588c0531c14f456dd55a4d (diff) |
Core/Mail: Implemented sending battle.net account bound items
Diffstat (limited to 'src/server/game/Handlers/MailHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/MailHandler.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index e65643e7ffe..536d6a7dc95 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -28,6 +28,7 @@ #include "DBCStores.h" #include "Item.h" #include "AccountMgr.h" +#include "BattlenetAccountMgr.h" #include "GuildMgr.h" bool WorldSession::CanOpenMailBox(uint64 guid) @@ -192,6 +193,7 @@ void WorldSession::HandleSendMail(WorldPacket& recvData) uint8 mailsCount = 0; //do not allow to send to one player more than 100 mails uint8 receiverLevel = 0; uint32 receiverAccountId = 0; + uint32 receiverBnetAccountId = 0; if (receiver) { @@ -199,6 +201,7 @@ void WorldSession::HandleSendMail(WorldPacket& recvData) mailsCount = receiver->GetMailSize(); receiverLevel = receiver->getLevel(); receiverAccountId = receiver->GetSession()->GetAccountId(); + receiverBnetAccountId = receiver->GetSession()->GetBattlenetAccountId(); } else { @@ -225,6 +228,7 @@ void WorldSession::HandleSendMail(WorldPacket& recvData) } receiverAccountId = sObjectMgr->GetPlayerAccountIdByGUID(receiverGuid); + receiverBnetAccountId = Battlenet::AccountMgr::GetIdByGameAccount(receiverAccountId); } // do not allow to have more than 100 mails in mailbox.. mails count is in opcode uint8!!! - so max can be 255.. @@ -288,8 +292,11 @@ void WorldSession::HandleSendMail(WorldPacket& recvData) if (item->IsBoundAccountWide() && item->IsSoulBound() && player->GetSession()->GetAccountId() != receiverAccountId) { - player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_NOT_SAME_ACCOUNT); - return; + if (!item->IsBattlenetAccountBound() || !player->GetSession()->GetBattlenetAccountId() || player->GetSession()->GetBattlenetAccountId() != receiverBnetAccountId) + { + player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_NOT_SAME_ACCOUNT); + return; + } } if (item->GetTemplate()->Flags & ITEM_PROTO_FLAG_CONJURED || item->GetUInt32Value(ITEM_FIELD_DURATION)) |