aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.cpp4
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/CalendarPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp51
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h2
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.cpp6
-rw-r--r--src/server/game/Server/Packets/CraftingPacketsCommon.cpp8
-rw-r--r--src/server/game/Server/Packets/EquipmentSetPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/GuildPackets.cpp3
-rw-r--r--src/server/game/Server/Packets/InstancePackets.cpp5
-rw-r--r--src/server/game/Server/Packets/ItemPackets.cpp10
-rw-r--r--src/server/game/Server/Packets/ItemPacketsCommon.cpp21
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp23
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h12
-rw-r--r--src/server/game/Server/Packets/PartyPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp72
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h12
-rw-r--r--src/server/game/Server/Packets/ReputationPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/ScenePackets.cpp5
-rw-r--r--src/server/game/Server/Packets/ScenePackets.h5
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp18
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp194
-rw-r--r--src/server/game/Server/Packets/TradePackets.h1
-rw-r--r--src/server/game/Spells/Spell.cpp2
-rw-r--r--src/server/game/Spells/Spell.h4
26 files changed, 235 insertions, 244 deletions
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp
index bbb4be0aea5..1b181adffcb 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.cpp
+++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp
@@ -99,8 +99,8 @@ ByteBuffer& operator>>(ByteBuffer& data, AuctionListFilterClass& filterClass)
ByteBuffer& operator>>(ByteBuffer& data, AuctionSortDef& sortDef)
{
data.ResetBitPos();
- sortDef.SortOrder = static_cast<AuctionHouseSortOrder>(data.ReadBits(4));
- sortDef.ReverseSort = data.ReadBit();
+ data >> Bits<4>(sortDef.SortOrder);
+ data >> Bits<1>(sortDef.ReverseSort);
return data;
}
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp
index 8dace8d9a40..5ae68849569 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.cpp
+++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp
@@ -327,7 +327,7 @@ void WorldPackets::Auth::AuthContinuedSession::Read()
void WorldPackets::Auth::ConnectToFailed::Read()
{
- Serial = _worldPacket.read<ConnectToSerial>();
+ _worldPacket >> As<uint32>(Serial);
_worldPacket >> Con;
}
diff --git a/src/server/game/Server/Packets/CalendarPackets.cpp b/src/server/game/Server/Packets/CalendarPackets.cpp
index 7bd73d0fc45..07cb5393c06 100644
--- a/src/server/game/Server/Packets/CalendarPackets.cpp
+++ b/src/server/game/Server/Packets/CalendarPackets.cpp
@@ -290,8 +290,8 @@ WorldPacket const* WorldPackets::Calendar::CalendarSendEvent::Write()
_worldPacket << LockDate;
_worldPacket << uint64(EventClubID);
_worldPacket << uint32(Invites.size());
- _worldPacket.WriteBits(EventName.size(), 8);
- _worldPacket.WriteBits(Description.size(), 11);
+ _worldPacket << BitsSize<8>(EventName);
+ _worldPacket << BitsSize<11>(Description);
_worldPacket.FlushBits();
for (auto const& invite : Invites)
@@ -319,7 +319,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarInviteAlert::Write()
_worldPacket << InvitedByGuid;
_worldPacket << OwnerGuid;
- _worldPacket.WriteBits(EventName.size(), 8);
+ _worldPacket << BitsSize<8>(EventName);
_worldPacket.FlushBits();
_worldPacket.WriteString(EventName);
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index e49258e4078..fbc6e256408 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -49,16 +49,7 @@ namespace Character
{
void SortCustomizations(Array<ChrCustomizationChoice, 250>& customizations)
{
- auto first = customizations.begin();
- auto last = customizations.end();
- for (auto itr = first; itr != last; ++itr)
- {
- auto insertion = std::upper_bound(first, itr, *itr, [](ChrCustomizationChoice const& left, ChrCustomizationChoice const& right)
- {
- return left.ChrCustomizationOptionID < right.ChrCustomizationOptionID;
- });
- std::rotate(insertion, itr, std::next(itr));
- }
+ std::ranges::sort(customizations, std::ranges::less(), &ChrCustomizationChoice::ChrCustomizationOptionID);
}
ByteBuffer& operator<<(ByteBuffer& data, CustomTabardInfo const& customTabardInfo)
@@ -88,7 +79,7 @@ EnumCharacters::EnumCharacters(WorldPacket&& packet) : ClientPacket(std::move(pa
ASSERT(GetOpcode() == CMSG_ENUM_CHARACTERS || GetOpcode() == CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT);
}
-EnumCharactersResult::CharacterInfo::CharacterInfo(Field* fields)
+EnumCharactersResult::CharacterInfo::CharacterInfo(Field const* fields)
{
// 0 1 2 3 4 5
// "SELECT characters.guid, characters.name, characters.race, characters.class, characters.gender, characters.level, "
@@ -247,16 +238,16 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo con
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);
- data.WriteBits(charInfo.unkWod61x, 5);
- data.WriteBits(0, 2); // unk
- data.WriteBit(charInfo.RpeResetAvailable);
- data.WriteBit(charInfo.RpeResetQuestClearAvailable);
+ data << BitsSize<6>(charInfo.Name);
+ data << Bits<1>(charInfo.FirstLogin);
+ data << Bits<1>(charInfo.BoostInProgress);
+ data << Bits<5>(charInfo.unkWod61x);
+ data << Bits<2>(0); // unk
+ data << Bits<1>(charInfo.RpeResetAvailable);
+ data << Bits<1>(charInfo.RpeResetQuestClearAvailable);
for (std::string const& str : charInfo.MailSenders)
- data.WriteBits(str.length() + 1, 6);
+ data << Bits<6>(str.length() + 1);
data.FlushBits();
@@ -272,10 +263,10 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo con
ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RaceUnlock const& raceUnlock)
{
data << int32(raceUnlock.RaceID);
- data.WriteBit(raceUnlock.HasExpansion);
- data.WriteBit(raceUnlock.HasAchievement);
- data.WriteBit(raceUnlock.HasHeritageArmor);
- data.WriteBit(raceUnlock.IsLocked);
+ data << Bits<1>(raceUnlock.HasExpansion);
+ data << Bits<1>(raceUnlock.HasAchievement);
+ data << Bits<1>(raceUnlock.HasHeritageArmor);
+ data << Bits<1>(raceUnlock.IsLocked);
data.FlushBits();
return data;
@@ -301,13 +292,13 @@ WorldPacket const* EnumCharactersResult::Write()
{
_worldPacket.reserve(9 + Characters.size() * sizeof(CharacterInfo) + RaceUnlockData.size() * sizeof(RaceUnlock));
- _worldPacket.WriteBit(Success);
- _worldPacket.WriteBit(IsDeletedCharacters);
- _worldPacket.WriteBit(IsNewPlayerRestrictionSkipped);
- _worldPacket.WriteBit(IsNewPlayerRestricted);
- _worldPacket.WriteBit(IsNewPlayer);
- _worldPacket.WriteBit(IsTrialAccountRestricted);
- _worldPacket.WriteBit(DisabledClassesMask.has_value());
+ _worldPacket << Bits<1>(Success);
+ _worldPacket << Bits<1>(IsDeletedCharacters);
+ _worldPacket << Bits<1>(IsNewPlayerRestrictionSkipped);
+ _worldPacket << Bits<1>(IsNewPlayerRestricted);
+ _worldPacket << Bits<1>(IsNewPlayer);
+ _worldPacket << Bits<1>(IsTrialAccountRestricted);
+ _worldPacket << OptionalInit(DisabledClassesMask);
_worldPacket << uint32(Characters.size());
_worldPacket << int32(MaxCharacterLevel);
_worldPacket << uint32(RaceUnlockData.size());
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index 30d6d3c981d..05985bd981c 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -126,7 +126,7 @@ namespace WorldPackets
*
* @param fields Field set of CharacterDatabaseStatements::CHAR_SEL_ENUM
*/
- CharacterInfo(Field* fields);
+ CharacterInfo(Field const* fields);
ObjectGuid Guid;
uint64 GuildClubMemberID = 0; ///< same as bgs.protocol.club.v1.MemberId.unique_id, guessed basing on SMSG_QUERY_PLAYER_NAME_RESPONSE (that one is known)
diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
index 949d0b00865..9e848565193 100644
--- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
+++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
@@ -54,7 +54,7 @@ void SpellCastLogData::Initialize(Spell const* spell)
}
if (!primaryPowerAdded)
- PowerData.insert(PowerData.begin(), SpellLogPowerData(int32(primaryPowerType), unitCaster->GetPower(primaryPowerType), 0));
+ PowerData.emplace(PowerData.begin(), int32(primaryPowerType), unitCaster->GetPower(primaryPowerType), 0);
}
}
@@ -130,10 +130,10 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastLogData const& spellCastLogDat
data << int32(spellCastLogData.AttackPower);
data << int32(spellCastLogData.SpellPower);
data << int32(spellCastLogData.Armor);
- data.WriteBits(spellCastLogData.PowerData.size(), 9);
+ data << BitsSize<9>(spellCastLogData.PowerData);
data.FlushBits();
- for (WorldPackets::Spells::SpellLogPowerData const& powerData : spellCastLogData.PowerData)
+ for (SpellLogPowerData const& powerData : spellCastLogData.PowerData)
{
data << int32(powerData.PowerType);
data << int32(powerData.Amount);
diff --git a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp
index de5189183e5..d5518dda79e 100644
--- a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp
+++ b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp
@@ -48,10 +48,10 @@ ByteBuffer& operator<<(ByteBuffer& data, CraftingData const& craftingData)
for (SpellReducedReagent const& spellReducedReagent : craftingData.ResourcesReturned)
data << spellReducedReagent;
- data.WriteBit(craftingData.IsCrit);
- data.WriteBit(craftingData.field_29);
- data.WriteBit(craftingData.field_2A);
- data.WriteBit(craftingData.BonusCraft);
+ data << Bits<1>(craftingData.IsCrit);
+ data << Bits<1>(craftingData.field_29);
+ data << Bits<1>(craftingData.field_2A);
+ data << Bits<1>(craftingData.BonusCraft);
data.FlushBits();
data << craftingData.OldItem;
diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.cpp b/src/server/game/Server/Packets/EquipmentSetPackets.cpp
index 45442f9db31..7d7fa640b9a 100644
--- a/src/server/game/Server/Packets/EquipmentSetPackets.cpp
+++ b/src/server/game/Server/Packets/EquipmentSetPackets.cpp
@@ -67,7 +67,7 @@ WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write()
void WorldPackets::EquipmentSet::SaveEquipmentSet::Read()
{
- Set.Type = _worldPacket.read<EquipmentSetInfo::EquipmentSetType, int32>();
+ _worldPacket >> As<int32>(Set.Type);
_worldPacket >> Set.Guid;
_worldPacket >> Set.SetID;
_worldPacket >> Set.IgnoreMask;
diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp
index fe80b31595d..88c971c8ae7 100644
--- a/src/server/game/Server/Packets/GuildPackets.cpp
+++ b/src/server/game/Server/Packets/GuildPackets.cpp
@@ -906,8 +906,7 @@ void WorldPackets::Guild::GuildNewsUpdateSticky::Read()
{
_worldPacket >> GuildGUID;
_worldPacket >> NewsID;
-
- NewsID = _worldPacket.ReadBit();
+ _worldPacket >> Bits<1>(Sticky);
}
void WorldPackets::Guild::GuildSetGuildMaster::Read()
diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp
index bea2ce488c9..41e73128573 100644
--- a/src/server/game/Server/Packets/InstancePackets.cpp
+++ b/src/server/game/Server/Packets/InstancePackets.cpp
@@ -16,6 +16,7 @@
*/
#include "InstancePackets.h"
+#include "PacketUtilities.h"
WorldPacket const* WorldPackets::Instance::UpdateLastInstance::Write()
{
@@ -110,8 +111,8 @@ WorldPacket const* WorldPackets::Instance::RaidInstanceMessage::Write()
_worldPacket << uint8(Type);
_worldPacket << uint32(MapID);
_worldPacket << uint32(DifficultyID);
- _worldPacket.WriteBit(Locked);
- _worldPacket.WriteBit(Extended);
+ _worldPacket << Bits<1>(Locked);
+ _worldPacket << Bits<1>(Extended);
_worldPacket.FlushBits();
return &_worldPacket;
diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp
index 85ce54cd5e3..e1667debfec 100644
--- a/src/server/game/Server/Packets/ItemPackets.cpp
+++ b/src/server/game/Server/Packets/ItemPackets.cpp
@@ -261,11 +261,11 @@ WorldPacket const* WorldPackets::Item::ItemPushResult::Write()
_worldPacket << int32(BattlePetLevel);
_worldPacket << ItemGUID;
- _worldPacket.WriteBit(Pushed);
- _worldPacket.WriteBit(Created);
- _worldPacket.WriteBits(DisplayText, 3);
- _worldPacket.WriteBit(IsBonusRoll);
- _worldPacket.WriteBit(IsEncounterLoot);
+ _worldPacket << Bits<1>(Pushed);
+ _worldPacket << Bits<1>(Created);
+ _worldPacket << Bits<3>(DisplayText);
+ _worldPacket << Bits<1>(IsBonusRoll);
+ _worldPacket << Bits<1>(IsEncounterLoot);
_worldPacket.FlushBits();
_worldPacket << Item;
diff --git a/src/server/game/Server/Packets/ItemPacketsCommon.cpp b/src/server/game/Server/Packets/ItemPacketsCommon.cpp
index 8b27d58878a..63843747a63 100644
--- a/src/server/game/Server/Packets/ItemPacketsCommon.cpp
+++ b/src/server/game/Server/Packets/ItemPacketsCommon.cpp
@@ -144,17 +144,16 @@ ByteBuffer& operator<<(ByteBuffer& data, ItemBonuses const& itemBonusInstanceDat
ByteBuffer& operator>>(ByteBuffer& data, ItemBonuses& itemBonusInstanceData)
{
- uint32 bonusListIdSize;
-
itemBonusInstanceData.Context = data.read<ItemContext>();
+ uint32 bonusListIdSize;
data >> bonusListIdSize;
+ if (bonusListIdSize > 32)
+ throw PacketArrayMaxCapacityException(bonusListIdSize, 32);
- for (uint32 i = 0u; i < bonusListIdSize; ++i)
- {
- uint32 bonusId;
- data >> bonusId;
- itemBonusInstanceData.BonusListIDs.push_back(bonusId);
- }
+ itemBonusInstanceData.BonusListIDs.resize(bonusListIdSize);
+
+ for (int32& bonusListID : itemBonusInstanceData.BonusListIDs)
+ data >> bonusListID;
return data;
}
@@ -170,14 +169,14 @@ ByteBuffer& operator<<(ByteBuffer& data, ItemMod const& itemMod)
ByteBuffer& operator>>(ByteBuffer& data, ItemMod& itemMod)
{
data >> itemMod.Value;
- itemMod.Type = data.read<ItemModifier, uint8>();
+ data >> As<uint8>(itemMod.Type);
return data;
}
ByteBuffer& operator<<(ByteBuffer& data, ItemModList const& itemModList)
{
- data.WriteBits(itemModList.Values.size(), 6);
+ data << BitsSize<6>(itemModList.Values);
data.FlushBits();
for (ItemMod const& itemMod : itemModList.Values)
@@ -188,7 +187,7 @@ ByteBuffer& operator<<(ByteBuffer& data, ItemModList const& itemModList)
ByteBuffer& operator>>(ByteBuffer& data, ItemModList& itemModList)
{
- itemModList.Values.resize(data.ReadBits(6));
+ data >> BitsSize<6>(itemModList.Values);
data.ResetBitPos();
for (ItemMod& itemMod : itemModList.Values)
diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp
index 06c22373ca2..ca1213cadd2 100644
--- a/src/server/game/Server/Packets/NPCPackets.cpp
+++ b/src/server/game/Server/Packets/NPCPackets.cpp
@@ -16,13 +16,12 @@
*/
#include "NPCPackets.h"
-#include "Util.h"
namespace WorldPackets::NPC
{
ByteBuffer& operator<<(ByteBuffer& data, TreasureItem const& treasureItem)
{
- data.WriteBits(AsUnderlyingType(treasureItem.Type), 1);
+ data << Bits<1>(treasureItem.Type);
data << int32(treasureItem.ID);
data << int32(treasureItem.Quantity);
@@ -47,11 +46,11 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipOptions const& gossipOption
data << uint32(gossipOption.OptionLanguage);
data << int32(gossipOption.Flags);
data << int32(gossipOption.OrderIndex);
- data.WriteBits(gossipOption.Text.size(), 12);
- data.WriteBits(gossipOption.Confirm.size(), 12);
- data.WriteBits(AsUnderlyingType(gossipOption.Status), 2);
- data.WriteBit(gossipOption.SpellID.has_value());
- data.WriteBit(gossipOption.OverrideIconID.has_value());
+ data << BitsSize<12>(gossipOption.Text);
+ data << BitsSize<12>(gossipOption.Confirm);
+ data << Bits<2>(gossipOption.Status);
+ data << OptionalInit(gossipOption.SpellID);
+ data << OptionalInit(gossipOption.OverrideIconID);
data.FlushBits();
data << gossipOption.Treasure;
@@ -78,9 +77,9 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText)
data << int32(gossipText.QuestFlags[0]);
data << int32(gossipText.QuestFlags[1]);
- data.WriteBit(gossipText.Repeatable);
- data.WriteBit(gossipText.Important);
- data.WriteBits(gossipText.QuestTitle.size(), 9);
+ data << Bits<1>(gossipText.Repeatable);
+ data << Bits<1>(gossipText.Important);
+ data << BitsSize<9>(gossipText.QuestTitle);
data.FlushBits();
data.WriteString(gossipText.QuestTitle);
@@ -110,8 +109,8 @@ WorldPacket const* GossipMessage::Write()
_worldPacket << int32(FriendshipFactionID);
_worldPacket << uint32(GossipOptions.size());
_worldPacket << uint32(GossipText.size());
- _worldPacket.WriteBit(TextID.has_value());
- _worldPacket.WriteBit(BroadcastTextID.has_value());
+ _worldPacket << OptionalInit(TextID);
+ _worldPacket << OptionalInit(BroadcastTextID);
_worldPacket.FlushBits();
for (ClientGossipOptions const& options : GossipOptions)
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index 4e431fb45bd..8b398f72f87 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -94,15 +94,15 @@ namespace WorldPackets
struct ClientGossipText
{
- int32 QuestID = 0;
+ int32 QuestID = 0;
int32 ContentTuningID = 0;
- int32 QuestType = 0;
- int32 QuestLevel = 0;
+ int32 QuestType = 0;
+ int32 QuestLevel = 0;
int32 QuestMaxScalingLevel = 0;
- bool Repeatable = false;
- bool Important = false;
+ bool Repeatable = false;
+ bool Important = false;
std::string QuestTitle;
- int32 QuestFlags[2] = { };
+ std::array<int32, 2> QuestFlags = { };
};
ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText);
diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp
index 0791574e61c..fc8365dd507 100644
--- a/src/server/game/Server/Packets/PartyPackets.cpp
+++ b/src/server/game/Server/Packets/PartyPackets.cpp
@@ -735,9 +735,9 @@ WorldPacket const* WorldPackets::Party::BroadcastSummonResponse::Write()
void WorldPackets::Party::SetRestrictPingsToAssistants::Read()
{
- bool hasPartyIndex = _worldPacket.ReadBit();
- RestrictPingsToAssistants = _worldPacket.ReadBit();
- if (hasPartyIndex)
+ _worldPacket >> OptionalInit(PartyIndex);
+ _worldPacket >> Bits<1>(RestrictPingsToAssistants);
+ if (PartyIndex)
_worldPacket >> PartyIndex.emplace();
}
@@ -764,7 +764,7 @@ void WorldPackets::Party::SendPingWorldPoint::Read()
_worldPacket >> SenderGUID;
_worldPacket >> MapID;
_worldPacket >> Point;
- Type = _worldPacket.read<PingSubjectType, uint8>();
+ _worldPacket >> As<uint8>(Type);
_worldPacket >> PinFrameID;
}
diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp
index 377072f69c0..fd124ea5095 100644
--- a/src/server/game/Server/Packets/QueryPackets.cpp
+++ b/src/server/game/Server/Packets/QueryPackets.cpp
@@ -386,7 +386,7 @@ void QueryCorpseLocationFromClient::Read()
WorldPacket const* CorpseLocation::Write()
{
- _worldPacket.WriteBit(Valid);
+ _worldPacket << Bits<1>(Valid);
_worldPacket.FlushBits();
_worldPacket << Player;
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 8418f13c0f3..c495b332b00 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -191,16 +191,16 @@ WorldPacket const* QueryQuestInfoResponse::Write()
_worldPacket << int32(Info.QuestSessionBonus);
_worldPacket << int32(Info.QuestGiverCreatureID);
- _worldPacket.WriteBits(Info.LogTitle.size(), 9);
- _worldPacket.WriteBits(Info.LogDescription.size(), 12);
- _worldPacket.WriteBits(Info.QuestDescription.size(), 12);
- _worldPacket.WriteBits(Info.AreaDescription.size(), 9);
- _worldPacket.WriteBits(Info.PortraitGiverText.size(), 10);
- _worldPacket.WriteBits(Info.PortraitGiverName.size(), 8);
- _worldPacket.WriteBits(Info.PortraitTurnInText.size(), 10);
- _worldPacket.WriteBits(Info.PortraitTurnInName.size(), 8);
- _worldPacket.WriteBits(Info.QuestCompletionLog.size(), 11);
- _worldPacket.WriteBit(Info.ReadyForTranslation);
+ _worldPacket << BitsSize<9>(Info.LogTitle);
+ _worldPacket << BitsSize<12>(Info.LogDescription);
+ _worldPacket << BitsSize<12>(Info.QuestDescription);
+ _worldPacket << BitsSize<9>(Info.AreaDescription);
+ _worldPacket << BitsSize<10>(Info.PortraitGiverText);
+ _worldPacket << BitsSize<8>(Info.PortraitGiverName);
+ _worldPacket << BitsSize<10>(Info.PortraitTurnInText);
+ _worldPacket << BitsSize<8>(Info.PortraitTurnInName);
+ _worldPacket << BitsSize<11>(Info.QuestCompletionLog);
+ _worldPacket << Bits<1>(Info.ReadyForTranslation);
_worldPacket.FlushBits();
for (QuestObjective const& questObjective : Info.Objectives)
@@ -218,7 +218,7 @@ WorldPacket const* QueryQuestInfoResponse::Write()
for (int32 visualEffect : questObjective.VisualEffects)
_worldPacket << int32(visualEffect);
- _worldPacket.WriteBits(questObjective.Description.size(), 8);
+ _worldPacket << BitsSize<8>(questObjective.Description);
_worldPacket.FlushBits();
_worldPacket.WriteString(questObjective.Description);
@@ -269,7 +269,7 @@ WorldPacket const* QuestUpdateAddPvPCredit::Write()
ByteBuffer& operator<<(ByteBuffer& data, QuestChoiceItem const& questChoiceItem)
{
- data.WriteBits(AsUnderlyingType(questChoiceItem.LootItemType), 2);
+ data << Bits<2>(questChoiceItem.LootItemType);
data << questChoiceItem.Item;
data << int32(questChoiceItem.Quantity);
@@ -279,7 +279,7 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestChoiceItem const& questChoiceItem)
ByteBuffer& operator>>(ByteBuffer& data, QuestChoiceItem& questChoiceItem)
{
data.ResetBitPos();
- questChoiceItem.LootItemType = LootItemType(data.ReadBits(2));
+ data >> Bits<2>(questChoiceItem.LootItemType);
data >> questChoiceItem.Item;
data >> questChoiceItem.Quantity;
@@ -330,7 +330,7 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestRewards const& questRewards)
for (QuestChoiceItem const& choiceItem : questRewards.ChoiceItems)
data << choiceItem;
- data.WriteBit(questRewards.IsBoostSpell);
+ data << Bits<1>(questRewards.IsBoostSpell);
data.FlushBits();
return data;
@@ -352,8 +352,8 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestGiverOfferReward const& offer)
data << uint32(emote.Delay);
}
- data.WriteBit(offer.AutoLaunched);
- data.WriteBit(false); // Unused
+ data << Bits<1>(offer.AutoLaunched);
+ data << Bits<1>(false); // Unused
data.FlushBits();
data << offer.Rewards; // QuestRewards
@@ -372,12 +372,12 @@ WorldPacket const* QuestGiverOfferRewardMessage::Write()
_worldPacket << int32(QuestGiverCreatureID);
_worldPacket << uint32(ConditionalRewardText.size());
- _worldPacket.WriteBits(QuestTitle.size(), 9);
- _worldPacket.WriteBits(RewardText.size(), 12);
- _worldPacket.WriteBits(PortraitGiverText.size(), 10);
- _worldPacket.WriteBits(PortraitGiverName.size(), 8);
- _worldPacket.WriteBits(PortraitTurnInText.size(), 10);
- _worldPacket.WriteBits(PortraitTurnInName.size(), 8);
+ _worldPacket << BitsSize<9>(QuestTitle);
+ _worldPacket << BitsSize<12>(RewardText);
+ _worldPacket << BitsSize<10>(PortraitGiverText);
+ _worldPacket << BitsSize<8>(PortraitGiverName);
+ _worldPacket << BitsSize<10>(PortraitTurnInText);
+ _worldPacket << BitsSize<8>(PortraitTurnInName);
_worldPacket.FlushBits();
for (ConditionalQuestText const& conditionalQuestText : ConditionalRewardText)
@@ -468,17 +468,17 @@ WorldPacket const* QuestGiverQuestDetails::Write()
_worldPacket << uint8(obj.Type);
}
- _worldPacket.WriteBits(QuestTitle.size(), 9);
- _worldPacket.WriteBits(DescriptionText.size(), 12);
- _worldPacket.WriteBits(LogDescription.size(), 12);
- _worldPacket.WriteBits(PortraitGiverText.size(), 10);
- _worldPacket.WriteBits(PortraitGiverName.size(), 8);
- _worldPacket.WriteBits(PortraitTurnInText.size(), 10);
- _worldPacket.WriteBits(PortraitTurnInName.size(), 8);
- _worldPacket.WriteBit(AutoLaunched);
- _worldPacket.WriteBit(false); // unused in client
- _worldPacket.WriteBit(StartCheat);
- _worldPacket.WriteBit(DisplayPopup);
+ _worldPacket << BitsSize<9>(QuestTitle);
+ _worldPacket << BitsSize<12>(DescriptionText);
+ _worldPacket << BitsSize<12>(LogDescription);
+ _worldPacket << BitsSize<10>(PortraitGiverText);
+ _worldPacket << BitsSize<8>(PortraitGiverName);
+ _worldPacket << BitsSize<10>(PortraitTurnInText);
+ _worldPacket << BitsSize<8>(PortraitTurnInName);
+ _worldPacket << Bits<1>(AutoLaunched);
+ _worldPacket << Bits<1>(false); // unused in client
+ _worldPacket << Bits<1>(StartCheat);
+ _worldPacket << Bits<1>(DisplayPopup);
_worldPacket.FlushBits();
_worldPacket << Rewards; // QuestRewards
@@ -525,14 +525,14 @@ WorldPacket const* QuestGiverRequestItems::Write()
_worldPacket << int32(cur.Amount);
}
- _worldPacket.WriteBit(AutoLaunched);
+ _worldPacket << Bits<1>(AutoLaunched);
_worldPacket.FlushBits();
_worldPacket << int32(QuestGiverCreatureID);
_worldPacket << uint32(ConditionalCompletionText.size());
- _worldPacket.WriteBits(QuestTitle.size(), 9);
- _worldPacket.WriteBits(CompletionText.size(), 12);
+ _worldPacket << BitsSize<9>(QuestTitle);
+ _worldPacket << BitsSize<12>(CompletionText);
_worldPacket.FlushBits();
for (ConditionalQuestText const& conditionalQuestText : ConditionalCompletionText)
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index c001ff11240..a7cc3857d7c 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -281,7 +281,7 @@ namespace WorldPackets
int32 SkillLineID = 0;
int32 NumSkillUps = 0;
int32 TreasurePickerID = 0;
- std::array<QuestChoiceItem, QUEST_REWARD_CHOICES_COUNT> ChoiceItems;
+ std::array<QuestChoiceItem, QUEST_REWARD_CHOICES_COUNT> ChoiceItems = { };
std::array<int32, QUEST_REWARD_ITEM_COUNT> ItemID = { };
std::array<int32, QUEST_REWARD_ITEM_COUNT> ItemQty = { };
std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> FactionID = { };
@@ -303,13 +303,13 @@ namespace WorldPackets
struct QuestGiverOfferReward
{
ObjectGuid QuestGiverGUID;
- int32 QuestGiverCreatureID = 0;
- int32 QuestID = 0;
- bool AutoLaunched = false;
- int32 SuggestedPartyMembers = 0;
+ int32 QuestGiverCreatureID = 0;
+ int32 QuestID = 0;
+ bool AutoLaunched = false;
+ int32 SuggestedPartyMembers = 0;
QuestRewards Rewards;
std::vector<QuestDescEmote> Emotes;
- int32 QuestFlags[3] = { }; // Flags and FlagsEx
+ std::array<int32, 3> QuestFlags = { };
};
class QuestGiverOfferRewardMessage final : public ServerPacket
diff --git a/src/server/game/Server/Packets/ReputationPackets.cpp b/src/server/game/Server/Packets/ReputationPackets.cpp
index 8896c2071c0..4d907ee4b85 100644
--- a/src/server/game/Server/Packets/ReputationPackets.cpp
+++ b/src/server/game/Server/Packets/ReputationPackets.cpp
@@ -16,6 +16,7 @@
*/
#include "ReputationPackets.h"
+#include "PacketUtilities.h"
WorldPacket const* WorldPackets::Reputation::InitializeFactions::Write()
{
diff --git a/src/server/game/Server/Packets/ScenePackets.cpp b/src/server/game/Server/Packets/ScenePackets.cpp
index 8622a80f949..f474b11c2b7 100644
--- a/src/server/game/Server/Packets/ScenePackets.cpp
+++ b/src/server/game/Server/Packets/ScenePackets.cpp
@@ -16,6 +16,7 @@
*/
#include "ScenePackets.h"
+#include "PacketUtilities.h"
WorldPacket const* WorldPackets::Scenes::PlayScene::Write()
{
@@ -24,8 +25,8 @@ WorldPacket const* WorldPackets::Scenes::PlayScene::Write()
_worldPacket << uint32(SceneInstanceID);
_worldPacket << int32(SceneScriptPackageID);
_worldPacket << TransportGUID;
- _worldPacket << Location.PositionXYZOStream();
- _worldPacket.WriteBit(Encrypted);
+ _worldPacket << Location;
+ _worldPacket << Bits<1>(Encrypted);
_worldPacket.FlushBits();
return &_worldPacket;
diff --git a/src/server/game/Server/Packets/ScenePackets.h b/src/server/game/Server/Packets/ScenePackets.h
index c851d61f29f..ce63a086e38 100644
--- a/src/server/game/Server/Packets/ScenePackets.h
+++ b/src/server/game/Server/Packets/ScenePackets.h
@@ -18,8 +18,9 @@
#ifndef ScenePackets_h__
#define ScenePackets_h__
+#include "ObjectGuid.h"
#include "Packet.h"
-#include "Object.h"
+#include "Position.h"
namespace WorldPackets
{
@@ -37,7 +38,7 @@ namespace WorldPackets
uint32 SceneInstanceID = 0;
int32 SceneScriptPackageID = 0;
ObjectGuid TransportGUID;
- Position Location;
+ TaggedPosition<Position::XYZO> Location;
bool Encrypted = false;
};
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index 95f54c440b4..7199f892d46 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -94,13 +94,13 @@ ByteBuffer& operator<<(ByteBuffer& data, AuraDataInfo const& auraData)
data << uint16(auraData.CastLevel);
data << uint8(auraData.Applications);
data << int32(auraData.ContentTuningID);
- data.WriteBit(auraData.CastUnit.has_value());
- data.WriteBit(auraData.Duration.has_value());
- data.WriteBit(auraData.Remaining.has_value());
- data.WriteBit(auraData.TimeMod.has_value());
- data.WriteBits(auraData.Points.size(), 6);
- data.WriteBits(auraData.EstimatedPoints.size(), 6);
- data.WriteBit(auraData.ContentTuning.has_value());
+ data << OptionalInit(auraData.CastUnit);
+ data << OptionalInit(auraData.Duration);
+ data << OptionalInit(auraData.Remaining);
+ data << OptionalInit(auraData.TimeMod);
+ data << BitsSize<6>(auraData.Points);
+ data << BitsSize<6>(auraData.EstimatedPoints);
+ data << OptionalInit(auraData.ContentTuning);
if (auraData.ContentTuning)
data << *auraData.ContentTuning;
@@ -129,7 +129,7 @@ ByteBuffer& operator<<(ByteBuffer& data, AuraDataInfo const& auraData)
ByteBuffer& operator<<(ByteBuffer& data, AuraInfo const& aura)
{
data << aura.Slot;
- data.WriteBit(aura.AuraData.has_value());
+ data << OptionalInit(aura.AuraData);
data.FlushBits();
if (aura.AuraData)
@@ -141,7 +141,7 @@ ByteBuffer& operator<<(ByteBuffer& data, AuraInfo const& aura)
WorldPacket const* AuraUpdate::Write()
{
_worldPacket.WriteBit(UpdateAll);
- _worldPacket.WriteBits(Auras.size(), 9);
+ _worldPacket << BitsSize<9>(Auras);
for (AuraInfo const& aura : Auras)
_worldPacket << aura;
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index 6e0d93cd613..c336555ea28 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -30,10 +30,10 @@ ByteBuffer& operator<<(ByteBuffer& data, SavedThrottleObjectState const& throttl
ByteBuffer& operator<<(ByteBuffer& data, EuropaTicketConfig const& europaTicketSystemStatus)
{
- data.WriteBit(europaTicketSystemStatus.TicketsEnabled);
- data.WriteBit(europaTicketSystemStatus.BugsEnabled);
- data.WriteBit(europaTicketSystemStatus.ComplaintsEnabled);
- data.WriteBit(europaTicketSystemStatus.SuggestionsEnabled);
+ data << Bits<1>(europaTicketSystemStatus.TicketsEnabled);
+ data << Bits<1>(europaTicketSystemStatus.BugsEnabled);
+ data << Bits<1>(europaTicketSystemStatus.ComplaintsEnabled);
+ data << Bits<1>(europaTicketSystemStatus.SuggestionsEnabled);
data << europaTicketSystemStatus.ThrottleState;
@@ -50,7 +50,7 @@ ByteBuffer& operator<<(ByteBuffer& data, GameRuleValuePair const& gameRuleValue)
ByteBuffer& operator<<(ByteBuffer& data, DebugTimeEventInfo const& debugTimeEventInfo)
{
data << uint32(debugTimeEventInfo.TimeEvent);
- data.WriteBits(debugTimeEventInfo.Text.length(), 7);
+ data << BitsSize<7>(debugTimeEventInfo.Text);
data.FlushBits();
data.WriteString(debugTimeEventInfo.Text);
@@ -94,62 +94,62 @@ WorldPacket const* FeatureSystemStatus::Write()
for (GameRuleValuePair const& gameRuleValue : GameRuleValues)
_worldPacket << gameRuleValue;
- _worldPacket.WriteBit(VoiceEnabled);
- _worldPacket.WriteBit(EuropaTicketSystemStatus.has_value());
- _worldPacket.WriteBit(BpayStoreEnabled);
- _worldPacket.WriteBit(BpayStoreAvailable);
- _worldPacket.WriteBit(BpayStoreDisabledByParentalControls);
- _worldPacket.WriteBit(ItemRestorationButtonEnabled);
- _worldPacket.WriteBit(BrowserEnabled);
- _worldPacket.WriteBit(SessionAlert.has_value());
-
- _worldPacket.WriteBit(RAFSystem.Enabled);
- _worldPacket.WriteBit(RAFSystem.RecruitingEnabled);
- _worldPacket.WriteBit(CharUndeleteEnabled);
- _worldPacket.WriteBit(RestrictedAccount);
- _worldPacket.WriteBit(CommerceSystemEnabled);
- _worldPacket.WriteBit(TutorialsEnabled);
- _worldPacket.WriteBit(Unk67);
- _worldPacket.WriteBit(WillKickFromWorld);
-
- _worldPacket.WriteBit(KioskModeEnabled);
- _worldPacket.WriteBit(CompetitiveModeEnabled);
- _worldPacket.WriteBit(TokenBalanceEnabled);
- _worldPacket.WriteBit(WarModeFeatureEnabled);
- _worldPacket.WriteBit(ClubsEnabled);
- _worldPacket.WriteBit(ClubsBattleNetClubTypeAllowed);
- _worldPacket.WriteBit(ClubsCharacterClubTypeAllowed);
- _worldPacket.WriteBit(ClubsPresenceUpdateEnabled);
-
- _worldPacket.WriteBit(VoiceChatDisabledByParentalControl);
- _worldPacket.WriteBit(VoiceChatMutedByParentalControl);
- _worldPacket.WriteBit(QuestSessionEnabled);
- _worldPacket.WriteBit(IsMuted);
- _worldPacket.WriteBit(ClubFinderEnabled);
- _worldPacket.WriteBit(IsCommunityFinderEnabled);
- _worldPacket.WriteBit(Unknown901CheckoutRelated);
- _worldPacket.WriteBit(TextToSpeechFeatureEnabled);
-
- _worldPacket.WriteBit(ChatDisabledByDefault);
- _worldPacket.WriteBit(ChatDisabledByPlayer);
- _worldPacket.WriteBit(LFGListCustomRequiresAuthenticator);
- _worldPacket.WriteBit(AddonsDisabled);
- _worldPacket.WriteBit(WarGamesEnabled);
- _worldPacket.WriteBit(Unk440_1); // unk, unused 4.4.0
- _worldPacket.WriteBit(false); // unk, unused 4.4.0
- _worldPacket.WriteBit(ContentTrackingEnabled);
-
- _worldPacket.WriteBit(IsSellAllJunkEnabled);
- _worldPacket.WriteBit(IsGroupFinderEnabled);
- _worldPacket.WriteBit(IsLFDEnabled);
- _worldPacket.WriteBit(IsLFREnabled);
- _worldPacket.WriteBit(IsPremadeGroupEnabled);
- _worldPacket.WriteBit(CanShowSetRoleButton);
- _worldPacket.WriteBit(PetHappinessEnabled);
- _worldPacket.WriteBit(CanEditGuildEvent);
+ _worldPacket << Bits<1>(VoiceEnabled);
+ _worldPacket << OptionalInit(EuropaTicketSystemStatus);
+ _worldPacket << Bits<1>(BpayStoreEnabled);
+ _worldPacket << Bits<1>(BpayStoreAvailable);
+ _worldPacket << Bits<1>(BpayStoreDisabledByParentalControls);
+ _worldPacket << Bits<1>(ItemRestorationButtonEnabled);
+ _worldPacket << Bits<1>(BrowserEnabled);
+ _worldPacket << OptionalInit(SessionAlert);
+
+ _worldPacket << Bits<1>(RAFSystem.Enabled);
+ _worldPacket << Bits<1>(RAFSystem.RecruitingEnabled);
+ _worldPacket << Bits<1>(CharUndeleteEnabled);
+ _worldPacket << Bits<1>(RestrictedAccount);
+ _worldPacket << Bits<1>(CommerceSystemEnabled);
+ _worldPacket << Bits<1>(TutorialsEnabled);
+ _worldPacket << Bits<1>(Unk67);
+ _worldPacket << Bits<1>(WillKickFromWorld);
+
+ _worldPacket << Bits<1>(KioskModeEnabled);
+ _worldPacket << Bits<1>(CompetitiveModeEnabled);
+ _worldPacket << Bits<1>(TokenBalanceEnabled);
+ _worldPacket << Bits<1>(WarModeFeatureEnabled);
+ _worldPacket << Bits<1>(ClubsEnabled);
+ _worldPacket << Bits<1>(ClubsBattleNetClubTypeAllowed);
+ _worldPacket << Bits<1>(ClubsCharacterClubTypeAllowed);
+ _worldPacket << Bits<1>(ClubsPresenceUpdateEnabled);
+
+ _worldPacket << Bits<1>(VoiceChatDisabledByParentalControl);
+ _worldPacket << Bits<1>(VoiceChatMutedByParentalControl);
+ _worldPacket << Bits<1>(QuestSessionEnabled);
+ _worldPacket << Bits<1>(IsMuted);
+ _worldPacket << Bits<1>(ClubFinderEnabled);
+ _worldPacket << Bits<1>(IsCommunityFinderEnabled);
+ _worldPacket << Bits<1>(Unknown901CheckoutRelated);
+ _worldPacket << Bits<1>(TextToSpeechFeatureEnabled);
+
+ _worldPacket << Bits<1>(ChatDisabledByDefault);
+ _worldPacket << Bits<1>(ChatDisabledByPlayer);
+ _worldPacket << Bits<1>(LFGListCustomRequiresAuthenticator);
+ _worldPacket << Bits<1>(AddonsDisabled);
+ _worldPacket << Bits<1>(WarGamesEnabled);
+ _worldPacket << Bits<1>(Unk440_1); // unk, unused 4.4.0
+ _worldPacket << Bits<1>(false); // unk, unused 4.4.0
+ _worldPacket << Bits<1>(ContentTrackingEnabled);
+
+ _worldPacket << Bits<1>(IsSellAllJunkEnabled);
+ _worldPacket << Bits<1>(IsGroupFinderEnabled);
+ _worldPacket << Bits<1>(IsLFDEnabled);
+ _worldPacket << Bits<1>(IsLFREnabled);
+ _worldPacket << Bits<1>(IsPremadeGroupEnabled);
+ _worldPacket << Bits<1>(CanShowSetRoleButton);
+ _worldPacket << Bits<1>(PetHappinessEnabled);
+ _worldPacket << Bits<1>(CanEditGuildEvent);
_worldPacket.WriteBit(IsGuildTradeSkillsEnabled);
- _worldPacket.WriteBits(Field_16F.size(), 7);
+ _worldPacket << BitsSize<7>(Field_16F);
_worldPacket.FlushBits();
@@ -208,43 +208,43 @@ WorldPacket const* FeatureSystemStatus::Write()
WorldPacket const* FeatureSystemStatusGlueScreen::Write()
{
- _worldPacket.WriteBit(BpayStoreEnabled);
- _worldPacket.WriteBit(BpayStoreAvailable);
- _worldPacket.WriteBit(BpayStoreDisabledByParentalControls);
- _worldPacket.WriteBit(CharUndeleteEnabled);
- _worldPacket.WriteBit(CommerceSystemEnabled);
- _worldPacket.WriteBit(Unk14);
- _worldPacket.WriteBit(WillKickFromWorld);
- _worldPacket.WriteBit(IsExpansionPreorderInStore);
-
- _worldPacket.WriteBit(KioskModeEnabled);
- _worldPacket.WriteBit(CompetitiveModeEnabled);
- _worldPacket.WriteBit(IsBoostEnabled);
- _worldPacket.WriteBit(TrialBoostEnabled);
- _worldPacket.WriteBit(TokenBalanceEnabled);
- _worldPacket.WriteBit(LiveRegionCharacterListEnabled);
- _worldPacket.WriteBit(LiveRegionCharacterCopyEnabled);
- _worldPacket.WriteBit(LiveRegionAccountCopyEnabled);
-
- _worldPacket.WriteBit(LiveRegionKeyBindingsCopyEnabled);
- _worldPacket.WriteBit(Unknown901CheckoutRelated);
- _worldPacket.WriteBit(false); // unused, 10.0.2
- _worldPacket.WriteBit(EuropaTicketSystemStatus.has_value());
- _worldPacket.WriteBit(IsNameReservationEnabled);
- _worldPacket.WriteBit(LaunchETA.has_value());
- _worldPacket.WriteBit(false); // unused, 4.4.0
- _worldPacket.WriteBit(false); // unused, 4.4.0
-
- _worldPacket.WriteBit(false); // unused, 4.4.0
- _worldPacket.WriteBit(IsSoMNotificationEnabled);
- _worldPacket.WriteBit(AddonsDisabled);
- _worldPacket.WriteBit(Unused1000);
- _worldPacket.WriteBit(AccountSaveDataExportEnabled);
- _worldPacket.WriteBit(AccountLockedByExport);
- _worldPacket.WriteBit(RealmHiddenAlert.has_value());
+ _worldPacket << Bits<1>(BpayStoreEnabled);
+ _worldPacket << Bits<1>(BpayStoreAvailable);
+ _worldPacket << Bits<1>(BpayStoreDisabledByParentalControls);
+ _worldPacket << Bits<1>(CharUndeleteEnabled);
+ _worldPacket << Bits<1>(CommerceSystemEnabled);
+ _worldPacket << Bits<1>(Unk14);
+ _worldPacket << Bits<1>(WillKickFromWorld);
+ _worldPacket << Bits<1>(IsExpansionPreorderInStore);
+
+ _worldPacket << Bits<1>(KioskModeEnabled);
+ _worldPacket << Bits<1>(CompetitiveModeEnabled);
+ _worldPacket << Bits<1>(IsBoostEnabled);
+ _worldPacket << Bits<1>(TrialBoostEnabled);
+ _worldPacket << Bits<1>(TokenBalanceEnabled);
+ _worldPacket << Bits<1>(LiveRegionCharacterListEnabled);
+ _worldPacket << Bits<1>(LiveRegionCharacterCopyEnabled);
+ _worldPacket << Bits<1>(LiveRegionAccountCopyEnabled);
+
+ _worldPacket << Bits<1>(LiveRegionKeyBindingsCopyEnabled);
+ _worldPacket << Bits<1>(Unknown901CheckoutRelated);
+ _worldPacket << Bits<1>(false); // unused, 10.0.2
+ _worldPacket << OptionalInit(EuropaTicketSystemStatus);
+ _worldPacket << Bits<1>(IsNameReservationEnabled);
+ _worldPacket << OptionalInit(LaunchETA);
+ _worldPacket << Bits<1>(false); // unused, 4.4.0
+ _worldPacket << Bits<1>(false); // unused, 4.4.0
+
+ _worldPacket << Bits<1>(false); // unused, 4.4.0
+ _worldPacket << Bits<1>(IsSoMNotificationEnabled);
+ _worldPacket << Bits<1>(AddonsDisabled);
+ _worldPacket << Bits<1>(Unused1000);
+ _worldPacket << Bits<1>(AccountSaveDataExportEnabled);
+ _worldPacket << Bits<1>(AccountLockedByExport);
+ _worldPacket << OptionalInit(RealmHiddenAlert);
if (RealmHiddenAlert)
- _worldPacket.WriteBits(RealmHiddenAlert->length() + 1, 11);
+ _worldPacket << Bits<11>(RealmHiddenAlert->length() + 1);
_worldPacket.FlushBits();
@@ -290,9 +290,9 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write()
WorldPacket const* SetTimeZoneInformation::Write()
{
- _worldPacket.WriteBits(ServerTimeTZ.length(), 7);
- _worldPacket.WriteBits(GameTimeTZ.length(), 7);
- _worldPacket.WriteBits(ServerRegionalTZ.length(), 7);
+ _worldPacket << BitsSize<7>(ServerTimeTZ);
+ _worldPacket << BitsSize<7>(GameTimeTZ);
+ _worldPacket << BitsSize<7>(ServerRegionalTZ);
_worldPacket.FlushBits();
_worldPacket.WriteString(ServerTimeTZ);
diff --git a/src/server/game/Server/Packets/TradePackets.h b/src/server/game/Server/Packets/TradePackets.h
index 44fc6497b87..db4caa1135d 100644
--- a/src/server/game/Server/Packets/TradePackets.h
+++ b/src/server/game/Server/Packets/TradePackets.h
@@ -152,7 +152,6 @@ namespace WorldPackets
struct UnwrappedTradeItem
{
- WorldPackets::Item::ItemInstance Item;
int32 EnchantID = 0;
int32 OnUseEnchantmentID = 0;
ObjectGuid Creator;
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 8cfb0dec3fa..1ce7b3ce3e0 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -5112,7 +5112,7 @@ SpellLogEffect& Spell::GetExecuteLogEffect(SpellEffectName effect)
return _executeLogEffects.back();
}
-void Spell::ExecuteLogEffectTakeTargetPower(SpellEffectName effect, Unit* target, uint32 powerType, uint32 points, float amplitude)
+void Spell::ExecuteLogEffectTakeTargetPower(SpellEffectName effect, Unit* target, Powers powerType, uint32 points, float amplitude)
{
SpellLogEffectPowerDrainParams spellLogEffectPowerDrainParams;
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h
index c9ca742f96a..e6b03408192 100644
--- a/src/server/game/Spells/Spell.h
+++ b/src/server/game/Spells/Spell.h
@@ -173,7 +173,7 @@ struct SpellLogEffectPowerDrainParams
{
ObjectGuid Victim;
uint32 Points = 0;
- uint32 PowerType = 0;
+ Powers PowerType = POWER_MANA;
float Amplitude = 0;
};
@@ -539,7 +539,7 @@ class TC_GAME_API Spell
return *opt;
}
- void ExecuteLogEffectTakeTargetPower(SpellEffectName effect, Unit* target, uint32 powerType, uint32 points, float amplitude);
+ void ExecuteLogEffectTakeTargetPower(SpellEffectName effect, Unit* target, Powers powerType, uint32 points, float amplitude);
void ExecuteLogEffectExtraAttacks(SpellEffectName effect, Unit* victim, uint32 numAttacks);
void ExecuteLogEffectDurabilityDamage(SpellEffectName effect, Unit* victim, int32 itemId, int32 amount);
void ExecuteLogEffectOpenLock(SpellEffectName effect, Object* obj);