mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-02-20 08:14:55 -05:00
345 lines
13 KiB
C++
345 lines
13 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
|
|
namespace wowee {
|
|
namespace game {
|
|
|
|
// World of Warcraft 3.3.5a opcodes
|
|
// Values derived from community reverse-engineering efforts
|
|
// Reference: https://wowdev.wiki/World_Packet
|
|
enum class Opcode : uint16_t {
|
|
// ---- Client to Server (Core) ----
|
|
CMSG_PING = 0x1DC,
|
|
CMSG_AUTH_SESSION = 0x1ED,
|
|
CMSG_CHAR_CREATE = 0x036,
|
|
CMSG_CHAR_ENUM = 0x037,
|
|
CMSG_CHAR_DELETE = 0x038,
|
|
CMSG_PLAYER_LOGIN = 0x03D,
|
|
|
|
// ---- Movement ----
|
|
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,
|
|
|
|
// ---- Server to Client (Core) ----
|
|
SMSG_AUTH_CHALLENGE = 0x1EC,
|
|
SMSG_AUTH_RESPONSE = 0x1EE,
|
|
SMSG_CHAR_CREATE = 0x03A,
|
|
SMSG_CHAR_ENUM = 0x03B,
|
|
SMSG_CHAR_DELETE = 0x03C,
|
|
SMSG_PONG = 0x1DD,
|
|
SMSG_LOGIN_VERIFY_WORLD = 0x236,
|
|
SMSG_LOGIN_SETTIMESPEED = 0x042,
|
|
SMSG_TUTORIAL_FLAGS = 0x0FD,
|
|
SMSG_WARDEN_DATA = 0x2E6,
|
|
CMSG_WARDEN_DATA = 0x2E7,
|
|
SMSG_ACCOUNT_DATA_TIMES = 0x209,
|
|
SMSG_CLIENTCACHE_VERSION = 0x4AB,
|
|
SMSG_FEATURE_SYSTEM_STATUS = 0x3ED,
|
|
SMSG_MOTD = 0x33D,
|
|
|
|
// ---- Entity/Object updates ----
|
|
SMSG_UPDATE_OBJECT = 0x0A9,
|
|
SMSG_COMPRESSED_UPDATE_OBJECT = 0x1F6,
|
|
SMSG_MONSTER_MOVE_TRANSPORT = 0x2AE,
|
|
SMSG_DESTROY_OBJECT = 0x0AA,
|
|
|
|
// ---- Chat ----
|
|
CMSG_MESSAGECHAT = 0x095,
|
|
SMSG_MESSAGECHAT = 0x096,
|
|
|
|
// ---- Server Info Commands ----
|
|
CMSG_WHO = 0x062,
|
|
SMSG_WHO = 0x063,
|
|
CMSG_REQUEST_PLAYED_TIME = 0x1CC,
|
|
SMSG_PLAYED_TIME = 0x1CD,
|
|
CMSG_QUERY_TIME = 0x1CE,
|
|
SMSG_QUERY_TIME_RESPONSE = 0x1CF,
|
|
|
|
// ---- Social Commands ----
|
|
SMSG_FRIEND_STATUS = 0x068,
|
|
CMSG_ADD_FRIEND = 0x069,
|
|
CMSG_DEL_FRIEND = 0x06A,
|
|
CMSG_SET_CONTACT_NOTES = 0x06B,
|
|
CMSG_ADD_IGNORE = 0x06C,
|
|
CMSG_DEL_IGNORE = 0x06D,
|
|
|
|
// ---- Logout Commands ----
|
|
CMSG_PLAYER_LOGOUT = 0x04A,
|
|
CMSG_LOGOUT_REQUEST = 0x04B,
|
|
CMSG_LOGOUT_CANCEL = 0x04E,
|
|
SMSG_LOGOUT_RESPONSE = 0x04C,
|
|
SMSG_LOGOUT_COMPLETE = 0x04D,
|
|
|
|
// ---- Stand State ----
|
|
CMSG_STAND_STATE_CHANGE = 0x101,
|
|
|
|
// ---- Display Toggles ----
|
|
CMSG_SHOWING_HELM = 0x2B9,
|
|
CMSG_SHOWING_CLOAK = 0x2BA,
|
|
|
|
// ---- PvP ----
|
|
CMSG_TOGGLE_PVP = 0x253,
|
|
|
|
// ---- Guild ----
|
|
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,
|
|
SMSG_GUILD_ROSTER = 0x08A,
|
|
|
|
// ---- Ready Check ----
|
|
MSG_RAID_READY_CHECK = 0x322,
|
|
MSG_RAID_READY_CHECK_CONFIRM = 0x3AE,
|
|
|
|
// ---- Duel ----
|
|
CMSG_DUEL_PROPOSED = 0x166,
|
|
CMSG_DUEL_ACCEPTED = 0x16C,
|
|
CMSG_DUEL_CANCELLED = 0x16D,
|
|
SMSG_DUEL_REQUESTED = 0x167,
|
|
|
|
// ---- Trade ----
|
|
CMSG_INITIATE_TRADE = 0x116,
|
|
|
|
// ---- Random Roll ----
|
|
MSG_RANDOM_ROLL = 0x1FB,
|
|
|
|
// ---- Phase 1: Foundation (Targeting, Queries) ----
|
|
CMSG_SET_SELECTION = 0x13D,
|
|
CMSG_NAME_QUERY = 0x050,
|
|
SMSG_NAME_QUERY_RESPONSE = 0x051,
|
|
CMSG_CREATURE_QUERY = 0x060,
|
|
SMSG_CREATURE_QUERY_RESPONSE = 0x061,
|
|
CMSG_GAMEOBJECT_QUERY = 0x05E,
|
|
SMSG_GAMEOBJECT_QUERY_RESPONSE = 0x05F,
|
|
CMSG_SET_ACTIVE_MOVER = 0x26A,
|
|
CMSG_BINDER_ACTIVATE = 0x1B5,
|
|
|
|
// ---- XP ----
|
|
SMSG_LOG_XPGAIN = 0x1D0,
|
|
|
|
// ---- Creature Movement ----
|
|
SMSG_MONSTER_MOVE = 0x0DD,
|
|
|
|
// ---- Phase 2: Combat Core ----
|
|
CMSG_ATTACKSWING = 0x141,
|
|
CMSG_ATTACKSTOP = 0x142,
|
|
SMSG_ATTACKSTART = 0x143,
|
|
SMSG_ATTACKSTOP = 0x144,
|
|
SMSG_ATTACKERSTATEUPDATE = 0x14A,
|
|
SMSG_SPELLNONMELEEDAMAGELOG = 0x250,
|
|
SMSG_SPELLHEALLOG = 0x150,
|
|
SMSG_SPELLENERGIZELOG = 0x25B,
|
|
SMSG_PERIODICAURALOG = 0x24E,
|
|
SMSG_ENVIRONMENTALDAMAGELOG = 0x1FC,
|
|
|
|
// ---- Phase 3: Spells, Action Bar, Auras ----
|
|
CMSG_CAST_SPELL = 0x12E,
|
|
CMSG_CANCEL_CAST = 0x12F,
|
|
CMSG_CANCEL_AURA = 0x033,
|
|
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_INITIAL_SPELLS = 0x12A,
|
|
SMSG_LEARNED_SPELL = 0x12B,
|
|
SMSG_SUPERCEDED_SPELL = 0x12C,
|
|
SMSG_REMOVED_SPELL = 0x203,
|
|
SMSG_SEND_UNLEARN_SPELLS = 0x41F,
|
|
SMSG_SPELL_DELAYED = 0x1E2,
|
|
SMSG_AURA_UPDATE = 0x3FA,
|
|
SMSG_AURA_UPDATE_ALL = 0x495,
|
|
SMSG_SET_FLAT_SPELL_MODIFIER = 0x266,
|
|
SMSG_SET_PCT_SPELL_MODIFIER = 0x267,
|
|
|
|
// ---- Talents ----
|
|
SMSG_TALENTS_INFO = 0x4C0,
|
|
CMSG_LEARN_TALENT = 0x251,
|
|
MSG_TALENT_WIPE_CONFIRM = 0x2AB,
|
|
|
|
// ---- Phase 4: Group/Party ----
|
|
CMSG_GROUP_INVITE = 0x06E,
|
|
SMSG_GROUP_INVITE = 0x06F,
|
|
CMSG_GROUP_ACCEPT = 0x072,
|
|
CMSG_GROUP_DECLINE = 0x073,
|
|
SMSG_GROUP_DECLINE = 0x074,
|
|
CMSG_GROUP_UNINVITE_GUID = 0x076,
|
|
SMSG_GROUP_UNINVITE = 0x077,
|
|
CMSG_GROUP_SET_LEADER = 0x078,
|
|
SMSG_GROUP_SET_LEADER = 0x079,
|
|
CMSG_GROUP_DISBAND = 0x07B,
|
|
SMSG_GROUP_LIST = 0x07D,
|
|
SMSG_PARTY_COMMAND_RESULT = 0x07E,
|
|
MSG_RAID_TARGET_UPDATE = 0x321,
|
|
CMSG_REQUEST_RAID_INFO = 0x2CD,
|
|
SMSG_RAID_INSTANCE_INFO = 0x2CC,
|
|
|
|
// ---- Phase 5: Loot ----
|
|
CMSG_AUTOSTORE_LOOT_ITEM = 0x108,
|
|
CMSG_LOOT = 0x15D,
|
|
CMSG_LOOT_MONEY = 0x15E,
|
|
CMSG_LOOT_RELEASE = 0x15F,
|
|
SMSG_LOOT_RESPONSE = 0x160,
|
|
SMSG_LOOT_RELEASE_RESPONSE = 0x161,
|
|
SMSG_LOOT_REMOVED = 0x162,
|
|
SMSG_LOOT_MONEY_NOTIFY = 0x163,
|
|
SMSG_LOOT_CLEAR_MONEY = 0x165,
|
|
|
|
// ---- Phase 5: Taxi / Flight Paths ----
|
|
CMSG_ACTIVATETAXI = 0x19D,
|
|
|
|
// ---- Phase 5: NPC Gossip ----
|
|
CMSG_GOSSIP_HELLO = 0x17B,
|
|
CMSG_GOSSIP_SELECT_OPTION = 0x17C,
|
|
SMSG_GOSSIP_MESSAGE = 0x17D,
|
|
SMSG_GOSSIP_COMPLETE = 0x17E,
|
|
SMSG_NPC_TEXT_UPDATE = 0x180,
|
|
|
|
// ---- Phase 5: GameObject ----
|
|
CMSG_GAMEOBJECT_USE = 0x01B,
|
|
|
|
// ---- Phase 5: Quests ----
|
|
CMSG_QUESTGIVER_STATUS_QUERY = 0x182,
|
|
SMSG_QUESTGIVER_STATUS = 0x183,
|
|
SMSG_QUESTGIVER_STATUS_MULTIPLE = 0x198,
|
|
CMSG_QUESTGIVER_HELLO = 0x184,
|
|
CMSG_QUESTGIVER_QUERY_QUEST = 0x186,
|
|
SMSG_QUESTGIVER_QUEST_DETAILS = 0x188,
|
|
CMSG_QUESTGIVER_ACCEPT_QUEST = 0x189,
|
|
CMSG_QUESTGIVER_COMPLETE_QUEST = 0x18A,
|
|
SMSG_QUESTGIVER_REQUEST_ITEMS = 0x18B,
|
|
CMSG_QUESTGIVER_REQUEST_REWARD = 0x18C,
|
|
SMSG_QUESTGIVER_OFFER_REWARD = 0x18D,
|
|
CMSG_QUESTGIVER_CHOOSE_REWARD = 0x18E,
|
|
SMSG_QUESTGIVER_QUEST_INVALID = 0x18F,
|
|
SMSG_QUESTGIVER_QUEST_COMPLETE = 0x191,
|
|
CMSG_QUESTLOG_REMOVE_QUEST = 0x194,
|
|
SMSG_QUESTUPDATE_ADD_KILL = 0x196, // Quest kill count update
|
|
SMSG_QUESTUPDATE_COMPLETE = 0x195, // Quest objectives completed
|
|
CMSG_QUEST_QUERY = 0x05C, // Client requests quest data
|
|
SMSG_QUEST_QUERY_RESPONSE = 0x05D, // Server sends quest data
|
|
SMSG_QUESTLOG_FULL = 0x1A3, // Full quest log on login
|
|
|
|
// ---- Phase 5: Vendor ----
|
|
CMSG_LIST_INVENTORY = 0x19E,
|
|
SMSG_LIST_INVENTORY = 0x19F,
|
|
CMSG_SELL_ITEM = 0x1A0,
|
|
SMSG_SELL_ITEM = 0x1A1,
|
|
CMSG_BUY_ITEM = 0x1A2,
|
|
SMSG_BUY_FAILED = 0x1A5,
|
|
|
|
// ---- Trainer ----
|
|
CMSG_TRAINER_LIST = 0x01B0,
|
|
SMSG_TRAINER_LIST = 0x01B1,
|
|
CMSG_TRAINER_BUY_SPELL = 0x01B2,
|
|
SMSG_TRAINER_BUY_FAILED = 0x01B4,
|
|
|
|
// ---- Phase 5: Item/Equip ----
|
|
CMSG_ITEM_QUERY_SINGLE = 0x056,
|
|
SMSG_ITEM_QUERY_SINGLE_RESPONSE = 0x058,
|
|
CMSG_USE_ITEM = 0x00AB,
|
|
CMSG_AUTOEQUIP_ITEM = 0x10A,
|
|
CMSG_SWAP_ITEM = 0x10C,
|
|
CMSG_SWAP_INV_ITEM = 0x10D,
|
|
SMSG_INVENTORY_CHANGE_FAILURE = 0x112,
|
|
CMSG_INSPECT = 0x114,
|
|
SMSG_INSPECT_RESULTS = 0x115,
|
|
|
|
// ---- Death/Respawn ----
|
|
CMSG_REPOP_REQUEST = 0x015A,
|
|
SMSG_RESURRECT_REQUEST = 0x015B,
|
|
CMSG_RESURRECT_RESPONSE = 0x015C,
|
|
CMSG_SPIRIT_HEALER_ACTIVATE = 0x021C,
|
|
SMSG_SPIRIT_HEALER_CONFIRM = 0x0222,
|
|
SMSG_RESURRECT_CANCEL = 0x0390,
|
|
|
|
// ---- Teleport / Transfer ----
|
|
MSG_MOVE_TELEPORT_ACK = 0x0C7,
|
|
SMSG_TRANSFER_PENDING = 0x003F,
|
|
SMSG_NEW_WORLD = 0x003E,
|
|
MSG_MOVE_WORLDPORT_ACK = 0x00DC,
|
|
SMSG_TRANSFER_ABORTED = 0x0040,
|
|
|
|
// ---- Speed Changes ----
|
|
SMSG_FORCE_RUN_SPEED_CHANGE = 0x00E2,
|
|
CMSG_FORCE_RUN_SPEED_CHANGE_ACK = 0x00E3,
|
|
|
|
// ---- Mount ----
|
|
CMSG_CANCEL_MOUNT_AURA = 0x0375,
|
|
|
|
// ---- Taxi / Flight Paths ----
|
|
SMSG_SHOWTAXINODES = 0x01A9,
|
|
SMSG_ACTIVATETAXIREPLY = 0x01AE,
|
|
// Some cores send activate taxi reply on 0x029D (observed in logs)
|
|
SMSG_ACTIVATETAXIREPLY_ALT = 0x029D,
|
|
SMSG_NEW_TAXI_PATH = 0x01AF,
|
|
CMSG_ACTIVATETAXIEXPRESS = 0x0312,
|
|
|
|
// ---- Battleground ----
|
|
SMSG_BATTLEFIELD_PORT_DENIED = 0x014B,
|
|
SMSG_REMOVED_FROM_PVP_QUEUE = 0x0170,
|
|
SMSG_TRAINER_BUY_SUCCEEDED = 0x01B3,
|
|
SMSG_BINDPOINTUPDATE = 0x0155,
|
|
CMSG_BATTLEFIELD_LIST = 0x023C,
|
|
SMSG_BATTLEFIELD_LIST = 0x023D,
|
|
CMSG_BATTLEFIELD_JOIN = 0x023E,
|
|
CMSG_BATTLEFIELD_STATUS = 0x02D3,
|
|
SMSG_BATTLEFIELD_STATUS = 0x02D4,
|
|
CMSG_BATTLEFIELD_PORT = 0x02D5,
|
|
CMSG_BATTLEMASTER_HELLO = 0x02D7,
|
|
MSG_PVP_LOG_DATA = 0x02E0,
|
|
CMSG_LEAVE_BATTLEFIELD = 0x02E1,
|
|
SMSG_GROUP_JOINED_BATTLEGROUND = 0x02E8,
|
|
MSG_BATTLEGROUND_PLAYER_POSITIONS = 0x02E9,
|
|
SMSG_BATTLEGROUND_PLAYER_JOINED = 0x02EC,
|
|
SMSG_BATTLEGROUND_PLAYER_LEFT = 0x02ED,
|
|
CMSG_BATTLEMASTER_JOIN = 0x02EE,
|
|
SMSG_JOINED_BATTLEGROUND_QUEUE = 0x038A,
|
|
|
|
// ---- Arena Team ----
|
|
CMSG_ARENA_TEAM_CREATE = 0x0348,
|
|
SMSG_ARENA_TEAM_COMMAND_RESULT = 0x0349,
|
|
CMSG_ARENA_TEAM_QUERY = 0x034B,
|
|
SMSG_ARENA_TEAM_QUERY_RESPONSE = 0x034C,
|
|
CMSG_ARENA_TEAM_ROSTER = 0x034D,
|
|
SMSG_ARENA_TEAM_ROSTER = 0x034E,
|
|
CMSG_ARENA_TEAM_INVITE = 0x034F,
|
|
SMSG_ARENA_TEAM_INVITE = 0x0350,
|
|
CMSG_ARENA_TEAM_ACCEPT = 0x0351,
|
|
CMSG_ARENA_TEAM_DECLINE = 0x0352,
|
|
CMSG_ARENA_TEAM_LEAVE = 0x0353,
|
|
CMSG_ARENA_TEAM_REMOVE = 0x0354,
|
|
CMSG_ARENA_TEAM_DISBAND = 0x0355,
|
|
CMSG_ARENA_TEAM_LEADER = 0x0356,
|
|
SMSG_ARENA_TEAM_EVENT = 0x0357,
|
|
CMSG_BATTLEMASTER_JOIN_ARENA = 0x0358,
|
|
SMSG_ARENA_TEAM_STATS = 0x035B,
|
|
SMSG_ARENA_ERROR = 0x0376,
|
|
MSG_INSPECT_ARENA_TEAMS = 0x0377,
|
|
};
|
|
|
|
} // namespace game
|
|
} // namespace wowee
|