aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp107
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h1004
-rw-r--r--src/server/game/Server/WorldSession.cpp11
-rw-r--r--src/server/game/Server/WorldSocket.cpp4
4 files changed, 559 insertions, 567 deletions
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 5cc3df7c86e..8a37c7fbc83 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -20,20 +20,17 @@
#include "WorldSession.h"
#include "Packets/AllPackets.h"
-template<class PacketClass, void(WorldSession::*HandlerFunction)(PacketClass&)>
-class PacketHandler : public ClientOpcodeHandler
+namespace
{
-public:
- PacketHandler(char const* name, SessionStatus status, PacketProcessing processing) : ClientOpcodeHandler(name, status, processing) { }
-
- void Call(WorldSession* session, WorldPacket& packet) const override
- {
- std::remove_cv_t<PacketClass> nicePacket(std::move(packet));
- nicePacket.Read();
- (session->*HandlerFunction)(nicePacket);
- session->LogUnprocessedTail(nicePacket.GetRawPacket());
- }
-};
+template<class PacketClass, void(WorldSession::* HandlerFunction)(PacketClass&)>
+void CallHandlerWrapper(WorldSession* session, WorldPacket& packet)
+{
+ std::remove_cv_t<PacketClass> nicePacket(std::move(packet));
+ nicePacket.Read();
+ (session->*HandlerFunction)(nicePacket);
+ session->LogUnprocessedTail(nicePacket.GetRawPacket());
+}
+}
OpcodeTable opcodeTable;
@@ -48,93 +45,100 @@ struct get_packet_class<void(WorldSession::*)(PacketClass&)>
using type = PacketClass;
};
-OpcodeTable::OpcodeTable()
-{
- memset(_internalTableClient, 0, sizeof(_internalTableClient));
- memset(_internalTableServer, 0, sizeof(_internalTableServer));
-}
+OpcodeTable::OpcodeTable() = default;
-OpcodeTable::~OpcodeTable()
-{
- for (uint16 i = 0; i < NUM_OPCODE_HANDLERS; ++i)
- {
- delete _internalTableClient[i];
- delete _internalTableServer[i];
- }
-}
+OpcodeTable::~OpcodeTable() = default;
bool OpcodeTable::ValidateClientOpcode(OpcodeClient opcode, char const* name) const
{
- if (uint32(opcode) == NULL_OPCODE)
+ if (opcode == UNKNOWN_OPCODE)
{
TC_LOG_ERROR("network", "Opcode {} does not have a value", name);
return false;
}
- if (uint32(opcode) >= NUM_OPCODE_HANDLERS)
+ if (opcode < MIN_CMSG_OPCODE_NUMBER || opcode > MAX_CMSG_OPCODE_NUMBER)
{
TC_LOG_ERROR("network", "Tried to set handler for an invalid opcode {}", opcode);
return false;
}
- if (_internalTableClient[opcode] != nullptr)
+ if ((*this)[opcode] != nullptr)
{
- TC_LOG_ERROR("network", "Tried to override client handler of {} with {} (opcode {})", _internalTableClient[opcode]->Name, name, opcode);
+ TC_LOG_ERROR("network", "Tried to override client handler of {} with {} (opcode {})", (*this)[opcode]->Name, name, opcode);
return false;
}
return true;
}
-template<typename Handler, Handler HandlerFunction>
-void OpcodeTable::ValidateAndSetClientOpcode(OpcodeClient opcode, char const* name, SessionStatus status, PacketProcessing processing)
+void OpcodeTable::ValidateAndSetClientOpcode(OpcodeClient opcode, char const* name, SessionStatus status, ClientOpcodeHandler::HandlerFunction call, PacketProcessing processing)
{
if (!ValidateClientOpcode(opcode, name))
return;
- _internalTableClient[opcode] = new PacketHandler<typename get_packet_class<Handler>::type, HandlerFunction>(name, status, processing);
+ _internalTableClient[opcode - MIN_CMSG_OPCODE_NUMBER].reset(new ClientOpcodeHandler{
+ .Name = name,
+ .Status = status,
+ .Call = call,
+ .ProcessingPlace = processing
+ });
}
-void OpcodeTable::ValidateAndSetServerOpcode(OpcodeServer opcode, char const* name, SessionStatus status, ConnectionType conIdx)
+bool OpcodeTable::ValidateServerOpcode(OpcodeServer opcode, char const* name, ConnectionType conIdx) const
{
- if (uint32(opcode) == NULL_OPCODE)
+ if (opcode == UNKNOWN_OPCODE)
{
TC_LOG_ERROR("network", "Opcode {} does not have a value", name);
- return;
+ return false;
}
- if (uint32(opcode) >= NUM_OPCODE_HANDLERS)
+ if (opcode < MIN_SMSG_OPCODE_NUMBER || opcode > MAX_SMSG_OPCODE_NUMBER)
{
TC_LOG_ERROR("network", "Tried to set handler for an invalid opcode {}", opcode);
- return;
+ return false;
}
if (conIdx >= MAX_CONNECTION_TYPES)
{
TC_LOG_ERROR("network", "Tried to set invalid connection type {} for opcode {}", conIdx, name);
- return;
+ return false;
}
if (IsInstanceOnlyOpcode(opcode) && conIdx != CONNECTION_TYPE_INSTANCE)
{
TC_LOG_ERROR("network", "Tried to set invalid connection type {} for instance only opcode {}", conIdx, name);
- return;
+ return false;
}
- if (_internalTableServer[opcode] != nullptr)
+ if ((*this)[opcode] != nullptr)
{
- TC_LOG_ERROR("network", "Tried to override server handler of {} with {} (opcode {})", opcodeTable[opcode]->Name, name, opcode);
- return;
+ TC_LOG_ERROR("network", "Tried to override server handler of {} with {} (opcode {})", (*this)[opcode]->Name, name, opcode);
+ return false;
}
- _internalTableServer[opcode] = new ServerOpcodeHandler(name, status, conIdx);
+ return true;
+}
+
+void OpcodeTable::ValidateAndSetServerOpcode(OpcodeServer opcode, char const* name, SessionStatus status, ConnectionType conIdx)
+{
+ if (!ValidateServerOpcode(opcode, name, conIdx))
+ return;
+
+ _internalTableServer[opcode - MIN_SMSG_OPCODE_NUMBER].reset(new ServerOpcodeHandler{ .Name = name, .Status = status, .ConnectionIndex = conIdx });
}
/// Correspondence between opcodes and their names
void OpcodeTable::Initialize()
{
+ InitializeClientOpcodes();
+ InitializeServerOpcodes();
+}
+
+void OpcodeTable::InitializeClientOpcodes()
+{
#define DEFINE_HANDLER(opcode, status, processing, handler) \
- ValidateAndSetClientOpcode<decltype(handler), handler>(opcode, #opcode, status, processing)
+ ValidateAndSetClientOpcode(opcode, #opcode, status, &CallHandlerWrapper<typename get_packet_class<decltype(handler)>::type, handler>, processing)
DEFINE_HANDLER(CMSG_ABANDON_NPE_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ACCEPT_GUILD_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAcceptInvite);
@@ -993,7 +997,10 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_WRAP_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleWrapItem);
#undef DEFINE_HANDLER
+}
+void OpcodeTable::InitializeServerOpcodes()
+{
#define DEFINE_SERVER_OPCODE_HANDLER(opcode, status, con) \
static_assert((status) == STATUS_NEVER || (status) == STATUS_UNHANDLED, "Invalid status for server opcode"); \
ValidateAndSetServerOpcode(opcode, #opcode, status, con)
@@ -2218,15 +2225,15 @@ void OpcodeTable::Initialize()
#undef DEFINE_SERVER_OPCODE_HANDLER
}
-template<typename T>
+template<std::size_t MIN_OPCODE, std::size_t MAX_OPCODE, typename T>
inline std::string GetOpcodeNameForLoggingImpl(T id)
{
uint32 opcode = uint32(id);
char const* name = nullptr;
- if (opcode < NUM_OPCODE_HANDLERS)
+ if (opcode >= MIN_OPCODE && opcode <= MAX_OPCODE)
{
- if (OpcodeHandler const* handler = opcodeTable[id])
+ if (auto const* handler = opcodeTable[id])
name = handler->Name;
else
name = "UNKNOWN OPCODE";
@@ -2239,10 +2246,10 @@ inline std::string GetOpcodeNameForLoggingImpl(T id)
std::string GetOpcodeNameForLogging(OpcodeClient opcode)
{
- return GetOpcodeNameForLoggingImpl(opcode);
+ return GetOpcodeNameForLoggingImpl<MIN_CMSG_OPCODE_NUMBER, MAX_CMSG_OPCODE_NUMBER>(opcode);
}
std::string GetOpcodeNameForLogging(OpcodeServer opcode)
{
- return GetOpcodeNameForLoggingImpl(opcode);
+ return GetOpcodeNameForLoggingImpl<MIN_SMSG_OPCODE_NUMBER, MAX_SMSG_OPCODE_NUMBER>(opcode);
}
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 765d61926d2..30b5d2e64bb 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -23,6 +23,8 @@
#define _OPCODES_H
#include "Define.h"
+#include <array>
+#include <memory>
#include <string>
enum ConnectionType : int8
@@ -34,13 +36,15 @@ enum ConnectionType : int8
CONNECTION_TYPE_DEFAULT = -1
};
-enum OpcodeMisc : uint16
-{
- MAX_OPCODE = 0x3FFF,
- NUM_OPCODE_HANDLERS = (MAX_OPCODE + 1),
- UNKNOWN_OPCODE = 0xFFFF,
- NULL_OPCODE = 0xBADD
-};
+constexpr std::size_t MIN_CMSG_OPCODE_NUMBER = 0x305C;
+constexpr std::size_t MAX_CMSG_OPCODE_NUMBER = 0x3A63;
+constexpr std::size_t NUM_CMSG_OPCODES = MAX_CMSG_OPCODE_NUMBER - MIN_CMSG_OPCODE_NUMBER + 1;
+
+constexpr std::size_t MIN_SMSG_OPCODE_NUMBER = 0x256C;
+constexpr std::size_t MAX_SMSG_OPCODE_NUMBER = 0x3052;
+constexpr std::size_t NUM_SMSG_OPCODES = MAX_SMSG_OPCODE_NUMBER - MIN_SMSG_OPCODE_NUMBER + 1;
+
+constexpr uint16 UNKNOWN_OPCODE = 0xBADD; // special marker value for uninitialized WorldPackets
enum OpcodeClient : uint16
{
@@ -735,199 +739,199 @@ enum OpcodeClient : uint16
CMSG_WRAP_ITEM = 0x3994,
// Deleted opcodes, here only to allow compile
- CMSG_ABANDON_NPE_RESPONSE = 0xBADD,
- CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0xBADD,
- CMSG_ACTIVATE_SOULBIND = 0xBADD,
- CMSG_ADD_ACCOUNT_COSMETIC = 0xBADD,
- CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0xBADD,
- CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0xBADD,
- CMSG_ARTIFACT_ADD_POWER = 0xBADD,
- CMSG_ARTIFACT_SET_APPEARANCE = 0xBADD,
- CMSG_AUCTION_BROWSE_QUERY = 0xBADD,
- CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0xBADD,
- CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0xBADD,
- CMSG_AUCTION_GET_COMMODITY_QUOTE = 0xBADD,
- CMSG_AUCTION_LIST_BIDDED_ITEMS = 0xBADD,
- CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS = 0xBADD,
- CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = 0xBADD,
- CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = 0xBADD,
- CMSG_AUCTION_LIST_OWNED_ITEMS = 0xBADD,
- CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0xBADD,
- CMSG_AUCTION_SELL_COMMODITY = 0xBADD,
- CMSG_AUCTION_SET_FAVORITE_ITEM = 0xBADD,
- CMSG_AUTOBANK_REAGENT = 0xBADD,
- CMSG_AUTOSTORE_BANK_REAGENT = 0xBADD,
- CMSG_BATTLE_PET_DELETE_PET = 0xBADD,
- CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0xBADD,
- CMSG_BATTLE_PET_MODIFY_NAME = 0xBADD,
- CMSG_BATTLEMASTER_JOIN_BRAWL = 0xBADD,
- CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0xBADD,
- CMSG_BLACK_MARKET_BID_ON_ITEM = 0xBADD,
- CMSG_BLACK_MARKET_REQUEST_ITEMS = 0xBADD,
- CMSG_BONUS_ROLL = 0xBADD,
- CMSG_BUY_REAGENT_BANK = 0xBADD,
- CMSG_CAGE_BATTLE_PET = 0xBADD,
- CMSG_CANCEL_CHANNELLING = 0xBADD,
- CMSG_CANCEL_MASTER_LOOT_ROLL = 0xBADD,
- CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0xBADD,
- CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0xBADD,
- CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0xBADD,
- CMSG_CHANGE_MONUMENT_APPEARANCE = 0xBADD,
- CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0xBADD,
- CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0xBADD,
- CMSG_CHOICE_RESPONSE = 0xBADD,
- CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0xBADD,
- CMSG_CLAIM_WEEKLY_REWARD = 0xBADD,
- CMSG_CLASS_TALENTS_DELETE_CONFIG = 0xBADD,
- CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0xBADD,
- CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0xBADD,
- CMSG_CLASS_TALENTS_RENAME_CONFIG = 0xBADD,
- CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0xBADD,
- CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0xBADD,
- CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0xBADD,
- CMSG_CLOSE_RUNEFORGE_INTERACTION = 0xBADD,
- CMSG_COMMENTATOR_SPECTATE = 0xBADD,
- CMSG_CONFIRM_ARTIFACT_RESPEC = 0xBADD,
- CMSG_CONTENT_TRACKING_START_TRACKING = 0xBADD,
- CMSG_CONTENT_TRACKING_STOP_TRACKING = 0xBADD,
- CMSG_CONTRIBUTION_CONTRIBUTE = 0xBADD,
- CMSG_CONVERSATION_CINEMATIC_READY = 0xBADD,
- CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0xBADD,
- CMSG_CRAFTING_ORDER_CANCEL = 0xBADD,
- CMSG_CRAFTING_ORDER_CLAIM = 0xBADD,
- CMSG_CRAFTING_ORDER_CREATE = 0xBADD,
- CMSG_CRAFTING_ORDER_FULFILL = 0xBADD,
- CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS = 0xBADD,
- CMSG_CRAFTING_ORDER_LIST_MY_ORDERS = 0xBADD,
- CMSG_CRAFTING_ORDER_REJECT = 0xBADD,
- CMSG_CRAFTING_ORDER_RELEASE = 0xBADD,
- CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0xBADD,
- CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0xBADD,
- CMSG_CREATE_SHIPMENT = 0xBADD,
- CMSG_DEPOSIT_REAGENT_BANK = 0xBADD,
- CMSG_DF_CONFIRM_EXPAND_SEARCH = 0xBADD,
- CMSG_DO_MASTER_LOOT_ROLL = 0xBADD,
- CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0xBADD,
- CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0xBADD,
- CMSG_GARRISON_CANCEL_CONSTRUCTION = 0xBADD,
- CMSG_GARRISON_CHECK_UPGRADEABLE = 0xBADD,
- CMSG_GARRISON_COMPLETE_MISSION = 0xBADD,
- CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0xBADD,
- CMSG_GARRISON_GENERATE_RECRUITS = 0xBADD,
- CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0xBADD,
- CMSG_GARRISON_GET_MAP_DATA = 0xBADD,
- CMSG_GARRISON_GET_MISSION_REWARD = 0xBADD,
- CMSG_GARRISON_LEARN_TALENT = 0xBADD,
- CMSG_GARRISON_MISSION_BONUS_ROLL = 0xBADD,
- CMSG_GARRISON_PURCHASE_BUILDING = 0xBADD,
- CMSG_GARRISON_RECRUIT_FOLLOWER = 0xBADD,
- CMSG_GARRISON_REMOVE_FOLLOWER = 0xBADD,
- CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0xBADD,
- CMSG_GARRISON_RENAME_FOLLOWER = 0xBADD,
- CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0xBADD,
- CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0xBADD,
- CMSG_GARRISON_RESEARCH_TALENT = 0xBADD,
- CMSG_GARRISON_SET_BUILDING_ACTIVE = 0xBADD,
- CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0xBADD,
- CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0xBADD,
- CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0xBADD,
- CMSG_GARRISON_SOCKET_TALENT = 0xBADD,
- CMSG_GARRISON_START_MISSION = 0xBADD,
- CMSG_GARRISON_SWAP_BUILDINGS = 0xBADD,
- CMSG_GET_GARRISON_INFO = 0xBADD,
- CMSG_GET_LANDING_PAGE_SHIPMENTS = 0xBADD,
- CMSG_GET_RAF_ACCOUNT_INFO = 0xBADD,
- CMSG_GET_TROPHY_LIST = 0xBADD,
- CMSG_GOSSIP_REFRESH_OPTIONS = 0xBADD,
- CMSG_HIDE_QUEST_CHOICE = 0xBADD,
- CMSG_ISLAND_QUEUE = 0xBADD,
- CMSG_JOIN_PET_BATTLE_QUEUE = 0xBADD,
- CMSG_LEARN_PVP_TALENTS = 0xBADD,
- CMSG_LEARN_TALENTS = 0xBADD,
- CMSG_LEAVE_PET_BATTLE_QUEUE = 0xBADD,
- CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0xBADD,
- CMSG_LOAD_SELECTED_TROPHY = 0xBADD,
- CMSG_MOVE_SET_TURN_RATE_CHEAT = 0xBADD,
- CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0xBADD,
- CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0xBADD,
- CMSG_OPEN_MISSION_NPC = 0xBADD,
- CMSG_OPEN_SHIPMENT_NPC = 0xBADD,
- CMSG_OPEN_TRADESKILL_NPC = 0xBADD,
- CMSG_PERFORM_ITEM_INTERACTION = 0xBADD,
- CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0xBADD,
- CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0xBADD,
- CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0xBADD,
- CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0xBADD,
- CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0xBADD,
- CMSG_PET_BATTLE_FINAL_NOTIFY = 0xBADD,
- CMSG_PET_BATTLE_INPUT = 0xBADD,
- CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0xBADD,
- CMSG_PET_BATTLE_QUIT_NOTIFY = 0xBADD,
- CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0xBADD,
- CMSG_PET_BATTLE_REQUEST_PVP = 0xBADD,
- CMSG_PET_BATTLE_REQUEST_UPDATE = 0xBADD,
- CMSG_PET_BATTLE_REQUEST_WILD = 0xBADD,
- CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0xBADD,
- CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0xBADD,
- CMSG_QUERY_GARRISON_PET_NAME = 0xBADD,
- CMSG_QUERY_SCENARIO_POI = 0xBADD,
- CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0xBADD,
- CMSG_QUEST_SESSION_REQUEST_START = 0xBADD,
- CMSG_QUEST_SESSION_REQUEST_STOP = 0xBADD,
- CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0xBADD,
- CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0xBADD,
- CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0xBADD,
- CMSG_RAF_CLAIM_NEXT_REWARD = 0xBADD,
- CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0xBADD,
- CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0xBADD,
- CMSG_REMOVE_RAF_RECRUIT = 0xBADD,
- CMSG_REPLACE_TROPHY = 0xBADD,
- CMSG_REPORT_STUCK_IN_COMBAT = 0xBADD,
- CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0xBADD,
- CMSG_REQUEST_COVENANT_CALLINGS = 0xBADD,
- CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0xBADD,
- CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0xBADD,
- CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0xBADD,
- CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0xBADD,
- CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0xBADD,
- CMSG_REQUEST_WEEKLY_REWARDS = 0xBADD,
- CMSG_RESET_CHALLENGE_MODE = 0xBADD,
- CMSG_RESET_CHALLENGE_MODE_CHEAT = 0xBADD,
- CMSG_REVERT_MONUMENT_APPEARANCE = 0xBADD,
- CMSG_RPE_RESET_CHARACTER = 0xBADD,
- CMSG_SAVE_PERSONAL_EMBLEM = 0xBADD,
- CMSG_SELL_ALL_JUNK_ITEMS = 0xBADD,
- CMSG_SEND_CHARACTER_CLUB_INVITATION = 0xBADD,
- CMSG_SEND_PING_UNIT = 0xBADD,
- CMSG_SEND_PING_WORLD_POINT = 0xBADD,
- CMSG_SET_ACHIEVEMENTS_HIDDEN = 0xBADD,
- CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0xBADD,
- CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0xBADD,
- CMSG_SET_BANK_AUTOSORT_DISABLED = 0xBADD,
- CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0xBADD,
- CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0xBADD,
- CMSG_SET_LOOT_SPECIALIZATION = 0xBADD,
- CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = 0xBADD,
- CMSG_SET_SAVED_INSTANCE_EXTEND = 0xBADD,
- CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0xBADD,
- CMSG_SET_TRADE_CURRENCY = 0xBADD,
- CMSG_SET_USING_PARTY_GARRISON = 0xBADD,
- CMSG_SET_WAR_MODE = 0xBADD,
- CMSG_SORT_BAGS = 0xBADD,
- CMSG_SORT_BANK_BAGS = 0xBADD,
- CMSG_SORT_REAGENT_BANK_BAGS = 0xBADD,
- CMSG_SPELL_EMPOWER_RELEASE = 0xBADD,
- CMSG_SPELL_EMPOWER_RESTART = 0xBADD,
- CMSG_START_CHALLENGE_MODE = 0xBADD,
- CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0xBADD,
- CMSG_SURRENDER_ARENA = 0xBADD,
- CMSG_TRADE_SKILL_SET_FAVORITE = 0xBADD,
- CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0xBADD,
- CMSG_UI_MAP_QUEST_LINES_REQUEST = 0xBADD,
- CMSG_UNLEARN_SPECIALIZATION = 0xBADD,
- CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0xBADD,
- CMSG_UPGRADE_GARRISON = 0xBADD,
- CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0xBADD,
+ CMSG_ABANDON_NPE_RESPONSE = UNKNOWN_OPCODE,
+ CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = UNKNOWN_OPCODE,
+ CMSG_ACTIVATE_SOULBIND = UNKNOWN_OPCODE,
+ CMSG_ADD_ACCOUNT_COSMETIC = UNKNOWN_OPCODE,
+ CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = UNKNOWN_OPCODE,
+ CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = UNKNOWN_OPCODE,
+ CMSG_ARTIFACT_ADD_POWER = UNKNOWN_OPCODE,
+ CMSG_ARTIFACT_SET_APPEARANCE = UNKNOWN_OPCODE,
+ CMSG_AUCTION_BROWSE_QUERY = UNKNOWN_OPCODE,
+ CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = UNKNOWN_OPCODE,
+ CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = UNKNOWN_OPCODE,
+ CMSG_AUCTION_GET_COMMODITY_QUOTE = UNKNOWN_OPCODE,
+ CMSG_AUCTION_LIST_BIDDED_ITEMS = UNKNOWN_OPCODE,
+ CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS = UNKNOWN_OPCODE,
+ CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = UNKNOWN_OPCODE,
+ CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = UNKNOWN_OPCODE,
+ CMSG_AUCTION_LIST_OWNED_ITEMS = UNKNOWN_OPCODE,
+ CMSG_AUCTION_REQUEST_FAVORITE_LIST = UNKNOWN_OPCODE,
+ CMSG_AUCTION_SELL_COMMODITY = UNKNOWN_OPCODE,
+ CMSG_AUCTION_SET_FAVORITE_ITEM = UNKNOWN_OPCODE,
+ CMSG_AUTOBANK_REAGENT = UNKNOWN_OPCODE,
+ CMSG_AUTOSTORE_BANK_REAGENT = UNKNOWN_OPCODE,
+ CMSG_BATTLE_PET_DELETE_PET = UNKNOWN_OPCODE,
+ CMSG_BATTLE_PET_DELETE_PET_CHEAT = UNKNOWN_OPCODE,
+ CMSG_BATTLE_PET_MODIFY_NAME = UNKNOWN_OPCODE,
+ CMSG_BATTLEMASTER_JOIN_BRAWL = UNKNOWN_OPCODE,
+ CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = UNKNOWN_OPCODE,
+ CMSG_BLACK_MARKET_BID_ON_ITEM = UNKNOWN_OPCODE,
+ CMSG_BLACK_MARKET_REQUEST_ITEMS = UNKNOWN_OPCODE,
+ CMSG_BONUS_ROLL = UNKNOWN_OPCODE,
+ CMSG_BUY_REAGENT_BANK = UNKNOWN_OPCODE,
+ CMSG_CAGE_BATTLE_PET = UNKNOWN_OPCODE,
+ CMSG_CANCEL_CHANNELLING = UNKNOWN_OPCODE,
+ CMSG_CANCEL_MASTER_LOOT_ROLL = UNKNOWN_OPCODE,
+ CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = UNKNOWN_OPCODE,
+ CMSG_CHALLENGE_MODE_REQUEST_LEADERS = UNKNOWN_OPCODE,
+ CMSG_CHANGE_BANK_BAG_SLOT_FLAG = UNKNOWN_OPCODE,
+ CMSG_CHANGE_MONUMENT_APPEARANCE = UNKNOWN_OPCODE,
+ CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = UNKNOWN_OPCODE,
+ CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = UNKNOWN_OPCODE,
+ CMSG_CHOICE_RESPONSE = UNKNOWN_OPCODE,
+ CMSG_CHROMIE_TIME_SELECT_EXPANSION = UNKNOWN_OPCODE,
+ CMSG_CLAIM_WEEKLY_REWARD = UNKNOWN_OPCODE,
+ CMSG_CLASS_TALENTS_DELETE_CONFIG = UNKNOWN_OPCODE,
+ CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = UNKNOWN_OPCODE,
+ CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = UNKNOWN_OPCODE,
+ CMSG_CLASS_TALENTS_RENAME_CONFIG = UNKNOWN_OPCODE,
+ CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = UNKNOWN_OPCODE,
+ CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = UNKNOWN_OPCODE,
+ CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = UNKNOWN_OPCODE,
+ CMSG_CLOSE_RUNEFORGE_INTERACTION = UNKNOWN_OPCODE,
+ CMSG_COMMENTATOR_SPECTATE = UNKNOWN_OPCODE,
+ CMSG_CONFIRM_ARTIFACT_RESPEC = UNKNOWN_OPCODE,
+ CMSG_CONTENT_TRACKING_START_TRACKING = UNKNOWN_OPCODE,
+ CMSG_CONTENT_TRACKING_STOP_TRACKING = UNKNOWN_OPCODE,
+ CMSG_CONTRIBUTION_CONTRIBUTE = UNKNOWN_OPCODE,
+ CMSG_CONVERSATION_CINEMATIC_READY = UNKNOWN_OPCODE,
+ CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = UNKNOWN_OPCODE,
+ CMSG_CRAFTING_ORDER_CANCEL = UNKNOWN_OPCODE,
+ CMSG_CRAFTING_ORDER_CLAIM = UNKNOWN_OPCODE,
+ CMSG_CRAFTING_ORDER_CREATE = UNKNOWN_OPCODE,
+ CMSG_CRAFTING_ORDER_FULFILL = UNKNOWN_OPCODE,
+ CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS = UNKNOWN_OPCODE,
+ CMSG_CRAFTING_ORDER_LIST_MY_ORDERS = UNKNOWN_OPCODE,
+ CMSG_CRAFTING_ORDER_REJECT = UNKNOWN_OPCODE,
+ CMSG_CRAFTING_ORDER_RELEASE = UNKNOWN_OPCODE,
+ CMSG_CRAFTING_ORDER_REPORT_PLAYER = UNKNOWN_OPCODE,
+ CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = UNKNOWN_OPCODE,
+ CMSG_CREATE_SHIPMENT = UNKNOWN_OPCODE,
+ CMSG_DEPOSIT_REAGENT_BANK = UNKNOWN_OPCODE,
+ CMSG_DF_CONFIRM_EXPAND_SEARCH = UNKNOWN_OPCODE,
+ CMSG_DO_MASTER_LOOT_ROLL = UNKNOWN_OPCODE,
+ CMSG_GARRISON_ADD_FOLLOWER_HEALTH = UNKNOWN_OPCODE,
+ CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = UNKNOWN_OPCODE,
+ CMSG_GARRISON_CANCEL_CONSTRUCTION = UNKNOWN_OPCODE,
+ CMSG_GARRISON_CHECK_UPGRADEABLE = UNKNOWN_OPCODE,
+ CMSG_GARRISON_COMPLETE_MISSION = UNKNOWN_OPCODE,
+ CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = UNKNOWN_OPCODE,
+ CMSG_GARRISON_GENERATE_RECRUITS = UNKNOWN_OPCODE,
+ CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = UNKNOWN_OPCODE,
+ CMSG_GARRISON_GET_MAP_DATA = UNKNOWN_OPCODE,
+ CMSG_GARRISON_GET_MISSION_REWARD = UNKNOWN_OPCODE,
+ CMSG_GARRISON_LEARN_TALENT = UNKNOWN_OPCODE,
+ CMSG_GARRISON_MISSION_BONUS_ROLL = UNKNOWN_OPCODE,
+ CMSG_GARRISON_PURCHASE_BUILDING = UNKNOWN_OPCODE,
+ CMSG_GARRISON_RECRUIT_FOLLOWER = UNKNOWN_OPCODE,
+ CMSG_GARRISON_REMOVE_FOLLOWER = UNKNOWN_OPCODE,
+ CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = UNKNOWN_OPCODE,
+ CMSG_GARRISON_RENAME_FOLLOWER = UNKNOWN_OPCODE,
+ CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = UNKNOWN_OPCODE,
+ CMSG_GARRISON_REQUEST_SHIPMENT_INFO = UNKNOWN_OPCODE,
+ CMSG_GARRISON_RESEARCH_TALENT = UNKNOWN_OPCODE,
+ CMSG_GARRISON_SET_BUILDING_ACTIVE = UNKNOWN_OPCODE,
+ CMSG_GARRISON_SET_FOLLOWER_FAVORITE = UNKNOWN_OPCODE,
+ CMSG_GARRISON_SET_FOLLOWER_INACTIVE = UNKNOWN_OPCODE,
+ CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = UNKNOWN_OPCODE,
+ CMSG_GARRISON_SOCKET_TALENT = UNKNOWN_OPCODE,
+ CMSG_GARRISON_START_MISSION = UNKNOWN_OPCODE,
+ CMSG_GARRISON_SWAP_BUILDINGS = UNKNOWN_OPCODE,
+ CMSG_GET_GARRISON_INFO = UNKNOWN_OPCODE,
+ CMSG_GET_LANDING_PAGE_SHIPMENTS = UNKNOWN_OPCODE,
+ CMSG_GET_RAF_ACCOUNT_INFO = UNKNOWN_OPCODE,
+ CMSG_GET_TROPHY_LIST = UNKNOWN_OPCODE,
+ CMSG_GOSSIP_REFRESH_OPTIONS = UNKNOWN_OPCODE,
+ CMSG_HIDE_QUEST_CHOICE = UNKNOWN_OPCODE,
+ CMSG_ISLAND_QUEUE = UNKNOWN_OPCODE,
+ CMSG_JOIN_PET_BATTLE_QUEUE = UNKNOWN_OPCODE,
+ CMSG_LEARN_PVP_TALENTS = UNKNOWN_OPCODE,
+ CMSG_LEARN_TALENTS = UNKNOWN_OPCODE,
+ CMSG_LEAVE_PET_BATTLE_QUEUE = UNKNOWN_OPCODE,
+ CMSG_LIVE_REGION_KEY_BINDINGS_COPY = UNKNOWN_OPCODE,
+ CMSG_LOAD_SELECTED_TROPHY = UNKNOWN_OPCODE,
+ CMSG_MOVE_SET_TURN_RATE_CHEAT = UNKNOWN_OPCODE,
+ CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = UNKNOWN_OPCODE,
+ CMSG_NEUTRAL_PLAYER_SELECT_FACTION = UNKNOWN_OPCODE,
+ CMSG_OPEN_MISSION_NPC = UNKNOWN_OPCODE,
+ CMSG_OPEN_SHIPMENT_NPC = UNKNOWN_OPCODE,
+ CMSG_OPEN_TRADESKILL_NPC = UNKNOWN_OPCODE,
+ CMSG_PERFORM_ITEM_INTERACTION = UNKNOWN_OPCODE,
+ CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = UNKNOWN_OPCODE,
+ CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = UNKNOWN_OPCODE,
+ CMSG_PERKS_PROGRAM_REQUEST_REFUND = UNKNOWN_OPCODE,
+ CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = UNKNOWN_OPCODE,
+ CMSG_PERKS_PROGRAM_STATUS_REQUEST = UNKNOWN_OPCODE,
+ CMSG_PET_BATTLE_FINAL_NOTIFY = UNKNOWN_OPCODE,
+ CMSG_PET_BATTLE_INPUT = UNKNOWN_OPCODE,
+ CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = UNKNOWN_OPCODE,
+ CMSG_PET_BATTLE_QUIT_NOTIFY = UNKNOWN_OPCODE,
+ CMSG_PET_BATTLE_REPLACE_FRONT_PET = UNKNOWN_OPCODE,
+ CMSG_PET_BATTLE_REQUEST_PVP = UNKNOWN_OPCODE,
+ CMSG_PET_BATTLE_REQUEST_UPDATE = UNKNOWN_OPCODE,
+ CMSG_PET_BATTLE_REQUEST_WILD = UNKNOWN_OPCODE,
+ CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = UNKNOWN_OPCODE,
+ CMSG_PET_BATTLE_WILD_LOCATION_FAIL = UNKNOWN_OPCODE,
+ CMSG_QUERY_GARRISON_PET_NAME = UNKNOWN_OPCODE,
+ CMSG_QUERY_SCENARIO_POI = UNKNOWN_OPCODE,
+ CMSG_QUEST_SESSION_BEGIN_RESPONSE = UNKNOWN_OPCODE,
+ CMSG_QUEST_SESSION_REQUEST_START = UNKNOWN_OPCODE,
+ CMSG_QUEST_SESSION_REQUEST_STOP = UNKNOWN_OPCODE,
+ CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = UNKNOWN_OPCODE,
+ CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = UNKNOWN_OPCODE,
+ CMSG_RAF_CLAIM_ACTIVITY_REWARD = UNKNOWN_OPCODE,
+ CMSG_RAF_CLAIM_NEXT_REWARD = UNKNOWN_OPCODE,
+ CMSG_RAF_GENERATE_RECRUITMENT_LINK = UNKNOWN_OPCODE,
+ CMSG_RAF_UPDATE_RECRUITMENT_INFO = UNKNOWN_OPCODE,
+ CMSG_REMOVE_RAF_RECRUIT = UNKNOWN_OPCODE,
+ CMSG_REPLACE_TROPHY = UNKNOWN_OPCODE,
+ CMSG_REPORT_STUCK_IN_COMBAT = UNKNOWN_OPCODE,
+ CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = UNKNOWN_OPCODE,
+ CMSG_REQUEST_COVENANT_CALLINGS = UNKNOWN_OPCODE,
+ CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = UNKNOWN_OPCODE,
+ CMSG_REQUEST_LATEST_SPLASH_SCREEN = UNKNOWN_OPCODE,
+ CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = UNKNOWN_OPCODE,
+ CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = UNKNOWN_OPCODE,
+ CMSG_REQUEST_REALM_GUILD_MASTER_INFO = UNKNOWN_OPCODE,
+ CMSG_REQUEST_WEEKLY_REWARDS = UNKNOWN_OPCODE,
+ CMSG_RESET_CHALLENGE_MODE = UNKNOWN_OPCODE,
+ CMSG_RESET_CHALLENGE_MODE_CHEAT = UNKNOWN_OPCODE,
+ CMSG_REVERT_MONUMENT_APPEARANCE = UNKNOWN_OPCODE,
+ CMSG_RPE_RESET_CHARACTER = UNKNOWN_OPCODE,
+ CMSG_SAVE_PERSONAL_EMBLEM = UNKNOWN_OPCODE,
+ CMSG_SELL_ALL_JUNK_ITEMS = UNKNOWN_OPCODE,
+ CMSG_SEND_CHARACTER_CLUB_INVITATION = UNKNOWN_OPCODE,
+ CMSG_SEND_PING_UNIT = UNKNOWN_OPCODE,
+ CMSG_SEND_PING_WORLD_POINT = UNKNOWN_OPCODE,
+ CMSG_SET_ACHIEVEMENTS_HIDDEN = UNKNOWN_OPCODE,
+ CMSG_SET_BACKPACK_AUTOSORT_DISABLED = UNKNOWN_OPCODE,
+ CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = UNKNOWN_OPCODE,
+ CMSG_SET_BANK_AUTOSORT_DISABLED = UNKNOWN_OPCODE,
+ CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = UNKNOWN_OPCODE,
+ CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = UNKNOWN_OPCODE,
+ CMSG_SET_LOOT_SPECIALIZATION = UNKNOWN_OPCODE,
+ CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = UNKNOWN_OPCODE,
+ CMSG_SET_SAVED_INSTANCE_EXTEND = UNKNOWN_OPCODE,
+ CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = UNKNOWN_OPCODE,
+ CMSG_SET_TRADE_CURRENCY = UNKNOWN_OPCODE,
+ CMSG_SET_USING_PARTY_GARRISON = UNKNOWN_OPCODE,
+ CMSG_SET_WAR_MODE = UNKNOWN_OPCODE,
+ CMSG_SORT_BAGS = UNKNOWN_OPCODE,
+ CMSG_SORT_BANK_BAGS = UNKNOWN_OPCODE,
+ CMSG_SORT_REAGENT_BANK_BAGS = UNKNOWN_OPCODE,
+ CMSG_SPELL_EMPOWER_RELEASE = UNKNOWN_OPCODE,
+ CMSG_SPELL_EMPOWER_RESTART = UNKNOWN_OPCODE,
+ CMSG_START_CHALLENGE_MODE = UNKNOWN_OPCODE,
+ CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = UNKNOWN_OPCODE,
+ CMSG_SURRENDER_ARENA = UNKNOWN_OPCODE,
+ CMSG_TRADE_SKILL_SET_FAVORITE = UNKNOWN_OPCODE,
+ CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = UNKNOWN_OPCODE,
+ CMSG_UI_MAP_QUEST_LINES_REQUEST = UNKNOWN_OPCODE,
+ CMSG_UNLEARN_SPECIALIZATION = UNKNOWN_OPCODE,
+ CMSG_UPDATE_CRAFTING_NPC_RECIPES = UNKNOWN_OPCODE,
+ CMSG_UPGRADE_GARRISON = UNKNOWN_OPCODE,
+ CMSG_UPGRADE_RUNEFORGE_LEGENDARY = UNKNOWN_OPCODE,
};
enum OpcodeServer : uint16
@@ -1888,274 +1892,274 @@ enum OpcodeServer : uint16
SMSG_MULTIPLE_PACKETS = 0x3051,
// Deleted opcodes, here only to allow compile
- SMSG_ACCOUNT_COSMETIC_ADDED = 0xBADD,
- SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0xBADD,
- SMSG_ACCOUNT_TRANSMOG_UPDATE = 0xBADD,
- SMSG_ACTIVATE_ESSENCE_FAILED = 0xBADD,
- SMSG_ACTIVATE_SOULBIND_FAILED = 0xBADD,
- SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0xBADD,
- SMSG_ADVANCED_COMBAT_LOG = 0xBADD,
- SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0xBADD,
- SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0xBADD,
- SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0xBADD,
- SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES = 0xBADD,
- SMSG_ARENA_CLEAR_OPPONENTS = 0xBADD,
- SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0xBADD,
- SMSG_ARTIFACT_FORGE_ERROR = 0xBADD,
- SMSG_ARTIFACT_RESPEC_PROMPT = 0xBADD,
- SMSG_ARTIFACT_XP_GAIN = 0xBADD,
- SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0xBADD,
- SMSG_AUCTION_FAVORITE_LIST = 0xBADD,
- SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0xBADD,
- SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0xBADD,
- SMSG_AUCTION_LIST_BUCKETS_RESULT = 0xBADD,
- SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0xBADD,
- SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0xBADD,
- SMSG_BATTLEFIELD_STATUS_GROUP_PROPOSAL_FAILED = 0xBADD,
- SMSG_BROADCAST_SUMMON_CAST = 0xBADD,
- SMSG_BROADCAST_SUMMON_RESPONSE = 0xBADD,
- SMSG_CANCEL_PING_PIN = 0xBADD,
- SMSG_CAPTURE_POINT_REMOVED = 0xBADD,
- SMSG_CHAIN_MISSILE_BOUNCE = 0xBADD,
- SMSG_CHALLENGE_MODE_COMPLETE = 0xBADD,
- SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0xBADD,
- SMSG_CHALLENGE_MODE_RESET = 0xBADD,
- SMSG_CHALLENGE_MODE_START = 0xBADD,
- SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0xBADD,
- SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0xBADD,
- SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0xBADD,
- SMSG_CHECK_ABANDON_NPE = 0xBADD,
- SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0xBADD,
- SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0xBADD,
- SMSG_CLAIM_RAF_REWARD_RESPONSE = 0xBADD,
- SMSG_CLEAR_RESURRECT = 0xBADD,
- SMSG_CLEAR_TREASURE_PICKER_CACHE = 0xBADD,
- SMSG_CLOSE_ARTIFACT_FORGE = 0xBADD,
- SMSG_CLUB_FINDER_ERROR_MESSAGE = 0xBADD,
- SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0xBADD,
- SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0xBADD,
- SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0xBADD,
- SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0xBADD,
- SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0xBADD,
- SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0xBADD,
- SMSG_COMPLETE_SHIPMENT_RESPONSE = 0xBADD,
- SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0xBADD,
- SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0xBADD,
- SMSG_COVENANT_PREVIEW_OPEN_NPC = 0xBADD,
- SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0xBADD,
- SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0xBADD,
- SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0xBADD,
- SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0xBADD,
- SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0xBADD,
- SMSG_CRAFTING_ORDER_CREATE_RESULT = 0xBADD,
- SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0xBADD,
- SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0xBADD,
- SMSG_CRAFTING_ORDER_REJECT_RESULT = 0xBADD,
- SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0xBADD,
- SMSG_CRAFTING_ORDER_UPDATE_STATE = 0xBADD,
- SMSG_CRAFT_ENCHANT_RESULT = 0xBADD,
- SMSG_CREATE_SHIPMENT_RESPONSE = 0xBADD,
- SMSG_CREATOR_VISUALS_OVERRIDE = 0xBADD,
- SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0xBADD,
- SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0xBADD,
- SMSG_DISPLAY_WORLD_TEXT = 0xBADD,
- SMSG_DISPLAY_WORLD_TEXT_ON_TARGET = 0xBADD,
- SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0xBADD,
- SMSG_FLUSH_COMBAT_LOG_FILE = 0xBADD,
- SMSG_FORCE_ANIMATIONS = 0xBADD,
- SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0xBADD,
- SMSG_GAIN_MAW_POWER = 0xBADD,
- SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0xBADD,
- SMSG_GARRISON_ADD_EVENT = 0xBADD,
- SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0xBADD,
- SMSG_GARRISON_ADD_MISSION_RESULT = 0xBADD,
- SMSG_GARRISON_ADD_SPEC_GROUPS = 0xBADD,
- SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES = 0xBADD,
- SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0xBADD,
- SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT = 0xBADD,
- SMSG_GARRISON_BUILDING_ACTIVATED = 0xBADD,
- SMSG_GARRISON_BUILDING_REMOVED = 0xBADD,
- SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0xBADD,
- SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT = 0xBADD,
- SMSG_GARRISON_CLEAR_COLLECTION = 0xBADD,
- SMSG_GARRISON_CLEAR_EVENT_LIST = 0xBADD,
- SMSG_GARRISON_CLEAR_SPEC_GROUPS = 0xBADD,
- SMSG_GARRISON_COLLECTION_REMOVE_ENTRY = 0xBADD,
- SMSG_GARRISON_COLLECTION_UPDATE_ENTRY = 0xBADD,
- SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT = 0xBADD,
- SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0xBADD,
- SMSG_GARRISON_CREATE_RESULT = 0xBADD,
- SMSG_GARRISON_DELETE_MISSION_RESULT = 0xBADD,
- SMSG_GARRISON_DELETE_RESULT = 0xBADD,
- SMSG_GARRISON_FOLLOWER_ACTIVATIONS_SET = 0xBADD,
- SMSG_GARRISON_FOLLOWER_CHANGED_FLAGS = 0xBADD,
- SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL = 0xBADD,
- SMSG_GARRISON_FOLLOWER_CHANGED_QUALITY = 0xBADD,
- SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0xBADD,
- SMSG_GARRISON_FOLLOWER_FATIGUE_CLEARED = 0xBADD,
- SMSG_GARRISON_GENERATE_FOLLOWERS_RESULT = 0xBADD,
- SMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO_RESULT = 0xBADD,
- SMSG_GARRISON_GET_RECALL_PORTAL_LAST_USED_TIME_RESULT = 0xBADD,
- SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE = 0xBADD,
- SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0xBADD,
- SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0xBADD,
- SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT = 0xBADD,
- SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0xBADD,
- SMSG_GARRISON_MAP_DATA_RESPONSE = 0xBADD,
- SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT = 0xBADD,
- SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE = 0xBADD,
- SMSG_GARRISON_MISSION_START_CONDITION_UPDATE = 0xBADD,
- SMSG_GARRISON_OPEN_CRAFTER = 0xBADD,
- SMSG_GARRISON_OPEN_RECRUITMENT_NPC = 0xBADD,
- SMSG_GARRISON_PLACE_BUILDING_RESULT = 0xBADD,
- SMSG_GARRISON_PLOT_PLACED = 0xBADD,
- SMSG_GARRISON_PLOT_REMOVED = 0xBADD,
- SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT = 0xBADD,
- SMSG_GARRISON_REMOTE_INFO = 0xBADD,
- SMSG_GARRISON_REMOVE_EVENT = 0xBADD,
- SMSG_GARRISON_REMOVE_FOLLOWER_ABILITY_RESULT = 0xBADD,
- SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT = 0xBADD,
- SMSG_GARRISON_REMOVE_FOLLOWER_RESULT = 0xBADD,
- SMSG_GARRISON_RENAME_FOLLOWER_RESULT = 0xBADD,
- SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT = 0xBADD,
- SMSG_GARRISON_RESEARCH_TALENT_RESULT = 0xBADD,
- SMSG_GARRISON_RESET_TALENT_TREE = 0xBADD,
- SMSG_GARRISON_RESET_TALENT_TREE_SOCKET_DATA = 0xBADD,
- SMSG_GARRISON_START_MISSION_RESULT = 0xBADD,
- SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE = 0xBADD,
- SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH = 0xBADD,
- SMSG_GARRISON_TALENT_COMPLETED = 0xBADD,
- SMSG_GARRISON_TALENT_REMOVED = 0xBADD,
- SMSG_GARRISON_TALENT_REMOVE_SOCKET_DATA = 0xBADD,
- SMSG_GARRISON_TALENT_UPDATE_SOCKET_DATA = 0xBADD,
- SMSG_GARRISON_TALENT_WORLD_QUEST_UNLOCKS_RESPONSE = 0xBADD,
- SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0xBADD,
- SMSG_GARRISON_UPDATE_FOLLOWER = 0xBADD,
- SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS = 0xBADD,
- SMSG_GARRISON_UPDATE_MISSION_CHEAT_RESULT = 0xBADD,
- SMSG_GARRISON_UPGRADE_RESULT = 0xBADD,
- SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0xBADD,
- SMSG_GET_GARRISON_INFO_RESULT = 0xBADD,
- SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0xBADD,
- SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0xBADD,
- SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0xBADD,
- SMSG_GET_SHIPMENT_INFO_RESPONSE = 0xBADD,
- SMSG_GET_TROPHY_LIST_RESPONSE = 0xBADD,
- SMSG_GOSSIP_REFRESH_OPTIONS = 0xBADD,
- SMSG_GUILD_EVENT_STATUS_CHANGE = 0xBADD,
- SMSG_ITEM_INTERACTION_COMPLETE = 0xBADD,
- SMSG_LEVEL_LINKING_RESULT = 0xBADD,
- SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0xBADD,
- SMSG_MEETING_STONE_FAILED = 0xBADD,
- SMSG_MOVE_ADD_IMPULSE = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_BANKING_RATE = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_MAX_VEL = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION = 0xBADD,
- SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD = 0xBADD,
- SMSG_MOVE_SET_CAN_ADV_FLY = 0xBADD,
- SMSG_MOVE_UNSET_CAN_ADV_FLY = 0xBADD,
- SMSG_MOVE_UPDATE_ADD_IMPULSE = 0xBADD,
- SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0xBADD,
- SMSG_MULTI_FLOOR_NEW_FLOOR = 0xBADD,
- SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0xBADD,
- SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0xBADD,
- SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0xBADD,
- SMSG_MYTHIC_PLUS_SEASON_DATA = 0xBADD,
- SMSG_OPEN_ARTIFACT_FORGE = 0xBADD,
- SMSG_OPEN_SHIPMENT_NPC_RESULT = 0xBADD,
- SMSG_PAST_TIME_EVENTS = 0xBADD,
- SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0xBADD,
- SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0xBADD,
- SMSG_PERKS_PROGRAM_DISABLED = 0xBADD,
- SMSG_PERKS_PROGRAM_RESULT = 0xBADD,
- SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0xBADD,
- SMSG_PET_BATTLE_CHAT_RESTRICTED = 0xBADD,
- SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0xBADD,
- SMSG_PET_BATTLE_FINALIZE_LOCATION = 0xBADD,
- SMSG_PET_BATTLE_FINAL_ROUND = 0xBADD,
- SMSG_PET_BATTLE_FINISHED = 0xBADD,
- SMSG_PET_BATTLE_FIRST_ROUND = 0xBADD,
- SMSG_PET_BATTLE_INITIAL_UPDATE = 0xBADD,
- SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0xBADD,
- SMSG_PET_BATTLE_PVP_CHALLENGE = 0xBADD,
- SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0xBADD,
- SMSG_PET_BATTLE_QUEUE_STATUS = 0xBADD,
- SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0xBADD,
- SMSG_PET_BATTLE_REQUEST_FAILED = 0xBADD,
- SMSG_PET_BATTLE_ROUND_RESULT = 0xBADD,
- SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0xBADD,
- SMSG_PLAYER_AZERITE_ITEM_GAINS = 0xBADD,
- SMSG_PLAYER_CHOICE_CLEAR = 0xBADD,
- SMSG_PLAYER_CHOICE_DISPLAY_ERROR = 0xBADD,
- SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = 0xBADD,
- SMSG_PLAYER_SAVE_PERSONAL_EMBLEM = 0xBADD,
- SMSG_PLAYER_SHOW_PARTY_POSE_UI = 0xBADD,
- SMSG_PLAYER_SHOW_UI_EVENT_TOAST = 0xBADD,
- SMSG_PLAY_TIME_WARNING = 0xBADD,
- SMSG_PROFESSION_GOSSIP = 0xBADD,
- SMSG_PVP_MATCH_COMPLETE = 0xBADD,
- SMSG_PVP_MATCH_SET_STATE = 0xBADD,
- SMSG_PVP_MATCH_STATISTICS = 0xBADD,
- SMSG_PVP_TIER_RECORD = 0xBADD,
- SMSG_QUERY_GARRISON_PET_NAME_RESPONSE = 0xBADD,
- SMSG_QUERY_GUILD_FOLLOW_INFO_RESPONSE = 0xBADD,
- SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0xBADD,
- SMSG_QUEST_SESSION_INFO_RESPONSE = 0xBADD,
- SMSG_QUEST_SESSION_READY_CHECK = 0xBADD,
- SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0xBADD,
- SMSG_QUEST_SESSION_RESULT = 0xBADD,
- SMSG_RAF_ACCOUNT_INFO = 0xBADD,
- SMSG_RAF_ACTIVITY_STATE_CHANGED = 0xBADD,
- SMSG_RAF_DEBUG_FRIEND_MONTHS = 0xBADD,
- SMSG_RECEIVE_PING_UNIT = 0xBADD,
- SMSG_RECEIVE_PING_WORLD_POINT = 0xBADD,
- SMSG_RECRAFT_ITEM_RESULT = 0xBADD,
- SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0xBADD,
- SMSG_REPLACE_TROPHY_RESPONSE = 0xBADD,
- SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0xBADD,
- SMSG_RESPONSE_PERK_PENDING_REWARDS = 0xBADD,
- SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0xBADD,
- SMSG_RESTART_GLOBAL_COOLDOWN = 0xBADD,
- SMSG_RESTRICTED_ACCOUNT_WARNING = 0xBADD,
- SMSG_RETURNING_PLAYER_PROMPT = 0xBADD,
- SMSG_RETURN_APPLICANT_LIST = 0xBADD,
- SMSG_RETURN_RECRUITING_CLUBS = 0xBADD,
- SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0xBADD,
- SMSG_SEASON_INFO = 0xBADD,
- SMSG_SETUP_COMBAT_LOG_FILE_FLUSH = 0xBADD,
- SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0xBADD,
- SMSG_SET_SHIPMENT_READY_RESPONSE = 0xBADD,
- SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0xBADD,
- SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0xBADD,
- SMSG_SPELL_EMPOWER_SET_STAGE = 0xBADD,
- SMSG_SPELL_EMPOWER_START = 0xBADD,
- SMSG_SPELL_EMPOWER_UPDATE = 0xBADD,
- SMSG_SPLASH_SCREEN_SHOW_LATEST = 0xBADD,
- SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0xBADD,
- SMSG_STOP_TIMER = 0xBADD,
- SMSG_TOTEM_DURATION_CHANGED = 0xBADD,
- SMSG_TOTEM_REMOVED = 0xBADD,
- SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0xBADD,
- SMSG_UPDATE_CAPTURE_POINT = 0xBADD,
- SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0xBADD,
- SMSG_UPDATE_DAILY_MISSION_COUNTER = 0xBADD,
- SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0xBADD,
- SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0xBADD,
- SMSG_WEEKLY_REWARDS_RESULT = 0xBADD,
- SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0xBADD,
- SMSG_XP_AWARDED_FROM_CURRENCY = 0xBADD
+ SMSG_ACCOUNT_COSMETIC_ADDED = UNKNOWN_OPCODE,
+ SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = UNKNOWN_OPCODE,
+ SMSG_ACCOUNT_TRANSMOG_UPDATE = UNKNOWN_OPCODE,
+ SMSG_ACTIVATE_ESSENCE_FAILED = UNKNOWN_OPCODE,
+ SMSG_ACTIVATE_SOULBIND_FAILED = UNKNOWN_OPCODE,
+ SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = UNKNOWN_OPCODE,
+ SMSG_ADVANCED_COMBAT_LOG = UNKNOWN_OPCODE,
+ SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = UNKNOWN_OPCODE,
+ SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = UNKNOWN_OPCODE,
+ SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES = UNKNOWN_OPCODE,
+ SMSG_ARENA_CLEAR_OPPONENTS = UNKNOWN_OPCODE,
+ SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = UNKNOWN_OPCODE,
+ SMSG_ARTIFACT_FORGE_ERROR = UNKNOWN_OPCODE,
+ SMSG_ARTIFACT_RESPEC_PROMPT = UNKNOWN_OPCODE,
+ SMSG_ARTIFACT_XP_GAIN = UNKNOWN_OPCODE,
+ SMSG_AUCTION_DISABLE_NEW_POSTINGS = UNKNOWN_OPCODE,
+ SMSG_AUCTION_FAVORITE_LIST = UNKNOWN_OPCODE,
+ SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = UNKNOWN_OPCODE,
+ SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = UNKNOWN_OPCODE,
+ SMSG_AUCTION_LIST_BUCKETS_RESULT = UNKNOWN_OPCODE,
+ SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = UNKNOWN_OPCODE,
+ SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = UNKNOWN_OPCODE,
+ SMSG_BATTLEFIELD_STATUS_GROUP_PROPOSAL_FAILED = UNKNOWN_OPCODE,
+ SMSG_BROADCAST_SUMMON_CAST = UNKNOWN_OPCODE,
+ SMSG_BROADCAST_SUMMON_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_CANCEL_PING_PIN = UNKNOWN_OPCODE,
+ SMSG_CAPTURE_POINT_REMOVED = UNKNOWN_OPCODE,
+ SMSG_CHAIN_MISSILE_BOUNCE = UNKNOWN_OPCODE,
+ SMSG_CHALLENGE_MODE_COMPLETE = UNKNOWN_OPCODE,
+ SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = UNKNOWN_OPCODE,
+ SMSG_CHALLENGE_MODE_RESET = UNKNOWN_OPCODE,
+ SMSG_CHALLENGE_MODE_START = UNKNOWN_OPCODE,
+ SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = UNKNOWN_OPCODE,
+ SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_CHAT_REGIONAL_SERVICE_STATUS = UNKNOWN_OPCODE,
+ SMSG_CHECK_ABANDON_NPE = UNKNOWN_OPCODE,
+ SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = UNKNOWN_OPCODE,
+ SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = UNKNOWN_OPCODE,
+ SMSG_CLAIM_RAF_REWARD_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_CLEAR_RESURRECT = UNKNOWN_OPCODE,
+ SMSG_CLEAR_TREASURE_PICKER_CACHE = UNKNOWN_OPCODE,
+ SMSG_CLOSE_ARTIFACT_FORGE = UNKNOWN_OPCODE,
+ SMSG_CLUB_FINDER_ERROR_MESSAGE = UNKNOWN_OPCODE,
+ SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = UNKNOWN_OPCODE,
+ SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = UNKNOWN_OPCODE,
+ SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = UNKNOWN_OPCODE,
+ SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = UNKNOWN_OPCODE,
+ SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_COMPLETE_SHIPMENT_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = UNKNOWN_OPCODE,
+ SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_COVENANT_PREVIEW_OPEN_NPC = UNKNOWN_OPCODE,
+ SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = UNKNOWN_OPCODE,
+ SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_CRAFTING_ORDER_CANCEL_RESULT = UNKNOWN_OPCODE,
+ SMSG_CRAFTING_ORDER_CLAIM_RESULT = UNKNOWN_OPCODE,
+ SMSG_CRAFTING_ORDER_CRAFT_RESULT = UNKNOWN_OPCODE,
+ SMSG_CRAFTING_ORDER_CREATE_RESULT = UNKNOWN_OPCODE,
+ SMSG_CRAFTING_ORDER_FULFILL_RESULT = UNKNOWN_OPCODE,
+ SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_CRAFTING_ORDER_REJECT_RESULT = UNKNOWN_OPCODE,
+ SMSG_CRAFTING_ORDER_RELEASE_RESULT = UNKNOWN_OPCODE,
+ SMSG_CRAFTING_ORDER_UPDATE_STATE = UNKNOWN_OPCODE,
+ SMSG_CRAFT_ENCHANT_RESULT = UNKNOWN_OPCODE,
+ SMSG_CREATE_SHIPMENT_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_CREATOR_VISUALS_OVERRIDE = UNKNOWN_OPCODE,
+ SMSG_DELETE_EXPIRED_MISSIONS_RESULT = UNKNOWN_OPCODE,
+ SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = UNKNOWN_OPCODE,
+ SMSG_DISPLAY_WORLD_TEXT = UNKNOWN_OPCODE,
+ SMSG_DISPLAY_WORLD_TEXT_ON_TARGET = UNKNOWN_OPCODE,
+ SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = UNKNOWN_OPCODE,
+ SMSG_FLUSH_COMBAT_LOG_FILE = UNKNOWN_OPCODE,
+ SMSG_FORCE_ANIMATIONS = UNKNOWN_OPCODE,
+ SMSG_FORCE_RANDOM_TRANSMOG_TOAST = UNKNOWN_OPCODE,
+ SMSG_GAIN_MAW_POWER = UNKNOWN_OPCODE,
+ SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = UNKNOWN_OPCODE,
+ SMSG_GARRISON_ADD_EVENT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_ADD_FOLLOWER_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_ADD_MISSION_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_ADD_SPEC_GROUPS = UNKNOWN_OPCODE,
+ SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES = UNKNOWN_OPCODE,
+ SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_BUILDING_ACTIVATED = UNKNOWN_OPCODE,
+ SMSG_GARRISON_BUILDING_REMOVED = UNKNOWN_OPCODE,
+ SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_CLEAR_COLLECTION = UNKNOWN_OPCODE,
+ SMSG_GARRISON_CLEAR_EVENT_LIST = UNKNOWN_OPCODE,
+ SMSG_GARRISON_CLEAR_SPEC_GROUPS = UNKNOWN_OPCODE,
+ SMSG_GARRISON_COLLECTION_REMOVE_ENTRY = UNKNOWN_OPCODE,
+ SMSG_GARRISON_COLLECTION_UPDATE_ENTRY = UNKNOWN_OPCODE,
+ SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_COMPLETE_MISSION_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_CREATE_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_DELETE_MISSION_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_DELETE_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_FOLLOWER_ACTIVATIONS_SET = UNKNOWN_OPCODE,
+ SMSG_GARRISON_FOLLOWER_CHANGED_FLAGS = UNKNOWN_OPCODE,
+ SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL = UNKNOWN_OPCODE,
+ SMSG_GARRISON_FOLLOWER_CHANGED_QUALITY = UNKNOWN_OPCODE,
+ SMSG_GARRISON_FOLLOWER_CHANGED_XP = UNKNOWN_OPCODE,
+ SMSG_GARRISON_FOLLOWER_FATIGUE_CLEARED = UNKNOWN_OPCODE,
+ SMSG_GARRISON_GENERATE_FOLLOWERS_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_GET_RECALL_PORTAL_LAST_USED_TIME_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_MAP_DATA_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_GARRISON_MISSION_START_CONDITION_UPDATE = UNKNOWN_OPCODE,
+ SMSG_GARRISON_OPEN_CRAFTER = UNKNOWN_OPCODE,
+ SMSG_GARRISON_OPEN_RECRUITMENT_NPC = UNKNOWN_OPCODE,
+ SMSG_GARRISON_PLACE_BUILDING_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_PLOT_PLACED = UNKNOWN_OPCODE,
+ SMSG_GARRISON_PLOT_REMOVED = UNKNOWN_OPCODE,
+ SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_REMOTE_INFO = UNKNOWN_OPCODE,
+ SMSG_GARRISON_REMOVE_EVENT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_REMOVE_FOLLOWER_ABILITY_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_REMOVE_FOLLOWER_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_RENAME_FOLLOWER_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_RESEARCH_TALENT_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_RESET_TALENT_TREE = UNKNOWN_OPCODE,
+ SMSG_GARRISON_RESET_TALENT_TREE_SOCKET_DATA = UNKNOWN_OPCODE,
+ SMSG_GARRISON_START_MISSION_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH = UNKNOWN_OPCODE,
+ SMSG_GARRISON_TALENT_COMPLETED = UNKNOWN_OPCODE,
+ SMSG_GARRISON_TALENT_REMOVED = UNKNOWN_OPCODE,
+ SMSG_GARRISON_TALENT_REMOVE_SOCKET_DATA = UNKNOWN_OPCODE,
+ SMSG_GARRISON_TALENT_UPDATE_SOCKET_DATA = UNKNOWN_OPCODE,
+ SMSG_GARRISON_TALENT_WORLD_QUEST_UNLOCKS_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_UPDATE_FOLLOWER = UNKNOWN_OPCODE,
+ SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS = UNKNOWN_OPCODE,
+ SMSG_GARRISON_UPDATE_MISSION_CHEAT_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_UPGRADE_RESULT = UNKNOWN_OPCODE,
+ SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = UNKNOWN_OPCODE,
+ SMSG_GET_GARRISON_INFO_RESULT = UNKNOWN_OPCODE,
+ SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_GET_SHIPMENT_INFO_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_GET_TROPHY_LIST_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_GOSSIP_REFRESH_OPTIONS = UNKNOWN_OPCODE,
+ SMSG_GUILD_EVENT_STATUS_CHANGE = UNKNOWN_OPCODE,
+ SMSG_ITEM_INTERACTION_COMPLETE = UNKNOWN_OPCODE,
+ SMSG_LEVEL_LINKING_RESULT = UNKNOWN_OPCODE,
+ SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = UNKNOWN_OPCODE,
+ SMSG_MEETING_STONE_FAILED = UNKNOWN_OPCODE,
+ SMSG_MOVE_ADD_IMPULSE = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_BANKING_RATE = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_MAX_VEL = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD = UNKNOWN_OPCODE,
+ SMSG_MOVE_SET_CAN_ADV_FLY = UNKNOWN_OPCODE,
+ SMSG_MOVE_UNSET_CAN_ADV_FLY = UNKNOWN_OPCODE,
+ SMSG_MOVE_UPDATE_ADD_IMPULSE = UNKNOWN_OPCODE,
+ SMSG_MULTI_FLOOR_LEAVE_FLOOR = UNKNOWN_OPCODE,
+ SMSG_MULTI_FLOOR_NEW_FLOOR = UNKNOWN_OPCODE,
+ SMSG_MYTHIC_PLUS_ALL_MAP_STATS = UNKNOWN_OPCODE,
+ SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = UNKNOWN_OPCODE,
+ SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = UNKNOWN_OPCODE,
+ SMSG_MYTHIC_PLUS_SEASON_DATA = UNKNOWN_OPCODE,
+ SMSG_OPEN_ARTIFACT_FORGE = UNKNOWN_OPCODE,
+ SMSG_OPEN_SHIPMENT_NPC_RESULT = UNKNOWN_OPCODE,
+ SMSG_PAST_TIME_EVENTS = UNKNOWN_OPCODE,
+ SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = UNKNOWN_OPCODE,
+ SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = UNKNOWN_OPCODE,
+ SMSG_PERKS_PROGRAM_DISABLED = UNKNOWN_OPCODE,
+ SMSG_PERKS_PROGRAM_RESULT = UNKNOWN_OPCODE,
+ SMSG_PERKS_PROGRAM_VENDOR_UPDATE = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_CHAT_RESTRICTED = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_FINALIZE_LOCATION = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_FINAL_ROUND = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_FINISHED = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_FIRST_ROUND = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_INITIAL_UPDATE = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_PVP_CHALLENGE = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_QUEUE_STATUS = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_REPLACEMENTS_MADE = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_REQUEST_FAILED = UNKNOWN_OPCODE,
+ SMSG_PET_BATTLE_ROUND_RESULT = UNKNOWN_OPCODE,
+ SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = UNKNOWN_OPCODE,
+ SMSG_PLAYER_AZERITE_ITEM_GAINS = UNKNOWN_OPCODE,
+ SMSG_PLAYER_CHOICE_CLEAR = UNKNOWN_OPCODE,
+ SMSG_PLAYER_CHOICE_DISPLAY_ERROR = UNKNOWN_OPCODE,
+ SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = UNKNOWN_OPCODE,
+ SMSG_PLAYER_SAVE_PERSONAL_EMBLEM = UNKNOWN_OPCODE,
+ SMSG_PLAYER_SHOW_PARTY_POSE_UI = UNKNOWN_OPCODE,
+ SMSG_PLAYER_SHOW_UI_EVENT_TOAST = UNKNOWN_OPCODE,
+ SMSG_PLAY_TIME_WARNING = UNKNOWN_OPCODE,
+ SMSG_PROFESSION_GOSSIP = UNKNOWN_OPCODE,
+ SMSG_PVP_MATCH_COMPLETE = UNKNOWN_OPCODE,
+ SMSG_PVP_MATCH_SET_STATE = UNKNOWN_OPCODE,
+ SMSG_PVP_MATCH_STATISTICS = UNKNOWN_OPCODE,
+ SMSG_PVP_TIER_RECORD = UNKNOWN_OPCODE,
+ SMSG_QUERY_GARRISON_PET_NAME_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_QUERY_GUILD_FOLLOW_INFO_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_QUEST_SESSION_INFO_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_QUEST_SESSION_READY_CHECK = UNKNOWN_OPCODE,
+ SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_QUEST_SESSION_RESULT = UNKNOWN_OPCODE,
+ SMSG_RAF_ACCOUNT_INFO = UNKNOWN_OPCODE,
+ SMSG_RAF_ACTIVITY_STATE_CHANGED = UNKNOWN_OPCODE,
+ SMSG_RAF_DEBUG_FRIEND_MONTHS = UNKNOWN_OPCODE,
+ SMSG_RECEIVE_PING_UNIT = UNKNOWN_OPCODE,
+ SMSG_RECEIVE_PING_WORLD_POINT = UNKNOWN_OPCODE,
+ SMSG_RECRAFT_ITEM_RESULT = UNKNOWN_OPCODE,
+ SMSG_REMOVE_SPELL_FROM_ACTION_BAR = UNKNOWN_OPCODE,
+ SMSG_REPLACE_TROPHY_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_RESET_LAST_LOADED_CONFIG_CVARS = UNKNOWN_OPCODE,
+ SMSG_RESPONSE_PERK_PENDING_REWARDS = UNKNOWN_OPCODE,
+ SMSG_RESPONSE_PERK_RECENT_PURCHASES = UNKNOWN_OPCODE,
+ SMSG_RESTART_GLOBAL_COOLDOWN = UNKNOWN_OPCODE,
+ SMSG_RESTRICTED_ACCOUNT_WARNING = UNKNOWN_OPCODE,
+ SMSG_RETURNING_PLAYER_PROMPT = UNKNOWN_OPCODE,
+ SMSG_RETURN_APPLICANT_LIST = UNKNOWN_OPCODE,
+ SMSG_RETURN_RECRUITING_CLUBS = UNKNOWN_OPCODE,
+ SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = UNKNOWN_OPCODE,
+ SMSG_SEASON_INFO = UNKNOWN_OPCODE,
+ SMSG_SETUP_COMBAT_LOG_FILE_FLUSH = UNKNOWN_OPCODE,
+ SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = UNKNOWN_OPCODE,
+ SMSG_SET_SHIPMENT_READY_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = UNKNOWN_OPCODE,
+ SMSG_SHIPMENT_FACTION_UPDATE_RESULT = UNKNOWN_OPCODE,
+ SMSG_SPELL_EMPOWER_SET_STAGE = UNKNOWN_OPCODE,
+ SMSG_SPELL_EMPOWER_START = UNKNOWN_OPCODE,
+ SMSG_SPELL_EMPOWER_UPDATE = UNKNOWN_OPCODE,
+ SMSG_SPLASH_SCREEN_SHOW_LATEST = UNKNOWN_OPCODE,
+ SMSG_STARTER_BUILD_ACTIVATE_FAILED = UNKNOWN_OPCODE,
+ SMSG_STOP_TIMER = UNKNOWN_OPCODE,
+ SMSG_TOTEM_DURATION_CHANGED = UNKNOWN_OPCODE,
+ SMSG_TOTEM_REMOVED = UNKNOWN_OPCODE,
+ SMSG_UI_MAP_QUEST_LINES_RESPONSE = UNKNOWN_OPCODE,
+ SMSG_UPDATE_CAPTURE_POINT = UNKNOWN_OPCODE,
+ SMSG_UPDATE_CRAFTING_NPC_RECIPES = UNKNOWN_OPCODE,
+ SMSG_UPDATE_DAILY_MISSION_COUNTER = UNKNOWN_OPCODE,
+ SMSG_UPDATE_RECENT_PLAYER_GUIDS = UNKNOWN_OPCODE,
+ SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = UNKNOWN_OPCODE,
+ SMSG_WEEKLY_REWARDS_RESULT = UNKNOWN_OPCODE,
+ SMSG_WEEKLY_REWARD_CLAIM_RESULT = UNKNOWN_OPCODE,
+ SMSG_XP_AWARDED_FROM_CURRENCY = UNKNOWN_OPCODE
};
-inline bool IsInstanceOnlyOpcode(uint32 opcode)
+constexpr bool IsInstanceOnlyOpcode(uint32 opcode)
{
switch (opcode)
{
@@ -2196,67 +2200,53 @@ enum PacketProcessing
class WorldPacket;
class WorldSession;
-class OpcodeHandler
+struct ClientOpcodeHandler final
{
-public:
- OpcodeHandler(char const* name, SessionStatus status) : Name(name), Status(status) { }
- virtual ~OpcodeHandler() { }
+ using HandlerFunction = void (*)(WorldSession* session, WorldPacket& packet);
char const* Name;
SessionStatus Status;
-};
-
-class ClientOpcodeHandler : public OpcodeHandler
-{
-public:
- ClientOpcodeHandler(char const* name, SessionStatus status, PacketProcessing processing)
- : OpcodeHandler(name, status), ProcessingPlace(processing) { }
-
- virtual void Call(WorldSession* session, WorldPacket& packet) const = 0;
-
+ HandlerFunction Call;
PacketProcessing ProcessingPlace;
};
-class ServerOpcodeHandler : public OpcodeHandler
+struct ServerOpcodeHandler final
{
-public:
- ServerOpcodeHandler(char const* name, SessionStatus status, ConnectionType conIdx)
- : OpcodeHandler(name, status), ConnectionIndex(conIdx) { }
-
+ char const* Name;
+ SessionStatus Status;
ConnectionType ConnectionIndex;
};
class OpcodeTable
{
- public:
- OpcodeTable();
-
- OpcodeTable(OpcodeTable const&) = delete;
- OpcodeTable& operator=(OpcodeTable const&) = delete;
+public:
+ OpcodeTable();
+ ~OpcodeTable();
- ~OpcodeTable();
+ void Initialize();
- void Initialize();
+ ClientOpcodeHandler const* operator[](OpcodeClient index) const
+ {
+ return _internalTableClient[index - MIN_CMSG_OPCODE_NUMBER].get();
+ }
- ClientOpcodeHandler const* operator[](OpcodeClient index) const
- {
- return _internalTableClient[index];
- }
+ ServerOpcodeHandler const* operator[](OpcodeServer index) const
+ {
+ return _internalTableServer[index - MIN_SMSG_OPCODE_NUMBER].get();
+ }
- ServerOpcodeHandler const* operator[](OpcodeServer index) const
- {
- return _internalTableServer[index];
- }
+private:
+ bool ValidateClientOpcode(OpcodeClient opcode, char const* name) const;
+ void ValidateAndSetClientOpcode(OpcodeClient opcode, char const* name, SessionStatus status, ClientOpcodeHandler::HandlerFunction call, PacketProcessing processing);
- private:
- bool ValidateClientOpcode(OpcodeClient opcode, char const* name) const;
- template<typename Handler, Handler HandlerFunction>
- void ValidateAndSetClientOpcode(OpcodeClient opcode, char const* name, SessionStatus status, PacketProcessing processing);
+ bool ValidateServerOpcode(OpcodeServer opcode, char const* name, ConnectionType conIdx) const;
+ void ValidateAndSetServerOpcode(OpcodeServer opcode, char const* name, SessionStatus status, ConnectionType conIdx);
- void ValidateAndSetServerOpcode(OpcodeServer opcode, char const* name, SessionStatus status, ConnectionType conIdx);
+ void InitializeClientOpcodes();
+ void InitializeServerOpcodes();
- ClientOpcodeHandler* _internalTableClient[NUM_OPCODE_HANDLERS];
- ServerOpcodeHandler* _internalTableServer[NUM_OPCODE_HANDLERS];
+ std::array<std::unique_ptr<ClientOpcodeHandler>, NUM_CMSG_OPCODES> _internalTableClient;
+ std::array<std::unique_ptr<ServerOpcodeHandler>, NUM_SMSG_OPCODES> _internalTableServer;
};
extern OpcodeTable opcodeTable;
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index 42d28130601..d8c4d2839c9 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -210,19 +210,14 @@ std::string WorldSession::GetPlayerInfo() const
/// Send a packet to the client
void WorldSession::SendPacket(WorldPacket const* packet, bool forced /*= false*/)
{
- if (packet->GetOpcode() == NULL_OPCODE)
+ if (packet->GetOpcode() < MIN_SMSG_OPCODE_NUMBER || packet->GetOpcode() > MAX_SMSG_OPCODE_NUMBER)
{
- TC_LOG_ERROR("network.opcode", "Prevented sending of NULL_OPCODE to {}", GetPlayerInfo());
- return;
- }
- else if (packet->GetOpcode() == UNKNOWN_OPCODE)
- {
- TC_LOG_ERROR("network.opcode", "Prevented sending of UNKNOWN_OPCODE to {}", GetPlayerInfo());
+ char const* specialName = packet->GetOpcode() == UNKNOWN_OPCODE ? "UNKNOWN_OPCODE" : "INVALID_OPCODE";
+ TC_LOG_ERROR("network.opcode", "Prevented sending of {} (0x{:04X}) to {}", specialName, packet->GetOpcode(), GetPlayerInfo());
return;
}
ServerOpcodeHandler const* handler = opcodeTable[static_cast<OpcodeServer>(packet->GetOpcode())];
-
if (!handler)
{
TC_LOG_ERROR("network.opcode", "Prevented sending of opcode {} with non existing handler to {}", packet->GetOpcode(), GetPlayerInfo());
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index 7a3a1841853..6aa746ebef7 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -362,7 +362,7 @@ WorldSocket::ReadDataHandlerResult WorldSocket::ReadDataHandler()
WorldPacket packet(std::move(_packetBuffer), GetConnectionType());
OpcodeClient opcode = packet.read<OpcodeClient>();
- if (uint32(opcode) >= uint32(NUM_OPCODE_HANDLERS))
+ if (opcode < MIN_CMSG_OPCODE_NUMBER || opcode > MAX_CMSG_OPCODE_NUMBER)
{
TC_LOG_ERROR("network", "WorldSocket::ReadHeaderHandler(): client {} sent wrong opcode (opcode: {})",
GetRemoteIpAddress().to_string(), uint32(opcode));
@@ -485,7 +485,7 @@ WorldSocket::ReadDataHandlerResult WorldSocket::ReadDataHandler()
return ReadDataHandlerResult::Error;
}
- OpcodeHandler const* handler = opcodeTable[opcode];
+ ClientOpcodeHandler const* handler = opcodeTable[opcode];
if (!handler)
{
TC_LOG_ERROR("network.opcode", "No defined handler for opcode {} sent by {}", GetOpcodeNameForLogging(static_cast<OpcodeClient>(packet.GetOpcode())), _worldSession->GetPlayerInfo());