aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-12-06 18:14:46 +0100
committerShauren <shauren.trinity@gmail.com>2020-12-08 18:16:47 +0100
commit96d340f70ccef57fad177a24ca099055d7dce04d (patch)
treece59c2f5c9ae3e7c161268796987a0929c91bd71 /src/server/game/Server
parentb82a3a557a7bf13d48342ea189325550059b622d (diff)
Core/PacketIO: Updated packet structures to 9.0.2
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h2
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.cpp2
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.h18
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.cpp27
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.h8
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h1
-rw-r--r--src/server/game/Server/Packets/PartyPackets.cpp2
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;