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

File diff suppressed because it is too large Load diff

View file

@ -5,21 +5,6 @@
"CMSG_CHAR_ENUM": "0x037",
"CMSG_CHAR_DELETE": "0x038",
"CMSG_PLAYER_LOGIN": "0x03D",
"CMSG_MOVE_START_FORWARD": "0x0B5",
"CMSG_MOVE_START_BACKWARD": "0x0B6",
"CMSG_MOVE_STOP": "0x0B7",
"CMSG_MOVE_START_STRAFE_LEFT": "0x0B8",
"CMSG_MOVE_START_STRAFE_RIGHT": "0x0B9",
"CMSG_MOVE_STOP_STRAFE": "0x0BA",
"CMSG_MOVE_JUMP": "0x0BB",
"CMSG_MOVE_START_TURN_LEFT": "0x0BC",
"CMSG_MOVE_START_TURN_RIGHT": "0x0BD",
"CMSG_MOVE_STOP_TURN": "0x0BE",
"CMSG_MOVE_SET_FACING": "0x0DA",
"CMSG_MOVE_FALL_LAND": "0x0C9",
"CMSG_MOVE_START_SWIM": "0x0CA",
"CMSG_MOVE_STOP_SWIM": "0x0CB",
"CMSG_MOVE_HEARTBEAT": "0x0EE",
"SMSG_AUTH_CHALLENGE": "0x1EC",
"SMSG_AUTH_RESPONSE": "0x1EE",
"SMSG_CHAR_CREATE": "0x03A",
@ -42,7 +27,6 @@
"SMSG_MESSAGECHAT": "0x096",
"CMSG_WHO": "0x062",
"SMSG_WHO": "0x063",
"CMSG_REQUEST_PLAYED_TIME": "0x1CC",
"SMSG_PLAYED_TIME": "0x1CD",
"CMSG_QUERY_TIME": "0x1CE",
"SMSG_QUERY_TIME_RESPONSE": "0x1CF",
@ -57,17 +41,10 @@
"CMSG_LOGOUT_CANCEL": "0x04E",
"SMSG_LOGOUT_RESPONSE": "0x04C",
"SMSG_LOGOUT_COMPLETE": "0x04D",
"CMSG_STAND_STATE_CHANGE": "0x101",
"CMSG_SHOWING_HELM": "0x2B9",
"CMSG_SHOWING_CLOAK": "0x2BA",
"CMSG_TOGGLE_PVP": "0x253",
"CMSG_GUILD_INVITE": "0x082",
"CMSG_GUILD_ACCEPT": "0x084",
"CMSG_GUILD_DECLINE_INVITATION": "0x085",
"CMSG_GUILD_INFO": "0x087",
"CMSG_GUILD_GET_ROSTER": "0x089",
"CMSG_GUILD_PROMOTE_MEMBER": "0x08B",
"CMSG_GUILD_DEMOTE_MEMBER": "0x08C",
"CMSG_GUILD_LEAVE": "0x08D",
"CMSG_GUILD_MOTD": "0x091",
"SMSG_GUILD_INFO": "0x088",
@ -107,17 +84,16 @@
"SMSG_SPELLHEALLOG": "0x150",
"SMSG_SPELLENERGIZELOG": "0x151",
"SMSG_PERIODICAURALOG": "0x24E",
"SMSG_ENVIRONMENTALDAMAGELOG": "0x1FC",
"SMSG_ENVIRONMENTAL_DAMAGE_LOG": "0x1FC",
"CMSG_CAST_SPELL": "0x12E",
"CMSG_CANCEL_CAST": "0x12F",
"CMSG_CANCEL_AURA": "0x136",
"SMSG_CAST_FAILED": "0x130",
"SMSG_SPELL_START": "0x131",
"SMSG_SPELL_GO": "0x132",
"SMSG_SPELL_FAILURE": "0x133",
"SMSG_SPELL_COOLDOWN": "0x134",
"SMSG_COOLDOWN_EVENT": "0x135",
"SMSG_UPDATE_AURA_DURATION": "0x137",
"SMSG_EQUIPMENT_SET_SAVED": "0x137",
"SMSG_INITIAL_SPELLS": "0x12A",
"SMSG_LEARNED_SPELL": "0x12B",
"SMSG_SUPERCEDED_SPELL": "0x12C",
@ -157,7 +133,6 @@
"SMSG_GOSSIP_MESSAGE": "0x17D",
"SMSG_GOSSIP_COMPLETE": "0x17E",
"SMSG_NPC_TEXT_UPDATE": "0x180",
"CMSG_GAMEOBJECT_USE": "0x0B1",
"CMSG_QUESTGIVER_STATUS_QUERY": "0x182",
"SMSG_QUESTGIVER_STATUS": "0x183",
"SMSG_QUESTGIVER_STATUS_MULTIPLE": "0x417",
@ -198,13 +173,11 @@
"CMSG_SWAP_INV_ITEM": "0x10D",
"SMSG_INVENTORY_CHANGE_FAILURE": "0x112",
"CMSG_INSPECT": "0x114",
"SMSG_INSPECT_RESULTS": "0x115",
"CMSG_REPOP_REQUEST": "0x15A",
"SMSG_RESURRECT_REQUEST": "0x15B",
"CMSG_RESURRECT_RESPONSE": "0x15C",
"CMSG_SPIRIT_HEALER_ACTIVATE": "0x21C",
"SMSG_SPIRIT_HEALER_CONFIRM": "0x222",
"SMSG_RESURRECT_CANCEL": "0x390",
"MSG_MOVE_TELEPORT_ACK": "0x0C7",
"SMSG_TRANSFER_PENDING": "0x03F",
"SMSG_NEW_WORLD": "0x03E",
@ -217,8 +190,6 @@
"SMSG_ACTIVATETAXIREPLY": "0x1AE",
"SMSG_NEW_TAXI_PATH": "0x1AF",
"CMSG_ACTIVATETAXIEXPRESS": "0x312",
"SMSG_BATTLEFIELD_PORT_DENIED": "0x14B",
"SMSG_REMOVED_FROM_PVP_QUEUE": "0x170",
"SMSG_TRAINER_BUY_SUCCEEDED": "0x1B3",
"SMSG_BINDPOINTUPDATE": "0x155",
"CMSG_BATTLEFIELD_LIST": "0x23C",
@ -256,12 +227,13 @@
"SMSG_ARENA_ERROR": "0x376",
"MSG_INSPECT_ARENA_TEAMS": "0x377",
"SMSG_LEVELUP_INFO": "0x1D4",
"SMSG_PLAY_SOUND": "0x2D2",
"SMSG_SET_PROFICIENCY": "0x127",
"SMSG_ACTION_BUTTONS": "0x129",
"CMSG_TAXINODE_STATUS_QUERY": "0x1AA",
"SMSG_TAXINODE_STATUS": "0x1AB",
"SMSG_INIT_EXTRA_AURA_INFO": "0x3A3",
"SMSG_SET_EXTRA_AURA_INFO": "0x3A4",
"SMSG_INIT_EXTRA_AURA_INFO_OBSOLETE": "0x3A3",
"SMSG_SET_EXTRA_AURA_INFO_OBSOLETE": "0x3A4",
"CMSG_EMOTE": "0x102",
"SMSG_EMOTE": "0x103",
"CMSG_TEXT_EMOTE": "0x104",
@ -272,7 +244,6 @@
"CMSG_CHANNEL_LIST": "0x09A",
"SMSG_CHANNEL_LIST": "0x09B",
"SMSG_INSPECT_TALENT": "0x3F3",
"SMSG_INIT_WORLD_STATES": "0x2C2",
"SMSG_INITIALIZE_FACTIONS": "0x122",
"SMSG_CLIENT_CONTROL_UPDATE": "0x159",
@ -281,28 +252,19 @@
"SMSG_AI_REACTION": "0x13C",
"SMSG_PLAY_SPELL_VISUAL": "0x1F3",
"SMSG_CANCEL_AUTO_REPEAT": "0x29C",
"SMSG_SPLINE_MOVE_SET_WALK_MODE": "0x30E",
"SMSG_SPLINE_MOVE_SET_RUN_MODE": "0x30D",
"SMSG_SPLINE_MOVE_SET_RUN_SPEED": "0x2FE",
"SMSG_SPLINE_MOVE_SET_RUN_BACK_SPEED": "0x2FF",
"SMSG_SPLINE_MOVE_SET_SWIM_SPEED": "0x300",
"SMSG_QUESTUPDATE_ADD_ITEM": "0x19A",
"SMSG_QUEST_FORCE_REMOVE": "0x21E",
"CMSG_GUILD_DISBAND": "0x08F",
"CMSG_GUILD_LEADER": "0x090",
"CMSG_GUILD_SET_PUBLIC_NOTE": "0x234",
"CMSG_GUILD_SET_OFFICER_NOTE": "0x235",
"CMSG_BANKER_ACTIVATE": "0x1B7",
"SMSG_SHOW_BANK": "0x1B8",
"CMSG_BUY_BANK_SLOT": "0x1B9",
"SMSG_BUY_BANK_SLOT_RESULT": "0x1BA",
"CMSG_AUTOSTORE_BANK_ITEM": "0x282",
"CMSG_AUTOBANK_ITEM": "0x283",
"CMSG_GUILD_BANKER_ACTIVATE": "0x3E5",
"CMSG_GUILD_BANK_QUERY_TAB": "0x3E6",
"SMSG_GUILD_BANK_LIST": "0x3E7",
@ -311,7 +273,6 @@
"CMSG_GUILD_BANK_UPDATE_TAB": "0x3EA",
"CMSG_GUILD_BANK_DEPOSIT_MONEY": "0x3EB",
"CMSG_GUILD_BANK_WITHDRAW_MONEY": "0x3EC",
"MSG_AUCTION_HELLO": "0x255",
"CMSG_AUCTION_SELL_ITEM": "0x256",
"CMSG_AUCTION_REMOVE_ITEM": "0x257",
@ -324,5 +285,772 @@
"SMSG_AUCTION_BIDDER_NOTIFICATION": "0x25E",
"SMSG_AUCTION_OWNER_NOTIFICATION": "0x25F",
"CMSG_AUCTION_LIST_BIDDER_ITEMS": "0x264",
"SMSG_AUCTION_BIDDER_LIST_RESULT": "0x265"
"SMSG_AUCTION_BIDDER_LIST_RESULT": "0x265",
"MSG_NULL_ACTION": "0x000",
"CMSG_BOOTME": "0x001",
"CMSG_DBLOOKUP": "0x002",
"SMSG_DBLOOKUP": "0x003",
"CMSG_QUERY_OBJECT_POSITION": "0x004",
"SMSG_QUERY_OBJECT_POSITION": "0x005",
"CMSG_QUERY_OBJECT_ROTATION": "0x006",
"SMSG_QUERY_OBJECT_ROTATION": "0x007",
"CMSG_WORLD_TELEPORT": "0x008",
"CMSG_TELEPORT_TO_UNIT": "0x009",
"CMSG_ZONE_MAP": "0x00A",
"SMSG_ZONE_MAP": "0x00B",
"CMSG_DEBUG_CHANGECELLZONE": "0x00C",
"CMSG_EMBLAZON_TABARD_OBSOLETE": "0x00D",
"CMSG_UNEMBLAZON_TABARD_OBSOLETE": "0x00E",
"CMSG_RECHARGE": "0x00F",
"CMSG_LEARN_SPELL": "0x010",
"CMSG_CREATEMONSTER": "0x011",
"CMSG_DESTROYMONSTER": "0x012",
"CMSG_CREATEITEM": "0x013",
"CMSG_CREATEGAMEOBJECT": "0x014",
"SMSG_CHECK_FOR_BOTS": "0x015",
"CMSG_MAKEMONSTERATTACKGUID": "0x016",
"CMSG_BOT_DETECTED2": "0x017",
"CMSG_FORCEACTION": "0x018",
"CMSG_FORCEACTIONONOTHER": "0x019",
"CMSG_FORCEACTIONSHOW": "0x01A",
"SMSG_FORCEACTIONSHOW": "0x01B",
"CMSG_PETGODMODE": "0x01C",
"SMSG_PETGODMODE": "0x01D",
"SMSG_DEBUGINFOSPELLMISS_OBSOLETE": "0x01E",
"CMSG_WEATHER_SPEED_CHEAT": "0x01F",
"CMSG_UNDRESSPLAYER": "0x020",
"CMSG_BEASTMASTER": "0x021",
"CMSG_GODMODE": "0x022",
"SMSG_GODMODE": "0x023",
"CMSG_CHEAT_SETMONEY": "0x024",
"CMSG_LEVEL_CHEAT": "0x025",
"CMSG_PET_LEVEL_CHEAT": "0x026",
"CMSG_SET_WORLDSTATE": "0x027",
"CMSG_COOLDOWN_CHEAT": "0x028",
"CMSG_USE_SKILL_CHEAT": "0x029",
"CMSG_FLAG_QUEST": "0x02A",
"CMSG_FLAG_QUEST_FINISH": "0x02B",
"CMSG_CLEAR_QUEST": "0x02C",
"CMSG_SEND_EVENT": "0x02D",
"CMSG_DEBUG_AISTATE": "0x02E",
"SMSG_DEBUG_AISTATE": "0x02F",
"CMSG_DISABLE_PVP_CHEAT": "0x030",
"CMSG_ADVANCE_SPAWN_TIME": "0x031",
"CMSG_PVP_PORT_OBSOLETE": "0x032",
"CMSG_AUTH_SRP6_BEGIN": "0x033",
"CMSG_AUTH_SRP6_PROOF": "0x034",
"CMSG_AUTH_SRP6_RECODE": "0x035",
"SMSG_AUTH_SRP6_RESPONSE": "0x039",
"SMSG_GAMETIME_UPDATE": "0x043",
"CMSG_GAMETIME_SET": "0x044",
"SMSG_GAMETIME_SET": "0x045",
"CMSG_GAMESPEED_SET": "0x046",
"SMSG_GAMESPEED_SET": "0x047",
"CMSG_SERVERTIME": "0x048",
"SMSG_SERVERTIME": "0x049",
"SMSG_LOGOUT_CANCEL_ACK": "0x04F",
"CMSG_PET_NAME_QUERY": "0x052",
"SMSG_PET_NAME_QUERY_RESPONSE": "0x053",
"CMSG_ITEM_QUERY_MULTIPLE": "0x057",
"SMSG_ITEM_QUERY_MULTIPLE_RESPONSE": "0x059",
"CMSG_PAGE_TEXT_QUERY": "0x05A",
"SMSG_PAGE_TEXT_QUERY_RESPONSE": "0x05B",
"CMSG_WHOIS": "0x064",
"SMSG_WHOIS": "0x065",
"CMSG_CONTACT_LIST": "0x066",
"CMSG_GROUP_CANCEL": "0x070",
"SMSG_GROUP_CANCEL": "0x071",
"CMSG_GROUP_UNINVITE": "0x075",
"CMSG_LOOT_METHOD": "0x07A",
"SMSG_GROUP_DESTROYED": "0x07C",
"SMSG_PARTY_MEMBER_STATS": "0x07E",
"CMSG_GUILD_CREATE": "0x081",
"CMSG_GUILD_DECLINE": "0x085",
"SMSG_GUILD_DECLINE": "0x086",
"CMSG_GUILD_ROSTER": "0x089",
"CMSG_GUILD_PROMOTE": "0x08B",
"CMSG_GUILD_DEMOTE": "0x08C",
"CMSG_CHANNEL_PASSWORD": "0x09C",
"CMSG_CHANNEL_SET_OWNER": "0x09D",
"CMSG_CHANNEL_OWNER": "0x09E",
"CMSG_CHANNEL_MODERATOR": "0x09F",
"CMSG_CHANNEL_UNMODERATOR": "0x0A0",
"CMSG_CHANNEL_MUTE": "0x0A1",
"CMSG_CHANNEL_UNMUTE": "0x0A2",
"CMSG_CHANNEL_INVITE": "0x0A3",
"CMSG_CHANNEL_KICK": "0x0A4",
"CMSG_CHANNEL_BAN": "0x0A5",
"CMSG_CHANNEL_UNBAN": "0x0A6",
"CMSG_CHANNEL_ANNOUNCEMENTS": "0x0A7",
"CMSG_CHANNEL_MODERATE": "0x0A8",
"CMSG_OPEN_ITEM": "0x0AC",
"CMSG_READ_ITEM": "0x0AD",
"SMSG_READ_ITEM_OK": "0x0AE",
"SMSG_READ_ITEM_FAILED": "0x0AF",
"SMSG_ITEM_COOLDOWN": "0x0B0",
"CMSG_GAMEOBJ_USE": "0x0B1",
"CMSG_GAMEOBJ_CHAIR_USE_OBSOLETE": "0x0B2",
"SMSG_GAMEOBJECT_CUSTOM_ANIM": "0x0B3",
"CMSG_AREATRIGGER": "0x0B4",
"MSG_MOVE_START_FORWARD": "0x0B5",
"MSG_MOVE_START_BACKWARD": "0x0B6",
"MSG_MOVE_STOP": "0x0B7",
"MSG_MOVE_START_STRAFE_LEFT": "0x0B8",
"MSG_MOVE_START_STRAFE_RIGHT": "0x0B9",
"MSG_MOVE_STOP_STRAFE": "0x0BA",
"MSG_MOVE_JUMP": "0x0BB",
"MSG_MOVE_START_TURN_LEFT": "0x0BC",
"MSG_MOVE_START_TURN_RIGHT": "0x0BD",
"MSG_MOVE_STOP_TURN": "0x0BE",
"MSG_MOVE_START_PITCH_UP": "0x0BF",
"MSG_MOVE_START_PITCH_DOWN": "0x0C0",
"MSG_MOVE_STOP_PITCH": "0x0C1",
"MSG_MOVE_SET_RUN_MODE": "0x0C2",
"MSG_MOVE_SET_WALK_MODE": "0x0C3",
"MSG_MOVE_TOGGLE_LOGGING": "0x0C4",
"MSG_MOVE_TELEPORT": "0x0C5",
"MSG_MOVE_TELEPORT_CHEAT": "0x0C6",
"MSG_MOVE_TOGGLE_FALL_LOGGING": "0x0C8",
"MSG_MOVE_FALL_LAND": "0x0C9",
"MSG_MOVE_START_SWIM": "0x0CA",
"MSG_MOVE_STOP_SWIM": "0x0CB",
"MSG_MOVE_SET_RUN_SPEED_CHEAT": "0x0CC",
"MSG_MOVE_SET_RUN_SPEED": "0x0CD",
"MSG_MOVE_SET_RUN_BACK_SPEED_CHEAT": "0x0CE",
"MSG_MOVE_SET_RUN_BACK_SPEED": "0x0CF",
"MSG_MOVE_SET_WALK_SPEED_CHEAT": "0x0D0",
"MSG_MOVE_SET_WALK_SPEED": "0x0D1",
"MSG_MOVE_SET_SWIM_SPEED_CHEAT": "0x0D2",
"MSG_MOVE_SET_SWIM_SPEED": "0x0D3",
"MSG_MOVE_SET_SWIM_BACK_SPEED_CHEAT": "0x0D4",
"MSG_MOVE_SET_SWIM_BACK_SPEED": "0x0D5",
"MSG_MOVE_SET_ALL_SPEED_CHEAT": "0x0D6",
"MSG_MOVE_SET_TURN_RATE_CHEAT": "0x0D7",
"MSG_MOVE_SET_TURN_RATE": "0x0D8",
"MSG_MOVE_TOGGLE_COLLISION_CHEAT": "0x0D9",
"MSG_MOVE_SET_FACING": "0x0DA",
"MSG_MOVE_SET_PITCH": "0x0DB",
"SMSG_MOVE_WATER_WALK": "0x0DE",
"SMSG_MOVE_LAND_WALK": "0x0DF",
"MSG_MOVE_SET_RAW_POSITION_ACK": "0x0E0",
"CMSG_MOVE_SET_RAW_POSITION": "0x0E1",
"SMSG_FORCE_RUN_BACK_SPEED_CHANGE": "0x0E4",
"CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK": "0x0E5",
"SMSG_FORCE_SWIM_SPEED_CHANGE": "0x0E6",
"CMSG_FORCE_SWIM_SPEED_CHANGE_ACK": "0x0E7",
"SMSG_FORCE_MOVE_ROOT": "0x0E8",
"CMSG_FORCE_MOVE_ROOT_ACK": "0x0E9",
"SMSG_FORCE_MOVE_UNROOT": "0x0EA",
"CMSG_FORCE_MOVE_UNROOT_ACK": "0x0EB",
"MSG_MOVE_ROOT": "0x0EC",
"MSG_MOVE_UNROOT": "0x0ED",
"MSG_MOVE_HEARTBEAT": "0x0EE",
"SMSG_MOVE_KNOCK_BACK": "0x0EF",
"CMSG_MOVE_KNOCK_BACK_ACK": "0x0F0",
"MSG_MOVE_KNOCK_BACK": "0x0F1",
"SMSG_MOVE_FEATHER_FALL": "0x0F2",
"SMSG_MOVE_NORMAL_FALL": "0x0F3",
"SMSG_MOVE_SET_HOVER": "0x0F4",
"SMSG_MOVE_UNSET_HOVER": "0x0F5",
"CMSG_MOVE_HOVER_ACK": "0x0F6",
"MSG_MOVE_HOVER": "0x0F7",
"CMSG_TRIGGER_CINEMATIC_CHEAT": "0x0F8",
"CMSG_OPENING_CINEMATIC": "0x0F9",
"SMSG_TRIGGER_CINEMATIC": "0x0FA",
"CMSG_NEXT_CINEMATIC_CAMERA": "0x0FB",
"CMSG_COMPLETE_CINEMATIC": "0x0FC",
"CMSG_TUTORIAL_FLAG": "0x0FE",
"CMSG_TUTORIAL_CLEAR": "0x0FF",
"CMSG_TUTORIAL_RESET": "0x100",
"CMSG_STANDSTATECHANGE": "0x101",
"CMSG_AUTOEQUIP_GROUND_ITEM": "0x106",
"CMSG_AUTOSTORE_GROUND_ITEM": "0x107",
"CMSG_STORE_LOOT_IN_SLOT": "0x109",
"CMSG_AUTOSTORE_BAG_ITEM": "0x10B",
"CMSG_SPLIT_ITEM": "0x10E",
"CMSG_AUTOEQUIP_ITEM_SLOT": "0x10F",
"CMSG_DESTROYITEM": "0x111",
"SMSG_OPEN_CONTAINER": "0x113",
"SMSG_INSPECT_RESULTS_UPDATE": "0x115",
"CMSG_BEGIN_TRADE": "0x117",
"CMSG_BUSY_TRADE": "0x118",
"CMSG_IGNORE_TRADE": "0x119",
"CMSG_ACCEPT_TRADE": "0x11A",
"CMSG_UNACCEPT_TRADE": "0x11B",
"CMSG_CANCEL_TRADE": "0x11C",
"CMSG_SET_TRADE_ITEM": "0x11D",
"CMSG_CLEAR_TRADE_ITEM": "0x11E",
"CMSG_SET_TRADE_GOLD": "0x11F",
"SMSG_TRADE_STATUS": "0x120",
"SMSG_TRADE_STATUS_EXTENDED": "0x121",
"SMSG_SET_FACTION_VISIBLE": "0x123",
"SMSG_SET_FACTION_STANDING": "0x124",
"CMSG_SET_FACTION_ATWAR": "0x125",
"CMSG_SET_FACTION_CHEAT": "0x126",
"CMSG_SET_ACTION_BUTTON": "0x128",
"CMSG_NEW_SPELL_SLOT": "0x12D",
"SMSG_CAST_FAILED": "0x130",
"SMSG_PET_CAST_FAILED": "0x138",
"MSG_CHANNEL_START": "0x139",
"MSG_CHANNEL_UPDATE": "0x13A",
"CMSG_CANCEL_CHANNELLING": "0x13B",
"CMSG_SET_TARGET_OBSOLETE": "0x13E",
"CMSG_UNUSED": "0x13F",
"CMSG_UNUSED2": "0x140",
"SMSG_ATTACKSWING_NOTINRANGE": "0x145",
"SMSG_ATTACKSWING_BADFACING": "0x146",
"SMSG_ATTACKSWING_NOTSTANDING": "0x147",
"SMSG_ATTACKSWING_DEADTARGET": "0x148",
"SMSG_ATTACKSWING_CANT_ATTACK": "0x149",
"SMSG_BATTLEFIELD_PORT_DENIED": "0x14B",
"SMSG_DAMAGE_DONE_OBSOLETE": "0x14C",
"SMSG_DAMAGE_TAKEN_OBSOLETE": "0x14D",
"SMSG_CANCEL_COMBAT": "0x14E",
"SMSG_PLAYER_COMBAT_XP_GAIN_OBSOLETE": "0x14F",
"CMSG_SHEATHE_OBSOLETE": "0x152",
"CMSG_SAVE_PLAYER": "0x153",
"CMSG_SETDEATHBINDPOINT": "0x154",
"CMSG_GETDEATHBINDZONE": "0x156",
"SMSG_BINDZONEREPLY": "0x157",
"SMSG_PLAYERBOUND": "0x158",
"SMSG_LOOT_ITEM_NOTIFY": "0x164",
"SMSG_DUEL_OUTOFBOUNDS": "0x168",
"SMSG_DUEL_INBOUNDS": "0x169",
"SMSG_DUEL_COMPLETE": "0x16A",
"SMSG_DUEL_WINNER": "0x16B",
"SMSG_MOUNTRESULT": "0x16E",
"SMSG_DISMOUNTRESULT": "0x16F",
"SMSG_REMOVED_FROM_PVP_QUEUE": "0x170",
"CMSG_MOUNTSPECIAL_ANIM": "0x171",
"SMSG_MOUNTSPECIAL_ANIM": "0x172",
"SMSG_PET_TAME_FAILURE": "0x173",
"CMSG_PET_SET_ACTION": "0x174",
"CMSG_PET_ACTION": "0x175",
"CMSG_PET_ABANDON": "0x176",
"CMSG_PET_RENAME": "0x177",
"SMSG_PET_NAME_INVALID": "0x178",
"SMSG_PET_SPELLS": "0x179",
"SMSG_PET_MODE": "0x17A",
"CMSG_NPC_TEXT_QUERY": "0x17F",
"SMSG_NPC_WONT_TALK": "0x181",
"CMSG_QUESTGIVER_QUEST_AUTOLAUNCH": "0x187",
"CMSG_QUESTGIVER_CANCEL": "0x190",
"SMSG_QUESTGIVER_QUEST_FAILED": "0x192",
"CMSG_QUESTLOG_SWAP_QUEST": "0x193",
"SMSG_QUESTUPDATE_FAILED": "0x196",
"SMSG_QUESTUPDATE_FAILEDTIMER": "0x197",
"CMSG_QUEST_CONFIRM_ACCEPT": "0x19B",
"SMSG_QUEST_CONFIRM_ACCEPT": "0x19C",
"CMSG_PUSHQUESTTOPARTY": "0x19D",
"CMSG_BUY_ITEM_IN_SLOT": "0x1A3",
"SMSG_BUY_ITEM": "0x1A4",
"CMSG_TAXICLEARALLNODES": "0x1A6",
"CMSG_TAXIENABLEALLNODES": "0x1A7",
"CMSG_TAXISHOWNODES": "0x1A8",
"CMSG_TAXIQUERYAVAILABLENODES": "0x1AC",
"SMSG_PLAYERBINDERROR": "0x1B6",
"CMSG_PETITION_SHOWLIST": "0x1BB",
"SMSG_PETITION_SHOWLIST": "0x1BC",
"CMSG_PETITION_BUY": "0x1BD",
"CMSG_PETITION_SHOW_SIGNATURES": "0x1BE",
"SMSG_PETITION_SHOW_SIGNATURES": "0x1BF",
"CMSG_PETITION_SIGN": "0x1C0",
"SMSG_PETITION_SIGN_RESULTS": "0x1C1",
"MSG_PETITION_DECLINE": "0x1C2",
"CMSG_OFFER_PETITION": "0x1C3",
"CMSG_TURN_IN_PETITION": "0x1C4",
"SMSG_TURN_IN_PETITION_RESULTS": "0x1C5",
"CMSG_PETITION_QUERY": "0x1C6",
"SMSG_PETITION_QUERY_RESPONSE": "0x1C7",
"SMSG_FISH_NOT_HOOKED": "0x1C8",
"SMSG_FISH_ESCAPED": "0x1C9",
"CMSG_BUG": "0x1CA",
"SMSG_NOTIFICATION": "0x1CB",
"CMSG_PLAYED_TIME": "0x1CC",
"SMSG_AURACASTLOG": "0x1D1",
"CMSG_RECLAIM_CORPSE": "0x1D2",
"CMSG_WRAP_ITEM": "0x1D3",
"MSG_MINIMAP_PING": "0x1D5",
"SMSG_RESISTLOG": "0x1D6",
"SMSG_ENCHANTMENTLOG": "0x1D7",
"CMSG_SET_SKILL_CHEAT": "0x1D8",
"SMSG_START_MIRROR_TIMER": "0x1D9",
"SMSG_PAUSE_MIRROR_TIMER": "0x1DA",
"SMSG_STOP_MIRROR_TIMER": "0x1DB",
"SMSG_CLEAR_COOLDOWN": "0x1DE",
"SMSG_GAMEOBJECT_PAGETEXT": "0x1DF",
"CMSG_SETSHEATHED": "0x1E0",
"SMSG_COOLDOWN_CHEAT": "0x1E1",
"CMSG_PLAYER_MACRO_OBSOLETE": "0x1E3",
"SMSG_PLAYER_MACRO_OBSOLETE": "0x1E4",
"CMSG_GHOST": "0x1E5",
"CMSG_GM_INVIS": "0x1E6",
"SMSG_INVALID_PROMOTION_CODE": "0x1E7",
"MSG_GM_BIND_OTHER": "0x1E8",
"MSG_GM_SUMMON": "0x1E9",
"SMSG_ITEM_TIME_UPDATE": "0x1EA",
"SMSG_ITEM_ENCHANT_TIME_UPDATE": "0x1EB",
"MSG_GM_SHOWLABEL": "0x1EF",
"CMSG_PET_CAST_SPELL": "0x1F0",
"MSG_SAVE_GUILD_EMBLEM": "0x1F1",
"MSG_TABARDVENDOR_ACTIVATE": "0x1F2",
"CMSG_ZONEUPDATE": "0x1F4",
"SMSG_PLAY_SPELL_IMPACT": "0x1F7",
"SMSG_EXPLORATION_EXPERIENCE": "0x1F8",
"CMSG_GM_SET_SECURITY_GROUP": "0x1F9",
"CMSG_GM_NUKE": "0x1FA",
"CMSG_RWHOIS_OBSOLETE": "0x1FD",
"SMSG_RWHOIS": "0x1FE",
"MSG_LOOKING_FOR_GROUP": "0x1FF",
"CMSG_SET_LOOKING_FOR_GROUP": "0x200",
"CMSG_UNLEARN_SPELL": "0x201",
"CMSG_UNLEARN_SKILL": "0x202",
"CMSG_DECHARGE": "0x204",
"CMSG_GMTICKET_CREATE": "0x205",
"SMSG_GMTICKET_CREATE": "0x206",
"CMSG_GMTICKET_UPDATETEXT": "0x207",
"SMSG_GMTICKET_UPDATETEXT": "0x208",
"CMSG_REQUEST_ACCOUNT_DATA": "0x20A",
"CMSG_UPDATE_ACCOUNT_DATA": "0x20B",
"SMSG_UPDATE_ACCOUNT_DATA": "0x20C",
"SMSG_CLEAR_FAR_SIGHT_IMMEDIATE": "0x20D",
"SMSG_POWERGAINLOG_OBSOLETE": "0x20E",
"CMSG_GM_TEACH": "0x20F",
"CMSG_GM_CREATE_ITEM_TARGET": "0x210",
"CMSG_GMTICKET_GETTICKET": "0x211",
"SMSG_GMTICKET_GETTICKET": "0x212",
"CMSG_UNLEARN_TALENTS": "0x213",
"SMSG_GAMEOBJECT_SPAWN_ANIM_OBSOLETE": "0x214",
"SMSG_GAMEOBJECT_DESPAWN_ANIM": "0x215",
"MSG_CORPSE_QUERY": "0x216",
"CMSG_GMTICKET_DELETETICKET": "0x217",
"SMSG_GMTICKET_DELETETICKET": "0x218",
"SMSG_CHAT_WRONG_FACTION": "0x219",
"CMSG_GMTICKET_SYSTEMSTATUS": "0x21A",
"SMSG_GMTICKET_SYSTEMSTATUS": "0x21B",
"CMSG_SET_STAT_CHEAT": "0x21D",
"SMSG_QUEST_FORCE_REMOVE": "0x21E",
"CMSG_SKILL_BUY_STEP": "0x21F",
"CMSG_SKILL_BUY_RANK": "0x220",
"CMSG_XP_CHEAT": "0x221",
"CMSG_CHARACTER_POINT_CHEAT": "0x223",
"SMSG_GOSSIP_POI": "0x224",
"CMSG_CHAT_IGNORED": "0x225",
"CMSG_GM_VISION": "0x226",
"CMSG_SERVER_COMMAND": "0x227",
"CMSG_GM_SILENCE": "0x228",
"CMSG_GM_REVEALTO": "0x229",
"CMSG_GM_RESURRECT": "0x22A",
"CMSG_GM_SUMMONMOB": "0x22B",
"CMSG_GM_MOVECORPSE": "0x22C",
"CMSG_GM_FREEZE": "0x22D",
"CMSG_GM_UBERINVIS": "0x22E",
"CMSG_GM_REQUEST_PLAYER_INFO": "0x22F",
"SMSG_GM_PLAYER_INFO": "0x230",
"CMSG_GUILD_RANK": "0x231",
"CMSG_GUILD_ADD_RANK": "0x232",
"CMSG_GUILD_DEL_RANK": "0x233",
"CMSG_CLEAR_EXPLORATION": "0x237",
"CMSG_SEND_MAIL": "0x238",
"SMSG_SEND_MAIL_RESULT": "0x239",
"CMSG_GET_MAIL_LIST": "0x23A",
"SMSG_MAIL_LIST_RESULT": "0x23B",
"SMSG_BATTLEFIELD_WIN_OBSOLETE": "0x23F",
"SMSG_BATTLEFIELD_LOSE_OBSOLETE": "0x240",
"CMSG_TAXICLEARNODE": "0x241",
"CMSG_TAXIENABLENODE": "0x242",
"CMSG_ITEM_TEXT_QUERY": "0x243",
"SMSG_ITEM_TEXT_QUERY_RESPONSE": "0x244",
"CMSG_MAIL_TAKE_MONEY": "0x245",
"CMSG_MAIL_TAKE_ITEM": "0x246",
"CMSG_MAIL_MARK_AS_READ": "0x247",
"CMSG_MAIL_RETURN_TO_SENDER": "0x248",
"CMSG_MAIL_DELETE": "0x249",
"CMSG_MAIL_CREATE_TEXT_ITEM": "0x24A",
"SMSG_SPELLLOGMISS": "0x24B",
"SMSG_SPELLLOGEXECUTE": "0x24C",
"SMSG_DEBUGAURAPROC": "0x24D",
"SMSG_SPELLDAMAGESHIELD": "0x24F",
"SMSG_RESURRECT_FAILED": "0x252",
"SMSG_ZONE_UNDER_ATTACK": "0x254",
"SMSG_PROCRESIST": "0x260",
"SMSG_STANDSTATE_CHANGE_FAILURE_OBSOLETE": "0x261",
"SMSG_DISPEL_FAILED": "0x262",
"SMSG_SPELLORDAMAGE_IMMUNE": "0x263",
"CMSG_SET_AMMO": "0x268",
"SMSG_CORPSE_RECLAIM_DELAY": "0x269",
"CMSG_PET_CANCEL_AURA": "0x26B",
"CMSG_PLAYER_AI_CHEAT": "0x26C",
"CMSG_CANCEL_AUTO_REPEAT_SPELL": "0x26D",
"MSG_GM_ACCOUNT_ONLINE": "0x26E",
"MSG_LIST_STABLED_PETS": "0x26F",
"CMSG_STABLE_PET": "0x270",
"CMSG_UNSTABLE_PET": "0x271",
"CMSG_BUY_STABLE_SLOT": "0x272",
"SMSG_STABLE_RESULT": "0x273",
"CMSG_STABLE_REVIVE_PET": "0x274",
"CMSG_STABLE_SWAP_PET": "0x275",
"MSG_QUEST_PUSH_RESULT": "0x276",
"SMSG_PLAY_MUSIC": "0x277",
"SMSG_PLAY_OBJECT_SOUND": "0x278",
"CMSG_REQUEST_PET_INFO": "0x279",
"CMSG_FAR_SIGHT": "0x27A",
"SMSG_SPELLDISPELLOG": "0x27B",
"SMSG_DAMAGE_CALC_LOG": "0x27C",
"CMSG_ENABLE_DAMAGE_LOG": "0x27D",
"CMSG_GROUP_CHANGE_SUB_GROUP": "0x27E",
"CMSG_REQUEST_PARTY_MEMBER_STATS": "0x27F",
"CMSG_GROUP_SWAP_SUB_GROUP": "0x280",
"CMSG_RESET_FACTION_CHEAT": "0x281",
"MSG_QUERY_NEXT_MAIL_TIME": "0x284",
"SMSG_RECEIVED_MAIL": "0x285",
"SMSG_RAID_GROUP_ONLY": "0x286",
"CMSG_SET_DURABILITY_CHEAT": "0x287",
"CMSG_SET_PVP_RANK_CHEAT": "0x288",
"CMSG_ADD_PVP_MEDAL_CHEAT": "0x289",
"CMSG_DEL_PVP_MEDAL_CHEAT": "0x28A",
"CMSG_SET_PVP_TITLE": "0x28B",
"SMSG_PVP_CREDIT": "0x28C",
"SMSG_AUCTION_REMOVED_NOTIFICATION": "0x28D",
"CMSG_GROUP_RAID_CONVERT": "0x28E",
"CMSG_GROUP_ASSISTANT_LEADER": "0x28F",
"SMSG_SERVER_MESSAGE": "0x291",
"CMSG_MEETINGSTONE_JOIN": "0x292",
"SMSG_MEETINGSTONE_LEAVE": "0x293",
"CMSG_MEETINGSTONE_CHEAT": "0x294",
"SMSG_MEETINGSTONE_SETQUEUE": "0x295",
"CMSG_MEETINGSTONE_INFO": "0x296",
"SMSG_MEETINGSTONE_COMPLETE": "0x297",
"SMSG_MEETINGSTONE_IN_PROGRESS": "0x298",
"SMSG_MEETINGSTONE_MEMBER_ADDED": "0x299",
"CMSG_GMTICKETSYSTEM_TOGGLE": "0x29A",
"CMSG_CANCEL_GROWTH_AURA": "0x29B",
"SMSG_STANDSTATE_UPDATE": "0x29D",
"SMSG_LOOT_ALL_PASSED": "0x29E",
"SMSG_LOOT_ROLL_WON": "0x29F",
"CMSG_LOOT_ROLL": "0x2A0",
"SMSG_LOOT_START_ROLL": "0x2A1",
"SMSG_LOOT_ROLL": "0x2A2",
"CMSG_LOOT_MASTER_GIVE": "0x2A3",
"SMSG_LOOT_MASTER_LIST": "0x2A4",
"SMSG_SET_FORCED_REACTIONS": "0x2A5",
"SMSG_SPELL_FAILED_OTHER": "0x2A6",
"SMSG_GAMEOBJECT_RESET_STATE": "0x2A7",
"CMSG_REPAIR_ITEM": "0x2A8",
"SMSG_CHAT_PLAYER_NOT_FOUND": "0x2A9",
"SMSG_SUMMON_REQUEST": "0x2AB",
"CMSG_SUMMON_RESPONSE": "0x2AC",
"MSG_MOVE_TOGGLE_GRAVITY_CHEAT": "0x2AD",
"SMSG_PET_BROKEN": "0x2AF",
"MSG_MOVE_FEATHER_FALL": "0x2B0",
"MSG_MOVE_WATER_WALK": "0x2B1",
"CMSG_SERVER_BROADCAST": "0x2B2",
"CMSG_SELF_RES": "0x2B3",
"SMSG_FEIGN_DEATH_RESISTED": "0x2B4",
"CMSG_RUN_SCRIPT": "0x2B5",
"SMSG_SCRIPT_MESSAGE": "0x2B6",
"SMSG_DUEL_COUNTDOWN": "0x2B7",
"SMSG_AREA_TRIGGER_MESSAGE": "0x2B8",
"CMSG_SHOWING_HELM": "0x2B9",
"CMSG_SHOWING_CLOAK": "0x2BA",
"SMSG_MEETINGSTONE_JOINFAILED": "0x2BB",
"SMSG_PLAYER_SKINNED": "0x2BC",
"SMSG_DURABILITY_DAMAGE_DEATH": "0x2BD",
"CMSG_SET_EXPLORATION": "0x2BE",
"CMSG_SET_ACTIONBAR_TOGGLES": "0x2BF",
"MSG_PETITION_RENAME": "0x2C1",
"SMSG_UPDATE_WORLD_STATE": "0x2C3",
"CMSG_ITEM_NAME_QUERY": "0x2C4",
"SMSG_ITEM_NAME_QUERY_RESPONSE": "0x2C5",
"SMSG_PET_ACTION_FEEDBACK": "0x2C6",
"CMSG_CHAR_RENAME": "0x2C7",
"SMSG_CHAR_RENAME": "0x2C8",
"CMSG_MOVE_SPLINE_DONE": "0x2C9",
"CMSG_MOVE_FALL_RESET": "0x2CA",
"SMSG_INSTANCE_SAVE_CREATED": "0x2CB",
"CMSG_MOVE_TIME_SKIPPED": "0x2CE",
"CMSG_MOVE_FEATHER_FALL_ACK": "0x2CF",
"CMSG_MOVE_WATER_WALK_ACK": "0x2D0",
"CMSG_MOVE_NOT_ACTIVE_MOVER": "0x2D1",
"MSG_INSPECT_HONOR_STATS": "0x2D6",
"CMSG_MOVE_START_SWIM_CHEAT": "0x2D8",
"CMSG_MOVE_STOP_SWIM_CHEAT": "0x2D9",
"SMSG_FORCE_WALK_SPEED_CHANGE": "0x2DA",
"CMSG_FORCE_WALK_SPEED_CHANGE_ACK": "0x2DB",
"SMSG_FORCE_SWIM_BACK_SPEED_CHANGE": "0x2DC",
"CMSG_FORCE_SWIM_BACK_SPEED_CHANGE_ACK": "0x2DD",
"SMSG_FORCE_TURN_RATE_CHANGE": "0x2DE",
"CMSG_FORCE_TURN_RATE_CHANGE_ACK": "0x2DF",
"CMSG_AREA_SPIRIT_HEALER_QUERY": "0x2E2",
"CMSG_AREA_SPIRIT_HEALER_QUEUE": "0x2E3",
"SMSG_AREA_SPIRIT_HEALER_TIME": "0x2E4",
"CMSG_GM_UNTEACH": "0x2E5",
"CMSG_PET_STOP_ATTACK": "0x2EA",
"SMSG_BINDER_CONFIRM": "0x2EB",
"SMSG_ADDON_INFO": "0x2EF",
"CMSG_PET_UNLEARN": "0x2F0",
"SMSG_PET_UNLEARN_CONFIRM": "0x2F1",
"SMSG_PARTY_MEMBER_STATS_FULL": "0x2F2",
"CMSG_PET_SPELL_AUTOCAST": "0x2F3",
"SMSG_PLAY_TIME_WARNING": "0x2F5",
"SMSG_MINIGAME_SETUP": "0x2F6",
"SMSG_MINIGAME_STATE": "0x2F7",
"CMSG_MINIGAME_MOVE": "0x2F8",
"SMSG_MINIGAME_MOVE_FAILED": "0x2F9",
"SMSG_RAID_INSTANCE_MESSAGE": "0x2FA",
"SMSG_COMPRESSED_MOVES": "0x2FB",
"CMSG_GUILD_INFO_TEXT": "0x2FC",
"SMSG_CHAT_RESTRICTED": "0x2FD",
"SMSG_SPLINE_SET_RUN_SPEED": "0x2FE",
"SMSG_SPLINE_SET_RUN_BACK_SPEED": "0x2FF",
"SMSG_SPLINE_SET_SWIM_SPEED": "0x300",
"SMSG_SPLINE_SET_WALK_SPEED": "0x301",
"SMSG_SPLINE_SET_SWIM_BACK_SPEED": "0x302",
"SMSG_SPLINE_SET_TURN_RATE": "0x303",
"SMSG_SPLINE_MOVE_UNROOT": "0x304",
"SMSG_SPLINE_MOVE_FEATHER_FALL": "0x305",
"SMSG_SPLINE_MOVE_NORMAL_FALL": "0x306",
"SMSG_SPLINE_MOVE_SET_HOVER": "0x307",
"SMSG_SPLINE_MOVE_UNSET_HOVER": "0x308",
"SMSG_SPLINE_MOVE_WATER_WALK": "0x309",
"SMSG_SPLINE_MOVE_LAND_WALK": "0x30A",
"SMSG_SPLINE_MOVE_START_SWIM": "0x30B",
"SMSG_SPLINE_MOVE_STOP_SWIM": "0x30C",
"CMSG_GM_NUKE_ACCOUNT": "0x30F",
"MSG_GM_DESTROY_CORPSE": "0x310",
"CMSG_GM_DESTROY_ONLINE_CORPSE": "0x311",
"SMSG_SET_FACTION_ATWAR": "0x313",
"SMSG_GAMETIMEBIAS_SET": "0x314",
"CMSG_DEBUG_ACTIONS_START": "0x315",
"CMSG_DEBUG_ACTIONS_STOP": "0x316",
"CMSG_SET_FACTION_INACTIVE": "0x317",
"CMSG_SET_WATCHED_FACTION": "0x318",
"MSG_MOVE_TIME_SKIPPED": "0x319",
"SMSG_SPLINE_MOVE_ROOT": "0x31A",
"CMSG_SET_EXPLORATION_ALL": "0x31B",
"SMSG_INVALIDATE_PLAYER": "0x31C",
"CMSG_RESET_INSTANCES": "0x31D",
"SMSG_INSTANCE_RESET": "0x31E",
"SMSG_INSTANCE_RESET_FAILED": "0x31F",
"SMSG_UPDATE_LAST_INSTANCE": "0x320",
"CMSG_LUA_USAGE": "0x323",
"SMSG_PET_ACTION_SOUND": "0x324",
"SMSG_PET_DISMISS_SOUND": "0x325",
"SMSG_GHOSTEE_GONE": "0x326",
"CMSG_GM_UPDATE_TICKET_STATUS": "0x327",
"SMSG_GM_TICKET_STATUS_UPDATE": "0x328",
"MSG_SET_DUNGEON_DIFFICULTY": "0x329",
"CMSG_GMSURVEY_SUBMIT": "0x32A",
"SMSG_UPDATE_INSTANCE_OWNERSHIP": "0x32B",
"CMSG_IGNORE_KNOCKBACK_CHEAT": "0x32C",
"SMSG_CHAT_PLAYER_AMBIGUOUS": "0x32D",
"MSG_DELAY_GHOST_TELEPORT": "0x32E",
"SMSG_SPELLINSTAKILLLOG": "0x32F",
"SMSG_SPELL_UPDATE_CHAIN_TARGETS": "0x330",
"CMSG_CHAT_FILTERED": "0x331",
"SMSG_EXPECTED_SPAM_RECORDS": "0x332",
"SMSG_SPELLSTEALLOG": "0x333",
"CMSG_LOTTERY_QUERY_OBSOLETE": "0x334",
"SMSG_LOTTERY_QUERY_RESULT_OBSOLETE": "0x335",
"CMSG_BUY_LOTTERY_TICKET_OBSOLETE": "0x336",
"SMSG_LOTTERY_RESULT_OBSOLETE": "0x337",
"SMSG_CHARACTER_PROFILE": "0x338",
"SMSG_CHARACTER_PROFILE_REALM_CONNECTED": "0x339",
"SMSG_DEFENSE_MESSAGE": "0x33A",
"SMSG_INSTANCE_DIFFICULTY": "0x33B",
"MSG_GM_RESETINSTANCELIMIT": "0x33C",
"SMSG_MOVE_SET_FLIGHT": "0x33E",
"SMSG_MOVE_UNSET_FLIGHT": "0x33F",
"CMSG_MOVE_FLIGHT_ACK": "0x340",
"MSG_MOVE_START_SWIM_CHEAT": "0x341",
"MSG_MOVE_STOP_SWIM_CHEAT": "0x342",
"SMSG_MOVE_SET_CAN_FLY": "0x343",
"SMSG_MOVE_UNSET_CAN_FLY": "0x344",
"CMSG_MOVE_SET_CAN_FLY_ACK": "0x345",
"CMSG_MOVE_SET_FLY": "0x346",
"CMSG_SOCKET_GEMS": "0x347",
"MSG_MOVE_START_ASCEND": "0x359",
"MSG_MOVE_STOP_ASCEND": "0x35A",
"CMSG_LFG_SET_AUTOJOIN": "0x35C",
"CMSG_LFG_CLEAR_AUTOJOIN": "0x35D",
"CMSG_LFM_SET_AUTOFILL": "0x35E",
"CMSG_LFM_CLEAR_AUTOFILL": "0x35F",
"CMSG_ACCEPT_LFG_MATCH": "0x360",
"CMSG_DECLINE_LFG_MATCH": "0x361",
"CMSG_CANCEL_PENDING_LFG": "0x362",
"CMSG_CLEAR_LOOKING_FOR_GROUP": "0x363",
"CMSG_CLEAR_LOOKING_FOR_MORE": "0x364",
"CMSG_SET_LOOKING_FOR_MORE": "0x365",
"CMSG_SET_LFG_COMMENT": "0x366",
"SMSG_LFG_TIMEDOUT": "0x367",
"SMSG_LFG_OTHER_TIMEDOUT": "0x368",
"SMSG_LFG_AUTOJOIN_FAILED": "0x369",
"SMSG_LFG_AUTOJOIN_FAILED_NO_PLAYER": "0x36A",
"SMSG_LFG_LEADER_IS_LFM": "0x36B",
"SMSG_LFG_UPDATE": "0x36C",
"SMSG_LFG_UPDATE_LFM": "0x36D",
"SMSG_LFG_UPDATE_LFG": "0x36E",
"SMSG_LFG_UPDATE_QUEUED": "0x36F",
"SMSG_LFG_PENDING_INVITE": "0x370",
"SMSG_LFG_PENDING_MATCH": "0x371",
"SMSG_LFG_PENDING_MATCH_DONE": "0x372",
"SMSG_TITLE_EARNED": "0x373",
"CMSG_SET_TITLE": "0x374",
"SMSG_DEATH_RELEASE_LOC": "0x378",
"CMSG_CANCEL_TEMP_ENCHANTMENT": "0x379",
"SMSG_FORCED_DEATH_UPDATE": "0x37A",
"CMSG_CHEAT_SET_HONOR_CURRENCY": "0x37B",
"CMSG_CHEAT_SET_ARENA_CURRENCY": "0x37C",
"MSG_MOVE_SET_FLIGHT_SPEED_CHEAT": "0x37D",
"MSG_MOVE_SET_FLIGHT_SPEED": "0x37E",
"MSG_MOVE_SET_FLIGHT_BACK_SPEED_CHEAT": "0x37F",
"MSG_MOVE_SET_FLIGHT_BACK_SPEED": "0x380",
"SMSG_FORCE_FLIGHT_SPEED_CHANGE": "0x381",
"CMSG_FORCE_FLIGHT_SPEED_CHANGE_ACK": "0x382",
"SMSG_FORCE_FLIGHT_BACK_SPEED_CHANGE": "0x383",
"CMSG_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK": "0x384",
"SMSG_SPLINE_SET_FLIGHT_SPEED": "0x385",
"SMSG_SPLINE_SET_FLIGHT_BACK_SPEED": "0x386",
"CMSG_MAELSTROM_INVALIDATE_CACHE": "0x387",
"SMSG_FLIGHT_SPLINE_SYNC": "0x388",
"CMSG_SET_TAXI_BENCHMARK_MODE": "0x389",
"SMSG_REALM_SPLIT": "0x38B",
"CMSG_REALM_SPLIT": "0x38C",
"CMSG_MOVE_CHNG_TRANSPORT": "0x38D",
"MSG_PARTY_ASSIGNMENT": "0x38E",
"SMSG_OFFER_PETITION_ERROR": "0x38F",
"SMSG_TIME_SYNC_REQ": "0x390",
"CMSG_TIME_SYNC_RESP": "0x391",
"CMSG_SEND_LOCAL_EVENT": "0x392",
"CMSG_SEND_GENERAL_TRIGGER": "0x393",
"CMSG_SEND_COMBAT_TRIGGER": "0x394",
"CMSG_MAELSTROM_GM_SENT_MAIL": "0x395",
"SMSG_RESET_FAILED_NOTIFY": "0x396",
"SMSG_REAL_GROUP_UPDATE": "0x397",
"SMSG_LFG_DISABLED": "0x398",
"CMSG_ACTIVE_PVP_CHEAT": "0x399",
"CMSG_CHEAT_DUMP_ITEMS_DEBUG_ONLY": "0x39A",
"SMSG_CHEAT_DUMP_ITEMS_DEBUG_ONLY_RESPONSE": "0x39B",
"SMSG_CHEAT_DUMP_ITEMS_DEBUG_ONLY_RESPONSE_WRITE_FILE": "0x39C",
"SMSG_UPDATE_COMBO_POINTS": "0x39D",
"SMSG_VOICE_SESSION_ROSTER_UPDATE": "0x39E",
"SMSG_VOICE_SESSION_LEAVE": "0x39F",
"SMSG_VOICE_SESSION_ADJUST_PRIORITY": "0x3A0",
"CMSG_VOICE_SET_TALKER_MUTED_REQUEST": "0x3A1",
"SMSG_VOICE_SET_TALKER_MUTED": "0x3A2",
"SMSG_SET_EXTRA_AURA_INFO_NEED_UPDATE": "0x3A5",
"SMSG_CLEAR_EXTRA_AURA_INFO": "0x3A6",
"MSG_MOVE_START_DESCEND": "0x3A7",
"CMSG_IGNORE_REQUIREMENTS_CHEAT": "0x3A8",
"SMSG_IGNORE_REQUIREMENTS_CHEAT": "0x3A9",
"SMSG_SPELL_CHANCE_PROC_LOG": "0x3AA",
"CMSG_MOVE_SET_RUN_SPEED": "0x3AB",
"SMSG_DISMOUNT": "0x3AC",
"MSG_MOVE_UPDATE_CAN_FLY": "0x3AD",
"CMSG_VOICE_SESSION_ENABLE": "0x3AF",
"SMSG_VOICE_PARENTAL_CONTROLS": "0x3B0",
"CMSG_GM_WHISPER": "0x3B1",
"SMSG_GM_MESSAGECHAT": "0x3B2",
"MSG_GM_GEARRATING": "0x3B3",
"CMSG_COMMENTATOR_ENABLE": "0x3B4",
"SMSG_COMMENTATOR_STATE_CHANGED": "0x3B5",
"CMSG_COMMENTATOR_GET_MAP_INFO": "0x3B6",
"SMSG_COMMENTATOR_MAP_INFO": "0x3B7",
"CMSG_COMMENTATOR_GET_PLAYER_INFO": "0x3B8",
"SMSG_COMMENTATOR_GET_PLAYER_INFO": "0x3B9",
"SMSG_COMMENTATOR_PLAYER_INFO": "0x3BA",
"CMSG_COMMENTATOR_ENTER_INSTANCE": "0x3BB",
"CMSG_COMMENTATOR_EXIT_INSTANCE": "0x3BC",
"CMSG_COMMENTATOR_INSTANCE_COMMAND": "0x3BD",
"SMSG_CLEAR_TARGET": "0x3BE",
"CMSG_BOT_DETECTED": "0x3BF",
"SMSG_CROSSED_INEBRIATION_THRESHOLD": "0x3C0",
"CMSG_CHEAT_PLAYER_LOGIN": "0x3C1",
"CMSG_CHEAT_PLAYER_LOOKUP": "0x3C2",
"SMSG_CHEAT_PLAYER_LOOKUP": "0x3C3",
"SMSG_KICK_REASON": "0x3C4",
"MSG_RAID_READY_CHECK_FINISHED": "0x3C5",
"CMSG_COMPLAIN": "0x3C6",
"SMSG_COMPLAIN_RESULT": "0x3C7",
"SMSG_FEATURE_SYSTEM_STATUS": "0x3C8",
"CMSG_GM_SHOW_COMPLAINTS": "0x3C9",
"CMSG_GM_UNSQUELCH": "0x3CA",
"CMSG_CHANNEL_SILENCE_VOICE": "0x3CB",
"CMSG_CHANNEL_SILENCE_ALL": "0x3CC",
"CMSG_CHANNEL_UNSILENCE_VOICE": "0x3CD",
"CMSG_CHANNEL_UNSILENCE_ALL": "0x3CE",
"CMSG_TARGET_CAST": "0x3CF",
"CMSG_TARGET_SCRIPT_CAST": "0x3D0",
"CMSG_CHANNEL_DISPLAY_LIST": "0x3D1",
"CMSG_SET_ACTIVE_VOICE_CHANNEL": "0x3D2",
"CMSG_GET_CHANNEL_MEMBER_COUNT": "0x3D3",
"SMSG_CHANNEL_MEMBER_COUNT": "0x3D4",
"CMSG_CHANNEL_VOICE_ON": "0x3D5",
"CMSG_CHANNEL_VOICE_OFF": "0x3D6",
"CMSG_DEBUG_LIST_TARGETS": "0x3D7",
"SMSG_DEBUG_LIST_TARGETS": "0x3D8",
"SMSG_AVAILABLE_VOICE_CHANNEL": "0x3D9",
"CMSG_ADD_VOICE_IGNORE": "0x3DA",
"CMSG_DEL_VOICE_IGNORE": "0x3DB",
"CMSG_PARTY_SILENCE": "0x3DC",
"CMSG_PARTY_UNSILENCE": "0x3DD",
"MSG_NOTIFY_PARTY_SQUELCH": "0x3DE",
"SMSG_COMSAT_RECONNECT_TRY": "0x3DF",
"SMSG_COMSAT_DISCONNECT": "0x3E0",
"SMSG_COMSAT_CONNECT_FAIL": "0x3E1",
"SMSG_VOICE_CHAT_STATUS": "0x3E2",
"CMSG_REPORT_PVP_AFK": "0x3E3",
"CMSG_REPORT_PVP_AFK_RESULT": "0x3E4",
"MSG_GUILD_BANK_LOG_QUERY": "0x3ED",
"CMSG_SET_CHANNEL_WATCH": "0x3EE",
"SMSG_USERLIST_ADD": "0x3EF",
"SMSG_USERLIST_REMOVE": "0x3F0",
"SMSG_USERLIST_UPDATE": "0x3F1",
"CMSG_CLEAR_CHANNEL_WATCH": "0x3F2",
"SMSG_GOGOGO_OBSOLETE": "0x3F4",
"SMSG_ECHO_PARTY_SQUELCH": "0x3F5",
"CMSG_SET_TITLE_SUFFIX": "0x3F6",
"CMSG_SPELLCLICK": "0x3F7",
"SMSG_LOOT_LIST": "0x3F8",
"CMSG_GM_CHARACTER_RESTORE": "0x3F9",
"CMSG_GM_CHARACTER_SAVE": "0x3FA",
"SMSG_VOICESESSION_FULL": "0x3FB",
"MSG_GUILD_PERMISSIONS": "0x3FC",
"MSG_GUILD_BANK_MONEY_WITHDRAWN": "0x3FD",
"MSG_GUILD_EVENT_LOG_QUERY": "0x3FE",
"CMSG_MAELSTROM_RENAME_GUILD": "0x3FF",
"CMSG_GET_MIRRORIMAGE_DATA": "0x400",
"SMSG_MIRRORIMAGE_DATA": "0x401",
"SMSG_FORCE_DISPLAY_UPDATE": "0x402",
"SMSG_SPELL_CHANCE_RESIST_PUSHBACK": "0x403",
"CMSG_IGNORE_DIMINISHING_RETURNS_CHEAT": "0x404",
"SMSG_IGNORE_DIMINISHING_RETURNS_CHEAT": "0x405",
"CMSG_KEEP_ALIVE": "0x406",
"SMSG_RAID_READY_CHECK_ERROR": "0x407",
"CMSG_OPT_OUT_OF_LOOT": "0x408",
"MSG_QUERY_GUILD_BANK_TEXT": "0x409",
"CMSG_SET_GUILD_BANK_TEXT": "0x40A",
"CMSG_SET_GRANTABLE_LEVELS": "0x40B",
"CMSG_GRANT_LEVEL": "0x40C",
"CMSG_REFER_A_FRIEND": "0x40D",
"MSG_GM_CHANGE_ARENA_RATING": "0x40E",
"CMSG_DECLINE_CHANNEL_INVITE": "0x40F",
"CMSG_GROUPACTION_THROTTLED": "0x410",
"SMSG_OVERRIDE_LIGHT": "0x411",
"SMSG_TOTEM_CREATED": "0x412",
"CMSG_TOTEM_DESTROYED": "0x413",
"CMSG_EXPIRE_RAID_INSTANCE": "0x414",
"CMSG_NO_SPELL_VARIANCE": "0x415",
"CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY": "0x416",
"CMSG_SET_PLAYER_DECLINED_NAMES": "0x418",
"SMSG_SET_PLAYER_DECLINED_NAMES_RESULT": "0x419",
"CMSG_QUERY_SERVER_BUCK_DATA": "0x41A",
"CMSG_CLEAR_SERVER_BUCK_DATA": "0x41B",
"SMSG_SERVER_BUCK_DATA": "0x41C",
"SMSG_SEND_UNLEARN_SPELLS": "0x41D",
"SMSG_PROPOSE_LEVEL_GRANT": "0x41E",
"CMSG_ACCEPT_LEVEL_GRANT": "0x41F",
"SMSG_REFER_A_FRIEND_FAILURE": "0x420",
"SMSG_SPLINE_MOVE_SET_FLYING": "0x421",
"SMSG_SPLINE_MOVE_UNSET_FLYING": "0x422"
}

