diff --git a/src/aas/AASFile.cpp b/src/aas/AASFile.cpp
--- a/src/aas/AASFile.cpp
+++ b/src/aas/AASFile.cpp
@@ -166,6 +166,7 @@ idAASSettings::idAASSettings( void ) {
 // jmarshall end
 	writeBrushMap = false;
 	playerFlood = false;
+	playerClipSolid = false;
 	noOptimize = false;
 	allowSwimReachabilities = false;
 	allowFlyReachabilities = false;
@@ -427,6 +428,9 @@ bool idAASSettings::FromDict( const char *name, const idDict *dict ) {
 		common->Error( "Missing 'playerFlood' in entityDef '%s'", name );
 	}
 
+	// Compiler extension: absent from retail definitions and disabled by default.
+	dict->GetBool( "playerClipSolid", "0", playerClipSolid );
+
 	if ( !dict->GetBool( "allowSwimReachabilities", "0", allowSwimReachabilities ) ) {
 		common->Error( "Missing 'allowSwimReachabilities' in entityDef '%s'", name );
 	}
diff --git a/src/aas/AASFile.h b/src/aas/AASFile.h
--- a/src/aas/AASFile.h
+++ b/src/aas/AASFile.h
@@ -254,6 +254,7 @@ public:
 	bool						usePatches;
 	bool						writeBrushMap;
 	bool						playerFlood;
+	bool						playerClipSolid;
 	bool						noOptimize;
 	bool						allowSwimReachabilities;
 	bool						allowFlyReachabilities;
diff --git a/src/tools/compilers/aas/AASBuild.cpp b/src/tools/compilers/aas/AASBuild.cpp
--- a/src/tools/compilers/aas/AASBuild.cpp
+++ b/src/tools/compilers/aas/AASBuild.cpp
@@ -315,6 +315,8 @@ int idAASBuild::ContentsForAAS( int contents ) {
 	int c;
 
-	if ( contents & ( CONTENTS_SOLID|CONTENTS_AAS_SOLID|CONTENTS_MONSTERCLIP ) ) {
+	if ( contents & ( CONTENTS_SOLID|CONTENTS_AAS_SOLID|CONTENTS_MONSTERCLIP ) ||
+			( aasSettings != NULL && aasSettings->playerClipSolid &&
+				( contents & CONTENTS_PLAYERCLIP ) ) ) {
 		return AREACONTENTS_SOLID;
 	}
 	c = 0;
