aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSebastian Valle Herrera <subv2112@gmail.com>2014-06-07 19:18:54 -0500
committerSebastian Valle Herrera <subv2112@gmail.com>2014-06-07 19:18:54 -0500
commitcfd527c88070bc30ce6fbe384ccf18a7c3322f96 (patch)
tree5b044512327ef869cbd40a0a25892b1eb383e3ab /src
parent73e90f62411a4f507ae210ab20f78ce81af13b93 (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.cpp14
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)
{