From 01f4ef5e799d8aa8d35835c9210bb0def8b8b2d3 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Fri, 13 Mar 2026 05:06:00 -0700 Subject: [PATCH] fix: clear lastInteractedGoGuid_ for non-lootable GO interactions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mailboxes, doors, buttons, and other non-lootable GOs set shouldSendLoot=false so no CMSG_LOOT is dispatched — but lastInteractedGoGuid_ was still set. Without SMSG_LOOT_RESPONSE to clear it, a subsequent timed cast completion (e.g. player buffs at the mailbox) would fire a spurious CMSG_LOOT for the mailbox GUID. --- src/game/game_handler.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 05feb17b..11c6e6a7 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -17446,6 +17446,11 @@ void GameHandler::performGameObjectInteractionNow(uint64_t guid) { } if (shouldSendLoot) { lootTarget(guid); + } else { + // Non-lootable interaction (mailbox, door, button, etc.) — no CMSG_LOOT will be + // sent, and no SMSG_LOOT_RESPONSE will arrive to clear it. Clear the gather-loot + // guid now so a subsequent timed cast completion can't fire a spurious CMSG_LOOT. + lastInteractedGoGuid_ = 0; } // Retry use briefly to survive packet loss/order races. const bool retryLoot = shouldSendLoot;