aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-03-21 21:07:23 +0100
committerShauren <shauren.trinity@gmail.com>2024-03-21 21:07:23 +0100
commitac5aee6a98be6434e1f93bf5c973701e41a4540a (patch)
tree0cb621804e753e0afd81b5230b04a41f04220a5f /src/server/game/Entities/Object
parente99482ce9bb7918e23a104fe28305c60d28ed598 (diff)
Core: Updated to 10.2.6.53840
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Object.cpp7
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp73
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h25
3 files changed, 70 insertions, 35 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 149ed7b1742..1748dfa587f 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -468,13 +468,14 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
bool hasMoveCurveID = createProperties && createProperties->MoveCurveId != 0;
bool hasAreaTriggerSphere = shape.IsSphere();
bool hasAreaTriggerBox = shape.IsBox();
- bool hasAreaTriggerPolygon = createProperties && shape.IsPolygon();
+ bool hasAreaTriggerPolygon = shape.IsPolygon();
bool hasAreaTriggerCylinder = shape.IsCylinder();
bool hasDisk = shape.IsDisk();
bool hasBoundedPlane = shape.IsBoundedPlane();
bool hasAreaTriggerSpline = areaTrigger->HasSplines();
bool hasOrbit = areaTrigger->HasOrbit();
bool hasMovementScript = false;
+ bool hasPositionalSoundKitID= false;
data->WriteBit(hasAbsoluteOrientation);
data->WriteBit(hasDynamicShape);
@@ -488,6 +489,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
data->WriteBit(hasMorphCurveID);
data->WriteBit(hasFacingCurveID);
data->WriteBit(hasMoveCurveID);
+ data->WriteBit(hasPositionalSoundKitID);
data->WriteBit(hasAreaTriggerSphere);
data->WriteBit(hasAreaTriggerBox);
data->WriteBit(hasAreaTriggerPolygon);
@@ -523,6 +525,9 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
if (hasMoveCurveID)
*data << uint32(createProperties->MoveCurveId);
+ if (hasPositionalSoundKitID)
+ *data << uint32(0);
+
if (hasAreaTriggerSphere)
{
*data << float(shape.SphereDatas.Radius);
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index 2e012897754..de4b2123202 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -2282,12 +2282,14 @@ 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(Field_1AC);
+ data << int32(Field_1B0);
data << int32(CurrentBattlePetSpeciesID);
CtrOptions->WriteCreate(data, owner, receiver);
data << int32(CovenantID);
data << int32(SoulbindID);
+ data << Field_1F0;
+ data << int32(Field_200);
data << uint32(VisualItemReplacements.size());
for (uint32 i = 0; i < 19; ++i)
{
@@ -2327,6 +2329,10 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
data.WriteBits(DeclinedNames.has_value(), 1);
data << DungeonScore;
data.WriteString(Name);
+ for (uint32 i = 0; i < 16; ++i)
+ {
+ data << VisibleEquipableSpells[i];
+ }
if (DeclinedNames.has_value())
{
DeclinedNames->WriteCreate(data, owner, receiver);
@@ -2336,7 +2342,7 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
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({ 0xFFFFFFDDu, 0x0000FFFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFFFu, 0xFFFFFFFFu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
@@ -2344,12 +2350,12 @@ 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 |= { 0x00000022u, 0xFFFF0000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x00000000u, 0x00000000u };
}
void PlayerData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
- Mask allowedMaskForTarget({ 0xFFFFFFDDu, 0x00003FFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xC0000000u, 0xFFFFFFFFu, 0x00001FFFu });
+ Mask allowedMaskForTarget({ 0xFFFFFFDDu, 0x0000FFFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFFFu, 0xFFFFFFFFu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask &= allowedMaskForTarget;
}
@@ -2565,11 +2571,11 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
{
if (changesMask[34])
{
- data << int32(Field_B0);
+ data << int32(Field_1AC);
}
if (changesMask[35])
{
- data << int32(Field_B4);
+ data << int32(Field_1B0);
}
if (changesMask[36])
{
@@ -2587,17 +2593,25 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
{
data << int32(SoulbindID);
}
- if (changesMask[42])
+ if (changesMask[40])
+ {
+ data << Field_1F0;
+ }
+ if (changesMask[41])
+ {
+ data << int32(Field_200);
+ }
+ if (changesMask[44])
{
PersonalTabard->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
if (changesMask[33])
{
- data.WriteBits(Name->size(), 32);
+ data.WriteBits(Name->size(), 6);
}
data.WriteBits(DeclinedNames.has_value(), 1);
data.FlushBits();
- if (changesMask[40])
+ if (changesMask[42])
{
data << DungeonScore;
}
@@ -2605,7 +2619,7 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
{
data.WriteString(Name);
}
- if (changesMask[41])
+ if (changesMask[43])
{
if (DeclinedNames.has_value())
{
@@ -2613,21 +2627,21 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
}
}
- if (changesMask[43])
+ if (changesMask[45])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[44 + i])
+ if (changesMask[46 + i])
{
data << uint8(PartyType[i]);
}
}
}
- if (changesMask[46])
+ if (changesMask[48])
{
for (uint32 i = 0; i < 175; ++i)
{
- if (changesMask[47 + i])
+ if (changesMask[49 + i])
{
if (noQuestLogChangesMask)
QuestLog[i].WriteCreate(data, owner, receiver);
@@ -2636,36 +2650,46 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
}
}
- if (changesMask[222])
+ if (changesMask[224])
{
for (uint32 i = 0; i < 19; ++i)
{
- if (changesMask[223 + i])
+ if (changesMask[225 + i])
{
VisibleItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[242])
+ if (changesMask[244])
{
for (uint32 i = 0; i < 6; ++i)
{
- if (changesMask[243 + i])
+ if (changesMask[245 + i])
{
data << float(AvgItemLevel[i]);
}
}
}
- if (changesMask[249])
+ if (changesMask[268])
{
for (uint32 i = 0; i < 19; ++i)
{
- if (changesMask[250 + i])
+ if (changesMask[269 + i])
{
data << uint32(Field_3120[i]);
}
}
}
+ if (changesMask[251])
+ {
+ for (uint32 i = 0; i < 16; ++i)
+ {
+ if (changesMask[252 + i])
+ {
+ data << VisibleEquipableSpells[i];
+ }
+ }
+ }
data.FlushBits();
}
@@ -2703,12 +2727,14 @@ void PlayerData::ClearChangesMask()
Base::ClearChangesMask(HonorLevel);
Base::ClearChangesMask(LogoutTime);
Base::ClearChangesMask(Name);
- Base::ClearChangesMask(Field_B0);
- Base::ClearChangesMask(Field_B4);
+ Base::ClearChangesMask(Field_1AC);
+ Base::ClearChangesMask(Field_1B0);
Base::ClearChangesMask(CurrentBattlePetSpeciesID);
Base::ClearChangesMask(CtrOptions);
Base::ClearChangesMask(CovenantID);
Base::ClearChangesMask(SoulbindID);
+ Base::ClearChangesMask(Field_1F0);
+ Base::ClearChangesMask(Field_200);
Base::ClearChangesMask(DungeonScore);
Base::ClearChangesMask(DeclinedNames);
Base::ClearChangesMask(PersonalTabard);
@@ -2716,6 +2742,7 @@ void PlayerData::ClearChangesMask()
Base::ClearChangesMask(QuestLog);
Base::ClearChangesMask(VisibleItems);
Base::ClearChangesMask(AvgItemLevel);
+ Base::ClearChangesMask(VisibleEquipableSpells);
Base::ClearChangesMask(Field_3120);
_changesMask.ResetAll();
}
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index 078f0e5738c..7440d41d65b 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -486,7 +486,7 @@ struct CustomTabardInfo : public IsUpdateFieldStructureTag, public HasChangesMas
void ClearChangesMask();
};
-struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<269>
+struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<288>
{
UpdateField<bool, 0, 1> HasQuestSession;
UpdateField<bool, 0, 2> HasLevelLink;
@@ -520,20 +520,23 @@ struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<269>
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, 34> Field_1AC;
+ UpdateField<int32, 32, 35> Field_1B0;
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;
+ UpdateField<ObjectGuid, 32, 40> Field_1F0;
+ UpdateField<int32, 32, 41> Field_200;
+ UpdateField<WorldPackets::MythicPlus::DungeonScoreSummary, 32, 42> DungeonScore;
+ OptionalUpdateField<UF::DeclinedNames, 32, 43> DeclinedNames;
+ UpdateField<UF::CustomTabardInfo, 32, 44> PersonalTabard;
+ UpdateFieldArray<uint8, 2, 45, 46> PartyType;
+ UpdateFieldArray<UF::QuestLog, 175, 48, 49> QuestLog;
+ UpdateFieldArray<UF::VisibleItem, 19, 224, 225> VisibleItems;
+ UpdateFieldArray<float, 6, 244, 245> AvgItemLevel;
+ UpdateFieldArray<WorldPackets::Item::ItemInstance, 16, 251, 252> VisibleEquipableSpells;
+ UpdateFieldArray<uint32, 19, 268, 269> 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;