public void SendMessage(string msg, ChatMessageType type = ChatMessageType.Broadcast, WorldObject source = null) { if (SquelchManager.IsLegalChannel(type) && SquelchManager.Squelches.Contains(source, type)) { return; } Session.Network.EnqueueSend(new GameMessageSystemChat(msg, type)); }
/// <summary> /// Returns TRUE if the input player is filtered by this player /// </summary> public bool Contains(WorldObject source, ChatMessageType messageType = ChatMessageType.AllChannels) { // ensure this channel can be squelched if (messageType != ChatMessageType.AllChannels && !SquelchManager.IsLegalChannel(messageType)) { return(false); } var squelchMask = messageType.ToMask(); if (source is Player player) { // check account squelches // the client forces account squelches to be AllMessages, // so for these, channel mask is not required if (Accounts.ContainsKey(player.Session.Account)) { return(true); } // check character squelches Characters.TryGetValue(player.Guid.Full, out var squelchInfo); if (squelchInfo != null && squelchInfo.Filters[0].HasFlag(squelchMask)) { return(true); } } // check global squelches if (Globals.Filters.Count > 0 && Globals.Filters[0].HasFlag(squelchMask)) { return(true); } return(false); }