From f44defec389684dac1009560ab5c0863dc792def Mon Sep 17 00:00:00 2001 From: Kelsi Date: Fri, 13 Mar 2026 05:07:51 -0700 Subject: [PATCH] feat: show fish-hooked notification when fishing bobber splashes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the server sends SMSG_GAMEOBJECT_CUSTOM_ANIM with animId=0 for a GO of type 17 (FISHINGNODE), a fish has been hooked and the player needs to click the bobber quickly. Add a system chat message and a UI sound to alert the player — previously there was no visual/audio feedback beyond the bobber animation itself. --- src/game/game_handler.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 11c6e6a7..7e4fd86f 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -4528,6 +4528,25 @@ void GameHandler::handlePacket(network::Packet& packet) { if (gameObjectCustomAnimCallback_) { gameObjectCustomAnimCallback_(guid, animId); } + // animId == 0 is the fishing bobber splash ("fish hooked"). + // Detect by GO type 17 (FISHINGNODE) and notify the player so they + // know to click the bobber before the fish escapes. + if (animId == 0) { + 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) { // GO_TYPE_FISHINGNODE + addSystemChatMessage("A fish is on your line!"); + // Play a distinctive UI sound to alert the player + if (auto* renderer = core::Application::getInstance().getRenderer()) { + if (auto* sfx = renderer->getUiSoundManager()) { + sfx->playQuestUpdate(); // Distinct "ping" sound + } + } + } + } + } } break; }