View file

@ -5,21 +5,21 @@
"CMSG_CHAR_ENUM": "0x037",
"CMSG_CHAR_DELETE": "0x038",
"CMSG_PLAYER_LOGIN": "0x03D",
"CMSG_MOVE_START_FORWARD": "0x0B5",
"CMSG_MOVE_START_BACKWARD": "0x0B6",
"CMSG_MOVE_STOP": "0x0B7",
"CMSG_MOVE_START_STRAFE_LEFT": "0x0B8",
"CMSG_MOVE_START_STRAFE_RIGHT": "0x0B9",
"CMSG_MOVE_STOP_STRAFE": "0x0BA",
"CMSG_MOVE_JUMP": "0x0BB",
"CMSG_MOVE_START_TURN_LEFT": "0x0BC",
"CMSG_MOVE_START_TURN_RIGHT": "0x0BD",
"CMSG_MOVE_STOP_TURN": "0x0BE",
"CMSG_MOVE_SET_FACING": "0x0DA",
"CMSG_MOVE_FALL_LAND": "0x0C9",
"CMSG_MOVE_START_SWIM": "0x0CA",
"CMSG_MOVE_STOP_SWIM": "0x0CB",
"CMSG_MOVE_HEARTBEAT": "0x0EE",
"MSG_MOVE_START_FORWARD": "0x0B5",
"MSG_MOVE_START_BACKWARD": "0x0B6",
"MSG_MOVE_STOP": "0x0B7",
"MSG_MOVE_START_STRAFE_LEFT": "0x0B8",
"MSG_MOVE_START_STRAFE_RIGHT": "0x0B9",
"MSG_MOVE_STOP_STRAFE": "0x0BA",
"MSG_MOVE_JUMP": "0x0BB",
"MSG_MOVE_START_TURN_LEFT": "0x0BC",
"MSG_MOVE_START_TURN_RIGHT": "0x0BD",
"MSG_MOVE_STOP_TURN": "0x0BE",
"MSG_MOVE_SET_FACING": "0x0DA",
"MSG_MOVE_FALL_LAND": "0x0C9",
"MSG_MOVE_START_SWIM": "0x0CA",
"MSG_MOVE_STOP_SWIM": "0x0CB",
"MSG_MOVE_HEARTBEAT": "0x0EE",
"SMSG_AUTH_CHALLENGE": "0x1EC",
"SMSG_AUTH_RESPONSE": "0x1EE",
"SMSG_CHAR_CREATE": "0x03A",
@ -42,15 +42,15 @@
"SMSG_MONSTER_MOVE_TRANSPORT": "0x2AE",
"SMSG_SPLINE_MOVE_SET_WALK_MODE": "0x30E",
"SMSG_SPLINE_MOVE_SET_RUN_MODE": "0x30D",
"SMSG_SPLINE_MOVE_SET_RUN_SPEED": "0x2FE",
"SMSG_SPLINE_MOVE_SET_RUN_BACK_SPEED": "0x2FF",
"SMSG_SPLINE_MOVE_SET_SWIM_SPEED": "0x300",
"SMSG_SPLINE_SET_RUN_SPEED": "0x2FE",
"SMSG_SPLINE_SET_RUN_BACK_SPEED": "0x2FF",
"SMSG_SPLINE_SET_SWIM_SPEED": "0x300",
"SMSG_DESTROY_OBJECT": "0x0AA",
"CMSG_MESSAGECHAT": "0x095",
"SMSG_MESSAGECHAT": "0x096",
"CMSG_WHO": "0x062",
"SMSG_WHO": "0x063",
"CMSG_REQUEST_PLAYED_TIME": "0x1CC",
"CMSG_PLAYED_TIME": "0x1CC",
"SMSG_PLAYED_TIME": "0x1CD",
"CMSG_QUERY_TIME": "0x1CE",
"SMSG_QUERY_TIME_RESPONSE": "0x1CF",
@ -65,17 +65,17 @@
"CMSG_LOGOUT_CANCEL": "0x04E",
"SMSG_LOGOUT_RESPONSE": "0x04C",
"SMSG_LOGOUT_COMPLETE": "0x04D",
"CMSG_STAND_STATE_CHANGE": "0x101",
"CMSG_STANDSTATECHANGE": "0x101",
"CMSG_SHOWING_HELM": "0x2B9",
"CMSG_SHOWING_CLOAK": "0x2BA",
"CMSG_TOGGLE_PVP": "0x253",
"CMSG_GUILD_INVITE": "0x082",
"CMSG_GUILD_ACCEPT": "0x084",
"CMSG_GUILD_DECLINE_INVITATION": "0x085",
"CMSG_GUILD_DECLINE": "0x085",
"CMSG_GUILD_INFO": "0x087",
"CMSG_GUILD_GET_ROSTER": "0x089",
"CMSG_GUILD_PROMOTE_MEMBER": "0x08B",
"CMSG_GUILD_DEMOTE_MEMBER": "0x08C",
"CMSG_GUILD_ROSTER": "0x089",
"CMSG_GUILD_PROMOTE": "0x08B",
"CMSG_GUILD_DEMOTE": "0x08C",
"CMSG_GUILD_LEAVE": "0x08D",
"CMSG_GUILD_MOTD": "0x091",
"SMSG_GUILD_INFO": "0x088",
@ -117,7 +117,7 @@
"SMSG_SPELLHEALLOG": "0x150",
"SMSG_SPELLENERGIZELOG": "0x151",
"SMSG_PERIODICAURALOG": "0x24E",
"SMSG_ENVIRONMENTALDAMAGELOG": "0x1FC",
"SMSG_ENVIRONMENTAL_DAMAGE_LOG": "0x1FC",
"CMSG_CAST_SPELL": "0x12E",
"CMSG_CANCEL_CAST": "0x12F",
"CMSG_CANCEL_AURA": "0x136",
@ -127,7 +127,7 @@
"SMSG_SPELL_FAILURE": "0x133",
"SMSG_SPELL_COOLDOWN": "0x134",
"SMSG_COOLDOWN_EVENT": "0x135",
"SMSG_UPDATE_AURA_DURATION": "0x137",
"SMSG_EQUIPMENT_SET_SAVED": "0x137",
"SMSG_INITIAL_SPELLS": "0x12A",
"SMSG_LEARNED_SPELL": "0x12B",
"SMSG_SUPERCEDED_SPELL": "0x12C",
@ -167,7 +167,7 @@
"SMSG_GOSSIP_MESSAGE": "0x17D",
"SMSG_GOSSIP_COMPLETE": "0x17E",
"SMSG_NPC_TEXT_UPDATE": "0x180",
"CMSG_GAMEOBJECT_USE": "0x0B1",
"CMSG_GAMEOBJ_USE": "0x0B1",
"CMSG_QUESTGIVER_STATUS_QUERY": "0x182",
"SMSG_QUESTGIVER_STATUS": "0x183",
"CMSG_QUESTGIVER_HELLO": "0x184",
@ -208,7 +208,7 @@
"CMSG_SWAP_INV_ITEM": "0x10D",
"SMSG_INVENTORY_CHANGE_FAILURE": "0x112",
"CMSG_INSPECT": "0x114",
"SMSG_INSPECT_RESULTS": "0x115",
"SMSG_INSPECT_RESULTS_UPDATE": "0x115",
"CMSG_REPOP_REQUEST": "0x15A",
"SMSG_RESURRECT_REQUEST": "0x15B",
"CMSG_RESURRECT_RESPONSE": "0x15C",
@ -233,6 +233,7 @@
"SMSG_SET_PROFICIENCY": "0x127",
"SMSG_ACTION_BUTTONS": "0x129",
"SMSG_LEVELUP_INFO": "0x1D4",
"SMSG_PLAY_SOUND": "0x2D2",
"CMSG_UPDATE_ACCOUNT_DATA": "0x20B",
"CMSG_BATTLEFIELD_LIST": "0x23C",
"SMSG_BATTLEFIELD_LIST": "0x23D",
@ -269,14 +270,12 @@
"CMSG_MAIL_MARK_AS_READ": "0x247",
"SMSG_RECEIVED_MAIL": "0x285",
"MSG_QUERY_NEXT_MAIL_TIME": "0x284",
"CMSG_BANKER_ACTIVATE": "0x1B7",
"SMSG_SHOW_BANK": "0x1B8",
"CMSG_BUY_BANK_SLOT": "0x1B9",
"SMSG_BUY_BANK_SLOT_RESULT": "0x1BA",
"CMSG_AUTOSTORE_BANK_ITEM": "0x282",
"CMSG_AUTOBANK_ITEM": "0x283",
"MSG_AUCTION_HELLO": "0x255",
"CMSG_AUCTION_SELL_ITEM": "0x256",
"CMSG_AUCTION_REMOVE_ITEM": "0x257",
@ -290,8 +289,7 @@
"SMSG_AUCTION_BIDDER_NOTIFICATION": "0x260",
"CMSG_AUCTION_LIST_BIDDER_ITEMS": "0x264",
"SMSG_AUCTION_BIDDER_LIST_RESULT": "0x265",
"SMSG_UNKNOWN_319": "0x319",
"MSG_MOVE_TIME_SKIPPED": "0x319",
"SMSG_CANCEL_AUTO_REPEAT": "0x29C",
"SMSG_WEATHER": "0x2F4",
"SMSG_QUESTUPDATE_ADD_ITEM": "0x19A",

