From 349edd8fda1aadb46204ad95f6a5f8e720f80fb5 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 28 Aug 2026 10:26:09 +0200 Subject: [PATCH] Core/PacketIO: Implement missing packet fields --- src/server/game/Chat/Channels/Channel.cpp | 1 + src/server/game/Entities/Creature/GossipDef.cpp | 5 +++-- src/server/game/Handlers/SpellHandler.cpp | 5 ++--- src/server/game/Server/Packets/ChannelPackets.cpp | 2 +- src/server/game/Server/Packets/ChannelPackets.h | 2 +- src/server/game/Server/Packets/NPCPackets.cpp | 2 +- src/server/game/Server/Packets/NPCPackets.h | 2 +- src/server/game/Server/Packets/SpellPackets.cpp | 2 +- src/server/game/Server/Packets/SpellPackets.h | 2 +- 9 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp index 4bbe8bbe9c..6f259f4981 100644 --- a/src/server/game/Chat/Channels/Channel.cpp +++ b/src/server/game/Chat/Channels/Channel.cpp @@ -223,6 +223,7 @@ void Channel::JoinChannel(Player* player, std::string const& pass) notify->Data.ChatChannelID = _channelId; //notify->Data.InstanceID = 0; notify->Data._ChannelFlags = _channelFlags; + notify->Data.UserFlags = GetPlayerFlags(guid); notify->Data._Channel = GetName(localeIdx); notify->Data.ChannelGUID = _channelGuid; notify->Data.Write(); diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index d905246c5d..ecfa241091 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -263,6 +263,7 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID) text.QuestID = questID; text.ContentTuningID = quest->GetContentTuningId(); text.QuestType = item.QuestIcon; + text.QuestInfoID = quest->GetQuestInfoID(); text.QuestFlags[0] = quest->GetFlags(); text.QuestFlags[1] = quest->GetFlagsEx(); text.QuestFlags[2] = quest->GetFlagsEx2(); @@ -431,11 +432,11 @@ void PlayerMenu::SendQuestGiverQuestListMessage(Object* questgiver) if (Quest const* quest = sObjectMgr->GetQuestTemplate(questID)) { - questList.QuestDataText.emplace_back(); - WorldPackets::NPC::ClientGossipText& text = questList.QuestDataText.back(); + WorldPackets::NPC::ClientGossipText& text = questList.QuestDataText.emplace_back(); text.QuestID = questID; text.ContentTuningID = quest->GetContentTuningId(); text.QuestType = questMenuItem.QuestIcon; + text.QuestInfoID = quest->GetQuestInfoID(); text.QuestFlags[0] = quest->GetFlags(); text.QuestFlags[1] = quest->GetFlagsEx(); text.QuestFlags[2] = quest->GetFlagsEx2(); diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 0f2c1e1a25..eee4c3090c 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -485,12 +485,11 @@ void WorldSession::HandleMirrorImageDataRequest(WorldPackets::Spells::GetMirrorI mirrorImageComponentedData.UnitGUID = guid; if (ChrModelEntry const* chrModel = sDB2Manager.GetChrModel(creator->GetRace(), creator->GetGender())) mirrorImageComponentedData.ChrModelID = chrModel->ID; + mirrorImageComponentedData.DisplayScale = creator->GetDisplayScale(); mirrorImageComponentedData.RaceID = creator->GetRace(); mirrorImageComponentedData.Gender = creator->GetGender(); mirrorImageComponentedData.ClassID = creator->GetClass(); - - for (UF::ChrCustomizationChoice const& customization : player->m_playerData->Customizations) - mirrorImageComponentedData.Customizations.push_back(customization); + mirrorImageComponentedData.Customizations.assign(player->m_playerData->Customizations.begin(), player->m_playerData->Customizations.end()); Guild* guild = player->GetGuild(); mirrorImageComponentedData.GuildGUID = (guild ? guild->GetGUID() : ObjectGuid::Empty); diff --git a/src/server/game/Server/Packets/ChannelPackets.cpp b/src/server/game/Server/Packets/ChannelPackets.cpp index ae9fed1f27..757c155649 100644 --- a/src/server/game/Server/Packets/ChannelPackets.cpp +++ b/src/server/game/Server/Packets/ChannelPackets.cpp @@ -70,7 +70,7 @@ WorldPacket const* ChannelNotifyJoined::Write() _worldPacket << SizedString::BitsSize<7>(_Channel); _worldPacket << SizedString::BitsSize<11>(ChannelWelcomeMsg); _worldPacket << uint32(_ChannelFlags); - _worldPacket << uint8(Unknown1107); + _worldPacket << uint8(UserFlags); _worldPacket << int32(ChatChannelID); _worldPacket << uint64(InstanceID); _worldPacket << ChannelGUID; diff --git a/src/server/game/Server/Packets/ChannelPackets.h b/src/server/game/Server/Packets/ChannelPackets.h index a14e16d3a1..d499824613 100644 --- a/src/server/game/Server/Packets/ChannelPackets.h +++ b/src/server/game/Server/Packets/ChannelPackets.h @@ -81,7 +81,7 @@ namespace WorldPackets uint32 _ChannelFlags = 0; ///< @see enum ChannelFlags std::string _Channel; ///< Channel Name ObjectGuid ChannelGUID; - uint8 Unknown1107 = 0; + uint8 UserFlags = 0; }; class ChannelNotifyLeft final : public ServerPacket diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index 86fd3709a2..f42e931003 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -76,7 +76,7 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText) data << int32(gossipText.QuestID); data << int32(gossipText.ContentTuningID); data << int32(gossipText.QuestType); - data << int32(gossipText.Unused1102); + data << int32(gossipText.QuestInfoID); data.append(gossipText.QuestFlags); data << Bits<1>(gossipText.Repeatable); diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h index ae2e8d9d44..dc59f0e07f 100644 --- a/src/server/game/Server/Packets/NPCPackets.h +++ b/src/server/game/Server/Packets/NPCPackets.h @@ -98,7 +98,7 @@ namespace WorldPackets int32 QuestID = 0; int32 ContentTuningID = 0; int32 QuestType = 0; - int32 Unused1102 = 0; + int32 QuestInfoID = 0; bool Repeatable = false; bool ResetByScheduler = false; bool Important = false; diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index cc6d49347d..ee9f230439 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -1037,7 +1037,7 @@ WorldPacket const* MirrorImageComponentedData::Write() _worldPacket << GuildGUID; _worldPacket << Size(ItemDisplayID); _worldPacket << int32(SpellVisualKitID); - _worldPacket << int32(Unused_1115); + _worldPacket << float(DisplayScale); for (Character::ChrCustomizationChoice const& customization : Customizations) _worldPacket << customization; diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index 40946e69b5..a7b7a87092 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -1009,7 +1009,7 @@ namespace WorldPackets ObjectGuid UnitGUID; int32 ChrModelID = 0; int32 SpellVisualKitID = 0; - int32 Unused_1115 = 0; + float DisplayScale = 1.0f; uint8 RaceID = 0; uint8 Gender = 0; uint8 ClassID = 0;