diff options
author | jackpoz <giacomopoz@gmail.com> | 2019-01-01 15:57:35 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-11-18 15:59:31 +0100 |
commit | 0b556d8a9183a8109a8559473c32a55405bd30df (patch) | |
tree | ed5fcfdf760c8eb7ad675d8961feceba1bb469f2 /src/server/game/Handlers/ChatHandler.cpp | |
parent | ff2cd4a0322fc2942323702a37844b0cfa963ce4 (diff) |
Core/Handlers: fix ".whisper on" with opposite faction/low level
Closes #22283
(cherry picked from commit f11117584d0b787bbf36ae61dad2b46e559b0953)
Diffstat (limited to 'src/server/game/Handlers/ChatHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/ChatHandler.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 8974b909a2a..3aa3545bdfc 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -305,16 +305,21 @@ void WorldSession::HandleChatMessage(ChatMsg type, Language lang, std::string ms SendChatPlayerNotfoundNotice(target); return; } - if (!sender->IsGameMaster() && sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ) && !receiver->IsInWhisperWhiteList(sender->GetGUID())) - { - SendNotification(GetTrinityString(LANG_WHISPER_REQ), sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ)); - return; - } - if (GetPlayer()->GetTeam() != receiver->GetTeam() && !HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHAT) && !receiver->IsInWhisperWhiteList(sender->GetGUID())) + // Apply checks only if receiver is not already in whitelist and if receiver is not a GM with ".whisper on" + if (!receiver->IsInWhisperWhiteList(sender->GetGUID()) && !receiver->IsGameMasterAcceptingWhispers()) { - SendChatPlayerNotfoundNotice(target); - return; + if (!sender->IsGameMaster() && sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ)) + { + SendNotification(GetTrinityString(LANG_WHISPER_REQ), sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ)); + return; + } + + if (GetPlayer()->GetTeam() != receiver->GetTeam() && !HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHAT)) + { + SendChatPlayerNotfoundNotice(target); + return; + } } if (GetPlayer()->HasAura(1852) && !receiver->IsGameMaster()) |