aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Guilds/Guild.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Guilds/Guild.cpp')
-rw-r--r--src/server/game/Guilds/Guild.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 4f21a11b296..314cd3d3f18 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -3634,6 +3634,12 @@ void Guild::SendBankList(WorldSession* session, uint8 tabId, bool fullUpdate) co
if (!member) // Shouldn't happen, just in case
return;
+ // HACK: client doesn't query entire tab content if it had received SMSG_GUILD_BANK_LIST in this session
+ // but we broadcast bank updates to entire guild when *ANYONE* changes anything, incorrectly initializing clients
+ // tab content with only data for that change
+ if (!fullUpdate && tabId < _GetPurchasedTabsSize())
+ fullUpdate = true;
+
WorldPackets::Guild::GuildBankQueryResults packet;
packet.Money = m_bankMoney;
@@ -3675,7 +3681,7 @@ void Guild::SendBankList(WorldSession* session, uint8 tabId, bool fullUpdate) co
WorldPackets::Guild::GuildBankItemInfo& itemInfo = packet.ItemInfo.emplace_back();
itemInfo.Slot = int32(slotId);
- itemInfo.Item.ItemID = tabItem->GetEntry();
+ itemInfo.Item.Initialize(tabItem);
itemInfo.Count = int32(tabItem->GetCount());
itemInfo.Charges = int32(abs(tabItem->GetSpellCharges()));
itemInfo.EnchantmentID = int32(tabItem->GetEnchantmentId(PERM_ENCHANTMENT_SLOT));