aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-11-10 19:55:35 +0100
committerShauren <shauren.trinity@gmail.com>2023-11-10 19:55:35 +0100
commit42c44bd787458a8a0c7a12bbab874388537d61ed (patch)
treee482c4816030886dc87ac13f5f34f33caf2f48e2 /src
parent97f9e18cbdb520c242f46827d2d171de37f55afa (diff)
Core/Chat: Explicitly ignore disabling chat feature
Closes #29425
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp11
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp14
-rw-r--r--src/server/game/Server/Packets/ChatPackets.h21
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
-rw-r--r--src/server/game/Server/WorldSession.h2
5 files changed, 50 insertions, 2 deletions
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index 8e266fa707c..5111e6f03ac 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -780,3 +780,14 @@ void WorldSession::HandleChatCanLocalWhisperTargetRequest(WorldPackets::Chat::Ca
canLocalWhisperTargetResponse.Status = status;
SendPacket(canLocalWhisperTargetResponse.Write());
}
+
+void WorldSession::HandleChatUpdateAADCStatus(WorldPackets::Chat::UpdateAADCStatus const& /*updateAADCStatus*/)
+{
+ // disabling chat not supported
+ // send Sueccess and force chat disabled to false instead of sending that change failed
+ // this makes client change the cvar back to false instead of just printing error message in console
+ WorldPackets::Chat::UpdateAADCStatusResponse response;
+ response.Success = true;
+ response.ChatDisabled = false;
+ SendPacket(response.Write());
+}
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp
index 48f1691564f..7691c8f8d0f 100644
--- a/src/server/game/Server/Packets/ChatPackets.cpp
+++ b/src/server/game/Server/Packets/ChatPackets.cpp
@@ -327,3 +327,17 @@ WorldPacket const* WorldPackets::Chat::CanLocalWhisperTargetResponse::Write()
return &_worldPacket;
}
+
+void WorldPackets::Chat::UpdateAADCStatus::Read()
+{
+ ChatDisabled = _worldPacket.ReadBit();
+}
+
+WorldPacket const* WorldPackets::Chat::UpdateAADCStatusResponse::Write()
+{
+ _worldPacket.WriteBit(Success);
+ _worldPacket.WriteBit(ChatDisabled);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h
index d6c9b22b9ef..f2ef6c3d502 100644
--- a/src/server/game/Server/Packets/ChatPackets.h
+++ b/src/server/game/Server/Packets/ChatPackets.h
@@ -347,6 +347,27 @@ namespace WorldPackets
ObjectGuid WhisperTarget;
ChatWhisperTargetStatus Status = {};
};
+
+ class UpdateAADCStatus final : public ClientPacket
+ {
+ public:
+ UpdateAADCStatus(WorldPacket&& packet) : ClientPacket(CMSG_UPDATE_AADC_STATUS, std::move(packet)) { }
+
+ void Read() override;
+
+ bool ChatDisabled = false;
+ };
+
+ class UpdateAADCStatusResponse final : public ServerPacket
+ {
+ public:
+ UpdateAADCStatusResponse() : ServerPacket(SMSG_UPDATE_AADC_STATUS_RESPONSE, 1) { }
+
+ WorldPacket const* Write() override;
+
+ bool Success = false;
+ bool ChatDisabled = false;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 1926a556e3f..ea2efa6c725 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -958,7 +958,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_UNLEARN_SKILL, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleUnlearnSkillOpcode);
DEFINE_HANDLER(CMSG_UNLEARN_SPECIALIZATION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UNLOCK_VOID_STORAGE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleVoidStorageUnlock);
- DEFINE_HANDLER(CMSG_UPDATE_AADC_STATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_UPDATE_AADC_STATUS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleChatUpdateAADCStatus);
DEFINE_HANDLER(CMSG_UPDATE_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateAccountData);
DEFINE_HANDLER(CMSG_UPDATE_AREA_TRIGGER_VISUAL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UPDATE_CLIENT_SETTINGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -2115,7 +2115,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNLEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNLOAD_CHILD_MAP, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_AADC_STATUS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_AADC_STATUS_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_ACCOUNT_DATA, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_ACTION_BUTTONS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_BNET_SESSION_KEY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index a2ffeac9577..3d29bc83b7e 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -306,6 +306,7 @@ namespace WorldPackets
class ChatUnregisterAllAddonPrefixes;
class ChatReportIgnored;
class CanLocalWhisperTargetRequest;
+ class UpdateAADCStatus;
}
namespace Collections
@@ -1558,6 +1559,7 @@ class TC_GAME_API WorldSession
void HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet);
void HandleChatIgnoredOpcode(WorldPackets::Chat::ChatReportIgnored& chatReportIgnored);
void HandleChatCanLocalWhisperTargetRequest(WorldPackets::Chat::CanLocalWhisperTargetRequest const& canLocalWhisperTargetRequest);
+ void HandleChatUpdateAADCStatus(WorldPackets::Chat::UpdateAADCStatus const& updateAADCStatus);
void HandleUnregisterAllAddonPrefixesOpcode(WorldPackets::Chat::ChatUnregisterAllAddonPrefixes& packet);
void HandleAddonRegisteredPrefixesOpcode(WorldPackets::Chat::ChatRegisterAddonPrefixes& packet);