diff options
| author | Shauren <shauren.trinity@gmail.com> | 2025-03-02 15:43:34 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-03-02 15:43:34 +0100 |
| commit | 23624ed75abc8cbb77bb2e24a08e0836e4c41db5 (patch) | |
| tree | 593c0a5f9e4b75404ff3d30729ac08a7ea93f690 /src/server/game/Server/Packets | |
| parent | dac15a32a6361a5e47e17b621828369b1b7a4d84 (diff) | |
Core: Updated to 11.1.0
Diffstat (limited to 'src/server/game/Server/Packets')
38 files changed, 152 insertions, 59 deletions
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp index 3173a045b90..0bab4259ff7 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.cpp +++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp @@ -208,6 +208,7 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem) data << auctionItem.Owner; data << int32(auctionItem.DurationLeft); data << uint8(auctionItem.DeleteReason); + data << uint32(auctionItem.Unused1110); for (WorldPackets::Item::ItemEnchantData const& enchant : auctionItem.Enchantments) data << enchant; @@ -252,8 +253,9 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem) return data; } -void AuctionBidderNotification::Initialize(::AuctionPosting const* auction, ::Item const* item) +void AuctionBidderNotification::Initialize(int32 auctionHouseId, ::AuctionPosting const* auction, ::Item const* item) { + AuctionHouseID = auctionHouseId; AuctionID = auction->Id; Item.Initialize(item); Bidder = auction->Bidder; @@ -261,6 +263,7 @@ void AuctionBidderNotification::Initialize(::AuctionPosting const* auction, ::It ByteBuffer& operator<<(ByteBuffer& data, AuctionBidderNotification const& bidderNotification) { + data << int32(bidderNotification.AuctionHouseID); data << int32(bidderNotification.AuctionID); data << bidderNotification.Bidder; data << bidderNotification.Item; @@ -549,6 +552,7 @@ WorldPacket const* AuctionHelloResponse::Write() _worldPacket << Auctioneer; _worldPacket << uint32(PurchaseDeliveryDelay); _worldPacket << uint32(CancelDeliveryDelay); + _worldPacket << int32(AuctionHouseID); _worldPacket << Bits<1>(OpenForBusiness); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/AuctionHousePackets.h b/src/server/game/Server/Packets/AuctionHousePackets.h index a1e910929dd..db88408c082 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.h +++ b/src/server/game/Server/Packets/AuctionHousePackets.h @@ -125,6 +125,7 @@ namespace WorldPackets ObjectGuid ItemGuid; ObjectGuid OwnerAccountID; uint32 EndTime = 0; + uint32 Unused1110 = 0; Optional<ObjectGuid> Bidder; Optional<uint64> BidAmount; std::vector<Item::ItemGemData> Gems; @@ -134,8 +135,9 @@ namespace WorldPackets struct AuctionBidderNotification { - void Initialize(::AuctionPosting const* auction, ::Item const* item); + void Initialize(int32 auctionHouseId, ::AuctionPosting const* auction, ::Item const* item); + int32 AuctionHouseID = 0; int32 AuctionID = 0; ObjectGuid Bidder; Item::ItemInstance Item; @@ -415,6 +417,7 @@ namespace WorldPackets ObjectGuid Auctioneer; uint32 PurchaseDeliveryDelay = 0; uint32 CancelDeliveryDelay = 0; + int32 AuctionHouseID = 0; bool OpenForBusiness = true; }; diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index 1d4f92ab10c..c794021303b 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -102,7 +102,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Auth::AuthWaitInfo const& { data << uint32(waitInfo.WaitCount); data << uint32(waitInfo.WaitTime); - data << uint32(waitInfo.AllowedFactionGroupForCharacterCreate); + data << uint8(waitInfo.AllowedFactionGroupForCharacterCreate); data << WorldPackets::Bits<1>(waitInfo.HasFCM); data << WorldPackets::Bits<1>(waitInfo.CanCreateOnlyIfExisting); data.FlushBits(); @@ -361,6 +361,7 @@ WorldPacket const* WorldPackets::Auth::EnterEncryptedMode::Write() ed25519.SignWithContext(toSign, { EnableEncryptionContext.begin(), EnableEncryptionContext.end() }, signature); _worldPacket.append(signature.data(), signature.size()); + _worldPacket << int32(RegionGroup); _worldPacket << Bits<1>(Enabled); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h index 257f93fbc17..a7b8b4aea73 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -102,7 +102,7 @@ namespace WorldPackets { uint32 WaitCount = 0; ///< position of the account in the login queue uint32 WaitTime = 0; ///< Wait time in login queue in minutes, if sent queued and this value is 0 client displays "unknown time" - int32 AllowedFactionGroupForCharacterCreate = 0; + uint8 AllowedFactionGroupForCharacterCreate = 0; bool HasFCM = false; ///< true if the account has a forced character migration pending. @todo implement bool CanCreateOnlyIfExisting = false; ///< Can create characters on realm only if player has other existing characters there }; @@ -310,6 +310,7 @@ namespace WorldPackets WorldPacket const* Write() override; std::array<uint8, 32> const& EncryptionKey; + int32 RegionGroup = 0; bool Enabled = false; }; } diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp index 6f28c10782f..670347a44e8 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.cpp +++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp @@ -82,20 +82,20 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPMatchSta { data << playerData.PlayerGUID; data << uint32(playerData.Kills); + data << int32(playerData.Faction); data << uint32(playerData.DamageDone); data << uint32(playerData.HealingDone); data << uint32(playerData.Stats.size()); data << int32(playerData.PrimaryTalentTree); data << int8(playerData.Sex); - data << int32(playerData.Race); - data << int32(playerData.Class); + data << int8(playerData.Race); + data << int8(playerData.Class); data << int32(playerData.CreatureID); data << int32(playerData.HonorLevel); data << int32(playerData.Role); for (WorldPackets::Battleground::PVPMatchStatistics::PVPMatchPlayerPVPStat const& pvpStat : playerData.Stats) data << pvpStat; - data.WriteBit(playerData.Faction != 0); data.WriteBit(playerData.IsInWorld); data.WriteBit(playerData.Honor.has_value()); data.WriteBit(playerData.PreMatchRating.has_value()); @@ -203,7 +203,7 @@ WorldPacket const* WorldPackets::Battleground::BattlefieldStatusActive::Write() _worldPacket << uint32(Mapid); _worldPacket << uint32(ShutdownTimer); _worldPacket << uint32(StartTimer); - _worldPacket << Bits<1>(ArenaFaction != 0); + _worldPacket << int8(ArenaFaction); _worldPacket << Bits<1>(LeftEarly); _worldPacket << Bits<1>(Brawl); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h index f15313c6da9..4db509689f2 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.h +++ b/src/server/game/Server/Packets/BattlegroundPackets.h @@ -129,7 +129,7 @@ namespace WorldPackets { ObjectGuid PlayerGUID; uint32 Kills = 0; - uint8 Faction = 0; + int32 Faction = 0; bool IsInWorld = false; Optional<HonorData> Honor; uint32 DamageDone = 0; @@ -142,8 +142,8 @@ namespace WorldPackets std::vector<PVPMatchPlayerPVPStat> Stats; int32 PrimaryTalentTree = 0; int8 Sex = 0; - int32 Race = 0; - int32 Class = 0; + int8 Race = 0; + int8 Class = 0; int32 CreatureID = 0; int32 HonorLevel = 0; int32 Role = 0; @@ -208,7 +208,7 @@ namespace WorldPackets BattlefieldStatusHeader Hdr; uint32 ShutdownTimer = 0; - uint8 ArenaFaction = 0; + int8 ArenaFaction = 0; bool LeftEarly = false; bool Brawl = false; uint32 StartTimer = 0; diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 2a4d33569d9..7f747c533d5 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -213,6 +213,7 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfoBasi data << uint32(charInfo.Flags); data << uint32(charInfo.Flags2); data << uint32(charInfo.Flags3); + data << uint32(charInfo.Flags4); data << uint8(charInfo.CantLoginReason); data << uint32(charInfo.PetCreatureDisplayID); @@ -232,12 +233,15 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfoBasi data << int32(charInfo.TimerunningSeasonID); data << uint32(charInfo.OverrideSelectScreenFileDataID); + data << uint32(charInfo.Unused1110_1); for (ChrCustomizationChoice const& customization : charInfo.Customizations) data << customization; data << SizedString::BitsSize<6>(charInfo.Name); data << Bits<1>(charInfo.FirstLogin); + data << Bits<1>(charInfo.Unused1110_2); + data << Bits<1>(charInfo.Unused1110_3); data.FlushBits(); @@ -285,6 +289,7 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RegionwideCharact { data << charInfo.Basic; data << uint64(charInfo.Money); + data << float(charInfo.AvgEquippedItemLevel); data << float(charInfo.CurrentSeasonMythicPlusOverallScore); data << int32(charInfo.CurrentSeasonBestPvpRating); data << int8(charInfo.PvpRatingBracket); @@ -295,7 +300,7 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RegionwideCharact ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RaceUnlock const& raceUnlock) { - data << int32(raceUnlock.RaceID); + data << int8(raceUnlock.RaceID); data << Bits<1>(raceUnlock.HasUnlockedLicense); data << Bits<1>(raceUnlock.HasUnlockedAchievement); data << Bits<1>(raceUnlock.HasHeritageArmorUnlockAchievement); @@ -316,7 +321,7 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::UnlockedCondition ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RaceLimitDisableInfo const& raceLimitDisableInfo) { - data << int32(raceLimitDisableInfo.RaceID); + data << int8(raceLimitDisableInfo.RaceID); data << int32(raceLimitDisableInfo.Reason); return data; @@ -324,7 +329,7 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RaceLimitDisableI ByteBuffer& operator<<(ByteBuffer& data, WarbandGroupMember const& warbandGroupMember) { - data << int32(warbandGroupMember.WarbandScenePlacementID); + data << uint32(warbandGroupMember.WarbandScenePlacementID); data << int32(warbandGroupMember.Type); if (warbandGroupMember.Type == 0) data << warbandGroupMember.Guid; @@ -335,13 +340,19 @@ ByteBuffer& operator<<(ByteBuffer& data, WarbandGroupMember const& warbandGroupM ByteBuffer& operator<<(ByteBuffer& data, WarbandGroup const& warbandGroup) { data << uint64(warbandGroup.GroupID); - data << uint8(warbandGroup.Unknown_1100); - data << int32(warbandGroup.Flags); + data << uint8(warbandGroup.OrderIndex); + data << uint32(warbandGroup.WarbandSceneID); + data << uint32(warbandGroup.Flags); data << uint32(warbandGroup.Members.size()); for (WarbandGroupMember const& member : warbandGroup.Members) data << member; + data << SizedString::BitsSize<9>(warbandGroup.Name); + data.FlushBits(); + + data << SizedString::Data(warbandGroup.Name); + return data; } @@ -383,9 +394,6 @@ WorldPacket const* EnumCharactersResult::Write() for (RaceLimitDisableInfo const& raceLimitDisableInfo : RaceLimitDisables) _worldPacket << raceLimitDisableInfo; - for (WarbandGroup const& warbandGroup : WarbandGroups) - _worldPacket << warbandGroup; - for (CharacterInfo const& charInfo : Characters) _worldPacket << charInfo; @@ -395,6 +403,9 @@ WorldPacket const* EnumCharactersResult::Write() for (RaceUnlock const& raceUnlock : RaceUnlockData) _worldPacket << raceUnlock; + for (WarbandGroup const& warbandGroup : WarbandGroups) + _worldPacket << warbandGroup; + return &_worldPacket; } diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 8313523d56a..5d84cbb7478 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -118,7 +118,7 @@ namespace WorldPackets struct WarbandGroupMember { - int32 WarbandScenePlacementID = 0; + uint32 WarbandScenePlacementID = 0; int32 Type = 0; ObjectGuid Guid; }; @@ -126,9 +126,11 @@ namespace WorldPackets struct WarbandGroup { uint64 GroupID = 0; - uint8 Unknown_1100 = 0; - int32 Flags = 0; ///< enum WarbandGroupFlags { Collapsed = 1 } + uint8 OrderIndex = 0; + uint32 WarbandSceneID = 0; + uint32 Flags = 0; ///< enum WarbandGroupFlags { Collapsed = 1 } std::vector<WarbandGroupMember> Members; + std::string_view Name; }; class EnumCharactersResult final : public ServerPacket @@ -162,6 +164,7 @@ namespace WorldPackets uint32 Flags = 0; ///< Character flag @see enum CharacterFlags uint32 Flags2 = 0; ///< Character customization flags @see enum CharacterCustomizeFlags uint32 Flags3 = 0; ///< Character flags 3 @todo research + uint32 Flags4 = 0; ///< Character flags 4 @todo research bool FirstLogin = false; uint8 CantLoginReason = 0; Timestamp<> LastActiveTime; @@ -190,6 +193,9 @@ namespace WorldPackets std::array<VisualItemInfo, 19> VisualItems = { }; CustomTabardInfo PersonalTabard; + uint32 Unused1110_1 = 0; + bool Unused1110_2 = false; + bool Unused1110_3 = false; }; struct CharacterRestrictionAndMailData @@ -216,6 +222,7 @@ namespace WorldPackets CharacterInfoBasic Basic; uint64 Money = 0; + float AvgEquippedItemLevel = 0.0f; float CurrentSeasonMythicPlusOverallScore = 0.0f; uint32 CurrentSeasonBestPvpRating = 0; int8 PvpRatingBracket = 0; @@ -224,7 +231,7 @@ namespace WorldPackets struct RaceUnlock { - int32 RaceID = 0; + int8 RaceID = 0; bool HasUnlockedLicense = false; bool HasUnlockedAchievement = false; bool HasHeritageArmorUnlockAchievement = false; @@ -246,7 +253,7 @@ namespace WorldPackets Level }; - int32 RaceID = 0; + int8 RaceID = 0; int32 Reason = 0; }; @@ -722,9 +729,9 @@ namespace WorldPackets uint8 NewSex = 0; Array<ChrCustomizationChoice, 250> Customizations; - int32 CustomizedRace = 0; + int8 CustomizedRace = 0; int32 CustomizedChrModelID = 0; - int32 UnalteredVisualRaceID = 0; + int8 UnalteredVisualRaceID = 0; }; class BarberShopResult final : public ServerPacket diff --git a/src/server/game/Server/Packets/CollectionPackets.cpp b/src/server/game/Server/Packets/CollectionPackets.cpp index 9df53877bb8..5669d50a0c6 100644 --- a/src/server/game/Server/Packets/CollectionPackets.cpp +++ b/src/server/game/Server/Packets/CollectionPackets.cpp @@ -20,7 +20,7 @@ void WorldPackets::Collections::CollectionItemSetFavorite::Read() { - _worldPacket >> As<uint32>(Type); + _worldPacket >> As<uint8>(Type); _worldPacket >> ID; _worldPacket >> Bits<1>(IsFavorite); } diff --git a/src/server/game/Server/Packets/CombatPackets.cpp b/src/server/game/Server/Packets/CombatPackets.cpp index 51de6ecde50..e3cdc24797d 100644 --- a/src/server/game/Server/Packets/CombatPackets.cpp +++ b/src/server/game/Server/Packets/CombatPackets.cpp @@ -153,7 +153,7 @@ WorldPacket const* WorldPackets::Combat::PvPCredit::Write() _worldPacket << int32(OriginalHonor); _worldPacket << int32(Honor); _worldPacket << Target; - _worldPacket << int32(Rank); + _worldPacket << int8(Rank); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/CombatPackets.h b/src/server/game/Server/Packets/CombatPackets.h index 42424d8f18b..b42ff16a382 100644 --- a/src/server/game/Server/Packets/CombatPackets.h +++ b/src/server/game/Server/Packets/CombatPackets.h @@ -222,7 +222,7 @@ namespace WorldPackets int32 OriginalHonor = 0; int32 Honor = 0; ObjectGuid Target; - int32 Rank = 0; + int8 Rank = 0; }; class BreakTarget final : public ServerPacket diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp index 20f14eaa47e..54abd15e0e4 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.cpp +++ b/src/server/game/Server/Packets/GarrisonPackets.cpp @@ -317,7 +317,7 @@ ByteBuffer& operator<<(ByteBuffer& data, FollowerSoftCapInfo const& followerSoft WorldPacket const* GetGarrisonInfoResult::Write() { - _worldPacket << int32(FactionIndex); + _worldPacket << int8(FactionIndex); _worldPacket << uint32(Garrisons.size()); _worldPacket << uint32(FollowerSoftCaps.size()); for (FollowerSoftCapInfo const& followerSoftCapInfo : FollowerSoftCaps) diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h index 4053c784582..15d16a7a182 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.h +++ b/src/server/game/Server/Packets/GarrisonPackets.h @@ -232,7 +232,7 @@ namespace WorldPackets WorldPacket const* Write() override; - uint32 FactionIndex = 0; + int8 FactionIndex = 0; std::vector<GarrisonInfo> Garrisons; std::vector<FollowerSoftCapInfo> FollowerSoftCaps; }; diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index eddb27b988a..aefa1580c85 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -88,8 +88,8 @@ void WorldPackets::Guild::GuildUpdateMotdText::Read() WorldPacket const* WorldPackets::Guild::GuildCommandResult::Write() { - _worldPacket << int32(Result); - _worldPacket << int32(Command); + _worldPacket << uint8(Result); + _worldPacket << uint8(Command); _worldPacket << SizedString::BitsSize<8>(Name); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h index 20f3a0461f9..0cf34d7cf31 100644 --- a/src/server/game/Server/Packets/GuildPackets.h +++ b/src/server/game/Server/Packets/GuildPackets.h @@ -154,8 +154,8 @@ namespace WorldPackets WorldPacket const* Write() override; std::string Name; - int32 Result = 0; - int32 Command = 0; + uint8 Result = 0; + uint8 Command = 0; }; class AcceptGuildInvite final : public ClientPacket diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 387dab8422a..310a118b316 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -428,7 +428,7 @@ WorldPacket const* WorldPackets::Misc::RandomRoll::Write() WorldPacket const* WorldPackets::Misc::EnableBarberShop::Write() { - _worldPacket << uint8(CustomizationScope); + _worldPacket << uint32(CustomizationFeatureMask); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 53887fcf8c0..4cf942cf89f 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -556,7 +556,7 @@ namespace WorldPackets WorldPacket const* Write() override; - uint8 CustomizationScope = 0; + uint32 CustomizationFeatureMask = 0; }; struct PhaseShiftDataPhase diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 451a4235a7b..4023964a0b0 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -31,6 +31,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo) bool hasSpline = false; // todo 6.x send this infos bool hasInertia = movementInfo.inertia.has_value(); bool hasAdvFlying = movementInfo.advFlying.has_value(); + bool hasDriveStatus = movementInfo.driveStatus.has_value(); bool hasStandingOnGameObjectGUID = movementInfo.standingOnGameObjectGUID.has_value(); data << movementInfo.guid; @@ -62,6 +63,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo) data.WriteBit(false); // RemoteTimeValid data.WriteBit(hasInertia); data.WriteBit(hasAdvFlying); + data.WriteBit(hasDriveStatus); data.FlushBits(); @@ -99,6 +101,14 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo) } } + if (hasDriveStatus) + { + data.WriteBit(movementInfo.driveStatus->accelerating); + data.WriteBit(movementInfo.driveStatus->drifting); + data << float(movementInfo.driveStatus->speed); + data << float(movementInfo.driveStatus->movementAngle); + } + return data; } @@ -136,6 +146,7 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo) data.ReadBit(); // RemoteTimeValid bool hasInertia = data.ReadBit(); bool hasAdvFlying = data.ReadBit(); + bool hasDriveStatus = data.ReadBit(); if (hasTransport) data >> movementInfo.transport; @@ -176,6 +187,18 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo) } } + if (hasDriveStatus) + { + data.ResetBitPos(); + + movementInfo.driveStatus.emplace(); + + movementInfo.driveStatus->accelerating = data.ReadBit(); + movementInfo.driveStatus->drifting = data.ReadBit(); + data >> movementInfo.driveStatus->speed; + data >> movementInfo.driveStatus->movementAngle; + } + return data; } @@ -519,6 +542,9 @@ void WorldPackets::Movement::CommonMovement::WriteMovementForceWithDirection(Mov data << uint32(movementForce.TransportID); data << float(movementForce.Magnitude); data << int32(movementForce.MovementForceID); + data << int32(movementForce.Unknown1110_1); + data << int32(movementForce.Unused1110); + data << uint32(movementForce.Flags); data.WriteBits(AsUnderlyingType(movementForce.Type), 2); data.FlushBits(); } @@ -676,6 +702,7 @@ WorldPacket const* WorldPackets::Movement::TransferPending::Write() _worldPacket << OldMapPosition; _worldPacket << OptionalInit(Ship); _worldPacket << OptionalInit(TransferSpellID); + _worldPacket << OptionalInit(TaxiPathID); _worldPacket.FlushBits(); if (Ship) @@ -687,6 +714,9 @@ WorldPacket const* WorldPackets::Movement::TransferPending::Write() if (TransferSpellID) _worldPacket << int32(*TransferSpellID); + if (TaxiPathID) + _worldPacket << int32(*TaxiPathID); + return &_worldPacket; } @@ -759,6 +789,9 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementForce& movementForce) data >> movementForce.TransportID; data >> movementForce.Magnitude; data >> movementForce.MovementForceID; + data >> movementForce.Unknown1110_1; + data >> movementForce.Unused1110; + data >> movementForce.Flags; movementForce.Type = MovementForceType(data.ReadBits(2)); return data; @@ -1062,6 +1095,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MoveSetCompound data.WriteBit(stateChange.MovementForceGUID.has_value()); data.WriteBit(stateChange.MovementInertiaID.has_value()); data.WriteBit(stateChange.MovementInertiaLifetimeMs.has_value()); + data.WriteBit(stateChange.DriveCapabilityRecID.has_value()); data.FlushBits(); if (stateChange.MovementForce_) @@ -1102,6 +1136,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MoveSetCompound if (stateChange.MovementInertiaLifetimeMs) data << uint32(*stateChange.MovementInertiaLifetimeMs); + if (stateChange.DriveCapabilityRecID) + data << int32(*stateChange.DriveCapabilityRecID); + return data; } diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index 8fd12c98d4e..6e515e2390f 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -275,6 +275,7 @@ namespace WorldPackets TaggedPosition<Position::XYZ> OldMapPosition; Optional<ShipTransferPending> Ship; Optional<int32> TransferSpellID; + Optional<int32> TaxiPathID; }; class TransferAborted final : public ServerPacket @@ -728,6 +729,7 @@ namespace WorldPackets Optional<ObjectGuid> MovementForceGUID; Optional<int32> MovementInertiaID; Optional<uint32> MovementInertiaLifetimeMs; + Optional<int32> DriveCapabilityRecID; }; MoveSetCompoundState() : ServerPacket(SMSG_MOVE_SET_COMPOUND_STATE, 4 + 1) { } diff --git a/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp b/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp index 6d89d276deb..49ce38f1897 100644 --- a/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp +++ b/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp @@ -27,6 +27,7 @@ ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreMapSummary const& dungeonSc data << float(dungeonScoreMapSummary.MapScore); data << int32(dungeonScoreMapSummary.BestRunLevel); data << int32(dungeonScoreMapSummary.BestRunDurationMS); + data << uint8(dungeonScoreMapSummary.Unknown1110); data.WriteBit(dungeonScoreMapSummary.FinishedSuccess); data.FlushBits(); @@ -53,7 +54,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MythicPlusMember const& mythicPlusMembe data << uint32(mythicPlusMember.NativeRealmAddress); data << uint32(mythicPlusMember.VirtualRealmAddress); data << int32(mythicPlusMember.ChrSpecializationID); - data << int16(mythicPlusMember.RaceID); + data << int8(mythicPlusMember.RaceID); data << int32(mythicPlusMember.ItemLevel); data << int32(mythicPlusMember.CovenantID); data << int32(mythicPlusMember.SoulbindID); diff --git a/src/server/game/Server/Packets/MythicPlusPacketsCommon.h b/src/server/game/Server/Packets/MythicPlusPacketsCommon.h index c9f921a21ec..a545837d9cd 100644 --- a/src/server/game/Server/Packets/MythicPlusPacketsCommon.h +++ b/src/server/game/Server/Packets/MythicPlusPacketsCommon.h @@ -32,6 +32,7 @@ namespace WorldPackets int32 BestRunLevel = 0; int32 BestRunDurationMS = 0; bool FinishedSuccess = false; + uint8 Unknown1110 = 0; }; struct DungeonScoreSummary @@ -50,7 +51,7 @@ namespace WorldPackets uint32 NativeRealmAddress = 0; uint32 VirtualRealmAddress = 0; int32 ChrSpecializationID = 0; - int16 RaceID = 0; + int8 RaceID = 0; int32 ItemLevel = 0; int32 CovenantID = 0; int32 SoulbindID = 0; diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index babeb6b2a1e..9afa34f5e06 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -43,7 +43,7 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipOptions const& gossipOption data << int32(gossipOption.GossipOptionID); data << uint8(gossipOption.OptionNPC); data << int8(gossipOption.OptionFlags); - data << int32(gossipOption.OptionCost); + data << uint64(gossipOption.OptionCost); data << uint32(gossipOption.OptionLanguage); data << int32(gossipOption.Flags); data << int32(gossipOption.OrderIndex); diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h index 3a52d99c29f..7bf8a0f148c 100644 --- a/src/server/game/Server/Packets/NPCPackets.h +++ b/src/server/game/Server/Packets/NPCPackets.h @@ -80,7 +80,7 @@ namespace WorldPackets int32 GossipOptionID = 0; GossipOptionNpc OptionNPC = {}; uint8 OptionFlags = 0; - int32 OptionCost = 0; + uint64 OptionCost = 0; uint32 OptionLanguage = 0; GossipOptionFlags Flags = {}; int32 OrderIndex = 0; diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index 21a93515806..8f3bdd656d9 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -133,6 +133,13 @@ WorldPacket const* WorldPackets::Party::GroupDecline::Write() return &_worldPacket; } +WorldPacket const* WorldPackets::Party::GroupUninvite::Write() +{ + _worldPacket << uint8(Reason); + + return &_worldPacket; +} + void WorldPackets::Party::RequestPartyMemberStats::Read() { bool hasPartyIndex = _worldPacket.ReadBit(); @@ -176,7 +183,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyMemberAuraSta ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::CTROptions const& ctrOptions) { data << uint32(ctrOptions.ConditionalFlags); - data << int32(ctrOptions.FactionGroup); + data << int8(ctrOptions.FactionGroup); data << uint32(ctrOptions.ChromieTimeExpansionMask); return data; diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h index 71f5d0e9805..bf6074419f2 100644 --- a/src/server/game/Server/Packets/PartyPackets.h +++ b/src/server/game/Server/Packets/PartyPackets.h @@ -127,9 +127,11 @@ namespace WorldPackets class GroupUninvite final : public ServerPacket { public: - GroupUninvite() : ServerPacket(SMSG_GROUP_UNINVITE, 0) { } + GroupUninvite() : ServerPacket(SMSG_GROUP_UNINVITE, 1) { } - WorldPacket const* Write() override { return &_worldPacket; } + WorldPacket const* Write() override; + + uint8 Reason = 0; }; class RequestPartyMemberStats final : public ClientPacket @@ -179,7 +181,7 @@ namespace WorldPackets struct CTROptions { uint32 ConditionalFlags = 0; - int32 FactionGroup = 0; + int8 FactionGroup = 0; uint32 ChromieTimeExpansionMask = 0; }; diff --git a/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp b/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp index 8fa44a2c761..ced2d878efa 100644 --- a/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp +++ b/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp @@ -31,6 +31,7 @@ ByteBuffer& operator<<(ByteBuffer& data, PerksVendorItem const& perksVendorItem) data << int32(perksVendorItem.Price); data << int32(perksVendorItem.OriginalPrice); data << perksVendorItem.AvailableUntil; + data << int32(perksVendorItem.WarbandSceneID); data << Bits<1>(perksVendorItem.Disabled); data << Bits<1>(perksVendorItem.DoesNotExpire); data.FlushBits(); diff --git a/src/server/game/Server/Packets/PerksProgramPacketsCommon.h b/src/server/game/Server/Packets/PerksProgramPacketsCommon.h index f76f4403394..64b8257f330 100644 --- a/src/server/game/Server/Packets/PerksProgramPacketsCommon.h +++ b/src/server/game/Server/Packets/PerksProgramPacketsCommon.h @@ -31,6 +31,7 @@ struct PerksVendorItem int32 ItemModifiedAppearanceID = 0; int32 TransmogIllusionID = 0; int32 ToyID = 0; + int32 WarbandSceneID = 0; int32 Price = 0; int32 OriginalPrice = 0; Timestamp<> AvailableUntil; diff --git a/src/server/game/Server/Packets/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp index 6340e46f778..5af09f7aaa3 100644 --- a/src/server/game/Server/Packets/PetPackets.cpp +++ b/src/server/game/Server/Packets/PetPackets.cpp @@ -56,7 +56,7 @@ WorldPacket const* WorldPackets::Pet::PetSpells::Write() WorldPacket const* WorldPackets::Pet::PetStableResult::Write() { - _worldPacket << uint8(Result); + _worldPacket << int32(Result); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/PetPackets.h b/src/server/game/Server/Packets/PetPackets.h index 9f3bf86eab5..9f1ad9b49d9 100644 --- a/src/server/game/Server/Packets/PetPackets.h +++ b/src/server/game/Server/Packets/PetPackets.h @@ -136,7 +136,7 @@ namespace WorldPackets WorldPacket const* Write() override; - uint8 Result = 0; + int32 Result = 0; }; class PetLearnedSpells final : public ServerPacket diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp index f5e257552e2..5a86c56eef9 100644 --- a/src/server/game/Server/Packets/QueryPackets.cpp +++ b/src/server/game/Server/Packets/QueryPackets.cpp @@ -93,9 +93,9 @@ WorldPacket const* QueryCreatureResponse::Write() } _worldPacket.append(Stats.Flags.data(), Stats.Flags.size()); - _worldPacket << int32(Stats.CreatureType); + _worldPacket << uint8(Stats.CreatureType); _worldPacket << int32(Stats.CreatureFamily); - _worldPacket << int32(Stats.Classification); + _worldPacket << int8(Stats.Classification); _worldPacket.append(Stats.ProxyCreatureID.data(), Stats.ProxyCreatureID.size()); _worldPacket << uint32(Stats.Display.CreatureDisplay.size()); _worldPacket << float(Stats.Display.TotalProbability); diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h index 9ab2c74d796..64e40710c87 100644 --- a/src/server/game/Server/Packets/QueryPackets.h +++ b/src/server/game/Server/Packets/QueryPackets.h @@ -66,9 +66,9 @@ namespace WorldPackets std::string Title; std::string TitleAlt; std::string CursorName; - int32 CreatureType = 0; + uint8 CreatureType = 0; int32 CreatureFamily = 0; - int32 Classification = 0; + int8 Classification = 0; CreatureDisplayStats Display; float HpMulti = 0.0f; float EnergyMulti = 0.0f; diff --git a/src/server/game/Server/Packets/SocialPackets.cpp b/src/server/game/Server/Packets/SocialPackets.cpp index ab49dae6794..db96d09ef00 100644 --- a/src/server/game/Server/Packets/SocialPackets.cpp +++ b/src/server/game/Server/Packets/SocialPackets.cpp @@ -51,7 +51,7 @@ ByteBuffer& operator<<(ByteBuffer& data, ContactInfo const& contact) data << uint8(contact.Status); data << uint32(contact.AreaID); data << uint32(contact.Level); - data << uint32(contact.ClassID); + data << int8(contact.ClassID); data << SizedString::BitsSize<10>(contact.Notes); data.FlushBits(); @@ -94,7 +94,7 @@ WorldPacket const* FriendStatus::Write() _worldPacket << uint8(Status); _worldPacket << uint32(AreaID); _worldPacket << uint32(Level); - _worldPacket << uint32(ClassID); + _worldPacket << int8(ClassID); _worldPacket << SizedString::BitsSize<10>(Notes); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/SocialPackets.h b/src/server/game/Server/Packets/SocialPackets.h index 9ee43e163b1..ff18b0de565 100644 --- a/src/server/game/Server/Packets/SocialPackets.h +++ b/src/server/game/Server/Packets/SocialPackets.h @@ -52,7 +52,7 @@ namespace WorldPackets uint8 Status = 0; ///< @see enum FriendStatus uint32 AreaID = 0; uint32 Level = 0; - uint32 ClassID = CLASS_NONE; + int8 ClassID = CLASS_NONE; }; class ContactList final : public ServerPacket @@ -77,7 +77,7 @@ namespace WorldPackets uint32 VirtualRealmAddress = 0; std::string Notes; - uint32 ClassID = CLASS_NONE; + int8 ClassID = CLASS_NONE; uint8 Status = 0; ///< @see enum FriendStatus ObjectGuid Guid; ObjectGuid WowAccountGuid; diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index 58e0bd45ad8..90de14da4df 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -94,6 +94,7 @@ ByteBuffer& operator<<(ByteBuffer& data, AuraDataInfo const& auraData) data << uint16(auraData.CastLevel); data << uint8(auraData.Applications); data << int32(auraData.ContentTuningID); + data << auraData.DstLocation; data << OptionalInit(auraData.CastUnit); data << OptionalInit(auraData.Duration); data << OptionalInit(auraData.Remaining); @@ -128,7 +129,7 @@ ByteBuffer& operator<<(ByteBuffer& data, AuraDataInfo const& auraData) ByteBuffer& operator<<(ByteBuffer& data, AuraInfo const& aura) { - data << aura.Slot; + data << uint16(aura.Slot); data << OptionalInit(aura.AuraData); data.FlushBits(); diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index 30d9f8505b5..14ade1c2a71 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -172,11 +172,12 @@ namespace WorldPackets Optional<float> TimeMod; std::vector<float> Points; std::vector<float> EstimatedPoints; + TaggedPosition<Position::XYZ> DstLocation; }; struct AuraInfo { - uint8 Slot = 0; + uint16 Slot = 0; Optional<AuraDataInfo> AuraData; }; diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index c6f7b85fcd4..e8c2f899349 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -90,10 +90,16 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket << int16(NameLookupTelemetryInterval); _worldPacket << NotFoundCacheTimeSeconds; + _worldPacket << uint32(RealmPvpTypeOverride); + _worldPacket << int32(AddonChatThrottle.MaxTries); _worldPacket << int32(AddonChatThrottle.TriesRestoredPerSecond); _worldPacket << int32(AddonChatThrottle.UsedTriesPerMessage); + _worldPacket << float(AddonPerformanceMsgWarning); + _worldPacket << float(AddonPerformanceMsgError); + _worldPacket << float(AddonPerformanceMsgOverall); + for (GameRuleValuePair const& gameRuleValue : GameRules) _worldPacket << gameRuleValue; @@ -156,6 +162,7 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket << Bits<1>(false); // unused 11.0.7 _worldPacket << Bits<1>(LobbyMatchmakerQueueFromMainlineEnabled); _worldPacket << Bits<1>(CanSendLobbyMatchmakerPartyCustomizations); + _worldPacket << Bits<1>(AddonProfilerEnabled); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 55ce924388a..405f96bbd9a 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -180,6 +180,7 @@ namespace WorldPackets bool IsAccountCurrencyTransferEnabled = false; bool LobbyMatchmakerQueueFromMainlineEnabled = false; bool CanSendLobbyMatchmakerPartyCustomizations = false; + bool AddonProfilerEnabled = false; SocialQueueConfig QuickJoinConfig; SquelchInfo Squelch; @@ -189,6 +190,10 @@ namespace WorldPackets int32 RemainingTimerunningSeasonSeconds = 0; std::string Unknown1027; // related to movement lua functions used by keybinds AddonChatThrottleParams AddonChatThrottle; + uint32 RealmPvpTypeOverride = 0; ///< Use Cfg_Configs value = 0, ForceEnabled = 1, ForceDisabled = 2 + float AddonPerformanceMsgWarning = 0.0f; + float AddonPerformanceMsgError = 0.0f; + float AddonPerformanceMsgOverall = 0.0f; }; struct DebugTimeEventInfo diff --git a/src/server/game/Server/Packets/WhoPackets.h b/src/server/game/Server/Packets/WhoPackets.h index 39f9c8bb272..7f88393098b 100644 --- a/src/server/game/Server/Packets/WhoPackets.h +++ b/src/server/game/Server/Packets/WhoPackets.h @@ -54,7 +54,7 @@ namespace WorldPackets struct WhoRequestServerInfo { - int32 FactionGroup = 0; + uint8 FactionGroup = 0; int32 Locale = 0; uint32 RequesterVirtualRealmAddress = 0; }; |
