Index: code/client/client.h =================================================================== --- code/client/client.h (revision 1047) +++ code/client/client.h (working copy) @@ -442,6 +442,7 @@ // cl_parse.c // extern int cl_connectedToPureServer; +extern int cl_connectedToCheatServer; void CL_SystemInfoChanged( void ); void CL_ParseServerMessage( msg_t *msg ); Index: code/client/cl_parse.c =================================================================== --- code/client/cl_parse.c (revision 1047) +++ code/client/cl_parse.c (working copy) @@ -325,6 +325,7 @@ //===================================================================== int cl_connectedToPureServer; +int cl_connectedToCheatServer; /* ================== @@ -355,7 +356,8 @@ } s = Info_ValueForKey( systemInfo, "sv_cheats" ); - if ( atoi(s) == 0 ) { + cl_connectedToCheatServer = atoi( s ); + if ( !cl_connectedToCheatServer ) { Cvar_SetCheatState(); } Index: code/client/cl_cgame.c =================================================================== --- code/client/cl_cgame.c (revision 1047) +++ code/client/cl_cgame.c (working copy) @@ -746,6 +746,10 @@ // otherwise server commands sent just before a gamestate are dropped VM_Call( cgvm, CG_INIT, clc.serverMessageSequence, clc.lastExecutedServerCommand, clc.clientNum ); + // reset any CVAR_CHEAT cvars registered by cgame + if ( !cl_connectedToCheatServer ) + Cvar_SetCheatState(); + // we will send a usercmd this frame, which // will cause the server to send us the first snapshot cls.state = CA_PRIMED; Index: code/client/cl_ui.c =================================================================== --- code/client/cl_ui.c (revision 1047) +++ code/client/cl_ui.c (working copy) @@ -1171,6 +1171,10 @@ // init for this gamestate VM_Call( uivm, UI_INIT, (cls.state >= CA_AUTHORIZING && cls.state < CA_ACTIVE) ); } + + // reset any CVAR_CHEAT cvars registered by ui + if ( !cl_connectedToCheatServer ) + Cvar_SetCheatState(); } qboolean UI_usesUniqueCDKey( void ) {