From 91226121c420793184d5041afc5595c6befd1b5e Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sat, 4 Jun 2022 17:45:09 -0400 Subject: [PATCH] Misc command updates. --- Source/Game/Chat/CommandHandler.cs | 2 +- .../Game/Chat/Commands/BNetAccountCommands.cs | 20 +--- Source/Game/Chat/Commands/DebugCommands.cs | 2 +- Source/Game/Chat/Commands/MessageCommands.cs | 39 ++++---- Source/Game/Chat/Commands/MiscCommands.cs | 96 ++++++------------- Source/Game/Chat/Commands/SpellCommands.cs | 45 +++------ Source/Game/Entities/Creature/Gossip.cs | 1 - Source/WorldServer/WorldServer.conf.dist | 15 +-- 8 files changed, 71 insertions(+), 149 deletions(-) diff --git a/Source/Game/Chat/CommandHandler.cs b/Source/Game/Chat/CommandHandler.cs index 01e49061a..d7268243c 100644 --- a/Source/Game/Chat/CommandHandler.cs +++ b/Source/Game/Chat/CommandHandler.cs @@ -705,7 +705,7 @@ namespace Game.Chat int partIndex = 0; while (true) { - if (partIndex >= part.Length) + if (partIndex >= part.Length || part[partIndex] == ' ') return true; else if (partIndex >= name.Length) return false; diff --git a/Source/Game/Chat/Commands/BNetAccountCommands.cs b/Source/Game/Chat/Commands/BNetAccountCommands.cs index e1515b2b3..b347b5adb 100644 --- a/Source/Game/Chat/Commands/BNetAccountCommands.cs +++ b/Source/Game/Chat/Commands/BNetAccountCommands.cs @@ -26,31 +26,19 @@ namespace Game.Chat.Commands class BNetAccountCommands { [Command("create", RBACPermissions.CommandBnetAccountCreate, true)] - static bool HandleAccountCreateCommand(CommandHandler handler, StringArguments args) + static bool HandleAccountCreateCommand(CommandHandler handler, string accountName, string password, bool? createGameAccount) { - if (args.Empty()) - return false; - - // Parse the command line arguments - string accountName = args.NextString(); - string password = args.NextString(); - if (string.IsNullOrEmpty(accountName) || string.IsNullOrEmpty(password)) - return false; - if (!accountName.Contains('@')) { handler.SendSysMessage(CypherStrings.AccountInvalidBnetName); return false; } - if (!bool.TryParse(args.NextString(), out bool createGameAccount)) - createGameAccount = true; - string gameAccountName; - switch (Global.BNetAccountMgr.CreateBattlenetAccount(accountName, password, createGameAccount, out gameAccountName)) + switch (Global.BNetAccountMgr.CreateBattlenetAccount(accountName, password, createGameAccount.GetValueOrDefault(true), out gameAccountName)) { case AccountOpResult.Ok: - if (createGameAccount) + if (createGameAccount.Value) handler.SendSysMessage(CypherStrings.AccountCreatedBnetWithGame, accountName, gameAccountName); else handler.SendSysMessage(CypherStrings.AccountCreated, accountName); @@ -59,7 +47,7 @@ namespace Game.Chat.Commands { Log.outInfo(LogFilter.Player, "Account: {0} (IP: {1}) Character:[{2}] ({3}) created Battle.net account {4}{5}{6}", handler.GetSession().GetAccountId(), handler.GetSession().GetRemoteAddress(), handler.GetSession().GetPlayer().GetName(), - handler.GetSession().GetPlayer().GetGUID().ToString(), accountName, createGameAccount ? " with game account " : "", createGameAccount ? gameAccountName : ""); + handler.GetSession().GetPlayer().GetGUID().ToString(), accountName, createGameAccount.Value ? " with game account " : "", createGameAccount.Value ? gameAccountName : ""); } break; case AccountOpResult.NameTooLong: diff --git a/Source/Game/Chat/Commands/DebugCommands.cs b/Source/Game/Chat/Commands/DebugCommands.cs index 5efc63378..dcff088b5 100644 --- a/Source/Game/Chat/Commands/DebugCommands.cs +++ b/Source/Game/Chat/Commands/DebugCommands.cs @@ -142,7 +142,7 @@ namespace Game.Chat } [Command("dummy", RBACPermissions.CommandDebugDummy)] - static bool HandleDebugDummyCommand(CommandHandler handler, StringArguments args) + static bool HandleDebugDummyCommand(CommandHandler handler) { handler.SendSysMessage("This command does nothing right now. Edit your local core (DebugCommands.cs) to make it do whatever you need for testing."); return true; diff --git a/Source/Game/Chat/Commands/MessageCommands.cs b/Source/Game/Chat/Commands/MessageCommands.cs index 8315c1a5c..94636b83c 100644 --- a/Source/Game/Chat/Commands/MessageCommands.cs +++ b/Source/Game/Chat/Commands/MessageCommands.cs @@ -28,9 +28,9 @@ namespace Game.Chat class MessageCommands { [CommandNonGroup("nameannounce", RBACPermissions.CommandNameannounce, true)] - static bool HandleNameAnnounceCommand(CommandHandler handler, object[] args) + static bool HandleNameAnnounceCommand(CommandHandler handler, string message) { - if (args.Length == 0) + if (message.IsEmpty()) return false; string name = "Console"; @@ -38,14 +38,14 @@ namespace Game.Chat if (session) name = session.GetPlayer().GetName(); - Global.WorldMgr.SendWorldText(CypherStrings.AnnounceColor, name, args); + Global.WorldMgr.SendWorldText(CypherStrings.AnnounceColor, name, message); return true; } [CommandNonGroup("gmnameannounce", RBACPermissions.CommandGmnameannounce, true)] - static bool HandleGMNameAnnounceCommand(CommandHandler handler, object[] args) + static bool HandleGMNameAnnounceCommand(CommandHandler handler, string message) { - if (args.Length == 0) + if (message.IsEmpty()) return false; string name = "Console"; @@ -53,40 +53,38 @@ namespace Game.Chat if (session) name = session.GetPlayer().GetName(); - Global.WorldMgr.SendGMText(CypherStrings.AnnounceColor, name, args); + Global.WorldMgr.SendGMText(CypherStrings.AnnounceColor, name, message); return true; } [CommandNonGroup("announce", RBACPermissions.CommandAnnounce, true)] - static bool HandleAnnounceCommand(CommandHandler handler, object[] args) + static bool HandleAnnounceCommand(CommandHandler handler, string message) { - if (args.Length == 0) + if (message.IsEmpty()) return false; - string str = handler.GetParsedString(CypherStrings.Systemmessage, args); - Global.WorldMgr.SendServerMessage(ServerMessageType.String, str); + Global.WorldMgr.SendServerMessage(ServerMessageType.String, handler.GetParsedString(CypherStrings.Systemmessage, message)); return true; } [CommandNonGroup("gmannounce", RBACPermissions.CommandGmannounce, true)] - static bool HandleGMAnnounceCommand(CommandHandler handler, object[] args) + static bool HandleGMAnnounceCommand(CommandHandler handler, string message) { - if (args.Length == 0) + if (message.IsEmpty()) return false; - Global.WorldMgr.SendGMText(CypherStrings.GmBroadcast, args); + Global.WorldMgr.SendGMText(CypherStrings.GmBroadcast, message); return true; } [CommandNonGroup("notify", RBACPermissions.CommandNotify, true)] - static bool HandleNotifyCommand(CommandHandler handler, object[] args) + static bool HandleNotifyCommand(CommandHandler handler, string message) { - if (args.Length == 0) + if (message.IsEmpty()) return false; string str = handler.GetCypherString(CypherStrings.GlobalNotify); - foreach (string str2 in args) - str += str2; + str += message; Global.WorldMgr.SendGlobalMessage(new PrintNotification(str)); @@ -94,14 +92,13 @@ namespace Game.Chat } [CommandNonGroup("gmnotify", RBACPermissions.CommandGmnotify, true)] - static bool HandleGMNotifyCommand(CommandHandler handler, object[] args) + static bool HandleGMNotifyCommand(CommandHandler handler, string message) { - if (args.Length == 0) + if (message.IsEmpty()) return false; string str = handler.GetCypherString(CypherStrings.GmNotify); - foreach (string str2 in args) - str += str2; + str += message; Global.WorldMgr.SendGlobalGMMessage(new PrintNotification(str)); diff --git a/Source/Game/Chat/Commands/MiscCommands.cs b/Source/Game/Chat/Commands/MiscCommands.cs index bb859dbc2..a5c7639cc 100644 --- a/Source/Game/Chat/Commands/MiscCommands.cs +++ b/Source/Game/Chat/Commands/MiscCommands.cs @@ -186,25 +186,16 @@ namespace Game.Chat } [CommandNonGroup("additem set", RBACPermissions.CommandAdditemset)] - static bool HandleAddItemSetCommand(CommandHandler handler, StringArguments args) + static bool HandleAddItemSetCommand(CommandHandler handler, uint itemSetId, string bonuses, string context) { - if (args.Empty()) - return false; - - string idStr = handler.ExtractKeyFromLink(args, "Hitemset"); // number or [name] Shift-click form |color|Hitemset:itemset_id|h[name]|h|r - if (string.IsNullOrEmpty(idStr)) - return false; - // prevent generation all items with itemset field value '0' - if (!uint.TryParse(idStr, out uint itemSetId) || itemSetId == 0) + if (itemSetId == 0) { handler.SendSysMessage(CypherStrings.NoItemsFromItemsetFound, itemSetId); return false; } List bonusListIDs = new(); - var bonuses = args.NextString(); - var context = args.NextString(); // semicolon separated bonuslist ids (parse them after all arguments are extracted by strtok!) if (!bonuses.IsEmpty()) @@ -411,14 +402,14 @@ namespace Game.Chat } [CommandNonGroup("bank", RBACPermissions.CommandBank)] - static bool HandleBankCommand(CommandHandler handler, StringArguments args) + static bool HandleBankCommand(CommandHandler handler) { handler.GetSession().SendShowBank(handler.GetSession().GetPlayer().GetGUID()); return true; } [CommandNonGroup("bindsight", RBACPermissions.CommandBindsight)] - static bool HandleBindSightCommand(CommandHandler handler, StringArguments args) + static bool HandleBindSightCommand(CommandHandler handler) { Unit unit = handler.GetSelectedUnit(); if (!unit) @@ -458,7 +449,7 @@ namespace Game.Chat } [CommandNonGroup("cometome", RBACPermissions.CommandCometome)] - static bool HandleComeToMeCommand(CommandHandler handler, StringArguments args) + static bool HandleComeToMeCommand(CommandHandler handler) { Creature caster = handler.GetSelectedCreature(); if (!caster) @@ -988,11 +979,8 @@ namespace Game.Chat } [CommandNonGroup("hidearea", RBACPermissions.CommandHidearea)] - static bool HandleHideAreaCommand(CommandHandler handler, StringArguments args) + static bool HandleHideAreaCommand(CommandHandler handler, uint areaId) { - if (args.Empty()) - return false; - Player playerTarget = handler.GetSelectedPlayer(); if (!playerTarget) { @@ -1000,7 +988,7 @@ namespace Game.Chat return false; } - AreaTableRecord area = CliDB.AreaTableStorage.LookupByKey(args.NextUInt32()); + AreaTableRecord area = CliDB.AreaTableStorage.LookupByKey(areaId); if (area == null) { handler.SendSysMessage(CypherStrings.BadValue); @@ -1122,7 +1110,7 @@ namespace Game.Chat } [CommandNonGroup("listfreeze", RBACPermissions.CommandListfreeze)] - static bool HandleListFreezeCommand(CommandHandler handler, StringArguments args) + static bool HandleListFreezeCommand(CommandHandler handler) { // Get names from DB PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_CHARACTER_AURA_FROZEN); @@ -1159,7 +1147,7 @@ namespace Game.Chat } [CommandNonGroup("mailbox", RBACPermissions.CommandMailbox)] - static bool HandleMailBoxCommand(CommandHandler handler, StringArguments args) + static bool HandleMailBoxCommand(CommandHandler handler) { Player player = handler.GetSession().GetPlayer(); @@ -1168,7 +1156,7 @@ namespace Game.Chat } [CommandNonGroup("movegens", RBACPermissions.CommandMovegens)] - static bool HandleMovegensCommand(CommandHandler handler, StringArguments args) + static bool HandleMovegensCommand(CommandHandler handler) { Unit unit = handler.GetSelectedUnit(); if (!unit) @@ -1251,7 +1239,7 @@ namespace Game.Chat return true; } - // mute player for some times + // mute player for the specified duration [CommandNonGroup("mute", RBACPermissions.CommandMute, true)] static bool HandleMuteCommand(CommandHandler handler, StringArguments args) { @@ -1336,15 +1324,8 @@ namespace Game.Chat // mutehistory command [CommandNonGroup("mutehistory", RBACPermissions.CommandMutehistory, true)] - static bool HandleMuteInfoCommand(CommandHandler handler, StringArguments args) + static bool HandleMuteHistoryCommand(CommandHandler handler, string accountName) { - if (args.Empty()) - return false; - - string accountName = args.NextString(""); - if (accountName.IsEmpty()) - return false; - uint accountId = Global.AccountMgr.GetId(accountName); if (accountId == 0) { @@ -1791,29 +1772,22 @@ namespace Game.Chat } [CommandNonGroup("playall", RBACPermissions.CommandPlayall)] - static bool HandlePlayAllCommand(CommandHandler handler, StringArguments args) + static bool HandlePlayAllCommand(CommandHandler handler, uint soundId, uint? broadcastTextId) { - if (args.Empty()) - return false; - - uint soundId = args.NextUInt32(); - if (!CliDB.SoundKitStorage.ContainsKey(soundId)) { handler.SendSysMessage(CypherStrings.SoundNotExist, soundId); return false; } - uint broadcastTextId = args.NextUInt32(); - - Global.WorldMgr.SendGlobalMessage(new PlaySound(handler.GetSession().GetPlayer().GetGUID(), soundId, broadcastTextId)); + Global.WorldMgr.SendGlobalMessage(new PlaySound(handler.GetSession().GetPlayer().GetGUID(), soundId, broadcastTextId.GetValueOrDefault(0))); handler.SendSysMessage(CypherStrings.CommandPlayedToAll, soundId); return true; } [CommandNonGroup("possess", RBACPermissions.CommandPossess)] - static bool HandlePossessCommand(CommandHandler handler, StringArguments args) + static bool HandlePossessCommand(CommandHandler handler) { Unit unit = handler.GetSelectedUnit(); if (!unit) @@ -1899,7 +1873,7 @@ namespace Game.Chat } [CommandNonGroup("respawn", RBACPermissions.CommandRespawn)] - static bool HandleRespawnCommand(CommandHandler handler, StringArguments args) + static bool HandleRespawnCommand(CommandHandler handler) { Player player = handler.GetSession().GetPlayer(); @@ -1991,11 +1965,8 @@ namespace Game.Chat } [CommandNonGroup("showarea", RBACPermissions.CommandShowarea)] - static bool HandleShowAreaCommand(CommandHandler handler, StringArguments args) + static bool HandleShowAreaCommand(CommandHandler handler, uint areaId) { - if (args.Empty()) - return false; - Player playerTarget = handler.GetSelectedPlayer(); if (!playerTarget) { @@ -2003,7 +1974,7 @@ namespace Game.Chat return false; } - AreaTableRecord area = CliDB.AreaTableStorage.LookupByKey(args.NextUInt32()); + AreaTableRecord area = CliDB.AreaTableStorage.LookupByKey(areaId); if (area == null) { handler.SendSysMessage(CypherStrings.BadValue); @@ -2144,7 +2115,7 @@ namespace Game.Chat } [CommandNonGroup("unbindsight", RBACPermissions.CommandUnbindsight)] - static bool HandleUnbindSightCommand(CommandHandler handler, StringArguments args) + static bool HandleUnbindSightCommand(CommandHandler handler) { Player player = handler.GetSession().GetPlayer(); @@ -2156,15 +2127,14 @@ namespace Game.Chat } [CommandNonGroup("unfreeze", RBACPermissions.CommandUnfreeze)] - static bool HandleUnFreezeCommand(CommandHandler handler, StringArguments args) + static bool HandleUnFreezeCommand(CommandHandler handler, string targetNameArg) { string name = ""; Player player; - string targetName = args.NextString(); // Get entered name - if (!string.IsNullOrEmpty(targetName)) + if (!targetNameArg.IsEmpty()) { - name = targetName; + name = targetNameArg; ObjectManager.NormalizePlayerName(ref name); player = Global.ObjAccessor.FindPlayerByName(name); } @@ -2186,7 +2156,7 @@ namespace Game.Chat } else { - if (!string.IsNullOrEmpty(targetName)) + if (!targetNameArg.IsEmpty()) { // Check for offline players ObjectGuid guid = Global.CharacterCacheStorage.GetCharacterGuidByName(name); @@ -2267,7 +2237,7 @@ namespace Game.Chat } [CommandNonGroup("unpossess", RBACPermissions.CommandUnpossess)] - static bool HandleUnPossessCommand(CommandHandler handler, StringArguments args) + static bool HandleUnPossessCommand(CommandHandler handler) { Unit unit = handler.GetSelectedUnit(); if (!unit) @@ -2354,26 +2324,14 @@ namespace Game.Chat } [CommandNonGroup("wchange", RBACPermissions.CommandWchange)] - static bool HandleChangeWeather(CommandHandler handler, StringArguments args) + static bool HandleChangeWeather(CommandHandler handler, uint type, float intensity) { - if (args.Empty()) - return false; - // Weather is OFF if (!WorldConfig.GetBoolValue(WorldCfg.Weather)) { handler.SendSysMessage(CypherStrings.WeatherDisabled); return false; - } - - // *Change the weather of a cell - //0 to 3, 0: fine, 1: rain, 2: snow, 3: sand - if (!uint.TryParse(args.NextString(), out uint type)) - return false; - - //0 to 1, sending -1 is instand good weather - if (!float.TryParse(args.NextString(), out float grade)) - return false; + } Player player = handler.GetSession().GetPlayer(); uint zoneid = player.GetZoneId(); @@ -2385,7 +2343,7 @@ namespace Game.Chat return false; } - weather.SetWeather((WeatherType)type, grade); + weather.SetWeather((WeatherType)type, intensity); return true; } } diff --git a/Source/Game/Chat/Commands/SpellCommands.cs b/Source/Game/Chat/Commands/SpellCommands.cs index ed9e11524..841357d08 100644 --- a/Source/Game/Chat/Commands/SpellCommands.cs +++ b/Source/Game/Chat/Commands/SpellCommands.cs @@ -27,7 +27,7 @@ namespace Game.Chat class SpellCommands { [CommandNonGroup("cooldown", RBACPermissions.CommandCooldown)] - static bool HandleCooldownCommand(CommandHandler handler, StringArguments args) + static bool HandleCooldownCommand(CommandHandler handler, uint? spellIdArg) { Unit target = handler.GetSelectedUnit(); if (!target) @@ -44,7 +44,7 @@ namespace Game.Chat } string nameLink = handler.GetNameLink(owner); - if (args.Empty()) + if (!spellIdArg.HasValue) { target.GetSpellHistory().ResetAllCooldowns(); target.GetSpellHistory().ResetAllCharges(); @@ -52,21 +52,16 @@ namespace Game.Chat } else { - // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form - uint spellIid = handler.ExtractSpellIdFromLink(args); - if (spellIid == 0) - return false; - - SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(spellIid, target.GetMap().GetDifficultyID()); + SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(spellIdArg.Value, target.GetMap().GetDifficultyID()); if (spellInfo == null) { handler.SendSysMessage(CypherStrings.UnknownSpell, owner == handler.GetSession().GetPlayer() ? handler.GetCypherString(CypherStrings.You) : nameLink); return false; } - target.GetSpellHistory().ResetCooldown(spellIid, true); + target.GetSpellHistory().ResetCooldown(spellInfo.Id, true); target.GetSpellHistory().ResetCharges(spellInfo.ChargeCategoryId); - handler.SendSysMessage(CypherStrings.RemoveallCooldown, spellIid, owner == handler.GetSession().GetPlayer() ? handler.GetCypherString(CypherStrings.You) : nameLink); + handler.SendSysMessage(CypherStrings.RemoveallCooldown, spellInfo.Id, owner == handler.GetSession().GetPlayer() ? handler.GetCypherString(CypherStrings.You) : nameLink); } return true; } @@ -123,23 +118,8 @@ namespace Game.Chat } [CommandNonGroup("setskill", RBACPermissions.CommandSetskill)] - static bool SetSkill(CommandHandler handler, StringArguments args) + static bool HandleSetSkillCommand(CommandHandler handler, uint skillId, uint level, uint? maxSkillArg) { - // number or [name] Shift-click form |color|Hskill:skill_id|h[name]|h|r - string skillStr = handler.ExtractKeyFromLink(args, "Hskill"); - if (string.IsNullOrEmpty(skillStr)) - return false; - - if (!uint.TryParse(skillStr, out uint skill) || skill == 0) - { - handler.SendSysMessage(CypherStrings.InvalidSkillId, skill); - return false; - } - - uint level = args.NextUInt32(); - if (level == 0) - return false; - Player target = handler.GetSelectedPlayerOrSelf(); if (!target) { @@ -147,19 +127,18 @@ namespace Game.Chat return false; } - SkillLineRecord skillLine = CliDB.SkillLineStorage.LookupByKey(skill); + SkillLineRecord skillLine = CliDB.SkillLineStorage.LookupByKey(skillId); if (skillLine == null) { - handler.SendSysMessage(CypherStrings.InvalidSkillId, skill); + handler.SendSysMessage(CypherStrings.InvalidSkillId, skillId); return false; } - bool targetHasSkill = target.GetSkillValue((SkillType)skill) != 0; + bool targetHasSkill = target.GetSkillValue((SkillType)skillId) != 0; - ushort maxPureSkill = args.NextUInt16(); // If our target does not yet have the skill they are trying to add to them, the chosen level also becomes // the max level of the new profession. - ushort max = maxPureSkill != 0 ? maxPureSkill : targetHasSkill ? target.GetPureMaxSkillValue((SkillType)skill) : (ushort)level; + ushort max = (ushort)maxSkillArg.GetValueOrDefault(targetHasSkill ? target.GetPureMaxSkillValue((SkillType)skillId) : level); if (level == 0 || level > max) return false; @@ -167,8 +146,8 @@ namespace Game.Chat // If the player has the skill, we get the current skill step. If they don't have the skill, we // add the skill to the player's book with step 1 (which is the first rank, in most cases something // like 'Apprentice '. - target.SetSkill((SkillType)skill, (uint)(targetHasSkill ? target.GetSkillStep((SkillType)skill) : 1), level, max); - handler.SendSysMessage(CypherStrings.SetSkill, skill, skillLine.DisplayName[handler.GetSessionDbcLocale()], handler.GetNameLink(target), level, max); + target.SetSkill((SkillType)skillId, (uint)(targetHasSkill ? target.GetSkillStep((SkillType)skillId) : 1), level, max); + handler.SendSysMessage(CypherStrings.SetSkill, skillId, skillLine.DisplayName[handler.GetSessionDbcLocale()], handler.GetNameLink(target), level, max); return true; } } diff --git a/Source/Game/Entities/Creature/Gossip.cs b/Source/Game/Entities/Creature/Gossip.cs index 2cbc0ecc6..260c76b7c 100644 --- a/Source/Game/Entities/Creature/Gossip.cs +++ b/Source/Game/Entities/Creature/Gossip.cs @@ -267,7 +267,6 @@ namespace Game.Misc opt.Confirm = item.BoxMessage; // accept text (related to money) pop up box, 2.0.3 opt.Status = GossipOptionStatus.Available; packet.GossipOptions.Add(opt); - } for (byte i = 0; i < _questMenu.GetMenuItemCount(); ++i) diff --git a/Source/WorldServer/WorldServer.conf.dist b/Source/WorldServer/WorldServer.conf.dist index 1b59ad2eb..e02e21204 100644 --- a/Source/WorldServer/WorldServer.conf.dist +++ b/Source/WorldServer/WorldServer.conf.dist @@ -1860,13 +1860,14 @@ ChatFakeMessagePreventing = 1 # # ChatStrictLinkChecking.Severity # Description: Check chat messages for in-game links to spells, items, quests, etc. -# Default: 0 - (Disabled) -# 1 - (Enabled, Check if only valid pipe commands are used, Prevents posting -# pictures.) -# 2 - (Enabled, Verify that pipe commands are used in a correct order) -# 3 - (Check if color, entry and name don't contradict each other. For this to -# work correctly, please assure that you have extracted locale DBCs of -# every language specific client playing on this server) +# -1 - (Only verify validity of link data, but permit use of custom colors) +# Default: 0 - (Only verify that link data and color are valid without checking text) +# 1 - (Additionally verifies that the link text matches the provided data) +# +# Note: If this is set to '1', you must additionally provide .dbc files for all +# client locales that are in use on your server. +# If any files are missing, messages with links from clients using those +# locales will likely be blocked by the server. ChatStrictLinkChecking.Severity = 0