aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers')
-rw-r--r--src/server/game/Handlers/ItemHandler.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp
index a8602605c7d..329849c5e34 100644
--- a/src/server/game/Handlers/ItemHandler.cpp
+++ b/src/server/game/Handlers/ItemHandler.cpp
@@ -1048,9 +1048,9 @@ void WorldSession::HandleSocketGems(WorldPackets::Item::SocketGems& socketGems)
// unique limit type item
int32 limit_newcount = 0;
- if (iGemProto->GetItemLimitCategory())
+ if (gems[i]->GetItemLimitCategory())
{
- if (ItemLimitCategoryEntry const* limitEntry = sItemLimitCategoryStore.LookupEntry(iGemProto->GetItemLimitCategory()))
+ if (ItemLimitCategoryEntry const* limitEntry = sItemLimitCategoryStore.LookupEntry(gems[i]->GetItemLimitCategory()))
{
// NOTE: limitEntry->Flags is not checked because if item has limit then it is applied in equip case
for (int j = 0; j < MAX_GEM_SOCKETS; ++j)
@@ -1058,15 +1058,23 @@ void WorldSession::HandleSocketGems(WorldPackets::Item::SocketGems& socketGems)
if (gems[j])
{
// new gem
- if (iGemProto->GetItemLimitCategory() == gems[j]->GetTemplate()->GetItemLimitCategory())
+ if (gems[i]->GetItemLimitCategory() == gems[j]->GetItemLimitCategory())
++limit_newcount;
}
else if (oldGemData[j])
{
// existing gem
if (ItemTemplate const* jProto = sObjectMgr->GetItemTemplate(oldGemData[j]->ItemID))
- if (iGemProto->GetItemLimitCategory() == jProto->GetItemLimitCategory())
+ {
+ BonusData oldGemBonus;
+ oldGemBonus.Initialize(jProto);
+
+ for (uint16 bonusListID : oldGemData[j]->BonusListIDs)
+ oldGemBonus.AddBonusList(bonusListID);
+
+ if (gems[i]->GetItemLimitCategory() == oldGemBonus.LimitCategory)
++limit_newcount;
+ }
}
}