aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp2972
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h993
2 files changed, 1079 insertions, 2886 deletions
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index 2a4402603e9..c8c741727df 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -82,7 +82,8 @@ void ItemEnchantment::WriteCreate(ByteBuffer& data, Item const* owner, Player co
data << int32(ID);
data << uint32(Duration);
data << int16(Charges);
- data << uint16(Inactive);
+ data << uint8(Field_A);
+ data << uint8(Field_B);
}
void ItemEnchantment::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Item const* owner, Player const* receiver) const
@@ -91,7 +92,7 @@ void ItemEnchantment::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Item
if (ignoreChangesMask)
changesMask.SetAll();
- data.WriteBits(changesMask.GetBlock(0), 5);
+ data.WriteBits(changesMask.GetBlock(0), 6);
data.FlushBits();
if (changesMask[0])
@@ -110,7 +111,11 @@ void ItemEnchantment::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Item
}
if (changesMask[4])
{
- data << uint16(Inactive);
+ data << uint8(Field_A);
+ }
+ if (changesMask[5])
+ {
+ data << uint8(Field_B);
}
}
}
@@ -120,7 +125,8 @@ void ItemEnchantment::ClearChangesMask()
Base::ClearChangesMask(ID);
Base::ClearChangesMask(Duration);
Base::ClearChangesMask(Charges);
- Base::ClearChangesMask(Inactive);
+ Base::ClearChangesMask(Field_A);
+ Base::ClearChangesMask(Field_B);
_changesMask.ResetAll();
}
@@ -280,6 +286,8 @@ void ItemData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
{
Enchantment[i].WriteCreate(data, owner, receiver);
}
+ data << int32(PropertySeed);
+ data << int32(RandomPropertiesID);
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
{
data << uint32(Durability);
@@ -317,7 +325,7 @@ void ItemData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
void ItemData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const
{
- Mask allowedMaskForTarget({ 0xF80A727Fu, 0x000001FFu });
+ Mask allowedMaskForTarget({ 0xE029CE7Fu, 0x000007FFu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
@@ -325,12 +333,12 @@ void ItemData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
void ItemData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
- allowedMaskForTarget |= { 0x07F58D80u, 0x00000000u };
+ allowedMaskForTarget |= { 0x1FD63180u, 0x00000000u };
}
void ItemData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
- Mask allowedMaskForTarget({ 0xF80A727Fu, 0x000001FFu });
+ Mask allowedMaskForTarget({ 0xE029CE7Fu, 0x000007FFu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask &= allowedMaskForTarget;
}
@@ -412,64 +420,72 @@ void ItemData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
}
if (changesMask[10])
{
- data << uint32(Durability);
+ data << int32(PropertySeed);
}
if (changesMask[11])
{
- data << uint32(MaxDurability);
+ data << int32(RandomPropertiesID);
}
if (changesMask[12])
{
- data << uint32(CreatePlayedTime);
+ data << uint32(Durability);
}
if (changesMask[13])
{
- data << int32(Context);
+ data << uint32(MaxDurability);
}
if (changesMask[14])
{
- data << int64(CreateTime);
+ data << uint32(CreatePlayedTime);
}
if (changesMask[15])
{
- data << uint64(ArtifactXP);
+ data << int32(Context);
}
if (changesMask[16])
{
- data << uint8(ItemAppearanceModID);
+ data << int64(CreateTime);
+ }
+ if (changesMask[17])
+ {
+ data << uint64(ArtifactXP);
}
if (changesMask[18])
{
+ data << uint8(ItemAppearanceModID);
+ }
+ if (changesMask[20])
+ {
data << uint32(DynamicFlags2);
}
- if (changesMask[19])
+ if (changesMask[21])
{
data << ItemBonusKey;
}
- if (changesMask[20])
+ if (changesMask[22])
{
data << uint16(DEBUGItemLevel);
}
- if (changesMask[17])
+ if (changesMask[19])
{
Modifiers->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
- if (changesMask[21])
+ if (changesMask[23])
{
for (uint32 i = 0; i < 5; ++i)
{
- if (changesMask[22 + i])
+ if (changesMask[24 + i])
{
data << int32(SpellCharges[i]);
}
}
}
- if (changesMask[27])
+ if (changesMask[29])
{
for (uint32 i = 0; i < 13; ++i)
{
- if (changesMask[28 + i])
+ if (changesMask[30 + i])
{
Enchantment[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
@@ -488,6 +504,8 @@ void ItemData::ClearChangesMask()
Base::ClearChangesMask(StackCount);
Base::ClearChangesMask(Expiration);
Base::ClearChangesMask(DynamicFlags);
+ Base::ClearChangesMask(PropertySeed);
+ Base::ClearChangesMask(RandomPropertiesID);
Base::ClearChangesMask(Durability);
Base::ClearChangesMask(MaxDurability);
Base::ClearChangesMask(CreatePlayedTime);
@@ -552,315 +570,27 @@ void ContainerData::ClearChangesMask()
_changesMask.ResetAll();
}
-void AzeriteEmpoweredItemData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const
-{
- for (uint32 i = 0; i < 5; ++i)
- {
- data << int32(Selections[i]);
- }
-}
-
-void AzeriteEmpoweredItemData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const
-{
- WriteUpdate(data, _changesMask, false, owner, receiver);
-}
-
-void AzeriteEmpoweredItemData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AzeriteEmpoweredItem const* owner, Player const* receiver) const
-{
- data.WriteBits(changesMask.GetBlocksMask(0), 1);
- if (changesMask.GetBlock(0))
- data.WriteBits(changesMask.GetBlock(0), 32);
-
- data.FlushBits();
- if (changesMask[0])
- {
- for (uint32 i = 0; i < 5; ++i)
- {
- if (changesMask[1 + i])
- {
- data << int32(Selections[i]);
- }
- }
- }
-}
-
-void AzeriteEmpoweredItemData::ClearChangesMask()
-{
- Base::ClearChangesMask(Selections);
- _changesMask.ResetAll();
-}
-
-void UnlockedAzeriteEssence::WriteCreate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const
-{
- data << uint32(AzeriteEssenceID);
- data << uint32(Rank);
-}
-
-void UnlockedAzeriteEssence::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AzeriteItem const* owner, Player const* receiver) const
-{
- data << uint32(AzeriteEssenceID);
- data << uint32(Rank);
-}
-
-bool UnlockedAzeriteEssence::operator==(UnlockedAzeriteEssence const& right) const
-{
- return AzeriteEssenceID == right.AzeriteEssenceID
- && Rank == right.Rank;
-}
-
-void SelectedAzeriteEssences::WriteCreate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const
-{
- for (uint32 i = 0; i < 4; ++i)
- {
- data << uint32(AzeriteEssenceID[i]);
- }
- data << uint32(SpecializationID);
- data.WriteBit(Enabled);
- data.FlushBits();
-}
-
-void SelectedAzeriteEssences::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AzeriteItem const* owner, Player const* receiver) const
-{
- Mask changesMask = _changesMask;
- if (ignoreChangesMask)
- changesMask.SetAll();
-
- data.WriteBits(changesMask.GetBlocksMask(0), 1);
- if (changesMask.GetBlock(0))
- data.WriteBits(changesMask.GetBlock(0), 32);
-
- if (changesMask[0])
- {
- if (changesMask[1])
- {
- data.WriteBit(Enabled);
- }
- }
- data.FlushBits();
- if (changesMask[0])
- {
- if (changesMask[2])
- {
- data << uint32(SpecializationID);
- }
- }
- if (changesMask[3])
- {
- for (uint32 i = 0; i < 4; ++i)
- {
- if (changesMask[4 + i])
- {
- data << uint32(AzeriteEssenceID[i]);
- }
- }
- }
- data.FlushBits();
-}
-
-void SelectedAzeriteEssences::ClearChangesMask()
-{
- Base::ClearChangesMask(Enabled);
- Base::ClearChangesMask(SpecializationID);
- Base::ClearChangesMask(AzeriteEssenceID);
- _changesMask.ResetAll();
-}
-
-void AzeriteItemData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const
-{
- if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
- {
- data << uint64(Xp);
- data << uint32(Level);
- data << uint32(AuraLevel);
- data << uint32(KnowledgeLevel);
- data << int32(DEBUGknowledgeWeek);
- }
- data << uint32(UnlockedEssences.size());
- data << uint32(SelectedEssences.size());
- data << uint32(UnlockedEssenceMilestones.size());
- for (uint32 i = 0; i < UnlockedEssences.size(); ++i)
- {
- UnlockedEssences[i].WriteCreate(data, owner, receiver);
- }
- for (uint32 i = 0; i < UnlockedEssenceMilestones.size(); ++i)
- {
- data << uint32(UnlockedEssenceMilestones[i]);
- }
- if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
- {
- data.WriteBit(Enabled);
- }
- for (uint32 i = 0; i < SelectedEssences.size(); ++i)
- {
- SelectedEssences[i].WriteCreate(data, owner, receiver);
- }
- data.FlushBits();
-}
-
-void AzeriteItemData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const
-{
- Mask allowedMaskForTarget({ 0x0000001Du });
- AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
- WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
-}
-
-void AzeriteItemData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
-{
- if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
- allowedMaskForTarget |= { 0x000003E2u };
-}
-
-void AzeriteItemData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
-{
- Mask allowedMaskForTarget({ 0x0000001Du });
- AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
- changesMask &= allowedMaskForTarget;
-}
-
-void AzeriteItemData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AzeriteItem const* owner, Player const* receiver) const
-{
- data.WriteBits(changesMask.GetBlock(0), 10);
-
- if (changesMask[0])
- {
- if (changesMask[1])
- {
- data.WriteBit(Enabled);
- }
- if (changesMask[2])
- {
- if (!ignoreNestedChangesMask)
- UnlockedEssences.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(UnlockedEssences.size(), data);
- }
- if (changesMask[3])
- {
- if (!ignoreNestedChangesMask)
- SelectedEssences.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(SelectedEssences.size(), data);
- }
- if (changesMask[4])
- {
- if (!ignoreNestedChangesMask)
- UnlockedEssenceMilestones.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(UnlockedEssenceMilestones.size(), data);
- }
- }
- data.FlushBits();
- if (changesMask[0])
- {
- if (changesMask[2])
- {
- for (uint32 i = 0; i < UnlockedEssences.size(); ++i)
- {
- if (UnlockedEssences.HasChanged(i) || ignoreNestedChangesMask)
- {
- UnlockedEssences[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
- }
- if (changesMask[4])
- {
- for (uint32 i = 0; i < UnlockedEssenceMilestones.size(); ++i)
- {
- if (UnlockedEssenceMilestones.HasChanged(i) || ignoreNestedChangesMask)
- {
- data << uint32(UnlockedEssenceMilestones[i]);
- }
- }
- }
- if (changesMask[3])
- {
- for (uint32 i = 0; i < SelectedEssences.size(); ++i)
- {
- if (SelectedEssences.HasChanged(i) || ignoreNestedChangesMask)
- {
- SelectedEssences[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
- }
- if (changesMask[5])
- {
- data << uint64(Xp);
- }
- if (changesMask[6])
- {
- data << uint32(Level);
- }
- if (changesMask[7])
- {
- data << uint32(AuraLevel);
- }
- if (changesMask[8])
- {
- data << uint32(KnowledgeLevel);
- }
- if (changesMask[9])
- {
- data << int32(DEBUGknowledgeWeek);
- }
- }
- data.FlushBits();
-}
-
-void AzeriteItemData::ClearChangesMask()
-{
- Base::ClearChangesMask(Enabled);
- Base::ClearChangesMask(UnlockedEssences);
- Base::ClearChangesMask(UnlockedEssenceMilestones);
- Base::ClearChangesMask(SelectedEssences);
- Base::ClearChangesMask(Xp);
- Base::ClearChangesMask(Level);
- Base::ClearChangesMask(AuraLevel);
- Base::ClearChangesMask(KnowledgeLevel);
- Base::ClearChangesMask(DEBUGknowledgeWeek);
- _changesMask.ResetAll();
-}
-
-void SpellCastVisual::WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const
-{
- data << int32(SpellXSpellVisualID);
- data << int32(ScriptVisualID);
-}
-
-void SpellCastVisual::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const
-{
- data << int32(SpellXSpellVisualID);
- data << int32(ScriptVisualID);
-}
-
-bool SpellCastVisual::operator==(SpellCastVisual const& right) const
-{
- return SpellXSpellVisualID == right.SpellXSpellVisualID
- && ScriptVisualID == right.ScriptVisualID;
-}
-
void UnitChannel::WriteCreate(ByteBuffer& data, Unit const* owner, Player const* receiver) const
{
data << int32(SpellID);
- SpellVisual.WriteCreate(data, owner, receiver);
+ data << int32(SpellXSpellVisualID);
}
void UnitChannel::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Unit const* owner, Player const* receiver) const
{
data << int32(SpellID);
- SpellVisual.WriteUpdate(data, ignoreChangesMask, owner, receiver);
+ data << int32(SpellXSpellVisualID);
}
bool UnitChannel::operator==(UnitChannel const& right) const
{
return SpellID == right.SpellID
- && SpellVisual == right.SpellVisual;
+ && SpellXSpellVisualID == right.SpellXSpellVisualID;
}
void VisibleItem::WriteCreate(ByteBuffer& data, Unit const* owner, Player const* receiver) const
{
data << int32(ItemID);
- data << int32(SecondaryItemModifiedAppearanceID);
- data << int32(ConditionalItemAppearanceID);
data << uint16(ItemAppearanceModID);
data << uint16(ItemVisual);
}
@@ -871,7 +601,7 @@ void VisibleItem::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Unit con
if (ignoreChangesMask)
changesMask.SetAll();
- data.WriteBits(changesMask.GetBlock(0), 6);
+ data.WriteBits(changesMask.GetBlock(0), 4);
data.FlushBits();
if (changesMask[0])
@@ -882,17 +612,9 @@ void VisibleItem::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Unit con
}
if (changesMask[2])
{
- data << int32(SecondaryItemModifiedAppearanceID);
- }
- if (changesMask[3])
- {
- data << int32(ConditionalItemAppearanceID);
- }
- if (changesMask[4])
- {
data << uint16(ItemAppearanceModID);
}
- if (changesMask[5])
+ if (changesMask[3])
{
data << uint16(ItemVisual);
}
@@ -902,8 +624,6 @@ void VisibleItem::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Unit con
void VisibleItem::ClearChangesMask()
{
Base::ClearChangesMask(ItemID);
- Base::ClearChangesMask(SecondaryItemModifiedAppearanceID);
- Base::ClearChangesMask(ConditionalItemAppearanceID);
Base::ClearChangesMask(ItemAppearanceModID);
Base::ClearChangesMask(ItemVisual);
_changesMask.ResetAll();
@@ -929,6 +649,8 @@ bool PassiveSpellHistory::operator==(PassiveSpellHistory const& right) const
void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const
{
+ data << int64(Health);
+ data << int64(MaxHealth);
data << int32(ViewerDependentValue<DisplayIDTag>::GetValue(this, owner, receiver));
for (uint32 i = 0; i < 2; ++i)
{
@@ -938,8 +660,6 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << uint32(StateAnimID);
data << uint32(StateAnimKitID);
data << uint32(StateWorldEffectIDs->size());
- data << uint32(StateWorldEffectsQuestObjectiveID);
- data << int32(SpellOverrideNameID);
for (uint32 i = 0; i < StateWorldEffectIDs->size(); ++i)
{
data << uint32((*StateWorldEffectIDs)[i]);
@@ -959,7 +679,6 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << BattlePetCompanionGUID;
data << uint64(BattlePetDBID);
ChannelData->WriteCreate(data, owner, receiver);
- data << int8(SpellEmpowerStage);
data << uint32(SummonedByHomeRealm);
data << uint8(Race);
data << uint8(ClassId);
@@ -967,12 +686,6 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << uint8(Sex);
data << uint8(DisplayPower);
data << uint32(OverrideDisplayPowerID);
- data << int64(Health);
- for (uint32 i = 0; i < 10; ++i)
- {
- data << int32(Power[i]);
- data << int32(MaxPower[i]);
- }
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner | UpdateFieldFlag::UnitAll))
{
for (uint32 i = 0; i < 10; ++i)
@@ -981,7 +694,12 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << float(PowerRegenInterruptedFlatModifier[i]);
}
}
- data << int64(MaxHealth);
+ for (uint32 i = 0; i < 10; ++i)
+ {
+ data << int32(Power[i]);
+ data << int32(MaxPower[i]);
+ data << float(ModPowerRegen[i]);
+ }
data << int32(Level);
data << int32(EffectiveLevel);
data << int32(ContentTuningID);
@@ -1011,12 +729,9 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << float(BoundingRadius);
data << float(CombatReach);
data << float(DisplayScale);
- data << int32(CreatureFamily);
- data << int32(CreatureType);
data << int32(NativeDisplayID);
data << float(NativeXDisplayScale);
data << int32(MountDisplayID);
- data << int32(CosmeticMountDisplayID);
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner | UpdateFieldFlag::Empath))
{
data << float(MinDamage);
@@ -1033,7 +748,6 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << uint32(PetExperience);
data << uint32(PetNextLevelExperience);
data << float(ModCastingSpeed);
- data << float(ModCastingSpeedNeg);
data << float(ModSpellHaste);
data << float(ModHaste);
data << float(ModRangedHaste);
@@ -1041,14 +755,15 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << float(ModTimeRate);
data << int32(CreatedBySpell);
data << int32(EmoteState);
+ data << int16(TrainingPointsUsed);
+ data << int16(TrainingPointsTotal);
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
{
- for (uint32 i = 0; i < 4; ++i)
+ for (uint32 i = 0; i < 5; ++i)
{
data << int32(Stats[i]);
data << int32(StatPosBuff[i]);
data << int32(StatNegBuff[i]);
- data << int32(StatSupportBuff[i]);
}
}
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner | UpdateFieldFlag::Empath))
@@ -1062,10 +777,15 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
{
for (uint32 i = 0; i < 7; ++i)
{
- data << int32(BonusResistanceMods[i]);
- data << int32(ManaCostModifier[i]);
+ data << int32(PowerCostModifier[i]);
+ data << float(PowerCostMultiplier[i]);
}
}
+ for (uint32 i = 0; i < 7; ++i)
+ {
+ data << int32(ResistanceBuffModsPositive[i]);
+ data << int32(ResistanceBuffModsNegative[i]);
+ }
data << int32(BaseMana);
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
{
@@ -1081,29 +801,21 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << int32(AttackPowerModPos);
data << int32(AttackPowerModNeg);
data << float(AttackPowerMultiplier);
- data << int32(AttackPowerModSupport);
data << int32(RangedAttackPower);
data << int32(RangedAttackPowerModPos);
data << int32(RangedAttackPowerModNeg);
data << float(RangedAttackPowerMultiplier);
- data << int32(RangedAttackPowerModSupport);
- data << int32(MainHandWeaponAttackPower);
- data << int32(OffHandWeaponAttackPower);
- data << int32(RangedWeaponAttackPower);
data << int32(SetAttackSpeedAura);
data << float(Lifesteal);
data << float(MinRangedDamage);
data << float(MaxRangedDamage);
- data << float(ManaCostMultiplier);
data << float(MaxHealthModifier);
}
data << float(HoverHeight);
data << int32(MinItemLevelCutoff);
data << int32(MinItemLevel);
data << int32(MaxItemLevel);
- data << int32(AzeriteItemLevel);
data << int32(WildBattlePetLevel);
- data << int32(BattlePetCompanionExperience);
data << uint32(BattlePetCompanionNameTimestamp);
data << int32(InteractSpellID);
data << int32(ScaleDuration);
@@ -1111,16 +823,18 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << int32(LooksLikeCreatureID);
data << int32(LookAtControllerID);
data << int32(PerksVendorItemID);
- data << int32(TaxiNodesID);
data << GuildGUID;
data << uint32(PassiveSpells.size());
data << uint32(WorldEffects.size());
data << uint32(ChannelObjects.size());
+ data << SkinningOwnerGUID;
data << int32(FlightCapabilityID);
data << float(GlideEventSpeedDivisor);
- data << uint32(SilencedSchoolMask);
data << uint32(CurrentAreaID);
- data << NameplateAttachToGUID;
+ if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
+ {
+ data << ComboTarget;
+ }
for (uint32 i = 0; i < PassiveSpells.size(); ++i)
{
PassiveSpells[i].WriteCreate(data, owner, receiver);
@@ -1137,7 +851,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const
{
- Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFC01u, 0x007FFFFFu, 0x0003F800u, 0x00000000u });
+ Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xFF0FDFFFu, 0xC001EFFFu, 0x001EFFFFu, 0xFFFFFE00u, 0x00003FFFu, 0xFFF00000u, 0x00000007u });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
@@ -1145,24 +859,24 @@ void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
void UnitData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
- allowedMaskForTarget |= { 0x00002000u, 0x3C010000u, 0xFFC20000u, 0x000003FEu, 0xFF800004u, 0xFFFC07FFu, 0x01FFFFFFu };
+ allowedMaskForTarget |= { 0x00002000u, 0x00F02000u, 0x3FFE1000u, 0xFFF10000u, 0x000001FFu, 0xFFFFC000u, 0x000FFFFFu, 0x00000000u };
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::UnitAll))
- allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFF800004u, 0x000007FFu, 0x00000000u };
+ allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0xFFF00000u, 0x000001FFu, 0x00000000u, 0x00000000u, 0x00000000u };
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Empath))
- allowedMaskForTarget |= { 0x00000000u, 0x3C000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x000007F8u };
+ allowedMaskForTarget |= { 0x00000000u, 0x00F00000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xC0000000u, 0x0000003Fu, 0x00000000u };
}
void UnitData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
- Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFC01u, 0x007FFFFFu, 0x0003F800u, 0x00000000u });
+ Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xFF0FDFFFu, 0xC001EFFFu, 0x001EFFFFu, 0xFFFFFE00u, 0x00003FFFu, 0xFFF00000u, 0x00000007u });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask &= allowedMaskForTarget;
}
void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Unit const* owner, Player const* receiver) const
{
- data.WriteBits(changesMask.GetBlocksMask(0), 7);
- for (uint32 i = 0; i < 7; ++i)
+ data.WriteBits(changesMask.GetBlocksMask(0), 8);
+ for (uint32 i = 0; i < 8; ++i)
if (changesMask.GetBlock(i))
data.WriteBits(changesMask.GetBlock(i), 32);
@@ -1237,27 +951,27 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
}
if (changesMask[5])
{
- data << int32(ViewerDependentValue<DisplayIDTag>::GetValue(this, owner, receiver));
+ data << int64(Health);
}
if (changesMask[6])
{
- data << uint32(StateSpellVisualID);
+ data << int64(MaxHealth);
}
if (changesMask[7])
{
- data << uint32(StateAnimID);
+ data << int32(ViewerDependentValue<DisplayIDTag>::GetValue(this, owner, receiver));
}
if (changesMask[8])
{
- data << uint32(StateAnimKitID);
+ data << uint32(StateSpellVisualID);
}
if (changesMask[9])
{
- data << uint32(StateWorldEffectsQuestObjectiveID);
+ data << uint32(StateAnimID);
}
if (changesMask[10])
{
- data << int32(SpellOverrideNameID);
+ data << uint32(StateAnimKitID);
}
if (changesMask[11])
{
@@ -1309,507 +1023,465 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
}
if (changesMask[23])
{
- data << int8(SpellEmpowerStage);
+ data << uint32(SummonedByHomeRealm);
}
if (changesMask[24])
{
- data << uint32(SummonedByHomeRealm);
+ data << uint8(Race);
}
if (changesMask[25])
{
- data << uint8(Race);
+ data << uint8(ClassId);
}
if (changesMask[26])
{
- data << uint8(ClassId);
+ data << uint8(PlayerClassId);
}
if (changesMask[27])
{
- data << uint8(PlayerClassId);
+ data << uint8(Sex);
}
if (changesMask[28])
{
- data << uint8(Sex);
+ data << uint8(DisplayPower);
}
if (changesMask[29])
{
- data << uint8(DisplayPower);
+ data << uint32(OverrideDisplayPowerID);
}
if (changesMask[30])
{
- data << uint32(OverrideDisplayPowerID);
+ data << int32(Level);
}
if (changesMask[31])
{
- data << int64(Health);
+ data << int32(EffectiveLevel);
}
}
if (changesMask[32])
{
if (changesMask[33])
{
- data << int64(MaxHealth);
+ data << int32(ContentTuningID);
}
if (changesMask[34])
{
- data << int32(Level);
+ data << int32(ScalingLevelMin);
}
if (changesMask[35])
{
- data << int32(EffectiveLevel);
+ data << int32(ScalingLevelMax);
}
if (changesMask[36])
{
- data << int32(ContentTuningID);
+ data << int32(ScalingLevelDelta);
}
if (changesMask[37])
{
- data << int32(ScalingLevelMin);
+ data << int32(ScalingFactionGroup);
}
if (changesMask[38])
{
- data << int32(ScalingLevelMax);
+ data << int32(ScalingHealthItemLevelCurveID);
}
if (changesMask[39])
{
- data << int32(ScalingLevelDelta);
+ data << int32(ScalingDamageItemLevelCurveID);
}
if (changesMask[40])
{
- data << int32(ScalingFactionGroup);
+ data << int32(ViewerDependentValue<FactionTemplateTag>::GetValue(this, owner, receiver));
}
if (changesMask[41])
{
- data << int32(ScalingHealthItemLevelCurveID);
+ data << uint32(ViewerDependentValue<FlagsTag>::GetValue(this, owner, receiver));
}
if (changesMask[42])
{
- data << int32(ScalingDamageItemLevelCurveID);
+ data << uint32(Flags2);
}
if (changesMask[43])
{
- data << int32(ViewerDependentValue<FactionTemplateTag>::GetValue(this, owner, receiver));
+ data << uint32(ViewerDependentValue<Flags3Tag>::GetValue(this, owner, receiver));
}
if (changesMask[44])
{
- data << uint32(ViewerDependentValue<FlagsTag>::GetValue(this, owner, receiver));
+ data << uint32(ViewerDependentValue<AuraStateTag>::GetValue(this, owner, receiver));
}
if (changesMask[45])
{
- data << uint32(Flags2);
+ data << uint32(RangedAttackRoundBaseTime);
}
if (changesMask[46])
{
- data << uint32(ViewerDependentValue<Flags3Tag>::GetValue(this, owner, receiver));
+ data << float(BoundingRadius);
}
if (changesMask[47])
{
- data << uint32(ViewerDependentValue<AuraStateTag>::GetValue(this, owner, receiver));
+ data << float(CombatReach);
}
if (changesMask[48])
{
- data << uint32(RangedAttackRoundBaseTime);
+ data << float(DisplayScale);
}
if (changesMask[49])
{
- data << float(BoundingRadius);
+ data << int32(NativeDisplayID);
}
if (changesMask[50])
{
- data << float(CombatReach);
+ data << float(NativeXDisplayScale);
}
if (changesMask[51])
{
- data << float(DisplayScale);
+ data << int32(MountDisplayID);
}
if (changesMask[52])
{
- data << int32(CreatureFamily);
+ data << float(MinDamage);
}
if (changesMask[53])
{
- data << int32(CreatureType);
+ data << float(MaxDamage);
}
if (changesMask[54])
{
- data << int32(NativeDisplayID);
+ data << float(MinOffHandDamage);
}
if (changesMask[55])
{
- data << float(NativeXDisplayScale);
+ data << float(MaxOffHandDamage);
}
if (changesMask[56])
{
- data << int32(MountDisplayID);
+ data << uint8(StandState);
}
if (changesMask[57])
{
- data << int32(CosmeticMountDisplayID);
+ data << uint8(PetTalentPoints);
}
if (changesMask[58])
{
- data << float(MinDamage);
+ data << uint8(VisFlags);
}
if (changesMask[59])
{
- data << float(MaxDamage);
+ data << uint8(AnimTier);
}
if (changesMask[60])
{
- data << float(MinOffHandDamage);
+ data << uint32(PetNumber);
}
if (changesMask[61])
{
- data << float(MaxOffHandDamage);
+ data << uint32(PetNameTimestamp);
}
if (changesMask[62])
{
- data << uint8(StandState);
+ data << uint32(PetExperience);
}
if (changesMask[63])
{
- data << uint8(PetTalentPoints);
+ data << uint32(PetNextLevelExperience);
}
}
if (changesMask[64])
{
if (changesMask[65])
{
- data << uint8(VisFlags);
+ data << float(ModCastingSpeed);
}
if (changesMask[66])
{
- data << uint8(AnimTier);
+ data << float(ModSpellHaste);
}
if (changesMask[67])
{
- data << uint32(PetNumber);
+ data << float(ModHaste);
}
if (changesMask[68])
{
- data << uint32(PetNameTimestamp);
+ data << float(ModRangedHaste);
}
if (changesMask[69])
{
- data << uint32(PetExperience);
+ data << float(ModHasteRegen);
}
if (changesMask[70])
{
- data << uint32(PetNextLevelExperience);
+ data << float(ModTimeRate);
}
if (changesMask[71])
{
- data << float(ModCastingSpeed);
+ data << int32(CreatedBySpell);
}
if (changesMask[72])
{
- data << float(ModCastingSpeedNeg);
+ data << int32(EmoteState);
}
if (changesMask[73])
{
- data << float(ModSpellHaste);
+ data << int16(TrainingPointsUsed);
}
if (changesMask[74])
{
- data << float(ModHaste);
+ data << int16(TrainingPointsTotal);
}
if (changesMask[75])
{
- data << float(ModRangedHaste);
+ data << int32(BaseMana);
}
if (changesMask[76])
{
- data << float(ModHasteRegen);
+ data << int32(BaseHealth);
}
if (changesMask[77])
{
- data << float(ModTimeRate);
+ data << uint8(SheatheState);
}
if (changesMask[78])
{
- data << int32(CreatedBySpell);
+ data << uint8(ViewerDependentValue<PvpFlagsTag>::GetValue(this, owner, receiver));
}
if (changesMask[79])
{
- data << int32(EmoteState);
+ data << uint8(PetFlags);
}
if (changesMask[80])
{
- data << int32(BaseMana);
+ data << uint8(ShapeshiftForm);
}
if (changesMask[81])
{
- data << int32(BaseHealth);
+ data << int32(AttackPower);
}
if (changesMask[82])
{
- data << uint8(SheatheState);
+ data << int32(AttackPowerModPos);
}
if (changesMask[83])
{
- data << uint8(ViewerDependentValue<PvpFlagsTag>::GetValue(this, owner, receiver));
+ data << int32(AttackPowerModNeg);
}
if (changesMask[84])
{
- data << uint8(PetFlags);
+ data << float(AttackPowerMultiplier);
}
if (changesMask[85])
{
- data << uint8(ShapeshiftForm);
+ data << int32(RangedAttackPower);
}
if (changesMask[86])
{
- data << int32(AttackPower);
+ data << int32(RangedAttackPowerModPos);
}
if (changesMask[87])
{
- data << int32(AttackPowerModPos);
+ data << int32(RangedAttackPowerModNeg);
}
if (changesMask[88])
{
- data << int32(AttackPowerModNeg);
+ data << float(RangedAttackPowerMultiplier);
}
if (changesMask[89])
{
- data << float(AttackPowerMultiplier);
+ data << int32(SetAttackSpeedAura);
}
if (changesMask[90])
{
- data << int32(AttackPowerModSupport);
+ data << float(Lifesteal);
}
if (changesMask[91])
{
- data << int32(RangedAttackPower);
+ data << float(MinRangedDamage);
}
if (changesMask[92])
{
- data << int32(RangedAttackPowerModPos);
+ data << float(MaxRangedDamage);
}
if (changesMask[93])
{
- data << int32(RangedAttackPowerModNeg);
+ data << float(MaxHealthModifier);
}
if (changesMask[94])
{
- data << float(RangedAttackPowerMultiplier);
+ data << float(HoverHeight);
}
if (changesMask[95])
{
- data << int32(RangedAttackPowerModSupport);
+ data << int32(MinItemLevelCutoff);
}
}
if (changesMask[96])
{
if (changesMask[97])
{
- data << int32(MainHandWeaponAttackPower);
+ data << int32(MinItemLevel);
}
if (changesMask[98])
{
- data << int32(OffHandWeaponAttackPower);
+ data << int32(MaxItemLevel);
}
if (changesMask[99])
{
- data << int32(RangedWeaponAttackPower);
+ data << int32(WildBattlePetLevel);
}
if (changesMask[100])
{
- data << int32(SetAttackSpeedAura);
+ data << uint32(BattlePetCompanionNameTimestamp);
}
if (changesMask[101])
{
- data << float(Lifesteal);
+ data << int32(InteractSpellID);
}
if (changesMask[102])
{
- data << float(MinRangedDamage);
+ data << int32(ScaleDuration);
}
if (changesMask[103])
{
- data << float(MaxRangedDamage);
+ data << int32(LooksLikeMountID);
}
if (changesMask[104])
{
- data << float(ManaCostMultiplier);
+ data << int32(LooksLikeCreatureID);
}
if (changesMask[105])
{
- data << float(MaxHealthModifier);
+ data << int32(LookAtControllerID);
}
if (changesMask[106])
{
- data << float(HoverHeight);
+ data << int32(PerksVendorItemID);
}
if (changesMask[107])
{
- data << int32(MinItemLevelCutoff);
+ data << GuildGUID;
}
if (changesMask[108])
{
- data << int32(MinItemLevel);
+ data << SkinningOwnerGUID;
}
if (changesMask[109])
{
- data << int32(MaxItemLevel);
- }
- if (changesMask[110])
- {
- data << int32(AzeriteItemLevel);
- }
- if (changesMask[111])
- {
- data << int32(WildBattlePetLevel);
- }
- if (changesMask[112])
- {
- data << int32(BattlePetCompanionExperience);
- }
- if (changesMask[113])
- {
- data << uint32(BattlePetCompanionNameTimestamp);
- }
- if (changesMask[114])
- {
- data << int32(InteractSpellID);
- }
- if (changesMask[115])
- {
- data << int32(ScaleDuration);
- }
- if (changesMask[116])
- {
- data << int32(LooksLikeMountID);
- }
- if (changesMask[117])
- {
- data << int32(LooksLikeCreatureID);
- }
- if (changesMask[118])
- {
- data << int32(LookAtControllerID);
- }
- if (changesMask[119])
- {
- data << int32(PerksVendorItemID);
- }
- if (changesMask[120])
- {
- data << int32(TaxiNodesID);
- }
- if (changesMask[121])
- {
- data << GuildGUID;
- }
- if (changesMask[122])
- {
data << int32(FlightCapabilityID);
}
- if (changesMask[123])
+ if (changesMask[110])
{
data << float(GlideEventSpeedDivisor);
}
- if (changesMask[124])
- {
- data << uint32(SilencedSchoolMask);
- }
- if (changesMask[125])
+ if (changesMask[111])
{
data << uint32(CurrentAreaID);
}
- if (changesMask[126])
+ if (changesMask[112])
{
- data << NameplateAttachToGUID;
+ data << ComboTarget;
}
}
- if (changesMask[127])
+ if (changesMask[113])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[128 + i])
+ if (changesMask[114 + i])
{
data << uint32(ViewerDependentValue<NpcFlagsTag>::GetValue(this, i, owner, receiver));
}
}
}
- if (changesMask[130])
+ if (changesMask[116])
{
for (uint32 i = 0; i < 10; ++i)
{
- if (changesMask[131 + i])
+ if (changesMask[117 + i])
{
- data << int32(Power[i]);
+ data << float(PowerRegenFlatModifier[i]);
}
- if (changesMask[141 + i])
+ if (changesMask[127 + i])
{
- data << int32(MaxPower[i]);
+ data << float(PowerRegenInterruptedFlatModifier[i]);
}
- if (changesMask[151 + i])
+ if (changesMask[137 + i])
{
- data << float(PowerRegenFlatModifier[i]);
+ data << int32(Power[i]);
}
- if (changesMask[161 + i])
+ if (changesMask[147 + i])
{
- data << float(PowerRegenInterruptedFlatModifier[i]);
+ data << int32(MaxPower[i]);
+ }
+ if (changesMask[157 + i])
+ {
+ data << float(ModPowerRegen[i]);
}
}
}
- if (changesMask[171])
+ if (changesMask[167])
{
for (uint32 i = 0; i < 3; ++i)
{
- if (changesMask[172 + i])
+ if (changesMask[168 + i])
{
VirtualItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[175])
+ if (changesMask[171])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[176 + i])
+ if (changesMask[172 + i])
{
data << uint32(AttackRoundBaseTime[i]);
}
}
}
- if (changesMask[178])
+ if (changesMask[174])
{
- for (uint32 i = 0; i < 4; ++i)
+ for (uint32 i = 0; i < 5; ++i)
{
- if (changesMask[179 + i])
+ if (changesMask[175 + i])
{
data << int32(Stats[i]);
}
- if (changesMask[183 + i])
+ if (changesMask[180 + i])
{
data << int32(StatPosBuff[i]);
}
- if (changesMask[187 + i])
+ if (changesMask[185 + i])
{
data << int32(StatNegBuff[i]);
}
- if (changesMask[191 + i])
- {
- data << int32(StatSupportBuff[i]);
- }
}
}
- if (changesMask[195])
+ if (changesMask[190])
{
for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[196 + i])
+ if (changesMask[191 + i])
{
data << int32(Resistances[i]);
}
- if (changesMask[203 + i])
+ if (changesMask[198 + i])
+ {
+ data << int32(PowerCostModifier[i]);
+ }
+ if (changesMask[205 + i])
+ {
+ data << float(PowerCostMultiplier[i]);
+ }
+ }
+ }
+ if (changesMask[212])
+ {
+ for (uint32 i = 0; i < 7; ++i)
+ {
+ if (changesMask[213 + i])
{
- data << int32(BonusResistanceMods[i]);
+ data << int32(ResistanceBuffModsPositive[i]);
}
- if (changesMask[210 + i])
+ if (changesMask[220 + i])
{
- data << int32(ManaCostModifier[i]);
+ data << int32(ResistanceBuffModsNegative[i]);
}
}
}
@@ -1821,12 +1493,12 @@ void UnitData::ClearChangesMask()
Base::ClearChangesMask(PassiveSpells);
Base::ClearChangesMask(WorldEffects);
Base::ClearChangesMask(ChannelObjects);
+ Base::ClearChangesMask(Health);
+ Base::ClearChangesMask(MaxHealth);
Base::ClearChangesMask(DisplayID);
Base::ClearChangesMask(StateSpellVisualID);
Base::ClearChangesMask(StateAnimID);
Base::ClearChangesMask(StateAnimKitID);
- Base::ClearChangesMask(StateWorldEffectsQuestObjectiveID);
- Base::ClearChangesMask(SpellOverrideNameID);
Base::ClearChangesMask(Charm);
Base::ClearChangesMask(Summon);
Base::ClearChangesMask(Critter);
@@ -1839,7 +1511,6 @@ void UnitData::ClearChangesMask()
Base::ClearChangesMask(BattlePetCompanionGUID);
Base::ClearChangesMask(BattlePetDBID);
Base::ClearChangesMask(ChannelData);
- Base::ClearChangesMask(SpellEmpowerStage);
Base::ClearChangesMask(SummonedByHomeRealm);
Base::ClearChangesMask(Race);
Base::ClearChangesMask(ClassId);
@@ -1847,8 +1518,6 @@ void UnitData::ClearChangesMask()
Base::ClearChangesMask(Sex);
Base::ClearChangesMask(DisplayPower);
Base::ClearChangesMask(OverrideDisplayPowerID);
- Base::ClearChangesMask(Health);
- Base::ClearChangesMask(MaxHealth);
Base::ClearChangesMask(Level);
Base::ClearChangesMask(EffectiveLevel);
Base::ClearChangesMask(ContentTuningID);
@@ -1867,12 +1536,9 @@ void UnitData::ClearChangesMask()
Base::ClearChangesMask(BoundingRadius);
Base::ClearChangesMask(CombatReach);
Base::ClearChangesMask(DisplayScale);
- Base::ClearChangesMask(CreatureFamily);
- Base::ClearChangesMask(CreatureType);
Base::ClearChangesMask(NativeDisplayID);
Base::ClearChangesMask(NativeXDisplayScale);
Base::ClearChangesMask(MountDisplayID);
- Base::ClearChangesMask(CosmeticMountDisplayID);
Base::ClearChangesMask(MinDamage);
Base::ClearChangesMask(MaxDamage);
Base::ClearChangesMask(MinOffHandDamage);
@@ -1886,7 +1552,6 @@ void UnitData::ClearChangesMask()
Base::ClearChangesMask(PetExperience);
Base::ClearChangesMask(PetNextLevelExperience);
Base::ClearChangesMask(ModCastingSpeed);
- Base::ClearChangesMask(ModCastingSpeedNeg);
Base::ClearChangesMask(ModSpellHaste);
Base::ClearChangesMask(ModHaste);
Base::ClearChangesMask(ModRangedHaste);
@@ -1894,6 +1559,8 @@ void UnitData::ClearChangesMask()
Base::ClearChangesMask(ModTimeRate);
Base::ClearChangesMask(CreatedBySpell);
Base::ClearChangesMask(EmoteState);
+ Base::ClearChangesMask(TrainingPointsUsed);
+ Base::ClearChangesMask(TrainingPointsTotal);
Base::ClearChangesMask(BaseMana);
Base::ClearChangesMask(BaseHealth);
Base::ClearChangesMask(SheatheState);
@@ -1904,28 +1571,20 @@ void UnitData::ClearChangesMask()
Base::ClearChangesMask(AttackPowerModPos);
Base::ClearChangesMask(AttackPowerModNeg);
Base::ClearChangesMask(AttackPowerMultiplier);
- Base::ClearChangesMask(AttackPowerModSupport);
Base::ClearChangesMask(RangedAttackPower);
Base::ClearChangesMask(RangedAttackPowerModPos);
Base::ClearChangesMask(RangedAttackPowerModNeg);
Base::ClearChangesMask(RangedAttackPowerMultiplier);
- Base::ClearChangesMask(RangedAttackPowerModSupport);
- Base::ClearChangesMask(MainHandWeaponAttackPower);
- Base::ClearChangesMask(OffHandWeaponAttackPower);
- Base::ClearChangesMask(RangedWeaponAttackPower);
Base::ClearChangesMask(SetAttackSpeedAura);
Base::ClearChangesMask(Lifesteal);
Base::ClearChangesMask(MinRangedDamage);
Base::ClearChangesMask(MaxRangedDamage);
- Base::ClearChangesMask(ManaCostMultiplier);
Base::ClearChangesMask(MaxHealthModifier);
Base::ClearChangesMask(HoverHeight);
Base::ClearChangesMask(MinItemLevelCutoff);
Base::ClearChangesMask(MinItemLevel);
Base::ClearChangesMask(MaxItemLevel);
- Base::ClearChangesMask(AzeriteItemLevel);
Base::ClearChangesMask(WildBattlePetLevel);
- Base::ClearChangesMask(BattlePetCompanionExperience);
Base::ClearChangesMask(BattlePetCompanionNameTimestamp);
Base::ClearChangesMask(InteractSpellID);
Base::ClearChangesMask(ScaleDuration);
@@ -1933,27 +1592,28 @@ void UnitData::ClearChangesMask()
Base::ClearChangesMask(LooksLikeCreatureID);
Base::ClearChangesMask(LookAtControllerID);
Base::ClearChangesMask(PerksVendorItemID);
- Base::ClearChangesMask(TaxiNodesID);
Base::ClearChangesMask(GuildGUID);
+ Base::ClearChangesMask(SkinningOwnerGUID);
Base::ClearChangesMask(FlightCapabilityID);
Base::ClearChangesMask(GlideEventSpeedDivisor);
- Base::ClearChangesMask(SilencedSchoolMask);
Base::ClearChangesMask(CurrentAreaID);
- Base::ClearChangesMask(NameplateAttachToGUID);
+ Base::ClearChangesMask(ComboTarget);
Base::ClearChangesMask(NpcFlags);
- Base::ClearChangesMask(Power);
- Base::ClearChangesMask(MaxPower);
Base::ClearChangesMask(PowerRegenFlatModifier);
Base::ClearChangesMask(PowerRegenInterruptedFlatModifier);
+ Base::ClearChangesMask(Power);
+ Base::ClearChangesMask(MaxPower);
+ Base::ClearChangesMask(ModPowerRegen);
Base::ClearChangesMask(VirtualItems);
Base::ClearChangesMask(AttackRoundBaseTime);
Base::ClearChangesMask(Stats);
Base::ClearChangesMask(StatPosBuff);
Base::ClearChangesMask(StatNegBuff);
- Base::ClearChangesMask(StatSupportBuff);
Base::ClearChangesMask(Resistances);
- Base::ClearChangesMask(BonusResistanceMods);
- Base::ClearChangesMask(ManaCostModifier);
+ Base::ClearChangesMask(PowerCostModifier);
+ Base::ClearChangesMask(PowerCostMultiplier);
+ Base::ClearChangesMask(ResistanceBuffModsPositive);
+ Base::ClearChangesMask(ResistanceBuffModsNegative);
_changesMask.ResetAll();
}
@@ -1980,10 +1640,9 @@ void QuestLog::WriteCreate(ByteBuffer& data, Player const* owner, Player const*
data << int64(EndTime);
data << int32(QuestID);
data << uint32(StateFlags);
- data << uint32(ObjectiveFlags);
for (uint32 i = 0; i < 24; ++i)
{
- data << int16(ObjectiveProgress[i]);
+ data << uint16(ObjectiveProgress[i]);
}
}
@@ -2012,18 +1671,14 @@ void QuestLog::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player cons
{
data << uint32(StateFlags);
}
- if (changesMask[4])
- {
- data << uint32(ObjectiveFlags);
- }
}
- if (changesMask[5])
+ if (changesMask[4])
{
for (uint32 i = 0; i < 24; ++i)
{
- if (changesMask[6 + i])
+ if (changesMask[5 + i])
{
- data << int16(ObjectiveProgress[i]);
+ data << uint16(ObjectiveProgress[i]);
}
}
}
@@ -2034,7 +1689,6 @@ void QuestLog::ClearChangesMask()
Base::ClearChangesMask(EndTime);
Base::ClearChangesMask(QuestID);
Base::ClearChangesMask(StateFlags);
- Base::ClearChangesMask(ObjectiveFlags);
Base::ClearChangesMask(ObjectiveProgress);
_changesMask.ResetAll();
}
@@ -2042,6 +1696,7 @@ void QuestLog::ClearChangesMask()
void ArenaCooldown::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
{
data << int32(SpellID);
+ data << int32(ItemID);
data << int32(Charges);
data << uint32(Flags);
data << uint32(StartTime);
@@ -2056,7 +1711,7 @@ void ArenaCooldown::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player
if (ignoreChangesMask)
changesMask.SetAll();
- data.WriteBits(changesMask.GetBlock(0), 8);
+ data.WriteBits(changesMask.GetBlock(0), 9);
data.FlushBits();
if (changesMask[0])
@@ -2067,26 +1722,30 @@ void ArenaCooldown::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player
}
if (changesMask[2])
{
- data << int32(Charges);
+ data << int32(ItemID);
}
if (changesMask[3])
{
- data << uint32(Flags);
+ data << int32(Charges);
}
if (changesMask[4])
{
- data << uint32(StartTime);
+ data << uint32(Flags);
}
if (changesMask[5])
{
- data << uint32(EndTime);
+ data << uint32(StartTime);
}
if (changesMask[6])
{
- data << uint32(NextChargeTime);
+ data << uint32(EndTime);
}
if (changesMask[7])
{
+ data << uint32(NextChargeTime);
+ }
+ if (changesMask[8])
+ {
data << uint8(MaxCharges);
}
}
@@ -2095,6 +1754,7 @@ void ArenaCooldown::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player
void ArenaCooldown::ClearChangesMask()
{
Base::ClearChangesMask(SpellID);
+ Base::ClearChangesMask(ItemID);
Base::ClearChangesMask(Charges);
Base::ClearChangesMask(Flags);
Base::ClearChangesMask(StartTime);
@@ -2104,141 +1764,10 @@ void ArenaCooldown::ClearChangesMask()
_changesMask.ResetAll();
}
-void CTROptions::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- data << int32(ContentTuningConditionMask);
- data << uint32(Field_4);
- data << uint32(ExpansionLevelMask);
-}
-
-void CTROptions::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- data << int32(ContentTuningConditionMask);
- data << uint32(Field_4);
- data << uint32(ExpansionLevelMask);
-}
-
-bool CTROptions::operator==(CTROptions const& right) const
-{
- return ContentTuningConditionMask == right.ContentTuningConditionMask
- && Field_4 == right.Field_4
- && ExpansionLevelMask == right.ExpansionLevelMask;
-}
-
-void DeclinedNames::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- for (uint32 i = 0; i < 5; ++i)
- {
- data.WriteBits(Name[i].size(), 10);
- }
- data.FlushBits();
- for (uint32 i = 0; i < 5; ++i)
- {
- data.WriteString(Name[i]);
- }
- data.FlushBits();
-}
-
-void DeclinedNames::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- Mask changesMask = _changesMask;
- if (ignoreChangesMask)
- changesMask.SetAll();
-
- data.WriteBits(changesMask.GetBlocksMask(0), 1);
- if (changesMask.GetBlock(0))
- data.WriteBits(changesMask.GetBlock(0), 32);
-
- data.FlushBits();
- if (changesMask[0])
- {
- for (uint32 i = 0; i < 5; ++i)
- {
- if (changesMask[1 + i])
- {
- data.WriteBits(Name[i].size(), 10);
- }
- }
- }
- data.FlushBits();
- if (changesMask[0])
- {
- for (uint32 i = 0; i < 5; ++i)
- {
- if (changesMask[1 + i])
- {
- data.WriteString(Name[i]);
- }
- }
- }
- data.FlushBits();
-}
-
-void DeclinedNames::ClearChangesMask()
-{
- Base::ClearChangesMask(Name);
- _changesMask.ResetAll();
-}
-
-void CustomTabardInfo::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- data << int32(EmblemStyle);
- data << int32(EmblemColor);
- data << int32(BorderStyle);
- data << int32(BorderColor);
- data << int32(BackgroundColor);
-}
-
-void CustomTabardInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- Mask changesMask = _changesMask;
- if (ignoreChangesMask)
- changesMask.SetAll();
-
- data.WriteBits(changesMask.GetBlock(0), 6);
-
- data.FlushBits();
- if (changesMask[0])
- {
- if (changesMask[1])
- {
- data << int32(EmblemStyle);
- }
- if (changesMask[2])
- {
- data << int32(EmblemColor);
- }
- if (changesMask[3])
- {
- data << int32(BorderStyle);
- }
- if (changesMask[4])
- {
- data << int32(BorderColor);
- }
- if (changesMask[5])
- {
- data << int32(BackgroundColor);
- }
- }
-}
-
-void CustomTabardInfo::ClearChangesMask()
-{
- Base::ClearChangesMask(EmblemStyle);
- Base::ClearChangesMask(EmblemColor);
- Base::ClearChangesMask(BorderStyle);
- Base::ClearChangesMask(BorderColor);
- Base::ClearChangesMask(BackgroundColor);
- _changesMask.ResetAll();
-}
-
void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const
{
data << DuelArbiter;
data << WowAccount;
- data << BnetAccount;
- data << uint64(GuildClubMemberID);
data << LootTargetGUID;
data << uint32(PlayerFlags);
data << uint32(PlayerFlagsEx);
@@ -2246,24 +1775,25 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
data << uint32(GuildDeleteDate);
data << int32(GuildLevel);
data << uint32(Customizations.size());
- data << uint32(QaCustomizations.size());
for (uint32 i = 0; i < 2; ++i)
{
data << uint8(PartyType[i]);
}
+ data << uint8(NumBankSlots);
data << uint8(NativeSex);
data << uint8(Inebriation);
data << uint8(PvpTitle);
data << uint8(ArenaFaction);
+ data << uint8(PvpRank);
+ data << int32(Field_88);
data << uint32(DuelTeam);
data << int32(GuildTimeStamp);
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember))
{
- for (uint32 i = 0; i < 175; ++i)
+ for (uint32 i = 0; i < 25; ++i)
{
QuestLog[i].WriteCreate(data, owner, receiver);
}
- data << uint32(QuestSessionQuestLog.size());
}
for (uint32 i = 0; i < 19; ++i)
{
@@ -2282,33 +1812,17 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
data << int32(HonorLevel);
data << int64(LogoutTime);
data << uint32(ArenaCooldowns.size());
- data << int32(Field_B0);
- data << int32(Field_B4);
data << int32(CurrentBattlePetSpeciesID);
- CtrOptions->WriteCreate(data, owner, receiver);
- data << int32(CovenantID);
- data << int32(SoulbindID);
+ data << BnetAccount;
data << uint32(VisualItemReplacements.size());
for (uint32 i = 0; i < 19; ++i)
{
data << uint32(Field_3120[i]);
}
- PersonalTabard->WriteCreate(data, owner, receiver);
for (uint32 i = 0; i < Customizations.size(); ++i)
{
Customizations[i].WriteCreate(data, owner, receiver);
}
- for (uint32 i = 0; i < QaCustomizations.size(); ++i)
- {
- QaCustomizations[i].WriteCreate(data, owner, receiver);
- }
- if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember))
- {
- for (uint32 i = 0; i < QuestSessionQuestLog.size(); ++i)
- {
- QuestSessionQuestLog[i].WriteCreate(data, owner, receiver);
- }
- }
for (uint32 i = 0; i < ArenaCooldowns.size(); ++i)
{
ArenaCooldowns[i].WriteCreate(data, owner, receiver);
@@ -2317,26 +1831,12 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
{
data << int32(VisualItemReplacements[i]);
}
- data.FlushBits();
- data.WriteBits(Name->size(), 6);
- if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember))
- {
- data.WriteBit(HasQuestSession);
- }
- data.WriteBit(HasLevelLink);
- data.WriteBits(DeclinedNames.has_value(), 1);
data << DungeonScore;
- data.WriteString(Name);
- if (DeclinedNames.has_value())
- {
- DeclinedNames->WriteCreate(data, owner, receiver);
- }
- data.FlushBits();
}
void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const
{
- Mask allowedMaskForTarget({ 0xFFFFFFDDu, 0x00003FFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xC0000000u, 0xFFFFFFFFu, 0x00001FFFu });
+ Mask allowedMaskForTarget({ 0xFFFFFFFFu, 0xE0000007u, 0xFFFFFFFFu, 0x00000FFFu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
@@ -2344,20 +1844,20 @@ void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
void PlayerData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember))
- allowedMaskForTarget |= { 0x00000022u, 0xFFFFC000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x3FFFFFFFu, 0x00000000u, 0x00000000u };
+ allowedMaskForTarget |= { 0x00000000u, 0x1FFFFFF8u, 0x00000000u, 0x00000000u };
}
void PlayerData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
- Mask allowedMaskForTarget({ 0xFFFFFFDDu, 0x00003FFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xC0000000u, 0xFFFFFFFFu, 0x00001FFFu });
+ Mask allowedMaskForTarget({ 0xFFFFFFFFu, 0xE0000007u, 0xFFFFFFFFu, 0x00000FFFu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask &= allowedMaskForTarget;
}
void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const
{
- data.WriteBits(changesMask.GetBlocksMask(0), 9);
- for (uint32 i = 0; i < 9; ++i)
+ data.WriteBits(changesMask.GetBlocksMask(0), 4);
+ for (uint32 i = 0; i < 4; ++i)
if (changesMask.GetBlock(i))
data.WriteBits(changesMask.GetBlock(i), 32);
@@ -2366,41 +1866,19 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
{
if (changesMask[1])
{
- data.WriteBit(HasQuestSession);
- }
- if (changesMask[2])
- {
- data.WriteBit(HasLevelLink);
- }
- if (changesMask[3])
- {
if (!ignoreNestedChangesMask)
Customizations.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(Customizations.size(), data);
}
- if (changesMask[4])
- {
- if (!ignoreNestedChangesMask)
- QaCustomizations.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(QaCustomizations.size(), data);
- }
- if (changesMask[5])
- {
- if (!ignoreNestedChangesMask)
- QuestSessionQuestLog.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(QuestSessionQuestLog.size(), data);
- }
- if (changesMask[6])
+ if (changesMask[2])
{
if (!ignoreNestedChangesMask)
ArenaCooldowns.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(ArenaCooldowns.size(), data);
}
- if (changesMask[7])
+ if (changesMask[3])
{
if (!ignoreNestedChangesMask)
VisualItemReplacements.WriteUpdateMask(data);
@@ -2411,7 +1889,7 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
data.FlushBits();
if (changesMask[0])
{
- if (changesMask[3])
+ if (changesMask[1])
{
for (uint32 i = 0; i < Customizations.size(); ++i)
{
@@ -2421,30 +1899,7 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
}
}
- if (changesMask[4])
- {
- for (uint32 i = 0; i < QaCustomizations.size(); ++i)
- {
- if (QaCustomizations.HasChanged(i) || ignoreNestedChangesMask)
- {
- QaCustomizations[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
- }
- if (changesMask[5])
- {
- for (uint32 i = 0; i < QuestSessionQuestLog.size(); ++i)
- {
- if (QuestSessionQuestLog.HasChanged(i) || ignoreNestedChangesMask)
- {
- if (noQuestLogChangesMask)
- QuestSessionQuestLog[i].WriteCreate(data, owner, receiver);
- else
- QuestSessionQuestLog[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
- }
- if (changesMask[6])
+ if (changesMask[2])
{
for (uint32 i = 0; i < ArenaCooldowns.size(); ++i)
{
@@ -2454,7 +1909,7 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
}
}
- if (changesMask[7])
+ if (changesMask[3])
{
for (uint32 i = 0; i < VisualItemReplacements.size(); ++i)
{
@@ -2464,170 +1919,134 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
}
}
- if (changesMask[8])
+ if (changesMask[4])
{
data << DuelArbiter;
}
- if (changesMask[9])
+ if (changesMask[5])
{
data << WowAccount;
}
- if (changesMask[10])
- {
- data << BnetAccount;
- }
- if (changesMask[11])
- {
- data << uint64(GuildClubMemberID);
- }
- if (changesMask[12])
+ if (changesMask[6])
{
data << LootTargetGUID;
}
- if (changesMask[13])
+ if (changesMask[7])
{
data << uint32(PlayerFlags);
}
- if (changesMask[14])
+ if (changesMask[8])
{
data << uint32(PlayerFlagsEx);
}
- if (changesMask[15])
+ if (changesMask[9])
{
data << uint32(GuildRankID);
}
- if (changesMask[16])
+ if (changesMask[10])
{
data << uint32(GuildDeleteDate);
}
- if (changesMask[17])
+ if (changesMask[11])
{
data << int32(GuildLevel);
}
- if (changesMask[18])
+ if (changesMask[12])
+ {
+ data << uint8(NumBankSlots);
+ }
+ if (changesMask[13])
{
data << uint8(NativeSex);
}
- if (changesMask[19])
+ if (changesMask[14])
{
data << uint8(Inebriation);
}
- if (changesMask[20])
+ if (changesMask[15])
{
data << uint8(PvpTitle);
}
- if (changesMask[21])
+ if (changesMask[16])
{
data << uint8(ArenaFaction);
}
- if (changesMask[22])
+ if (changesMask[17])
+ {
+ data << uint8(PvpRank);
+ }
+ if (changesMask[18])
+ {
+ data << int32(Field_88);
+ }
+ if (changesMask[19])
{
data << uint32(DuelTeam);
}
- if (changesMask[23])
+ if (changesMask[20])
{
data << int32(GuildTimeStamp);
}
- if (changesMask[24])
+ if (changesMask[21])
{
data << int32(PlayerTitle);
}
- if (changesMask[25])
+ if (changesMask[22])
{
data << int32(FakeInebriation);
}
- if (changesMask[26])
+ if (changesMask[23])
{
data << uint32(VirtualPlayerRealm);
}
- if (changesMask[27])
+ if (changesMask[24])
{
data << uint32(CurrentSpecID);
}
- if (changesMask[28])
+ if (changesMask[25])
{
data << int32(TaxiMountAnimKitID);
}
- if (changesMask[29])
+ if (changesMask[26])
{
data << uint8(CurrentBattlePetBreedQuality);
}
- if (changesMask[30])
+ if (changesMask[27])
{
data << int32(HonorLevel);
}
- if (changesMask[31])
+ if (changesMask[28])
{
data << int64(LogoutTime);
}
- }
- if (changesMask[32])
- {
- if (changesMask[34])
- {
- data << int32(Field_B0);
- }
- if (changesMask[35])
- {
- data << int32(Field_B4);
- }
- if (changesMask[36])
+ if (changesMask[29])
{
data << int32(CurrentBattlePetSpeciesID);
}
- if (changesMask[37])
- {
- CtrOptions->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- if (changesMask[38])
- {
- data << int32(CovenantID);
- }
- if (changesMask[39])
- {
- data << int32(SoulbindID);
- }
- if (changesMask[42])
- {
- PersonalTabard->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- if (changesMask[33])
+ if (changesMask[30])
{
- data.WriteBits(Name->size(), 32);
+ data << BnetAccount;
}
- data.WriteBits(DeclinedNames.has_value(), 1);
- data.FlushBits();
- if (changesMask[40])
+ if (changesMask[31])
{
data << DungeonScore;
}
- if (changesMask[33])
- {
- data.WriteString(Name);
- }
- if (changesMask[41])
- {
- if (DeclinedNames.has_value())
- {
- DeclinedNames->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
}
- if (changesMask[43])
+ if (changesMask[32])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[44 + i])
+ if (changesMask[33 + i])
{
data << uint8(PartyType[i]);
}
}
}
- if (changesMask[46])
+ if (changesMask[35])
{
- for (uint32 i = 0; i < 175; ++i)
+ for (uint32 i = 0; i < 25; ++i)
{
- if (changesMask[47 + i])
+ if (changesMask[36 + i])
{
if (noQuestLogChangesMask)
QuestLog[i].WriteCreate(data, owner, receiver);
@@ -2636,62 +2055,58 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
}
}
- if (changesMask[222])
+ if (changesMask[61])
{
for (uint32 i = 0; i < 19; ++i)
{
- if (changesMask[223 + i])
+ if (changesMask[62 + i])
{
VisibleItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[242])
+ if (changesMask[81])
{
for (uint32 i = 0; i < 6; ++i)
{
- if (changesMask[243 + i])
+ if (changesMask[82 + i])
{
data << float(AvgItemLevel[i]);
}
}
}
- if (changesMask[249])
+ if (changesMask[88])
{
for (uint32 i = 0; i < 19; ++i)
{
- if (changesMask[250 + i])
+ if (changesMask[89 + i])
{
data << uint32(Field_3120[i]);
}
}
}
- data.FlushBits();
}
void PlayerData::ClearChangesMask()
{
- Base::ClearChangesMask(HasQuestSession);
- Base::ClearChangesMask(HasLevelLink);
Base::ClearChangesMask(Customizations);
- Base::ClearChangesMask(QaCustomizations);
- Base::ClearChangesMask(QuestSessionQuestLog);
Base::ClearChangesMask(ArenaCooldowns);
Base::ClearChangesMask(VisualItemReplacements);
Base::ClearChangesMask(DuelArbiter);
Base::ClearChangesMask(WowAccount);
- Base::ClearChangesMask(BnetAccount);
- Base::ClearChangesMask(GuildClubMemberID);
Base::ClearChangesMask(LootTargetGUID);
Base::ClearChangesMask(PlayerFlags);
Base::ClearChangesMask(PlayerFlagsEx);
Base::ClearChangesMask(GuildRankID);
Base::ClearChangesMask(GuildDeleteDate);
Base::ClearChangesMask(GuildLevel);
+ Base::ClearChangesMask(NumBankSlots);
Base::ClearChangesMask(NativeSex);
Base::ClearChangesMask(Inebriation);
Base::ClearChangesMask(PvpTitle);
Base::ClearChangesMask(ArenaFaction);
+ Base::ClearChangesMask(PvpRank);
+ Base::ClearChangesMask(Field_88);
Base::ClearChangesMask(DuelTeam);
Base::ClearChangesMask(GuildTimeStamp);
Base::ClearChangesMask(PlayerTitle);
@@ -2702,16 +2117,9 @@ void PlayerData::ClearChangesMask()
Base::ClearChangesMask(CurrentBattlePetBreedQuality);
Base::ClearChangesMask(HonorLevel);
Base::ClearChangesMask(LogoutTime);
- Base::ClearChangesMask(Name);
- Base::ClearChangesMask(Field_B0);
- Base::ClearChangesMask(Field_B4);
Base::ClearChangesMask(CurrentBattlePetSpeciesID);
- Base::ClearChangesMask(CtrOptions);
- Base::ClearChangesMask(CovenantID);
- Base::ClearChangesMask(SoulbindID);
+ Base::ClearChangesMask(BnetAccount);
Base::ClearChangesMask(DungeonScore);
- Base::ClearChangesMask(DeclinedNames);
- Base::ClearChangesMask(PersonalTabard);
Base::ClearChangesMask(PartyType);
Base::ClearChangesMask(QuestLog);
Base::ClearChangesMask(VisibleItems);
@@ -3125,186 +2533,6 @@ void ResearchHistory::ClearChangesMask()
_changesMask.ResetAll();
}
-void MawPower::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- data << int32(Field_0);
- data << int32(Field_4);
- data << int32(Field_8);
-}
-
-void MawPower::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- data << int32(Field_0);
- data << int32(Field_4);
- data << int32(Field_8);
-}
-
-bool MawPower::operator==(MawPower const& right) const
-{
- return Field_0 == right.Field_0
- && Field_4 == right.Field_4
- && Field_8 == right.Field_8;
-}
-
-void MultiFloorExplore::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- data << uint32(WorldMapOverlayIDs.size());
- for (uint32 i = 0; i < WorldMapOverlayIDs.size(); ++i)
- {
- data << int32(WorldMapOverlayIDs[i]);
- }
-}
-
-void MultiFloorExplore::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- data << uint32(WorldMapOverlayIDs.size());
- for (uint32 i = 0; i < WorldMapOverlayIDs.size(); ++i)
- {
- data << int32(WorldMapOverlayIDs[i]);
- }
- data.FlushBits();
-}
-
-bool MultiFloorExplore::operator==(MultiFloorExplore const& right) const
-{
- return WorldMapOverlayIDs == right.WorldMapOverlayIDs;
-}
-
-void RecipeProgressionInfo::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- data << uint16(RecipeProgressionGroupID);
- data << uint16(Experience);
-}
-
-void RecipeProgressionInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- data << uint16(RecipeProgressionGroupID);
- data << uint16(Experience);
-}
-
-bool RecipeProgressionInfo::operator==(RecipeProgressionInfo const& right) const
-{
- return RecipeProgressionGroupID == right.RecipeProgressionGroupID
- && Experience == right.Experience;
-}
-
-void ActivePlayerUnk901::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- data << Field_0;
- data << int32(Field_10);
-}
-
-void ActivePlayerUnk901::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- Mask changesMask = _changesMask;
- if (ignoreChangesMask)
- changesMask.SetAll();
-
- data.WriteBits(changesMask.GetBlock(0), 3);
-
- data.FlushBits();
- if (changesMask[0])
- {
- if (changesMask[1])
- {
- data << Field_0;
- }
- if (changesMask[2])
- {
- data << int32(Field_10);
- }
- }
-}
-
-void ActivePlayerUnk901::ClearChangesMask()
-{
- Base::ClearChangesMask(Field_0);
- Base::ClearChangesMask(Field_10);
- _changesMask.ResetAll();
-}
-
-void QuestSession::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- data << Owner;
- for (uint32 i = 0; i < 875; ++i)
- {
- data << uint64(QuestCompleted[i]);
- }
-}
-
-void QuestSession::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- Mask changesMask = _changesMask;
- if (ignoreChangesMask)
- changesMask.SetAll();
-
- data.WriteBits(changesMask.GetBlocksMask(0), 28);
- for (uint32 i = 0; i < 28; ++i)
- if (changesMask.GetBlock(i))
- data.WriteBits(changesMask.GetBlock(i), 32);
-
- data.FlushBits();
- if (changesMask[0])
- {
- if (changesMask[1])
- {
- data << Owner;
- }
- }
- if (changesMask[2])
- {
- for (uint32 i = 0; i < 875; ++i)
- {
- if (changesMask[3 + i])
- {
- data << uint64(QuestCompleted[i]);
- }
- }
- }
-}
-
-void QuestSession::ClearChangesMask()
-{
- Base::ClearChangesMask(Owner);
- Base::ClearChangesMask(QuestCompleted);
- _changesMask.ResetAll();
-}
-
-void ReplayedQuest::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- data << int32(QuestID);
- data << uint32(ReplayTime);
-}
-
-void ReplayedQuest::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- Mask changesMask = _changesMask;
- if (ignoreChangesMask)
- changesMask.SetAll();
-
- data.WriteBits(changesMask.GetBlock(0), 3);
-
- data.FlushBits();
- if (changesMask[0])
- {
- if (changesMask[1])
- {
- data << int32(QuestID);
- }
- if (changesMask[2])
- {
- data << uint32(ReplayTime);
- }
- }
-}
-
-void ReplayedQuest::ClearChangesMask()
-{
- Base::ClearChangesMask(QuestID);
- Base::ClearChangesMask(ReplayTime);
- _changesMask.ResetAll();
-}
-
void TraitEntry::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
{
data << int32(TraitNodeID);
@@ -3463,391 +2691,6 @@ void TraitConfig::ClearChangesMask()
_changesMask.ResetAll();
}
-void CraftingOrderItem::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- data << uint64(Field_0);
- data << ItemGUID;
- data << OwnerGUID;
- data << int32(ItemID);
- data << uint32(Quantity);
- data << int32(ReagentQuality);
- data.WriteBits(DataSlotIndex.has_value(), 1);
- data.FlushBits();
- if (DataSlotIndex.has_value())
- {
- data << uint8(DataSlotIndex);
- }
-}
-
-void CraftingOrderItem::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- Mask changesMask = _changesMask;
- if (ignoreChangesMask)
- changesMask.SetAll();
-
- data.WriteBits(changesMask.GetBlock(0), 7);
-
- data.FlushBits();
- if (changesMask[0])
- {
- data << uint64(Field_0);
- }
- if (changesMask[1])
- {
- data << ItemGUID;
- }
- if (changesMask[2])
- {
- data << OwnerGUID;
- }
- if (changesMask[3])
- {
- data << int32(ItemID);
- }
- if (changesMask[4])
- {
- data << uint32(Quantity);
- }
- if (changesMask[5])
- {
- data << int32(ReagentQuality);
- }
- data.WriteBits(DataSlotIndex.has_value(), 1);
- data.FlushBits();
- if (changesMask[6])
- {
- if (DataSlotIndex.has_value())
- {
- data << uint8(DataSlotIndex);
- }
- }
-}
-
-void CraftingOrderItem::ClearChangesMask()
-{
- Base::ClearChangesMask(Field_0);
- Base::ClearChangesMask(ItemGUID);
- Base::ClearChangesMask(OwnerGUID);
- Base::ClearChangesMask(ItemID);
- Base::ClearChangesMask(Quantity);
- Base::ClearChangesMask(ReagentQuality);
- Base::ClearChangesMask(DataSlotIndex);
- _changesMask.ResetAll();
-}
-
-void CraftingOrderData::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- data << int32(Field_0);
- data << uint64(OrderID);
- data << int32(SkillLineAbilityID);
- data << uint8(OrderState);
- data << uint8(OrderType);
- data << uint8(MinQuality);
- data << int64(ExpirationTime);
- data << int64(ClaimEndTime);
- data << int64(TipAmount);
- data << int64(ConsortiumCut);
- data << uint32(Flags);
- data << CustomerGUID;
- data << CustomerAccountGUID;
- data << CrafterGUID;
- data << PersonalCrafterGUID;
- data << uint32(Reagents.size());
- data.WriteBits(CustomerNotes->size(), 10);
- data.WriteBits(OutputItem.has_value(), 1);
- data.WriteBits(OutputItemData.has_value(), 1);
- data.FlushBits();
- for (uint32 i = 0; i < Reagents.size(); ++i)
- {
- Reagents[i].WriteCreate(data, owner, receiver);
- }
- data.WriteString(CustomerNotes);
- if (OutputItem.has_value())
- {
- OutputItem->WriteCreate(data, owner, receiver);
- }
- if (OutputItemData.has_value())
- {
- data << OutputItemData;
- }
- data.FlushBits();
-}
-
-void CraftingOrderData::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- Mask changesMask = _changesMask;
- if (ignoreChangesMask)
- changesMask.SetAll();
-
- data.WriteBits(changesMask.GetBlock(0), 24);
-
- if (changesMask[0])
- {
- if (changesMask[1])
- {
- if (!ignoreChangesMask)
- Reagents.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(Reagents.size(), data);
- }
- }
- data.FlushBits();
- if (changesMask[0])
- {
- if (changesMask[1])
- {
- for (uint32 i = 0; i < Reagents.size(); ++i)
- {
- if (Reagents.HasChanged(i) || ignoreChangesMask)
- {
- Reagents[i].WriteUpdate(data, ignoreChangesMask, owner, receiver);
- }
- }
- }
- if (changesMask[2])
- {
- data << int32(Field_0);
- }
- if (changesMask[3])
- {
- data << uint64(OrderID);
- }
- if (changesMask[4])
- {
- data << int32(SkillLineAbilityID);
- }
- }
- if (changesMask[5])
- {
- if (changesMask[6])
- {
- data << uint8(OrderState);
- }
- if (changesMask[7])
- {
- data << uint8(OrderType);
- }
- if (changesMask[8])
- {
- data << uint8(MinQuality);
- }
- if (changesMask[9])
- {
- data << int64(ExpirationTime);
- }
- }
- if (changesMask[10])
- {
- if (changesMask[11])
- {
- data << int64(ClaimEndTime);
- }
- if (changesMask[12])
- {
- data << int64(TipAmount);
- }
- if (changesMask[13])
- {
- data << int64(ConsortiumCut);
- }
- if (changesMask[14])
- {
- data << uint32(Flags);
- }
- }
- if (changesMask[15])
- {
- if (changesMask[16])
- {
- data << CustomerGUID;
- }
- if (changesMask[17])
- {
- data << CustomerAccountGUID;
- }
- if (changesMask[18])
- {
- data << CrafterGUID;
- }
- if (changesMask[19])
- {
- data << PersonalCrafterGUID;
- }
- }
- if (changesMask[20])
- {
- if (changesMask[21])
- {
- data.WriteBits(CustomerNotes->size(), 10);
- data.WriteString(CustomerNotes);
- }
- data.WriteBits(OutputItem.has_value(), 1);
- data.WriteBits(OutputItemData.has_value(), 1);
- data.FlushBits();
- if (changesMask[22])
- {
- if (OutputItem.has_value())
- {
- OutputItem->WriteUpdate(data, ignoreChangesMask, owner, receiver);
- }
- }
- if (changesMask[23])
- {
- if (OutputItemData.has_value())
- {
- data << OutputItemData;
- }
- }
- }
- data.FlushBits();
-}
-
-void CraftingOrderData::ClearChangesMask()
-{
- Base::ClearChangesMask(Reagents);
- Base::ClearChangesMask(Field_0);
- Base::ClearChangesMask(OrderID);
- Base::ClearChangesMask(SkillLineAbilityID);
- Base::ClearChangesMask(OrderState);
- Base::ClearChangesMask(OrderType);
- Base::ClearChangesMask(MinQuality);
- Base::ClearChangesMask(ExpirationTime);
- Base::ClearChangesMask(ClaimEndTime);
- Base::ClearChangesMask(TipAmount);
- Base::ClearChangesMask(ConsortiumCut);
- Base::ClearChangesMask(Flags);
- Base::ClearChangesMask(CustomerGUID);
- Base::ClearChangesMask(CustomerAccountGUID);
- Base::ClearChangesMask(CrafterGUID);
- Base::ClearChangesMask(PersonalCrafterGUID);
- Base::ClearChangesMask(CustomerNotes);
- Base::ClearChangesMask(OutputItem);
- Base::ClearChangesMask(OutputItemData);
- _changesMask.ResetAll();
-}
-
-void CraftingOrder::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- Data->WriteCreate(data, owner, receiver);
- data.WriteBits(RecraftItemInfo.has_value(), 1);
- data.WriteBits(Enchantments.size(), 4);
- data.WriteBits(Gems.size(), 2);
- data.FlushBits();
- if (RecraftItemInfo.has_value())
- {
- data << RecraftItemInfo;
- }
- for (uint32 i = 0; i < Enchantments.size(); ++i)
- {
- data << Enchantments[i];
- }
- for (uint32 i = 0; i < Gems.size(); ++i)
- {
- data << Gems[i];
- }
- data.FlushBits();
-}
-
-void CraftingOrder::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- Mask changesMask = _changesMask;
- if (ignoreChangesMask)
- changesMask.SetAll();
-
- data.WriteBits(changesMask.GetBlock(0), 4);
-
- if (changesMask[0])
- {
- if (!ignoreChangesMask)
- Enchantments.WriteUpdateMask(data, 4);
- else
- WriteCompleteDynamicFieldUpdateMask(Enchantments.size(), data, 4);
- }
- if (changesMask[1])
- {
- if (!ignoreChangesMask)
- Gems.WriteUpdateMask(data, 2);
- else
- WriteCompleteDynamicFieldUpdateMask(Gems.size(), data, 2);
- }
- data.FlushBits();
- if (changesMask[0])
- {
- for (uint32 i = 0; i < Enchantments.size(); ++i)
- {
- if (Enchantments.HasChanged(i) || ignoreChangesMask)
- {
- data << Enchantments[i];
- }
- }
- }
- if (changesMask[1])
- {
- for (uint32 i = 0; i < Gems.size(); ++i)
- {
- if (Gems.HasChanged(i) || ignoreChangesMask)
- {
- data << Gems[i];
- }
- }
- }
- if (changesMask[2])
- {
- Data->WriteUpdate(data, ignoreChangesMask, owner, receiver);
- }
- data.WriteBits(RecraftItemInfo.has_value(), 1);
- data.FlushBits();
- if (changesMask[3])
- {
- if (RecraftItemInfo.has_value())
- {
- data << RecraftItemInfo;
- }
- }
- data.FlushBits();
-}
-
-void CraftingOrder::ClearChangesMask()
-{
- Base::ClearChangesMask(Enchantments);
- Base::ClearChangesMask(Gems);
- Base::ClearChangesMask(Data);
- Base::ClearChangesMask(RecraftItemInfo);
- _changesMask.ResetAll();
-}
-
-void PersonalCraftingOrderCount::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- data << int32(ProfessionID);
- data << uint32(Count);
-}
-
-void PersonalCraftingOrderCount::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- Mask changesMask = _changesMask;
- if (ignoreChangesMask)
- changesMask.SetAll();
-
- data.WriteBits(changesMask.GetBlock(0), 2);
-
- data.FlushBits();
- if (changesMask[0])
- {
- data << int32(ProfessionID);
- }
- if (changesMask[1])
- {
- data << uint32(Count);
- }
-}
-
-void PersonalCraftingOrderCount::ClearChangesMask()
-{
- Base::ClearChangesMask(ProfessionID);
- Base::ClearChangesMask(Count);
- _changesMask.ResetAll();
-}
-
void CategoryCooldownMod::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
{
data << int32(SpellCategoryID);
@@ -4008,47 +2851,6 @@ void StableInfo::ClearChangesMask()
_changesMask.ResetAll();
}
-void CollectableSourceTrackedData::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
-{
- data << int32(TargetType);
- data << int32(TargetID);
- data << int32(CollectableSourceInfoID);
-}
-
-void CollectableSourceTrackedData::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
-{
- Mask changesMask = _changesMask;
- if (ignoreChangesMask)
- changesMask.SetAll();
-
- data.WriteBits(changesMask.GetBlock(0), 4);
-
- data.FlushBits();
- if (changesMask[0])
- {
- if (changesMask[1])
- {
- data << int32(TargetType);
- }
- if (changesMask[2])
- {
- data << int32(TargetID);
- }
- if (changesMask[3])
- {
- data << int32(CollectableSourceInfoID);
- }
- }
-}
-
-void CollectableSourceTrackedData::ClearChangesMask()
-{
- Base::ClearChangesMask(TargetType);
- Base::ClearChangesMask(TargetID);
- Base::ClearChangesMask(CollectableSourceInfoID);
- _changesMask.ResetAll();
-}
-
void Research::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
{
data << int16(ResearchProjectID);
@@ -4066,7 +2868,7 @@ bool Research::operator==(Research const& right) const
void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const
{
- for (uint32 i = 0; i < 227; ++i)
+ for (uint32 i = 0; i < 141; ++i)
{
data << InvSlots[i];
}
@@ -4081,6 +2883,10 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << int32(CharacterPoints);
data << int32(MaxTalentTiers);
data << uint32(TrackCreatureMask);
+ for (uint32 i = 0; i < 2; ++i)
+ {
+ data << uint32(TrackResourceMask[i]);
+ }
data << float(MainhandExpertise);
data << float(OffhandExpertise);
data << float(RangedExpertise);
@@ -4093,7 +2899,13 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << float(CritPercentage);
data << float(RangedCritPercentage);
data << float(OffhandCritPercentage);
- data << float(SpellCritPercentage);
+ for (uint32 i = 0; i < 7; ++i)
+ {
+ data << float(SpellCritPercentage[i]);
+ data << int32(ModDamageDonePos[i]);
+ data << int32(ModDamageDoneNeg[i]);
+ data << float(ModDamageDonePercent[i]);
+ }
data << int32(ShieldBlock);
data << float(ShieldBlockCritPercentage);
data << float(Mastery);
@@ -4112,15 +2924,9 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
RestInfo[i].WriteCreate(data, owner, receiver);
}
- for (uint32 i = 0; i < 7; ++i)
- {
- data << int32(ModDamageDonePos[i]);
- data << int32(ModDamageDoneNeg[i]);
- data << float(ModDamageDonePercent[i]);
- data << float(ModHealingDonePercent[i]);
- }
data << int32(ModHealingDonePos);
data << float(ModHealingPercent);
+ data << float(ModHealingDonePercent);
data << float(ModPeriodicHealingDonePercent);
for (uint32 i = 0; i < 3; ++i)
{
@@ -4138,6 +2944,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << uint8(MultiActionBars);
data << uint8(LifetimeMaxRank);
data << uint8(NumRespecs);
+ data << int32(AmmoID);
data << uint32(PvpMedals);
for (uint32 i = 0; i < 12; ++i)
{
@@ -4145,14 +2952,25 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << int64(BuybackTimestamp[i]);
}
data << uint16(TodayHonorableKills);
+ data << uint16(TodayDishonorableKills);
data << uint16(YesterdayHonorableKills);
+ data << uint16(YesterdayDishonorableKills);
+ data << uint16(LastWeekHonorableKills);
+ data << uint16(LastWeekDishonorableKills);
+ data << uint16(ThisWeekHonorableKills);
+ data << uint16(ThisWeekDishonorableKills);
+ data << uint32(ThisWeekContribution);
data << uint32(LifetimeHonorableKills);
+ data << uint32(LifetimeDishonorableKills);
+ data << uint32(Field_F24);
+ data << uint32(YesterdayContribution);
+ data << uint32(LastWeekContribution);
+ data << uint32(LastWeekRank);
data << int32(WatchedFactionIndex);
for (uint32 i = 0; i < 32; ++i)
{
data << int32(CombatRatings[i]);
}
- data << uint32(PvpInfo.size());
data << int32(MaxLevel);
data << int32(ScalingPlayerLevelDelta);
data << int32(MaxCreatureScalingLevel);
@@ -4169,15 +2987,14 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << float(UiSpellHitModifier);
data << int32(HomeRealmTimeOffset);
data << float(ModPetHaste);
- data << int8(JailersTowerLevelMax);
- data << int8(JailersTowerLevel);
data << uint8(LocalRegenFlags);
data << uint8(AuraVision);
data << uint8(NumBackpackSlots);
data << int32(OverrideSpellsID);
+ data << int32(LfgBonusFactionID);
data << uint16(LootSpecID);
data << uint32(OverrideZonePVPType);
- for (uint32 i = 0; i < 5; ++i)
+ for (uint32 i = 0; i < 4; ++i)
{
data << uint32(BagSlotFlags[i]);
}
@@ -4191,8 +3008,11 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
}
data << int32(Honor);
data << int32(HonorNextLevel);
+ data << int32(Field_F74);
+ data << int32(PvpTierMaxFromWins);
+ data << int32(PvpLastWeeksTierMaxFromWins);
+ data << uint8(PvpRankProgress);
data << int32(PerksProgramCurrency);
- data << uint8(NumBankSlots);
for (uint32 i = 0; i < 1; ++i)
{
data << uint32(ResearchSites[i].size());
@@ -4213,46 +3033,30 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
}
data << uint32(DailyQuestsCompleted.size());
data << uint32(AvailableQuestLineXQuestIDs.size());
+ data << uint32(Field_1000.size());
data << uint32(Heirlooms.size());
data << uint32(HeirloomFlags.size());
data << uint32(Toys.size());
- data << uint32(ToyFlags.size());
data << uint32(Transmog.size());
data << uint32(ConditionalTransmog.size());
data << uint32(SelfResSpells.size());
- data << uint32(RuneforgePowers.size());
- data << uint32(TransmogIllusions.size());
data << uint32(CharacterRestrictions.size());
data << uint32(SpellPctModByLabel.size());
data << uint32(SpellFlatModByLabel.size());
- data << uint32(MawPowers.size());
- data << uint32(MultiFloorExploration.size());
- data << uint32(RecipeProgression.size());
- data << uint32(ReplayedQuests.size());
data << uint32(TaskQuests.size());
- data << uint32(DisabledSpells.size());
- data << int32(UiChromieTimeExpansionID);
data << int32(TransportServerTime);
- data << uint32(WeeklyRewardsPeriodSinceOrigin);
- data << int16(DEBUGSoulbindConduitRank);
data << uint32(TraitConfigs.size());
data << uint32(ActiveCombatTraitConfigID);
- data << uint32(CraftingOrders.size());
- data << uint32(PersonalCraftingOrderCounts.size());
+ for (uint32 i = 0; i < 6; ++i)
+ {
+ data << uint32(GlyphSlots[i]);
+ data << uint32(Glyphs[i]);
+ }
+ data << uint8(GlyphsEnabled);
+ data << uint8(LfgRoles);
data << uint32(CategoryCooldownMods.size());
data << uint32(WeeklySpellUses.size());
- for (uint32 i = 0; i < 17; ++i)
- {
- data << float(ItemUpgradeHighWatermark[i]);
- }
- data << int32(ItemUpgradeHighOnehandWeaponItemID);
- data << int32(ItemUpgradeHighFingerItemID);
- data << float(ItemUpgradeHighFingerWatermark);
- data << int32(ItemUpgradeHighTrinketItemID);
- data << float(ItemUpgradeHighTrinketWatermark);
- data << uint64(LootHistoryInstanceID);
- data << uint32(TrackedCollectableSources.size());
- data << uint8(RequiredMountCapabilityFlags);
+ data << uint8(NumStableSlots);
for (uint32 i = 0; i < KnownTitles.size(); ++i)
{
data << uint64(KnownTitles[i]);
@@ -4265,6 +3069,10 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
data << int32(AvailableQuestLineXQuestIDs[i]);
}
+ for (uint32 i = 0; i < Field_1000.size(); ++i)
+ {
+ data << int32(Field_1000[i]);
+ }
for (uint32 i = 0; i < Heirlooms.size(); ++i)
{
data << int32(Heirlooms[i]);
@@ -4277,10 +3085,6 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
data << int32(Toys[i]);
}
- for (uint32 i = 0; i < ToyFlags.size(); ++i)
- {
- data << uint32(ToyFlags[i]);
- }
for (uint32 i = 0; i < Transmog.size(); ++i)
{
data << uint32(Transmog[i]);
@@ -4293,14 +3097,6 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
data << int32(SelfResSpells[i]);
}
- for (uint32 i = 0; i < RuneforgePowers.size(); ++i)
- {
- data << uint32(RuneforgePowers[i]);
- }
- for (uint32 i = 0; i < TransmogIllusions.size(); ++i)
- {
- data << uint32(TransmogIllusions[i]);
- }
for (uint32 i = 0; i < SpellPctModByLabel.size(); ++i)
{
SpellPctModByLabel[i].WriteCreate(data, owner, receiver);
@@ -4309,34 +3105,10 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
SpellFlatModByLabel[i].WriteCreate(data, owner, receiver);
}
- for (uint32 i = 0; i < MawPowers.size(); ++i)
- {
- MawPowers[i].WriteCreate(data, owner, receiver);
- }
- for (uint32 i = 0; i < MultiFloorExploration.size(); ++i)
- {
- MultiFloorExploration[i].WriteCreate(data, owner, receiver);
- }
- for (uint32 i = 0; i < RecipeProgression.size(); ++i)
- {
- RecipeProgression[i].WriteCreate(data, owner, receiver);
- }
- for (uint32 i = 0; i < ReplayedQuests.size(); ++i)
- {
- ReplayedQuests[i].WriteCreate(data, owner, receiver);
- }
for (uint32 i = 0; i < TaskQuests.size(); ++i)
{
TaskQuests[i].WriteCreate(data, owner, receiver);
}
- for (uint32 i = 0; i < DisabledSpells.size(); ++i)
- {
- data << int32(DisabledSpells[i]);
- }
- for (uint32 i = 0; i < PersonalCraftingOrderCounts.size(); ++i)
- {
- PersonalCraftingOrderCounts[i].WriteCreate(data, owner, receiver);
- }
for (uint32 i = 0; i < CategoryCooldownMods.size(); ++i)
{
CategoryCooldownMods[i].WriteCreate(data, owner, receiver);
@@ -4345,32 +3117,17 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
WeeklySpellUses[i].WriteCreate(data, owner, receiver);
}
- for (uint32 i = 0; i < TrackedCollectableSources.size(); ++i)
+ for (uint32 i = 0; i < 7; ++i)
{
- TrackedCollectableSources[i].WriteCreate(data, owner, receiver);
+ PvpInfo[i].WriteCreate(data, owner, receiver);
}
data.FlushBits();
- data.WriteBit(BackpackAutoSortDisabled);
- data.WriteBit(BackpackSellJunkDisabled);
- data.WriteBit(BankAutoSortDisabled);
data.WriteBit(SortBagsRightToLeft);
data.WriteBit(InsertItemsLeftToRight);
- data.WriteBit(HasPerksProgramPendingReward);
- data.WriteBits(QuestSession.has_value(), 1);
data.WriteBits(PetStable.has_value(), 1);
data.FlushBits();
ResearchHistory->WriteCreate(data, owner, receiver);
- if (QuestSession.has_value())
- {
- QuestSession->WriteCreate(data, owner, receiver);
- }
data << FrozenPerksVendorItem;
- Field_1410->WriteCreate(data, owner, receiver);
- data << DungeonScore;
- for (uint32 i = 0; i < PvpInfo.size(); ++i)
- {
- PvpInfo[i].WriteCreate(data, owner, receiver);
- }
for (uint32 i = 0; i < CharacterRestrictions.size(); ++i)
{
CharacterRestrictions[i].WriteCreate(data, owner, receiver);
@@ -4379,10 +3136,6 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
TraitConfigs[i].WriteCreate(data, owner, receiver);
}
- for (uint32 i = 0; i < CraftingOrders.size(); ++i)
- {
- CraftingOrders[i].WriteCreate(data, owner, receiver);
- }
if (PetStable.has_value())
{
PetStable->WriteCreate(data, owner, receiver);
@@ -4399,8 +3152,8 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
{
for (uint32 i = 0; i < 1; ++i)
data << uint32(changesMask.GetBlocksMask(i));
- data.WriteBits(changesMask.GetBlocksMask(1), 19);
- for (uint32 i = 0; i < 51; ++i)
+ data.WriteBits(changesMask.GetBlocksMask(1), 16);
+ for (uint32 i = 0; i < 48; ++i)
if (changesMask.GetBlock(i))
data.WriteBits(changesMask.GetBlock(i), 32);
@@ -4408,48 +3161,25 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
{
if (changesMask[1])
{
- data.WriteBit(BackpackAutoSortDisabled);
- }
- if (changesMask[2])
- {
- data.WriteBit(BackpackSellJunkDisabled);
- }
- if (changesMask[3])
- {
- data.WriteBit(BankAutoSortDisabled);
- }
- if (changesMask[4])
- {
data.WriteBit(SortBagsRightToLeft);
}
- if (changesMask[5])
+ if (changesMask[2])
{
data.WriteBit(InsertItemsLeftToRight);
}
- if (changesMask[6])
- {
- data.WriteBit(HasPerksProgramPendingReward);
- }
- if (changesMask[7])
+ if (changesMask[3])
{
if (!ignoreNestedChangesMask)
KnownTitles.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(KnownTitles.size(), data);
}
- if (changesMask[8])
- {
- if (!ignoreNestedChangesMask)
- PvpInfo.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(PvpInfo.size(), data);
- }
}
- if (changesMask[36])
+ if (changesMask[20])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[37 + i])
+ if (changesMask[21 + i])
{
if (!ignoreNestedChangesMask)
ResearchSites[i].WriteUpdateMask(data);
@@ -4458,11 +3188,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[38])
+ if (changesMask[22])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[39 + i])
+ if (changesMask[23 + i])
{
if (!ignoreNestedChangesMask)
ResearchSiteProgress[i].WriteUpdateMask(data);
@@ -4471,11 +3201,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[40])
+ if (changesMask[24])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[41 + i])
+ if (changesMask[25 + i])
{
if (!ignoreNestedChangesMask)
Research[i].WriteUpdateMask(data);
@@ -4484,11 +3214,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[36])
+ if (changesMask[20])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[37 + i])
+ if (changesMask[21 + i])
{
for (uint32 j = 0; j < ResearchSites[i].size(); ++j)
{
@@ -4500,11 +3230,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[38])
+ if (changesMask[22])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[39 + i])
+ if (changesMask[23 + i])
{
for (uint32 j = 0; j < ResearchSiteProgress[i].size(); ++j)
{
@@ -4516,11 +3246,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[40])
+ if (changesMask[24])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[41 + i])
+ if (changesMask[25 + i])
{
for (uint32 j = 0; j < Research[i].size(); ++j)
{
@@ -4535,196 +3265,123 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
data.FlushBits();
if (changesMask[0])
{
- if (changesMask[9])
+ if (changesMask[4])
{
if (!ignoreNestedChangesMask)
DailyQuestsCompleted.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(DailyQuestsCompleted.size(), data);
}
- if (changesMask[10])
+ if (changesMask[5])
{
if (!ignoreNestedChangesMask)
AvailableQuestLineXQuestIDs.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(AvailableQuestLineXQuestIDs.size(), data);
}
- if (changesMask[11])
+ if (changesMask[6])
+ {
+ if (!ignoreNestedChangesMask)
+ Field_1000.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(Field_1000.size(), data);
+ }
+ if (changesMask[7])
{
if (!ignoreNestedChangesMask)
Heirlooms.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(Heirlooms.size(), data);
}
- if (changesMask[12])
+ if (changesMask[8])
{
if (!ignoreNestedChangesMask)
HeirloomFlags.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(HeirloomFlags.size(), data);
}
- if (changesMask[13])
+ if (changesMask[9])
{
if (!ignoreNestedChangesMask)
Toys.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(Toys.size(), data);
}
- if (changesMask[14])
- {
- if (!ignoreNestedChangesMask)
- ToyFlags.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(ToyFlags.size(), data);
- }
- if (changesMask[15])
+ if (changesMask[10])
{
if (!ignoreNestedChangesMask)
Transmog.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(Transmog.size(), data);
}
- if (changesMask[16])
+ if (changesMask[11])
{
if (!ignoreNestedChangesMask)
ConditionalTransmog.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(ConditionalTransmog.size(), data);
}
- if (changesMask[17])
+ if (changesMask[12])
{
if (!ignoreNestedChangesMask)
SelfResSpells.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(SelfResSpells.size(), data);
}
- if (changesMask[18])
- {
- if (!ignoreNestedChangesMask)
- RuneforgePowers.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(RuneforgePowers.size(), data);
- }
- if (changesMask[19])
- {
- if (!ignoreNestedChangesMask)
- TransmogIllusions.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(TransmogIllusions.size(), data);
- }
- if (changesMask[20])
+ if (changesMask[13])
{
if (!ignoreNestedChangesMask)
CharacterRestrictions.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(CharacterRestrictions.size(), data);
}
- if (changesMask[21])
+ if (changesMask[14])
{
if (!ignoreNestedChangesMask)
SpellPctModByLabel.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(SpellPctModByLabel.size(), data);
}
- if (changesMask[22])
+ if (changesMask[15])
{
if (!ignoreNestedChangesMask)
SpellFlatModByLabel.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(SpellFlatModByLabel.size(), data);
}
- if (changesMask[23])
- {
- if (!ignoreNestedChangesMask)
- MawPowers.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(MawPowers.size(), data);
- }
- if (changesMask[24])
- {
- if (!ignoreNestedChangesMask)
- MultiFloorExploration.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(MultiFloorExploration.size(), data);
- }
- if (changesMask[25])
- {
- if (!ignoreNestedChangesMask)
- RecipeProgression.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(RecipeProgression.size(), data);
- }
- if (changesMask[26])
- {
- if (!ignoreNestedChangesMask)
- ReplayedQuests.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(ReplayedQuests.size(), data);
- }
- if (changesMask[27])
+ if (changesMask[16])
{
if (!ignoreNestedChangesMask)
TaskQuests.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(TaskQuests.size(), data);
}
- if (changesMask[28])
- {
- if (!ignoreNestedChangesMask)
- DisabledSpells.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(DisabledSpells.size(), data);
- }
- if (changesMask[29])
+ if (changesMask[17])
{
if (!ignoreNestedChangesMask)
TraitConfigs.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(TraitConfigs.size(), data);
}
- if (changesMask[30])
- {
- if (!ignoreNestedChangesMask)
- CraftingOrders.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(CraftingOrders.size(), data);
- }
- if (changesMask[31])
- {
- if (!ignoreNestedChangesMask)
- PersonalCraftingOrderCounts.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(PersonalCraftingOrderCounts.size(), data);
- }
- }
- if (changesMask[32])
- {
- if (changesMask[33])
+ if (changesMask[18])
{
if (!ignoreNestedChangesMask)
CategoryCooldownMods.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(CategoryCooldownMods.size(), data);
}
- if (changesMask[34])
+ if (changesMask[19])
{
if (!ignoreNestedChangesMask)
WeeklySpellUses.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(WeeklySpellUses.size(), data);
}
- if (changesMask[35])
- {
- if (!ignoreNestedChangesMask)
- TrackedCollectableSources.WriteUpdateMask(data);
- else
- WriteCompleteDynamicFieldUpdateMask(TrackedCollectableSources.size(), data);
- }
}
data.FlushBits();
if (changesMask[0])
{
- if (changesMask[7])
+ if (changesMask[3])
{
for (uint32 i = 0; i < KnownTitles.size(); ++i)
{
@@ -4734,7 +3391,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[9])
+ if (changesMask[4])
{
for (uint32 i = 0; i < DailyQuestsCompleted.size(); ++i)
{
@@ -4744,7 +3401,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[10])
+ if (changesMask[5])
{
for (uint32 i = 0; i < AvailableQuestLineXQuestIDs.size(); ++i)
{
@@ -4754,7 +3411,17 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[11])
+ if (changesMask[6])
+ {
+ for (uint32 i = 0; i < Field_1000.size(); ++i)
+ {
+ if (Field_1000.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ data << int32(Field_1000[i]);
+ }
+ }
+ }
+ if (changesMask[7])
{
for (uint32 i = 0; i < Heirlooms.size(); ++i)
{
@@ -4764,7 +3431,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[12])
+ if (changesMask[8])
{
for (uint32 i = 0; i < HeirloomFlags.size(); ++i)
{
@@ -4774,7 +3441,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[13])
+ if (changesMask[9])
{
for (uint32 i = 0; i < Toys.size(); ++i)
{
@@ -4784,17 +3451,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[14])
- {
- for (uint32 i = 0; i < ToyFlags.size(); ++i)
- {
- if (ToyFlags.HasChanged(i) || ignoreNestedChangesMask)
- {
- data << uint32(ToyFlags[i]);
- }
- }
- }
- if (changesMask[15])
+ if (changesMask[10])
{
for (uint32 i = 0; i < Transmog.size(); ++i)
{
@@ -4804,7 +3461,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[16])
+ if (changesMask[11])
{
for (uint32 i = 0; i < ConditionalTransmog.size(); ++i)
{
@@ -4814,7 +3471,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[17])
+ if (changesMask[12])
{
for (uint32 i = 0; i < SelfResSpells.size(); ++i)
{
@@ -4824,27 +3481,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[18])
- {
- for (uint32 i = 0; i < RuneforgePowers.size(); ++i)
- {
- if (RuneforgePowers.HasChanged(i) || ignoreNestedChangesMask)
- {
- data << uint32(RuneforgePowers[i]);
- }
- }
- }
- if (changesMask[19])
- {
- for (uint32 i = 0; i < TransmogIllusions.size(); ++i)
- {
- if (TransmogIllusions.HasChanged(i) || ignoreNestedChangesMask)
- {
- data << uint32(TransmogIllusions[i]);
- }
- }
- }
- if (changesMask[21])
+ if (changesMask[14])
{
for (uint32 i = 0; i < SpellPctModByLabel.size(); ++i)
{
@@ -4854,7 +3491,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[22])
+ if (changesMask[15])
{
for (uint32 i = 0; i < SpellFlatModByLabel.size(); ++i)
{
@@ -4864,527 +3501,447 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[23])
+ if (changesMask[16])
{
- for (uint32 i = 0; i < MawPowers.size(); ++i)
+ for (uint32 i = 0; i < TaskQuests.size(); ++i)
{
- if (MawPowers.HasChanged(i) || ignoreNestedChangesMask)
+ if (TaskQuests.HasChanged(i) || ignoreNestedChangesMask)
{
- MawPowers[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ TaskQuests[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[24])
+ if (changesMask[18])
{
- for (uint32 i = 0; i < MultiFloorExploration.size(); ++i)
+ for (uint32 i = 0; i < CategoryCooldownMods.size(); ++i)
{
- if (MultiFloorExploration.HasChanged(i) || ignoreNestedChangesMask)
+ if (CategoryCooldownMods.HasChanged(i) || ignoreNestedChangesMask)
{
- MultiFloorExploration[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ CategoryCooldownMods[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[25])
+ if (changesMask[19])
{
- for (uint32 i = 0; i < RecipeProgression.size(); ++i)
+ for (uint32 i = 0; i < WeeklySpellUses.size(); ++i)
{
- if (RecipeProgression.HasChanged(i) || ignoreNestedChangesMask)
+ if (WeeklySpellUses.HasChanged(i) || ignoreNestedChangesMask)
{
- RecipeProgression[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ WeeklySpellUses[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[26])
+ if (changesMask[13])
{
- for (uint32 i = 0; i < ReplayedQuests.size(); ++i)
+ for (uint32 i = 0; i < CharacterRestrictions.size(); ++i)
{
- if (ReplayedQuests.HasChanged(i) || ignoreNestedChangesMask)
+ if (CharacterRestrictions.HasChanged(i) || ignoreNestedChangesMask)
{
- ReplayedQuests[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ CharacterRestrictions[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[27])
+ if (changesMask[17])
{
- for (uint32 i = 0; i < TaskQuests.size(); ++i)
+ for (uint32 i = 0; i < TraitConfigs.size(); ++i)
{
- if (TaskQuests.HasChanged(i) || ignoreNestedChangesMask)
+ if (TraitConfigs.HasChanged(i) || ignoreNestedChangesMask)
{
- TaskQuests[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ TraitConfigs[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
+ if (changesMask[26])
+ {
+ data << FarsightObject;
+ }
+ if (changesMask[27])
+ {
+ data << SummonedBattlePetGUID;
+ }
if (changesMask[28])
{
- for (uint32 i = 0; i < DisabledSpells.size(); ++i)
- {
- if (DisabledSpells.HasChanged(i) || ignoreNestedChangesMask)
- {
- data << int32(DisabledSpells[i]);
- }
- }
+ data << uint64(Coinage);
+ }
+ if (changesMask[29])
+ {
+ data << int32(XP);
+ }
+ if (changesMask[30])
+ {
+ data << int32(NextLevelXP);
}
if (changesMask[31])
{
- for (uint32 i = 0; i < PersonalCraftingOrderCounts.size(); ++i)
- {
- if (PersonalCraftingOrderCounts.HasChanged(i) || ignoreNestedChangesMask)
- {
- PersonalCraftingOrderCounts[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
+ data << int32(TrialXP);
+ }
+ if (changesMask[32])
+ {
+ Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- }
- if (changesMask[32])
- {
if (changesMask[33])
{
- for (uint32 i = 0; i < CategoryCooldownMods.size(); ++i)
- {
- if (CategoryCooldownMods.HasChanged(i) || ignoreNestedChangesMask)
- {
- CategoryCooldownMods[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
+ data << int32(CharacterPoints);
}
if (changesMask[34])
{
- for (uint32 i = 0; i < WeeklySpellUses.size(); ++i)
- {
- if (WeeklySpellUses.HasChanged(i) || ignoreNestedChangesMask)
- {
- WeeklySpellUses[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
+ data << int32(MaxTalentTiers);
}
if (changesMask[35])
{
- for (uint32 i = 0; i < TrackedCollectableSources.size(); ++i)
- {
- if (TrackedCollectableSources.HasChanged(i) || ignoreNestedChangesMask)
- {
- TrackedCollectableSources[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
+ data << uint32(TrackCreatureMask);
}
- }
- if (changesMask[0])
- {
- if (changesMask[8])
+ if (changesMask[36])
{
- for (uint32 i = 0; i < PvpInfo.size(); ++i)
- {
- if (PvpInfo.HasChanged(i) || ignoreNestedChangesMask)
- {
- PvpInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
+ data << float(MainhandExpertise);
}
- if (changesMask[20])
+ if (changesMask[37])
{
- for (uint32 i = 0; i < CharacterRestrictions.size(); ++i)
- {
- if (CharacterRestrictions.HasChanged(i) || ignoreNestedChangesMask)
- {
- CharacterRestrictions[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
+ data << float(OffhandExpertise);
}
- if (changesMask[29])
+ }
+ if (changesMask[38])
+ {
+ if (changesMask[39])
{
- for (uint32 i = 0; i < TraitConfigs.size(); ++i)
- {
- if (TraitConfigs.HasChanged(i) || ignoreNestedChangesMask)
- {
- TraitConfigs[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
+ data << float(RangedExpertise);
}
- if (changesMask[30])
+ if (changesMask[40])
{
- for (uint32 i = 0; i < CraftingOrders.size(); ++i)
- {
- if (CraftingOrders.HasChanged(i) || ignoreNestedChangesMask)
- {
- CraftingOrders[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
+ data << float(CombatRatingExpertise);
+ }
+ if (changesMask[41])
+ {
+ data << float(BlockPercentage);
}
- }
- if (changesMask[32])
- {
if (changesMask[42])
{
- data << FarsightObject;
+ data << float(DodgePercentage);
}
if (changesMask[43])
{
- data << SummonedBattlePetGUID;
+ data << float(DodgePercentageFromAttribute);
}
if (changesMask[44])
{
- data << uint64(Coinage);
+ data << float(ParryPercentage);
}
if (changesMask[45])
{
- data << int32(XP);
+ data << float(ParryPercentageFromAttribute);
}
if (changesMask[46])
{
- data << int32(NextLevelXP);
+ data << float(CritPercentage);
}
if (changesMask[47])
{
- data << int32(TrialXP);
+ data << float(RangedCritPercentage);
}
if (changesMask[48])
{
- Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ data << float(OffhandCritPercentage);
}
if (changesMask[49])
{
- data << int32(CharacterPoints);
+ data << int32(ShieldBlock);
}
if (changesMask[50])
{
- data << int32(MaxTalentTiers);
+ data << float(ShieldBlockCritPercentage);
}
if (changesMask[51])
{
- data << uint32(TrackCreatureMask);
+ data << float(Mastery);
}
if (changesMask[52])
{
- data << float(MainhandExpertise);
+ data << float(Speed);
}
if (changesMask[53])
{
- data << float(OffhandExpertise);
+ data << float(Avoidance);
}
if (changesMask[54])
{
- data << float(RangedExpertise);
+ data << float(Sturdiness);
}
if (changesMask[55])
{
- data << float(CombatRatingExpertise);
+ data << int32(Versatility);
}
if (changesMask[56])
{
- data << float(BlockPercentage);
+ data << float(VersatilityBonus);
}
if (changesMask[57])
{
- data << float(DodgePercentage);
+ data << float(PvpPowerDamage);
}
if (changesMask[58])
{
- data << float(DodgePercentageFromAttribute);
+ data << float(PvpPowerHealing);
}
if (changesMask[59])
{
- data << float(ParryPercentage);
+ data << int32(ModHealingDonePos);
}
if (changesMask[60])
{
- data << float(ParryPercentageFromAttribute);
+ data << float(ModHealingPercent);
}
if (changesMask[61])
{
- data << float(CritPercentage);
+ data << float(ModHealingDonePercent);
}
if (changesMask[62])
{
- data << float(RangedCritPercentage);
+ data << float(ModPeriodicHealingDonePercent);
}
if (changesMask[63])
{
- data << float(OffhandCritPercentage);
+ data << float(ModSpellPowerPercent);
}
if (changesMask[64])
{
- data << float(SpellCritPercentage);
+ data << float(ModResiliencePercent);
}
if (changesMask[65])
{
- data << int32(ShieldBlock);
+ data << float(OverrideSpellPowerByAPPercent);
}
if (changesMask[66])
{
- data << float(ShieldBlockCritPercentage);
+ data << float(OverrideAPBySpellPowerPercent);
}
if (changesMask[67])
{
- data << float(Mastery);
+ data << int32(ModTargetResistance);
}
if (changesMask[68])
{
- data << float(Speed);
+ data << int32(ModTargetPhysicalResistance);
}
if (changesMask[69])
{
- data << float(Avoidance);
+ data << uint32(LocalFlags);
}
}
if (changesMask[70])
{
if (changesMask[71])
{
- data << float(Sturdiness);
+ data << uint8(GrantableLevels);
}
if (changesMask[72])
{
- data << int32(Versatility);
+ data << uint8(MultiActionBars);
}
if (changesMask[73])
{
- data << float(VersatilityBonus);
+ data << uint8(LifetimeMaxRank);
}
if (changesMask[74])
{
- data << float(PvpPowerDamage);
+ data << uint8(NumRespecs);
}
if (changesMask[75])
{
- data << float(PvpPowerHealing);
+ data << int32(AmmoID);
}
if (changesMask[76])
{
- data << int32(ModHealingDonePos);
+ data << uint32(PvpMedals);
}
if (changesMask[77])
{
- data << float(ModHealingPercent);
+ data << uint16(TodayHonorableKills);
}
if (changesMask[78])
{
- data << float(ModPeriodicHealingDonePercent);
+ data << uint16(TodayDishonorableKills);
}
if (changesMask[79])
{
- data << float(ModSpellPowerPercent);
+ data << uint16(YesterdayHonorableKills);
}
if (changesMask[80])
{
- data << float(ModResiliencePercent);
+ data << uint16(YesterdayDishonorableKills);
}
if (changesMask[81])
{
- data << float(OverrideSpellPowerByAPPercent);
+ data << uint16(LastWeekHonorableKills);
}
if (changesMask[82])
{
- data << float(OverrideAPBySpellPowerPercent);
+ data << uint16(LastWeekDishonorableKills);
}
if (changesMask[83])
{
- data << int32(ModTargetResistance);
+ data << uint16(ThisWeekHonorableKills);
}
if (changesMask[84])
{
- data << int32(ModTargetPhysicalResistance);
+ data << uint16(ThisWeekDishonorableKills);
}
if (changesMask[85])
{
- data << uint32(LocalFlags);
+ data << uint32(ThisWeekContribution);
}
if (changesMask[86])
{
- data << uint8(GrantableLevels);
+ data << uint32(LifetimeHonorableKills);
}
if (changesMask[87])
{
- data << uint8(MultiActionBars);
+ data << uint32(LifetimeDishonorableKills);
}
if (changesMask[88])
{
- data << uint8(LifetimeMaxRank);
+ data << uint32(Field_F24);
}
if (changesMask[89])
{
- data << uint8(NumRespecs);
+ data << uint32(YesterdayContribution);
}
if (changesMask[90])
{
- data << uint32(PvpMedals);
+ data << uint32(LastWeekContribution);
}
if (changesMask[91])
{
- data << uint16(TodayHonorableKills);
+ data << uint32(LastWeekRank);
}
if (changesMask[92])
{
- data << uint16(YesterdayHonorableKills);
+ data << int32(WatchedFactionIndex);
}
if (changesMask[93])
{
- data << uint32(LifetimeHonorableKills);
+ data << int32(MaxLevel);
}
if (changesMask[94])
{
- data << int32(WatchedFactionIndex);
+ data << int32(ScalingPlayerLevelDelta);
}
if (changesMask[95])
{
- data << int32(MaxLevel);
+ data << int32(MaxCreatureScalingLevel);
}
if (changesMask[96])
{
- data << int32(ScalingPlayerLevelDelta);
+ data << int32(PetSpellPower);
}
if (changesMask[97])
{
- data << int32(MaxCreatureScalingLevel);
+ data << float(UiHitModifier);
}
if (changesMask[98])
{
- data << int32(PetSpellPower);
+ data << float(UiSpellHitModifier);
}
if (changesMask[99])
{
- data << float(UiHitModifier);
+ data << int32(HomeRealmTimeOffset);
}
if (changesMask[100])
{
- data << float(UiSpellHitModifier);
+ data << float(ModPetHaste);
}
if (changesMask[101])
{
- data << int32(HomeRealmTimeOffset);
+ data << uint8(LocalRegenFlags);
}
}
if (changesMask[102])
{
if (changesMask[103])
{
- data << float(ModPetHaste);
+ data << uint8(AuraVision);
}
if (changesMask[104])
{
- data << int8(JailersTowerLevelMax);
+ data << uint8(NumBackpackSlots);
}
if (changesMask[105])
{
- data << int8(JailersTowerLevel);
+ data << int32(OverrideSpellsID);
}
if (changesMask[106])
{
- data << uint8(LocalRegenFlags);
+ data << int32(LfgBonusFactionID);
}
if (changesMask[107])
{
- data << uint8(AuraVision);
+ data << uint16(LootSpecID);
}
if (changesMask[108])
{
- data << uint8(NumBackpackSlots);
+ data << uint32(OverrideZonePVPType);
}
if (changesMask[109])
{
- data << int32(OverrideSpellsID);
+ data << int32(Honor);
}
if (changesMask[110])
{
- data << uint16(LootSpecID);
+ data << int32(HonorNextLevel);
}
if (changesMask[111])
{
- data << uint32(OverrideZonePVPType);
+ data << int32(Field_F74);
}
if (changesMask[112])
{
- data << int32(Honor);
+ data << int32(PvpTierMaxFromWins);
}
if (changesMask[113])
{
- data << int32(HonorNextLevel);
+ data << int32(PvpLastWeeksTierMaxFromWins);
}
if (changesMask[114])
{
- data << int32(PerksProgramCurrency);
+ data << uint8(PvpRankProgress);
}
if (changesMask[115])
{
- data << uint8(NumBankSlots);
- }
- if (changesMask[120])
- {
- data << int32(UiChromieTimeExpansionID);
+ data << int32(PerksProgramCurrency);
}
- if (changesMask[121])
+ if (changesMask[118])
{
data << int32(TransportServerTime);
}
- if (changesMask[122])
- {
- data << uint32(WeeklyRewardsPeriodSinceOrigin);
- }
- if (changesMask[123])
- {
- data << int16(DEBUGSoulbindConduitRank);
- }
- if (changesMask[125])
+ if (changesMask[119])
{
data << uint32(ActiveCombatTraitConfigID);
}
- if (changesMask[126])
- {
- data << int32(ItemUpgradeHighOnehandWeaponItemID);
- }
- if (changesMask[127])
- {
- data << int32(ItemUpgradeHighFingerItemID);
- }
- if (changesMask[128])
- {
- data << float(ItemUpgradeHighFingerWatermark);
- }
- if (changesMask[129])
- {
- data << int32(ItemUpgradeHighTrinketItemID);
- }
- if (changesMask[130])
+ if (changesMask[120])
{
- data << float(ItemUpgradeHighTrinketWatermark);
+ data << uint8(GlyphsEnabled);
}
- if (changesMask[131])
+ if (changesMask[121])
{
- data << uint64(LootHistoryInstanceID);
+ data << uint8(LfgRoles);
}
- if (changesMask[133])
+ if (changesMask[123])
{
- data << uint8(RequiredMountCapabilityFlags);
+ data << uint8(NumStableSlots);
}
- data.WriteBits(QuestSession.has_value(), 1);
- data.WriteBits(PetStable.has_value(), 1);
}
data.FlushBits();
if (changesMask[102])
{
+ data.WriteBits(PetStable.has_value(), 1);
if (changesMask[116])
{
ResearchHistory->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[118])
- {
- if (QuestSession.has_value())
- {
- QuestSession->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
if (changesMask[117])
{
data << FrozenPerksVendorItem;
}
- if (changesMask[119])
- {
- Field_1410->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- if (changesMask[124])
- {
- data << DungeonScore;
- }
- if (changesMask[132])
+ if (changesMask[122])
{
if (PetStable.has_value())
{
@@ -5392,153 +3949,177 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[134])
+ if (changesMask[124])
{
- for (uint32 i = 0; i < 227; ++i)
+ for (uint32 i = 0; i < 141; ++i)
{
- if (changesMask[135 + i])
+ if (changesMask[125 + i])
{
data << InvSlots[i];
}
}
}
- if (changesMask[362])
- {
- for (uint32 i = 0; i < 240; ++i)
- {
- if (changesMask[363 + i])
- {
- data << uint64(ExploredZones[i]);
- }
- }
- }
- if (changesMask[603])
+ if (changesMask[266])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[604 + i])
+ if (changesMask[267 + i])
{
- RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ data << uint32(TrackResourceMask[i]);
}
}
}
- if (changesMask[606])
+ if (changesMask[269])
{
for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[607 + i])
+ if (changesMask[270 + i])
+ {
+ data << float(SpellCritPercentage[i]);
+ }
+ if (changesMask[277 + i])
{
data << int32(ModDamageDonePos[i]);
}
- if (changesMask[614 + i])
+ if (changesMask[284 + i])
{
data << int32(ModDamageDoneNeg[i]);
}
- if (changesMask[621 + i])
+ if (changesMask[291 + i])
{
data << float(ModDamageDonePercent[i]);
}
- if (changesMask[628 + i])
+ }
+ }
+ if (changesMask[298])
+ {
+ for (uint32 i = 0; i < 240; ++i)
+ {
+ if (changesMask[299 + i])
{
- data << float(ModHealingDonePercent[i]);
+ data << uint64(ExploredZones[i]);
}
}
}
- if (changesMask[635])
+ if (changesMask[539])
+ {
+ for (uint32 i = 0; i < 2; ++i)
+ {
+ if (changesMask[540 + i])
+ {
+ RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+ }
+ if (changesMask[542])
{
for (uint32 i = 0; i < 3; ++i)
{
- if (changesMask[636 + i])
+ if (changesMask[543 + i])
{
data << float(WeaponDmgMultipliers[i]);
}
- if (changesMask[639 + i])
+ if (changesMask[546 + i])
{
data << float(WeaponAtkSpeedMultipliers[i]);
}
}
}
- if (changesMask[642])
+ if (changesMask[549])
{
for (uint32 i = 0; i < 12; ++i)
{
- if (changesMask[643 + i])
+ if (changesMask[550 + i])
{
data << uint32(BuybackPrice[i]);
}
- if (changesMask[655 + i])
+ if (changesMask[562 + i])
{
data << int64(BuybackTimestamp[i]);
}
}
}
- if (changesMask[667])
+ if (changesMask[574])
{
for (uint32 i = 0; i < 32; ++i)
{
- if (changesMask[668 + i])
+ if (changesMask[575 + i])
{
data << int32(CombatRatings[i]);
}
}
}
- if (changesMask[700])
+ if (changesMask[615])
{
for (uint32 i = 0; i < 4; ++i)
{
- if (changesMask[701 + i])
+ if (changesMask[616 + i])
{
data << uint32(NoReagentCostMask[i]);
}
}
}
- if (changesMask[705])
+ if (changesMask[620])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[706 + i])
+ if (changesMask[621 + i])
{
data << int32(ProfessionSkillLine[i]);
}
}
}
- if (changesMask[708])
+ if (changesMask[623])
{
- for (uint32 i = 0; i < 5; ++i)
+ for (uint32 i = 0; i < 4; ++i)
{
- if (changesMask[709 + i])
+ if (changesMask[624 + i])
{
data << uint32(BagSlotFlags[i]);
}
}
}
- if (changesMask[714])
+ if (changesMask[628])
{
for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[715 + i])
+ if (changesMask[629 + i])
{
data << uint32(BankBagSlotFlags[i]);
}
}
}
- if (changesMask[722])
+ if (changesMask[636])
{
for (uint32 i = 0; i < 875; ++i)
{
- if (changesMask[723 + i])
+ if (changesMask[637 + i])
{
data << uint64(QuestCompleted[i]);
}
}
}
- if (changesMask[1598])
+ if (changesMask[1512])
+ {
+ for (uint32 i = 0; i < 6; ++i)
+ {
+ if (changesMask[1513 + i])
+ {
+ data << uint32(GlyphSlots[i]);
+ }
+ if (changesMask[1519 + i])
+ {
+ data << uint32(Glyphs[i]);
+ }
+ }
+ }
+ if (changesMask[607])
{
- for (uint32 i = 0; i < 17; ++i)
+ for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[1599 + i])
+ if (changesMask[608 + i])
{
- data << float(ItemUpgradeHighWatermark[i]);
+ PvpInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
@@ -5547,43 +4128,28 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
void ActivePlayerData::ClearChangesMask()
{
- Base::ClearChangesMask(BackpackAutoSortDisabled);
- Base::ClearChangesMask(BackpackSellJunkDisabled);
- Base::ClearChangesMask(BankAutoSortDisabled);
Base::ClearChangesMask(SortBagsRightToLeft);
Base::ClearChangesMask(InsertItemsLeftToRight);
- Base::ClearChangesMask(HasPerksProgramPendingReward);
Base::ClearChangesMask(ResearchSites);
Base::ClearChangesMask(ResearchSiteProgress);
Base::ClearChangesMask(Research);
Base::ClearChangesMask(KnownTitles);
Base::ClearChangesMask(DailyQuestsCompleted);
Base::ClearChangesMask(AvailableQuestLineXQuestIDs);
+ Base::ClearChangesMask(Field_1000);
Base::ClearChangesMask(Heirlooms);
Base::ClearChangesMask(HeirloomFlags);
Base::ClearChangesMask(Toys);
- Base::ClearChangesMask(ToyFlags);
Base::ClearChangesMask(Transmog);
Base::ClearChangesMask(ConditionalTransmog);
Base::ClearChangesMask(SelfResSpells);
- Base::ClearChangesMask(RuneforgePowers);
- Base::ClearChangesMask(TransmogIllusions);
Base::ClearChangesMask(SpellPctModByLabel);
Base::ClearChangesMask(SpellFlatModByLabel);
- Base::ClearChangesMask(MawPowers);
- Base::ClearChangesMask(MultiFloorExploration);
- Base::ClearChangesMask(RecipeProgression);
- Base::ClearChangesMask(ReplayedQuests);
Base::ClearChangesMask(TaskQuests);
- Base::ClearChangesMask(DisabledSpells);
- Base::ClearChangesMask(PersonalCraftingOrderCounts);
Base::ClearChangesMask(CategoryCooldownMods);
Base::ClearChangesMask(WeeklySpellUses);
- Base::ClearChangesMask(TrackedCollectableSources);
- Base::ClearChangesMask(PvpInfo);
Base::ClearChangesMask(CharacterRestrictions);
Base::ClearChangesMask(TraitConfigs);
- Base::ClearChangesMask(CraftingOrders);
Base::ClearChangesMask(FarsightObject);
Base::ClearChangesMask(SummonedBattlePetGUID);
Base::ClearChangesMask(Coinage);
@@ -5606,7 +4172,6 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(CritPercentage);
Base::ClearChangesMask(RangedCritPercentage);
Base::ClearChangesMask(OffhandCritPercentage);
- Base::ClearChangesMask(SpellCritPercentage);
Base::ClearChangesMask(ShieldBlock);
Base::ClearChangesMask(ShieldBlockCritPercentage);
Base::ClearChangesMask(Mastery);
@@ -5619,6 +4184,7 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(PvpPowerHealing);
Base::ClearChangesMask(ModHealingDonePos);
Base::ClearChangesMask(ModHealingPercent);
+ Base::ClearChangesMask(ModHealingDonePercent);
Base::ClearChangesMask(ModPeriodicHealingDonePercent);
Base::ClearChangesMask(ModSpellPowerPercent);
Base::ClearChangesMask(ModResiliencePercent);
@@ -5631,10 +4197,23 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(MultiActionBars);
Base::ClearChangesMask(LifetimeMaxRank);
Base::ClearChangesMask(NumRespecs);
+ Base::ClearChangesMask(AmmoID);
Base::ClearChangesMask(PvpMedals);
Base::ClearChangesMask(TodayHonorableKills);
+ Base::ClearChangesMask(TodayDishonorableKills);
Base::ClearChangesMask(YesterdayHonorableKills);
+ Base::ClearChangesMask(YesterdayDishonorableKills);
+ Base::ClearChangesMask(LastWeekHonorableKills);
+ Base::ClearChangesMask(LastWeekDishonorableKills);
+ Base::ClearChangesMask(ThisWeekHonorableKills);
+ Base::ClearChangesMask(ThisWeekDishonorableKills);
+ Base::ClearChangesMask(ThisWeekContribution);
Base::ClearChangesMask(LifetimeHonorableKills);
+ Base::ClearChangesMask(LifetimeDishonorableKills);
+ Base::ClearChangesMask(Field_F24);
+ Base::ClearChangesMask(YesterdayContribution);
+ Base::ClearChangesMask(LastWeekContribution);
+ Base::ClearChangesMask(LastWeekRank);
Base::ClearChangesMask(WatchedFactionIndex);
Base::ClearChangesMask(MaxLevel);
Base::ClearChangesMask(ScalingPlayerLevelDelta);
@@ -5644,54 +4223,49 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(UiSpellHitModifier);
Base::ClearChangesMask(HomeRealmTimeOffset);
Base::ClearChangesMask(ModPetHaste);
- Base::ClearChangesMask(JailersTowerLevelMax);
- Base::ClearChangesMask(JailersTowerLevel);
Base::ClearChangesMask(LocalRegenFlags);
Base::ClearChangesMask(AuraVision);
Base::ClearChangesMask(NumBackpackSlots);
Base::ClearChangesMask(OverrideSpellsID);
+ Base::ClearChangesMask(LfgBonusFactionID);
Base::ClearChangesMask(LootSpecID);
Base::ClearChangesMask(OverrideZonePVPType);
Base::ClearChangesMask(Honor);
Base::ClearChangesMask(HonorNextLevel);
+ Base::ClearChangesMask(Field_F74);
+ Base::ClearChangesMask(PvpTierMaxFromWins);
+ Base::ClearChangesMask(PvpLastWeeksTierMaxFromWins);
+ Base::ClearChangesMask(PvpRankProgress);
Base::ClearChangesMask(PerksProgramCurrency);
- Base::ClearChangesMask(NumBankSlots);
Base::ClearChangesMask(ResearchHistory);
Base::ClearChangesMask(FrozenPerksVendorItem);
- Base::ClearChangesMask(Field_1410);
- Base::ClearChangesMask(QuestSession);
- Base::ClearChangesMask(UiChromieTimeExpansionID);
Base::ClearChangesMask(TransportServerTime);
- Base::ClearChangesMask(WeeklyRewardsPeriodSinceOrigin);
- Base::ClearChangesMask(DEBUGSoulbindConduitRank);
- Base::ClearChangesMask(DungeonScore);
Base::ClearChangesMask(ActiveCombatTraitConfigID);
- Base::ClearChangesMask(ItemUpgradeHighOnehandWeaponItemID);
- Base::ClearChangesMask(ItemUpgradeHighFingerItemID);
- Base::ClearChangesMask(ItemUpgradeHighFingerWatermark);
- Base::ClearChangesMask(ItemUpgradeHighTrinketItemID);
- Base::ClearChangesMask(ItemUpgradeHighTrinketWatermark);
- Base::ClearChangesMask(LootHistoryInstanceID);
+ Base::ClearChangesMask(GlyphsEnabled);
+ Base::ClearChangesMask(LfgRoles);
Base::ClearChangesMask(PetStable);
- Base::ClearChangesMask(RequiredMountCapabilityFlags);
+ Base::ClearChangesMask(NumStableSlots);
Base::ClearChangesMask(InvSlots);
- Base::ClearChangesMask(ExploredZones);
- Base::ClearChangesMask(RestInfo);
+ Base::ClearChangesMask(TrackResourceMask);
+ Base::ClearChangesMask(SpellCritPercentage);
Base::ClearChangesMask(ModDamageDonePos);
Base::ClearChangesMask(ModDamageDoneNeg);
Base::ClearChangesMask(ModDamageDonePercent);
- Base::ClearChangesMask(ModHealingDonePercent);
+ Base::ClearChangesMask(ExploredZones);
+ Base::ClearChangesMask(RestInfo);
Base::ClearChangesMask(WeaponDmgMultipliers);
Base::ClearChangesMask(WeaponAtkSpeedMultipliers);
Base::ClearChangesMask(BuybackPrice);
Base::ClearChangesMask(BuybackTimestamp);
Base::ClearChangesMask(CombatRatings);
+ Base::ClearChangesMask(PvpInfo);
Base::ClearChangesMask(NoReagentCostMask);
Base::ClearChangesMask(ProfessionSkillLine);
Base::ClearChangesMask(BagSlotFlags);
Base::ClearChangesMask(BankBagSlotFlags);
Base::ClearChangesMask(QuestCompleted);
- Base::ClearChangesMask(ItemUpgradeHighWatermark);
+ Base::ClearChangesMask(GlyphSlots);
+ Base::ClearChangesMask(Glyphs);
_changesMask.ResetAll();
}
@@ -5703,7 +4277,6 @@ void GameObjectData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fie
data << uint32(SpawnTrackingStateAnimID);
data << uint32(SpawnTrackingStateAnimKitID);
data << uint32(StateWorldEffectIDs->size());
- data << uint32(StateWorldEffectsQuestObjectiveID);
for (uint32 i = 0; i < StateWorldEffectIDs->size(); ++i)
{
data << uint32((*StateWorldEffectIDs)[i]);
@@ -5716,17 +4289,13 @@ void GameObjectData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fie
data << float(ParentRotation->z);
data << float(ParentRotation->w);
data << int32(FactionTemplate);
+ data << int32(Level);
data << int8(ViewerDependentValue<StateTag>::GetValue(this, owner, receiver));
data << int8(TypeID);
data << uint8(PercentHealth);
data << uint32(ArtKit);
data << uint32(EnableDoodadSets.size());
data << uint32(CustomParam);
- data << int32(Level);
- data << uint32(AnimGroupInstance);
- data << uint32(UiWidgetItemID);
- data << uint32(UiWidgetItemQuality);
- data << uint32(UiWidgetItemUnknown1000);
data << uint32(WorldEffects.size());
for (uint32 i = 0; i < EnableDoodadSets.size(); ++i)
{
@@ -5745,7 +4314,7 @@ void GameObjectData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fie
void GameObjectData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, GameObject const* owner, Player const* receiver) const
{
- data.WriteBits(changesMask.GetBlock(0), 25);
+ data.WriteBits(changesMask.GetBlock(0), 20);
if (changesMask[0])
{
@@ -5821,31 +4390,31 @@ void GameObjectData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool
}
if (changesMask[9])
{
- data << uint32(StateWorldEffectsQuestObjectiveID);
- }
- if (changesMask[10])
- {
data << CreatedBy;
}
- if (changesMask[11])
+ if (changesMask[10])
{
data << GuildGUID;
}
- if (changesMask[12])
+ if (changesMask[11])
{
data << uint32(ViewerDependentValue<FlagsTag>::GetValue(this, owner, receiver));
}
- if (changesMask[13])
+ if (changesMask[12])
{
data << float(ParentRotation->x);
data << float(ParentRotation->y);
data << float(ParentRotation->z);
data << float(ParentRotation->w);
}
- if (changesMask[14])
+ if (changesMask[13])
{
data << int32(FactionTemplate);
}
+ if (changesMask[14])
+ {
+ data << int32(Level);
+ }
if (changesMask[15])
{
data << int8(ViewerDependentValue<StateTag>::GetValue(this, owner, receiver));
@@ -5866,26 +4435,6 @@ void GameObjectData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool
{
data << uint32(CustomParam);
}
- if (changesMask[20])
- {
- data << int32(Level);
- }
- if (changesMask[21])
- {
- data << uint32(AnimGroupInstance);
- }
- if (changesMask[22])
- {
- data << uint32(UiWidgetItemID);
- }
- if (changesMask[23])
- {
- data << uint32(UiWidgetItemQuality);
- }
- if (changesMask[24])
- {
- data << uint32(UiWidgetItemUnknown1000);
- }
}
}
@@ -5899,22 +4448,17 @@ void GameObjectData::ClearChangesMask()
Base::ClearChangesMask(StateSpellVisualID);
Base::ClearChangesMask(SpawnTrackingStateAnimID);
Base::ClearChangesMask(SpawnTrackingStateAnimKitID);
- Base::ClearChangesMask(StateWorldEffectsQuestObjectiveID);
Base::ClearChangesMask(CreatedBy);
Base::ClearChangesMask(GuildGUID);
Base::ClearChangesMask(Flags);
Base::ClearChangesMask(ParentRotation);
Base::ClearChangesMask(FactionTemplate);
+ Base::ClearChangesMask(Level);
Base::ClearChangesMask(State);
Base::ClearChangesMask(TypeID);
Base::ClearChangesMask(PercentHealth);
Base::ClearChangesMask(ArtKit);
Base::ClearChangesMask(CustomParam);
- Base::ClearChangesMask(Level);
- Base::ClearChangesMask(AnimGroupInstance);
- Base::ClearChangesMask(UiWidgetItemID);
- Base::ClearChangesMask(UiWidgetItemQuality);
- Base::ClearChangesMask(UiWidgetItemUnknown1000);
_changesMask.ResetAll();
}
@@ -5922,7 +4466,7 @@ void DynamicObjectData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag>
{
data << Caster;
data << uint8(Type);
- SpellVisual->WriteCreate(data, owner, receiver);
+ data << int32(SpellXSpellVisualID);
data << int32(SpellID);
data << float(Radius);
data << uint32(CastTime);
@@ -5950,7 +4494,7 @@ void DynamicObjectData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, b
}
if (changesMask[3])
{
- SpellVisual->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ data << int32(SpellXSpellVisualID);
}
if (changesMask[4])
{
@@ -5971,7 +4515,7 @@ void DynamicObjectData::ClearChangesMask()
{
Base::ClearChangesMask(Caster);
Base::ClearChangesMask(Type);
- Base::ClearChangesMask(SpellVisual);
+ Base::ClearChangesMask(SpellXSpellVisualID);
Base::ClearChangesMask(SpellID);
Base::ClearChangesMask(Radius);
Base::ClearChangesMask(CastTime);
@@ -5995,7 +4539,6 @@ void CorpseData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
data << uint32(Customizations.size());
data << uint32(Flags);
data << int32(FactionTemplate);
- data << uint32(StateSpellVisualKitID);
for (uint32 i = 0; i < Customizations.size(); ++i)
{
Customizations[i].WriteCreate(data, owner, receiver);
@@ -6009,10 +4552,7 @@ void CorpseData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
void CorpseData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Corpse const* owner, Player const* receiver) const
{
- data.WriteBits(changesMask.GetBlocksMask(0), 2);
- for (uint32 i = 0; i < 2; ++i)
- if (changesMask.GetBlock(i))
- data.WriteBits(changesMask.GetBlock(i), 32);
+ data.WriteBits(changesMask.GetBlock(0), 32);
if (changesMask[0])
{
@@ -6077,16 +4617,12 @@ void CorpseData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
{
data << int32(FactionTemplate);
}
- if (changesMask[12])
- {
- data << uint32(StateSpellVisualKitID);
- }
}
- if (changesMask[13])
+ if (changesMask[12])
{
for (uint32 i = 0; i < 19; ++i)
{
- if (changesMask[14 + i])
+ if (changesMask[13 + i])
{
data << uint32(Items[i]);
}
@@ -6107,7 +4643,6 @@ void CorpseData::ClearChangesMask()
Base::ClearChangesMask(Class);
Base::ClearChangesMask(Flags);
Base::ClearChangesMask(FactionTemplate);
- Base::ClearChangesMask(StateSpellVisualKitID);
Base::ClearChangesMask(Items);
_changesMask.ResetAll();
}
@@ -6236,24 +4771,16 @@ void AreaTriggerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fi
data << uint32(TimeToTargetPos);
data << int32(SpellID);
data << int32(SpellForVisuals);
- SpellVisual->WriteCreate(data, owner, receiver);
+ data << int32(SpellXSpellVisualID);
data << float(BoundsRadius2D);
data << uint32(DecalPropertiesID);
data << CreatingEffectGUID;
- data << uint32(NumUnitsInside);
- data << uint32(NumPlayersInside);
data << OrbitPathTarget;
- data << RollPitchYaw;
- data << int32(PositionalSoundKitID);
ExtraScaleCurve->WriteCreate(data, owner, receiver);
- data.FlushBits();
- data.WriteBit(HeightIgnoresScale);
- data.WriteBit(Field_261);
OverrideMoveCurveX->WriteCreate(data, owner, receiver);
OverrideMoveCurveY->WriteCreate(data, owner, receiver);
OverrideMoveCurveZ->WriteCreate(data, owner, receiver);
VisualAnim->WriteCreate(data, owner, receiver);
- data.FlushBits();
}
void AreaTriggerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const
@@ -6263,122 +4790,92 @@ void AreaTriggerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fi
void AreaTriggerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AreaTrigger const* owner, Player const* receiver) const
{
- data.WriteBits(changesMask.GetBlock(0), 26);
+ data.WriteBits(changesMask.GetBlock(0), 20);
- if (changesMask[0])
- {
- if (changesMask[1])
- {
- data.WriteBit(HeightIgnoresScale);
- }
- if (changesMask[2])
- {
- data.WriteBit(Field_261);
- }
- }
data.FlushBits();
if (changesMask[0])
{
- if (changesMask[3])
+ if (changesMask[1])
{
OverrideScaleCurve->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[8])
+ if (changesMask[6])
{
data << Caster;
}
- if (changesMask[9])
+ if (changesMask[7])
{
data << uint32(Duration);
}
- if (changesMask[10])
+ if (changesMask[8])
{
data << uint32(TimeToTarget);
}
- if (changesMask[11])
+ if (changesMask[9])
{
data << uint32(TimeToTargetScale);
}
- if (changesMask[12])
+ if (changesMask[10])
{
data << uint32(TimeToTargetExtraScale);
}
- if (changesMask[13])
+ if (changesMask[11])
{
data << uint32(TimeToTargetPos);
}
- if (changesMask[14])
+ if (changesMask[12])
{
data << int32(SpellID);
}
- if (changesMask[15])
+ if (changesMask[13])
{
data << int32(SpellForVisuals);
}
- if (changesMask[16])
+ if (changesMask[14])
{
- SpellVisual->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ data << int32(SpellXSpellVisualID);
}
- if (changesMask[17])
+ if (changesMask[15])
{
data << float(BoundsRadius2D);
}
- if (changesMask[18])
+ if (changesMask[16])
{
data << uint32(DecalPropertiesID);
}
- if (changesMask[19])
+ if (changesMask[17])
{
data << CreatingEffectGUID;
}
- if (changesMask[20])
- {
- data << uint32(NumUnitsInside);
- }
- if (changesMask[21])
- {
- data << uint32(NumPlayersInside);
- }
- if (changesMask[22])
+ if (changesMask[18])
{
data << OrbitPathTarget;
}
- if (changesMask[23])
- {
- data << RollPitchYaw;
- }
- if (changesMask[24])
- {
- data << int32(PositionalSoundKitID);
- }
- if (changesMask[4])
+ if (changesMask[2])
{
ExtraScaleCurve->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[5])
+ if (changesMask[3])
{
OverrideMoveCurveX->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[6])
+ if (changesMask[4])
{
OverrideMoveCurveY->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[7])
+ if (changesMask[5])
{
OverrideMoveCurveZ->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[25])
+ if (changesMask[19])
{
VisualAnim->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
- data.FlushBits();
}
void AreaTriggerData::ClearChangesMask()
{
- Base::ClearChangesMask(HeightIgnoresScale);
- Base::ClearChangesMask(Field_261);
Base::ClearChangesMask(OverrideScaleCurve);
Base::ClearChangesMask(ExtraScaleCurve);
Base::ClearChangesMask(OverrideMoveCurveX);
@@ -6392,15 +4889,11 @@ void AreaTriggerData::ClearChangesMask()
Base::ClearChangesMask(TimeToTargetPos);
Base::ClearChangesMask(SpellID);
Base::ClearChangesMask(SpellForVisuals);
- Base::ClearChangesMask(SpellVisual);
+ Base::ClearChangesMask(SpellXSpellVisualID);
Base::ClearChangesMask(BoundsRadius2D);
Base::ClearChangesMask(DecalPropertiesID);
Base::ClearChangesMask(CreatingEffectGUID);
- Base::ClearChangesMask(NumUnitsInside);
- Base::ClearChangesMask(NumPlayersInside);
Base::ClearChangesMask(OrbitPathTarget);
- Base::ClearChangesMask(RollPitchYaw);
- Base::ClearChangesMask(PositionalSoundKitID);
Base::ClearChangesMask(VisualAnim);
_changesMask.ResetAll();
}
@@ -6456,85 +4949,84 @@ void SceneObjectData::ClearChangesMask()
void ConversationLine::WriteCreate(ByteBuffer& data, Conversation const* owner, Player const* receiver) const
{
data << int32(ConversationLineID);
- data << int32(BroadcastTextID);
data << uint32(ViewerDependentValue<StartTimeTag>::GetValue(this, owner, receiver));
data << int32(UiCameraID);
data << uint8(ActorIndex);
data << uint8(Flags);
- data << uint8(ChatType);
}
void ConversationLine::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Conversation const* owner, Player const* receiver) const
{
data << int32(ConversationLineID);
- data << int32(BroadcastTextID);
data << uint32(ViewerDependentValue<StartTimeTag>::GetValue(this, owner, receiver));
data << int32(UiCameraID);
data << uint8(ActorIndex);
data << uint8(Flags);
- data << uint8(ChatType);
}
bool ConversationLine::operator==(ConversationLine const& right) const
{
return ConversationLineID == right.ConversationLineID
- && BroadcastTextID == right.BroadcastTextID
&& StartTime == right.StartTime
&& UiCameraID == right.UiCameraID
&& ActorIndex == right.ActorIndex
- && Flags == right.Flags
- && ChatType == right.ChatType;
+ && Flags == right.Flags;
}
void ConversationActor::WriteCreate(ByteBuffer& data, Conversation const* owner, Player const* receiver) const
{
- data << uint32(CreatureID);
- data << uint32(CreatureDisplayInfoID);
- data << ActorGUID;
- data << int32(Id);
data.WriteBits(Type, 1);
- data.WriteBits(NoActorObject, 1);
+ data << int32(Id);
+ if (Type == 1)
+ {
+ data << uint32(CreatureID);
+ data << uint32(CreatureDisplayInfoID);
+ }
+ if (Type == 0)
+ {
+ data << ActorGUID;
+ }
data.FlushBits();
}
void ConversationActor::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Conversation const* owner, Player const* receiver) const
{
- data << uint32(CreatureID);
- data << uint32(CreatureDisplayInfoID);
- data << ActorGUID;
- data << int32(Id);
data.WriteBits(Type, 1);
- data.WriteBits(NoActorObject, 1);
+ data << int32(Id);
+ if (Type == 1)
+ {
+ data << uint32(CreatureID);
+ data << uint32(CreatureDisplayInfoID);
+ }
+ if (Type == 0)
+ {
+ data << ActorGUID;
+ }
data.FlushBits();
}
bool ConversationActor::operator==(ConversationActor const& right) const
{
- return CreatureID == right.CreatureID
- && CreatureDisplayInfoID == right.CreatureDisplayInfoID
- && ActorGUID == right.ActorGUID
+ return Type == right.Type
&& Id == right.Id
- && Type == right.Type
- && NoActorObject == right.NoActorObject;
+ && CreatureID == right.CreatureID
+ && CreatureDisplayInfoID == right.CreatureDisplayInfoID
+ && ActorGUID == right.ActorGUID;
}
void ConversationData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const
{
data << uint32(Lines->size());
data << int32(ViewerDependentValue<LastLineEndTimeTag>::GetValue(this, owner, receiver));
- data << uint32(Progress);
for (uint32 i = 0; i < Lines->size(); ++i)
{
(*Lines)[i].WriteCreate(data, owner, receiver);
}
- data.WriteBit(DontPlayBroadcastTextSounds);
data << uint32(Actors.size());
- data << uint32(Flags);
for (uint32 i = 0; i < Actors.size(); ++i)
{
Actors[i].WriteCreate(data, owner, receiver);
}
- data.FlushBits();
}
void ConversationData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const
@@ -6544,16 +5036,12 @@ void ConversationData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
void ConversationData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Conversation const* owner, Player const* receiver) const
{
- data.WriteBits(changesMask.GetBlock(0), 7);
+ data.WriteBits(changesMask.GetBlock(0), 4);
if (changesMask[0])
{
if (changesMask[1])
{
- data.WriteBit(DontPlayBroadcastTextSounds);
- }
- if (changesMask[2])
- {
data.WriteBits(Lines->size(), 32);
for (uint32 i = 0; i < Lines->size(); ++i)
{
@@ -6564,7 +5052,7 @@ void ConversationData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
data.FlushBits();
if (changesMask[0])
{
- if (changesMask[3])
+ if (changesMask[2])
{
if (!ignoreNestedChangesMask)
Actors.WriteUpdateMask(data);
@@ -6575,7 +5063,7 @@ void ConversationData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
data.FlushBits();
if (changesMask[0])
{
- if (changesMask[3])
+ if (changesMask[2])
{
for (uint32 i = 0; i < Actors.size(); ++i)
{
@@ -6585,30 +5073,18 @@ void ConversationData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[4])
+ if (changesMask[3])
{
data << int32(ViewerDependentValue<LastLineEndTimeTag>::GetValue(this, owner, receiver));
}
- if (changesMask[5])
- {
- data << uint32(Progress);
- }
- if (changesMask[6])
- {
- data << uint32(Flags);
- }
}
- data.FlushBits();
}
void ConversationData::ClearChangesMask()
{
- Base::ClearChangesMask(DontPlayBroadcastTextSounds);
Base::ClearChangesMask(Lines);
Base::ClearChangesMask(Actors);
Base::ClearChangesMask(LastLineEndTime);
- Base::ClearChangesMask(Progress);
- Base::ClearChangesMask(Flags);
_changesMask.ResetAll();
}
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index 96eb02620b3..a9ef8420760 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -31,8 +31,6 @@
// This file is automatically generated, DO NOT EDIT
class AreaTrigger;
-class AzeriteEmpoweredItem;
-class AzeriteItem;
class Bag;
class ByteBuffer;
class Conversation;
@@ -60,12 +58,13 @@ struct ObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<4>
void ClearChangesMask();
};
-struct ItemEnchantment : public IsUpdateFieldStructureTag, public HasChangesMask<5>
+struct ItemEnchantment : public IsUpdateFieldStructureTag, public HasChangesMask<6>
{
UpdateField<int32, 0, 1> ID;
UpdateField<uint32, 0, 2> Duration;
UpdateField<int16, 0, 3> Charges;
- UpdateField<uint16, 0, 4> Inactive;
+ UpdateField<uint8, 0, 4> Field_A;
+ UpdateField<uint8, 0, 5> Field_B;
void WriteCreate(ByteBuffer& data, Item const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Item const* owner, Player const* receiver) const;
@@ -115,7 +114,7 @@ struct SocketedGem : public IsUpdateFieldStructureTag, public HasChangesMask<20>
void ClearChangesMask();
};
-struct ItemData : public IsUpdateFieldStructureTag, public HasChangesMask<41>
+struct ItemData : public IsUpdateFieldStructureTag, public HasChangesMask<43>
{
DynamicUpdateField<UF::ArtifactPower, 0, 1> ArtifactPowers;
DynamicUpdateField<UF::SocketedGem, 0, 2> Gems;
@@ -126,19 +125,21 @@ struct ItemData : public IsUpdateFieldStructureTag, public HasChangesMask<41>
UpdateField<uint32, 0, 7> StackCount;
UpdateField<uint32, 0, 8> Expiration;
UpdateField<uint32, 0, 9> DynamicFlags;
- UpdateField<uint32, 0, 10> Durability;
- UpdateField<uint32, 0, 11> MaxDurability;
- UpdateField<uint32, 0, 12> CreatePlayedTime;
- UpdateField<int32, 0, 13> Context;
- UpdateField<int64, 0, 14> CreateTime;
- UpdateField<uint64, 0, 15> ArtifactXP;
- UpdateField<uint8, 0, 16> ItemAppearanceModID;
- UpdateField<UF::ItemModList, 0, 17> Modifiers;
- UpdateField<uint32, 0, 18> DynamicFlags2;
- UpdateField<WorldPackets::Item::ItemBonusKey, 0, 19> ItemBonusKey;
- UpdateField<uint16, 0, 20> DEBUGItemLevel;
- UpdateFieldArray<int32, 5, 21, 22> SpellCharges;
- UpdateFieldArray<UF::ItemEnchantment, 13, 27, 28> Enchantment;
+ UpdateField<int32, 0, 10> PropertySeed;
+ UpdateField<int32, 0, 11> RandomPropertiesID;
+ UpdateField<uint32, 0, 12> Durability;
+ UpdateField<uint32, 0, 13> MaxDurability;
+ UpdateField<uint32, 0, 14> CreatePlayedTime;
+ UpdateField<int32, 0, 15> Context;
+ UpdateField<int64, 0, 16> CreateTime;
+ UpdateField<uint64, 0, 17> ArtifactXP;
+ UpdateField<uint8, 0, 18> ItemAppearanceModID;
+ UpdateField<UF::ItemModList, 0, 19> Modifiers;
+ UpdateField<uint32, 0, 20> DynamicFlags2;
+ UpdateField<WorldPackets::Item::ItemBonusKey, 0, 21> ItemBonusKey;
+ UpdateField<uint16, 0, 22> DEBUGItemLevel;
+ UpdateFieldArray<int32, 5, 23, 24> SpellCharges;
+ UpdateFieldArray<UF::ItemEnchantment, 13, 29, 30> Enchantment;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const;
@@ -159,73 +160,10 @@ struct ContainerData : public IsUpdateFieldStructureTag, public HasChangesMask<3
void ClearChangesMask();
};
-struct AzeriteEmpoweredItemData : public IsUpdateFieldStructureTag, public HasChangesMask<6>
-{
- UpdateFieldArray<int32, 5, 0, 1> Selections;
-
- void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AzeriteEmpoweredItem const* owner, Player const* receiver) const;
- void ClearChangesMask();
-};
-
-struct UnlockedAzeriteEssence : public IsUpdateFieldStructureTag
-{
- uint32 AzeriteEssenceID;
- uint32 Rank;
-
- void WriteCreate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AzeriteItem const* owner, Player const* receiver) const;
- bool operator==(UnlockedAzeriteEssence const& right) const;
- bool operator!=(UnlockedAzeriteEssence const& right) const { return !(*this == right); }
-};
-
-struct SelectedAzeriteEssences : public IsUpdateFieldStructureTag, public HasChangesMask<8>
-{
- UpdateField<bool, 0, 1> Enabled;
- UpdateField<uint32, 0, 2> SpecializationID;
- UpdateFieldArray<uint32, 4, 3, 4> AzeriteEssenceID;
-
- void WriteCreate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AzeriteItem const* owner, Player const* receiver) const;
- void ClearChangesMask();
-};
-
-struct AzeriteItemData : public IsUpdateFieldStructureTag, public HasChangesMask<10>
-{
- UpdateField<bool, 0, 1> Enabled;
- DynamicUpdateField<UF::UnlockedAzeriteEssence, 0, 2> UnlockedEssences;
- DynamicUpdateField<uint32, 0, 4> UnlockedEssenceMilestones;
- DynamicUpdateField<UF::SelectedAzeriteEssences, 0, 3> SelectedEssences;
- UpdateField<uint64, 0, 5> Xp;
- UpdateField<uint32, 0, 6> Level;
- UpdateField<uint32, 0, 7> AuraLevel;
- UpdateField<uint32, 0, 8> KnowledgeLevel;
- UpdateField<int32, 0, 9> DEBUGknowledgeWeek;
-
- void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AzeriteItem const* owner, Player const* receiver) const;
- static void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags);
- static void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags);
- void ClearChangesMask();
-};
-
-struct SpellCastVisual : public IsUpdateFieldStructureTag
-{
- int32 SpellXSpellVisualID;
- int32 ScriptVisualID;
-
- void WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const;
- bool operator==(SpellCastVisual const& right) const;
- bool operator!=(SpellCastVisual const& right) const { return !(*this == right); }
-};
-
struct UnitChannel : public IsUpdateFieldStructureTag
{
int32 SpellID;
- UF::SpellCastVisual SpellVisual;
+ int32 SpellXSpellVisualID;
void WriteCreate(ByteBuffer& data, Unit const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Unit const* owner, Player const* receiver) const;
@@ -233,13 +171,11 @@ struct UnitChannel : public IsUpdateFieldStructureTag
bool operator!=(UnitChannel const& right) const { return !(*this == right); }
};
-struct VisibleItem : public IsUpdateFieldStructureTag, public HasChangesMask<6>
+struct VisibleItem : public IsUpdateFieldStructureTag, public HasChangesMask<4>
{
UpdateField<int32, 0, 1> ItemID;
- UpdateField<int32, 0, 2> SecondaryItemModifiedAppearanceID;
- UpdateField<int32, 0, 3> ConditionalItemAppearanceID;
- UpdateField<uint16, 0, 4> ItemAppearanceModID;
- UpdateField<uint16, 0, 5> ItemVisual;
+ UpdateField<uint16, 0, 2> ItemAppearanceModID;
+ UpdateField<uint16, 0, 3> ItemVisual;
void WriteCreate(ByteBuffer& data, Unit const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Unit const* owner, Player const* receiver) const;
@@ -257,19 +193,19 @@ struct PassiveSpellHistory : public IsUpdateFieldStructureTag
bool operator!=(PassiveSpellHistory const& right) const { return !(*this == right); }
};
-struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<217>
+struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<227>
{
UpdateField<std::vector<uint32>, 0, 1> StateWorldEffectIDs;
DynamicUpdateField<UF::PassiveSpellHistory, 0, 2> PassiveSpells;
DynamicUpdateField<int32, 0, 3> WorldEffects;
DynamicUpdateField<ObjectGuid, 0, 4> ChannelObjects;
- UpdateField<int32, 0, 5> DisplayID;
+ UpdateField<int64, 0, 5> Health;
+ UpdateField<int64, 0, 6> MaxHealth;
+ UpdateField<int32, 0, 7> DisplayID;
struct DisplayIDTag : ViewerDependentValueTag<int32> {};
- UpdateField<uint32, 0, 6> StateSpellVisualID;
- UpdateField<uint32, 0, 7> StateAnimID;
- UpdateField<uint32, 0, 8> StateAnimKitID;
- UpdateField<uint32, 0, 9> StateWorldEffectsQuestObjectiveID;
- UpdateField<int32, 0, 10> SpellOverrideNameID;
+ UpdateField<uint32, 0, 8> StateSpellVisualID;
+ UpdateField<uint32, 0, 9> StateAnimID;
+ UpdateField<uint32, 0, 10> StateAnimKitID;
UpdateField<ObjectGuid, 0, 11> Charm;
UpdateField<ObjectGuid, 0, 12> Summon;
UpdateField<ObjectGuid, 0, 13> Critter;
@@ -282,127 +218,115 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<217>
UpdateField<ObjectGuid, 0, 20> BattlePetCompanionGUID;
UpdateField<uint64, 0, 21> BattlePetDBID;
UpdateField<UF::UnitChannel, 0, 22> ChannelData;
- UpdateField<int8, 0, 23> SpellEmpowerStage;
- UpdateField<uint32, 0, 24> SummonedByHomeRealm;
- UpdateField<uint8, 0, 25> Race;
- UpdateField<uint8, 0, 26> ClassId;
- UpdateField<uint8, 0, 27> PlayerClassId;
- UpdateField<uint8, 0, 28> Sex;
- UpdateField<uint8, 0, 29> DisplayPower;
- UpdateField<uint32, 0, 30> OverrideDisplayPowerID;
- UpdateField<int64, 0, 31> Health;
- UpdateField<int64, 32, 33> MaxHealth;
- UpdateField<int32, 32, 34> Level;
- UpdateField<int32, 32, 35> EffectiveLevel;
- UpdateField<int32, 32, 36> ContentTuningID;
- UpdateField<int32, 32, 37> ScalingLevelMin;
- UpdateField<int32, 32, 38> ScalingLevelMax;
- UpdateField<int32, 32, 39> ScalingLevelDelta;
- UpdateField<int32, 32, 40> ScalingFactionGroup;
- UpdateField<int32, 32, 41> ScalingHealthItemLevelCurveID;
- UpdateField<int32, 32, 42> ScalingDamageItemLevelCurveID;
- UpdateField<int32, 32, 43> FactionTemplate;
+ UpdateField<uint32, 0, 23> SummonedByHomeRealm;
+ UpdateField<uint8, 0, 24> Race;
+ UpdateField<uint8, 0, 25> ClassId;
+ UpdateField<uint8, 0, 26> PlayerClassId;
+ UpdateField<uint8, 0, 27> Sex;
+ UpdateField<uint8, 0, 28> DisplayPower;
+ UpdateField<uint32, 0, 29> OverrideDisplayPowerID;
+ UpdateField<int32, 0, 30> Level;
+ UpdateField<int32, 0, 31> EffectiveLevel;
+ UpdateField<int32, 32, 33> ContentTuningID;
+ UpdateField<int32, 32, 34> ScalingLevelMin;
+ UpdateField<int32, 32, 35> ScalingLevelMax;
+ UpdateField<int32, 32, 36> ScalingLevelDelta;
+ UpdateField<int32, 32, 37> ScalingFactionGroup;
+ UpdateField<int32, 32, 38> ScalingHealthItemLevelCurveID;
+ UpdateField<int32, 32, 39> ScalingDamageItemLevelCurveID;
+ UpdateField<int32, 32, 40> FactionTemplate;
struct FactionTemplateTag : ViewerDependentValueTag<int32> {};
- UpdateField<uint32, 32, 44> Flags;
+ UpdateField<uint32, 32, 41> Flags;
struct FlagsTag : ViewerDependentValueTag<uint32> {};
- UpdateField<uint32, 32, 45> Flags2;
- UpdateField<uint32, 32, 46> Flags3;
+ UpdateField<uint32, 32, 42> Flags2;
+ UpdateField<uint32, 32, 43> Flags3;
struct Flags3Tag : ViewerDependentValueTag<uint32> {};
- UpdateField<uint32, 32, 47> AuraState;
+ UpdateField<uint32, 32, 44> AuraState;
struct AuraStateTag : ViewerDependentValueTag<uint32> {};
- UpdateField<uint32, 32, 48> RangedAttackRoundBaseTime;
- UpdateField<float, 32, 49> BoundingRadius;
- UpdateField<float, 32, 50> CombatReach;
- UpdateField<float, 32, 51> DisplayScale;
- UpdateField<int32, 32, 52> CreatureFamily;
- UpdateField<int32, 32, 53> CreatureType;
- UpdateField<int32, 32, 54> NativeDisplayID;
- UpdateField<float, 32, 55> NativeXDisplayScale;
- UpdateField<int32, 32, 56> MountDisplayID;
- UpdateField<int32, 32, 57> CosmeticMountDisplayID;
- UpdateField<float, 32, 58> MinDamage;
- UpdateField<float, 32, 59> MaxDamage;
- UpdateField<float, 32, 60> MinOffHandDamage;
- UpdateField<float, 32, 61> MaxOffHandDamage;
- UpdateField<uint8, 32, 62> StandState;
- UpdateField<uint8, 32, 63> PetTalentPoints;
- UpdateField<uint8, 64, 65> VisFlags;
- UpdateField<uint8, 64, 66> AnimTier;
- UpdateField<uint32, 64, 67> PetNumber;
- UpdateField<uint32, 64, 68> PetNameTimestamp;
- UpdateField<uint32, 64, 69> PetExperience;
- UpdateField<uint32, 64, 70> PetNextLevelExperience;
- UpdateField<float, 64, 71> ModCastingSpeed;
- UpdateField<float, 64, 72> ModCastingSpeedNeg;
- UpdateField<float, 64, 73> ModSpellHaste;
- UpdateField<float, 64, 74> ModHaste;
- UpdateField<float, 64, 75> ModRangedHaste;
- UpdateField<float, 64, 76> ModHasteRegen;
- UpdateField<float, 64, 77> ModTimeRate;
- UpdateField<int32, 64, 78> CreatedBySpell;
- UpdateField<int32, 64, 79> EmoteState;
- UpdateField<int32, 64, 80> BaseMana;
- UpdateField<int32, 64, 81> BaseHealth;
- UpdateField<uint8, 64, 82> SheatheState;
- UpdateField<uint8, 64, 83> PvpFlags;
+ UpdateField<uint32, 32, 45> RangedAttackRoundBaseTime;
+ UpdateField<float, 32, 46> BoundingRadius;
+ UpdateField<float, 32, 47> CombatReach;
+ UpdateField<float, 32, 48> DisplayScale;
+ UpdateField<int32, 32, 49> NativeDisplayID;
+ UpdateField<float, 32, 50> NativeXDisplayScale;
+ UpdateField<int32, 32, 51> MountDisplayID;
+ UpdateField<float, 32, 52> MinDamage;
+ UpdateField<float, 32, 53> MaxDamage;
+ UpdateField<float, 32, 54> MinOffHandDamage;
+ UpdateField<float, 32, 55> MaxOffHandDamage;
+ UpdateField<uint8, 32, 56> StandState;
+ UpdateField<uint8, 32, 57> PetTalentPoints;
+ UpdateField<uint8, 32, 58> VisFlags;
+ UpdateField<uint8, 32, 59> AnimTier;
+ UpdateField<uint32, 32, 60> PetNumber;
+ UpdateField<uint32, 32, 61> PetNameTimestamp;
+ UpdateField<uint32, 32, 62> PetExperience;
+ UpdateField<uint32, 32, 63> PetNextLevelExperience;
+ UpdateField<float, 64, 65> ModCastingSpeed;
+ UpdateField<float, 64, 66> ModSpellHaste;
+ UpdateField<float, 64, 67> ModHaste;
+ UpdateField<float, 64, 68> ModRangedHaste;
+ UpdateField<float, 64, 69> ModHasteRegen;
+ UpdateField<float, 64, 70> ModTimeRate;
+ UpdateField<int32, 64, 71> CreatedBySpell;
+ UpdateField<int32, 64, 72> EmoteState;
+ UpdateField<int16, 64, 73> TrainingPointsUsed;
+ UpdateField<int16, 64, 74> TrainingPointsTotal;
+ UpdateField<int32, 64, 75> BaseMana;
+ UpdateField<int32, 64, 76> BaseHealth;
+ UpdateField<uint8, 64, 77> SheatheState;
+ UpdateField<uint8, 64, 78> PvpFlags;
struct PvpFlagsTag : ViewerDependentValueTag<uint8> {};
- UpdateField<uint8, 64, 84> PetFlags;
- UpdateField<uint8, 64, 85> ShapeshiftForm;
- UpdateField<int32, 64, 86> AttackPower;
- UpdateField<int32, 64, 87> AttackPowerModPos;
- UpdateField<int32, 64, 88> AttackPowerModNeg;
- UpdateField<float, 64, 89> AttackPowerMultiplier;
- UpdateField<int32, 64, 90> AttackPowerModSupport;
- UpdateField<int32, 64, 91> RangedAttackPower;
- UpdateField<int32, 64, 92> RangedAttackPowerModPos;
- UpdateField<int32, 64, 93> RangedAttackPowerModNeg;
- UpdateField<float, 64, 94> RangedAttackPowerMultiplier;
- UpdateField<int32, 64, 95> RangedAttackPowerModSupport;
- UpdateField<int32, 96, 97> MainHandWeaponAttackPower;
- UpdateField<int32, 96, 98> OffHandWeaponAttackPower;
- UpdateField<int32, 96, 99> RangedWeaponAttackPower;
- UpdateField<int32, 96, 100> SetAttackSpeedAura;
- UpdateField<float, 96, 101> Lifesteal;
- UpdateField<float, 96, 102> MinRangedDamage;
- UpdateField<float, 96, 103> MaxRangedDamage;
- UpdateField<float, 96, 104> ManaCostMultiplier;
- UpdateField<float, 96, 105> MaxHealthModifier;
- UpdateField<float, 96, 106> HoverHeight;
- UpdateField<int32, 96, 107> MinItemLevelCutoff;
- UpdateField<int32, 96, 108> MinItemLevel;
- UpdateField<int32, 96, 109> MaxItemLevel;
- UpdateField<int32, 96, 110> AzeriteItemLevel;
- UpdateField<int32, 96, 111> WildBattlePetLevel;
- UpdateField<int32, 96, 112> BattlePetCompanionExperience;
- UpdateField<uint32, 96, 113> BattlePetCompanionNameTimestamp;
- UpdateField<int32, 96, 114> InteractSpellID;
- UpdateField<int32, 96, 115> ScaleDuration;
- UpdateField<int32, 96, 116> LooksLikeMountID;
- UpdateField<int32, 96, 117> LooksLikeCreatureID;
- UpdateField<int32, 96, 118> LookAtControllerID;
- UpdateField<int32, 96, 119> PerksVendorItemID;
- UpdateField<int32, 96, 120> TaxiNodesID;
- UpdateField<ObjectGuid, 96, 121> GuildGUID;
- UpdateField<int32, 96, 122> FlightCapabilityID;
- UpdateField<float, 96, 123> GlideEventSpeedDivisor; // Movement speed gets divided by this value when evaluating what GlideEvents to use
- UpdateField<uint32, 96, 124> SilencedSchoolMask;
- UpdateField<uint32, 96, 125> CurrentAreaID;
- UpdateField<ObjectGuid, 96, 126> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object
- UpdateFieldArray<uint32, 2, 127, 128> NpcFlags;
+ UpdateField<uint8, 64, 79> PetFlags;
+ UpdateField<uint8, 64, 80> ShapeshiftForm;
+ UpdateField<int32, 64, 81> AttackPower;
+ UpdateField<int32, 64, 82> AttackPowerModPos;
+ UpdateField<int32, 64, 83> AttackPowerModNeg;
+ UpdateField<float, 64, 84> AttackPowerMultiplier;
+ UpdateField<int32, 64, 85> RangedAttackPower;
+ UpdateField<int32, 64, 86> RangedAttackPowerModPos;
+ UpdateField<int32, 64, 87> RangedAttackPowerModNeg;
+ UpdateField<float, 64, 88> RangedAttackPowerMultiplier;
+ UpdateField<int32, 64, 89> SetAttackSpeedAura;
+ UpdateField<float, 64, 90> Lifesteal;
+ UpdateField<float, 64, 91> MinRangedDamage;
+ UpdateField<float, 64, 92> MaxRangedDamage;
+ UpdateField<float, 64, 93> MaxHealthModifier;
+ UpdateField<float, 64, 94> HoverHeight;
+ UpdateField<int32, 64, 95> MinItemLevelCutoff;
+ UpdateField<int32, 96, 97> MinItemLevel;
+ UpdateField<int32, 96, 98> MaxItemLevel;
+ UpdateField<int32, 96, 99> WildBattlePetLevel;
+ UpdateField<uint32, 96, 100> BattlePetCompanionNameTimestamp;
+ UpdateField<int32, 96, 101> InteractSpellID;
+ UpdateField<int32, 96, 102> ScaleDuration;
+ UpdateField<int32, 96, 103> LooksLikeMountID;
+ UpdateField<int32, 96, 104> LooksLikeCreatureID;
+ UpdateField<int32, 96, 105> LookAtControllerID;
+ UpdateField<int32, 96, 106> PerksVendorItemID;
+ UpdateField<ObjectGuid, 96, 107> GuildGUID;
+ UpdateField<ObjectGuid, 96, 108> SkinningOwnerGUID;
+ UpdateField<int32, 96, 109> FlightCapabilityID;
+ UpdateField<float, 96, 110> GlideEventSpeedDivisor; // Movement speed gets divided by this value when evaluating what GlideEvents to use
+ UpdateField<uint32, 96, 111> CurrentAreaID;
+ UpdateField<ObjectGuid, 96, 112> ComboTarget;
+ UpdateFieldArray<uint32, 2, 113, 114> NpcFlags;
struct NpcFlagsTag : ViewerDependentValueTag<uint32> {};
- UpdateFieldArray<int32, 10, 130, 131> Power;
- UpdateFieldArray<int32, 10, 130, 141> MaxPower;
- UpdateFieldArray<float, 10, 130, 151> PowerRegenFlatModifier;
- UpdateFieldArray<float, 10, 130, 161> PowerRegenInterruptedFlatModifier;
- UpdateFieldArray<UF::VisibleItem, 3, 171, 172> VirtualItems;
- UpdateFieldArray<uint32, 2, 175, 176> AttackRoundBaseTime;
- UpdateFieldArray<int32, 4, 178, 179> Stats;
- UpdateFieldArray<int32, 4, 178, 183> StatPosBuff;
- UpdateFieldArray<int32, 4, 178, 187> StatNegBuff;
- UpdateFieldArray<int32, 4, 178, 191> StatSupportBuff;
- UpdateFieldArray<int32, 7, 195, 196> Resistances;
- UpdateFieldArray<int32, 7, 195, 203> BonusResistanceMods;
- UpdateFieldArray<int32, 7, 195, 210> ManaCostModifier;
+ UpdateFieldArray<float, 10, 116, 117> PowerRegenFlatModifier;
+ UpdateFieldArray<float, 10, 116, 127> PowerRegenInterruptedFlatModifier;
+ UpdateFieldArray<int32, 10, 116, 137> Power;
+ UpdateFieldArray<int32, 10, 116, 147> MaxPower;
+ UpdateFieldArray<float, 10, 116, 157> ModPowerRegen; // Applies to power regen only if expansion < 2, hidden from lua
+ UpdateFieldArray<UF::VisibleItem, 3, 167, 168> VirtualItems;
+ UpdateFieldArray<uint32, 2, 171, 172> AttackRoundBaseTime;
+ UpdateFieldArray<int32, 5, 174, 175> Stats;
+ UpdateFieldArray<int32, 5, 174, 180> StatPosBuff;
+ UpdateFieldArray<int32, 5, 174, 185> StatNegBuff;
+ UpdateFieldArray<int32, 7, 190, 191> Resistances;
+ UpdateFieldArray<int32, 7, 190, 198> PowerCostModifier;
+ UpdateFieldArray<float, 7, 190, 205> PowerCostMultiplier;
+ UpdateFieldArray<int32, 7, 212, 213> ResistanceBuffModsPositive;
+ UpdateFieldArray<int32, 7, 212, 220> ResistanceBuffModsNegative;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const;
@@ -423,116 +347,72 @@ struct ChrCustomizationChoice : public IsUpdateFieldStructureTag
bool operator!=(ChrCustomizationChoice const& right) const { return !(*this == right); }
};
-struct QuestLog : public IsUpdateFieldStructureTag, public HasChangesMask<30>
+struct QuestLog : public IsUpdateFieldStructureTag, public HasChangesMask<29>
{
UpdateField<int64, 0, 1> EndTime;
UpdateField<int32, 0, 2> QuestID;
UpdateField<uint32, 0, 3> StateFlags;
- UpdateField<uint32, 0, 4> ObjectiveFlags;
- UpdateFieldArray<int16, 24, 5, 6> ObjectiveProgress;
+ UpdateFieldArray<uint16, 24, 4, 5> ObjectiveProgress;
void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
void ClearChangesMask();
};
-struct ArenaCooldown : public IsUpdateFieldStructureTag, public HasChangesMask<8>
+struct ArenaCooldown : public IsUpdateFieldStructureTag, public HasChangesMask<9>
{
UpdateField<int32, 0, 1> SpellID;
- UpdateField<int32, 0, 2> Charges;
- UpdateField<uint32, 0, 3> Flags;
- UpdateField<uint32, 0, 4> StartTime;
- UpdateField<uint32, 0, 5> EndTime;
- UpdateField<uint32, 0, 6> NextChargeTime;
- UpdateField<uint8, 0, 7> MaxCharges;
+ UpdateField<int32, 0, 2> ItemID;
+ UpdateField<int32, 0, 3> Charges;
+ UpdateField<uint32, 0, 4> Flags;
+ UpdateField<uint32, 0, 5> StartTime;
+ UpdateField<uint32, 0, 6> EndTime;
+ UpdateField<uint32, 0, 7> NextChargeTime;
+ UpdateField<uint8, 0, 8> MaxCharges;
void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
void ClearChangesMask();
};
-struct CTROptions : public IsUpdateFieldStructureTag
+struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<108>
{
- int32 ContentTuningConditionMask;
- uint32 Field_4;
- uint32 ExpansionLevelMask;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- bool operator==(CTROptions const& right) const;
- bool operator!=(CTROptions const& right) const { return !(*this == right); }
-};
-
-struct DeclinedNames : public IsUpdateFieldStructureTag, public HasChangesMask<6>
-{
- UpdateFieldArray<std::string, 5, 0, 1> Name;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- void ClearChangesMask();
-};
-
-struct CustomTabardInfo : public IsUpdateFieldStructureTag, public HasChangesMask<6>
-{
- UpdateField<int32, 0, 1> EmblemStyle;
- UpdateField<int32, 0, 2> EmblemColor;
- UpdateField<int32, 0, 3> BorderStyle;
- UpdateField<int32, 0, 4> BorderColor;
- UpdateField<int32, 0, 5> BackgroundColor;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- void ClearChangesMask();
-};
-
-struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<269>
-{
- UpdateField<bool, 0, 1> HasQuestSession;
- UpdateField<bool, 0, 2> HasLevelLink;
- DynamicUpdateField<UF::ChrCustomizationChoice, 0, 3> Customizations;
- DynamicUpdateField<UF::ChrCustomizationChoice, 0, 4> QaCustomizations;
- DynamicUpdateField<UF::QuestLog, 0, 5> QuestSessionQuestLog;
- DynamicUpdateField<UF::ArenaCooldown, 0, 6> ArenaCooldowns;
- DynamicUpdateField<int32, 0, 7> VisualItemReplacements;
- UpdateField<ObjectGuid, 0, 8> DuelArbiter;
- UpdateField<ObjectGuid, 0, 9> WowAccount;
- UpdateField<ObjectGuid, 0, 10> BnetAccount;
- UpdateField<uint64, 0, 11> GuildClubMemberID;
- UpdateField<ObjectGuid, 0, 12> LootTargetGUID;
- UpdateField<uint32, 0, 13> PlayerFlags;
- UpdateField<uint32, 0, 14> PlayerFlagsEx;
- UpdateField<uint32, 0, 15> GuildRankID;
- UpdateField<uint32, 0, 16> GuildDeleteDate;
- UpdateField<int32, 0, 17> GuildLevel;
- UpdateField<uint8, 0, 18> NativeSex;
- UpdateField<uint8, 0, 19> Inebriation;
- UpdateField<uint8, 0, 20> PvpTitle;
- UpdateField<uint8, 0, 21> ArenaFaction;
- UpdateField<uint32, 0, 22> DuelTeam;
- UpdateField<int32, 0, 23> GuildTimeStamp;
- UpdateField<int32, 0, 24> PlayerTitle;
- UpdateField<int32, 0, 25> FakeInebriation;
- UpdateField<uint32, 0, 26> VirtualPlayerRealm;
- UpdateField<uint32, 0, 27> CurrentSpecID;
- UpdateField<int32, 0, 28> TaxiMountAnimKitID;
- UpdateField<uint8, 0, 29> CurrentBattlePetBreedQuality;
- UpdateField<int32, 0, 30> HonorLevel;
- UpdateField<int64, 0, 31> LogoutTime;
- UpdateField<std::string, 32, 33> Name;
- UpdateField<int32, 32, 34> Field_B0;
- UpdateField<int32, 32, 35> Field_B4;
- UpdateField<int32, 32, 36> CurrentBattlePetSpeciesID;
- UpdateField<UF::CTROptions, 32, 37> CtrOptions;
- UpdateField<int32, 32, 38> CovenantID;
- UpdateField<int32, 32, 39> SoulbindID;
- UpdateField<WorldPackets::MythicPlus::DungeonScoreSummary, 32, 40> DungeonScore;
- OptionalUpdateField<UF::DeclinedNames, 32, 41> DeclinedNames;
- UpdateField<UF::CustomTabardInfo, 32, 42> PersonalTabard;
- UpdateFieldArray<uint8, 2, 43, 44> PartyType;
- UpdateFieldArray<UF::QuestLog, 175, 46, 47> QuestLog;
- UpdateFieldArray<UF::VisibleItem, 19, 222, 223> VisibleItems;
- UpdateFieldArray<float, 6, 242, 243> AvgItemLevel;
- UpdateFieldArray<uint32, 19, 249, 250> Field_3120;
+ DynamicUpdateField<UF::ChrCustomizationChoice, 0, 1> Customizations;
+ DynamicUpdateField<UF::ArenaCooldown, 0, 2> ArenaCooldowns;
+ DynamicUpdateField<int32, 0, 3> VisualItemReplacements;
+ UpdateField<ObjectGuid, 0, 4> DuelArbiter;
+ UpdateField<ObjectGuid, 0, 5> WowAccount;
+ UpdateField<ObjectGuid, 0, 6> LootTargetGUID;
+ UpdateField<uint32, 0, 7> PlayerFlags;
+ UpdateField<uint32, 0, 8> PlayerFlagsEx;
+ UpdateField<uint32, 0, 9> GuildRankID;
+ UpdateField<uint32, 0, 10> GuildDeleteDate;
+ UpdateField<int32, 0, 11> GuildLevel;
+ UpdateField<uint8, 0, 12> NumBankSlots;
+ UpdateField<uint8, 0, 13> NativeSex;
+ UpdateField<uint8, 0, 14> Inebriation;
+ UpdateField<uint8, 0, 15> PvpTitle;
+ UpdateField<uint8, 0, 16> ArenaFaction;
+ UpdateField<uint8, 0, 17> PvpRank;
+ UpdateField<int32, 0, 18> Field_88;
+ UpdateField<uint32, 0, 19> DuelTeam;
+ UpdateField<int32, 0, 20> GuildTimeStamp;
+ UpdateField<int32, 0, 21> PlayerTitle;
+ UpdateField<int32, 0, 22> FakeInebriation;
+ UpdateField<uint32, 0, 23> VirtualPlayerRealm;
+ UpdateField<uint32, 0, 24> CurrentSpecID;
+ UpdateField<int32, 0, 25> TaxiMountAnimKitID;
+ UpdateField<uint8, 0, 26> CurrentBattlePetBreedQuality;
+ UpdateField<int32, 0, 27> HonorLevel;
+ UpdateField<int64, 0, 28> LogoutTime;
+ UpdateField<int32, 0, 29> CurrentBattlePetSpeciesID;
+ UpdateField<ObjectGuid, 0, 30> BnetAccount; // For telemetry
+ UpdateField<WorldPackets::MythicPlus::DungeonScoreSummary, 0, 31> DungeonScore;
+ UpdateFieldArray<uint8, 2, 32, 33> PartyType;
+ UpdateFieldArray<UF::QuestLog, 25, 35, 36> QuestLog;
+ UpdateFieldArray<UF::VisibleItem, 19, 61, 62> VisibleItems;
+ UpdateFieldArray<float, 6, 81, 82> AvgItemLevel;
+ UpdateFieldArray<uint32, 19, 88, 89> Field_3120;
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;
@@ -651,69 +531,6 @@ struct ResearchHistory : public IsUpdateFieldStructureTag, public HasChangesMask
void ClearChangesMask();
};
-struct MawPower : public IsUpdateFieldStructureTag
-{
- int32 Field_0;
- int32 Field_4;
- int32 Field_8;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- bool operator==(MawPower const& right) const;
- bool operator!=(MawPower const& right) const { return !(*this == right); }
-};
-
-struct MultiFloorExplore : public IsUpdateFieldStructureTag
-{
- std::vector<int32> WorldMapOverlayIDs;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- bool operator==(MultiFloorExplore const& right) const;
- bool operator!=(MultiFloorExplore const& right) const { return !(*this == right); }
-};
-
-struct RecipeProgressionInfo : public IsUpdateFieldStructureTag
-{
- uint16 RecipeProgressionGroupID;
- uint16 Experience;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- bool operator==(RecipeProgressionInfo const& right) const;
- bool operator!=(RecipeProgressionInfo const& right) const { return !(*this == right); }
-};
-
-struct ActivePlayerUnk901 : public IsUpdateFieldStructureTag, public HasChangesMask<3>
-{
- UpdateField<ObjectGuid, 0, 1> Field_0;
- UpdateField<int32, 0, 2> Field_10;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- void ClearChangesMask();
-};
-
-struct QuestSession : public IsUpdateFieldStructureTag, public HasChangesMask<878>
-{
- UpdateField<ObjectGuid, 0, 1> Owner;
- UpdateFieldArray<uint64, 875, 2, 3> QuestCompleted;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- void ClearChangesMask();
-};
-
-struct ReplayedQuest : public IsUpdateFieldStructureTag, public HasChangesMask<3>
-{
- UpdateField<int32, 0, 1> QuestID;
- UpdateField<uint32, 0, 2> ReplayTime;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- void ClearChangesMask();
-};
-
struct TraitEntry : public IsUpdateFieldStructureTag
{
int32 TraitNodeID;
@@ -744,70 +561,6 @@ struct TraitConfig : public IsUpdateFieldStructureTag, public HasChangesMask<12>
void ClearChangesMask();
};
-struct CraftingOrderItem : public IsUpdateFieldStructureTag, public HasChangesMask<7>
-{
- UpdateField<uint64, -1, 0> Field_0;
- UpdateField<ObjectGuid, -1, 1> ItemGUID;
- UpdateField<ObjectGuid, -1, 2> OwnerGUID;
- UpdateField<int32, -1, 3> ItemID;
- UpdateField<uint32, -1, 4> Quantity;
- UpdateField<int32, -1, 5> ReagentQuality;
- OptionalUpdateField<uint8, -1, 6> DataSlotIndex;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- void ClearChangesMask();
-};
-
-struct CraftingOrderData : public IsUpdateFieldStructureTag, public HasChangesMask<24>
-{
- DynamicUpdateField<UF::CraftingOrderItem, 0, 1> Reagents;
- UpdateField<int32, 0, 2> Field_0;
- UpdateField<uint64, 0, 3> OrderID;
- UpdateField<int32, 0, 4> SkillLineAbilityID;
- UpdateField<uint8, 5, 6> OrderState;
- UpdateField<uint8, 5, 7> OrderType;
- UpdateField<uint8, 5, 8> MinQuality;
- UpdateField<int64, 5, 9> ExpirationTime;
- UpdateField<int64, 10, 11> ClaimEndTime;
- UpdateField<int64, 10, 12> TipAmount;
- UpdateField<int64, 10, 13> ConsortiumCut;
- UpdateField<uint32, 10, 14> Flags;
- UpdateField<ObjectGuid, 15, 16> CustomerGUID;
- UpdateField<ObjectGuid, 15, 17> CustomerAccountGUID;
- UpdateField<ObjectGuid, 15, 18> CrafterGUID;
- UpdateField<ObjectGuid, 15, 19> PersonalCrafterGUID;
- UpdateField<std::string, 20, 21> CustomerNotes;
- OptionalUpdateField<UF::CraftingOrderItem, 20, 22> OutputItem;
- OptionalUpdateField<WorldPackets::Item::ItemInstance, 20, 23> OutputItemData;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- void ClearChangesMask();
-};
-
-struct CraftingOrder : public IsUpdateFieldStructureTag, public HasChangesMask<4>
-{
- DynamicUpdateField<WorldPackets::Item::ItemEnchantData, -1, 0> Enchantments;
- DynamicUpdateField<WorldPackets::Item::ItemGemData, -1, 1> Gems;
- UpdateField<UF::CraftingOrderData, -1, 2> Data;
- OptionalUpdateField<WorldPackets::Item::ItemInstance, -1, 3> RecraftItemInfo;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- void ClearChangesMask();
-};
-
-struct PersonalCraftingOrderCount : public IsUpdateFieldStructureTag, public HasChangesMask<3>
-{
- UpdateField<int32, 0, 1> ProfessionID;
- UpdateField<uint32, 0, 2> Count;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- void ClearChangesMask();
-};
-
struct CategoryCooldownMod : public IsUpdateFieldStructureTag
{
int32 SpellCategoryID;
@@ -855,17 +608,6 @@ struct StableInfo : public IsUpdateFieldStructureTag, public HasChangesMask<3>
void ClearChangesMask();
};
-struct CollectableSourceTrackedData : public IsUpdateFieldStructureTag, public HasChangesMask<4>
-{
- UpdateField<int32, 0, 1> TargetType;
- UpdateField<int32, 0, 2> TargetID;
- UpdateField<int32, 0, 3> CollectableSourceInfoID;
-
- void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
- void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
- void ClearChangesMask();
-};
-
struct Research : public IsUpdateFieldStructureTag
{
int16 ResearchProjectID;
@@ -876,153 +618,146 @@ struct Research : public IsUpdateFieldStructureTag
bool operator!=(Research const& right) const { return !(*this == right); }
};
-struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1616>
-{
- UpdateField<bool, 0, 1> BackpackAutoSortDisabled;
- UpdateField<bool, 0, 2> BackpackSellJunkDisabled;
- UpdateField<bool, 0, 3> BankAutoSortDisabled;
- UpdateField<bool, 0, 4> SortBagsRightToLeft;
- UpdateField<bool, 0, 5> InsertItemsLeftToRight;
- UpdateField<bool, 0, 6> HasPerksProgramPendingReward;
- UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 36, 37> ResearchSites;
- UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 38, 39> ResearchSiteProgress;
- UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 40, 41> Research;
- DynamicUpdateField<uint64, 0, 7> KnownTitles;
- DynamicUpdateField<int32, 0, 9> DailyQuestsCompleted;
- DynamicUpdateField<int32, 0, 10> AvailableQuestLineXQuestIDs;
- DynamicUpdateField<int32, 0, 11> Heirlooms;
- DynamicUpdateField<uint32, 0, 12> HeirloomFlags;
- DynamicUpdateField<int32, 0, 13> Toys;
- DynamicUpdateField<uint32, 0, 14> ToyFlags;
- DynamicUpdateField<uint32, 0, 15> Transmog;
- DynamicUpdateField<int32, 0, 16> ConditionalTransmog;
- DynamicUpdateField<int32, 0, 17> SelfResSpells;
- DynamicUpdateField<uint32, 0, 18> RuneforgePowers;
- DynamicUpdateField<uint32, 0, 19> TransmogIllusions;
- DynamicUpdateField<UF::SpellPctModByLabel, 0, 21> SpellPctModByLabel;
- DynamicUpdateField<UF::SpellFlatModByLabel, 0, 22> SpellFlatModByLabel;
- DynamicUpdateField<UF::MawPower, 0, 23> MawPowers;
- DynamicUpdateField<UF::MultiFloorExplore, 0, 24> MultiFloorExploration;
- DynamicUpdateField<UF::RecipeProgressionInfo, 0, 25> RecipeProgression;
- DynamicUpdateField<UF::ReplayedQuest, 0, 26> ReplayedQuests;
- DynamicUpdateField<UF::QuestLog, 0, 27> TaskQuests;
- DynamicUpdateField<int32, 0, 28> DisabledSpells;
- DynamicUpdateField<UF::PersonalCraftingOrderCount, 0, 31> PersonalCraftingOrderCounts;
- DynamicUpdateField<UF::CategoryCooldownMod, 32, 33> CategoryCooldownMods;
- DynamicUpdateField<UF::WeeklySpellUse, 32, 34> WeeklySpellUses;
- DynamicUpdateField<UF::CollectableSourceTrackedData, 32, 35> TrackedCollectableSources;
- DynamicUpdateField<UF::PVPInfo, 0, 8> PvpInfo;
- DynamicUpdateField<UF::CharacterRestriction, 0, 20> CharacterRestrictions;
- DynamicUpdateField<UF::TraitConfig, 0, 29> TraitConfigs;
- DynamicUpdateField<UF::CraftingOrder, 0, 30> CraftingOrders;
- UpdateField<ObjectGuid, 32, 42> FarsightObject;
- UpdateField<ObjectGuid, 32, 43> SummonedBattlePetGUID;
- UpdateField<uint64, 32, 44> Coinage;
- UpdateField<int32, 32, 45> XP;
- UpdateField<int32, 32, 46> NextLevelXP;
- UpdateField<int32, 32, 47> TrialXP;
- UpdateField<UF::SkillInfo, 32, 48> Skill;
- UpdateField<int32, 32, 49> CharacterPoints;
- UpdateField<int32, 32, 50> MaxTalentTiers;
- UpdateField<uint32, 32, 51> TrackCreatureMask;
- UpdateField<float, 32, 52> MainhandExpertise;
- UpdateField<float, 32, 53> OffhandExpertise;
- UpdateField<float, 32, 54> RangedExpertise;
- UpdateField<float, 32, 55> CombatRatingExpertise;
- UpdateField<float, 32, 56> BlockPercentage;
- UpdateField<float, 32, 57> DodgePercentage;
- UpdateField<float, 32, 58> DodgePercentageFromAttribute;
- UpdateField<float, 32, 59> ParryPercentage;
- UpdateField<float, 32, 60> ParryPercentageFromAttribute;
- UpdateField<float, 32, 61> CritPercentage;
- UpdateField<float, 32, 62> RangedCritPercentage;
- UpdateField<float, 32, 63> OffhandCritPercentage;
- UpdateField<float, 32, 64> SpellCritPercentage;
- UpdateField<int32, 32, 65> ShieldBlock;
- UpdateField<float, 32, 66> ShieldBlockCritPercentage;
- UpdateField<float, 32, 67> Mastery;
- UpdateField<float, 32, 68> Speed;
- UpdateField<float, 32, 69> Avoidance;
- UpdateField<float, 70, 71> Sturdiness;
- UpdateField<int32, 70, 72> Versatility;
- UpdateField<float, 70, 73> VersatilityBonus;
- UpdateField<float, 70, 74> PvpPowerDamage;
- UpdateField<float, 70, 75> PvpPowerHealing;
- UpdateField<int32, 70, 76> ModHealingDonePos;
- UpdateField<float, 70, 77> ModHealingPercent;
- UpdateField<float, 70, 78> ModPeriodicHealingDonePercent;
- UpdateField<float, 70, 79> ModSpellPowerPercent;
- UpdateField<float, 70, 80> ModResiliencePercent;
- UpdateField<float, 70, 81> OverrideSpellPowerByAPPercent;
- UpdateField<float, 70, 82> OverrideAPBySpellPowerPercent;
- UpdateField<int32, 70, 83> ModTargetResistance;
- UpdateField<int32, 70, 84> ModTargetPhysicalResistance;
- UpdateField<uint32, 70, 85> LocalFlags;
- UpdateField<uint8, 70, 86> GrantableLevels;
- UpdateField<uint8, 70, 87> MultiActionBars;
- UpdateField<uint8, 70, 88> LifetimeMaxRank;
- UpdateField<uint8, 70, 89> NumRespecs;
- UpdateField<uint32, 70, 90> PvpMedals;
- UpdateField<uint16, 70, 91> TodayHonorableKills;
- UpdateField<uint16, 70, 92> YesterdayHonorableKills;
- UpdateField<uint32, 70, 93> LifetimeHonorableKills;
- UpdateField<int32, 70, 94> WatchedFactionIndex;
- UpdateField<int32, 70, 95> MaxLevel;
- UpdateField<int32, 70, 96> ScalingPlayerLevelDelta;
- UpdateField<int32, 70, 97> MaxCreatureScalingLevel;
- UpdateField<int32, 70, 98> PetSpellPower;
- UpdateField<float, 70, 99> UiHitModifier;
- UpdateField<float, 70, 100> UiSpellHitModifier;
- UpdateField<int32, 70, 101> HomeRealmTimeOffset;
- UpdateField<float, 102, 103> ModPetHaste;
- UpdateField<int8, 102, 104> JailersTowerLevelMax;
- UpdateField<int8, 102, 105> JailersTowerLevel;
- UpdateField<uint8, 102, 106> LocalRegenFlags;
- UpdateField<uint8, 102, 107> AuraVision;
- UpdateField<uint8, 102, 108> NumBackpackSlots;
- UpdateField<int32, 102, 109> OverrideSpellsID;
- UpdateField<uint16, 102, 110> LootSpecID;
- UpdateField<uint32, 102, 111> OverrideZonePVPType;
- UpdateField<int32, 102, 112> Honor;
- UpdateField<int32, 102, 113> HonorNextLevel;
- UpdateField<int32, 102, 114> PerksProgramCurrency;
- UpdateField<uint8, 102, 115> NumBankSlots;
+struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1525>
+{
+ UpdateField<bool, 0, 1> SortBagsRightToLeft;
+ UpdateField<bool, 0, 2> InsertItemsLeftToRight;
+ UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 20, 21> ResearchSites;
+ UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 22, 23> ResearchSiteProgress;
+ UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 24, 25> Research;
+ DynamicUpdateField<uint64, 0, 3> KnownTitles;
+ DynamicUpdateField<int32, 0, 4> DailyQuestsCompleted;
+ DynamicUpdateField<int32, 0, 5> AvailableQuestLineXQuestIDs;
+ DynamicUpdateField<int32, 0, 6> Field_1000;
+ DynamicUpdateField<int32, 0, 7> Heirlooms;
+ DynamicUpdateField<uint32, 0, 8> HeirloomFlags;
+ DynamicUpdateField<int32, 0, 9> Toys;
+ DynamicUpdateField<uint32, 0, 10> Transmog;
+ DynamicUpdateField<int32, 0, 11> ConditionalTransmog;
+ DynamicUpdateField<int32, 0, 12> SelfResSpells;
+ DynamicUpdateField<UF::SpellPctModByLabel, 0, 14> SpellPctModByLabel;
+ DynamicUpdateField<UF::SpellFlatModByLabel, 0, 15> SpellFlatModByLabel;
+ DynamicUpdateField<UF::QuestLog, 0, 16> TaskQuests;
+ DynamicUpdateField<UF::CategoryCooldownMod, 0, 18> CategoryCooldownMods;
+ DynamicUpdateField<UF::WeeklySpellUse, 0, 19> WeeklySpellUses;
+ DynamicUpdateField<UF::CharacterRestriction, 0, 13> CharacterRestrictions;
+ DynamicUpdateField<UF::TraitConfig, 0, 17> TraitConfigs;
+ UpdateField<ObjectGuid, 0, 26> FarsightObject;
+ UpdateField<ObjectGuid, 0, 27> SummonedBattlePetGUID;
+ UpdateField<uint64, 0, 28> Coinage;
+ UpdateField<int32, 0, 29> XP;
+ UpdateField<int32, 0, 30> NextLevelXP;
+ UpdateField<int32, 0, 31> TrialXP;
+ UpdateField<UF::SkillInfo, 0, 32> Skill;
+ UpdateField<int32, 0, 33> CharacterPoints;
+ UpdateField<int32, 0, 34> MaxTalentTiers;
+ UpdateField<uint32, 0, 35> TrackCreatureMask;
+ UpdateField<float, 0, 36> MainhandExpertise;
+ UpdateField<float, 0, 37> OffhandExpertise;
+ UpdateField<float, 38, 39> RangedExpertise;
+ UpdateField<float, 38, 40> CombatRatingExpertise;
+ UpdateField<float, 38, 41> BlockPercentage;
+ UpdateField<float, 38, 42> DodgePercentage;
+ UpdateField<float, 38, 43> DodgePercentageFromAttribute;
+ UpdateField<float, 38, 44> ParryPercentage;
+ UpdateField<float, 38, 45> ParryPercentageFromAttribute;
+ UpdateField<float, 38, 46> CritPercentage;
+ UpdateField<float, 38, 47> RangedCritPercentage;
+ UpdateField<float, 38, 48> OffhandCritPercentage;
+ UpdateField<int32, 38, 49> ShieldBlock;
+ UpdateField<float, 38, 50> ShieldBlockCritPercentage;
+ UpdateField<float, 38, 51> Mastery;
+ UpdateField<float, 38, 52> Speed;
+ UpdateField<float, 38, 53> Avoidance;
+ UpdateField<float, 38, 54> Sturdiness;
+ UpdateField<int32, 38, 55> Versatility;
+ UpdateField<float, 38, 56> VersatilityBonus;
+ UpdateField<float, 38, 57> PvpPowerDamage;
+ UpdateField<float, 38, 58> PvpPowerHealing;
+ UpdateField<int32, 38, 59> ModHealingDonePos;
+ UpdateField<float, 38, 60> ModHealingPercent;
+ UpdateField<float, 38, 61> ModHealingDonePercent;
+ UpdateField<float, 38, 62> ModPeriodicHealingDonePercent;
+ UpdateField<float, 38, 63> ModSpellPowerPercent;
+ UpdateField<float, 38, 64> ModResiliencePercent;
+ UpdateField<float, 38, 65> OverrideSpellPowerByAPPercent;
+ UpdateField<float, 38, 66> OverrideAPBySpellPowerPercent;
+ UpdateField<int32, 38, 67> ModTargetResistance;
+ UpdateField<int32, 38, 68> ModTargetPhysicalResistance;
+ UpdateField<uint32, 38, 69> LocalFlags;
+ UpdateField<uint8, 70, 71> GrantableLevels;
+ UpdateField<uint8, 70, 72> MultiActionBars;
+ UpdateField<uint8, 70, 73> LifetimeMaxRank;
+ UpdateField<uint8, 70, 74> NumRespecs;
+ UpdateField<int32, 70, 75> AmmoID;
+ UpdateField<uint32, 70, 76> PvpMedals;
+ UpdateField<uint16, 70, 77> TodayHonorableKills;
+ UpdateField<uint16, 70, 78> TodayDishonorableKills;
+ UpdateField<uint16, 70, 79> YesterdayHonorableKills;
+ UpdateField<uint16, 70, 80> YesterdayDishonorableKills;
+ UpdateField<uint16, 70, 81> LastWeekHonorableKills;
+ UpdateField<uint16, 70, 82> LastWeekDishonorableKills;
+ UpdateField<uint16, 70, 83> ThisWeekHonorableKills;
+ UpdateField<uint16, 70, 84> ThisWeekDishonorableKills;
+ UpdateField<uint32, 70, 85> ThisWeekContribution;
+ UpdateField<uint32, 70, 86> LifetimeHonorableKills;
+ UpdateField<uint32, 70, 87> LifetimeDishonorableKills;
+ UpdateField<uint32, 70, 88> Field_F24;
+ UpdateField<uint32, 70, 89> YesterdayContribution;
+ UpdateField<uint32, 70, 90> LastWeekContribution;
+ UpdateField<uint32, 70, 91> LastWeekRank;
+ UpdateField<int32, 70, 92> WatchedFactionIndex;
+ UpdateField<int32, 70, 93> MaxLevel;
+ UpdateField<int32, 70, 94> ScalingPlayerLevelDelta;
+ UpdateField<int32, 70, 95> MaxCreatureScalingLevel;
+ UpdateField<int32, 70, 96> PetSpellPower;
+ UpdateField<float, 70, 97> UiHitModifier;
+ UpdateField<float, 70, 98> UiSpellHitModifier;
+ UpdateField<int32, 70, 99> HomeRealmTimeOffset;
+ UpdateField<float, 70, 100> ModPetHaste;
+ UpdateField<uint8, 70, 101> LocalRegenFlags;
+ UpdateField<uint8, 102, 103> AuraVision;
+ UpdateField<uint8, 102, 104> NumBackpackSlots;
+ UpdateField<int32, 102, 105> OverrideSpellsID;
+ UpdateField<int32, 102, 106> LfgBonusFactionID;
+ UpdateField<uint16, 102, 107> LootSpecID;
+ UpdateField<uint32, 102, 108> OverrideZonePVPType;
+ UpdateField<int32, 102, 109> Honor;
+ UpdateField<int32, 102, 110> HonorNextLevel;
+ UpdateField<int32, 102, 111> Field_F74;
+ UpdateField<int32, 102, 112> PvpTierMaxFromWins;
+ UpdateField<int32, 102, 113> PvpLastWeeksTierMaxFromWins;
+ UpdateField<uint8, 102, 114> PvpRankProgress;
+ UpdateField<int32, 102, 115> PerksProgramCurrency;
UpdateField<UF::ResearchHistory, 102, 116> ResearchHistory;
UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 102, 117> FrozenPerksVendorItem;
- UpdateField<UF::ActivePlayerUnk901, 102, 119> Field_1410;
- OptionalUpdateField<UF::QuestSession, 102, 118> QuestSession;
- UpdateField<int32, 102, 120> UiChromieTimeExpansionID;
- UpdateField<int32, 102, 121> TransportServerTime;
- UpdateField<uint32, 102, 122> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
- UpdateField<int16, 102, 123> DEBUGSoulbindConduitRank;
- UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 102, 124> DungeonScore;
- UpdateField<uint32, 102, 125> ActiveCombatTraitConfigID;
- UpdateField<int32, 102, 126> ItemUpgradeHighOnehandWeaponItemID;
- UpdateField<int32, 102, 127> ItemUpgradeHighFingerItemID;
- UpdateField<float, 102, 128> ItemUpgradeHighFingerWatermark;
- UpdateField<int32, 102, 129> ItemUpgradeHighTrinketItemID;
- UpdateField<float, 102, 130> ItemUpgradeHighTrinketWatermark;
- UpdateField<uint64, 102, 131> LootHistoryInstanceID;
- OptionalUpdateField<UF::StableInfo, 102, 132> PetStable;
- UpdateField<uint8, 102, 133> RequiredMountCapabilityFlags;
- UpdateFieldArray<ObjectGuid, 227, 134, 135> InvSlots;
- UpdateFieldArray<uint64, 240, 362, 363> ExploredZones;
- UpdateFieldArray<UF::RestInfo, 2, 603, 604> RestInfo;
- UpdateFieldArray<int32, 7, 606, 607> ModDamageDonePos;
- UpdateFieldArray<int32, 7, 606, 614> ModDamageDoneNeg;
- UpdateFieldArray<float, 7, 606, 621> ModDamageDonePercent;
- UpdateFieldArray<float, 7, 606, 628> ModHealingDonePercent;
- UpdateFieldArray<float, 3, 635, 636> WeaponDmgMultipliers;
- UpdateFieldArray<float, 3, 635, 639> WeaponAtkSpeedMultipliers;
- UpdateFieldArray<uint32, 12, 642, 643> BuybackPrice;
- UpdateFieldArray<int64, 12, 642, 655> BuybackTimestamp;
- UpdateFieldArray<int32, 32, 667, 668> CombatRatings;
- UpdateFieldArray<uint32, 4, 700, 701> NoReagentCostMask;
- UpdateFieldArray<int32, 2, 705, 706> ProfessionSkillLine;
- UpdateFieldArray<uint32, 5, 708, 709> BagSlotFlags;
- UpdateFieldArray<uint32, 7, 714, 715> BankBagSlotFlags;
- UpdateFieldArray<uint64, 875, 722, 723> QuestCompleted;
- UpdateFieldArray<float, 17, 1598, 1599> ItemUpgradeHighWatermark;
+ UpdateField<int32, 102, 118> TransportServerTime;
+ UpdateField<uint32, 102, 119> ActiveCombatTraitConfigID;
+ UpdateField<uint8, 102, 120> GlyphsEnabled;
+ UpdateField<uint8, 102, 121> LfgRoles;
+ OptionalUpdateField<UF::StableInfo, 102, 122> PetStable;
+ UpdateField<uint8, 102, 123> NumStableSlots;
+ UpdateFieldArray<ObjectGuid, 141, 124, 125> InvSlots;
+ UpdateFieldArray<uint32, 2, 266, 267> TrackResourceMask;
+ UpdateFieldArray<float, 7, 269, 270> SpellCritPercentage;
+ UpdateFieldArray<int32, 7, 269, 277> ModDamageDonePos;
+ UpdateFieldArray<int32, 7, 269, 284> ModDamageDoneNeg;
+ UpdateFieldArray<float, 7, 269, 291> ModDamageDonePercent;
+ UpdateFieldArray<uint64, 240, 298, 299> ExploredZones;
+ UpdateFieldArray<UF::RestInfo, 2, 539, 540> RestInfo;
+ UpdateFieldArray<float, 3, 542, 543> WeaponDmgMultipliers;
+ UpdateFieldArray<float, 3, 542, 546> WeaponAtkSpeedMultipliers;
+ UpdateFieldArray<uint32, 12, 549, 550> BuybackPrice;
+ UpdateFieldArray<int64, 12, 549, 562> BuybackTimestamp;
+ UpdateFieldArray<int32, 32, 574, 575> CombatRatings;
+ UpdateFieldArray<UF::PVPInfo, 7, 607, 608> 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;
+ UpdateFieldArray<uint32, 6, 1512, 1513> GlyphSlots;
+ UpdateFieldArray<uint32, 6, 1512, 1519> Glyphs;
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;
@@ -1030,7 +765,7 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
void ClearChangesMask();
};
-struct GameObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<25>
+struct GameObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<20>
{
UpdateField<std::vector<uint32>, 0, 1> StateWorldEffectIDs;
DynamicUpdateField<int32, 0, 2> EnableDoodadSets;
@@ -1040,24 +775,19 @@ struct GameObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<
UpdateField<uint32, 0, 6> StateSpellVisualID;
UpdateField<uint32, 0, 7> SpawnTrackingStateAnimID;
UpdateField<uint32, 0, 8> SpawnTrackingStateAnimKitID;
- UpdateField<uint32, 0, 9> StateWorldEffectsQuestObjectiveID;
- UpdateField<ObjectGuid, 0, 10> CreatedBy;
- UpdateField<ObjectGuid, 0, 11> GuildGUID;
- UpdateField<uint32, 0, 12> Flags;
+ UpdateField<ObjectGuid, 0, 9> CreatedBy;
+ UpdateField<ObjectGuid, 0, 10> GuildGUID;
+ UpdateField<uint32, 0, 11> Flags;
struct FlagsTag : ViewerDependentValueTag<uint32> {};
- UpdateField<QuaternionData, 0, 13> ParentRotation;
- UpdateField<int32, 0, 14> FactionTemplate;
+ UpdateField<QuaternionData, 0, 12> ParentRotation;
+ UpdateField<int32, 0, 13> FactionTemplate;
+ UpdateField<int32, 0, 14> Level;
UpdateField<int8, 0, 15> State;
struct StateTag : ViewerDependentValueTag<int8> {};
UpdateField<int8, 0, 16> TypeID;
UpdateField<uint8, 0, 17> PercentHealth;
UpdateField<uint32, 0, 18> ArtKit;
UpdateField<uint32, 0, 19> CustomParam;
- UpdateField<int32, 0, 20> Level;
- UpdateField<uint32, 0, 21> AnimGroupInstance;
- UpdateField<uint32, 0, 22> UiWidgetItemID;
- UpdateField<uint32, 0, 23> UiWidgetItemQuality;
- UpdateField<uint32, 0, 24> UiWidgetItemUnknown1000;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const;
@@ -1069,7 +799,7 @@ struct DynamicObjectData : public IsUpdateFieldStructureTag, public HasChangesMa
{
UpdateField<ObjectGuid, 0, 1> Caster;
UpdateField<uint8, 0, 2> Type;
- UpdateField<UF::SpellCastVisual, 0, 3> SpellVisual;
+ UpdateField<int32, 0, 3> SpellXSpellVisualID;
UpdateField<int32, 0, 4> SpellID;
UpdateField<float, 0, 5> Radius;
UpdateField<uint32, 0, 6> CastTime;
@@ -1080,7 +810,7 @@ struct DynamicObjectData : public IsUpdateFieldStructureTag, public HasChangesMa
void ClearChangesMask();
};
-struct CorpseData : public IsUpdateFieldStructureTag, public HasChangesMask<33>
+struct CorpseData : public IsUpdateFieldStructureTag, public HasChangesMask<32>
{
DynamicUpdateField<UF::ChrCustomizationChoice, 0, 1> Customizations;
UpdateField<uint32, 0, 2> DynamicFlags;
@@ -1093,8 +823,7 @@ struct CorpseData : public IsUpdateFieldStructureTag, public HasChangesMask<33>
UpdateField<uint8, 0, 9> Class;
UpdateField<uint32, 0, 10> Flags;
UpdateField<int32, 0, 11> FactionTemplate;
- UpdateField<uint32, 0, 12> StateSpellVisualKitID;
- UpdateFieldArray<uint32, 19, 13, 14> Items;
+ UpdateFieldArray<uint32, 19, 12, 13> Items;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Corpse const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Corpse const* owner, Player const* receiver) const;
@@ -1126,33 +855,27 @@ struct VisualAnim : public IsUpdateFieldStructureTag, public HasChangesMask<5>
void ClearChangesMask();
};
-struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<26>
-{
- UpdateField<bool, 0, 1> HeightIgnoresScale;
- UpdateField<bool, 0, 2> Field_261;
- UpdateField<UF::ScaleCurve, 0, 3> OverrideScaleCurve;
- UpdateField<UF::ScaleCurve, 0, 4> ExtraScaleCurve;
- UpdateField<UF::ScaleCurve, 0, 5> OverrideMoveCurveX;
- UpdateField<UF::ScaleCurve, 0, 6> OverrideMoveCurveY;
- UpdateField<UF::ScaleCurve, 0, 7> OverrideMoveCurveZ;
- UpdateField<ObjectGuid, 0, 8> Caster;
- UpdateField<uint32, 0, 9> Duration;
- UpdateField<uint32, 0, 10> TimeToTarget;
- UpdateField<uint32, 0, 11> TimeToTargetScale;
- UpdateField<uint32, 0, 12> TimeToTargetExtraScale;
- UpdateField<uint32, 0, 13> TimeToTargetPos; // Linked to m_overrideMoveCurve
- UpdateField<int32, 0, 14> SpellID;
- UpdateField<int32, 0, 15> SpellForVisuals;
- UpdateField<UF::SpellCastVisual, 0, 16> SpellVisual;
- UpdateField<float, 0, 17> BoundsRadius2D;
- UpdateField<uint32, 0, 18> DecalPropertiesID;
- UpdateField<ObjectGuid, 0, 19> CreatingEffectGUID;
- UpdateField<uint32, 0, 20> NumUnitsInside;
- UpdateField<uint32, 0, 21> NumPlayersInside; // When not 0 this causes SpellVisualEvent 14 to trigger, playing alternate visuals, typically used by "SOAK THIS" areatriggers
- UpdateField<ObjectGuid, 0, 22> OrbitPathTarget;
- UpdateField<TaggedPosition<Position::XYZ>, 0, 23> RollPitchYaw;
- UpdateField<int32, 0, 24> PositionalSoundKitID;
- UpdateField<UF::VisualAnim, 0, 25> VisualAnim;
+struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<20>
+{
+ UpdateField<UF::ScaleCurve, 0, 1> OverrideScaleCurve;
+ UpdateField<UF::ScaleCurve, 0, 2> ExtraScaleCurve;
+ UpdateField<UF::ScaleCurve, 0, 3> OverrideMoveCurveX;
+ UpdateField<UF::ScaleCurve, 0, 4> OverrideMoveCurveY;
+ UpdateField<UF::ScaleCurve, 0, 5> OverrideMoveCurveZ;
+ UpdateField<ObjectGuid, 0, 6> Caster;
+ UpdateField<uint32, 0, 7> Duration;
+ UpdateField<uint32, 0, 8> TimeToTarget;
+ UpdateField<uint32, 0, 9> TimeToTargetScale;
+ UpdateField<uint32, 0, 10> TimeToTargetExtraScale;
+ UpdateField<uint32, 0, 11> TimeToTargetPos; // Linked to m_overrideMoveCurve
+ UpdateField<int32, 0, 12> SpellID;
+ UpdateField<int32, 0, 13> SpellForVisuals;
+ UpdateField<int32, 0, 14> SpellXSpellVisualID;
+ UpdateField<float, 0, 15> BoundsRadius2D;
+ UpdateField<uint32, 0, 16> DecalPropertiesID;
+ UpdateField<ObjectGuid, 0, 17> CreatingEffectGUID;
+ UpdateField<ObjectGuid, 0, 18> OrbitPathTarget;
+ UpdateField<UF::VisualAnim, 0, 19> VisualAnim;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const;
@@ -1176,13 +899,11 @@ struct SceneObjectData : public IsUpdateFieldStructureTag, public HasChangesMask
struct ConversationLine : public IsUpdateFieldStructureTag
{
int32 ConversationLineID;
- int32 BroadcastTextID;
uint32 StartTime;
struct StartTimeTag : ViewerDependentValueTag<uint32> {};
int32 UiCameraID;
uint8 ActorIndex;
uint8 Flags;
- uint8 ChatType;
void WriteCreate(ByteBuffer& data, Conversation const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Conversation const* owner, Player const* receiver) const;
@@ -1192,12 +913,11 @@ struct ConversationLine : public IsUpdateFieldStructureTag
struct ConversationActor : public IsUpdateFieldStructureTag
{
+ uint32 Type;
+ int32 Id;
uint32 CreatureID;
uint32 CreatureDisplayInfoID;
ObjectGuid ActorGUID;
- int32 Id;
- uint32 Type;
- uint32 NoActorObject;
void WriteCreate(ByteBuffer& data, Conversation const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Conversation const* owner, Player const* receiver) const;
@@ -1205,15 +925,12 @@ struct ConversationActor : public IsUpdateFieldStructureTag
bool operator!=(ConversationActor const& right) const { return !(*this == right); }
};
-struct ConversationData : public IsUpdateFieldStructureTag, public HasChangesMask<7>
+struct ConversationData : public IsUpdateFieldStructureTag, public HasChangesMask<4>
{
- UpdateField<bool, 0, 1> DontPlayBroadcastTextSounds;
- UpdateField<std::vector<UF::ConversationLine>, 0, 2> Lines;
- DynamicUpdateField<UF::ConversationActor, 0, 3> Actors;
- UpdateField<int32, 0, 4> LastLineEndTime;
+ UpdateField<std::vector<UF::ConversationLine>, 0, 1> Lines;
+ DynamicUpdateField<UF::ConversationActor, 0, 2> Actors;
+ UpdateField<int32, 0, 3> LastLineEndTime;
struct LastLineEndTimeTag : ViewerDependentValueTag<int32> {};
- UpdateField<uint32, 0, 5> Progress;
- UpdateField<uint32, 0, 6> Flags;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const;