From 4684db10afa7ac3387690c8e1b3682f6a1bab423 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Wed, 18 Feb 2026 23:14:01 -0800 Subject: [PATCH] Reduce unhandled opcode spam and add missing Turtle opcode names --- include/game/opcode_table.hpp | 6 ++++++ src/game/game_handler.cpp | 10 +++++++++- src/game/opcode_table.cpp | 6 ++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/include/game/opcode_table.hpp b/include/game/opcode_table.hpp index e01f3335..7d96e3ae 100644 --- a/include/game/opcode_table.hpp +++ b/include/game/opcode_table.hpp @@ -323,6 +323,12 @@ enum class LogicalOpcode : uint16_t { SMSG_REMOVED_FROM_PVP_QUEUE, SMSG_TRAINER_BUY_SUCCEEDED, SMSG_BINDPOINTUPDATE, + SMSG_SET_PROFICIENCY, + SMSG_ACTION_BUTTONS, + SMSG_LEVELUP_INFO, + CMSG_TAXINODE_STATUS_QUERY, + SMSG_TAXINODE_STATUS, + CMSG_UPDATE_ACCOUNT_DATA, CMSG_BATTLEFIELD_LIST, SMSG_BATTLEFIELD_LIST, CMSG_BATTLEFIELD_JOIN, diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index a0d9a64d..a418d848 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -805,7 +805,12 @@ void GameHandler::handlePacket(network::Packet& packet) { // Translate wire opcode to logical opcode via expansion table auto logicalOp = opcodeTable_.fromWire(opcode); if (!logicalOp) { - LOG_WARNING("Unhandled world opcode: 0x", std::hex, opcode, std::dec); + static std::unordered_set loggedUnknownWireOpcodes; + if (loggedUnknownWireOpcodes.insert(opcode).second) { + LOG_WARNING("Unhandled world opcode: 0x", std::hex, opcode, std::dec, + " state=", static_cast(state), + " size=", packet.getSize()); + } return; } @@ -1256,6 +1261,9 @@ void GameHandler::handlePacket(network::Packet& packet) { case Opcode::SMSG_PERIODICAURALOG: case Opcode::SMSG_SPELLENERGIZELOG: case Opcode::SMSG_ENVIRONMENTALDAMAGELOG: + case Opcode::SMSG_SET_PROFICIENCY: + case Opcode::SMSG_ACTION_BUTTONS: + case Opcode::SMSG_LEVELUP_INFO: break; case Opcode::SMSG_LOOT_MONEY_NOTIFY: { diff --git a/src/game/opcode_table.cpp b/src/game/opcode_table.cpp index 4cf9f314..88b212b2 100644 --- a/src/game/opcode_table.cpp +++ b/src/game/opcode_table.cpp @@ -255,6 +255,12 @@ static const OpcodeNameEntry kOpcodeNames[] = { {"SMSG_REMOVED_FROM_PVP_QUEUE", LogicalOpcode::SMSG_REMOVED_FROM_PVP_QUEUE}, {"SMSG_TRAINER_BUY_SUCCEEDED", LogicalOpcode::SMSG_TRAINER_BUY_SUCCEEDED}, {"SMSG_BINDPOINTUPDATE", LogicalOpcode::SMSG_BINDPOINTUPDATE}, + {"SMSG_SET_PROFICIENCY", LogicalOpcode::SMSG_SET_PROFICIENCY}, + {"SMSG_ACTION_BUTTONS", LogicalOpcode::SMSG_ACTION_BUTTONS}, + {"SMSG_LEVELUP_INFO", LogicalOpcode::SMSG_LEVELUP_INFO}, + {"CMSG_TAXINODE_STATUS_QUERY", LogicalOpcode::CMSG_TAXINODE_STATUS_QUERY}, + {"SMSG_TAXINODE_STATUS", LogicalOpcode::SMSG_TAXINODE_STATUS}, + {"CMSG_UPDATE_ACCOUNT_DATA", LogicalOpcode::CMSG_UPDATE_ACCOUNT_DATA}, {"CMSG_BATTLEFIELD_LIST", LogicalOpcode::CMSG_BATTLEFIELD_LIST}, {"SMSG_BATTLEFIELD_LIST", LogicalOpcode::SMSG_BATTLEFIELD_LIST}, {"CMSG_BATTLEFIELD_JOIN", LogicalOpcode::CMSG_BATTLEFIELD_JOIN},