From 9dd475d2fc6c1d506d87cde2a647f0b37bcbdb92 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Wed, 18 Mar 2020 23:09:35 +0100 Subject: [PATCH] Core/Packets: converted SMSG_GUILD_COMMAND_RESULT, SMSG_GUILD_BANK_TEXT_QUERY_RESULT, SMSG_GUILD_NAME_CHANGED, SMSG_QUERY_GUILD_INFO_RESPONSE and SMSG_GUILD_RANKS to packet class --- src/server/game/Guilds/Guild.cpp | 143 ++++++------------ src/server/game/Guilds/Guild.h | 3 +- src/server/game/Handlers/GuildHandler.cpp | 2 +- .../game/Server/Packets/GuildPackets.cpp | 102 +++++++++++++ src/server/game/Server/Packets/GuildPackets.h | 82 ++++++++++ src/server/game/Server/Protocol/Opcodes.cpp | 8 +- src/server/game/Server/Protocol/Opcodes.h | 8 +- 7 files changed, 243 insertions(+), 105 deletions(-) diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 1e56a06e348..4796e0e933f 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -115,14 +115,14 @@ void Guild::SendCommandResult(WorldSession* session, GuildCommandType type, Guil // Note: SMSG_GUILD_COMMAND_RESULT and SMSG_GUILD_COMMAND_RESULT_2 do exactly the same in the client, they just have different structures. // There's no particular reason why we use SMSG_GUILD_COMMAND_RESULT_2, this one is processed inmediately as it is read from the client. // SMSG_GUILD_COMMAND_RESULT is a JAM opcode - WorldPacket data(SMSG_GUILD_COMMAND_RESULT_2, 8 + param.size() + 1); - data << uint32(type); - data << param; - data << uint32(errCode); - session->SendPacket(&data); + WorldPackets::Guild::GuildCommandResult result; - TC_LOG_DEBUG("guild", "SMSG_GUILD_COMMAND_RESULT [%s]: Type: %u, code: %u, param: %s" - , session->GetPlayerInfo().c_str(), type, errCode, param.c_str()); + result.Command = type; + result.Name = param; + result.Result = errCode; + session->SendPacket(result.Write()); + + TC_LOG_DEBUG("guild", "SMSG_GUILD_COMMAND_RESULT [%s]: Type: %u, code: %u, param: %s", session->GetPlayerInfo().c_str(), type, errCode, param.c_str()); } void Guild::SendSaveEmblemResult(WorldSession* session, GuildEmblemError errCode) @@ -638,21 +638,20 @@ bool Guild::BankTab::SetItem(SQLTransaction& trans, uint8 slotId, Item* item) void Guild::BankTab::SendText(Guild const* guild, WorldSession* session) const { - WorldPacket data(SMSG_GUILD_BANK_QUERY_TEXT_RESULT, 1 + m_text.size() + 1); - data.WriteBits(m_text.length(), 14); - data << uint32(m_tabId); - data.WriteString(m_text); + WorldPackets::Guild::GuildBankTextQueryResult textQuery; + textQuery.Text = m_text; + textQuery.Tab = m_tabId; if (session) { TC_LOG_DEBUG("guild", "SMSG_GUILD_BANK_QUERY_TEXT_RESULT [%s]: Tabid: %u, Text: %s" , session->GetPlayerInfo().c_str(), m_tabId, m_text.c_str()); - session->SendPacket(&data); + session->SendPacket(textQuery.Write()); } else { TC_LOG_DEBUG("guild", "SMSG_GUILD_BANK_QUERY_TEXT_RESULT [Broadcast]: Tabid: %u, Text: %s", m_tabId, m_text.c_str()); - guild->BroadcastPacket(&data); + guild->BroadcastPacket(textQuery.Write()); } } @@ -1035,15 +1034,6 @@ void EmblemInfo::LoadFromDB(Field* fields) m_backgroundColor = fields[7].GetUInt8(); } -void EmblemInfo::WritePacket(WorldPacket& data) const -{ - data << uint32(m_style); - data << uint32(m_color); - data << uint32(m_borderStyle); - data << uint32(m_borderColor); - data << uint32(m_backgroundColor); -} - void EmblemInfo::SaveToDB(ObjectGuid::LowType guildId) const { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_EMBLEM_INFO); @@ -1616,29 +1606,10 @@ bool Guild::SetName(std::string const& name) stmt->setUInt32(1, GetId()); CharacterDatabase.Execute(stmt); - ObjectGuid guid = GetGUID(); - WorldPacket data(SMSG_GUILD_RENAMED, 24 + 8 + 1); - data.WriteBit(guid[5]); - data.WriteBits(name.length(), 8); - data.WriteBit(guid[4]); - data.WriteBit(guid[0]); - data.WriteBit(guid[6]); - data.WriteBit(guid[3]); - data.WriteBit(guid[1]); - data.WriteBit(guid[7]); - data.WriteBit(guid[2]); - - data.WriteByteSeq(guid[3]); - data.WriteByteSeq(guid[2]); - data.WriteByteSeq(guid[7]); - data.WriteByteSeq(guid[1]); - data.WriteByteSeq(guid[0]); - data.WriteByteSeq(guid[6]); - data.WriteString(name); - data.WriteByteSeq(guid[4]); - data.WriteByteSeq(guid[5]); - - BroadcastPacket(&data); + WorldPackets::Guild::GuildNameChanged guildNameChanged; + guildNameChanged.GuildGUID = GetGUID(); + guildNameChanged.GuildName = name; + BroadcastPacket(guildNameChanged.Write()); return true; } @@ -1699,53 +1670,41 @@ void Guild::HandleRoster(WorldSession* session) session->SendPacket(roster.Write()); } -void Guild::HandleQuery(WorldSession* session) +void Guild::SendQueryResponse(WorldSession* session) { - WorldPacket data(SMSG_GUILD_QUERY_RESPONSE, 8 * 32 + 200); // Guess size + WorldPackets::Guild::QueryGuildInfoResponse response; + response.GuildGUID = GetGUID(); + response.GuildName = m_name; - data << uint64(GetGUID()); - data << m_name; + response.EmblemStyle = m_emblemInfo.GetStyle(); + response.EmblemColor = m_emblemInfo.GetColor(); + response.BorderStyle = m_emblemInfo.GetBorderStyle(); + response.BorderColor = m_emblemInfo.GetBorderColor(); + response.BackgroundColor = m_emblemInfo.GetBackgroundColor(); - // Rank name - for (uint8 i = 0; i < GUILD_RANKS_MAX_COUNT; ++i) // Always show 10 ranks - { - if (i < _GetRanksSize()) - data << m_ranks[i].GetName(); - else - data << uint8(0); // Empty string - } + response.RanksSize = _GetRanksSize(); - // Rank order of creation for (uint8 i = 0; i < GUILD_RANKS_MAX_COUNT; ++i) { + WorldPackets::Guild::GuildInfoRank info; if (i < _GetRanksSize()) - data << uint32(i); - else - data << uint32(0); + { + info.RankID = m_ranks[i].GetId(); + info.RankOrder = i; + info.RankName = m_ranks[i].GetName(); + } + response.Ranks[i] = info; } - // Rank order of "importance" (sorting by rights) - for (uint8 i = 0; i < GUILD_RANKS_MAX_COUNT; ++i) - { - if (i < _GetRanksSize()) - data << uint32(m_ranks[i].GetId()); - else - data << uint32(0); - } - - m_emblemInfo.WritePacket(data); - data << uint32(_GetRanksSize()); // Number of ranks used - - session->SendPacket(&data); - TC_LOG_DEBUG("guild", "SMSG_GUILD_QUERY_RESPONSE [%s]", session->GetPlayerInfo().c_str()); + session->SendPacket(response.Write()); + TC_LOG_DEBUG("guild", "SMSG_QUERY_GUILD_INFO_RESPONSE [%s]", session->GetPlayerInfo().c_str()); } void Guild::SendGuildRankInfo(WorldSession* session) const { - ByteBuffer rankData(100); - WorldPacket data(SMSG_GUILD_RANK, 100); + WorldPackets::Guild::GuildRanks ranks; - data.WriteBits(_GetRanksSize(), 18); + ranks.Ranks.reserve(_GetRanksSize()); for (uint8 i = 0; i < _GetRanksSize(); i++) { @@ -1753,29 +1712,25 @@ void Guild::SendGuildRankInfo(WorldSession* session) const if (!rankInfo) continue; - data.WriteBits(rankInfo->GetName().length(), 7); + WorldPackets::Guild::GuildRankData rankData; - rankData << uint32(rankInfo->GetId()); + rankData.RankID = rankInfo->GetId(); + rankData.RankOrder = uint32(i); + rankData.Flags = rankInfo->GetRights(); + rankData.WithdrawGoldLimit = (rankInfo->GetId() == GR_GUILDMASTER ? (-1) : int32(rankInfo->GetBankMoneyPerDay() / GOLD)); + rankData.RankName = rankInfo->GetName(); for (uint8 j = 0; j < GUILD_BANK_MAX_TABS; ++j) { - rankData << uint32(rankInfo->GetBankTabSlotsPerDay(j)); - rankData << uint32(rankInfo->GetBankTabRights(j)); + rankData.TabFlags[j] = uint32(rankInfo->GetBankTabRights(j)); + rankData.TabWithdrawItemLimit[j] = uint32(rankInfo->GetBankTabSlotsPerDay(j)); } - rankData << uint32(rankInfo->GetBankMoneyPerDay()); - rankData << uint32(rankInfo->GetRights()); - - if (rankInfo->GetName().length()) - rankData.WriteString(rankInfo->GetName()); - - rankData << uint32(i); + ranks.Ranks.push_back(rankData); } - data.FlushBits(); - data.append(rankData); - session->SendPacket(&data); - TC_LOG_DEBUG("guild", "SMSG_GUILD_RANK [%s]", session->GetPlayerInfo().c_str()); + session->SendPacket(ranks.Write()); + TC_LOG_DEBUG("guild", "SMSG_GUILD_RANKS [%s]", session->GetPlayerInfo().c_str()); } void Guild::HandleSetAchievementTracking(WorldSession* session, std::set const& achievementIds) @@ -1861,7 +1816,7 @@ void Guild::HandleSetEmblem(WorldSession* session, EmblemInfo const& emblemInfo) SendSaveEmblemResult(session, ERR_GUILDEMBLEM_SUCCESS); // "Guild Emblem saved." - HandleQuery(session); + SendQueryResponse(session); } } diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index 68b7c1c0ab0..52b2c1afbd3 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -292,7 +292,6 @@ public: void LoadFromDB(Field* fields); void SaveToDB(ObjectGuid::LowType guildId) const; void ReadPacket(WorldPacket& recv); - void WritePacket(WorldPacket& data) const; uint32 GetStyle() const { return m_style; } uint32 GetColor() const { return m_color; } @@ -785,7 +784,7 @@ public: // Handle client commands void HandleRoster(WorldSession* session); - void HandleQuery(WorldSession* session); + void SendQueryResponse(WorldSession* session); void HandleSetAchievementTracking(WorldSession* session, std::set const& achievementIds); void HandleSetMOTD(WorldSession* session, std::string const& motd); void HandleSetInfo(WorldSession* session, std::string const& info); diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp index 1c6280fabf5..5a8cffd9fbe 100644 --- a/src/server/game/Handlers/GuildHandler.cpp +++ b/src/server/game/Handlers/GuildHandler.cpp @@ -41,7 +41,7 @@ void WorldSession::HandleGuildQueryOpcode(WorldPacket& recvPacket) if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid)) if (guild->IsMember(playerGuid)) - guild->HandleQuery(this); + guild->SendQueryResponse(this); } void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket) diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index eded31ede59..501af19a02a 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -555,3 +555,105 @@ WorldPacket const* WorldPackets::Guild::GuildChallengeCompleted::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Guild::GuildCommandResult::Write() +{ + _worldPacket << uint32(Command); + _worldPacket << Name; + _worldPacket << uint32(Result); + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Guild::GuildBankTextQueryResult::Write() +{ + _worldPacket.WriteBits(Text.length(), 14); + _worldPacket.FlushBits(); + + _worldPacket << uint32(Tab); + _worldPacket.WriteString(Text); + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Guild::GuildNameChanged::Write() +{ + _worldPacket.WriteBit(GuildGUID[5]); + _worldPacket.WriteBits(GuildName.length(), 8); + _worldPacket.WriteBit(GuildGUID[4]); + _worldPacket.WriteBit(GuildGUID[0]); + _worldPacket.WriteBit(GuildGUID[6]); + _worldPacket.WriteBit(GuildGUID[3]); + _worldPacket.WriteBit(GuildGUID[1]); + _worldPacket.WriteBit(GuildGUID[7]); + _worldPacket.WriteBit(GuildGUID[2]); + + _worldPacket.WriteByteSeq(GuildGUID[3]); + _worldPacket.WriteByteSeq(GuildGUID[2]); + _worldPacket.WriteByteSeq(GuildGUID[7]); + _worldPacket.WriteByteSeq(GuildGUID[1]); + _worldPacket.WriteByteSeq(GuildGUID[0]); + _worldPacket.WriteByteSeq(GuildGUID[6]); + _worldPacket.WriteString(GuildName); + _worldPacket.WriteByteSeq(GuildGUID[4]); + _worldPacket.WriteByteSeq(GuildGUID[5]); + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write() +{ + _worldPacket << GuildGUID; + _worldPacket << GuildName; + + for (uint8 i = 0; i < GUILD_RANKS_MAX_COUNT; ++i) + _worldPacket << Ranks[i].RankName; + + for (uint8 i = 0; i < GUILD_RANKS_MAX_COUNT; ++i) + _worldPacket << uint32(Ranks[i].RankOrder); + + for (uint8 i = 0; i < GUILD_RANKS_MAX_COUNT; ++i) + _worldPacket << uint32(Ranks[i].RankID); + + _worldPacket << uint32(EmblemStyle); + _worldPacket << uint32(EmblemColor); + _worldPacket << uint32(BorderStyle); + _worldPacket << uint32(BorderColor); + _worldPacket << uint32(BackgroundColor); + + _worldPacket << uint32(RanksSize); + + return &_worldPacket; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRankData const& rankData) +{ + data << int32(rankData.RankID); + + for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; i++) + { + data << int32(rankData.TabWithdrawItemLimit[i]); + data << int32(rankData.TabFlags[i]); + } + + data << int32(rankData.WithdrawGoldLimit); + data << int32(rankData.Flags); + data.WriteString(rankData.RankName); + data << int32(rankData.RankOrder); + return data; +} + +WorldPacket const* WorldPackets::Guild::GuildRanks::Write() +{ + _worldPacket.WriteBits(Ranks.size(), 18); + + for (GuildRankData const& rank : Ranks) + _worldPacket.WriteBits(rank.RankName.length(), 7); + + _worldPacket.FlushBits(); + + for (GuildRankData const& rank : Ranks) + _worldPacket << rank; + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h index 137cf8d098d..d9b2999a33d 100644 --- a/src/server/game/Server/Packets/GuildPackets.h +++ b/src/server/game/Server/Packets/GuildPackets.h @@ -470,6 +470,88 @@ namespace WorldPackets int32 XpAwarded = 0; int32 CurrentCount = 0; }; + + class GuildCommandResult final : public ServerPacket + { + public: + GuildCommandResult() : ServerPacket(SMSG_GUILD_COMMAND_RESULT, 9) { } + + WorldPacket const* Write() override; + + std::string Name; + int32 Result = 0; + int32 Command = 0; + }; + + class GuildBankTextQueryResult : public ServerPacket + { + public: + GuildBankTextQueryResult() : ServerPacket(SMSG_GUILD_BANK_TEXT_QUERY_RESULT, 4 + 2) { } + + WorldPacket const* Write() override; + + int32 Tab = 0; + std::string Text; + }; + + class GuildNameChanged final : ServerPacket + { + public: + GuildNameChanged() : ServerPacket(SMSG_GUILD_NAME_CHANGED, 33) { } + + WorldPacket const* Write() override; + + ObjectGuid GuildGUID; + std::string GuildName; + }; + + struct GuildInfoRank + { + uint32 RankID = 0; + uint32 RankOrder = 0; + std::string RankName; + }; + + class QueryGuildInfoResponse final : ServerPacket + { + public: + QueryGuildInfoResponse() : ServerPacket(SMSG_QUERY_GUILD_INFO_RESPONSE) { } + + WorldPacket const* Write() override; + + ObjectGuid GuildGUID; + std::string GuildName; + + std::array Ranks; + + uint32 RanksSize = 0; + uint32 EmblemStyle = 0; + uint32 EmblemColor = 0; + uint32 BorderStyle = 0; + uint32 BorderColor = 0; + uint32 BackgroundColor = 0; + }; + + struct GuildRankData + { + uint8 RankID = 0; + int32 RankOrder = 0; + uint32 Flags = 0; + uint32 WithdrawGoldLimit = 0; + std::string RankName; + uint32 TabFlags[GUILD_BANK_MAX_TABS]; + uint32 TabWithdrawItemLimit[GUILD_BANK_MAX_TABS]; + }; + + class GuildRanks final : public ServerPacket + { + public: + GuildRanks() : ServerPacket(SMSG_GUILD_RANKS, 4) { } + + WorldPacket const* Write() override; + + std::vector Ranks; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 593565e8665..c234be7a9ed 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -892,7 +892,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_QUERY_RESULTS, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_LOG_QUERY_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_MONEY_WITHDRAWN, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_QUERY_TEXT_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_TEXT_QUERY_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CHALLENGE_COMPLETED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CHALLENGE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CHANGE_NAME_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -917,11 +917,11 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NEWS_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_PARTY_STATE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_PERMISSIONS_QUERY_RESULTS, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RANK, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GUILD_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RANKS, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RANKS_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_KNOWN_RECIPES, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RENAMED, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NAME_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REPUTATION_REACTION_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REPUTATION_WEEKLY_CAP, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RESET, STATUS_NEVER, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 5d8562e7b4b..f1e3973f9e0 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -830,7 +830,7 @@ enum OpcodeServer SMSG_GUILD_BANK_QUERY_RESULTS = 0x78A5, SMSG_GUILD_BANK_LOG_QUERY_RESULT = 0x30B2, SMSG_GUILD_BANK_MONEY_WITHDRAWN = 0x5DB4, - SMSG_GUILD_BANK_QUERY_TEXT_RESULT = 0x75A3, + SMSG_GUILD_BANK_TEXT_QUERY_RESULT = 0x75A3, SMSG_GUILD_CANCEL = 0x0000, SMSG_GUILD_CHALLENGE_COMPLETED = 0x39A3, SMSG_GUILD_CHALLENGE_UPDATE = 0x18B1, @@ -857,10 +857,10 @@ enum OpcodeServer SMSG_GUILD_NEWS_UPDATE = 0x35A7, SMSG_GUILD_PARTY_STATE_RESPONSE = 0x50A6, SMSG_GUILD_PERMISSIONS_QUERY_RESULTS = 0x34A3, - SMSG_GUILD_QUERY_RESPONSE = 0x0E06, - SMSG_GUILD_RANK = 0x30B4, + SMSG_QUERY_GUILD_INFO_RESPONSE = 0x0E06, + SMSG_GUILD_RANKS = 0x30B4, SMSG_GUILD_RANKS_UPDATE = 0x5DA0, - SMSG_GUILD_RENAMED = 0x74A6, + SMSG_GUILD_NAME_CHANGED = 0x74A6, SMSG_GUILD_REPUTATION_REACTION_CHANGED = 0x74B0, SMSG_GUILD_REPUTATION_WEEKLY_CAP = 0x30B7, SMSG_GUILD_RESET = 0x1CB5,