diff options
| author | Shauren <shauren.trinity@gmail.com> | 2025-06-18 11:37:07 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-06-18 11:37:07 +0200 |
| commit | ceb8d561b44579118b109a9ff71ba415df53bbdc (patch) | |
| tree | b2a6b87afa6a2b83b8040b8632a87cb9a8308775 /src/server/game/Server/Packets | |
| parent | e02e8a474244c229cc34c4efb987e24b6dd417f5 (diff) | |
Core: Updated to 11.1.7
Diffstat (limited to 'src/server/game/Server/Packets')
20 files changed, 113 insertions, 32 deletions
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index e5ab6678fd8..3c22fd4084d 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -360,8 +360,8 @@ WorldPacket const* EnterEncryptedMode::Write() ed25519.SignWithContext(toSign, { EnableEncryptionContext.begin(), EnableEncryptionContext.end() }, signature); - _worldPacket.append(signature.data(), signature.size()); _worldPacket << int32(RegionGroup); + _worldPacket.append(signature.data(), signature.size()); _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 e6a7a96f8ae..0f6cb281373 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -307,15 +307,15 @@ namespace WorldPackets static bool InitializeEncryption(); static void ShutdownEncryption(); - explicit EnterEncryptedMode(std::array<uint8, 32> const& encryptionKey, bool enabled) : ServerPacket(SMSG_ENTER_ENCRYPTED_MODE, 256 + 1), + explicit EnterEncryptedMode(std::array<uint8, 32> const& encryptionKey, bool enabled) : ServerPacket(SMSG_ENTER_ENCRYPTED_MODE, 4 + 256 + 1), EncryptionKey(encryptionKey), Enabled(enabled) { } WorldPacket const* Write() override; - std::array<uint8, 32> const& EncryptionKey; int32 RegionGroup = 0; + std::array<uint8, 32> const& EncryptionKey; bool Enabled = false; }; diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 7935dba4cde..88a897400aa 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -617,9 +617,10 @@ WorldPacket const* UndeleteCharacterResponse::Write() WorldPacket const* UndeleteCooldownStatusResponse::Write() { - _worldPacket << Bits<1>(OnCooldown); _worldPacket << uint32(MaxCooldown); _worldPacket << uint32(CurrentCooldown); + _worldPacket << Bits<1>(OnCooldown); + _worldPacket.FlushBits(); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index d123b269406..5a78c17d976 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -532,9 +532,9 @@ namespace WorldPackets WorldPacket const* Write() override; - bool OnCooldown = false; ///< uint32 MaxCooldown = 0; ///< Max. cooldown until next free character restoration. Displayed in undelete confirm message. (in sec) uint32 CurrentCooldown = 0; ///< Current cooldown until next free character restoration. (in sec) + bool OnCooldown = false; ///< }; class PlayerLogin final : public ClientPacket diff --git a/src/server/game/Server/Packets/ClientConfigPackets.cpp b/src/server/game/Server/Packets/ClientConfigPackets.cpp index dd99efb4685..505f7f8e900 100644 --- a/src/server/game/Server/Packets/ClientConfigPackets.cpp +++ b/src/server/game/Server/Packets/ClientConfigPackets.cpp @@ -73,6 +73,15 @@ void UserClientUpdateAccountData::Read() _worldPacket.rpos(pos + compressedSize); } +WorldPacket const* UpdateAccountDataComplete::Write() +{ + _worldPacket << Player; + _worldPacket << int32(DataType); + _worldPacket << int32(Result); + + return &_worldPacket; +} + void SetAdvancedCombatLogging::Read() { _worldPacket >> Bits<1>(Enable); diff --git a/src/server/game/Server/Packets/ClientConfigPackets.h b/src/server/game/Server/Packets/ClientConfigPackets.h index 60e09afff52..22be7aaa1d1 100644 --- a/src/server/game/Server/Packets/ClientConfigPackets.h +++ b/src/server/game/Server/Packets/ClientConfigPackets.h @@ -87,6 +87,18 @@ namespace WorldPackets std::span<uint8 const> CompressedData; }; + class UpdateAccountDataComplete final : public ServerPacket + { + public: + explicit UpdateAccountDataComplete() : ServerPacket(SMSG_UPDATE_ACCOUNT_DATA_COMPLETE, 16 + 4 + 4) { } + + WorldPacket const* Write() override; + + ObjectGuid Player; + int32 DataType = 0; ///< @see enum AccountDataType + int32 Result = 0; + }; + class SetAdvancedCombatLogging final : public ClientPacket { public: diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index 72c67e33256..d3b01ea4f1c 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -77,6 +77,7 @@ bool ContentTuningParams::GenerateDataForUnits<Creature, Player>(Creature* attac if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(creatureDifficulty->ContentTuningID)) { ScalingHealthItemLevelCurveID = contentTuning->HealthItemLevelCurveID; + ScalingHealthPrimaryStatCurveID = contentTuning->HealthPrimaryStatCurveID; TargetContentTuningID = contentTuning->ID; } TargetLevel = target->GetLevel(); @@ -98,6 +99,7 @@ bool ContentTuningParams::GenerateDataForUnits<Player, Creature>(Player* attacke if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(creatureDifficulty->ContentTuningID)) { ScalingHealthItemLevelCurveID = contentTuning->HealthItemLevelCurveID; + ScalingHealthPrimaryStatCurveID = contentTuning->HealthPrimaryStatCurveID; TargetContentTuningID = contentTuning->ID; } TargetLevel = target->GetLevel(); @@ -179,14 +181,17 @@ ByteBuffer& operator<<(ByteBuffer& data, ContentTuningParams const& contentTunin data << float(contentTuningParams.PlayerItemLevel); data << float(contentTuningParams.TargetItemLevel); data << int16(contentTuningParams.PlayerLevelDelta); - data << uint32(contentTuningParams.ScalingHealthItemLevelCurveID); + data << int32(contentTuningParams.ScalingHealthItemLevelCurveID); + data << int32(contentTuningParams.Unused1117); + data << int32(contentTuningParams.ScalingHealthPrimaryStatCurveID); data << uint8(contentTuningParams.TargetLevel); data << uint8(contentTuningParams.Expansion); data << int8(contentTuningParams.TargetScalingLevelDelta); data << uint32(contentTuningParams.Flags); data << int32(contentTuningParams.PlayerContentTuningID); data << int32(contentTuningParams.TargetContentTuningID); - data << int32(contentTuningParams.Unused927); + data << int32(contentTuningParams.TargetHealingContentTuningID); + data << float(contentTuningParams.PlayerPrimaryStatToExpectedRatio); data << Bits<4>(contentTuningParams.Type); data.FlushBits(); diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.h b/src/server/game/Server/Packets/CombatLogPacketsCommon.h index cc9294dfe4f..235bb50ac48 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.h +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.h @@ -57,9 +57,12 @@ namespace WorldPackets { TYPE_CREATURE_TO_PLAYER_DAMAGE = 1, TYPE_PLAYER_TO_CREATURE_DAMAGE = 2, - TYPE_CREATURE_TO_CREATURE_DAMAGE = 4, - TYPE_PLAYER_TO_PLAYER_SANDBOX_SCALING = 7, // NYI - TYPE_PLAYER_TO_PLAYER_EXPECTED_STAT = 8, + TYPE_CREATURE_TO_PLAYER_HEALING = 3, + TYPE_PLAYER_TO_CREATURE_HEALING = 4, + TYPE_CREATURE_TO_CREATURE_DAMAGE = 5, + TYPE_CREATURE_TO_CREATURE_HEALING = 6, + TYPE_PLAYER_TO_PLAYER_DAMAGE = 7, // NYI + TYPE_PLAYER_TO_PLAYER_HEALING = 8, }; enum ContentTuningFlags : uint32 @@ -72,14 +75,17 @@ namespace WorldPackets int16 PlayerLevelDelta = 0; float PlayerItemLevel = 0; float TargetItemLevel = 0; - uint32 ScalingHealthItemLevelCurveID = 0; + int32 ScalingHealthItemLevelCurveID = 0; + int32 Unused1117 = 0; + int32 ScalingHealthPrimaryStatCurveID = 0; uint8 TargetLevel = 0; uint8 Expansion = 0; int8 TargetScalingLevelDelta = 0; uint32 Flags = NO_LEVEL_SCALING | NO_ITEM_LEVEL_SCALING; int32 PlayerContentTuningID = 0; int32 TargetContentTuningID = 0; - int32 Unused927 = 0; + int32 TargetHealingContentTuningID = 0; // direct heal only, not periodic + float PlayerPrimaryStatToExpectedRatio = 1.0f; template<class T, class U> bool GenerateDataForUnits(T* attacker, U* target); diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp index b773a5d64c0..1e6bc914d05 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.cpp +++ b/src/server/game/Server/Packets/GarrisonPackets.cpp @@ -49,9 +49,9 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonPlotInfo const& plotInfo) ByteBuffer& operator<<(ByteBuffer& data, GarrisonBuildingInfo const& buildingInfo) { + data << buildingInfo.TimeBuilt; data << uint32(buildingInfo.GarrPlotInstanceID); data << uint32(buildingInfo.GarrBuildingID); - data << buildingInfo.TimeBuilt; data << uint32(buildingInfo.CurrentGarSpecID); data << buildingInfo.TimeSpecCooldown; data << Bits<1>(buildingInfo.Active); diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h index 402c95f2704..3e2df57f33d 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.h +++ b/src/server/game/Server/Packets/GarrisonPackets.h @@ -73,9 +73,9 @@ namespace WorldPackets struct GarrisonBuildingInfo { + Timestamp<> TimeBuilt; uint32 GarrPlotInstanceID = 0; uint32 GarrBuildingID = 0; - Timestamp<> TimeBuilt; uint32 CurrentGarSpecID = 0; Timestamp<> TimeSpecCooldown = time_t(2288912640); // 06/07/1906 18:35:44 - another in the series of magic blizz dates bool Active = false; diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index 06d654bef9a..e3701a7d09e 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -517,12 +517,11 @@ void RequestGuildPartyState::Read() WorldPacket const* GuildPartyState::Write() { - _worldPacket << Bits<1>(InGuildParty); - _worldPacket.FlushBits(); - _worldPacket << int32(NumMembers); _worldPacket << int32(NumRequired); _worldPacket << float(GuildXPEarnedMult); + _worldPacket << Bits<1>(InGuildParty); + _worldPacket.FlushBits(); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp index a1973f8a1ff..eafb7219b7b 100644 --- a/src/server/game/Server/Packets/InstancePackets.cpp +++ b/src/server/game/Server/Packets/InstancePackets.cpp @@ -36,9 +36,9 @@ WorldPacket const* UpdateInstanceOwnership::Write() ByteBuffer& operator<<(ByteBuffer& data, InstanceLock const& lockInfos) { + data << uint64(lockInfos.InstanceID); data << uint32(lockInfos.MapID); data << uint32(lockInfos.DifficultyID); - data << uint64(lockInfos.InstanceID); data << uint32(lockInfos.TimeRemaining); data << uint32(lockInfos.CompletedMask); diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index dc49cc30113..f6351382dd5 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -235,8 +235,8 @@ void SetDungeonDifficulty::Read() void SetRaidDifficulty::Read() { - _worldPacket >> DifficultyID; _worldPacket >> Legacy; + _worldPacket >> DifficultyID; } WorldPacket const* DungeonDifficultySet::Write() @@ -248,8 +248,8 @@ WorldPacket const* DungeonDifficultySet::Write() WorldPacket const* RaidDifficultySet::Write() { + _worldPacket << int32(Legacy); _worldPacket << int32(DifficultyID); - _worldPacket << uint8(Legacy); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 45a3ad386fa..83b4dfb3a74 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -284,8 +284,8 @@ namespace WorldPackets void Read() override; + int32 Legacy = 0; int32 DifficultyID = 0; - uint8 Legacy = 0; }; class DungeonDifficultySet final : public ServerPacket @@ -305,8 +305,8 @@ namespace WorldPackets WorldPacket const* Write() override; + int32 Legacy = 0; int32 DifficultyID = 0; - uint8 Legacy = 0; }; class CorpseReclaimDelay : public ServerPacket diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 356e1c4c409..b9796743e6c 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -149,10 +149,11 @@ 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); + data.WriteBit(movementInfo.driveStatus->accelerating); + data.WriteBit(movementInfo.driveStatus->drifting); + data.FlushBits(); } return data; @@ -239,10 +240,10 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo) movementInfo.driveStatus.emplace(); - movementInfo.driveStatus->accelerating = data.ReadBit(); - movementInfo.driveStatus->drifting = data.ReadBit(); data >> movementInfo.driveStatus->speed; data >> movementInfo.driveStatus->movementAngle; + movementInfo.driveStatus->accelerating = data.ReadBit(); + movementInfo.driveStatus->drifting = data.ReadBit(); } return data; @@ -305,6 +306,15 @@ ByteBuffer& operator<<(ByteBuffer& data, MonsterSplineJumpExtraData const& jumpE return data; } +ByteBuffer& operator<<(ByteBuffer& data, MonsterSplineTurnData const& turnData) +{ + data << float(turnData.StartFacing); + data << float(turnData.TotalTurnRads); + data << float(turnData.RadsPerSec); + + return data; +} + ByteBuffer& operator<<(ByteBuffer& data, MonsterSplineAnimTierTransition const& animTierTransition) { data << int32(animTierTransition.TierTransitionID); @@ -344,6 +354,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementSpline const& movementSpline) data << OptionalInit(movementSpline.SplineFilter); data << OptionalInit(movementSpline.SpellEffectExtraData); data << OptionalInit(movementSpline.JumpExtraData); + data << OptionalInit(movementSpline.TurnData); data << OptionalInit(movementSpline.AnimTierTransition); data << OptionalInit(movementSpline.Unknown901); data.FlushBits(); @@ -377,6 +388,9 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementSpline const& movementSpline) if (movementSpline.JumpExtraData) data << *movementSpline.JumpExtraData; + if (movementSpline.TurnData) + data << *movementSpline.TurnData; + if (movementSpline.AnimTierTransition) data << *movementSpline.AnimTierTransition; @@ -390,6 +404,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementMonsterSpline const& movementMo { data << movementMonsterSpline.ID; data << Bits<1>(movementMonsterSpline.CrzTeleport); + data << Bits<1>(movementMonsterSpline.StopUseFaceDirection); data << Bits<3>(movementMonsterSpline.StopSplineStyle); data << movementMonsterSpline.Move; @@ -434,6 +449,7 @@ void CommonMovement::WriteCreateObjectSplineDataBlock(::Movement::MoveSpline con data << OptionalInit(moveSpline.spell_effect_extra); // HasSpellEffectExtraData bool hasJumpExtraData = moveSpline.splineflags.Parabolic && (!moveSpline.spell_effect_extra || moveSpline.effect_start_time); data << Bits<1>(hasJumpExtraData); + data << OptionalInit(moveSpline.turn); // HasTurnData data << OptionalInit(moveSpline.anim_tier); // HasAnimTierTransition data.WriteBit(false); // HasUnknown901 data.FlushBits(); @@ -492,6 +508,13 @@ void CommonMovement::WriteCreateObjectSplineDataBlock(::Movement::MoveSpline con data << uint32(0); // Duration (override) } + if (moveSpline.turn) + { + data << float(moveSpline.turn->StartFacing); + data << float(moveSpline.turn->TotalTurnRads); + data << float(moveSpline.turn->RadsPerSec); + } + if (moveSpline.anim_tier) { data << int32(moveSpline.anim_tier->TierTransitionId); @@ -584,6 +607,14 @@ void MonsterMove::InitializeSplineData(::Movement::MoveSpline const& moveSpline) movementSpline.JumpExtraData->StartTime = moveSpline.effect_start_time; } + if (moveSpline.turn) + { + MonsterSplineTurnData& turn = movementSpline.TurnData.emplace(); + turn.StartFacing = moveSpline.turn->StartFacing; + turn.TotalTurnRads = moveSpline.turn->TotalTurnRads; + turn.RadsPerSec = moveSpline.turn->RadsPerSec; + } + if (splineFlags.FadeObject) movementSpline.FadeObjectTime = moveSpline.effect_start_time; diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index a6f628184d2..8ad8b641cf5 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -90,6 +90,13 @@ namespace WorldPackets uint32 Duration = 0; }; + struct MonsterSplineTurnData + { + float StartFacing = 0.0f; + float TotalTurnRads = 0.0f; + float RadsPerSec = 0.0f; + }; + struct MonsterSplineAnimTierTransition { int32 TierTransitionID = 0; @@ -127,6 +134,7 @@ namespace WorldPackets Optional<MonsterSplineFilter> SplineFilter; Optional<MonsterSplineSpellEffectExtraData> SpellEffectExtraData; Optional<MonsterSplineJumpExtraData> JumpExtraData; + Optional<MonsterSplineTurnData> TurnData; Optional<MonsterSplineAnimTierTransition> AnimTierTransition; Optional<MonsterSplineUnknown901> Unknown901; float FaceDirection = 0.0f; @@ -138,6 +146,7 @@ namespace WorldPackets { uint32 ID = 0; bool CrzTeleport = false; + bool StopUseFaceDirection = false; uint8 StopSplineStyle = 0; // Determines how far from spline destination the mover is allowed to stop in place 0, 0, 3.0, 2.76, numeric_limits<float>::max, 1.1, float(INT_MAX); default before this field existed was distance 3.0 (index 2) MovementSpline Move; }; diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index 496426b2a58..fa559dbef04 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -479,8 +479,8 @@ ByteBuffer& operator<<(ByteBuffer& data, PartyPlayerInfo const& playerInfo) ByteBuffer& operator<<(ByteBuffer& data, PartyLFGInfo const& lfgInfos) { - data << uint8(lfgInfos.MyFlags); data << uint32(lfgInfos.Slot); + data << uint8(lfgInfos.MyFlags); data << uint32(lfgInfos.MyRandomSlot); data << uint8(lfgInfos.MyPartialClear); data << float(lfgInfos.MyGearDiff); diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h index 2dd627a32ac..8c287fe8b12 100644 --- a/src/server/game/Server/Packets/PartyPackets.h +++ b/src/server/game/Server/Packets/PartyPackets.h @@ -395,7 +395,7 @@ namespace WorldPackets explicit SetPartyAssignment(WorldPacket&& packet) : ClientPacket(CMSG_SET_PARTY_ASSIGNMENT, std::move(packet)) { } void Read() override; - uint8 Assignment = 0; + int32 Assignment = 0; Optional<uint8> PartyIndex; ObjectGuid Target; bool Set = false; @@ -525,15 +525,15 @@ namespace WorldPackets struct PartyLFGInfo { - uint8 MyFlags = 0; uint32 Slot = 0; - uint8 BootCount = 0; + uint8 MyFlags = 0; uint32 MyRandomSlot = 0; - bool Aborted = false; uint8 MyPartialClear = 0; float MyGearDiff = 0.0f; uint8 MyStrangerCount = 0; uint8 MyKickVoteCount = 0; + uint8 BootCount = 0; + bool Aborted = false; bool MyFirstReward = false; }; diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index 5bf9641f793..d3414c11436 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -22,7 +22,6 @@ namespace WorldPackets::System { ByteBuffer& operator<<(ByteBuffer& data, SocialQueueConfig const& socialQueueConfig) { - data << Bits<1>(socialQueueConfig.ToastsDisabled); data << float(socialQueueConfig.ToastDuration); data << float(socialQueueConfig.DelayDuration); data << float(socialQueueConfig.QueueMultiplier); @@ -45,6 +44,8 @@ ByteBuffer& operator<<(ByteBuffer& data, SocialQueueConfig const& socialQueueCon data << float(socialQueueConfig.ThrottleRfIlvlScalingAbove); data << float(socialQueueConfig.ThrottleDfMaxItemLevel); data << float(socialQueueConfig.ThrottleDfBestPriority); + data << Bits<1>(socialQueueConfig.ToastsDisabled); + data.FlushBits(); return data; } @@ -212,6 +213,8 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket << Bits<1>(LobbyMatchmakerQueueFromMainlineEnabled); _worldPacket << Bits<1>(CanSendLobbyMatchmakerPartyCustomizations); _worldPacket << Bits<1>(AddonProfilerEnabled); + _worldPacket << Bits<1>(false); // unused 11.1.7 + _worldPacket << Bits<1>(false); // unused 11.1.7 _worldPacket.FlushBits(); @@ -270,6 +273,10 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write() _worldPacket << Bits<1>(BNSendGameDataUseV2Services); _worldPacket << Bits<1>(CharacterSelectListModeRealmless); + _worldPacket << Bits<1>(WowTokenLimitedMode); + _worldPacket << Bits<1>(false); // unused 11.1.7 + _worldPacket << Bits<1>(false); // unused 11.1.7 + _worldPacket << Bits<1>(PandarenLevelBoostAllowed); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 42d40c4cf60..9a3cd43350d 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -237,6 +237,8 @@ namespace WorldPackets bool BNSendWhisperUseV2Services = true; ///< BNSendWhisper will send to v2.WhisperService instead of v1.NotificationService bool BNSendGameDataUseV2Services = true; ///< BNSendGameData will send to v2.NotificationService instead of v1.NotificationService bool CharacterSelectListModeRealmless = false; + bool WowTokenLimitedMode = false; // classic only + bool PandarenLevelBoostAllowed = false; // classic only Optional<EuropaTicketConfig> EuropaTicketSystemStatus; std::vector<int32> LiveRegionCharacterCopySourceRegions; uint32 CommercePricePollTimeSeconds = 0; // NYI |
