From 1bcb05aac4fa3124322601fad2fab243306f4214 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sat, 28 Mar 2026 10:35:53 -0700 Subject: [PATCH] fix: only show fishing message for player's own bobber, not others' SMSG_GAMEOBJECT_CUSTOM_ANIM with animId=0 on a fishing node (type 17) was triggering "A fish is on your line!" for ALL fishing bobbers in range, including other players'. Now checks OBJECT_FIELD_CREATED_BY (fields 6-7) matches the local player GUID before showing the message. --- src/game/game_handler.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 058f5287..f071af03 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -2195,11 +2195,17 @@ void GameHandler::registerOpcodeHandlers() { auto goEnt = entityManager.getEntity(guid); if (goEnt && goEnt->getType() == ObjectType::GAMEOBJECT) { auto go = std::static_pointer_cast(goEnt); - auto* info = getCachedGameObjectInfo(go->getEntry()); - if (info && info->type == 17) { - addUIError("A fish is on your line!"); - addSystemChatMessage("A fish is on your line!"); - withSoundManager(&rendering::Renderer::getUiSoundManager, [](auto* sfx) { sfx->playQuestUpdate(); }); + // Only show fishing message if the bobber belongs to us + // OBJECT_FIELD_CREATED_BY is a uint64 at field indices 6-7 + uint64_t createdBy = static_cast(go->getField(6)) + | (static_cast(go->getField(7)) << 32); + if (createdBy == playerGuid) { + auto* info = getCachedGameObjectInfo(go->getEntry()); + if (info && info->type == 17) { + addUIError("A fish is on your line!"); + addSystemChatMessage("A fish is on your line!"); + withSoundManager(&rendering::Renderer::getUiSoundManager, [](auto* sfx) { sfx->playQuestUpdate(); }); + } } } }