diff options
| author | Shauren <shauren.trinity@gmail.com> | 2020-02-16 15:57:49 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2020-02-17 23:58:08 +0100 |
| commit | 462a10de17003631957b69e578e7e4c55ed1ef61 (patch) | |
| tree | 7ac4887e5fecfab660c34f34dca0648a4b822e82 /src/server/game/Entities/Object | |
| parent | 38cc011af04ebc7edff74f1ed4edfde9d1d77e0b (diff) | |
Core/PacketIO: Updated packets to 8.3.0
Diffstat (limited to 'src/server/game/Entities/Object')
| -rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFields.cpp | 130 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFields.h | 77 |
2 files changed, 107 insertions, 100 deletions
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 3b78a448089..56bade88f2d 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -518,7 +518,7 @@ void UnlockedAzeriteEssence::WriteUpdate(ByteBuffer& data, AzeriteItem const* ow void SelectedAzeriteEssences::WriteCreate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const { - for (std::size_t i = 0; i < 3; ++i) + for (std::size_t i = 0; i < 4; ++i) { data << uint32(AzeriteEssenceID[i]); } @@ -529,7 +529,7 @@ void SelectedAzeriteEssences::WriteCreate(ByteBuffer& data, AzeriteItem const* o void SelectedAzeriteEssences::WriteUpdate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const { - UpdateMask<7> const& changesMask = _changesMask; + UpdateMask<8> const& changesMask = _changesMask; data.WriteBits(changesMask.GetBlocksMask(0), 1); if (changesMask.GetBlock(0)) data.WriteBits(changesMask.GetBlock(0), 32); @@ -548,7 +548,7 @@ void SelectedAzeriteEssences::WriteUpdate(ByteBuffer& data, AzeriteItem const* o } if (changesMask[3]) { - for (std::size_t i = 0; i < 3; ++i) + for (std::size_t i = 0; i < 4; ++i) { if (changesMask[4 + i]) { @@ -938,6 +938,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fiel data << uint32(PassiveSpells.size()); data << uint32(WorldEffects.size()); data << uint32(ChannelObjects.size()); + data << SkinningOwnerGUID; for (std::size_t i = 0; i < PassiveSpells.size(); ++i) { PassiveSpells[i].WriteCreate(data, owner, receiver); @@ -954,22 +955,22 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fiel void UnitData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const { - UpdateMask<191> allowedMaskForTarget({ 0xFFFFEFFFu, 0xFC3FBFFFu, 0x0001EFFFu, 0xFFDFFFF9u, 0x001FC003u, 0x00000000u }); + UpdateMask<192> allowedMaskForTarget({ 0xFFFFEFFFu, 0xFC3FBFFFu, 0x0001EFFFu, 0xFFBFFFF9u, 0x003F8007u, 0x00000000u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, fieldVisibilityFlags, owner, receiver); } -void UnitData::AppendAllowedFieldsMaskForFlag(UpdateMask<191>& allowedMaskForTarget, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags) const +void UnitData::AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTarget, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) - allowedMaskForTarget |= { 0x00001000u, 0x03C04000u, 0xFFFE1000u, 0x00200006u, 0xFFE03FFCu, 0x7FFFFFFFu }; + allowedMaskForTarget |= { 0x00001000u, 0x03C04000u, 0xFFFE1000u, 0x00400006u, 0xFFC07FF8u, 0xFFFFFFFFu }; if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::UnitAll)) - allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x00200000u, 0x00003FFCu, 0x00000000u }; + allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x00400000u, 0x00007FF8u, 0x00000000u }; if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Empath)) - allowedMaskForTarget |= { 0x00000000u, 0x03C00000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x000003FCu }; + allowedMaskForTarget |= { 0x00000000u, 0x03C00000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x000007F8u }; } -void UnitData::WriteUpdate(ByteBuffer& data, UpdateMask<191> const& changesMask, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const +void UnitData::WriteUpdate(ByteBuffer& data, UpdateMask<192> const& changesMask, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const { data.WriteBits(changesMask.GetBlocksMask(0), 6); for (std::size_t i = 0; i < 6; ++i) @@ -1469,94 +1470,98 @@ void UnitData::WriteUpdate(ByteBuffer& data, UpdateMask<191> const& changesMask, { data << GuildGUID; } + if (changesMask[114]) + { + data << SkinningOwnerGUID; + } } - if (changesMask[114]) + if (changesMask[115]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[115 + i]) + if (changesMask[116 + i]) { data << uint32(ViewerDependentValue<NpcFlagsTag>::GetValue(NpcFlags[i], i, owner, receiver)); } } } - if (changesMask[117]) + if (changesMask[118]) { for (std::size_t i = 0; i < 6; ++i) { - if (changesMask[118 + i]) + if (changesMask[119 + i]) { data << int32(Power[i]); } - if (changesMask[124 + i]) + if (changesMask[125 + i]) { data << int32(MaxPower[i]); } - if (changesMask[130 + i]) + if (changesMask[131 + i]) { data << float(PowerRegenFlatModifier[i]); } - if (changesMask[136 + i]) + if (changesMask[137 + i]) { data << float(PowerRegenInterruptedFlatModifier[i]); } } } - if (changesMask[142]) + if (changesMask[143]) { for (std::size_t i = 0; i < 3; ++i) { - if (changesMask[143 + i]) + if (changesMask[144 + i]) { VirtualItems[i].WriteUpdate(data, owner, receiver); } } } - if (changesMask[146]) + if (changesMask[147]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[147 + i]) + if (changesMask[148 + i]) { data << uint32(AttackRoundBaseTime[i]); } } } - if (changesMask[149]) + if (changesMask[150]) { for (std::size_t i = 0; i < 4; ++i) { - if (changesMask[150 + i]) + if (changesMask[151 + i]) { data << int32(Stats[i]); } - if (changesMask[154 + i]) + if (changesMask[155 + i]) { data << int32(StatPosBuff[i]); } - if (changesMask[158 + i]) + if (changesMask[159 + i]) { data << int32(StatNegBuff[i]); } } } - if (changesMask[162]) + if (changesMask[163]) { for (std::size_t i = 0; i < 7; ++i) { - if (changesMask[163 + i]) + if (changesMask[164 + i]) { data << int32(Resistances[i]); } - if (changesMask[170 + i]) + if (changesMask[171 + i]) { data << int32(BonusResistanceMods[i]); } - if (changesMask[177 + i]) + if (changesMask[178 + i]) { data << int32(PowerCostModifier[i]); } - if (changesMask[184 + i]) + if (changesMask[185 + i]) { data << float(PowerCostMultiplier[i]); } @@ -1676,6 +1681,7 @@ void UnitData::ClearChangesMask() Base::ClearChangesMask(LookAtControllerID); Base::ClearChangesMask(TaxiNodesID); Base::ClearChangesMask(GuildGUID); + Base::ClearChangesMask(SkinningOwnerGUID); Base::ClearChangesMask(NpcFlags); Base::ClearChangesMask(Power); Base::ClearChangesMask(MaxPower); @@ -2494,7 +2500,7 @@ void QuestSession::ClearChangesMask() void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const { - for (std::size_t i = 0; i < 195; ++i) + for (std::size_t i = 0; i < 199; ++i) { data << InvSlots[i]; } @@ -2737,7 +2743,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const { - UpdateMask<1490> const& changesMask = _changesMask; + UpdateMask<1494> const& changesMask = _changesMask; for (std::size_t i = 0; i < 1; ++i) data << uint32(changesMask.GetBlocksMask(i)); data.WriteBits(changesMask.GetBlocksMask(1), 15); @@ -3363,7 +3369,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl } if (changesMask[104]) { - for (std::size_t i = 0; i < 195; ++i) + for (std::size_t i = 0; i < 199; ++i) { if (changesMask[105 + i]) { @@ -3371,147 +3377,147 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl } } } - if (changesMask[300]) + if (changesMask[304]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[301 + i]) + if (changesMask[305 + i]) { data << uint32(TrackResourceMask[i]); } } } - if (changesMask[303]) + if (changesMask[307]) { for (std::size_t i = 0; i < 192; ++i) { - if (changesMask[304 + i]) + if (changesMask[308 + i]) { data << uint64(ExploredZones[i]); } } } - if (changesMask[496]) + if (changesMask[500]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[497 + i]) + if (changesMask[501 + i]) { RestInfo[i].WriteUpdate(data, owner, receiver); } } } - if (changesMask[499]) + if (changesMask[503]) { for (std::size_t i = 0; i < 7; ++i) { - if (changesMask[500 + i]) + if (changesMask[504 + i]) { data << int32(ModDamageDonePos[i]); } - if (changesMask[507 + i]) + if (changesMask[511 + i]) { data << int32(ModDamageDoneNeg[i]); } - if (changesMask[514 + i]) + if (changesMask[518 + i]) { data << float(ModDamageDonePercent[i]); } } } - if (changesMask[521]) + if (changesMask[525]) { for (std::size_t i = 0; i < 3; ++i) { - if (changesMask[522 + i]) + if (changesMask[526 + i]) { data << float(WeaponDmgMultipliers[i]); } - if (changesMask[525 + i]) + if (changesMask[529 + i]) { data << float(WeaponAtkSpeedMultipliers[i]); } } } - if (changesMask[528]) + if (changesMask[532]) { for (std::size_t i = 0; i < 12; ++i) { - if (changesMask[529 + i]) + if (changesMask[533 + i]) { data << uint32(BuybackPrice[i]); } - if (changesMask[541 + i]) + if (changesMask[545 + i]) { data << uint32(BuybackTimestamp[i]); } } } - if (changesMask[553]) + if (changesMask[557]) { for (std::size_t i = 0; i < 32; ++i) { - if (changesMask[554 + i]) + if (changesMask[558 + i]) { data << int32(CombatRatings[i]); } } } - if (changesMask[593]) + if (changesMask[597]) { for (std::size_t i = 0; i < 4; ++i) { - if (changesMask[594 + i]) + if (changesMask[598 + i]) { data << uint32(NoReagentCostMask[i]); } } } - if (changesMask[598]) + if (changesMask[602]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[599 + i]) + if (changesMask[603 + i]) { data << int32(ProfessionSkillLine[i]); } } } - if (changesMask[601]) + if (changesMask[605]) { for (std::size_t i = 0; i < 4; ++i) { - if (changesMask[602 + i]) + if (changesMask[606 + i]) { data << uint32(BagSlotFlags[i]); } } } - if (changesMask[606]) + if (changesMask[610]) { for (std::size_t i = 0; i < 7; ++i) { - if (changesMask[607 + i]) + if (changesMask[611 + i]) { data << uint32(BankBagSlotFlags[i]); } } } - if (changesMask[614]) + if (changesMask[618]) { for (std::size_t i = 0; i < 875; ++i) { - if (changesMask[615 + i]) + if (changesMask[619 + i]) { data << uint64(QuestCompleted[i]); } } } - if (changesMask[586]) + if (changesMask[590]) { for (std::size_t i = 0; i < 6; ++i) { - if (changesMask[587 + i]) + if (changesMask[591 + i]) { PvpInfo[i].WriteUpdate(data, owner, receiver); } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index b31751eb061..0335b90b4ac 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -145,11 +145,11 @@ struct UnlockedAzeriteEssence : public IsUpdateFieldStructureTag void WriteUpdate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const; }; -struct SelectedAzeriteEssences : public IsUpdateFieldStructureTag, public HasChangesMask<7> +struct SelectedAzeriteEssences : public IsUpdateFieldStructureTag, public HasChangesMask<8> { UpdateField<uint32, 0, 1> SpecializationID; UpdateField<uint32, 0, 2> Enabled; - UpdateFieldArray<uint32, 3, 3, 4> AzeriteEssenceID; + UpdateFieldArray<uint32, 4, 3, 4> AzeriteEssenceID; void WriteCreate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const; @@ -203,7 +203,7 @@ struct PassiveSpellHistory : public IsUpdateFieldStructureTag void WriteUpdate(ByteBuffer& data, Unit const* owner, Player const* receiver) const; }; -struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<191> +struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<192> { UpdateField<std::vector<uint32>, 0, 1> StateWorldEffectIDs; DynamicUpdateField<UF::PassiveSpellHistory, 0, 2> PassiveSpells; @@ -320,26 +320,27 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<191> UpdateField<int32, 96, 111> LookAtControllerID; UpdateField<int32, 96, 112> TaxiNodesID; UpdateField<ObjectGuid, 96, 113> GuildGUID; - UpdateFieldArray<uint32, 2, 114, 115> NpcFlags; + UpdateField<ObjectGuid, 96, 114> SkinningOwnerGUID; + UpdateFieldArray<uint32, 2, 115, 116> NpcFlags; struct NpcFlagsTag : ViewerDependentValueTag<uint32> {}; - UpdateFieldArray<int32, 6, 117, 118> Power; - UpdateFieldArray<int32, 6, 117, 124> MaxPower; - UpdateFieldArray<float, 6, 117, 130> PowerRegenFlatModifier; - UpdateFieldArray<float, 6, 117, 136> PowerRegenInterruptedFlatModifier; - UpdateFieldArray<UF::VisibleItem, 3, 142, 143> VirtualItems; - UpdateFieldArray<uint32, 2, 146, 147> AttackRoundBaseTime; - UpdateFieldArray<int32, 4, 149, 150> Stats; - UpdateFieldArray<int32, 4, 149, 154> StatPosBuff; - UpdateFieldArray<int32, 4, 149, 158> StatNegBuff; - UpdateFieldArray<int32, 7, 162, 163> Resistances; - UpdateFieldArray<int32, 7, 162, 170> BonusResistanceMods; - UpdateFieldArray<int32, 7, 162, 177> PowerCostModifier; - UpdateFieldArray<float, 7, 162, 184> PowerCostMultiplier; + UpdateFieldArray<int32, 6, 118, 119> Power; + UpdateFieldArray<int32, 6, 118, 125> MaxPower; + UpdateFieldArray<float, 6, 118, 131> PowerRegenFlatModifier; + UpdateFieldArray<float, 6, 118, 137> PowerRegenInterruptedFlatModifier; + UpdateFieldArray<UF::VisibleItem, 3, 143, 144> VirtualItems; + UpdateFieldArray<uint32, 2, 147, 148> AttackRoundBaseTime; + UpdateFieldArray<int32, 4, 150, 151> Stats; + UpdateFieldArray<int32, 4, 150, 155> StatPosBuff; + UpdateFieldArray<int32, 4, 150, 159> StatNegBuff; + UpdateFieldArray<int32, 7, 163, 164> Resistances; + UpdateFieldArray<int32, 7, 163, 171> BonusResistanceMods; + UpdateFieldArray<int32, 7, 163, 178> PowerCostModifier; + UpdateFieldArray<float, 7, 163, 185> PowerCostMultiplier; void WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; - void AppendAllowedFieldsMaskForFlag(UpdateMask<191>& allowedMaskForTarget, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags) const; - void WriteUpdate(ByteBuffer& data, UpdateMask<191> const& changesMask, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; + void AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTarget, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags) const; + void WriteUpdate(ByteBuffer& data, UpdateMask<192> const& changesMask, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; void ClearChangesMask(); }; @@ -523,7 +524,7 @@ struct QuestSession : public IsUpdateFieldStructureTag, public HasChangesMask<87 void ClearChangesMask(); }; -struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1490> +struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1494> { UpdateField<bool, 0, 1> BackpackAutoSortDisabled; UpdateField<bool, 0, 2> BankAutoSortDisabled; @@ -624,24 +625,24 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateField<int32, 98, 101> PvpLastWeeksRewardClaimed; UpdateField<uint8, 98, 102> NumBankSlots; OptionalUpdateField<UF::QuestSession, 98, 103> QuestSession; - UpdateFieldArray<ObjectGuid, 195, 104, 105> InvSlots; - UpdateFieldArray<uint32, 2, 300, 301> TrackResourceMask; - UpdateFieldArray<uint64, 192, 303, 304> ExploredZones; - UpdateFieldArray<UF::RestInfo, 2, 496, 497> RestInfo; - UpdateFieldArray<int32, 7, 499, 500> ModDamageDonePos; - UpdateFieldArray<int32, 7, 499, 507> ModDamageDoneNeg; - UpdateFieldArray<float, 7, 499, 514> ModDamageDonePercent; - UpdateFieldArray<float, 3, 521, 522> WeaponDmgMultipliers; - UpdateFieldArray<float, 3, 521, 525> WeaponAtkSpeedMultipliers; - UpdateFieldArray<uint32, 12, 528, 529> BuybackPrice; - UpdateFieldArray<uint32, 12, 528, 541> BuybackTimestamp; - UpdateFieldArray<int32, 32, 553, 554> CombatRatings; - UpdateFieldArray<UF::PVPInfo, 6, 586, 587> PvpInfo; - UpdateFieldArray<uint32, 4, 593, 594> NoReagentCostMask; - UpdateFieldArray<int32, 2, 598, 599> ProfessionSkillLine; - UpdateFieldArray<uint32, 4, 601, 602> BagSlotFlags; - UpdateFieldArray<uint32, 7, 606, 607> BankBagSlotFlags; - UpdateFieldArray<uint64, 875, 614, 615> QuestCompleted; + UpdateFieldArray<ObjectGuid, 199, 104, 105> InvSlots; + UpdateFieldArray<uint32, 2, 304, 305> TrackResourceMask; + UpdateFieldArray<uint64, 192, 307, 308> ExploredZones; + UpdateFieldArray<UF::RestInfo, 2, 500, 501> RestInfo; + UpdateFieldArray<int32, 7, 503, 504> ModDamageDonePos; + UpdateFieldArray<int32, 7, 503, 511> ModDamageDoneNeg; + UpdateFieldArray<float, 7, 503, 518> ModDamageDonePercent; + UpdateFieldArray<float, 3, 525, 526> WeaponDmgMultipliers; + UpdateFieldArray<float, 3, 525, 529> WeaponAtkSpeedMultipliers; + UpdateFieldArray<uint32, 12, 532, 533> BuybackPrice; + UpdateFieldArray<uint32, 12, 532, 545> BuybackTimestamp; + UpdateFieldArray<int32, 32, 557, 558> CombatRatings; + UpdateFieldArray<UF::PVPInfo, 6, 590, 591> PvpInfo; + UpdateFieldArray<uint32, 4, 597, 598> NoReagentCostMask; + UpdateFieldArray<int32, 2, 602, 603> ProfessionSkillLine; + UpdateFieldArray<uint32, 4, 605, 606> BagSlotFlags; + UpdateFieldArray<uint32, 7, 610, 611> BankBagSlotFlags; + UpdateFieldArray<uint64, 875, 618, 619> QuestCompleted; void WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; |
