diff options
| author | Shauren <shauren.trinity@gmail.com> | 2014-03-10 12:58:03 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2014-03-10 12:58:03 +0100 |
| commit | 5221bd8c1099d0aa2c7317d9bf591fbe38c962c6 (patch) | |
| tree | 449c08de4c70ae1dcd1c62643a9bae1b6e3d4483 /src/server/game/Handlers/ItemHandler.cpp | |
| parent | 6f1005ad9430a920c303731aac268eeff576ac54 (diff) | |
Core/Items: Fixed an exploit allowing people to put more gems than number of sockets on items.
Closes #11652
Diffstat (limited to 'src/server/game/Handlers/ItemHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 3571410fd5c..c4b4b35bf37 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -1210,6 +1210,11 @@ void WorldSession::HandleSocketOpcode(WorldPacket& recvData) for (int i = 0; i < MAX_GEM_SOCKETS; ++i) //get geminfo from dbc storage GemProps[i] = (Gems[i]) ? sGemPropertiesStore.LookupEntry(Gems[i]->GetTemplate()->GemProperties) : NULL; + // Find first prismatic socket + int32 firstPrismatic = 0; + while (firstPrismatic < MAX_GEM_SOCKETS && itemProto->Socket[firstPrismatic].Color) + ++firstPrismatic; + for (int i = 0; i < MAX_GEM_SOCKETS; ++i) //check for hack maybe { if (!GemProps[i]) @@ -1222,11 +1227,8 @@ void WorldSession::HandleSocketOpcode(WorldPacket& recvData) if (!itemTarget->GetEnchantmentId(PRISMATIC_ENCHANTMENT_SLOT)) return; - // not first not-colored (not normaly used) socket - if (i != 0 && !itemProto->Socket[i-1].Color && (i+1 >= MAX_GEM_SOCKETS || itemProto->Socket[i+1].Color)) + if (i != firstPrismatic) return; - - // ok, this is first not colored socket for item with prismatic socket } // tried to put normal gem in meta socket |
