Index: binaries/data/mods/public/gui/common/color.js =================================================================== --- binaries/data/mods/public/gui/common/color.js +++ binaries/data/mods/public/gui/common/color.js @@ -172,3 +172,16 @@ { return isCompatible ? text : coloredText(text, "96 96 96"); } + +/* + * Official function to escape characters for regular expressions + * https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions + */ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +function colorizeNameInText(text, name, color) +{ + return text.replace(new RegExp('(^|\\W)(' + escapeRegExp(name) + ')\(?=\\W|$\)', "g"), "\$1" + coloredText("\$2", color)); +} Index: binaries/data/mods/public/gui/lobby/lobby.js =================================================================== --- binaries/data/mods/public/gui/lobby/lobby.js +++ binaries/data/mods/public/gui/lobby/lobby.js @@ -1272,7 +1272,7 @@ // Highlight local user's nick if (g_Username != msg.from) { - msg.text = msg.text.replace(g_Username, colorPlayerName(g_Username)); + msg.text = colorizeNameInText(msg.text, g_Username, getPlayerColor(g_Username)); if (!msg.historic && msg.text.toLowerCase().indexOf(g_Username.toLowerCase()) != -1) soundNotification("nick"); Index: binaries/data/mods/public/gui/session/messages.js =================================================================== --- binaries/data/mods/public/gui/session/messages.js +++ binaries/data/mods/public/gui/session/messages.js @@ -1109,6 +1109,13 @@ if (userName != g_PlayerAssignments[msg.guid].name && msg.text.toLowerCase().indexOf(splitRatingFromNick(userName)[0].toLowerCase()) != -1) soundNotification("nick"); + + for (let guid in g_PlayerAssignments) + msg.text = colorizeNameInText( + msg.text, + g_PlayerAssignments[guid].name, + rgbToGuiColor(g_PlayerAssignments[guid].player != -1 ? g_Players[g_PlayerAssignments[guid].player].color : "white") + ); } // GUID for players, playerID for AIs