diff options
Diffstat (limited to 'src/server/game/Handlers/ItemHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 976a3d4bd55..482661e35f5 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -1534,111 +1534,6 @@ void WorldSession::HandleTransmogrifyItems(WorldPacket& recvData) } } -void WorldSession::SendReforgeResult(bool success) -{ - WorldPacket data(SMSG_REFORGE_RESULT, 1); - data.WriteBit(success); - data.FlushBits(); - SendPacket(&data); -} - -void WorldSession::HandleReforgeItemOpcode(WorldPacket& recvData) -{ - uint32 slot, reforgeEntry; - ObjectGuid guid; - uint32 bag; - Player* player = GetPlayer(); - - recvData >> reforgeEntry >> slot >> bag; - - guid[2] = recvData.ReadBit(); - guid[6] = recvData.ReadBit(); - guid[3] = recvData.ReadBit(); - guid[4] = recvData.ReadBit(); - guid[1] = recvData.ReadBit(); - guid[0] = recvData.ReadBit(); - guid[7] = recvData.ReadBit(); - guid[5] = recvData.ReadBit(); - - recvData.ReadByteSeq(guid[2]); - recvData.ReadByteSeq(guid[3]); - recvData.ReadByteSeq(guid[6]); - recvData.ReadByteSeq(guid[4]); - recvData.ReadByteSeq(guid[1]); - recvData.ReadByteSeq(guid[0]); - recvData.ReadByteSeq(guid[7]); - recvData.ReadByteSeq(guid[5]); - - if (!player->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_REFORGER)) - { - TC_LOG_DEBUG("network", "WORLD: HandleReforgeItemOpcode - %s not found or player can't interact with it.", guid.ToString().c_str()); - SendReforgeResult(false); - return; - } - - Item* item = player->GetItemByPos(bag, slot); - - if (!item) - { - TC_LOG_DEBUG("network", "WORLD: HandleReforgeItemOpcode - Player (%s Name: %s) tried to reforge an invalid/non-existant item.", player->GetGUID().ToString().c_str(), player->GetName().c_str()); - SendReforgeResult(false); - return; - } - - if (!reforgeEntry) - { - if (!item->GetEnchantmentId(REFORGE_ENCHANTMENT_SLOT)) - { - TC_LOG_ERROR("network", "WORLD: HandleReforgeItemOpcode - Player (%s Name: %s) tried to remove reforge from non-reforged item (Entry: %u)", player->GetGUID().ToString().c_str(), player->GetName().c_str(), item->GetEntry()); - SendReforgeResult(false); - return; - } - - // Reset the item - if (item->IsEquipped()) - player->ApplyReforgeEnchantment(item, false); - item->ClearEnchantment(REFORGE_ENCHANTMENT_SLOT); - SendReforgeResult(true); - return; - } - - if (item->GetEnchantmentId(REFORGE_ENCHANTMENT_SLOT)) - { - TC_LOG_ERROR("network", "WORLD: HandleReforgeItemOpcode - Player (%s Name: %s) tried to reforge an already reforged item (Entry: %u)", player->GetGUID().ToString().c_str(), player->GetName().c_str(), item->GetEntry()); - SendReforgeResult(false); - return; - } - - ItemReforgeEntry const* stats = sItemReforgeStore.LookupEntry(reforgeEntry); - if (!stats) - { - TC_LOG_DEBUG("network", "WORLD: HandleReforgeItemOpcode - Player (%s Name: %s) tried to reforge an item with invalid reforge entry (%u).", player->GetGUID().ToString().c_str(), player->GetName().c_str(), reforgeEntry); - SendReforgeResult(false); - return; - } - - if (!item->GetReforgableStat(ItemModType(stats->SourceStat)) || item->GetReforgableStat(ItemModType(stats->FinalStat))) // Cheating, you cant reforge to a stat that the item already has, nor reforge from a stat that the item does not have - { - SendReforgeResult(false); - return; - } - - if (!player->HasEnoughMoney(uint64(item->GetSpecialPrice()))) // cheating - { - SendReforgeResult(false); - return; - } - - player->ModifyMoney(-int64(item->GetSpecialPrice())); - - item->SetEnchantment(REFORGE_ENCHANTMENT_SLOT, reforgeEntry, 0, 0); - - SendReforgeResult(true); - - if (item->IsEquipped()) - player->ApplyReforgeEnchantment(item, true); -} - bool WorldSession::CanUseBank(ObjectGuid bankerGUID) const { // bankerGUID parameter is optional, set to 0 by default. |