diff --git a/r5dev/materialsystem/cmaterialsystem.cpp b/r5dev/materialsystem/cmaterialsystem.cpp
index eee5e033..1c765375 100644
--- a/r5dev/materialsystem/cmaterialsystem.cpp
+++ b/r5dev/materialsystem/cmaterialsystem.cpp
@@ -113,6 +113,28 @@ bool IsMaterialInternal(void** pCandidate)
 	return false;
 }
 
+#ifndef DEDICATED
+//-----------------------------------------------------------------------------
+// Purpose: finds a material
+// Input  : *pMatSys - 
+//			*pMaterialName - 
+//			nMaterialType - 
+//			nUnk - 
+//			bComplain - 
+// Output : pointer to material
+//-----------------------------------------------------------------------------
+CMaterialGlue* CMaterialSystem::FindMaterialEx(CMaterialSystem* pMatSys, const char* pMaterialName, uint8_t nMaterialType, int nUnk, bool bComplain)
+{
+	CMaterialGlue* pMaterial = CMaterialSystem__FindMaterialEx(pMatSys, pMaterialName, nMaterialType, nUnk, bComplain);
+
+	if ((bComplain || mat_alwaysComplain->GetBool()) && pMaterial->IsErrorMaterial())
+	{
+		Error(eDLL_T::MS, NO_ERROR, "Material \"%s\" not found; replacing with \"%s\".\n", pMaterialName, pMaterial->GetName());
+	}
+	return pMaterial;
+}
+#endif // !DEDICATED
+
 ///////////////////////////////////////////////////////////////////////////////
 void CMaterialSystem_Attach()
 {
diff --git a/r5dev/tier1/IConVar.cpp b/r5dev/tier1/IConVar.cpp
index b584090b..f2690710 100644
--- a/r5dev/tier1/IConVar.cpp
+++ b/r5dev/tier1/IConVar.cpp
@@ -192,7 +192,8 @@ void ConVar::Init(void) const
 	//-------------------------------------------------------------------------
 	// MATERIALSYSTEM                                                         |
 #ifndef DEDICATED
-	mat_showdxoutput = ConVar::Create("mat_showdxoutput", "0", FCVAR_DEVELOPMENTONLY, "Shows debug output for the DirectX system.", false, 0.f, false, 0.f, nullptr, nullptr);
+	mat_showdxoutput   = ConVar::Create("mat_showdxoutput", "0", FCVAR_DEVELOPMENTONLY | FCVAR_MATERIAL_SYSTEM_THREAD, "Shows debug output for the DirectX system.", false, 0.f, false, 0.f, nullptr, nullptr);
+	mat_alwaysComplain = ConVar::Create("mat_alwaysComplain", "0", FCVAR_RELEASE | FCVAR_MATERIAL_SYSTEM_THREAD, "Always complain when a material is missing.", false, 0.f, false, 0.f, nullptr, nullptr);
 #endif // !DEDICATED
 	//-------------------------------------------------------------------------
 	// SQUIRREL                                                               |
diff --git a/r5dev/tier1/cvar.cpp b/r5dev/tier1/cvar.cpp
index 1d4f8258..05490b51 100644
--- a/r5dev/tier1/cvar.cpp
+++ b/r5dev/tier1/cvar.cpp
@@ -164,6 +164,7 @@ ConVar* fs_packedstore_compression_level   = nullptr;
 // MATERIALSYSTEM                                                             |
 #ifndef DEDICATED
 ConVar* mat_showdxoutput                   = nullptr;
+ConVar* mat_alwaysComplain                 = nullptr;
 #endif // !DEDICATED
 //-----------------------------------------------------------------------------
 // SQUIRREL                                                                   |
diff --git a/r5dev/tier1/cvar.h b/r5dev/tier1/cvar.h
index 612e8c4f..96434f20 100644
--- a/r5dev/tier1/cvar.h
+++ b/r5dev/tier1/cvar.h
@@ -160,6 +160,7 @@ extern ConVar* fs_packedstore_compression_level;
 // MATERIALSYSTEM                                                         |
 #ifndef DEDICATED
 extern ConVar* mat_showdxoutput;
+extern ConVar* mat_alwaysComplain;
 #endif // !DEDICATED
 //-------------------------------------------------------------------------
 // SQUIRREL                                                               |