diff -r 043adb17ae25 src/c_cmds.cpp
--- a/src/c_cmds.cpp	Sun Mar 30 23:25:35 2014 +0300
+++ b/src/c_cmds.cpp	Fri Apr 04 12:35:04 2014 +0300
@@ -80,6 +80,7 @@
 #include "cl_commands.h"
 #include "cooperative.h"
 #include "survival.h"
+#include "m_cheat.h"
 
 extern FILE *Logfile;
 extern bool insave;
@@ -299,7 +300,22 @@
 		return;
 
 	if ( NETWORK_GetState( ) == NETSTATE_CLIENT )
+	{
+		// [Dusk] Don't bother sending a request to the server when we're spectating.
+		// Spectator movement is entirely client-side and thus we can noclip on our own.
+		if ( players[consoleplayer].bSpectating )
+		{
+			cht_DoCheat( &players[consoleplayer], CHT_NOCLIP );
+
+			// [Dusk] If we are recording a demo, we need to write this noclip use down
+			// so that it can be re-enacted correctly
+			if ( CLIENTDEMO_IsRecording( ))
+				CLIENTDEMO_WriteLocalCommand( CLD_NOCLIP, NULL );
+			return;
+		}
+
 		CLIENTCOMMANDS_GenericCheat( CHT_NOCLIP );
+	}
 	else
 	{
 		Net_WriteByte (DEM_GENERICCHEAT);
diff -r 043adb17ae25 src/cl_demo.cpp
--- a/src/cl_demo.cpp	Sun Mar 30 23:25:35 2014 +0300
+++ b/src/cl_demo.cpp	Fri Apr 04 12:35:04 2014 +0300
@@ -71,6 +71,7 @@
 #include "version.h"
 #include "templates.h"
 #include "r_translate.h"
+#include "m_cheat.h"
 
 //*****************************************************************************
 //	PROTOTYPES
@@ -522,6 +523,10 @@
 
 			CLIENTDEMO_FinishPlaying( );
 			return;
+		case CLD_NOCLIP:
+
+			cht_DoCheat( &players[consoleplayer], CHT_NOCLIP );
+			return;
 		default:
 
 #ifdef _DEBUG
@@ -685,6 +690,10 @@
 
 		NETWORK_WriteByte( &g_ByteStream, CLD_TAUNT );
 		break;
+	case CLD_NOCLIP:
+
+		NETWORK_WriteByte( &g_ByteStream, CLD_NOCLIP );
+		break;
 	}
 }
 
diff -r 043adb17ae25 src/cl_demo.h
--- a/src/cl_demo.h	Sun Mar 30 23:25:35 2014 +0300
+++ b/src/cl_demo.h	Fri Apr 04 12:35:04 2014 +0300
@@ -73,6 +73,7 @@
 	CLD_INVUSE,
 	CLD_CENTERVIEW,
 	CLD_TAUNT,
+	CLD_NOCLIP, // [Dusk]
 	CLD_DEMOEND,
 	CLD_DEMOWADS, // [Dusk]
 
diff -r 043adb17ae25 src/m_cheat.cpp
--- a/src/m_cheat.cpp	Sun Mar 30 23:25:35 2014 +0300
+++ b/src/m_cheat.cpp	Fri Apr 04 12:35:04 2014 +0300
@@ -517,10 +517,6 @@
 	if (!*msg)              // [SO] Don't print blank lines!
 		return;
 
-	// [BB] Spectators may use noclip, so the server shouldn't print the "cheater" message.
-	if ( ( NETWORK_GetState( ) == NETSTATE_SERVER ) && ( cheat == CHT_NOCLIP ) && player->bSpectating )
-		return;
-
 	if( ( cheat != CHT_CHASECAM )
 		|| ( !( GAMEMODE_GetFlags( GAMEMODE_GetCurrentMode( )) & GMF_COOPERATIVE )
 			&& ( player->bSpectating == false ) && !(dmflags2 & DF2_CHASECAM))){
