diff options
| author | Shauren <shauren.trinity@gmail.com> | 2018-02-10 01:24:00 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2018-02-18 16:33:49 +0100 |
| commit | 4af15915bc8b780ef854c2e58d7ab5bb38f56758 (patch) | |
| tree | fbbc2706ca6385e153a3b648b91c5a701d2bc271 /src/server/game/Server/Packets | |
| parent | c9465979c6002ae43bb8e536e3ad0f6d1be36b98 (diff) | |
Core/PacketIO: Updated opcodes and packet structures to 7.3.5
Diffstat (limited to 'src/server/game/Server/Packets')
19 files changed, 128 insertions, 85 deletions
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index 3953a856b60..31a3b2d6ee2 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -130,18 +130,11 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() _worldPacket << uint8(SuccessInfo->ActiveExpansionLevel); _worldPacket << uint8(SuccessInfo->AccountExpansionLevel); _worldPacket << uint32(SuccessInfo->TimeSecondsUntilPCKick); - _worldPacket << uint32(SuccessInfo->AvailableRaces->size()); _worldPacket << uint32(SuccessInfo->AvailableClasses->size()); _worldPacket << uint32(SuccessInfo->Templates.size()); _worldPacket << uint32(SuccessInfo->CurrencyID); _worldPacket << int32(SuccessInfo->Time); - for (auto const& race : *SuccessInfo->AvailableRaces) - { - _worldPacket << uint8(race.first); /// the current race - _worldPacket << uint8(race.second); /// the required Expansion - } - for (auto const& klass : *SuccessInfo->AvailableClasses) { _worldPacket << uint8(klass.first); /// the current class diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h index 7e244df991b..fbc0c6bb256 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -153,7 +153,6 @@ namespace WorldPackets std::vector<CharacterTemplate const*> Templates; ///< list of pre-made character templates. std::unordered_map<uint8, uint8> const* AvailableClasses = nullptr; ///< the minimum AccountExpansion required to select the classes - std::unordered_map<uint8, uint8> const* AvailableRaces = nullptr; ///< the minimum AccountExpansion required to select the races bool IsExpansionTrial = false; bool ForceCharacterTemplate = false; ///< forces the client to always use a character template when creating a new character. @see Templates. @todo implement diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index fd88684bab6..538a2c7e1d5 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -37,8 +37,8 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel // "characters.zone, characters.map, characters.position_x, characters.position_y, characters.position_z, " // 19 20 21 22 23 24 25 // "guild_member.guildid, characters.playerFlags, characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, characters.equipmentCache, " - // 26 27 28 29 30 - // "character_banned.guid, characters.slot, characters.logout_time, characters.activeTalentGroup, character_declinedname.genitive" + // 26 27 28 29 30 31 + // "character_banned.guid, characters.slot, characters.logout_time, characters.activeTalentGroup, characters.lastLoginBuild, character_declinedname.genitive" Guid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); Name = fields[1].GetString(); @@ -82,7 +82,7 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel if (fields[26].GetUInt64()) Flags |= CHARACTER_FLAG_LOCKED_BY_BILLING; - if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED) && !fields[30].GetString().empty()) + if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED) && !fields[31].GetString().empty()) Flags |= CHARACTER_FLAG_DECLINED; if (atLoginFlags & AT_LOGIN_CUSTOMIZE) @@ -117,6 +117,8 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel if (ChrSpecializationEntry const* spec = sDB2Manager.GetChrSpecializationByIndex(Class, fields[29].GetUInt8())) SpecID = spec->ID; + LastLoginBuild = fields[30].GetUInt32(); + for (uint8 slot = 0; slot < INVENTORY_SLOT_BAG_END; ++slot) { uint32 visualBase = slot * 3; @@ -126,76 +128,96 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel } } +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharactersResult::CharacterInfo::VisualItemInfo const& visualItem) +{ + data << uint32(visualItem.DisplayId); + data << uint32(visualItem.DisplayEnchantId); + data << uint8(visualItem.InventoryType); + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharactersResult::CharacterInfo const& charInfo) +{ + data << charInfo.Guid; + data << uint8(charInfo.ListPosition); + data << uint8(charInfo.Race); + data << uint8(charInfo.Class); + data << uint8(charInfo.Sex); + data << uint8(charInfo.Skin); + data << uint8(charInfo.Face); + data << uint8(charInfo.HairStyle); + data << uint8(charInfo.HairColor); + data << uint8(charInfo.FacialHair); + data.append(charInfo.CustomDisplay.data(), charInfo.CustomDisplay.size()); + data << uint8(charInfo.Level); + data << int32(charInfo.ZoneId); + data << int32(charInfo.MapId); + data << charInfo.PreLoadPosition; + data << charInfo.GuildGuid; + data << uint32(charInfo.Flags); + data << uint32(charInfo.CustomizationFlag); + data << uint32(charInfo.Flags3); + data << uint32(charInfo.Pet.CreatureDisplayId); + data << uint32(charInfo.Pet.Level); + data << uint32(charInfo.Pet.CreatureFamily); + + data << uint32(charInfo.ProfessionIds[0]); + data << uint32(charInfo.ProfessionIds[1]); + + for (WorldPackets::Character::EnumCharactersResult::CharacterInfo::VisualItemInfo const& visualItem : charInfo.VisualItems) + data << visualItem; + + data << uint32(charInfo.LastPlayedTime); + data << uint16(charInfo.SpecID); + data << uint32(charInfo.Unknown703); + data << uint32(charInfo.LastLoginBuild); + data << uint32(charInfo.Flags4); + data.WriteBits(charInfo.Name.length(), 6); + data.WriteBit(charInfo.FirstLogin); + data.WriteBit(charInfo.BoostInProgress); + data.WriteBits(charInfo.unkWod61x, 5); + data.FlushBits(); + + data.WriteString(charInfo.Name); + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharactersResult::RaceUnlock const& raceUnlock) +{ + data << int32(raceUnlock.RaceID); + data.WriteBit(raceUnlock.HasExpansion); + data.WriteBit(raceUnlock.HasAchievement); + data.WriteBit(raceUnlock.HasHeritageArmor); + data.FlushBits(); + + return data; +} + WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write() { - _worldPacket.reserve(9 + Characters.size() * sizeof(CharacterInfo) + FactionChangeRestrictions.size() * sizeof(RestrictedFactionChangeRuleInfo)); + _worldPacket.reserve(9 + Characters.size() * sizeof(CharacterInfo) + RaceUnlockData.size() * sizeof(RaceUnlock)); _worldPacket.WriteBit(Success); _worldPacket.WriteBit(IsDeletedCharacters); _worldPacket.WriteBit(IsDemonHunterCreationAllowed); _worldPacket.WriteBit(HasDemonHunterOnRealm); - _worldPacket.WriteBit(HasLevel70OnRealm); _worldPacket.WriteBit(Unknown7x); _worldPacket.WriteBit(DisabledClassesMask.is_initialized()); + _worldPacket.WriteBit(IsAlliedRacesCreationAllowed); _worldPacket << uint32(Characters.size()); - _worldPacket << uint32(FactionChangeRestrictions.size()); + _worldPacket << int32(MaxCharacterLevel); + _worldPacket << uint32(RaceUnlockData.size()); if (DisabledClassesMask) _worldPacket << uint32(*DisabledClassesMask); - for (RestrictedFactionChangeRuleInfo const& rule : FactionChangeRestrictions) - { - _worldPacket << int32(rule.Mask); - _worldPacket << uint8(rule.Race); - } - for (CharacterInfo const& charInfo : Characters) - { - _worldPacket << charInfo.Guid; - _worldPacket << uint8(charInfo.ListPosition); - _worldPacket << uint8(charInfo.Race); - _worldPacket << uint8(charInfo.Class); - _worldPacket << uint8(charInfo.Sex); - _worldPacket << uint8(charInfo.Skin); - _worldPacket << uint8(charInfo.Face); - _worldPacket << uint8(charInfo.HairStyle); - _worldPacket << uint8(charInfo.HairColor); - _worldPacket << uint8(charInfo.FacialHair); - _worldPacket.append(charInfo.CustomDisplay.data(), charInfo.CustomDisplay.size()); - _worldPacket << uint8(charInfo.Level); - _worldPacket << int32(charInfo.ZoneId); - _worldPacket << int32(charInfo.MapId); - _worldPacket << charInfo.PreLoadPosition; - _worldPacket << charInfo.GuildGuid; - _worldPacket << uint32(charInfo.Flags); - _worldPacket << uint32(charInfo.CustomizationFlag); - _worldPacket << uint32(charInfo.Flags3); - _worldPacket << uint32(charInfo.Pet.CreatureDisplayId); - _worldPacket << uint32(charInfo.Pet.Level); - _worldPacket << uint32(charInfo.Pet.CreatureFamily); - - _worldPacket << uint32(charInfo.ProfessionIds[0]); - _worldPacket << uint32(charInfo.ProfessionIds[1]); - - for (CharacterInfo::VisualItemInfo const& visualItem : charInfo.VisualItems) - { - _worldPacket << uint32(visualItem.DisplayId); - _worldPacket << uint32(visualItem.DisplayEnchantId); - _worldPacket << uint8(visualItem.InventoryType); - } + _worldPacket << charInfo; - _worldPacket << uint32(charInfo.LastPlayedTime); - _worldPacket << uint16(charInfo.SpecID); - _worldPacket << uint32(charInfo.Unknown703); - _worldPacket << uint32(charInfo.Flags4); - _worldPacket.WriteBits(charInfo.Name.length(), 6); - _worldPacket.WriteBit(charInfo.FirstLogin); - _worldPacket.WriteBit(charInfo.BoostInProgress); - _worldPacket.WriteBits(charInfo.unkWod61x, 5); - _worldPacket.FlushBits(); - - _worldPacket.WriteString(charInfo.Name); - } + for (RaceUnlock const& raceUnlock : RaceUnlockData) + _worldPacket << raceUnlock; return &_worldPacket; } @@ -469,9 +491,7 @@ WorldPacket const* WorldPackets::Character::LogXPGain::Write() _worldPacket << uint8(Reason); _worldPacket << int32(Amount); _worldPacket << float(GroupBonus); - _worldPacket.WriteBit(ReferAFriend); - - _worldPacket.FlushBits(); + _worldPacket << uint8(ReferAFriendBonusType); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index ed325e4e896..1f4ce11621a 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -146,6 +146,7 @@ namespace WorldPackets uint32 LastPlayedTime = 0; uint16 SpecID = 0; uint32 Unknown703 = 0; + uint32 LastLoginBuild = 0; struct PetInfo { @@ -167,13 +168,12 @@ namespace WorldPackets std::array<VisualItemInfo, 23> VisualItems = { }; }; - struct RestrictedFactionChangeRuleInfo + struct RaceUnlock { - RestrictedFactionChangeRuleInfo(int32 mask, uint8 race) - : Mask(mask), Race(race) { } - - int32 Mask = 0; - uint8 Race = 0; + int32 RaceID; + bool HasExpansion; + bool HasAchievement; + bool HasHeritageArmor; }; EnumCharactersResult() : ServerPacket(SMSG_ENUM_CHARACTERS_RESULT) { } @@ -184,13 +184,14 @@ namespace WorldPackets bool IsDeletedCharacters = false; ///< used for character undelete list bool IsDemonHunterCreationAllowed = false; ///< used for demon hunter early access bool HasDemonHunterOnRealm = false; - bool HasLevel70OnRealm = false; bool Unknown7x = false; + bool IsAlliedRacesCreationAllowed = false; + int32 MaxCharacterLevel = 1; Optional<uint32> DisabledClassesMask; std::vector<CharacterInfo> Characters; ///< all characters on the list - std::vector<RestrictedFactionChangeRuleInfo> FactionChangeRestrictions; ///< @todo: research + std::vector<RaceUnlock> RaceUnlockData; ///< }; class CreateCharacter final : public ClientPacket @@ -631,7 +632,7 @@ namespace WorldPackets uint8 Reason = 0; int32 Amount = 0; float GroupBonus = 0; - bool ReferAFriend = false; + uint8 ReferAFriendBonusType = 0; // 1 - 300% of normal XP; 2 - 150% of normal XP }; class TitleEarned final : public ServerPacket diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index 6afac0117c9..ff378e680e0 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -166,7 +166,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SandboxScalingData const& sandboxScalingData) { - data.WriteBits(sandboxScalingData.Type, 3); + data.WriteBits(sandboxScalingData.Type, 4); data << int16(sandboxScalingData.PlayerLevelDelta); data << uint16(sandboxScalingData.PlayerItemLevel); data << uint8(sandboxScalingData.TargetLevel); diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index 5f5ecdea9fa..367021001c2 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -511,7 +511,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRewardItem co data << rewardItem.ItemID; data << rewardItem.Unk4; data << uint32(rewardItem.AchievementsRequired.size()); - data << rewardItem.RaceMask; + data << uint64(rewardItem.RaceMask); data << rewardItem.MinGuildLevel; data << rewardItem.MinGuildRep; data << rewardItem.Cost; diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h index 06e07665afe..f781e81b868 100644 --- a/src/server/game/Server/Packets/GuildPackets.h +++ b/src/server/game/Server/Packets/GuildPackets.h @@ -673,7 +673,7 @@ namespace WorldPackets uint32 ItemID = 0; uint32 Unk4 = 0; std::vector<uint32> AchievementsRequired; - uint32 RaceMask = 0; + uint64 RaceMask = 0; int32 MinGuildLevel = 0; int32 MinGuildRep = 0; uint64 Cost = 0; diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp index 6851bcea921..0a6e29e6838 100644 --- a/src/server/game/Server/Packets/InstancePackets.cpp +++ b/src/server/game/Server/Packets/InstancePackets.cpp @@ -146,6 +146,8 @@ WorldPacket const* WorldPackets::Instance::InstanceEncounterStart::Write() _worldPacket << uint32(MaxInCombatResCount); _worldPacket << uint32(CombatResChargeRecovery); _worldPacket << uint32(NextCombatResChargeTime); + _worldPacket.WriteBit(InProgress); + _worldPacket.FlushBits(); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/InstancePackets.h b/src/server/game/Server/Packets/InstancePackets.h index c01262cfa1f..f13e046906e 100644 --- a/src/server/game/Server/Packets/InstancePackets.h +++ b/src/server/game/Server/Packets/InstancePackets.h @@ -207,6 +207,7 @@ namespace WorldPackets uint32 MaxInCombatResCount = 0; uint32 CombatResChargeRecovery = 0; uint32 NextCombatResChargeTime = 0; + bool InProgress = true; }; class InstanceEncounterEnd final : public ServerPacket diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h index d1558755fc2..e985f1366de 100644 --- a/src/server/game/Server/Packets/ItemPackets.h +++ b/src/server/game/Server/Packets/ItemPackets.h @@ -533,6 +533,14 @@ namespace WorldPackets ObjectGuid ItemGuid; }; + + class CharacterInventoryOverflowWarning final : public ServerPacket + { + public: + CharacterInventoryOverflowWarning() : ServerPacket(SMSG_CHARACTER_INVENTORY_OVERFLOW_WARNING, 0) { } + + WorldPacket const* Write() override { return &_worldPacket; } + }; } } diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index 28e72b7e6cd..2b7f9ab7d18 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -50,6 +50,7 @@ WorldPacket const* WorldPackets::NPC::GossipMessage::Write() _worldPacket << int32(text.QuestID); _worldPacket << int32(text.QuestType); _worldPacket << int32(text.QuestLevel); + _worldPacket << int32(text.QuestMaxScalingLevel); _worldPacket << int32(text.QuestFlags[0]); _worldPacket << int32(text.QuestFlags[1]); diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h index a522084ab26..a094f25dc22 100644 --- a/src/server/game/Server/Packets/NPCPackets.h +++ b/src/server/game/Server/Packets/NPCPackets.h @@ -60,6 +60,7 @@ namespace WorldPackets int32 QuestID = 0; int32 QuestType = 0; int32 QuestLevel = 0; + int32 QuestMaxScalingLevel = 0; bool Repeatable = false; std::string QuestTitle; int32 QuestFlags[2] = { }; diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp index 0f4b9daf6b5..c640394be93 100644 --- a/src/server/game/Server/Packets/QueryPackets.cpp +++ b/src/server/game/Server/Packets/QueryPackets.cpp @@ -370,6 +370,9 @@ WorldPacket const* WorldPackets::Query::QuestPOIQueryResponse::Write() _worldPacket << int32(questPOIBlobPoint.X); _worldPacket << int32(questPOIBlobPoint.Y); } + + _worldPacket.WriteBit(questPOIBlobData.AlwaysAllowMergingBlobs); + _worldPacket.FlushBits(); } } diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h index c98c7809be5..7639f165dae 100644 --- a/src/server/game/Server/Packets/QueryPackets.h +++ b/src/server/game/Server/Packets/QueryPackets.h @@ -321,6 +321,7 @@ namespace WorldPackets int32 PlayerConditionID = 0; int32 UnkWoD1 = 0; std::vector<QuestPOIBlobPoint> QuestPOIBlobPointStats; + bool AlwaysAllowMergingBlobs = false; }; struct QuestPOIData diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 3b07f68943e..20a6539ae1d 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -65,6 +65,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket << int32(Info.QuestID); _worldPacket << int32(Info.QuestType); _worldPacket << int32(Info.QuestLevel); + _worldPacket << int32(Info.QuestMaxScalingLevel); _worldPacket << int32(Info.QuestPackageID); _worldPacket << int32(Info.QuestMinLevel); _worldPacket << int32(Info.QuestSortID); @@ -139,7 +140,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket << int32(Info.TimeAllowed); _worldPacket << uint32(Info.Objectives.size()); - _worldPacket << int32(Info.AllowableRaces); + _worldPacket << uint64(Info.AllowableRaces); _worldPacket << int32(Info.QuestRewardID); _worldPacket << int32(Info.Expansion); @@ -489,6 +490,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestListMessage::Write() _worldPacket << uint32(gossip.QuestID); _worldPacket << uint32(gossip.QuestType); _worldPacket << int32(gossip.QuestLevel); + _worldPacket << int32(gossip.QuestMaxScalingLevel); _worldPacket << uint32(gossip.QuestFlags); _worldPacket << uint32(gossip.QuestFlagsEx); _worldPacket.WriteBit(gossip.Repeatable); @@ -664,8 +666,10 @@ WorldPacket const* WorldPackets::Quest::DisplayPlayerChoice::Write() _worldPacket << int32(ChoiceID); _worldPacket << uint32(Responses.size()); _worldPacket << SenderGUID; + _worldPacket << int32(UiTextureKitID); _worldPacket.WriteBits(Question.length(), 8); _worldPacket.WriteBit(CloseChoiceFrame); + _worldPacket.WriteBit(HideWarboardHeader); _worldPacket.FlushBits(); for (PlayerChoiceResponse const& response : Responses) diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index 88f72c99271..1dd40e1ccc2 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -109,6 +109,7 @@ namespace WorldPackets int32 QuestID = 0; int32 QuestType = 0; // Accepted values: 0, 1 or 2. 0 == IsAutoComplete() (skip objectives/details) int32 QuestLevel = 0; // may be -1, static data, in other cases must be used dynamic level: Player::GetQuestLevel (0 is not known, but assuming this is no longer valid for quest intended for client) + int32 QuestMaxScalingLevel = 255; int32 QuestPackageID = 0; int32 QuestMinLevel = 0; int32 QuestSortID = 0; // zone or sort to display in quest log @@ -135,7 +136,7 @@ namespace WorldPackets float POIx = 0.0f; float POIy = 0.0f; int32 POIPriority = 0; - int32 AllowableRaces = -1; + uint64 AllowableRaces = UI64LIT(0xFFFFFFFFFFFFFFFF); std::string LogTitle; std::string LogDescription; std::string QuestDescription; @@ -462,11 +463,13 @@ namespace WorldPackets struct GossipText { - GossipText(uint32 questID, uint32 questType, int32 questLevel, uint32 questFlags, uint32 questFlagsEx, bool repeatable, std::string questTitle) : - QuestID(questID), QuestType(questType), QuestLevel(questLevel), QuestFlags(questFlags), QuestFlagsEx(questFlagsEx), Repeatable(repeatable), QuestTitle(questTitle) { } + GossipText(uint32 questID, uint32 questType, int32 questLevel, int32 questMaxScalingLevel, uint32 questFlags, uint32 questFlagsEx, bool repeatable, std::string questTitle) : + QuestID(questID), QuestType(questType), QuestLevel(questLevel), QuestMaxScalingLevel(questMaxScalingLevel), QuestFlags(questFlags), + QuestFlagsEx(questFlagsEx), Repeatable(repeatable), QuestTitle(std::move(questTitle)) { } uint32 QuestID; uint32 QuestType; int32 QuestLevel; + int32 QuestMaxScalingLevel; uint32 QuestFlags; uint32 QuestFlagsEx; bool Repeatable; @@ -676,9 +679,11 @@ namespace WorldPackets ObjectGuid SenderGUID; int32 ChoiceID = 0; + int32 UiTextureKitID = 0; std::string Question; std::vector<PlayerChoiceResponse> Responses; bool CloseChoiceFrame = false; + bool HideWarboardHeader = false; }; class ChoiceResponse final : public ClientPacket diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp index 931376f48ac..cafb723c062 100644 --- a/src/server/game/Server/Packets/TicketPackets.cpp +++ b/src/server/game/Server/Packets/TicketPackets.cpp @@ -163,6 +163,8 @@ ByteBuffer& operator>>(ByteBuffer& data, Optional<WorldPackets::Ticket::SupportT data >> lfgListSearchResult->LastTitleAuthorGuid; data >> lfgListSearchResult->LastDescriptionAuthorGuid; data >> lfgListSearchResult->LastVoiceChatAuthorGuid; + data >> lfgListSearchResult->ListingCreatorGuid; + data >> lfgListSearchResult->Unknown735; uint32 titleLength = data.ReadBits(8); uint32 descriptionLength = data.ReadBits(11); diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h index b94386a2ed6..6e25f3da4a9 100644 --- a/src/server/game/Server/Packets/TicketPackets.h +++ b/src/server/game/Server/Packets/TicketPackets.h @@ -165,6 +165,8 @@ namespace WorldPackets ObjectGuid LastTitleAuthorGuid; ObjectGuid LastDescriptionAuthorGuid; ObjectGuid LastVoiceChatAuthorGuid; + ObjectGuid ListingCreatorGuid; + ObjectGuid Unknown735; std::string Title; std::string Description; std::string VoiceChat; diff --git a/src/server/game/Server/Packets/WhoPackets.h b/src/server/game/Server/Packets/WhoPackets.h index 7dc9c33dab5..b84cf096345 100644 --- a/src/server/game/Server/Packets/WhoPackets.h +++ b/src/server/game/Server/Packets/WhoPackets.h @@ -66,7 +66,7 @@ namespace WorldPackets std::string VirtualRealmName; std::string Guild; std::string GuildVirtualRealmName; - int32 RaceFilter = -1; + uint64 RaceFilter = UI64LIT(0); int32 ClassFilter = -1; std::vector<WhoWord> Words; bool ShowEnemies = false; |
