diff --git a/src/game/ItemHandler.cpp b/src/game/ItemHandler.cpp index ee099ee8b..2af6113e8 100644 --- a/src/game/ItemHandler.cpp +++ b/src/game/ItemHandler.cpp @@ -844,17 +844,30 @@ void WorldSession::HandleBuyBankSlotOpcode(WorldPacket& recvPacket) BankBagSlotPricesEntry const* slotEntry = sBankBagSlotPricesStore.LookupEntry(slot); + WorldPacket data(SMSG_BUY_BANK_SLOT_RESULT, 4); + if(!slotEntry) + { + data << uint32(ERR_BANKSLOT_FAILED_TOO_MANY); + SendPacket(&data); return; + } uint32 price = slotEntry->price; if (_player->GetMoney() < price) + { + data << uint32(ERR_BANKSLOT_INSUFFICIENT_FUNDS); + SendPacket(&data); return; + } _player->SetBankBagSlotCount(slot); _player->ModifyMoney(-int32(price)); + data << uint32(ERR_BANKSLOT_OK); + SendPacket(&data); + _player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT); } diff --git a/src/game/Player.h b/src/game/Player.h index 36c2ead0c..2157decc2 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -80,6 +80,14 @@ enum PlayerUnderwaterState UNDERWATER_EXIST_TIMERS = 0x10 }; +enum BuyBankSlotResult +{ + ERR_BANKSLOT_FAILED_TOO_MANY = 0, + ERR_BANKSLOT_INSUFFICIENT_FUNDS = 1, + ERR_BANKSLOT_NOTBANKER = 2, + ERR_BANKSLOT_OK = 3 +}; + enum PlayerSpellState { PLAYERSPELL_UNCHANGED = 0,