diff options
author | Sebastian Valle Herrera <subv2112@gmail.com> | 2014-06-07 19:18:54 -0500 |
---|---|---|
committer | Sebastian Valle Herrera <subv2112@gmail.com> | 2014-06-07 19:18:54 -0500 |
commit | cfd527c88070bc30ce6fbe384ccf18a7c3322f96 (patch) | |
tree | 5b044512327ef869cbd40a0a25892b1eb383e3ab /src | |
parent | 73e90f62411a4f507ae210ab20f78ce81af13b93 (diff) |
Core/Items: Fixed a reforge exploit
That allowed items to be reforged more than once.
Thanks @Rochet2
Closes #11465
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 9ab11be9858..168d45cecca 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -1581,6 +1581,13 @@ void WorldSession::HandleReforgeItemOpcode(WorldPacket& recvData) if (!reforgeEntry) { + if (!item->GetEnchantmentId(REFORGE_ENCHANTMENT_SLOT)) + { + TC_LOG_ERROR("network", "WORLD: HandleReforgeItemOpcode - Player (Guid: %u Name: %s) tried to remove reforge from non-reforged item (Entry: %u)", player->GetGUIDLow(), player->GetName().c_str(), item->GetEntry()); + SendReforgeResult(false); + return; + } + // Reset the item if (item->IsEquipped()) player->ApplyReforgeEnchantment(item, false); @@ -1589,6 +1596,13 @@ void WorldSession::HandleReforgeItemOpcode(WorldPacket& recvData) return; } + if (item->GetEnchantmentId(REFORGE_ENCHANTMENT_SLOT)) + { + TC_LOG_ERROR("network", "WORLD: HandleReforgeItemOpcode - Player (Guid: %u Name: %s) tried to reforge an already reforged item (Entry: %u)", player->GetGUIDLow(), player->GetName().c_str(), item->GetEntry()); + SendReforgeResult(false); + return; + } + ItemReforgeEntry const* stats = sItemReforgeStore.LookupEntry(reforgeEntry); if (!stats) { |