From 28ce441214f759fb57f0f6bf4b396fb660512913 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Fri, 13 Mar 2026 07:02:20 -0700 Subject: [PATCH] feat: add missing player feedback for level-up, pet spells, and pet name errors - SMSG_LEVELUP_INFO: show \"You have reached level N!\" chat message on level-up (was only calling the UI ding callback without any chat notification) - SMSG_PET_LEARNED_SPELL: show \"Your pet has learned X.\" with spell name lookup (was LOG_DEBUG only) - SMSG_PET_NAME_INVALID: show \"That pet name is invalid.\" (was silently consumed) --- src/game/game_handler.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index e82c4681..31544e5d 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -4060,8 +4060,9 @@ void GameHandler::handlePacket(network::Packet& packet) { break; } } - if (newLevel > oldLevel && levelUpCallback_) { - levelUpCallback_(newLevel); + if (newLevel > oldLevel) { + addSystemChatMessage("You have reached level " + std::to_string(newLevel) + "!"); + if (levelUpCallback_) levelUpCallback_(newLevel); } } } @@ -6865,6 +6866,8 @@ void GameHandler::handlePacket(network::Packet& packet) { if (packet.getSize() - packet.getReadPos() >= 4) { uint32_t spellId = packet.readUInt32(); petSpellList_.push_back(spellId); + const std::string& sname = getSpellName(spellId); + addSystemChatMessage("Your pet has learned " + (sname.empty() ? "a new ability." : sname + ".")); LOG_DEBUG("SMSG_PET_LEARNED_SPELL: spellId=", spellId); } packet.setReadPos(packet.getSize()); @@ -6908,11 +6911,14 @@ void GameHandler::handlePacket(network::Packet& packet) { case Opcode::SMSG_PET_DISMISS_SOUND: case Opcode::SMSG_PET_ACTION_SOUND: case Opcode::SMSG_PET_UNLEARN_CONFIRM: - case Opcode::SMSG_PET_NAME_INVALID: case Opcode::SMSG_PET_RENAMEABLE: case Opcode::SMSG_PET_UPDATE_COMBO_POINTS: packet.setReadPos(packet.getSize()); break; + case Opcode::SMSG_PET_NAME_INVALID: + addSystemChatMessage("That pet name is invalid. Please choose a different name."); + packet.setReadPos(packet.getSize()); + break; // ---- Inspect (Classic 1.12 gear inspection) ---- case Opcode::SMSG_INSPECT: {