From 43b007cdcdb95d9205a554fc9e776df747604c70 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Fri, 13 Mar 2026 06:21:33 -0700 Subject: [PATCH] fix: only show SMSG_DISPEL_FAILED message when player is the caster The dispel-failed handler was showing the failure notification for every dispel attempt in the party/raid, regardless of who cast it. Now checks casterGuid == playerGuid before showing "X failed to dispel." so only the player's own failed dispels surface in chat. --- src/game/game_handler.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 08623dc3..d514606e 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -3172,20 +3172,22 @@ void GameHandler::handlePacket(network::Packet& packet) { // [+ count × uint32 failedSpellId] const bool dispelTbcLike = isClassicLikeExpansion() || isActiveExpansion("tbc"); uint32_t dispelSpellId = 0; + uint64_t dispelCasterGuid = 0; if (dispelTbcLike) { if (packet.getSize() - packet.getReadPos() < 20) break; - /*uint64_t caster =*/ packet.readUInt64(); + dispelCasterGuid = packet.readUInt64(); /*uint64_t victim =*/ packet.readUInt64(); dispelSpellId = packet.readUInt32(); } else { if (packet.getSize() - packet.getReadPos() < 4) break; dispelSpellId = packet.readUInt32(); if (packet.getSize() - packet.getReadPos() < 1) break; - /*uint64_t caster =*/ UpdateObjectParser::readPackedGuid(packet); + dispelCasterGuid = UpdateObjectParser::readPackedGuid(packet); if (packet.getSize() - packet.getReadPos() < 1) break; /*uint64_t victim =*/ UpdateObjectParser::readPackedGuid(packet); } - { + // Only show failure to the player who attempted the dispel + if (dispelCasterGuid == playerGuid) { loadSpellNameCache(); auto it = spellNameCache_.find(dispelSpellId); char buf[128];