diff options
| author | Shauren <shauren.trinity@gmail.com> | 2020-12-06 18:14:46 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2020-12-08 18:16:47 +0100 |
| commit | 96d340f70ccef57fad177a24ca099055d7dce04d (patch) | |
| tree | ce59c2f5c9ae3e7c161268796987a0929c91bd71 /src/server/game/Server | |
| parent | b82a3a557a7bf13d48342ea189325550059b622d (diff) | |
Core/PacketIO: Updated packet structures to 9.0.2
Diffstat (limited to 'src/server/game/Server')
10 files changed, 51 insertions, 24 deletions
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 4353e10d403..dba55c66ac2 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -163,6 +163,8 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo::Vi ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo const& charInfo) { + ASSERT(charInfo.MailSenders.size() == charInfo.MailSenderTypes.size()); + data << charInfo.Guid; data << uint64(charInfo.GuildClubMemberID); data << uint8(charInfo.ListPosition); @@ -194,11 +196,15 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo con data << uint32(charInfo.LastLoginVersion); data << uint32(charInfo.Flags4); data << uint32(charInfo.MailSenders.size()); + data << uint32(charInfo.MailSenderTypes.size()); data << uint32(charInfo.OverrideSelectScreenFileDataID); - for (ChrCustomizationChoice customization : charInfo.Customizations) + for (ChrCustomizationChoice const& customization : charInfo.Customizations) data << customization; + if (!charInfo.MailSenderTypes.empty()) + data.append(charInfo.MailSenderTypes.data(), charInfo.MailSenderTypes.size()); + data.WriteBits(charInfo.Name.length(), 6); data.WriteBit(charInfo.FirstLogin); data.WriteBit(charInfo.BoostInProgress); @@ -244,6 +250,7 @@ WorldPacket const* EnumCharactersResult::Write() _worldPacket.WriteBit(Success); _worldPacket.WriteBit(IsDeletedCharacters); _worldPacket.WriteBit(IsNewPlayerRestrictionSkipped); + _worldPacket.WriteBit(IsNewPlayerRestricted); _worldPacket.WriteBit(IsNewPlayer); _worldPacket.WriteBit(DisabledClassesMask.is_initialized()); _worldPacket.WriteBit(IsAlliedRacesCreationAllowed); diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 2cfc28b3e09..0847720436c 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -161,6 +161,7 @@ namespace WorldPackets std::array<VisualItemInfo, 23> VisualItems = { }; std::vector<std::string> MailSenders; + std::vector<uint32> MailSenderTypes; }; struct RaceUnlock @@ -184,6 +185,7 @@ namespace WorldPackets bool Success = false; ///< bool IsDeletedCharacters = false; ///< used for character undelete list bool IsNewPlayerRestrictionSkipped = false; ///< allows client to skip new player restrictions + bool IsNewPlayerRestricted = false; ///< forbids using level boost and class trials bool IsNewPlayer = false; ///< forbids hero classes and allied races bool IsAlliedRacesCreationAllowed = false; diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp index cfdb4b39f40..390fb70170e 100644 --- a/src/server/game/Server/Packets/CombatLogPackets.cpp +++ b/src/server/game/Server/Packets/CombatLogPackets.cpp @@ -352,7 +352,7 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write() attackRoundInfo << float(ContentTuning.PlayerItemLevel); attackRoundInfo << float(ContentTuning.TargetItemLevel); attackRoundInfo << uint16(ContentTuning.ScalingHealthItemLevelCurveID); - attackRoundInfo << uint8(ContentTuning.ScalesWithItemLevel ? 1 : 0); + attackRoundInfo << uint32(ContentTuning.Flags); WriteLogDataBit(); FlushBits(); diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index 7a48a3ed2da..47d806aef30 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -177,8 +177,8 @@ ByteBuffer& operator<<(ByteBuffer& data, ContentTuningParams const& contentTunin data << uint8(contentTuningParams.TargetMinScalingLevel); data << uint8(contentTuningParams.TargetMaxScalingLevel); data << int8(contentTuningParams.TargetScalingLevelDelta); + data << uint32(contentTuningParams.Flags); data.WriteBits(contentTuningParams.Type, 4); - data.WriteBit(contentTuningParams.ScalesWithItemLevel); data.FlushBits(); return data; } diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.h b/src/server/game/Server/Packets/CombatLogPacketsCommon.h index 298d478cc94..c08298b0f58 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.h +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.h @@ -52,11 +52,17 @@ namespace WorldPackets { enum ContentTuningType : uint32 { - TYPE_PLAYER_TO_PLAYER = 7, // NYI - TYPE_PLAYER_TO_PLAYER_HEALING = 8, - TYPE_CREATURE_TO_PLAYER_DAMAGE = 1, - TYPE_PLAYER_TO_CREATURE_DAMAGE = 2, - TYPE_CREATURE_TO_CREATURE_DAMAGE = 4 + 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, + }; + + enum ContentTuningFlags : uint32 + { + NO_LEVEL_SCALING = 0x1, + NO_ITEM_LEVEL_SCALING = 0x2 }; uint32 Type = 0; @@ -69,7 +75,7 @@ namespace WorldPackets uint8 TargetMinScalingLevel = 0; uint8 TargetMaxScalingLevel = 0; int8 TargetScalingLevelDelta = 0; - bool ScalesWithItemLevel = false; + uint32 Flags = NO_LEVEL_SCALING | NO_ITEM_LEVEL_SCALING; 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 55f778b39b6..a6cbf89ba15 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.cpp +++ b/src/server/game/Server/Packets/GarrisonPackets.cpp @@ -108,12 +108,17 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonMission const& mission) ByteBuffer& operator<<(ByteBuffer& data, GarrisonMissionReward const& missionRewardItem) { data << int32(missionRewardItem.ItemID); - data << uint32(missionRewardItem.Quantity); + data << uint32(missionRewardItem.ItemQuantity); data << int32(missionRewardItem.CurrencyID); data << uint32(missionRewardItem.CurrencyQuantity); data << uint32(missionRewardItem.FollowerXP); - data << uint32(missionRewardItem.BonusAbilityID); - data << int32(missionRewardItem.Unknown); + data << uint32(missionRewardItem.GarrMssnBonusAbilityID); + data << int32(missionRewardItem.ItemFileDataID); + data.WriteBit(missionRewardItem.ItemInstance.is_initialized()); + data.FlushBits(); + + if (missionRewardItem.ItemInstance) + data << *missionRewardItem.ItemInstance; return data; } @@ -219,17 +224,9 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonInfo const& garrison) for (std::vector<GarrisonMissionReward> const& missionReward : garrison.MissionRewards) data << uint32(missionReward.size()); - for (std::vector<GarrisonMissionReward> const& missionReward : garrison.MissionRewards) - for (GarrisonMissionReward const& missionRewardItem : missionReward) - data << missionRewardItem; - for (std::vector<GarrisonMissionReward> const& missionReward : garrison.MissionOvermaxRewards) data << uint32(missionReward.size()); - for (std::vector<GarrisonMissionReward> const& missionReward : garrison.MissionOvermaxRewards) - for (GarrisonMissionReward const& missionRewardItem : missionReward) - data << missionRewardItem; - for (GarrisonMissionBonusAbility const* areaBonus : garrison.MissionAreaBonuses) data << *areaBonus; @@ -259,6 +256,14 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonInfo const& garrison) for (GarrisonTalent const& talent : garrison.Talents) data << talent; + for (std::vector<GarrisonMissionReward> const& missionReward : garrison.MissionRewards) + for (GarrisonMissionReward const& missionRewardItem : missionReward) + data << missionRewardItem; + + for (std::vector<GarrisonMissionReward> const& missionReward : garrison.MissionOvermaxRewards) + for (GarrisonMissionReward const& missionRewardItem : missionReward) + data << missionRewardItem; + return data; } diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h index cb33d51ff42..69fc2f14229 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.h +++ b/src/server/game/Server/Packets/GarrisonPackets.h @@ -19,6 +19,7 @@ #define GarrisonPackets_h__ #include "Packet.h" +#include "ItemPacketsCommon.h" #include "ObjectGuid.h" #include "Optional.h" #include "Position.h" @@ -119,12 +120,13 @@ namespace WorldPackets struct GarrisonMissionReward { int32 ItemID = 0; - uint32 Quantity = 0; + uint32 ItemQuantity = 0; int32 CurrencyID = 0; uint32 CurrencyQuantity = 0; uint32 FollowerXP = 0; - uint32 BonusAbilityID = 0; - int32 Unknown = 0; + uint32 GarrMssnBonusAbilityID = 0; + int32 ItemFileDataID = 0; + Optional<Item::ItemInstance> ItemInstance; }; struct GarrisonMissionBonusAbility diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index 770a7bb7ea3..951a5f152b8 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -80,12 +80,16 @@ WorldPacket const* GossipMessage::Write() _worldPacket.WriteBits(options.Text.size(), 12); _worldPacket.WriteBits(options.Confirm.size(), 12); _worldPacket.WriteBits(AsUnderlyingType(options.Status), 2); + _worldPacket.WriteBit(options.SpellID.is_initialized()); _worldPacket.FlushBits(); _worldPacket << options.Treasure; _worldPacket.WriteString(options.Text); _worldPacket.WriteString(options.Confirm); + + if (options.SpellID) + _worldPacket << int32(*options.SpellID); } for (ClientGossipText const& text : GossipText) diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h index c5d57b31efc..b3f85e218ed 100644 --- a/src/server/game/Server/Packets/NPCPackets.h +++ b/src/server/game/Server/Packets/NPCPackets.h @@ -70,6 +70,7 @@ namespace WorldPackets std::string Text; std::string Confirm; TreasureLootList Treasure; + Optional<int32> SpellID; }; struct ClientGossipText diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index 72388d1b98c..74a73352086 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -411,7 +411,7 @@ WorldPacket const* WorldPackets::Party::RolePollInform::Write() WorldPacket const* WorldPackets::Party::GroupNewLeader::Write() { _worldPacket << PartyIndex; - _worldPacket.WriteBits(Name.size(), 6); + _worldPacket.WriteBits(Name.size(), 9); _worldPacket.WriteString(Name); return &_worldPacket; |
