From a01cec68a4f57b3960f530c59761b774c2fd10b4 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sun, 8 Feb 2026 00:06:25 -0800 Subject: [PATCH] Fix AURA_UPDATE_ALL parsing of per-effect amounts Only read effect amount int32 for active effect indices (flags 0x01, 0x02, 0x04) instead of always reading 3. The over-read desynchronized the packet position, corrupting subsequent aura slots in ALL updates. --- src/game/world_packets.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/game/world_packets.cpp b/src/game/world_packets.cpp index 07e75ddf..93a3356a 100644 --- a/src/game/world_packets.cpp +++ b/src/game/world_packets.cpp @@ -2079,11 +2079,13 @@ bool AuraUpdateParser::parse(network::Packet& packet, AuraUpdateData& data, bool aura.durationMs = static_cast(packet.readUInt32()); } - if (aura.flags & 0x40) { // EFFECT_AMOUNTS - skip - // 3 effect amounts + if (aura.flags & 0x40) { // EFFECT_AMOUNTS + // Only read amounts for active effect indices (flags 0x01, 0x02, 0x04) for (int i = 0; i < 3; ++i) { - if (packet.getReadPos() < packet.getSize()) { - packet.readUInt32(); + if (aura.flags & (1 << i)) { + if (packet.getReadPos() < packet.getSize()) { + packet.readUInt32(); + } } } }