File diff suppressed because it is too large Load diff

View file

@ -184,7 +184,7 @@ private:
uint32_t loadedMapId_ = 0xFFFFFFFF; // Map ID of currently loaded terrain (0xFFFFFFFF = none)
float taxiLandingClampTimer_ = 0.0f;
float worldEntryMovementGraceTimer_ = 0.0f;
float facingSendCooldown_ = 0.0f; // Rate-limits CMSG_MOVE_SET_FACING
float facingSendCooldown_ = 0.0f; // Rate-limits MSG_MOVE_SET_FACING
float lastSentCanonicalYaw_ = 1000.0f; // Sentinel — triggers first send
float taxiStreamCooldown_ = 0.0f;
bool idleYawned_ = false;

View file

@ -203,7 +203,7 @@ public:
/**
* Send a movement packet
* @param opcode Movement opcode (CMSG_MOVE_START_FORWARD, etc.)
* @param opcode Movement opcode (MSG_MOVE_START_FORWARD, etc.)
*/
void sendMovement(Opcode opcode);

File diff suppressed because it is too large Load diff

View file

@ -448,7 +448,7 @@ public:
/**
* Build a movement packet
*
* @param opcode Movement opcode (CMSG_MOVE_START_FORWARD, etc.)
* @param opcode Movement opcode (MSG_MOVE_START_FORWARD, etc.)
* @param info Movement info
* @return Packet ready to send
*/
@ -811,7 +811,7 @@ public:
static bool parse(network::Packet& packet, QueryTimeResponseData& data);
};
/** CMSG_REQUEST_PLAYED_TIME packet builder */
/** CMSG_PLAYED_TIME packet builder */
class RequestPlayedTimePacket {
public:
static network::Packet build(bool sendToChat = true);
@ -921,7 +921,7 @@ public:
// Stand State
// ============================================================
/** CMSG_STAND_STATE_CHANGE packet builder */
/** CMSG_STANDSTATECHANGE packet builder */
class StandStateChangePacket {
public:
static network::Packet build(uint8_t state);
@ -963,7 +963,7 @@ public:
static network::Packet build();
};
/** CMSG_GUILD_GET_ROSTER packet builder */
/** CMSG_GUILD_ROSTER packet builder */
class GuildRosterPacket {
public:
static network::Packet build();
@ -975,13 +975,13 @@ public:
static network::Packet build(const std::string& motd);
};
/** CMSG_GUILD_PROMOTE_MEMBER packet builder */
/** CMSG_GUILD_PROMOTE packet builder */
class GuildPromotePacket {
public:
static network::Packet build(const std::string& playerName);
};
/** CMSG_GUILD_DEMOTE_MEMBER packet builder */
/** CMSG_GUILD_DEMOTE packet builder */
class GuildDemotePacket {
public:
static network::Packet build(const std::string& playerName);
@ -1041,7 +1041,7 @@ public:
static network::Packet build();
};
/** CMSG_GUILD_DECLINE_INVITATION packet builder (empty body) */
/** CMSG_GUILD_DECLINE packet builder (empty body) */
class GuildDeclineInvitationPacket {
public:
static network::Packet build();
@ -2197,7 +2197,7 @@ public:
static network::Packet build(uint64_t npcGuid, uint32_t srcNode, uint32_t destNode);
};
/** CMSG_GAMEOBJECT_USE packet builder */
/** CMSG_GAMEOBJ_USE packet builder */
class GameObjectUsePacket {
public:
static network::Packet build(uint64_t guid);

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;

View file

@ -669,7 +669,7 @@ void GameHandler::update(float deltaTime) {
float heartbeatInterval = (onTaxiFlight_ || taxiActivatePending_ || taxiClientActive_) ? 0.25f : moveHeartbeatInterval_;
if (timeSinceLastMoveHeartbeat_ >= heartbeatInterval) {
sendMovement(Opcode::CMSG_MOVE_HEARTBEAT);
sendMovement(Opcode::MSG_MOVE_HEARTBEAT);
timeSinceLastMoveHeartbeat_ = 0.0f;
}
@ -759,8 +759,8 @@ void GameHandler::update(float deltaTime) {
movementInfo.flags = 0;
movementInfo.flags2 = 0;
if (socket) {
sendMovement(Opcode::CMSG_MOVE_STOP);
sendMovement(Opcode::CMSG_MOVE_HEARTBEAT);
sendMovement(Opcode::MSG_MOVE_STOP);
sendMovement(Opcode::MSG_MOVE_HEARTBEAT);
}
LOG_INFO("Taxi flight landed");
}
@ -786,8 +786,8 @@ void GameHandler::update(float deltaTime) {
movementInfo.flags = 0;
movementInfo.flags2 = 0;
if (socket) {
sendMovement(Opcode::CMSG_MOVE_STOP);
sendMovement(Opcode::CMSG_MOVE_HEARTBEAT);
sendMovement(Opcode::MSG_MOVE_STOP);
sendMovement(Opcode::MSG_MOVE_HEARTBEAT);
}
LOG_INFO("Taxi dismount cleanup");
}
@ -821,7 +821,7 @@ void GameHandler::update(float deltaTime) {
movementInfo.y = taxiRecoverPos_.y;
movementInfo.z = taxiRecoverPos_.z;
if (socket) {
sendMovement(Opcode::CMSG_MOVE_HEARTBEAT);
sendMovement(Opcode::MSG_MOVE_HEARTBEAT);
}
taxiRecoverPending_ = false;
LOG_INFO("Taxi recovery applied");
@ -1390,16 +1390,16 @@ void GameHandler::handlePacket(network::Packet& packet) {
}
break;
}
case Opcode::SMSG_SPLINE_MOVE_SET_RUN_SPEED:
case Opcode::SMSG_SPLINE_MOVE_SET_RUN_BACK_SPEED:
case Opcode::SMSG_SPLINE_MOVE_SET_SWIM_SPEED: {
case Opcode::SMSG_SPLINE_SET_RUN_SPEED:
case Opcode::SMSG_SPLINE_SET_RUN_BACK_SPEED:
case Opcode::SMSG_SPLINE_SET_SWIM_SPEED: {
// Minimal parse: PackedGuid + float speed
if (packet.getSize() - packet.getReadPos() < 5) break;
uint64_t guid = UpdateObjectParser::readPackedGuid(packet);
if (packet.getSize() - packet.getReadPos() < 4) break;
float speed = packet.readFloat();
if (guid == playerGuid && std::isfinite(speed) && speed > 0.1f && speed < 100.0f &&
*logicalOp == Opcode::SMSG_SPLINE_MOVE_SET_RUN_SPEED) {
*logicalOp == Opcode::SMSG_SPLINE_SET_RUN_SPEED) {
serverRunSpeed_ = speed;
}
break;
@ -1444,10 +1444,10 @@ void GameHandler::handlePacket(network::Packet& packet) {
static_cast<uint32_t>(MovementFlags::STRAFE_RIGHT) |
static_cast<uint32_t>(MovementFlags::TURN_LEFT) |
static_cast<uint32_t>(MovementFlags::TURN_RIGHT));
sendMovement(Opcode::CMSG_MOVE_STOP);
sendMovement(Opcode::CMSG_MOVE_STOP_STRAFE);
sendMovement(Opcode::CMSG_MOVE_STOP_TURN);
sendMovement(Opcode::CMSG_MOVE_STOP_SWIM);
sendMovement(Opcode::MSG_MOVE_STOP);
sendMovement(Opcode::MSG_MOVE_STOP_STRAFE);
sendMovement(Opcode::MSG_MOVE_STOP_TURN);
sendMovement(Opcode::MSG_MOVE_STOP_SWIM);
addSystemChatMessage("Movement disabled by server.");
} else if (changed && allowMovement) {
addSystemChatMessage("Movement re-enabled.");
@ -1560,6 +1560,22 @@ void GameHandler::handlePacket(network::Packet& packet) {
case Opcode::SMSG_PARTY_COMMAND_RESULT:
handlePartyCommandResult(packet);
break;
case Opcode::MSG_RAID_READY_CHECK:
// Server ready-check prompt (minimal handling for now).
packet.setReadPos(packet.getSize());
break;
case Opcode::MSG_RAID_READY_CHECK_CONFIRM:
// Ready-check responses from members.
packet.setReadPos(packet.getSize());
break;
case Opcode::SMSG_RAID_INSTANCE_INFO:
// Raid lockout list (not yet surfaced in UI).
packet.setReadPos(packet.getSize());
break;
case Opcode::SMSG_DUEL_REQUESTED:
// Duel request UI flow not implemented yet.
packet.setReadPos(packet.getSize());
break;
case Opcode::SMSG_PARTYKILLLOG:
// Classic-era packet: killer GUID + victim GUID.
// XP and combat state are handled by other packets; consume to avoid warning spam.
@ -1654,9 +1670,9 @@ void GameHandler::handlePacket(network::Packet& packet) {
}
break;
}
case Opcode::SMSG_RESURRECT_CANCEL: {
case Opcode::SMSG_TIME_SYNC_REQ: {
if (packet.getSize() - packet.getReadPos() < 4) {
LOG_WARNING("SMSG_RESURRECT_CANCEL too short");
LOG_WARNING("SMSG_TIME_SYNC_REQ too short");
break;
}
uint32_t reason = packet.readUInt32();
@ -1771,10 +1787,10 @@ void GameHandler::handlePacket(network::Packet& packet) {
case Opcode::SMSG_SET_FLAT_SPELL_MODIFIER:
case Opcode::SMSG_SET_PCT_SPELL_MODIFIER:
case Opcode::SMSG_SPELL_DELAYED:
case Opcode::SMSG_UPDATE_AURA_DURATION:
case Opcode::SMSG_EQUIPMENT_SET_SAVED:
case Opcode::SMSG_PERIODICAURALOG:
case Opcode::SMSG_SPELLENERGIZELOG:
case Opcode::SMSG_ENVIRONMENTALDAMAGELOG:
case Opcode::SMSG_ENVIRONMENTAL_DAMAGE_LOG:
case Opcode::SMSG_SET_PROFICIENCY:
case Opcode::SMSG_ACTION_BUTTONS:
break;
@ -2411,6 +2427,10 @@ void GameHandler::handlePacket(network::Packet& packet) {
case Opcode::SMSG_BATTLEFIELD_PORT_DENIED:
addSystemChatMessage("Battlefield port denied.");
break;
case Opcode::MSG_BATTLEGROUND_PLAYER_POSITIONS:
// Optional map position updates for BG objectives/players.
packet.setReadPos(packet.getSize());
break;
case Opcode::SMSG_REMOVED_FROM_PVP_QUEUE:
addSystemChatMessage("You have been removed from the PvP queue.");
break;
@ -2453,23 +2473,27 @@ void GameHandler::handlePacket(network::Packet& packet) {
case Opcode::MSG_INSPECT_ARENA_TEAMS:
LOG_INFO("Received MSG_INSPECT_ARENA_TEAMS");
break;
case Opcode::MSG_TALENT_WIPE_CONFIRM:
// Talent reset confirmation payload is not needed client-side right now.
packet.setReadPos(packet.getSize());
break;
// ---- MSG_MOVE_* opcodes (server relays other players' movement) ----
case Opcode::CMSG_MOVE_START_FORWARD:
case Opcode::CMSG_MOVE_START_BACKWARD:
case Opcode::CMSG_MOVE_STOP:
case Opcode::CMSG_MOVE_START_STRAFE_LEFT:
case Opcode::CMSG_MOVE_START_STRAFE_RIGHT:
case Opcode::CMSG_MOVE_STOP_STRAFE:
case Opcode::CMSG_MOVE_JUMP:
case Opcode::CMSG_MOVE_START_TURN_LEFT:
case Opcode::CMSG_MOVE_START_TURN_RIGHT:
case Opcode::CMSG_MOVE_STOP_TURN:
case Opcode::CMSG_MOVE_SET_FACING:
case Opcode::CMSG_MOVE_FALL_LAND:
case Opcode::CMSG_MOVE_HEARTBEAT:
case Opcode::CMSG_MOVE_START_SWIM:
case Opcode::CMSG_MOVE_STOP_SWIM:
case Opcode::MSG_MOVE_START_FORWARD:
case Opcode::MSG_MOVE_START_BACKWARD:
case Opcode::MSG_MOVE_STOP:
case Opcode::MSG_MOVE_START_STRAFE_LEFT:
case Opcode::MSG_MOVE_START_STRAFE_RIGHT:
case Opcode::MSG_MOVE_STOP_STRAFE:
case Opcode::MSG_MOVE_JUMP:
case Opcode::MSG_MOVE_START_TURN_LEFT:
case Opcode::MSG_MOVE_START_TURN_RIGHT:
case Opcode::MSG_MOVE_STOP_TURN:
case Opcode::MSG_MOVE_SET_FACING:
case Opcode::MSG_MOVE_FALL_LAND:
case Opcode::MSG_MOVE_HEARTBEAT:
case Opcode::MSG_MOVE_START_SWIM:
case Opcode::MSG_MOVE_STOP_SWIM:
if (state == WorldState::IN_WORLD) {
handleOtherPlayerMovement(packet);
}
@ -2491,6 +2515,13 @@ void GameHandler::handlePacket(network::Packet& packet) {
case Opcode::MSG_QUERY_NEXT_MAIL_TIME:
handleQueryNextMailTime(packet);
break;
case Opcode::SMSG_CHANNEL_LIST:
// Channel member listing currently not rendered in UI.
packet.setReadPos(packet.getSize());
break;
case Opcode::SMSG_INSPECT_RESULTS_UPDATE:
handleInspectResults(packet);
break;
// ---- Bank ----
case Opcode::SMSG_SHOW_BANK:
@ -2521,7 +2552,25 @@ void GameHandler::handlePacket(network::Packet& packet) {
case Opcode::SMSG_AUCTION_COMMAND_RESULT:
handleAuctionCommandResult(packet);
break;
case Opcode::SMSG_UNKNOWN_319:
case Opcode::SMSG_AUCTION_OWNER_NOTIFICATION:
case Opcode::SMSG_AUCTION_BIDDER_NOTIFICATION:
// Auction notification payloads are informational; ignore until UI support lands.
packet.setReadPos(packet.getSize());
break;
case Opcode::SMSG_TAXINODE_STATUS:
// Node status cache not implemented yet.
packet.setReadPos(packet.getSize());
break;
case Opcode::SMSG_INIT_EXTRA_AURA_INFO_OBSOLETE:
case Opcode::SMSG_SET_EXTRA_AURA_INFO_OBSOLETE:
// Extra aura metadata (icons/durations) not yet consumed by aura UI.
packet.setReadPos(packet.getSize());
break;
case Opcode::MSG_MOVE_WORLDPORT_ACK:
// Client uses this outbound; treat inbound variant as no-op for robustness.
packet.setReadPos(packet.getSize());
break;
case Opcode::MSG_MOVE_TIME_SKIPPED:
// Observed custom server packet (8 bytes). Safe-consume for now.
packet.setReadPos(packet.getSize());
break;
@ -4055,11 +4104,11 @@ void GameHandler::sendMovement(Opcode opcode) {
// Block manual movement while taxi is active/mounted, but always allow
// stop/heartbeat opcodes so stuck states can be recovered.
bool taxiAllowed =
(opcode == Opcode::CMSG_MOVE_HEARTBEAT) ||
(opcode == Opcode::CMSG_MOVE_STOP) ||
(opcode == Opcode::CMSG_MOVE_STOP_STRAFE) ||
(opcode == Opcode::CMSG_MOVE_STOP_TURN) ||
(opcode == Opcode::CMSG_MOVE_STOP_SWIM);
(opcode == Opcode::MSG_MOVE_HEARTBEAT) ||
(opcode == Opcode::MSG_MOVE_STOP) ||
(opcode == Opcode::MSG_MOVE_STOP_STRAFE) ||
(opcode == Opcode::MSG_MOVE_STOP_TURN) ||
(opcode == Opcode::MSG_MOVE_STOP_SWIM);
if (!serverMovementAllowed_ && !taxiAllowed) return;
if ((onTaxiFlight_ || taxiMountActive_) && !taxiAllowed) return;
if (resurrectPending_ && !taxiAllowed) return;
@ -4069,43 +4118,43 @@ void GameHandler::sendMovement(Opcode opcode) {
// Update movement flags based on opcode
switch (opcode) {
case Opcode::CMSG_MOVE_START_FORWARD:
case Opcode::MSG_MOVE_START_FORWARD:
movementInfo.flags |= static_cast<uint32_t>(MovementFlags::FORWARD);
break;
case Opcode::CMSG_MOVE_START_BACKWARD:
case Opcode::MSG_MOVE_START_BACKWARD:
movementInfo.flags |= static_cast<uint32_t>(MovementFlags::BACKWARD);
break;
case Opcode::CMSG_MOVE_STOP:
case Opcode::MSG_MOVE_STOP:
movementInfo.flags &= ~(static_cast<uint32_t>(MovementFlags::FORWARD) |
static_cast<uint32_t>(MovementFlags::BACKWARD));
break;
case Opcode::CMSG_MOVE_START_STRAFE_LEFT:
case Opcode::MSG_MOVE_START_STRAFE_LEFT:
movementInfo.flags |= static_cast<uint32_t>(MovementFlags::STRAFE_LEFT);
break;
case Opcode::CMSG_MOVE_START_STRAFE_RIGHT:
case Opcode::MSG_MOVE_START_STRAFE_RIGHT:
movementInfo.flags |= static_cast<uint32_t>(MovementFlags::STRAFE_RIGHT);
break;
case Opcode::CMSG_MOVE_STOP_STRAFE:
case Opcode::MSG_MOVE_STOP_STRAFE:
movementInfo.flags &= ~(static_cast<uint32_t>(MovementFlags::STRAFE_LEFT) |
static_cast<uint32_t>(MovementFlags::STRAFE_RIGHT));
break;
case Opcode::CMSG_MOVE_JUMP:
case Opcode::MSG_MOVE_JUMP:
movementInfo.flags |= static_cast<uint32_t>(MovementFlags::FALLING);
break;
case Opcode::CMSG_MOVE_START_TURN_LEFT:
case Opcode::MSG_MOVE_START_TURN_LEFT:
movementInfo.flags |= static_cast<uint32_t>(MovementFlags::TURN_LEFT);
break;
case Opcode::CMSG_MOVE_START_TURN_RIGHT:
case Opcode::MSG_MOVE_START_TURN_RIGHT:
movementInfo.flags |= static_cast<uint32_t>(MovementFlags::TURN_RIGHT);
break;
case Opcode::CMSG_MOVE_STOP_TURN:
case Opcode::MSG_MOVE_STOP_TURN:
movementInfo.flags &= ~(static_cast<uint32_t>(MovementFlags::TURN_LEFT) |
static_cast<uint32_t>(MovementFlags::TURN_RIGHT));
break;
case Opcode::CMSG_MOVE_FALL_LAND:
case Opcode::MSG_MOVE_FALL_LAND:
movementInfo.flags &= ~static_cast<uint32_t>(MovementFlags::FALLING);
break;
case Opcode::CMSG_MOVE_HEARTBEAT:
case Opcode::MSG_MOVE_HEARTBEAT:
// No flag changes — just sends current position
break;
default:
@ -4241,11 +4290,11 @@ void GameHandler::forceClearTaxiAndMovementState() {
clearPlayerTransport();
if (socket && state == WorldState::IN_WORLD) {
sendMovement(Opcode::CMSG_MOVE_STOP);
sendMovement(Opcode::CMSG_MOVE_STOP_STRAFE);
sendMovement(Opcode::CMSG_MOVE_STOP_TURN);
sendMovement(Opcode::CMSG_MOVE_STOP_SWIM);
sendMovement(Opcode::CMSG_MOVE_HEARTBEAT);
sendMovement(Opcode::MSG_MOVE_STOP);
sendMovement(Opcode::MSG_MOVE_STOP_STRAFE);
sendMovement(Opcode::MSG_MOVE_STOP_TURN);
sendMovement(Opcode::MSG_MOVE_STOP_SWIM);
sendMovement(Opcode::MSG_MOVE_HEARTBEAT);
}
LOG_INFO("Force-cleared taxi/movement state");
@ -8528,7 +8577,7 @@ void GameHandler::castSpell(uint32_t spellId, uint64_t targetGuid) {
// Face the target before sending the cast packet to avoid "not in front" rejection
float yaw = std::atan2(dy, dx);
movementInfo.orientation = yaw;
sendMovement(Opcode::CMSG_MOVE_SET_FACING);
sendMovement(Opcode::MSG_MOVE_SET_FACING);
if (chargeCallback_) {
chargeCallback_(target, tx, ty, tz);
}
@ -8565,7 +8614,7 @@ void GameHandler::castSpell(uint32_t spellId, uint64_t targetGuid) {
// Face the target to prevent "not in front" rejection
float yaw = std::atan2(dy, dx);
movementInfo.orientation = yaw;
sendMovement(Opcode::CMSG_MOVE_SET_FACING);
sendMovement(Opcode::MSG_MOVE_SET_FACING);
}
}
}
@ -9355,7 +9404,7 @@ void GameHandler::performGameObjectInteractionNow(uint64_t guid) {
}
}
if (shouldSendLoot) {
LOG_INFO("GameObject interaction: sent CMSG_GAMEOBJECT_USE + CMSG_LOOT for guid=0x", std::hex, guid, std::dec,
LOG_INFO("GameObject interaction: sent CMSG_GAMEOBJ_USE + CMSG_LOOT for guid=0x", std::hex, guid, std::dec,
" mailbox=", (isMailbox ? 1 : 0), " turtle=", (turtleMode ? 1 : 0));
lootTarget(guid);
if (turtleMode) {
@ -11247,8 +11296,8 @@ void GameHandler::updateClientTaxi(float deltaTime) {
movementInfo.flags = 0;
movementInfo.flags2 = 0;
if (socket) {
sendMovement(Opcode::CMSG_MOVE_STOP);
sendMovement(Opcode::CMSG_MOVE_HEARTBEAT);
sendMovement(Opcode::MSG_MOVE_STOP);
sendMovement(Opcode::MSG_MOVE_HEARTBEAT);
}
LOG_INFO("Taxi flight landed (client path)");
};
@ -11394,7 +11443,7 @@ void GameHandler::handleActivateTaxiReply(network::Packet& packet) {
taxiActivateTimer_ = 0.0f;
applyTaxiMountForCurrentNode();
if (socket) {
sendMovement(Opcode::CMSG_MOVE_HEARTBEAT);
sendMovement(Opcode::MSG_MOVE_HEARTBEAT);
}
LOG_INFO("Taxi flight started!");
} else {
@ -11569,7 +11618,7 @@ void GameHandler::activateTaxi(uint32_t destNodeId) {
applyTaxiMountForCurrentNode();
}
if (socket) {
sendMovement(Opcode::CMSG_MOVE_HEARTBEAT);
sendMovement(Opcode::MSG_MOVE_HEARTBEAT);
}
// Trigger terrain precache immediately (non-blocking).

File diff suppressed because it is too large Load diff

View file

@ -452,8 +452,8 @@ bool TbcPacketParsers::parseUpdateObject(network::Packet& packet, UpdateObjectDa
// ============================================================================
// TBC parseAuraUpdate - SMSG_AURA_UPDATE doesn't exist in TBC
// TBC uses inline aura update fields + SMSG_INIT_EXTRA_AURA_INFO (0x3A3) /
// SMSG_SET_EXTRA_AURA_INFO (0x3A4) instead
// TBC uses inline aura update fields + SMSG_INIT_EXTRA_AURA_INFO_OBSOLETE (0x3A3) /
// SMSG_SET_EXTRA_AURA_INFO_OBSOLETE (0x3A4) instead
// ============================================================================
bool TbcPacketParsers::parseAuraUpdate(network::Packet& /*packet*/, AuraUpdateData& /*data*/, bool /*isAll*/) {
LOG_WARNING("[TBC] parseAuraUpdate called but SMSG_AURA_UPDATE does not exist in TBC 2.4.3");

View file

@ -1450,9 +1450,9 @@ bool QueryTimeResponseParser::parse(network::Packet& packet, QueryTimeResponseDa
}
network::Packet RequestPlayedTimePacket::build(bool sendToChat) {
network::Packet packet(wireOpcode(Opcode::CMSG_REQUEST_PLAYED_TIME));
network::Packet packet(wireOpcode(Opcode::CMSG_PLAYED_TIME));
packet.writeUInt8(sendToChat ? 1 : 0);
LOG_DEBUG("Built CMSG_REQUEST_PLAYED_TIME: sendToChat=", sendToChat);
LOG_DEBUG("Built CMSG_PLAYED_TIME: sendToChat=", sendToChat);
return packet;
}
@ -1564,9 +1564,9 @@ bool LogoutResponseParser::parse(network::Packet& packet, LogoutResponseData& da
// ============================================================
network::Packet StandStateChangePacket::build(uint8_t state) {
network::Packet packet(wireOpcode(Opcode::CMSG_STAND_STATE_CHANGE));
network::Packet packet(wireOpcode(Opcode::CMSG_STANDSTATECHANGE));
packet.writeUInt32(state);
LOG_DEBUG("Built CMSG_STAND_STATE_CHANGE: state=", (int)state);
LOG_DEBUG("Built CMSG_STANDSTATECHANGE: state=", (int)state);
return packet;
}
@ -1609,8 +1609,8 @@ network::Packet GuildInfoPacket::build() {
}
network::Packet GuildRosterPacket::build() {
network::Packet packet(wireOpcode(Opcode::CMSG_GUILD_GET_ROSTER));
LOG_DEBUG("Built CMSG_GUILD_GET_ROSTER");
network::Packet packet(wireOpcode(Opcode::CMSG_GUILD_ROSTER));
LOG_DEBUG("Built CMSG_GUILD_ROSTER");
return packet;
}
@ -1622,16 +1622,16 @@ network::Packet GuildMotdPacket::build(const std::string& motd) {
}
network::Packet GuildPromotePacket::build(const std::string& playerName) {
network::Packet packet(wireOpcode(Opcode::CMSG_GUILD_PROMOTE_MEMBER));
network::Packet packet(wireOpcode(Opcode::CMSG_GUILD_PROMOTE));
packet.writeString(playerName);
LOG_DEBUG("Built CMSG_GUILD_PROMOTE_MEMBER: ", playerName);
LOG_DEBUG("Built CMSG_GUILD_PROMOTE: ", playerName);
return packet;
}
network::Packet GuildDemotePacket::build(const std::string& playerName) {
network::Packet packet(wireOpcode(Opcode::CMSG_GUILD_DEMOTE_MEMBER));
network::Packet packet(wireOpcode(Opcode::CMSG_GUILD_DEMOTE));
packet.writeString(playerName);
LOG_DEBUG("Built CMSG_GUILD_DEMOTE_MEMBER: ", playerName);
LOG_DEBUG("Built CMSG_GUILD_DEMOTE: ", playerName);
return packet;
}
@ -1698,8 +1698,8 @@ network::Packet GuildAcceptPacket::build() {
}
network::Packet GuildDeclineInvitationPacket::build() {
network::Packet packet(wireOpcode(Opcode::CMSG_GUILD_DECLINE_INVITATION));
LOG_DEBUG("Built CMSG_GUILD_DECLINE_INVITATION");
network::Packet packet(wireOpcode(Opcode::CMSG_GUILD_DECLINE));
LOG_DEBUG("Built CMSG_GUILD_DECLINE");
return packet;
}
@ -3762,7 +3762,7 @@ network::Packet ActivateTaxiPacket::build(uint64_t npcGuid, uint32_t srcNode, ui
}
network::Packet GameObjectUsePacket::build(uint64_t guid) {
network::Packet packet(wireOpcode(Opcode::CMSG_GAMEOBJECT_USE));
network::Packet packet(wireOpcode(Opcode::CMSG_GAMEOBJ_USE));
packet.writeUInt64(guid);
return packet;
}

View file

@ -1313,60 +1313,60 @@ void CameraController::update(float deltaTime) {
if (movementCallback) {
// Forward/backward
if (nowForward && !wasMovingForward) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_START_FORWARD));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_START_FORWARD));
}
if (nowBackward && !wasMovingBackward) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_START_BACKWARD));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_START_BACKWARD));
}
if ((!nowForward && wasMovingForward) || (!nowBackward && wasMovingBackward)) {
if (!nowForward && !nowBackward) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_STOP));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_STOP));
}
}
// Strafing
if (nowStrafeLeft && !wasStrafingLeft) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_START_STRAFE_LEFT));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_START_STRAFE_LEFT));
}
if (nowStrafeRight && !wasStrafingRight) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_START_STRAFE_RIGHT));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_START_STRAFE_RIGHT));
}
if ((!nowStrafeLeft && wasStrafingLeft) || (!nowStrafeRight && wasStrafingRight)) {
if (!nowStrafeLeft && !nowStrafeRight) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_STOP_STRAFE));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_STOP_STRAFE));
}
}
// Turning
if (nowTurnLeft && !wasTurningLeft) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_START_TURN_LEFT));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_START_TURN_LEFT));
}
if (nowTurnRight && !wasTurningRight) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_START_TURN_RIGHT));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_START_TURN_RIGHT));
}
if ((!nowTurnLeft && wasTurningLeft) || (!nowTurnRight && wasTurningRight)) {
if (!nowTurnLeft && !nowTurnRight) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_STOP_TURN));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_STOP_TURN));
}
}
// Jump
if (nowJump && !wasJumping && grounded) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_JUMP));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_JUMP));
}
// Fall landing
if (wasFalling && grounded) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_FALL_LAND));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_FALL_LAND));
}
}
// Swimming state transitions
if (movementCallback) {
if (swimming && !wasSwimming) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_START_SWIM));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_START_SWIM));
} else if (!swimming && wasSwimming) {
movementCallback(static_cast<uint32_t>(game::Opcode::CMSG_MOVE_STOP_SWIM));
movementCallback(static_cast<uint32_t>(game::Opcode::MSG_MOVE_STOP_SWIM));
}
}