Opcode tables: sync Classic/WotLK to canonical headers and expand logical mapping coverage

Classic: synchronized Data/expansions/classic/opcodes.json to /home/k/Desktop/classicopcodes.h with exact symbol/value parity (0 missing, 0 mismatches).

WotLK: synchronized Data/expansions/wotlk/opcodes.json to /home/k/Desktop/azerothcoreOpcodes.h and aligned symbol names to AzerothCore naming.

Logical opcode layer: expanded include/game/opcode_table.hpp and src/game/opcode_table.cpp to include missing canonical opcode symbols required by synced tables, and removed legacy alias fallback block so canonical names are used directly.

Gameplay/handler updates included from ongoing fixes: duel/taxi stale opcode cleanup, level-up/sound handling adjustments, and related parser/packet references updated to match canonical opcode identifiers.

Validated by successful full build: cmake --build build -j32.
This commit is contained in:
Kelsi 2026-02-20 02:50:59 -08:00
parent b24703db30
commit 52ac3bcba3
14 changed files with 4956 additions and 645 deletions

View file

@ -737,7 +737,7 @@ void Application::update(float deltaTime) {
renderer->getCharacterPosition() = p;
glm::vec3 canonical = core::coords::renderToCanonical(p);
gameHandler->setPosition(canonical.x, canonical.y, canonical.z);
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_HEARTBEAT);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_HEARTBEAT);
}
taxiLandingClampTimer_ -= deltaTime;
}
@ -878,7 +878,7 @@ void Application::update(float deltaTime) {
}
// Send movement heartbeat so server knows our new position
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_HEARTBEAT);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_HEARTBEAT);
}
} else {
glm::vec3 renderPos = renderer->getCharacterPosition();
@ -894,7 +894,7 @@ void Application::update(float deltaTime) {
float canonicalYaw = core::coords::normalizeAngleRad(glm::radians(180.0f - yawDeg));
gameHandler->setOrientation(canonicalYaw);
// Send CMSG_MOVE_SET_FACING when the player changes facing direction
// Send MSG_MOVE_SET_FACING when the player changes facing direction
// (e.g. via mouse-look). Without this, the server predicts movement in
// the old facing and position-corrects on the next heartbeat — the
// micro-teleporting the GM observed.
@ -908,7 +908,7 @@ void Application::update(float deltaTime) {
if (!keyboardTurning && facingSendCooldown_ <= 0.0f) {
float yawDiff = core::coords::normalizeAngleRad(canonicalYaw - lastSentCanonicalYaw_);
if (std::abs(yawDiff) > glm::radians(3.0f)) {
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_SET_FACING);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_SET_FACING);
lastSentCanonicalYaw_ = canonicalYaw;
facingSendCooldown_ = 0.1f; // max 10 Hz
}
@ -1191,11 +1191,11 @@ void Application::setupUICallbacks() {
}
if (gameHandler) {
gameHandler->forceClearTaxiAndMovementState();
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_STOP);
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_STOP_STRAFE);
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_STOP_TURN);
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_STOP_SWIM);
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_HEARTBEAT);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_STOP);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_STOP_STRAFE);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_STOP_TURN);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_STOP_SWIM);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_HEARTBEAT);
}
};
@ -1203,10 +1203,10 @@ void Application::setupUICallbacks() {
if (!gameHandler) return;
glm::vec3 canonical = core::coords::renderToCanonical(renderPos);
gameHandler->setPosition(canonical.x, canonical.y, canonical.z);
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_STOP);
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_STOP_STRAFE);
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_STOP_TURN);
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_HEARTBEAT);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_STOP);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_STOP_STRAFE);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_STOP_TURN);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_HEARTBEAT);
};
auto forceServerTeleportCommand = [this](const glm::vec3& renderPos) {
@ -1425,7 +1425,7 @@ void Application::setupUICallbacks() {
// Sync canonical orientation to server so it knows we turned
float canonicalYaw = core::coords::normalizeAngleRad(glm::radians(180.0f - yawDeg));
gameHandler->setOrientation(canonicalYaw);
gameHandler->sendMovement(game::Opcode::CMSG_MOVE_SET_FACING);
gameHandler->sendMovement(game::Opcode::MSG_MOVE_SET_FACING);
// Set charge state
chargeActive_ = true;