From 749701014db45b1c4288054580e7be32ee7b7ff4 Mon Sep 17 00:00:00 2001
From: Nicholas Hastings <nshastings@gmail.com>
Date: Thu, 30 Oct 2014 19:25:13 -0400
Subject: [PATCH] Eliminate need for sv gamedata on sdk2013 and soon
 css/dods/hl2dm (already on tf2).

---
 extensions/sdktools/vglobals.cpp | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/extensions/sdktools/vglobals.cpp b/extensions/sdktools/vglobals.cpp
index aeaf3bff..54b533bd 100644
--- a/extensions/sdktools/vglobals.cpp
+++ b/extensions/sdktools/vglobals.cpp
@@ -130,9 +130,19 @@ bool UTIL_VerifySignature(const void *addr, const char *sig, size_t len)
 
 void GetIServer()
 {
-#if SOURCE_ENGINE == SE_TF2
-	iserver = engine->GetIServer();
-#else
+#if SOURCE_ENGINE == SE_TF2      \
+	|| SOURCE_ENGINE == SE_DODS  \
+	|| SOURCE_ENGINE == SE_HL2DM \
+	|| SOURCE_ENGINE == SE_CSS   \
+	|| SOURCE_ENGINE == SE_SDK2013
+
+	if (g_SMAPI->GetEngineFactory(false)("VEngineServer022", nullptr))
+	{
+		iserver = engine->GetIServer();
+		return;
+	}
+#endif
+
 	void *addr;
 	const char *sigstr;
 	char sig[32];
@@ -191,7 +201,6 @@ void GetIServer()
 
 	/* Finally we have the interface we were looking for */
 	iserver = *reinterpret_cast<IServer **>(reinterpret_cast<unsigned char *>(vfunc) + offset);
-#endif // !TF2
 }
 
 void GetResourceEntity()