aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-04-09 20:57:47 +0200
committerShauren <shauren.trinity@gmail.com>2021-04-09 20:57:47 +0200
commitf2202869f71f5a1a35191de303ee5166e4275884 (patch)
tree594ee97fbcd8a840ca96396ba0be84289abf70fb /src/server/game/Entities/Object
parentf759809d9d4364bc1d988e4390d3d5a33d5469e9 (diff)
Core/PacketIO: Updated packet structures to 9.0.5
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Object.cpp1
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp116
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h67
3 files changed, 98 insertions, 86 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 01ade19f1d4..55be0ac8e52 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -609,6 +609,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const
//if (flags.SmoothPhasing)
//{
// data->WriteBit(ReplaceActive);
+ // data->WriteBit(StopAnimKits);
// data->WriteBit(HasReplaceObject);
// data->FlushBits();
// if (HasReplaceObject)
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index e350de8d24e..2d210afde5b 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -298,7 +298,7 @@ void ItemData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
}
data << uint32(CreatePlayedTime);
data << int32(Context);
- data << int32(CreateTime);
+ data << int64(CreateTime);
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
{
data << uint64(ArtifactXP);
@@ -446,7 +446,7 @@ void ItemData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
}
if (changesMask[15])
{
- data << int32(CreateTime);
+ data << int64(CreateTime);
}
if (changesMask[16])
{
@@ -2555,7 +2555,7 @@ void PVPInfo::WriteCreate(ByteBuffer& data, Player const* owner, Player const* r
data << uint32(Field_14);
data << uint32(Field_18);
data << uint32(PvpTierID);
- data.WriteBits(Field_20, 1);
+ data.WriteBit(Field_20);
data.FlushBits();
}
@@ -2567,44 +2567,47 @@ void PVPInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const
data.WriteBits(changesMask.GetBlock(0), 10);
- data.FlushBits();
if (changesMask[0])
{
if (changesMask[1])
{
- data << uint32(Field_0);
+ data.WriteBit(Field_20);
}
+ }
+ data.FlushBits();
+ if (changesMask[0])
+ {
if (changesMask[2])
{
- data << uint32(Field_4);
+ data << uint32(Field_0);
}
if (changesMask[3])
{
- data << uint32(Field_8);
+ data << uint32(Field_4);
}
if (changesMask[4])
{
- data << uint32(Field_C);
+ data << uint32(Field_8);
}
if (changesMask[5])
{
- data << uint32(Rating);
+ data << uint32(Field_C);
}
if (changesMask[6])
{
- data << uint32(Field_14);
+ data << uint32(Rating);
}
if (changesMask[7])
{
- data << uint32(Field_18);
+ data << uint32(Field_14);
}
if (changesMask[8])
{
- data << uint32(PvpTierID);
+ data << uint32(Field_18);
}
if (changesMask[9])
{
- data.WriteBits(Field_20, 1);
+ data << uint32(PvpTierID);
}
}
data.FlushBits();
@@ -2612,6 +2615,7 @@ void PVPInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const
void PVPInfo::ClearChangesMask()
{
+ Base::ClearChangesMask(Field_20);
Base::ClearChangesMask(Field_0);
Base::ClearChangesMask(Field_4);
Base::ClearChangesMask(Field_8);
@@ -2620,7 +2624,6 @@ void PVPInfo::ClearChangesMask()
Base::ClearChangesMask(Field_14);
Base::ClearChangesMask(Field_18);
Base::ClearChangesMask(PvpTierID);
- Base::ClearChangesMask(Field_20);
_changesMask.ResetAll();
}
@@ -3019,11 +3022,11 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
}
data << int32(Honor);
data << int32(HonorNextLevel);
- data << int32(PvpRewardAchieved);
+ data << int64(PvpRewardAchieved);
data << int32(PvpTierMaxFromWins);
- data << int32(PvpLastWeeksRewardAchieved);
+ data << int64(PvpLastWeeksRewardAchieved);
data << int32(PvpLastWeeksTierMaxFromWins);
- data << int32(PvpLastWeeksRewardClaimed);
+ data << int64(PvpLastWeeksRewardClaimed);
data << uint8(NumBankSlots);
data << uint32(ResearchSites.size());
data << uint32(ResearchSiteProgress.size());
@@ -3056,6 +3059,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << uint32(DisabledSpells.size());
data << int32(UiChromieTimeExpansionID);
data << int32(TransportServerTime);
+ data << uint32(WeeklyRewardsPeriodSinceOrigin);
for (std::size_t i = 0; i < KnownTitles.size(); ++i)
{
data << uint64(KnownTitles[i]);
@@ -3334,6 +3338,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
+ data.FlushBits();
if (changesMask[0])
{
if (changesMask[22])
@@ -3894,7 +3899,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[104])
{
- data << int32(PvpRewardAchieved);
+ data << int64(PvpRewardAchieved);
}
if (changesMask[105])
{
@@ -3902,7 +3907,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[106])
{
- data << int32(PvpLastWeeksRewardAchieved);
+ data << int64(PvpLastWeeksRewardAchieved);
}
if (changesMask[107])
{
@@ -3910,7 +3915,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[108])
{
- data << int32(PvpLastWeeksRewardClaimed);
+ data << int64(PvpLastWeeksRewardClaimed);
}
if (changesMask[109])
{
@@ -3924,6 +3929,10 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
{
data << int32(TransportServerTime);
}
+ if (changesMask[114])
+ {
+ data << uint32(WeeklyRewardsPeriodSinceOrigin);
+ }
}
if (changesMask[98])
{
@@ -3940,161 +3949,161 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[114])
+ if (changesMask[115])
{
for (std::size_t i = 0; i < 199; ++i)
{
- if (changesMask[115 + i])
+ if (changesMask[116 + i])
{
data << InvSlots[i];
}
}
}
- if (changesMask[314])
+ if (changesMask[315])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[315 + i])
+ if (changesMask[316 + i])
{
data << uint32(TrackResourceMask[i]);
}
}
}
- if (changesMask[317])
+ if (changesMask[318])
{
for (std::size_t i = 0; i < 192; ++i)
{
- if (changesMask[318 + i])
+ if (changesMask[319 + i])
{
data << uint64(ExploredZones[i]);
}
}
}
- if (changesMask[510])
+ if (changesMask[511])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[511 + i])
+ if (changesMask[512 + i])
{
RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[513])
+ if (changesMask[514])
{
for (std::size_t i = 0; i < 7; ++i)
{
- if (changesMask[514 + i])
+ if (changesMask[515 + i])
{
data << int32(ModDamageDonePos[i]);
}
- if (changesMask[521 + i])
+ if (changesMask[522 + i])
{
data << int32(ModDamageDoneNeg[i]);
}
- if (changesMask[528 + i])
+ if (changesMask[529 + i])
{
data << float(ModDamageDonePercent[i]);
}
- if (changesMask[535 + i])
+ if (changesMask[536 + i])
{
data << float(ModHealingDonePercent[i]);
}
}
}
- if (changesMask[542])
+ if (changesMask[543])
{
for (std::size_t i = 0; i < 3; ++i)
{
- if (changesMask[543 + i])
+ if (changesMask[544 + i])
{
data << float(WeaponDmgMultipliers[i]);
}
- if (changesMask[546 + i])
+ if (changesMask[547 + i])
{
data << float(WeaponAtkSpeedMultipliers[i]);
}
}
}
- if (changesMask[549])
+ if (changesMask[550])
{
for (std::size_t i = 0; i < 12; ++i)
{
- if (changesMask[550 + i])
+ if (changesMask[551 + i])
{
data << uint32(BuybackPrice[i]);
}
- if (changesMask[562 + i])
+ if (changesMask[563 + i])
{
data << uint32(BuybackTimestamp[i]);
}
}
}
- if (changesMask[574])
+ if (changesMask[575])
{
for (std::size_t i = 0; i < 32; ++i)
{
- if (changesMask[575 + i])
+ if (changesMask[576 + i])
{
data << int32(CombatRatings[i]);
}
}
}
- if (changesMask[614])
+ if (changesMask[615])
{
for (std::size_t i = 0; i < 4; ++i)
{
- if (changesMask[615 + i])
+ if (changesMask[616 + i])
{
data << uint32(NoReagentCostMask[i]);
}
}
}
- if (changesMask[619])
+ if (changesMask[620])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[620 + i])
+ if (changesMask[621 + i])
{
data << int32(ProfessionSkillLine[i]);
}
}
}
- if (changesMask[622])
+ if (changesMask[623])
{
for (std::size_t i = 0; i < 4; ++i)
{
- if (changesMask[623 + i])
+ if (changesMask[624 + i])
{
data << uint32(BagSlotFlags[i]);
}
}
}
- if (changesMask[627])
+ if (changesMask[628])
{
for (std::size_t i = 0; i < 7; ++i)
{
- if (changesMask[628 + i])
+ if (changesMask[629 + i])
{
data << uint32(BankBagSlotFlags[i]);
}
}
}
- if (changesMask[635])
+ if (changesMask[636])
{
for (std::size_t i = 0; i < 875; ++i)
{
- if (changesMask[636 + i])
+ if (changesMask[637 + i])
{
data << uint64(QuestCompleted[i]);
}
}
}
- if (changesMask[607])
+ if (changesMask[608])
{
for (std::size_t i = 0; i < 6; ++i)
{
- if (changesMask[608 + i])
+ if (changesMask[609 + i])
{
PvpInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
@@ -4214,6 +4223,7 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(QuestSession);
Base::ClearChangesMask(UiChromieTimeExpansionID);
Base::ClearChangesMask(TransportServerTime);
+ Base::ClearChangesMask(WeeklyRewardsPeriodSinceOrigin);
Base::ClearChangesMask(InvSlots);
Base::ClearChangesMask(TrackResourceMask);
Base::ClearChangesMask(ExploredZones);
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index 78bdccfa0e6..7b450dac5fe 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -127,7 +127,7 @@ struct ItemData : public IsUpdateFieldStructureTag, public HasChangesMask<40>
UpdateField<uint32, 0, 12> MaxDurability;
UpdateField<uint32, 0, 13> CreatePlayedTime;
UpdateField<int32, 0, 14> Context;
- UpdateField<int32, 0, 15> CreateTime;
+ UpdateField<int64, 0, 15> CreateTime;
UpdateField<uint64, 0, 16> ArtifactXP;
UpdateField<uint8, 0, 17> ItemAppearanceModID;
UpdateField<UF::ItemModList, 0, 18> Modifiers;
@@ -522,15 +522,15 @@ struct RestInfo : public IsUpdateFieldStructureTag, public HasChangesMask<3>
struct PVPInfo : public IsUpdateFieldStructureTag, public HasChangesMask<10>
{
- UpdateField<uint32, 0, 1> Field_0;
- UpdateField<uint32, 0, 2> Field_4;
- UpdateField<uint32, 0, 3> Field_8;
- UpdateField<uint32, 0, 4> Field_C;
- UpdateField<uint32, 0, 5> Rating;
- UpdateField<uint32, 0, 6> Field_14;
- UpdateField<uint32, 0, 7> Field_18;
- UpdateField<uint32, 0, 8> PvpTierID;
- UpdateField<uint32, 0, 9> Field_20;
+ UpdateField<bool, 0, 1> Field_20;
+ UpdateField<uint32, 0, 2> Field_0;
+ UpdateField<uint32, 0, 3> Field_4;
+ UpdateField<uint32, 0, 4> Field_8;
+ UpdateField<uint32, 0, 5> Field_C;
+ UpdateField<uint32, 0, 6> Rating;
+ UpdateField<uint32, 0, 7> Field_14;
+ UpdateField<uint32, 0, 8> Field_18;
+ UpdateField<uint32, 0, 9> PvpTierID;
void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
@@ -647,7 +647,7 @@ struct ReplayedQuest : public IsUpdateFieldStructureTag, public HasChangesMask<3
void ClearChangesMask();
};
-struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1511>
+struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1512>
{
UpdateField<bool, 0, 1> BackpackAutoSortDisabled;
UpdateField<bool, 0, 2> BankAutoSortDisabled;
@@ -748,35 +748,36 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
UpdateField<uint64, 98, 101> GuildClubMemberID;
UpdateField<int32, 98, 102> Honor;
UpdateField<int32, 98, 103> HonorNextLevel;
- UpdateField<int32, 98, 104> PvpRewardAchieved;
+ UpdateField<int64, 98, 104> PvpRewardAchieved;
UpdateField<int32, 98, 105> PvpTierMaxFromWins;
- UpdateField<int32, 98, 106> PvpLastWeeksRewardAchieved;
+ UpdateField<int64, 98, 106> PvpLastWeeksRewardAchieved;
UpdateField<int32, 98, 107> PvpLastWeeksTierMaxFromWins;
- UpdateField<int32, 98, 108> PvpLastWeeksRewardClaimed;
+ UpdateField<int64, 98, 108> PvpLastWeeksRewardClaimed;
UpdateField<uint8, 98, 109> NumBankSlots;
UpdateField<UF::ActivePlayerUnk901, 98, 111> Field_1410;
OptionalUpdateField<UF::QuestSession, 98, 110> QuestSession;
UpdateField<int32, 98, 112> UiChromieTimeExpansionID;
UpdateField<int32, 98, 113> TransportServerTime;
- UpdateFieldArray<ObjectGuid, 199, 114, 115> InvSlots;
- UpdateFieldArray<uint32, 2, 314, 315> TrackResourceMask;
- UpdateFieldArray<uint64, 192, 317, 318> ExploredZones;
- UpdateFieldArray<UF::RestInfo, 2, 510, 511> RestInfo;
- UpdateFieldArray<int32, 7, 513, 514> ModDamageDonePos;
- UpdateFieldArray<int32, 7, 513, 521> ModDamageDoneNeg;
- UpdateFieldArray<float, 7, 513, 528> ModDamageDonePercent;
- UpdateFieldArray<float, 7, 513, 535> ModHealingDonePercent;
- UpdateFieldArray<float, 3, 542, 543> WeaponDmgMultipliers;
- UpdateFieldArray<float, 3, 542, 546> WeaponAtkSpeedMultipliers;
- UpdateFieldArray<uint32, 12, 549, 550> BuybackPrice;
- UpdateFieldArray<uint32, 12, 549, 562> BuybackTimestamp;
- UpdateFieldArray<int32, 32, 574, 575> CombatRatings;
- UpdateFieldArray<UF::PVPInfo, 6, 607, 608> PvpInfo;
- UpdateFieldArray<uint32, 4, 614, 615> NoReagentCostMask;
- UpdateFieldArray<int32, 2, 619, 620> ProfessionSkillLine;
- UpdateFieldArray<uint32, 4, 622, 623> BagSlotFlags;
- UpdateFieldArray<uint32, 7, 627, 628> BankBagSlotFlags;
- UpdateFieldArray<uint64, 875, 635, 636> QuestCompleted;
+ UpdateField<uint32, 98, 114> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
+ UpdateFieldArray<ObjectGuid, 199, 115, 116> InvSlots;
+ UpdateFieldArray<uint32, 2, 315, 316> TrackResourceMask;
+ UpdateFieldArray<uint64, 192, 318, 319> ExploredZones;
+ UpdateFieldArray<UF::RestInfo, 2, 511, 512> RestInfo;
+ UpdateFieldArray<int32, 7, 514, 515> ModDamageDonePos;
+ UpdateFieldArray<int32, 7, 514, 522> ModDamageDoneNeg;
+ UpdateFieldArray<float, 7, 514, 529> ModDamageDonePercent;
+ UpdateFieldArray<float, 7, 514, 536> ModHealingDonePercent;
+ UpdateFieldArray<float, 3, 543, 544> WeaponDmgMultipliers;
+ UpdateFieldArray<float, 3, 543, 547> WeaponAtkSpeedMultipliers;
+ UpdateFieldArray<uint32, 12, 550, 551> BuybackPrice;
+ UpdateFieldArray<uint32, 12, 550, 563> BuybackTimestamp;
+ UpdateFieldArray<int32, 32, 575, 576> CombatRatings;
+ UpdateFieldArray<UF::PVPInfo, 6, 608, 609> PvpInfo;
+ UpdateFieldArray<uint32, 4, 615, 616> NoReagentCostMask;
+ UpdateFieldArray<int32, 2, 620, 621> ProfessionSkillLine;
+ UpdateFieldArray<uint32, 4, 623, 624> BagSlotFlags;
+ UpdateFieldArray<uint32, 7, 628, 629> BankBagSlotFlags;
+ UpdateFieldArray<uint64, 875, 636, 637> QuestCompleted;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;