diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-04-26 12:17:25 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2025-04-26 12:17:25 +0200 |
commit | d938fea455ece3a4236eead2e4d9d0b33d58c404 (patch) | |
tree | 3b02962bef7bb239a2749a9dbb70af45da9f4ff5 /src/server/game/Handlers/ItemHandler.cpp | |
parent | 9d86423d8c2607712152d6dbf5d4fe9690a83081 (diff) |
Core/Items: Updated item gem colors
Diffstat (limited to 'src/server/game/Handlers/ItemHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 455902c04bf..c3bbf6c1fa7 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -977,24 +977,35 @@ void WorldSession::HandleSocketGems(WorldPackets::Item::SocketGems& socketGems) if (!gemProperties[i]) continue; + uint32 acceptableGemTypeMask = SocketColorToGemTypeMask[itemTarget->GetSocketColor(i)]; // tried to put gem in socket where no socket exists (take care about prismatic sockets) - if (!itemTarget->GetSocketColor(i)) + switch (itemTarget->GetSocketColor(i)) { - // no prismatic socket - if (!itemTarget->GetEnchantmentId(PRISMATIC_ENCHANTMENT_SLOT)) - return; + case 0: + { + // no prismatic socket + if (!itemTarget->GetEnchantmentId(PRISMATIC_ENCHANTMENT_SLOT)) + return; - if (i != firstPrismatic) - return; + if (i != firstPrismatic) + return; + + acceptableGemTypeMask = SOCKET_COLOR_RED | SOCKET_COLOR_YELLOW | SOCKET_COLOR_BLUE; + break; + } + case 2: + case 3: + case 4: + // red, blue and yellow sockets accept any red/blue/yellow gem + acceptableGemTypeMask = SOCKET_COLOR_RED | SOCKET_COLOR_YELLOW | SOCKET_COLOR_BLUE; + break; + default: + break; } // Gem must match socket color - if (SocketColorToGemTypeMask[itemTarget->GetSocketColor(i)] != gemProperties[i]->Type) - { - // unless its red, blue, yellow or prismatic - if (!(SocketColorToGemTypeMask[itemTarget->GetSocketColor(i)] & SOCKET_COLOR_PRISMATIC) || !(gemProperties[i]->Type & SOCKET_COLOR_PRISMATIC)) - return; - } + if (!(acceptableGemTypeMask & gemProperties[i]->Type)) + return; } // check unique-equipped conditions |