aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/MailHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2014-06-18 00:19:00 +0200
committerShauren <shauren.trinity@gmail.com>2014-06-18 00:19:00 +0200
commit41daea5b4eef1f91b1cc5cbc37b335677d440b8b (patch)
treed7b11d8a413698f834d959ea3545b14cc376fd16 /src/server/game/Handlers/MailHandler.cpp
parent6e35288d5cc72c8607588c0531c14f456dd55a4d (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.cpp11
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))