aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/characters/3.4.x/2023_11_25_00_characters.sql4
-rw-r--r--src/server/database/Database/Implementation/CharacterDatabase.cpp4
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseMgr.cpp4
-rw-r--r--src/server/game/Entities/Item/Item.cpp46
-rw-r--r--src/server/game/Entities/Item/Item.h6
-rw-r--r--src/server/game/Entities/Item/ItemTemplate.cpp22
-rw-r--r--src/server/game/Entities/Item/ItemTemplate.h28
-rw-r--r--src/server/game/Entities/Player/Player.cpp6
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp27
-rw-r--r--src/server/game/Guilds/Guild.cpp2
-rw-r--r--src/server/game/Guilds/GuildMgr.cpp10
-rw-r--r--src/server/game/Handlers/ItemHandler.cpp16
12 files changed, 33 insertions, 142 deletions
diff --git a/sql/updates/characters/3.4.x/2023_11_25_00_characters.sql b/sql/updates/characters/3.4.x/2023_11_25_00_characters.sql
new file mode 100644
index 00000000000..32bd61292c1
--- /dev/null
+++ b/sql/updates/characters/3.4.x/2023_11_25_00_characters.sql
@@ -0,0 +1,4 @@
+ALTER TABLE `item_instance_gems`
+ DROP COLUMN `gemScalingLevel1`,
+ DROP COLUMN `gemScalingLevel2`,
+ DROP COLUMN `gemScalingLevel3`;
diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp
index 24f6d1fb895..b4a5d2793cd 100644
--- a/src/server/database/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp
@@ -28,7 +28,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
"iit.itemModifiedAppearanceAllSpecs, iit.itemModifiedAppearanceSpec1, iit.itemModifiedAppearanceSpec2, iit.itemModifiedAppearanceSpec3, iit.itemModifiedAppearanceSpec4, iit.itemModifiedAppearanceSpec5, " \
"iit.spellItemEnchantmentAllSpecs, iit.spellItemEnchantmentSpec1, iit.spellItemEnchantmentSpec2, iit.spellItemEnchantmentSpec3, iit.spellItemEnchantmentSpec4, iit.spellItemEnchantmentSpec5, " \
"iit.secondaryItemModifiedAppearanceAllSpecs, iit.secondaryItemModifiedAppearanceSpec1, iit.secondaryItemModifiedAppearanceSpec2, iit.secondaryItemModifiedAppearanceSpec3, iit.secondaryItemModifiedAppearanceSpec4, iit.itemModifiedAppearanceSpec5, " \
- "ig.gemItemId1, ig.gemBonuses1, ig.gemContext1, ig.gemScalingLevel1, ig.gemItemId2, ig.gemBonuses2, ig.gemContext2, ig.gemScalingLevel2, ig.gemItemId3, ig.gemBonuses3, ig.gemContext3, ig.gemScalingLevel3"
+ "ig.gemItemId1, ig.gemBonuses1, ig.gemContext1, ig.gemItemId2, ig.gemBonuses2, ig.gemContext2, ig.gemItemId3, ig.gemBonuses3, ig.gemContext3"
PrepareStatement(CHAR_DEL_POOL_QUEST_SAVE, "DELETE FROM pool_quest_save WHERE pool_id = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_INS_POOL_QUEST_SAVE, "INSERT INTO pool_quest_save (pool_id, quest_id) VALUES (?, ?)", CONNECTION_ASYNC);
@@ -195,7 +195,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_UPD_ITEM_INSTANCE_ON_LOAD, "UPDATE item_instance SET duration = ?, flags = ?, durability = ? WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_ITEM_INSTANCE, "DELETE FROM item_instance WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_ITEM_INSTANCE_BY_OWNER, "DELETE FROM item_instance WHERE owner_guid = ?", CONNECTION_ASYNC);
- PrepareStatement(CHAR_INS_ITEM_INSTANCE_GEMS, "INSERT INTO item_instance_gems (itemGuid, gemItemId1, gemBonuses1, gemContext1, gemScalingLevel1, gemItemId2, gemBonuses2, gemContext2, gemScalingLevel2, gemItemId3, gemBonuses3, gemContext3, gemScalingLevel3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_INS_ITEM_INSTANCE_GEMS, "INSERT INTO item_instance_gems (itemGuid, gemItemId1, gemBonuses1, gemContext1, gemItemId2, gemBonuses2, gemContext2, gemItemId3, gemBonuses3, gemContext3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_ITEM_INSTANCE_GEMS, "DELETE FROM item_instance_gems WHERE itemGuid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_ITEM_INSTANCE_GEMS_BY_OWNER, "DELETE iig FROM item_instance_gems iig LEFT JOIN item_instance ii ON iig.itemGuid = ii.guid WHERE ii.owner_guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_INS_ITEM_INSTANCE_TRANSMOG, "INSERT INTO item_instance_transmog (itemGuid, itemModifiedAppearanceAllSpecs, itemModifiedAppearanceSpec1, itemModifiedAppearanceSpec2, itemModifiedAppearanceSpec3, itemModifiedAppearanceSpec4, itemModifiedAppearanceSpec5, "
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
index ab4fe0f99e4..7e72ffdb8d7 100644
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
@@ -525,12 +525,12 @@ void AuctionHouseMgr::LoadAuctions()
}
Item* item = NewItemOrBag(proto);
- if (!item->LoadFromDB(itemGuid, ObjectGuid::Create<HighGuid::Player>(fields[47].GetUInt64()), fields, itemEntry))
+ if (!item->LoadFromDB(itemGuid, ObjectGuid::Create<HighGuid::Player>(fields[44].GetUInt64()), fields, itemEntry))
{
delete item;
continue;
}
- uint32 auctionId = fields[48].GetUInt32();
+ uint32 auctionId = fields[45].GetUInt32();
itemsByAuction[auctionId].push_back(item);
++count;
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index 9dddf233a85..d7052a98630 100644
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -305,8 +305,6 @@ Item::Item()
m_paidMoney = 0;
m_paidExtendedCost = 0;
- m_gemScalingLevels = { };
-
memset(&_bonusData, 0, sizeof(_bonusData));
}
@@ -456,7 +454,7 @@ void Item::SaveToDB(CharacterDatabaseTransaction trans)
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ITEM_INSTANCE_GEMS);
stmt->setUInt64(0, GetGUID().GetCounter());
uint32 i = 0;
- uint32 const gemFields = 4;
+ uint32 const gemFields = 3;
for (UF::SocketedGem const& gemData : m_itemData->Gems)
{
if (gemData.ItemID)
@@ -468,14 +466,12 @@ void Item::SaveToDB(CharacterDatabaseTransaction trans)
gemBonusListIDs << bonusListID << ' ';
stmt->setString(2 + i * gemFields, gemBonusListIDs.str());
stmt->setUInt8(3 + i * gemFields, gemData.Context);
- stmt->setUInt32(4 + i * gemFields, m_gemScalingLevels[i]);
}
else
{
stmt->setUInt32(1 + i * gemFields, 0);
stmt->setString(2 + i * gemFields, "");
stmt->setUInt8(3 + i * gemFields, 0);
- stmt->setUInt32(4 + i * gemFields, 0);
}
++i;
}
@@ -484,7 +480,6 @@ void Item::SaveToDB(CharacterDatabaseTransaction trans)
stmt->setUInt32(1 + i * gemFields, 0);
stmt->setString(2 + i * gemFields, "");
stmt->setUInt8(3 + i * gemFields, 0);
- stmt->setUInt32(4 + i * gemFields, 0);
}
trans->Append(stmt);
}
@@ -695,7 +690,7 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid ownerGuid, Field* fie
SetModifier(ITEM_MODIFIER_TRANSMOG_SECONDARY_APPEARANCE_SPEC_4, fields[33].GetUInt32());
SetModifier(ITEM_MODIFIER_TRANSMOG_SECONDARY_APPEARANCE_SPEC_5, fields[34].GetUInt32());
- uint32 const gemFields = 4;
+ uint32 const gemFields = 3;
ItemDynamicFieldGems gemData[MAX_GEM_SOCKETS];
memset(gemData, 0, sizeof(gemData));
for (uint32 i = 0; i < MAX_GEM_SOCKETS; ++i)
@@ -709,12 +704,9 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid ownerGuid, Field* fie
gemData[i].Context = fields[37 + i * gemFields].GetUInt8();
if (gemData[i].ItemId)
- SetGem(i, &gemData[i], fields[38 + i * gemFields].GetUInt32());
+ SetGem(i, &gemData[i]);
}
- SetModifier(ITEM_MODIFIER_TIMEWALKER_LEVEL, fields[47].GetUInt32());
- SetModifier(ITEM_MODIFIER_ARTIFACT_KNOWLEDGE_LEVEL, fields[48].GetUInt32());
-
// Enchants must be loaded after all other bonus/scaling data
std::vector<std::string_view> enchantmentTokens = Trinity::Tokenize(fields[8].GetStringView(), ' ', false);
if (enchantmentTokens.size() == MAX_ENCHANTMENT_SLOT * MAX_ENCHANTMENT_OFFSET)
@@ -1125,30 +1117,9 @@ UF::SocketedGem const* Item::GetGem(uint16 slot) const
return slot < m_itemData->Gems.size() ? &m_itemData->Gems[slot] : nullptr;
}
-void Item::SetGem(uint16 slot, ItemDynamicFieldGems const* gem, uint32 gemScalingLevel)
+void Item::SetGem(uint16 slot, ItemDynamicFieldGems const* gem)
{
ASSERT(slot < MAX_GEM_SOCKETS);
- m_gemScalingLevels[slot] = gemScalingLevel;
- _bonusData.GemItemLevelBonus[slot] = 0;
- if (ItemTemplate const* gemTemplate = sObjectMgr->GetItemTemplate(gem->ItemId))
- {
- if (GemPropertiesEntry const* gemProperties = sGemPropertiesStore.LookupEntry(gemTemplate->GetGemProperties()))
- {
- if (SpellItemEnchantmentEntry const* gemEnchant = sSpellItemEnchantmentStore.LookupEntry(gemProperties->EnchantId))
- {
- BonusData gemBonus;
- gemBonus.Initialize(gemTemplate);
-
- uint32 gemBaseItemLevel = gemTemplate->GetItemLevel();
- if (gemBonus.PlayerLevelToItemLevelCurveId)
- if (uint32 scaledIlvl = uint32(sDB2Manager.GetCurveValueAt(gemBonus.PlayerLevelToItemLevelCurveId, gemScalingLevel)))
- gemBaseItemLevel = scaledIlvl;
-
- _bonusData.GemRelicType[slot] = gemBonus.RelicType;
- }
- }
- }
-
auto gemField = m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::Gems, slot);
SetUpdateFieldValue(gemField.ModifyValue(&UF::SocketedGem::ItemID), gem->ItemId);
SetUpdateFieldValue(gemField.ModifyValue(&UF::SocketedGem::Context), gem->Context);
@@ -1162,6 +1133,7 @@ bool Item::GemsFitSockets() const
for (UF::SocketedGem const& gemData : m_itemData->Gems)
{
SocketColor color = GetTemplate()->GetSocketColor(gemSlot);
+ ++gemSlot;
if (!color) // no socket slot
continue;
@@ -1900,9 +1872,6 @@ uint32 Item::GetItemLevel(ItemTemplate const* itemTemplate, BonusData const& bon
itemLevel += bonusData.ItemLevelBonus;
- for (uint32 i = 0; i < MAX_ITEM_PROTO_SOCKETS; ++i)
- itemLevel += bonusData.GemItemLevelBonus[i];
-
uint32 itemLevelBeforeUpgrades = itemLevel;
if (pvpBonus)
@@ -2140,12 +2109,7 @@ void BonusData::Initialize(ItemTemplate const* proto)
ItemStatSocketCostMultiplier[i] = proto->GetStatPercentageOfSocket(i);
for (uint32 i = 0; i < MAX_ITEM_PROTO_SOCKETS; ++i)
- {
SocketColor[i] = proto->GetSocketColor(i);
- GemItemLevelBonus[i] = 0;
- GemRelicType[i] = -1;
- GemRelicRankBonus[i] = 0;
- }
Bonding = proto->GetBonding();
diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h
index feea7d67df8..0e247129390 100644
--- a/src/server/game/Entities/Item/Item.h
+++ b/src/server/game/Entities/Item/Item.h
@@ -78,9 +78,6 @@ struct BonusData
uint32 ContentTuningId;
uint32 PlayerLevelToItemLevelCurveId;
uint32 DisenchantLootId;
- uint32 GemItemLevelBonus[MAX_ITEM_PROTO_SOCKETS];
- int32 GemRelicType[MAX_ITEM_PROTO_SOCKETS];
- uint16 GemRelicRankBonus[MAX_ITEM_PROTO_SOCKETS];
int32 RelicType;
int32 RequiredLevelOverride;
uint32 Suffix;
@@ -232,7 +229,7 @@ class TC_GAME_API Item : public Object
uint32 GetEnchantmentDuration(EnchantmentSlot slot) const { return m_itemData->Enchantment[slot].Duration; }
uint32 GetEnchantmentCharges(EnchantmentSlot slot) const { return m_itemData->Enchantment[slot].Charges; }
UF::SocketedGem const* GetGem(uint16 slot) const;
- void SetGem(uint16 slot, ItemDynamicFieldGems const* gem, uint32 gemScalingLevel);
+ void SetGem(uint16 slot, ItemDynamicFieldGems const* gem);
std::string const& GetText() const { return m_text; }
void SetText(std::string const& text) { m_text = text; }
@@ -375,6 +372,5 @@ class TC_GAME_API Item : public Object
uint64 m_paidMoney;
uint32 m_paidExtendedCost;
GuidSet allowedGUIDs;
- std::array<uint32, MAX_ITEM_PROTO_SOCKETS> m_gemScalingLevels;
};
#endif
diff --git a/src/server/game/Entities/Item/ItemTemplate.cpp b/src/server/game/Entities/Item/ItemTemplate.cpp
index d8c21a4799e..b8dc33889b3 100644
--- a/src/server/game/Entities/Item/ItemTemplate.cpp
+++ b/src/server/game/Entities/Item/ItemTemplate.cpp
@@ -21,34 +21,14 @@
#include "Player.h"
#include "World.h"
-int32 const SocketColorToGemTypeMask[26] =
+int32 const SocketColorToGemTypeMask[6] =
{
0,
SOCKET_COLOR_META,
SOCKET_COLOR_RED,
SOCKET_COLOR_YELLOW,
SOCKET_COLOR_BLUE,
- SOCKET_COLOR_HYDRAULIC,
- SOCKET_COLOR_COGWHEEL,
SOCKET_COLOR_PRISMATIC,
- SOCKET_COLOR_RELIC_IRON,
- SOCKET_COLOR_RELIC_BLOOD,
- SOCKET_COLOR_RELIC_SHADOW,
- SOCKET_COLOR_RELIC_FEL,
- SOCKET_COLOR_RELIC_ARCANE,
- SOCKET_COLOR_RELIC_FROST,
- SOCKET_COLOR_RELIC_FIRE,
- SOCKET_COLOR_RELIC_WATER,
- SOCKET_COLOR_RELIC_LIFE,
- SOCKET_COLOR_RELIC_WIND,
- SOCKET_COLOR_RELIC_HOLY,
- SOCKET_COLOR_PUNCHCARD_RED,
- SOCKET_COLOR_PUNCHCARD_YELLOW,
- SOCKET_COLOR_PUNCHCARD_BLUE,
- SOCKET_COLOR_DOMINATION,
- SOCKET_COLOR_CYPHER,
- SOCKET_COLOR_TINKER,
- SOCKET_COLOR_PRIMORDIAL
};
char const* ItemTemplate::GetName(LocaleConstant locale) const
diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h
index d7f81c9e97b..23357f816bf 100644
--- a/src/server/game/Entities/Item/ItemTemplate.h
+++ b/src/server/game/Entities/Item/ItemTemplate.h
@@ -347,30 +347,10 @@ enum SocketColor
SOCKET_COLOR_RED = 0x000002,
SOCKET_COLOR_YELLOW = 0x000004,
SOCKET_COLOR_BLUE = 0x000008,
- SOCKET_COLOR_HYDRAULIC = 0x000010, // not used
- SOCKET_COLOR_COGWHEEL = 0x000020,
- SOCKET_COLOR_PRISMATIC = 0x00000E,
- SOCKET_COLOR_RELIC_IRON = 0x000040,
- SOCKET_COLOR_RELIC_BLOOD = 0x000080,
- SOCKET_COLOR_RELIC_SHADOW = 0x000100,
- SOCKET_COLOR_RELIC_FEL = 0x000200,
- SOCKET_COLOR_RELIC_ARCANE = 0x000400,
- SOCKET_COLOR_RELIC_FROST = 0x000800,
- SOCKET_COLOR_RELIC_FIRE = 0x001000,
- SOCKET_COLOR_RELIC_WATER = 0x002000,
- SOCKET_COLOR_RELIC_LIFE = 0x004000,
- SOCKET_COLOR_RELIC_WIND = 0x008000,
- SOCKET_COLOR_RELIC_HOLY = 0x010000,
- SOCKET_COLOR_PUNCHCARD_RED = 0x020000,
- SOCKET_COLOR_PUNCHCARD_YELLOW = 0x040000,
- SOCKET_COLOR_PUNCHCARD_BLUE = 0x080000,
- SOCKET_COLOR_DOMINATION = 0x100000,
- SOCKET_COLOR_CYPHER = 0x200000,
- SOCKET_COLOR_TINKER = 0x400000,
- SOCKET_COLOR_PRIMORDIAL = 0x800000,
-};
-
-extern int32 const SocketColorToGemTypeMask[26];
+ SOCKET_COLOR_PRISMATIC = SOCKET_COLOR_RED | SOCKET_COLOR_YELLOW | SOCKET_COLOR_BLUE
+};
+
+extern int32 const SocketColorToGemTypeMask[6];
#define SOCKET_COLOR_STANDARD (SOCKET_COLOR_RED | SOCKET_COLOR_YELLOW | SOCKET_COLOR_BLUE)
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 4695d133a39..591c8468399 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -3934,7 +3934,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
do
{
Field* fields = resultItems->Fetch();
- uint64 mailId = fields[48].GetUInt64();
+ uint64 mailId = fields[44].GetUInt64();
if (Item* mailItem = _LoadMailedItem(playerguid, nullptr, mailId, nullptr, fields))
itemsByMail[mailId].push_back(mailItem);
@@ -18062,8 +18062,8 @@ void Player::_LoadInventory(PreparedQueryResult result, uint32 timeDiff)
Field* fields = result->Fetch();
if (Item* item = _LoadItem(trans, zoneId, timeDiff, fields))
{
- ObjectGuid bagGuid = fields[47].GetUInt64() ? ObjectGuid::Create<HighGuid::Item>(fields[49].GetUInt64()) : ObjectGuid::Empty;
- uint8 slot = fields[48].GetUInt8();
+ ObjectGuid bagGuid = fields[44].GetUInt64() ? ObjectGuid::Create<HighGuid::Item>(fields[44].GetUInt64()) : ObjectGuid::Empty;
+ uint8 slot = fields[45].GetUInt8();
GetSession()->GetCollectionMgr()->CheckHeirloomUpgrades(item);
GetSession()->GetCollectionMgr()->AddItemAppearance(item);
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 6fb3100c5d1..1605dfc11cd 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -3150,34 +3150,7 @@ struct ItemSpecStats
}
}
else if (item->ClassID == ITEM_CLASS_GEM)
- {
ItemType = 7;
- if (GemPropertiesEntry const* gem = sGemPropertiesStore.LookupEntry(sparse->GemProperties))
- {
- if (gem->Type & SOCKET_COLOR_RELIC_IRON)
- AddStat(ITEM_SPEC_STAT_RELIC_IRON);
- if (gem->Type & SOCKET_COLOR_RELIC_BLOOD)
- AddStat(ITEM_SPEC_STAT_RELIC_BLOOD);
- if (gem->Type & SOCKET_COLOR_RELIC_SHADOW)
- AddStat(ITEM_SPEC_STAT_RELIC_SHADOW);
- if (gem->Type & SOCKET_COLOR_RELIC_FEL)
- AddStat(ITEM_SPEC_STAT_RELIC_FEL);
- if (gem->Type & SOCKET_COLOR_RELIC_ARCANE)
- AddStat(ITEM_SPEC_STAT_RELIC_ARCANE);
- if (gem->Type & SOCKET_COLOR_RELIC_FROST)
- AddStat(ITEM_SPEC_STAT_RELIC_FROST);
- if (gem->Type & SOCKET_COLOR_RELIC_FIRE)
- AddStat(ITEM_SPEC_STAT_RELIC_FIRE);
- if (gem->Type & SOCKET_COLOR_RELIC_WATER)
- AddStat(ITEM_SPEC_STAT_RELIC_WATER);
- if (gem->Type & SOCKET_COLOR_RELIC_LIFE)
- AddStat(ITEM_SPEC_STAT_RELIC_LIFE);
- if (gem->Type & SOCKET_COLOR_RELIC_WIND)
- AddStat(ITEM_SPEC_STAT_RELIC_WIND);
- if (gem->Type & SOCKET_COLOR_RELIC_HOLY)
- AddStat(ITEM_SPEC_STAT_RELIC_HOLY);
- }
- }
else
ItemType = 0;
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 4315f4f4089..035d8e00f3e 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -2558,7 +2558,7 @@ void Guild::LoadBankTabFromDB(Field* fields)
bool Guild::LoadBankItemFromDB(Field* fields)
{
- uint8 tabId = fields[48].GetUInt8();
+ uint8 tabId = fields[45].GetUInt8();
if (tabId >= _GetPurchasedTabsSize())
{
TC_LOG_ERROR("guild", "Invalid tab for item (GUID: {}, id: #{}) in guild bank, skipped.",
diff --git a/src/server/game/Guilds/GuildMgr.cpp b/src/server/game/Guilds/GuildMgr.cpp
index 5ee751019a0..7781fe83b85 100644
--- a/src/server/game/Guilds/GuildMgr.cpp
+++ b/src/server/game/Guilds/GuildMgr.cpp
@@ -415,11 +415,9 @@ void GuildMgr::LoadGuilds()
// secondaryItemModifiedAppearanceAllSpecs, secondaryItemModifiedAppearanceSpec1, secondaryItemModifiedAppearanceSpec2,
// 34 35 36
// secondaryItemModifiedAppearanceSpec3, secondaryItemModifiedAppearanceSpec4, secondaryItemModifiedAppearanceSpec5,
- // 37 38 39 40 41 42 43 44 45 46 47 48
- // gemItemId1, gemBonuses1, gemContext1, gemScalingLevel1, gemItemId2, gemBonuses2, gemContext2, gemScalingLevel2, gemItemId3, gemBonuses3, gemContext3, gemScalingLevel3
- // 49 50
- // fixedScalingLevel, artifactKnowledgeLevel
- // 51 52 53
+ // 37 38 39 40 41 42 43 44 45
+ // gemItemId1, gemBonuses1, gemContext1, gemItemId2, gemBonuses2, gemContext2, gemItemId3, gemBonuses3, gemContext3
+ // 46 47 48
// guildid, TabId, SlotId FROM guild_bank_item gbi INNER JOIN item_instance ii ON gbi.item_guid = ii.guid
PreparedQueryResult result = CharacterDatabase.Query(CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_BANK_ITEMS));
@@ -433,7 +431,7 @@ void GuildMgr::LoadGuilds()
do
{
Field* fields = result->Fetch();
- uint64 guildId = fields[47].GetUInt64();
+ uint64 guildId = fields[44].GetUInt64();
if (Guild* guild = GetGuildById(guildId))
guild->LoadBankItemFromDB(fields);
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp
index 6a7120a2c79..60481b71068 100644
--- a/src/server/game/Handlers/ItemHandler.cpp
+++ b/src/server/game/Handlers/ItemHandler.cpp
@@ -1059,19 +1059,15 @@ void WorldSession::HandleSocketGems(WorldPackets::Item::SocketGems& socketGems)
//if a meta gem is being equipped, all information has to be written to the item before testing if the conditions for the gem are met
- //remove ALL mods - gem can change item level
- if (itemTarget->IsEquipped())
- _player->_ApplyItemMods(itemTarget, itemTarget->GetSlot(), false);
+ //remove ALL enchants
+ for (uint32 enchanmentSlot = SOCK_ENCHANTMENT_SLOT; enchanmentSlot < SOCK_ENCHANTMENT_SLOT + MAX_GEM_SOCKETS; ++enchanmentSlot)
+ _player->ApplyEnchantment(itemTarget, EnchantmentSlot(enchanmentSlot), false);
for (uint16 i = 0; i < MAX_GEM_SOCKETS; ++i)
{
if (gems[i])
{
- uint32 gemScalingLevel = _player->GetLevel();
- if (uint32 fixedLevel = gems[i]->GetModifier(ITEM_MODIFIER_TIMEWALKER_LEVEL))
- gemScalingLevel = fixedLevel;
-
- itemTarget->SetGem(i, &gemData[i], gemScalingLevel);
+ itemTarget->SetGem(i, &gemData[i]);
if (gemProperties[i] && gemProperties[i]->EnchantId)
itemTarget->SetEnchantment(EnchantmentSlot(SOCK_ENCHANTMENT_SLOT + i), gemProperties[i]->EnchantId, 0, 0, _player->GetGUID());
@@ -1081,8 +1077,8 @@ void WorldSession::HandleSocketGems(WorldPackets::Item::SocketGems& socketGems)
}
}
- if (itemTarget->IsEquipped())
- _player->_ApplyItemMods(itemTarget, itemTarget->GetSlot(), true);
+ for (uint32 enchantmentSlot = SOCK_ENCHANTMENT_SLOT; enchantmentSlot < SOCK_ENCHANTMENT_SLOT + MAX_GEM_SOCKETS; ++enchantmentSlot)
+ _player->ApplyEnchantment(itemTarget, EnchantmentSlot(enchantmentSlot), true);
bool SocketBonusToBeActivated = itemTarget->GemsFitSockets();//current socketbonus state
if (SocketBonusActivated ^ SocketBonusToBeActivated) //if there was a change...