void WorldSession::HandleBuyBankSlotOpcode(WorldPacket& recvPacket) { DEBUG_LOG("WORLD: CMSG_BUY_BANK_SLOT"); ObjectGuid guid; recvPacket >> guid; if (!CheckBanker(guid)) return; uint32 slot = _player->GetBankBagSlotCount(); // next slot ++slot; DETAIL_LOG("PLAYER: Buy bank bag slot, slot number = %u", slot); 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); }
void WorldSession::HandleBankerActivateOpcode(WorldPacket& recv_data) { ObjectGuid guid; DEBUG_LOG("WORLD: Received opcode CMSG_BANKER_ACTIVATE"); recv_data >> guid; if (!CheckBanker(guid)) { return; } // remove fake death if (GetPlayer()->hasUnitState(UNIT_STAT_DIED)) { GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH); } SendShowBank(guid); }