If I remember correctly, the problem affects any forwards that modify the recipients of the message. The issue is that the game sends individual
SayText2 messages for each recipient instead of sending one message that covers all recipients. In that case, each forward adds recipients that may be present in other messages in the batch, leading to duplication.
I wrote my own drop-in implementation of Simple Chat Processor that aggregates all similar messages sent within the same tick and has the correct recipient list
here.
The catch is, it uses the client's translation strings, which doesn't support message colorization; the translation has to be performed server-side for colors to work. I also don't care much about adding support for it myself since I wrote the plugin for my own server (which doesn't use chat colors).
If you (or any other developers) want to add colorization support and want to maintain it, all you need to do is load in
a set of translations (or better, one that covers more languages than just English) and replace the
SayText with a loop that sends server-localized messages to the appropriate players. Oh, and
tweak the TF2-specific check on line 111.
__________________