aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-03-21 21:07:23 +0100
committerShauren <shauren.trinity@gmail.com>2024-03-21 21:07:23 +0100
commitac5aee6a98be6434e1f93bf5c973701e41a4540a (patch)
tree0cb621804e753e0afd81b5230b04a41f04220a5f /src
parente99482ce9bb7918e23a104fe28305c60d28ed598 (diff)
Core: Updated to 10.2.6.53840
Diffstat (limited to 'src')
-rw-r--r--src/common/DataStores/DB2FileLoader.cpp12
-rw-r--r--src/server/bnetserver/REST/LoginHttpSession.cpp62
-rw-r--r--src/server/bnetserver/REST/LoginHttpSession.h49
-rw-r--r--src/server/bnetserver/REST/LoginRESTService.cpp28
-rw-r--r--src/server/bnetserver/REST/LoginRESTService.h14
-rw-r--r--src/server/bnetserver/Server/Session.cpp3
-rw-r--r--src/server/bnetserver/Server/SslContext.cpp33
-rw-r--r--src/server/bnetserver/Server/SslContext.h5
-rw-r--r--src/server/database/Database/Implementation/HotfixDatabase.cpp9
-rw-r--r--src/server/game/DataStores/DB2LoadInfo.h12
-rw-r--r--src/server/game/DataStores/DB2Metadata.h98
-rw-r--r--src/server/game/DataStores/DB2Structure.h4
-rw-r--r--src/server/game/Entities/Object/Object.cpp7
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp73
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h25
-rw-r--r--src/server/game/Entities/Player/Player.cpp12
-rw-r--r--src/server/game/Entities/Player/Player.h3
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp9
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h1278
-rw-r--r--src/server/game/Quests/QuestDef.h23
-rw-r--r--src/server/game/Quests/enuminfo_QuestDef.cpp51
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.cpp1
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.h1
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h1
-rw-r--r--src/server/game/Server/Packets/ClientConfigPackets.cpp10
-rw-r--r--src/server/game/Server/Packets/ClientConfigPackets.h6
-rw-r--r--src/server/game/Server/Packets/ReputationPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/ReputationPackets.h2
-rw-r--r--src/server/game/Server/Packets/ScenePackets.cpp2
-rw-r--r--src/server/game/Server/Packets/ScenePackets.h2
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp5
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h3
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp20
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h1000
-rw-r--r--src/server/shared/Networking/Http/HttpSocket.h3
-rw-r--r--src/tools/map_extractor/loadlib/DBFilesClientList.h5
37 files changed, 1594 insertions, 1279 deletions
diff --git a/src/common/DataStores/DB2FileLoader.cpp b/src/common/DataStores/DB2FileLoader.cpp
index 57ec7df6e3f..7a586178794 100644
--- a/src/common/DataStores/DB2FileLoader.cpp
+++ b/src/common/DataStores/DB2FileLoader.cpp
@@ -2076,19 +2076,23 @@ void DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo)
if (loadInfo)
{
uint32 fieldIndex = 0;
+ std::string signValidationResult;
if (!loadInfo->Meta->HasIndexFieldInData())
{
- ASSERT(!loadInfo->Fields[0].IsSigned, "ID must be unsigned in %s", source->GetFileName());
+ if (loadInfo->Fields[0].IsSigned)
+ signValidationResult += Trinity::StringFormat("ID must be unsigned in {}", source->GetFileName());
++fieldIndex;
}
for (uint32 f = 0; f < loadInfo->Meta->FieldCount; ++f)
{
- ASSERT(loadInfo->Fields[fieldIndex].IsSigned == _impl->IsSignedField(f),
- "Field %s in %s must be %s%s", loadInfo->Fields[fieldIndex].Name, source->GetFileName(), _impl->IsSignedField(f) ? "signed" : "unsigned",
- _impl->GetExpectedSignMismatchReason(f));
+ if (loadInfo->Fields[fieldIndex].IsSigned != _impl->IsSignedField(f))
+ signValidationResult += Trinity::StringFormat("Field {} in {} must be {}{}", loadInfo->Fields[fieldIndex].Name,
+ source->GetFileName(), _impl->IsSignedField(f) ? "signed" : "unsigned", _impl->GetExpectedSignMismatchReason(f));
fieldIndex += loadInfo->Meta->Fields[f].ArraySize;
}
+ if (!signValidationResult.empty())
+ throw DB2FileLoadException(std::move(signValidationResult));
}
}
diff --git a/src/server/bnetserver/REST/LoginHttpSession.cpp b/src/server/bnetserver/REST/LoginHttpSession.cpp
index 95112cb8836..aff579de7f9 100644
--- a/src/server/bnetserver/REST/LoginHttpSession.cpp
+++ b/src/server/bnetserver/REST/LoginHttpSession.cpp
@@ -23,17 +23,20 @@
namespace Battlenet
{
-LoginHttpSession::LoginHttpSession(boost::asio::ip::tcp::socket&& socket)
- : SslSocket(std::move(socket), SslContext::instance())
+template<template<typename> typename SocketImpl>
+LoginHttpSession<SocketImpl>::LoginHttpSession(boost::asio::ip::tcp::socket&& socket, LoginHttpSessionWrapper& owner)
+ : BaseSocket(std::move(socket), SslContext::instance()), _owner(owner)
{
}
-LoginHttpSession::~LoginHttpSession() = default;
+template<template<typename> typename SocketImpl>
+LoginHttpSession<SocketImpl>::~LoginHttpSession() = default;
-void LoginHttpSession::Start()
+template<template<typename> typename SocketImpl>
+void LoginHttpSession<SocketImpl>::Start()
{
- std::string ip_address = GetRemoteIpAddress().to_string();
- TC_LOG_TRACE("server.http.session", "{} Accepted connection", GetClientInfo());
+ std::string ip_address = this->GetRemoteIpAddress().to_string();
+ TC_LOG_TRACE("server.http.session", "{} Accepted connection", this->GetClientInfo());
// Verify that this IP is not in the ip_banned table
LoginDatabase.Execute(LoginDatabase.GetPreparedStatement(LOGIN_DEL_EXPIRED_IP_BANS));
@@ -41,11 +44,12 @@ void LoginHttpSession::Start()
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_IP_INFO);
stmt->setString(0, ip_address);
- _queryProcessor.AddCallback(LoginDatabase.AsyncQuery(stmt)
- .WithPreparedCallback([sess = shared_from_this()](PreparedQueryResult result) { sess->CheckIpCallback(std::move(result)); }));
+ this->_queryProcessor.AddCallback(LoginDatabase.AsyncQuery(stmt)
+ .WithPreparedCallback([sess = this->shared_from_this()](PreparedQueryResult result) { sess->CheckIpCallback(std::move(result)); }));
}
-void LoginHttpSession::CheckIpCallback(PreparedQueryResult result)
+template<template<typename> typename SocketImpl>
+void LoginHttpSession<SocketImpl>::CheckIpCallback(PreparedQueryResult result)
{
if (result)
{
@@ -60,21 +64,30 @@ void LoginHttpSession::CheckIpCallback(PreparedQueryResult result)
if (banned)
{
- TC_LOG_DEBUG("server.http.session", "{} tries to log in using banned IP!", GetClientInfo());
- CloseSocket();
+ TC_LOG_DEBUG("server.http.session", "{} tries to log in using banned IP!", this->GetClientInfo());
+ this->CloseSocket();
return;
}
}
- AsyncHandshake();
+ if constexpr (std::is_same_v<BaseSocket, Trinity::Net::Http::SslSocket<LoginHttpSession<Trinity::Net::Http::SslSocket>>>)
+ {
+ this->AsyncHandshake();
+ }
+ else
+ {
+ this->ResetHttpParser();
+ this->AsyncRead();
+ }
}
-Trinity::Net::Http::RequestHandlerResult LoginHttpSession::RequestHandler(Trinity::Net::Http::RequestContext& context)
+template<template<typename> typename SocketImpl>
+Trinity::Net::Http::RequestHandlerResult LoginHttpSession<SocketImpl>::RequestHandler(Trinity::Net::Http::RequestContext& context)
{
- return sLoginService.HandleRequest(shared_from_this(), context);
+ return sLoginService.HandleRequest(_owner.shared_from_this(), context);
}
-std::shared_ptr<Trinity::Net::Http::SessionState> LoginHttpSession::ObtainSessionState(Trinity::Net::Http::RequestContext& context) const
+std::shared_ptr<Trinity::Net::Http::SessionState> ObtainSessionState(Trinity::Net::Http::RequestContext& context, boost::asio::ip::address const& remoteAddress)
{
using namespace std::string_literals;
@@ -92,27 +105,38 @@ std::shared_ptr<Trinity::Net::Http::SessionState> LoginHttpSession::ObtainSessio
if (eq != std::string_view::npos)
name = cookie.substr(0, eq);
- return name == SESSION_ID_COOKIE;
+ return name == LoginHttpSessionWrapper::SESSION_ID_COOKIE;
});
if (sessionIdItr != cookies.end())
{
std::string_view value = sessionIdItr->substr(eq + 1);
- state = sLoginService.FindAndRefreshSessionState(value, GetRemoteIpAddress());
+ state = sLoginService.FindAndRefreshSessionState(value, remoteAddress);
}
}
if (!state)
{
- state = sLoginService.CreateNewSessionState(GetRemoteIpAddress());
+ state = sLoginService.CreateNewSessionState(remoteAddress);
std::string_view host = Trinity::Net::Http::ToStdStringView(context.request[boost::beast::http::field::host]);
if (std::size_t port = host.find(':'); port != std::string_view::npos)
host.remove_suffix(host.length() - port);
context.response.insert(boost::beast::http::field::set_cookie, Trinity::StringFormat("{}={}; Path=/bnetserver; Domain={}; Secure; HttpOnly; SameSite=None",
- SESSION_ID_COOKIE, boost::uuids::to_string(state->Id), host));
+ LoginHttpSessionWrapper::SESSION_ID_COOKIE, boost::uuids::to_string(state->Id), host));
}
return state;
}
+
+template class LoginHttpSession<Trinity::Net::Http::SslSocket>;
+template class LoginHttpSession<Trinity::Net::Http::Socket>;
+
+LoginHttpSessionWrapper::LoginHttpSessionWrapper(boost::asio::ip::tcp::socket&& socket)
+{
+ if (!SslContext::UsesDevWildcardCertificate())
+ _socket = std::make_shared<LoginHttpSession<Trinity::Net::Http::SslSocket>>(std::move(socket), *this);
+ else
+ _socket = std::make_shared<LoginHttpSession<Trinity::Net::Http::Socket>>(std::move(socket), *this);
+}
}
diff --git a/src/server/bnetserver/REST/LoginHttpSession.h b/src/server/bnetserver/REST/LoginHttpSession.h
index 2ee70d5afa5..6bd1ec113d0 100644
--- a/src/server/bnetserver/REST/LoginHttpSession.h
+++ b/src/server/bnetserver/REST/LoginHttpSession.h
@@ -18,8 +18,10 @@
#ifndef TRINITYCORE_LOGIN_HTTP_SESSION_H
#define TRINITYCORE_LOGIN_HTTP_SESSION_H
+#include "HttpSocket.h"
#include "HttpSslSocket.h"
#include "SRP6.h"
+#include <variant>
namespace Battlenet
{
@@ -28,12 +30,16 @@ struct LoginSessionState : public Trinity::Net::Http::SessionState
std::unique_ptr<Trinity::Crypto::SRP::BnetSRP6Base> Srp;
};
-class LoginHttpSession : public Trinity::Net::Http::SslSocket<LoginHttpSession>
+class LoginHttpSessionWrapper;
+std::shared_ptr<Trinity::Net::Http::SessionState> ObtainSessionState(Trinity::Net::Http::RequestContext& context, boost::asio::ip::address const& remoteAddress);
+
+template<template<typename> typename SocketImpl>
+class LoginHttpSession : public SocketImpl<LoginHttpSession<SocketImpl>>
{
-public:
- static constexpr std::string_view SESSION_ID_COOKIE = "JSESSIONID";
+ using BaseSocket = SocketImpl<LoginHttpSession<SocketImpl>>;
- explicit LoginHttpSession(boost::asio::ip::tcp::socket&& socket);
+public:
+ explicit LoginHttpSession(boost::asio::ip::tcp::socket&& socket, LoginHttpSessionWrapper& owner);
~LoginHttpSession();
void Start() override;
@@ -42,10 +48,41 @@ public:
Trinity::Net::Http::RequestHandlerResult RequestHandler(Trinity::Net::Http::RequestContext& context) override;
- LoginSessionState* GetSessionState() const { return static_cast<LoginSessionState*>(_state.get()); }
+ LoginSessionState* GetSessionState() const { return static_cast<LoginSessionState*>(this->_state.get()); }
protected:
- std::shared_ptr<Trinity::Net::Http::SessionState> ObtainSessionState(Trinity::Net::Http::RequestContext& context) const override;
+ std::shared_ptr<Trinity::Net::Http::SessionState> ObtainSessionState(Trinity::Net::Http::RequestContext& context) const override
+ {
+ return Battlenet::ObtainSessionState(context, this->GetRemoteIpAddress());
+ }
+
+ LoginHttpSessionWrapper& _owner;
+};
+
+class LoginHttpSessionWrapper : public Trinity::Net::Http::AbstractSocket, public std::enable_shared_from_this<LoginHttpSessionWrapper>
+{
+public:
+ static constexpr std::string_view SESSION_ID_COOKIE = "JSESSIONID";
+
+ explicit LoginHttpSessionWrapper(boost::asio::ip::tcp::socket&& socket);
+
+ void Start() { return std::visit([&](auto&& socket) { return socket->Start(); }, _socket); }
+ bool Update() { return std::visit([&](auto&& socket) { return socket->Update(); }, _socket); }
+ boost::asio::ip::address GetRemoteIpAddress() const { return std::visit([&](auto&& socket) { return socket->GetRemoteIpAddress(); }, _socket); }
+ bool IsOpen() const { return std::visit([&](auto&& socket) { return socket->IsOpen(); }, _socket); }
+ void CloseSocket() { return std::visit([&](auto&& socket) { return socket->CloseSocket(); }, _socket); }
+
+ void SendResponse(Trinity::Net::Http::RequestContext& context) override { return std::visit([&](auto&& socket) { return socket->SendResponse(context); }, _socket); }
+ void QueueQuery(QueryCallback&& queryCallback) override { return std::visit([&](auto&& socket) { return socket->QueueQuery(std::move(queryCallback)); }, _socket); }
+ std::string GetClientInfo() const override { return std::visit([&](auto&& socket) { return socket->GetClientInfo(); }, _socket); }
+ Optional<boost::uuids::uuid> GetSessionId() const override { return std::visit([&](auto&& socket) { return socket->GetSessionId(); }, _socket); }
+ LoginSessionState* GetSessionState() const { return std::visit([&](auto&& socket) { return socket->GetSessionState(); }, _socket); }
+
+private:
+ std::variant<
+ std::shared_ptr<LoginHttpSession<Trinity::Net::Http::SslSocket>>,
+ std::shared_ptr<LoginHttpSession<Trinity::Net::Http::Socket>>
+ > _socket;
};
}
#endif // TRINITYCORE_LOGIN_HTTP_SESSION_H
diff --git a/src/server/bnetserver/REST/LoginRESTService.cpp b/src/server/bnetserver/REST/LoginRESTService.cpp
index 7587510bafc..c9aabb248a3 100644
--- a/src/server/bnetserver/REST/LoginRESTService.cpp
+++ b/src/server/bnetserver/REST/LoginRESTService.cpp
@@ -25,6 +25,7 @@
#include "IteratorPair.h"
#include "ProtobufJSON.h"
#include "Resolver.h"
+#include "SslContext.h"
#include "Timer.h"
#include "Util.h"
@@ -43,32 +44,32 @@ bool LoginRESTService::StartNetwork(Trinity::Asio::IoContext& ioContext, std::st
using Trinity::Net::Http::RequestHandlerFlag;
- RegisterHandler(boost::beast::http::verb::get, "/bnetserver/login/", [this](std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context)
+ RegisterHandler(boost::beast::http::verb::get, "/bnetserver/login/", [this](std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context)
{
return HandleGetForm(std::move(session), context);
});
- RegisterHandler(boost::beast::http::verb::get, "/bnetserver/gameAccounts/", [](std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context)
+ RegisterHandler(boost::beast::http::verb::get, "/bnetserver/gameAccounts/", [](std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context)
{
return HandleGetGameAccounts(std::move(session), context);
});
- RegisterHandler(boost::beast::http::verb::get, "/bnetserver/portal/", [this](std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context)
+ RegisterHandler(boost::beast::http::verb::get, "/bnetserver/portal/", [this](std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context)
{
return HandleGetPortal(std::move(session), context);
});
- RegisterHandler(boost::beast::http::verb::post, "/bnetserver/login/", [this](std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context)
+ RegisterHandler(boost::beast::http::verb::post, "/bnetserver/login/", [this](std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context)
{
return HandlePostLogin(std::move(session), context);
}, RequestHandlerFlag::DoNotLogRequestContent);
- RegisterHandler(boost::beast::http::verb::post, "/bnetserver/login/srp/", [](std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context)
+ RegisterHandler(boost::beast::http::verb::post, "/bnetserver/login/srp/", [](std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context)
{
return HandlePostLoginSrpChallenge(std::move(session), context);
});
- RegisterHandler(boost::beast::http::verb::post, "/bnetserver/refreshLoginTicket/", [this](std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context)
+ RegisterHandler(boost::beast::http::verb::post, "/bnetserver/refreshLoginTicket/", [this](std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context)
{
return HandlePostRefreshLoginTicket(std::move(session), context);
});
@@ -165,17 +166,18 @@ std::string LoginRESTService::ExtractAuthorization(HttpRequest const& request)
return ticket;
}
-LoginRESTService::RequestHandlerResult LoginRESTService::HandleGetForm(std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context) const
+LoginRESTService::RequestHandlerResult LoginRESTService::HandleGetForm(std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context) const
{
JSON::Login::FormInputs form = _formInputs;
- form.set_srp_url(Trinity::StringFormat("https://{}:{}/bnetserver/login/srp/", GetHostnameForClient(session->GetRemoteIpAddress()), _port));
+ form.set_srp_url(Trinity::StringFormat("http{}://{}:{}/bnetserver/login/srp/", !SslContext::UsesDevWildcardCertificate() ? "s" : "",
+ GetHostnameForClient(session->GetRemoteIpAddress()), _port));
context.response.set(boost::beast::http::field::content_type, "application/json;charset=utf-8");
context.response.body() = ::JSON::Serialize(form);
return RequestHandlerResult::Handled;
}
-LoginRESTService::RequestHandlerResult LoginRESTService::HandleGetGameAccounts(std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context)
+LoginRESTService::RequestHandlerResult LoginRESTService::HandleGetGameAccounts(std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context)
{
std::string ticket = ExtractAuthorization(context.request);
if (ticket.empty())
@@ -224,14 +226,14 @@ LoginRESTService::RequestHandlerResult LoginRESTService::HandleGetGameAccounts(s
return RequestHandlerResult::Async;
}
-LoginRESTService::RequestHandlerResult LoginRESTService::HandleGetPortal(std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context) const
+LoginRESTService::RequestHandlerResult LoginRESTService::HandleGetPortal(std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context) const
{
context.response.set(boost::beast::http::field::content_type, "text/plain");
context.response.body() = Trinity::StringFormat("{}:{}", GetHostnameForClient(session->GetRemoteIpAddress()), sConfigMgr->GetIntDefault("BattlenetPort", 1119));
return RequestHandlerResult::Handled;
}
-LoginRESTService::RequestHandlerResult LoginRESTService::HandlePostLogin(std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context) const
+LoginRESTService::RequestHandlerResult LoginRESTService::HandlePostLogin(std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context) const
{
std::shared_ptr<JSON::Login::LoginForm> loginForm = std::make_shared<JSON::Login::LoginForm>();
if (!::JSON::Deserialize(context.request.body(), loginForm.get()))
@@ -395,7 +397,7 @@ LoginRESTService::RequestHandlerResult LoginRESTService::HandlePostLogin(std::sh
return RequestHandlerResult::Async;
}
-LoginRESTService::RequestHandlerResult LoginRESTService::HandlePostLoginSrpChallenge(std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context)
+LoginRESTService::RequestHandlerResult LoginRESTService::HandlePostLoginSrpChallenge(std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context)
{
JSON::Login::LoginForm loginForm;
if (!::JSON::Deserialize(context.request.body(), &loginForm))
@@ -482,7 +484,7 @@ LoginRESTService::RequestHandlerResult LoginRESTService::HandlePostLoginSrpChall
return RequestHandlerResult::Async;
}
-LoginRESTService::RequestHandlerResult LoginRESTService::HandlePostRefreshLoginTicket(std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context) const
+LoginRESTService::RequestHandlerResult LoginRESTService::HandlePostRefreshLoginTicket(std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context) const
{
std::string ticket = ExtractAuthorization(context.request);
if (ticket.empty())
diff --git a/src/server/bnetserver/REST/LoginRESTService.h b/src/server/bnetserver/REST/LoginRESTService.h
index 5683c262590..bcc99808505 100644
--- a/src/server/bnetserver/REST/LoginRESTService.h
+++ b/src/server/bnetserver/REST/LoginRESTService.h
@@ -42,7 +42,7 @@ enum class BanMode
BAN_ACCOUNT = 1
};
-class LoginRESTService : public Trinity::Net::Http::HttpService<LoginHttpSession>
+class LoginRESTService : public Trinity::Net::Http::HttpService<LoginHttpSessionWrapper>
{
public:
using RequestHandlerResult = Trinity::Net::Http::RequestHandlerResult;
@@ -67,13 +67,13 @@ private:
static std::string ExtractAuthorization(HttpRequest const& request);
- RequestHandlerResult HandleGetForm(std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context) const;
- static RequestHandlerResult HandleGetGameAccounts(std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context);
- RequestHandlerResult HandleGetPortal(std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context) const;
+ RequestHandlerResult HandleGetForm(std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context) const;
+ static RequestHandlerResult HandleGetGameAccounts(std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context);
+ RequestHandlerResult HandleGetPortal(std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context) const;
- RequestHandlerResult HandlePostLogin(std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context) const;
- static RequestHandlerResult HandlePostLoginSrpChallenge(std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context);
- RequestHandlerResult HandlePostRefreshLoginTicket(std::shared_ptr<LoginHttpSession> session, HttpRequestContext& context) const;
+ RequestHandlerResult HandlePostLogin(std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context) const;
+ static RequestHandlerResult HandlePostLoginSrpChallenge(std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context);
+ RequestHandlerResult HandlePostRefreshLoginTicket(std::shared_ptr<LoginHttpSessionWrapper> session, HttpRequestContext& context) const;
static std::unique_ptr<Trinity::Crypto::SRP::BnetSRP6Base> CreateSrpImplementation(SrpVersion version, SrpHashFunction hashFunction,
std::string const& username, Trinity::Crypto::SRP::Salt const& salt, Trinity::Crypto::SRP::Verifier const& verifier);
diff --git a/src/server/bnetserver/Server/Session.cpp b/src/server/bnetserver/Server/Session.cpp
index b450df14e1d..c94ee6e3e56 100644
--- a/src/server/bnetserver/Server/Session.cpp
+++ b/src/server/bnetserver/Server/Session.cpp
@@ -260,7 +260,8 @@ uint32 Battlenet::Session::HandleLogon(authentication::v1::LogonRequest const* l
challenge::v1::ChallengeExternalRequest externalChallenge;
externalChallenge.set_payload_type("web_auth_url");
- externalChallenge.set_payload(Trinity::StringFormat("https://{}:{}/bnetserver/login/", sLoginService.GetHostnameForClient(GetRemoteIpAddress()), sLoginService.GetPort()));
+ externalChallenge.set_payload(Trinity::StringFormat("http{}://{}:{}/bnetserver/login/", !SslContext::UsesDevWildcardCertificate() ? "s" : "",
+ sLoginService.GetHostnameForClient(GetRemoteIpAddress()), sLoginService.GetPort()));
Service<challenge::v1::ChallengeListener>(this).OnExternalChallenge(&externalChallenge);
return ERROR_OK;
}
diff --git a/src/server/bnetserver/Server/SslContext.cpp b/src/server/bnetserver/Server/SslContext.cpp
index 92d95f24cc5..52daff1645d 100644
--- a/src/server/bnetserver/Server/SslContext.cpp
+++ b/src/server/bnetserver/Server/SslContext.cpp
@@ -24,6 +24,8 @@
#include <openssl/store.h>
#include <openssl/ui.h>
+bool Battlenet::SslContext::_usesDevWildcardCertificate = false;
+
namespace
{
auto CreatePasswordUiMethodFromPemCallback(::pem_password_cb* callback)
@@ -114,6 +116,37 @@ bool Battlenet::SslContext::Initialize()
if (sk_X509_num(certs) > 0)
{
X509* cert = sk_X509_shift(certs);
+
+ _usesDevWildcardCertificate = [&]
+ {
+ X509_NAME const* nm = X509_get_subject_name(cert);
+ int32 lastpos = -1;
+ while (true)
+ {
+ lastpos = X509_NAME_get_index_by_NID(nm, NID_commonName, lastpos);
+ if (lastpos == -1)
+ break;
+
+ X509_NAME_ENTRY* e = X509_NAME_get_entry(nm, lastpos);
+ if (!e)
+ continue;
+
+ ASN1_STRING* text = X509_NAME_ENTRY_get_data(e);
+ if (!text)
+ continue;
+
+ unsigned char* utf8TextRaw = nullptr;
+ if (int utf8Length = ASN1_STRING_to_UTF8(&utf8TextRaw, text); utf8Length >= 0)
+ {
+ auto utf8Text = Trinity::make_unique_ptr_with_deleter(utf8TextRaw, [](unsigned char* ptr) { ::OPENSSL_free(ptr); });
+ if (std::string_view(reinterpret_cast<char const*>(utf8Text.get()), utf8Length) == "*.*")
+ return true;
+ }
+ }
+
+ return false;
+ }();
+
SSL_CTX_use_cert_and_key(nativeContext, cert, key, certs, 1);
}
diff --git a/src/server/bnetserver/Server/SslContext.h b/src/server/bnetserver/Server/SslContext.h
index 470deffd97e..330c0db221b 100644
--- a/src/server/bnetserver/Server/SslContext.h
+++ b/src/server/bnetserver/Server/SslContext.h
@@ -28,6 +28,11 @@ namespace Battlenet
static bool Initialize();
static boost::asio::ssl::context& instance();
+
+ static bool UsesDevWildcardCertificate() { return _usesDevWildcardCertificate; }
+
+ private:
+ static bool _usesDevWildcardCertificate;
};
}
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp
index 55281c309ea..2c33390af10 100644
--- a/src/server/database/Database/Implementation/HotfixDatabase.cpp
+++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp
@@ -38,7 +38,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// Achievement.db2
PrepareStatement(HOTFIX_SEL_ACHIEVEMENT, "SELECT Description, Title, Reward, ID, InstanceID, Faction, Supercedes, Category, MinimumCriteria, "
- "Points, Flags, UiOrder, IconFileID, RewardItemID, CriteriaTree, SharesCriteria, CovenantID FROM achievement WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ "Points, Flags, UiOrder, IconFileID, RewardItemID, CriteriaTree, SharesCriteria, CovenantID, HiddenBeforeDisplaySeason, LegacyAfterTimeEvent"
+ " FROM achievement WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_ACHIEVEMENT, "SELECT MAX(ID) + 1 FROM achievement", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ACHIEVEMENT, "SELECT ID, Description_lang, Title_lang, Reward_lang FROM achievement_locale"
" WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH);
@@ -51,9 +52,9 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// AdventureJournal.db2
PrepareStatement(HOTFIX_SEL_ADVENTURE_JOURNAL, "SELECT ID, Name, Description, ButtonText, RewardDescription, ContinueDescription, Type, "
- "PlayerConditionID, Flags, ButtonActionType, TextureFileDataID, LfgDungeonID, QuestID, BattleMasterListID, PriorityMin, PriorityMax, ItemID, "
- "ItemQuantity, CurrencyType, CurrencyQuantity, UiMapID, BonusPlayerConditionID1, BonusPlayerConditionID2, BonusValue1, BonusValue2"
- " FROM adventure_journal WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ "PlayerConditionID, Flags, ButtonActionType, TextureFileDataID, LfgDungeonID, QuestID, BattleMasterListID, PriorityMin, PriorityMax, "
+ "CurrencyType, CurrencyQuantity, UiMapID, BonusPlayerConditionID1, BonusPlayerConditionID2, BonusValue1, BonusValue2 FROM adventure_journal"
+ " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_ADVENTURE_JOURNAL, "SELECT MAX(ID) + 1 FROM adventure_journal", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ADVENTURE_JOURNAL, "SELECT ID, Name_lang, Description_lang, ButtonText_lang, RewardDescription_lang, "
"ContinueDescription_lang FROM adventure_journal_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH);
diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h
index 843d3256632..7f52e54274c 100644
--- a/src/server/game/DataStores/DB2LoadInfo.h
+++ b/src/server/game/DataStores/DB2LoadInfo.h
@@ -26,7 +26,7 @@
struct AchievementLoadInfo
{
- static constexpr DB2FieldMeta Fields[17] =
+ static constexpr DB2FieldMeta Fields[19] =
{
{ false, FT_STRING, "Description" },
{ false, FT_STRING, "Title" },
@@ -45,9 +45,11 @@ struct AchievementLoadInfo
{ false, FT_INT, "CriteriaTree" },
{ true, FT_SHORT, "SharesCriteria" },
{ true, FT_INT, "CovenantID" },
+ { true, FT_INT, "HiddenBeforeDisplaySeason" },
+ { true, FT_INT, "LegacyAfterTimeEvent" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 17, &AchievementMeta::Instance, HOTFIX_SEL_ACHIEVEMENT };
+ static constexpr DB2LoadInfo Instance{ Fields, 19, &AchievementMeta::Instance, HOTFIX_SEL_ACHIEVEMENT };
};
struct AchievementCategoryLoadInfo
@@ -65,7 +67,7 @@ struct AchievementCategoryLoadInfo
struct AdventureJournalLoadInfo
{
- static constexpr DB2FieldMeta Fields[25] =
+ static constexpr DB2FieldMeta Fields[23] =
{
{ false, FT_INT, "ID" },
{ false, FT_STRING, "Name" },
@@ -83,8 +85,6 @@ struct AdventureJournalLoadInfo
{ false, FT_SHORT, "BattleMasterListID" },
{ false, FT_BYTE, "PriorityMin" },
{ false, FT_BYTE, "PriorityMax" },
- { true, FT_INT, "ItemID" },
- { false, FT_INT, "ItemQuantity" },
{ false, FT_SHORT, "CurrencyType" },
{ false, FT_INT, "CurrencyQuantity" },
{ false, FT_SHORT, "UiMapID" },
@@ -94,7 +94,7 @@ struct AdventureJournalLoadInfo
{ false, FT_BYTE, "BonusValue2" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 25, &AdventureJournalMeta::Instance, HOTFIX_SEL_ADVENTURE_JOURNAL };
+ static constexpr DB2LoadInfo Instance{ Fields, 23, &AdventureJournalMeta::Instance, HOTFIX_SEL_ADVENTURE_JOURNAL };
};
struct AdventureMapPoiLoadInfo
diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h
index cdfea34a87d..37da92ed3bb 100644
--- a/src/server/game/DataStores/DB2Metadata.h
+++ b/src/server/game/DataStores/DB2Metadata.h
@@ -22,7 +22,7 @@
struct AchievementMeta
{
- static constexpr DB2MetaField Fields[17] =
+ static constexpr DB2MetaField Fields[19] =
{
{ FT_STRING, 1, true },
{ FT_STRING, 1, true },
@@ -41,9 +41,11 @@ struct AchievementMeta
{ FT_INT, 1, false },
{ FT_SHORT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 1260179, 3, 17, 17, 0xFA2C0B62, Fields, 11 };
+ static constexpr DB2Meta Instance{ 1260179, 3, 19, 19, 0x920E09CB, Fields, 11 };
};
struct Achievement_CategoryMeta
@@ -85,7 +87,7 @@ struct ActionBarGroupEntryMeta
struct AdventureJournalMeta
{
- static constexpr DB2MetaField Fields[22] =
+ static constexpr DB2MetaField Fields[20] =
{
{ FT_STRING, 1, true },
{ FT_STRING, 1, true },
@@ -102,8 +104,6 @@ struct AdventureJournalMeta
{ FT_SHORT, 1, false },
{ FT_BYTE, 1, false },
{ FT_BYTE, 1, false },
- { FT_INT, 1, true },
- { FT_INT, 1, false },
{ FT_SHORT, 1, false },
{ FT_INT, 1, false },
{ FT_SHORT, 1, false },
@@ -111,7 +111,21 @@ struct AdventureJournalMeta
{ FT_BYTE, 2, false },
};
- static constexpr DB2Meta Instance{ 1115949, -1, 22, 22, 0xC165B3AF, Fields, -1 };
+ static constexpr DB2Meta Instance{ 1115949, -1, 20, 20, 0x872F8E30, Fields, -1 };
+};
+
+struct AdventureJournalItemMeta
+{
+ static constexpr DB2MetaField Fields[5] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5599873, -1, 5, 4, 0x7C64B965, Fields, 4 };
};
struct AdventureMapPOIMeta
@@ -519,6 +533,18 @@ struct AreaPOIStateMeta
static constexpr DB2Meta Instance{ 1000631, -1, 5, 4, 0xC236B11E, Fields, 4 };
};
+struct AreaPOIUiWidgetSetMeta
+{
+ static constexpr DB2MetaField Fields[3] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_BYTE, 1, false },
+ };
+
+ static constexpr DB2Meta Instance{ 5634691, -1, 3, 3, 0x457F53FD, Fields, -1 };
+};
+
struct AreaTableMeta
{
static constexpr DB2MetaField Fields[23] =
@@ -1323,6 +1349,23 @@ struct BattlemasterListMeta
static constexpr DB2Meta Instance{ 1360265, -1, 17, 17, 0x145B6F18, Fields, -1 };
};
+struct BattlepayCurrencyMeta
+{
+ static constexpr DB2MetaField Fields[8] =
+ {
+ { FT_STRING_NOT_LOCALIZED, 1, true },
+ { FT_STRING, 1, true },
+ { FT_STRING, 1, true },
+ { FT_STRING, 1, true },
+ { FT_INT, 1, false },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5549327, 4, 8, 8, 0x6B8D71CD, Fields, -1 };
+};
+
struct BeamEffectMeta
{
static constexpr DB2MetaField Fields[10] =
@@ -7100,7 +7143,7 @@ struct JournalEncounterCreatureMeta
struct JournalEncounterItemMeta
{
- static constexpr DB2MetaField Fields[6] =
+ static constexpr DB2MetaField Fields[7] =
{
{ FT_INT, 1, false },
{ FT_SHORT, 1, false },
@@ -7108,9 +7151,10 @@ struct JournalEncounterItemMeta
{ FT_BYTE, 1, true },
{ FT_INT, 1, true },
{ FT_BYTE, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 1344467, 0, 6, 6, 0xDAC92896, Fields, 1 };
+ static constexpr DB2Meta Instance{ 1344467, 0, 7, 7, 0x2F00E0F6, Fields, 1 };
};
struct JournalEncounterSectionMeta
@@ -9964,13 +10008,14 @@ struct QuestXUIQuestDetailsThemeMeta
struct QuestXUiWidgetSetMeta
{
- static constexpr DB2MetaField Fields[2] =
+ static constexpr DB2MetaField Fields[3] =
{
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_BYTE, 1, false },
};
- static constexpr DB2Meta Instance{ 3923421, -1, 2, 2, 0x2B4CA6A1, Fields, -1 };
+ static constexpr DB2Meta Instance{ 3923421, -1, 3, 3, 0x5FABCD9E, Fields, -1 };
};
struct RTPCMeta
@@ -10100,6 +10145,22 @@ struct RenownRewardsMeta
static constexpr DB2Meta Instance{ 3743117, -1, 18, 18, 0xB1FF79CA, Fields, 3 };
};
+struct RenownRewardsPlunderstormMeta
+{
+ static constexpr DB2MetaField Fields[7] =
+ {
+ { FT_STRING, 1, true },
+ { FT_STRING, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5662591, -1, 7, 7, 0xD63E74F4, Fields, 2 };
+};
+
struct ResearchBranchMeta
{
static constexpr DB2MetaField Fields[6] =
@@ -13721,9 +13782,10 @@ struct UiModelSceneCameraMeta
struct UiPartyPoseMeta
{
- static constexpr DB2MetaField Fields[10] =
+ static constexpr DB2MetaField Fields[11] =
{
{ FT_STRING, 1, true },
+ { FT_STRING, 1, true },
{ FT_INT, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
@@ -13735,7 +13797,7 @@ struct UiPartyPoseMeta
{ FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 1993323, 1, 10, 9, 0xF02E09B6, Fields, 9 };
+ static constexpr DB2Meta Instance{ 1993323, 2, 11, 10, 0x4F7568D2, Fields, 10 };
};
struct UiQuestDetailsThemeMeta
@@ -14174,6 +14236,18 @@ struct VignetteMeta
static constexpr DB2Meta Instance{ 892861, -1, 10, 10, 0xEC171292, Fields, -1 };
};
+struct VignetteUiWidgetSetMeta
+{
+ static constexpr DB2MetaField Fields[3] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_BYTE, 1, false },
+ };
+
+ static constexpr DB2Meta Instance{ 5634692, -1, 3, 3, 0xB3CE04F0, Fields, -1 };
+};
+
struct VirtualAttachmentMeta
{
static constexpr DB2MetaField Fields[2] =
diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h
index 5a6d8144dfe..2b1243dbb8f 100644
--- a/src/server/game/DataStores/DB2Structure.h
+++ b/src/server/game/DataStores/DB2Structure.h
@@ -44,6 +44,8 @@ struct AchievementEntry
uint32 CriteriaTree;
int16 SharesCriteria; // referenced achievement (counting of all completed criterias)
int32 CovenantID;
+ int32 HiddenBeforeDisplaySeason; // hidden in UI before this DisplaySeason is active
+ int32 LegacyAfterTimeEvent; // category changes clientside to Legacy after this TimeEvent is passed
};
struct Achievement_CategoryEntry
@@ -72,8 +74,6 @@ struct AdventureJournalEntry
uint16 BattleMasterListID;
uint8 PriorityMin;
uint8 PriorityMax;
- int32 ItemID;
- uint32 ItemQuantity;
uint16 CurrencyType;
uint32 CurrencyQuantity;
uint16 UiMapID;
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 149ed7b1742..1748dfa587f 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -468,13 +468,14 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
bool hasMoveCurveID = createProperties && createProperties->MoveCurveId != 0;
bool hasAreaTriggerSphere = shape.IsSphere();
bool hasAreaTriggerBox = shape.IsBox();
- bool hasAreaTriggerPolygon = createProperties && shape.IsPolygon();
+ bool hasAreaTriggerPolygon = shape.IsPolygon();
bool hasAreaTriggerCylinder = shape.IsCylinder();
bool hasDisk = shape.IsDisk();
bool hasBoundedPlane = shape.IsBoundedPlane();
bool hasAreaTriggerSpline = areaTrigger->HasSplines();
bool hasOrbit = areaTrigger->HasOrbit();
bool hasMovementScript = false;
+ bool hasPositionalSoundKitID= false;
data->WriteBit(hasAbsoluteOrientation);
data->WriteBit(hasDynamicShape);
@@ -488,6 +489,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
data->WriteBit(hasMorphCurveID);
data->WriteBit(hasFacingCurveID);
data->WriteBit(hasMoveCurveID);
+ data->WriteBit(hasPositionalSoundKitID);
data->WriteBit(hasAreaTriggerSphere);
data->WriteBit(hasAreaTriggerBox);
data->WriteBit(hasAreaTriggerPolygon);
@@ -523,6 +525,9 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
if (hasMoveCurveID)
*data << uint32(createProperties->MoveCurveId);
+ if (hasPositionalSoundKitID)
+ *data << uint32(0);
+
if (hasAreaTriggerSphere)
{
*data << float(shape.SphereDatas.Radius);
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index 2e012897754..de4b2123202 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -2282,12 +2282,14 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
data << int32(HonorLevel);
data << int64(LogoutTime);
data << uint32(ArenaCooldowns.size());
- data << int32(Field_B0);
- data << int32(Field_B4);
+ data << int32(Field_1AC);
+ data << int32(Field_1B0);
data << int32(CurrentBattlePetSpeciesID);
CtrOptions->WriteCreate(data, owner, receiver);
data << int32(CovenantID);
data << int32(SoulbindID);
+ data << Field_1F0;
+ data << int32(Field_200);
data << uint32(VisualItemReplacements.size());
for (uint32 i = 0; i < 19; ++i)
{
@@ -2327,6 +2329,10 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
data.WriteBits(DeclinedNames.has_value(), 1);
data << DungeonScore;
data.WriteString(Name);
+ for (uint32 i = 0; i < 16; ++i)
+ {
+ data << VisibleEquipableSpells[i];
+ }
if (DeclinedNames.has_value())
{
DeclinedNames->WriteCreate(data, owner, receiver);
@@ -2336,7 +2342,7 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const
{
- Mask allowedMaskForTarget({ 0xFFFFFFDDu, 0x00003FFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xC0000000u, 0xFFFFFFFFu, 0x00001FFFu });
+ Mask allowedMaskForTarget({ 0xFFFFFFDDu, 0x0000FFFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFFFu, 0xFFFFFFFFu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
@@ -2344,12 +2350,12 @@ void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
void PlayerData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember))
- allowedMaskForTarget |= { 0x00000022u, 0xFFFFC000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x3FFFFFFFu, 0x00000000u, 0x00000000u };
+ allowedMaskForTarget |= { 0x00000022u, 0xFFFF0000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x00000000u, 0x00000000u };
}
void PlayerData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
- Mask allowedMaskForTarget({ 0xFFFFFFDDu, 0x00003FFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xC0000000u, 0xFFFFFFFFu, 0x00001FFFu });
+ Mask allowedMaskForTarget({ 0xFFFFFFDDu, 0x0000FFFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFFFu, 0xFFFFFFFFu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask &= allowedMaskForTarget;
}
@@ -2565,11 +2571,11 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
{
if (changesMask[34])
{
- data << int32(Field_B0);
+ data << int32(Field_1AC);
}
if (changesMask[35])
{
- data << int32(Field_B4);
+ data << int32(Field_1B0);
}
if (changesMask[36])
{
@@ -2587,17 +2593,25 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
{
data << int32(SoulbindID);
}
- if (changesMask[42])
+ if (changesMask[40])
+ {
+ data << Field_1F0;
+ }
+ if (changesMask[41])
+ {
+ data << int32(Field_200);
+ }
+ if (changesMask[44])
{
PersonalTabard->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
if (changesMask[33])
{
- data.WriteBits(Name->size(), 32);
+ data.WriteBits(Name->size(), 6);
}
data.WriteBits(DeclinedNames.has_value(), 1);
data.FlushBits();
- if (changesMask[40])
+ if (changesMask[42])
{
data << DungeonScore;
}
@@ -2605,7 +2619,7 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
{
data.WriteString(Name);
}
- if (changesMask[41])
+ if (changesMask[43])
{
if (DeclinedNames.has_value())
{
@@ -2613,21 +2627,21 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
}
}
- if (changesMask[43])
+ if (changesMask[45])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[44 + i])
+ if (changesMask[46 + i])
{
data << uint8(PartyType[i]);
}
}
}
- if (changesMask[46])
+ if (changesMask[48])
{
for (uint32 i = 0; i < 175; ++i)
{
- if (changesMask[47 + i])
+ if (changesMask[49 + i])
{
if (noQuestLogChangesMask)
QuestLog[i].WriteCreate(data, owner, receiver);
@@ -2636,36 +2650,46 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
}
}
- if (changesMask[222])
+ if (changesMask[224])
{
for (uint32 i = 0; i < 19; ++i)
{
- if (changesMask[223 + i])
+ if (changesMask[225 + i])
{
VisibleItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[242])
+ if (changesMask[244])
{
for (uint32 i = 0; i < 6; ++i)
{
- if (changesMask[243 + i])
+ if (changesMask[245 + i])
{
data << float(AvgItemLevel[i]);
}
}
}
- if (changesMask[249])
+ if (changesMask[268])
{
for (uint32 i = 0; i < 19; ++i)
{
- if (changesMask[250 + i])
+ if (changesMask[269 + i])
{
data << uint32(Field_3120[i]);
}
}
}
+ if (changesMask[251])
+ {
+ for (uint32 i = 0; i < 16; ++i)
+ {
+ if (changesMask[252 + i])
+ {
+ data << VisibleEquipableSpells[i];
+ }
+ }
+ }
data.FlushBits();
}
@@ -2703,12 +2727,14 @@ void PlayerData::ClearChangesMask()
Base::ClearChangesMask(HonorLevel);
Base::ClearChangesMask(LogoutTime);
Base::ClearChangesMask(Name);
- Base::ClearChangesMask(Field_B0);
- Base::ClearChangesMask(Field_B4);
+ Base::ClearChangesMask(Field_1AC);
+ Base::ClearChangesMask(Field_1B0);
Base::ClearChangesMask(CurrentBattlePetSpeciesID);
Base::ClearChangesMask(CtrOptions);
Base::ClearChangesMask(CovenantID);
Base::ClearChangesMask(SoulbindID);
+ Base::ClearChangesMask(Field_1F0);
+ Base::ClearChangesMask(Field_200);
Base::ClearChangesMask(DungeonScore);
Base::ClearChangesMask(DeclinedNames);
Base::ClearChangesMask(PersonalTabard);
@@ -2716,6 +2742,7 @@ void PlayerData::ClearChangesMask()
Base::ClearChangesMask(QuestLog);
Base::ClearChangesMask(VisibleItems);
Base::ClearChangesMask(AvgItemLevel);
+ Base::ClearChangesMask(VisibleEquipableSpells);
Base::ClearChangesMask(Field_3120);
_changesMask.ResetAll();
}
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index 078f0e5738c..7440d41d65b 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -486,7 +486,7 @@ struct CustomTabardInfo : public IsUpdateFieldStructureTag, public HasChangesMas
void ClearChangesMask();
};
-struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<269>
+struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<288>
{
UpdateField<bool, 0, 1> HasQuestSession;
UpdateField<bool, 0, 2> HasLevelLink;
@@ -520,20 +520,23 @@ struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<269>
UpdateField<int32, 0, 30> HonorLevel;
UpdateField<int64, 0, 31> LogoutTime;
UpdateField<std::string, 32, 33> Name;
- UpdateField<int32, 32, 34> Field_B0;
- UpdateField<int32, 32, 35> Field_B4;
+ UpdateField<int32, 32, 34> Field_1AC;
+ UpdateField<int32, 32, 35> Field_1B0;
UpdateField<int32, 32, 36> CurrentBattlePetSpeciesID;
UpdateField<UF::CTROptions, 32, 37> CtrOptions;
UpdateField<int32, 32, 38> CovenantID;
UpdateField<int32, 32, 39> SoulbindID;
- UpdateField<WorldPackets::MythicPlus::DungeonScoreSummary, 32, 40> DungeonScore;
- OptionalUpdateField<UF::DeclinedNames, 32, 41> DeclinedNames;
- UpdateField<UF::CustomTabardInfo, 32, 42> PersonalTabard;
- UpdateFieldArray<uint8, 2, 43, 44> PartyType;
- UpdateFieldArray<UF::QuestLog, 175, 46, 47> QuestLog;
- UpdateFieldArray<UF::VisibleItem, 19, 222, 223> VisibleItems;
- UpdateFieldArray<float, 6, 242, 243> AvgItemLevel;
- UpdateFieldArray<uint32, 19, 249, 250> Field_3120;
+ UpdateField<ObjectGuid, 32, 40> Field_1F0;
+ UpdateField<int32, 32, 41> Field_200;
+ UpdateField<WorldPackets::MythicPlus::DungeonScoreSummary, 32, 42> DungeonScore;
+ OptionalUpdateField<UF::DeclinedNames, 32, 43> DeclinedNames;
+ UpdateField<UF::CustomTabardInfo, 32, 44> PersonalTabard;
+ UpdateFieldArray<uint8, 2, 45, 46> PartyType;
+ UpdateFieldArray<UF::QuestLog, 175, 48, 49> QuestLog;
+ UpdateFieldArray<UF::VisibleItem, 19, 224, 225> VisibleItems;
+ UpdateFieldArray<float, 6, 244, 245> AvgItemLevel;
+ UpdateFieldArray<WorldPackets::Item::ItemInstance, 16, 251, 252> VisibleEquipableSpells;
+ UpdateFieldArray<uint32, 19, 268, 269> Field_3120;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 3aeeecf0a3b..b6683045d96 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -15771,7 +15771,7 @@ bool Player::SatisfyQuestRace(Quest const* qInfo, bool msg) const
return true;
}
-bool Player::SatisfyQuestReputation(Quest const* qInfo, bool msg) const
+bool Player::SatisfyQuestMinReputation(Quest const* qInfo, bool msg) const
{
uint32 fIdMin = qInfo->GetRequiredMinRepFaction(); //Min required rep
if (fIdMin && GetReputationMgr().GetReputation(fIdMin) < qInfo->GetRequiredMinRepValue())
@@ -15785,6 +15785,11 @@ bool Player::SatisfyQuestReputation(Quest const* qInfo, bool msg) const
return false;
}
+ return true;
+}
+
+bool Player::SatisfyQuestMaxReputation(Quest const* qInfo, bool msg) const
+{
uint32 fIdMax = qInfo->GetRequiredMaxRepFaction(); //Max required rep
if (fIdMax && GetReputationMgr().GetReputation(fIdMax) >= qInfo->GetRequiredMaxRepValue())
{
@@ -15800,6 +15805,11 @@ bool Player::SatisfyQuestReputation(Quest const* qInfo, bool msg) const
return true;
}
+bool Player::SatisfyQuestReputation(Quest const* qInfo, bool msg) const
+{
+ return SatisfyQuestMinReputation(qInfo, msg) && SatisfyQuestMaxReputation(qInfo, msg);
+}
+
bool Player::SatisfyQuestStatus(Quest const* qInfo, bool msg) const
{
if (GetQuestStatus(qInfo->GetQuestId()) == QUEST_STATUS_REWARDED)
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 4c33e4dae77..02e6fb8e145 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -719,7 +719,6 @@ enum ChildEquipmentSlots
CHILD_EQUIPMENT_SLOT_END = 211,
};
-// slots past 214 are guessed (unused in client)
enum EquipableSpellSlots
{
EQUIPABLE_SPELL_OFFENSIVE_SLOT1 = 211,
@@ -1577,6 +1576,8 @@ class TC_GAME_API Player final : public Unit, public GridObject<Player>
bool SatisfyQuestDependentBreadcrumbQuests(Quest const* qInfo, bool msg) const;
bool SatisfyQuestClass(Quest const* qInfo, bool msg) const;
bool SatisfyQuestRace(Quest const* qInfo, bool msg) const;
+ bool SatisfyQuestMinReputation(Quest const* qInfo, bool msg) const;
+ bool SatisfyQuestMaxReputation(Quest const* qInfo, bool msg) const;
bool SatisfyQuestReputation(Quest const* qInfo, bool msg) const;
bool SatisfyQuestStatus(Quest const* qInfo, bool msg) const;
bool SatisfyQuestConditions(Quest const* qInfo, bool msg) const;
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index 04b6792ba7f..db244e2f877 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -690,13 +690,20 @@ void WorldSession::HandlePushQuestToParty(WorldPackets::Quest::PushQuestToParty&
continue;
}
- if (!receiver->SatisfyQuestReputation(quest, false))
+ if (!receiver->SatisfyQuestMinReputation(quest, false))
{
sender->SendPushToPartyResponse(receiver, QuestPushReason::LowFaction);
receiver->SendPushToPartyResponse(sender, QuestPushReason::LowFactionToRecipient, quest);
continue;
}
+ if (!receiver->SatisfyQuestMaxReputation(quest, false))
+ {
+ sender->SendPushToPartyResponse(receiver, QuestPushReason::HighFaction);
+ receiver->SendPushToPartyResponse(sender, QuestPushReason::HighFactionToRecipient, quest);
+ continue;
+ }
+
if (!receiver->SatisfyQuestDependentQuests(quest, false))
{
sender->SendPushToPartyResponse(receiver, QuestPushReason::Prerequisite);
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 7fdc1b74eac..81038f1729a 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -7439,641 +7439,649 @@ enum class GameError : uint32
ERR_QUEST_PUSH_RACE_TO_RECIPIENT_S = 491,
ERR_QUEST_PUSH_LOW_FACTION_S = 492,
ERR_QUEST_PUSH_LOW_FACTION_TO_RECIPIENT_S = 493,
- ERR_QUEST_PUSH_EXPANSION_S = 494,
- ERR_QUEST_PUSH_EXPANSION_TO_RECIPIENT_S = 495,
- ERR_QUEST_PUSH_NOT_GARRISON_OWNER_S = 496,
- ERR_QUEST_PUSH_NOT_GARRISON_OWNER_TO_RECIPIENT_S = 497,
- ERR_QUEST_PUSH_WRONG_COVENANT_S = 498,
- ERR_QUEST_PUSH_WRONG_COVENANT_TO_RECIPIENT_S = 499,
- ERR_QUEST_PUSH_NEW_PLAYER_EXPERIENCE_S = 500,
- ERR_QUEST_PUSH_NEW_PLAYER_EXPERIENCE_TO_RECIPIENT_S = 501,
- ERR_QUEST_PUSH_WRONG_FACTION_S = 502,
- ERR_QUEST_PUSH_WRONG_FACTION_TO_RECIPIENT_S = 503,
- ERR_QUEST_PUSH_CROSS_FACTION_RESTRICTED_S = 504,
- ERR_RAID_GROUP_LOWLEVEL = 505,
- ERR_RAID_GROUP_ONLY = 506,
- ERR_RAID_GROUP_FULL = 507,
- ERR_RAID_GROUP_REQUIREMENTS_UNMATCH = 508,
- ERR_CORPSE_IS_NOT_IN_INSTANCE = 509,
- ERR_PVP_KILL_HONORABLE = 510,
- ERR_PVP_KILL_DISHONORABLE = 511,
- ERR_SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 512,
- ERR_SPELL_FAILED_ALREADY_AT_FULL_MANA = 513,
- ERR_SPELL_FAILED_ALREADY_AT_FULL_POWER_S = 514,
- ERR_AUTOLOOT_MONEY_S = 515,
- ERR_GENERIC_STUNNED = 516,
- ERR_GENERIC_THROTTLE = 517,
- ERR_CLUB_FINDER_SEARCHING_TOO_FAST = 518,
- ERR_TARGET_STUNNED = 519,
- ERR_MUST_REPAIR_DURABILITY = 520,
- ERR_RAID_YOU_JOINED = 521,
- ERR_RAID_YOU_LEFT = 522,
- ERR_INSTANCE_GROUP_JOINED_WITH_PARTY = 523,
- ERR_INSTANCE_GROUP_JOINED_WITH_RAID = 524,
- ERR_RAID_MEMBER_ADDED_S = 525,
- ERR_RAID_MEMBER_REMOVED_S = 526,
- ERR_INSTANCE_GROUP_ADDED_S = 527,
- ERR_INSTANCE_GROUP_REMOVED_S = 528,
- ERR_CLICK_ON_ITEM_TO_FEED = 529,
- ERR_TOO_MANY_CHAT_CHANNELS = 530,
- ERR_LOOT_ROLL_PENDING = 531,
- ERR_LOOT_PLAYER_NOT_FOUND = 532,
- ERR_NOT_IN_RAID = 533,
- ERR_LOGGING_OUT = 534,
- ERR_TARGET_LOGGING_OUT = 535,
- ERR_NOT_WHILE_MOUNTED = 536,
- ERR_NOT_WHILE_SHAPESHIFTED = 537,
- ERR_NOT_IN_COMBAT = 538,
- ERR_NOT_WHILE_DISARMED = 539,
- ERR_PET_BROKEN = 540,
- ERR_TALENT_WIPE_ERROR = 541,
- ERR_SPEC_WIPE_ERROR = 542,
- ERR_GLYPH_WIPE_ERROR = 543,
- ERR_PET_SPEC_WIPE_ERROR = 544,
- ERR_FEIGN_DEATH_RESISTED = 545,
- ERR_MEETING_STONE_IN_QUEUE_S = 546,
- ERR_MEETING_STONE_LEFT_QUEUE_S = 547,
- ERR_MEETING_STONE_OTHER_MEMBER_LEFT = 548,
- ERR_MEETING_STONE_PARTY_KICKED_FROM_QUEUE = 549,
- ERR_MEETING_STONE_MEMBER_STILL_IN_QUEUE = 550,
- ERR_MEETING_STONE_SUCCESS = 551,
- ERR_MEETING_STONE_IN_PROGRESS = 552,
- ERR_MEETING_STONE_MEMBER_ADDED_S = 553,
- ERR_MEETING_STONE_GROUP_FULL = 554,
- ERR_MEETING_STONE_NOT_LEADER = 555,
- ERR_MEETING_STONE_INVALID_LEVEL = 556,
- ERR_MEETING_STONE_TARGET_NOT_IN_PARTY = 557,
- ERR_MEETING_STONE_TARGET_INVALID_LEVEL = 558,
- ERR_MEETING_STONE_MUST_BE_LEADER = 559,
- ERR_MEETING_STONE_NO_RAID_GROUP = 560,
- ERR_MEETING_STONE_NEED_PARTY = 561,
- ERR_MEETING_STONE_NOT_FOUND = 562,
- ERR_MEETING_STONE_TARGET_IN_VEHICLE = 563,
- ERR_GUILDEMBLEM_SAME = 564,
- ERR_EQUIP_TRADE_ITEM = 565,
- ERR_PVP_TOGGLE_ON = 566,
- ERR_PVP_TOGGLE_OFF = 567,
- ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS = 568,
- ERR_GROUP_JOIN_BATTLEGROUND_DEAD = 569,
- ERR_GROUP_JOIN_BATTLEGROUND_S = 570,
- ERR_GROUP_JOIN_BATTLEGROUND_FAIL = 571,
- ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY = 572,
- ERR_SOLO_JOIN_BATTLEGROUND_S = 573,
- ERR_JOIN_SINGLE_SCENARIO_S = 574,
- ERR_BATTLEGROUND_TOO_MANY_QUEUES = 575,
- ERR_BATTLEGROUND_CANNOT_QUEUE_FOR_RATED = 576,
- ERR_BATTLEDGROUND_QUEUED_FOR_RATED = 577,
- ERR_BATTLEGROUND_TEAM_LEFT_QUEUE = 578,
- ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND = 579,
- ERR_ALREADY_IN_ARENA_TEAM_S = 580,
- ERR_INVALID_PROMOTION_CODE = 581,
- ERR_BG_PLAYER_JOINED_SS = 582,
- ERR_BG_PLAYER_LEFT_S = 583,
- ERR_RESTRICTED_ACCOUNT = 584,
- ERR_RESTRICTED_ACCOUNT_TRIAL = 585,
- ERR_PLAY_TIME_EXCEEDED = 586,
- ERR_APPROACHING_PARTIAL_PLAY_TIME = 587,
- ERR_APPROACHING_PARTIAL_PLAY_TIME_2 = 588,
- ERR_APPROACHING_NO_PLAY_TIME = 589,
- ERR_APPROACHING_NO_PLAY_TIME_2 = 590,
- ERR_UNHEALTHY_TIME = 591,
- ERR_CHAT_RESTRICTED_TRIAL = 592,
- ERR_CHAT_THROTTLED = 593,
- ERR_MAIL_REACHED_CAP = 594,
- ERR_INVALID_RAID_TARGET = 595,
- ERR_RAID_LEADER_READY_CHECK_START_S = 596,
- ERR_READY_CHECK_IN_PROGRESS = 597,
- ERR_READY_CHECK_THROTTLED = 598,
- ERR_DUNGEON_DIFFICULTY_FAILED = 599,
- ERR_DUNGEON_DIFFICULTY_CHANGED_S = 600,
- ERR_TRADE_WRONG_REALM = 601,
- ERR_TRADE_NOT_ON_TAPLIST = 602,
- ERR_CHAT_PLAYER_AMBIGUOUS_S = 603,
- ERR_LOOT_CANT_LOOT_THAT_NOW = 604,
- ERR_LOOT_MASTER_INV_FULL = 605,
- ERR_LOOT_MASTER_UNIQUE_ITEM = 606,
- ERR_LOOT_MASTER_OTHER = 607,
- ERR_FILTERING_YOU_S = 608,
- ERR_USE_PREVENTED_BY_MECHANIC_S = 609,
- ERR_ITEM_UNIQUE_EQUIPPABLE = 610,
- ERR_LFG_LEADER_IS_LFM_S = 611,
- ERR_LFG_PENDING = 612,
- ERR_CANT_SPEAK_LANGAGE = 613,
- ERR_VENDOR_MISSING_TURNINS = 614,
- ERR_BATTLEGROUND_NOT_IN_TEAM = 615,
- ERR_NOT_IN_BATTLEGROUND = 616,
- ERR_NOT_ENOUGH_HONOR_POINTS = 617,
- ERR_NOT_ENOUGH_ARENA_POINTS = 618,
- ERR_SOCKETING_REQUIRES_META_GEM = 619,
- ERR_SOCKETING_META_GEM_ONLY_IN_METASLOT = 620,
- ERR_SOCKETING_REQUIRES_HYDRAULIC_GEM = 621,
- ERR_SOCKETING_HYDRAULIC_GEM_ONLY_IN_HYDRAULICSLOT = 622,
- ERR_SOCKETING_REQUIRES_COGWHEEL_GEM = 623,
- ERR_SOCKETING_COGWHEEL_GEM_ONLY_IN_COGWHEELSLOT = 624,
- ERR_SOCKETING_ITEM_TOO_LOW_LEVEL = 625,
- ERR_ITEM_MAX_COUNT_SOCKETED = 626,
- ERR_SYSTEM_DISABLED = 627,
- ERR_QUEST_FAILED_TOO_MANY_DAILY_QUESTS_I = 628,
- ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 629,
- ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 630,
- ERR_USER_SQUELCHED = 631,
- ERR_ACCOUNT_SILENCED = 632,
- ERR_PARTY_MEMBER_SILENCED = 633,
- ERR_PARTY_MEMBER_SILENCED_LFG_DELIST = 634,
- ERR_TOO_MUCH_GOLD = 635,
- ERR_NOT_BARBER_SITTING = 636,
- ERR_QUEST_FAILED_CAIS = 637,
- ERR_INVITE_RESTRICTED_TRIAL = 638,
- ERR_VOICE_IGNORE_FULL = 639,
- ERR_VOICE_IGNORE_SELF = 640,
- ERR_VOICE_IGNORE_NOT_FOUND = 641,
- ERR_VOICE_IGNORE_ALREADY_S = 642,
- ERR_VOICE_IGNORE_ADDED_S = 643,
- ERR_VOICE_IGNORE_REMOVED_S = 644,
- ERR_VOICE_IGNORE_AMBIGUOUS = 645,
- ERR_VOICE_IGNORE_DELETED = 646,
- ERR_UNKNOWN_MACRO_OPTION_S = 647,
- ERR_NOT_DURING_ARENA_MATCH = 648,
- ERR_NOT_IN_RATED_BATTLEGROUND = 649,
- ERR_PLAYER_SILENCED = 650,
- ERR_PLAYER_UNSILENCED = 651,
- ERR_COMSAT_DISCONNECT = 652,
- ERR_COMSAT_RECONNECT_ATTEMPT = 653,
- ERR_COMSAT_CONNECT_FAIL = 654,
- ERR_MAIL_INVALID_ATTACHMENT_SLOT = 655,
- ERR_MAIL_TOO_MANY_ATTACHMENTS = 656,
- ERR_MAIL_INVALID_ATTACHMENT = 657,
- ERR_MAIL_ATTACHMENT_EXPIRED = 658,
- ERR_VOICE_CHAT_PARENTAL_DISABLE_MIC = 659,
- ERR_PROFANE_CHAT_NAME = 660,
- ERR_PLAYER_SILENCED_ECHO = 661,
- ERR_PLAYER_UNSILENCED_ECHO = 662,
- ERR_LOOT_CANT_LOOT_THAT = 663,
- ERR_ARENA_EXPIRED_CAIS = 664,
- ERR_GROUP_ACTION_THROTTLED = 665,
- ERR_ALREADY_PICKPOCKETED = 666,
- ERR_NAME_INVALID = 667,
- ERR_NAME_NO_NAME = 668,
- ERR_NAME_TOO_SHORT = 669,
- ERR_NAME_TOO_LONG = 670,
- ERR_NAME_MIXED_LANGUAGES = 671,
- ERR_NAME_PROFANE = 672,
- ERR_NAME_RESERVED = 673,
- ERR_NAME_THREE_CONSECUTIVE = 674,
- ERR_NAME_INVALID_SPACE = 675,
- ERR_NAME_CONSECUTIVE_SPACES = 676,
- ERR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 677,
- ERR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 678,
- ERR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 679,
- ERR_RECRUIT_A_FRIEND_NOT_LINKED = 680,
- ERR_RECRUIT_A_FRIEND_NOT_NOW = 681,
- ERR_RECRUIT_A_FRIEND_SUMMON_LEVEL_MAX = 682,
- ERR_RECRUIT_A_FRIEND_SUMMON_COOLDOWN = 683,
- ERR_RECRUIT_A_FRIEND_SUMMON_OFFLINE = 684,
- ERR_RECRUIT_A_FRIEND_INSUF_EXPAN_LVL = 685,
- ERR_RECRUIT_A_FRIEND_MAP_INCOMING_TRANSFER_NOT_ALLOWED = 686,
- ERR_NOT_SAME_ACCOUNT = 687,
- ERR_BAD_ON_USE_ENCHANT = 688,
- ERR_TRADE_SELF = 689,
- ERR_TOO_MANY_SOCKETS = 690,
- ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 691,
- ERR_TRADE_TARGET_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 692,
- ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS = 693,
- ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS = 694,
- ERR_SHAPESHIFT_FORM_CANNOT_EQUIP = 695,
- ERR_ITEM_INVENTORY_FULL_SATCHEL = 696,
- ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 697,
- ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW = 698,
- ERR_PURCHASE_LEVEL_TOO_LOW = 699,
- ERR_GROUP_SWAP_FAILED = 700,
- ERR_INVITE_IN_COMBAT = 701,
- ERR_INVALID_GLYPH_SLOT = 702,
- ERR_GENERIC_NO_VALID_TARGETS = 703,
- ERR_CALENDAR_EVENT_ALERT_S = 704,
- ERR_PET_LEARN_SPELL_S = 705,
- ERR_PET_LEARN_ABILITY_S = 706,
- ERR_PET_SPELL_UNLEARNED_S = 707,
- ERR_INVITE_UNKNOWN_REALM = 708,
- ERR_INVITE_NO_PARTY_SERVER = 709,
- ERR_INVITE_PARTY_BUSY = 710,
- ERR_INVITE_PARTY_BUSY_PENDING_REQUEST = 711,
- ERR_INVITE_PARTY_BUSY_PENDING_SUGGEST = 712,
- ERR_PARTY_TARGET_AMBIGUOUS = 713,
- ERR_PARTY_LFG_INVITE_RAID_LOCKED = 714,
- ERR_PARTY_LFG_BOOT_LIMIT = 715,
- ERR_PARTY_LFG_BOOT_COOLDOWN_S = 716,
- ERR_PARTY_LFG_BOOT_NOT_ELIGIBLE_S = 717,
- ERR_PARTY_LFG_BOOT_INPATIENT_TIMER_S = 718,
- ERR_PARTY_LFG_BOOT_IN_PROGRESS = 719,
- ERR_PARTY_LFG_BOOT_TOO_FEW_PLAYERS = 720,
- ERR_PARTY_LFG_BOOT_VOTE_SUCCEEDED = 721,
- ERR_PARTY_LFG_BOOT_VOTE_FAILED = 722,
- ERR_PARTY_LFG_BOOT_IN_COMBAT = 723,
- ERR_PARTY_LFG_BOOT_DUNGEON_COMPLETE = 724,
- ERR_PARTY_LFG_BOOT_LOOT_ROLLS = 725,
- ERR_PARTY_LFG_BOOT_VOTE_REGISTERED = 726,
- ERR_PARTY_PRIVATE_GROUP_ONLY = 727,
- ERR_PARTY_LFG_TELEPORT_IN_COMBAT = 728,
- ERR_RAID_DISALLOWED_BY_LEVEL = 729,
- ERR_RAID_DISALLOWED_BY_CROSS_REALM = 730,
- ERR_PARTY_ROLE_NOT_AVAILABLE = 731,
- ERR_JOIN_LFG_OBJECT_FAILED = 732,
- ERR_LFG_REMOVED_LEVELUP = 733,
- ERR_LFG_REMOVED_XP_TOGGLE = 734,
- ERR_LFG_REMOVED_FACTION_CHANGE = 735,
- ERR_BATTLEGROUND_INFO_THROTTLED = 736,
- ERR_BATTLEGROUND_ALREADY_IN = 737,
- ERR_ARENA_TEAM_CHANGE_FAILED_QUEUED = 738,
- ERR_ARENA_TEAM_PERMISSIONS = 739,
- ERR_NOT_WHILE_FALLING = 740,
- ERR_NOT_WHILE_MOVING = 741,
- ERR_NOT_WHILE_FATIGUED = 742,
- ERR_MAX_SOCKETS = 743,
- ERR_MULTI_CAST_ACTION_TOTEM_S = 744,
- ERR_BATTLEGROUND_JOIN_LEVELUP = 745,
- ERR_REMOVE_FROM_PVP_QUEUE_XP_GAIN = 746,
- ERR_BATTLEGROUND_JOIN_XP_GAIN = 747,
- ERR_BATTLEGROUND_JOIN_MERCENARY = 748,
- ERR_BATTLEGROUND_JOIN_TOO_MANY_HEALERS = 749,
- ERR_BATTLEGROUND_JOIN_RATED_TOO_MANY_HEALERS = 750,
- ERR_BATTLEGROUND_JOIN_TOO_MANY_TANKS = 751,
- ERR_BATTLEGROUND_JOIN_TOO_MANY_DAMAGE = 752,
- ERR_RAID_DIFFICULTY_FAILED = 753,
- ERR_RAID_DIFFICULTY_CHANGED_S = 754,
- ERR_LEGACY_RAID_DIFFICULTY_CHANGED_S = 755,
- ERR_RAID_LOCKOUT_CHANGED_S = 756,
- ERR_RAID_CONVERTED_TO_PARTY = 757,
- ERR_PARTY_CONVERTED_TO_RAID = 758,
- ERR_PLAYER_DIFFICULTY_CHANGED_S = 759,
- ERR_GMRESPONSE_DB_ERROR = 760,
- ERR_BATTLEGROUND_JOIN_RANGE_INDEX = 761,
- ERR_ARENA_JOIN_RANGE_INDEX = 762,
- ERR_REMOVE_FROM_PVP_QUEUE_FACTION_CHANGE = 763,
- ERR_BATTLEGROUND_JOIN_FAILED = 764,
- ERR_BATTLEGROUND_JOIN_NO_VALID_SPEC_FOR_ROLE = 765,
- ERR_BATTLEGROUND_JOIN_RESPEC = 766,
- ERR_BATTLEGROUND_INVITATION_DECLINED = 767,
- ERR_BATTLEGROUND_INVITATION_DECLINED_BY = 768,
- ERR_BATTLEGROUND_JOIN_TIMED_OUT = 769,
- ERR_BATTLEGROUND_DUPE_QUEUE = 770,
- ERR_BATTLEGROUND_JOIN_MUST_COMPLETE_QUEST = 771,
- ERR_IN_BATTLEGROUND_RESPEC = 772,
- ERR_MAIL_LIMITED_DURATION_ITEM = 773,
- ERR_YELL_RESTRICTED_TRIAL = 774,
- ERR_CHAT_RAID_RESTRICTED_TRIAL = 775,
- ERR_LFG_ROLE_CHECK_FAILED = 776,
- ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT = 777,
- ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE = 778,
- ERR_LFG_READY_CHECK_FAILED = 779,
- ERR_LFG_READY_CHECK_FAILED_TIMEOUT = 780,
- ERR_LFG_GROUP_FULL = 781,
- ERR_LFG_NO_LFG_OBJECT = 782,
- ERR_LFG_NO_SLOTS_PLAYER = 783,
- ERR_LFG_NO_SLOTS_PARTY = 784,
- ERR_LFG_NO_SPEC = 785,
- ERR_LFG_MISMATCHED_SLOTS = 786,
- ERR_LFG_MISMATCHED_SLOTS_LOCAL_XREALM = 787,
- ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 788,
- ERR_LFG_MEMBERS_NOT_PRESENT = 789,
- ERR_LFG_GET_INFO_TIMEOUT = 790,
- ERR_LFG_INVALID_SLOT = 791,
- ERR_LFG_DESERTER_PLAYER = 792,
- ERR_LFG_DESERTER_PARTY = 793,
- ERR_LFG_DEAD = 794,
- ERR_LFG_RANDOM_COOLDOWN_PLAYER = 795,
- ERR_LFG_RANDOM_COOLDOWN_PARTY = 796,
- ERR_LFG_TOO_MANY_MEMBERS = 797,
- ERR_LFG_TOO_FEW_MEMBERS = 798,
- ERR_LFG_PROPOSAL_FAILED = 799,
- ERR_LFG_PROPOSAL_DECLINED_SELF = 800,
- ERR_LFG_PROPOSAL_DECLINED_PARTY = 801,
- ERR_LFG_NO_SLOTS_SELECTED = 802,
- ERR_LFG_NO_ROLES_SELECTED = 803,
- ERR_LFG_ROLE_CHECK_INITIATED = 804,
- ERR_LFG_READY_CHECK_INITIATED = 805,
- ERR_LFG_PLAYER_DECLINED_ROLE_CHECK = 806,
- ERR_LFG_PLAYER_DECLINED_READY_CHECK = 807,
- ERR_LFG_JOINED_QUEUE = 808,
- ERR_LFG_JOINED_FLEX_QUEUE = 809,
- ERR_LFG_JOINED_RF_QUEUE = 810,
- ERR_LFG_JOINED_SCENARIO_QUEUE = 811,
- ERR_LFG_JOINED_WORLD_PVP_QUEUE = 812,
- ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 813,
- ERR_LFG_JOINED_LIST = 814,
- ERR_LFG_LEFT_QUEUE = 815,
- ERR_LFG_LEFT_LIST = 816,
- ERR_LFG_ROLE_CHECK_ABORTED = 817,
- ERR_LFG_READY_CHECK_ABORTED = 818,
- ERR_LFG_CANT_USE_BATTLEGROUND = 819,
- ERR_LFG_CANT_USE_DUNGEONS = 820,
- ERR_LFG_REASON_TOO_MANY_LFG = 821,
- ERR_LFG_FARM_LIMIT = 822,
- ERR_LFG_NO_CROSS_FACTION_PARTIES = 823,
- ERR_INVALID_TELEPORT_LOCATION = 824,
- ERR_TOO_FAR_TO_INTERACT = 825,
- ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 826,
- ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 827,
- ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 828,
- ERR_DIFFICULTY_CHANGE_WORLDSTATE = 829,
- ERR_DIFFICULTY_CHANGE_ENCOUNTER = 830,
- ERR_DIFFICULTY_CHANGE_COMBAT = 831,
- ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 832,
- ERR_DIFFICULTY_CHANGE_PLAYER_ON_VEHICLE = 833,
- ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 834,
- ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 835,
- ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 836,
- ERR_ARENA_TEAM_PARTY_SIZE = 837,
- ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 838,
- ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 839,
- ERR_SOLO_MIN_ITEM_LEVEL = 840,
- ERR_PVP_PLAYER_ABANDONED = 841,
- ERR_BATTLEGROUND_JOIN_GROUP_QUEUE_WITHOUT_HEALER = 842,
- ERR_QUEST_FORCE_REMOVED_S = 843,
- ERR_ATTACK_NO_ACTIONS = 844,
- ERR_IN_RANDOM_BG = 845,
- ERR_IN_NON_RANDOM_BG = 846,
- ERR_BN_FRIEND_SELF = 847,
- ERR_BN_FRIEND_ALREADY = 848,
- ERR_BN_FRIEND_BLOCKED = 849,
- ERR_BN_FRIEND_LIST_FULL = 850,
- ERR_BN_FRIEND_REQUEST_SENT = 851,
- ERR_BN_BROADCAST_THROTTLE = 852,
- ERR_BG_DEVELOPER_ONLY = 853,
- ERR_CURRENCY_SPELL_SLOT_MISMATCH = 854,
- ERR_CURRENCY_NOT_TRADABLE = 855,
- ERR_REQUIRES_EXPANSION_S = 856,
- ERR_QUEST_FAILED_SPELL = 857,
- ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 858,
- ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 859,
- ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 860,
- ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 861,
- ERR_TALENT_FAILED_UNKNOWN = 862,
- ERR_TALENT_FAILED_IN_COMBAT = 863,
- ERR_TALENT_FAILED_IN_PVP_MATCH = 864,
- ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 865,
- ERR_WARGAME_REQUEST_FAILURE = 866,
- ERR_RANK_REQUIRES_AUTHENTICATOR = 867,
- ERR_GUILD_BANK_VOUCHER_FAILED = 868,
- ERR_WARGAME_REQUEST_SENT = 869,
- ERR_REQUIRES_ACHIEVEMENT_I = 870,
- ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 871,
- ERR_CANT_BUY_QUANTITY = 872,
- ERR_ITEM_IS_BATTLE_PAY_LOCKED = 873,
- ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 874,
- ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 875,
- ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 876,
- ERR_INSUFF_TRACKED_CURRENCY_IS = 877,
- ERR_NOT_ON_TOURNAMENT_REALM = 878,
- ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 879,
- ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 880,
- ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 881,
- ERR_CANT_DO_THAT_IN_A_GROUP = 882,
- ERR_GUILD_LEADER_REPLACED = 883,
- ERR_TRANSMOGRIFY_CANT_EQUIP = 884,
- ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 885,
- ERR_TRANSMOGRIFY_NOT_SOULBOUND = 886,
- ERR_TRANSMOGRIFY_INVALID_SOURCE = 887,
- ERR_TRANSMOGRIFY_INVALID_DESTINATION = 888,
- ERR_TRANSMOGRIFY_MISMATCH = 889,
- ERR_TRANSMOGRIFY_LEGENDARY = 890,
- ERR_TRANSMOGRIFY_SAME_ITEM = 891,
- ERR_TRANSMOGRIFY_SAME_APPEARANCE = 892,
- ERR_TRANSMOGRIFY_NOT_EQUIPPED = 893,
- ERR_VOID_DEPOSIT_FULL = 894,
- ERR_VOID_WITHDRAW_FULL = 895,
- ERR_VOID_STORAGE_WRAPPED = 896,
- ERR_VOID_STORAGE_STACKABLE = 897,
- ERR_VOID_STORAGE_UNBOUND = 898,
- ERR_VOID_STORAGE_REPAIR = 899,
- ERR_VOID_STORAGE_CHARGES = 900,
- ERR_VOID_STORAGE_QUEST = 901,
- ERR_VOID_STORAGE_CONJURED = 902,
- ERR_VOID_STORAGE_MAIL = 903,
- ERR_VOID_STORAGE_BAG = 904,
- ERR_VOID_TRANSFER_STORAGE_FULL = 905,
- ERR_VOID_TRANSFER_INV_FULL = 906,
- ERR_VOID_TRANSFER_INTERNAL_ERROR = 907,
- ERR_VOID_TRANSFER_ITEM_INVALID = 908,
- ERR_DIFFICULTY_DISABLED_IN_LFG = 909,
- ERR_VOID_STORAGE_UNIQUE = 910,
- ERR_VOID_STORAGE_LOOT = 911,
- ERR_VOID_STORAGE_HOLIDAY = 912,
- ERR_VOID_STORAGE_DURATION = 913,
- ERR_VOID_STORAGE_LOAD_FAILED = 914,
- ERR_VOID_STORAGE_INVALID_ITEM = 915,
- ERR_PARENTAL_CONTROLS_CHAT_MUTED = 916,
- ERR_SOR_START_EXPERIENCE_INCOMPLETE = 917,
- ERR_SOR_INVALID_EMAIL = 918,
- ERR_SOR_INVALID_COMMENT = 919,
- ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 920,
- ERR_CHALLENGE_MODE_RESET_KEYSTONE = 921,
- ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 922,
- ERR_REPORT_SUBMITTED_SUCCESSFULLY = 923,
- ERR_REPORT_SUBMISSION_FAILED = 924,
- ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 925,
- ERR_BUG_SUBMITTED_SUCCESSFULLY = 926,
- ERR_CHALLENGE_MODE_ENABLED = 927,
- ERR_CHALLENGE_MODE_DISABLED = 928,
- ERR_PETBATTLE_CREATE_FAILED = 929,
- ERR_PETBATTLE_NOT_HERE = 930,
- ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 931,
- ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 932,
- ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 933,
- ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 934,
- ERR_PETBATTLE_NOT_WHILE_DEAD = 935,
- ERR_PETBATTLE_NOT_WHILE_FLYING = 936,
- ERR_PETBATTLE_TARGET_INVALID = 937,
- ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 938,
- ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 939,
- ERR_PETBATTLE_NOT_A_TRAINER = 940,
- ERR_PETBATTLE_DECLINED = 941,
- ERR_PETBATTLE_IN_BATTLE = 942,
- ERR_PETBATTLE_INVALID_LOADOUT = 943,
- ERR_PETBATTLE_ALL_PETS_DEAD = 944,
- ERR_PETBATTLE_NO_PETS_IN_SLOTS = 945,
- ERR_PETBATTLE_NO_ACCOUNT_LOCK = 946,
- ERR_PETBATTLE_WILD_PET_TAPPED = 947,
- ERR_PETBATTLE_RESTRICTED_ACCOUNT = 948,
- ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 949,
- ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 950,
- ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 951,
- ERR_CANT_HAVE_MORE_PETS = 952,
- ERR_PVP_MAP_NOT_FOUND = 953,
- ERR_PVP_MAP_NOT_SET = 954,
- ERR_PETBATTLE_QUEUE_QUEUED = 955,
- ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 956,
- ERR_PETBATTLE_QUEUE_JOIN_FAILED = 957,
- ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 958,
- ERR_PETBATTLE_QUEUE_REMOVED = 959,
- ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 960,
- ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 961,
- ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 962,
- ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 963,
- ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 964,
- ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 965,
- ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 966,
- ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 967,
- ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 968,
- ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 969,
- ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 970,
- ERR_PETBATTLE_QUEUE_SLOT_DEAD = 971,
- ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 972,
- ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 973,
- ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 974,
- ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 975,
- ERR_HAS_RESTRICTION = 976,
- ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 977,
- ERR_ITEM_UPGRADE_NO_PATH = 978,
- ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 979,
- ERR_BONUS_ROLL_EMPTY = 980,
- ERR_CHALLENGE_MODE_FULL = 981,
- ERR_CHALLENGE_MODE_IN_PROGRESS = 982,
- ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 983,
- ERR_BATTLETAG_FRIEND_NOT_FOUND = 984,
- ERR_BATTLETAG_FRIEND_NOT_VALID = 985,
- ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 986,
- ERR_BATTLETAG_FRIEND_THROTTLED = 987,
- ERR_BATTLETAG_FRIEND_SUCCESS = 988,
- ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 989,
- ERR_PETBATTLE_INTERNAL = 990,
- ERR_CANT_CAGE_PET_YET = 991,
- ERR_NO_LOOT_IN_CHALLENGE_MODE = 992,
- ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 993,
- ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 994,
- ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 995,
- ERR_RECRUIT_A_FRIEND_FAILED = 996,
- ERR_SET_LOOT_PERSONAL = 997,
- ERR_SET_LOOT_METHOD_FAILED_COMBAT = 998,
- ERR_REAGENT_BANK_FULL = 999,
- ERR_REAGENT_BANK_LOCKED = 1000,
- ERR_GARRISON_BUILDING_EXISTS = 1001,
- ERR_GARRISON_INVALID_PLOT = 1002,
- ERR_GARRISON_INVALID_BUILDINGID = 1003,
- ERR_GARRISON_INVALID_PLOT_BUILDING = 1004,
- ERR_GARRISON_REQUIRES_BLUEPRINT = 1005,
- ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1006,
- ERR_GARRISON_NOT_ENOUGH_GOLD = 1007,
- ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1008,
- ERR_ALREADY_USING_LFG_LIST = 1009,
- ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1010,
- ERR_TOY_USE_LIMIT_REACHED = 1011,
- ERR_TOY_ALREADY_KNOWN = 1012,
- ERR_TRANSMOG_SET_ALREADY_KNOWN = 1013,
- ERR_NOT_ENOUGH_CURRENCY = 1014,
- ERR_SPEC_IS_DISABLED = 1015,
- ERR_FEATURE_RESTRICTED_TRIAL = 1016,
- ERR_CANT_BE_OBLITERATED = 1017,
- ERR_CANT_BE_SCRAPPED = 1018,
- ERR_CANT_BE_RECRAFTED = 1019,
- ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1020,
- ERR_MUST_EQUIP_ARTIFACT = 1021,
- ERR_CANT_DO_THAT_RIGHT_NOW = 1022,
- ERR_AFFECTING_COMBAT = 1023,
- ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1024,
- ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1025,
- ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1026,
- ERR_MOVIE_RECORDING_WARNING_PERF = 1027,
- ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1028,
- ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1029,
- ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1030,
- ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1031,
- ERR_NO_CHALLENGE_MODE_REWARD = 1032,
- ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1033,
- ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1034,
- ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1035,
- ERR_TALENT_FAILED_REST_AREA = 1036,
- ERR_CANNOT_ABANDON_LAST_PET = 1037,
- ERR_TEST_CVAR_SET_SSS = 1038,
- ERR_QUEST_TURN_IN_FAIL_REASON = 1039,
- ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1040,
- ERR_TALENT_GRANTED_BY_AURA = 1041,
- ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1042,
- ERR_GLYPH_TARGET_NOT_AVAILABLE = 1043,
- ERR_PVP_WARMODE_TOGGLE_ON = 1044,
- ERR_PVP_WARMODE_TOGGLE_OFF = 1045,
- ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1046,
- ERR_SPELL_FAILED_CANT_FLY_HERE = 1047,
- ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1048,
- ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1049,
- ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1050,
- ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1051,
- ERR_VOICE_CHAT_SERVICE_LOST = 1052,
- ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1053,
- ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1054,
- ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1055,
- ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1056,
- ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1057,
- ERR_VOICE_CHAT_PLAYER_SILENCED = 1058,
- ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1059,
- ERR_VOICE_CHAT_DISABLED = 1060,
- ERR_NO_PVP_REWARD = 1061,
- ERR_CLAIMED_PVP_REWARD = 1062,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1063,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1064,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1065,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1066,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1067,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1068,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1069,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1070,
- ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1071,
- ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1072,
- ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1073,
- ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1074,
- ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1075,
- ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1076,
- ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1077,
- ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1078,
- ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1079,
- ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1080,
- ERR_SOCKETING_REQUIRES_TINKER_GEM = 1081,
- ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1082,
- ERR_SOCKETING_REQUIRES_PRIMORDIAL_GEM = 1083,
- ERR_SOCKETING_PRIMORDIAL_GEM_ONLY_IN_PRIMORDIALSLOT = 1084,
- ERR_LEVEL_LINKING_RESULT_LINKED = 1085,
- ERR_LEVEL_LINKING_RESULT_UNLINKED = 1086,
- ERR_CLUB_FINDER_ERROR_POST_CLUB = 1087,
- ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1088,
- ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1089,
- ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1090,
- ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1091,
- ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1092,
- ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1093,
- ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1094,
- ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1095,
- ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1096,
- ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1097,
- ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1098,
- ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1099,
- ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1100,
- ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1101,
- ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1102,
- ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1103,
- ERR_ITEM_INTERACTION_NO_CONVERSION_OUTPUT = 1104,
- ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1105,
- ERR_SOULBIND_INVALID_CONDUIT = 1106,
- ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1107,
- ERR_SOULBIND_INVALID_TALENT = 1108,
- ERR_SOULBIND_DUPLICATE_CONDUIT = 1109,
- ERR_ACTIVATE_SOULBIND_S = 1110,
- ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1111,
- ERR_CANT_USE_PROFANITY = 1112,
- ERR_NOT_IN_PET_BATTLE = 1113,
- ERR_NOT_IN_NPE = 1114,
- ERR_NO_SPEC = 1115,
- ERR_NO_DOMINATIONSHARD_OVERWRITE = 1116,
- ERR_USE_WEEKLY_REWARDS_DISABLED = 1117,
- ERR_CROSS_FACTION_GROUP_JOINED = 1118,
- ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1119,
- ERR_EQUIPABLESPELLS_SLOTS_FULL = 1120,
- ERR_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN = 1121,
- ERR_CANT_BULK_SELL_ITEM_WITH_REFUND = 1122,
- ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1123,
- ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1124,
- ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1125,
- ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1126,
- ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1127,
- ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1128,
+ ERR_QUEST_PUSH_HIGH_FACTION_S = 494,
+ ERR_QUEST_PUSH_HIGH_FACTION_TO_RECIPIENT_S = 495,
+ ERR_QUEST_PUSH_EXPANSION_S = 496,
+ ERR_QUEST_PUSH_EXPANSION_TO_RECIPIENT_S = 497,
+ ERR_QUEST_PUSH_NOT_GARRISON_OWNER_S = 498,
+ ERR_QUEST_PUSH_NOT_GARRISON_OWNER_TO_RECIPIENT_S = 499,
+ ERR_QUEST_PUSH_WRONG_COVENANT_S = 500,
+ ERR_QUEST_PUSH_WRONG_COVENANT_TO_RECIPIENT_S = 501,
+ ERR_QUEST_PUSH_NEW_PLAYER_EXPERIENCE_S = 502,
+ ERR_QUEST_PUSH_NEW_PLAYER_EXPERIENCE_TO_RECIPIENT_S = 503,
+ ERR_QUEST_PUSH_WRONG_FACTION_S = 504,
+ ERR_QUEST_PUSH_WRONG_FACTION_TO_RECIPIENT_S = 505,
+ ERR_QUEST_PUSH_CROSS_FACTION_RESTRICTED_S = 506,
+ ERR_RAID_GROUP_LOWLEVEL = 507,
+ ERR_RAID_GROUP_ONLY = 508,
+ ERR_RAID_GROUP_FULL = 509,
+ ERR_RAID_GROUP_REQUIREMENTS_UNMATCH = 510,
+ ERR_CORPSE_IS_NOT_IN_INSTANCE = 511,
+ ERR_PVP_KILL_HONORABLE = 512,
+ ERR_PVP_KILL_DISHONORABLE = 513,
+ ERR_SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 514,
+ ERR_SPELL_FAILED_ALREADY_AT_FULL_MANA = 515,
+ ERR_SPELL_FAILED_ALREADY_AT_FULL_POWER_S = 516,
+ ERR_AUTOLOOT_MONEY_S = 517,
+ ERR_GENERIC_STUNNED = 518,
+ ERR_GENERIC_THROTTLE = 519,
+ ERR_CLUB_FINDER_SEARCHING_TOO_FAST = 520,
+ ERR_TARGET_STUNNED = 521,
+ ERR_MUST_REPAIR_DURABILITY = 522,
+ ERR_RAID_YOU_JOINED = 523,
+ ERR_RAID_YOU_LEFT = 524,
+ ERR_INSTANCE_GROUP_JOINED_WITH_PARTY = 525,
+ ERR_INSTANCE_GROUP_JOINED_WITH_RAID = 526,
+ ERR_RAID_MEMBER_ADDED_S = 527,
+ ERR_RAID_MEMBER_REMOVED_S = 528,
+ ERR_INSTANCE_GROUP_ADDED_S = 529,
+ ERR_INSTANCE_GROUP_REMOVED_S = 530,
+ ERR_CLICK_ON_ITEM_TO_FEED = 531,
+ ERR_TOO_MANY_CHAT_CHANNELS = 532,
+ ERR_LOOT_ROLL_PENDING = 533,
+ ERR_LOOT_PLAYER_NOT_FOUND = 534,
+ ERR_NOT_IN_RAID = 535,
+ ERR_LOGGING_OUT = 536,
+ ERR_TARGET_LOGGING_OUT = 537,
+ ERR_NOT_WHILE_MOUNTED = 538,
+ ERR_NOT_WHILE_SHAPESHIFTED = 539,
+ ERR_NOT_IN_COMBAT = 540,
+ ERR_NOT_WHILE_DISARMED = 541,
+ ERR_PET_BROKEN = 542,
+ ERR_TALENT_WIPE_ERROR = 543,
+ ERR_SPEC_WIPE_ERROR = 544,
+ ERR_GLYPH_WIPE_ERROR = 545,
+ ERR_PET_SPEC_WIPE_ERROR = 546,
+ ERR_FEIGN_DEATH_RESISTED = 547,
+ ERR_MEETING_STONE_IN_QUEUE_S = 548,
+ ERR_MEETING_STONE_LEFT_QUEUE_S = 549,
+ ERR_MEETING_STONE_OTHER_MEMBER_LEFT = 550,
+ ERR_MEETING_STONE_PARTY_KICKED_FROM_QUEUE = 551,
+ ERR_MEETING_STONE_MEMBER_STILL_IN_QUEUE = 552,
+ ERR_MEETING_STONE_SUCCESS = 553,
+ ERR_MEETING_STONE_IN_PROGRESS = 554,
+ ERR_MEETING_STONE_MEMBER_ADDED_S = 555,
+ ERR_MEETING_STONE_GROUP_FULL = 556,
+ ERR_MEETING_STONE_NOT_LEADER = 557,
+ ERR_MEETING_STONE_INVALID_LEVEL = 558,
+ ERR_MEETING_STONE_TARGET_NOT_IN_PARTY = 559,
+ ERR_MEETING_STONE_TARGET_INVALID_LEVEL = 560,
+ ERR_MEETING_STONE_MUST_BE_LEADER = 561,
+ ERR_MEETING_STONE_NO_RAID_GROUP = 562,
+ ERR_MEETING_STONE_NEED_PARTY = 563,
+ ERR_MEETING_STONE_NOT_FOUND = 564,
+ ERR_MEETING_STONE_TARGET_IN_VEHICLE = 565,
+ ERR_GUILDEMBLEM_SAME = 566,
+ ERR_EQUIP_TRADE_ITEM = 567,
+ ERR_PVP_TOGGLE_ON = 568,
+ ERR_PVP_TOGGLE_OFF = 569,
+ ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS = 570,
+ ERR_GROUP_JOIN_BATTLEGROUND_DEAD = 571,
+ ERR_GROUP_JOIN_BATTLEGROUND_S = 572,
+ ERR_GROUP_JOIN_BATTLEGROUND_FAIL = 573,
+ ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY = 574,
+ ERR_SOLO_JOIN_BATTLEGROUND_S = 575,
+ ERR_JOIN_SINGLE_SCENARIO_S = 576,
+ ERR_BATTLEGROUND_TOO_MANY_QUEUES = 577,
+ ERR_BATTLEGROUND_CANNOT_QUEUE_FOR_RATED = 578,
+ ERR_BATTLEDGROUND_QUEUED_FOR_RATED = 579,
+ ERR_BATTLEGROUND_TEAM_LEFT_QUEUE = 580,
+ ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND = 581,
+ ERR_ALREADY_IN_ARENA_TEAM_S = 582,
+ ERR_INVALID_PROMOTION_CODE = 583,
+ ERR_BG_PLAYER_JOINED_SS = 584,
+ ERR_BG_PLAYER_LEFT_S = 585,
+ ERR_RESTRICTED_ACCOUNT = 586,
+ ERR_RESTRICTED_ACCOUNT_TRIAL = 587,
+ ERR_PLAY_TIME_EXCEEDED = 588,
+ ERR_APPROACHING_PARTIAL_PLAY_TIME = 589,
+ ERR_APPROACHING_PARTIAL_PLAY_TIME_2 = 590,
+ ERR_APPROACHING_NO_PLAY_TIME = 591,
+ ERR_APPROACHING_NO_PLAY_TIME_2 = 592,
+ ERR_UNHEALTHY_TIME = 593,
+ ERR_CHAT_RESTRICTED_TRIAL = 594,
+ ERR_CHAT_THROTTLED = 595,
+ ERR_MAIL_REACHED_CAP = 596,
+ ERR_INVALID_RAID_TARGET = 597,
+ ERR_RAID_LEADER_READY_CHECK_START_S = 598,
+ ERR_READY_CHECK_IN_PROGRESS = 599,
+ ERR_READY_CHECK_THROTTLED = 600,
+ ERR_DUNGEON_DIFFICULTY_FAILED = 601,
+ ERR_DUNGEON_DIFFICULTY_CHANGED_S = 602,
+ ERR_TRADE_WRONG_REALM = 603,
+ ERR_TRADE_NOT_ON_TAPLIST = 604,
+ ERR_CHAT_PLAYER_AMBIGUOUS_S = 605,
+ ERR_LOOT_CANT_LOOT_THAT_NOW = 606,
+ ERR_LOOT_MASTER_INV_FULL = 607,
+ ERR_LOOT_MASTER_UNIQUE_ITEM = 608,
+ ERR_LOOT_MASTER_OTHER = 609,
+ ERR_FILTERING_YOU_S = 610,
+ ERR_USE_PREVENTED_BY_MECHANIC_S = 611,
+ ERR_ITEM_UNIQUE_EQUIPPABLE = 612,
+ ERR_LFG_LEADER_IS_LFM_S = 613,
+ ERR_LFG_PENDING = 614,
+ ERR_CANT_SPEAK_LANGAGE = 615,
+ ERR_VENDOR_MISSING_TURNINS = 616,
+ ERR_BATTLEGROUND_NOT_IN_TEAM = 617,
+ ERR_NOT_IN_BATTLEGROUND = 618,
+ ERR_NOT_ENOUGH_HONOR_POINTS = 619,
+ ERR_NOT_ENOUGH_ARENA_POINTS = 620,
+ ERR_SOCKETING_REQUIRES_META_GEM = 621,
+ ERR_SOCKETING_META_GEM_ONLY_IN_METASLOT = 622,
+ ERR_SOCKETING_REQUIRES_HYDRAULIC_GEM = 623,
+ ERR_SOCKETING_HYDRAULIC_GEM_ONLY_IN_HYDRAULICSLOT = 624,
+ ERR_SOCKETING_REQUIRES_COGWHEEL_GEM = 625,
+ ERR_SOCKETING_COGWHEEL_GEM_ONLY_IN_COGWHEELSLOT = 626,
+ ERR_SOCKETING_ITEM_TOO_LOW_LEVEL = 627,
+ ERR_ITEM_MAX_COUNT_SOCKETED = 628,
+ ERR_SYSTEM_DISABLED = 629,
+ ERR_QUEST_FAILED_TOO_MANY_DAILY_QUESTS_I = 630,
+ ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 631,
+ ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 632,
+ ERR_USER_SQUELCHED = 633,
+ ERR_ACCOUNT_SILENCED = 634,
+ ERR_PARTY_MEMBER_SILENCED = 635,
+ ERR_PARTY_MEMBER_SILENCED_LFG_DELIST = 636,
+ ERR_TOO_MUCH_GOLD = 637,
+ ERR_NOT_BARBER_SITTING = 638,
+ ERR_QUEST_FAILED_CAIS = 639,
+ ERR_INVITE_RESTRICTED_TRIAL = 640,
+ ERR_VOICE_IGNORE_FULL = 641,
+ ERR_VOICE_IGNORE_SELF = 642,
+ ERR_VOICE_IGNORE_NOT_FOUND = 643,
+ ERR_VOICE_IGNORE_ALREADY_S = 644,
+ ERR_VOICE_IGNORE_ADDED_S = 645,
+ ERR_VOICE_IGNORE_REMOVED_S = 646,
+ ERR_VOICE_IGNORE_AMBIGUOUS = 647,
+ ERR_VOICE_IGNORE_DELETED = 648,
+ ERR_UNKNOWN_MACRO_OPTION_S = 649,
+ ERR_NOT_DURING_ARENA_MATCH = 650,
+ ERR_NOT_IN_RATED_BATTLEGROUND = 651,
+ ERR_PLAYER_SILENCED = 652,
+ ERR_PLAYER_UNSILENCED = 653,
+ ERR_COMSAT_DISCONNECT = 654,
+ ERR_COMSAT_RECONNECT_ATTEMPT = 655,
+ ERR_COMSAT_CONNECT_FAIL = 656,
+ ERR_MAIL_INVALID_ATTACHMENT_SLOT = 657,
+ ERR_MAIL_TOO_MANY_ATTACHMENTS = 658,
+ ERR_MAIL_INVALID_ATTACHMENT = 659,
+ ERR_MAIL_ATTACHMENT_EXPIRED = 660,
+ ERR_VOICE_CHAT_PARENTAL_DISABLE_MIC = 661,
+ ERR_PROFANE_CHAT_NAME = 662,
+ ERR_PLAYER_SILENCED_ECHO = 663,
+ ERR_PLAYER_UNSILENCED_ECHO = 664,
+ ERR_LOOT_CANT_LOOT_THAT = 665,
+ ERR_ARENA_EXPIRED_CAIS = 666,
+ ERR_GROUP_ACTION_THROTTLED = 667,
+ ERR_ALREADY_PICKPOCKETED = 668,
+ ERR_NAME_INVALID = 669,
+ ERR_NAME_NO_NAME = 670,
+ ERR_NAME_TOO_SHORT = 671,
+ ERR_NAME_TOO_LONG = 672,
+ ERR_NAME_MIXED_LANGUAGES = 673,
+ ERR_NAME_PROFANE = 674,
+ ERR_NAME_RESERVED = 675,
+ ERR_NAME_THREE_CONSECUTIVE = 676,
+ ERR_NAME_INVALID_SPACE = 677,
+ ERR_NAME_CONSECUTIVE_SPACES = 678,
+ ERR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 679,
+ ERR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 680,
+ ERR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 681,
+ ERR_RECRUIT_A_FRIEND_NOT_LINKED = 682,
+ ERR_RECRUIT_A_FRIEND_NOT_NOW = 683,
+ ERR_RECRUIT_A_FRIEND_SUMMON_LEVEL_MAX = 684,
+ ERR_RECRUIT_A_FRIEND_SUMMON_COOLDOWN = 685,
+ ERR_RECRUIT_A_FRIEND_SUMMON_OFFLINE = 686,
+ ERR_RECRUIT_A_FRIEND_INSUF_EXPAN_LVL = 687,
+ ERR_RECRUIT_A_FRIEND_MAP_INCOMING_TRANSFER_NOT_ALLOWED = 688,
+ ERR_NOT_SAME_ACCOUNT = 689,
+ ERR_BAD_ON_USE_ENCHANT = 690,
+ ERR_TRADE_SELF = 691,
+ ERR_TOO_MANY_SOCKETS = 692,
+ ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 693,
+ ERR_TRADE_TARGET_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 694,
+ ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS = 695,
+ ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS = 696,
+ ERR_SHAPESHIFT_FORM_CANNOT_EQUIP = 697,
+ ERR_ITEM_INVENTORY_FULL_SATCHEL = 698,
+ ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 699,
+ ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW = 700,
+ ERR_PURCHASE_LEVEL_TOO_LOW = 701,
+ ERR_GROUP_SWAP_FAILED = 702,
+ ERR_INVITE_IN_COMBAT = 703,
+ ERR_INVALID_GLYPH_SLOT = 704,
+ ERR_GENERIC_NO_VALID_TARGETS = 705,
+ ERR_CALENDAR_EVENT_ALERT_S = 706,
+ ERR_PET_LEARN_SPELL_S = 707,
+ ERR_PET_LEARN_ABILITY_S = 708,
+ ERR_PET_SPELL_UNLEARNED_S = 709,
+ ERR_INVITE_UNKNOWN_REALM = 710,
+ ERR_INVITE_NO_PARTY_SERVER = 711,
+ ERR_INVITE_PARTY_BUSY = 712,
+ ERR_INVITE_PARTY_BUSY_PENDING_REQUEST = 713,
+ ERR_INVITE_PARTY_BUSY_PENDING_SUGGEST = 714,
+ ERR_PARTY_TARGET_AMBIGUOUS = 715,
+ ERR_PARTY_LFG_INVITE_RAID_LOCKED = 716,
+ ERR_PARTY_LFG_BOOT_LIMIT = 717,
+ ERR_PARTY_LFG_BOOT_COOLDOWN_S = 718,
+ ERR_PARTY_LFG_BOOT_NOT_ELIGIBLE_S = 719,
+ ERR_PARTY_LFG_BOOT_INPATIENT_TIMER_S = 720,
+ ERR_PARTY_LFG_BOOT_IN_PROGRESS = 721,
+ ERR_PARTY_LFG_BOOT_TOO_FEW_PLAYERS = 722,
+ ERR_PARTY_LFG_BOOT_VOTE_SUCCEEDED = 723,
+ ERR_PARTY_LFG_BOOT_VOTE_FAILED = 724,
+ ERR_PARTY_LFG_BOOT_IN_COMBAT = 725,
+ ERR_PARTY_LFG_BOOT_DUNGEON_COMPLETE = 726,
+ ERR_PARTY_LFG_BOOT_LOOT_ROLLS = 727,
+ ERR_PARTY_LFG_BOOT_VOTE_REGISTERED = 728,
+ ERR_PARTY_PRIVATE_GROUP_ONLY = 729,
+ ERR_PARTY_LFG_TELEPORT_IN_COMBAT = 730,
+ ERR_RAID_DISALLOWED_BY_LEVEL = 731,
+ ERR_RAID_DISALLOWED_BY_CROSS_REALM = 732,
+ ERR_PARTY_ROLE_NOT_AVAILABLE = 733,
+ ERR_JOIN_LFG_OBJECT_FAILED = 734,
+ ERR_LFG_REMOVED_LEVELUP = 735,
+ ERR_LFG_REMOVED_XP_TOGGLE = 736,
+ ERR_LFG_REMOVED_FACTION_CHANGE = 737,
+ ERR_BATTLEGROUND_INFO_THROTTLED = 738,
+ ERR_BATTLEGROUND_ALREADY_IN = 739,
+ ERR_ARENA_TEAM_CHANGE_FAILED_QUEUED = 740,
+ ERR_ARENA_TEAM_PERMISSIONS = 741,
+ ERR_NOT_WHILE_FALLING = 742,
+ ERR_NOT_WHILE_MOVING = 743,
+ ERR_NOT_WHILE_FATIGUED = 744,
+ ERR_MAX_SOCKETS = 745,
+ ERR_MULTI_CAST_ACTION_TOTEM_S = 746,
+ ERR_BATTLEGROUND_JOIN_LEVELUP = 747,
+ ERR_REMOVE_FROM_PVP_QUEUE_XP_GAIN = 748,
+ ERR_BATTLEGROUND_JOIN_XP_GAIN = 749,
+ ERR_BATTLEGROUND_JOIN_MERCENARY = 750,
+ ERR_BATTLEGROUND_JOIN_TOO_MANY_HEALERS = 751,
+ ERR_BATTLEGROUND_JOIN_RATED_TOO_MANY_HEALERS = 752,
+ ERR_BATTLEGROUND_JOIN_TOO_MANY_TANKS = 753,
+ ERR_BATTLEGROUND_JOIN_TOO_MANY_DAMAGE = 754,
+ ERR_RAID_DIFFICULTY_FAILED = 755,
+ ERR_RAID_DIFFICULTY_CHANGED_S = 756,
+ ERR_LEGACY_RAID_DIFFICULTY_CHANGED_S = 757,
+ ERR_RAID_LOCKOUT_CHANGED_S = 758,
+ ERR_RAID_CONVERTED_TO_PARTY = 759,
+ ERR_PARTY_CONVERTED_TO_RAID = 760,
+ ERR_PLAYER_DIFFICULTY_CHANGED_S = 761,
+ ERR_GMRESPONSE_DB_ERROR = 762,
+ ERR_BATTLEGROUND_JOIN_RANGE_INDEX = 763,
+ ERR_ARENA_JOIN_RANGE_INDEX = 764,
+ ERR_REMOVE_FROM_PVP_QUEUE_FACTION_CHANGE = 765,
+ ERR_BATTLEGROUND_JOIN_FAILED = 766,
+ ERR_BATTLEGROUND_JOIN_NO_VALID_SPEC_FOR_ROLE = 767,
+ ERR_BATTLEGROUND_JOIN_RESPEC = 768,
+ ERR_BATTLEGROUND_INVITATION_DECLINED = 769,
+ ERR_BATTLEGROUND_INVITATION_DECLINED_BY = 770,
+ ERR_BATTLEGROUND_JOIN_TIMED_OUT = 771,
+ ERR_BATTLEGROUND_DUPE_QUEUE = 772,
+ ERR_BATTLEGROUND_JOIN_MUST_COMPLETE_QUEST = 773,
+ ERR_IN_BATTLEGROUND_RESPEC = 774,
+ ERR_MAIL_LIMITED_DURATION_ITEM = 775,
+ ERR_YELL_RESTRICTED_TRIAL = 776,
+ ERR_CHAT_RAID_RESTRICTED_TRIAL = 777,
+ ERR_LFG_ROLE_CHECK_FAILED = 778,
+ ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT = 779,
+ ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE = 780,
+ ERR_LFG_READY_CHECK_FAILED = 781,
+ ERR_LFG_READY_CHECK_FAILED_TIMEOUT = 782,
+ ERR_LFG_GROUP_FULL = 783,
+ ERR_LFG_NO_LFG_OBJECT = 784,
+ ERR_LFG_NO_SLOTS_PLAYER = 785,
+ ERR_LFG_NO_SLOTS_PARTY = 786,
+ ERR_LFG_NO_SPEC = 787,
+ ERR_LFG_MISMATCHED_SLOTS = 788,
+ ERR_LFG_MISMATCHED_SLOTS_LOCAL_XREALM = 789,
+ ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 790,
+ ERR_LFG_MEMBERS_NOT_PRESENT = 791,
+ ERR_LFG_GET_INFO_TIMEOUT = 792,
+ ERR_LFG_INVALID_SLOT = 793,
+ ERR_LFG_DESERTER_PLAYER = 794,
+ ERR_LFG_DESERTER_PARTY = 795,
+ ERR_LFG_DEAD = 796,
+ ERR_LFG_RANDOM_COOLDOWN_PLAYER = 797,
+ ERR_LFG_RANDOM_COOLDOWN_PARTY = 798,
+ ERR_LFG_TOO_MANY_MEMBERS = 799,
+ ERR_LFG_TOO_FEW_MEMBERS = 800,
+ ERR_LFG_PROPOSAL_FAILED = 801,
+ ERR_LFG_PROPOSAL_DECLINED_SELF = 802,
+ ERR_LFG_PROPOSAL_DECLINED_PARTY = 803,
+ ERR_LFG_NO_SLOTS_SELECTED = 804,
+ ERR_LFG_NO_ROLES_SELECTED = 805,
+ ERR_LFG_ROLE_CHECK_INITIATED = 806,
+ ERR_LFG_READY_CHECK_INITIATED = 807,
+ ERR_LFG_PLAYER_DECLINED_ROLE_CHECK = 808,
+ ERR_LFG_PLAYER_DECLINED_READY_CHECK = 809,
+ ERR_LFG_JOINED_QUEUE = 810,
+ ERR_LFG_JOINED_FLEX_QUEUE = 811,
+ ERR_LFG_JOINED_RF_QUEUE = 812,
+ ERR_LFG_JOINED_SCENARIO_QUEUE = 813,
+ ERR_LFG_JOINED_WORLD_PVP_QUEUE = 814,
+ ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 815,
+ ERR_LFG_JOINED_LIST = 816,
+ ERR_LFG_LEFT_QUEUE = 817,
+ ERR_LFG_LEFT_LIST = 818,
+ ERR_LFG_ROLE_CHECK_ABORTED = 819,
+ ERR_LFG_READY_CHECK_ABORTED = 820,
+ ERR_LFG_CANT_USE_BATTLEGROUND = 821,
+ ERR_LFG_CANT_USE_DUNGEONS = 822,
+ ERR_LFG_REASON_TOO_MANY_LFG = 823,
+ ERR_LFG_FARM_LIMIT = 824,
+ ERR_LFG_NO_CROSS_FACTION_PARTIES = 825,
+ ERR_INVALID_TELEPORT_LOCATION = 826,
+ ERR_TOO_FAR_TO_INTERACT = 827,
+ ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 828,
+ ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 829,
+ ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 830,
+ ERR_DIFFICULTY_CHANGE_WORLDSTATE = 831,
+ ERR_DIFFICULTY_CHANGE_ENCOUNTER = 832,
+ ERR_DIFFICULTY_CHANGE_COMBAT = 833,
+ ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 834,
+ ERR_DIFFICULTY_CHANGE_PLAYER_ON_VEHICLE = 835,
+ ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 836,
+ ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 837,
+ ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 838,
+ ERR_ARENA_TEAM_PARTY_SIZE = 839,
+ ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 840,
+ ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 841,
+ ERR_SOLO_MIN_ITEM_LEVEL = 842,
+ ERR_PVP_PLAYER_ABANDONED = 843,
+ ERR_BATTLEGROUND_JOIN_GROUP_QUEUE_WITHOUT_HEALER = 844,
+ ERR_QUEST_FORCE_REMOVED_S = 845,
+ ERR_ATTACK_NO_ACTIONS = 846,
+ ERR_IN_RANDOM_BG = 847,
+ ERR_IN_NON_RANDOM_BG = 848,
+ ERR_BN_FRIEND_SELF = 849,
+ ERR_BN_FRIEND_ALREADY = 850,
+ ERR_BN_FRIEND_BLOCKED = 851,
+ ERR_BN_FRIEND_LIST_FULL = 852,
+ ERR_BN_FRIEND_REQUEST_SENT = 853,
+ ERR_BN_BROADCAST_THROTTLE = 854,
+ ERR_BG_DEVELOPER_ONLY = 855,
+ ERR_CURRENCY_SPELL_SLOT_MISMATCH = 856,
+ ERR_CURRENCY_NOT_TRADABLE = 857,
+ ERR_REQUIRES_EXPANSION_S = 858,
+ ERR_QUEST_FAILED_SPELL = 859,
+ ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 860,
+ ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 861,
+ ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 862,
+ ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 863,
+ ERR_TALENT_FAILED_UNKNOWN = 864,
+ ERR_TALENT_FAILED_IN_COMBAT = 865,
+ ERR_TALENT_FAILED_IN_PVP_MATCH = 866,
+ ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 867,
+ ERR_WARGAME_REQUEST_FAILURE = 868,
+ ERR_RANK_REQUIRES_AUTHENTICATOR = 869,
+ ERR_GUILD_BANK_VOUCHER_FAILED = 870,
+ ERR_WARGAME_REQUEST_SENT = 871,
+ ERR_REQUIRES_ACHIEVEMENT_I = 872,
+ ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 873,
+ ERR_CANT_BUY_QUANTITY = 874,
+ ERR_ITEM_IS_BATTLE_PAY_LOCKED = 875,
+ ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 876,
+ ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 877,
+ ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 878,
+ ERR_INSUFF_TRACKED_CURRENCY_IS = 879,
+ ERR_NOT_ON_TOURNAMENT_REALM = 880,
+ ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 881,
+ ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 882,
+ ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 883,
+ ERR_CANT_DO_THAT_IN_A_GROUP = 884,
+ ERR_GUILD_LEADER_REPLACED = 885,
+ ERR_TRANSMOGRIFY_CANT_EQUIP = 886,
+ ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 887,
+ ERR_TRANSMOGRIFY_NOT_SOULBOUND = 888,
+ ERR_TRANSMOGRIFY_INVALID_SOURCE = 889,
+ ERR_TRANSMOGRIFY_INVALID_DESTINATION = 890,
+ ERR_TRANSMOGRIFY_MISMATCH = 891,
+ ERR_TRANSMOGRIFY_LEGENDARY = 892,
+ ERR_TRANSMOGRIFY_SAME_ITEM = 893,
+ ERR_TRANSMOGRIFY_SAME_APPEARANCE = 894,
+ ERR_TRANSMOGRIFY_NOT_EQUIPPED = 895,
+ ERR_VOID_DEPOSIT_FULL = 896,
+ ERR_VOID_WITHDRAW_FULL = 897,
+ ERR_VOID_STORAGE_WRAPPED = 898,
+ ERR_VOID_STORAGE_STACKABLE = 899,
+ ERR_VOID_STORAGE_UNBOUND = 900,
+ ERR_VOID_STORAGE_REPAIR = 901,
+ ERR_VOID_STORAGE_CHARGES = 902,
+ ERR_VOID_STORAGE_QUEST = 903,
+ ERR_VOID_STORAGE_CONJURED = 904,
+ ERR_VOID_STORAGE_MAIL = 905,
+ ERR_VOID_STORAGE_BAG = 906,
+ ERR_VOID_TRANSFER_STORAGE_FULL = 907,
+ ERR_VOID_TRANSFER_INV_FULL = 908,
+ ERR_VOID_TRANSFER_INTERNAL_ERROR = 909,
+ ERR_VOID_TRANSFER_ITEM_INVALID = 910,
+ ERR_DIFFICULTY_DISABLED_IN_LFG = 911,
+ ERR_VOID_STORAGE_UNIQUE = 912,
+ ERR_VOID_STORAGE_LOOT = 913,
+ ERR_VOID_STORAGE_HOLIDAY = 914,
+ ERR_VOID_STORAGE_DURATION = 915,
+ ERR_VOID_STORAGE_LOAD_FAILED = 916,
+ ERR_VOID_STORAGE_INVALID_ITEM = 917,
+ ERR_PARENTAL_CONTROLS_CHAT_MUTED = 918,
+ ERR_SOR_START_EXPERIENCE_INCOMPLETE = 919,
+ ERR_SOR_INVALID_EMAIL = 920,
+ ERR_SOR_INVALID_COMMENT = 921,
+ ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 922,
+ ERR_CHALLENGE_MODE_RESET_KEYSTONE = 923,
+ ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 924,
+ ERR_REPORT_SUBMITTED_SUCCESSFULLY = 925,
+ ERR_REPORT_SUBMISSION_FAILED = 926,
+ ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 927,
+ ERR_BUG_SUBMITTED_SUCCESSFULLY = 928,
+ ERR_CHALLENGE_MODE_ENABLED = 929,
+ ERR_CHALLENGE_MODE_DISABLED = 930,
+ ERR_PETBATTLE_CREATE_FAILED = 931,
+ ERR_PETBATTLE_NOT_HERE = 932,
+ ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 933,
+ ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 934,
+ ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 935,
+ ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 936,
+ ERR_PETBATTLE_NOT_WHILE_DEAD = 937,
+ ERR_PETBATTLE_NOT_WHILE_FLYING = 938,
+ ERR_PETBATTLE_TARGET_INVALID = 939,
+ ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 940,
+ ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 941,
+ ERR_PETBATTLE_NOT_A_TRAINER = 942,
+ ERR_PETBATTLE_DECLINED = 943,
+ ERR_PETBATTLE_IN_BATTLE = 944,
+ ERR_PETBATTLE_INVALID_LOADOUT = 945,
+ ERR_PETBATTLE_ALL_PETS_DEAD = 946,
+ ERR_PETBATTLE_NO_PETS_IN_SLOTS = 947,
+ ERR_PETBATTLE_NO_ACCOUNT_LOCK = 948,
+ ERR_PETBATTLE_WILD_PET_TAPPED = 949,
+ ERR_PETBATTLE_RESTRICTED_ACCOUNT = 950,
+ ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 951,
+ ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 952,
+ ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 953,
+ ERR_CANT_HAVE_MORE_PETS = 954,
+ ERR_PVP_MAP_NOT_FOUND = 955,
+ ERR_PVP_MAP_NOT_SET = 956,
+ ERR_PETBATTLE_QUEUE_QUEUED = 957,
+ ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 958,
+ ERR_PETBATTLE_QUEUE_JOIN_FAILED = 959,
+ ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 960,
+ ERR_PETBATTLE_QUEUE_REMOVED = 961,
+ ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 962,
+ ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 963,
+ ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 964,
+ ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 965,
+ ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 966,
+ ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 967,
+ ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 968,
+ ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 969,
+ ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 970,
+ ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 971,
+ ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 972,
+ ERR_PETBATTLE_QUEUE_SLOT_DEAD = 973,
+ ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 974,
+ ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 975,
+ ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 976,
+ ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 977,
+ ERR_HAS_RESTRICTION = 978,
+ ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 979,
+ ERR_ITEM_UPGRADE_NO_PATH = 980,
+ ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 981,
+ ERR_BONUS_ROLL_EMPTY = 982,
+ ERR_CHALLENGE_MODE_FULL = 983,
+ ERR_CHALLENGE_MODE_IN_PROGRESS = 984,
+ ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 985,
+ ERR_BATTLETAG_FRIEND_NOT_FOUND = 986,
+ ERR_BATTLETAG_FRIEND_NOT_VALID = 987,
+ ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 988,
+ ERR_BATTLETAG_FRIEND_THROTTLED = 989,
+ ERR_BATTLETAG_FRIEND_SUCCESS = 990,
+ ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 991,
+ ERR_PETBATTLE_INTERNAL = 992,
+ ERR_CANT_CAGE_PET_YET = 993,
+ ERR_NO_LOOT_IN_CHALLENGE_MODE = 994,
+ ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 995,
+ ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 996,
+ ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 997,
+ ERR_RECRUIT_A_FRIEND_FAILED = 998,
+ ERR_SET_LOOT_PERSONAL = 999,
+ ERR_SET_LOOT_METHOD_FAILED_COMBAT = 1000,
+ ERR_REAGENT_BANK_FULL = 1001,
+ ERR_REAGENT_BANK_LOCKED = 1002,
+ ERR_GARRISON_BUILDING_EXISTS = 1003,
+ ERR_GARRISON_INVALID_PLOT = 1004,
+ ERR_GARRISON_INVALID_BUILDINGID = 1005,
+ ERR_GARRISON_INVALID_PLOT_BUILDING = 1006,
+ ERR_GARRISON_REQUIRES_BLUEPRINT = 1007,
+ ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1008,
+ ERR_GARRISON_NOT_ENOUGH_GOLD = 1009,
+ ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1010,
+ ERR_ALREADY_USING_LFG_LIST = 1011,
+ ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1012,
+ ERR_TOY_USE_LIMIT_REACHED = 1013,
+ ERR_TOY_ALREADY_KNOWN = 1014,
+ ERR_TRANSMOG_SET_ALREADY_KNOWN = 1015,
+ ERR_NOT_ENOUGH_CURRENCY = 1016,
+ ERR_SPEC_IS_DISABLED = 1017,
+ ERR_FEATURE_RESTRICTED_TRIAL = 1018,
+ ERR_CANT_BE_OBLITERATED = 1019,
+ ERR_CANT_BE_SCRAPPED = 1020,
+ ERR_CANT_BE_RECRAFTED = 1021,
+ ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1022,
+ ERR_MUST_EQUIP_ARTIFACT = 1023,
+ ERR_CANT_DO_THAT_RIGHT_NOW = 1024,
+ ERR_AFFECTING_COMBAT = 1025,
+ ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1026,
+ ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1027,
+ ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1028,
+ ERR_MOVIE_RECORDING_WARNING_PERF = 1029,
+ ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1030,
+ ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1031,
+ ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1032,
+ ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1033,
+ ERR_NO_CHALLENGE_MODE_REWARD = 1034,
+ ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1035,
+ ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1036,
+ ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1037,
+ ERR_TALENT_FAILED_REST_AREA = 1038,
+ ERR_CANNOT_ABANDON_LAST_PET = 1039,
+ ERR_TEST_CVAR_SET_SSS = 1040,
+ ERR_QUEST_TURN_IN_FAIL_REASON = 1041,
+ ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1042,
+ ERR_TALENT_GRANTED_BY_AURA = 1043,
+ ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1044,
+ ERR_GLYPH_TARGET_NOT_AVAILABLE = 1045,
+ ERR_PVP_WARMODE_TOGGLE_ON = 1046,
+ ERR_PVP_WARMODE_TOGGLE_OFF = 1047,
+ ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1048,
+ ERR_SPELL_FAILED_CANT_FLY_HERE = 1049,
+ ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1050,
+ ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1051,
+ ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1052,
+ ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1053,
+ ERR_VOICE_CHAT_SERVICE_LOST = 1054,
+ ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1055,
+ ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1056,
+ ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1057,
+ ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1058,
+ ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1059,
+ ERR_VOICE_CHAT_PLAYER_SILENCED = 1060,
+ ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1061,
+ ERR_VOICE_CHAT_DISABLED = 1062,
+ ERR_NO_PVP_REWARD = 1063,
+ ERR_CLAIMED_PVP_REWARD = 1064,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1065,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1066,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1067,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1068,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1069,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1070,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1071,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1072,
+ ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1073,
+ ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1074,
+ ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1075,
+ ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1076,
+ ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1077,
+ ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1078,
+ ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1079,
+ ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1080,
+ ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1081,
+ ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1082,
+ ERR_SOCKETING_REQUIRES_TINKER_GEM = 1083,
+ ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1084,
+ ERR_SOCKETING_REQUIRES_PRIMORDIAL_GEM = 1085,
+ ERR_SOCKETING_PRIMORDIAL_GEM_ONLY_IN_PRIMORDIALSLOT = 1086,
+ ERR_LEVEL_LINKING_RESULT_LINKED = 1087,
+ ERR_LEVEL_LINKING_RESULT_UNLINKED = 1088,
+ ERR_CLUB_FINDER_ERROR_POST_CLUB = 1089,
+ ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1090,
+ ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1091,
+ ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1092,
+ ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1093,
+ ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1094,
+ ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1095,
+ ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1096,
+ ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1097,
+ ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1098,
+ ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1099,
+ ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1100,
+ ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1101,
+ ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1102,
+ ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1103,
+ ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1104,
+ ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1105,
+ ERR_ITEM_INTERACTION_NO_CONVERSION_OUTPUT = 1106,
+ ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1107,
+ ERR_SOULBIND_INVALID_CONDUIT = 1108,
+ ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1109,
+ ERR_SOULBIND_INVALID_TALENT = 1110,
+ ERR_SOULBIND_DUPLICATE_CONDUIT = 1111,
+ ERR_ACTIVATE_SOULBIND_S = 1112,
+ ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1113,
+ ERR_CANT_USE_PROFANITY = 1114,
+ ERR_NOT_IN_PET_BATTLE = 1115,
+ ERR_NOT_IN_NPE = 1116,
+ ERR_NO_SPEC = 1117,
+ ERR_NO_DOMINATIONSHARD_OVERWRITE = 1118,
+ ERR_USE_WEEKLY_REWARDS_DISABLED = 1119,
+ ERR_CROSS_FACTION_GROUP_JOINED = 1120,
+ ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1121,
+ ERR_EQUIPABLESPELLS_SLOTS_FULL = 1122,
+ ERR_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN = 1123,
+ ERR_CANT_BULK_SELL_ITEM_WITH_REFUND = 1124,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1125,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1126,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1127,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1128,
+ ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1129,
+ ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1130,
+ ERR_TARGET_IS_SELF_FOUND_CANNOT_TRADE = 1131,
+ ERR_PLAYER_IS_SELF_FOUND_CANNOT_TRADE = 1132,
+ ERR_MAIL_RECEPIENT_IS_SELF_FOUND_CANNOT_RECEIVE_MAIL = 1133,
+ ERR_PLAYER_IS_SELF_FOUND_CANNOT_SEND_MAIL = 1134,
+ ERR_PLAYER_IS_SELF_FOUND_CANNOT_USE_AUCTION_HOUSE = 1135,
+ ERR_MAIL_TARGET_CANNOT_RECEIVE_MAIL = 1136,
};
enum class MountResult : uint32
diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h
index e91e0396913..41c253adf29 100644
--- a/src/server/game/Quests/QuestDef.h
+++ b/src/server/game/Quests/QuestDef.h
@@ -106,16 +106,19 @@ enum class QuestPushReason : uint8
RaceToRecipient = 29, // "%s's attempt to share quest "%s" failed. You are the wrong race for that quest."
LowFaction = 30, // "%s's reputation is too low for that quest."
LowFactionToRecipient = 31, // "%s's attempt to share quest "%s" failed. Your reputation is too low for that quest."
- Expansion = 32, // "%s doesn't own the required expansion for that quest."
- ExpansionToRecipient = 33, // "%s's attempt to share quest "%s" failed. You do not own the required expansion for that quest."
- NotGarrisonOwner = 34, // "%s must own a garrison to accept that quest."
- NotGarrisonOwnerToRecipient = 35, // "%s's attempt to share quest "%s" failed. You must own a garrison to accept that quest."
- WrongCovenant = 36, // "%s is in the wrong covenant for that quest."
- WrongCovenantToRecipient = 37, // "%s's attempt to share quest "%s" failed. You are in the wrong covenant for that quest."
- NewPlayerExperience = 38, // "%s must complete Exile's Reach to accept that quest."
- NewPlayerExperienceToRecipient = 39, // "%s's attempt to share quest "%s" failed. You must complete Exile's Reach to accept that quest."
- WrongFaction = 40, // "%s is the wrong faction for that quest."
- WrongFactionToRecipient = 41 // "%s's attempt to share quest "%s" failed. You are the wrong faction for that quest."
+ HighFaction = 32, // "%s's reputation is too high for that quest."
+ HighFactionToRecipient = 33, // "%s's attempt to share quest "%s" failed. Your reputation is too high for that quest."
+ Expansion = 34, // "%s doesn't own the required expansion for that quest."
+ ExpansionToRecipient = 35, // "%s's attempt to share quest "%s" failed. You do not own the required expansion for that quest."
+ NotGarrisonOwner = 36, // "%s must own a garrison to accept that quest."
+ NotGarrisonOwnerToRecipient = 37, // "%s's attempt to share quest "%s" failed. You must own a garrison to accept that quest."
+ WrongCovenant = 38, // "%s is in the wrong covenant for that quest."
+ WrongCovenantToRecipient = 39, // "%s's attempt to share quest "%s" failed. You are in the wrong covenant for that quest."
+ NewPlayerExperience = 40, // "%s must complete Exile's Reach to accept that quest."
+ NewPlayerExperienceToRecipient = 41, // "%s's attempt to share quest "%s" failed. You must complete Exile's Reach to accept that quest."
+ WrongFaction = 42, // "%s is the wrong faction for that quest."
+ WrongFactionToRecipient = 43, // "%s's attempt to share quest "%s" failed. You are the wrong faction for that quest."
+ CrossFactionRestricted = 44, // "Quests can't be shared in cross-faction groups."
};
enum QuestTradeSkill
diff --git a/src/server/game/Quests/enuminfo_QuestDef.cpp b/src/server/game/Quests/enuminfo_QuestDef.cpp
index 594b5e7730e..94d0a3c3dfd 100644
--- a/src/server/game/Quests/enuminfo_QuestDef.cpp
+++ b/src/server/game/Quests/enuminfo_QuestDef.cpp
@@ -138,6 +138,8 @@ TC_API_EXPORT EnumText EnumUtils<QuestPushReason>::ToString(QuestPushReason valu
case QuestPushReason::RaceToRecipient: return { "RaceToRecipient", "RaceToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You are the wrong race for that quest.\042" };
case QuestPushReason::LowFaction: return { "LowFaction", "LowFaction", "\042%s's reputation is too low for that quest.\042" };
case QuestPushReason::LowFactionToRecipient: return { "LowFactionToRecipient", "LowFactionToRecipient", "\042%s's attempt to share quest \042%s\042 failed. Your reputation is too low for that quest.\042" };
+ case QuestPushReason::HighFaction: return { "HighFaction", "HighFaction", "\042%s's reputation is too high for that quest.\042" };
+ case QuestPushReason::HighFactionToRecipient: return { "HighFactionToRecipient", "HighFactionToRecipient", "\042%s's attempt to share quest \042%s\042 failed. Your reputation is too high for that quest.\042" };
case QuestPushReason::Expansion: return { "Expansion", "Expansion", "\042%s doesn't own the required expansion for that quest.\042" };
case QuestPushReason::ExpansionToRecipient: return { "ExpansionToRecipient", "ExpansionToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You do not own the required expansion for that quest.\042" };
case QuestPushReason::NotGarrisonOwner: return { "NotGarrisonOwner", "NotGarrisonOwner", "\042%s must own a garrison to accept that quest.\042" };
@@ -148,12 +150,13 @@ TC_API_EXPORT EnumText EnumUtils<QuestPushReason>::ToString(QuestPushReason valu
case QuestPushReason::NewPlayerExperienceToRecipient: return { "NewPlayerExperienceToRecipient", "NewPlayerExperienceToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You must complete Exile's Reach to accept that quest.\042" };
case QuestPushReason::WrongFaction: return { "WrongFaction", "WrongFaction", "\042%s is the wrong faction for that quest.\042" };
case QuestPushReason::WrongFactionToRecipient: return { "WrongFactionToRecipient", "WrongFactionToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You are the wrong faction for that quest.\042" };
+ case QuestPushReason::CrossFactionRestricted: return { "CrossFactionRestricted", "CrossFactionRestricted", "\042Quests can't be shared in cross-faction groups.\042" };
default: throw std::out_of_range("value");
}
}
template <>
-TC_API_EXPORT size_t EnumUtils<QuestPushReason>::Count() { return 42; }
+TC_API_EXPORT size_t EnumUtils<QuestPushReason>::Count() { return 45; }
template <>
TC_API_EXPORT QuestPushReason EnumUtils<QuestPushReason>::FromIndex(size_t index)
@@ -192,16 +195,19 @@ TC_API_EXPORT QuestPushReason EnumUtils<QuestPushReason>::FromIndex(size_t index
case 29: return QuestPushReason::RaceToRecipient;
case 30: return QuestPushReason::LowFaction;
case 31: return QuestPushReason::LowFactionToRecipient;
- case 32: return QuestPushReason::Expansion;
- case 33: return QuestPushReason::ExpansionToRecipient;
- case 34: return QuestPushReason::NotGarrisonOwner;
- case 35: return QuestPushReason::NotGarrisonOwnerToRecipient;
- case 36: return QuestPushReason::WrongCovenant;
- case 37: return QuestPushReason::WrongCovenantToRecipient;
- case 38: return QuestPushReason::NewPlayerExperience;
- case 39: return QuestPushReason::NewPlayerExperienceToRecipient;
- case 40: return QuestPushReason::WrongFaction;
- case 41: return QuestPushReason::WrongFactionToRecipient;
+ case 32: return QuestPushReason::HighFaction;
+ case 33: return QuestPushReason::HighFactionToRecipient;
+ case 34: return QuestPushReason::Expansion;
+ case 35: return QuestPushReason::ExpansionToRecipient;
+ case 36: return QuestPushReason::NotGarrisonOwner;
+ case 37: return QuestPushReason::NotGarrisonOwnerToRecipient;
+ case 38: return QuestPushReason::WrongCovenant;
+ case 39: return QuestPushReason::WrongCovenantToRecipient;
+ case 40: return QuestPushReason::NewPlayerExperience;
+ case 41: return QuestPushReason::NewPlayerExperienceToRecipient;
+ case 42: return QuestPushReason::WrongFaction;
+ case 43: return QuestPushReason::WrongFactionToRecipient;
+ case 44: return QuestPushReason::CrossFactionRestricted;
default: throw std::out_of_range("index");
}
}
@@ -243,16 +249,19 @@ TC_API_EXPORT size_t EnumUtils<QuestPushReason>::ToIndex(QuestPushReason value)
case QuestPushReason::RaceToRecipient: return 29;
case QuestPushReason::LowFaction: return 30;
case QuestPushReason::LowFactionToRecipient: return 31;
- case QuestPushReason::Expansion: return 32;
- case QuestPushReason::ExpansionToRecipient: return 33;
- case QuestPushReason::NotGarrisonOwner: return 34;
- case QuestPushReason::NotGarrisonOwnerToRecipient: return 35;
- case QuestPushReason::WrongCovenant: return 36;
- case QuestPushReason::WrongCovenantToRecipient: return 37;
- case QuestPushReason::NewPlayerExperience: return 38;
- case QuestPushReason::NewPlayerExperienceToRecipient: return 39;
- case QuestPushReason::WrongFaction: return 40;
- case QuestPushReason::WrongFactionToRecipient: return 41;
+ case QuestPushReason::HighFaction: return 32;
+ case QuestPushReason::HighFactionToRecipient: return 33;
+ case QuestPushReason::Expansion: return 34;
+ case QuestPushReason::ExpansionToRecipient: return 35;
+ case QuestPushReason::NotGarrisonOwner: return 36;
+ case QuestPushReason::NotGarrisonOwnerToRecipient: return 37;
+ case QuestPushReason::WrongCovenant: return 38;
+ case QuestPushReason::WrongCovenantToRecipient: return 39;
+ case QuestPushReason::NewPlayerExperience: return 40;
+ case QuestPushReason::NewPlayerExperienceToRecipient: return 41;
+ case QuestPushReason::WrongFaction: return 42;
+ case QuestPushReason::WrongFactionToRecipient: return 43;
+ case QuestPushReason::CrossFactionRestricted: return 44;
default: throw std::out_of_range("value");
}
}
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp
index bbb4be0aea5..e30031c22f7 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.cpp
+++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp
@@ -291,6 +291,7 @@ void AuctionBrowseQuery::Read()
KnownPets.resize(knownPetsSize);
_worldPacket >> MaxPetLevel;
+ _worldPacket >> Unused1026;
for (uint8& knownPetMask : KnownPets)
_worldPacket >> knownPetMask;
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.h b/src/server/game/Server/Packets/AuctionHousePackets.h
index 376ee86eee7..ac49c86bc99 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.h
+++ b/src/server/game/Server/Packets/AuctionHousePackets.h
@@ -157,6 +157,7 @@ namespace WorldPackets
AuctionHouseFilterMask Filters = AuctionHouseFilterMask(0);
std::vector<uint8> KnownPets; // size checked separately in Read()
int8 MaxPetLevel = 0;
+ uint32 Unused1026 = 0;
Optional<Addon::AddOnInfo> TaintedBy;
std::string Name;
Array<AuctionListFilterClass, 7> ItemClassFilters;
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index 4519412b40f..2d0982f902f 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -352,6 +352,7 @@ void CreateCharacter::Read()
bool const hasTemplateSet = _worldPacket.ReadBit();
CreateInfo->IsTrialBoost = _worldPacket.ReadBit();
CreateInfo->UseNPE = _worldPacket.ReadBit();
+ CreateInfo->Unused1026 = _worldPacket.ReadBit();
_worldPacket >> CreateInfo->Race;
_worldPacket >> CreateInfo->Class;
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index 61096bb5ed7..df64374efc4 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -64,6 +64,7 @@ namespace WorldPackets
Optional<int32> TemplateSet;
bool IsTrialBoost = false;
bool UseNPE = false;
+ bool Unused1026 = false;
std::string Name;
/// Server side data
diff --git a/src/server/game/Server/Packets/ClientConfigPackets.cpp b/src/server/game/Server/Packets/ClientConfigPackets.cpp
index 2b25c4eabe7..5b9bb2d8f82 100644
--- a/src/server/game/Server/Packets/ClientConfigPackets.cpp
+++ b/src/server/game/Server/Packets/ClientConfigPackets.cpp
@@ -37,15 +37,15 @@ WorldPacket const* WorldPackets::ClientConfig::ClientCacheVersion::Write()
void WorldPackets::ClientConfig::RequestAccountData::Read()
{
_worldPacket >> PlayerGuid;
- DataType = _worldPacket.ReadBits(4);
+ _worldPacket >> DataType;
}
WorldPacket const* WorldPackets::ClientConfig::UpdateAccountData::Write()
{
- _worldPacket << Player;
_worldPacket << Time;
_worldPacket << uint32(Size);
- _worldPacket.WriteBits(DataType, 4);
+ _worldPacket << Player;
+ _worldPacket << int32(DataType);
_worldPacket << uint32(CompressedData.size());
_worldPacket.append(CompressedData);
@@ -54,10 +54,10 @@ WorldPacket const* WorldPackets::ClientConfig::UpdateAccountData::Write()
void WorldPackets::ClientConfig::UserClientUpdateAccountData::Read()
{
- _worldPacket >> PlayerGuid;
_worldPacket >> Time;
_worldPacket >> Size;
- DataType = _worldPacket.ReadBits(4);
+ _worldPacket >> PlayerGuid;
+ _worldPacket >> DataType;
uint32 compressedSize = _worldPacket.read<uint32>();
if (compressedSize > _worldPacket.size() - _worldPacket.rpos())
diff --git a/src/server/game/Server/Packets/ClientConfigPackets.h b/src/server/game/Server/Packets/ClientConfigPackets.h
index 5d6ffcccec6..684231af0fe 100644
--- a/src/server/game/Server/Packets/ClientConfigPackets.h
+++ b/src/server/game/Server/Packets/ClientConfigPackets.h
@@ -56,7 +56,7 @@ namespace WorldPackets
void Read() override;
ObjectGuid PlayerGuid;
- uint8 DataType = 0; ///< @see enum AccountDataType
+ int32 DataType = 0; ///< @see enum AccountDataType
};
class UpdateAccountData final : public ServerPacket
@@ -69,7 +69,7 @@ namespace WorldPackets
ObjectGuid Player;
Timestamp<> Time;
uint32 Size = 0; ///< decompressed size
- uint8 DataType = 0; ///< @see enum AccountDataType
+ int32 DataType = 0; ///< @see enum AccountDataType
ByteBuffer CompressedData;
};
@@ -83,7 +83,7 @@ namespace WorldPackets
ObjectGuid PlayerGuid;
Timestamp<> Time;
uint32 Size = 0; ///< decompressed size
- uint8 DataType = 0; ///< @see enum AccountDataType
+ int32 DataType = 0; ///< @see enum AccountDataType
ByteBuffer CompressedData;
};
diff --git a/src/server/game/Server/Packets/ReputationPackets.cpp b/src/server/game/Server/Packets/ReputationPackets.cpp
index 8896c2071c0..6ba3c02f264 100644
--- a/src/server/game/Server/Packets/ReputationPackets.cpp
+++ b/src/server/game/Server/Packets/ReputationPackets.cpp
@@ -53,6 +53,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Reputation::FactionStandi
{
data << int32(factionStanding.Index);
data << int32(factionStanding.Standing);
+ data << int32(factionStanding.FactionID);
return data;
}
diff --git a/src/server/game/Server/Packets/ReputationPackets.h b/src/server/game/Server/Packets/ReputationPackets.h
index 31fe7a62a9f..c38c4235914 100644
--- a/src/server/game/Server/Packets/ReputationPackets.h
+++ b/src/server/game/Server/Packets/ReputationPackets.h
@@ -67,9 +67,11 @@ namespace WorldPackets
{
FactionStandingData() { }
FactionStandingData(int32 index, int32 standing) : Index(index), Standing(standing) { }
+ FactionStandingData(int32 index, int32 standing, int32 factionId) : Index(index), Standing(standing), FactionID(factionId) { }
int32 Index = 0;
int32 Standing = 0;
+ int32 FactionID = 0;
};
class SetFactionStanding final : public ServerPacket
diff --git a/src/server/game/Server/Packets/ScenePackets.cpp b/src/server/game/Server/Packets/ScenePackets.cpp
index 8622a80f949..e3d4489e8b4 100644
--- a/src/server/game/Server/Packets/ScenePackets.cpp
+++ b/src/server/game/Server/Packets/ScenePackets.cpp
@@ -48,9 +48,11 @@ void WorldPackets::Scenes::SceneTriggerEvent::Read()
void WorldPackets::Scenes::ScenePlaybackComplete::Read()
{
_worldPacket >> SceneInstanceID;
+ _worldPacket >> TimePassed;
}
void WorldPackets::Scenes::ScenePlaybackCanceled::Read()
{
_worldPacket >> SceneInstanceID;
+ _worldPacket >> TimePassed;
}
diff --git a/src/server/game/Server/Packets/ScenePackets.h b/src/server/game/Server/Packets/ScenePackets.h
index c851d61f29f..99f217f5fbe 100644
--- a/src/server/game/Server/Packets/ScenePackets.h
+++ b/src/server/game/Server/Packets/ScenePackets.h
@@ -70,6 +70,7 @@ namespace WorldPackets
void Read() override;
uint32 SceneInstanceID = 0;
+ int32 TimePassed = 0;
};
class ScenePlaybackCanceled final : public ClientPacket
@@ -80,6 +81,7 @@ namespace WorldPackets
void Read() override;
uint32 SceneInstanceID = 0;
+ int32 TimePassed = 0;
};
}
}
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index 1849327538b..db076443f06 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -198,7 +198,7 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write()
_worldPacket.WriteBit(KioskModeEnabled);
_worldPacket.WriteBit(CompetitiveModeEnabled);
- _worldPacket.WriteBit(false); // unused, 10.0.2
+ _worldPacket.WriteBit(IsBoostEnabled);
_worldPacket.WriteBit(TrialBoostEnabled);
_worldPacket.WriteBit(TokenBalanceEnabled);
_worldPacket.WriteBit(LiveRegionCharacterListEnabled);
@@ -209,7 +209,7 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write()
_worldPacket.WriteBit(Unknown901CheckoutRelated);
_worldPacket.WriteBit(false); // unused, 10.0.2
_worldPacket.WriteBit(EuropaTicketSystemStatus.has_value());
- _worldPacket.WriteBit(false); // unused, 10.0.2
+ _worldPacket.WriteBit(IsNameReservationEnabled);
_worldPacket.WriteBit(LaunchETA.has_value());
_worldPacket.WriteBit(AddonsDisabled);
_worldPacket.WriteBit(Unused1000);
@@ -243,6 +243,7 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write()
_worldPacket << PlayerNameQueryInterval;
_worldPacket << uint32(DebugTimeEvents.size());
_worldPacket << int32(Unused1007);
+ _worldPacket << uint32(EventRealmQueues);
if (LaunchETA)
_worldPacket << int32(*LaunchETA);
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index afb0600db98..249cb171a51 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -194,6 +194,7 @@ namespace WorldPackets
bool IsExpansionPreorderInStore = false; // NYI
bool KioskModeEnabled = false; // NYI
bool CompetitiveModeEnabled = false; // NYI
+ bool IsBoostEnabled = false; // classic only
bool TrialBoostEnabled = false; // NYI
bool TokenBalanceEnabled = false; // NYI
bool LiveRegionCharacterListEnabled = false; // NYI
@@ -201,6 +202,7 @@ namespace WorldPackets
bool LiveRegionAccountCopyEnabled = false; // NYI
bool LiveRegionKeyBindingsCopyEnabled = false;
bool Unknown901CheckoutRelated = false; // NYI
+ bool IsNameReservationEnabled = false; // classic only
bool AddonsDisabled = false;
bool Unused1000 = false;
bool AccountSaveDataExportEnabled = false;
@@ -224,6 +226,7 @@ namespace WorldPackets
Optional<int32> LaunchETA;
std::vector<DebugTimeEventInfo> DebugTimeEvents;
int32 Unused1007 = 0;
+ uint32 EventRealmQueues = 0;
Optional<std::string> RealmHiddenAlert;
};
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 613b4e1f970..3a7141cb45a 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -306,6 +306,8 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNSILENCE_ALL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_JOIN_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleJoinChannel);
DEFINE_HANDLER(CMSG_CHAT_LEAVE_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLeaveChannel);
+ DEFINE_HANDLER(CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_INSTANCE_CHAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_PARTY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHAT_MESSAGE_AFK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatMessageAFKOpcode);
DEFINE_HANDLER(CMSG_CHAT_MESSAGE_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatMessageChannelOpcode);
DEFINE_HANDLER(CMSG_CHAT_MESSAGE_DND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatMessageDNDOpcode);
@@ -560,8 +562,17 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_LIVE_REGION_KEY_BINDINGS_COPY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LOADING_SCREEN_NOTIFY, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleLoadScreenOpcode);
DEFINE_HANDLER(CMSG_LOAD_SELECTED_TROPHY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_PARTY_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LOGOUT_CANCEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLogoutCancelOpcode);
DEFINE_HANDLER(CMSG_LOGOUT_INSTANT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_LOGOUT_LOBBY_MATCHMAKER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LOGOUT_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLogoutRequestOpcode);
DEFINE_HANDLER(CMSG_LOG_DISCONNECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess);
DEFINE_HANDLER(CMSG_LOG_STREAMING_ERROR, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -904,6 +915,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SORT_BAGS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSortBags);
DEFINE_HANDLER(CMSG_SORT_BANK_BAGS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSortBankBags);
DEFINE_HANDLER(CMSG_SORT_REAGENT_BANK_BAGS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSortReagentBankBags);
+ DEFINE_HANDLER(CMSG_SPECTATE_CHANGE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SPAWN_TRACKING_UPDATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SPELL_CLICK, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSpellClick);
DEFINE_HANDLER(CMSG_SPELL_EMPOWER_RELEASE, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
@@ -985,6 +997,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_WARDEN3_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleWardenData);
DEFINE_HANDLER(CMSG_WHO, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleWhoOpcode);
DEFINE_HANDLER(CMSG_WHO_IS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleWhoIsOpcode);
+ DEFINE_HANDLER(CMSG_WORLD_LOOT_OBJECT_CLICK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_WORLD_PORT_RESPONSE, STATUS_TRANSFER, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveWorldportAckOpcode);
DEFINE_HANDLER(CMSG_WRAP_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleWrapItem);
@@ -1601,6 +1614,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_CUF_PROFILES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_EQUIPMENT_SET, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_PARTY_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -2034,6 +2048,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SOCKET_GEMS_SUCCESS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECIAL_MOUNT_ANIM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPEC_INVOLUNTARILY_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECTATE_END, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECTATE_PLAYER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_ABSORB_LOG, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_CATEGORY_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_CHANNEL_START, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -2172,6 +2188,10 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_QUEST_UPDATE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_SERVER_INFO, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_ENTITLEMENT_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_LABS_PARTY_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_LABS_SET_PREDICTION_CIRCLE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_XP_AWARDED_FROM_CURRENCY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_XP_GAIN_ABORTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_XP_GAIN_ENABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 3365afbd902..b6436a5dd03 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -90,8 +90,8 @@ enum OpcodeClient : uint16
CMSG_AUCTION_SELL_COMMODITY = 0x34E0,
CMSG_AUCTION_SELL_ITEM = 0x34D3,
CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3735,
- CMSG_AUTH_CONTINUED_SESSION = 0x3766,
- CMSG_AUTH_SESSION = 0x3765,
+ CMSG_AUTH_CONTINUED_SESSION = 0x377A,
+ CMSG_AUTH_SESSION = 0x3779,
CMSG_AUTOBANK_ITEM = 0x3997,
CMSG_AUTOBANK_REAGENT = 0x3999,
CMSG_AUTOSTORE_BANK_ITEM = 0x3996,
@@ -194,43 +194,45 @@ enum OpcodeClient : uint16
CMSG_CHAR_CUSTOMIZE = 0x368C,
CMSG_CHAR_DELETE = 0x369C,
CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3692,
- CMSG_CHAT_ADDON_MESSAGE = 0x37EE,
- CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x37EF,
- CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x37F6,
- CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x37E3,
- CMSG_CHAT_CHANNEL_BAN = 0x37E1,
- CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x37E6,
- CMSG_CHAT_CHANNEL_DISPLAY_LIST = 0x37D6,
- CMSG_CHAT_CHANNEL_INVITE = 0x37DF,
- CMSG_CHAT_CHANNEL_KICK = 0x37E0,
- CMSG_CHAT_CHANNEL_LIST = 0x37D5,
- CMSG_CHAT_CHANNEL_MODERATOR = 0x37DB,
- CMSG_CHAT_CHANNEL_OWNER = 0x37D9,
- CMSG_CHAT_CHANNEL_PASSWORD = 0x37D7,
- CMSG_CHAT_CHANNEL_SET_OWNER = 0x37D8,
- CMSG_CHAT_CHANNEL_SILENCE_ALL = 0x37E4,
- CMSG_CHAT_CHANNEL_UNBAN = 0x37E2,
- CMSG_CHAT_CHANNEL_UNMODERATOR = 0x37DC,
- CMSG_CHAT_CHANNEL_UNSILENCE_ALL = 0x37E5,
- CMSG_CHAT_JOIN_CHANNEL = 0x37C8,
- CMSG_CHAT_LEAVE_CHANNEL = 0x37C9,
- CMSG_CHAT_MESSAGE_AFK = 0x37D3,
- CMSG_CHAT_MESSAGE_CHANNEL = 0x37CF,
- CMSG_CHAT_MESSAGE_DND = 0x37D4,
- CMSG_CHAT_MESSAGE_EMOTE = 0x37E8,
- CMSG_CHAT_MESSAGE_GUILD = 0x37D1,
- CMSG_CHAT_MESSAGE_INSTANCE_CHAT = 0x37EC,
- CMSG_CHAT_MESSAGE_OFFICER = 0x37D2,
- CMSG_CHAT_MESSAGE_PARTY = 0x37EA,
- CMSG_CHAT_MESSAGE_RAID = 0x37EB,
- CMSG_CHAT_MESSAGE_RAID_WARNING = 0x37ED,
- CMSG_CHAT_MESSAGE_SAY = 0x37E7,
- CMSG_CHAT_MESSAGE_WHISPER = 0x37D0,
- CMSG_CHAT_MESSAGE_YELL = 0x37E9,
- CMSG_CHAT_REGISTER_ADDON_PREFIXES = 0x37CD,
- CMSG_CHAT_REPORT_FILTERED = 0x37CC,
- CMSG_CHAT_REPORT_IGNORED = 0x37CB,
- CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE,
+ CMSG_CHAT_ADDON_MESSAGE = 0x3802,
+ CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x3803,
+ CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x380A,
+ CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x37F7,
+ CMSG_CHAT_CHANNEL_BAN = 0x37F5,
+ CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x37FA,
+ CMSG_CHAT_CHANNEL_DISPLAY_LIST = 0x37EA,
+ CMSG_CHAT_CHANNEL_INVITE = 0x37F3,
+ CMSG_CHAT_CHANNEL_KICK = 0x37F4,
+ CMSG_CHAT_CHANNEL_LIST = 0x37E9,
+ CMSG_CHAT_CHANNEL_MODERATOR = 0x37EF,
+ CMSG_CHAT_CHANNEL_OWNER = 0x37ED,
+ CMSG_CHAT_CHANNEL_PASSWORD = 0x37EB,
+ CMSG_CHAT_CHANNEL_SET_OWNER = 0x37EC,
+ CMSG_CHAT_CHANNEL_SILENCE_ALL = 0x37F8,
+ CMSG_CHAT_CHANNEL_UNBAN = 0x37F6,
+ CMSG_CHAT_CHANNEL_UNMODERATOR = 0x37F0,
+ CMSG_CHAT_CHANNEL_UNSILENCE_ALL = 0x37F9,
+ CMSG_CHAT_JOIN_CHANNEL = 0x37DC,
+ CMSG_CHAT_LEAVE_CHANNEL = 0x37DD,
+ CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_INSTANCE_CHAT = 0x3809,
+ CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_PARTY = 0x3808,
+ CMSG_CHAT_MESSAGE_AFK = 0x37E7,
+ CMSG_CHAT_MESSAGE_CHANNEL = 0x37E3,
+ CMSG_CHAT_MESSAGE_DND = 0x37E8,
+ CMSG_CHAT_MESSAGE_EMOTE = 0x37FC,
+ CMSG_CHAT_MESSAGE_GUILD = 0x37E5,
+ CMSG_CHAT_MESSAGE_INSTANCE_CHAT = 0x3800,
+ CMSG_CHAT_MESSAGE_OFFICER = 0x37E6,
+ CMSG_CHAT_MESSAGE_PARTY = 0x37FE,
+ CMSG_CHAT_MESSAGE_RAID = 0x37FF,
+ CMSG_CHAT_MESSAGE_RAID_WARNING = 0x3801,
+ CMSG_CHAT_MESSAGE_SAY = 0x37FB,
+ CMSG_CHAT_MESSAGE_WHISPER = 0x37E4,
+ CMSG_CHAT_MESSAGE_YELL = 0x37FD,
+ CMSG_CHAT_REGISTER_ADDON_PREFIXES = 0x37E1,
+ CMSG_CHAT_REPORT_FILTERED = 0x37E0,
+ CMSG_CHAT_REPORT_IGNORED = 0x37DF,
+ CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37E2,
CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3645,
CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3258,
CMSG_CHOICE_RESPONSE = 0x32C1,
@@ -331,10 +333,10 @@ enum OpcodeClient : uint16
CMSG_DUEL_RESPONSE = 0x34F1,
CMSG_EJECT_PASSENGER = 0x324D,
CMSG_EMOTE = 0x3555,
- CMSG_ENABLE_NAGLE = 0x376B,
+ CMSG_ENABLE_NAGLE = 0x377F,
CMSG_ENABLE_TAXI_NODE = 0x34B0,
CMSG_ENGINE_SURVEY = 0x36E1,
- CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x3767,
+ CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x377B,
CMSG_ENUM_CHARACTERS = 0x35E8,
CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DB,
CMSG_FAR_SIGHT = 0x34F7,
@@ -446,7 +448,7 @@ enum OpcodeClient : uint16
CMSG_JOIN_RATED_BATTLEGROUND = 0x3178,
CMSG_KEEP_ALIVE = 0x367F,
CMSG_KEYBOUND_OVERRIDE = 0x322F,
- CMSG_LATENCY_REPORT = 0x3771,
+ CMSG_LATENCY_REPORT = 0x3785,
CMSG_LEARN_PVP_TALENTS = 0x356D,
CMSG_LEARN_TALENTS = 0x356B,
CMSG_LEAVE_GROUP = 0x3649,
@@ -468,11 +470,20 @@ enum OpcodeClient : uint16
CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B8,
CMSG_LOADING_SCREEN_NOTIFY = 0x35F8,
CMSG_LOAD_SELECTED_TROPHY = 0x3333,
+ CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x373E,
+ CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x374C,
+ CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x3741,
+ CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x373D,
+ CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x3740,
+ CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x373F,
+ CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x3742,
+ CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x3743,
CMSG_LOGOUT_CANCEL = 0x34E7,
CMSG_LOGOUT_INSTANT = 0x34E8,
+ CMSG_LOGOUT_LOBBY_MATCHMAKER = 0x3594,
CMSG_LOGOUT_REQUEST = 0x34E5,
- CMSG_LOG_DISCONNECT = 0x3769,
- CMSG_LOG_STREAMING_ERROR = 0x376D,
+ CMSG_LOG_DISCONNECT = 0x377D,
+ CMSG_LOG_STREAMING_ERROR = 0x3781,
CMSG_LOOT_ITEM = 0x3217,
CMSG_LOOT_MONEY = 0x3216,
CMSG_LOOT_RELEASE = 0x321B,
@@ -630,7 +641,7 @@ enum OpcodeClient : uint16
CMSG_PET_SET_ACTION = 0x3490,
CMSG_PET_SPELL_AUTOCAST = 0x3495,
CMSG_PET_STOP_ATTACK = 0x3492,
- CMSG_PING = 0x3768,
+ CMSG_PING = 0x377C,
CMSG_PLAYER_LOGIN = 0x35EA,
CMSG_PUSH_QUEST_TO_PARTY = 0x34A5,
CMSG_PVP_LOG_DATA = 0x317B,
@@ -648,9 +659,9 @@ enum OpcodeClient : uint16
CMSG_QUERY_PAGE_TEXT = 0x328C,
CMSG_QUERY_PETITION = 0x3290,
CMSG_QUERY_PET_NAME = 0x328D,
- CMSG_QUERY_PLAYER_NAMES = 0x3772,
- CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x3770,
- CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x376F,
+ CMSG_QUERY_PLAYER_NAMES = 0x3786,
+ CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x3784,
+ CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x3783,
CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3174,
CMSG_QUERY_QUEST_INFO = 0x328B,
CMSG_QUERY_QUEST_ITEM_USABILITY = 0x3175,
@@ -676,7 +687,7 @@ enum OpcodeClient : uint16
CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33D0,
CMSG_QUEST_SESSION_REQUEST_START = 0x33CF,
CMSG_QUEST_SESSION_REQUEST_STOP = 0x372C,
- CMSG_QUEUED_MESSAGES_END = 0x376C,
+ CMSG_QUEUED_MESSAGES_END = 0x3780,
CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3704,
CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3703,
CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3731,
@@ -813,6 +824,7 @@ enum OpcodeClient : uint16
CMSG_SORT_BANK_BAGS = 0x335C,
CMSG_SORT_REAGENT_BANK_BAGS = 0x335D,
CMSG_SPAWN_TRACKING_UPDATE = 0x32AE,
+ CMSG_SPECTATE_CHANGE = 0x342A,
CMSG_SPELL_CLICK = 0x349B,
CMSG_SPELL_EMPOWER_RELEASE = 0x3280,
CMSG_SPELL_EMPOWER_RESTART = 0x3281,
@@ -831,8 +843,8 @@ enum OpcodeClient : uint16
CMSG_SUMMON_RESPONSE = 0x366A,
CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3646,
CMSG_SURRENDER_ARENA = 0x3173,
- CMSG_SUSPEND_COMMS_ACK = 0x3764,
- CMSG_SUSPEND_TOKEN_RESPONSE = 0x376A,
+ CMSG_SUSPEND_COMMS_ACK = 0x3778,
+ CMSG_SUSPEND_TOKEN_RESPONSE = 0x377E,
CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x34C1,
CMSG_SWAP_INV_ITEM = 0x399D,
CMSG_SWAP_ITEM = 0x399C,
@@ -893,6 +905,7 @@ enum OpcodeClient : uint16
CMSG_WARDEN3_DATA = 0x35EC,
CMSG_WHO = 0x3681,
CMSG_WHO_IS = 0x3680,
+ CMSG_WORLD_LOOT_OBJECT_CLICK = 0x342D,
CMSG_WORLD_PORT_RESPONSE = 0x35F9,
CMSG_WRAP_ITEM = 0x3994,
};
@@ -900,45 +913,45 @@ enum OpcodeClient : uint16
enum OpcodeServer : uint16
{
SMSG_ABORT_NEW_WORLD = 0x2597,
- SMSG_ACCOUNT_COSMETIC_ADDED = 0x2876,
- SMSG_ACCOUNT_CRITERIA_UPDATE = 0x285C,
- SMSG_ACCOUNT_DATA_TIMES = 0x2705,
- SMSG_ACCOUNT_EXPORT_RESPONSE = 0x28B2,
+ SMSG_ACCOUNT_COSMETIC_ADDED = 0x2878,
+ SMSG_ACCOUNT_CRITERIA_UPDATE = 0x285E,
+ SMSG_ACCOUNT_DATA_TIMES = 0x2707,
+ SMSG_ACCOUNT_EXPORT_RESPONSE = 0x28B5,
SMSG_ACCOUNT_MOUNT_REMOVED = 0x25AE,
SMSG_ACCOUNT_MOUNT_UPDATE = 0x25AD,
- SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2875,
+ SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2877,
SMSG_ACCOUNT_TOY_UPDATE = 0x25AF,
SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B3,
SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25B2,
- SMSG_ACHIEVEMENT_DELETED = 0x26E3,
+ SMSG_ACHIEVEMENT_DELETED = 0x26E5,
SMSG_ACHIEVEMENT_EARNED = 0x2640,
SMSG_ACTIVATE_ESSENCE_FAILED = 0x3015,
SMSG_ACTIVATE_SOULBIND_FAILED = 0x3017,
- SMSG_ACTIVATE_TAXI_REPLY = 0x267A,
+ SMSG_ACTIVATE_TAXI_REPLY = 0x267C,
SMSG_ACTIVE_GLYPHS = 0x2C56,
- SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x2741,
+ SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x2743,
SMSG_ADDON_LIST_REQUEST = 0x263F,
SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x263A,
SMSG_ADD_ITEM_PASSIVE = 0x25A9,
- SMSG_ADD_LOSS_OF_CONTROL = 0x266E,
- SMSG_ADD_RUNE_POWER = 0x26B4,
+ SMSG_ADD_LOSS_OF_CONTROL = 0x2670,
+ SMSG_ADD_RUNE_POWER = 0x26B6,
SMSG_ADJUST_SPLINE_DURATION = 0x25CF,
- SMSG_ADVANCED_COMBAT_LOG = 0x2872,
- SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x286C,
+ SMSG_ADVANCED_COMBAT_LOG = 0x2874,
+ SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x286E,
SMSG_AE_LOOT_TARGETS = 0x2615,
SMSG_AE_LOOT_TARGET_ACK = 0x2616,
- SMSG_AI_REACTION = 0x26B1,
- SMSG_ALLIED_RACE_DETAILS = 0x27F0,
+ SMSG_AI_REACTION = 0x26B3,
+ SMSG_ALLIED_RACE_DETAILS = 0x27F2,
SMSG_ALL_ACCOUNT_CRITERIA = 0x2571,
SMSG_ALL_ACHIEVEMENT_DATA = 0x2570,
SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8,
- SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x2849,
+ SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x284B,
SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2586,
SMSG_AREA_POI_UPDATE_RESPONSE = 0x3010,
- SMSG_AREA_SPIRIT_HEALER_TIME = 0x273A,
+ SMSG_AREA_SPIRIT_HEALER_TIME = 0x273C,
SMSG_AREA_TRIGGER_DENIED = 0x2903,
SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x2900,
- SMSG_AREA_TRIGGER_NO_CORPSE = 0x2711,
+ SMSG_AREA_TRIGGER_NO_CORPSE = 0x2713,
SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x28FE,
SMSG_AREA_TRIGGER_RE_PATH = 0x28FD,
SMSG_AREA_TRIGGER_RE_SHAPE = 0x2902,
@@ -947,42 +960,42 @@ enum OpcodeServer : uint16
SMSG_ARENA_CLEAR_OPPONENTS = 0x2646,
SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x262F,
SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2645,
- SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x279C,
- SMSG_ARTIFACT_FORGE_ERROR = 0x279A,
- SMSG_ARTIFACT_RESPEC_PROMPT = 0x279B,
- SMSG_ARTIFACT_XP_GAIN = 0x27E3,
+ SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x279E,
+ SMSG_ARTIFACT_FORGE_ERROR = 0x279C,
+ SMSG_ARTIFACT_RESPEC_PROMPT = 0x279D,
+ SMSG_ARTIFACT_XP_GAIN = 0x27E5,
SMSG_ATTACKER_STATE_UPDATE = 0x294E,
SMSG_ATTACK_START = 0x2939,
SMSG_ATTACK_STOP = 0x293A,
SMSG_ATTACK_SWING_ERROR = 0x2948,
SMSG_ATTACK_SWING_LANDED_LOG = 0x2949,
- SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27CC,
- SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27CB,
- SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27CA,
- SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26EE,
- SMSG_AUCTION_COMMAND_RESULT = 0x26EB,
- SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x2892,
- SMSG_AUCTION_FAVORITE_LIST = 0x2863,
- SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x285A,
- SMSG_AUCTION_HELLO_RESPONSE = 0x26E9,
- SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x2859,
- SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2856,
- SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2857,
- SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x2858,
- SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26ED,
- SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26EF,
- SMSG_AUCTION_REPLICATE_RESPONSE = 0x26EA,
- SMSG_AUCTION_WON_NOTIFICATION = 0x26EC,
+ SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27CE,
+ SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27CD,
+ SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27CC,
+ SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26F0,
+ SMSG_AUCTION_COMMAND_RESULT = 0x26ED,
+ SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x2895,
+ SMSG_AUCTION_FAVORITE_LIST = 0x2865,
+ SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x285C,
+ SMSG_AUCTION_HELLO_RESPONSE = 0x26EB,
+ SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x285B,
+ SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2858,
+ SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2859,
+ SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x285A,
+ SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26EF,
+ SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26F1,
+ SMSG_AUCTION_REPLICATE_RESPONSE = 0x26EC,
+ SMSG_AUCTION_WON_NOTIFICATION = 0x26EE,
SMSG_AURA_POINTS_DEPLETED = 0x2C22,
SMSG_AURA_UPDATE = 0x2C21,
SMSG_AUTH_CHALLENGE = 0x3048,
SMSG_AUTH_FAILED = 0x256C,
SMSG_AUTH_RESPONSE = 0x256D,
SMSG_AVAILABLE_HOTFIXES = 0x290F,
- SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x2897,
+ SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x289A,
SMSG_BAG_CLEANUP_FINISHED = 0x2DA7,
- SMSG_BARBER_SHOP_RESULT = 0x26B9,
- SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x283A,
+ SMSG_BARBER_SHOP_RESULT = 0x26BB,
+ SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x283C,
SMSG_BATTLEFIELD_LIST = 0x2927,
SMSG_BATTLEFIELD_PORT_DENIED = 0x292D,
SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2923,
@@ -998,31 +1011,31 @@ enum OpcodeServer : uint16
SMSG_BATTLEGROUND_PLAYER_LEFT = 0x292C,
SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2928,
SMSG_BATTLEGROUND_POINTS = 0x294A,
- SMSG_BATTLENET_CHALLENGE_ABORT = 0x2784,
- SMSG_BATTLENET_CHALLENGE_START = 0x2783,
- SMSG_BATTLENET_NOTIFICATION = 0x27FC,
- SMSG_BATTLENET_RESPONSE = 0x27FB,
- SMSG_BATTLE_NET_CONNECTION_STATUS = 0x27FD,
- SMSG_BATTLE_PAY_ACK_FAILED = 0x277E,
- SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2773,
- SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x2774,
- SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x277D,
- SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2771,
- SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2770,
- SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x287B,
- SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x276E,
- SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x276F,
- SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x276D,
- SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x276B,
- SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x276C,
- SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2772,
- SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x277C,
- SMSG_BATTLE_PAY_START_CHECKOUT = 0x2818,
- SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x277A,
- SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2779,
- SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x280C,
+ SMSG_BATTLENET_CHALLENGE_ABORT = 0x2786,
+ SMSG_BATTLENET_CHALLENGE_START = 0x2785,
+ SMSG_BATTLENET_NOTIFICATION = 0x27FE,
+ SMSG_BATTLENET_RESPONSE = 0x27FD,
+ SMSG_BATTLE_NET_CONNECTION_STATUS = 0x27FF,
+ SMSG_BATTLE_PAY_ACK_FAILED = 0x2780,
+ SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2775,
+ SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x2776,
+ SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x277F,
+ SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2773,
+ SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2772,
+ SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x287D,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x2770,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x2771,
+ SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x276F,
+ SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x276D,
+ SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x276E,
+ SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2774,
+ SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x277E,
+ SMSG_BATTLE_PAY_START_CHECKOUT = 0x281A,
+ SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x277C,
+ SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x277B,
+ SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x280E,
SMSG_BATTLE_PETS_HEALED = 0x25F1,
- SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2675,
+ SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2677,
SMSG_BATTLE_PET_DELETED = 0x25EE,
SMSG_BATTLE_PET_ERROR = 0x2635,
SMSG_BATTLE_PET_JOURNAL = 0x25ED,
@@ -1041,34 +1054,34 @@ enum OpcodeServer : uint16
SMSG_BOSS_KILL = 0x294D,
SMSG_BREAK_TARGET = 0x2938,
SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC,
- SMSG_BROADCAST_SUMMON_CAST = 0x283C,
- SMSG_BROADCAST_SUMMON_RESPONSE = 0x283D,
- SMSG_BUY_FAILED = 0x26C2,
- SMSG_BUY_SUCCEEDED = 0x26C1,
+ SMSG_BROADCAST_SUMMON_CAST = 0x283E,
+ SMSG_BROADCAST_SUMMON_RESPONSE = 0x283F,
+ SMSG_BUY_FAILED = 0x26C4,
+ SMSG_BUY_SUCCEEDED = 0x26C3,
SMSG_CACHE_INFO = 0x291D,
SMSG_CACHE_VERSION = 0x291C,
- SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x269A,
- SMSG_CALENDAR_COMMAND_RESULT = 0x269B,
- SMSG_CALENDAR_COMMUNITY_INVITE = 0x268A,
- SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x2692,
- SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x2693,
- SMSG_CALENDAR_INVITE_ADDED = 0x268B,
- SMSG_CALENDAR_INVITE_ALERT = 0x268F,
- SMSG_CALENDAR_INVITE_NOTES = 0x2694,
- SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2695,
- SMSG_CALENDAR_INVITE_REMOVED = 0x268C,
- SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2691,
- SMSG_CALENDAR_INVITE_STATUS = 0x268D,
- SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2690,
- SMSG_CALENDAR_MODERATOR_STATUS = 0x268E,
- SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2696,
- SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2697,
- SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2698,
- SMSG_CALENDAR_SEND_CALENDAR = 0x2688,
- SMSG_CALENDAR_SEND_EVENT = 0x2689,
- SMSG_CALENDAR_SEND_NUM_PENDING = 0x2699,
- SMSG_CAMERA_EFFECT = 0x2720,
- SMSG_CANCEL_AUTO_REPEAT = 0x26D9,
+ SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x269C,
+ SMSG_CALENDAR_COMMAND_RESULT = 0x269D,
+ SMSG_CALENDAR_COMMUNITY_INVITE = 0x268C,
+ SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x2694,
+ SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x2695,
+ SMSG_CALENDAR_INVITE_ADDED = 0x268D,
+ SMSG_CALENDAR_INVITE_ALERT = 0x2691,
+ SMSG_CALENDAR_INVITE_NOTES = 0x2696,
+ SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2697,
+ SMSG_CALENDAR_INVITE_REMOVED = 0x268E,
+ SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2693,
+ SMSG_CALENDAR_INVITE_STATUS = 0x268F,
+ SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2692,
+ SMSG_CALENDAR_MODERATOR_STATUS = 0x2690,
+ SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2698,
+ SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2699,
+ SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x269A,
+ SMSG_CALENDAR_SEND_CALENDAR = 0x268A,
+ SMSG_CALENDAR_SEND_EVENT = 0x268B,
+ SMSG_CALENDAR_SEND_NUM_PENDING = 0x269B,
+ SMSG_CAMERA_EFFECT = 0x2722,
+ SMSG_CANCEL_AUTO_REPEAT = 0x26DB,
SMSG_CANCEL_COMBAT = 0x2947,
SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C48,
SMSG_CANCEL_PING_PIN = 0x25A2,
@@ -1077,7 +1090,7 @@ enum OpcodeServer : uint16
SMSG_CANCEL_SPELL_VISUAL = 0x2C46,
SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C4A,
SMSG_CAN_DUEL_RESULT = 0x2943,
- SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x280B,
+ SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x280D,
SMSG_CAPTURE_POINT_REMOVED = 0x292A,
SMSG_CAST_FAILED = 0x2C59,
SMSG_CHAIN_MISSILE_BOUNCE = 0x25C7,
@@ -1087,22 +1100,22 @@ enum OpcodeServer : uint16
SMSG_CHALLENGE_MODE_START = 0x2605,
SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2606,
SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x3004,
- SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x27FE,
+ SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x2800,
SMSG_CHANNEL_LIST = 0x2BC4,
SMSG_CHANNEL_NOTIFY = 0x2BC1,
SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC2,
SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC3,
- SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27B7,
- SMSG_CHARACTER_LOGIN_FAILED = 0x2700,
- SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2782,
- SMSG_CHARACTER_RENAME_RESULT = 0x275D,
- SMSG_CHARACTER_UPGRADE_ABORTED = 0x27B6,
- SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B5,
- SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27B8,
- SMSG_CHARACTER_UPGRADE_STARTED = 0x27B4,
- SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26DD,
- SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26DE,
- SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A1,
+ SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27B9,
+ SMSG_CHARACTER_LOGIN_FAILED = 0x2702,
+ SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2784,
+ SMSG_CHARACTER_RENAME_RESULT = 0x275F,
+ SMSG_CHARACTER_UPGRADE_ABORTED = 0x27B8,
+ SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B7,
+ SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27BA,
+ SMSG_CHARACTER_UPGRADE_STARTED = 0x27B6,
+ SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26DF,
+ SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26E0,
+ SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A3,
SMSG_CHAT = 0x2BAD,
SMSG_CHAT_AUTO_RESPONDED = 0x2BB8,
SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x2BCB,
@@ -1120,84 +1133,84 @@ enum OpcodeServer : uint16
SMSG_CHECK_ABANDON_NPE = 0x3018,
SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x2584,
SMSG_CHECK_WARGAME_ENTRY = 0x258F,
- SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2866,
- SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x284D,
+ SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2868,
+ SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x284F,
SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C26,
SMSG_CLEAR_BOSS_EMOTES = 0x25BA,
- SMSG_CLEAR_COOLDOWN = 0x26B6,
+ SMSG_CLEAR_COOLDOWN = 0x26B8,
SMSG_CLEAR_COOLDOWNS = 0x2C25,
SMSG_CLEAR_RESURRECT = 0x257F,
SMSG_CLEAR_SPELL_CHARGES = 0x2C27,
SMSG_CLEAR_TARGET = 0x2944,
SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA1,
- SMSG_CLOSE_ARTIFACT_FORGE = 0x2799,
- SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2845,
- SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x2848,
- SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2846,
- SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2843,
- SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x2847,
- SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2844,
- SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x2889,
+ SMSG_CLOSE_ARTIFACT_FORGE = 0x279B,
+ SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2847,
+ SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x284A,
+ SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2848,
+ SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2845,
+ SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x2849,
+ SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2846,
+ SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x288B,
SMSG_COIN_REMOVED = 0x2614,
SMSG_COMBAT_EVENT_FAILED = 0x293B,
- SMSG_COMMENTATOR_MAP_INFO = 0x2702,
- SMSG_COMMENTATOR_PLAYER_INFO = 0x2703,
- SMSG_COMMENTATOR_STATE_CHANGED = 0x2701,
- SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27C7,
- SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D3,
- SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27C9,
- SMSG_COMMERCE_TOKEN_UPDATE = 0x27C8,
- SMSG_COMPLAINT_RESULT = 0x26A8,
- SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2792,
- SMSG_CONFIRM_PARTY_INVITE = 0x280A,
+ SMSG_COMMENTATOR_MAP_INFO = 0x2704,
+ SMSG_COMMENTATOR_PLAYER_INFO = 0x2705,
+ SMSG_COMMENTATOR_STATE_CHANGED = 0x2703,
+ SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27C9,
+ SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D5,
+ SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27CB,
+ SMSG_COMMERCE_TOKEN_UPDATE = 0x27CA,
+ SMSG_COMPLAINT_RESULT = 0x26AA,
+ SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2794,
+ SMSG_CONFIRM_PARTY_INVITE = 0x280C,
SMSG_CONNECT_TO = 0x304D,
- SMSG_CONQUEST_FORMULA_CONSTANTS = 0x277F,
+ SMSG_CONQUEST_FORMULA_CONSTANTS = 0x2781,
SMSG_CONSOLE_WRITE = 0x2632,
- SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27CF,
- SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27CE,
- SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27CD,
- SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D1,
- SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D2,
- SMSG_CONTACT_LIST = 0x2780,
- SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2811,
+ SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27D1,
+ SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27D0,
+ SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27CF,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D3,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D4,
+ SMSG_CONTACT_LIST = 0x2782,
+ SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2813,
SMSG_CONTROL_UPDATE = 0x2644,
- SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x286F,
- SMSG_COOLDOWN_CHEAT = 0x2733,
- SMSG_COOLDOWN_EVENT = 0x26B5,
+ SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x2871,
+ SMSG_COOLDOWN_CHEAT = 0x2735,
+ SMSG_COOLDOWN_EVENT = 0x26B7,
SMSG_CORPSE_LOCATION = 0x264C,
- SMSG_CORPSE_RECLAIM_DELAY = 0x2744,
- SMSG_CORPSE_TRANSPORT_QUERY = 0x270D,
+ SMSG_CORPSE_RECLAIM_DELAY = 0x2746,
+ SMSG_CORPSE_TRANSPORT_QUERY = 0x270F,
SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA3,
- SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F3,
- SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2870,
- SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x28A5,
- SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x28A1,
- SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x289D,
- SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x289F,
- SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x289B,
- SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x28A0,
- SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x289C,
- SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x28A3,
- SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x289E,
- SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x28A6,
- SMSG_CRAFT_ENCHANT_RESULT = 0x28A4,
- SMSG_CREATE_CHAR = 0x26FC,
- SMSG_CREATE_SHIPMENT_RESPONSE = 0x2791,
- SMSG_CREATOR_VISUALS_OVERRIDE = 0x28A9,
- SMSG_CRITERIA_DELETED = 0x26E2,
- SMSG_CRITERIA_UPDATE = 0x26DC,
- SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26BD,
+ SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F5,
+ SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2872,
+ SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x28A8,
+ SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x28A4,
+ SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x28A0,
+ SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x28A2,
+ SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x289E,
+ SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x28A3,
+ SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x289F,
+ SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x28A6,
+ SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x28A1,
+ SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x28A9,
+ SMSG_CRAFT_ENCHANT_RESULT = 0x28A7,
+ SMSG_CREATE_CHAR = 0x26FE,
+ SMSG_CREATE_SHIPMENT_RESPONSE = 0x2793,
+ SMSG_CREATOR_VISUALS_OVERRIDE = 0x28AC,
+ SMSG_CRITERIA_DELETED = 0x26E4,
+ SMSG_CRITERIA_UPDATE = 0x26DE,
+ SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26BF,
SMSG_CUSTOM_LOAD_SCREEN = 0x25CA,
SMSG_DAILY_QUESTS_RESET = 0x2A80,
SMSG_DAMAGE_CALC_LOG = 0x2C65,
SMSG_DB_REPLY = 0x290E,
- SMSG_DEATH_RELEASE_LOC = 0x26CF,
- SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2652,
+ SMSG_DEATH_RELEASE_LOC = 0x26D1,
+ SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2654,
SMSG_DEFENSE_MESSAGE = 0x2BB6,
- SMSG_DELETE_CHAR = 0x26FD,
+ SMSG_DELETE_CHAR = 0x26FF,
SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x2980,
- SMSG_DESTROY_ARENA_UNIT = 0x273C,
- SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26F4,
+ SMSG_DESTROY_ARENA_UNIT = 0x273E,
+ SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26F6,
SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x2589,
SMSG_DISENCHANT_CREDIT = 0x25A6,
SMSG_DISMOUNT_RESULT = 0x257C,
@@ -1206,9 +1219,9 @@ enum OpcodeServer : uint16
SMSG_DISPLAY_PLAYER_CHOICE = 0x2FFC,
SMSG_DISPLAY_PROMOTION = 0x2649,
SMSG_DISPLAY_QUEST_POPUP = 0x2A9E,
- SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2874,
+ SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2876,
SMSG_DISPLAY_TOAST = 0x2621,
- SMSG_DISPLAY_WORLD_TEXT = 0x27E4,
+ SMSG_DISPLAY_WORLD_TEXT = 0x27E6,
SMSG_DISPLAY_WORLD_TEXT_ON_TARGET = 0x2C64,
SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25DF,
SMSG_DROP_NEW_CONNECTION = 0x304C,
@@ -1219,52 +1232,52 @@ enum OpcodeServer : uint16
SMSG_DUEL_OUT_OF_BOUNDS = 0x293E,
SMSG_DUEL_REQUESTED = 0x293C,
SMSG_DUEL_WINNER = 0x2942,
- SMSG_DURABILITY_DAMAGE_DEATH = 0x273F,
- SMSG_EMOTE = 0x27BE,
- SMSG_ENABLE_BARBER_SHOP = 0x26B8,
- SMSG_ENCHANTMENT_LOG = 0x270E,
- SMSG_ENCOUNTER_END = 0x2778,
- SMSG_ENCOUNTER_START = 0x2777,
- SMSG_END_LIGHTNING_STORM = 0x26A5,
- SMSG_ENSURE_WORLD_LOADED = 0x2883,
+ SMSG_DURABILITY_DAMAGE_DEATH = 0x2741,
+ SMSG_EMOTE = 0x27C0,
+ SMSG_ENABLE_BARBER_SHOP = 0x26BA,
+ SMSG_ENCHANTMENT_LOG = 0x2710,
+ SMSG_ENCOUNTER_END = 0x277A,
+ SMSG_ENCOUNTER_START = 0x2779,
+ SMSG_END_LIGHTNING_STORM = 0x26A7,
+ SMSG_ENSURE_WORLD_LOADED = 0x2885,
SMSG_ENTER_ENCRYPTED_MODE = 0x3049,
SMSG_ENUM_CHARACTERS_RESULT = 0x2583,
- SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27E9,
+ SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27EB,
SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C1E,
- SMSG_EQUIPMENT_SET_ID = 0x26AE,
+ SMSG_EQUIPMENT_SET_ID = 0x26B0,
SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1,
- SMSG_EXPLORATION_EXPERIENCE = 0x2759,
- SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x286D,
- SMSG_FACTION_BONUS_INFO = 0x271F,
+ SMSG_EXPLORATION_EXPERIENCE = 0x275B,
+ SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x286F,
+ SMSG_FACTION_BONUS_INFO = 0x2721,
SMSG_FAILED_PLAYER_CONDITION = 0x2FFA,
- SMSG_FAILED_QUEST_TURN_IN = 0x2807,
+ SMSG_FAILED_QUEST_TURN_IN = 0x2809,
SMSG_FEATURE_SYSTEM_STATUS = 0x25BE,
SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25BF,
- SMSG_FEIGN_DEATH_RESISTED = 0x273E,
- SMSG_FISH_ESCAPED = 0x26CC,
- SMSG_FISH_NOT_HOOKED = 0x26CB,
+ SMSG_FEIGN_DEATH_RESISTED = 0x2740,
+ SMSG_FISH_ESCAPED = 0x26CE,
+ SMSG_FISH_NOT_HOOKED = 0x26CD,
SMSG_FLIGHT_SPLINE_SYNC = 0x2E2B,
SMSG_FLUSH_COMBAT_LOG_FILE = 0x2C20,
- SMSG_FORCED_DEATH_UPDATE = 0x26D0,
- SMSG_FORCE_ANIM = 0x274B,
- SMSG_FORCE_ANIMATIONS = 0x274C,
+ SMSG_FORCED_DEATH_UPDATE = 0x26D2,
+ SMSG_FORCE_ANIM = 0x274D,
+ SMSG_FORCE_ANIMATIONS = 0x274E,
SMSG_FORCE_OBJECT_RELINK = 0x2648,
SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x25B1,
- SMSG_FRIEND_STATUS = 0x2781,
- SMSG_GAIN_MAW_POWER = 0x27D8,
+ SMSG_FRIEND_STATUS = 0x2783,
+ SMSG_GAIN_MAW_POWER = 0x27DA,
SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25C2,
- SMSG_GAME_OBJECT_BASE = 0x281E,
- SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x2887,
+ SMSG_GAME_OBJECT_BASE = 0x2820,
+ SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x2889,
SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C3,
SMSG_GAME_OBJECT_DESPAWN = 0x25C4,
- SMSG_GAME_OBJECT_INTERACTION = 0x2886,
+ SMSG_GAME_OBJECT_INTERACTION = 0x2888,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4D,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4C,
- SMSG_GAME_OBJECT_RESET_STATE = 0x2719,
- SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27FA,
- SMSG_GAME_SPEED_SET = 0x267E,
- SMSG_GAME_TIME_SET = 0x2707,
- SMSG_GAME_TIME_UPDATE = 0x2706,
+ SMSG_GAME_OBJECT_RESET_STATE = 0x271B,
+ SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27FC,
+ SMSG_GAME_SPEED_SET = 0x2680,
+ SMSG_GAME_TIME_SET = 0x2709,
+ SMSG_GAME_TIME_UPDATE = 0x2708,
SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x2982,
SMSG_GARRISON_ADD_EVENT = 0x29A6,
SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2974,
@@ -1336,36 +1349,36 @@ enum OpcodeServer : uint16
SMSG_GARRISON_UPGRADE_RESULT = 0x296B,
SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x297D,
SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2585,
- SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2812,
- SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275B,
+ SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2814,
+ SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275D,
SMSG_GET_GARRISON_INFO_RESULT = 0x295E,
- SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x2794,
- SMSG_GET_REALM_HIDDEN_RESULT = 0x28B7,
- SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D0,
- SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27BC,
- SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2793,
- SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x278F,
- SMSG_GET_TROPHY_LIST_RESPONSE = 0x27BB,
- SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27E5,
- SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27E6,
+ SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x2796,
+ SMSG_GET_REALM_HIDDEN_RESULT = 0x28BA,
+ SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D2,
+ SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27BE,
+ SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2795,
+ SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2791,
+ SMSG_GET_TROPHY_LIST_RESPONSE = 0x27BD,
+ SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27E7,
+ SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27E8,
SMSG_GM_PLAYER_INFO = 0x3005,
SMSG_GM_REQUEST_PLAYER_INFO = 0x2FFB,
- SMSG_GM_TICKET_CASE_STATUS = 0x26A0,
- SMSG_GM_TICKET_SYSTEM_STATUS = 0x269F,
- SMSG_GOD_MODE = 0x26F7,
+ SMSG_GM_TICKET_CASE_STATUS = 0x26A2,
+ SMSG_GM_TICKET_SYSTEM_STATUS = 0x26A1,
+ SMSG_GOD_MODE = 0x26F9,
SMSG_GOSSIP_COMPLETE = 0x2A97,
SMSG_GOSSIP_MESSAGE = 0x2A98,
SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x2AA7,
- SMSG_GOSSIP_POI = 0x278C,
+ SMSG_GOSSIP_POI = 0x278E,
SMSG_GOSSIP_QUEST_UPDATE = 0x2A99,
SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA6,
SMSG_GROUP_ACTION_THROTTLED = 0x258D,
- SMSG_GROUP_AUTO_KICK = 0x2789,
- SMSG_GROUP_DECLINE = 0x2785,
- SMSG_GROUP_DESTROYED = 0x2788,
+ SMSG_GROUP_AUTO_KICK = 0x278B,
+ SMSG_GROUP_DECLINE = 0x2787,
+ SMSG_GROUP_DESTROYED = 0x278A,
SMSG_GROUP_NEW_LEADER = 0x262A,
- SMSG_GROUP_REQUEST_DECLINE = 0x2786,
- SMSG_GROUP_UNINVITE = 0x2787,
+ SMSG_GROUP_REQUEST_DECLINE = 0x2788,
+ SMSG_GROUP_UNINVITE = 0x2789,
SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5,
SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4,
SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7,
@@ -1419,59 +1432,59 @@ enum OpcodeServer : uint16
SMSG_GUILD_ROSTER = 0x29BB,
SMSG_GUILD_ROSTER_UPDATE = 0x29BC,
SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9,
- SMSG_HEALTH_UPDATE = 0x26CD,
- SMSG_HIGHEST_THREAT_UPDATE = 0x26D5,
+ SMSG_HEALTH_UPDATE = 0x26CF,
+ SMSG_HIGHEST_THREAT_UPDATE = 0x26D7,
SMSG_HOTFIX_CONNECT = 0x2911,
SMSG_HOTFIX_MESSAGE = 0x2910,
- SMSG_INITIALIZE_FACTIONS = 0x271E,
+ SMSG_INITIALIZE_FACTIONS = 0x2720,
SMSG_INITIAL_SETUP = 0x2580,
- SMSG_INIT_WORLD_STATES = 0x2740,
+ SMSG_INIT_WORLD_STATES = 0x2742,
SMSG_INSPECT_RESULT = 0x262E,
- SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27A7,
- SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27A6,
- SMSG_INSTANCE_ENCOUNTER_END = 0x27AF,
- SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A5,
- SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B1,
- SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B0,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27AA,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27A9,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27AE,
- SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B2,
- SMSG_INSTANCE_ENCOUNTER_START = 0x27AB,
- SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27A8,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27AD,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27AC,
- SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F5,
+ SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27A9,
+ SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27A8,
+ SMSG_INSTANCE_ENCOUNTER_END = 0x27B1,
+ SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A7,
+ SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B3,
+ SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B2,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27AC,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27AB,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B0,
+ SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B4,
+ SMSG_INSTANCE_ENCOUNTER_START = 0x27AD,
+ SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27AA,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27AF,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27AE,
+ SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F7,
SMSG_INSTANCE_INFO = 0x2631,
- SMSG_INSTANCE_RESET = 0x2683,
- SMSG_INSTANCE_RESET_FAILED = 0x2684,
- SMSG_INSTANCE_SAVE_CREATED = 0x2776,
+ SMSG_INSTANCE_RESET = 0x2685,
+ SMSG_INSTANCE_RESET_FAILED = 0x2686,
+ SMSG_INSTANCE_SAVE_CREATED = 0x2778,
SMSG_INTERRUPT_POWER_REGEN = 0x2C5B,
SMSG_INVALIDATE_PAGE_TEXT = 0x2918,
SMSG_INVALIDATE_PLAYER = 0x2FFF,
- SMSG_INVALID_PROMOTION_CODE = 0x274D,
+ SMSG_INVALID_PROMOTION_CODE = 0x274F,
SMSG_INVENTORY_CHANGE_FAILURE = 0x2DA5,
- SMSG_INVENTORY_FIXUP_COMPLETE = 0x2809,
- SMSG_INVENTORY_FULL_OVERFLOW = 0x281A,
- SMSG_ISLAND_AZERITE_GAIN = 0x2756,
- SMSG_ISLAND_COMPLETE = 0x2757,
+ SMSG_INVENTORY_FIXUP_COMPLETE = 0x280B,
+ SMSG_INVENTORY_FULL_OVERFLOW = 0x281C,
+ SMSG_ISLAND_AZERITE_GAIN = 0x2758,
+ SMSG_ISLAND_COMPLETE = 0x2759,
SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A84,
- SMSG_ITEM_CHANGED = 0x26E6,
- SMSG_ITEM_COOLDOWN = 0x27BD,
- SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x274F,
+ SMSG_ITEM_CHANGED = 0x26E8,
+ SMSG_ITEM_COOLDOWN = 0x27BF,
+ SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2751,
SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x259B,
- SMSG_ITEM_INTERACTION_COMPLETE = 0x2865,
+ SMSG_ITEM_INTERACTION_COMPLETE = 0x2867,
SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x2599,
SMSG_ITEM_PUSH_RESULT = 0x2620,
- SMSG_ITEM_TIME_UPDATE = 0x274E,
- SMSG_KICK_REASON = 0x2686,
- SMSG_LATENCY_REPORT_PING = 0x2877,
+ SMSG_ITEM_TIME_UPDATE = 0x2750,
+ SMSG_KICK_REASON = 0x2688,
+ SMSG_LATENCY_REPORT_PING = 0x2879,
SMSG_LEARNED_SPELLS = 0x2C4F,
SMSG_LEARN_PVP_TALENT_FAILED = 0x25D3,
SMSG_LEARN_TALENT_FAILED = 0x25D2,
- SMSG_LEGACY_LOOT_RULES = 0x281F,
- SMSG_LEVEL_LINKING_RESULT = 0x284B,
- SMSG_LEVEL_UP_INFO = 0x26E4,
+ SMSG_LEGACY_LOOT_RULES = 0x2821,
+ SMSG_LEVEL_LINKING_RESULT = 0x284D,
+ SMSG_LEVEL_UP_INFO = 0x26E6,
SMSG_LFG_BOOT_PLAYER = 0x2A35,
SMSG_LFG_DISABLED = 0x2A33,
SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x2A3B,
@@ -1499,23 +1512,24 @@ enum OpcodeServer : uint16
SMSG_LFG_SLOT_INVALID = 0x2A30,
SMSG_LFG_TELEPORT_DENIED = 0x2A32,
SMSG_LFG_UPDATE_STATUS = 0x2A24,
- SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2768,
- SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2767,
- SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275C,
- SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2769,
+ SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x276A,
+ SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2769,
+ SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275E,
+ SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x276B,
SMSG_LOAD_CUF_PROFILES = 0x25BB,
- SMSG_LOAD_EQUIPMENT_SET = 0x2709,
- SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x288B,
- SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x288C,
- SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x288D,
- SMSG_LOGIN_SET_TIME_SPEED = 0x2708,
+ SMSG_LOAD_EQUIPMENT_SET = 0x270B,
+ SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x288C,
+ SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x288D,
+ SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x288E,
+ SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x288F,
+ SMSG_LOGIN_SET_TIME_SPEED = 0x270A,
SMSG_LOGIN_VERIFY_WORLD = 0x2596,
- SMSG_LOGOUT_CANCEL_ACK = 0x2682,
- SMSG_LOGOUT_COMPLETE = 0x2681,
- SMSG_LOGOUT_RESPONSE = 0x2680,
- SMSG_LOG_XP_GAIN = 0x26E0,
+ SMSG_LOGOUT_CANCEL_ACK = 0x2684,
+ SMSG_LOGOUT_COMPLETE = 0x2683,
+ SMSG_LOGOUT_RESPONSE = 0x2682,
+ SMSG_LOG_XP_GAIN = 0x26E2,
SMSG_LOOT_ALL_PASSED = 0x261E,
- SMSG_LOOT_LIST = 0x273B,
+ SMSG_LOOT_LIST = 0x273D,
SMSG_LOOT_MONEY_NOTIFY = 0x2619,
SMSG_LOOT_RELEASE = 0x2618,
SMSG_LOOT_RELEASE_ALL = 0x2617,
@@ -1524,22 +1538,22 @@ enum OpcodeServer : uint16
SMSG_LOOT_ROLL = 0x261B,
SMSG_LOOT_ROLLS_COMPLETE = 0x261D,
SMSG_LOOT_ROLL_WON = 0x261F,
- SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x266D,
+ SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x266F,
SMSG_MAIL_COMMAND_RESULT = 0x2638,
- SMSG_MAIL_LIST_RESULT = 0x2750,
- SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2751,
+ SMSG_MAIL_LIST_RESULT = 0x2752,
+ SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2753,
SMSG_MAP_OBJECTIVES_INIT = 0x294C,
SMSG_MAP_OBJ_EVENTS = 0x25C5,
SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x261C,
- SMSG_MEETING_STONE_FAILED = 0x288E,
+ SMSG_MEETING_STONE_FAILED = 0x2890,
SMSG_MESSAGE_BOX = 0x2576,
- SMSG_MINIMAP_PING = 0x26CA,
+ SMSG_MINIMAP_PING = 0x26CC,
SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14,
SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13,
SMSG_MISSILE_CANCEL = 0x25C6,
- SMSG_MODIFY_COOLDOWN = 0x275E,
+ SMSG_MODIFY_COOLDOWN = 0x2760,
SMSG_MOUNT_RESULT = 0x257B,
- SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x283B,
+ SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x283D,
SMSG_MOVE_ADD_IMPULSE = 0x2E32,
SMSG_MOVE_APPLY_INERTIA = 0x2E2E,
SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2E15,
@@ -1647,54 +1661,54 @@ enum OpcodeServer : uint16
SMSG_MOVE_UPDATE_TELEPORT = 0x2DE1,
SMSG_MOVE_UPDATE_TURN_RATE = 0x2DDD,
SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DD8,
- SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27D5,
- SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27D4,
+ SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27D7,
+ SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27D6,
SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x2609,
SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260B,
SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x260F,
SMSG_MYTHIC_PLUS_SEASON_DATA = 0x260A,
SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25DA,
- SMSG_NEW_DATA_BUILD = 0x28B6,
- SMSG_NEW_TAXI_PATH = 0x267B,
+ SMSG_NEW_DATA_BUILD = 0x28B9,
+ SMSG_NEW_TAXI_PATH = 0x267D,
SMSG_NEW_WORLD = 0x2593,
SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C45,
- SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A7,
+ SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A9,
SMSG_NOTIFY_MONEY = 0x2598,
SMSG_NOTIFY_RECEIVED_MAIL = 0x2639,
- SMSG_NPC_INTERACTION_OPEN_RESULT = 0x2885,
- SMSG_OFFER_PETITION_ERROR = 0x26B2,
- SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26E1,
+ SMSG_NPC_INTERACTION_OPEN_RESULT = 0x2887,
+ SMSG_OFFER_PETITION_ERROR = 0x26B4,
+ SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26E3,
SMSG_ON_MONSTER_MOVE = 0x2DD4,
- SMSG_OPEN_ARTIFACT_FORGE = 0x2798,
+ SMSG_OPEN_ARTIFACT_FORGE = 0x279A,
SMSG_OPEN_CONTAINER = 0x2DA6,
SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31,
- SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2790,
- SMSG_OVERRIDE_LIGHT = 0x26B7,
- SMSG_PAGE_TEXT = 0x2714,
- SMSG_PARTY_COMMAND_RESULT = 0x278A,
+ SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2792,
+ SMSG_OVERRIDE_LIGHT = 0x26B9,
+ SMSG_PAGE_TEXT = 0x2716,
+ SMSG_PARTY_COMMAND_RESULT = 0x278C,
SMSG_PARTY_INVITE = 0x25BC,
- SMSG_PARTY_KILL_LOG = 0x2754,
- SMSG_PARTY_MEMBER_FULL_STATE = 0x2753,
- SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2752,
- SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x286B,
+ SMSG_PARTY_KILL_LOG = 0x2756,
+ SMSG_PARTY_MEMBER_FULL_STATE = 0x2755,
+ SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2754,
+ SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x286D,
SMSG_PARTY_UPDATE = 0x25F2,
SMSG_PAST_TIME_EVENTS = 0x25C1,
- SMSG_PAUSE_MIRROR_TIMER = 0x270B,
- SMSG_PENDING_RAID_LOCK = 0x26F3,
- SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x2881,
- SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x287D,
- SMSG_PERKS_PROGRAM_DISABLED = 0x2882,
- SMSG_PERKS_PROGRAM_RESULT = 0x287E,
- SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x287C,
+ SMSG_PAUSE_MIRROR_TIMER = 0x270D,
+ SMSG_PENDING_RAID_LOCK = 0x26F5,
+ SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x2883,
+ SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x287F,
+ SMSG_PERKS_PROGRAM_DISABLED = 0x2884,
+ SMSG_PERKS_PROGRAM_RESULT = 0x2880,
+ SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x287E,
SMSG_PETITION_ALREADY_SIGNED = 0x259E,
SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA,
- SMSG_PETITION_SHOW_LIST = 0x26BA,
- SMSG_PETITION_SHOW_SIGNATURES = 0x26BB,
- SMSG_PETITION_SIGN_RESULTS = 0x2746,
- SMSG_PET_ACTION_FEEDBACK = 0x2743,
- SMSG_PET_ACTION_SOUND = 0x269D,
+ SMSG_PETITION_SHOW_LIST = 0x26BC,
+ SMSG_PETITION_SHOW_SIGNATURES = 0x26BD,
+ SMSG_PETITION_SIGN_RESULTS = 0x2748,
+ SMSG_PET_ACTION_FEEDBACK = 0x2745,
+ SMSG_PET_ACTION_SOUND = 0x269F,
SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2600,
- SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2672,
+ SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2674,
SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25F9,
SMSG_PET_BATTLE_FINAL_ROUND = 0x25FE,
SMSG_PET_BATTLE_FINISHED = 0x25FF,
@@ -1710,19 +1724,19 @@ enum OpcodeServer : uint16
SMSG_PET_BATTLE_SLOT_UPDATES = 0x25EA,
SMSG_PET_CAST_FAILED = 0x2C5A,
SMSG_PET_CLEAR_SPELLS = 0x2C23,
- SMSG_PET_DISMISS_SOUND = 0x269E,
- SMSG_PET_GOD_MODE = 0x2678,
- SMSG_PET_GUIDS = 0x26FF,
+ SMSG_PET_DISMISS_SOUND = 0x26A0,
+ SMSG_PET_GOD_MODE = 0x267A,
+ SMSG_PET_GUIDS = 0x2701,
SMSG_PET_LEARNED_SPELLS = 0x2C51,
SMSG_PET_MODE = 0x2588,
- SMSG_PET_NAME_INVALID = 0x26BF,
+ SMSG_PET_NAME_INVALID = 0x26C1,
SMSG_PET_NEWLY_TAMED = 0x2587,
SMSG_PET_SPELLS_MESSAGE = 0x2C24,
SMSG_PET_STABLE_RESULT = 0x2592,
- SMSG_PET_TAME_FAILURE = 0x26AF,
+ SMSG_PET_TAME_FAILURE = 0x26B1,
SMSG_PET_UNLEARNED_SPELLS = 0x2C52,
SMSG_PHASE_SHIFT_CHANGE = 0x2578,
- SMSG_PLAYED_TIME = 0x26D1,
+ SMSG_PLAYED_TIME = 0x26D3,
SMSG_PLAYER_ACKOWLEDGE_ARROW_CALLOUT = 0x3022,
SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x3014,
SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x3013,
@@ -1743,25 +1757,25 @@ enum OpcodeServer : uint16
SMSG_PLAYER_SKINNED = 0x3006,
SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x300D,
SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x300C,
- SMSG_PLAY_MUSIC = 0x2763,
- SMSG_PLAY_OBJECT_SOUND = 0x2764,
- SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x272B,
+ SMSG_PLAY_MUSIC = 0x2765,
+ SMSG_PLAY_OBJECT_SOUND = 0x2766,
+ SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x272D,
SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C49,
SMSG_PLAY_SCENE = 0x2633,
- SMSG_PLAY_SOUND = 0x2762,
- SMSG_PLAY_SPEAKERBOT_SOUND = 0x2765,
+ SMSG_PLAY_SOUND = 0x2764,
+ SMSG_PLAY_SPEAKERBOT_SOUND = 0x2767,
SMSG_PLAY_SPELL_VISUAL = 0x2C47,
SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C4B,
- SMSG_PLAY_TIME_WARNING = 0x26F9,
+ SMSG_PLAY_TIME_WARNING = 0x26FB,
SMSG_PONG = 0x304E,
- SMSG_POWER_UPDATE = 0x26CE,
+ SMSG_POWER_UPDATE = 0x26D0,
SMSG_PRELOAD_CHILD_MAP = 0x2579,
SMSG_PRELOAD_WORLD = 0x2594,
- SMSG_PREPOPULATE_NAME_CACHE = 0x283E,
- SMSG_PRE_RESSURECT = 0x2761,
+ SMSG_PREPOPULATE_NAME_CACHE = 0x2840,
+ SMSG_PRE_RESSURECT = 0x2763,
SMSG_PRINT_NOTIFICATION = 0x25C9,
- SMSG_PROC_RESIST = 0x2755,
- SMSG_PROFESSION_GOSSIP = 0x27F5,
+ SMSG_PROC_RESIST = 0x2757,
+ SMSG_PROFESSION_GOSSIP = 0x27F7,
SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C53,
SMSG_PVP_CREDIT = 0x2946,
SMSG_PVP_MATCH_COMPLETE = 0x2951,
@@ -1770,7 +1784,7 @@ enum OpcodeServer : uint16
SMSG_PVP_MATCH_START = 0x294F,
SMSG_PVP_MATCH_STATISTICS = 0x2932,
SMSG_PVP_OPTIONS_ENABLED = 0x2935,
- SMSG_PVP_TIER_RECORD = 0x2878,
+ SMSG_PVP_TIER_RECORD = 0x287A,
SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x291A,
SMSG_QUERY_CREATURE_RESPONSE = 0x2914,
SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2915,
@@ -1786,7 +1800,7 @@ enum OpcodeServer : uint16
SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x3002,
SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A96,
SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x29E6,
- SMSG_QUERY_TIME_RESPONSE = 0x26DF,
+ SMSG_QUERY_TIME_RESPONSE = 0x26E1,
SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81,
SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8F,
SMSG_QUEST_FORCE_REMOVED = 0x2A9C,
@@ -1805,22 +1819,22 @@ enum OpcodeServer : uint16
SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9D,
SMSG_QUEST_POI_UPDATE_RESPONSE = 0x2A9F,
SMSG_QUEST_PUSH_RESULT = 0x2A90,
- SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2861,
- SMSG_QUEST_SESSION_READY_CHECK = 0x284F,
- SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2850,
- SMSG_QUEST_SESSION_RESULT = 0x284E,
+ SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2863,
+ SMSG_QUEST_SESSION_READY_CHECK = 0x2851,
+ SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2852,
+ SMSG_QUEST_SESSION_RESULT = 0x2850,
SMSG_QUEST_UPDATE_ADD_CREDIT = 0x2A8C,
SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x2A8D,
SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x2A8E,
SMSG_QUEST_UPDATE_COMPLETE = 0x2A89,
SMSG_QUEST_UPDATE_FAILED = 0x2A8A,
SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8B,
- SMSG_QUEUE_SUMMARY_UPDATE = 0x2808,
- SMSG_RAF_ACCOUNT_INFO = 0x284C,
- SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x285D,
- SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x28B3,
- SMSG_RAID_DIFFICULTY_SET = 0x27A2,
- SMSG_RAID_GROUP_ONLY = 0x27A4,
+ SMSG_QUEUE_SUMMARY_UPDATE = 0x280A,
+ SMSG_RAF_ACCOUNT_INFO = 0x284E,
+ SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x285F,
+ SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x28B6,
+ SMSG_RAID_DIFFICULTY_SET = 0x27A4,
+ SMSG_RAID_GROUP_ONLY = 0x27A6,
SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4,
SMSG_RAID_MARKERS_CHANGED = 0x259F,
SMSG_RANDOM_ROLL = 0x262D,
@@ -1828,33 +1842,33 @@ enum OpcodeServer : uint16
SMSG_READY_CHECK_COMPLETED = 0x25F6,
SMSG_READY_CHECK_RESPONSE = 0x25F5,
SMSG_READY_CHECK_STARTED = 0x25F4,
- SMSG_READ_ITEM_RESULT_FAILED = 0x279E,
- SMSG_READ_ITEM_RESULT_OK = 0x2795,
+ SMSG_READ_ITEM_RESULT_FAILED = 0x27A0,
+ SMSG_READ_ITEM_RESULT_OK = 0x2797,
SMSG_REALM_QUERY_RESPONSE = 0x2913,
- SMSG_REATTACH_RESURRECT = 0x2745,
+ SMSG_REATTACH_RESURRECT = 0x2747,
SMSG_RECEIVE_PING_UNIT = 0x25A0,
SMSG_RECEIVE_PING_WORLD_POINT = 0x25A1,
- SMSG_RECRAFT_ITEM_RESULT = 0x28A2,
- SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26BC,
+ SMSG_RECRAFT_ITEM_RESULT = 0x28A5,
+ SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26BE,
SMSG_REFRESH_COMPONENT = 0x264E,
SMSG_REFRESH_SPELL_HISTORY = 0x2C2B,
SMSG_REMOVE_ITEM_PASSIVE = 0x25AA,
SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C54,
- SMSG_REPLACE_TROPHY_RESPONSE = 0x27BA,
+ SMSG_REPLACE_TROPHY_RESPONSE = 0x27BC,
SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x3001,
SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x258E,
SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x2936,
SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x2937,
SMSG_RESET_COMPRESSION_CONTEXT = 0x304F,
- SMSG_RESET_FAILED_NOTIFY = 0x26B3,
- SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x28A8,
+ SMSG_RESET_FAILED_NOTIFY = 0x26B5,
+ SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x28AB,
SMSG_RESET_QUEST_POI = 0x2AA0,
SMSG_RESET_RANGED_COMBAT_TIMER = 0x2945,
SMSG_RESET_WEEKLY_CURRENCY = 0x2575,
SMSG_RESPEC_WIPE_CONFIRM = 0x2610,
SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2572,
- SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x287F,
- SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x2880,
+ SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x2881,
+ SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x2882,
SMSG_RESTART_GLOBAL_COOLDOWN = 0x2C63,
SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25B8,
SMSG_RESUME_CAST = 0x2C3D,
@@ -1863,21 +1877,21 @@ enum OpcodeServer : uint16
SMSG_RESUME_TOKEN = 0x25A8,
SMSG_RESURRECT_REQUEST = 0x257E,
SMSG_RESYNC_RUNES = 0x2C61,
- SMSG_RETURNING_PLAYER_PROMPT = 0x279D,
- SMSG_RETURN_APPLICANT_LIST = 0x2842,
- SMSG_RETURN_RECRUITING_CLUBS = 0x2841,
+ SMSG_RETURNING_PLAYER_PROMPT = 0x279F,
+ SMSG_RETURN_APPLICANT_LIST = 0x2844,
+ SMSG_RETURN_RECRUITING_CLUBS = 0x2843,
SMSG_ROLE_CHANGED_INFORM = 0x258A,
SMSG_ROLE_CHOSEN = 0x2A39,
SMSG_ROLE_POLL_INFORM = 0x258B,
- SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27F4,
+ SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27F6,
SMSG_RUNE_REGEN_DEBUG = 0x25B5,
- SMSG_SCENARIO_COMPLETED = 0x27E2,
+ SMSG_SCENARIO_COMPLETED = 0x27E4,
SMSG_SCENARIO_POIS = 0x2630,
SMSG_SCENARIO_PROGRESS_UPDATE = 0x2629,
- SMSG_SCENARIO_SHOW_CRITERIA = 0x27F8,
+ SMSG_SCENARIO_SHOW_CRITERIA = 0x27FA,
SMSG_SCENARIO_STATE = 0x2628,
- SMSG_SCENARIO_UI_UPDATE = 0x27F7,
- SMSG_SCENARIO_VACATE = 0x279F,
+ SMSG_SCENARIO_UI_UPDATE = 0x27F9,
+ SMSG_SCENARIO_VACATE = 0x27A1,
SMSG_SCENE_OBJECT_EVENT = 0x25E0,
SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E5,
SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E6,
@@ -1887,7 +1901,7 @@ enum OpcodeServer : uint16
SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E3,
SMSG_SCRIPT_CAST = 0x2C58,
SMSG_SEASON_INFO = 0x25C0,
- SMSG_SELL_RESPONSE = 0x26C0,
+ SMSG_SELL_RESPONSE = 0x26C2,
SMSG_SEND_ITEM_PASSIVES = 0x25AB,
SMSG_SEND_KNOWN_SPELLS = 0x2C29,
SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x262B,
@@ -1896,48 +1910,50 @@ enum OpcodeServer : uint16
SMSG_SEND_SPELL_HISTORY = 0x2C2A,
SMSG_SEND_UNLEARN_SPELLS = 0x2C2D,
SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x264B,
- SMSG_SERVER_TIME = 0x267F,
- SMSG_SERVER_TIME_OFFSET = 0x270F,
+ SMSG_SERVER_TIME = 0x2681,
+ SMSG_SERVER_TIME_OFFSET = 0x2711,
SMSG_SETUP_COMBAT_LOG_FILE_FLUSH = 0x2C1F,
SMSG_SETUP_CURRENCY = 0x2573,
- SMSG_SET_AI_ANIM_KIT = 0x272A,
- SMSG_SET_ANIM_TIER = 0x272E,
+ SMSG_SET_AI_ANIM_KIT = 0x272C,
+ SMSG_SET_ANIM_TIER = 0x2730,
SMSG_SET_CHR_UPGRADE_TIER = 0x25DD,
SMSG_SET_CURRENCY = 0x2574,
SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E,
- SMSG_SET_DUNGEON_DIFFICULTY = 0x26A1,
- SMSG_SET_FACTION_AT_WAR = 0x26FB,
- SMSG_SET_FACTION_NOT_VISIBLE = 0x2725,
- SMSG_SET_FACTION_STANDING = 0x2726,
- SMSG_SET_FACTION_VISIBLE = 0x2724,
+ SMSG_SET_DUNGEON_DIFFICULTY = 0x26A3,
+ SMSG_SET_FACTION_AT_WAR = 0x26FD,
+ SMSG_SET_FACTION_NOT_VISIBLE = 0x2727,
+ SMSG_SET_FACTION_STANDING = 0x2728,
+ SMSG_SET_FACTION_VISIBLE = 0x2726,
SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C38,
- SMSG_SET_FORCED_REACTIONS = 0x2718,
+ SMSG_SET_FORCED_REACTIONS = 0x271A,
SMSG_SET_ITEM_PURCHASE_DATA = 0x259A,
- SMSG_SET_LOOT_METHOD_FAILED = 0x27C6,
+ SMSG_SET_LOOT_METHOD_FAILED = 0x27C8,
SMSG_SET_MAX_WEEKLY_QUANTITY = 0x259D,
- SMSG_SET_MELEE_ANIM_KIT = 0x272D,
- SMSG_SET_MOVEMENT_ANIM_KIT = 0x272C,
+ SMSG_SET_MELEE_ANIM_KIT = 0x272F,
+ SMSG_SET_MOVEMENT_ANIM_KIT = 0x272E,
SMSG_SET_PCT_SPELL_MODIFIER = 0x2C39,
SMSG_SET_PET_SPECIALIZATION = 0x2622,
SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x3003,
SMSG_SET_PLAY_HOVER_ANIM = 0x25B9,
- SMSG_SET_PROFICIENCY = 0x272F,
- SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2855,
+ SMSG_SET_PROFICIENCY = 0x2731,
+ SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2857,
SMSG_SET_SHIPMENT_READY_RESPONSE = 0x2998,
SMSG_SET_SPELL_CHARGES = 0x2C28,
- SMSG_SET_TIME_ZONE_INFORMATION = 0x2674,
- SMSG_SET_VEHICLE_REC_ID = 0x26F2,
- SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x2884,
+ SMSG_SET_TIME_ZONE_INFORMATION = 0x2676,
+ SMSG_SET_VEHICLE_REC_ID = 0x26F4,
+ SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x2886,
SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x2999,
SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D9,
SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A95,
- SMSG_SHOW_TAXI_NODES = 0x26C9,
- SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x276A,
- SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x288F,
- SMSG_SOCKET_GEMS_FAILURE = 0x2722,
- SMSG_SOCKET_GEMS_SUCCESS = 0x2721,
- SMSG_SPECIAL_MOUNT_ANIM = 0x269C,
- SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2713,
+ SMSG_SHOW_TAXI_NODES = 0x26CB,
+ SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x276C,
+ SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x2891,
+ SMSG_SOCKET_GEMS_FAILURE = 0x2724,
+ SMSG_SOCKET_GEMS_SUCCESS = 0x2723,
+ SMSG_SPECIAL_MOUNT_ANIM = 0x269E,
+ SMSG_SPECTATE_END = 0x28B8,
+ SMSG_SPECTATE_PLAYER = 0x28B7,
+ SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2715,
SMSG_SPELL_ABSORB_LOG = 0x2C1C,
SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C16,
SMSG_SPELL_CHANNEL_START = 0x2C33,
@@ -1966,93 +1982,93 @@ enum OpcodeServer : uint16
SMSG_SPELL_PREPARE = 0x2C3A,
SMSG_SPELL_START = 0x2C3C,
SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25CB,
- SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x2867,
- SMSG_STAND_STATE_UPDATE = 0x2717,
+ SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x2869,
+ SMSG_STAND_STATE_UPDATE = 0x2719,
SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x25D1,
SMSG_START_ELAPSED_TIMER = 0x2602,
SMSG_START_ELAPSED_TIMERS = 0x2604,
- SMSG_START_LIGHTNING_STORM = 0x26A4,
+ SMSG_START_LIGHTNING_STORM = 0x26A6,
SMSG_START_LOOT_ROLL = 0x261A,
- SMSG_START_MIRROR_TIMER = 0x270A,
+ SMSG_START_MIRROR_TIMER = 0x270C,
SMSG_START_TIMER = 0x25A4,
SMSG_STOP_ELAPSED_TIMER = 0x2603,
- SMSG_STOP_MIRROR_TIMER = 0x270C,
- SMSG_STOP_SPEAKERBOT_SOUND = 0x2766,
+ SMSG_STOP_MIRROR_TIMER = 0x270E,
+ SMSG_STOP_SPEAKERBOT_SOUND = 0x2768,
SMSG_STOP_TIMER = 0x25A5,
SMSG_STREAMING_MOVIES = 0x25A3,
- SMSG_SUGGEST_INVITE_INFORM = 0x278B,
- SMSG_SUMMON_CANCEL = 0x26AD,
+ SMSG_SUGGEST_INVITE_INFORM = 0x278D,
+ SMSG_SUMMON_CANCEL = 0x26AF,
SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258C,
- SMSG_SUMMON_REQUEST = 0x271C,
+ SMSG_SUMMON_REQUEST = 0x271E,
SMSG_SUPERCEDED_SPELLS = 0x2C4E,
SMSG_SUSPEND_COMMS = 0x304A,
SMSG_SUSPEND_TOKEN = 0x25A7,
- SMSG_SYNC_WOW_ENTITLEMENTS = 0x285F,
- SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2712,
- SMSG_TAXI_NODE_STATUS = 0x2679,
- SMSG_TEXT_EMOTE = 0x2677,
- SMSG_THREAT_CLEAR = 0x26D8,
- SMSG_THREAT_REMOVE = 0x26D7,
- SMSG_THREAT_UPDATE = 0x26D6,
+ SMSG_SYNC_WOW_ENTITLEMENTS = 0x2861,
+ SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2714,
+ SMSG_TAXI_NODE_STATUS = 0x267B,
+ SMSG_TEXT_EMOTE = 0x2679,
+ SMSG_THREAT_CLEAR = 0x26DA,
+ SMSG_THREAT_REMOVE = 0x26D9,
+ SMSG_THREAT_UPDATE = 0x26D8,
SMSG_TIME_ADJUSTMENT = 0x2DD3,
SMSG_TIME_SYNC_REQUEST = 0x2DD2,
- SMSG_TITLE_EARNED = 0x26D3,
- SMSG_TITLE_LOST = 0x26D4,
- SMSG_TOTEM_CREATED = 0x26C3,
- SMSG_TOTEM_DURATION_CHANGED = 0x26C5,
- SMSG_TOTEM_MOVED = 0x26C6,
- SMSG_TOTEM_REMOVED = 0x26C4,
+ SMSG_TITLE_EARNED = 0x26D5,
+ SMSG_TITLE_LOST = 0x26D6,
+ SMSG_TOTEM_CREATED = 0x26C5,
+ SMSG_TOTEM_DURATION_CHANGED = 0x26C7,
+ SMSG_TOTEM_MOVED = 0x26C8,
+ SMSG_TOTEM_REMOVED = 0x26C6,
SMSG_TRADE_STATUS = 0x2582,
SMSG_TRADE_UPDATED = 0x2581,
- SMSG_TRAINER_BUY_FAILED = 0x26DB,
- SMSG_TRAINER_LIST = 0x26DA,
+ SMSG_TRAINER_BUY_FAILED = 0x26DD,
+ SMSG_TRAINER_LIST = 0x26DC,
SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x25D0,
- SMSG_TRANSFER_ABORTED = 0x26FE,
+ SMSG_TRANSFER_ABORTED = 0x2700,
SMSG_TRANSFER_PENDING = 0x25CC,
SMSG_TREASURE_PICKER_RESPONSE = 0x291F,
- SMSG_TRIGGER_CINEMATIC = 0x27BF,
- SMSG_TRIGGER_MOVIE = 0x26C7,
- SMSG_TURN_IN_PETITION_RESULT = 0x2748,
- SMSG_TUTORIAL_FLAGS = 0x27B3,
+ SMSG_TRIGGER_CINEMATIC = 0x27C1,
+ SMSG_TRIGGER_MOVIE = 0x26C9,
+ SMSG_TURN_IN_PETITION_RESULT = 0x274A,
+ SMSG_TUTORIAL_FLAGS = 0x27B5,
SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA2,
- SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C1,
- SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C2,
+ SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C3,
+ SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C4,
SMSG_UNLEARNED_SPELLS = 0x2C50,
SMSG_UNLOAD_CHILD_MAP = 0x257A,
- SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x2879,
- SMSG_UPDATE_ACCOUNT_DATA = 0x2704,
+ SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x287B,
+ SMSG_UPDATE_ACCOUNT_DATA = 0x2706,
SMSG_UPDATE_ACTION_BUTTONS = 0x25DE,
- SMSG_UPDATE_BNET_SESSION_KEY = 0x2819,
+ SMSG_UPDATE_BNET_SESSION_KEY = 0x281B,
SMSG_UPDATE_CAPTURE_POINT = 0x2929,
- SMSG_UPDATE_CELESTIAL_BODY = 0x2815,
- SMSG_UPDATE_CHARACTER_FLAGS = 0x27B9,
- SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2760,
- SMSG_UPDATE_COOLDOWN = 0x275F,
+ SMSG_UPDATE_CELESTIAL_BODY = 0x2817,
+ SMSG_UPDATE_CHARACTER_FLAGS = 0x27BB,
+ SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2762,
+ SMSG_UPDATE_COOLDOWN = 0x2761,
SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x2996,
SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x297F,
SMSG_UPDATE_EXPANSION_LEVEL = 0x2643,
- SMSG_UPDATE_GAME_TIME_STATE = 0x281C,
- SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A6,
- SMSG_UPDATE_LAST_INSTANCE = 0x2685,
- SMSG_UPDATE_OBJECT = 0x27C0,
+ SMSG_UPDATE_GAME_TIME_STATE = 0x281E,
+ SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A8,
+ SMSG_UPDATE_LAST_INSTANCE = 0x2687,
+ SMSG_UPDATE_OBJECT = 0x27C2,
SMSG_UPDATE_PRIMARY_SPEC = 0x25D6,
SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F3,
SMSG_UPDATE_TALENT_DATA = 0x25D5,
- SMSG_UPDATE_WORLD_STATE = 0x2742,
+ SMSG_UPDATE_WORLD_STATE = 0x2744,
SMSG_USERLIST_ADD = 0x2BB9,
SMSG_USERLIST_REMOVE = 0x2BBA,
SMSG_USERLIST_UPDATE = 0x2BBB,
- SMSG_USE_EQUIPMENT_SET_RESULT = 0x2749,
- SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2810,
- SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x280E,
- SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x280D,
- SMSG_VAS_PURCHASE_COMPLETE = 0x27E8,
- SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27E7,
+ SMSG_USE_EQUIPMENT_SET_RESULT = 0x274B,
+ SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2812,
+ SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2810,
+ SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x280F,
+ SMSG_VAS_PURCHASE_COMPLETE = 0x27EA,
+ SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27E9,
SMSG_VENDOR_INVENTORY = 0x25B7,
SMSG_VIGNETTE_UPDATE = 0x3008,
- SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2814,
- SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2873,
- SMSG_VOICE_LOGIN_RESPONSE = 0x2813,
+ SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2816,
+ SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2875,
+ SMSG_VOICE_LOGIN_RESPONSE = 0x2815,
SMSG_VOID_ITEM_SWAP_RESPONSE = 0x2DA4,
SMSG_VOID_STORAGE_CONTENTS = 0x2DA1,
SMSG_VOID_STORAGE_FAILED = 0x2DA0,
@@ -2061,24 +2077,28 @@ enum OpcodeServer : uint16
SMSG_WAIT_QUEUE_FINISH = 0x256F,
SMSG_WAIT_QUEUE_UPDATE = 0x256E,
SMSG_WARDEN3_DATA = 0x2577,
- SMSG_WARDEN3_DISABLED = 0x2817,
- SMSG_WARDEN3_ENABLED = 0x2816,
- SMSG_WARFRONT_COMPLETE = 0x2758,
+ SMSG_WARDEN3_DISABLED = 0x2819,
+ SMSG_WARDEN3_ENABLED = 0x2818,
+ SMSG_WARFRONT_COMPLETE = 0x275A,
SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE = 0x2934,
SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x2933,
- SMSG_WEATHER = 0x26A3,
- SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x286A,
- SMSG_WEEKLY_REWARDS_RESULT = 0x2868,
- SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x2869,
+ SMSG_WEATHER = 0x26A5,
+ SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x286C,
+ SMSG_WEEKLY_REWARDS_RESULT = 0x286A,
+ SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x286B,
SMSG_WHO = 0x2BAE,
- SMSG_WHO_IS = 0x26A2,
- SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x281B,
+ SMSG_WHO_IS = 0x26A4,
+ SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x281D,
SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x300F,
SMSG_WORLD_SERVER_INFO = 0x25AC,
- SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2860,
- SMSG_XP_AWARDED_FROM_CURRENCY = 0x28A7,
+ SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2862,
+ SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END = 0x2892,
+ SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED = 0x2893,
+ SMSG_WOW_LABS_PARTY_ERROR = 0x289B,
+ SMSG_WOW_LABS_SET_PREDICTION_CIRCLE = 0x2894,
+ SMSG_XP_AWARDED_FROM_CURRENCY = 0x28AA,
SMSG_XP_GAIN_ABORTED = 0x25C8,
- SMSG_XP_GAIN_ENABLED = 0x27A3,
+ SMSG_XP_GAIN_ENABLED = 0x27A5,
SMSG_ZONE_UNDER_ATTACK = 0x2BB5,
// Opcodes that are not generated automatically
diff --git a/src/server/shared/Networking/Http/HttpSocket.h b/src/server/shared/Networking/Http/HttpSocket.h
index 2bd18efd565..9a333a8e779 100644
--- a/src/server/shared/Networking/Http/HttpSocket.h
+++ b/src/server/shared/Networking/Http/HttpSocket.h
@@ -53,7 +53,8 @@ class Socket : public BaseSocket<Derived, Impl::BoostBeastSocketWrapper>
using SocketBase = BaseSocket<Derived, Impl::BoostBeastSocketWrapper>;
public:
- explicit Socket(boost::asio::ip::tcp::socket&& socket)
+ template<typename... Args>
+ explicit Socket(boost::asio::ip::tcp::socket&& socket, Args&&...)
: SocketBase(std::move(socket)) { }
Socket(Socket const& other) = delete;
diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h
index c1c319a85cd..3b95d9104e8 100644
--- a/src/tools/map_extractor/loadlib/DBFilesClientList.h
+++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h
@@ -31,6 +31,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 4572795, "ActionBarGroup.db2" },
{ 4572797, "ActionBarGroupEntry.db2" },
{ 1115949, "AdventureJournal.db2" },
+ { 5599873, "AdventureJournalItem.db2" },
{ 1267070, "AdventureMapPOI.db2" },
{ 1710672, "AlliedRace.db2" },
{ 5156218, "AltMinimap.db2" },
@@ -55,6 +56,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 1093406, "AreaGroupMember.db2" },
{ 1000630, "AreaPOI.db2" },
{ 1000631, "AreaPOIState.db2" },
+ { 5634691, "AreaPOIUiWidgetSet.db2" },
{ 1353545, "AreaTable.db2" },
{ 1354401, "AreaTrigger.db2" },
{ 1352378, "AreaTriggerActionSet.db2" },
@@ -112,6 +114,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 801583, "BattlePetState.db2" },
{ 801584, "BattlePetVisual.db2" },
{ 1360265, "BattlemasterList.db2" },
+ { 5549327, "BattlepayCurrency.db2" },
{ 1525607, "BeamEffect.db2" },
{ 3491563, "BeckonTrigger.db2" },
{ 1467254, "BoneWindModifierModel.db2" },
@@ -702,6 +705,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 1716803, "RelicSlotTierRequirement.db2" },
{ 1671256, "RelicTalent.db2" },
{ 3743117, "RenownRewards.db2" },
+ { 5662591, "RenownRewardsPlunderstorm.db2" },
{ 1133729, "ResearchBranch.db2" },
{ 1133711, "ResearchField.db2" },
{ 1134090, "ResearchProject.db2" },
@@ -964,6 +968,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 1279741, "VehicleUIIndSeat.db2" },
{ 1279740, "VehicleUIIndicator.db2" },
{ 892861, "Vignette.db2" },
+ { 5634692, "VignetteUiWidgetSet.db2" },
{ 1634482, "VirtualAttachment.db2" },
{ 1634480, "VirtualAttachmentCustomization.db2" },
{ 1267067, "VocalUISounds.db2" },