refactor: derive turtle opcodes from classic

This commit is contained in:
Kelsi 2026-03-15 02:55:05 -07:00
parent 0b6265bc55
commit 6ede9a2968
12 changed files with 428 additions and 394 deletions

View file

@ -41,5 +41,4 @@
{"SMSG_SPLINE_MOVE_SET_RUN_BACK_SPEED", "SMSG_SPLINE_SET_RUN_BACK_SPEED"},
{"SMSG_SPLINE_MOVE_SET_RUN_SPEED", "SMSG_SPLINE_SET_RUN_SPEED"},
{"SMSG_SPLINE_MOVE_SET_SWIM_SPEED", "SMSG_SPLINE_SET_SWIM_SPEED"},
{"SMSG_UPDATE_AURA_DURATION", "SMSG_EQUIPMENT_SET_SAVED"},
{"SMSG_VICTIMSTATEUPDATE_OBSOLETE", "SMSG_BATTLEFIELD_PORT_DENIED"},

View file

@ -33,7 +33,10 @@ class OpcodeTable {
public:
/**
* Load opcode mappings from a JSON file.
* Format: { "CMSG_PING": "0x1DC", "SMSG_AUTH_CHALLENGE": "0x1EC", ... }
* Format:
* { "CMSG_PING": "0x1DC", "SMSG_AUTH_CHALLENGE": "0x1EC", ... }
* or a delta file with:
* { "_extends": "../classic/opcodes.json", "_remove": ["MSG_FOO"], ...overrides }
*/
bool loadFromJson(const std::string& path);

View file

@ -439,14 +439,16 @@ public:
};
/**
* Turtle WoW (build 7234) packet parsers.
* Turtle WoW packet parsers.
*
* Turtle WoW is a heavily modified vanilla server that sends TBC-style
* movement blocks (moveFlags2, transport timestamps, 8 speeds including flight)
* while keeping all other Classic packet formats.
* Turtle is Classic-based but not wire-identical to vanilla MaNGOS. It keeps
* most Classic packet formats, while overriding the movement-bearing paths that
* have proven to vary in live traffic:
* - update-object movement blocks use a Turtle-specific hybrid layout
* - update-object parsing falls back through Classic/TBC/WotLK movement layouts
* - monster-move parsing falls back through Vanilla, TBC, and guarded WotLK layouts
*
* Inherits all Classic overrides (charEnum, chat, gossip, mail, items, etc.)
* but delegates movement block parsing to TBC format.
* Everything else inherits the Classic parser behavior.
*/
class TurtlePacketParsers : public ClassicPacketParsers {
public: