diff --git a/src/game/packet_parsers_classic.cpp b/src/game/packet_parsers_classic.cpp index e04832f6..e0dd01f8 100644 --- a/src/game/packet_parsers_classic.cpp +++ b/src/game/packet_parsers_classic.cpp @@ -762,6 +762,10 @@ bool ClassicPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& da return false; } + // SpellCastTargets follows the miss list — consume all target bytes so that + // any subsequent fields (e.g. castFlags extras) are not misaligned. + skipClassicSpellCastTargets(packet, &data.targetGuid); + LOG_DEBUG("[Classic] Spell go: spell=", data.spellId, " hits=", (int)data.hitCount, " misses=", (int)data.missCount); return true; diff --git a/src/game/packet_parsers_tbc.cpp b/src/game/packet_parsers_tbc.cpp index 3b0a545c..8e8fbd25 100644 --- a/src/game/packet_parsers_tbc.cpp +++ b/src/game/packet_parsers_tbc.cpp @@ -1423,6 +1423,10 @@ bool TbcPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& data) } data.missCount = static_cast(data.missTargets.size()); + // SpellCastTargets follows the miss list — consume all target bytes so that + // any subsequent fields are not misaligned for ground-targeted AoE spells. + skipTbcSpellCastTargets(packet, &data.targetGuid); + LOG_DEBUG("[TBC] Spell go: spell=", data.spellId, " hits=", (int)data.hitCount, " misses=", (int)data.missCount); return true;