diff options
| author | Shauren <shauren.trinity@gmail.com> | 2025-06-18 11:37:07 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-06-18 11:37:07 +0200 |
| commit | ceb8d561b44579118b109a9ff71ba415df53bbdc (patch) | |
| tree | b2a6b87afa6a2b83b8040b8632a87cb9a8308775 /src/server/game/Entities | |
| parent | e02e8a474244c229cc34c4efb987e24b6dd417f5 (diff) | |
Core: Updated to 11.1.7
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFields.cpp | 423 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFields.h | 289 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 1 |
4 files changed, 372 insertions, 346 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 058b59a3dff..9da68100476 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -404,10 +404,11 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe if (HasDriveStatus) { - data->WriteBit(unit->m_movementInfo.driveStatus->accelerating); - data->WriteBit(unit->m_movementInfo.driveStatus->drifting); *data << float(unit->m_movementInfo.driveStatus->speed); *data << float(unit->m_movementInfo.driveStatus->movementAngle); + data->WriteBit(unit->m_movementInfo.driveStatus->accelerating); + data->WriteBit(unit->m_movementInfo.driveStatus->drifting); + data->FlushBits(); } *data << float(unit->GetSpeed(MOVE_WALK)); diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 49d9c52170b..7986d550120 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -4829,6 +4829,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f } } data << uint32(DailyQuestsCompleted.size()); + data << uint32(Field_1328.size()); data << uint32(AvailableQuestLineXQuestIDs.size()); data << uint32(Heirlooms.size()); data << uint32(HeirloomFlags.size()); @@ -4889,6 +4890,10 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f { data << int32(DailyQuestsCompleted[i]); } + for (uint32 i = 0; i < Field_1328.size(); ++i) + { + data << int32(Field_1328[i]); + } for (uint32 i = 0; i < AvailableQuestLineXQuestIDs.size(); ++i) { data << int32(AvailableQuestLineXQuestIDs[i]); @@ -5108,11 +5113,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo WriteCompleteDynamicFieldUpdateMask(PvpInfo.size(), data); } } - if (changesMask[41]) + if (changesMask[42]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[42]) + if (changesMask[43]) { if (!ignoreNestedChangesMask) ResearchSites[i].WriteUpdateMask(data); @@ -5121,11 +5126,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[43]) + if (changesMask[44]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[44]) + if (changesMask[45]) { if (!ignoreNestedChangesMask) ResearchSiteProgress[i].WriteUpdateMask(data); @@ -5134,11 +5139,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[45]) + if (changesMask[46]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[46]) + if (changesMask[47]) { if (!ignoreNestedChangesMask) Research[i].WriteUpdateMask(data); @@ -5147,11 +5152,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[41]) + if (changesMask[42]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[42]) + if (changesMask[43]) { for (uint32 j = 0; j < ResearchSites[i].size(); ++j) { @@ -5163,11 +5168,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[43]) + if (changesMask[44]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[44]) + if (changesMask[45]) { for (uint32 j = 0; j < ResearchSiteProgress[i].size(); ++j) { @@ -5179,11 +5184,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[45]) + if (changesMask[46]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[46]) + if (changesMask[47]) { for (uint32 j = 0; j < Research[i].size(); ++j) { @@ -5208,189 +5213,196 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo if (changesMask[12]) { if (!ignoreNestedChangesMask) + Field_1328.WriteUpdateMask(data); + else + WriteCompleteDynamicFieldUpdateMask(Field_1328.size(), data); + } + if (changesMask[13]) + { + if (!ignoreNestedChangesMask) AvailableQuestLineXQuestIDs.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(AvailableQuestLineXQuestIDs.size(), data); } - if (changesMask[13]) + if (changesMask[14]) { if (!ignoreNestedChangesMask) Heirlooms.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(Heirlooms.size(), data); } - if (changesMask[14]) + if (changesMask[15]) { if (!ignoreNestedChangesMask) HeirloomFlags.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(HeirloomFlags.size(), data); } - if (changesMask[15]) + if (changesMask[16]) { if (!ignoreNestedChangesMask) Toys.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(Toys.size(), data); } - if (changesMask[16]) + if (changesMask[17]) { if (!ignoreNestedChangesMask) ToyFlags.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ToyFlags.size(), data); } - if (changesMask[17]) + if (changesMask[18]) { if (!ignoreNestedChangesMask) Transmog.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(Transmog.size(), data); } - if (changesMask[18]) + if (changesMask[19]) { if (!ignoreNestedChangesMask) ConditionalTransmog.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ConditionalTransmog.size(), data); } - if (changesMask[19]) + if (changesMask[20]) { if (!ignoreNestedChangesMask) SelfResSpells.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(SelfResSpells.size(), data); } - if (changesMask[20]) + if (changesMask[21]) { if (!ignoreNestedChangesMask) RuneforgePowers.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(RuneforgePowers.size(), data); } - if (changesMask[21]) + if (changesMask[22]) { if (!ignoreNestedChangesMask) TransmogIllusions.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(TransmogIllusions.size(), data); } - if (changesMask[22]) + if (changesMask[23]) { if (!ignoreNestedChangesMask) WarbandScenes.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(WarbandScenes.size(), data); } - if (changesMask[23]) + if (changesMask[24]) { if (!ignoreNestedChangesMask) CharacterRestrictions.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(CharacterRestrictions.size(), data); } - if (changesMask[24]) + if (changesMask[25]) { if (!ignoreNestedChangesMask) SpellPctModByLabel.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(SpellPctModByLabel.size(), data); } - if (changesMask[25]) + if (changesMask[26]) { if (!ignoreNestedChangesMask) SpellFlatModByLabel.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(SpellFlatModByLabel.size(), data); } - if (changesMask[26]) + if (changesMask[27]) { if (!ignoreNestedChangesMask) MawPowers.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(MawPowers.size(), data); } - if (changesMask[27]) + if (changesMask[28]) { if (!ignoreNestedChangesMask) MultiFloorExploration.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(MultiFloorExploration.size(), data); } - if (changesMask[28]) + if (changesMask[29]) { if (!ignoreNestedChangesMask) RecipeProgression.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(RecipeProgression.size(), data); } - if (changesMask[29]) + if (changesMask[30]) { if (!ignoreNestedChangesMask) ReplayedQuests.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ReplayedQuests.size(), data); } - if (changesMask[30]) + if (changesMask[31]) { if (!ignoreNestedChangesMask) TaskQuests.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(TaskQuests.size(), data); } - if (changesMask[31]) + } + if (changesMask[32]) + { + if (changesMask[33]) { if (!ignoreNestedChangesMask) DisabledSpells.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(DisabledSpells.size(), data); } - } - if (changesMask[32]) - { - if (changesMask[33]) + if (changesMask[34]) { if (!ignoreNestedChangesMask) TraitConfigs.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(TraitConfigs.size(), data); } - if (changesMask[34]) + if (changesMask[35]) { if (!ignoreNestedChangesMask) CraftingOrders.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(CraftingOrders.size(), data); } - if (changesMask[35]) + if (changesMask[36]) { if (!ignoreNestedChangesMask) PersonalCraftingOrderCounts.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(PersonalCraftingOrderCounts.size(), data); } - if (changesMask[36]) + if (changesMask[37]) { if (!ignoreNestedChangesMask) NpcCraftingOrders.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(NpcCraftingOrders.size(), data); } - if (changesMask[37]) + if (changesMask[38]) { if (!ignoreNestedChangesMask) CategoryCooldownMods.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(CategoryCooldownMods.size(), data); } - if (changesMask[38]) + if (changesMask[39]) { if (!ignoreNestedChangesMask) WeeklySpellUses.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(WeeklySpellUses.size(), data); } - if (changesMask[39]) + if (changesMask[40]) { if (!ignoreNestedChangesMask) TrackedCollectableSources.WriteUpdateMask(data); @@ -5443,6 +5455,16 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[12]) { + for (uint32 i = 0; i < Field_1328.size(); ++i) + { + if (Field_1328.HasChanged(i) || ignoreNestedChangesMask) + { + data << int32(Field_1328[i]); + } + } + } + if (changesMask[13]) + { for (uint32 i = 0; i < AvailableQuestLineXQuestIDs.size(); ++i) { if (AvailableQuestLineXQuestIDs.HasChanged(i) || ignoreNestedChangesMask) @@ -5451,7 +5473,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[13]) + if (changesMask[14]) { for (uint32 i = 0; i < Heirlooms.size(); ++i) { @@ -5461,7 +5483,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[14]) + if (changesMask[15]) { for (uint32 i = 0; i < HeirloomFlags.size(); ++i) { @@ -5471,7 +5493,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[15]) + if (changesMask[16]) { for (uint32 i = 0; i < Toys.size(); ++i) { @@ -5481,7 +5503,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[16]) + if (changesMask[17]) { for (uint32 i = 0; i < ToyFlags.size(); ++i) { @@ -5491,7 +5513,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[17]) + if (changesMask[18]) { for (uint32 i = 0; i < Transmog.size(); ++i) { @@ -5501,7 +5523,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[18]) + if (changesMask[19]) { for (uint32 i = 0; i < ConditionalTransmog.size(); ++i) { @@ -5511,7 +5533,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[19]) + if (changesMask[20]) { for (uint32 i = 0; i < SelfResSpells.size(); ++i) { @@ -5521,7 +5543,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[20]) + if (changesMask[21]) { for (uint32 i = 0; i < RuneforgePowers.size(); ++i) { @@ -5531,7 +5553,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[21]) + if (changesMask[22]) { for (uint32 i = 0; i < TransmogIllusions.size(); ++i) { @@ -5541,7 +5563,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[22]) + if (changesMask[23]) { for (uint32 i = 0; i < WarbandScenes.size(); ++i) { @@ -5551,7 +5573,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[24]) + if (changesMask[25]) { for (uint32 i = 0; i < SpellPctModByLabel.size(); ++i) { @@ -5561,7 +5583,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[25]) + if (changesMask[26]) { for (uint32 i = 0; i < SpellFlatModByLabel.size(); ++i) { @@ -5571,7 +5593,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[26]) + if (changesMask[27]) { for (uint32 i = 0; i < MawPowers.size(); ++i) { @@ -5581,7 +5603,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[27]) + if (changesMask[28]) { for (uint32 i = 0; i < MultiFloorExploration.size(); ++i) { @@ -5591,7 +5613,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[28]) + if (changesMask[29]) { for (uint32 i = 0; i < RecipeProgression.size(); ++i) { @@ -5601,7 +5623,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[29]) + if (changesMask[30]) { for (uint32 i = 0; i < ReplayedQuests.size(); ++i) { @@ -5611,7 +5633,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[30]) + if (changesMask[31]) { for (uint32 i = 0; i < TaskQuests.size(); ++i) { @@ -5621,7 +5643,10 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[31]) + } + if (changesMask[32]) + { + if (changesMask[33]) { for (uint32 i = 0; i < DisabledSpells.size(); ++i) { @@ -5631,10 +5656,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - } - if (changesMask[32]) - { - if (changesMask[35]) + if (changesMask[36]) { for (uint32 i = 0; i < PersonalCraftingOrderCounts.size(); ++i) { @@ -5644,7 +5666,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[36]) + if (changesMask[37]) { for (uint32 i = 0; i < NpcCraftingOrders.size(); ++i) { @@ -5654,7 +5676,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[37]) + if (changesMask[38]) { for (uint32 i = 0; i < CategoryCooldownMods.size(); ++i) { @@ -5664,7 +5686,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[38]) + if (changesMask[39]) { for (uint32 i = 0; i < WeeklySpellUses.size(); ++i) { @@ -5674,7 +5696,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[39]) + if (changesMask[40]) { for (uint32 i = 0; i < TrackedCollectableSources.size(); ++i) { @@ -5684,7 +5706,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[40]) + if (changesMask[41]) { if (!ignoreNestedChangesMask) AccountBankTabSettings.WriteUpdateMask(data, 3); @@ -5704,7 +5726,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[23]) + if (changesMask[24]) { for (uint32 i = 0; i < CharacterRestrictions.size(); ++i) { @@ -5717,7 +5739,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[32]) { - if (changesMask[33]) + if (changesMask[34]) { for (uint32 i = 0; i < TraitConfigs.size(); ++i) { @@ -5727,7 +5749,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[34]) + if (changesMask[35]) { for (uint32 i = 0; i < CraftingOrders.size(); ++i) { @@ -5737,7 +5759,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[40]) + if (changesMask[41]) { for (uint32 i = 0; i < AccountBankTabSettings.size(); ++i) { @@ -5747,364 +5769,364 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[47]) - { - data << *FarsightObject; - } if (changesMask[48]) { - data << *SummonedBattlePetGUID; + data << *FarsightObject; } if (changesMask[49]) { - data << uint64(Coinage); + data << *SummonedBattlePetGUID; } if (changesMask[50]) { - data << uint64(AccountBankCoinage); + data << uint64(Coinage); } if (changesMask[51]) { - data << int32(XP); + data << uint64(AccountBankCoinage); } if (changesMask[52]) { - data << int32(NextLevelXP); + data << int32(XP); } if (changesMask[53]) { - data << int32(TrialXP); + data << int32(NextLevelXP); } if (changesMask[54]) { - Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + data << int32(TrialXP); } if (changesMask[55]) { - data << int32(CharacterPoints); + Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } if (changesMask[56]) { - data << int32(MaxTalentTiers); + data << int32(CharacterPoints); } if (changesMask[57]) { - data << uint32(TrackCreatureMask); + data << int32(MaxTalentTiers); } if (changesMask[58]) { - data << float(MainhandExpertise); + data << uint32(TrackCreatureMask); } if (changesMask[59]) { - data << float(OffhandExpertise); + data << float(MainhandExpertise); } if (changesMask[60]) { - data << float(RangedExpertise); + data << float(OffhandExpertise); } if (changesMask[61]) { - data << float(CombatRatingExpertise); + data << float(RangedExpertise); } if (changesMask[62]) { - data << float(BlockPercentage); + data << float(CombatRatingExpertise); } if (changesMask[63]) { - data << float(DodgePercentage); + data << float(BlockPercentage); } if (changesMask[64]) { - data << float(DodgePercentageFromAttribute); + data << float(DodgePercentage); } if (changesMask[65]) { - data << float(ParryPercentage); + data << float(DodgePercentageFromAttribute); } if (changesMask[66]) { - data << float(ParryPercentageFromAttribute); + data << float(ParryPercentage); } if (changesMask[67]) { - data << float(CritPercentage); + data << float(ParryPercentageFromAttribute); } if (changesMask[68]) { - data << float(RangedCritPercentage); + data << float(CritPercentage); } if (changesMask[69]) { - data << float(OffhandCritPercentage); + data << float(RangedCritPercentage); } } if (changesMask[70]) { if (changesMask[71]) { - data << float(SpellCritPercentage); + data << float(OffhandCritPercentage); } if (changesMask[72]) { - data << int32(ShieldBlock); + data << float(SpellCritPercentage); } if (changesMask[73]) { - data << float(ShieldBlockCritPercentage); + data << int32(ShieldBlock); } if (changesMask[74]) { - data << float(Mastery); + data << float(ShieldBlockCritPercentage); } if (changesMask[75]) { - data << float(Speed); + data << float(Mastery); } if (changesMask[76]) { - data << float(Avoidance); + data << float(Speed); } if (changesMask[77]) { - data << float(Sturdiness); + data << float(Avoidance); } if (changesMask[78]) { - data << int32(Versatility); + data << float(Sturdiness); } if (changesMask[79]) { - data << float(VersatilityBonus); + data << int32(Versatility); } if (changesMask[80]) { - data << float(PvpPowerDamage); + data << float(VersatilityBonus); } if (changesMask[81]) { - data << float(PvpPowerHealing); + data << float(PvpPowerDamage); } if (changesMask[82]) { - BitVectors->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + data << float(PvpPowerHealing); } if (changesMask[83]) { - data << int32(ModHealingDonePos); + BitVectors->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } if (changesMask[84]) { - data << float(ModHealingPercent); + data << int32(ModHealingDonePos); } if (changesMask[85]) { - data << float(ModPeriodicHealingDonePercent); + data << float(ModHealingPercent); } if (changesMask[86]) { - data << float(ModSpellPowerPercent); + data << float(ModPeriodicHealingDonePercent); } if (changesMask[87]) { - data << float(ModResiliencePercent); + data << float(ModSpellPowerPercent); } if (changesMask[88]) { - data << float(OverrideSpellPowerByAPPercent); + data << float(ModResiliencePercent); } if (changesMask[89]) { - data << float(OverrideAPBySpellPowerPercent); + data << float(OverrideSpellPowerByAPPercent); } if (changesMask[90]) { - data << int32(ModTargetResistance); + data << float(OverrideAPBySpellPowerPercent); } if (changesMask[91]) { - data << int32(ModTargetPhysicalResistance); + data << int32(ModTargetResistance); } if (changesMask[92]) { - data << uint32(LocalFlags); + data << int32(ModTargetPhysicalResistance); } if (changesMask[93]) { - data << uint8(GrantableLevels); + data << uint32(LocalFlags); } if (changesMask[94]) { - data << uint8(MultiActionBars); + data << uint8(GrantableLevels); } if (changesMask[95]) { - data << uint8(LifetimeMaxRank); + data << uint8(MultiActionBars); } if (changesMask[96]) { - data << uint8(NumRespecs); + data << uint8(LifetimeMaxRank); } if (changesMask[97]) { - data << uint32(PvpMedals); + data << uint8(NumRespecs); } if (changesMask[98]) { - data << uint16(TodayHonorableKills); + data << uint32(PvpMedals); } if (changesMask[99]) { - data << uint16(YesterdayHonorableKills); + data << uint16(TodayHonorableKills); } if (changesMask[100]) { - data << uint32(LifetimeHonorableKills); + data << uint16(YesterdayHonorableKills); } if (changesMask[101]) { - data << int32(WatchedFactionIndex); + data << uint32(LifetimeHonorableKills); } } if (changesMask[102]) { if (changesMask[103]) { - data << int32(MaxLevel); + data << int32(WatchedFactionIndex); } if (changesMask[104]) { - data << int32(ScalingPlayerLevelDelta); + data << int32(MaxLevel); } if (changesMask[105]) { - data << int32(MaxCreatureScalingLevel); + data << int32(ScalingPlayerLevelDelta); } if (changesMask[106]) { - data << int32(PetSpellPower); + data << int32(MaxCreatureScalingLevel); } if (changesMask[107]) { - data << float(UiHitModifier); + data << int32(PetSpellPower); } if (changesMask[108]) { - data << float(UiSpellHitModifier); + data << float(UiHitModifier); } if (changesMask[109]) { - data << int32(HomeRealmTimeOffset); + data << float(UiSpellHitModifier); } if (changesMask[110]) { - data << float(ModPetHaste); + data << int32(HomeRealmTimeOffset); } if (changesMask[111]) { - data << int8(JailersTowerLevelMax); + data << float(ModPetHaste); } if (changesMask[112]) { - data << int8(JailersTowerLevel); + data << int8(JailersTowerLevelMax); } if (changesMask[113]) { - data << uint8(LocalRegenFlags); + data << int8(JailersTowerLevel); } if (changesMask[114]) { - data << uint8(AuraVision); + data << uint8(LocalRegenFlags); } if (changesMask[115]) { - data << uint8(NumBackpackSlots); + data << uint8(AuraVision); } if (changesMask[116]) { - data << int32(OverrideSpellsID); + data << uint8(NumBackpackSlots); } if (changesMask[117]) { - data << uint16(LootSpecID); + data << int32(OverrideSpellsID); } if (changesMask[118]) { - data << uint32(OverrideZonePVPType); + data << uint16(LootSpecID); } if (changesMask[119]) { - data << int32(Honor); + data << uint32(OverrideZonePVPType); } if (changesMask[120]) { - data << int32(HonorNextLevel); + data << int32(Honor); } if (changesMask[121]) { - data << int32(PerksProgramCurrency); + data << int32(HonorNextLevel); } if (changesMask[122]) { - data << uint8(NumBankSlots); + data << int32(PerksProgramCurrency); } if (changesMask[123]) { + data << uint8(NumBankSlots); + } + if (changesMask[124]) + { data << uint8(NumAccountBankTabs); } - if (changesMask[128]) + if (changesMask[129]) { data << int32(UiChromieTimeExpansionID); } - if (changesMask[129]) + if (changesMask[130]) { data << int32(TimerunningSeasonID); } - if (changesMask[130]) + if (changesMask[131]) { data << int32(TransportServerTime); } - if (changesMask[131]) + if (changesMask[132]) { data << uint32(WeeklyRewardsPeriodSinceOrigin); } - if (changesMask[132]) + if (changesMask[133]) { data << int16(DEBUGSoulbindConduitRank); } } if (changesMask[134]) { - if (changesMask[135]) + if (changesMask[136]) { data << uint32(ActiveCombatTraitConfigID); } - if (changesMask[136]) + if (changesMask[137]) { data << int32(ItemUpgradeHighOnehandWeaponItemID); } - if (changesMask[137]) + if (changesMask[138]) { data << int32(ItemUpgradeHighFingerItemID); } - if (changesMask[138]) + if (changesMask[139]) { data << float(ItemUpgradeHighFingerWatermark); } - if (changesMask[139]) + if (changesMask[140]) { data << int32(ItemUpgradeHighTrinketItemID); } - if (changesMask[140]) + if (changesMask[141]) { data << float(ItemUpgradeHighTrinketWatermark); } - if (changesMask[141]) + if (changesMask[142]) { data << uint64(LootHistoryInstanceID); } - if (changesMask[143]) + if (changesMask[144]) { data << uint8(RequiredMountCapabilityFlags); } @@ -6122,47 +6144,47 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo data.FlushBits(); if (changesMask[102]) { - if (changesMask[124]) + if (changesMask[125]) { ResearchHistory->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } - if (changesMask[126]) + if (changesMask[127]) { if (QuestSession.has_value()) { QuestSession->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } - if (changesMask[125]) + if (changesMask[126]) { data << *FrozenPerksVendorItem; } - if (changesMask[127]) + if (changesMask[128]) { Field_1410->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } - if (changesMask[133]) - { - data << *DungeonScore; - } } if (changesMask[134]) { - if (changesMask[142]) + if (changesMask[135]) + { + data << *DungeonScore; + } + if (changesMask[143]) { if (PetStable.has_value()) { PetStable->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } - if (changesMask[144]) + if (changesMask[145]) { if (WalkInData.has_value()) { WalkInData->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } - if (changesMask[145]) + if (changesMask[146]) { if (DelveData.has_value()) { @@ -6170,131 +6192,131 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[146]) + if (changesMask[147]) { for (uint32 i = 0; i < 232; ++i) { - if (changesMask[147 + i]) + if (changesMask[148 + i]) { data << InvSlots[i]; } } } - if (changesMask[379]) + if (changesMask[380]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[380 + i]) + if (changesMask[381 + i]) { RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } } - if (changesMask[382]) + if (changesMask[383]) { for (uint32 i = 0; i < 7; ++i) { - if (changesMask[383 + i]) + if (changesMask[384 + i]) { data << int32(ModDamageDonePos[i]); } - if (changesMask[390 + i]) + if (changesMask[391 + i]) { data << int32(ModDamageDoneNeg[i]); } - if (changesMask[397 + i]) + if (changesMask[398 + i]) { data << float(ModDamageDonePercent[i]); } - if (changesMask[404 + i]) + if (changesMask[405 + i]) { data << float(ModHealingDonePercent[i]); } } } - if (changesMask[411]) + if (changesMask[412]) { for (uint32 i = 0; i < 3; ++i) { - if (changesMask[412 + i]) + if (changesMask[413 + i]) { data << float(WeaponDmgMultipliers[i]); } - if (changesMask[415 + i]) + if (changesMask[416 + i]) { data << float(WeaponAtkSpeedMultipliers[i]); } } } - if (changesMask[418]) + if (changesMask[419]) { for (uint32 i = 0; i < 12; ++i) { - if (changesMask[419 + i]) + if (changesMask[420 + i]) { data << uint32(BuybackPrice[i]); } - if (changesMask[431 + i]) + if (changesMask[432 + i]) { data << int64(BuybackTimestamp[i]); } } } - if (changesMask[443]) + if (changesMask[444]) { for (uint32 i = 0; i < 32; ++i) { - if (changesMask[444 + i]) + if (changesMask[445 + i]) { data << int32(CombatRatings[i]); } } } - if (changesMask[476]) + if (changesMask[477]) { for (uint32 i = 0; i < 4; ++i) { - if (changesMask[477 + i]) + if (changesMask[478 + i]) { data << uint32(NoReagentCostMask[i]); } } } - if (changesMask[481]) + if (changesMask[482]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[482 + i]) + if (changesMask[483 + i]) { data << int32(ProfessionSkillLine[i]); } } } - if (changesMask[484]) + if (changesMask[485]) { for (uint32 i = 0; i < 5; ++i) { - if (changesMask[485 + i]) + if (changesMask[486 + i]) { data << uint32(BagSlotFlags[i]); } } } - if (changesMask[490]) + if (changesMask[491]) { for (uint32 i = 0; i < 7; ++i) { - if (changesMask[491 + i]) + if (changesMask[492 + i]) { data << uint32(BankBagSlotFlags[i]); } } } - if (changesMask[498]) + if (changesMask[499]) { for (uint32 i = 0; i < 17; ++i) { - if (changesMask[499 + i]) + if (changesMask[500 + i]) { data << float(ItemUpgradeHighWatermark[i]); } @@ -6318,6 +6340,7 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(CharacterDataElements); Base::ClearChangesMask(AccountDataElements); Base::ClearChangesMask(DailyQuestsCompleted); + Base::ClearChangesMask(Field_1328); Base::ClearChangesMask(AvailableQuestLineXQuestIDs); Base::ClearChangesMask(Heirlooms); Base::ClearChangesMask(HeirloomFlags); diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index d394afda2d9..853fc374f76 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -1034,7 +1034,7 @@ struct Research : public IsUpdateFieldStructureTag bool operator!=(Research const& right) const { return !(*this == right); } }; -struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<516> +struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<517> { UpdateField<bool, 0, 1> BackpackAutoSortDisabled; UpdateField<bool, 0, 2> BackpackSellJunkDisabled; @@ -1042,154 +1042,155 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateField<bool, 0, 4> SortBagsRightToLeft; UpdateField<bool, 0, 5> InsertItemsLeftToRight; UpdateField<bool, 0, 6> HasPerksProgramPendingReward; - UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 41, 42> ResearchSites; - UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 43, 44> ResearchSiteProgress; - UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 45, 46> Research; + UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 42, 43> ResearchSites; + UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 44, 45> ResearchSiteProgress; + UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 46, 47> Research; DynamicUpdateField<uint64, 0, 7> KnownTitles; DynamicUpdateField<UF::PlayerDataElement, 0, 8> CharacterDataElements; DynamicUpdateField<UF::PlayerDataElement, 0, 9> AccountDataElements; DynamicUpdateField<int32, 0, 11> DailyQuestsCompleted; - DynamicUpdateField<int32, 0, 12> AvailableQuestLineXQuestIDs; - DynamicUpdateField<int32, 0, 13> Heirlooms; - DynamicUpdateField<uint32, 0, 14> HeirloomFlags; - DynamicUpdateField<int32, 0, 15> Toys; - DynamicUpdateField<uint32, 0, 16> ToyFlags; - DynamicUpdateField<uint32, 0, 17> Transmog; - DynamicUpdateField<int32, 0, 18> ConditionalTransmog; - DynamicUpdateField<int32, 0, 19> SelfResSpells; - DynamicUpdateField<uint32, 0, 20> RuneforgePowers; - DynamicUpdateField<uint32, 0, 21> TransmogIllusions; - DynamicUpdateField<uint32, 0, 22> WarbandScenes; - DynamicUpdateField<UF::SpellPctModByLabel, 0, 24> SpellPctModByLabel; - DynamicUpdateField<UF::SpellFlatModByLabel, 0, 25> SpellFlatModByLabel; - DynamicUpdateField<UF::MawPower, 0, 26> MawPowers; - DynamicUpdateField<UF::MultiFloorExplore, 0, 27> MultiFloorExploration; - DynamicUpdateField<UF::RecipeProgressionInfo, 0, 28> RecipeProgression; - DynamicUpdateField<UF::ReplayedQuest, 0, 29> ReplayedQuests; - DynamicUpdateField<UF::QuestLog, 0, 30> TaskQuests; - DynamicUpdateField<int32, 0, 31> DisabledSpells; - DynamicUpdateField<UF::PersonalCraftingOrderCount, 32, 35> PersonalCraftingOrderCounts; - DynamicUpdateField<UF::NPCCraftingOrderInfo, 32, 36> NpcCraftingOrders; - DynamicUpdateField<UF::CategoryCooldownMod, 32, 37> CategoryCooldownMods; - DynamicUpdateField<UF::WeeklySpellUse, 32, 38> WeeklySpellUses; - DynamicUpdateField<UF::CollectableSourceTrackedData, 32, 39> TrackedCollectableSources; + DynamicUpdateField<int32, 0, 12> Field_1328; + DynamicUpdateField<int32, 0, 13> AvailableQuestLineXQuestIDs; + DynamicUpdateField<int32, 0, 14> Heirlooms; + DynamicUpdateField<uint32, 0, 15> HeirloomFlags; + DynamicUpdateField<int32, 0, 16> Toys; + DynamicUpdateField<uint32, 0, 17> ToyFlags; + DynamicUpdateField<uint32, 0, 18> Transmog; + DynamicUpdateField<int32, 0, 19> ConditionalTransmog; + DynamicUpdateField<int32, 0, 20> SelfResSpells; + DynamicUpdateField<uint32, 0, 21> RuneforgePowers; + DynamicUpdateField<uint32, 0, 22> TransmogIllusions; + DynamicUpdateField<uint32, 0, 23> WarbandScenes; + DynamicUpdateField<UF::SpellPctModByLabel, 0, 25> SpellPctModByLabel; + DynamicUpdateField<UF::SpellFlatModByLabel, 0, 26> SpellFlatModByLabel; + DynamicUpdateField<UF::MawPower, 0, 27> MawPowers; + DynamicUpdateField<UF::MultiFloorExplore, 0, 28> MultiFloorExploration; + DynamicUpdateField<UF::RecipeProgressionInfo, 0, 29> RecipeProgression; + DynamicUpdateField<UF::ReplayedQuest, 0, 30> ReplayedQuests; + DynamicUpdateField<UF::QuestLog, 0, 31> TaskQuests; + DynamicUpdateField<int32, 32, 33> DisabledSpells; + DynamicUpdateField<UF::PersonalCraftingOrderCount, 32, 36> PersonalCraftingOrderCounts; + DynamicUpdateField<UF::NPCCraftingOrderInfo, 32, 37> NpcCraftingOrders; + DynamicUpdateField<UF::CategoryCooldownMod, 32, 38> CategoryCooldownMods; + DynamicUpdateField<UF::WeeklySpellUse, 32, 39> WeeklySpellUses; + DynamicUpdateField<UF::CollectableSourceTrackedData, 32, 40> TrackedCollectableSources; DynamicUpdateField<UF::PVPInfo, 0, 10> PvpInfo; - DynamicUpdateField<UF::CharacterRestriction, 0, 23> CharacterRestrictions; - DynamicUpdateField<UF::TraitConfig, 32, 33> TraitConfigs; - DynamicUpdateField<UF::CraftingOrder, 32, 34> CraftingOrders; - DynamicUpdateField<UF::BankTabSettings, 32, 40> AccountBankTabSettings; - UpdateField<ObjectGuid, 32, 47> FarsightObject; - UpdateField<ObjectGuid, 32, 48> SummonedBattlePetGUID; - UpdateField<uint64, 32, 49> Coinage; - UpdateField<uint64, 32, 50> AccountBankCoinage; - UpdateField<int32, 32, 51> XP; - UpdateField<int32, 32, 52> NextLevelXP; - UpdateField<int32, 32, 53> TrialXP; - UpdateField<UF::SkillInfo, 32, 54> Skill; - UpdateField<int32, 32, 55> CharacterPoints; - UpdateField<int32, 32, 56> MaxTalentTiers; - UpdateField<uint32, 32, 57> TrackCreatureMask; - UpdateField<float, 32, 58> MainhandExpertise; - UpdateField<float, 32, 59> OffhandExpertise; - UpdateField<float, 32, 60> RangedExpertise; - UpdateField<float, 32, 61> CombatRatingExpertise; - UpdateField<float, 32, 62> BlockPercentage; - UpdateField<float, 32, 63> DodgePercentage; - UpdateField<float, 32, 64> DodgePercentageFromAttribute; - UpdateField<float, 32, 65> ParryPercentage; - UpdateField<float, 32, 66> ParryPercentageFromAttribute; - UpdateField<float, 32, 67> CritPercentage; - UpdateField<float, 32, 68> RangedCritPercentage; - UpdateField<float, 32, 69> OffhandCritPercentage; - UpdateField<float, 70, 71> SpellCritPercentage; - UpdateField<int32, 70, 72> ShieldBlock; - UpdateField<float, 70, 73> ShieldBlockCritPercentage; - UpdateField<float, 70, 74> Mastery; - UpdateField<float, 70, 75> Speed; - UpdateField<float, 70, 76> Avoidance; - UpdateField<float, 70, 77> Sturdiness; - UpdateField<int32, 70, 78> Versatility; - UpdateField<float, 70, 79> VersatilityBonus; - UpdateField<float, 70, 80> PvpPowerDamage; - UpdateField<float, 70, 81> PvpPowerHealing; - UpdateField<UF::BitVectors, 70, 82> BitVectors; - UpdateField<int32, 70, 83> ModHealingDonePos; - UpdateField<float, 70, 84> ModHealingPercent; - UpdateField<float, 70, 85> ModPeriodicHealingDonePercent; - UpdateField<float, 70, 86> ModSpellPowerPercent; - UpdateField<float, 70, 87> ModResiliencePercent; - UpdateField<float, 70, 88> OverrideSpellPowerByAPPercent; - UpdateField<float, 70, 89> OverrideAPBySpellPowerPercent; - UpdateField<int32, 70, 90> ModTargetResistance; - UpdateField<int32, 70, 91> ModTargetPhysicalResistance; - UpdateField<uint32, 70, 92> LocalFlags; - UpdateField<uint8, 70, 93> GrantableLevels; - UpdateField<uint8, 70, 94> MultiActionBars; - UpdateField<uint8, 70, 95> LifetimeMaxRank; - UpdateField<uint8, 70, 96> NumRespecs; - UpdateField<uint32, 70, 97> PvpMedals; - UpdateField<uint16, 70, 98> TodayHonorableKills; - UpdateField<uint16, 70, 99> YesterdayHonorableKills; - UpdateField<uint32, 70, 100> LifetimeHonorableKills; - UpdateField<int32, 70, 101> WatchedFactionIndex; - UpdateField<int32, 102, 103> MaxLevel; - UpdateField<int32, 102, 104> ScalingPlayerLevelDelta; - UpdateField<int32, 102, 105> MaxCreatureScalingLevel; - UpdateField<int32, 102, 106> PetSpellPower; - UpdateField<float, 102, 107> UiHitModifier; - UpdateField<float, 102, 108> UiSpellHitModifier; - UpdateField<int32, 102, 109> HomeRealmTimeOffset; - UpdateField<float, 102, 110> ModPetHaste; - UpdateField<int8, 102, 111> JailersTowerLevelMax; - UpdateField<int8, 102, 112> JailersTowerLevel; - UpdateField<uint8, 102, 113> LocalRegenFlags; - UpdateField<uint8, 102, 114> AuraVision; - UpdateField<uint8, 102, 115> NumBackpackSlots; - UpdateField<int32, 102, 116> OverrideSpellsID; - UpdateField<uint16, 102, 117> LootSpecID; - UpdateField<uint32, 102, 118> OverrideZonePVPType; - UpdateField<int32, 102, 119> Honor; - UpdateField<int32, 102, 120> HonorNextLevel; - UpdateField<int32, 102, 121> PerksProgramCurrency; - UpdateField<uint8, 102, 122> NumBankSlots; - UpdateField<uint8, 102, 123> NumAccountBankTabs; - UpdateField<UF::ResearchHistory, 102, 124> ResearchHistory; - UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 102, 125> FrozenPerksVendorItem; - UpdateField<UF::ActivePlayerUnk901, 102, 127> Field_1410; - OptionalUpdateField<UF::QuestSession, 102, 126> QuestSession; - UpdateField<int32, 102, 128> UiChromieTimeExpansionID; - UpdateField<int32, 102, 129> TimerunningSeasonID; - UpdateField<int32, 102, 130> TransportServerTime; - UpdateField<uint32, 102, 131> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin - UpdateField<int16, 102, 132> DEBUGSoulbindConduitRank; - UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 102, 133> DungeonScore; - UpdateField<uint32, 134, 135> ActiveCombatTraitConfigID; - UpdateField<int32, 134, 136> ItemUpgradeHighOnehandWeaponItemID; - UpdateField<int32, 134, 137> ItemUpgradeHighFingerItemID; - UpdateField<float, 134, 138> ItemUpgradeHighFingerWatermark; - UpdateField<int32, 134, 139> ItemUpgradeHighTrinketItemID; - UpdateField<float, 134, 140> ItemUpgradeHighTrinketWatermark; - UpdateField<uint64, 134, 141> LootHistoryInstanceID; - OptionalUpdateField<UF::StableInfo, 134, 142> PetStable; - UpdateField<uint8, 134, 143> RequiredMountCapabilityFlags; - OptionalUpdateField<UF::WalkInData, 134, 144> WalkInData; - OptionalUpdateField<UF::DelveData, 134, 145> DelveData; - UpdateFieldArray<ObjectGuid, 232, 146, 147> InvSlots; - UpdateFieldArray<UF::RestInfo, 2, 379, 380> RestInfo; - UpdateFieldArray<int32, 7, 382, 383> ModDamageDonePos; - UpdateFieldArray<int32, 7, 382, 390> ModDamageDoneNeg; - UpdateFieldArray<float, 7, 382, 397> ModDamageDonePercent; - UpdateFieldArray<float, 7, 382, 404> ModHealingDonePercent; - UpdateFieldArray<float, 3, 411, 412> WeaponDmgMultipliers; - UpdateFieldArray<float, 3, 411, 415> WeaponAtkSpeedMultipliers; - UpdateFieldArray<uint32, 12, 418, 419> BuybackPrice; - UpdateFieldArray<int64, 12, 418, 431> BuybackTimestamp; - UpdateFieldArray<int32, 32, 443, 444> CombatRatings; - UpdateFieldArray<uint32, 4, 476, 477> NoReagentCostMask; - UpdateFieldArray<int32, 2, 481, 482> ProfessionSkillLine; - UpdateFieldArray<uint32, 5, 484, 485> BagSlotFlags; - UpdateFieldArray<uint32, 7, 490, 491> BankBagSlotFlags; - UpdateFieldArray<float, 17, 498, 499> ItemUpgradeHighWatermark; + DynamicUpdateField<UF::CharacterRestriction, 0, 24> CharacterRestrictions; + DynamicUpdateField<UF::TraitConfig, 32, 34> TraitConfigs; + DynamicUpdateField<UF::CraftingOrder, 32, 35> CraftingOrders; + DynamicUpdateField<UF::BankTabSettings, 32, 41> AccountBankTabSettings; + UpdateField<ObjectGuid, 32, 48> FarsightObject; + UpdateField<ObjectGuid, 32, 49> SummonedBattlePetGUID; + UpdateField<uint64, 32, 50> Coinage; + UpdateField<uint64, 32, 51> AccountBankCoinage; + UpdateField<int32, 32, 52> XP; + UpdateField<int32, 32, 53> NextLevelXP; + UpdateField<int32, 32, 54> TrialXP; + UpdateField<UF::SkillInfo, 32, 55> Skill; + UpdateField<int32, 32, 56> CharacterPoints; + UpdateField<int32, 32, 57> MaxTalentTiers; + UpdateField<uint32, 32, 58> TrackCreatureMask; + UpdateField<float, 32, 59> MainhandExpertise; + UpdateField<float, 32, 60> OffhandExpertise; + UpdateField<float, 32, 61> RangedExpertise; + UpdateField<float, 32, 62> CombatRatingExpertise; + UpdateField<float, 32, 63> BlockPercentage; + UpdateField<float, 32, 64> DodgePercentage; + UpdateField<float, 32, 65> DodgePercentageFromAttribute; + UpdateField<float, 32, 66> ParryPercentage; + UpdateField<float, 32, 67> ParryPercentageFromAttribute; + UpdateField<float, 32, 68> CritPercentage; + UpdateField<float, 32, 69> RangedCritPercentage; + UpdateField<float, 70, 71> OffhandCritPercentage; + UpdateField<float, 70, 72> SpellCritPercentage; + UpdateField<int32, 70, 73> ShieldBlock; + UpdateField<float, 70, 74> ShieldBlockCritPercentage; + UpdateField<float, 70, 75> Mastery; + UpdateField<float, 70, 76> Speed; + UpdateField<float, 70, 77> Avoidance; + UpdateField<float, 70, 78> Sturdiness; + UpdateField<int32, 70, 79> Versatility; + UpdateField<float, 70, 80> VersatilityBonus; + UpdateField<float, 70, 81> PvpPowerDamage; + UpdateField<float, 70, 82> PvpPowerHealing; + UpdateField<UF::BitVectors, 70, 83> BitVectors; + UpdateField<int32, 70, 84> ModHealingDonePos; + UpdateField<float, 70, 85> ModHealingPercent; + UpdateField<float, 70, 86> ModPeriodicHealingDonePercent; + UpdateField<float, 70, 87> ModSpellPowerPercent; + UpdateField<float, 70, 88> ModResiliencePercent; + UpdateField<float, 70, 89> OverrideSpellPowerByAPPercent; + UpdateField<float, 70, 90> OverrideAPBySpellPowerPercent; + UpdateField<int32, 70, 91> ModTargetResistance; + UpdateField<int32, 70, 92> ModTargetPhysicalResistance; + UpdateField<uint32, 70, 93> LocalFlags; + UpdateField<uint8, 70, 94> GrantableLevels; + UpdateField<uint8, 70, 95> MultiActionBars; + UpdateField<uint8, 70, 96> LifetimeMaxRank; + UpdateField<uint8, 70, 97> NumRespecs; + UpdateField<uint32, 70, 98> PvpMedals; + UpdateField<uint16, 70, 99> TodayHonorableKills; + UpdateField<uint16, 70, 100> YesterdayHonorableKills; + UpdateField<uint32, 70, 101> LifetimeHonorableKills; + UpdateField<int32, 102, 103> WatchedFactionIndex; + UpdateField<int32, 102, 104> MaxLevel; + UpdateField<int32, 102, 105> ScalingPlayerLevelDelta; + UpdateField<int32, 102, 106> MaxCreatureScalingLevel; + UpdateField<int32, 102, 107> PetSpellPower; + UpdateField<float, 102, 108> UiHitModifier; + UpdateField<float, 102, 109> UiSpellHitModifier; + UpdateField<int32, 102, 110> HomeRealmTimeOffset; + UpdateField<float, 102, 111> ModPetHaste; + UpdateField<int8, 102, 112> JailersTowerLevelMax; + UpdateField<int8, 102, 113> JailersTowerLevel; + UpdateField<uint8, 102, 114> LocalRegenFlags; + UpdateField<uint8, 102, 115> AuraVision; + UpdateField<uint8, 102, 116> NumBackpackSlots; + UpdateField<int32, 102, 117> OverrideSpellsID; + UpdateField<uint16, 102, 118> LootSpecID; + UpdateField<uint32, 102, 119> OverrideZonePVPType; + UpdateField<int32, 102, 120> Honor; + UpdateField<int32, 102, 121> HonorNextLevel; + UpdateField<int32, 102, 122> PerksProgramCurrency; + UpdateField<uint8, 102, 123> NumBankSlots; + UpdateField<uint8, 102, 124> NumAccountBankTabs; + UpdateField<UF::ResearchHistory, 102, 125> ResearchHistory; + UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 102, 126> FrozenPerksVendorItem; + UpdateField<UF::ActivePlayerUnk901, 102, 128> Field_1410; + OptionalUpdateField<UF::QuestSession, 102, 127> QuestSession; + UpdateField<int32, 102, 129> UiChromieTimeExpansionID; + UpdateField<int32, 102, 130> TimerunningSeasonID; + UpdateField<int32, 102, 131> TransportServerTime; + UpdateField<uint32, 102, 132> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin + UpdateField<int16, 102, 133> DEBUGSoulbindConduitRank; + UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 134, 135> DungeonScore; + UpdateField<uint32, 134, 136> ActiveCombatTraitConfigID; + UpdateField<int32, 134, 137> ItemUpgradeHighOnehandWeaponItemID; + UpdateField<int32, 134, 138> ItemUpgradeHighFingerItemID; + UpdateField<float, 134, 139> ItemUpgradeHighFingerWatermark; + UpdateField<int32, 134, 140> ItemUpgradeHighTrinketItemID; + UpdateField<float, 134, 141> ItemUpgradeHighTrinketWatermark; + UpdateField<uint64, 134, 142> LootHistoryInstanceID; + OptionalUpdateField<UF::StableInfo, 134, 143> PetStable; + UpdateField<uint8, 134, 144> RequiredMountCapabilityFlags; + OptionalUpdateField<UF::WalkInData, 134, 145> WalkInData; + OptionalUpdateField<UF::DelveData, 134, 146> DelveData; + UpdateFieldArray<ObjectGuid, 232, 147, 148> InvSlots; + UpdateFieldArray<UF::RestInfo, 2, 380, 381> RestInfo; + UpdateFieldArray<int32, 7, 383, 384> ModDamageDonePos; + UpdateFieldArray<int32, 7, 383, 391> ModDamageDoneNeg; + UpdateFieldArray<float, 7, 383, 398> ModDamageDonePercent; + UpdateFieldArray<float, 7, 383, 405> ModHealingDonePercent; + UpdateFieldArray<float, 3, 412, 413> WeaponDmgMultipliers; + UpdateFieldArray<float, 3, 412, 416> WeaponAtkSpeedMultipliers; + UpdateFieldArray<uint32, 12, 419, 420> BuybackPrice; + UpdateFieldArray<int64, 12, 419, 432> BuybackTimestamp; + UpdateFieldArray<int32, 32, 444, 445> CombatRatings; + UpdateFieldArray<uint32, 4, 477, 478> NoReagentCostMask; + UpdateFieldArray<int32, 2, 482, 483> ProfessionSkillLine; + UpdateFieldArray<uint32, 5, 485, 486> BagSlotFlags; + UpdateFieldArray<uint32, 7, 491, 492> BankBagSlotFlags; + UpdateFieldArray<float, 17, 499, 500> ItemUpgradeHighWatermark; 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; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index bdce5bc9b76..77c1e44f7dc 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -792,6 +792,7 @@ enum class ItemSearchLocation Inventory = 0x02, Bank = 0x04, ReagentBank = 0x08, + AccountBank = 0x10, // NYI Default = Equipment | Inventory, Everywhere = Equipment | Inventory | Bank | ReagentBank |
