From 4c1bc842bcc6de8ac844de6b45f771872484ade2 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Thu, 12 Mar 2026 21:39:22 -0700 Subject: [PATCH] fix: normalize TBC SMSG_INIT_EXTRA_AURA_INFO_OBSOLETE harmful bit to WotLK debuff convention TBC aura packets (SMSG_INIT_EXTRA_AURA_INFO_OBSOLETE / SMSG_SET_EXTRA_AURA_INFO_OBSOLETE) use flag bit 0x02 for harmful (debuff) auras, same as Classic 1.12. The UI checks bit 0x80 for debuff display, following the WotLK SMSG_AURA_UPDATE convention. Without normalization, all TBC debuffs were displayed in the buff bar instead of the debuff bar. Normalize using (flags & 0x02) ? 0x80 : 0, matching the fix applied to Classic in 9b09278. --- src/game/game_handler.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 17ae17bf..17b39b50 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -5462,7 +5462,9 @@ void GameHandler::handlePacket(network::Packet& packet) { while (auraList->size() <= slot) auraList->push_back(AuraSlot{}); AuraSlot& a = (*auraList)[slot]; a.spellId = spellId; - a.flags = flags; + // TBC uses same flag convention as Classic: 0x02=harmful, 0x04=beneficial. + // Normalize to WotLK SMSG_AURA_UPDATE convention: 0x80=debuff, 0=buff. + a.flags = (flags & 0x02) ? 0x80u : 0u; a.durationMs = (durationMs == 0xFFFFFFFF) ? -1 : static_cast(durationMs); a.maxDurationMs= (maxDurMs == 0xFFFFFFFF) ? -1 : static_cast(maxDurMs); a.receivedAtMs = nowMs;