aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/ItemHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-04-26 12:17:25 +0200
committerShauren <shauren.trinity@gmail.com>2025-04-26 12:17:25 +0200
commitd938fea455ece3a4236eead2e4d9d0b33d58c404 (patch)
tree3b02962bef7bb239a2749a9dbb70af45da9f4ff5 /src/server/game/Handlers/ItemHandler.cpp
parent9d86423d8c2607712152d6dbf5d4fe9690a83081 (diff)
Core/Items: Updated item gem colors
Diffstat (limited to 'src/server/game/Handlers/ItemHandler.cpp')
-rw-r--r--src/server/game/Handlers/ItemHandler.cpp35
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