Skip to content

Commit 161da58

Browse files
committed
Core/PacketIO: Fix DecorStoragePersistedData and HousingDecorData structures
1 parent 57f321d commit 161da58

File tree

2 files changed

+28
-27
lines changed

2 files changed

+28
-27
lines changed

src/server/game/Entities/Object/Updates/UpdateFields.cpp

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7411,7 +7411,7 @@ void VisualAnim::ClearChangesMask()
74117411
void ForceSetAreaTriggerPositionAndRotation::WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const
74127412
{
74137413
data << TriggerGUID;
7414-
data << Position;
7414+
data << Pos;
74157415
data << float(Rotation.x);
74167416
data << float(Rotation.y);
74177417
data << float(Rotation.z);
@@ -7421,7 +7421,7 @@ void ForceSetAreaTriggerPositionAndRotation::WriteCreate(ByteBuffer& data, AreaT
74217421
void ForceSetAreaTriggerPositionAndRotation::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const
74227422
{
74237423
data << TriggerGUID;
7424-
data << Position;
7424+
data << Pos;
74257425
data << float(Rotation.x);
74267426
data << float(Rotation.y);
74277427
data << float(Rotation.z);
@@ -7431,7 +7431,7 @@ void ForceSetAreaTriggerPositionAndRotation::WriteUpdate(ByteBuffer& data, bool
74317431
bool ForceSetAreaTriggerPositionAndRotation::operator==(ForceSetAreaTriggerPositionAndRotation const& right) const
74327432
{
74337433
return TriggerGUID == right.TriggerGUID
7434-
&& Position == right.Position
7434+
&& Pos == right.Pos
74357435
&& Rotation == right.Rotation;
74367436
}
74377437

@@ -8614,6 +8614,7 @@ void DecorStoragePersistedData::WriteCreate(ByteBuffer& data, Object const* owne
86148614
data << *HouseGUID;
86158615
data << uint8(Field_20);
86168616
data.WriteBits(Dyes.has_value(), 1);
8617+
data.FlushBits();
86178618
if (Dyes.has_value())
86188619
{
86198620
Dyes->WriteCreate(data, owner, receiver);
@@ -8626,26 +8627,24 @@ void DecorStoragePersistedData::WriteUpdate(ByteBuffer& data, bool ignoreChanges
86268627
if (ignoreChangesMask)
86278628
changesMask.SetAll();
86288629

8629-
data.WriteBits(changesMask.GetBlock(0), 4);
8630+
data.WriteBits(changesMask.GetBlock(0), 3);
86308631

86318632
data.FlushBits();
86328633
if (changesMask[0])
86338634
{
8634-
if (changesMask[1])
8635-
{
8636-
data << *HouseGUID;
8637-
}
8638-
if (changesMask[3])
8639-
{
8640-
data << uint8(Field_20);
8641-
}
8642-
data.WriteBits(Dyes.has_value(), 1);
8643-
if (changesMask[2])
8635+
data << *HouseGUID;
8636+
}
8637+
if (changesMask[2])
8638+
{
8639+
data << uint8(Field_20);
8640+
}
8641+
data.WriteBits(Dyes.has_value(), 1);
8642+
data.FlushBits();
8643+
if (changesMask[1])
8644+
{
8645+
if (Dyes.has_value())
86448646
{
8645-
if (Dyes.has_value())
8646-
{
8647-
Dyes->WriteUpdate(data, ignoreChangesMask, owner, receiver);
8648-
}
8647+
Dyes->WriteUpdate(data, ignoreChangesMask, owner, receiver);
86498648
}
86508649
}
86518650
}
@@ -8663,8 +8662,9 @@ void HousingDecorData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
86638662
data << *DecorGUID;
86648663
data << *AttachParentGUID;
86658664
data << uint8(Flags);
8666-
data << *Field_68;
8665+
data << *TargetGameObjectGUID;
86678666
data.WriteBits(PersistedData.has_value(), 1);
8667+
data.FlushBits();
86688668
if (PersistedData.has_value())
86698669
{
86708670
PersistedData->WriteCreate(data, owner, receiver);
@@ -8697,9 +8697,10 @@ void HousingDecorData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
86978697
}
86988698
if (changesMask[5])
86998699
{
8700-
data << *Field_68;
8700+
data << *TargetGameObjectGUID;
87018701
}
87028702
data.WriteBits(PersistedData.has_value(), 1);
8703+
data.FlushBits();
87038704
if (changesMask[4])
87048705
{
87058706
if (PersistedData.has_value())
@@ -8716,7 +8717,7 @@ void HousingDecorData::ClearChangesMask()
87168717
Base::ClearChangesMask(AttachParentGUID);
87178718
Base::ClearChangesMask(Flags);
87188719
Base::ClearChangesMask(PersistedData);
8719-
Base::ClearChangesMask(Field_68);
8720+
Base::ClearChangesMask(TargetGameObjectGUID);
87208721
_changesMask.ResetAll();
87218722
}
87228723

src/server/game/Entities/Object/Updates/UpdateFields.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1383,7 +1383,7 @@ struct VisualAnim : public IsUpdateFieldStructureTag, public HasChangesMask<5>
13831383
struct ForceSetAreaTriggerPositionAndRotation : public IsUpdateFieldStructureTag
13841384
{
13851385
ObjectGuid TriggerGUID;
1386-
TaggedPosition<::Position::XYZ> Position;
1386+
TaggedPosition<Position::XYZ> Pos;
13871387
QuaternionData Rotation;
13881388

13891389
void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const;
@@ -1649,11 +1649,11 @@ struct DecorStoragePersistedDataDyes : public IsUpdateFieldStructureTag
16491649
bool operator!=(DecorStoragePersistedDataDyes const& right) const { return !(*this == right); }
16501650
};
16511651

1652-
struct DecorStoragePersistedData : public IsUpdateFieldStructureTag, public HasChangesMask<4>
1652+
struct DecorStoragePersistedData : public IsUpdateFieldStructureTag, public HasChangesMask<3>
16531653
{
1654-
UpdateField<ObjectGuid, 0, 1> HouseGUID;
1655-
OptionalUpdateField<UF::DecorStoragePersistedDataDyes, 0, 2> Dyes;
1656-
UpdateField<uint8, 0, 3> Field_20;
1654+
UpdateField<ObjectGuid, -1, 0> HouseGUID;
1655+
OptionalUpdateField<UF::DecorStoragePersistedDataDyes, -1, 1> Dyes;
1656+
UpdateField<uint8, -1, 2> Field_20;
16571657

16581658
void WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const;
16591659
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const;
@@ -1666,7 +1666,7 @@ struct HousingDecorData : public IsUpdateFieldStructureTag, public HasChangesMas
16661666
UpdateField<ObjectGuid, 0, 2> AttachParentGUID;
16671667
UpdateField<uint8, 0, 3> Flags;
16681668
OptionalUpdateField<UF::DecorStoragePersistedData, 0, 4> PersistedData;
1669-
UpdateField<ObjectGuid, 0, 5> Field_68;
1669+
UpdateField<ObjectGuid, 0, 5> TargetGameObjectGUID;
16701670

16711671
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
16721672
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;

0 commit comments

Comments
 (0)