aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp39
-rw-r--r--src/server/game/World/World.cpp2
-rw-r--r--src/server/game/World/World.h2
-rw-r--r--src/server/worldserver/worldserver.conf.dist20
4 files changed, 42 insertions, 21 deletions
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index 95ac34953a4..f32feea0c67 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -205,8 +205,6 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg,
switch (type)
{
case CHAT_MSG_SAY:
- case CHAT_MSG_EMOTE:
- case CHAT_MSG_YELL:
{
// Prevent cheating
if (!sender->IsAlive())
@@ -218,12 +216,37 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg,
return;
}
- if (type == CHAT_MSG_SAY)
- sender->Say(msg, Language(lang));
- else if (type == CHAT_MSG_EMOTE)
- sender->TextEmote(msg);
- else if (type == CHAT_MSG_YELL)
- sender->Yell(msg, Language(lang));
+ sender->Say(msg, Language(lang));
+ break;
+ }
+ case CHAT_MSG_EMOTE:
+ {
+ // Prevent cheating
+ if (!sender->IsAlive())
+ return;
+
+ if (sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_EMOTE_LEVEL_REQ))
+ {
+ SendNotification(GetTrinityString(LANG_SAY_REQ), sWorld->getIntConfig(CONFIG_CHAT_EMOTE_LEVEL_REQ));
+ return;
+ }
+
+ sender->TextEmote(msg);
+ break;
+ }
+ case CHAT_MSG_YELL:
+ {
+ // Prevent cheating
+ if (!sender->IsAlive())
+ return;
+
+ if (sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_YELL_LEVEL_REQ))
+ {
+ SendNotification(GetTrinityString(LANG_SAY_REQ), sWorld->getIntConfig(CONFIG_CHAT_YELL_LEVEL_REQ));
+ return;
+ }
+
+ sender->Yell(msg, Language(lang));
break;
}
case CHAT_MSG_WHISPER:
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 15845153998..8aaa8b144c8 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -661,7 +661,9 @@ void World::LoadConfigSettings(bool reload)
}
m_int_configs[CONFIG_CHAT_CHANNEL_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Channel", 1);
m_int_configs[CONFIG_CHAT_WHISPER_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Whisper", 1);
+ m_int_configs[CONFIG_CHAT_EMOTE_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Emote", 1);
m_int_configs[CONFIG_CHAT_SAY_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Say", 1);
+ m_int_configs[CONFIG_CHAT_YELL_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Yell", 1);
m_int_configs[CONFIG_PARTY_LEVEL_REQ] = sConfigMgr->GetIntDefault("PartyLevelReq", 1);
m_int_configs[CONFIG_TRADE_LEVEL_REQ] = sConfigMgr->GetIntDefault("LevelReq.Trade", 1);
m_int_configs[CONFIG_AUCTION_LEVEL_REQ] = sConfigMgr->GetIntDefault("LevelReq.Auction", 1);
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 7181d9592a9..2b7ab63b36a 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -301,7 +301,9 @@ enum WorldIntConfigs
CONFIG_CHAT_STRICT_LINK_CHECKING_KICK,
CONFIG_CHAT_CHANNEL_LEVEL_REQ,
CONFIG_CHAT_WHISPER_LEVEL_REQ,
+ CONFIG_CHAT_EMOTE_LEVEL_REQ,
CONFIG_CHAT_SAY_LEVEL_REQ,
+ CONFIG_CHAT_YELL_LEVEL_REQ,
CONFIG_PARTY_LEVEL_REQ,
CONFIG_TRADE_LEVEL_REQ,
CONFIG_AUCTION_LEVEL_REQ,
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 11f9a2dd327..3e383085d49 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -1784,24 +1784,18 @@ Channel.RestrictedLfg = 1
#
# ChatLevelReq.Channel
-# Description: Level requirement for characters to be able to write in chat channels.
-# Default: 1
-
-ChatLevelReq.Channel = 1
-
-#
# ChatLevelReq.Whisper
-# Description: Level requirement for characters to be able to whisper other characters.
-# Default: 1
-
-ChatLevelReq.Whisper = 1
-
-#
+# ChatLevelReq.Emote
# ChatLevelReq.Say
-# Description: Level requirement for characters to be able to use say/yell/emote.
+# ChatLevelReq.Yell
+# Description: Level requirement for characters to be able to use chats.
# Default: 1
+ChatLevelReq.Channel = 1
+ChatLevelReq.Whisper = 1
+ChatLevelReq.Emote = 1
ChatLevelReq.Say = 1
+ChatLevelReq.Yell = 1
#
# PartyLevelReq