From a2340dd7024c3161f4e37ea1ffad1b83fbf24ddb Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sun, 29 Mar 2026 19:00:54 -0700 Subject: [PATCH] =?UTF-8?q?fix:=20level-up=20notification=20never=20fired?= =?UTF-8?q?=20=E2=80=94=20early=20return=20skipped=20it?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The character-list level update loop used 'return' instead of 'break', exiting the handler lambda before the level-up chat message, sound effect, callback, and PLAYER_LEVEL_UP event could fire. Since the player GUID is always in the character list, the notification code was effectively dead — players never saw "You have reached level N!". --- src/game/game_handler.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 87e297d3..86fe40ef 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -2349,10 +2349,12 @@ void GameHandler::registerOpcodeHandlers() { } uint32_t oldLevel = serverPlayerLevel_; serverPlayerLevel_ = std::max(serverPlayerLevel_, newLevel); + // Update the character-list entry so the selection screen + // shows the correct level if the player logs out and back. for (auto& ch : characters) { if (ch.guid == playerGuid) { ch.level = serverPlayerLevel_; - return; + break; // was 'return' — must NOT exit here or level-up notification is skipped } } if (newLevel > oldLevel) {