this should fix the highlighting failz with non-lowercase player names like the one CheezeMonkey ran into.
there is a workaround: in the user dir put the playername in <playerNameWithCorrectCase>_highlight.txt
{-# LANGUAGE OverloadedStrings #-}module HWProtoNEState whereimport Control.Monad.Readerimport qualified Data.ByteString.Char8 as B--------------------------------------import CoreTypesimport Actionsimport Utilsimport RoomsAndClientshandleCmd_NotEntered :: CmdHandlerhandleCmd_NotEntered ["NICK", newNick] = do (ci, irnc) <- ask let cl = irnc `client` ci if not . B.null $ nick cl then return [ProtocolError "Nickname already chosen"] else if illegalName newNick then return [ByeClient "Illegal nickname"] else return $ ModifyClient (\c -> c{nick = newNick}) : AnswerClients [sendChan cl] ["NICK", newNick] : [CheckRegistered | clientProto cl /= 0]handleCmd_NotEntered ["PROTO", protoNum] = do (ci, irnc) <- ask let cl = irnc `client` ci if clientProto cl > 0 then return [ProtocolError "Protocol already known"] else if parsedProto == 0 then return [ProtocolError "Bad number"] else return $ ModifyClient (\c -> c{clientProto = parsedProto}) : AnswerClients [sendChan cl] ["PROTO", showB parsedProto] : [CheckRegistered | not . B.null $ nick cl] where parsedProto = readInt_ protoNumhandleCmd_NotEntered ["PASSWORD", passwd] = do (ci, irnc) <- ask let cl = irnc `client` ci if passwd == webPassword cl then return $ JoinLobby : [AnswerClients [sendChan cl] ["ADMIN_ACCESS"] | isAdministrator cl] else return [ByeClient "Authentication failed"]handleCmd_NotEntered _ = return [ProtocolError "Incorrect command (state: not entered)"]