Core/PacketIO: Fix more packet structures for 12.1.0

This commit is contained in:
Shauren
2026-08-27 20:24:01 +02:00
parent b619858a03
commit f182d82d34
6 changed files with 36 additions and 21 deletions
@@ -837,8 +837,8 @@ void AreaTrigger::SearchUnitInBoundedPlane(UF::AreaTriggerBoundedPlane const& bo
progress = sDB2Manager.GetCurveValueAt(m_areaTriggerData->MorphCurveId, progress); progress = sDB2Manager.GetCurveValueAt(m_areaTriggerData->MorphCurveId, progress);
float scale = CalcCurrentScale(); float scale = CalcCurrentScale();
float extentsX = G3D::lerp(boundedPlane.Extents->Pos.GetPositionX(), boundedPlane.ExtentsTarget->Pos.GetPositionX(), progress) * scale; float extentsX = G3D::lerp(boundedPlane.ExtentsX, boundedPlane.ExtentsTargetX, progress) * scale;
float extentsY = G3D::lerp(boundedPlane.Extents->Pos.GetPositionY(), boundedPlane.ExtentsTarget->Pos.GetPositionY(), progress) * scale; float extentsY = G3D::lerp(boundedPlane.ExtentsY, boundedPlane.ExtentsTargetY, progress) * scale;
float radius = std::sqrt(extentsX * extentsX + extentsY * extentsY); float radius = std::sqrt(extentsX * extentsX + extentsY * extentsY);
SearchUnits(targetList, radius, false); SearchUnits(targetList, radius, false);
@@ -1039,8 +1039,10 @@ void AreaTrigger::SetShape(AreaTriggerShapeInfo const& shape)
{ {
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), 8); SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), 8);
auto boundedPlane = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerBoundedPlane>); auto boundedPlane = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerBoundedPlane>);
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::Extents), shapeData.Extents); SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsX), shapeData.Extents.Pos.GetPositionX());
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsTarget), shapeData.ExtentsTarget); SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsY), shapeData.Extents.Pos.GetPositionY());
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsTargetX), shapeData.ExtentsTarget.Pos.GetPositionX());
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsTargetY), shapeData.ExtentsTarget.Pos.GetPositionY());
} }
else else
static_assert(Trinity::dependant_false_v<ShapeType>, "Unsupported shape type"); static_assert(Trinity::dependant_false_v<ShapeType>, "Unsupported shape type");
@@ -7713,10 +7713,6 @@ void VisualAnim::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player co
{ {
data.WriteBit(IsDecay); data.WriteBit(IsDecay);
} }
}
data.FlushBits();
if (changesMask[0])
{
data.WriteBit(AnimationDataID.has_value()); data.WriteBit(AnimationDataID.has_value());
} }
data.FlushBits(); data.FlushBits();
@@ -7730,6 +7726,10 @@ void VisualAnim::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player co
{ {
data << uint32(AnimProgress); data << uint32(AnimProgress);
} }
}
data.FlushBits();
if (changesMask[0])
{
if (changesMask[2]) if (changesMask[2])
{ {
if (AnimationDataID.has_value()) if (AnimationDataID.has_value())
@@ -8248,8 +8248,10 @@ void AreaTriggerDisk::ClearChangesMask()
void AreaTriggerBoundedPlane::WriteCreate(ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const void AreaTriggerBoundedPlane::WriteCreate(ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const
{ {
data << *Extents; data << float(ExtentsX);
data << *ExtentsTarget; data << float(ExtentsY);
data << float(ExtentsTargetX);
data << float(ExtentsTargetY);
} }
void AreaTriggerBoundedPlane::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const void AreaTriggerBoundedPlane::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const
@@ -8258,26 +8260,36 @@ void AreaTriggerBoundedPlane::WriteUpdate(bool ignoreChangesMask, ByteBuffer& da
if (ignoreChangesMask) if (ignoreChangesMask)
changesMask.SetAll(); changesMask.SetAll();
data.WriteBits(changesMask.GetBlock(0), 3); data.WriteBits(changesMask.GetBlock(0), 5);
data.FlushBits(); data.FlushBits();
if (changesMask[0]) if (changesMask[0])
{ {
if (changesMask[1]) if (changesMask[1])
{ {
data << *Extents; data << float(ExtentsX);
} }
if (changesMask[2]) if (changesMask[2])
{ {
data << *ExtentsTarget; data << float(ExtentsY);
}
if (changesMask[3])
{
data << float(ExtentsTargetX);
}
if (changesMask[4])
{
data << float(ExtentsTargetY);
} }
} }
} }
void AreaTriggerBoundedPlane::ClearChangesMask() void AreaTriggerBoundedPlane::ClearChangesMask()
{ {
Base::ClearChangesMask(Extents); Base::ClearChangesMask(ExtentsX);
Base::ClearChangesMask(ExtentsTarget); Base::ClearChangesMask(ExtentsY);
Base::ClearChangesMask(ExtentsTargetX);
Base::ClearChangesMask(ExtentsTargetY);
_changesMask.ResetAll(); _changesMask.ResetAll();
} }
@@ -1749,10 +1749,12 @@ struct AreaTriggerDisk : public IsUpdateFieldStructureTag, public HasChangesMask
void ClearChangesMask(); void ClearChangesMask();
}; };
struct AreaTriggerBoundedPlane : public IsUpdateFieldStructureTag, public HasChangesMask<3> struct AreaTriggerBoundedPlane : public IsUpdateFieldStructureTag, public HasChangesMask<5>
{ {
UpdateField<TaggedPosition<Position::XY>, 0, 1> Extents; UpdateField<float, 0, 1> ExtentsX;
UpdateField<TaggedPosition<Position::XY>, 0, 2> ExtentsTarget; UpdateField<float, 0, 2> ExtentsY;
UpdateField<float, 0, 3> ExtentsTargetX;
UpdateField<float, 0, 4> ExtentsTargetY;
using OwnerObject = AreaTrigger; using OwnerObject = AreaTrigger;
void WriteCreate(ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const; void WriteCreate(ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const;
@@ -52,8 +52,8 @@ ByteBuffer& operator<<(ByteBuffer& data, CraftingReagentBase const& reagent)
ByteBuffer& operator<<(ByteBuffer& data, SpellReducedReagent const& spellReducedReagent) ByteBuffer& operator<<(ByteBuffer& data, SpellReducedReagent const& spellReducedReagent)
{ {
data << int32(spellReducedReagent.Quantity);
data << spellReducedReagent.Reagent; data << spellReducedReagent.Reagent;
data << int32(spellReducedReagent.Quantity);
return data; return data;
} }
@@ -67,7 +67,6 @@ struct CraftingData
ByteBuffer& operator>>(ByteBuffer& data, CraftingReagentBase& reagent); ByteBuffer& operator>>(ByteBuffer& data, CraftingReagentBase& reagent);
ByteBuffer& operator<<(ByteBuffer& data, CraftingReagentBase const& reagent); ByteBuffer& operator<<(ByteBuffer& data, CraftingReagentBase const& reagent);
ByteBuffer& operator<<(ByteBuffer& data, SpellReducedReagent const& spellReducedReagent);
ByteBuffer& operator<<(ByteBuffer& data, CraftingData const& craftingData); ByteBuffer& operator<<(ByteBuffer& data, CraftingData const& craftingData);
} }
#endif // TRINITYCORE_CRAFTING_PACKETS_COMMON_H #endif // TRINITYCORE_CRAFTING_PACKETS_COMMON_H
@@ -217,8 +217,8 @@ WorldPacket const* LFGUpdateStatus::Write()
for (ObjectGuid const& suspendedPlayer : SuspendedPlayers) for (ObjectGuid const& suspendedPlayer : SuspendedPlayers)
_worldPacket << suspendedPlayer; _worldPacket << suspendedPlayer;
_worldPacket << Bits<1>(IsParty);
_worldPacket << Bits<1>(NotifyUI); _worldPacket << Bits<1>(NotifyUI);
_worldPacket << Bits<1>(IsParty);
_worldPacket << Bits<1>(Joined); _worldPacket << Bits<1>(Joined);
_worldPacket << Bits<1>(LfgJoined); _worldPacket << Bits<1>(LfgJoined);
_worldPacket << Bits<1>(Queued); _worldPacket << Bits<1>(Queued);