diff -r b5a7f83fa607 -r 70c8feb81d35 QTfrontend/net/newnetclient.cpp --- a/QTfrontend/net/newnetclient.cpp Sat Aug 25 12:12:15 2018 +0200 +++ b/QTfrontend/net/newnetclient.cpp Sat Aug 25 17:43:29 2018 +0200 @@ -381,22 +381,40 @@ return; } - QString action = HWProto::chatStringToAction(lst[2]); + QString action; + QString message; + // Fake nicks are nicks used for messages from the server with nicks like + // [server], [random], etc. + // The '[' character is not allowed in real nicks. + bool isFakeNick = lst[1].startsWith('['); + if(!isFakeNick) + { + // Normal message + message = lst[2]; + // Check for action (/me command) + action = HWProto::chatStringToAction(message); + } + else + { + // Server message + // Server messages are translated client-side + message = HWApplication::translate("server", lst[2].toLatin1().constData()); + } if (netClientState == InLobby) { - if (action != NULL) + if (!action.isNull()) emit lobbyChatAction(lst[1], action); else - emit lobbyChatMessage(lst[1], lst[2]); + emit lobbyChatMessage(lst[1], message); } else { - emit chatStringFromNet(HWProto::formatChatMsg(lst[1], lst[2])); - if (action != NULL) + emit chatStringFromNet(HWProto::formatChatMsg(lst[1], message)); + if (!action.isNull()) emit roomChatAction(lst[1], action); else - emit roomChatMessage(lst[1], lst[2]); + emit roomChatMessage(lst[1], message); } return; }