From 7063d310d3c715069dcd17c9ca1a17f0c2a1daa5 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Mon, 12 Nov 2007 21:51:54 +0000
Subject: [PATCH 001/263] Fixed amb1154 and another kick bug with
 sm_reserve_type 1

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401682
---
 plugins/reservedslots.sp | 77 +++++++++++++++++++++++-----------------
 1 file changed, 45 insertions(+), 32 deletions(-)

diff --git a/plugins/reservedslots.sp b/plugins/reservedslots.sp
index e4ebe293..0715a7f3 100644
--- a/plugins/reservedslots.sp
+++ b/plugins/reservedslots.sp
@@ -90,10 +90,8 @@ public OnConfigsExecuted()
 	}	
 }
 
-public Action:OnTimedKick(Handle:timer, any:value)
-{
-	new client = GetClientOfUserId(value);
-	
+public Action:OnTimedKick(Handle:timer, any:client)
+{	
 	if (!client || !IsClientInGame(client))
 	{
 		return Plugin_Handled;
@@ -101,6 +99,8 @@ public Action:OnTimedKick(Handle:timer, any:value)
 	
 	KickClient(client, "%T", "Slot reserved", client);
 	
+	SetVisibleMaxSlots(GetClientCount(false), g_MaxClients - GetConVarInt(sm_reserved_slots));
+	
 	return Plugin_Handled;
 }
 
@@ -113,32 +113,45 @@ public OnClientPostAdminCheck(client)
 		new clients = GetClientCount(false);
 		new limit = g_MaxClients - reserved;
 		new flags = GetUserFlagBits(client);
-	
-		if (clients <= limit || IsFakeClient(client) || flags & ADMFLAG_ROOT || flags & ADMFLAG_RESERVATION)
+		
+		new type = GetConVarInt(sm_reserve_type);
+		
+		if (type == 0)
 		{
-			if (GetConVarBool(sm_hide_slots))
+			if (clients <= limit || IsFakeClient(client) || flags & ADMFLAG_ROOT || flags & ADMFLAG_RESERVATION)
 			{
-				SetVisibleMaxSlots(clients, limit);
+				if (GetConVarBool(sm_hide_slots))
+				{
+					SetVisibleMaxSlots(clients, limit);
+				}
+				
+				return;
 			}
 			
-			new type = GetConVarInt(sm_reserve_type);
-			
-			if (type == 1)
-			{
-				new target = SelectKickClient();
-				
-				if (target)
+			/* Kick player because there are no public slots left */
+			CreateTimer(0.1, OnTimedKick, client);
+		}
+		else
+		{		
+			if (clients > limit)
+			{	
+				if (flags & ADMFLAG_ROOT || flags & ADMFLAG_RESERVATION)
 				{
-					/* Kick public player to free the reserved slot again */
-					CreateTimer(0.1, OnTimedKick, GetClientUserId(target));
+					new target = SelectKickClient();
+						
+					if (target)
+					{
+						/* Kick public player to free the reserved slot again */
+						CreateTimer(0.1, OnTimedKick, target);
+					}
+				}
+				else
+				{				
+					/* Kick player because there are no public slots left */
+					CreateTimer(0.1, OnTimedKick, client);
 				}
 			}
-			
-			return;
 		}
-
-		/* Kick player because there are no public slots left */
-		CreateTimer(0.1, OnTimedKick, GetClientUserId(client));
 	}
 }
 
@@ -161,7 +174,7 @@ public SlotsChanged(Handle:convar, const String:oldValue[], const String:newValu
 
 SetVisibleMaxSlots(clients, limit)
 {
-	new num = clients + 1;
+	new num = clients;
 	
 	if (clients == g_MaxClients)
 	{
@@ -186,7 +199,7 @@ SelectKickClient()
 	new Float:latency;
 	
 	for (new i=1; i<=g_MaxClients; i++)
-	{
+	{	
 		if (!IsClientConnected(i))
 		{
 			continue;
@@ -198,13 +211,17 @@ SelectKickClient()
 		{
 			continue;
 		}
+		
+		latency = 0.0;
 			
 		if (IsClientInGame(i))
-		{
-			latency = GetClientAvgLatency(i, NetFlow_Both);
+		{		
+			latency = GetClientAvgLatency(i, NetFlow_Outgoing);
+			
+			LogMessage("Latency : %f",latency);
 			
 			if (IsClientObserver(i))
-			{
+			{			
 				specFound = true;
 				
 				if (latency > highestSpecLatency)
@@ -214,12 +231,8 @@ SelectKickClient()
 				}
 			}
 		}
-		else
-		{
-			latency = 0.0;
-		}
 		
-		if (latency > highestLatency)
+		if (latency >= highestLatency)
 		{
 			highestLatency = latency;
 			highestLatencyId = i;

From fcb362da09dc3e0e11e03d11866b574b19419648 Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Tue, 13 Nov 2007 16:36:50 +0000
Subject: [PATCH 002/263] fixed amb1148, formatting large float numbers
 produced garbage (thanks PM!)

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401683
---
 core/sm_stringutil.cpp | 210 +++++++++++++++++++++++++++--------------
 1 file changed, 140 insertions(+), 70 deletions(-)

diff --git a/core/sm_stringutil.cpp b/core/sm_stringutil.cpp
index 35e36b0b..e94ff44e 100644
--- a/core/sm_stringutil.cpp
+++ b/core/sm_stringutil.cpp
@@ -207,7 +207,9 @@ void AddString(char **buf_p, size_t &maxlen, const char *string, int width, int
 				break;
 			}
 		}
-	} else {
+	}
+	else
+	{
 		while (string[size++]);
 		size--;
 	}
@@ -234,78 +236,125 @@ void AddString(char **buf_p, size_t &maxlen, const char *string, int width, int
 	*buf_p = buf;
 }
 
-void AddFloat(char **buf_p, size_t &maxlen, double fval, int width, int prec)
+void AddFloat(char **buf_p, size_t &maxlen, double fval, int width, int prec, int flags)
 {
-	char text[32];
-	int digits;
-	double signedVal;
-	char *buf;
-	int val;
-
-	// get the sign
-	signedVal = fval;
-	if (fval < 0)
-	{
-		fval = -fval;
-	}
-
-	// write the float number
-	digits = 0;
-	val = (int)fval;
-	do
-	{
-		text[digits++] = '0' + val % 10;
-		val /= 10;
-	} while (val);
-
-	if (signedVal < 0)
-	{
-		text[digits++] = '-';
-	}
-
-	buf = *buf_p;
-
-	while ((digits < width) && maxlen)
-	{
-		*buf++ = ' ';
-		width--;
-		maxlen--;
-	}
-
-	while ((digits--) && maxlen)
-	{
-		*buf++ = text[digits];
-		maxlen--;
-	}
-
-	*buf_p = buf;
+	int digits;					// non-fraction part digits
+	double tmp;					// temporary
+	char *buf = *buf_p;			// output buffer pointer
+	int val;					// temporary
+	int sign = 0;				// 0: positive, 1: negative
+	int fieldlength;			// for padding
+	int significant_digits = 0;	// number of significant digits written
+	const int MAX_SIGNIFICANT_DIGITS = 16;
 
+	// default precision
 	if (prec < 0)
 	{
 		prec = 6;
 	}
-	// write the fraction
-	digits = 0;
-	while (digits < prec)
+
+	// get the sign
+	if (fval < 0)
 	{
-		fval -= (int)fval;
-		fval *= 10.0;
-		val = (int)fval;
-		text[digits++] = '0' + val % 10;
+		fval = -fval;
+		sign = 1;
 	}
 
-	if ((digits > 0) && maxlen)
+	// compute whole-part digits count
+	digits = (int)log10(fval) + 1;
+
+	// Only print 0.something if 0 < fval < 1
+	if (digits < 1)
 	{
-		buf = *buf_p;
-		*buf++ = '.';
+		digits = 1;
+	}
+
+	// compute the field length
+	fieldlength = digits + prec + ((prec > 0) ? 1 : 0) + sign;
+
+	// minus sign BEFORE left padding if padding with zeros
+	if (sign && maxlen && (flags & ZEROPAD))
+	{
+		*buf++ = '-';
 		maxlen--;
-		for (prec = 0; maxlen && (prec < digits); prec++)
+	}
+
+	// right justify if required
+	if ((flags & LADJUST) == 0)
+	{
+		while ((fieldlength < width) && maxlen)
 		{
-			*buf++ = text[prec];
+			*buf++ = (flags & ZEROPAD) ? '0' : ' ';
+			width--;
 			maxlen--;
 		}
-		*buf_p = buf;
 	}
+
+	// minus sign AFTER left padding if padding with spaces
+	if (sign && maxlen && !(flags & ZEROPAD))
+	{
+		*buf++ = '-';
+		maxlen--;
+	}
+
+	// write the whole part
+	tmp = pow(10.0, digits-1);
+	while ((digits--) && maxlen)
+	{
+		if (++significant_digits > MAX_SIGNIFICANT_DIGITS)
+		{
+			*buf++ = '0';
+		}
+		else
+		{
+			val = (int)(fval / tmp);
+			*buf++ = '0' + val;
+			fval -= val * tmp;
+			tmp *= 0.1;
+		}
+		maxlen--;
+	}
+
+	// write the fraction part
+	if (maxlen)
+	{
+		*buf++ = '.';
+		maxlen--;
+	}
+
+	tmp = pow(10.0, prec);
+
+	fval *= tmp;
+	while (prec-- && maxlen)
+	{
+		if (++significant_digits > MAX_SIGNIFICANT_DIGITS)
+		{
+			*buf++ = '0';
+		}
+		else
+		{
+			tmp *= 0.1;
+			val = (int)(fval / tmp);
+			*buf++ = '0' + val;
+			fval -= val * tmp;
+		}
+		maxlen--;
+	}
+
+	// left justify if required
+	if (flags & LADJUST)
+	{
+		while ((fieldlength < width) && maxlen)
+		{
+			// right-padding only with spaces, ZEROPAD is ignored
+			*buf++ = ' ';
+			width--;
+			maxlen--;
+		}
+	}
+
+	// update parent's buffer pointer
+	*buf_p = buf;
 }
 
 void AddUInt(char **buf_p, size_t &maxlen, unsigned int val, int width, int flags)
@@ -366,9 +415,12 @@ void AddInt(char **buf_p, size_t &maxlen, int val, int width, int flags)
 	{
 		/* we want the unsigned version */
 		unsignedVal = abs(val);
-	} else {
+	}
+	else
+	{
 		unsignedVal = val;
 	}
+
 	do
 	{
 		text[digits++] = '0' + unsignedVal % 10;
@@ -422,7 +474,9 @@ void AddHex(char **buf_p, size_t &maxlen, unsigned int val, int width, int flags
 	if (flags & UPPERDIGITS)
 	{
 		hexadjust = 'A' - '9' - 1;
-	} else {
+	}
+	else
+	{
 		hexadjust = 'a' - '9' - 1;
 	}
 
@@ -587,7 +641,7 @@ reswitch:
 		case 'f':
 			{
 				float *value = (float *)args[arg];
-				AddFloat(&buf_p, llen, *value, width, prec);
+				AddFloat(&buf_p, llen, *value, width, prec, flags);
 				arg++;
 				break;
 			}
@@ -779,7 +833,7 @@ reswitch:
 				CHECK_ARGS(0);
 				cell_t *value;
 				pCtx->LocalToPhysAddr(params[arg], &value);
-				AddFloat(&buf_p, llen, sp_ctof(*value), width, prec);
+				AddFloat(&buf_p, llen, sp_ctof(*value), width, prec, flags);
 				arg++;
 				break;
 			}
@@ -808,7 +862,9 @@ reswitch:
 						player->GetName(),
 						userid,
 						auth);
-				} else {
+				}
+				else
+				{
 					UTIL_Format(buffer,
 						sizeof(buffer),
 						"Console<0><Console><Console>");
@@ -964,7 +1020,9 @@ const char *stristr(const char *str, const char *substr)
 			{
 				return prevloc;
 			}
-		} else {
+		}
+		else
+		{
 			haystack = ++prevloc;
 			needle = (char *)substr;
 		}
@@ -1001,7 +1059,9 @@ size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...)
 	{
 		buffer[maxlength - 1] = '\0';
 		return (maxlength - 1);
-	} else {
+	}
+	else
+	{
 		return len;
 	}
 }
@@ -1014,7 +1074,9 @@ size_t UTIL_FormatArgs(char *buffer, size_t maxlength, const char *fmt, va_list
 	{
 		buffer[maxlength - 1] = '\0';
 		return (maxlength - 1);
-	} else {
+	}
+	else
+	{
 		return len;
 	}
 }
@@ -1117,7 +1179,9 @@ char *UTIL_ReplaceEx(char *subject, size_t maxLen, const char *search, size_t se
 						replaceLen = maxLen - browsed;
 						/* Note, we add one to the final result for the null terminator */
 						strncopy(ptr, replace, replaceLen+1);
-					} else {
+					}
+					else
+					{
 						/* EXAMPLE CASE:
 						 * Subject: AABBBCCC
 						 * Buffer : 12 bytes
@@ -1138,7 +1202,9 @@ char *UTIL_ReplaceEx(char *subject, size_t maxLen, const char *search, size_t se
 						/* Now, do our replacement. */
 						memcpy(ptr, replace, replaceLen);
 					}
-				} else {
+				}
+				else
+				{
 					/* EXAMPLE CASE:
 					 * Subject: AABBBCCC
 					 * Buffer : 12 bytes
@@ -1158,7 +1224,9 @@ char *UTIL_ReplaceEx(char *subject, size_t maxLen, const char *search, size_t se
 					/* Now do our replacement. */
 					memcpy(ptr, replace, replaceLen);
 				}
-			} else if (replaceLen < searchLen) {
+			}
+			else if (replaceLen < searchLen)
+			{
 				/* EXAMPLE CASE:
 				 * Subject: AABBBCCC
 				 * Buffer : 12 bytes
@@ -1184,7 +1252,9 @@ char *UTIL_ReplaceEx(char *subject, size_t maxLen, const char *search, size_t se
 
 				/* Move the rest of the string down */
 				memmove(moveTo, moveFrom, bytesToCopy);
-			} else {
+			}
+			else
+			{
 				/* EXAMPLE CASE:
 				 * Subject: AABBBCCC
 				 * Buffer : 12 bytes

From 0e4dc3a565f31af62cb9de0651cb750f274e9a2e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 16 Nov 2007 01:24:15 +0000
Subject: [PATCH 003/263] fixed some doxygen comment typos

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401684
---
 public/IAdminSystem.h  | 4 ++--
 public/IDBDriver.h     | 4 ++--
 public/IExtensionSys.h | 1 -
 public/IMenuManager.h  | 6 ++++--
 public/ITextParsers.h  | 3 +--
 5 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/public/IAdminSystem.h b/public/IAdminSystem.h
index c63639d3..0d887ea8 100644
--- a/public/IAdminSystem.h
+++ b/public/IAdminSystem.h
@@ -624,7 +624,7 @@ namespace SourceMod
 		/**
 		 * @brief Reads a single character as a flag.
 		 *
-		 * @param flag		Flag character.
+		 * @param c			Flag character.
 		 * @param pAdmFlag	Pointer to store the admin flag.
 		 * @return			True on success, false if invalid.
 		 */
@@ -707,7 +707,7 @@ namespace SourceMod
 		 * @brief Computers access to an override.
 		 *
 		 * @param client		Client index.
-		 * @param override		Override name.
+		 * @param cmd			Override name.
 		 * @param flags			Default flags.
 		 * @param override_only	If false, if a command matches the override, 
 		 *						then its flags will override the default.
diff --git a/public/IDBDriver.h b/public/IDBDriver.h
index af146620..c2ae715f 100644
--- a/public/IDBDriver.h
+++ b/public/IDBDriver.h
@@ -784,7 +784,7 @@ namespace SourceMod
 		 * @param type			A DBHandleType value.
 		 * @param ptr			A pointer corrresponding to a DBHandleType 
 		 *						object.
-		 * @param token			Identity pointer of the owning identity.
+		 * @param pToken		Identity pointer of the owning identity.
 		 * @return				A new Handle_t handle, or 0 on failure.
 		 */
 		virtual Handle_t CreateHandle(DBHandleType type, void *ptr, IdentityToken_t *pToken) =0;
@@ -814,7 +814,7 @@ namespace SourceMod
 		 * @brief Given a driver name, attempts to find it.  If it is not found, SourceMod
 		 * will attempt to load it.  This function is not thread safe.
 		 *
-		 * @param name			Driver identifier name.
+		 * @param driver		Driver identifier name.
 		 * @return				IDBDriver pointer on success, NULL otherwise.
 		 */
 		virtual IDBDriver *FindOrLoadDriver(const char *driver) =0;
diff --git a/public/IExtensionSys.h b/public/IExtensionSys.h
index ec0b4211..6f427db8 100644
--- a/public/IExtensionSys.h
+++ b/public/IExtensionSys.h
@@ -337,7 +337,6 @@ namespace SourceMod
 		 *
 		 * @param path			Path to extension file, relative to the 
 		 *						extensions folder.
-		 * @param lifetime		Lifetime of the extension (currently ignored).
 		 * @param error			Error buffer.
 		 * @param maxlength		Maximum error buffer length.
 		 * @return				New IExtension on success, NULL on failure.
diff --git a/public/IMenuManager.h b/public/IMenuManager.h
index 60a07393..9471e1b2 100644
--- a/public/IMenuManager.h
+++ b/public/IMenuManager.h
@@ -265,7 +265,7 @@ namespace SourceMod
 		 * @brief Returns whether the display is capable of rendering an item
 		 * with the given flags.
 		 *
-		 * @param flags			ITEMDRAW flags.
+		 * @param drawFlags		ITEMDRAW flags.
 		 * @return				True if renderable, false otherwise.
 		 */
 		virtual bool CanDrawItem(unsigned int drawFlags) =0;
@@ -289,7 +289,7 @@ namespace SourceMod
 		 * @brief Sets the selectable key map.  Returns false if the function 
 		 * is not supported.
 		 * 
-		 * @param keys			A bit string where each bit N-1 specifies 
+		 * @param keymap		A bit string where each bit N-1 specifies 
 		 *						that key N is selectable (key 0 is bit 9).  
 		 *						If the selectable key map is 0, it will be
 		 *						automatically set to allow 0.
@@ -662,6 +662,7 @@ namespace SourceMod
 		 * @brief A display/selection cycle has ended.
 		 *
 		 * @param menu			Menu pointer.
+		 * @param reason		MenuEndReason reason.
 		 */
 		virtual void OnMenuEnd(IBaseMenu *menu, MenuEndReason reason)
 		{
@@ -740,6 +741,7 @@ namespace SourceMod
 		 * always be called.
 		 *
 		 * @param menu			Menu pointer.
+		 * @param reason		VoteCancelReason reason.
 		 */
 		virtual void OnMenuVoteCancel(IBaseMenu *menu, VoteCancelReason reason)
 		{
diff --git a/public/ITextParsers.h b/public/ITextParsers.h
index 0b0f0c68..85f675e3 100644
--- a/public/ITextParsers.h
+++ b/public/ITextParsers.h
@@ -280,7 +280,6 @@ namespace SourceMod
 		 * @param key			Key string.
 		 * @param value			Value string.  If no quotes were specified, this will be NULL, 
 		 *						and key will contain the entire string.
-		 * @param 				Number of line in file.
 		 * @return				SMCResult directive.
 		 */
 		virtual SMCResult ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value)
@@ -291,7 +290,7 @@ namespace SourceMod
 		/**
 		 * @brief Called when leaving the current section.
 		 *
-		 * @param				Parsing states.
+		 * @param states		Parsing states.
 		 * @return				SMCResult directive.
 		 */
 		virtual SMCResult ReadSMC_LeavingSection(const SMCStates *states)

From 2989163de45c82c005fb02b2a58ab765a25d212d Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 16 Nov 2007 01:27:38 +0000
Subject: [PATCH 004/263] another minor doxytypo

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401685
---
 public/IMenuManager.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/public/IMenuManager.h b/public/IMenuManager.h
index 9471e1b2..cb97a2f4 100644
--- a/public/IMenuManager.h
+++ b/public/IMenuManager.h
@@ -825,6 +825,7 @@ namespace SourceMod
 		 *
 		 * @param client		Client index.
 		 * @param states		Menu states.
+		 * @param order			Order to search for items.
 		 * @return				IMenuPanel pointer, or NULL if no items could be 
 		 *						found in the IBaseMenu pointer, or NULL if any
 		 *						other error occurred.  Any valid pointer must

From 0f9a7eee81ede644213a937c84019d2584674174 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 16 Nov 2007 02:27:02 +0000
Subject: [PATCH 005/263] more doxygen comment fixes

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401686
---
 public/IDBDriver.h    | 5 +++++
 public/IMemoryUtils.h | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/public/IDBDriver.h b/public/IDBDriver.h
index c2ae715f..d4e35268 100644
--- a/public/IDBDriver.h
+++ b/public/IDBDriver.h
@@ -36,6 +36,11 @@
 #include <IHandleSys.h>
 #include <string.h>
 
+/**
+ * @file IDBDriver.h
+ * @brief Defines interfaces for interacting with relational databases.
+ */
+
 #define SMINTERFACE_DBI_NAME		"IDBI"
 #define SMINTERFACE_DBI_VERSION		5
 
diff --git a/public/IMemoryUtils.h b/public/IMemoryUtils.h
index 1e90925c..1d6ba093 100644
--- a/public/IMemoryUtils.h
+++ b/public/IMemoryUtils.h
@@ -37,6 +37,11 @@
 #define SMINTERFACE_MEMORYUTILS_NAME		"IMemoryUtils"
 #define SMINTERFACE_MEMORYUTILS_VERSION		1
 
+/**
+ * @file IMemoryUtils.h
+ * @brief Interface for finding patterns in memory.
+ */
+
 namespace SourceMod
 {
 	class IMemoryUtils : public SMInterface

From 4d9ef26dbc05d194e93a785e84510971bf77e051 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 16 Nov 2007 14:04:05 +0000
Subject: [PATCH 006/263] fixed amb1162 - SetUserAdmin() did not work as
 documented

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401687
---
 core/smn_player.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/smn_player.cpp b/core/smn_player.cpp
index 78646639..1b78a11d 100644
--- a/core/smn_player.cpp
+++ b/core/smn_player.cpp
@@ -259,7 +259,7 @@ static cell_t SetUserAdmin(IPluginContext *pContext, const cell_t *params)
 	{
 		return pContext->ThrowNativeError("Client %d is not connected", client);
 	}
-	if (!g_Admins.IsValidAdmin(params[2]))
+	if (!g_Admins.IsValidAdmin(params[2]) && id != INVALID_ADMIN_ID)
 	{
 		return pContext->ThrowNativeError("AdminId %x is invalid", params[2]);
 	}

From 555f76ba6797d6505eefbab5db55f5809f8cc367 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 16 Nov 2007 14:08:02 +0000
Subject: [PATCH 007/263] fixed amb1160 - a bunch of menus could display
 invalid clients

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401688
---
 plugins/basecomm/gag.sp          | 2 +-
 plugins/basefuncommands/burn.sp  | 2 +-
 plugins/basefuncommands/slap.sp  | 2 +-
 plugins/basefuncommands/slay.sp  | 2 +-
 plugins/basefunvotes/voteburn.sp | 2 +-
 plugins/basefunvotes/voteslay.sp | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/plugins/basecomm/gag.sp b/plugins/basecomm/gag.sp
index 2777aeb2..e8bd2925 100644
--- a/plugins/basecomm/gag.sp
+++ b/plugins/basecomm/gag.sp
@@ -58,7 +58,7 @@ DisplayGagPlayerMenu(client)
 	SetMenuTitle(menu, title);
 	SetMenuExitBackButton(menu, true);
 	
-	AddTargetsToMenu(menu, client, false, false);
+	AddTargetsToMenu(menu, client, true, false);
 	
 	DisplayMenu(menu, client, MENU_TIME_FOREVER);
 }
diff --git a/plugins/basefuncommands/burn.sp b/plugins/basefuncommands/burn.sp
index 4c2fcc75..5c969a72 100644
--- a/plugins/basefuncommands/burn.sp
+++ b/plugins/basefuncommands/burn.sp
@@ -13,7 +13,7 @@ DisplayBurnMenu(client)
 	SetMenuTitle(menu, title);
 	SetMenuExitBackButton(menu, true);
 	
-	AddTargetsToMenu(menu, client, false, true);
+	AddTargetsToMenu(menu, client, true, true);
 	
 	DisplayMenu(menu, client, MENU_TIME_FOREVER);
 }
diff --git a/plugins/basefuncommands/slap.sp b/plugins/basefuncommands/slap.sp
index bc024f86..1267381b 100644
--- a/plugins/basefuncommands/slap.sp
+++ b/plugins/basefuncommands/slap.sp
@@ -33,7 +33,7 @@ DisplaySlapTargetMenu(client)
 	SetMenuTitle(menu, title);
 	SetMenuExitBackButton(menu, true);
 	
-	AddTargetsToMenu(menu, client, false, true);
+	AddTargetsToMenu(menu, client, true, true);
 	
 	DisplayMenu(menu, client, MENU_TIME_FOREVER);
 }
diff --git a/plugins/basefuncommands/slay.sp b/plugins/basefuncommands/slay.sp
index 9e9def91..e1b0b0bd 100644
--- a/plugins/basefuncommands/slay.sp
+++ b/plugins/basefuncommands/slay.sp
@@ -14,7 +14,7 @@ DisplaySlayMenu(client)
 	SetMenuTitle(menu, title);
 	SetMenuExitBackButton(menu, true);
 	
-	AddTargetsToMenu(menu, client, false, true);
+	AddTargetsToMenu(menu, client, true, true);
 	
 	DisplayMenu(menu, client, MENU_TIME_FOREVER);
 }
diff --git a/plugins/basefunvotes/voteburn.sp b/plugins/basefunvotes/voteburn.sp
index 2fbc66a0..4ba326a9 100644
--- a/plugins/basefunvotes/voteburn.sp
+++ b/plugins/basefunvotes/voteburn.sp
@@ -31,7 +31,7 @@ DisplayBurnTargetMenu(client)
 	SetMenuTitle(menu, title);
 	SetMenuExitBackButton(menu, true);
 	
-	AddTargetsToMenu(menu, client, false, true);
+	AddTargetsToMenu(menu, client, true, true);
 	
 	DisplayMenu(menu, client, MENU_TIME_FOREVER);
 }
diff --git a/plugins/basefunvotes/voteslay.sp b/plugins/basefunvotes/voteslay.sp
index 94e517da..fd8f80c1 100644
--- a/plugins/basefunvotes/voteslay.sp
+++ b/plugins/basefunvotes/voteslay.sp
@@ -32,7 +32,7 @@ DisplaySlayTargetMenu(client)
 	SetMenuTitle(menu, title);
 	SetMenuExitBackButton(menu, true);
 	
-	AddTargetsToMenu(menu, client, false, true);
+	AddTargetsToMenu(menu, client, true, true);
 	
 	DisplayMenu(menu, client, MENU_TIME_FOREVER);
 }

From a00c455135264ce0c874430770a28da6f9bd8f1c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 16 Nov 2007 14:17:26 +0000
Subject: [PATCH 008/263] fixed spacing

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401689
---
 plugins/include/adt_array.inc | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/plugins/include/adt_array.inc b/plugins/include/adt_array.inc
index e8e0f621..8af2ed8c 100644
--- a/plugins/include/adt_array.inc
+++ b/plugins/include/adt_array.inc
@@ -266,8 +266,8 @@ native SwapArrayItems(Handle:array, index1, index2);
  *
  * @param array			Array Handle.
  * @param item			String to search for
- * @return			Array index, or -1 on failure
- * @error			Invalid Handle
+ * @return				Array index, or -1 on failure
+ * @error				Invalid Handle
  */
 native FindStringInArray(Handle:array, const String:item[]);
  
@@ -277,8 +277,8 @@ native FindStringInArray(Handle:array, const String:item[]);
  *
  * @param array			Array Handle.
  * @param item			Value to search for
- * @return			Array index, or -1 on failure
- * @error			Invalid Handle
+ * @return				Array index, or -1 on failure
+ * @error				Invalid Handle
  */
 native FindValueInArray(Handle:array, item); 
 
@@ -290,4 +290,4 @@ native FindValueInArray(Handle:array, item);
 stock bool:IsStringInArray(Handle:array, const String:item[])
 {
 	return (FindStringInArray(array, item) != -1);
-}
\ No newline at end of file
+}

From 8ce2ac7a5b26636f84829839fa2fdb4291196555 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 16 Nov 2007 14:17:56 +0000
Subject: [PATCH 009/263] fixed amb1161 - voteban didn't actually ban

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401690
---
 plugins/basevotes.sp         | 22 +++++++---------------
 plugins/basevotes/votemap.sp |  2 +-
 2 files changed, 8 insertions(+), 16 deletions(-)

diff --git a/plugins/basevotes.sp b/plugins/basevotes.sp
index 6e8d091f..b93c03a7 100644
--- a/plugins/basevotes.sp
+++ b/plugins/basevotes.sp
@@ -51,8 +51,6 @@ public Plugin:myinfo =
 
 new Handle:g_hVoteMenu = INVALID_HANDLE;
 
-new Handle:g_hBanForward = INVALID_HANDLE;
-
 new Handle:g_Cvar_Limits[3] = {INVALID_HANDLE, ...};
 //new Handle:g_Cvar_VoteSay = INVALID_HANDLE;
 
@@ -111,8 +109,6 @@ public OnPluginStart()
 	g_Cvar_Limits[1] = CreateConVar("sm_vote_kick", "0.60", "percent required for successful kick vote.", 0, true, 0.05, true, 1.0);	
 	g_Cvar_Limits[2] = CreateConVar("sm_vote_ban", "0.60", "percent required for successful ban vote.", 0, true, 0.05, true, 1.0);		
 	
-	g_hBanForward = CreateGlobalForward("OnClientBanned", ET_Ignore, Param_Cell, Param_Cell, Param_Cell, Param_String);
-	
 	/* Account for late loading */
 	new Handle:topmenu;
 	if (LibraryExists("adminmenu") && ((topmenu = GetAdminTopMenu()) != INVALID_HANDLE))
@@ -350,14 +346,6 @@ public Handler_VoteCallback(Handle:menu, MenuAction:action, param1, param2)
 					
 				case (voteType:ban):
 				{
-					/* Fire the ban forward */
-					Call_StartForward(g_hBanForward);
-					Call_PushCell(0);
-					Call_PushCell(g_voteClient[VOTE_USERID]);
-					Call_PushCell(30);
-					Call_PushString(g_voteArg);
-					Call_Finish();
-				
 					if (g_voteArg[0] == '\0')
 					{
 						strcopy(g_voteArg, sizeof(g_voteArg), "Votebanned");
@@ -365,9 +353,13 @@ public Handler_VoteCallback(Handle:menu, MenuAction:action, param1, param2)
 					
 					PrintToChatAll("[SM] %t", "Banned player", g_voteInfo[VOTE_NAME], 30);
 					LogAction(-1, g_voteClient[VOTE_CLIENTID], "Vote ban successful, banned \"%L\" (minutes \"30\") (reason \"%s\")", g_voteClient[VOTE_CLIENTID], g_voteArg);
-					
-					ServerCommand("banid %d %s", 30, g_voteClient[VOTE_AUTHID]);
-					ServerCommand("kickid %d \"%s\"", g_voteClient[VOTE_USERID], g_voteArg);				
+
+					BanClient(g_voteClient[VOTE_CLIENTID],
+							  30,
+							  BANFLAG_AUTO,
+							  g_voteArg,
+							  "Banned by vote",
+							  "sm_voteban");
 				}
 			}
 		}
diff --git a/plugins/basevotes/votemap.sp b/plugins/basevotes/votemap.sp
index fcfd0cb6..c878ce77 100644
--- a/plugins/basevotes/votemap.sp
+++ b/plugins/basevotes/votemap.sp
@@ -111,7 +111,7 @@ public MenuHandler_Map(Handle:menu, MenuAction:action, param1, param2)
 		
 		GetMenuItem(menu, param2, info, sizeof(info), _, name, sizeof(name));
 		
-		if (IsStringInArray(g_SelectedMaps, info))
+		if (FindStringInArray(g_SelectedMaps, info) != -1)
 		{
 			return ITEMDRAW_IGNORE;
 		}

From 413a9360ad26f8a2404121a158c1d99c0726b6d8 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 16 Nov 2007 18:23:04 +0000
Subject: [PATCH 010/263] fixed build, i suck

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401691
---
 core/smn_player.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/smn_player.cpp b/core/smn_player.cpp
index 1b78a11d..03f504b0 100644
--- a/core/smn_player.cpp
+++ b/core/smn_player.cpp
@@ -259,7 +259,7 @@ static cell_t SetUserAdmin(IPluginContext *pContext, const cell_t *params)
 	{
 		return pContext->ThrowNativeError("Client %d is not connected", client);
 	}
-	if (!g_Admins.IsValidAdmin(params[2]) && id != INVALID_ADMIN_ID)
+	if (!g_Admins.IsValidAdmin(params[2]) && params[2] != INVALID_ADMIN_ID)
 	{
 		return pContext->ThrowNativeError("AdminId %x is invalid", params[2]);
 	}

From d2b288fd6a28182e07416fda699ce873bf2bfe83 Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Fri, 16 Nov 2007 21:34:29 +0000
Subject: [PATCH 011/263] fixed amb1164, SM was crashing due to interface
 changes from valve (this change is just to make the build update using the
 latest sdk)

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401692
---
 core/Logger.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/core/Logger.cpp b/core/Logger.cpp
index e1c3df40..031e5d96 100644
--- a/core/Logger.cpp
+++ b/core/Logger.cpp
@@ -380,7 +380,9 @@ void Logger::LogError(const char *vafmt, ...)
 		LogToOpenFileEx(fp, vafmt, ap);
 		va_end(ap);
 		fclose(fp);
-	} else {
+	}
+	else
+	{
 		char error[255];
 		g_LibSys.GetPlatformError(error, sizeof(error));
 		LogFatal("[SM] Unexpected fatal logging error (file \"%s\")", m_NrmFileName.c_str());

From ecbd1f5e36caa0d36645f16f8c806dbd96446ac8 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 17 Nov 2007 01:43:25 +0000
Subject: [PATCH 012/263] added amb1169 - dumping handles to game logs

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401693
---
 core/sm_srvcmds.cpp        | 57 +++++++++++++++++++++++++++++++-------
 core/systems/HandleSys.cpp |  8 +++---
 core/systems/HandleSys.h   |  4 ++-
 3 files changed, 54 insertions(+), 15 deletions(-)

diff --git a/core/sm_srvcmds.cpp b/core/sm_srvcmds.cpp
index 9e0e9f60..cbacadd0 100644
--- a/core/sm_srvcmds.cpp
+++ b/core/sm_srvcmds.cpp
@@ -290,6 +290,34 @@ CON_COMMAND(sm, "SourceMod Menu")
 	g_RootMenu.GotRootCmd(args);
 }
 
+FILE *g_pHndlLog = NULL;
+
+void write_handles_to_log(const char *fmt, ...)
+{
+	va_list ap;
+	
+	va_start(ap, fmt);
+	vfprintf(g_pHndlLog, fmt, ap);
+	fprintf(g_pHndlLog, "\n");
+	va_end(ap);
+}
+
+void write_handles_to_game(const char *fmt, ...)
+{
+	size_t len;
+	va_list ap;
+	char buffer[1024];
+	
+	va_start(ap, fmt);
+	len = UTIL_FormatArgs(buffer, sizeof(buffer)-2, fmt, ap);
+	va_end(ap);
+
+	buffer[len] = '\n';
+	buffer[len+1] = '\0';
+
+	engine->LogPrint(buffer);
+}
+
 CON_COMMAND(sm_dump_handles, "Dumps Handle usage to a file for finding Handle leaks")
 {
 #if !defined ORANGEBOX_BUILD
@@ -297,19 +325,28 @@ CON_COMMAND(sm_dump_handles, "Dumps Handle usage to a file for finding Handle le
 #endif
 	if (args.ArgC() < 2)
 	{
-		g_RootMenu.ConsolePrint("Usage: sm_dump_handles <file>");
+		g_RootMenu.ConsolePrint("Usage: sm_dump_handles <file> or <log> for game logs");
 		return;
 	}
 
-	const char *arg = args.Arg(1);
-	FILE *fp = fopen(arg, "wt");
-	if (!fp)
+	if (strcmp(args.Arg(1), "log") != 0)
 	{
-		g_RootMenu.ConsolePrint("Could not find file \"%s\"", arg);
-		return;
+		const char *arg = args.Arg(1);
+		FILE *fp = fopen(arg, "wt");
+		if (!fp)
+		{
+			g_RootMenu.ConsolePrint("Could not find file \"%s\"", arg);
+			return;
+		}
+
+		g_pHndlLog = fp;
+		g_HandleSys.Dump(write_handles_to_log);
+		g_pHndlLog = NULL;
+
+		fclose(fp);
+	}
+	else
+	{
+		g_HandleSys.Dump(write_handles_to_game);
 	}
-
-	g_HandleSys.Dump(fp);
-
-	fclose(fp);
 }
diff --git a/core/systems/HandleSys.cpp b/core/systems/HandleSys.cpp
index 880b5f14..5d0e9885 100644
--- a/core/systems/HandleSys.cpp
+++ b/core/systems/HandleSys.cpp
@@ -994,10 +994,10 @@ bool HandleSystem::TryAndFreeSomeHandles()
 	return g_PluginSys.UnloadPlugin(highest_owner);
 }
 
-void HandleSystem::Dump(FILE *fp)
+void HandleSystem::Dump(HANDLE_REPORTER rep)
 {
-	fprintf(fp, "%-10.10s\t%-20.20s\t%-20.20s\n", "Handle", "Owner", "Type");
-	fprintf(fp, "---------------------------------------------\n");
+	rep("%-10.10s\t%-20.20s\t%-20.20s", "Handle", "Owner", "Type");
+	rep("---------------------------------------------");
 	for (unsigned int i = 1; i <= m_HandleTail; i++)
 	{
 		if (m_Handles[i].set != HandleSet_Used)
@@ -1046,7 +1046,7 @@ void HandleSystem::Dump(FILE *fp)
 		{
 			type = m_strtab->GetString(pType->nameIdx);
 		}
-		fprintf(fp, "0x%08x\t%-20.20s\t%-20.20s\n", index, owner, type);
+		rep("0x%08x\t%-20.20s\t%-20.20s", index, owner, type);
 	}
 }
 
diff --git a/core/systems/HandleSys.h b/core/systems/HandleSys.h
index e0ef22b4..c49b1510 100644
--- a/core/systems/HandleSys.h
+++ b/core/systems/HandleSys.h
@@ -105,6 +105,8 @@ struct QHandleType
 	int nameIdx;
 };
 
+typedef void (HANDLE_REPORTER)(const char *str, ...);
+
 class HandleSystem : 
 	public IHandleSys
 {
@@ -155,7 +157,7 @@ public: //IHandleSystem
 		const HandleAccess *pAccess,
 		HandleError *err);
 
-	void Dump(FILE *fp);
+	void Dump(HANDLE_REPORTER rep);
 protected:
 	/**
 	 * Decodes a handle with sanity and security checking.

From dfa007081b0fe2dd21f7c9ecfc5a89b39d0bb9ed Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 17 Nov 2007 02:54:44 +0000
Subject: [PATCH 013/263] added amb1165 - exposed some plugin admin
 functionality to extensions

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401694
---
 core/PlayerManager.cpp  | 46 +++++++++++++++++++++++++-
 core/PlayerManager.h    |  6 +++-
 public/IPlayerHelpers.h | 73 ++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 122 insertions(+), 3 deletions(-)

diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp
index 5d701c5c..0e54712f 100644
--- a/core/PlayerManager.cpp
+++ b/core/PlayerManager.cpp
@@ -1295,12 +1295,32 @@ void CPlayer::Authorize_Post()
 
 void CPlayer::DoPostConnectAuthorization()
 {
+	bool delay = false;
+
+	List<IClientListener *>::iterator iter;
+	for (iter = g_Players.m_hooks.begin();
+		 iter != g_Players.m_hooks.end();
+		 iter++)
+	{
+		IClientListener *pListener = (*iter);
+#if defined MIN_API_FOR_ADMINCALLS
+		if (pListener->GetClientListenerVersion() < MIN_API_FOR_ADMINCALLS)
+		{
+			continue;
+		}
+#endif
+		if (!pListener->OnClientPreAdminCheck(m_iIndex))
+		{
+			delay = true;
+		}
+	}
+	
 	cell_t result = 0;
 	PreAdminCheck->PushCell(m_iIndex);
 	PreAdminCheck->Execute(&result);
 
 	/* Defer, for better or worse */
-	if ((ResultType)result >= Pl_Handled)
+	if (delay || (ResultType)result >= Pl_Handled)
 	{
 		return;
 	}
@@ -1318,6 +1338,15 @@ void CPlayer::DoPostConnectAuthorization()
 	NotifyPostAdminChecks();
 }
 
+bool CPlayer::RunAdminCacheChecks()
+{
+	AdminId old_id = GetAdminId();
+
+	DoBasicAdminChecks();
+
+	return (GetAdminId() != old_id);
+}
+
 void CPlayer::NotifyPostAdminChecks()
 {
 	if (m_bAdminCheckSignalled)
@@ -1328,6 +1357,21 @@ void CPlayer::NotifyPostAdminChecks()
 	/* Block beforehand so they can't double-call */
 	m_bAdminCheckSignalled = true;
 
+	List<IClientListener *>::iterator iter;
+	for (iter = g_Players.m_hooks.begin();
+		iter != g_Players.m_hooks.end();
+		iter++)
+	{
+		IClientListener *pListener = (*iter);
+#if defined MIN_API_FOR_ADMINCALLS
+		if (pListener->GetClientListenerVersion() < MIN_API_FOR_ADMINCALLS)
+		{
+			continue;
+		}
+#endif
+		pListener->OnClientPostAdminCheck(m_iIndex);
+	}
+
 	PostAdminCheck->PushCell(m_iIndex);
 	PostAdminCheck->Execute(NULL);
 }
diff --git a/core/PlayerManager.h b/core/PlayerManager.h
index 4e1a65ed..767a90dd 100644
--- a/core/PlayerManager.h
+++ b/core/PlayerManager.h
@@ -48,6 +48,8 @@ using namespace SourceHook;
 #define PLAYER_LIFE_ALIVE	1
 #define PLAYER_LIFE_DEAD	2
 
+#define MIN_API_FOR_ADMINCALLS		7
+
 class CPlayer : public IGamePlayer
 {
 	friend class PlayerManager;
@@ -69,8 +71,9 @@ public:
 	IPlayerInfo *GetPlayerInfo();
 	unsigned int GetLanguageId();
 	int GetUserId();
-public:
+	bool RunAdminCacheChecks();
 	void NotifyPostAdminChecks();
+public:
 	void DoBasicAdminChecks();
 	bool IsInKickQueue();
 	void MarkAsBeingKicked();
@@ -108,6 +111,7 @@ class PlayerManager :
 	public SMGlobalClass,
 	public IPlayerManager
 {
+	friend class CPlayer;
 public:
 	PlayerManager();
 	~PlayerManager();
diff --git a/public/IPlayerHelpers.h b/public/IPlayerHelpers.h
index 34e3aa8e..18efba8b 100644
--- a/public/IPlayerHelpers.h
+++ b/public/IPlayerHelpers.h
@@ -41,7 +41,7 @@
 #include <IAdminSystem.h>
 
 #define SMINTERFACE_PLAYERMANAGER_NAME		"IPlayerManager"
-#define SMINTERFACE_PLAYERMANAGER_VERSION	6
+#define SMINTERFACE_PLAYERMANAGER_VERSION	7
 
 struct edict_t;
 class IPlayerInfo;
@@ -147,6 +147,42 @@ namespace SourceMod
 		 * @return		IPlayerInfo pointer, or NULL if none.
 		 */
 		virtual IPlayerInfo *GetPlayerInfo() =0;
+
+		/**
+		 * @brief Runs through Core's admin authorization checks.  If the 
+		 * client is already an admin, no checks are performed.  
+		 *
+		 * Note that this function operates solely against the in-memory admin 
+		 * cache.  It will check steamids, IPs, names, and verify a password 
+		 * if one exists.  To implement other authentication schemes, simply 
+		 * don't call this function and use IGamePlayer::SetAdminId() instead.
+		 *
+		 * @return				True if access changed, false otherwise.
+		 */
+		virtual bool RunAdminCacheChecks() =0;
+
+		/**
+		 * @brief Notifies all listeners that the client has completed 
+		 * all of your post-connection (in-game, auth, admin) checks.  
+		 *
+		 * If you returned "false" from OnClientPreAdminCheck(), you must 
+		 * ALWAYS manually invoke this function, even if RunAdminCacheChecks() 
+		 * failed or you did not assign an AdminId.  Failure to call this 
+		 * function could result in plugins (such as reservedslots) not 
+		 * working properly.
+		 *
+		 * If you are implementing asynchronous fetches, and the client 
+		 * disconnects during your fetching process, you should make sure to 
+		 * recognize that case and not call this function.  That is, do not 
+		 * call this function on mismatched PreCheck calls, or on disconnected 
+		 * clients.  A good way to check this is to pass userids around, which 
+		 * are unique per client connection.
+		 *
+		 * Calling this has no effect if it has already been called on the 
+		 * given client (thus it is safe for multiple asynchronous plugins to 
+		 * call it at various times).
+		 */
+		virtual void NotifyPostAdminChecks() =0;
 	};
 
 	/**
@@ -230,6 +266,41 @@ namespace SourceMod
 		virtual void OnServerActivated(int max_clients)
 		{
 		}
+
+		/**
+		 * @brief Called once a client is authorized and fully in-game, but 
+		 * before admin checks are done.  This can be used to override the 
+		 * default admin checks for a client.
+		 *
+		 * By default, this function allows the authentication process to 
+		 * continue as normal.  If you need to delay the cache searching 
+		 * process in order to get asynchronous data, then return false here. 
+		 *
+		 * If you return false, you must call IPlayerManager::NotifyPostAdminCheck 
+		 * for the same client, or else the OnClientPostAdminCheck callback will 
+		 * never be called.
+		 *
+		 * @param client		Client index.
+		 * @return				True to continue normally, false to override 
+		 *						the authentication process.
+		 */
+		virtual bool OnClientPreAdminCheck(int client)
+		{
+			return true;
+		}
+
+		/**
+		 * @brief Called once a client is authorized and fully in-game, and 
+		 * after all post-connection authorizations have been passed.  If the 
+		 * client does not have an AdminId by this stage, it means that no 
+		 * admin entry was in the cache that matched, and the user could not 
+		 * be authenticated as an admin.
+		 *
+		 * @param client		Client index.
+		 */
+		virtual void OnClientPostAdminCheck(int client)
+		{
+		}
 	};
 
 	#define COMMAND_FILTER_ALIVE		(1<<0)		/**< Only allow alive players */

From a79a16938492e11e32c1b0abc1d88591f357dbe4 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 17 Nov 2007 04:31:01 +0000
Subject: [PATCH 014/263] added a quick experimental system for overriding core
 natives

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401695
---
 core/systems/ExtensionSys.cpp | 85 ++++++++++++++++++++++++++++++++++-
 core/systems/ExtensionSys.h   | 12 +++++
 core/systems/PluginSys.cpp    | 12 +++++
 core/systems/PluginSys.h      |  1 +
 core/systems/ShareSys.cpp     |  5 +++
 core/systems/ShareSys.h       |  1 +
 public/IExtensionSys.h        |  5 ++-
 public/IShareSys.h            | 23 ++++++++++
 8 files changed, 141 insertions(+), 3 deletions(-)

diff --git a/core/systems/ExtensionSys.cpp b/core/systems/ExtensionSys.cpp
index 78df64ec..8209b3ce 100644
--- a/core/systems/ExtensionSys.cpp
+++ b/core/systems/ExtensionSys.cpp
@@ -285,7 +285,22 @@ void CExtension::RemovePlugin(IPlugin *pPlugin)
 		if ((*iter).pl == pPlugin)
 		{
 			iter = m_WeakNatives.erase(iter);
-		} else {
+		}
+		else
+		{
+			iter++;
+		}
+	}
+
+	iter = m_ReplacedNatives.begin();
+	while (iter != m_ReplacedNatives.end())
+	{
+		if ((*iter).pl == pPlugin)
+		{
+			iter = m_ReplacedNatives.erase(iter);
+		}
+		else
+		{
 			iter++;
 		}
 	}
@@ -703,6 +718,7 @@ void CExtensionManager::BindAllNativesToPlugin(IPlugin *pPlugin)
 	uint32_t natives = pContext->GetNativesNum();
 	sp_native_t *native;
 	sm_extnative_t *x_native;
+	sm_repnative_t *r_native;
 	for (uint32_t i=0; i<natives; i++)
 	{
 		/* Make sure the native is valid */
@@ -710,11 +726,26 @@ void CExtensionManager::BindAllNativesToPlugin(IPlugin *pPlugin)
 		{
 			continue;
 		}
+
 		/* Make sure the native is not already bound */
 		if (native->status == SP_NATIVE_BOUND)
 		{
+			/* If it is bound, see if there is a replacement. */
+			if ((r_native = m_RepNatives.retrieve(native->name)) == NULL)
+			{
+				continue;
+			}
+
+			/* Rewrite the address.  Whee! */
+			native->pfn = r_native->info.func;
+
+			/* Make sure this will unload safely */
+			WeakNative wn((CPlugin *)pPlugin, i);
+			r_native->owner->m_ReplacedNatives.push_back(wn);
+
 			continue;
 		}
+
 		/* See if we've got this native in our cache */
 		if ((x_native = m_ExtNatives.retrieve(native->name)) == NULL)
 		{
@@ -789,7 +820,7 @@ bool CExtensionManager::UnloadExtension(IExtension *_pExt)
 			g_PluginSys.OnLibraryAction((*s_iter).c_str(), false, true);
 		}
 
-		/* Unbound weak natives */
+		/* Unbind weak natives */
 		List<WeakNative>::iterator wkn_iter;
 		for (wkn_iter=pExt->m_WeakNatives.begin(); wkn_iter!=pExt->m_WeakNatives.end(); wkn_iter++)
 		{
@@ -798,6 +829,21 @@ bool CExtensionManager::UnloadExtension(IExtension *_pExt)
 			ctx->natives[wkn.idx].status = SP_NATIVE_UNBOUND;
 		}
 
+		/* Unbind replacement natives, link them back to their originals */
+		for (wkn_iter = pExt->m_ReplacedNatives.begin();
+			 wkn_iter != pExt->m_ReplacedNatives.end();
+			 wkn_iter++)
+		{
+			WeakNative & wkn = (*wkn_iter);
+			sp_context_t *ctx = wkn.pl->GetContext();
+			sm_repnative_t *r_native = m_RepNatives.retrieve(ctx->natives[wkn.idx].name);
+			if (r_native == NULL || ctx->natives[wkn.idx].pfn != r_native->info.func)
+			{
+				continue;
+			}
+			ctx->natives[wkn.idx].pfn = r_native->original;
+		}
+
 		/* Notify and/or unload all dependencies */
 		List<CExtension *>::iterator c_iter;
 		CExtension *pDep;
@@ -871,6 +917,22 @@ bool CExtensionManager::UnloadExtension(IExtension *_pExt)
 			}
 		}
 
+		/* Unbind our replacement natives */
+		List<sm_repnative_t>::iterator rep_iter = m_RepNativeList.begin();
+		while (rep_iter != m_RepNativeList.end())
+		{
+			sm_repnative_t & r_native = (*rep_iter);
+			if (r_native.owner == pExt)
+			{
+				m_RepNatives.remove(r_native.info.name);
+				rep_iter = m_RepNativeList.erase(rep_iter);
+			}
+			else
+			{
+				rep_iter++;
+			}
+		}
+
 		/* Tell it to unload */
 		pAPI = pExt->GetAPI();
 		pAPI->OnExtensionUnload();
@@ -919,6 +981,25 @@ void CExtensionManager::AddNatives(IExtension *pOwner, const sp_nativeinfo_t *na
 	}
 }
 
+void CExtensionManager::OverrideNatives(IExtension *myself, const sp_nativeinfo_t *natives)
+{
+	SPVM_NATIVE_FUNC orig;
+
+	for (unsigned int i = 0; natives[i].func != NULL && natives[i].name != NULL; i++)
+	{
+		if ((orig = g_PluginSys.FindCoreNative(natives[i].name)) == NULL)
+		{
+			continue;
+		}
+		sm_repnative_t rep;
+		rep.info = natives[i];
+		rep.owner = (CExtension *)myself;
+		rep.original = orig;
+		m_RepNativeList.push_back(rep);
+		m_RepNatives.insert(natives[i].name, rep);
+	}
+}
+
 void CExtensionManager::MarkAllLoaded()
 {
 	List<CExtension *>::iterator iter;
diff --git a/core/systems/ExtensionSys.h b/core/systems/ExtensionSys.h
index 1fe29f1c..dbba34e6 100644
--- a/core/systems/ExtensionSys.h
+++ b/core/systems/ExtensionSys.h
@@ -55,6 +55,14 @@ struct sm_extnative_t
 	const sp_nativeinfo_t *info;
 };
 
+/* Replacement native */
+struct sm_repnative_t
+{
+	CExtension *owner;
+	sp_nativeinfo_t info;
+	SPVM_NATIVE_FUNC original;
+};
+
 class CExtension : public IExtension
 {
 	friend class CExtensionManager;
@@ -98,6 +106,7 @@ protected:
 	List<IPlugin *> m_Plugins;
 	List<const sp_nativeinfo_t *> m_Natives;
 	List<WeakNative> m_WeakNatives;
+	List<WeakNative> m_ReplacedNatives;
 	List<String> m_Libraries;
 	unsigned int unload_code;
 	bool m_bFullyLoaded;
@@ -168,6 +177,7 @@ public:
 	void TryAutoload();
 	void AddLibrary(IExtension *pSource, const char *library);
 	bool LibraryExists(const char *library);
+	void OverrideNatives(IExtension *myself, const sp_nativeinfo_t *natives);
 public:
 	CExtension *GetExtensionFromIdent(IdentityToken_t *ptr);
 	void Shutdown();
@@ -175,6 +185,8 @@ private:
 	CExtension *FindByOrder(unsigned int num);
 private:
 	List<CExtension *> m_Libs;
+	List<sm_repnative_t> m_RepNativeList;
+	KTrie<sm_repnative_t> m_RepNatives;
 	KTrie<sm_extnative_t> m_ExtNatives;
 };
 
diff --git a/core/systems/PluginSys.cpp b/core/systems/PluginSys.cpp
index a0bdcce4..d18aa689 100644
--- a/core/systems/PluginSys.cpp
+++ b/core/systems/PluginSys.cpp
@@ -1440,6 +1440,18 @@ void CPluginManager::AddCoreNativesToPlugin(CPlugin *pPlugin)
 	}
 }
 
+SPVM_NATIVE_FUNC CPluginManager::FindCoreNative(const char *name)
+{
+	SPVM_NATIVE_FUNC pfn;
+
+	if (!sm_trie_retrieve(m_pCoreNatives, name, (void **)&pfn))
+	{
+		return NULL;
+	}
+
+	return pfn;
+}
+
 void CPluginManager::TryRefreshDependencies(CPlugin *pPlugin)
 {
 	assert(pPlugin->GetBaseContext() != NULL);
diff --git a/core/systems/PluginSys.h b/core/systems/PluginSys.h
index cc71c4ea..ce70a16f 100644
--- a/core/systems/PluginSys.h
+++ b/core/systems/PluginSys.h
@@ -489,6 +489,7 @@ public:
 	}
 public:
 	bool AddFakeNative(IPluginFunction *pFunction, const char *name, SPVM_FAKENATIVE_FUNC func);
+	SPVM_NATIVE_FUNC FindCoreNative(const char *name);
 private:
 	void AddFakeNativesToPlugin(CPlugin *pPlugin);
 	void TryRefreshDependencies(CPlugin *pOther);
diff --git a/core/systems/ShareSys.cpp b/core/systems/ShareSys.cpp
index 1154e4d4..c3bf2c2d 100644
--- a/core/systems/ShareSys.cpp
+++ b/core/systems/ShareSys.cpp
@@ -243,3 +243,8 @@ void ShareSystem::RegisterLibrary(IExtension *myself, const char *name)
 {
 	g_Extensions.AddLibrary(myself, name);
 }
+
+void ShareSystem::OverrideNatives(IExtension *myself, const sp_nativeinfo_t *natives)
+{
+	g_Extensions.OverrideNatives(myself, natives);
+}
diff --git a/core/systems/ShareSys.h b/core/systems/ShareSys.h
index 6c34f618..60e99c21 100644
--- a/core/systems/ShareSys.h
+++ b/core/systems/ShareSys.h
@@ -81,6 +81,7 @@ public: //IShareSys
 	void DestroyIdentity(IdentityToken_t *identity);
 	void AddDependency(IExtension *myself, const char *filename, bool require, bool autoload);
 	void RegisterLibrary(IExtension *myself, const char *name);
+	void OverrideNatives(IExtension *myself, const sp_nativeinfo_t *natives);
 public: //SMGlobalClass
 	/* Pre-empt in case anything tries to register idents early */
 	void OnSourceModStartup(bool late);
diff --git a/public/IExtensionSys.h b/public/IExtensionSys.h
index 6f427db8..3f4989a2 100644
--- a/public/IExtensionSys.h
+++ b/public/IExtensionSys.h
@@ -127,8 +127,11 @@ namespace SourceMod
 
 	/**
 	 * @brief Version code of the IExtensionInterface API itself.
+	 *
+	 * Note: This is bumped when IShareSys is changed, because IShareSys 
+	 * itself is not versioned.
 	 */
-	#define SMINTERFACE_EXTENSIONAPI_VERSION	2
+	#define SMINTERFACE_EXTENSIONAPI_VERSION	3
 
 	/**
 	 * @brief The interface an extension must expose.
diff --git a/public/IShareSys.h b/public/IShareSys.h
index c97db5e5..84363bbf 100644
--- a/public/IShareSys.h
+++ b/public/IShareSys.h
@@ -200,6 +200,29 @@ namespace SourceMod
 		 * @param name			Library name.
 		 */
 		virtual void RegisterLibrary(IExtension *myself, const char *name) =0;
+
+		/**
+		 * @brief Adds a list of natives to the global native pool, to be 
+		 * bound on plugin load.
+		 *
+		 * Unlike AddNatives(), this function implements natives that are 
+		 * ALWAYS bound, regardless of whether a previous function is bound. 
+		 * That means extensions can override Core natives.
+		 *
+		 * A Core version of each native must exist.  If one does not, then 
+		 * Core will simply ignore that entry.
+		 *
+		 * Override natives represent a weak coupling.  If the extension is 
+		 * unloaded, the native will be re-bound to the Core version.
+		 * 
+		 * @param myself		Identity token of parent object.
+		 * @param natives		Array of natives to add.  The last entry in 
+		 *						the array must be filled with NULLs to 
+		 *						terminate the array.  The array must be static 
+		 *						as Core will cache the pointer for the 
+		 *						lifetime of the extension.
+		 */
+		virtual void OverrideNatives(IExtension *myself, const sp_nativeinfo_t *natives) =0;
 	};
 }
 

From f950225229737a090ea1a0b8bc90914342472c6e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 17 Nov 2007 05:33:47 +0000
Subject: [PATCH 015/263] added GetGlobalTarget/SetGlobalTarget to g_pSM
 const'd some things

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401696
---
 core/CellRecipientFilter.h |  4 ++--
 core/HalfLife2.cpp         |  7 ++++++-
 core/UserMessages.cpp      |  2 +-
 core/UserMessages.h        |  2 +-
 core/sourcemod.cpp         |  4 +++-
 core/sourcemod.h           |  2 +-
 public/ISourceMod.h        | 19 ++++++++++++++++++-
 public/IUserMessages.h     |  2 +-
 8 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/core/CellRecipientFilter.h b/core/CellRecipientFilter.h
index b3a5a1f9..30070553 100644
--- a/core/CellRecipientFilter.h
+++ b/core/CellRecipientFilter.h
@@ -46,7 +46,7 @@ public: //IRecipientFilter
 	int GetRecipientCount() const;
 	int GetRecipientIndex(int slot) const;
 public:
-	void Initialize(cell_t *ptr, size_t count);
+	void Initialize(const cell_t *ptr, size_t count);
 	void SetToReliable(bool isreliable);
 	void SetToInit(bool isinitmsg);
 	void Reset();
@@ -98,7 +98,7 @@ inline void CellRecipientFilter::SetToReliable(bool isreliable)
 	m_IsReliable = isreliable;
 }
 
-inline void CellRecipientFilter::Initialize(cell_t *ptr, size_t count)
+inline void CellRecipientFilter::Initialize(const cell_t *ptr, size_t count)
 {
 	memcpy(m_Players, ptr, count * sizeof(cell_t));
 	m_Size = count;
diff --git a/core/HalfLife2.cpp b/core/HalfLife2.cpp
index 993a0e98..6aec953e 100644
--- a/core/HalfLife2.cpp
+++ b/core/HalfLife2.cpp
@@ -35,6 +35,7 @@
 #include "UserMessages.h"
 #include "PlayerManager.h"
 #include "sm_stringutil.h"
+#include "GameConfigs.h"
 #include <compat_wrappers.h>
 
 CHalfLife2 g_HL2;
@@ -308,7 +309,11 @@ bool CHalfLife2::HintTextMsg(int client, const char *msg)
 		return false;
 	}
 
-	pBitBuf->WriteByte(1);
+	const char *pre_byte = g_pGameConf->GetKeyValue("HintTextPreByte");
+	if (pre_byte != NULL && strcmp(pre_byte, "yes") == 0)
+	{
+		pBitBuf->WriteByte(1);
+	}
 	pBitBuf->WriteString(msg);
 	g_UserMsgs.EndMessage();
 
diff --git a/core/UserMessages.cpp b/core/UserMessages.cpp
index 7384b741..0413286f 100644
--- a/core/UserMessages.cpp
+++ b/core/UserMessages.cpp
@@ -135,7 +135,7 @@ bool UserMessages::GetMessageName(int msgid, char *buffer, size_t maxlength) con
 	return false;
 }
 
-bf_write *UserMessages::StartMessage(int msg_id, cell_t players[], unsigned int playersNum, int flags)
+bf_write *UserMessages::StartMessage(int msg_id, const cell_t players[], unsigned int playersNum, int flags)
 {
 	bf_write *buffer;
 
diff --git a/core/UserMessages.h b/core/UserMessages.h
index 9736b0fc..01969fcf 100644
--- a/core/UserMessages.h
+++ b/core/UserMessages.h
@@ -69,7 +69,7 @@ public: //IUserMessages
 	bool GetMessageName(int msgid, char *buffer, size_t maxlength) const;
 	bool HookUserMessage(int msg_id, IUserMessageListener *pListener, bool intercept=false);
 	bool UnhookUserMessage(int msg_id, IUserMessageListener *pListener, bool intercept=false);
-	bf_write *StartMessage(int msg_id, cell_t players[], unsigned int playersNum, int flags);
+	bf_write *StartMessage(int msg_id, const cell_t players[], unsigned int playersNum, int flags);
 	bool EndMessage();
 public:
 	bf_write *OnStartMessage_Pre(IRecipientFilter *filter, int msg_type);
diff --git a/core/sourcemod.cpp b/core/sourcemod.cpp
index e59afd31..e94ed402 100644
--- a/core/sourcemod.cpp
+++ b/core/sourcemod.cpp
@@ -586,9 +586,11 @@ const char *SourceModBase::GetGamePath() const
 	return g_BaseDir.c_str();
 }
 
-void SourceModBase::SetGlobalTarget(unsigned int index)
+unsigned int SourceModBase::SetGlobalTarget(unsigned int index)
 {
+	unsigned int old = m_target;
 	m_target = index;
+	return old;
 }
 
 unsigned int SourceModBase::GetGlobalTarget() const
diff --git a/core/sourcemod.h b/core/sourcemod.h
index 9a804a43..1b222c80 100644
--- a/core/sourcemod.h
+++ b/core/sourcemod.h
@@ -83,7 +83,7 @@ public:
 	/** 
 	 * @brief Stores the global target index.
 	 */
-	void SetGlobalTarget(unsigned int index);
+	unsigned int SetGlobalTarget(unsigned int index);
 
 	/** 
 	 * @brief Returns the global target index.
diff --git a/public/ISourceMod.h b/public/ISourceMod.h
index bddc33c4..af39d30b 100644
--- a/public/ISourceMod.h
+++ b/public/ISourceMod.h
@@ -43,7 +43,7 @@
 #include <time.h>
 
 #define SMINTERFACE_SOURCEMOD_NAME		"ISourceMod"
-#define SMINTERFACE_SOURCEMOD_VERSION	3
+#define SMINTERFACE_SOURCEMOD_VERSION	4
 
 /**
 * @brief Forward declaration of the KeyValues class.
@@ -199,6 +199,23 @@ namespace SourceMod
 		 * @return			Adjusted server time.
 		 */
 		virtual time_t GetAdjustedTime() =0;
+
+		/**
+		 * @brief Sets the global client SourceMod will use for assisted 
+		 * translations (that is, %t).
+		 *
+		 * @param index		Client index.
+		 * @return			Old global client value.
+		 */
+		virtual unsigned int SetGlobalTarget(unsigned int index) =0;
+
+		/**
+		 * @brief Returns the global client SourceMod is currently using 
+		 * for assisted translations (that is, %t).
+		 *
+		 * @return			Global client value.
+		 */
+		virtual unsigned int GetGlobalTarget() const =0;
 	};
 }
 
diff --git a/public/IUserMessages.h b/public/IUserMessages.h
index 4603643a..c5524b1d 100644
--- a/public/IUserMessages.h
+++ b/public/IUserMessages.h
@@ -144,7 +144,7 @@ namespace SourceMod
 		 * @param flags			Flags to use for sending the message.
 		 * @return				bf_write structure to write message with, or NULL on failure.
 		 */
-		virtual bf_write *StartMessage(int msg_id, cell_t players[], unsigned int playersNum, int flags) =0;
+		virtual bf_write *StartMessage(int msg_id, const cell_t players[], unsigned int playersNum, int flags) =0;
 
 		/**
 		 * @brief Wrapper around UserMessageEnd for use with StartMessage().

From 358a1e959e79ad77a11c39f9f0eb458eac6fdd41 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 17 Nov 2007 05:40:58 +0000
Subject: [PATCH 016/263] fix for amb1156 - gamedata specifies HintText type
 now

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401697
---
 gamedata/core.games.txt | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/gamedata/core.games.txt b/gamedata/core.games.txt
index cb9bfd99..ac01dc0c 100644
--- a/gamedata/core.games.txt
+++ b/gamedata/core.games.txt
@@ -62,6 +62,24 @@
 		}
 	}
 
+	/**
+	 * Which games use an extra byte in the HintText 
+	 * message? Even though it's in the SDK, apparently 
+	 * only CS:S does this right now.
+	 */
+	"#default"
+	{
+		"#supported"
+		{
+			"game"		"cstrike"
+		}
+
+		"Keys"
+		{
+			"HintTextPreByte"		"yes"
+		}
+	}
+
 	"cstrike"
 	{
 		"Keys"

From 200fe16e1cc6eef86ba40d3ccf27b08161ac3baf Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 17 Nov 2007 05:41:47 +0000
Subject: [PATCH 017/263] fix for amb1156 - CS:S Tools overrides the
 PrintHintText native with its own version.  this is a fail-safe for CS:S
 being loaded, as we can have better control from an extension.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401698
---
 extensions/cstrike/extension.cpp      |  6 ++++
 extensions/cstrike/extension.h        |  2 ++
 extensions/cstrike/natives.cpp        | 45 +++++++++++++++++++++++++++
 extensions/cstrike/sdk/smsdk_config.h |  1 +
 extensions/cstrike/sdk/smsdk_ext.cpp  |  6 ++++
 extensions/cstrike/sdk/smsdk_ext.h    |  6 ++++
 6 files changed, 66 insertions(+)

diff --git a/extensions/cstrike/extension.cpp b/extensions/cstrike/extension.cpp
index 182ae75e..d0b8daa4 100644
--- a/extensions/cstrike/extension.cpp
+++ b/extensions/cstrike/extension.cpp
@@ -45,6 +45,7 @@ IBinTools *g_pBinTools = NULL;
 IGameConfig *g_pGameConf = NULL;
 IGameEventManager2 *gameevents = NULL;
 bool hooked_everything = false;
+int g_msgHintText = -1;
 
 SMEXT_LINK(&g_CStrike);
 
@@ -67,6 +68,11 @@ bool CStrike::SDK_OnLoad(char *error, size_t maxlength, bool late)
 	sharesys->AddNatives(myself, g_CSNatives);
 	sharesys->RegisterLibrary(myself, "cstrike");
 
+	if ((g_msgHintText = usermsgs->GetMessageIndex("HintText")) != -1)
+	{
+		sharesys->OverrideNatives(myself, g_CS_PrintHintText);
+	}
+
 	return true;
 }
 
diff --git a/extensions/cstrike/extension.h b/extensions/cstrike/extension.h
index 916bb2d2..acf301f3 100644
--- a/extensions/cstrike/extension.h
+++ b/extensions/cstrike/extension.h
@@ -122,5 +122,7 @@ public:
 /* Interfaces from SourceMod */
 extern IBinTools *g_pBinTools;
 extern IGameConfig *g_pGameConf;
+extern int g_msgHintText;
+extern sp_nativeinfo_t g_CS_PrintHintText[];
 
 #endif // _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
diff --git a/extensions/cstrike/natives.cpp b/extensions/cstrike/natives.cpp
index e5f085c4..ce711e68 100644
--- a/extensions/cstrike/natives.cpp
+++ b/extensions/cstrike/natives.cpp
@@ -69,6 +69,45 @@ inline CBaseEntity *GetCBaseEntity(int num, bool isplayer)
 	return pUnk->GetBaseEntity();
 }
 
+static cell_t CS_PrintHintText(IPluginContext *pContext, const cell_t *params)
+{
+	int client = params[1];
+	IGamePlayer *pPlayer = playerhelpers->GetGamePlayer(params[1]);
+
+	if (!pPlayer)
+	{
+		return pContext->ThrowNativeError("Client index %d is invalid", client);
+	}
+
+	if (!pPlayer->IsInGame())
+	{
+		return pContext->ThrowNativeError("Client %d is not in game", client);
+	}
+
+	g_pSM->SetGlobalTarget(client);
+
+	char buffer[192];
+	g_pSM->FormatString(buffer, sizeof(buffer), pContext, params, 2);
+
+	/* Check for an error before printing to the client */
+	if (pContext->GetContext()->n_err != SP_ERROR_NONE)
+	{
+		return 0;
+	}
+
+	bf_write *pBitBuf = usermsgs->StartMessage(g_msgHintText, &params[1], 1, USERMSG_RELIABLE);
+	if (pBitBuf == NULL)
+	{
+		return pContext->ThrowNativeError("Could not send a usermessage");
+	}
+	pBitBuf->WriteByte(1);
+	pBitBuf->WriteString(buffer);
+	usermsgs->EndMessage();
+
+	return 1;
+}
+
+
 static cell_t CS_RespawnPlayer(IPluginContext *pContext, const cell_t *params)
 {
 	static ICallWrapper *pWrapper = NULL;
@@ -124,3 +163,9 @@ sp_nativeinfo_t g_CSNatives[] =
 	{"CS_SwitchTeam",				CS_SwitchTeam}, 
 	{NULL,							NULL}
 };
+
+sp_nativeinfo_t g_CS_PrintHintText[] = 
+{
+	{"PrintHintText",				CS_PrintHintText},
+	{NULL,							NULL},
+};
diff --git a/extensions/cstrike/sdk/smsdk_config.h b/extensions/cstrike/sdk/smsdk_config.h
index fc402227..a070e6b3 100644
--- a/extensions/cstrike/sdk/smsdk_config.h
+++ b/extensions/cstrike/sdk/smsdk_config.h
@@ -71,5 +71,6 @@
 #define SMEXT_ENABLE_TIMERSYS
 //#define SMEXT_ENABLE_THREADER
 //#define SMEXT_ENABLE_LIBSYS
+#define SMEXT_ENABLE_USERMSGS
 
 #endif // _INCLUDE_SOURCEMOD_EXTENSION_CONFIG_H_
diff --git a/extensions/cstrike/sdk/smsdk_ext.cpp b/extensions/cstrike/sdk/smsdk_ext.cpp
index 60480b22..f5e6f3fc 100644
--- a/extensions/cstrike/sdk/smsdk_ext.cpp
+++ b/extensions/cstrike/sdk/smsdk_ext.cpp
@@ -79,6 +79,9 @@ IThreader *threader = NULL;
 #if defined SMEXT_ENABLE_LIBSYS
 ILibrarySys *libsys = NULL;
 #endif
+#if defined SMEXT_ENABLE_USERMSGS
+IUserMessages *usermsgs = NULL;
+#endif
 
 /** Exports the main interface */
 PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
@@ -149,6 +152,9 @@ bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error,
 #if defined SMEXT_ENABLE_LIBSYS
 	SM_GET_IFACE(LIBRARYSYS, libsys);
 #endif
+#if defined SMEXT_ENABLE_USERMSGS
+	SM_GET_IFACE(USERMSGS, usermsgs);
+#endif
 
 	if (SDK_OnLoad(error, maxlength, late))
 	{
diff --git a/extensions/cstrike/sdk/smsdk_ext.h b/extensions/cstrike/sdk/smsdk_ext.h
index 905e13a6..c137616b 100644
--- a/extensions/cstrike/sdk/smsdk_ext.h
+++ b/extensions/cstrike/sdk/smsdk_ext.h
@@ -73,6 +73,9 @@
 #if defined SMEXT_ENABLE_LIBSYS
 #include <ILibrarySys.h>
 #endif
+#if defined SMEXT_ENABLE_USERMSGS
+#include <IUserMessages.h>
+#endif
 
 #if defined SMEXT_CONF_METAMOD
 #include <ISmmPlugin.h>
@@ -260,6 +263,9 @@ extern IThreader *threader;
 #if defined SMEXT_ENABLE_LIBSYS
 extern ILibrarySys *libsys;
 #endif
+#if defined SMEXT_ENABLE_USERMSGS
+extern IUserMessages *usermsgs;
+#endif
 
 #if defined SMEXT_CONF_METAMOD
 PLUGIN_GLOBALVARS();

From 5c2e13b12b6aa7e2ab0716a7a0dd6eb896405a7e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 17 Nov 2007 05:50:09 +0000
Subject: [PATCH 018/263] updated sdk to include usermsgs

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401699
---
 public/sample_ext/sdk/smsdk_config.h | 1 +
 public/sample_ext/sdk/smsdk_ext.cpp  | 6 ++++++
 public/sample_ext/sdk/smsdk_ext.h    | 6 ++++++
 3 files changed, 13 insertions(+)

diff --git a/public/sample_ext/sdk/smsdk_config.h b/public/sample_ext/sdk/smsdk_config.h
index ea076290..59fb0874 100644
--- a/public/sample_ext/sdk/smsdk_config.h
+++ b/public/sample_ext/sdk/smsdk_config.h
@@ -74,5 +74,6 @@
 //#define SMEXT_ENABLE_PLUGINSYS
 //#define SMEXT_ENABLE_ADMINSYS
 //#define SMEXT_ENABLE_TEXTPARSERS
+#define SMEXT_ENABLE_USERMSGS
 
 #endif // _INCLUDE_SOURCEMOD_EXTENSION_CONFIG_H_
diff --git a/public/sample_ext/sdk/smsdk_ext.cpp b/public/sample_ext/sdk/smsdk_ext.cpp
index 9934974f..0c728f00 100644
--- a/public/sample_ext/sdk/smsdk_ext.cpp
+++ b/public/sample_ext/sdk/smsdk_ext.cpp
@@ -91,6 +91,9 @@ IAdminSystem *adminsys = NULL;
 #if defined SMEXT_ENABLE_TEXTPARSERS
 ITextParsers *textparsers = NULL;
 #endif
+#if defined SMEXT_ENABLE_USERMSGS
+IUserMessages *usermsgs = NULL;
+#endif
 
 /** Exports the main interface */
 PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
@@ -173,6 +176,9 @@ bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error,
 #if defined SMEXT_ENABLE_TEXTPARSERS
 	SM_GET_IFACE(TEXTPARSERS, textparsers);
 #endif
+#if defined SMEXT_ENABLE_USERMSGS
+	SM_GET_IFACE(USERMSGS, usermsgs);
+#endif
 
 	if (SDK_OnLoad(error, maxlength, late))
 	{
diff --git a/public/sample_ext/sdk/smsdk_ext.h b/public/sample_ext/sdk/smsdk_ext.h
index b37ce03f..4702f2a2 100644
--- a/public/sample_ext/sdk/smsdk_ext.h
+++ b/public/sample_ext/sdk/smsdk_ext.h
@@ -85,6 +85,9 @@
 #if defined SMEXT_ENABLE_TEXTPARSERS
 #include <ITextParsers.h>
 #endif
+#if defined SMEXT_ENABLE_USERMSGS
+#include <IUserMessages.h>
+#endif
 
 #if defined SMEXT_CONF_METAMOD
 #include <ISmmPlugin.h>
@@ -277,6 +280,9 @@ extern IMenuManager *menus;
 #if defined SMEXT_ENABLE_ADMINSYS
 extern IAdminSystem *adminsys;
 #endif
+#if defined SMEXT_ENABLE_USERMSGS
+extern IUserMessages *usermsgs;
+#endif
 
 #if defined SMEXT_CONF_METAMOD
 PLUGIN_GLOBALVARS();

From 02f41feadf04cc78e31b028741e1501f4138328b Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Sun, 18 Nov 2007 06:25:33 +0000
Subject: [PATCH 019/263] fix for amb1174 - sv_visblemaxplayers being changed
 even with hidden slots disabled.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401700
---
 plugins/reservedslots.sp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/plugins/reservedslots.sp b/plugins/reservedslots.sp
index 0715a7f3..defdb900 100644
--- a/plugins/reservedslots.sp
+++ b/plugins/reservedslots.sp
@@ -99,7 +99,10 @@ public Action:OnTimedKick(Handle:timer, any:client)
 	
 	KickClient(client, "%T", "Slot reserved", client);
 	
-	SetVisibleMaxSlots(GetClientCount(false), g_MaxClients - GetConVarInt(sm_reserved_slots));
+	if (GetConVarBool(sm_hide_slots))
+	{				
+		SetVisibleMaxSlots(GetClientCount(false), g_MaxClients - GetConVarInt(sm_reserved_slots));
+	}
 	
 	return Plugin_Handled;
 }

From fdd75d6fcb4e5cdc3e5c7f12bad7b011cbcaa8d8 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 18 Nov 2007 17:07:32 +0000
Subject: [PATCH 020/263] we now refresh tf2 menus because valve like writing
 buggy interfaces

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401701
---
 core/MenuStyle_Radio.cpp | 107 +++++++++++++++++++++++++++++++++++----
 core/MenuStyle_Radio.h   |  19 ++++++-
 gamedata/core.games.txt  |   8 +++
 3 files changed, 122 insertions(+), 12 deletions(-)

diff --git a/core/MenuStyle_Radio.cpp b/core/MenuStyle_Radio.cpp
index c891025b..188c0247 100644
--- a/core/MenuStyle_Radio.cpp
+++ b/core/MenuStyle_Radio.cpp
@@ -42,9 +42,15 @@ extern const char *g_RadioNumTable[];
 CRadioStyle g_RadioMenuStyle;
 int g_ShowMenuId = -1;
 bool g_bRadioInit = false;
+unsigned int g_RadioMenuTimeout = 0;
 
-CRadioStyle::CRadioStyle() : m_players(new CBaseMenuPlayer[256+1])
+CRadioStyle::CRadioStyle()
 {
+	m_players = new CRadioMenuPlayer[256+1];
+	for (size_t i = 0; i < 256+1; i++)
+	{
+		m_players[i].Radio_SetIndex(i);
+	}
 }
 
 void CRadioStyle::OnSourceModAllInitialized()
@@ -73,6 +79,16 @@ void CRadioStyle::OnSourceModLevelChange(const char *mapName)
 		return;
 	}
 
+	const char *val = g_pGameConf->GetKeyValue("RadioMenuTimeout");
+	if (val != NULL)
+	{
+		g_RadioMenuTimeout = atoi(val);
+	}
+	else
+	{
+		g_RadioMenuTimeout = 0;
+	}
+
 	g_Menus.AddStyle(this);
 	g_Menus.SetDefaultStyle(this);
 
@@ -203,6 +219,38 @@ void CRadioStyle::FreeRadioDisplay(CRadioDisplay *display)
 	m_FreeDisplays.push(display);
 }
 
+CRadioMenuPlayer *CRadioStyle::GetRadioMenuPlayer(int client)
+{
+	return &m_players[client];
+}
+
+void CRadioStyle::ProcessWatchList()
+{
+	if (!g_RadioMenuTimeout)
+	{
+		BaseMenuStyle::ProcessWatchList();
+		return;
+	}
+
+	BaseMenuStyle::ProcessWatchList();
+
+	CRadioMenuPlayer *pPlayer;
+	float curtime = gpGlobals->curtime;
+	unsigned int max_clients = g_Players.GetMaxClients();
+	for (unsigned int i = 1; i <= max_clients; i++)
+	{
+		pPlayer = GetRadioMenuPlayer(i);
+		if (!pPlayer->bInMenu || pPlayer->bInExternMenu)
+		{
+			continue;
+		}
+		if (pPlayer->Radio_NeedsRefresh())
+		{
+			pPlayer->Radio_Refresh();
+		}
+	}
+}
+
 CRadioDisplay::CRadioDisplay()
 {
 	Reset();
@@ -326,17 +374,50 @@ bool CRadioDisplay::CanDrawItem(unsigned int drawFlags)
 
 void CRadioDisplay::SendRawDisplay(int client, unsigned int time)
 {
-	char buffer[4096];
-	size_t len;
-
-	len = UTIL_Format(buffer, sizeof(buffer), "%s\n%s", m_Title.c_str(), m_BufferText.c_str());
-
-	cell_t players[1] = {client};
-
 	int _sel_keys = (keys == 0) ? (1<<9) : keys;
+	CRadioMenuPlayer *pPlayer = g_RadioMenuStyle.GetRadioMenuPlayer(client);
+	pPlayer->Radio_Init(_sel_keys, m_Title.c_str(), m_BufferText.c_str());
+	pPlayer->Radio_Refresh();
+}
 
-	char *ptr = buffer;
+void CRadioMenuPlayer::Radio_SetIndex(unsigned int index)
+{
+	m_index = index;
+}
+
+bool CRadioMenuPlayer::Radio_NeedsRefresh()
+{
+	return (gpGlobals->curtime - display_last_refresh >= g_RadioMenuTimeout);
+}
+
+void CRadioMenuPlayer::Radio_Init(int keys, const char *title, const char *text)
+{
+	display_len = UTIL_Format(display_pkt, 
+		sizeof(display_pkt), 
+		"%s\n%s", 
+		title,
+		text);
+	display_keys = keys;
+}
+
+void CRadioMenuPlayer::Radio_Refresh()
+{
+	cell_t players[1] = {m_index};
+	char *ptr = display_pkt;
 	char save = 0;
+	size_t len = display_len;
+	unsigned int time;
+
+	/* Compute the new time */
+	if (menuHoldTime == 0)
+	{
+		time = 0;
+	}
+	else
+	{
+		time = menuHoldTime - (unsigned int)(gpGlobals->curtime - menuStartTime);
+	}
+
 	while (true)
 	{
 		if (len > 240)
@@ -345,7 +426,7 @@ void CRadioDisplay::SendRawDisplay(int client, unsigned int time)
 			ptr[240] = '\0';
 		}
 		bf_write *buffer = g_UserMsgs.StartMessage(g_ShowMenuId, players, 1, USERMSG_BLOCKHOOKS);
-		buffer->WriteWord(_sel_keys);
+		buffer->WriteWord(display_keys);
 		buffer->WriteChar(time ? time : -1);
 		buffer->WriteByte( (len > 240) ? 1 : 0 );
 		buffer->WriteString(ptr);
@@ -355,10 +436,14 @@ void CRadioDisplay::SendRawDisplay(int client, unsigned int time)
 			ptr[240] = save;
 			ptr = &ptr[240];
 			len -= 240;
-		} else {
+		}
+		else
+		{
 			break;
 		}
 	}
+
+	display_last_refresh = gpGlobals->curtime;
 }
 
 int CRadioDisplay::GetAmountRemaining()
diff --git a/core/MenuStyle_Radio.h b/core/MenuStyle_Radio.h
index 35f30cf0..a1b8971b 100644
--- a/core/MenuStyle_Radio.h
+++ b/core/MenuStyle_Radio.h
@@ -47,6 +47,21 @@ using namespace SourceMod;
 class CRadioDisplay;
 class CRadioMenu;
 
+class CRadioMenuPlayer : public CBaseMenuPlayer
+{
+public:
+	void Radio_Init(int keys, const char *title, const char *buffer);
+	bool Radio_NeedsRefresh();
+	void Radio_Refresh();
+	void Radio_SetIndex(unsigned int index);
+private:
+	unsigned int m_index;
+	size_t display_len;
+	char display_pkt[512];
+	int display_keys;
+	float display_last_refresh;
+};
+
 class CRadioStyle : 
 	public BaseMenuStyle,
 	public SMGlobalClass,
@@ -61,6 +76,7 @@ public: //SMGlobalClass
 public: //BaseMenuStyle
 	CBaseMenuPlayer *GetMenuPlayer(int client);
 	void SendDisplay(int client, IMenuPanel *display);
+	void ProcessWatchList();
 public: //IMenuStyle
 	const char *GetStyleName();
 	IMenuPanel *CreatePanel();
@@ -75,8 +91,9 @@ public:
 public:
 	CRadioDisplay *MakeRadioDisplay(CRadioMenu *menu=NULL);
 	void FreeRadioDisplay(CRadioDisplay *display);
+	CRadioMenuPlayer *GetRadioMenuPlayer(int client);
 private:
-	CBaseMenuPlayer *m_players;
+	CRadioMenuPlayer *m_players;
 	CStack<CRadioDisplay *> m_FreeDisplays;
 };
 
diff --git a/gamedata/core.games.txt b/gamedata/core.games.txt
index ac01dc0c..0077e39f 100644
--- a/gamedata/core.games.txt
+++ b/gamedata/core.games.txt
@@ -87,4 +87,12 @@
 			"GameExtension"			"game.cstrike"
 		}
 	}
+
+	"tf"
+	{
+		"Keys"
+		{
+			"RadioMenuTimeout"		"4"
+		}
+	}
 }

From 4e83e1949a3bb682c24c55d0aa8bb04c55babcf5 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 18 Nov 2007 18:02:53 +0000
Subject: [PATCH 021/263] fixed build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401702
---
 core/MenuStyle_Radio.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/core/MenuStyle_Radio.cpp b/core/MenuStyle_Radio.cpp
index 188c0247..1a5d033f 100644
--- a/core/MenuStyle_Radio.cpp
+++ b/core/MenuStyle_Radio.cpp
@@ -235,7 +235,6 @@ void CRadioStyle::ProcessWatchList()
 	BaseMenuStyle::ProcessWatchList();
 
 	CRadioMenuPlayer *pPlayer;
-	float curtime = gpGlobals->curtime;
 	unsigned int max_clients = g_Players.GetMaxClients();
 	for (unsigned int i = 1; i <= max_clients; i++)
 	{

From 36cbf57b858c33ac9fd40ca12fa6034569ee72df Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 19 Nov 2007 22:08:51 +0000
Subject: [PATCH 022/263] fixed makefiles

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401703
---
 extensions/cstrike/Makefile.ep1  | 2 +-
 extensions/cstrike/Makefile.ep2  | 2 +-
 extensions/cstrike/Makefile.orig | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/extensions/cstrike/Makefile.ep1 b/extensions/cstrike/Makefile.ep1
index d3687b56..6bfeafe5 100644
--- a/extensions/cstrike/Makefile.ep1
+++ b/extensions/cstrike/Makefile.ep1
@@ -13,7 +13,7 @@ HL2SDK = ../../../hl2sdk
 PROJECT = game.cstrike
 
 #Uncomment for SourceMM-enabled extensions
-#LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
+LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
 
 OBJECTS = sdk/smsdk_ext.cpp extension.cpp natives.cpp RegNatives.cpp timeleft.cpp
 
diff --git a/extensions/cstrike/Makefile.ep2 b/extensions/cstrike/Makefile.ep2
index e936e671..5852266e 100644
--- a/extensions/cstrike/Makefile.ep2
+++ b/extensions/cstrike/Makefile.ep2
@@ -13,7 +13,7 @@ HL2SDK = ../../../hl2sdk-ob
 PROJECT = game.cstrike
 
 #Uncomment for SourceMM-enabled extensions
-#LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
+LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
 
 OBJECTS = sdk/smsdk_ext.cpp extension.cpp natives.cpp RegNatives.cpp timeleft.cpp
 
diff --git a/extensions/cstrike/Makefile.orig b/extensions/cstrike/Makefile.orig
index d21ea095..4ae96fd1 100644
--- a/extensions/cstrike/Makefile.orig
+++ b/extensions/cstrike/Makefile.orig
@@ -13,7 +13,7 @@ HL2SDK = ../../../hl2sdk
 PROJECT = game.cstrike
 
 #Uncomment for SourceMM-enabled extensions
-#LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
+LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
 
 OBJECTS = sdk/smsdk_ext.cpp extension.cpp natives.cpp RegNatives.cpp timeleft.cpp
 

From 3d4d583182e239927f44ed7395e695987d6ba366 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Mon, 19 Nov 2007 23:11:10 +0000
Subject: [PATCH 023/263] Fixed the counting of team wins and rounds played in
 MapChooser

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401704
---
 plugins/mapchooser.sp | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/plugins/mapchooser.sp b/plugins/mapchooser.sp
index 4508c18b..2daed5f2 100644
--- a/plugins/mapchooser.sp
+++ b/plugins/mapchooser.sp
@@ -74,6 +74,7 @@ new Handle:g_NextMapList = INVALID_HANDLE;
 new Handle:g_TeamScores = INVALID_HANDLE;
 new Handle:g_VoteMenu = INVALID_HANDLE;
 
+new g_TotalRounds;
 new bool:g_HasVoteStarted;
 new g_mapFileTime;
 
@@ -87,7 +88,6 @@ public OnPluginStart()
 	g_MapList = CreateArray(arraySize);
 	g_OldMapList = CreateArray(arraySize);
 	g_NextMapList = CreateArray(arraySize);
-	g_TeamScores = CreateArray(2);
 
 	g_Cvar_StartTime = CreateConVar("sm_mapvote_start", "3.0", "Specifies when to start the vote based on time remaining.", _, true, 1.0);
 	g_Cvar_StartRounds = CreateConVar("sm_mapvote_startround", "2.0", "Specifies when to start the vote based on rounds remaining.", _, true, 1.0);
@@ -139,6 +139,14 @@ public OnConfigsExecuted()
 		SetupTimeleftTimer();
 		SetConVarString(g_Cvar_Nextmap, "Pending Vote");
 	}
+	
+	if (g_TeamScores != INVALID_HANDLE)
+	{
+		CloseHandle(g_TeamScores);
+	}
+	
+	g_TeamScores = CreateArray(2);
+	g_TotalRounds = 0;
 }
 
 public OnMapEnd()
@@ -225,8 +233,7 @@ public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
 		return;
 	}
 
-	static total;
-	total++;
+	g_TotalRounds++;
 	
 	new team[2], teamPos = -1;
 	for (new i; i < GetArraySize(g_TeamScores); i++)
@@ -268,7 +275,7 @@ public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
 		new maxrounds = GetConVarInt(g_Cvar_Maxrounds);
 		if (maxrounds)
 		{
-			if (total >= (maxrounds - GetConVarInt(g_Cvar_StartRounds)))
+			if (g_TotalRounds >= (maxrounds - GetConVarInt(g_Cvar_StartRounds)))
 			{
 				InitiateVote();
 			}			

From d04d0e408960b43642a11675626e2ad6b79798c3 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 20 Nov 2007 02:22:26 +0000
Subject: [PATCH 024/263] submitting patch from amb1181 - retrieving topmenu
 object name

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401705
---
 extensions/topmenus/TopMenu.cpp      | 2224 +++++++++++++-------------
 extensions/topmenus/TopMenu.h        |  357 ++---
 extensions/topmenus/smn_topmenus.cpp |  741 ++++-----
 plugins/include/topmenus.inc         |  567 +++----
 4 files changed, 1971 insertions(+), 1918 deletions(-)

diff --git a/extensions/topmenus/TopMenu.cpp b/extensions/topmenus/TopMenu.cpp
index bdb048a5..53b266ec 100644
--- a/extensions/topmenus/TopMenu.cpp
+++ b/extensions/topmenus/TopMenu.cpp
@@ -1,1105 +1,1119 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation.  You must obey the GNU General Public License in
- * all respects for all other code used.  Additionally, AlliedModders LLC grants
- * this exception to all derivative works.  AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or <http://www.sourcemod.net/license.php>.
- *
- * Version: $Id$
- */
-
-#include <stdlib.h>
-#include <stdarg.h>
-#include "TopMenu.h"
-
-struct obj_by_name_t
-{
-	unsigned int obj_index;
-	char name[64];
-};
-
-int _SortObjectNamesDescending(const void *ptr1, const void *ptr2);
-unsigned int strncopy(char *dest, const char *src, size_t count);
-size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...);
-
-TopMenu::TopMenu(ITopMenuObjectCallbacks *callbacks)
-{
-	m_clients = NULL;
-	m_SerialNo = 1;
-	m_pTitle = callbacks;
-	m_max_clients = 0;
-
-	if (playerhelpers->IsServerActivated())
-	{
-		CreatePlayers(playerhelpers->GetMaxClients());
-	}
-}
-
-TopMenu::~TopMenu()
-{
-	/* Delete all categories */
-	while (m_Categories.size())
-	{
-		RemoveFromMenu(m_Categories[0]->obj->object_id);
-	}
-
-	/* Remove all objects */
-	for (size_t i = 0; i < m_Objects.size(); i++)
-	{
-		assert(m_Objects[i]->is_free == true);
-		delete m_Objects[i];
-	}
-
-	m_pTitle->OnTopMenuObjectRemoved(this, 0);
-
-	/* Delete all cached config entries */
-	for (size_t i = 0; i < m_Config.cats.size(); i++)
-	{
-		delete m_Config.cats[i];
-	}
-
-	/* Sweep players */
-	for (size_t i = 0; i <= (size_t)m_max_clients; i++)
-	{
-		TearDownClient(&m_clients[i]);
-	}
-	delete [] m_clients;
-}
-
-void TopMenu::OnClientConnected(int client)
-{
-	if (m_clients == NULL)
-	{
-		return;
-	}
-
-	topmenu_player_t *player = &m_clients[client];
-	TearDownClient(player);
-}
-
-void TopMenu::OnClientDisconnected(int client)
-{
-	if (m_clients == NULL)
-	{
-		return;
-	}
-
-	topmenu_player_t *player = &m_clients[client];
-	TearDownClient(player);
-}
-
-void TopMenu::OnServerActivated(int max_clients)
-{
-	if (m_clients == NULL)
-	{
-		CreatePlayers(max_clients);
-	}
-}
-
-unsigned int TopMenu::AddToMenu(const char *name,
-								TopMenuObjectType type,
-								ITopMenuObjectCallbacks *callbacks,
-								IdentityToken_t *owner,
-								const char *cmdname,
-								FlagBits flags,
-								unsigned int parent)
-{
-	return AddToMenu2(name, type, callbacks, owner, cmdname, flags, parent, NULL);
-}
-
-unsigned int TopMenu::AddToMenu2(const char *name,
-								 TopMenuObjectType type,
-								 ITopMenuObjectCallbacks *callbacks,
-								 IdentityToken_t *owner,
-								 const char *cmdname,
-								 FlagBits flags,
-								 unsigned int parent,
-								 const char *info_string)
-{
-	/* Sanity checks */
-	if (type == TopMenuObject_Category && parent != 0)
-	{
-		return 0;
-	}
-	else if (type == TopMenuObject_Item && parent == 0)
-	{
-		return 0;
-	}
-	else if (m_ObjLookup.retrieve(name) != NULL)
-	{
-		return 0;
-	}
-	else if (type != TopMenuObject_Item && type != TopMenuObject_Category)
-	{
-		return 0;
-	}
-
-	/* If we're adding an item, make sure the parent is valid, 
-	 * and that the parent is a category.
-	 */
-	topmenu_object_t *parent_obj = NULL;
-	topmenu_category_t *parent_cat = NULL;
-	if (type == TopMenuObject_Item)
-	{
-		/* Check parent index.  Note it will be >= 1 here. */
-		if (parent > m_Objects.size() || m_Objects[parent - 1]->is_free)
-		{
-			return 0;
-		}
-		parent_obj = m_Objects[parent - 1];
-
-		/* Find an equivalent pointer in the category array. */
-		for (size_t i = 0; i < m_Categories.size(); i++)
-		{
-			if (m_Categories[i]->obj == parent_obj)
-			{
-				parent_cat = m_Categories[i];
-				break;
-			}
-		}
-
-		/* If none was found, leave. */
-		if (parent_cat == NULL)
-		{
-			return 0;
-		}
-	}
-
-	/* Re-use an old object pointer if we can. */
-	topmenu_object_t *obj = NULL;
-	for (size_t i = 0; i < m_Objects.size(); i++)
-	{
-		if (m_Objects[i]->is_free == true)
-		{
-			obj = m_Objects[i];
-			break;
-		}
-	}
-
-	/* Otherwise, allocate a new one. */
-	if (obj == NULL)
-	{
-		obj = new topmenu_object_t;
-		obj->object_id = ((unsigned int)m_Objects.size()) + 1;
-		m_Objects.push_back(obj);
-	}
-
-	/* Initialize the object's properties. */
-	obj->callbacks = callbacks;
-	obj->flags = flags;
-	obj->owner = owner;
-	obj->type = type;
-	obj->is_free = false;
-	obj->parent = parent_obj;
-	strncopy(obj->name, name, sizeof(obj->name));
-	strncopy(obj->cmdname, cmdname ? cmdname : "", sizeof(obj->cmdname));
-	strncopy(obj->info, info_string ? info_string : "", sizeof(obj->info));
-
-	if (obj->type == TopMenuObject_Category)
-	{
-		/* Create a new category entry */
-		topmenu_category_t *cat = new topmenu_category_t;
-		cat->obj = obj;
-		cat->reorder = false;
-		cat->serial = 1;
-
-		/* Add it, then update our serial change number. */
-		m_Categories.push_back(cat);
-		m_SerialNo++;
-
-		/* Updating sorting info */
-		m_bCatsNeedResort = true;
-	}
-	else if (obj->type == TopMenuObject_Item)
-	{
-		/* Update the category, mark it as needing changes */
-		parent_cat->obj_list.push_back(obj);
-		parent_cat->reorder = true;
-		parent_cat->serial++;
-
-		/* If the category just went from 0 to 1 items, mark it as 
-		 * changed, so clients get the category drawn.
-		 */
-		if (parent_cat->obj_list.size() == 1)
-		{
-			m_SerialNo++;
-		}
-	}
-
-	m_ObjLookup.insert(name, obj);
-
-	return obj->object_id;
-}
-
-const char *TopMenu::GetObjectInfoString(unsigned int object_id)
-{
-	if (object_id == 0 
-		|| object_id > m_Objects.size() 
-		|| m_Objects[object_id - 1]->is_free)
-	{
-		return NULL;
-	}
-
-	topmenu_object_t *obj = m_Objects[object_id - 1];
-
-	return obj->info;
-}
-
-void TopMenu::RemoveFromMenu(unsigned int object_id)
-{
-	if (object_id == 0 
-		|| object_id > m_Objects.size() 
-		|| m_Objects[object_id - 1]->is_free)
-	{
-		return;
-	}
-
-	topmenu_object_t *obj = m_Objects[object_id - 1];
-
-	m_ObjLookup.remove(obj->name);
-
-	if (obj->type == TopMenuObject_Category)
-	{
-		/* Find it in the category list. */
-		for (size_t i = 0; i < m_Categories.size(); i++)
-		{
-			if (m_Categories[i]->obj == obj)
-			{
-				/* Mark all children as removed + free.  Note we could
-				 * call into RemoveMenuItem() for this, but it'd be very 
-				 * inefficient!
-				 */
-				topmenu_category_t *cat = m_Categories[i];
-				for (size_t j = 0; j < m_Categories[i]->obj_list.size(); j++)
-				{
-					cat->obj_list[j]->callbacks->OnTopMenuObjectRemoved(this, cat->obj_list[j]->object_id);
-					cat->obj_list[j]->is_free = true;
-				}
-				
-				/* Remove the category from the list, then delete it. */
-				m_Categories.erase(m_Categories.iterAt(i));
-				delete cat;
-				break;
-			}
-		}
-
-		/* Update the root as changed. */
-		m_SerialNo++;
-		m_bCatsNeedResort = true;
-	}
-	else if (obj->type == TopMenuObject_Item)
-	{
-		/* Find the category this item is in. */
-		topmenu_category_t *parent_cat = NULL;
-		for (size_t i = 0; i < m_Categories.size(); i++)
-		{
-			if (m_Categories[i]->obj == obj->parent)
-			{
-				parent_cat = m_Categories[i];
-				break;
-			}
-		}
-
-		/* Erase it from the category's lists. */
-		if (parent_cat)
-		{
-			for (size_t i = 0; i < parent_cat->obj_list.size(); i++)
-			{
-				if (parent_cat->obj_list[i] == obj)
-				{
-					parent_cat->obj_list.erase(parent_cat->obj_list.iterAt(i));
-
-					/* If this category now has no items, mark root as changed 
-					 * so clients won't get the category drawn anymore.
-					 */
-					if (parent_cat->obj_list.size() == 0)
-					{
-						m_SerialNo++;
-					}
-					break;
-				}
-			}
-
-			/* Update the category as changed. */
-			parent_cat->reorder = true;
-			parent_cat->serial++;
-		}
-	}
-
-	/* The callbacks pointer is still valid, so fire away! */
-	obj->callbacks->OnTopMenuObjectRemoved(this, object_id);
-
-	/* Finally, mark the object as free. */
-	obj->is_free = true;
-}
-
-bool TopMenu::DisplayMenu(int client, unsigned int hold_time, TopMenuPosition position)
-{
-	if (m_clients == NULL)
-	{
-		return false;
-	}
-
-	IGamePlayer *pPlayer = playerhelpers->GetGamePlayer(client);
-	if (!pPlayer->IsInGame())
-	{
-		return false;
-	}
-
-	UpdateClientRoot(client, pPlayer);
-
-	topmenu_player_t *pClient = &m_clients[client];
-	if (pClient->root == NULL)
-	{
-		return false;
-	}
-
-	bool return_value = false;
-
-	if (position == TopMenuPosition_LastCategory && 
-		pClient->last_category < m_Categories.size())
-	{
-		return_value = DisplayCategory(client, pClient->last_category, hold_time, true);
-		if (!return_value)
-		{
-			return_value = pClient->root->DisplayAtItem(client, hold_time, pClient->last_root_pos);
-		}
-	}
-	else if (position == TopMenuPosition_LastRoot)
-	{
-		pClient->root->DisplayAtItem(client, hold_time, pClient->last_root_pos);
-	}
-	else if (position == TopMenuPosition_Start)
-	{
-		pClient->last_position = 0;
-		pClient->last_category = 0;
-		return_value = pClient->root->Display(client, hold_time);
-	}
-
-	return return_value;
-}
-
-bool TopMenu::DisplayCategory(int client, unsigned int category, unsigned int hold_time, bool last_position)
-{
-	UpdateClientCategory(client, category);
-
-	topmenu_player_t *pClient = &m_clients[client];
-	if (category >= pClient->cat_count
-		|| pClient->cats[category].menu == NULL)
-	{
-		return false;
-	}
-
-	bool return_value = false;
-
-	topmenu_player_category_t *player_cat = &(pClient->cats[category]);
-
-	pClient->last_category = category;
-	if (last_position)
-	{
-		return_value = player_cat->menu->DisplayAtItem(client, hold_time, pClient->last_position);
-	}
-	else
-	{
-		return_value = player_cat->menu->Display(client, hold_time);
-	}
-
-	return return_value;
-}
-
-void TopMenu::OnMenuSelect2(IBaseMenu *menu, int client, unsigned int item, unsigned int item_on_page)
-{
-	const char *item_name = menu->GetItemInfo(item, NULL);
-	if (!item_name)
-	{
-		return;
-	}
-
-	topmenu_object_t *obj;
-	topmenu_player_t *pClient = &m_clients[client];
-	topmenu_object_t **pObject = m_ObjLookup.retrieve(item_name);
-	if (pObject == NULL)
-	{
-		return;
-	}
-
-	obj = *pObject;
-
-	/* We now have the object... what do we do with it? */
-	if (obj->type == TopMenuObject_Category)
-	{
-		/* If it's a category, the user wants to view it.. */
-		for (size_t i = 0; i < m_Categories.size(); i++)
-		{
-			if (m_Categories[i]->obj == obj)
-			{
-				pClient->last_root_pos = item_on_page;
-				if (!DisplayCategory(client, (unsigned int)i, MENU_TIME_FOREVER, false))
-				{
-					/* If we can't display the category, re-display the root menu */
-					DisplayMenu(client, MENU_TIME_FOREVER, TopMenuPosition_LastRoot);
-				}
-				break;
-			}
-		}
-	}
-	else
-	{
-		pClient->last_position = item_on_page;
-		
-		/* Re-check access in case this user had their credentials revoked */
-		if (obj->cmdname[0] != '\0' && !adminsys->CheckAccess(client, obj->cmdname, obj->flags, false))
-		{
-			DisplayMenu(client, 0, TopMenuPosition_LastCategory);
-			return;
-		}
-		
-		/* Pass the information on to the callback */
-		obj->callbacks->OnTopMenuSelectOption(this, client, obj->object_id);
-	}
-}
-
-void TopMenu::OnMenuDrawItem(IBaseMenu *menu, int client, unsigned int item, unsigned int &style)
-{
-	const char *item_name = menu->GetItemInfo(item, NULL);
-	if (!item_name)
-	{
-		return;
-	}
-
-	topmenu_object_t *obj;
-	topmenu_object_t **pObject = m_ObjLookup.retrieve(item_name);
-	if (pObject == NULL)
-	{
-		return;
-	}
-
-	obj = *pObject;
-
-	style = obj->callbacks->OnTopMenuDrawOption(this, client, obj->object_id);
-	if (style != ITEMDRAW_DEFAULT)
-	{
-		return;
-	}
-
-	if (obj->cmdname[0] == '\0')
-	{
-		return;
-	}
-
-	if (!adminsys->CheckAccess(client, obj->cmdname, obj->flags, false))
-	{
-		style = ITEMDRAW_IGNORE;
-	}
-}
-
-unsigned int TopMenu::OnMenuDisplayItem(IBaseMenu *menu,
-								int client,
-								IMenuPanel *panel,
-								unsigned int item,
-								const ItemDrawInfo &dr)
-{
-	const char *item_name = menu->GetItemInfo(item, NULL);
-	if (!item_name)
-	{
-		return 0;
-	}
-
-	topmenu_object_t *obj;
-	topmenu_object_t **pObject = m_ObjLookup.retrieve(item_name);
-	if (pObject == NULL)
-	{
-		return 0;
-	}
-
-	obj = *pObject;
-
-	/* Ask the object to render the text for this client */
-	char renderbuf[64];
-	obj->callbacks->OnTopMenuDisplayOption(this, client, obj->object_id, renderbuf, sizeof(renderbuf));
-
-	/* Build the new draw info */
-	ItemDrawInfo new_dr = dr;
-	new_dr.display = renderbuf;
-
-	/* Man I love the menu API.  Ask the panel to draw the item and give the position 
-	 * back to Core's renderer.  This way we don't have to worry about keeping the 
-	 * render buffer static!
-	 */
-	return panel->DrawItem(new_dr);
-}
-
-void TopMenu::OnMenuCancel(IBaseMenu *menu, int client, MenuCancelReason reason)
-{
-	if (reason == MenuCancel_ExitBack)
-	{
-		/* If the client chose exit back, they were on a category menu, and we can
-		 * now display the root menu from the last known position.
-		 */
-		DisplayMenu(client, 0, TopMenuPosition_LastRoot);
-	}
-}
-
-void TopMenu::UpdateClientRoot(int client, IGamePlayer *pGamePlayer)
-{
-	topmenu_player_t *pClient = &m_clients[client];
-	IGamePlayer *pPlayer = pGamePlayer ? pGamePlayer : playerhelpers->GetGamePlayer(client);
-
-	/* Determine if an update is necessary */
-	bool is_update_needed = false;
-	if (pClient->menu_serial != m_SerialNo)
-	{
-		is_update_needed = true;
-	}
-	else if (pPlayer->GetUserId() != pClient->user_id)
-	{
-		is_update_needed = true;
-	}
-
-	/* If no update is needed at the root level, just leave now */
-	if (!is_update_needed)
-	{
-		return;
-	}
-
-	/* First we need to flush the cache... */
-	TearDownClient(pClient);
-
-	/* Now, rebuild the category list, but don't create menus */
-	if (m_Categories.size() == 0)
-	{
-		pClient->cat_count = 0;
-		pClient->cats = NULL;
-	}
-	else
-	{
-		pClient->cat_count = (unsigned int)m_Categories.size();
-		pClient->cats = new topmenu_player_category_t[pClient->cat_count];
-		memset(pClient->cats, 0, sizeof(topmenu_player_category_t) * pClient->cat_count);
-	}
-
-	/* Re-sort the root categories if needed */
-	SortCategoriesIfNeeded();
-
-	/* Build the root menu */
-	IBaseMenu *root_menu = menus->GetDefaultStyle()->CreateMenu(this, myself->GetIdentity());
-
-	/* Add the sorted items */
-	for (size_t i = 0; i < m_SortedCats.size(); i++)
-	{
-		if (m_Categories[m_SortedCats[i]]->obj_list.size() == 0)
-		{
-			continue;
-		}
-		root_menu->AppendItem(m_Categories[m_SortedCats[i]]->obj->name, ItemDrawInfo(""));
-	}
-
-	/* Now we need to handle un-sorted items.  This is slightly trickier, as we need to 
-	 * pre-render each category name, and cache those names.  Phew!
-	 */
-	if (m_UnsortedCats.size())
-	{
-		obj_by_name_t *item_list = new obj_by_name_t[m_UnsortedCats.size()];
-		for (size_t i = 0; i < m_UnsortedCats.size(); i++)
-		{
-			obj_by_name_t *temp_obj = &item_list[i];
-			topmenu_object_t *obj = m_Categories[m_UnsortedCats[i]]->obj;
-			obj->callbacks->OnTopMenuDisplayOption(this,
-				client, 
-				obj->object_id,
-				temp_obj->name,
-				sizeof(temp_obj->name));
-			temp_obj->obj_index = m_UnsortedCats[i];
-		}
-
-		/* Sort our temp list */
-		qsort(item_list, m_UnsortedCats.size(), sizeof(obj_by_name_t), _SortObjectNamesDescending);
-
-		/* Add the new sorted categories */
-		for (size_t i = 0; i < m_UnsortedCats.size(); i++)
-		{
-			if (m_Categories[item_list[i].obj_index]->obj_list.size() == 0)
-			{
-				continue;
-			}
-			root_menu->AppendItem(m_Categories[item_list[i].obj_index]->obj->name, ItemDrawInfo(""));
-		}
-
-		delete [] item_list;
-	}
-
-	/* Set the menu's title */
-	char renderbuf[128];
-	m_pTitle->OnTopMenuDisplayTitle(this, client, 0, renderbuf, sizeof(renderbuf));
-	root_menu->SetDefaultTitle(renderbuf);
-
-	/* The client is now fully updated */
-	pClient->root = root_menu;
-	pClient->user_id = pPlayer->GetUserId();
-	pClient->menu_serial = m_SerialNo;
-	pClient->last_position = 0;
-	pClient->last_category = 0;
-	pClient->last_root_pos = 0;
-}
-
-void TopMenu::UpdateClientCategory(int client, unsigned int category)
-{
-	/* Update the client's root menu just in case it needs it.  This 
-	 * will validate that we have both a valid client and a valid
-	 * category structure for that client.
-	 */
-	UpdateClientRoot(client);
-
-	/* Now it's guaranteed that our category tables will be usable */
-	topmenu_player_t *pClient = &m_clients[client];
-	topmenu_category_t *cat = m_Categories[category];
-	topmenu_player_category_t *player_cat = &(pClient->cats[category]);
-
-	/* Does the category actually need updating? */
-	if (player_cat->serial == cat->serial)
-	{
-		return;
-	}
-
-	/* Destroy any existing menu */
-	if (player_cat->menu)
-	{
-		player_cat->menu->Destroy();
-		player_cat->menu = NULL;
-	}
-
-	if (pClient->last_category == category)
-	{
-		pClient->last_position = 0;
-	}
-
-	IBaseMenu *cat_menu = menus->GetDefaultStyle()->CreateMenu(this, myself->GetIdentity());
-	
-	/* Categories get an "exit back" button */
-	cat_menu->SetMenuOptionFlags(cat_menu->GetMenuOptionFlags() | MENUFLAG_BUTTON_EXITBACK);
-
-	/* Re-sort the category if needed */
-	SortCategoryIfNeeded(category);
-
-	/* Build the menu with the sorted items first */
-	for (size_t i = 0; i < cat->sorted.size(); i++)
-	{
-		cat_menu->AppendItem(cat->sorted[i]->name, ItemDrawInfo(""));
-	}
-
-	/* Now handle unsorted items */
-	if (cat->unsorted.size())
-	{
-		/* Build a list of the item names */
-		obj_by_name_t *item_list = new obj_by_name_t[cat->unsorted.size()];
-		for (size_t i = 0; i < cat->unsorted.size(); i++)
-		{
-			obj_by_name_t *item = &item_list[i];
-			topmenu_object_t *obj = cat->unsorted[i];
-			obj->callbacks->OnTopMenuDisplayOption(this,
-				client,
-				obj->object_id,
-				item->name,
-				sizeof(item->name));
-			item->obj_index = (unsigned int)i;
-		}
-
-		/* Sort the names */
-		qsort(item_list, cat->unsorted.size(), sizeof(obj_by_name_t), _SortObjectNamesDescending);
-
-		/* Add to the menu */
-		for (size_t i = 0; i < cat->unsorted.size(); i++)
-		{
-			cat_menu->AppendItem(cat->unsorted[item_list[i].obj_index]->name, ItemDrawInfo(""));
-		}
-
-		delete [] item_list;
-	}
-
-	/* Set the menu's title */
-	char renderbuf[128];
-	cat->obj->callbacks->OnTopMenuDisplayTitle(this, 
-		client, 
-		cat->obj->object_id, 
-		renderbuf, 
-		sizeof(renderbuf));
-	cat_menu->SetDefaultTitle(renderbuf);
-
-	/* We're done! */
-	player_cat->menu = cat_menu;
-	player_cat->serial = cat->serial;
-}
-
-void TopMenu::SortCategoryIfNeeded(unsigned int category)
-{
-	topmenu_category_t *cat = m_Categories[category];
-	if (!cat->reorder)
-	{
-		return;
-	}
-
-	cat->sorted.clear();
-	cat->unsorted.clear();
-
-	if (cat->obj_list.size() == 0)
-	{
-		cat->reorder = false;
-		return;
-	}
-
-	CVector<unsigned int> to_sort;
-	for (size_t i = 0; i < cat->obj_list.size(); i++)
-	{
-		to_sort.push_back(i);
-	}
-
-	/* Find a matching category in the configs */
-	config_category_t *config_cat = NULL; 
-	for (size_t i = 0; i < m_Config.cats.size(); i++)
-	{
-		if (strcmp(m_Config.strings.GetString(m_Config.cats[i]->name), cat->obj->name) == 0)
-		{
-			config_cat = m_Config.cats[i];
-			break;
-		}
-	}
-
-	/* If there is a matching category, build a pre-sorted item list */
-	if (config_cat != NULL)
-	{
-		/* Find matching objects in this category */
-		for (size_t i = 0; i < config_cat->commands.size(); i++)
-		{
-			const char *config_name = m_Config.strings.GetString(config_cat->commands[i]);
-			for (size_t j = 0; j < to_sort.size(); j++)
-			{
-				if (strcmp(config_name, cat->obj_list[to_sort[j]]->name) == 0)
-				{
-					/* Place in the final list, then remove from the temporary list */
-					cat->sorted.push_back(cat->obj_list[to_sort[j]]);
-					to_sort.erase(to_sort.iterAt(j));
-					break;
-				}
-			}
-		}
-	}
-
-	/* Push any remaining items onto the unsorted list */
-	for (size_t i = 0; i < to_sort.size(); i++)
-	{
-		cat->unsorted.push_back(cat->obj_list[to_sort[i]]);
-	}
-
-	cat->reorder = false;
-}
-
-void TopMenu::SortCategoriesIfNeeded()
-{
-	if (!m_bCatsNeedResort)
-	{
-		return;
-	}
-
-	/* Clear sort results */
-	m_SortedCats.clear();
-	m_UnsortedCats.clear();
-
-	if (m_Categories.size() == 0)
-	{
-		m_bCatsNeedResort = false;
-		return;
-	}
-
-	CVector<unsigned int> to_sort;
-	for (unsigned int i = 0; i < (unsigned int)m_Categories.size(); i++)
-	{
-		to_sort.push_back(i);
-	}
-
-	/* If we have any predefined categories, add them in as they appear. */
-	for (size_t i= 0; i < m_Config.cats.size(); i++)
-	{
-		/* Find this category and map it in if we can */
-		for (size_t j = 0; j < to_sort.size(); j++)
-		{
-			if (strcmp(m_Config.strings.GetString(m_Config.cats[i]->name), 
-					   m_Categories[to_sort[j]]->obj->name) == 0)
-			{
-				/* Add to the real list and remove from the temporary */
-				m_SortedCats.push_back(to_sort[j]);
-				to_sort.erase(to_sort.iterAt(j));
-				break;
-			}
-		}
-	}
-
-	/* Push any remaining items onto the unsorted list */
-	for (size_t i = 0; i < to_sort.size(); i++)
-	{
-		m_UnsortedCats.push_back(to_sort[i]);
-	}
-
-	m_bCatsNeedResort = false;
-}
-
-void TopMenu::CreatePlayers(int max_clients)
-{
-	m_max_clients = max_clients;
-	m_clients = (topmenu_player_t *)malloc(sizeof(topmenu_player_t) * (max_clients + 1));
-	memset(m_clients, 0, sizeof(topmenu_player_t) * (max_clients + 1));
-}
-
-void TopMenu::TearDownClient(topmenu_player_t *player)
-{
-	if (player->cats != NULL)
-	{
-		for (unsigned int i = 0; i < player->cat_count; i++)
-		{
-			topmenu_player_category_t *player_cat = &(player->cats[i]);
-			if (player_cat->menu != NULL)
-			{
-				player_cat->menu->Destroy();
-			}
-		}
-		delete [] player->cats;
-	}
-
-	if (player->root != NULL)
-	{
-		player->root->Destroy();
-	}
-
-	memset(player, 0, sizeof(topmenu_player_t));
-}
-
-bool TopMenu::LoadConfiguration(const char *file, char *error, size_t maxlength)
-{
-	SMCError err;
-	SMCStates states;
-
-	if ((err = textparsers->ParseFile_SMC(file, this, &states))
-		!= SMCError_Okay)
-	{
-		const char *err_string = textparsers->GetSMCErrorString(err);
-		if (!err_string)
-		{
-			err_string = "Unknown";
-		}
-
-		UTIL_Format(error, maxlength, "%s", err_string);
-
-		return false;
-	}
-
-	return true;
-}
-
-bool TopMenu::OnIdentityRemoval(IdentityToken_t *owner)
-{
-	/* First sweep the categories owned by us */
-	CVector<unsigned int> obj_list;
-	for (size_t i = 0; i < m_Categories.size(); i++)
-	{
-		if (m_Categories[i]->obj->owner == owner)
-		{
-			obj_list.push_back(m_Categories[i]->obj->object_id);
-		}
-	}
-
-	for (size_t i = 0; i < obj_list.size(); i++)
-	{
-		RemoveFromMenu(obj_list[i]);
-	}
-
-	/* Now we can look for actual items */
-	for (size_t i = 0; i < m_Objects.size(); i++)
-	{
-		if (m_Objects[i]->is_free)
-		{
-			continue;
-		}
-		if (m_Objects[i]->owner == owner)
-		{
-			assert(m_Objects[i]->type != TopMenuObject_Category);
-			RemoveFromMenu(m_Objects[i]->object_id);
-		}
-	}
-
-	return true;
-}
-
-#define PARSE_STATE_NONE		0
-#define PARSE_STATE_MAIN		1
-#define PARSE_STATE_CATEGORY	2
-unsigned int ignore_parse_level = 0;
-unsigned int current_parse_state = 0;
-config_category_t *cur_cat = NULL;
-
-void TopMenu::ReadSMC_ParseStart()
-{
-	current_parse_state = PARSE_STATE_NONE;
-	ignore_parse_level = 0;
-	cur_cat = NULL;
-
-	/* Reset the old config */
-	m_Config.strings.Reset();
-	for (size_t i = 0; i < m_Config.cats.size(); i++)
-	{
-		delete m_Config.cats[i];
-	}
-	m_Config.cats.clear();
-}
-
-SMCResult TopMenu::ReadSMC_NewSection(const SMCStates *states, const char *name)
-{
-	if (ignore_parse_level)
-	{
-		ignore_parse_level++;
-	}
-	else
-	{
-		if (current_parse_state == PARSE_STATE_NONE)
-		{
-			if (strcmp(name, "Menu") == 0)
-			{
-				current_parse_state = PARSE_STATE_MAIN;
-			}
-			else
-			{
-				ignore_parse_level = 1;
-			}
-		}
-		else if (current_parse_state == PARSE_STATE_MAIN)
-		{
-			cur_cat = new config_category_t;
-			cur_cat->name = m_Config.strings.AddString(name);
-			m_Config.cats.push_back(cur_cat);
-			current_parse_state = PARSE_STATE_CATEGORY;
-		}
-		else
-		{
-			ignore_parse_level = 1;
-		}
-	}
-
-	return SMCResult_Continue;
-}
-
-SMCResult TopMenu::ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value)
-{
-	if (ignore_parse_level > 0
-		|| current_parse_state != PARSE_STATE_CATEGORY
-		|| cur_cat == NULL)
-	{
-		return SMCResult_Continue;
-	}
-
-	if (strcmp(key, "item") == 0)
-	{
-		cur_cat->commands.push_back(m_Config.strings.AddString(value));
-	}
-
-	return SMCResult_Continue;
-}
-
-SMCResult TopMenu::ReadSMC_LeavingSection(const SMCStates *states)
-{
-	if (ignore_parse_level)
-	{
-		ignore_parse_level--;
-	}
-	else
-	{
-		if (current_parse_state == PARSE_STATE_CATEGORY)
-		{
-			cur_cat = NULL;
-			current_parse_state = PARSE_STATE_MAIN;
-		}
-		else if (current_parse_state == PARSE_STATE_MAIN)
-		{
-			current_parse_state = PARSE_STATE_NONE;
-		}
-	}
-
-	return SMCResult_Continue;
-}
-
-unsigned int TopMenu::FindCategory(const char *name)
-{
-	topmenu_object_t **p_obj = m_ObjLookup.retrieve(name);
-	if (!p_obj)
-	{
-		return 0;
-	}
-
-	topmenu_object_t *obj = *p_obj;
-	if (obj->type != TopMenuObject_Category)
-	{
-		return 0;
-	}
-
-	return obj->object_id;
-}
-
-int _SortObjectNamesDescending(const void *ptr1, const void *ptr2)
-{
-	obj_by_name_t *obj1 = (obj_by_name_t *)ptr1;
-	obj_by_name_t *obj2 = (obj_by_name_t *)ptr2;
-	return strcmp(obj1->name, obj2->name);
-}
-
-unsigned int strncopy(char *dest, const char *src, size_t count)
-{
-	if (!count)
-	{
-		return 0;
-	}
-
-	char *start = dest;
-	while ((*src) && (--count))
-	{
-		*dest++ = *src++;
-	}
-	*dest = '\0';
-
-	return (dest - start);
-}
-
-size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...)
-{
-	va_list ap;
-	va_start(ap, fmt);
-	size_t len = vsnprintf(buffer, maxlength, fmt, ap);
-	va_end(ap);
-
-	if (len >= maxlength)
-	{
-		buffer[maxlength - 1] = '\0';
-		return (maxlength - 1);
-	}
-	else
-	{
-		return len;
-	}
-}
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Sample Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include <stdlib.h>
+#include <stdarg.h>
+#include "TopMenu.h"
+
+struct obj_by_name_t
+{
+	unsigned int obj_index;
+	char name[64];
+};
+
+int _SortObjectNamesDescending(const void *ptr1, const void *ptr2);
+unsigned int strncopy(char *dest, const char *src, size_t count);
+size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...);
+
+TopMenu::TopMenu(ITopMenuObjectCallbacks *callbacks)
+{
+	m_clients = NULL;
+	m_SerialNo = 1;
+	m_pTitle = callbacks;
+	m_max_clients = 0;
+
+	if (playerhelpers->IsServerActivated())
+	{
+		CreatePlayers(playerhelpers->GetMaxClients());
+	}
+}
+
+TopMenu::~TopMenu()
+{
+	/* Delete all categories */
+	while (m_Categories.size())
+	{
+		RemoveFromMenu(m_Categories[0]->obj->object_id);
+	}
+
+	/* Remove all objects */
+	for (size_t i = 0; i < m_Objects.size(); i++)
+	{
+		assert(m_Objects[i]->is_free == true);
+		delete m_Objects[i];
+	}
+
+	m_pTitle->OnTopMenuObjectRemoved(this, 0);
+
+	/* Delete all cached config entries */
+	for (size_t i = 0; i < m_Config.cats.size(); i++)
+	{
+		delete m_Config.cats[i];
+	}
+
+	/* Sweep players */
+	for (size_t i = 0; i <= (size_t)m_max_clients; i++)
+	{
+		TearDownClient(&m_clients[i]);
+	}
+	delete [] m_clients;
+}
+
+void TopMenu::OnClientConnected(int client)
+{
+	if (m_clients == NULL)
+	{
+		return;
+	}
+
+	topmenu_player_t *player = &m_clients[client];
+	TearDownClient(player);
+}
+
+void TopMenu::OnClientDisconnected(int client)
+{
+	if (m_clients == NULL)
+	{
+		return;
+	}
+
+	topmenu_player_t *player = &m_clients[client];
+	TearDownClient(player);
+}
+
+void TopMenu::OnServerActivated(int max_clients)
+{
+	if (m_clients == NULL)
+	{
+		CreatePlayers(max_clients);
+	}
+}
+
+unsigned int TopMenu::AddToMenu(const char *name,
+								TopMenuObjectType type,
+								ITopMenuObjectCallbacks *callbacks,
+								IdentityToken_t *owner,
+								const char *cmdname,
+								FlagBits flags,
+								unsigned int parent)
+{
+	return AddToMenu2(name, type, callbacks, owner, cmdname, flags, parent, NULL);
+}
+
+unsigned int TopMenu::AddToMenu2(const char *name,
+								 TopMenuObjectType type,
+								 ITopMenuObjectCallbacks *callbacks,
+								 IdentityToken_t *owner,
+								 const char *cmdname,
+								 FlagBits flags,
+								 unsigned int parent,
+								 const char *info_string)
+{
+	/* Sanity checks */
+	if (type == TopMenuObject_Category && parent != 0)
+	{
+		return 0;
+	}
+	else if (type == TopMenuObject_Item && parent == 0)
+	{
+		return 0;
+	}
+	else if (m_ObjLookup.retrieve(name) != NULL)
+	{
+		return 0;
+	}
+	else if (type != TopMenuObject_Item && type != TopMenuObject_Category)
+	{
+		return 0;
+	}
+
+	/* If we're adding an item, make sure the parent is valid, 
+	 * and that the parent is a category.
+	 */
+	topmenu_object_t *parent_obj = NULL;
+	topmenu_category_t *parent_cat = NULL;
+	if (type == TopMenuObject_Item)
+	{
+		/* Check parent index.  Note it will be >= 1 here. */
+		if (parent > m_Objects.size() || m_Objects[parent - 1]->is_free)
+		{
+			return 0;
+		}
+		parent_obj = m_Objects[parent - 1];
+
+		/* Find an equivalent pointer in the category array. */
+		for (size_t i = 0; i < m_Categories.size(); i++)
+		{
+			if (m_Categories[i]->obj == parent_obj)
+			{
+				parent_cat = m_Categories[i];
+				break;
+			}
+		}
+
+		/* If none was found, leave. */
+		if (parent_cat == NULL)
+		{
+			return 0;
+		}
+	}
+
+	/* Re-use an old object pointer if we can. */
+	topmenu_object_t *obj = NULL;
+	for (size_t i = 0; i < m_Objects.size(); i++)
+	{
+		if (m_Objects[i]->is_free == true)
+		{
+			obj = m_Objects[i];
+			break;
+		}
+	}
+
+	/* Otherwise, allocate a new one. */
+	if (obj == NULL)
+	{
+		obj = new topmenu_object_t;
+		obj->object_id = ((unsigned int)m_Objects.size()) + 1;
+		m_Objects.push_back(obj);
+	}
+
+	/* Initialize the object's properties. */
+	obj->callbacks = callbacks;
+	obj->flags = flags;
+	obj->owner = owner;
+	obj->type = type;
+	obj->is_free = false;
+	obj->parent = parent_obj;
+	strncopy(obj->name, name, sizeof(obj->name));
+	strncopy(obj->cmdname, cmdname ? cmdname : "", sizeof(obj->cmdname));
+	strncopy(obj->info, info_string ? info_string : "", sizeof(obj->info));
+
+	if (obj->type == TopMenuObject_Category)
+	{
+		/* Create a new category entry */
+		topmenu_category_t *cat = new topmenu_category_t;
+		cat->obj = obj;
+		cat->reorder = false;
+		cat->serial = 1;
+
+		/* Add it, then update our serial change number. */
+		m_Categories.push_back(cat);
+		m_SerialNo++;
+
+		/* Updating sorting info */
+		m_bCatsNeedResort = true;
+	}
+	else if (obj->type == TopMenuObject_Item)
+	{
+		/* Update the category, mark it as needing changes */
+		parent_cat->obj_list.push_back(obj);
+		parent_cat->reorder = true;
+		parent_cat->serial++;
+
+		/* If the category just went from 0 to 1 items, mark it as 
+		 * changed, so clients get the category drawn.
+		 */
+		if (parent_cat->obj_list.size() == 1)
+		{
+			m_SerialNo++;
+		}
+	}
+
+	m_ObjLookup.insert(name, obj);
+
+	return obj->object_id;
+}
+
+const char *TopMenu::GetObjectInfoString(unsigned int object_id)
+{
+	if (object_id == 0 
+		|| object_id > m_Objects.size() 
+		|| m_Objects[object_id - 1]->is_free)
+	{
+		return NULL;
+	}
+
+	topmenu_object_t *obj = m_Objects[object_id - 1];
+
+	return obj->info;
+}
+
+const char *TopMenu::GetObjectName(unsigned int object_id)
+{
+	if (object_id == 0 
+		|| object_id > m_Objects.size() 
+		|| m_Objects[object_id - 1]->is_free)
+	{
+		return NULL;
+	}
+
+	topmenu_object_t *obj = m_Objects[object_id - 1];
+
+	return obj->name;
+}
+
+void TopMenu::RemoveFromMenu(unsigned int object_id)
+{
+	if (object_id == 0 
+		|| object_id > m_Objects.size() 
+		|| m_Objects[object_id - 1]->is_free)
+	{
+		return;
+	}
+
+	topmenu_object_t *obj = m_Objects[object_id - 1];
+
+	m_ObjLookup.remove(obj->name);
+
+	if (obj->type == TopMenuObject_Category)
+	{
+		/* Find it in the category list. */
+		for (size_t i = 0; i < m_Categories.size(); i++)
+		{
+			if (m_Categories[i]->obj == obj)
+			{
+				/* Mark all children as removed + free.  Note we could
+				 * call into RemoveMenuItem() for this, but it'd be very 
+				 * inefficient!
+				 */
+				topmenu_category_t *cat = m_Categories[i];
+				for (size_t j = 0; j < m_Categories[i]->obj_list.size(); j++)
+				{
+					cat->obj_list[j]->callbacks->OnTopMenuObjectRemoved(this, cat->obj_list[j]->object_id);
+					cat->obj_list[j]->is_free = true;
+				}
+				
+				/* Remove the category from the list, then delete it. */
+				m_Categories.erase(m_Categories.iterAt(i));
+				delete cat;
+				break;
+			}
+		}
+
+		/* Update the root as changed. */
+		m_SerialNo++;
+		m_bCatsNeedResort = true;
+	}
+	else if (obj->type == TopMenuObject_Item)
+	{
+		/* Find the category this item is in. */
+		topmenu_category_t *parent_cat = NULL;
+		for (size_t i = 0; i < m_Categories.size(); i++)
+		{
+			if (m_Categories[i]->obj == obj->parent)
+			{
+				parent_cat = m_Categories[i];
+				break;
+			}
+		}
+
+		/* Erase it from the category's lists. */
+		if (parent_cat)
+		{
+			for (size_t i = 0; i < parent_cat->obj_list.size(); i++)
+			{
+				if (parent_cat->obj_list[i] == obj)
+				{
+					parent_cat->obj_list.erase(parent_cat->obj_list.iterAt(i));
+
+					/* If this category now has no items, mark root as changed 
+					 * so clients won't get the category drawn anymore.
+					 */
+					if (parent_cat->obj_list.size() == 0)
+					{
+						m_SerialNo++;
+					}
+					break;
+				}
+			}
+
+			/* Update the category as changed. */
+			parent_cat->reorder = true;
+			parent_cat->serial++;
+		}
+	}
+
+	/* The callbacks pointer is still valid, so fire away! */
+	obj->callbacks->OnTopMenuObjectRemoved(this, object_id);
+
+	/* Finally, mark the object as free. */
+	obj->is_free = true;
+}
+
+bool TopMenu::DisplayMenu(int client, unsigned int hold_time, TopMenuPosition position)
+{
+	if (m_clients == NULL)
+	{
+		return false;
+	}
+
+	IGamePlayer *pPlayer = playerhelpers->GetGamePlayer(client);
+	if (!pPlayer->IsInGame())
+	{
+		return false;
+	}
+
+	UpdateClientRoot(client, pPlayer);
+
+	topmenu_player_t *pClient = &m_clients[client];
+	if (pClient->root == NULL)
+	{
+		return false;
+	}
+
+	bool return_value = false;
+
+	if (position == TopMenuPosition_LastCategory && 
+		pClient->last_category < m_Categories.size())
+	{
+		return_value = DisplayCategory(client, pClient->last_category, hold_time, true);
+		if (!return_value)
+		{
+			return_value = pClient->root->DisplayAtItem(client, hold_time, pClient->last_root_pos);
+		}
+	}
+	else if (position == TopMenuPosition_LastRoot)
+	{
+		pClient->root->DisplayAtItem(client, hold_time, pClient->last_root_pos);
+	}
+	else if (position == TopMenuPosition_Start)
+	{
+		pClient->last_position = 0;
+		pClient->last_category = 0;
+		return_value = pClient->root->Display(client, hold_time);
+	}
+
+	return return_value;
+}
+
+bool TopMenu::DisplayCategory(int client, unsigned int category, unsigned int hold_time, bool last_position)
+{
+	UpdateClientCategory(client, category);
+
+	topmenu_player_t *pClient = &m_clients[client];
+	if (category >= pClient->cat_count
+		|| pClient->cats[category].menu == NULL)
+	{
+		return false;
+	}
+
+	bool return_value = false;
+
+	topmenu_player_category_t *player_cat = &(pClient->cats[category]);
+
+	pClient->last_category = category;
+	if (last_position)
+	{
+		return_value = player_cat->menu->DisplayAtItem(client, hold_time, pClient->last_position);
+	}
+	else
+	{
+		return_value = player_cat->menu->Display(client, hold_time);
+	}
+
+	return return_value;
+}
+
+void TopMenu::OnMenuSelect2(IBaseMenu *menu, int client, unsigned int item, unsigned int item_on_page)
+{
+	const char *item_name = menu->GetItemInfo(item, NULL);
+	if (!item_name)
+	{
+		return;
+	}
+
+	topmenu_object_t *obj;
+	topmenu_player_t *pClient = &m_clients[client];
+	topmenu_object_t **pObject = m_ObjLookup.retrieve(item_name);
+	if (pObject == NULL)
+	{
+		return;
+	}
+
+	obj = *pObject;
+
+	/* We now have the object... what do we do with it? */
+	if (obj->type == TopMenuObject_Category)
+	{
+		/* If it's a category, the user wants to view it.. */
+		for (size_t i = 0; i < m_Categories.size(); i++)
+		{
+			if (m_Categories[i]->obj == obj)
+			{
+				pClient->last_root_pos = item_on_page;
+				if (!DisplayCategory(client, (unsigned int)i, MENU_TIME_FOREVER, false))
+				{
+					/* If we can't display the category, re-display the root menu */
+					DisplayMenu(client, MENU_TIME_FOREVER, TopMenuPosition_LastRoot);
+				}
+				break;
+			}
+		}
+	}
+	else
+	{
+		pClient->last_position = item_on_page;
+		
+		/* Re-check access in case this user had their credentials revoked */
+		if (obj->cmdname[0] != '\0' && !adminsys->CheckAccess(client, obj->cmdname, obj->flags, false))
+		{
+			DisplayMenu(client, 0, TopMenuPosition_LastCategory);
+			return;
+		}
+		
+		/* Pass the information on to the callback */
+		obj->callbacks->OnTopMenuSelectOption(this, client, obj->object_id);
+	}
+}
+
+void TopMenu::OnMenuDrawItem(IBaseMenu *menu, int client, unsigned int item, unsigned int &style)
+{
+	const char *item_name = menu->GetItemInfo(item, NULL);
+	if (!item_name)
+	{
+		return;
+	}
+
+	topmenu_object_t *obj;
+	topmenu_object_t **pObject = m_ObjLookup.retrieve(item_name);
+	if (pObject == NULL)
+	{
+		return;
+	}
+
+	obj = *pObject;
+
+	style = obj->callbacks->OnTopMenuDrawOption(this, client, obj->object_id);
+	if (style != ITEMDRAW_DEFAULT)
+	{
+		return;
+	}
+
+	if (obj->cmdname[0] == '\0')
+	{
+		return;
+	}
+
+	if (!adminsys->CheckAccess(client, obj->cmdname, obj->flags, false))
+	{
+		style = ITEMDRAW_IGNORE;
+	}
+}
+
+unsigned int TopMenu::OnMenuDisplayItem(IBaseMenu *menu,
+								int client,
+								IMenuPanel *panel,
+								unsigned int item,
+								const ItemDrawInfo &dr)
+{
+	const char *item_name = menu->GetItemInfo(item, NULL);
+	if (!item_name)
+	{
+		return 0;
+	}
+
+	topmenu_object_t *obj;
+	topmenu_object_t **pObject = m_ObjLookup.retrieve(item_name);
+	if (pObject == NULL)
+	{
+		return 0;
+	}
+
+	obj = *pObject;
+
+	/* Ask the object to render the text for this client */
+	char renderbuf[64];
+	obj->callbacks->OnTopMenuDisplayOption(this, client, obj->object_id, renderbuf, sizeof(renderbuf));
+
+	/* Build the new draw info */
+	ItemDrawInfo new_dr = dr;
+	new_dr.display = renderbuf;
+
+	/* Man I love the menu API.  Ask the panel to draw the item and give the position 
+	 * back to Core's renderer.  This way we don't have to worry about keeping the 
+	 * render buffer static!
+	 */
+	return panel->DrawItem(new_dr);
+}
+
+void TopMenu::OnMenuCancel(IBaseMenu *menu, int client, MenuCancelReason reason)
+{
+	if (reason == MenuCancel_ExitBack)
+	{
+		/* If the client chose exit back, they were on a category menu, and we can
+		 * now display the root menu from the last known position.
+		 */
+		DisplayMenu(client, 0, TopMenuPosition_LastRoot);
+	}
+}
+
+void TopMenu::UpdateClientRoot(int client, IGamePlayer *pGamePlayer)
+{
+	topmenu_player_t *pClient = &m_clients[client];
+	IGamePlayer *pPlayer = pGamePlayer ? pGamePlayer : playerhelpers->GetGamePlayer(client);
+
+	/* Determine if an update is necessary */
+	bool is_update_needed = false;
+	if (pClient->menu_serial != m_SerialNo)
+	{
+		is_update_needed = true;
+	}
+	else if (pPlayer->GetUserId() != pClient->user_id)
+	{
+		is_update_needed = true;
+	}
+
+	/* If no update is needed at the root level, just leave now */
+	if (!is_update_needed)
+	{
+		return;
+	}
+
+	/* First we need to flush the cache... */
+	TearDownClient(pClient);
+
+	/* Now, rebuild the category list, but don't create menus */
+	if (m_Categories.size() == 0)
+	{
+		pClient->cat_count = 0;
+		pClient->cats = NULL;
+	}
+	else
+	{
+		pClient->cat_count = (unsigned int)m_Categories.size();
+		pClient->cats = new topmenu_player_category_t[pClient->cat_count];
+		memset(pClient->cats, 0, sizeof(topmenu_player_category_t) * pClient->cat_count);
+	}
+
+	/* Re-sort the root categories if needed */
+	SortCategoriesIfNeeded();
+
+	/* Build the root menu */
+	IBaseMenu *root_menu = menus->GetDefaultStyle()->CreateMenu(this, myself->GetIdentity());
+
+	/* Add the sorted items */
+	for (size_t i = 0; i < m_SortedCats.size(); i++)
+	{
+		if (m_Categories[m_SortedCats[i]]->obj_list.size() == 0)
+		{
+			continue;
+		}
+		root_menu->AppendItem(m_Categories[m_SortedCats[i]]->obj->name, ItemDrawInfo(""));
+	}
+
+	/* Now we need to handle un-sorted items.  This is slightly trickier, as we need to 
+	 * pre-render each category name, and cache those names.  Phew!
+	 */
+	if (m_UnsortedCats.size())
+	{
+		obj_by_name_t *item_list = new obj_by_name_t[m_UnsortedCats.size()];
+		for (size_t i = 0; i < m_UnsortedCats.size(); i++)
+		{
+			obj_by_name_t *temp_obj = &item_list[i];
+			topmenu_object_t *obj = m_Categories[m_UnsortedCats[i]]->obj;
+			obj->callbacks->OnTopMenuDisplayOption(this,
+				client, 
+				obj->object_id,
+				temp_obj->name,
+				sizeof(temp_obj->name));
+			temp_obj->obj_index = m_UnsortedCats[i];
+		}
+
+		/* Sort our temp list */
+		qsort(item_list, m_UnsortedCats.size(), sizeof(obj_by_name_t), _SortObjectNamesDescending);
+
+		/* Add the new sorted categories */
+		for (size_t i = 0; i < m_UnsortedCats.size(); i++)
+		{
+			if (m_Categories[item_list[i].obj_index]->obj_list.size() == 0)
+			{
+				continue;
+			}
+			root_menu->AppendItem(m_Categories[item_list[i].obj_index]->obj->name, ItemDrawInfo(""));
+		}
+
+		delete [] item_list;
+	}
+
+	/* Set the menu's title */
+	char renderbuf[128];
+	m_pTitle->OnTopMenuDisplayTitle(this, client, 0, renderbuf, sizeof(renderbuf));
+	root_menu->SetDefaultTitle(renderbuf);
+
+	/* The client is now fully updated */
+	pClient->root = root_menu;
+	pClient->user_id = pPlayer->GetUserId();
+	pClient->menu_serial = m_SerialNo;
+	pClient->last_position = 0;
+	pClient->last_category = 0;
+	pClient->last_root_pos = 0;
+}
+
+void TopMenu::UpdateClientCategory(int client, unsigned int category)
+{
+	/* Update the client's root menu just in case it needs it.  This 
+	 * will validate that we have both a valid client and a valid
+	 * category structure for that client.
+	 */
+	UpdateClientRoot(client);
+
+	/* Now it's guaranteed that our category tables will be usable */
+	topmenu_player_t *pClient = &m_clients[client];
+	topmenu_category_t *cat = m_Categories[category];
+	topmenu_player_category_t *player_cat = &(pClient->cats[category]);
+
+	/* Does the category actually need updating? */
+	if (player_cat->serial == cat->serial)
+	{
+		return;
+	}
+
+	/* Destroy any existing menu */
+	if (player_cat->menu)
+	{
+		player_cat->menu->Destroy();
+		player_cat->menu = NULL;
+	}
+
+	if (pClient->last_category == category)
+	{
+		pClient->last_position = 0;
+	}
+
+	IBaseMenu *cat_menu = menus->GetDefaultStyle()->CreateMenu(this, myself->GetIdentity());
+	
+	/* Categories get an "exit back" button */
+	cat_menu->SetMenuOptionFlags(cat_menu->GetMenuOptionFlags() | MENUFLAG_BUTTON_EXITBACK);
+
+	/* Re-sort the category if needed */
+	SortCategoryIfNeeded(category);
+
+	/* Build the menu with the sorted items first */
+	for (size_t i = 0; i < cat->sorted.size(); i++)
+	{
+		cat_menu->AppendItem(cat->sorted[i]->name, ItemDrawInfo(""));
+	}
+
+	/* Now handle unsorted items */
+	if (cat->unsorted.size())
+	{
+		/* Build a list of the item names */
+		obj_by_name_t *item_list = new obj_by_name_t[cat->unsorted.size()];
+		for (size_t i = 0; i < cat->unsorted.size(); i++)
+		{
+			obj_by_name_t *item = &item_list[i];
+			topmenu_object_t *obj = cat->unsorted[i];
+			obj->callbacks->OnTopMenuDisplayOption(this,
+				client,
+				obj->object_id,
+				item->name,
+				sizeof(item->name));
+			item->obj_index = (unsigned int)i;
+		}
+
+		/* Sort the names */
+		qsort(item_list, cat->unsorted.size(), sizeof(obj_by_name_t), _SortObjectNamesDescending);
+
+		/* Add to the menu */
+		for (size_t i = 0; i < cat->unsorted.size(); i++)
+		{
+			cat_menu->AppendItem(cat->unsorted[item_list[i].obj_index]->name, ItemDrawInfo(""));
+		}
+
+		delete [] item_list;
+	}
+
+	/* Set the menu's title */
+	char renderbuf[128];
+	cat->obj->callbacks->OnTopMenuDisplayTitle(this, 
+		client, 
+		cat->obj->object_id, 
+		renderbuf, 
+		sizeof(renderbuf));
+	cat_menu->SetDefaultTitle(renderbuf);
+
+	/* We're done! */
+	player_cat->menu = cat_menu;
+	player_cat->serial = cat->serial;
+}
+
+void TopMenu::SortCategoryIfNeeded(unsigned int category)
+{
+	topmenu_category_t *cat = m_Categories[category];
+	if (!cat->reorder)
+	{
+		return;
+	}
+
+	cat->sorted.clear();
+	cat->unsorted.clear();
+
+	if (cat->obj_list.size() == 0)
+	{
+		cat->reorder = false;
+		return;
+	}
+
+	CVector<unsigned int> to_sort;
+	for (size_t i = 0; i < cat->obj_list.size(); i++)
+	{
+		to_sort.push_back(i);
+	}
+
+	/* Find a matching category in the configs */
+	config_category_t *config_cat = NULL; 
+	for (size_t i = 0; i < m_Config.cats.size(); i++)
+	{
+		if (strcmp(m_Config.strings.GetString(m_Config.cats[i]->name), cat->obj->name) == 0)
+		{
+			config_cat = m_Config.cats[i];
+			break;
+		}
+	}
+
+	/* If there is a matching category, build a pre-sorted item list */
+	if (config_cat != NULL)
+	{
+		/* Find matching objects in this category */
+		for (size_t i = 0; i < config_cat->commands.size(); i++)
+		{
+			const char *config_name = m_Config.strings.GetString(config_cat->commands[i]);
+			for (size_t j = 0; j < to_sort.size(); j++)
+			{
+				if (strcmp(config_name, cat->obj_list[to_sort[j]]->name) == 0)
+				{
+					/* Place in the final list, then remove from the temporary list */
+					cat->sorted.push_back(cat->obj_list[to_sort[j]]);
+					to_sort.erase(to_sort.iterAt(j));
+					break;
+				}
+			}
+		}
+	}
+
+	/* Push any remaining items onto the unsorted list */
+	for (size_t i = 0; i < to_sort.size(); i++)
+	{
+		cat->unsorted.push_back(cat->obj_list[to_sort[i]]);
+	}
+
+	cat->reorder = false;
+}
+
+void TopMenu::SortCategoriesIfNeeded()
+{
+	if (!m_bCatsNeedResort)
+	{
+		return;
+	}
+
+	/* Clear sort results */
+	m_SortedCats.clear();
+	m_UnsortedCats.clear();
+
+	if (m_Categories.size() == 0)
+	{
+		m_bCatsNeedResort = false;
+		return;
+	}
+
+	CVector<unsigned int> to_sort;
+	for (unsigned int i = 0; i < (unsigned int)m_Categories.size(); i++)
+	{
+		to_sort.push_back(i);
+	}
+
+	/* If we have any predefined categories, add them in as they appear. */
+	for (size_t i= 0; i < m_Config.cats.size(); i++)
+	{
+		/* Find this category and map it in if we can */
+		for (size_t j = 0; j < to_sort.size(); j++)
+		{
+			if (strcmp(m_Config.strings.GetString(m_Config.cats[i]->name), 
+					   m_Categories[to_sort[j]]->obj->name) == 0)
+			{
+				/* Add to the real list and remove from the temporary */
+				m_SortedCats.push_back(to_sort[j]);
+				to_sort.erase(to_sort.iterAt(j));
+				break;
+			}
+		}
+	}
+
+	/* Push any remaining items onto the unsorted list */
+	for (size_t i = 0; i < to_sort.size(); i++)
+	{
+		m_UnsortedCats.push_back(to_sort[i]);
+	}
+
+	m_bCatsNeedResort = false;
+}
+
+void TopMenu::CreatePlayers(int max_clients)
+{
+	m_max_clients = max_clients;
+	m_clients = (topmenu_player_t *)malloc(sizeof(topmenu_player_t) * (max_clients + 1));
+	memset(m_clients, 0, sizeof(topmenu_player_t) * (max_clients + 1));
+}
+
+void TopMenu::TearDownClient(topmenu_player_t *player)
+{
+	if (player->cats != NULL)
+	{
+		for (unsigned int i = 0; i < player->cat_count; i++)
+		{
+			topmenu_player_category_t *player_cat = &(player->cats[i]);
+			if (player_cat->menu != NULL)
+			{
+				player_cat->menu->Destroy();
+			}
+		}
+		delete [] player->cats;
+	}
+
+	if (player->root != NULL)
+	{
+		player->root->Destroy();
+	}
+
+	memset(player, 0, sizeof(topmenu_player_t));
+}
+
+bool TopMenu::LoadConfiguration(const char *file, char *error, size_t maxlength)
+{
+	SMCError err;
+	SMCStates states;
+
+	if ((err = textparsers->ParseFile_SMC(file, this, &states))
+		!= SMCError_Okay)
+	{
+		const char *err_string = textparsers->GetSMCErrorString(err);
+		if (!err_string)
+		{
+			err_string = "Unknown";
+		}
+
+		UTIL_Format(error, maxlength, "%s", err_string);
+
+		return false;
+	}
+
+	return true;
+}
+
+bool TopMenu::OnIdentityRemoval(IdentityToken_t *owner)
+{
+	/* First sweep the categories owned by us */
+	CVector<unsigned int> obj_list;
+	for (size_t i = 0; i < m_Categories.size(); i++)
+	{
+		if (m_Categories[i]->obj->owner == owner)
+		{
+			obj_list.push_back(m_Categories[i]->obj->object_id);
+		}
+	}
+
+	for (size_t i = 0; i < obj_list.size(); i++)
+	{
+		RemoveFromMenu(obj_list[i]);
+	}
+
+	/* Now we can look for actual items */
+	for (size_t i = 0; i < m_Objects.size(); i++)
+	{
+		if (m_Objects[i]->is_free)
+		{
+			continue;
+		}
+		if (m_Objects[i]->owner == owner)
+		{
+			assert(m_Objects[i]->type != TopMenuObject_Category);
+			RemoveFromMenu(m_Objects[i]->object_id);
+		}
+	}
+
+	return true;
+}
+
+#define PARSE_STATE_NONE		0
+#define PARSE_STATE_MAIN		1
+#define PARSE_STATE_CATEGORY	2
+unsigned int ignore_parse_level = 0;
+unsigned int current_parse_state = 0;
+config_category_t *cur_cat = NULL;
+
+void TopMenu::ReadSMC_ParseStart()
+{
+	current_parse_state = PARSE_STATE_NONE;
+	ignore_parse_level = 0;
+	cur_cat = NULL;
+
+	/* Reset the old config */
+	m_Config.strings.Reset();
+	for (size_t i = 0; i < m_Config.cats.size(); i++)
+	{
+		delete m_Config.cats[i];
+	}
+	m_Config.cats.clear();
+}
+
+SMCResult TopMenu::ReadSMC_NewSection(const SMCStates *states, const char *name)
+{
+	if (ignore_parse_level)
+	{
+		ignore_parse_level++;
+	}
+	else
+	{
+		if (current_parse_state == PARSE_STATE_NONE)
+		{
+			if (strcmp(name, "Menu") == 0)
+			{
+				current_parse_state = PARSE_STATE_MAIN;
+			}
+			else
+			{
+				ignore_parse_level = 1;
+			}
+		}
+		else if (current_parse_state == PARSE_STATE_MAIN)
+		{
+			cur_cat = new config_category_t;
+			cur_cat->name = m_Config.strings.AddString(name);
+			m_Config.cats.push_back(cur_cat);
+			current_parse_state = PARSE_STATE_CATEGORY;
+		}
+		else
+		{
+			ignore_parse_level = 1;
+		}
+	}
+
+	return SMCResult_Continue;
+}
+
+SMCResult TopMenu::ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value)
+{
+	if (ignore_parse_level > 0
+		|| current_parse_state != PARSE_STATE_CATEGORY
+		|| cur_cat == NULL)
+	{
+		return SMCResult_Continue;
+	}
+
+	if (strcmp(key, "item") == 0)
+	{
+		cur_cat->commands.push_back(m_Config.strings.AddString(value));
+	}
+
+	return SMCResult_Continue;
+}
+
+SMCResult TopMenu::ReadSMC_LeavingSection(const SMCStates *states)
+{
+	if (ignore_parse_level)
+	{
+		ignore_parse_level--;
+	}
+	else
+	{
+		if (current_parse_state == PARSE_STATE_CATEGORY)
+		{
+			cur_cat = NULL;
+			current_parse_state = PARSE_STATE_MAIN;
+		}
+		else if (current_parse_state == PARSE_STATE_MAIN)
+		{
+			current_parse_state = PARSE_STATE_NONE;
+		}
+	}
+
+	return SMCResult_Continue;
+}
+
+unsigned int TopMenu::FindCategory(const char *name)
+{
+	topmenu_object_t **p_obj = m_ObjLookup.retrieve(name);
+	if (!p_obj)
+	{
+		return 0;
+	}
+
+	topmenu_object_t *obj = *p_obj;
+	if (obj->type != TopMenuObject_Category)
+	{
+		return 0;
+	}
+
+	return obj->object_id;
+}
+
+int _SortObjectNamesDescending(const void *ptr1, const void *ptr2)
+{
+	obj_by_name_t *obj1 = (obj_by_name_t *)ptr1;
+	obj_by_name_t *obj2 = (obj_by_name_t *)ptr2;
+	return strcmp(obj1->name, obj2->name);
+}
+
+unsigned int strncopy(char *dest, const char *src, size_t count)
+{
+	if (!count)
+	{
+		return 0;
+	}
+
+	char *start = dest;
+	while ((*src) && (--count))
+	{
+		*dest++ = *src++;
+	}
+	*dest = '\0';
+
+	return (dest - start);
+}
+
+size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...)
+{
+	va_list ap;
+	va_start(ap, fmt);
+	size_t len = vsnprintf(buffer, maxlength, fmt, ap);
+	va_end(ap);
+
+	if (len >= maxlength)
+	{
+		buffer[maxlength - 1] = '\0';
+		return (maxlength - 1);
+	}
+	else
+	{
+		return len;
+	}
+}
diff --git a/extensions/topmenus/TopMenu.h b/extensions/topmenus/TopMenu.h
index 1c80f25b..c4c0ec86 100644
--- a/extensions/topmenus/TopMenu.h
+++ b/extensions/topmenus/TopMenu.h
@@ -1,178 +1,179 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation.  You must obey the GNU General Public License in
- * all respects for all other code used.  Additionally, AlliedModders LLC grants
- * this exception to all derivative works.  AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or <http://www.sourcemod.net/license.php>.
- *
- * Version: $Id$
- */
-
-#ifndef _INCLUDE_SOURCEMOD_TOP_MENU_H_
-#define _INCLUDE_SOURCEMOD_TOP_MENU_H_
-
-#include <sh_list.h>
-#include <sh_vector.h>
-#include <sm_trie_tpl.h>
-#include <ITopMenus.h>
-#include "smsdk_ext.h"
-#include "sm_memtable.h"
-
-using namespace SourceHook;
-using namespace SourceMod;
-
-struct config_category_t
-{
-	int name;
-	CVector<int> commands;
-};
-
-struct config_root_t
-{
-	config_root_t() : strings(1024)
-	{
-	}
-	BaseStringTable strings;
-	CVector<config_category_t *> cats;
-};
-
-struct topmenu_object_t
-{
-	char name[64];						/** Name */
-	char cmdname[64];					/** Command name */ 
-	FlagBits flags;						/** Admin flags */
-	ITopMenuObjectCallbacks *callbacks;	/** Callbacks */
-	IdentityToken_t *owner;				/** Owner */
-	unsigned int object_id;				/** Object ID */
-	topmenu_object_t *parent;			/** Parent, if any */
-	TopMenuObjectType type;				/** Object Type */
-	bool is_free;						/** Free or not? */
-	char info[255];						/** Info string */
-};
-
-struct topmenu_category_t
-{
-	CVector<topmenu_object_t *> obj_list;	/** Full object list */
-	CVector<topmenu_object_t *> sorted;		/** Sorted items */
-	CVector<topmenu_object_t *> unsorted;	/** Unsorted items */
-	topmenu_object_t *obj;					/** Bound object */
-	unsigned int serial;					/** Serial number */
-	bool reorder;							/** Whether ordering needs updating */
-};
-
-struct topmenu_player_category_t
-{
-	IBaseMenu *menu;					/** menu pointer */
-	unsigned int serial;				/** last known serial */
-};
-
-struct topmenu_player_t
-{
-	int user_id;						/** userid on server */
-	unsigned int menu_serial;			/** menu serial no */
-	IBaseMenu *root;					/** root menu display */
-	topmenu_player_category_t *cats;	/** category display */
-	unsigned int cat_count;				/** number of categories */
-	unsigned int last_category;			/** last category they selected */
-	unsigned int last_position;			/** last position in that category */
-	unsigned int last_root_pos;			/** last page in the root menu */
-};
-
-class TopMenu : 
-	public ITopMenu,
-	public IMenuHandler,
-	public ITextListener_SMC
-{
-	friend class TopMenuManager;
-public:
-	TopMenu(ITopMenuObjectCallbacks *callbacks);
-	~TopMenu();
-public: //ITopMenu
-	virtual unsigned int AddToMenu(const char *name,
-		TopMenuObjectType type,
-		ITopMenuObjectCallbacks *callbacks,
-		IdentityToken_t *owner,
-		const char *cmdname,
-		FlagBits flags,
-		unsigned int parent);
-	unsigned int AddToMenu2(const char *name,
-		TopMenuObjectType type,
-		ITopMenuObjectCallbacks *callbacks,
-		IdentityToken_t *owner,
-		const char *cmdname,
-		FlagBits flags,
-		unsigned int parent,
-		const char *info_string);
-	virtual void RemoveFromMenu(unsigned int object_id);
-	virtual bool DisplayMenu(int client, 
-		unsigned int hold_time, 
-		TopMenuPosition position);
-	virtual bool LoadConfiguration(const char *file, char *error, size_t maxlength);
-	virtual unsigned int FindCategory(const char *name);
-	const char *GetObjectInfoString(unsigned int object_id);
-public: //IMenuHandler
-	virtual void OnMenuSelect2(IBaseMenu *menu, int client, unsigned int item, unsigned int item_on_page);
-	virtual void OnMenuDrawItem(IBaseMenu *menu, int client, unsigned int item, unsigned int &style);
-	virtual unsigned int OnMenuDisplayItem(IBaseMenu *menu, 
-		int client, 
-		IMenuPanel *panel,
-		unsigned int item, 
-		const ItemDrawInfo &dr);
-	virtual void OnMenuCancel(IBaseMenu *menu, int client, MenuCancelReason reason);
-public: //ITextListener_SMC
-	void ReadSMC_ParseStart();
-	SMCResult ReadSMC_NewSection(const SMCStates *states, const char *name);
-	SMCResult ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value);
-	SMCResult ReadSMC_LeavingSection(const SMCStates *states);
-private:
-	void SortCategoriesIfNeeded();
-	void SortCategoryIfNeeded(unsigned int category);
-private:
-	bool DisplayCategory(int client, unsigned int category, unsigned int hold_time, bool last_position);
-	void CreatePlayers(int max_clients);
-	void UpdateClientRoot(int client, IGamePlayer *pGamePlayer=NULL);
-	void UpdateClientCategory(int client, unsigned int category);
-	void TearDownClient(topmenu_player_t *player);
-private:
-	void OnClientConnected(int client);
-	void OnClientDisconnected(int client);
-	void OnServerActivated(int max_clients);
-	bool OnIdentityRemoval(IdentityToken_t *owner);
-private:
-	config_root_t m_Config;					/* Configuration from file */
-	topmenu_player_t *m_clients;			/* Client array */
-	CVector<unsigned int> m_SortedCats;		/* Sorted categories */
-	CVector<unsigned int> m_UnsortedCats;	/* Un-sorted categories */
-	CVector<topmenu_category_t *> m_Categories; /* Category array */
-	CVector<topmenu_object_t *> m_Objects;	/* Object array */
-	KTrie<topmenu_object_t *> m_ObjLookup;	/* Object lookup trie */
-	unsigned int m_SerialNo;				/* Serial number for updating */
-	ITopMenuObjectCallbacks *m_pTitle;		/* Title callbacks */
-	int m_max_clients;						/* Maximum number of clients */
-	bool m_bCatsNeedResort;					/* True if categories need a resort */
-};
-
-unsigned int strncopy(char *dest, const char *src, size_t count);
-
-#endif //_INCLUDE_SOURCEMOD_TOP_MENU_H_
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Sample Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#ifndef _INCLUDE_SOURCEMOD_TOP_MENU_H_
+#define _INCLUDE_SOURCEMOD_TOP_MENU_H_
+
+#include <sh_list.h>
+#include <sh_vector.h>
+#include <sm_trie_tpl.h>
+#include <ITopMenus.h>
+#include "smsdk_ext.h"
+#include "sm_memtable.h"
+
+using namespace SourceHook;
+using namespace SourceMod;
+
+struct config_category_t
+{
+	int name;
+	CVector<int> commands;
+};
+
+struct config_root_t
+{
+	config_root_t() : strings(1024)
+	{
+	}
+	BaseStringTable strings;
+	CVector<config_category_t *> cats;
+};
+
+struct topmenu_object_t
+{
+	char name[64];						/** Name */
+	char cmdname[64];					/** Command name */ 
+	FlagBits flags;						/** Admin flags */
+	ITopMenuObjectCallbacks *callbacks;	/** Callbacks */
+	IdentityToken_t *owner;				/** Owner */
+	unsigned int object_id;				/** Object ID */
+	topmenu_object_t *parent;			/** Parent, if any */
+	TopMenuObjectType type;				/** Object Type */
+	bool is_free;						/** Free or not? */
+	char info[255];						/** Info string */
+};
+
+struct topmenu_category_t
+{
+	CVector<topmenu_object_t *> obj_list;	/** Full object list */
+	CVector<topmenu_object_t *> sorted;		/** Sorted items */
+	CVector<topmenu_object_t *> unsorted;	/** Unsorted items */
+	topmenu_object_t *obj;					/** Bound object */
+	unsigned int serial;					/** Serial number */
+	bool reorder;							/** Whether ordering needs updating */
+};
+
+struct topmenu_player_category_t
+{
+	IBaseMenu *menu;					/** menu pointer */
+	unsigned int serial;				/** last known serial */
+};
+
+struct topmenu_player_t
+{
+	int user_id;						/** userid on server */
+	unsigned int menu_serial;			/** menu serial no */
+	IBaseMenu *root;					/** root menu display */
+	topmenu_player_category_t *cats;	/** category display */
+	unsigned int cat_count;				/** number of categories */
+	unsigned int last_category;			/** last category they selected */
+	unsigned int last_position;			/** last position in that category */
+	unsigned int last_root_pos;			/** last page in the root menu */
+};
+
+class TopMenu : 
+	public ITopMenu,
+	public IMenuHandler,
+	public ITextListener_SMC
+{
+	friend class TopMenuManager;
+public:
+	TopMenu(ITopMenuObjectCallbacks *callbacks);
+	~TopMenu();
+public: //ITopMenu
+	virtual unsigned int AddToMenu(const char *name,
+		TopMenuObjectType type,
+		ITopMenuObjectCallbacks *callbacks,
+		IdentityToken_t *owner,
+		const char *cmdname,
+		FlagBits flags,
+		unsigned int parent);
+	unsigned int AddToMenu2(const char *name,
+		TopMenuObjectType type,
+		ITopMenuObjectCallbacks *callbacks,
+		IdentityToken_t *owner,
+		const char *cmdname,
+		FlagBits flags,
+		unsigned int parent,
+		const char *info_string);
+	virtual void RemoveFromMenu(unsigned int object_id);
+	virtual bool DisplayMenu(int client, 
+		unsigned int hold_time, 
+		TopMenuPosition position);
+	virtual bool LoadConfiguration(const char *file, char *error, size_t maxlength);
+	virtual unsigned int FindCategory(const char *name);
+	const char *GetObjectInfoString(unsigned int object_id);
+	const char *GetObjectName(unsigned int object_id);
+public: //IMenuHandler
+	virtual void OnMenuSelect2(IBaseMenu *menu, int client, unsigned int item, unsigned int item_on_page);
+	virtual void OnMenuDrawItem(IBaseMenu *menu, int client, unsigned int item, unsigned int &style);
+	virtual unsigned int OnMenuDisplayItem(IBaseMenu *menu, 
+		int client, 
+		IMenuPanel *panel,
+		unsigned int item, 
+		const ItemDrawInfo &dr);
+	virtual void OnMenuCancel(IBaseMenu *menu, int client, MenuCancelReason reason);
+public: //ITextListener_SMC
+	void ReadSMC_ParseStart();
+	SMCResult ReadSMC_NewSection(const SMCStates *states, const char *name);
+	SMCResult ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value);
+	SMCResult ReadSMC_LeavingSection(const SMCStates *states);
+private:
+	void SortCategoriesIfNeeded();
+	void SortCategoryIfNeeded(unsigned int category);
+private:
+	bool DisplayCategory(int client, unsigned int category, unsigned int hold_time, bool last_position);
+	void CreatePlayers(int max_clients);
+	void UpdateClientRoot(int client, IGamePlayer *pGamePlayer=NULL);
+	void UpdateClientCategory(int client, unsigned int category);
+	void TearDownClient(topmenu_player_t *player);
+private:
+	void OnClientConnected(int client);
+	void OnClientDisconnected(int client);
+	void OnServerActivated(int max_clients);
+	bool OnIdentityRemoval(IdentityToken_t *owner);
+private:
+	config_root_t m_Config;					/* Configuration from file */
+	topmenu_player_t *m_clients;			/* Client array */
+	CVector<unsigned int> m_SortedCats;		/* Sorted categories */
+	CVector<unsigned int> m_UnsortedCats;	/* Un-sorted categories */
+	CVector<topmenu_category_t *> m_Categories; /* Category array */
+	CVector<topmenu_object_t *> m_Objects;	/* Object array */
+	KTrie<topmenu_object_t *> m_ObjLookup;	/* Object lookup trie */
+	unsigned int m_SerialNo;				/* Serial number for updating */
+	ITopMenuObjectCallbacks *m_pTitle;		/* Title callbacks */
+	int m_max_clients;						/* Maximum number of clients */
+	bool m_bCatsNeedResort;					/* True if categories need a resort */
+};
+
+unsigned int strncopy(char *dest, const char *src, size_t count);
+
+#endif //_INCLUDE_SOURCEMOD_TOP_MENU_H_
diff --git a/extensions/topmenus/smn_topmenus.cpp b/extensions/topmenus/smn_topmenus.cpp
index 4799b9fd..42cc17fa 100644
--- a/extensions/topmenus/smn_topmenus.cpp
+++ b/extensions/topmenus/smn_topmenus.cpp
@@ -1,358 +1,383 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation.  You must obey the GNU General Public License in
- * all respects for all other code used.  Additionally, AlliedModders LLC grants
- * this exception to all derivative works.  AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or <http://www.sourcemod.net/license.php>.
- *
- * Version: $Id$
- */
-
-#include "extension.h"
-#include "TopMenuManager.h"
-#include "TopMenu.h"
-
-HandleType_t hTopMenuType;
-
-class TopMenuHandle : public IHandleTypeDispatch
-{
-public: 
-	void OnHandleDestroy(HandleType_t type, void *object)
-	{
-		ITopMenu *pTopMenu = (ITopMenu *)object;
-		g_TopMenus.DestroyTopMenu(pTopMenu);
-	}
-} s_TopMenuHandle;
-
-void Initialize_Natives()
-{
-	hTopMenuType = handlesys->CreateType("ITopMenu",
-		&s_TopMenuHandle,
-		0,
-		NULL,
-		NULL,
-		myself->GetIdentity(),
-		NULL);
-}
-
-void Shutdown_Natives()
-{
-	handlesys->RemoveType(hTopMenuType, myself->GetIdentity());
-}
-
-enum TopMenuAction
-{
-	TopMenuAction_DisplayOption = 0,
-	TopMenuAction_DisplayTitle = 1,
-	TopMenuAction_SelectOption = 2,
-	TopMenuAction_DrawOption = 3,
-	TopMenuAction_RemoveObject = 4,
-};
-
-class TopMenuCallbacks : public ITopMenuObjectCallbacks
-{
-public:
-	TopMenuCallbacks(IPluginFunction *pFunction) : m_pFunction(pFunction)
-	{		
-	}
-
-	unsigned int OnTopMenuDrawOption(ITopMenu *menu,
-		int client,
-		unsigned int object_id)
-	{
-		char buffer[2] = {ITEMDRAW_DEFAULT, 0x0};
-		m_pFunction->PushCell(m_hMenuHandle);
-		m_pFunction->PushCell(TopMenuAction_DrawOption);
-		m_pFunction->PushCell(object_id);
-		m_pFunction->PushCell(client);
-		m_pFunction->PushStringEx(buffer, sizeof(buffer), SM_PARAM_STRING_COPY, SM_PARAM_COPYBACK);
-		m_pFunction->PushCell(sizeof(buffer));
-		m_pFunction->Execute(NULL);
-		return (unsigned int)buffer[0];
-	}
-
-	void OnTopMenuDisplayOption(ITopMenu *menu,
-		int client, 
-		unsigned int object_id,
-		char buffer[], 
-		size_t maxlength)
-	{
-		m_pFunction->PushCell(m_hMenuHandle);
-		m_pFunction->PushCell(TopMenuAction_DisplayOption);
-		m_pFunction->PushCell(object_id);
-		m_pFunction->PushCell(client);
-		m_pFunction->PushStringEx(buffer, maxlength, 0, SM_PARAM_COPYBACK);
-		m_pFunction->PushCell(maxlength);
-		m_pFunction->Execute(NULL);
-	}
-
-	void OnTopMenuDisplayTitle(ITopMenu *menu,
-		int client,
-		unsigned int object_id,
-		char buffer[],
-		size_t maxlength)
-	{
-		m_pFunction->PushCell(m_hMenuHandle);
-		m_pFunction->PushCell(TopMenuAction_DisplayTitle);
-		m_pFunction->PushCell(object_id);
-		m_pFunction->PushCell(client);
-		m_pFunction->PushStringEx(buffer, maxlength, 0, SM_PARAM_COPYBACK);
-		m_pFunction->PushCell(maxlength);
-		m_pFunction->Execute(NULL);
-	}
-
-	void OnTopMenuSelectOption(ITopMenu *menu, 
-		int client, 
-		unsigned int object_id)
-	{
-		unsigned int old_reply = playerhelpers->SetReplyTo(SM_REPLY_CHAT);
-		m_pFunction->PushCell(m_hMenuHandle);
-		m_pFunction->PushCell(TopMenuAction_SelectOption);
-		m_pFunction->PushCell(object_id);
-		m_pFunction->PushCell(client);
-		m_pFunction->PushString("");
-		m_pFunction->PushCell(0);
-		m_pFunction->Execute(NULL);
-		playerhelpers->SetReplyTo(old_reply);
-	}
-
-	void OnTopMenuObjectRemoved(ITopMenu *menu, unsigned int object_id)
-	{
-		m_pFunction->PushCell(m_hMenuHandle);
-		m_pFunction->PushCell(TopMenuAction_RemoveObject);
-		m_pFunction->PushCell(object_id);
-		m_pFunction->PushCell(0);
-		m_pFunction->PushString("");
-		m_pFunction->PushCell(0);
-		m_pFunction->Execute(NULL);
-
-		delete this;
-	}
-
-	Handle_t m_hMenuHandle;
-	IPluginFunction *m_pFunction;
-};
-
-static cell_t CreateTopMenu(IPluginContext *pContext, const cell_t *params)
-{
-	IPluginFunction *func = pContext->GetFunctionById(params[1]);
-	if (func == NULL)
-	{
-		return pContext	->ThrowNativeError("Invalid function specified");
-	}
-
-	TopMenuCallbacks *cb = new TopMenuCallbacks(func);
-
-	ITopMenu *pMenu = g_TopMenus.CreateTopMenu(cb);
-
-	if (!pMenu)
-	{
-		delete cb;
-		return BAD_HANDLE;
-	}
-
-	Handle_t hndl = handlesys->CreateHandle(hTopMenuType, 
-		pMenu,
-		pContext->GetIdentity(),
-		myself->GetIdentity(),
-		NULL);
-	if (hndl == 0)
-	{
-		g_TopMenus.DestroyTopMenu(pMenu);
-		return BAD_HANDLE;
-	}
-
-	cb->m_hMenuHandle = hndl;
-
-	return hndl;
-}
-
-static cell_t LoadTopMenuConfig(IPluginContext *pContext, const cell_t *params)
-{
-	HandleError err;
-	ITopMenu *pMenu;
-	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
-
-	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
-		!= HandleError_None)
-	{
-		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
-	}
-
-	char *file, *err_buf;
-	pContext->LocalToString(params[2], &file);
-	pContext->LocalToString(params[3], &err_buf);
-
-	char path[PLATFORM_MAX_PATH];
-	g_pSM->BuildPath(Path_Game, path, sizeof(path), "%s", file);
-
-	return pMenu->LoadConfiguration(path, err_buf, params[4]) ? 1 : 0;
-}
-
-static cell_t AddToTopMenu(IPluginContext *pContext, const cell_t *params)
-{
-	HandleError err;
-	ITopMenu *pMenu;
-	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
-
-	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
-		!= HandleError_None)
-	{
-		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
-	}
-
-	IPluginFunction *func = pContext->GetFunctionById(params[4]);
-	if (func == NULL)
-	{
-		return pContext	->ThrowNativeError("Invalid function specified");
-	}
-
-	TopMenuCallbacks *cb = new TopMenuCallbacks(func);
-
-	char *name, *cmdname, *info_string = NULL;
-	pContext->LocalToString(params[2], &name);
-	pContext->LocalToString(params[6], &cmdname);
-
-	if (params[0] >= 8)
-	{
-		pContext->LocalToString(params[8], &info_string);
-	}
-
-	TopMenuObjectType obj_type = (TopMenuObjectType)params[3];
-	
-	unsigned int object_id;
-	if ((object_id = pMenu->AddToMenu2(name,
-		obj_type,
-		cb,
-		pContext->GetIdentity(),
-		cmdname,
-		params[7], 
-		params[5],
-		info_string)) == 0)
-	{
-		delete cb;
-		return 0;
-	}
-
-	cb->m_hMenuHandle = params[1];
-
-	return object_id;
-}
-
-static cell_t RemoveFromTopMenu(IPluginContext *pContext, const cell_t *params)
-{
-	HandleError err;
-	ITopMenu *pMenu;
-	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
-
-	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
-		!= HandleError_None)
-	{
-		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
-	}
-
-	pMenu->RemoveFromMenu(params[2]);
-
-	return 1;
-}
-
-static cell_t FindTopMenuCategory(IPluginContext *pContext, const cell_t *params)
-{
-	HandleError err;
-	ITopMenu *pMenu;
-	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
-
-	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
-		!= HandleError_None)
-	{
-		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
-	}
-
-	char *name;
-	pContext->LocalToString(params[2], &name);
-
-	return pMenu->FindCategory(name);
-}
-
-static cell_t DisplayTopMenu(IPluginContext *pContext, const cell_t *params)
-{
-	HandleError err;
-	ITopMenu *pMenu;
-	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
-
-	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
-		!= HandleError_None)
-	{
-		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
-	}
-
-	int client = params[2];
-	IGamePlayer *player = playerhelpers->GetGamePlayer(client);
-	if (!player)
-	{
-		return pContext->ThrowNativeError("Invalid client index %d", client);
-	}
-	else if (!player->IsInGame())
-	{
-		return pContext->ThrowNativeError("Client %d is not in game", client);
-	}
-
-	return pMenu->DisplayMenu(client, 0, (TopMenuPosition)params[3]);
-}
-
-static cell_t GetTopMenuInfoString(IPluginContext *pContext, const cell_t *params)
-{
-	HandleError err;
-	ITopMenu *pMenu;
-	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
-
-	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
-		!= HandleError_None)
-	{
-		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
-	}
-
-	const char *str;
-	if ((str = pMenu->GetObjectInfoString(params[2])) == NULL)
-	{
-		return pContext->ThrowNativeError("Invalid menu object %d", params[2]);
-	}
-
-	char *buffer;
-	pContext->LocalToString(params[3], &buffer);
-
-	return strncopy(buffer, str, params[4]);
-}
-
-sp_nativeinfo_t g_TopMenuNatives[] = 
-{
-	{"AddToTopMenu",			AddToTopMenu},
-	{"CreateTopMenu",			CreateTopMenu},
-	{"DisplayTopMenu",			DisplayTopMenu},
-	{"LoadTopMenuConfig",		LoadTopMenuConfig},
-	{"RemoveFromTopMenu",		RemoveFromTopMenu},
-	{"FindTopMenuCategory",		FindTopMenuCategory},
-	{"GetTopMenuInfoString",	GetTopMenuInfoString},
-	{NULL,					NULL},
-};
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Sample Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include "extension.h"
+#include "TopMenuManager.h"
+#include "TopMenu.h"
+
+HandleType_t hTopMenuType;
+
+class TopMenuHandle : public IHandleTypeDispatch
+{
+public: 
+	void OnHandleDestroy(HandleType_t type, void *object)
+	{
+		ITopMenu *pTopMenu = (ITopMenu *)object;
+		g_TopMenus.DestroyTopMenu(pTopMenu);
+	}
+} s_TopMenuHandle;
+
+void Initialize_Natives()
+{
+	hTopMenuType = handlesys->CreateType("ITopMenu",
+		&s_TopMenuHandle,
+		0,
+		NULL,
+		NULL,
+		myself->GetIdentity(),
+		NULL);
+}
+
+void Shutdown_Natives()
+{
+	handlesys->RemoveType(hTopMenuType, myself->GetIdentity());
+}
+
+enum TopMenuAction
+{
+	TopMenuAction_DisplayOption = 0,
+	TopMenuAction_DisplayTitle = 1,
+	TopMenuAction_SelectOption = 2,
+	TopMenuAction_DrawOption = 3,
+	TopMenuAction_RemoveObject = 4,
+};
+
+class TopMenuCallbacks : public ITopMenuObjectCallbacks
+{
+public:
+	TopMenuCallbacks(IPluginFunction *pFunction) : m_pFunction(pFunction)
+	{		
+	}
+
+	unsigned int OnTopMenuDrawOption(ITopMenu *menu,
+		int client,
+		unsigned int object_id)
+	{
+		char buffer[2] = {ITEMDRAW_DEFAULT, 0x0};
+		m_pFunction->PushCell(m_hMenuHandle);
+		m_pFunction->PushCell(TopMenuAction_DrawOption);
+		m_pFunction->PushCell(object_id);
+		m_pFunction->PushCell(client);
+		m_pFunction->PushStringEx(buffer, sizeof(buffer), SM_PARAM_STRING_COPY, SM_PARAM_COPYBACK);
+		m_pFunction->PushCell(sizeof(buffer));
+		m_pFunction->Execute(NULL);
+		return (unsigned int)buffer[0];
+	}
+
+	void OnTopMenuDisplayOption(ITopMenu *menu,
+		int client, 
+		unsigned int object_id,
+		char buffer[], 
+		size_t maxlength)
+	{
+		m_pFunction->PushCell(m_hMenuHandle);
+		m_pFunction->PushCell(TopMenuAction_DisplayOption);
+		m_pFunction->PushCell(object_id);
+		m_pFunction->PushCell(client);
+		m_pFunction->PushStringEx(buffer, maxlength, 0, SM_PARAM_COPYBACK);
+		m_pFunction->PushCell(maxlength);
+		m_pFunction->Execute(NULL);
+	}
+
+	void OnTopMenuDisplayTitle(ITopMenu *menu,
+		int client,
+		unsigned int object_id,
+		char buffer[],
+		size_t maxlength)
+	{
+		m_pFunction->PushCell(m_hMenuHandle);
+		m_pFunction->PushCell(TopMenuAction_DisplayTitle);
+		m_pFunction->PushCell(object_id);
+		m_pFunction->PushCell(client);
+		m_pFunction->PushStringEx(buffer, maxlength, 0, SM_PARAM_COPYBACK);
+		m_pFunction->PushCell(maxlength);
+		m_pFunction->Execute(NULL);
+	}
+
+	void OnTopMenuSelectOption(ITopMenu *menu, 
+		int client, 
+		unsigned int object_id)
+	{
+		unsigned int old_reply = playerhelpers->SetReplyTo(SM_REPLY_CHAT);
+		m_pFunction->PushCell(m_hMenuHandle);
+		m_pFunction->PushCell(TopMenuAction_SelectOption);
+		m_pFunction->PushCell(object_id);
+		m_pFunction->PushCell(client);
+		m_pFunction->PushString("");
+		m_pFunction->PushCell(0);
+		m_pFunction->Execute(NULL);
+		playerhelpers->SetReplyTo(old_reply);
+	}
+
+	void OnTopMenuObjectRemoved(ITopMenu *menu, unsigned int object_id)
+	{
+		m_pFunction->PushCell(m_hMenuHandle);
+		m_pFunction->PushCell(TopMenuAction_RemoveObject);
+		m_pFunction->PushCell(object_id);
+		m_pFunction->PushCell(0);
+		m_pFunction->PushString("");
+		m_pFunction->PushCell(0);
+		m_pFunction->Execute(NULL);
+
+		delete this;
+	}
+
+	Handle_t m_hMenuHandle;
+	IPluginFunction *m_pFunction;
+};
+
+static cell_t CreateTopMenu(IPluginContext *pContext, const cell_t *params)
+{
+	IPluginFunction *func = pContext->GetFunctionById(params[1]);
+	if (func == NULL)
+	{
+		return pContext	->ThrowNativeError("Invalid function specified");
+	}
+
+	TopMenuCallbacks *cb = new TopMenuCallbacks(func);
+
+	ITopMenu *pMenu = g_TopMenus.CreateTopMenu(cb);
+
+	if (!pMenu)
+	{
+		delete cb;
+		return BAD_HANDLE;
+	}
+
+	Handle_t hndl = handlesys->CreateHandle(hTopMenuType, 
+		pMenu,
+		pContext->GetIdentity(),
+		myself->GetIdentity(),
+		NULL);
+	if (hndl == 0)
+	{
+		g_TopMenus.DestroyTopMenu(pMenu);
+		return BAD_HANDLE;
+	}
+
+	cb->m_hMenuHandle = hndl;
+
+	return hndl;
+}
+
+static cell_t LoadTopMenuConfig(IPluginContext *pContext, const cell_t *params)
+{
+	HandleError err;
+	ITopMenu *pMenu;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
+	}
+
+	char *file, *err_buf;
+	pContext->LocalToString(params[2], &file);
+	pContext->LocalToString(params[3], &err_buf);
+
+	char path[PLATFORM_MAX_PATH];
+	g_pSM->BuildPath(Path_Game, path, sizeof(path), "%s", file);
+
+	return pMenu->LoadConfiguration(path, err_buf, params[4]) ? 1 : 0;
+}
+
+static cell_t AddToTopMenu(IPluginContext *pContext, const cell_t *params)
+{
+	HandleError err;
+	ITopMenu *pMenu;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
+	}
+
+	IPluginFunction *func = pContext->GetFunctionById(params[4]);
+	if (func == NULL)
+	{
+		return pContext	->ThrowNativeError("Invalid function specified");
+	}
+
+	TopMenuCallbacks *cb = new TopMenuCallbacks(func);
+
+	char *name, *cmdname, *info_string = NULL;
+	pContext->LocalToString(params[2], &name);
+	pContext->LocalToString(params[6], &cmdname);
+
+	if (params[0] >= 8)
+	{
+		pContext->LocalToString(params[8], &info_string);
+	}
+
+	TopMenuObjectType obj_type = (TopMenuObjectType)params[3];
+	
+	unsigned int object_id;
+	if ((object_id = pMenu->AddToMenu2(name,
+		obj_type,
+		cb,
+		pContext->GetIdentity(),
+		cmdname,
+		params[7], 
+		params[5],
+		info_string)) == 0)
+	{
+		delete cb;
+		return 0;
+	}
+
+	cb->m_hMenuHandle = params[1];
+
+	return object_id;
+}
+
+static cell_t RemoveFromTopMenu(IPluginContext *pContext, const cell_t *params)
+{
+	HandleError err;
+	ITopMenu *pMenu;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
+	}
+
+	pMenu->RemoveFromMenu(params[2]);
+
+	return 1;
+}
+
+static cell_t FindTopMenuCategory(IPluginContext *pContext, const cell_t *params)
+{
+	HandleError err;
+	ITopMenu *pMenu;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
+	}
+
+	char *name;
+	pContext->LocalToString(params[2], &name);
+
+	return pMenu->FindCategory(name);
+}
+
+static cell_t DisplayTopMenu(IPluginContext *pContext, const cell_t *params)
+{
+	HandleError err;
+	ITopMenu *pMenu;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
+	}
+
+	int client = params[2];
+	IGamePlayer *player = playerhelpers->GetGamePlayer(client);
+	if (!player)
+	{
+		return pContext->ThrowNativeError("Invalid client index %d", client);
+	}
+	else if (!player->IsInGame())
+	{
+		return pContext->ThrowNativeError("Client %d is not in game", client);
+	}
+
+	return pMenu->DisplayMenu(client, 0, (TopMenuPosition)params[3]);
+}
+
+static cell_t GetTopMenuInfoString(IPluginContext *pContext, const cell_t *params)
+{
+	HandleError err;
+	ITopMenu *pMenu;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
+	}
+
+	const char *str;
+	if ((str = pMenu->GetObjectInfoString(params[2])) == NULL)
+	{
+		return pContext->ThrowNativeError("Invalid menu object %d", params[2]);
+	}
+
+	char *buffer;
+	pContext->LocalToString(params[3], &buffer);
+
+	return strncopy(buffer, str, params[4]);
+}
+
+static cell_t GetTopMenuName(IPluginContext *pContext, const cell_t *params)
+{
+	HandleError err;
+	ITopMenu *pMenu;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
+	}
+
+	const char *str;
+	if ((str = pMenu->GetObjectName(params[2])) == NULL)
+	{
+		return pContext->ThrowNativeError("Invalid menu object %d", params[2]);
+	}
+
+	char *buffer;
+	pContext->LocalToString(params[3], &buffer);
+
+	return strncopy(buffer, str, params[4]);
+}
+
+sp_nativeinfo_t g_TopMenuNatives[] = 
+{
+	{"AddToTopMenu",			AddToTopMenu},
+	{"CreateTopMenu",			CreateTopMenu},
+	{"DisplayTopMenu",			DisplayTopMenu},
+	{"LoadTopMenuConfig",		LoadTopMenuConfig},
+	{"RemoveFromTopMenu",		RemoveFromTopMenu},
+	{"FindTopMenuCategory",		FindTopMenuCategory},
+	{"GetTopMenuInfoString",	GetTopMenuInfoString},
+	{"GetTopMenuName",			GetTopMenuName},
+	{NULL,					NULL},
+};
diff --git a/plugins/include/topmenus.inc b/plugins/include/topmenus.inc
index e3dc823f..049b8b62 100644
--- a/plugins/include/topmenus.inc
+++ b/plugins/include/topmenus.inc
@@ -1,277 +1,290 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
- * =============================================================================
- *
- * This file is part of the SourceMod/SourcePawn SDK.
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation.  You must obey the GNU General Public License in
- * all respects for all other code used.  Additionally, AlliedModders LLC grants
- * this exception to all derivative works.  AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or <http://www.sourcemod.net/license.php>.
- *
- * Version: $Id$
- */
- 
-#if defined _topmenus_included
- #endinput
-#endif
-#define _topmenus_included
-
-#include <menus>
-
-/**
- * Actions a top menu will take on an object.
- */
-enum TopMenuAction
-{
-	/**
-	 * An option is being drawn for a menu (or for sorting purposes).
-	 *
-	 * INPUT : TopMenu Handle, object ID, client index.
-	 * OUTPUT: Buffer for rendering, maxlength of buffer.
-	 */
-	TopMenuAction_DisplayOption = 0,
-	
-	/**
-	 * The title of a menu is being drawn for a given object.
-	 *
-	 * Note: The Object ID will be INVALID_TOPMENUOBJECT if drawing the 
-	 * root title.  Otherwise, the Object ID is a category.
-	 *
-	 * INPUT : TopMenu Handle, object ID, client index.
-	 * OUTPUT: Buffer for rendering, maxlength of buffer.
-	 */
-	TopMenuAction_DisplayTitle = 1,
-	
-	/**
-	 * A menu option has been selected.
-	 *
-	 * The Object ID will always be an item (not a category).
-	 *
-	 * INPUT : TopMenu Handle, object ID, client index.
-	 */
-	TopMenuAction_SelectOption = 2,
-
-	/**
-	 * A menu option is being drawn and its flags can be overridden.
-	 *
-	 * INPUT : TopMenu Handle, object ID, client index.
-	 * OUTPUT: The first byte of the 'buffer' string should be set 
-	 *		   to the desired flags.  By default, it will contain
-	 *		   ITEMDRAW_DEFAULT.
-	 */
-	 TopMenuAction_DrawOption = 3,
-	 
-	/**
-	 * Called when an object is being removed from the menu.
-	 * This can be used to clean up data stored in the info string.
-	 *
-	 * INPUT : TopMenu Handle, object ID.
-	 */
-	 TopMenuAction_RemoveObject = 4,
-};
-
-/**
- * Top menu object types.
- */
-enum TopMenuObjectType
-{
-	TopMenuObject_Category = 0,			/**< Category (sub-menu branching from root) */
-	TopMenuObject_Item = 1				/**< Item on a sub-menu */
-};
-
-/**
- * Top menu starting positions for display.
- */
-enum TopMenuPosition
-{
-	TopMenuPosition_Start = 0,			/**< Start/root of the menu */
-	TopMenuPosition_LastRoot = 1,		/**< Last position in the root menu */
-	TopMenuPosition_LastCategory = 3,	/**< Last position in their last category */
-};
-
-/**
- * Top menu object tag for type checking.
- */
-enum TopMenuObject
-{
-	INVALID_TOPMENUOBJECT = 0,
-}
-
-/**
- * TopMenu callback prototype.
- *
- * @param topmenu			Handle to the TopMenu.
- * @param action			TopMenuAction being performed.
- * @param object_id			The object ID (if used).
- * @param param				Extra parameter (if used).
- * @param buffer			Output buffer (if used).
- * @param maxlength			Output buffer (if used).
- * @noreturn
- */
-functag TopMenuHandler public(Handle:topmenu, 
-							  TopMenuAction:action,
-							  TopMenuObject:object_id,
-							  param,
-							  String:buffer[],
-							  maxlength);
-
-/**
- * Creates a TopMenu.
- *
- * @param handler			Handler to use for drawing the root title.
- * @return					A new TopMenu Handle, or INVALID_HANDLE on failure.
- */						  
-native Handle:CreateTopMenu(TopMenuHandler:handler);
-
-/**
- * Re-sorts the items in a TopMenu via a configuration file.
- *
- * The format of the configuration file should be a Valve Key-Values 
- * formatted file that SourceMod can parse.  There should be one root 
- * section, and one sub-section for each category.  Each sub-section's 
- * name should match the category name.
- *
- * Each sub-section may only contain key/value pairs in the form of:
- * key: "item"
- * value: Name of the item as passed to AddToTopMenu().
- *
- * The TopMenu will draw items in the order declared in the configuration 
- * file.  If items do not appear in the configuration file, they are sorted 
- * per-player based on how the handler function renders for that player.  
- * These items appear after the configuration sorted items.
- *
- * @param topmenu			TopMenu Handle.
- * @param file				File path.
- * @param error				Error buffer.
- * @param maxlength			Maximum size of the error buffer.
- *							Error buffer will be filled with a 
- *							zero-terminated string if false is 
- *							returned.
- * @return					True on success, false on failure.
- * @error					Invalid TopMenu Handle.
- */
-native bool:LoadTopMenuConfig(Handle:topmenu, const String:file[], String:error[], maxlength);
-
-/**
- * Adds an object to a TopMenu.
- *
- * @param topmenu			TopMenu Handle.
- * @param name				Object name (MUST be unique).
- * @param type				Object type.
- * @param handler			Handler for object.
- * @param cmdname			Command name (for access overrides).
- * @param flags				Default access flags.
- * @param parent			Parent object ID, or INVALID_TOPMENUOBJECT for none.
- *							Items must have a category parent.
- *							Categories must not have a parent.
- * @param info_string		Arbitrary storage (max 255 bytes).
- * @return					A new TopMenuObject ID, or INVALID_TOPMENUOBJECT on
- *							failure.
- * @error					Invalid TopMenu Handle.
- */
-native TopMenuObject:AddToTopMenu(Handle:topmenu,
-								  const String:name[],
-								  TopMenuObjectType:type,
-								  TopMenuHandler:handler,
-								  TopMenuObject:parent,
-								  const String:cmdname[]="",
-								  flags=0,
-								  const String:info_string[]="");
-								  
-/**
- * Retrieves the info string of a top menu item.
- *
- * @param topmenu			TopMenu Handle.
- * @param object			TopMenuObject ID.
- * @param buffer			Buffer to store info string.
- * @param maxlength			Maximum size of info string.
- * @return					Number of bytes written, not including the 
- *							null terminator.
- * @error					Invalid TopMenu Handle or TopMenuObject ID.
- */
-native GetTopMenuInfoString(Handle:topmenu, TopMenuObject:parent, String:buffer[], maxlength);
-
-/**
- * Removes an object from a TopMenu.
- *
- * Plugins' objects are automatically removed all TopMenus when the given 
- * plugin unloads or pauses.  In the case of unpausing, all items are restored.
- *
- * @param topmenu			TopMenu Handle.
- * @param object			TopMenuObject ID.
- * @noreturn
- * @error					Invalid TopMenu Handle.
- */
-native RemoveFromTopMenu(Handle:topmenu, TopMenuObject:object);
-
-/**
- * Displays a TopMenu to a client.
- *
- * @param topmenu			TopMenu Handle.
- * @param client			Client index.
- * @param position			Position to display from.
- * @return					True on success, false on failure.
- * @error					Invalid TopMenu Handle or client not in game.
- */
-native bool:DisplayTopMenu(Handle:topmenu, client, TopMenuPosition:position);
-
-/**
- * Finds a category's object ID in a TopMenu.
- *
- * @param topmenu			TopMenu Handle.
- * @param name				Object's unique name.
- * @return					TopMenuObject ID on success, or 
- *							INVALID_TOPMENUOBJECT on failure.
- * @error					Invalid TopMenu Handle.
- */
-native TopMenuObject:FindTopMenuCategory(Handle:topmenu, const String:name[]);
-
-/**
- * Do not edit below this line!
- */
-public Extension:__ext_topmenus = 
-{
-	name = "TopMenus",
-	file = "topmenus.ext",
-#if defined AUTOLOAD_EXTENSIONS
-	autoload = 1,
-#else
-	autoload = 0,
-#endif
-#if defined REQUIRE_EXTENSIONS
-	required = 1,
-#else
-	required = 0,
-#endif
-};
-
-#if !defined REQUIRE_EXTENSIONS
-public __ext_topmenus_SetNTVOptional()
-{
-	MarkNativeAsOptional("CreateTopMenu");
-	MarkNativeAsOptional("LoadTopMenuConfig");
-	MarkNativeAsOptional("AddToTopMenu");
-	MarkNativeAsOptional("RemoveFromTopMenu");
-	MarkNativeAsOptional("DisplayTopMenu");
-	MarkNativeAsOptional("FindTopMenuCategory");
-}
-#endif
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This file is part of the SourceMod/SourcePawn SDK.
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+ 
+#if defined _topmenus_included
+ #endinput
+#endif
+#define _topmenus_included
+
+#include <menus>
+
+/**
+ * Actions a top menu will take on an object.
+ */
+enum TopMenuAction
+{
+	/**
+	 * An option is being drawn for a menu (or for sorting purposes).
+	 *
+	 * INPUT : TopMenu Handle, object ID, client index.
+	 * OUTPUT: Buffer for rendering, maxlength of buffer.
+	 */
+	TopMenuAction_DisplayOption = 0,
+	
+	/**
+	 * The title of a menu is being drawn for a given object.
+	 *
+	 * Note: The Object ID will be INVALID_TOPMENUOBJECT if drawing the 
+	 * root title.  Otherwise, the Object ID is a category.
+	 *
+	 * INPUT : TopMenu Handle, object ID, client index.
+	 * OUTPUT: Buffer for rendering, maxlength of buffer.
+	 */
+	TopMenuAction_DisplayTitle = 1,
+	
+	/**
+	 * A menu option has been selected.
+	 *
+	 * The Object ID will always be an item (not a category).
+	 *
+	 * INPUT : TopMenu Handle, object ID, client index.
+	 */
+	TopMenuAction_SelectOption = 2,
+
+	/**
+	 * A menu option is being drawn and its flags can be overridden.
+	 *
+	 * INPUT : TopMenu Handle, object ID, client index.
+	 * OUTPUT: The first byte of the 'buffer' string should be set 
+	 *		   to the desired flags.  By default, it will contain
+	 *		   ITEMDRAW_DEFAULT.
+	 */
+	 TopMenuAction_DrawOption = 3,
+	 
+	/**
+	 * Called when an object is being removed from the menu.
+	 * This can be used to clean up data stored in the info string.
+	 *
+	 * INPUT : TopMenu Handle, object ID.
+	 */
+	 TopMenuAction_RemoveObject = 4,
+};
+
+/**
+ * Top menu object types.
+ */
+enum TopMenuObjectType
+{
+	TopMenuObject_Category = 0,			/**< Category (sub-menu branching from root) */
+	TopMenuObject_Item = 1				/**< Item on a sub-menu */
+};
+
+/**
+ * Top menu starting positions for display.
+ */
+enum TopMenuPosition
+{
+	TopMenuPosition_Start = 0,			/**< Start/root of the menu */
+	TopMenuPosition_LastRoot = 1,		/**< Last position in the root menu */
+	TopMenuPosition_LastCategory = 3,	/**< Last position in their last category */
+};
+
+/**
+ * Top menu object tag for type checking.
+ */
+enum TopMenuObject
+{
+	INVALID_TOPMENUOBJECT = 0,
+}
+
+/**
+ * TopMenu callback prototype.
+ *
+ * @param topmenu			Handle to the TopMenu.
+ * @param action			TopMenuAction being performed.
+ * @param object_id			The object ID (if used).
+ * @param param				Extra parameter (if used).
+ * @param buffer			Output buffer (if used).
+ * @param maxlength			Output buffer (if used).
+ * @noreturn
+ */
+functag TopMenuHandler public(Handle:topmenu, 
+							  TopMenuAction:action,
+							  TopMenuObject:object_id,
+							  param,
+							  String:buffer[],
+							  maxlength);
+
+/**
+ * Creates a TopMenu.
+ *
+ * @param handler			Handler to use for drawing the root title.
+ * @return					A new TopMenu Handle, or INVALID_HANDLE on failure.
+ */						  
+native Handle:CreateTopMenu(TopMenuHandler:handler);
+
+/**
+ * Re-sorts the items in a TopMenu via a configuration file.
+ *
+ * The format of the configuration file should be a Valve Key-Values 
+ * formatted file that SourceMod can parse.  There should be one root 
+ * section, and one sub-section for each category.  Each sub-section's 
+ * name should match the category name.
+ *
+ * Each sub-section may only contain key/value pairs in the form of:
+ * key: "item"
+ * value: Name of the item as passed to AddToTopMenu().
+ *
+ * The TopMenu will draw items in the order declared in the configuration 
+ * file.  If items do not appear in the configuration file, they are sorted 
+ * per-player based on how the handler function renders for that player.  
+ * These items appear after the configuration sorted items.
+ *
+ * @param topmenu			TopMenu Handle.
+ * @param file				File path.
+ * @param error				Error buffer.
+ * @param maxlength			Maximum size of the error buffer.
+ *							Error buffer will be filled with a 
+ *							zero-terminated string if false is 
+ *							returned.
+ * @return					True on success, false on failure.
+ * @error					Invalid TopMenu Handle.
+ */
+native bool:LoadTopMenuConfig(Handle:topmenu, const String:file[], String:error[], maxlength);
+
+/**
+ * Adds an object to a TopMenu.
+ *
+ * @param topmenu			TopMenu Handle.
+ * @param name				Object name (MUST be unique).
+ * @param type				Object type.
+ * @param handler			Handler for object.
+ * @param cmdname			Command name (for access overrides).
+ * @param flags				Default access flags.
+ * @param parent			Parent object ID, or INVALID_TOPMENUOBJECT for none.
+ *							Items must have a category parent.
+ *							Categories must not have a parent.
+ * @param info_string		Arbitrary storage (max 255 bytes).
+ * @return					A new TopMenuObject ID, or INVALID_TOPMENUOBJECT on
+ *							failure.
+ * @error					Invalid TopMenu Handle.
+ */
+native TopMenuObject:AddToTopMenu(Handle:topmenu,
+								  const String:name[],
+								  TopMenuObjectType:type,
+								  TopMenuHandler:handler,
+								  TopMenuObject:parent,
+								  const String:cmdname[]="",
+								  flags=0,
+								  const String:info_string[]="");
+								  
+/**
+ * Retrieves the info string of a top menu item.
+ *
+ * @param topmenu			TopMenu Handle.
+ * @param object			TopMenuObject ID.
+ * @param buffer			Buffer to store info string.
+ * @param maxlength			Maximum size of info string.
+ * @return					Number of bytes written, not including the 
+ *							null terminator.
+ * @error					Invalid TopMenu Handle or TopMenuObject ID.
+ */
+native GetTopMenuInfoString(Handle:topmenu, TopMenuObject:parent, String:buffer[], maxlength);
+
+/**
+ * Retrieves the name string of a top menu item.
+ *
+ * @param topmenu			TopMenu Handle.
+ * @param object			TopMenuObject ID.
+ * @param buffer			Buffer to store info string.
+ * @param maxlength			Maximum size of info string.
+ * @return					Number of bytes written, not including the 
+ *							null terminator.
+ * @error					Invalid TopMenu Handle or TopMenuObject ID.
+ */
+native GetTopMenuName(Handle:topmenu, TopMenuObject:parent, String:buffer[], maxlength);
+
+/**
+ * Removes an object from a TopMenu.
+ *
+ * Plugins' objects are automatically removed all TopMenus when the given 
+ * plugin unloads or pauses.  In the case of unpausing, all items are restored.
+ *
+ * @param topmenu			TopMenu Handle.
+ * @param object			TopMenuObject ID.
+ * @noreturn
+ * @error					Invalid TopMenu Handle.
+ */
+native RemoveFromTopMenu(Handle:topmenu, TopMenuObject:object);
+
+/**
+ * Displays a TopMenu to a client.
+ *
+ * @param topmenu			TopMenu Handle.
+ * @param client			Client index.
+ * @param position			Position to display from.
+ * @return					True on success, false on failure.
+ * @error					Invalid TopMenu Handle or client not in game.
+ */
+native bool:DisplayTopMenu(Handle:topmenu, client, TopMenuPosition:position);
+
+/**
+ * Finds a category's object ID in a TopMenu.
+ *
+ * @param topmenu			TopMenu Handle.
+ * @param name				Object's unique name.
+ * @return					TopMenuObject ID on success, or 
+ *							INVALID_TOPMENUOBJECT on failure.
+ * @error					Invalid TopMenu Handle.
+ */
+native TopMenuObject:FindTopMenuCategory(Handle:topmenu, const String:name[]);
+
+/**
+ * Do not edit below this line!
+ */
+public Extension:__ext_topmenus = 
+{
+	name = "TopMenus",
+	file = "topmenus.ext",
+#if defined AUTOLOAD_EXTENSIONS
+	autoload = 1,
+#else
+	autoload = 0,
+#endif
+#if defined REQUIRE_EXTENSIONS
+	required = 1,
+#else
+	required = 0,
+#endif
+};
+
+#if !defined REQUIRE_EXTENSIONS
+public __ext_topmenus_SetNTVOptional()
+{
+	MarkNativeAsOptional("CreateTopMenu");
+	MarkNativeAsOptional("LoadTopMenuConfig");
+	MarkNativeAsOptional("AddToTopMenu");
+	MarkNativeAsOptional("RemoveFromTopMenu");
+	MarkNativeAsOptional("DisplayTopMenu");
+	MarkNativeAsOptional("FindTopMenuCategory");
+}
+#endif

From 4aa9ae379fcb7d108dfc452f700a05a23d255545 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 20 Nov 2007 02:24:10 +0000
Subject: [PATCH 025/263] renamed the new native

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401706
---
 extensions/topmenus/smn_topmenus.cpp | 2 +-
 plugins/include/topmenus.inc         | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/extensions/topmenus/smn_topmenus.cpp b/extensions/topmenus/smn_topmenus.cpp
index 42cc17fa..98575ec7 100644
--- a/extensions/topmenus/smn_topmenus.cpp
+++ b/extensions/topmenus/smn_topmenus.cpp
@@ -378,6 +378,6 @@ sp_nativeinfo_t g_TopMenuNatives[] =
 	{"RemoveFromTopMenu",		RemoveFromTopMenu},
 	{"FindTopMenuCategory",		FindTopMenuCategory},
 	{"GetTopMenuInfoString",	GetTopMenuInfoString},
-	{"GetTopMenuName",			GetTopMenuName},
+	{"GetTopMenuObjName",		GetTopMenuName},
 	{NULL,					NULL},
 };
diff --git a/plugins/include/topmenus.inc b/plugins/include/topmenus.inc
index 049b8b62..a59f2fa0 100644
--- a/plugins/include/topmenus.inc
+++ b/plugins/include/topmenus.inc
@@ -221,7 +221,7 @@ native GetTopMenuInfoString(Handle:topmenu, TopMenuObject:parent, String:buffer[
  *							null terminator.
  * @error					Invalid TopMenu Handle or TopMenuObject ID.
  */
-native GetTopMenuName(Handle:topmenu, TopMenuObject:parent, String:buffer[], maxlength);
+native GetTopMenuObjName(Handle:topmenu, TopMenuObject:object, String:buffer[], maxlength);
 
 /**
  * Removes an object from a TopMenu.

From fa3f1991ff93f2de1eaa768bcfc4412f75a85aa9 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Tue, 20 Nov 2007 03:02:11 +0000
Subject: [PATCH 026/263] Added sort functions for ADT Arrays, see sorting.inc

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401707
---
 core/CellArray.h              |   7 ++
 core/smn_sorting.cpp          | 137 +++++++++++++++++++++++++++++++
 plugins/include/sorting.inc   |  45 +++++++++++
 plugins/testsuite/sorttest.sp | 147 +++++++++++++++++++++++++++++++++-
 4 files changed, 334 insertions(+), 2 deletions(-)

diff --git a/core/CellArray.h b/core/CellArray.h
index 39e9197b..c9ee2831 100644
--- a/core/CellArray.h
+++ b/core/CellArray.h
@@ -32,6 +32,8 @@
 #include <malloc.h>
 #include <string.h>
 
+extern HandleType_t htCellArray;
+
 class CellArray
 {
 public:
@@ -149,6 +151,11 @@ public:
 		return array;
 	}
 
+	cell_t *base()
+	{
+		return m_Data;
+	}
+
 private:
 	bool GrowIfNeeded(size_t count)
 	{
diff --git a/core/smn_sorting.cpp b/core/smn_sorting.cpp
index f78bff74..9bf9426d 100644
--- a/core/smn_sorting.cpp
+++ b/core/smn_sorting.cpp
@@ -33,6 +33,8 @@
 #include <IHandleSys.h>
 #include <stdlib.h>
 #include <string.h>
+#include "HandleSys.h"
+#include "CellArray.h"
 
 /***********************************
  *   About the double array hack   *
@@ -373,6 +375,139 @@ static cell_t sm_SortCustom2D(IPluginContext *pContext, const cell_t *params)
 	return 1;
 }
 
+enum SortType
+{
+	Sort_Integer = 0,
+	Sort_Float,
+	Sort_String,
+};
+
+int sort_adtarray_strings_asc(const void *str1, const void *str2)
+{
+	return strcmp((char *) str1, (char *) str2);
+}
+
+int sort_adtarray_strings_desc(const void *str1, const void *str2)
+{
+	return strcmp((char *) str2, (char *) str1);
+}
+
+static cell_t sm_SortADTArray(IPluginContext *pContext, const cell_t *params)
+{
+	CellArray *cArray;
+	HandleError err;
+	HandleSecurity sec(pContext->GetIdentity(), g_pCoreIdent);
+
+	if ((err = g_HandleSys.ReadHandle(params[1], htCellArray, &sec, (void **)&cArray)) 
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
+	}
+
+	cell_t order = params[2];
+	cell_t type = params[3];
+	size_t arraysize = cArray->size();
+	size_t blocksize = cArray->blocksize();
+	cell_t *array = cArray->base();
+
+	if (type == Sort_Integer)
+	{
+		if (order == Sort_Ascending)
+		{
+			qsort(array, arraysize, blocksize * sizeof(cell_t), sort_ints_asc);
+		}
+		else
+		{
+			qsort(array, arraysize, blocksize * sizeof(cell_t), sort_ints_desc);
+		}
+	}
+	else if (type == Sort_Float)
+	{
+		if (type == Sort_Ascending)
+		{
+			qsort(array, arraysize, blocksize * sizeof(cell_t), sort_floats_asc);
+		}
+		else 
+		{
+			qsort(array, arraysize, blocksize * sizeof(cell_t), sort_floats_desc);
+		}
+	}
+	else if (type == Sort_String)
+	{
+		if (type == Sort_Ascending)
+		{
+			qsort(array, arraysize, blocksize * sizeof(cell_t), sort_adtarray_strings_asc);
+		}
+		else 
+		{
+			qsort(array, arraysize, blocksize * sizeof(cell_t), sort_adtarray_strings_desc);
+		}
+	}
+
+	return 1;
+}
+
+struct sort_infoADT
+{
+	IPluginFunction *pFunc;
+	cell_t *array_base;
+	cell_t array_bsize;
+	Handle_t array_hndl;
+	Handle_t hndl;
+};
+
+sort_infoADT g_SortInfoADT;
+
+int sort_adtarray_custom(const void *elem1, const void *elem2)
+{
+	cell_t result = 0;
+	IPluginFunction *pf = g_SortInfoADT.pFunc;
+	pf->PushCell(((cell_t) ((cell_t *) elem1 - g_SortInfoADT.array_base)) / g_SortInfoADT.array_bsize);
+	pf->PushCell(((cell_t) ((cell_t *) elem2 - g_SortInfoADT.array_base)) / g_SortInfoADT.array_bsize);
+	pf->PushCell(g_SortInfoADT.array_hndl);
+	pf->PushCell(g_SortInfoADT.hndl);
+	pf->Execute(&result);
+
+	return result;
+}
+
+static cell_t sm_SortADTArrayCustom(IPluginContext *pContext, const cell_t *params)
+{
+	CellArray *cArray;
+	HandleError err;
+	HandleSecurity sec(pContext->GetIdentity(), g_pCoreIdent);
+
+	if ((err = g_HandleSys.ReadHandle(params[1], htCellArray, &sec, (void **)&cArray)) 
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
+	}
+
+	IPluginFunction *pFunction = pContext->GetFunctionById(params[2]);
+	if (!pFunction)
+	{
+		return pContext->ThrowNativeError("Function %x is not a valid function", params[2]);
+	}
+
+	size_t arraysize = cArray->size();
+	size_t blocksize = cArray->blocksize();
+	cell_t *array = cArray->base();
+
+	sort_infoADT oldinfo = g_SortInfoADT;
+
+	g_SortInfoADT.pFunc = pFunction;
+	g_SortInfoADT.array_base = array;
+	g_SortInfoADT.array_bsize = (cell_t) blocksize;
+	g_SortInfoADT.array_hndl = params[1];
+	g_SortInfoADT.hndl = params[3];
+	
+	qsort(array, arraysize, blocksize * sizeof(cell_t), sort_adtarray_custom);
+
+	g_SortInfoADT = oldinfo;
+
+	return 1;
+}
+
 REGISTER_NATIVES(sortNatives)
 {
 	{"SortIntegers",			sm_SortIntegers},
@@ -380,5 +515,7 @@ REGISTER_NATIVES(sortNatives)
 	{"SortStrings",				sm_SortStrings},
 	{"SortCustom1D",			sm_SortCustom1D},
 	{"SortCustom2D",			sm_SortCustom2D},
+	{"SortADTArray",			sm_SortADTArray},
+	{"SortADTArrayCustom",		sm_SortADTArrayCustom},
 	{NULL,						NULL},
 };
diff --git a/plugins/include/sorting.inc b/plugins/include/sorting.inc
index dfdcb53e..6d49a238 100644
--- a/plugins/include/sorting.inc
+++ b/plugins/include/sorting.inc
@@ -45,6 +45,16 @@ enum SortOrder
 	Sort_Descending = 1,	/**< Descending order */
 };
 
+/**
+ * Data types for ADT Array Sorts
+ */
+  enum SortType
+ {
+ 	Sort_Integer = 0,
+ 	Sort_Float,
+ 	Sort_String,
+};
+
 /**
  * Sorts an array of integers.
  *
@@ -128,3 +138,38 @@ funcenum SortFunc2D
  * @noreturn
  */
 native SortCustom2D(array[][], array_size, SortFunc2D:sortfunc, Handle:hndl=INVALID_HANDLE);
+
+/**
+ * Sort an ADT Array. Specify the type as Integer, Float, or String.
+ *
+ * @param array			Array Handle to sort
+ * @param order			Sort order to use, same as other sorts.
+ * @param type			Data type stored in the ADT Array
+ * @noreturn
+ */
+native SortADTArray(Handle:array, SortOrder:order = Sort_Ascending, SortType:type = Sort_Integer);
+
+/**
+ * Sort comparison function for ADT Array elements. Function provides you with
+ * indexes currently being sorted, use ADT Array functions to retrieve the
+ * index values and compare.
+ *
+ * @param index1		First index to compare.
+ * @param index2		Second index to compare.
+ * @param array			Array that is being sorted (order is undefined).
+ * @param hndl			Handle optionally passed in while sorting.
+ * @return				-1 if first should go before second
+ *					0 if first is equal to second
+ *					1 if first should go after second
+ */
+functag SortFuncADTArray public(index1, index2, Handle:array, Handle:hndl);
+
+/**
+ * Custom sorts an ADT Array. You must pass in a comparison function.
+ *
+ * @param array			Array Handle to sort
+ * @param sortfunc		Sort comparision function to use
+ * @param hndl			Optional Handle to pass through the comparison calls.
+ * @noreturn
+ */
+native SortADTArrayCustom(Handle:array, SortFuncADTArray:sortfunc, Handle:hndl=INVALID_HANDLE); 
\ No newline at end of file
diff --git a/plugins/testsuite/sorttest.sp b/plugins/testsuite/sorttest.sp
index 1398a7d5..bd9d4d87 100644
--- a/plugins/testsuite/sorttest.sp
+++ b/plugins/testsuite/sorttest.sp
@@ -9,13 +9,17 @@ public Plugin:myinfo =
 	url = "http://www.sourcemod.net/"
 };
 
-public OnPluginStart(Handle:myself)
+public OnPluginStart()
 {
 	RegServerCmd("test_sort_ints", Command_TestSortInts)
 	RegServerCmd("test_sort_floats", Command_TestSortFloats)
 	RegServerCmd("test_sort_strings", Command_TestSortStrings)
 	RegServerCmd("test_sort_1d", Command_TestSort1D)
 	RegServerCmd("test_sort_2d", Command_TestSort2D)
+	RegServerCmd("test_adtsort_ints", Command_TestSortADTInts)
+	RegServerCmd("test_adtsort_floats", Command_TestSortADTFloats)
+	RegServerCmd("test_adtsort_strings", Command_TestSortADTStrings)
+	RegServerCmd("test_adtsort_custom", Command_TestSortADTCustom)
 }
 
 /*****************
@@ -138,7 +142,7 @@ public Action:Command_TestSortStrings(args)
 
 public Custom2DSort(String:elem1[], String:elem2[], String:array[][], Handle:hndl)
 {
-	return StrCompare(elem1, elem2)
+	return strcmp(elem1, elem2)
 }
 
 public Action:Command_TestSort2D(args)
@@ -162,3 +166,142 @@ public Action:Command_TestSort2D(args)
 	
 	return Plugin_Handled
 }
+
+/*******************
+ * ADT ARRAY TESTS *
+ *******************/
+// Int and floats work the same as normal comparisions. Strings are direct
+// comparisions with no hacky memory stuff like Pawn arrays.
+
+PrintADTArrayIntegers(Handle:array)
+{
+	new size = GetArraySize(array);
+	for (new i=0; i<size;i++)
+	{
+		PrintToServer("array[%d] = %d", i, GetArrayCell(array, i));	
+	}
+}
+
+public Action:Command_TestSortADTInts(args)
+{
+	new Handle:array = CreateArray();
+	PushArrayCell(array, 6);
+	PushArrayCell(array, 7);
+	PushArrayCell(array, 3);
+	PushArrayCell(array, 2);
+	PushArrayCell(array, 8);
+	PushArrayCell(array, 5);
+	PushArrayCell(array, 0);
+	PushArrayCell(array, 1);
+	PushArrayCell(array, 4);
+	PushArrayCell(array, 9);
+	
+	PrintToServer("Testing ascending sort:")
+	SortADTArray(array, Sort_Ascending, Sort_Integer)
+	PrintADTArrayIntegers(array)
+	
+	PrintToServer("Testing descending sort:")
+	SortADTArray(array, Sort_Descending, Sort_Integer)
+	PrintADTArrayIntegers(array)
+	
+	return Plugin_Handled
+
+}
+
+PrintADTArrayFloats(Handle:array)
+{
+	new size = GetArraySize(array);
+	for (new i=0; i<size;i++)
+	{
+		PrintToServer("array[%d] = %f", i, float:GetArrayCell(array, i));	
+	}
+}
+
+public Action:Command_TestSortADTFloats(args)
+{
+	new Handle:array = CreateArray();
+	PushArrayCell(array, 6.0);
+	PushArrayCell(array, 7.0);
+	PushArrayCell(array, 3.0);
+	PushArrayCell(array, 2.0);
+	PushArrayCell(array, 8.0);
+	PushArrayCell(array, 5.0);
+	PushArrayCell(array, 0.0);
+	PushArrayCell(array, 1.0);
+	PushArrayCell(array, 4.0);
+	PushArrayCell(array, 9.0);
+	
+	PrintToServer("Testing ascending sort:")
+	SortADTArray(array, Sort_Ascending, Sort_Float)
+	PrintADTArrayFloats(array)
+	
+	PrintToServer("Testing descending sort:")
+	SortADTArray(array, Sort_Descending, Sort_Float)
+	PrintADTArrayFloats(array)
+	
+	return Plugin_Handled
+}
+
+PrintADTArrayStrings(Handle:array)
+{
+	new size = GetArraySize(array);
+	decl String:buffer[64];
+	for (new i=0; i<size;i++)
+	{
+		GetArrayString(array, i, buffer, sizeof(buffer));
+		PrintToServer("array[%d] = %s", i, buffer);	
+	}
+}
+
+public Action:Command_TestSortADTStrings(args)
+{
+	new Handle:array = CreateArray(ByteCountToCells(64));
+	PushArrayString(array, "faluco");
+	PushArrayString(array, "bailopan");
+	PushArrayString(array, "pm onoto");
+	PushArrayString(array, "damaged soul");
+	PushArrayString(array, "sniperbeamer");
+	PushArrayString(array, "sidluke");
+	PushArrayString(array, "johnny got his gun");
+	PushArrayString(array, "gabe newell");
+	PushArrayString(array, "hello");
+	PushArrayString(array, "WHAT?!");
+	
+	PrintToServer("Testing ascending sort:")
+	SortADTArray(array, Sort_Ascending, Sort_String)
+	PrintADTArrayStrings(array)
+	
+	PrintToServer("Testing descending sort:")
+	SortADTArray(array, Sort_Descending, Sort_String)
+	PrintADTArrayStrings(array)
+	
+	return Plugin_Handled
+}
+
+public ArrayADTCustomCallback(index1, index2, Handle:array, Handle:hndl)
+{
+	decl String:buffer1[64], String:buffer2[64];
+	GetArrayString(array, index1, buffer1, sizeof(buffer1));
+	GetArrayString(array, index2, buffer2, sizeof(buffer2));
+	
+	return strcmp(buffer1, buffer2);
+}
+
+public Action:Command_TestSortADTCustom(args)
+{
+	new Handle:array = CreateArray(ByteCountToCells(64));
+	PushArrayString(array, "faluco");
+	PushArrayString(array, "bailopan");
+	PushArrayString(array, "pm onoto");
+	PushArrayString(array, "damaged soul");
+	PushArrayString(array, "sniperbeamer");
+	PushArrayString(array, "sidluke");
+	PushArrayString(array, "johnny got his gun");
+	PushArrayString(array, "gabe newell");
+	PushArrayString(array, "hello");
+	PushArrayString(array, "WHAT?!");
+	
+	PrintToServer("Testing custom sort:")
+	SortADTArrayCustom(array, ArrayADTCustomCallback)
+	PrintADTArrayStrings(array);
+}

From d09ea8fda2387a1489315834b9c8269b258bbd17 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 20 Nov 2007 03:50:55 +0000
Subject: [PATCH 027/263] added ITopMenu::GetObjectName()

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401708
---
 public/extensions/ITopMenus.h | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/public/extensions/ITopMenus.h b/public/extensions/ITopMenus.h
index 97cba05f..ef063e2d 100644
--- a/public/extensions/ITopMenus.h
+++ b/public/extensions/ITopMenus.h
@@ -43,7 +43,7 @@
  */
 
 #define SMINTERFACE_TOPMENUS_NAME		"ITopMenus"
-#define SMINTERFACE_TOPMENUS_VERSION	3
+#define SMINTERFACE_TOPMENUS_VERSION	4
 
 namespace SourceMod
 {
@@ -268,6 +268,14 @@ namespace SourceMod
 		 * @return				Object's info string, or NULL if none.
 		 */
 		virtual const char *GetObjectInfoString(unsigned int object_id) =0;
+
+		/**
+		 * @brief Returns an object's name string.
+		 *
+		 * @param object_id		Object ID.
+		 * @return				Object's name string, or NULL if none.
+		 */
+		virtual const char *GetObjectName(unsigned int object_id) =0;
 	};
 
 	/**

From 776e51dbacd43d5af44ddb52fa3b77a4b5b46d86 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Tue, 20 Nov 2007 03:55:54 +0000
Subject: [PATCH 028/263] Moved some variables in RTV to OnMapStart

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401709
---
 plugins/rockthevote.sp | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/plugins/rockthevote.sp b/plugins/rockthevote.sp
index 1e0d9ee0..25f3a8a8 100644
--- a/plugins/rockthevote.sp
+++ b/plugins/rockthevote.sp
@@ -88,7 +88,7 @@ public OnPluginStart()
 	
 	AutoExecConfig(true, "rtv");
 }
-
+
 public OnConfigsExecuted()
 {
 	if (g_RTVMapList != INVALID_HANDLE)
@@ -96,12 +96,6 @@ public OnConfigsExecuted()
 		ClearArray(g_RTVMapList);
 	}
 	
-	g_Voters = 0;
-	g_Votes = 0;
-	g_VotesNeeded = 0;
-	g_RTVStarted = false;
-	g_RTVEnded = false;
-	
 	if (LoadMaps(g_MapList, g_mapFileTime, g_Cvar_File))
 	{
 		BuildMapMenu();
@@ -109,6 +103,15 @@ public OnConfigsExecuted()
 		CreateTimer(30.0, Timer_DelayRTV);
 	}
 }
+
+public OnMapStart()
+{
+	g_Voters = 0;
+	g_Votes = 0;
+	g_VotesNeeded = 0;
+	g_RTVStarted = false;
+	g_RTVEnded = false;
+}
 
 public OnMapEnd()
 {

From 81f6856ad9b12e524287c964371af27d5b4aa8ba Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 20 Nov 2007 04:36:38 +0000
Subject: [PATCH 029/263] fixed small bug in SortADTArray

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401710
---
 core/smn_sorting.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/core/smn_sorting.cpp b/core/smn_sorting.cpp
index 9bf9426d..e300e282 100644
--- a/core/smn_sorting.cpp
+++ b/core/smn_sorting.cpp
@@ -423,7 +423,7 @@ static cell_t sm_SortADTArray(IPluginContext *pContext, const cell_t *params)
 	}
 	else if (type == Sort_Float)
 	{
-		if (type == Sort_Ascending)
+		if (order == Sort_Ascending)
 		{
 			qsort(array, arraysize, blocksize * sizeof(cell_t), sort_floats_asc);
 		}
@@ -434,7 +434,7 @@ static cell_t sm_SortADTArray(IPluginContext *pContext, const cell_t *params)
 	}
 	else if (type == Sort_String)
 	{
-		if (type == Sort_Ascending)
+		if (order == Sort_Ascending)
 		{
 			qsort(array, arraysize, blocksize * sizeof(cell_t), sort_adtarray_strings_asc);
 		}

From 09b6c5ead158b6178a55af35ecdcf6722acb791c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 20 Nov 2007 17:16:50 +0000
Subject: [PATCH 030/263] added new menu feature for old plugins

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401711
---
 core/MenuStyle_Radio.cpp  | 40 +++++++++++++++++++----
 core/MenuStyle_Radio.h    |  3 ++
 core/smn_menus.cpp        | 69 +++++++++++++++++++++++++++++++++++++++
 plugins/include/menus.inc | 20 ++++++++++++
 4 files changed, 126 insertions(+), 6 deletions(-)

diff --git a/core/MenuStyle_Radio.cpp b/core/MenuStyle_Radio.cpp
index 1a5d033f..a1eee8ec 100644
--- a/core/MenuStyle_Radio.cpp
+++ b/core/MenuStyle_Radio.cpp
@@ -206,7 +206,9 @@ CRadioDisplay *CRadioStyle::MakeRadioDisplay(CRadioMenu *menu)
 	if (m_FreeDisplays.empty())
 	{
 		display = new CRadioDisplay();
-	} else {
+	}
+	else
+	{
 		display = m_FreeDisplays.front();
 		m_FreeDisplays.pop();
 		display->Reset();
@@ -214,6 +216,15 @@ CRadioDisplay *CRadioStyle::MakeRadioDisplay(CRadioMenu *menu)
 	return display;
 }
 
+IMenuPanel *CRadioStyle::MakeRadioDisplay(const char *str, int keys)
+{
+	CRadioDisplay *pPanel = MakeRadioDisplay(NULL);
+
+	pPanel->DirectSet(str, keys);
+
+	return pPanel;
+}
+
 void CRadioStyle::FreeRadioDisplay(CRadioDisplay *display)
 {
 	m_FreeDisplays.push(display);
@@ -275,6 +286,13 @@ void CRadioDisplay::Reset()
 	keys = 0;
 }
 
+void CRadioDisplay::DirectSet(const char *str, int keymap)
+{
+	m_Title.clear();
+	m_BufferText.assign(str);
+	keys = keymap;
+}
+
 unsigned int CRadioDisplay::GetCurrentKey()
 {
 	return m_NextPos;
@@ -391,11 +409,21 @@ bool CRadioMenuPlayer::Radio_NeedsRefresh()
 
 void CRadioMenuPlayer::Radio_Init(int keys, const char *title, const char *text)
 {
-	display_len = UTIL_Format(display_pkt, 
-		sizeof(display_pkt), 
-		"%s\n%s", 
-		title,
-		text);
+	if (title[0] != '\0')
+	{
+		display_len = UTIL_Format(display_pkt, 
+			sizeof(display_pkt), 
+			"%s\n%s", 
+			title,
+			text);
+	}
+	else
+	{
+		display_len = UTIL_Format(display_pkt, 
+			sizeof(display_pkt), 
+			"%s", 
+			text);
+	}
 	display_keys = keys;
 }
 
diff --git a/core/MenuStyle_Radio.h b/core/MenuStyle_Radio.h
index a1b8971b..e8ba85f5 100644
--- a/core/MenuStyle_Radio.h
+++ b/core/MenuStyle_Radio.h
@@ -92,6 +92,7 @@ public:
 	CRadioDisplay *MakeRadioDisplay(CRadioMenu *menu=NULL);
 	void FreeRadioDisplay(CRadioDisplay *display);
 	CRadioMenuPlayer *GetRadioMenuPlayer(int client);
+	IMenuPanel *MakeRadioDisplay(const char *str, int keys);
 private:
 	CRadioMenuPlayer *m_players;
 	CStack<CRadioDisplay *> m_FreeDisplays;
@@ -118,6 +119,8 @@ public: //IMenuPanel
 	unsigned int GetCurrentKey();
 	bool SetCurrentKey(unsigned int key);
 	int GetAmountRemaining();
+public:
+	void DirectSet(const char *str, int keymap);
 private:
 	String m_BufferText;
 	String m_Title;
diff --git a/core/smn_menus.cpp b/core/smn_menus.cpp
index 4074c8df..22534c7e 100644
--- a/core/smn_menus.cpp
+++ b/core/smn_menus.cpp
@@ -37,6 +37,7 @@
 #include "MenuStyle_Radio.h"
 #include "HandleSys.h"
 #include "PluginSys.h"
+#include "PlayerManager.h"
 #include "sm_stringutil.h"
 #include "sourcemm_api.h"
 #if defined MENU_DEBUG
@@ -1398,6 +1399,73 @@ static cell_t GetMenuSelectionPosition(IPluginContext *pContext, const cell_t *p
 	return *s_CurSelectPosition;
 }
 
+class EmptyMenuHandler : public IMenuHandler
+{
+public:
+} s_EmptyMenuHandler;
+
+static cell_t InternalShowMenu(IPluginContext *pContext, const cell_t *params)
+{
+	int client = params[1];
+	CPlayer *pPlayer = g_Players.GetPlayerByIndex(client);
+
+	if (pPlayer == NULL)
+	{
+		return pContext->ThrowNativeError("Invalid client index %d", client);
+	}
+	else if (!pPlayer->IsInGame())
+	{
+		return pContext->ThrowNativeError("Client %d is not in game", client);
+	}
+
+	if (!g_RadioMenuStyle.IsSupported())
+	{
+		return pContext->ThrowNativeError("Radio menus are not supported on this mod");
+	}
+
+	char *str;
+	pContext->LocalToString(params[2], &str);
+
+	IMenuPanel *pPanel = g_RadioMenuStyle.MakeRadioDisplay(str, params[4]);
+
+	if (pPanel == NULL)
+	{
+		return 0;
+	}
+
+	IMenuHandler *pHandler;
+	CPanelHandler *pActualHandler = NULL;
+	if (params[5] != -1)
+	{
+		IPluginFunction *pFunction = pContext->GetFunctionById(params[5]);
+		if (pFunction == NULL)
+		{
+			return pContext->ThrowNativeError("Invalid function index %x", params[5]);
+		}
+		pActualHandler = g_MenuHelpers.GetPanelHandler(pFunction);
+	}
+
+	if (pActualHandler == NULL)
+	{
+		pHandler = &s_EmptyMenuHandler;
+	}
+	else
+	{
+		pHandler = pActualHandler;
+	}
+
+	bool bSuccess = pPanel->SendDisplay(client, pHandler, params[3]);
+
+	pPanel->DeleteThis();
+
+	if (!bSuccess && pActualHandler != NULL)
+	{
+		g_MenuHelpers.FreePanelHandler(pActualHandler);
+	}
+
+	return bSuccess ? 1 : 0;
+}
+
 REGISTER_NATIVES(menuNatives)
 {
 	{"AddMenuItem",				AddMenuItem},
@@ -1430,6 +1498,7 @@ REGISTER_NATIVES(menuNatives)
 	{"GetPanelCurrentKey",		GetPanelCurrentKey},
 	{"GetPanelStyle",			GetPanelStyle},
 	{"InsertMenuItem",			InsertMenuItem},
+	{"InternalShowMenu",		InternalShowMenu},
 	{"IsVoteInProgress",		IsVoteInProgress},
 	{"RedrawMenuItem",			RedrawMenuItem},
 	{"RemoveAllMenuItems",		RemoveAllMenuItems},
diff --git a/plugins/include/menus.inc b/plugins/include/menus.inc
index 90559b0c..7bac6f76 100644
--- a/plugins/include/menus.inc
+++ b/plugins/include/menus.inc
@@ -732,6 +732,26 @@ native bool:SetPanelCurrentKey(Handle:panel, key);
  */
 native RedrawMenuItem(const String:text[]);
 
+/**
+ * This function is provided for legacy code only.  Some older plugins may use 
+ * network messages instead of the panel API.  This function wraps the panel 
+ * API for eased portability into the SourceMod menu system.  
+ *
+ * This function is only usable with the Radio Menu style.  You do not need to 
+ * split up your menu into multiple packets; SourceMod will break the string 
+ * up internally.
+ *
+ * @param client		Client index.
+ * @param str			Full menu string as would be passed over the network. 
+ * @param time			Time to hold the menu for.
+ * @param keys			Selectable key bitstring.
+ * @param handler		Optional handler function, with the same rules as
+ *						SendPanelToClient().
+ * @return				True on success, false on failure.
+ * @error				Invalid client index, or radio menus not supported.
+ */
+native bool:InternalShowMenu(client, const String:str[], time, keys=-1, MenuHandler:handler=MenuHandler:-1);
+
 /**
  * Retrieves voting information from MenuAction_VoteEnd.
  *

From 58ff2d14af5ae09c2851aeec9448cbaafe4feca3 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Wed, 21 Nov 2007 01:21:32 +0000
Subject: [PATCH 031/263] Fixed permissions for Basechat say aliases, removed
 sm_psay_mode. Use command overrides for sm_psay instead.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401712
---
 configs/cfg/sourcemod.cfg |  7 -------
 plugins/basechat.sp       | 22 +++++-----------------
 2 files changed, 5 insertions(+), 24 deletions(-)

diff --git a/configs/cfg/sourcemod.cfg b/configs/cfg/sourcemod.cfg
index ea9e61a4..b98133a6 100644
--- a/configs/cfg/sourcemod.cfg
+++ b/configs/cfg/sourcemod.cfg
@@ -93,13 +93,6 @@ sm_hide_slots 0
 // Default: 1
 sm_chat_mode 1
 
-// Specifies whether or not non-admins can send private messages to each other
-// using say @@<target> <message>. Valid values are 0 (disabled) or 1 (enabled)
-// --
-// Required: basechat.smx
-// Default: 1
-sm_psay_mode 0
-
 // Specifies whether or not "timeleft" will automaticly be triggered every
 // x seconds. Valid values are 0 (disabled) to 1800 seconds.
 // --
diff --git a/plugins/basechat.sp b/plugins/basechat.sp
index 868c3c45..17c803bf 100644
--- a/plugins/basechat.sp
+++ b/plugins/basechat.sp
@@ -50,7 +50,6 @@ new String:g_ColorNames[13][10] = {"White", "Red", "Green", "Blue", "Yellow", "P
 new g_Colors[13][3] = {{255,255,255},{255,0,0},{0,255,0},{0,0,255},{255,255,0},{255,0,255},{0,255,255},{255,128,0},{255,0,128},{128,255,0},{0,255,128},{128,0,255},{0,128,255}};
 
 new Handle:g_Cvar_Chatmode = INVALID_HANDLE;
-new Handle:g_Cvar_Psaymode = INVALID_HANDLE;
 
 new bool:g_DoColor = true;
 
@@ -59,7 +58,6 @@ public OnPluginStart()
 	LoadTranslations("common.phrases");
 
 	g_Cvar_Chatmode = CreateConVar("sm_chat_mode", "1", "Allows player's to send messages to admin chat.", 0, true, 0.0, true, 1.0);
-	g_Cvar_Psaymode = CreateConVar("sm_psay_mode", "0", "Allows player's to use psay 'say @@' alias.", 0, true, 0.0, true, 1.0);
 
 	RegConsoleCmd("say", Command_SayChat);
 	RegConsoleCmd("say_team", Command_SayAdmin);		
@@ -114,17 +112,17 @@ public Action:Command_SayChat(client, args)
 	decl String:name[64];
 	GetClientName(client, name, sizeof(name));
 	
-	if (msgStart == 1 && CheckAdminForChat(client)) // sm_say alias
+	if (msgStart == 1 && CheckCommandAccess(client, "sm_say", ADMFLAG_CHAT)) // sm_say alias
 	{
 		SendChatToAll(name, message);
 		LogAction(client, -1, "%L triggered sm_say (text %s)", client, message);
 	}
-	else if (msgStart == 3 && CheckAdminForChat(client)) // sm_csay alias
+	else if (msgStart == 3 && CheckCommandAccess(client, "sm_csay", ADMFLAG_CHAT)) // sm_csay alias
 	{
 		PrintCenterTextAll("%s: %s", name, message);
 		LogAction(client, -1, "%L triggered sm_csay (text %s)", client, text);		
 	}	
-	else if (msgStart == 2 && (CheckAdminForChat(client) || GetConVarBool(g_Cvar_Psaymode))) // sm_psay alias
+	else if (msgStart == 2 && CheckCommandAccess(client, "sm_psay", ADMFLAG_CHAT)) // sm_psay alias
 	{
 		decl String:arg[64];
 	
@@ -158,7 +156,7 @@ public Action:Command_SayChat(client, args)
 
 public Action:Command_SayAdmin(client, args)
 {
-	if (!CheckAdminForChat(client) && !GetConVarBool(g_Cvar_Chatmode))
+	if (!CheckCommandAccess(client, "sm_chat", ADMFLAG_CHAT) && !GetConVarBool(g_Cvar_Chatmode))
 	{
 		return Plugin_Continue;	
 	}
@@ -359,16 +357,6 @@ public Action:Command_SmMsay(client, args)
 	return Plugin_Handled;		
 }
 
-bool:CheckAdminForChat(client)
-{
-	if (client == 0)
-	{
-		return true;
-	}
-	
-	return CheckCommandAccess(client, "sm_chat", ADMFLAG_CHAT);
-}
-
 FindColor(String:color[])
 {
 	for (new i = 0; i < 13; i++)
@@ -400,7 +388,7 @@ SendChatToAdmins(String:name[], String:message[])
 	{
 		if (IsClientInGame(i))
 		{
-			if (CheckAdminForChat(i))
+			if (CheckCommandAccess(i, "sm_chat", ADMFLAG_CHAT))
 			{
 				if (g_DoColor)
 				{

From 64a07ce1980ff9837ee7bbc65b51848355b071a0 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Wed, 21 Nov 2007 06:49:40 +0000
Subject: [PATCH 032/263] added new native KvJumpToKeySymbol

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401713
---
 core/smn_keyvalues.cpp        | 29 +++++++++++++++++++++++++++++
 plugins/include/keyvalues.inc |  9 +++++++++
 2 files changed, 38 insertions(+)

diff --git a/core/smn_keyvalues.cpp b/core/smn_keyvalues.cpp
index 3ffad068..ef18e36d 100644
--- a/core/smn_keyvalues.cpp
+++ b/core/smn_keyvalues.cpp
@@ -406,6 +406,34 @@ static cell_t smn_KvJumpToKey(IPluginContext *pCtx, const cell_t *params)
 	return 1;
 }
 
+static cell_t smn_KvJumpToKeySymbol(IPluginContext *pCtx, const cell_t *params)
+{
+	Handle_t hndl = static_cast<Handle_t>(params[1]);
+	HandleError herr;
+	HandleSecurity sec;
+	char *name;	
+	KeyValueStack *pStk;
+
+	sec.pOwner = NULL;
+	sec.pIdentity = g_pCoreIdent;
+
+	if ((herr=g_HandleSys.ReadHandle(hndl, g_KeyValueType, &sec, (void **)&pStk))
+		!= HandleError_None)
+	{
+		return pCtx->ThrowNativeError("Invalid key value handle %x (error %d)", hndl, herr);
+	}
+
+	KeyValues *pSubKey = pStk->pCurRoot.front();
+	pSubKey = pSubKey->FindKey(params[2]);
+	if (!pSubKey)
+	{
+		return 0;
+	}
+	pStk->pCurRoot.push(pSubKey);
+
+	return 1;
+}
+
 static cell_t smn_KvGotoFirstSubKey(IPluginContext *pCtx, const cell_t *params)
 {
 	Handle_t hndl = static_cast<Handle_t>(params[1]);
@@ -937,6 +965,7 @@ REGISTER_NATIVES(keyvaluenatives)
 	{"KvGetUInt64",				smn_KvGetUInt64},
 	{"CreateKeyValues",			smn_CreateKeyValues},
 	{"KvJumpToKey",				smn_KvJumpToKey},
+	{"KvJumpToKeySymbol",		smn_KvJumpToKeySymbol},
 	{"KvGotoNextKey",			smn_KvGotoNextKey},
 	{"KvJumpFirstSubKey",		smn_KvGotoFirstSubKey},		/* BACKWARDS COMPAT SHIM */
 	{"KvGotoFirstSubKey",		smn_KvGotoFirstSubKey},
diff --git a/plugins/include/keyvalues.inc b/plugins/include/keyvalues.inc
index 715ddc44..bd8804c8 100644
--- a/plugins/include/keyvalues.inc
+++ b/plugins/include/keyvalues.inc
@@ -191,6 +191,15 @@ native KvGetUInt64(Handle:kv, const String:key[], value[2], defvalue[2]={0,0});
  */
 native bool:KvJumpToKey(Handle:kv, const String:key[], bool:create=false);
 
+/**
+ * Sets the current position in the KeyValues tree to the given key.
+ *
+ * @param kv			KeyValues Handle.
+ * @param id			KeyValues id.
+ * @return				True if the key exists, false if it does not.
+ */
+native bool:KvJumpToKeySymbol(Handle:kv, id);
+
 /**
  * Sets the current position in the KeyValues tree to the first sub key.
  * This native adds to the internal traversal stack.

From bce7cf5bdd48bdf77c739b05fd840b00395e5360 Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Wed, 21 Nov 2007 12:58:37 +0000
Subject: [PATCH 033/263] fixed build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401714
---
 core/smn_keyvalues.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/core/smn_keyvalues.cpp b/core/smn_keyvalues.cpp
index ef18e36d..f5ff470c 100644
--- a/core/smn_keyvalues.cpp
+++ b/core/smn_keyvalues.cpp
@@ -411,7 +411,6 @@ static cell_t smn_KvJumpToKeySymbol(IPluginContext *pCtx, const cell_t *params)
 	Handle_t hndl = static_cast<Handle_t>(params[1]);
 	HandleError herr;
 	HandleSecurity sec;
-	char *name;	
 	KeyValueStack *pStk;
 
 	sec.pOwner = NULL;

From 19c184aefc21f6a2987e722cf5776c2af2b16909 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Wed, 21 Nov 2007 20:58:00 +0000
Subject: [PATCH 034/263] Added KvGetSectionSymbol

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401715
---
 core/smn_keyvalues.cpp        | 31 +++++++++++++++++++++++++++++++
 plugins/include/keyvalues.inc | 10 ++++++++++
 2 files changed, 41 insertions(+)

diff --git a/core/smn_keyvalues.cpp b/core/smn_keyvalues.cpp
index f5ff470c..f87ee7e7 100644
--- a/core/smn_keyvalues.cpp
+++ b/core/smn_keyvalues.cpp
@@ -948,6 +948,36 @@ static cell_t smn_FindKeyById(IPluginContext *pContext, const cell_t *params)
 	return 1;
 }
 
+static cell_t smn_KvGetSectionSymbol(IPluginContext *pCtx, const cell_t *params)
+{
+	Handle_t hndl = static_cast<Handle_t>(params[1]);
+	HandleError herr;
+	HandleSecurity sec;
+	KeyValueStack *pStk;
+	cell_t *val;
+
+	sec.pOwner = NULL;
+	sec.pIdentity = g_pCoreIdent;
+
+	if ((herr=g_HandleSys.ReadHandle(hndl, g_KeyValueType, &sec, (void **)&pStk))
+		!= HandleError_None)
+	{
+		return pCtx->ThrowNativeError("Invalid key value handle %x (error %d)", hndl, herr);
+	}
+
+	KeyValues *pSection = pStk->pCurRoot.front();
+
+	pContext->LocalToPhysAddr(params[2], &val);
+	*val = pSection->GetNameSymbol();
+
+	if (!*val)
+	{
+		return 0;
+	}
+
+	return 1;
+}
+
 static KeyValueNatives s_KeyValueNatives;
 
 REGISTER_NATIVES(keyvaluenatives)
@@ -984,5 +1014,6 @@ REGISTER_NATIVES(keyvaluenatives)
 	{"KvCopySubkeys",			smn_CopySubkeys},
 	{"KvFindKeyById",			smn_FindKeyById},
 	{"KvGetNameSymbol",			smn_GetNameSymbol},
+	{"KvGetSectionSymbol",		smn_KvGetSectionSymbol},
 	{NULL,						NULL}
 };
diff --git a/plugins/include/keyvalues.inc b/plugins/include/keyvalues.inc
index bd8804c8..deb21e6c 100644
--- a/plugins/include/keyvalues.inc
+++ b/plugins/include/keyvalues.inc
@@ -394,3 +394,13 @@ native bool:KvFindKeyById(Handle:kv, id, String:name[], maxlength);
  * @error				Invalid Handle.
  */
 native bool:KvGetNameSymbol(Handle:kv, const String:key[], &id);
+
+/**
+ * Retrieves the current section id.
+ * 
+ * @param kv			KeyValues Handle.
+ * @param id			Id of the current section.
+ * @return				True on success, false on failure.
+ * @error				Invalid Handle.
+ */
+native bool:KvGetSectionSymbol(Handle:kv, &id);

From 858fd7d3cd6d96f3ecd5bc0272ab447c80cb6132 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Wed, 21 Nov 2007 22:15:05 +0000
Subject: [PATCH 035/263] Build fix attempt 1

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401716
---
 core/smn_keyvalues.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/smn_keyvalues.cpp b/core/smn_keyvalues.cpp
index f87ee7e7..d0313947 100644
--- a/core/smn_keyvalues.cpp
+++ b/core/smn_keyvalues.cpp
@@ -967,7 +967,7 @@ static cell_t smn_KvGetSectionSymbol(IPluginContext *pCtx, const cell_t *params)
 
 	KeyValues *pSection = pStk->pCurRoot.front();
 
-	pContext->LocalToPhysAddr(params[2], &val);
+	pCtx->LocalToPhysAddr(params[2], &val);
 	*val = pSection->GetNameSymbol();
 
 	if (!*val)

From 9be4c043a4ae80c9ae634fdb3c63635828f1a37b Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Thu, 22 Nov 2007 20:34:38 +0000
Subject: [PATCH 036/263] Typo in example in admins_simple.ini

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401717
---
 configs/admins_simple.ini | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configs/admins_simple.ini b/configs/admins_simple.ini
index 40a9b70d..9c88bbe6 100644
--- a/configs/admins_simple.ini
+++ b/configs/admins_simple.ini
@@ -38,7 +38,7 @@
 // Examples: (do not put // in front of real lines, as // means 'comment')
 //
 //   "STEAM_0:1:16"		"bce"				//kick, ban, slay for this steam ID, no immunity
-//   "127.0.0.1"		"99:z"				//all permissions for this ip, immunity value is 99
+//   "!127.0.0.1"		"99:z"				//all permissions for this ip, immunity value is 99
 //   "BAILOPAN"			"abc"	"Gab3n"		//name BAILOPAN, password "Gab3n": gets reservation, kick, ban
 //
 ////////////////////////////////

From d0bcaecdef032c3a1c12d2166eccbffebf3b1ad4 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Fri, 23 Nov 2007 01:06:35 +0000
Subject: [PATCH 037/263] RTV Adjustments

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401718
---
 plugins/rockthevote.sp | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/plugins/rockthevote.sp b/plugins/rockthevote.sp
index 25f3a8a8..6378dc3e 100644
--- a/plugins/rockthevote.sp
+++ b/plugins/rockthevote.sp
@@ -122,7 +122,7 @@ public OnMapEnd()
 
 public bool:OnClientConnect(client, String:rejectmsg[], maxlen)
 {
-	if(IsFakeClient(client))
+	if(!g_CanRTV || IsFakeClient(client))
 		return true;
 	
 	g_Voted[client] = false;
@@ -136,7 +136,7 @@ public bool:OnClientConnect(client, String:rejectmsg[], maxlen)
 
 public OnClientDisconnect(client)
 {
-	if(IsFakeClient(client))
+	if(!g_CanRTV || IsFakeClient(client))
 		return;
 	
 	if(g_Voted[client])
@@ -148,8 +148,9 @@ public OnClientDisconnect(client)
 	
 	g_VotesNeeded = RoundToFloor(float(g_Voters) * GetConVarFloat(g_Cvar_Needed));
 	
-	if (g_Votes && g_Voters && g_Votes >= g_VotesNeeded && g_RTVAllowed) 
-	{
+	if (g_Votes && g_Voters && g_Votes >= g_VotesNeeded && g_RTVAllowed && !g_RTVStarted) 
+	{
+		g_RTVStarted = true;
 		CreateTimer(2.0, Timer_StartRTV, TIMER_FLAG_NO_MAPCHANGE);
 	}	
 }
@@ -160,6 +161,12 @@ public Action:Command_Addmap(client, args)
 	{
 		ReplyToCommand(client, "[SM] Usage: sm_rtv_addmap <mapname>");
 		return Plugin_Handled;
+	}
+	
+	if (!g_CanRTV)
+	{
+		ReplyToCommand(client, "[SM] RockTheVote is not available.");
+		return Plugin_Handled;
 	}
 	
 	decl String:mapname[64];
@@ -268,7 +275,8 @@ public Action:Command_Say(client, args)
 		PrintToChatAll("[SM] %t", "RTV Requested", name, g_Votes, g_VotesNeeded);
 		
 		if (g_Votes >= g_VotesNeeded)
-		{
+		{
+			g_RTVStarted = true;
 			CreateTimer(2.0, Timer_StartRTV, TIMER_FLAG_NO_MAPCHANGE);
 		}
 	}
@@ -321,8 +329,6 @@ public Action:Timer_StartRTV(Handle:timer)
 		return;
 	}
 
-	g_RTVStarted = true;
-
 	if (IsVoteInProgress())
 	{
 		// Can't start a vote, try again in 5 seconds.

From 7c95678241b467ce121b72048c701146b28a3e4a Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Fri, 23 Nov 2007 01:13:13 +0000
Subject: [PATCH 038/263] Small RTV adjustment

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401719
---
 plugins/rockthevote.sp | 38 ++++++++++++++++++++------------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/plugins/rockthevote.sp b/plugins/rockthevote.sp
index 6378dc3e..cc4b5b50 100644
--- a/plugins/rockthevote.sp
+++ b/plugins/rockthevote.sp
@@ -89,21 +89,6 @@ public OnPluginStart()
 	AutoExecConfig(true, "rtv");
 }
 
-public OnConfigsExecuted()
-{
-	if (g_RTVMapList != INVALID_HANDLE)
-	{
-		ClearArray(g_RTVMapList);
-	}
-	
-	if (LoadMaps(g_MapList, g_mapFileTime, g_Cvar_File))
-	{
-		BuildMapMenu();
-		g_CanRTV = true;
-		CreateTimer(30.0, Timer_DelayRTV);
-	}
-}
-
 public OnMapStart()
 {
 	g_Voters = 0;
@@ -119,6 +104,20 @@ public OnMapEnd()
 	g_RTVAllowed = false;
 }
 
+public OnConfigsExecuted()
+{
+	if (g_RTVMapList != INVALID_HANDLE)
+	{
+		ClearArray(g_RTVMapList);
+	}
+	
+	if (LoadMaps(g_MapList, g_mapFileTime, g_Cvar_File))
+	{
+		BuildMapMenu();
+		g_CanRTV = true;
+		CreateTimer(30.0, Timer_DelayRTV);
+	}
+}
 
 public bool:OnClientConnect(client, String:rejectmsg[], maxlen)
 {
@@ -218,8 +217,10 @@ public Action:Command_Addmap(client, args)
 
 public Action:Command_Say(client, args)
 {
-	if (!g_CanRTV || !client)
-		return Plugin_Continue;
+	if (!g_CanRTV || !client)
+	{
+		return Plugin_Continue;
+	}
 
 	decl String:text[192];
 	if (!GetCmdArgString(text, sizeof(text)))
@@ -438,7 +439,8 @@ public Handler_MapMapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
 		{
 			if (param1 == VoteCancel_NoVotes)
 			{
-				PrintToChatAll("[SM] %t", "No Votes");		
+				PrintToChatAll("[SM] %t", "No Votes");
+				g_RTVEnded = true;
 			}
 		}
 

From 674b877a4360126ad33f8fb0b39ac23a2e2ff340 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 23 Nov 2007 02:39:48 +0000
Subject: [PATCH 039/263] fixed a precision bug that caused SourceMod to stop
 working after excatly 72.8 hours

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401720
---
 core/TimerSys.cpp | 12 ++++++------
 core/TimerSys.h   |  4 ++--
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/core/TimerSys.cpp b/core/TimerSys.cpp
index d4de6231..a86945ae 100644
--- a/core/TimerSys.cpp
+++ b/core/TimerSys.cpp
@@ -48,16 +48,16 @@ SH_DECL_HOOK2_void(ICvar, CallGlobalChangeCallbacks, SH_NOATTRIB, false, ConVar
 #endif
 
 TimerSystem g_Timers;
-float g_fUniversalTime = 0.0f;
+double g_fUniversalTime = 0.0f;
 float g_fGameStartTime = 0.0f;	/* Game game start time, non-universal */
-float g_fTimerThink = 0.0f;		/* Timer's next think time */
-const float *g_pUniversalTime = &g_fUniversalTime;
+double g_fTimerThink = 0.0f;		/* Timer's next think time */
+const double *g_pUniversalTime = &g_fUniversalTime;
 ConVar *mp_timelimit = NULL;
 int g_TimeLeftMode = 0;
 
 ConVar sm_time_adjustment("sm_time_adjustment", "0", 0, "Adjusts the server time in seconds");
 
-inline float GetSimulatedTime()
+inline double GetSimulatedTime()
 {
 	return g_fUniversalTime;
 }
@@ -159,7 +159,7 @@ private:
  * that a drastic jump in time will continue acting normally.  Users 
  * may not expect this, but... I think it is the best solution.
  */
-inline float CalcNextThink(float last, float interval)
+inline double CalcNextThink(double last, float interval)
 {
 	if (g_fUniversalTime - last - interval <= TIMER_MIN_ACCURACY)
 	{
@@ -274,7 +274,7 @@ void TimerSystem::RunFrame()
 	ITimer *pTimer;
 	TimerIter iter;
 
-	float curtime = GetSimulatedTime();
+	double curtime = GetSimulatedTime();
 	for (iter=m_SingleTimers.begin(); iter!=m_SingleTimers.end(); )
 	{
 		pTimer = (*iter);
diff --git a/core/TimerSys.h b/core/TimerSys.h
index 3b66e778..3cf0b066 100644
--- a/core/TimerSys.h
+++ b/core/TimerSys.h
@@ -51,7 +51,7 @@ public:
 	ITimedEvent *m_Listener;
 	void *m_pData;
 	float m_Interval;
-	float m_ToExec;
+	double m_ToExec;
 	int m_Flags;
 	bool m_InExec;
 	bool m_KillMe;
@@ -103,7 +103,7 @@ private:
 
 time_t GetAdjustedTime(time_t *buf = NULL);
 
-extern const float *g_pUniversalTime;
+extern const double *g_pUniversalTime;
 extern TimerSystem g_Timers;
 extern int g_TimeLeftMode;
 

From a91c7892a4bd9c12d96bd94ca052b581345cb884 Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Fri, 23 Nov 2007 23:21:19 +0000
Subject: [PATCH 040/263] added amb1189, FindEntityByClassname for TF2

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401723
---
 gamedata/sdktools.games.ep2.txt | 42 ++++++++++++++++++++++++++++++++-
 1 file changed, 41 insertions(+), 1 deletion(-)

diff --git a/gamedata/sdktools.games.ep2.txt b/gamedata/sdktools.games.ep2.txt
index 156373ef..e1caf9b5 100644
--- a/gamedata/sdktools.games.ep2.txt
+++ b/gamedata/sdktools.games.ep2.txt
@@ -97,7 +97,47 @@
 			}
 		}
 	}
-	
+
+	/* CGlobalEntityList */
+	"#default"
+	{
+		"#supported"
+		{
+			"game"		"tf"
+		}
+		
+		"Offsets"
+		{
+			/* Offset into LevelShutdown */
+			"gEntList"
+			{
+				"windows"	"11"
+			}
+		}
+		
+		"Signatures"
+		{
+			"LevelShutdown"
+			{
+				"library"	"server"
+				"windows"	"\xE8\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xE8"
+			}
+			"gEntList"
+			{
+				"library"	"server"
+				"linux"		"@gEntList"
+			}
+			
+			/* Functions in CGlobalEntityList */
+			"FindEntityByClassname"
+			{
+				"library"	"server"
+				"windows"	"\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x85\xC9\x57\x74\x19\x8B\x01\x8B\x50\x08\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x83\xC0\x01\xC1\xE0\x04\x8B\x3C\x30\xEB\x06\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x39\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\xEB\x03"
+				"linux"		"@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
+			}
+		}
+	}
+
 	/* Team Fortress 2 Offsets */
 	"tf"
 	{

From a86f386f121cb47f128c72ac71d3bda47cf0cf0f Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Fri, 23 Nov 2007 23:24:40 +0000
Subject: [PATCH 041/263] gah forgot this

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401724
---
 core/GameConfigs.cpp             |  2 +-
 extensions/sdktools/vglobals.cpp | 36 ++++++++++++++++----------------
 2 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/core/GameConfigs.cpp b/core/GameConfigs.cpp
index 86b87f99..b5b5ca8f 100644
--- a/core/GameConfigs.cpp
+++ b/core/GameConfigs.cpp
@@ -426,7 +426,7 @@ SMCResult CGameConfig::ReadSMC_LeavingSection(const SMCStates *states)
 				}
 #endif
 				/* First, preprocess the signature */
-				char real_sig[255];
+				char real_sig[511];
 				size_t real_bytes;
 				size_t length;
 
diff --git a/extensions/sdktools/vglobals.cpp b/extensions/sdktools/vglobals.cpp
index fd872aac..d7cd3e4f 100644
--- a/extensions/sdktools/vglobals.cpp
+++ b/extensions/sdktools/vglobals.cpp
@@ -40,17 +40,6 @@ void InitializeValveGlobals()
 	char *addr = NULL;
 	int offset;
 
-	/* g_pGameRules */
-	if (!g_pGameConf->GetMemSig("CreateGameRulesObject", (void **)&addr) || !addr)
-	{
-		return;
-	}
-	if (!g_pGameConf->GetOffset("g_pGameRules", &offset) || !offset)
-	{
-		return;
-	}
-	g_pGameRules = *reinterpret_cast<void ***>(addr + offset);
-
 	/* gEntList and/or g_pEntityList */
 	if (!g_pGameConf->GetMemSig("LevelShutdown", (void **)&addr) || !addr)
 	{
@@ -61,24 +50,35 @@ void InitializeValveGlobals()
 		return;
 	}
 	g_EntList = *reinterpret_cast<void **>(addr + offset);
+
+	/* g_pGameRules */
+	if (!g_pGameConf->GetMemSig("CreateGameRulesObject", (void **)&addr) || !addr)
+	{
+		return;
+	}
+	if (!g_pGameConf->GetOffset("g_pGameRules", &offset) || !offset)
+	{
+		return;
+	}
+	g_pGameRules = *reinterpret_cast<void ***>(addr + offset);
 }
 #elif defined PLATFORM_LINUX
 void InitializeValveGlobals()
 {
 	char *addr = NULL;
 
-	/* g_pGameRules */
-	if (!g_pGameConf->GetMemSig("g_pGameRules", (void **)&addr) || !addr)
-	{
-		return;
-	}
-	g_pGameRules = reinterpret_cast<void **>(addr);
-
 	/* gEntList and/or g_pEntityList */
 	if (!g_pGameConf->GetMemSig("gEntList", (void **)&addr) || !addr)
 	{
 		return;
 	}
 	g_EntList = reinterpret_cast<void *>(addr);
+
+	/* g_pGameRules */
+	if (!g_pGameConf->GetMemSig("g_pGameRules", (void **)&addr) || !addr)
+	{
+		return;
+	}
+	g_pGameRules = reinterpret_cast<void **>(addr);
 }
 #endif

From 5849a0d2e248627710d77ae5aa6ba81fabafcd51 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Sat, 24 Nov 2007 03:28:33 +0000
Subject: [PATCH 042/263] The current map played shouldn't appear in MapChooser
 votes or RTV votes now. It can still be nominated in RTV though.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401725
---
 plugins/mapchooser.sp  | 21 +++++++++------------
 plugins/rockthevote.sp |  9 ++++++++-
 2 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/plugins/mapchooser.sp b/plugins/mapchooser.sp
index 2daed5f2..55cea42c 100644
--- a/plugins/mapchooser.sp
+++ b/plugins/mapchooser.sp
@@ -521,30 +521,27 @@ CreateNextVote()
 	}
 	
 	decl String:map[32];
-	new Handle:tempMaps  = CloneArray(g_MapList);
+	new index, Handle:tempMaps  = CloneArray(g_MapList);
+	
+	GetCurrentMap(map, sizeof(map));
+	index = FindStringInArray(tempMaps, map);
+	if (index != -1)
+	{
+		RemoveFromArray(tempMaps, index);
+	}	
 	
 	if (GetConVarInt(g_Cvar_ExcludeMaps) && GetArraySize(tempMaps) > GetConVarInt(g_Cvar_ExcludeMaps))
 	{
 		for (new i = 0; i < GetArraySize(g_OldMapList); i++)
 		{
 			GetArrayString(g_OldMapList, i, map, sizeof(map));
-			new index = FindStringInArray(tempMaps, map);
+			index = FindStringInArray(tempMaps, map);
 			if (index != -1)
 			{
 				RemoveFromArray(tempMaps, index);
 			}
 		}	
 	}
-	else
-	{
-		// If we didn't check against ExcludeMaps, we have to remove the current map.
-		GetCurrentMap(map, sizeof(map));
-		new index = FindStringInArray(tempMaps, map);
-		if (index != -1)
-		{
-			RemoveFromArray(tempMaps, index);			
-		}	
-	}
 
 	new limit = (GetConVarInt(g_Cvar_IncludeMaps) < GetArraySize(tempMaps) ? GetConVarInt(g_Cvar_IncludeMaps) : GetArraySize(tempMaps));
 	for (new i = 0; i < limit; i++)
diff --git a/plugins/rockthevote.sp b/plugins/rockthevote.sp
index cc4b5b50..a57f038a 100644
--- a/plugins/rockthevote.sp
+++ b/plugins/rockthevote.sp
@@ -344,6 +344,13 @@ public Action:Timer_StartRTV(Handle:timer)
 	
 	new Handle:tempMaps  = CloneArray(g_MapList);
 	decl String:map[32];
+
+	GetCurrentMap(map, sizeof(map));
+	new index = FindStringInArray(tempMaps, map);
+	if (index != -1)
+	{
+		RemoveFromArray(tempMaps, index);
+	}	
 	
 	// We assume that g_RTVMapList is within the correct limits, based on the logic for nominations
 	for (new i = 0; i < GetArraySize(g_RTVMapList); i++)
@@ -351,7 +358,7 @@ public Action:Timer_StartRTV(Handle:timer)
 		GetArrayString(g_RTVMapList, i, map, sizeof(map));
 		AddMenuItem(MapVoteMenu, map, map);
 		
-		new index = FindStringInArray(tempMaps, map);
+		index = FindStringInArray(tempMaps, map);
 		if (index != -1)
 		{
 			RemoveFromArray(tempMaps, index);

From ef8db35a49c04992d498151439cd3f1f4b93378e Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Sat, 24 Nov 2007 18:17:00 +0000
Subject: [PATCH 043/263] added SetEntityModel native

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401726
---
 extensions/sdktools/vnatives.cpp       | 24 ++++++++++++++
 gamedata/sdktools.games.ep2.txt        |  5 +++
 gamedata/sdktools.games.txt            | 45 ++++++++++++++++++++++++++
 plugins/include/sdktools_functions.inc | 10 ++++++
 4 files changed, 84 insertions(+)

diff --git a/extensions/sdktools/vnatives.cpp b/extensions/sdktools/vnatives.cpp
index 017084ee..886ad887 100644
--- a/extensions/sdktools/vnatives.cpp
+++ b/extensions/sdktools/vnatives.cpp
@@ -802,6 +802,29 @@ static cell_t sm_GetClientAimTarget(IPluginContext *pContext, const cell_t *para
 	return GetClientAimTarget(pPlayer->GetEdict(), params[2] ? true : false);
 }
 
+static cell_t sm_SetEntityModel(IPluginContext *pContext, const cell_t *params)
+{
+	static ValveCall *pCall = NULL;
+	if (!pCall)
+	{
+		ValvePassInfo pass[1];
+		InitPass(pass[0], Valve_String, PassType_Basic, PASSFLAG_BYVAL);
+		if (!CreateBaseCall("SetEntityModel", ValveCall_Entity, NULL, pass, 1, &pCall))
+		{
+			return pContext->ThrowNativeError("\"SetEntityModel\" not supported by this mod");
+		} else if (!pCall) {
+			return pContext->ThrowNativeError("\"SetEntityModel\" wrapper failed to initialized");
+		}
+	}
+
+	START_CALL();
+	DECODE_VALVE_PARAM(1, thisinfo, 0);
+	DECODE_VALVE_PARAM(2, vparams, 0);
+	FINISH_CALL_SIMPLE(NULL);
+
+	return 1;
+}
+
 sp_nativeinfo_t g_Natives[] = 
 {
 	{"ExtinguishPlayer",		ExtinguishEntity},
@@ -826,5 +849,6 @@ sp_nativeinfo_t g_Natives[] =
 	{"DispatchKeyValueFloat",	DispatchKeyValueFloat},
 	{"DispatchKeyValueVector",	DispatchKeyValueVector},
 	{"GetClientAimTarget",		sm_GetClientAimTarget},
+	{"SetEntityModel",			sm_SetEntityModel},
 	{NULL,						NULL},
 };
diff --git a/gamedata/sdktools.games.ep2.txt b/gamedata/sdktools.games.ep2.txt
index e1caf9b5..51c53b1e 100644
--- a/gamedata/sdktools.games.ep2.txt
+++ b/gamedata/sdktools.games.ep2.txt
@@ -203,6 +203,11 @@
 				"windows"	"27"
 				"linux"		"30"
 			}
+			"SetEntityModel"
+			{
+				"windows"	"23"
+				"linux"		"24"
+			}
 			
 			/**
 			 * THESE ARE DISABLED FOR NOW.
diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index 361cf2b5..b2d75206 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -326,6 +326,11 @@
 				"windows"	"29"
 				"linux"		"32"
 			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
 		}
 	}
 
@@ -399,6 +404,11 @@
 				"windows"	"29"
 				"linux"		"32"
 			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
 		}
 	}
 	
@@ -472,6 +482,11 @@
 				"windows"	"29"
 				"linux"		"32"
 			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
 		}
 	}
 	
@@ -546,6 +561,11 @@
 				"windows"	"39"
 				"linux"		"40"
 			}
+			"SetEntityModel"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
 			
 			/* Temp Entities */
 			"TE_GetServerClass"
@@ -628,6 +648,11 @@
 				"windows"	"29"
 				"linux"		"32"
 			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
 
 			/* Offset into CBaseTempEntity constructor.
 			 * On Windows Dsytopia is heavily inlined; we use the function 
@@ -719,6 +744,11 @@
 				"windows"	"28"
 				"linux"		"31"
 			}
+			"SetEntityModel"
+			{
+				"windows"	"24"
+				"linux"		"25"
+			}
 		}
 	}
 
@@ -813,6 +843,11 @@
 				"windows"	"29"
 				"linux"		"32"
 			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
 			
 			/* Temp Entities */
 			"s_pTempEntities"
@@ -888,6 +923,11 @@
 				"windows"	"34"
 				"linux"		"35"
 			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
 
 			/* Temp Entities */
 			"s_pTempEntities"
@@ -981,6 +1021,11 @@
 				"windows"	"33"
 				"linux"		"36"
 			}
+			"SetEntityModel"
+			{
+				"windows"	"27"
+				"linux"		"28"
+			}
 		}
 	}
 }
diff --git a/plugins/include/sdktools_functions.inc b/plugins/include/sdktools_functions.inc
index 2b7f27c9..4fc3958e 100644
--- a/plugins/include/sdktools_functions.inc
+++ b/plugins/include/sdktools_functions.inc
@@ -254,6 +254,16 @@ native SetTeamScore(index, value);
  */
 native GetTeamClientCount(index);
 
+/**
+ * Sets the model to a given entity.
+ *
+ * @param entity			Entity index.
+ * @param model				Model name.
+ * @noreturn
+ * @error				Invalid entity index, or no mod support.
+ */
+native SetEntityModel(entity, const String:model[]);
+
 /**
  * @deprecated
  */

From 54ad852d723f05820c9bac90bc23f4f357e57792 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 25 Nov 2007 02:45:12 +0000
Subject: [PATCH 044/263] addressed amb1201 - no_mapchange timers now get
 removed right after onmapend

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401727
---
 core/CrazyDebugger.cpp |  2 +-
 core/TimerSys.cpp      | 11 +++--------
 core/TimerSys.h        |  3 +--
 core/sourcemod.cpp     | 16 ++++++++--------
 4 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/core/CrazyDebugger.cpp b/core/CrazyDebugger.cpp
index 287e87d7..7960191d 100644
--- a/core/CrazyDebugger.cpp
+++ b/core/CrazyDebugger.cpp
@@ -29,7 +29,7 @@
  * Version: $Id$
  */
 
-#if defined CRAZY_DEBUG
+#if defined DEBUG
 #include "sm_globals.h"
 #include "sourcemm_api.h"
 #include "Tlhelp32.h"
diff --git a/core/TimerSys.cpp b/core/TimerSys.cpp
index a86945ae..464d4373 100644
--- a/core/TimerSys.cpp
+++ b/core/TimerSys.cpp
@@ -224,11 +224,6 @@ void TimerSystem::OnSourceModShutdown()
 	g_Forwards.ReleaseForward(m_pOnMapTimeLeftChanged);
 }
 
-void TimerSystem::OnSourceModLevelChange(const char *mapName)
-{
-	MapChange(true);
-}
-
 void TimerSystem::OnSourceModLevelEnd()
 {
 	m_bHasMapTickedYet = false;
@@ -423,7 +418,7 @@ void TimerSystem::KillTimer(ITimer *pTimer)
 }
 
 CStack<ITimer *> s_tokill;
-void TimerSystem::MapChange(bool real_mapchange)
+void TimerSystem::RemoveMapChangeTimers()
 {
 	ITimer *pTimer;
 	TimerIter iter;
@@ -431,7 +426,7 @@ void TimerSystem::MapChange(bool real_mapchange)
 	for (iter=m_SingleTimers.begin(); iter!=m_SingleTimers.end(); iter++)
 	{
 		pTimer = (*iter);
-		if (real_mapchange && (pTimer->m_Flags & TIMER_FLAG_NO_MAPCHANGE))
+		if (pTimer->m_Flags & TIMER_FLAG_NO_MAPCHANGE)
 		{
 			s_tokill.push(pTimer);
 		}
@@ -440,7 +435,7 @@ void TimerSystem::MapChange(bool real_mapchange)
 	for (iter=m_LoopTimers.begin(); iter!=m_LoopTimers.end(); iter++)
 	{
 		pTimer = (*iter);
-		if (real_mapchange && (pTimer->m_Flags & TIMER_FLAG_NO_MAPCHANGE))
+		if (pTimer->m_Flags & TIMER_FLAG_NO_MAPCHANGE)
 		{
 			s_tokill.push(pTimer);
 		}
diff --git a/core/TimerSys.h b/core/TimerSys.h
index 3cf0b066..3f040ea3 100644
--- a/core/TimerSys.h
+++ b/core/TimerSys.h
@@ -66,7 +66,6 @@ public:
 	~TimerSystem();
 public: //SMGlobalClass
 	void OnSourceModAllInitialized();
-	void OnSourceModLevelChange(const char *mapName);
 	void OnSourceModLevelEnd();
 	void OnSourceModGameInitialized();
 	void OnSourceModShutdown();
@@ -81,7 +80,7 @@ public: //ITimerSystem
 	bool GetMapTimeLeft(float *pTime);
 public:
 	void RunFrame();
-	void MapChange(bool real_mapchange);
+	void RemoveMapChangeTimers();
 	void GameFrame(bool simulating);
 	IMapTimer *GetMapTimer();
 private:
diff --git a/core/sourcemod.cpp b/core/sourcemod.cpp
index e94ed402..3a30de54 100644
--- a/core/sourcemod.cpp
+++ b/core/sourcemod.cpp
@@ -85,7 +85,6 @@ SourceModBase::SourceModBase()
 {
 	m_IsMapLoading = false;
 	m_ExecPluginReload = false;
-	m_ExecOnMapEnd = false;
 	m_GotBasePath = false;
 }
 
@@ -326,7 +325,6 @@ bool SourceModBase::LevelInit(char const *pMapName, char const *pMapEntities, ch
 
 	m_IsMapLoading = true;
 	m_ExecPluginReload = true;
-	m_ExecOnMapEnd = true;
 
 	/* Notify! */
 	SMGlobalClass *pBase = SMGlobalClass::head;
@@ -368,13 +366,15 @@ void SourceModBase::LevelShutdown()
 			next->OnSourceModLevelEnd();
 			next = next->m_pGlobalClassNext;
 		}
-		g_LevelEndBarrier = false;
-	}
+		
+		if (g_pOnMapEnd != NULL)
+		{
+			g_pOnMapEnd->Execute(NULL);
+		}
 
-	if (g_pOnMapEnd && m_ExecOnMapEnd)
-	{
-		g_pOnMapEnd->Execute(NULL);
-		m_ExecOnMapEnd = false;
+		g_Timers.RemoveMapChangeTimers();
+
+		g_LevelEndBarrier = false;
 	}
 
 	g_OnMapStarted = false;

From 61673e10f6652862055b5d54fd484b670a751c7c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 25 Nov 2007 04:46:18 +0000
Subject: [PATCH 045/263] file copying now works, dialogs re-display at their
 last location, fixed up a bunch of interface mistakes, etc

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401728
---
 tools/installer/CCriticalSection.h  |  37 +++
 tools/installer/CFileList.cpp       | 151 +++++++++++
 tools/installer/CFileList.h         |  40 +++
 tools/installer/ChooseMethod.cpp    |   3 +
 tools/installer/ICopyMethod.h       |   4 +-
 tools/installer/InstallerMain.cpp   |  30 +++
 tools/installer/InstallerMain.h     |   3 +
 tools/installer/InstallerUtil.cpp   |  87 ++++++-
 tools/installer/InstallerUtil.h     |   2 +
 tools/installer/LocalCopyMethod.cpp |  17 +-
 tools/installer/PerformInstall.cpp  | 379 ++++++++++++++++++++--------
 tools/installer/PerformInstall.h    |  12 +
 tools/installer/Resource.h          |  14 +-
 tools/installer/SelectGame.cpp      |   4 +
 tools/installer/Welcome.cpp         |   3 +
 tools/installer/installer.rc        |  47 ++--
 tools/installer/installer.vcproj    |  12 +
 17 files changed, 715 insertions(+), 130 deletions(-)
 create mode 100644 tools/installer/CCriticalSection.h
 create mode 100644 tools/installer/CFileList.cpp
 create mode 100644 tools/installer/CFileList.h

diff --git a/tools/installer/CCriticalSection.h b/tools/installer/CCriticalSection.h
new file mode 100644
index 00000000..bd54dae0
--- /dev/null
+++ b/tools/installer/CCriticalSection.h
@@ -0,0 +1,37 @@
+#ifndef _INCLUDE_INSTALLER_CRIT_SECT_H_
+#define _INCLUDE_INSTALLER_CRIT_SECT_H_
+
+#include "platform_headers.h"
+
+class CCriticalSection
+{
+public:
+	CCriticalSection()
+	{
+		InitializeCriticalSection(&m_crit);
+	}
+	~CCriticalSection()
+	{
+		DeleteCriticalSection(&m_crit);
+	}
+	void Enter()
+	{
+		EnterCriticalSection(&m_crit);
+	}
+	bool TryEnter()
+	{
+		if (TryEnterCriticalSection(&m_crit))
+		{
+			return true;
+		}
+		return false;
+	}
+	void Leave()
+	{
+		LeaveCriticalSection(&m_crit);
+	}
+private:
+	CRITICAL_SECTION m_crit;
+};
+
+#endif //_INCLUDE_INSTALLER_CRIT_SECT_H_
diff --git a/tools/installer/CFileList.cpp b/tools/installer/CFileList.cpp
new file mode 100644
index 00000000..a11f5a34
--- /dev/null
+++ b/tools/installer/CFileList.cpp
@@ -0,0 +1,151 @@
+#include "CFileList.h"
+#include "InstallerUtil.h"
+
+using namespace std;
+
+CFileList::CFileList(const TCHAR *name) : m_TotalSize(0), m_RecursiveSize(0), 
+	m_bGotRecursiveSize(false)
+{
+	UTIL_Format(m_FolderName, sizeof(m_FolderName) / sizeof(TCHAR), _T("%s"), name);
+}
+
+CFileList::~CFileList()
+{
+	list<CFileList *>::iterator iter;
+
+	for (iter = m_folder_list.begin();
+		 iter != m_folder_list.end();
+		 iter++)
+	{
+		delete (*iter);
+	}
+}
+
+const TCHAR *CFileList::GetFolderName()
+{
+	return m_FolderName;
+}
+
+void CFileList::AddFolder(CFileList *pFileList)
+{
+	m_folder_list.push_back(pFileList);
+}
+
+void CFileList::AddFile(const TCHAR *name, unsigned __int64 size)
+{
+	CFileListEntry entry;
+	
+	UTIL_Format(entry.file, sizeof(entry.file) / sizeof(TCHAR), _T("%s"), name);
+	entry.size = size;
+
+	m_file_list.push_back(entry);
+	m_TotalSize += size;
+}
+
+unsigned __int64 CFileList::GetRecursiveSize()
+{
+	if (m_bGotRecursiveSize)
+	{
+		return m_RecursiveSize;
+	}
+
+	m_RecursiveSize = m_TotalSize;
+
+	list<CFileList *>::iterator iter;
+	for (iter = m_folder_list.begin(); iter != m_folder_list.end(); iter++)
+	{
+		m_RecursiveSize += (*iter)->GetRecursiveSize();
+	}
+
+	m_bGotRecursiveSize = true;
+
+	return m_RecursiveSize;
+}
+
+const TCHAR *CFileList::PeekCurrentFile()
+{
+	if (m_file_list.empty())
+	{
+		return NULL;
+	}
+
+	return m_file_list.begin()->file;
+}
+
+void CFileList::PopCurrentFile()
+{
+	m_file_list.erase(m_file_list.begin());
+}
+
+CFileList *CFileList::PeekCurrentFolder()
+{
+	if (m_folder_list.empty())
+	{
+		return NULL;
+	}
+
+	return *(m_folder_list.begin());
+}
+
+void CFileList::PopCurrentFolder()
+{
+	m_folder_list.erase(m_folder_list.begin());
+}
+
+void RecursiveBuildFileList(CFileList *file_list, const TCHAR *current_folder)
+{
+	HANDLE hFind;
+	WIN32_FIND_DATA fd;
+	TCHAR path[MAX_PATH];
+
+	UTIL_PathFormat(path, sizeof(path) / sizeof(TCHAR), _T("%s\\*.*"), current_folder);
+
+	if ((hFind = FindFirstFile(path, &fd)) == INVALID_HANDLE_VALUE)
+	{
+		return;
+	}
+
+	do
+	{
+		if (tstrcasecmp(fd.cFileName, _T(".")) == 0
+			|| tstrcasecmp(fd.cFileName, _T("..")) == 0)
+		{
+			continue;
+		}
+
+		if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
+		{
+			CFileList *pSubList = new CFileList(fd.cFileName);
+
+			UTIL_PathFormat(path,
+				sizeof(path) / sizeof(TCHAR),
+				_T("%s\\%s"), 
+				current_folder,
+				fd.cFileName);			
+
+			RecursiveBuildFileList(pSubList, path);
+
+			file_list->AddFolder(pSubList);
+		}
+		else
+		{
+			LARGE_INTEGER li;
+
+			li.LowPart = fd.nFileSizeLow;
+			li.HighPart = fd.nFileSizeHigh;
+
+			file_list->AddFile(fd.cFileName, li.QuadPart);
+		}
+	} while (FindNextFile(hFind, &fd));
+
+	FindClose(hFind);
+}
+
+CFileList *CFileList::BuildFileList(const TCHAR *name, const TCHAR *root_folder)
+{
+	CFileList *pFileList = new CFileList(name);
+
+	RecursiveBuildFileList(pFileList, root_folder);
+
+	return pFileList;
+}
diff --git a/tools/installer/CFileList.h b/tools/installer/CFileList.h
new file mode 100644
index 00000000..9f7af183
--- /dev/null
+++ b/tools/installer/CFileList.h
@@ -0,0 +1,40 @@
+#ifndef _INCLUDE_FOLDER_LIST_H_
+#define _INCLUDE_FOLDER_LIST_H_
+
+#include "platform_headers.h"
+#include <list>
+#include <vector>
+
+struct CFileListEntry
+{
+	TCHAR file[MAX_PATH];
+	unsigned __int64 size;
+};
+
+class CFileList
+{
+public:
+	CFileList(const TCHAR *name);
+	~CFileList();
+public:
+	CFileList *PeekCurrentFolder();
+	void PopCurrentFolder();
+	const TCHAR *PeekCurrentFile();
+	void PopCurrentFile();
+	const TCHAR *GetFolderName();
+public:
+	void AddFolder(CFileList *pFileList);
+	void AddFile(const TCHAR *name, unsigned __int64 size);
+	unsigned __int64 GetRecursiveSize();
+public:
+	static CFileList *BuildFileList(const TCHAR *name, const TCHAR *root_folder);
+private:
+	std::list<CFileList *> m_folder_list;
+	std::list<CFileListEntry> m_file_list;
+	TCHAR m_FolderName[MAX_PATH];
+	unsigned __int64 m_TotalSize;
+	unsigned __int64 m_RecursiveSize;
+	bool m_bGotRecursiveSize;
+};
+
+#endif //_INCLUDE_FOLDER_LIST_H_
diff --git a/tools/installer/ChooseMethod.cpp b/tools/installer/ChooseMethod.cpp
index 0191030e..11199793 100644
--- a/tools/installer/ChooseMethod.cpp
+++ b/tools/installer/ChooseMethod.cpp
@@ -95,6 +95,7 @@ INT_PTR CALLBACK ChooseMethodHandler(HWND hDlg, UINT message, WPARAM wParam, LPA
 		{
 			if (LOWORD(wParam) == ID_METHOD_BACK)
 			{
+				UpdateGlobalPosition(hDlg);
 				EndDialog(hDlg, (INT_PTR)DisplayWelcome);
 				return (INT_PTR)TRUE;
 			}
@@ -170,6 +171,7 @@ INT_PTR CALLBACK ChooseMethodHandler(HWND hDlg, UINT message, WPARAM wParam, LPA
 					/* If we got a valid games list, we can display the next 
 					 * dialog box.
 					 */
+					UpdateGlobalPosition(hDlg);
 					EndDialog(hDlg, (INT_PTR)DisplaySelectGame);
 					return (INT_PTR)TRUE;
 				}
@@ -178,6 +180,7 @@ INT_PTR CALLBACK ChooseMethodHandler(HWND hDlg, UINT message, WPARAM wParam, LPA
 		}
 	case WM_INITDIALOG:
 		{
+			SetToGlobalPosition(hDlg);
 			return (INT_PTR)TRUE;
 		}
 	}
diff --git a/tools/installer/ICopyMethod.h b/tools/installer/ICopyMethod.h
index af9a2277..cd1c0e03 100644
--- a/tools/installer/ICopyMethod.h
+++ b/tools/installer/ICopyMethod.h
@@ -6,7 +6,9 @@
 class ICopyProgress
 {
 public:
-	virtual void UpdateProgress(float percent_complete) =0;
+	virtual void StartingNewFile(const TCHAR *filename) =0;
+	virtual void UpdateProgress(size_t bytes, size_t total_bytes) =0;
+	virtual void FileDone(size_t file_size) =0;
 };
 
 class ICopyMethod
diff --git a/tools/installer/InstallerMain.cpp b/tools/installer/InstallerMain.cpp
index e3d9515c..3c18f5a7 100644
--- a/tools/installer/InstallerMain.cpp
+++ b/tools/installer/InstallerMain.cpp
@@ -5,6 +5,35 @@
 
 HINSTANCE g_hInstance;
 NEXT_DIALOG next_dialog = DisplayWelcome;
+POINT g_GlobalPosition;
+
+void UpdateGlobalPosition(HWND hWnd)
+{
+	WINDOWINFO wi;
+
+	wi.cbSize = sizeof(WINDOWINFO);
+	if (GetWindowInfo(hWnd, &wi))
+	{
+		g_GlobalPosition.x = wi.rcWindow.left;
+		g_GlobalPosition.y = wi.rcWindow.top;
+	}
+}
+
+void SetToGlobalPosition(HWND hWnd)
+{
+	WINDOWINFO wi;
+	
+	wi.cbSize = sizeof(WINDOWINFO);
+	if (GetWindowInfo(hWnd, &wi))
+	{
+		MoveWindow(hWnd, 
+			g_GlobalPosition.x, 
+			g_GlobalPosition.y, 
+			wi.rcWindow.right - wi.rcWindow.left,
+			wi.rcWindow.bottom - wi.rcWindow.top,
+			TRUE);
+	}
+}
 
 LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 {
@@ -12,6 +41,7 @@ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
 	{
 	case WMU_INIT_INSTALLER:
 		{
+			UpdateGlobalPosition(hWnd);
 			while (next_dialog != NULL)
 			{
 				next_dialog = (NEXT_DIALOG)next_dialog(hWnd);
diff --git a/tools/installer/InstallerMain.h b/tools/installer/InstallerMain.h
index 0fcf359c..e98f316d 100644
--- a/tools/installer/InstallerMain.h
+++ b/tools/installer/InstallerMain.h
@@ -4,6 +4,9 @@
 #include "platform_headers.h"
 #include "Resource.h"
 
+void UpdateGlobalPosition(HWND hWnd);
+void SetToGlobalPosition(HWND hWnd);
+
 typedef void *(*NEXT_DIALOG)(HWND);
 
 extern HINSTANCE g_hInstance;
diff --git a/tools/installer/InstallerUtil.cpp b/tools/installer/InstallerUtil.cpp
index 7a796384..64ebca83 100644
--- a/tools/installer/InstallerUtil.cpp
+++ b/tools/installer/InstallerUtil.cpp
@@ -175,13 +175,13 @@ const TCHAR *GetFileFromPath(const TCHAR *path)
 {
 	size_t len = _tcslen(path);
 
-	for (size_t i = 0;
-		 i >= 0 && i < len - 1;
+	for (size_t i = len - 1;
+		 i >= 0 && i < len;
 		 i--)
 	{
 		if (path[i] == '\\' || path[i] == '/')
 		{
-			return &path[i];
+			return &path[i+1];
 		}
 	}
 
@@ -223,9 +223,90 @@ INT_PTR AskToExit(HWND hWnd)
 
 	if (val == 0 || val == IDYES)
 	{
+		UpdateGlobalPosition(hWnd);
 		EndDialog(hWnd, NULL);
 		return (INT_PTR)TRUE;
 	}
 	
 	return (INT_PTR)FALSE;
 }
+
+size_t UTIL_GetFileSize(const TCHAR *file_path)
+{
+	HANDLE hFile;
+
+	if ((hFile = CreateFile(file_path, 
+		GENERIC_READ,
+		FILE_SHARE_READ,
+		NULL,
+		OPEN_EXISTING,
+		FILE_ATTRIBUTE_NORMAL,
+		NULL)) 
+		!= INVALID_HANDLE_VALUE)
+	{
+		LARGE_INTEGER size;
+
+		if (GetFileSizeEx(hFile, &size))
+		{
+			CloseHandle(hFile);
+			return (size_t)size.QuadPart;
+		}
+
+		CloseHandle(hFile);
+	}
+
+	return 0;
+}
+
+#if 0
+size_t UTIL_GetFolderSize(const TCHAR *basepath)
+{
+	HANDLE hFind;
+	WIN32_FIND_DATA fd;
+	TCHAR search_path[MAX_PATH];
+	size_t total = 0;
+
+	UTIL_PathFormat(search_path,
+		sizeof(search_path) / sizeof(TCHAR),
+		_T("%s\\*.*"),
+		basepath);
+
+	if ((hFind = FindFirstFile(search_path, &fd)) == INVALID_HANDLE_VALUE)
+	{
+		return 0;
+	}
+
+	do
+	{
+		if (tstrcasecmp(fd.cFileName, _T(".")) == 0
+			|| tstrcasecmp(fd.cFileName, _T("..")) == 0)
+		{
+			continue;
+		}
+
+		if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
+		{
+			UTIL_PathFormat(search_path,
+				sizeof(search_path) / sizeof(TCHAR),
+				_T("%s\\%s"),
+				basepath,
+				fd.cFileName);
+			total += UTIL_GetFolderSize(search_path);
+		}
+		else
+		{
+			UTIL_PathFormat(search_path,
+				sizeof(search_path) / sizeof(TCHAR),
+				_T("%s\\%s"),
+				basepath,
+				fd.cFileName);
+
+			total += UTIL_GetFileSize(search_path);
+		}
+	} while (FindNextFile(hFind, &fd));
+
+	FindClose(hFind);
+
+	return total;
+}
+#endif
diff --git a/tools/installer/InstallerUtil.h b/tools/installer/InstallerUtil.h
index a9d0c12c..19daa6cd 100644
--- a/tools/installer/InstallerUtil.h
+++ b/tools/installer/InstallerUtil.h
@@ -12,6 +12,8 @@ int BreakStringA(const char *str, char *out, size_t maxchars);
 size_t AnsiToUnicode(const char *str, wchar_t *buffer, size_t maxchars);
 const TCHAR *GetFileFromPath(const TCHAR *path);
 void GenerateErrorMessage(DWORD err, TCHAR *buffer, size_t maxchars);
+size_t UTIL_GetFileSize(const TCHAR *file_path);
+size_t UTIL_GetFolderSize(const TCHAR *basepath);
 
 INT_PTR AskToExit(HWND hWnd);
 
diff --git a/tools/installer/LocalCopyMethod.cpp b/tools/installer/LocalCopyMethod.cpp
index a6a72ad4..9ccc2391 100644
--- a/tools/installer/LocalCopyMethod.cpp
+++ b/tools/installer/LocalCopyMethod.cpp
@@ -15,9 +15,8 @@ DWORD CALLBACK CopyProgressRoutine(LARGE_INTEGER TotalFileSize,
 {
 	ICopyProgress *progress = (ICopyProgress *)lpData;
 
-	float percent = (float)(TotalBytesTransferred.QuadPart) / (float)(TotalFileSize.QuadPart);
-
-	progress->UpdateProgress(percent);
+	progress->UpdateProgress((size_t)TotalBytesTransferred.QuadPart,
+		(size_t)TotalFileSize.QuadPart);
 
 	return PROGRESS_CONTINUE;
 }
@@ -55,7 +54,7 @@ bool LocalCopyMethod::CreateFolder(const TCHAR *name, TCHAR *buffer, size_t maxc
 		m_CurrentPath,
 		name);
 
-	if (CreateDirectory(name, NULL))
+	if (CreateDirectory(path, NULL))
 	{
 		return true;
 	}
@@ -111,6 +110,11 @@ bool LocalCopyMethod::SendFile(const TCHAR *path, TCHAR *buffer, size_t maxchars
 
 	m_bCancelStatus = FALSE;
 
+	if (m_pProgress != NULL)
+	{
+		m_pProgress->StartingNewFile(filename);
+	}
+
 	if (CopyFileEx(path,
 		new_path,
 		m_pProgress ? CopyProgressRoutine : NULL,
@@ -126,6 +130,11 @@ bool LocalCopyMethod::SendFile(const TCHAR *path, TCHAR *buffer, size_t maxchars
 		return false;
 	}
 
+	if (m_pProgress != NULL)
+	{
+		m_pProgress->FileDone(UTIL_GetFileSize(path));
+	}
+
 	return true;
 }
 
diff --git a/tools/installer/PerformInstall.cpp b/tools/installer/PerformInstall.cpp
index 78e70d67..1b2e54ef 100644
--- a/tools/installer/PerformInstall.cpp
+++ b/tools/installer/PerformInstall.cpp
@@ -1,125 +1,151 @@
 #include "InstallerMain.h"
 #include "InstallerUtil.h"
 #include "PerformInstall.h"
+#include "CCriticalSection.h"
 
-struct folder_t
-{
-	TCHAR path[MAX_PATH];
-};
+#define WMU_INSTALLER_DONE		WM_USER+2
+#define PBAR_RANGE_HIGH			100
+#define PBAR_RANGE_LOW			0
 
 ICopyMethod *g_pCopyMethod = NULL;
-bool do_not_copy_binaries = false;
-TCHAR source_path[MAX_PATH];
+HANDLE g_hCopyThread = NULL;
+copy_thread_args_t g_thread_args = {NULL, NULL, NULL, false, false};
+CCriticalSection g_update_window;
+
+class TrackProgress : public ICopyProgress
+{
+public:
+	void Initialize(HWND hTextBar, HWND hCurBar, HWND hTotalBar, size_t total_size)
+	{
+		m_hTextBar = hTextBar;
+		m_hCurBar = hCurBar;
+		m_hTotalBar = hTotalBar;
+		m_TotalSize = total_size;
+		m_TotalDone = 0;
+		RedrawProgressBars(0.0, 0.0);
+	}
+	void Finished()
+	{
+		RedrawProgressBars(100.0, 100.0);
+	}
+public:
+	void StartingNewFile(const TCHAR *filename)
+	{
+		TCHAR buffer[255];
+
+		if (g_update_window.TryEnter())
+		{
+			UTIL_Format(buffer, sizeof(buffer) / sizeof(TCHAR), _T("Copying: %s"), filename);
+			SendMessage(m_hTextBar, WM_SETTEXT, 0, (LPARAM)buffer);
+			UpdateWindow(m_hTextBar);
+			g_update_window.Leave();
+		}
+	}
+	void UpdateProgress(size_t bytes, size_t total_bytes)
+	{
+		float fCur = (float)bytes / (float)total_bytes;
+		float fTotal = ((float)m_TotalDone + (float)bytes) / (float)m_TotalSize;
+		RedrawProgressBars(fCur, fTotal);
+	}
+	void FileDone(size_t total_size)
+	{
+		m_TotalDone += total_size;
+		RedrawProgressBars(0.0, (float)m_TotalDone / (float)m_TotalSize);
+	}
+private:
+	void RedrawProgressBar(HWND hBar, float fPerc)
+	{
+		/* Get a percentage point in the range */
+		float fPointInRange = (float)(PBAR_RANGE_HIGH - PBAR_RANGE_LOW) * fPerc;
+		int iPointInRange = (int)fPointInRange;
+
+		/* Scale it */
+		iPointInRange += PBAR_RANGE_LOW;
+
+		if (g_update_window.TryEnter())
+		{
+			SendMessage(hBar,
+				PBM_SETPOS,
+				iPointInRange,
+				0);
+			g_update_window.Leave();
+		}
+	}
+	void RedrawProgressBars(float fCurrent, float fTotal)
+	{
+		RedrawProgressBar(m_hCurBar, fCurrent);
+		RedrawProgressBar(m_hTotalBar, fTotal);
+	}
+private:
+	size_t m_TotalSize;
+	size_t m_TotalDone;
+	HWND m_hTextBar;
+	HWND m_hCurBar;
+	HWND m_hTotalBar;
+} s_ProgressTracker;
+
+void CancelPerformInstall()
+{
+	delete g_thread_args.pFileList;
+	g_thread_args.pFileList = NULL;
+}
 
 void SetInstallMethod(ICopyMethod *pCopyMethod)
 {
 	g_pCopyMethod = pCopyMethod;
 }
 
-bool CopyStructureRecursively(const TCHAR *basepath,
+bool CopyStructureRecursively(ICopyMethod *pCopyMethod,
+							  CFileList *pFileList,
+							  const TCHAR *basepath,
 							  const TCHAR *local_path,
 							  TCHAR *errbuf,
 							  size_t maxchars)
 {
-	HANDLE hFind;
-	WIN32_FIND_DATA fd;
-	TCHAR search_path[MAX_PATH];
-	folder_t *folder_list = NULL;
-	unsigned int folder_count = 0;
+	TCHAR file_path[MAX_PATH];
+	const TCHAR *file;
+	CFileList *pSubList;
 
-	if (local_path == NULL)
+	if (!pCopyMethod->SetCurrentFolder(local_path, errbuf, maxchars))
 	{
-		UTIL_PathFormat(search_path,
-			sizeof(search_path) / sizeof(TCHAR),
-			_T("%s\\*.*"),
-			basepath);
-	}
-	else
-	{
-		UTIL_PathFormat(search_path,
-			sizeof(search_path) / sizeof(TCHAR),
-			_T("%s\\%s\\*.*"),
-			basepath,
-			local_path);
-	}
-
-	if (!g_pCopyMethod->SetCurrentFolder(local_path, errbuf, maxchars))
-	{
-		/* :TODO: set fail state */
 		return false;
 	}
 
-	if ((hFind = FindFirstFile(search_path, &fd)) == INVALID_HANDLE_VALUE)
+	/* Copy files */
+	while ((file = pFileList->PeekCurrentFile()) != NULL)
 	{
-		/* :TODO: set a fail state */
-		return false;
-	}
-
-	do
-	{
-		if (tstrcasecmp(fd.cFileName, _T(".")) == 0
-			|| tstrcasecmp(fd.cFileName, _T("..")) == 0)
+		if (local_path == NULL)
 		{
-			continue;
-		}
-
-		if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
-		{
-			/* We cache the folder list so we don't have to keep changing folders back and forth, 
-			 * which could be annoying on a slow copy connection.
-			 */
-			if (folder_list == NULL)
-			{
-				folder_list = (folder_t *)malloc(sizeof(folder_t) * (folder_count + 1));
-			}
-			else
-			{
-				folder_list = (folder_t *)realloc(folder_list, sizeof(folder_t) * (folder_count + 1));
-			}
-
-			UTIL_Format(folder_list[folder_count].path, MAX_PATH, _T("%s"), fd.cFileName);
-			folder_count++;
+			UTIL_PathFormat(file_path,
+				sizeof(file_path) / sizeof(TCHAR),
+				_T("%s\\%s"),
+				basepath,
+				file);
 		}
 		else
 		{
-			TCHAR file_path[MAX_PATH];
-
-			if (local_path == NULL)
-			{
-				UTIL_PathFormat(file_path,
-					sizeof(file_path),
-					_T("%s\\%s"),
-					basepath,
-					fd.cFileName);
-			}
-			else
-			{
-				UTIL_PathFormat(file_path,
-					sizeof(file_path),
-					_T("%s\\%s\\%s"),
-					basepath,
-					local_path,
-					fd.cFileName);
-			}
-
-			if (!g_pCopyMethod->SendFile(file_path, errbuf, maxchars))
-			{
-				FindClose(hFind);
-				free(folder_list);
-				return false;
-			}
+			UTIL_PathFormat(file_path,
+				sizeof(file_path) / sizeof(TCHAR), 
+				_T("%s\\%s\\%s"),
+				basepath,
+				local_path,
+				file);
 		}
-	} while (FindNextFile(hFind, &fd));
 
-	FindClose(hFind);
+		if (!pCopyMethod->SendFile(file_path, errbuf, maxchars))
+		{
+			return false;
+		}
+
+		pFileList->PopCurrentFile();
+	}
 
 	/* Now copy folders */
-	for (unsigned int i = 0; i < folder_count; i++)
+	while ((pSubList = pFileList->PeekCurrentFolder()) != NULL)
 	{
 		/* Try creating the folder */
-		if (!g_pCopyMethod->CreateFolder(folder_list[i].path, errbuf, maxchars))
+		if (!pCopyMethod->CreateFolder(pSubList->GetFolderName(), errbuf, maxchars))
 		{
-			free(folder_list);
 			return false;
 		}
 
@@ -129,7 +155,7 @@ bool CopyStructureRecursively(const TCHAR *basepath,
 			UTIL_PathFormat(new_local_path,
 				sizeof(new_local_path) / sizeof(TCHAR),
 				_T("%s"),
-				folder_list[i].path);
+				pSubList->GetFolderName());
 		}
 		else
 		{
@@ -137,21 +163,107 @@ bool CopyStructureRecursively(const TCHAR *basepath,
 				sizeof(new_local_path) / sizeof(TCHAR),
 				_T("%s\\%s"),
 				local_path,
-				folder_list[i].path);
+				pSubList->GetFolderName());
 		}
 
-		if (!CopyStructureRecursively(basepath, new_local_path, errbuf, maxchars))
+		if (!CopyStructureRecursively(pCopyMethod,
+				pSubList,
+				basepath, 
+				new_local_path, 
+				errbuf, 
+				maxchars))
+		{
+			return false;
+		}
+
+		pFileList->PopCurrentFolder();
+
+		/* Set the current folder again for the next operation */
+		if (!pCopyMethod->SetCurrentFolder(local_path, errbuf, maxchars))
 		{
-			free(folder_list);
 			return false;
 		}
 	}
 
-	free(folder_list);
-
 	return true;
 }
 
+DWORD WINAPI T_CopyFiles(LPVOID arg)
+{
+	bool result = 
+		CopyStructureRecursively(g_thread_args.pCopyMethod,
+		g_thread_args.pFileList,
+		g_thread_args.basepath,
+		NULL,
+		g_thread_args.error,
+		sizeof(g_thread_args.error) / sizeof(TCHAR));
+
+	PostMessage(g_thread_args.hWnd, WMU_INSTALLER_DONE, result ? TRUE : FALSE, 0);
+
+	return 0;
+}
+
+bool StartFileCopy(HWND hWnd)
+{
+	g_thread_args.m_bWasCancelled = false;
+	g_thread_args.hWnd = hWnd;
+	if ((g_hCopyThread = CreateThread(NULL, 
+		0, 
+		T_CopyFiles, 
+		NULL, 
+		0,
+		NULL))
+		== NULL)
+	{
+		MessageBox(
+			hWnd,
+			_T("Could not initialize copy thread."),
+			_T("SourceMod Installer"),
+			MB_OK|MB_ICONERROR);
+		return false;
+	}
+	return true;
+}
+
+void StopFileCopy()
+{
+	g_thread_args.m_bWasCancelled = true;
+	g_pCopyMethod->CancelCurrentCopy();
+
+	if (g_hCopyThread != NULL)
+	{
+		g_update_window.Enter();
+		WaitForSingleObject(g_hCopyThread, INFINITE);
+		g_update_window.Leave();
+		CloseHandle(g_hCopyThread);
+		g_hCopyThread = NULL;
+	}
+}
+
+bool RequestCancelInstall(HWND hWnd)
+{
+	StopFileCopy();
+
+	int val = MessageBox(
+		hWnd,
+		_T("Are you sure you want to cancel the install?"),
+		_T("SourceMod Installer"),
+		MB_YESNO|MB_ICONQUESTION);
+
+	if (val == IDYES)
+	{
+		return true;
+	}
+	
+	if (g_thread_args.pFileList == NULL)
+	{
+		return false;
+	}
+
+	/* Start the thread, note our return value is opposite */
+	return !StartFileCopy(hWnd);
+}
+
 bool StartInstallProcess(HWND hWnd)
 {
 	if (g_pCopyMethod->CheckForExistingInstall())
@@ -164,14 +276,13 @@ bool StartInstallProcess(HWND hWnd)
 
 		if (val == 0 || val == IDYES)
 		{
-			do_not_copy_binaries = true;
 		}
 		else
 		{
-			do_not_copy_binaries = false;
 		}
 	}
 
+#if 0
 	TCHAR cur_path[MAX_PATH];
 	if (_tgetcwd(cur_path, sizeof(cur_path)) == NULL)
 	{
@@ -182,13 +293,20 @@ bool StartInstallProcess(HWND hWnd)
 			MB_OK|MB_ICONERROR);
 		return false;
 	}
+#endif
 
+#if 0
 	UTIL_PathFormat(source_path,
 		sizeof(source_path) / sizeof(TCHAR),
 		_T("%s\\files"),
 		cur_path);
+#else
+	UTIL_PathFormat(g_thread_args.basepath,
+		sizeof(g_thread_args.basepath) / sizeof(TCHAR),
+		_T("C:\\real\\done\\base"));
+#endif
 
-	if (GetFileAttributes(source_path) == INVALID_FILE_ATTRIBUTES)
+	if (GetFileAttributes(g_thread_args.basepath) == INVALID_FILE_ATTRIBUTES)
 	{
 		MessageBox(
 			hWnd,
@@ -198,9 +316,18 @@ bool StartInstallProcess(HWND hWnd)
 		return false;
 	}
 
+	delete g_thread_args.pFileList;
+	g_thread_args.pFileList = CFileList::BuildFileList(_T(""), g_thread_args.basepath);
 
+	s_ProgressTracker.Initialize(
+		GetDlgItem(hWnd, IDC_PROGRESS_CURCOPY),
+		GetDlgItem(hWnd, IDC_PROGRESS_CURRENT),
+		GetDlgItem(hWnd, IDC_PROGRESS_TOTAL),
+		(size_t)g_thread_args.pFileList->GetRecursiveSize());
+	g_pCopyMethod->TrackProgress(&s_ProgressTracker);
+	g_thread_args.pCopyMethod = g_pCopyMethod;
 
-	return true;
+	return StartFileCopy(hWnd);
 }
 
 INT_PTR CALLBACK PerformInstallHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
@@ -209,6 +336,7 @@ INT_PTR CALLBACK PerformInstallHandler(HWND hDlg, UINT message, WPARAM wParam, L
 	{
 	case WM_INITDIALOG:
 		{
+			SetToGlobalPosition(hDlg);
 			return (INT_PTR)TRUE;
 		}
 	case WM_COMMAND:
@@ -216,10 +344,61 @@ INT_PTR CALLBACK PerformInstallHandler(HWND hDlg, UINT message, WPARAM wParam, L
 			if (LOWORD(wParam) == ID_INSTALL_CANCEL
 				|| LOWORD(wParam) == ID_CLOSE)
 			{
-				/* :TODO: enhance */
+				if (RequestCancelInstall(hDlg))
+				{
+					CancelPerformInstall();
+					UpdateGlobalPosition(hDlg);
+					EndDialog(hDlg, NULL);
+				}
+				return (INT_PTR)TRUE;
+			}
+			else if (LOWORD(wParam) == ID_INSTALL_START)
+			{
+				HWND hButton = GetDlgItem(hDlg, ID_INSTALL_START);
+				EnableWindow(hButton, FALSE);
+				StartInstallProcess(hDlg);
+			}
+			break;
+		}
+	case WMU_INSTALLER_DONE:
+		{
+			if (wParam == TRUE)
+			{
+				s_ProgressTracker.Finished();
+				MessageBox(hDlg,
+					_T("SourceMod was successfully installed!  Please visit http://www.sourcemod.net/ for documentation."),
+					_T("SourceMod Installer"),
+					MB_OK);
+				CancelPerformInstall();
+				UpdateGlobalPosition(hDlg);
 				EndDialog(hDlg, NULL);
 				return (INT_PTR)TRUE;
 			}
+			else if (!g_thread_args.m_bWasCancelled)
+			{
+				TCHAR buffer[500];
+
+				UTIL_Format(buffer, 
+					sizeof(buffer) / sizeof(TCHAR), 
+					_T("Encountered error: %s"),
+					g_thread_args.error);
+				int res = MessageBox(hDlg,
+					buffer,
+					_T("SourceMod Installer"),
+					MB_ICONERROR|MB_RETRYCANCEL);
+
+				if (res == IDRETRY)
+				{
+					StartFileCopy(hDlg);
+				}
+				else
+				{
+					CancelPerformInstall();
+					UpdateGlobalPosition(hDlg);
+					EndDialog(hDlg, NULL);
+					return (INT_PTR)TRUE;
+				}
+			}
 			break;
 		}
 	}
diff --git a/tools/installer/PerformInstall.h b/tools/installer/PerformInstall.h
index 82870f94..63081dee 100644
--- a/tools/installer/PerformInstall.h
+++ b/tools/installer/PerformInstall.h
@@ -3,6 +3,18 @@
 
 #include "InstallerMain.h"
 #include "ICopyMethod.h"
+#include "CFileList.h"
+
+struct copy_thread_args_t
+{
+	ICopyMethod *pCopyMethod;
+	CFileList *pFileList;
+	HWND hWnd;
+	bool m_bIsUpgrade;
+	bool m_bWasCancelled;
+	TCHAR basepath[MAX_PATH];
+	TCHAR error[255];
+};
 
 void *DisplayPerformInstall(HWND hWnd);
 void SetInstallMethod(ICopyMethod *pCopyMethod);
diff --git a/tools/installer/Resource.h b/tools/installer/Resource.h
index ce94d3be..f47b0ac0 100644
--- a/tools/installer/Resource.h
+++ b/tools/installer/Resource.h
@@ -30,7 +30,9 @@
 #define IDC_METHOD_LISTEN_SERVER        1008
 #define IDC_SELGAME_LIST                1008
 #define IDC_METHOD_ALONE_SERVER         1009
+#define IDC_PROGRESS_CURRENT            1009
 #define IDC_METHOD_CUSTOM_FOLDER        1010
+#define IDC_PROGRESS_TOTAL              1010
 #define IDC_METHOD_UPLOAD_FTP           1011
 #define ID_SELGAME_NEXT                 1012
 #define ID_SELGAME_EXIT                 1013
@@ -38,10 +40,12 @@
 #define IDC_SELGAME_TEXT                1015
 #define IDC_SELGAME_PANEL               1016
 #define IDD_SELECT_GAME                 1017
-#define IDD_PERFORM_INSTALL				1018
-#define ID_INSTALL_CANCEL				1019
-#define IDC_INSTALL_PANEL				1020
-#define IDC_INSTALL_TEXT				1021
+#define IDD_PERFORM_INSTALL             1018
+#define ID_INSTALL_CANCEL               1019
+#define IDC_INSTALL_PANEL               1020
+#define IDC_INSTALL_TEXT                1021
+#define ID_INSTALL_START                1022
+#define IDC_PROGRESS_CURCOPY            1023
 #define IDC_STATIC                      -1
 #define IDC_WELCOME_TEXT                -1
 #define IDC_METHOD_PANEL                -1
@@ -53,7 +57,7 @@
 #define _APS_NO_MFC                     1
 #define _APS_NEXT_RESOURCE_VALUE        133
 #define _APS_NEXT_COMMAND_VALUE         32771
-#define _APS_NEXT_CONTROL_VALUE         1009
+#define _APS_NEXT_CONTROL_VALUE         1012
 #define _APS_NEXT_SYMED_VALUE           110
 #endif
 #endif
diff --git a/tools/installer/SelectGame.cpp b/tools/installer/SelectGame.cpp
index 87cd8c8a..cd983f04 100644
--- a/tools/installer/SelectGame.cpp
+++ b/tools/installer/SelectGame.cpp
@@ -51,6 +51,8 @@ INT_PTR CALLBACK ChooseGameHandler(HWND hDlg, UINT message, WPARAM wParam, LPARA
 			}
 
 			UpdateWindow(lbox);
+
+			SetToGlobalPosition(hDlg);
 			
 			return (INT_PTR)TRUE;
 		}
@@ -63,6 +65,7 @@ INT_PTR CALLBACK ChooseGameHandler(HWND hDlg, UINT message, WPARAM wParam, LPARA
 			}
 			else if (LOWORD(wParam) == ID_SELGAME_BACK)
 			{
+				UpdateGlobalPosition(hDlg);
 				EndDialog(hDlg, (INT_PTR)DisplayChooseMethod);
 				return (INT_PTR)TRUE;
 			}
@@ -101,6 +104,7 @@ INT_PTR CALLBACK ChooseGameHandler(HWND hDlg, UINT message, WPARAM wParam, LPARA
 				g_LocalCopier.SetOutputPath(game_sel_list[selected_game_index]->mod_path);
 				SetInstallMethod(&g_LocalCopier);
 
+				UpdateGlobalPosition(hDlg);
 				EndDialog(hDlg, (INT_PTR)DisplayPerformInstall);
 
 				return (INT_PTR)TRUE;
diff --git a/tools/installer/Welcome.cpp b/tools/installer/Welcome.cpp
index a4171edb..741091fc 100644
--- a/tools/installer/Welcome.cpp
+++ b/tools/installer/Welcome.cpp
@@ -8,6 +8,7 @@ INT_PTR CALLBACK WelcomeHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM l
 	{
 	case WM_INITDIALOG:
 		{
+			SetToGlobalPosition(hDlg);
 			return (INT_PTR)TRUE;
 		}
 	case WM_COMMAND:
@@ -15,11 +16,13 @@ INT_PTR CALLBACK WelcomeHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM l
 			if (LOWORD(wParam) == ID_WELCOME_EXIT
 				|| LOWORD(wParam) == ID_CLOSE)
 			{
+				UpdateGlobalPosition(hDlg);
 				EndDialog(hDlg, NULL);
 				return (INT_PTR)TRUE;
 			}
 			else if (LOWORD(wParam) == ID_WELCOME_NEXT)
 			{
+				UpdateGlobalPosition(hDlg);
 				EndDialog(hDlg, (INT_PTR)DisplayChooseMethod);
 				return (INT_PTR)TRUE;
 			}
diff --git a/tools/installer/installer.rc b/tools/installer/installer.rc
index 12f36f3f..be5d9eb8 100644
--- a/tools/installer/installer.rc
+++ b/tools/installer/installer.rc
@@ -67,19 +67,21 @@ END
 // Dialog
 //
 
-IDD_WELCOME DIALOGEX 0, 0, 230, 66
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
+IDD_WELCOME DIALOGEX 0, 0, 244, 74
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
 CAPTION "SourceMod Installer"
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
-    DEFPUSHBUTTON   "&Next",ID_WELCOME_NEXT,177,50,50,14
-    GROUPBOX        "",IDC_WELCOME_PANEL,2,3,225,44
-    LTEXT           "Welcome to the SourceMod Installer.  This tool can be used to install SourcecMod to a local server/game installation, or upload SourceMod to a server via FTP.",IDC_WELCOME_TEXT,9,11,209,24
-    DEFPUSHBUTTON   "E&xit",ID_WELCOME_EXIT,2,50,50,14
+    DEFPUSHBUTTON   "&Next",ID_WELCOME_NEXT,191,58,50,14
+    GROUPBOX        "",IDC_WELCOME_PANEL,2,3,239,51
+    LTEXT           "Welcome to the SourceMod Installer.  This tool can be used to install SourcecMod to a local server/game installation, or upload SourceMod to a server via FTP.",IDC_WELCOME_TEXT,9,11,225,42
+    DEFPUSHBUTTON   "E&xit",ID_WELCOME_EXIT,2,58,50,14
 END
 
 IDD_CHOOSE_METHOD DIALOGEX 0, 0, 244, 130
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
 CAPTION "SourceMod Installer"
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
@@ -87,7 +89,7 @@ BEGIN
     PUSHBUTTON      "E&xit",ID_METHOD_EXIT,2,113,50,14
     GROUPBOX        "",IDC_METHOD_PANEL,2,3,239,108
     DEFPUSHBUTTON   "&Back",ID_METHOD_BACK,136,113,50,14
-    GROUPBOX        "",IDC_METHOD_PANEL,17,30,154,69
+    GROUPBOX        "",IDC_METHOD_PANEL,17,30,181,69
     LTEXT           "Please select an installation method:",IDC_METHOD_TEXT,9,15,122,12
     CONTROL         "Steam Dedicated Server",IDC_METHOD_DED_SERVER,"Button",BS_AUTORADIOBUTTON,21,35,98,15
     CONTROL         "Steam Listen Server",IDC_METHOD_LISTEN_SERVER,"Button",BS_AUTORADIOBUTTON,21,46,93,16
@@ -98,7 +100,8 @@ BEGIN
 END
 
 IDD_SELECT_GAME DIALOGEX 0, 0, 244, 130
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
 CAPTION "SourceMod Installer"
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
@@ -107,17 +110,22 @@ BEGIN
     GROUPBOX        "",IDC_SELGAME_PANEL,2,3,239,108
     DEFPUSHBUTTON   "&Back",ID_SELGAME_BACK,136,113,50,14
     LTEXT           "Please select a game:",IDC_SELGAME_TEXT,9,15,122,12
-    LISTBOX         IDC_SELGAME_LIST,17,30,177,69,LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
+    LISTBOX         IDC_SELGAME_LIST,17,30,199,69,LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
 END
 
-IDD_PERFORM_INSTALL DIALOGEX 0, 0, 244, 130
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
+IDD_PERFORM_INSTALL DIALOGEX 0, 0, 243, 116
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
 CAPTION "SourceMod Installer"
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
-    PUSHBUTTON      "&Cancel",ID_INSTALL_CANCEL,2,113,50,14
-    GROUPBOX        "",IDC_INSTALL_PANEL,2,3,239,108
-    LTEXT           "Please wait while SourceMod is installed...",IDC_INSTALL_TEXT,9,15,122,12
+    PUSHBUTTON      "&Cancel",ID_INSTALL_CANCEL,2,99,50,14
+    GROUPBOX        "",IDC_INSTALL_PANEL,2,3,239,93
+    LTEXT           "Click ""Install"" to begin copying the SourceMod files.",IDC_INSTALL_TEXT,9,15,175,13
+    CONTROL         "",IDC_PROGRESS_CURRENT,"msctls_progress32",WS_BORDER | 0x1,5,50,232,17
+    CONTROL         "",IDC_PROGRESS_TOTAL,"msctls_progress32",WS_BORDER | 0x1,5,73,232,17
+    PUSHBUTTON      "&Install",ID_INSTALL_START,191,99,50,14
+    LTEXT           "",IDC_PROGRESS_CURCOPY,9,34,175,11
 END
 
 
@@ -160,9 +168,9 @@ BEGIN
     IDD_WELCOME, DIALOG
     BEGIN
         LEFTMARGIN, 2
-        RIGHTMARGIN, 227
+        RIGHTMARGIN, 241
         TOPMARGIN, 3
-        BOTTOMMARGIN, 64
+        BOTTOMMARGIN, 72
     END
 
     IDD_CHOOSE_METHOD, DIALOG
@@ -172,6 +180,11 @@ BEGIN
         TOPMARGIN, 3
         BOTTOMMARGIN, 127
     END
+
+    IDD_PERFORM_INSTALL, DIALOG
+    BEGIN
+        BOTTOMMARGIN, 113
+    END
 END
 #endif    // APSTUDIO_INVOKED
 
diff --git a/tools/installer/installer.vcproj b/tools/installer/installer.vcproj
index 818e9c1c..2de0a1b2 100644
--- a/tools/installer/installer.vcproj
+++ b/tools/installer/installer.vcproj
@@ -175,6 +175,10 @@
 			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
 			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
 			>
+			<File
+				RelativePath=".\CFileList.cpp"
+				>
+			</File>
 			<File
 				RelativePath=".\GamesList.cpp"
 				>
@@ -193,6 +197,14 @@
 			Filter="h;hpp;hxx;hm;inl;inc;xsd"
 			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
 			>
+			<File
+				RelativePath=".\CCriticalSection.h"
+				>
+			</File>
+			<File
+				RelativePath=".\CFileList.h"
+				>
+			</File>
 			<File
 				RelativePath=".\GamesList.h"
 				>

From 8d6139ad5c7704bd9e5a6c8788cd26678e42a77b Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 25 Nov 2007 18:03:59 +0000
Subject: [PATCH 046/263] new game list code, detects steam accounts and
 dynamically shows you which games are under each one

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401729
---
 tools/installer/ChooseMethod.cpp |  29 +-
 tools/installer/ChooseMethod.h   |   3 +
 tools/installer/GamesList.cpp    | 626 +++++++++++++++++--------------
 tools/installer/GamesList.h      |  47 ++-
 tools/installer/Resource.h       |   4 +-
 tools/installer/SelectGame.cpp   |  97 +++--
 tools/installer/installer.rc     |  15 +-
 7 files changed, 493 insertions(+), 328 deletions(-)

diff --git a/tools/installer/ChooseMethod.cpp b/tools/installer/ChooseMethod.cpp
index 11199793..a3790f52 100644
--- a/tools/installer/ChooseMethod.cpp
+++ b/tools/installer/ChooseMethod.cpp
@@ -5,6 +5,7 @@
 #include "GamesList.h"
 #include "SelectGame.h"
 
+game_group_t *g_game_group = NULL;
 unsigned int method_chosen = 0;
 TCHAR method_path[MAX_PATH];
 
@@ -160,12 +161,32 @@ INT_PTR CALLBACK ChooseMethodHandler(HWND hDlg, UINT message, WPARAM wParam, LPA
 
 				if (game_type != 0)
 				{
-					int reason;
+					g_game_group = NULL;
 
-					if ((reason = FindGames(game_type)) < 1)
+					BuildGameDB();
+
+					if (game_type == GAMES_DEDICATED)
 					{
-						DisplayBadGamesDialog(hDlg, game_type, reason);
-						break;
+						g_game_group = &g_games.dedicated;
+					}
+					else if (game_type == GAMES_LISTEN)
+					{
+						g_game_group = &g_games.listen;
+					}
+					else if (game_type == GAMES_STANDALONE)
+					{
+						g_game_group = &g_games.standalone;
+					}
+					
+					if (g_game_group == NULL)
+					{
+						return (INT_PTR)TRUE;
+					}
+
+					if (g_game_group->list_count == 0)
+					{
+						DisplayBadGamesDialog(hDlg, g_game_group->error_code);
+						return (INT_PTR)TRUE;
 					}
 
 					/* If we got a valid games list, we can display the next 
diff --git a/tools/installer/ChooseMethod.h b/tools/installer/ChooseMethod.h
index 21459a8f..4b1f2b21 100644
--- a/tools/installer/ChooseMethod.h
+++ b/tools/installer/ChooseMethod.h
@@ -2,7 +2,10 @@
 #define _INCLUDE_INSTALLER_CHOOSE_METHOD_H_
 
 #include "InstallerMain.h"
+#include "GamesList.h"
 
 void *DisplayChooseMethod(HWND hWnd);
 
+extern game_group_t *g_game_group;
+
 #endif //_INCLUDE_INSTALLER_CHOOSE_METHOD_H_
diff --git a/tools/installer/GamesList.cpp b/tools/installer/GamesList.cpp
index 2d93c697..340b8fc3 100644
--- a/tools/installer/GamesList.cpp
+++ b/tools/installer/GamesList.cpp
@@ -3,8 +3,30 @@
 #include "InstallerMain.h"
 #include <stdio.h>
 
-mod_info_t *g_mod_list = NULL;
-unsigned int g_mod_count = 0;
+game_database_t g_games = 
+{
+	NULL, 0, 
+	{NULL, 0, GAME_LIST_NO_GAMES}, 
+	{NULL, 0, GAME_LIST_NO_GAMES}, 
+	{NULL, 0, GAME_LIST_NO_GAMES}
+};
+
+valve_game_t valve_game_list[] = 
+{
+	{_T("counter-strike source"),		_T("cstrike"),	SOURCE_ENGINE_2004},
+	{_T("day of defeat source"),		_T("dod"),		SOURCE_ENGINE_2004},
+	{_T("half-life 2 deathmatch"),		_T("hl2mp"),	SOURCE_ENGINE_2004},
+	{_T("half-life deathmatch source"),	_T("hl1mp"),	SOURCE_ENGINE_2004},
+	{_T("team fortress 2"),				_T("tf"),		SOURCE_ENGINE_2007},
+	{NULL,								NULL,			0},
+};
+
+valve_game_t valve_server_list[] = 
+{
+	{_T("source dedicated server"),		NULL,			SOURCE_ENGINE_2004},
+	{_T("source 2007 dedicated server"), NULL,			SOURCE_ENGINE_2007},
+	{NULL,								NULL,			0},
+};
 
 int IsValidFolder(const TCHAR *path)
 {
@@ -64,30 +86,80 @@ void DisplayBadFolderDialog(HWND hDlg, int reason)
 		MB_OK|MB_ICONWARNING);
 }
 
-void AddModToList(mod_info_t **mod_list,
-				  unsigned int *total_mods,
-				  const mod_info_t *mod_info)
+game_list_t *MakeGameList(const TCHAR *name)
 {
-	mod_info_t *mods = *mod_list;
-	unsigned int total = *total_mods;
+	game_list_t *gl = (game_list_t *)malloc(sizeof(game_list_t));
 
-	if (mods == NULL)
+	UTIL_Format(gl->root_name, 
+		sizeof(gl->root_name) / sizeof(TCHAR),
+		_T("%s"),
+		name);
+	gl->game_count = 0;
+	gl->games = NULL;
+
+	return gl;
+}
+
+void AttachGameListToGroup(game_group_t *group, game_list_t *gl)
+{
+	if (group->lists == NULL)
 	{
-		mods = (mod_info_t *)malloc(sizeof(mod_info_t));
+		group->lists = (game_list_t **)malloc(sizeof(game_list_t *));
 	}
 	else
 	{
-		mods = (mod_info_t *)realloc(mods, sizeof(mod_info_t) * (total + 1));
+		group->lists = (game_list_t **)realloc(group->lists,
+			sizeof(game_list_t *) * (group->list_count + 1));
 	}
 
-	memcpy(&mods[total], mod_info, sizeof(mod_info_t));
-	total++;
-
-	*mod_list = mods;
-	*total_mods = total;
+	group->lists[group->list_count] = gl;
+	group->list_count++;
 }
 
-void TryToAddMod(const TCHAR *path, int eng_type, mod_info_t **mod_list, unsigned *total_mods)
+void AttachModToGameList(game_list_t *gl, unsigned int mod_id)
+{
+	if (gl->games == NULL)
+	{
+		gl->games = (unsigned int *)malloc(sizeof(unsigned int));
+	}
+	else
+	{
+		gl->games = (unsigned int *)realloc(gl->games, 
+			sizeof(unsigned int) * (gl->game_count + 1));
+	}
+
+	gl->games[gl->game_count] = mod_id;
+	gl->game_count++;
+}
+
+unsigned int AddModToList(game_database_t *db, const game_info_t *mod_info)
+{
+	/* Check if a matching game already exists */
+	for (unsigned int i = 0; i < db->game_count; i++)
+	{
+		if (tstrcasecmp(mod_info->game_path, db->game_list[i].game_path) == 0)
+		{
+			return i;
+		}
+	}
+
+	if (db->game_list == NULL)
+	{
+		db->game_list = (game_info_t *)malloc(sizeof(game_info_t));
+	}
+	else
+	{
+		db->game_list = (game_info_t *)realloc(db->game_list, 
+			sizeof(game_info_t) * (db->game_count + 1));
+	}
+
+	memcpy(&db->game_list[db->game_count], mod_info, sizeof(game_info_t));
+	db->game_count++;
+
+	return db->game_count - 1;
+}
+
+bool TryToAddMod(const TCHAR *path, int eng_type, game_database_t *db, unsigned int *id)
 {
 	FILE *fp;
 	TCHAR gameinfo_path[MAX_PATH];
@@ -99,7 +171,7 @@ void TryToAddMod(const TCHAR *path, int eng_type, mod_info_t **mod_list, unsigne
 
 	if ((fp = _tfopen(gameinfo_path, _T("rt"))) == NULL)
 	{
-		return;
+		return false;
 	}
 
 	int pos;
@@ -117,23 +189,41 @@ void TryToAddMod(const TCHAR *path, int eng_type, mod_info_t **mod_list, unsigne
 		}
 		if (strcmp(key, "game") == 0)
 		{
-			mod_info_t mod;
+			game_info_t mod;
+			unsigned int got_id;
+
 			AnsiToUnicode(value, mod.name, sizeof(mod.name));
-			UTIL_Format(mod.mod_path, sizeof(mod.mod_path), _T("%s"), path);
+			UTIL_Format(mod.game_path, sizeof(mod.game_path), _T("%s"), path);
 			mod.source_engine = eng_type;
-			AddModToList(mod_list, total_mods, &mod);
+
+			got_id = AddModToList(db, &mod);
+
+			if (id != NULL)
+			{
+				*id = got_id;
+			}
+
+			fclose(fp);
+
+			return true;
 		}
 	}
 
 	fclose(fp);
+
+	return false;
 }
 
-void AddModsFromFolder(const TCHAR *path, int eng_type, mod_info_t **mod_list, unsigned int *total_mods)
+void AddModsFromFolder(const TCHAR *path,
+					   int eng_type,
+					   game_database_t *db,
+					   game_list_t *gl)
 {
 	HANDLE hFind;
 	WIN32_FIND_DATA fd;
 	TCHAR temp_path[MAX_PATH];
 	TCHAR search_path[MAX_PATH];
+	unsigned int mod_id;
 
 	UTIL_Format(search_path,
 		sizeof(search_path),
@@ -163,30 +253,60 @@ void AddModsFromFolder(const TCHAR *path, int eng_type, mod_info_t **mod_list, u
 			_T("%s\\%s"),
 			path,
 			fd.cFileName);
-		TryToAddMod(temp_path, eng_type, mod_list, total_mods);
-
+		if (TryToAddMod(temp_path, eng_type, db, &mod_id))
+		{
+			AttachModToGameList(gl, mod_id);
+		}
 	} while (FindNextFile(hFind, &fd));
 
 	FindClose(hFind);
 }
 
-void AddValveModsFromFolder(const TCHAR *path,
-							unsigned int game_type,
-							mod_info_t **mod_list,
-							unsigned int *total_mods)
+void GetSteamGames(game_database_t *db)
 {
+	HKEY hkPath;
+	DWORD dwLen, dwType;
 	HANDLE hFind;
 	WIN32_FIND_DATA fd;
 	TCHAR temp_path[MAX_PATH];
-	TCHAR search_path[MAX_PATH];
+	TCHAR steam_path[MAX_PATH];
+	TCHAR steamapps_path[MAX_PATH];
 
-	UTIL_PathFormat(search_path,
-		sizeof(search_path) / sizeof(TCHAR),
-		_T("%s\\*.*"),
-		path);
-
-	if ((hFind = FindFirstFile(search_path, &fd)) == INVALID_HANDLE_VALUE)
+	if (RegOpenKeyEx(HKEY_CURRENT_USER,
+		_T("Software\\Valve\\Steam"),
+		0,
+		KEY_READ,
+		&hkPath) != ERROR_SUCCESS)
 	{
+		db->listen.error_code = GAME_LIST_CANT_READ;
+		db->dedicated.error_code = GAME_LIST_CANT_READ;
+		return;
+	}
+
+	dwLen = sizeof(steam_path) / sizeof(TCHAR);
+	if (RegQueryValueEx(hkPath,
+		_T("SteamPath"),
+		NULL,
+		&dwType,
+		(LPBYTE)steam_path,
+		&dwLen) != ERROR_SUCCESS)
+	{
+		RegCloseKey(hkPath);
+		db->listen.error_code = GAME_LIST_CANT_READ;
+		db->dedicated.error_code = GAME_LIST_CANT_READ;
+		return;
+	}
+
+	UTIL_PathFormat(steamapps_path,
+		sizeof(steamapps_path) / sizeof(TCHAR),
+		_T("%s\\steamapps\\*.*"),
+		steam_path);
+
+	if ((hFind = FindFirstFile(steamapps_path, &fd)) == INVALID_HANDLE_VALUE)
+	{
+		RegCloseKey(hkPath);
+		db->listen.error_code = GAME_LIST_CANT_READ;
+		db->dedicated.error_code = GAME_LIST_CANT_READ;
 		return;
 	}
 
@@ -203,263 +323,163 @@ void AddValveModsFromFolder(const TCHAR *path,
 			continue;
 		}
 
-		TCHAR *mod_folder = NULL;
-		int eng_type = SOURCE_ENGINE_UNKNOWN;
+		/* If we get a folder called "SourceMods," look for third party mods */
+		if (tstrcasecmp(fd.cFileName, _T("SourceMods")) == 0)
+		{
+			game_list_t *gl = MakeGameList(_T("Third-Party Games"));
 
-		if (game_type == GAMES_LISTEN)
-		{
-			if (tstrcasecmp(fd.cFileName, _T( "counter-strike source")) == 0)
-			{
-				mod_folder = _T("cstrike");
-			}
-			else if (tstrcasecmp(fd.cFileName, _T("day of defeat source")) == 0)
-			{
-				mod_folder = _T("dod");
-			}
-			else if (tstrcasecmp(fd.cFileName, _T("half-life 2 deathmatch")) == 0)
-			{
-				mod_folder = _T("hl2mp");
-			}
-			else if (tstrcasecmp(fd.cFileName, _T("half-life deathmatch source")) == 0)
-			{
-				mod_folder = _T("hl1mp");
-			}
-			else if (tstrcasecmp(fd.cFileName, _T("team fortress 2")) == 0)
-			{
-				mod_folder = _T("tf");
-				eng_type = SOURCE_ENGINE_2007;
-			}
-		}
-		else if (game_type == GAMES_DEDICATED)
-		{
-			if (tstrcasecmp(fd.cFileName, _T("source dedicated server")) == 0)
-			{
-				UTIL_PathFormat(temp_path,
-					sizeof(temp_path) / sizeof(TCHAR),
-					_T("%s\\%s"),
-					path,
-					fd.cFileName);
-				AddModsFromFolder(temp_path, SOURCE_ENGINE_2004, mod_list, total_mods);
-			}
-			else if (tstrcasecmp(fd.cFileName, _T("source 2007 dedicated server")) == 0)
-			{
-				UTIL_PathFormat(temp_path,
-					sizeof(temp_path) / sizeof(TCHAR),
-					_T("%s\\%s"),
-					path,
-					fd.cFileName);
-				AddModsFromFolder(temp_path, SOURCE_ENGINE_2007, mod_list, total_mods);
-			}
-		}
-
-		if (mod_folder != NULL)
-		{
 			UTIL_PathFormat(temp_path,
 				sizeof(temp_path) / sizeof(TCHAR),
-				_T("%s\\%s\\%s"),
-				path,
-				fd.cFileName,
-				mod_folder);
-			TryToAddMod(temp_path, eng_type, mod_list, total_mods);
+				_T("%s\\steamapps\\%s"),
+				steam_path,
+				fd.cFileName);
+
+			AddModsFromFolder(temp_path, SOURCE_ENGINE_UNKNOWN, db, gl);
+
+			if (gl->game_count)
+			{
+				AttachGameListToGroup(&db->listen, gl);
+			}
+			else
+			{
+				free(gl);
+			}
+		}
+		else
+		{
+			/* Look for listenserver games */
+			game_list_t *gl = MakeGameList(fd.cFileName);
+
+			for (unsigned int i = 0; valve_game_list[i].folder != NULL; i++)
+			{
+				unsigned int mod_id;
+				UTIL_PathFormat(temp_path,
+					sizeof(temp_path) / sizeof(TCHAR),
+					_T("%s\\steamapps\\%s\\%s\\%s"),
+					steam_path,
+					fd.cFileName,
+					valve_game_list[i].folder,
+					valve_game_list[i].subfolder);
+				if (TryToAddMod(temp_path, valve_game_list[i].eng_type, db, &mod_id))
+				{
+					AttachModToGameList(gl, mod_id);
+				}
+			}
+
+			if (gl->game_count)
+			{
+				AttachGameListToGroup(&db->listen, gl);
+			}
+			else
+			{
+				free(gl);
+			}
+
+			/* Look for dedicated games */
+			gl = MakeGameList(fd.cFileName);
+
+			for (unsigned int i = 0; valve_server_list[i].folder != NULL; i++)
+			{
+				UTIL_PathFormat(temp_path,
+					sizeof(temp_path) / sizeof(TCHAR),
+					_T("%s\\steamapps\\%s\\%s"),
+					steam_path,
+					fd.cFileName,
+					valve_server_list[i].folder);
+				AddModsFromFolder(temp_path, valve_server_list[i].eng_type, db, gl);
+			}
+
+			if (gl->game_count)
+			{
+				AttachGameListToGroup(&db->dedicated, gl);
+			}
+			else
+			{
+				free(gl);
+			}
 		}
 
 	} while (FindNextFile(hFind, &fd));
 
 	FindClose(hFind);
+	RegCloseKey(hkPath);
 }
 
-int BuildGameList(unsigned int game_type, mod_info_t **mod_list)
+void GetStandaloneGames(game_database_t *db)
 {
-	unsigned int total_mods = 0;
-	
-	if (game_type == GAMES_LISTEN
-		|| game_type == GAMES_DEDICATED)
-	{
-		HKEY hkPath;
-		DWORD dwLen, dwType;
-		HANDLE hFind;
-		WIN32_FIND_DATA fd;
-		TCHAR temp_path[MAX_PATH];
-		TCHAR steam_path[MAX_PATH];
-		TCHAR steamapps_path[MAX_PATH];
-
-		if (RegOpenKeyEx(HKEY_CURRENT_USER,
-			_T("Software\\Valve\\Steam"),
-			0,
-			KEY_READ,
-			&hkPath) != ERROR_SUCCESS)
-		{
-			DWORD err = GetLastError();
-			return GAME_LIST_CANT_READ;
-		}
-
-		dwLen = sizeof(steam_path) / sizeof(TCHAR);
-		if (RegQueryValueEx(hkPath,
-			_T("SteamPath"),
-			NULL,
-			&dwType,
-			(LPBYTE)steam_path,
-			&dwLen) != ERROR_SUCCESS)
-		{
-			RegCloseKey(hkPath);
-			return GAME_LIST_CANT_READ;
-		}
-
-		UTIL_PathFormat(steamapps_path,
-			sizeof(steamapps_path) / sizeof(TCHAR),
-			_T("%s\\steamapps\\*.*"),
-			steam_path);
-
-		if ((hFind = FindFirstFile(steamapps_path, &fd)) == INVALID_HANDLE_VALUE)
-		{
-			RegCloseKey(hkPath);
-			return GAME_LIST_CANT_READ;
-		}
-
-		do 
-		{
-			if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY)
-			{
-				continue;
-			}
-
-			if (tstrcasecmp(fd.cFileName, _T(".")) == 0
-				|| tstrcasecmp(fd.cFileName, _T("..")) == 0)
-			{
-				continue;
-			}
-
-			/* If we get a folder called "SourceMods," look for third party mods */
-			if (game_type == GAMES_LISTEN 
-				&& tstrcasecmp(fd.cFileName, _T("SourceMods")) == 0)
-			{
-				UTIL_PathFormat(temp_path,
-					sizeof(temp_path) / sizeof(TCHAR),
-					_T("%s\\steamapps\\%s"),
-					steam_path,
-					fd.cFileName);
-				AddModsFromFolder(temp_path, SOURCE_ENGINE_UNKNOWN, mod_list, &total_mods);
-			}
-			else
-			{
-				UTIL_PathFormat(temp_path,
-					sizeof(temp_path) / sizeof(TCHAR),
-					_T("%s\\steamapps\\%s"),
-					steam_path,
-					fd.cFileName);
-				AddValveModsFromFolder(temp_path, game_type, mod_list, &total_mods);
-			}
-
-		} while (FindNextFile(hFind, &fd));
-
-		FindClose(hFind);
-		RegCloseKey(hkPath);
-	}
-	else if (game_type == GAMES_STANDALONE)
-	{
-		HKEY hkPath;
-		int eng_type = SOURCE_ENGINE_UNKNOWN;
-		DWORD dwLen, dwType, dwAttr;
-		TCHAR temp_path[MAX_PATH];
-		TCHAR hlds_path[MAX_PATH];
-
-		if (RegOpenKeyEx(HKEY_CURRENT_USER,
-			_T("Software\\Valve\\HLServer"),
-			0,
-			KEY_READ,
-			&hkPath) != ERROR_SUCCESS)
-		{
-			return GAME_LIST_CANT_READ;
-		}
-
-		dwLen = sizeof(hlds_path) / sizeof(TCHAR);
-		if (RegQueryValueEx(hkPath,
-			_T("InstallPath"),
-			NULL,
-			&dwType,
-			(LPBYTE)hlds_path,
-			&dwLen) != ERROR_SUCCESS)
-		{
-			RegCloseKey(hkPath);
-			return GAME_LIST_CANT_READ;
-		}
-
-		/* Make sure there is a "srcds.exe" file */
-		UTIL_PathFormat(temp_path,
-			sizeof(temp_path) / sizeof(TCHAR), 
-			_T("%s\\srcds.exe"), 
-			hlds_path);
-		dwAttr = GetFileAttributes(temp_path);
-		if (dwAttr == INVALID_FILE_ATTRIBUTES)
-		{
-			return GAME_LIST_HALFLIFE1;
-		}
-
-		/* If there is an "orangebox" sub folder, we can make a better guess 
-		 * at the engine state.
-		 */
-		UTIL_PathFormat(temp_path,
-			sizeof(temp_path) / sizeof(TCHAR), 
-			_T("%s\\orangebox"), 
-			hlds_path);
-		dwAttr = GetFileAttributes(temp_path);
-		if (dwAttr != INVALID_FILE_ATTRIBUTES
-			&& ((dwAttr & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY))
-		{
-			eng_type = SOURCE_ENGINE_2004;
-			AddModsFromFolder(temp_path, SOURCE_ENGINE_2007, mod_list, &total_mods);
-		}
-
-		/* Add everything from the server */
-		AddModsFromFolder(hlds_path, eng_type, mod_list, &total_mods);
-
-		RegCloseKey(hkPath);
-	}
-
-	return (g_mod_list == NULL) ? GAME_LIST_NO_GAMES : (int)total_mods;
-}
-
-void FreeGameList(mod_info_t *mod_list)
-{
-	free(mod_list);
-}
-
-int _SortModList(const void *item1, const void *item2)
-{
-	const mod_info_t *mod1 = (const mod_info_t *)item1;
-	const mod_info_t *mod2 = (const mod_info_t *)item2;
-
-	return tstrcasecmp(mod1->name, mod2->name);
-}
-
-int FindGames(unsigned int game_type)
-{
-	int reason;
-
-	ReleaseGamesList();
-
-	if ((reason = BuildGameList(game_type, &g_mod_list)) > 0)
-	{
-		g_mod_count = (unsigned)reason;
-		qsort(g_mod_list, g_mod_count, sizeof(mod_info_t), _SortModList);
-	}
-
-	return reason;
-}
-
-void ReleaseGamesList()
-{
-	if (g_mod_list == NULL)
+	HKEY hkPath;
+	DWORD dwLen, dwType, dwAttr;
+	TCHAR temp_path[MAX_PATH];
+	TCHAR hlds_path[MAX_PATH];
+	game_list_t *games_standalone;
+
+	if (RegOpenKeyEx(HKEY_CURRENT_USER,
+		_T("Software\\Valve\\HLServer"),
+		0,
+		KEY_READ,
+		&hkPath) != ERROR_SUCCESS)
 	{
+		db->standalone.error_code = GAME_LIST_CANT_READ;
 		return;
 	}
 
-	free(g_mod_list);
-	g_mod_list = NULL;
-	g_mod_count = 0;
+	dwLen = sizeof(hlds_path) / sizeof(TCHAR);
+	if (RegQueryValueEx(hkPath,
+		_T("InstallPath"),
+		NULL,
+		&dwType,
+		(LPBYTE)hlds_path,
+		&dwLen) != ERROR_SUCCESS)
+	{
+		RegCloseKey(hkPath);
+		db->standalone.error_code = GAME_LIST_CANT_READ;
+		return;
+	}
+
+	/* Make sure there is a "srcds.exe" file */
+	UTIL_PathFormat(temp_path,
+		sizeof(temp_path) / sizeof(TCHAR), 
+		_T("%s\\srcds.exe"), 
+		hlds_path);
+	dwAttr = GetFileAttributes(temp_path);
+	if (dwAttr == INVALID_FILE_ATTRIBUTES)
+	{
+		db->standalone.error_code = GAME_LIST_HALFLIFE1;
+		return;
+	}
+
+	games_standalone = MakeGameList(_T("Standalone"));
+
+	/* If there is an "orangebox" sub folder, we can make a better guess 
+	 * at the engine state.
+	 */
+	UTIL_PathFormat(temp_path,
+		sizeof(temp_path) / sizeof(TCHAR), 
+		_T("%s\\orangebox"), 
+		hlds_path);
+	dwAttr = GetFileAttributes(temp_path);
+	if (dwAttr != INVALID_FILE_ATTRIBUTES
+		&& ((dwAttr & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY))
+	{
+		AddModsFromFolder(temp_path, SOURCE_ENGINE_2007, db, games_standalone);
+	}
+
+	/* Add everything from the server */
+	AddModsFromFolder(hlds_path, SOURCE_ENGINE_2004, db, games_standalone);
+
+	if (games_standalone->game_count)
+	{
+		AttachGameListToGroup(&db->standalone, games_standalone);
+	}
+	else
+	{
+		free(games_standalone);
+	}
+
+	RegCloseKey(hkPath);
 }
 
-void DisplayBadGamesDialog(HWND hWnd, unsigned int game_type, int reason)
+void DisplayBadGamesDialog(HWND hWnd, int reason)
 {
 	TCHAR message[256];
 	UINT idc = 0;
@@ -494,3 +514,61 @@ void DisplayBadGamesDialog(HWND hWnd, unsigned int game_type, int reason)
 		_T("SourceMod Installer"),
 		MB_OK|MB_ICONWARNING);
 }
+
+int _ModIdCompare(const void *item1, const void *item2)
+{
+	unsigned int mod_id1 = *(unsigned int *)item1;
+	unsigned int mod_id2 = *(unsigned int *)item2;
+
+	return tstrcasecmp(g_games.game_list[mod_id1].name, g_games.game_list[mod_id2].name);
+}
+
+int _GroupCompare(const void *item1, const void *item2)
+{
+	game_list_t *g1 = *(game_list_t **)item1;
+	game_list_t *g2 = *(game_list_t **)item2;
+
+	return tstrcasecmp(g1->root_name, g2->root_name);
+}
+
+void SortGameGroup(game_group_t *group)
+{
+	qsort(group->lists, group->list_count, sizeof(game_list_t *), _GroupCompare);
+
+	for (unsigned int i = 0; i < group->list_count; i++)
+	{
+		qsort(group->lists[i]->games,
+			  group->lists[i]->game_count,
+			  sizeof(unsigned int),
+			  _ModIdCompare);
+	}
+}
+
+void BuildGameDB()
+{
+	ReleaseGameDB();
+	GetStandaloneGames(&g_games);
+	GetSteamGames(&g_games);
+	SortGameGroup(&g_games.dedicated);
+	SortGameGroup(&g_games.listen);
+	SortGameGroup(&g_games.standalone);
+}
+
+void ReleaseGameGroup(game_group_t *group)
+{
+	for (unsigned int i = 0; i < group->list_count; i++)
+	{
+		free(group->lists[i]->games);
+		free(group->lists[i]);
+	}
+	free(group->lists);
+}
+
+void ReleaseGameDB()
+{
+	ReleaseGameGroup(&g_games.dedicated);
+	ReleaseGameGroup(&g_games.listen);
+	ReleaseGameGroup(&g_games.standalone);
+	free(g_games.game_list);
+	memset(&g_games, 0, sizeof(g_games));
+}
diff --git a/tools/installer/GamesList.h b/tools/installer/GamesList.h
index 5b26fadb..2242575a 100644
--- a/tools/installer/GamesList.h
+++ b/tools/installer/GamesList.h
@@ -19,21 +19,54 @@
 #define SOURCE_ENGINE_2004			1
 #define SOURCE_ENGINE_2007			2
 
-struct mod_info_t
+struct valve_game_t
+{
+	const TCHAR *folder;
+	const TCHAR *subfolder;
+	int eng_type;
+};
+
+/* One game */
+struct game_info_t
 {
 	TCHAR name[128];
-	TCHAR mod_path[MAX_PATH];
+	TCHAR game_path[MAX_PATH];
 	int source_engine;
 };
 
+/* A list of games under one "account" */
+struct game_list_t
+{
+	TCHAR root_name[128];
+	unsigned int *games;
+	unsigned int game_count;
+};
+
+/* A list of accounts */
+struct game_group_t
+{
+	game_list_t **lists;
+	unsigned int list_count;
+	int error_code;
+};
+
+/* All games on the system */
+struct game_database_t
+{
+	game_info_t *game_list;
+	unsigned int game_count;
+	game_group_t dedicated;
+	game_group_t listen;
+	game_group_t standalone;
+};
+
 int IsValidFolder(const TCHAR *path);
 void DisplayBadFolderDialog(HWND hWnd, int reason);
 
-int FindGames(unsigned int game_type);
-void DisplayBadGamesDialog(HWND hWnd, unsigned int game_type, int reason);
-void ReleaseGamesList();
+void BuildGameDB();
+void ReleaseGameDB();
+void DisplayBadGamesDialog(HWND hWnd, int reason);
 
-extern mod_info_t *g_mod_list;
-extern unsigned int g_mod_count;
+extern game_database_t g_games;
 
 #endif //_INCLUDE_INSTALLER_GAMES_LIST_H_
diff --git a/tools/installer/Resource.h b/tools/installer/Resource.h
index f47b0ac0..7ab83304 100644
--- a/tools/installer/Resource.h
+++ b/tools/installer/Resource.h
@@ -44,6 +44,8 @@
 #define ID_INSTALL_CANCEL               1019
 #define IDC_INSTALL_PANEL               1020
 #define IDC_INSTALL_TEXT                1021
+#define IDC_COMBO3                      1021
+#define IDC_SELGROUP_ACCOUNT            1021
 #define ID_INSTALL_START                1022
 #define IDC_PROGRESS_CURCOPY            1023
 #define IDC_STATIC                      -1
@@ -57,7 +59,7 @@
 #define _APS_NO_MFC                     1
 #define _APS_NEXT_RESOURCE_VALUE        133
 #define _APS_NEXT_COMMAND_VALUE         32771
-#define _APS_NEXT_CONTROL_VALUE         1012
+#define _APS_NEXT_CONTROL_VALUE         1022
 #define _APS_NEXT_SYMED_VALUE           110
 #endif
 #endif
diff --git a/tools/installer/SelectGame.cpp b/tools/installer/SelectGame.cpp
index cd983f04..d90153e5 100644
--- a/tools/installer/SelectGame.cpp
+++ b/tools/installer/SelectGame.cpp
@@ -7,50 +7,56 @@
 #include "LocalCopyMethod.h"
 
 int selected_game_index = -1;
-mod_info_t **game_sel_list = NULL;
-unsigned int game_sel_count = 0;
 
-void AppendSelectableGame(mod_info_t *mod)
+void UpdateGameListBox(HWND hDlg, game_list_t *gl)
 {
-	if (game_sel_list == NULL)
-	{
-		game_sel_list = 
-			(mod_info_t **)malloc(sizeof(mod_info_t *) * (game_sel_count + 1));
-	}
-	else
-	{
-		game_sel_list = 
-			(mod_info_t **)realloc(game_sel_list, 
-			sizeof(mod_info_t *) * (game_sel_count + 1));
-	}
+	HWND lbox = GetDlgItem(hDlg, IDC_SELGAME_LIST);
 
-	game_sel_list[game_sel_count++] = mod;
+	SendMessage(lbox, LB_RESETCONTENT, 0, 0);
+
+	for (unsigned int i = 0; i < gl->game_count; i++)
+	{
+		LRESULT res = SendMessage(lbox,
+			LB_ADDSTRING,
+			0,
+			(LPARAM)g_games.game_list[gl->games[i]].name);
+
+		if (res == LB_ERR || res == LB_ERRSPACE)
+		{
+			continue;
+		}
+
+		SendMessage(lbox, LB_SETITEMDATA, i, gl->games[i]);
+	}
+	
+	UpdateWindow(lbox);
 }
 
+#include "windowsx.h"
+
 INT_PTR CALLBACK ChooseGameHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
 {
 	switch (message)
 	{
 	case WM_INITDIALOG:
 		{
-			HWND lbox = GetDlgItem(hDlg, IDC_SELGAME_LIST);
-
-			for (unsigned int i = 0; i < g_mod_count; i++)
+			HWND cbox = GetDlgItem(hDlg, IDC_SELGROUP_ACCOUNT);
+			SendMessage(cbox, CB_RESETCONTENT, 0, 0);
+			for (unsigned int i = 0; i < g_game_group->list_count; i++)
 			{
-				LRESULT res = SendMessage(lbox,
-					LB_ADDSTRING,
-					0,
-					(LPARAM)g_mod_list[i].name);
-
-				if (res == LB_ERR || res == LB_ERRSPACE)
+				LRESULT res = SendMessage(cbox, 
+					CB_ADDSTRING, 
+					0, 
+					(LPARAM)g_game_group->lists[i]->root_name);
+				if (res == CB_ERR || res == CB_ERRSPACE)
 				{
 					continue;
 				}
-
-				AppendSelectableGame(&g_mod_list[i]);
+				SendMessage(cbox, CB_SETITEMDATA, i, (LPARAM)g_game_group->lists[i]);
 			}
-
-			UpdateWindow(lbox);
+			SendMessage(cbox, CB_SETCURSEL, 0, 0);
+			UpdateWindow(cbox);
+			UpdateGameListBox(hDlg, g_game_group->lists[0]);
 
 			SetToGlobalPosition(hDlg);
 			
@@ -69,6 +75,29 @@ INT_PTR CALLBACK ChooseGameHandler(HWND hDlg, UINT message, WPARAM wParam, LPARA
 				EndDialog(hDlg, (INT_PTR)DisplayChooseMethod);
 				return (INT_PTR)TRUE;
 			}
+			else if (LOWORD(wParam) == IDC_SELGROUP_ACCOUNT)
+			{
+				if (HIWORD(wParam) == CBN_SELCHANGE)
+				{
+					HWND cbox = (HWND)lParam;
+					LRESULT cursel = SendMessage(cbox, CB_GETCURSEL, 0, 0);
+
+					if (cursel == LB_ERR)
+					{
+						break;
+					}
+
+					LRESULT data = SendMessage(cbox, CB_GETITEMDATA, cursel, 0);
+					if (data == CB_ERR)
+					{
+						break;
+					}
+
+					game_list_t *gl = (game_list_t *)data;
+					UpdateGameListBox(hDlg, gl);
+				}
+				break;
+			}
 			else if (LOWORD(wParam) == IDC_SELGAME_LIST)
 			{
 				if (HIWORD(wParam) == LBN_SELCHANGE)
@@ -83,12 +112,13 @@ INT_PTR CALLBACK ChooseGameHandler(HWND hDlg, UINT message, WPARAM wParam, LPARA
 						break;
 					}
 
-					if (cursel >= (LRESULT)g_mod_count)
+					LRESULT item = SendMessage(lbox, LB_GETITEMDATA, cursel, 0);
+					if (item == LB_ERR)
 					{
 						break;
 					}
 
-					selected_game_index = (int)cursel;
+					selected_game_index = (int)item;
 
 					HWND button = GetDlgItem(hDlg, ID_SELGAME_NEXT);
 					EnableWindow(button, TRUE);
@@ -101,7 +131,7 @@ INT_PTR CALLBACK ChooseGameHandler(HWND hDlg, UINT message, WPARAM wParam, LPARA
 					break;
 				}
 
-				g_LocalCopier.SetOutputPath(game_sel_list[selected_game_index]->mod_path);
+				g_LocalCopier.SetOutputPath(g_games.game_list[selected_game_index].game_path);
 				SetInstallMethod(&g_LocalCopier);
 
 				UpdateGlobalPosition(hDlg);
@@ -113,10 +143,7 @@ INT_PTR CALLBACK ChooseGameHandler(HWND hDlg, UINT message, WPARAM wParam, LPARA
 		}
 	case WM_DESTROY:
 		{
-			ReleaseGamesList();
-			free(game_sel_list);
-			game_sel_list = NULL;
-			game_sel_count = 0;
+			ReleaseGameDB();
 			break;
 		}
 	}
diff --git a/tools/installer/installer.rc b/tools/installer/installer.rc
index be5d9eb8..51287cd1 100644
--- a/tools/installer/installer.rc
+++ b/tools/installer/installer.rc
@@ -99,18 +99,19 @@ BEGIN
     CONTROL         "Upload via FTP",IDC_METHOD_UPLOAD_FTP,"Button",BS_AUTORADIOBUTTON,21,82,94,16
 END
 
-IDD_SELECT_GAME DIALOGEX 0, 0, 244, 130
+IDD_SELECT_GAME DIALOGEX 0, 0, 244, 148
 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_APPWINDOW
 CAPTION "SourceMod Installer"
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
-    PUSHBUTTON      "&Next",ID_SELGAME_NEXT,191,113,50,14,WS_DISABLED
-    PUSHBUTTON      "E&xit",ID_SELGAME_EXIT,2,113,50,14
-    GROUPBOX        "",IDC_SELGAME_PANEL,2,3,239,108
-    DEFPUSHBUTTON   "&Back",ID_SELGAME_BACK,136,113,50,14
-    LTEXT           "Please select a game:",IDC_SELGAME_TEXT,9,15,122,12
-    LISTBOX         IDC_SELGAME_LIST,17,30,199,69,LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "&Next",ID_SELGAME_NEXT,191,131,50,14,WS_DISABLED
+    PUSHBUTTON      "E&xit",ID_SELGAME_EXIT,2,131,50,14
+    GROUPBOX        "",IDC_SELGAME_PANEL,2,3,239,126
+    DEFPUSHBUTTON   "&Back",ID_SELGAME_BACK,136,131,50,14
+    LTEXT           "Please select a game from the list below.  If there are multiple accounts, you may select one from the combo-box.",IDC_SELGAME_TEXT,7,14,221,16
+    LISTBOX         IDC_SELGAME_LIST,17,46,199,76,LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_SELGROUP_ACCOUNT,17,32,133,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
 END
 
 IDD_PERFORM_INSTALL DIALOGEX 0, 0, 243, 116

From 5c97afc2f55796a6da2f2a72eba8bf6fa298614e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 25 Nov 2007 18:06:49 +0000
Subject: [PATCH 047/263] manual folder selection now works

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401730
---
 tools/installer/ChooseMethod.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/tools/installer/ChooseMethod.cpp b/tools/installer/ChooseMethod.cpp
index a3790f52..fa3fb2da 100644
--- a/tools/installer/ChooseMethod.cpp
+++ b/tools/installer/ChooseMethod.cpp
@@ -4,6 +4,8 @@
 #include "Welcome.h"
 #include "GamesList.h"
 #include "SelectGame.h"
+#include "PerformInstall.h"
+#include "LocalCopyMethod.h"
 
 game_group_t *g_game_group = NULL;
 unsigned int method_chosen = 0;
@@ -156,6 +158,12 @@ INT_PTR CALLBACK ChooseMethodHandler(HWND hDlg, UINT message, WPARAM wParam, LPA
 							DisplayBadFolderDialog(hDlg, val);
 							break;
 						}
+
+						g_LocalCopier.SetOutputPath(method_path);
+						SetInstallMethod(&g_LocalCopier);
+
+						UpdateGlobalPosition(hDlg);
+						EndDialog(hDlg, (INT_PTR)DisplayPerformInstall);
 					}
 				}
 

From 6545c3e08c08d62e923ce955cbdbeab611c75bbc Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 25 Nov 2007 18:50:13 +0000
Subject: [PATCH 048/263] small clarification to param2 in MenuAction_End

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401731
---
 plugins/include/menus.inc | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/plugins/include/menus.inc b/plugins/include/menus.inc
index 7bac6f76..46537ab2 100644
--- a/plugins/include/menus.inc
+++ b/plugins/include/menus.inc
@@ -54,7 +54,10 @@ enum MenuAction
 	MenuAction_Display = (1<<1),	/**< A menu is about to be displayed (param1=client, param2=MenuPanel Handle) */
 	MenuAction_Select = (1<<2),		/**< An item was selected (param1=client, param2=item) */
 	MenuAction_Cancel = (1<<3),		/**< The menu was cancelled (param1=client, param2=reason) */
-	MenuAction_End = (1<<4),		/**< A menu display has fully ended (param1=reason, param2=cancel reason) */
+	MenuAction_End = (1<<4),		/**< A menu display has fully ended.
+										 param1 is the MenuEnd reason, and if it's MenuEnd_Cancelled, then 
+										 param2 is the MenuCancel reason from MenuAction_Cancel.
+										 */
 	MenuAction_VoteEnd = (1<<5),	/**< (VOTE ONLY): A vote sequence has succeeded (param1=chosen item) 
 										 This is not called if SetVoteResultCallback has been used on the menu. */
 	MenuAction_VoteStart = (1<<6), 	/**< (VOTE ONLY): A vote sequence has started (nothing passed) */

From d5ddb0ce79e8d98e5f98164bdde71f7e58a99f8e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 25 Nov 2007 20:58:48 +0000
Subject: [PATCH 049/263] installer now defaults to center of primary monitor

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401732
---
 tools/installer/PerformInstall.cpp | 17 ++++++++++++++++-
 tools/installer/Welcome.cpp        | 11 ++++++++++-
 tools/installer/installer.rc       |  2 +-
 3 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/tools/installer/PerformInstall.cpp b/tools/installer/PerformInstall.cpp
index 1b2e54ef..0e07bd9b 100644
--- a/tools/installer/PerformInstall.cpp
+++ b/tools/installer/PerformInstall.cpp
@@ -143,6 +143,19 @@ bool CopyStructureRecursively(ICopyMethod *pCopyMethod,
 	/* Now copy folders */
 	while ((pSubList = pFileList->PeekCurrentFolder()) != NULL)
 	{
+		if (g_thread_args.m_bIsUpgrade)
+		{
+			/* :TODO: put this somewhere else because it technically 
+			 * means the progress bars get calculated wrong 
+			 */
+			if (tstrcasecmp(pSubList->GetFolderName(), _T("cfg")) == 0
+				|| tstrcasecmp(pSubList->GetFolderName(), _T("configs")) == 0)
+			{
+				pFileList->PopCurrentFolder();
+				continue;
+			}
+		}
+
 		/* Try creating the folder */
 		if (!pCopyMethod->CreateFolder(pSubList->GetFolderName(), errbuf, maxchars))
 		{
@@ -270,15 +283,17 @@ bool StartInstallProcess(HWND hWnd)
 	{
 		int val = MessageBox(
 			hWnd, 
-			_T("It looks like a previous SourceMod installation exists.  Do you want to upgrade?  Select \"Yes\" to upgrade and keep configuration files.  Select \"No\" to perform a full re-install."),
+			_T("It looks like a previous SourceMod installation exists.  Select \"Yes\" to skip copying configuration files.  Select \"No\" to perform a full re-install."),
 			_T("SourceMod Installer"), 
 			MB_YESNO|MB_ICONQUESTION);
 
 		if (val == 0 || val == IDYES)
 		{
+			g_thread_args.m_bIsUpgrade = true;
 		}
 		else
 		{
+			g_thread_args.m_bIsUpgrade = false;
 		}
 	}
 
diff --git a/tools/installer/Welcome.cpp b/tools/installer/Welcome.cpp
index 741091fc..7f4337f8 100644
--- a/tools/installer/Welcome.cpp
+++ b/tools/installer/Welcome.cpp
@@ -2,13 +2,22 @@
 #include "Welcome.h"
 #include "ChooseMethod.h"
 
+bool g_bIsFirstRun = true;
+
 INT_PTR CALLBACK WelcomeHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
 {
 	switch (message)
 	{
 	case WM_INITDIALOG:
 		{
-			SetToGlobalPosition(hDlg);
+			if (!g_bIsFirstRun)
+			{
+				SetToGlobalPosition(hDlg);
+			}
+			else
+			{
+				g_bIsFirstRun = false;
+			}
 			return (INT_PTR)TRUE;
 		}
 	case WM_COMMAND:
diff --git a/tools/installer/installer.rc b/tools/installer/installer.rc
index 51287cd1..3519b27f 100644
--- a/tools/installer/installer.rc
+++ b/tools/installer/installer.rc
@@ -68,7 +68,7 @@ END
 //
 
 IDD_WELCOME DIALOGEX 0, 0, 244, 74
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_CAPTION | WS_SYSMENU
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_APPWINDOW
 CAPTION "SourceMod Installer"
 FONT 8, "MS Shell Dlg", 400, 0, 0x1

From 5e0cc6cd354db1b25b9138853ce719d81a439014 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 27 Nov 2007 01:58:05 +0000
Subject: [PATCH 050/263] amb1207 - AcceptEntityInput on TF2

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401733
---
 gamedata/sdktools.games.ep2.txt | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/gamedata/sdktools.games.ep2.txt b/gamedata/sdktools.games.ep2.txt
index 51c53b1e..c3b25f00 100644
--- a/gamedata/sdktools.games.ep2.txt
+++ b/gamedata/sdktools.games.ep2.txt
@@ -208,16 +208,11 @@
 				"windows"	"23"
 				"linux"		"24"
 			}
-			
-			/**
-			 * THESE ARE DISABLED FOR NOW.
-			 
 			"AcceptInput"
 			{
 				"windows"	"34"
 				"linux"		"35"
 			}
-			 */
 		}
 	}
 }

From 4d63d44155b93a94cba7a81034440f455235a9c5 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 27 Nov 2007 01:59:38 +0000
Subject: [PATCH 051/263] amb1206 - g_pGameRules for TF

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401734
---
 gamedata/sdktools.games.ep2.txt | 40 +++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gamedata/sdktools.games.ep2.txt b/gamedata/sdktools.games.ep2.txt
index c3b25f00..7fc52211 100644
--- a/gamedata/sdktools.games.ep2.txt
+++ b/gamedata/sdktools.games.ep2.txt
@@ -138,6 +138,46 @@
 		}
 	}
 
+	/* General GameRules */
+	"#default"
+	{
+		"#supported"
+		{
+			"game"		"tf"
+		}
+		
+		"Offsets"
+		{
+			/* Offset into CreateGameRulesObject */
+			"g_pGameRules"
+			{
+				"windows"	"2"
+			}
+		}
+		
+		"Signatures"
+		{
+			/* This signature sometimes has multiple matches, but this
+			 * does not matter as g_pGameRules is involved in all of them.
+			 * The same g_pGameRules offset applies to each match.
+			 *
+			 * Sometimes this block of bytes is at the beginning of the static
+			 * CreateGameRulesObject function and sometimes it is in the middle
+			 * of an entirely different function. This depends on the game.
+			 */
+			"CreateGameRulesObject"
+			{
+				"library"	"server"
+				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x6A\x01\xFF\xD2"
+			}
+			"g_pGameRules"
+			{
+				"library"	"server"
+				"linux"		"@g_pGameRules"
+			}
+		}
+	}
+
 	/* Team Fortress 2 Offsets */
 	"tf"
 	{

From b98edf88b6474f346a899488138c12e11da09bf5 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 27 Nov 2007 02:19:39 +0000
Subject: [PATCH 052/263] added amb1191 - absolute paths

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401735
---
 core/sourcemod.cpp        | 21 ++++++++++++++++++---
 plugins/include/files.inc | 26 ++++++++++++++++++++++++--
 public/ISourceMod.h       |  9 +++++++++
 3 files changed, 51 insertions(+), 5 deletions(-)

diff --git a/core/sourcemod.cpp b/core/sourcemod.cpp
index 3a30de54..26d9b22c 100644
--- a/core/sourcemod.cpp
+++ b/core/sourcemod.cpp
@@ -443,20 +443,35 @@ size_t SourceModBase::BuildPath(PathType type, char *buffer, size_t maxlength, c
 	vsnprintf(_buffer, PLATFORM_MAX_PATH, format, ap);
 	va_end(ap);
 
+	/* If we get a "file://" notation, strip off the file:// part so we're left 
+	 * with an absolute path.  Note that the absolute path gets returned, so 
+	 * usage with relative paths here is completely invalid.
+	 */
+	if (type != Path_SM_Rel && strncmp(_buffer, "file://", 7) == 0)
+	{
+		return g_LibSys.PathFormat(buffer, maxlength, "%s", &_buffer[7]);
+	}
+
 	const char *base = NULL;
 	if (type == Path_Game)
 	{
 		base = GetGamePath();
-	} else if (type == Path_SM) {
+	}
+	else if (type == Path_SM)
+	{
 		base = GetSourceModPath();
-	} else if (type == Path_SM_Rel) {
+	}
+	else if (type == Path_SM_Rel)
+	{
 		base = m_SMRelDir;
 	}
 
 	if (base)
 	{
 		return g_LibSys.PathFormat(buffer, maxlength, "%s/%s", base, _buffer);
-	} else {
+	}
+	else
+	{
 		return g_LibSys.PathFormat(buffer, maxlength, "%s", _buffer);
 	}
 }
diff --git a/plugins/include/files.inc b/plugins/include/files.inc
index 6dacc5ed..41aa979a 100644
--- a/plugins/include/files.inc
+++ b/plugins/include/files.inc
@@ -35,7 +35,22 @@
 #endif
 #define _files_included
 
-/* @global All paths in SourceMod natives are relative to the mod folder unless otherwise noted. */
+/**
+ * @global All paths in SourceMod natives are relative to the mod folder 
+ * unless otherwise noted.
+ *
+ * Most functions in SourceMod (at least, ones that deal with direct 
+ * file manipulation) will support an alternate path specification.
+ *
+ * If the path starts with the string "file://" and the PathType is 
+ * not relative, then the "file://" portion is stripped off, and the 
+ * rest of the path is used without any modification (except for 
+ * correcting slashes).  This can be used to override the path 
+ * builder to supply alternate absolute paths.  Examples:
+ *
+ * file://C:/Temp/file.txt
+ * file:///tmp/file.txt
+ */
 
 /**
  * File inode types.
@@ -72,7 +87,9 @@ enum PathType
 };
 
 /**
- * Builds a path relative to the SourceMod folder.
+ * Builds a path relative to the SourceMod folder.  This should be used instead of 
+ * directly referencing addons/sourcemod, in case users change the name of their 
+ * folder layout.
  *
  * @param type			Type of path to build as the base.
  * @param buffer		Buffer to store the path.
@@ -85,8 +102,10 @@ native BuildPath(PathType:type, String:buffer[], maxlength, const String:fmt[],
 
 /**
  * Opens a directory/folder for contents enumeration.
+ *
  * @note Directories are closed with CloseHandle().
  * @note Directories Handles can be cloned.
+ * @note OpenDirectory() supports the "file://" notation.
  *
  * @param path			Path to open.
  * @return				A Handle to the directory, INVALID_HANDLE on open error.
@@ -95,6 +114,7 @@ native Handle:OpenDirectory(const String:path[]);
 
 /**
  * Reads the current directory entry as a local filename, then moves to the next file.
+ *
  * @note Contents of buffers are undefined when returning false.
  * @note Both the '.' and '..' automatic directory entries will be retrieved for Windows and Linux.
  * 
@@ -109,8 +129,10 @@ native bool:ReadDirEntry(Handle:dir, String:buffer[], maxlength, &FileType:type=
 
 /**
  * Opens a file.
+ *
  * @note Files are closed with CloseHandle().
  * @note File Handles can be cloned.
+ * @note OpenFile() supports the "file://" notation.
  *
  * @param file			File to open.
  * @param mode			Open mode.
diff --git a/public/ISourceMod.h b/public/ISourceMod.h
index af39d30b..ae5f0851 100644
--- a/public/ISourceMod.h
+++ b/public/ISourceMod.h
@@ -95,6 +95,15 @@ namespace SourceMod
 		/**
 		 * @brief Builds a platform path for a specific target base path.
 		 *
+		 * If the path starts with the string "file://" and the PathType is 
+		 * not relative, then the "file://" portion is stripped off, and the 
+		 * rest of the path is used without any modification (except for 
+		 * correcting slashes).  This can be used to override the path 
+		 * builder to supply alternate absolute paths.  Examples:
+		 *
+		 * file://C:/Temp/file.txt
+		 * file:///tmp/file.txt
+		 *
 		 * @param type		Type of path to use as a base.
 		 * @param buffer	Buffer to write to.
 		 * @param maxlength	Size of buffer.

From c92048fefb474f5ab8afc744b94257891cf974bf Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 27 Nov 2007 17:25:16 +0000
Subject: [PATCH 053/263] fixed a rare parsing bug where too many tokens would
 be detected if the staging buffer was broken directly before the second
 quotation mark in a key string

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401736
---
 core/TextParsers.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/core/TextParsers.cpp b/core/TextParsers.cpp
index 73f65b12..51c23227 100644
--- a/core/TextParsers.cpp
+++ b/core/TextParsers.cpp
@@ -408,8 +408,8 @@ SMCError TextParsers::ParseStream_SMC(void *stream,
 			{
 				if (in_quote)
 				{
-					/* If i was 0, this case is impossible due to reparsing */
-					if ((i != 0) && c == '"' && parse_point[i-1] != '\\')
+					/* If i was 0, we could have reparsed, so make sure there's no buffer underrun */
+					if ((&parse_point[i] != in_buf) && c == '"' && parse_point[i-1] != '\\')
 					{
 						/* If we reached a quote in an ignore phase,
 						 * we're staging a string and we must rotate it out.

From 34b7563160b34b607413fc9448662c807962734c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 27 Nov 2007 22:50:52 +0000
Subject: [PATCH 054/263] added DS's patch from amb1179

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401737
---
 public/compat_wrappers.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/public/compat_wrappers.h b/public/compat_wrappers.h
index 282f8782..7ad7e484 100644
--- a/public/compat_wrappers.h
+++ b/public/compat_wrappers.h
@@ -41,7 +41,7 @@
 	}
 	inline void InsertServerCommand(const char *buf)
 	{
-		engine->ServerCommand(buf);
+		engine->InsertServerCommand(buf);
 	}
 #else
 	class CCommand

From 97e77c520e43afb702c878d628453077ab9ffe0e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 28 Nov 2007 16:00:18 +0000
Subject: [PATCH 055/263] fixed a spelling mistake

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401738
---
 plugins/include/sourcemod.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc
index c9b7efa2..acbcdeca 100644
--- a/plugins/include/sourcemod.inc
+++ b/plugins/include/sourcemod.inc
@@ -148,7 +148,7 @@ forward OnMapEnd();
 /**
  * Called when the map has loaded, servercfgfile (server.cfg) has been 
  * executed, and all plugin configs are done executing.  This is the best
- * place to inialize plugin functions which are based on cvar data.  
+ * place to initialize plugin functions which are based on cvar data.  
  *
  * @note This will always be called once and only once per map.  It will be 
  * called after OnMapStart().

From 5d23282b071cc3a7b4ce035be6cdf086d4d986bf Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 30 Nov 2007 15:50:32 +0000
Subject: [PATCH 056/263] improved docs on sdktools sound functions

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401739
---
 plugins/include/sdktools_sound.inc | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/plugins/include/sdktools_sound.inc b/plugins/include/sdktools_sound.inc
index bc5df843..93fd2372 100644
--- a/plugins/include/sdktools_sound.inc
+++ b/plugins/include/sdktools_sound.inc
@@ -124,7 +124,7 @@ enum
 /**
  * Prefetches a sound.
  *
- * @param name		Sound file name.
+ * @param name		Sound file name relative to the "sounds" folder.
  * @noreturn
  */
 native PrefetchSound(const String:nane[]);
@@ -132,7 +132,7 @@ native PrefetchSound(const String:nane[]);
 /**
  * Gets a sound's duration (does not work for mp3s).
  *
- * @param name		Sound file name.
+ * @param name		Sound file name relative to the "sounds" folder.
  * @return			Duration in seconds.
  */
 native Float:GetSoundDuration(const String:name[]);
@@ -140,9 +140,9 @@ native Float:GetSoundDuration(const String:name[]);
 /**
  * Emits an ambient sound.
  *
- * @param entity	Entity index to associate sound with.
+ * @param name		Sound file name relative to the "sounds" folder.
  * @param pos		Origin of sound.
- * @param name		Sound file name.
+ * @param entity	Entity index to associate sound with.
  * @param level		Sound level (from 0 to 255).
  * @param flags		Sound flags.
  * @param vol		Volume (from 0.0 to 1.0).
@@ -177,7 +177,7 @@ native FadeClientVolume(client, Float:percent, Float:outtime, Float:holdtime, Fl
  *
  * @param entity	Entity index.
  * @param channel	Channel number.
- * @param name		Sound name.
+ * @param name		Sound file name relative to the "sounds" folder.
  * @noreturn
  */
 native StopSound(entity, channel, const String:name[]);
@@ -187,9 +187,9 @@ native StopSound(entity, channel, const String:name[]);
  *
  * @param clients		Array of client indexes.
  * @param numClients	Number of clients in the array.
+ * @param sample		Sound file name relative to the "sounds" folder.
  * @param entity		Entity to emit from.
  * @param channel		Channel to emit with.
- * @param sample		Sound name.
  * @param level			Sound level.
  * @param flags			Sound flags.
  * @param volume		Sound volume.
@@ -224,9 +224,9 @@ native EmitSound(const clients[],
  *
  * @param clients		Array of client indexes.
  * @param numClients	Number of clients in the array.
+ * @param sentence		Sentence index (from PrecacheSenteFile).
  * @param entity		Entity to emit from.
  * @param channel		Channel to emit with.
- * @param sentence		Sentence index (from PrecacheSenteFile).
  * @param level			Sound level.
  * @param flags			Sound flags.
  * @param volume		Sound volume.
@@ -261,9 +261,9 @@ native EmitSentence(const clients[],
  * Wrapper to emit sound to one client.
  *
  * @param client		Client index.
+ * @param sample		Sound file name relative to the "sounds" folder.
  * @param entity		Entity to emit from.
  * @param channel		Channel to emit with.
- * @param sample		Sound name.
  * @param level			Sound level.
  * @param flags			Sound flags.
  * @param volume		Sound volume.
@@ -302,9 +302,9 @@ stock EmitSoundToClient(client,
 /**
  * Wrapper to emit sound to all clients.
  *
+ * @param sample		Sound file name relative to the "sounds" folder.
  * @param entity		Entity to emit from.
  * @param channel		Channel to emit with.
- * @param sample		Sound name.
  * @param level			Sound level.
  * @param flags			Sound flags.
  * @param volume		Sound volume.

From 221429ff6e12b540644cdebe81224b9fcbf0923d Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Sat, 1 Dec 2007 00:37:47 +0000
Subject: [PATCH 057/263] added amb382, KV get/set vector natives

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401740
---
 core/smn_keyvalues.cpp        | 104 ++++++++++++++++++++++++++++++++++
 plugins/include/keyvalues.inc |  23 ++++++++
 2 files changed, 127 insertions(+)

diff --git a/core/smn_keyvalues.cpp b/core/smn_keyvalues.cpp
index d0313947..025cc5c8 100644
--- a/core/smn_keyvalues.cpp
+++ b/core/smn_keyvalues.cpp
@@ -218,6 +218,35 @@ static cell_t smn_KvSetColor(IPluginContext *pCtx, const cell_t *params)
 	return 1;
 }
 
+static cell_t smn_KvSetVector(IPluginContext *pCtx, const cell_t *params)
+{
+	Handle_t hndl = static_cast<Handle_t>(params[1]);
+	HandleError herr;
+	HandleSecurity sec;
+	KeyValueStack *pStk;
+
+	sec.pOwner = NULL;
+	sec.pIdentity = g_pCoreIdent;
+
+	if ((herr=g_HandleSys.ReadHandle(hndl, g_KeyValueType, &sec, (void **)&pStk))
+		!= HandleError_None)
+	{
+		return pCtx->ThrowNativeError("Invalid key value handle %x (error %d)", hndl, herr);
+	}
+
+	char *key;
+	char buffer[64];
+	cell_t *vector;
+	pCtx->LocalToStringNULL(params[2], &key);
+	pCtx->LocalToPhysAddr(params[3], &vector);
+
+	UTIL_Format(buffer, sizeof(buffer), "%f %f %f", sp_ctof(vector[0]), sp_ctof(vector[1]), sp_ctof(vector[2]));
+
+	pStk->pCurRoot.front()->SetString(key, buffer);
+
+	return 1;
+}
+
 static cell_t smn_KvGetString(IPluginContext *pCtx, const cell_t *params)
 {
 	Handle_t hndl = static_cast<Handle_t>(params[1]);
@@ -358,6 +387,79 @@ static cell_t smn_KvGetUInt64(IPluginContext *pCtx, const cell_t *params)
 	return 1;
 }
 
+static cell_t smn_KvGetVector(IPluginContext *pCtx, const cell_t *params)
+{
+	Handle_t hndl = static_cast<Handle_t>(params[1]);
+	HandleError herr;
+	HandleSecurity sec;
+	KeyValueStack *pStk;
+
+	sec.pOwner = NULL;
+	sec.pIdentity = g_pCoreIdent;
+
+	if ((herr=g_HandleSys.ReadHandle(hndl, g_KeyValueType, &sec, (void **)&pStk))
+		!= HandleError_None)
+	{
+		return pCtx->ThrowNativeError("Invalid key value handle %x (error %d)", hndl, herr);
+	}
+
+	char *key;
+	const char *value;
+	cell_t *defvector, *outvector;
+	char buffer[64];
+	pCtx->LocalToStringNULL(params[2], &key);
+	pCtx->LocalToPhysAddr(params[3], &outvector);
+	pCtx->LocalToPhysAddr(params[4], &defvector);
+
+	UTIL_Format(buffer, sizeof(buffer), "%f %f %f", sp_ctof(defvector[0]), sp_ctof(defvector[1]), sp_ctof(defvector[2]));
+
+	value = pStk->pCurRoot.front()->GetString(key, buffer);
+
+	float out;
+	int components = 0;
+	while (*value && components < 3)
+	{
+		while ((*value) && (*value == ' '))
+		{
+			value++;
+		}
+
+		out = 0.0f;
+		bool isnegative;
+		if (*value == '-')
+		{
+			isnegative = true;
+			value++;
+		}
+		else
+		{
+			isnegative = false;
+		}
+
+		for (; *value && isdigit(*value); ++value)
+		{
+			out *= 10.0f;
+			out += *value - '0';
+		}
+
+		if (*value == '.')
+		{
+			value++;
+			float factor = 0.1f;
+			for (; *value && isdigit(*value); ++value)
+			{
+				out += (*value - '0') * factor;
+				factor *= 0.1f;
+			}
+		}
+
+		out = (isnegative) ? -out : out;
+		outvector[components++] = sp_ftoc(out);
+	}
+
+	return 1;
+}
+
 static cell_t smn_CreateKeyValues(IPluginContext *pCtx, const cell_t *params)
 {
 	KeyValueStack *pStk;
@@ -1015,5 +1117,7 @@ REGISTER_NATIVES(keyvaluenatives)
 	{"KvFindKeyById",			smn_FindKeyById},
 	{"KvGetNameSymbol",			smn_GetNameSymbol},
 	{"KvGetSectionSymbol",		smn_KvGetSectionSymbol},
+	{"KvGetVector",				smn_KvGetVector},
+	{"KvSetVector",				smn_KvSetVector},
 	{NULL,						NULL}
 };
diff --git a/plugins/include/keyvalues.inc b/plugins/include/keyvalues.inc
index deb21e6c..c14b15fa 100644
--- a/plugins/include/keyvalues.inc
+++ b/plugins/include/keyvalues.inc
@@ -120,6 +120,17 @@ native KvSetFloat(Handle:kv, const String:key[], Float:value);
  */
 native KvSetColor(Handle:kv, const String:key[], r, g, b, a=0);
 
+/** 
+ * Sets a vector value of a KeyValues key.
+ *
+ * @param kv			KeyValues Handle.
+ * @param key			Name of the key, or NULL_STRING.
+ * @param vec			Vector value.
+ * @noreturn
+ * @error				Invalid Handle.
+ */
+native KvSetVector(Handle:kv, const String:key[], const Float:vec[3]);
+
 /** 
  * Retrieves a string value from a KeyValues key.
  *
@@ -181,6 +192,18 @@ native KvGetColor(Handle:kv, const String:key[], &r, &g, &b, &a);
  */
 native KvGetUInt64(Handle:kv, const String:key[], value[2], defvalue[2]={0,0});
 
+/** 
+ * Retrieves a vector value from a KeyValues key.
+ *
+ * @param kv			KeyValues Handle.
+ * @param key			Name of the key, or NULL_STRING.
+ * @param vec			Destination vector to store the value in.
+ * @param defvalue		Optional default value to use if the key is not found.
+ * @noreturn
+ * @error				Invalid Handle.
+ */
+native KvGetVector(Handle:kv, const String:key[], Float:vec[3], const Float:defvalue[3]={0.0, 0.0, 0.0});
+
 /**
  * Sets the current position in the KeyValues tree to the given key.
  *

From 67417e2bf662e95e012040aaebe135e45c2b557d Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Sun, 2 Dec 2007 01:51:48 +0000
Subject: [PATCH 058/263] added amb861, sounds can be hooked now

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401741
---
 extensions/sdktools/extension.cpp         |  19 +
 extensions/sdktools/extension.h           |   5 +
 extensions/sdktools/msvc8/sdktools.vcproj |   4 +
 extensions/sdktools/vsound.cpp            | 498 ++++++++++++++++++++--
 extensions/sdktools/vsound.h              |  76 ++++
 plugins/include/core.inc                  |   1 +
 plugins/include/sdktools_sound.inc        |  71 +++
 public/IForwardSys.h                      |   1 +
 8 files changed, 647 insertions(+), 28 deletions(-)
 create mode 100644 extensions/sdktools/vsound.h

diff --git a/extensions/sdktools/extension.cpp b/extensions/sdktools/extension.cpp
index a1b8fb5c..290ac288 100644
--- a/extensions/sdktools/extension.cpp
+++ b/extensions/sdktools/extension.cpp
@@ -35,6 +35,7 @@
 #include "vhelpers.h"
 #include "vglobals.h"
 #include "tempents.h"
+#include "vsound.h"
 
 #if defined ORANGEBOX_BUILD
 	#define SDKTOOLS_GAME_FILE		"sdktools.games.ep2"
@@ -63,6 +64,8 @@ IServerGameClients *serverClients = NULL;
 IVoiceServer *voiceserver = NULL;
 IPlayerInfoManager *playerinfomngr = NULL;
 ICvar *icvar = NULL;
+SourceHook::CallClass<IVEngineServer> *enginePatch = NULL;
+SourceHook::CallClass<IEngineSound> *enginesoundPatch = NULL;
 HandleType_t g_CallHandle = 0;
 HandleType_t g_TraceHandle = 0;
 
@@ -149,6 +152,7 @@ void SDKTools::SDK_OnUnload()
 
 	g_TEManager.Shutdown();
 	s_TempEntHooks.Shutdown();
+	s_SoundHooks.Shutdown();
 
 	gameconfs->CloseGameConfigFile(g_pGameConf);
 	playerhelpers->RemoveClientListener(&g_SdkTools);
@@ -156,6 +160,17 @@ void SDKTools::SDK_OnUnload()
 
 	SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, LevelInit, gamedll, this, &SDKTools::LevelInit, true);
 	SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, ServerActivate, gamedll, this, &SDKTools::OnServerActivate, false);
+
+	if (enginePatch)
+	{
+		SH_RELEASE_CALLCLASS(enginePatch);
+		enginePatch = NULL;
+	}
+	if (enginesoundPatch)
+	{
+		SH_RELEASE_CALLCLASS(enginesoundPatch);
+		enginesoundPatch = NULL;
+	}
 }
 
 bool SDKTools::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool late)
@@ -170,6 +185,9 @@ bool SDKTools::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool
 	GET_V_IFACE_ANY(GetServerFactory, playerinfomngr, IPlayerInfoManager, INTERFACEVERSION_PLAYERINFOMANAGER);
 	GET_V_IFACE_CURRENT(GetEngineFactory, icvar, ICvar, CVAR_INTERFACE_VERSION);
 
+	enginePatch = SH_GET_CALLCLASS(engine);
+	enginesoundPatch = SH_GET_CALLCLASS(engsound);
+
 	return true;
 }
 
@@ -179,6 +197,7 @@ void SDKTools::SDK_OnAllLoaded()
 
 	g_TEManager.Initialize();
 	s_TempEntHooks.Initialize();
+	s_SoundHooks.Initialize();
 	InitializeValveGlobals();
 }
 
diff --git a/extensions/sdktools/extension.h b/extensions/sdktools/extension.h
index 79fcc0ab..7a331b55 100644
--- a/extensions/sdktools/extension.h
+++ b/extensions/sdktools/extension.h
@@ -108,5 +108,10 @@ extern HandleType_t g_CallHandle;
 extern HandleType_t g_TraceHandle;
 /* Call Wrappers */
 extern ICallWrapper *g_pAcceptInput;
+/* Call classes */
+extern SourceHook::CallClass<IVEngineServer> *enginePatch;
+extern SourceHook::CallClass<IEngineSound> *enginesoundPatch;
+
+#define ENGINE_CALL(func)		SH_CALL(enginePatch, &IVEngineServer::func)
 
 #endif //_INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
diff --git a/extensions/sdktools/msvc8/sdktools.vcproj b/extensions/sdktools/msvc8/sdktools.vcproj
index 4eeee64a..d5c6e484 100644
--- a/extensions/sdktools/msvc8/sdktools.vcproj
+++ b/extensions/sdktools/msvc8/sdktools.vcproj
@@ -770,6 +770,10 @@
 				RelativePath="..\vnatives.h"
 				>
 			</File>
+			<File
+				RelativePath="..\vsound.h"
+				>
+			</File>
 		</Filter>
 		<Filter
 			Name="Resource Files"
diff --git a/extensions/sdktools/vsound.cpp b/extensions/sdktools/vsound.cpp
index 039fe99f..75fcb166 100644
--- a/extensions/sdktools/vsound.cpp
+++ b/extensions/sdktools/vsound.cpp
@@ -29,8 +29,333 @@
  * Version: $Id$
  */
 
-#include "extension.h"
-#include "CellRecipientFilter.h"
+#include "vsound.h"
+#include <IForwardSys.h>
+
+SH_DECL_HOOK8_void(IVEngineServer, EmitAmbientSound, SH_NOATTRIB, 0, int, const Vector &, const char *, float, soundlevel_t, int, int, float);
+SH_DECL_HOOK14_void(IEngineSound, EmitSound, SH_NOATTRIB, 0, IRecipientFilter &, int, int, const char *, float, float, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int);
+SH_DECL_HOOK14_void(IEngineSound, EmitSound, SH_NOATTRIB, 1, IRecipientFilter &, int, int, const char *, float, soundlevel_t, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int);
+
+bool g_InSoundHook = false;
+
+/***************************
+*                          *
+* Sound Related Hook Class *
+*                          *
+****************************/
+
+size_t SoundHooks::_FillInPlayers(int *pl_array, IRecipientFilter *pFilter)
+{
+	size_t size = static_cast<size_t>(pFilter->GetRecipientCount());
+
+	for (size_t i=0; i<size; i++)
+	{
+		pl_array[i] = pFilter->GetRecipientIndex(i);
+	}
+
+	return size;
+}
+
+void SoundHooks::_IncRefCounter(int type)
+{
+	if (type == NORMAL_SOUND_HOOK)
+	{
+		if (m_NormalCount++ == 0)
+		{
+			SH_ADD_HOOK_MEMFUNC(IEngineSound, EmitSound, engsound, this, &SoundHooks::OnEmitSound, false);
+			SH_ADD_HOOK_MEMFUNC(IEngineSound, EmitSound, engsound, this, &SoundHooks::OnEmitSound2, false);
+		}
+	}
+	else if (type == AMBIENT_SOUND_HOOK)
+	{
+		if (m_AmbientCount++ == 0)
+		{
+			SH_ADD_HOOK_MEMFUNC(IVEngineServer, EmitAmbientSound, engine, this, &SoundHooks::OnEmitAmbientSound, false);
+		}
+	}
+}
+
+void SoundHooks::_DecRefCounter(int type)
+{
+	if (type == NORMAL_SOUND_HOOK)
+	{
+		if (--m_NormalCount == 0)
+		{
+			SH_REMOVE_HOOK_MEMFUNC(IEngineSound, EmitSound, engsound, this, &SoundHooks::OnEmitSound, false);
+			SH_REMOVE_HOOK_MEMFUNC(IEngineSound, EmitSound, engsound, this, &SoundHooks::OnEmitSound2, false);
+		}
+	}
+	else if (type == AMBIENT_SOUND_HOOK)
+	{
+		if (--m_AmbientCount == 0)
+		{
+			SH_REMOVE_HOOK_MEMFUNC(IVEngineServer, EmitAmbientSound, engine, this, &SoundHooks::OnEmitAmbientSound, false);
+		}
+	}
+}
+
+void SoundHooks::Initialize()
+{
+	plsys->AddPluginsListener(this);
+}
+
+void SoundHooks::Shutdown()
+{
+	plsys->RemovePluginsListener(this);
+	if (m_NormalCount)
+	{
+		SH_REMOVE_HOOK_MEMFUNC(IEngineSound, EmitSound, engsound, this, &SoundHooks::OnEmitSound, false);
+		SH_REMOVE_HOOK_MEMFUNC(IEngineSound, EmitSound, engsound, this, &SoundHooks::OnEmitSound2, false);
+	}
+	if (m_AmbientCount)
+	{
+		SH_REMOVE_HOOK_MEMFUNC(IVEngineServer, EmitAmbientSound, engine, this, &SoundHooks::OnEmitAmbientSound, false);
+	}
+}
+
+void SoundHooks::OnPluginUnloaded(IPlugin *plugin)
+{
+	SoundHookIter iter;
+	IPluginContext *pContext = plugin->GetBaseContext();
+
+	if (m_AmbientCount)
+	{
+		for (iter=m_AmbientFuncs.begin(); iter!=m_AmbientFuncs.end(); )
+		{
+			if ((*iter)->GetParentContext() == pContext)
+			{
+				iter = m_AmbientFuncs.erase(iter);
+				_DecRefCounter(AMBIENT_SOUND_HOOK);
+			}
+			else
+			{
+				iter++;
+			}
+		}
+	}
+	if (m_NormalCount)
+	{
+		for (iter=m_NormalFuncs.begin(); iter!=m_NormalFuncs.end(); )
+		{
+			if ((*iter)->GetParentContext() == pContext)
+			{
+				iter = m_NormalFuncs.erase(iter);
+				_DecRefCounter(NORMAL_SOUND_HOOK);
+			}
+			else
+			{
+				iter++;
+			}
+		}
+	}
+}
+
+void SoundHooks::AddHook(int type, IPluginFunction *pFunc)
+{
+	if (type == NORMAL_SOUND_HOOK)
+	{
+		m_NormalFuncs.push_back(pFunc);
+		_IncRefCounter(NORMAL_SOUND_HOOK);
+	}
+	else if (type == AMBIENT_SOUND_HOOK)
+	{
+		m_AmbientFuncs.push_back(pFunc);
+		_IncRefCounter(AMBIENT_SOUND_HOOK);
+	}
+}
+
+bool SoundHooks::RemoveHook(int type, IPluginFunction *pFunc)
+{
+	SoundHookIter iter;
+	if (type == NORMAL_SOUND_HOOK)
+	{
+		if ((iter=m_NormalFuncs.find(pFunc)) != m_NormalFuncs.end())
+		{
+			m_NormalFuncs.erase(iter);
+			_DecRefCounter(NORMAL_SOUND_HOOK);
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+	else if (type == AMBIENT_SOUND_HOOK)
+	{
+		if ((iter=m_AmbientFuncs.find(pFunc)) != m_AmbientFuncs.end())
+		{
+			m_AmbientFuncs.erase(iter);
+			_DecRefCounter(AMBIENT_SOUND_HOOK);
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	return false;
+}
+
+void SoundHooks::OnEmitAmbientSound(int entindex, const Vector &pos, const char *samp, float vol, 
+									soundlevel_t soundlevel, int fFlags, int pitch, float delay)
+{
+	SoundHookIter iter;
+	IPluginFunction *pFunc;
+	cell_t vec[3] = {sp_ftoc(pos.x), sp_ftoc(pos.y), sp_ftoc(pos.z)};
+	cell_t res = static_cast<ResultType>(Pl_Continue);
+	char buffer[PLATFORM_MAX_PATH];
+	strcpy(buffer, samp);
+
+	for (iter=m_AmbientFuncs.begin(); iter!=m_AmbientFuncs.end(); iter++)
+	{
+		pFunc = (*iter);
+		pFunc->PushStringEx(buffer, sizeof(buffer), SM_PARAM_STRING_COPY, SM_PARAM_COPYBACK);
+		pFunc->PushCellByRef(&entindex);
+		pFunc->PushFloatByRef(&vol);
+		pFunc->PushCellByRef(reinterpret_cast<cell_t *>(&soundlevel));
+		pFunc->PushCellByRef(&pitch);
+		pFunc->PushArray(vec, 3, SM_PARAM_COPYBACK);
+		pFunc->PushCellByRef(&fFlags);
+		pFunc->PushFloatByRef(&delay);
+		g_InSoundHook = true;
+		pFunc->Execute(&res);
+		g_InSoundHook = false;
+
+		switch (res)
+		{
+		case Pl_Handled:
+		case Pl_Stop:
+			{
+				RETURN_META(MRES_SUPERCEDE);
+			}
+		case Pl_Changed:
+			{
+				Vector vec2;
+				vec2.x = sp_ctof(vec[0]);
+				vec2.y = sp_ctof(vec[1]);
+				vec2.z = sp_ctof(vec[2]);
+				RETURN_META_NEWPARAMS(MRES_IGNORED, &IVEngineServer::EmitAmbientSound, 
+										(entindex, vec2, buffer, vol, soundlevel, fFlags, pitch, delay));
+			}
+		}
+	}
+}
+
+void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample, 
+							 float flVolume, soundlevel_t iSoundlevel, int iFlags, int iPitch, const Vector *pOrigin, 
+							 const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions, 
+							 float soundtime, int speakerentity)
+{
+	SoundHookIter iter;
+	IPluginFunction *pFunc;
+	cell_t res = static_cast<ResultType>(Pl_Continue);
+	char buffer[PLATFORM_MAX_PATH];
+	strcpy(buffer, pSample);
+
+	for (iter=m_NormalFuncs.begin(); iter!=m_NormalFuncs.end(); iter++)
+	{
+		int players[64], size;
+		size = _FillInPlayers(players, &filter);
+		pFunc = (*iter);
+
+		pFunc->PushArray(players, 64, SM_PARAM_COPYBACK);
+		pFunc->PushCellByRef(&size);
+		pFunc->PushStringEx(buffer, sizeof(buffer), SM_PARAM_STRING_COPY, SM_PARAM_COPYBACK);
+		pFunc->PushCellByRef(&iEntIndex);
+		pFunc->PushCellByRef(&iChannel);
+		pFunc->PushFloatByRef(&flVolume);
+		pFunc->PushCellByRef(reinterpret_cast<cell_t *>(&iSoundlevel));
+		pFunc->PushCellByRef(&iPitch);
+		pFunc->PushCellByRef(&iFlags);
+		g_InSoundHook = true;
+		pFunc->Execute(&res);
+		g_InSoundHook = false;
+
+		switch (res)
+		{
+		case Pl_Handled:
+		case Pl_Stop:
+			{
+				RETURN_META(MRES_SUPERCEDE);
+			}
+		case Pl_Changed:
+			{
+				CellRecipientFilter crf;
+				crf.Initialize(players, size);
+				RETURN_META_NEWPARAMS(
+					MRES_IGNORED,
+					static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, soundlevel_t, 
+					int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int)>(&IEngineSound::EmitSound), 
+					(crf, iEntIndex, iChannel, buffer, flVolume, iSoundlevel, iFlags, iPitch, pOrigin, 
+					pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity)
+					);
+			}
+		}
+	}
+}
+
+void SoundHooks::OnEmitSound2(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample, 
+							 float flVolume, float flAttenuation, int iFlags, int iPitch, const Vector *pOrigin, 
+							 const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions, 
+							 float soundtime, int speakerentity)
+{
+	SoundHookIter iter;
+	IPluginFunction *pFunc;
+	cell_t res = static_cast<ResultType>(Pl_Continue);
+	cell_t sndlevel = static_cast<cell_t>(ATTN_TO_SNDLVL(flAttenuation));
+	char buffer[PLATFORM_MAX_PATH];
+	strcpy(buffer, pSample);
+
+	for (iter=m_NormalFuncs.begin(); iter!=m_NormalFuncs.end(); iter++)
+	{
+		int players[64], size;
+		size = _FillInPlayers(players, &filter);
+		pFunc = (*iter);
+
+		pFunc->PushArray(players, 64, SM_PARAM_COPYBACK);
+		pFunc->PushCellByRef(&size);
+		pFunc->PushStringEx(buffer, sizeof(buffer), SM_PARAM_STRING_COPY, SM_PARAM_COPYBACK);
+		pFunc->PushCellByRef(&iEntIndex);
+		pFunc->PushCellByRef(&iChannel);
+		pFunc->PushFloatByRef(&flVolume);
+		pFunc->PushCellByRef(&sndlevel);
+		pFunc->PushCellByRef(&iPitch);
+		pFunc->PushCellByRef(&iFlags);
+		g_InSoundHook = true;
+		pFunc->Execute(&res);
+		g_InSoundHook = false;
+
+		switch (res)
+		{
+		case Pl_Handled:
+		case Pl_Stop:
+			{
+				RETURN_META(MRES_SUPERCEDE);
+			}
+		case Pl_Changed:
+			{
+				CellRecipientFilter crf;
+				crf.Initialize(players, size);
+				RETURN_META_NEWPARAMS(
+					MRES_IGNORED,
+					static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, float, 
+					int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int)>(&IEngineSound::EmitSound), 
+					(crf, iEntIndex, iChannel, buffer, flVolume, SNDLVL_TO_ATTN(static_cast<soundlevel_t>(sndlevel)), 
+					iFlags, iPitch, pOrigin, pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity)
+					);
+			}
+		}
+	}
+}
+
+/************************
+*                       *
+* Sound Related Natives *
+*                       *
+*************************/
+
+SoundHooks s_SoundHooks;
 
 static cell_t PrefetchSound(IPluginContext *pContext, const cell_t *params)
 {
@@ -74,7 +399,14 @@ static cell_t EmitAmbientSound(IPluginContext *pContext, const cell_t *params)
 	pitch = params[7];
 	delay = sp_ctof(params[8]);
 
-	engine->EmitAmbientSound(entity, pos, name, vol, (soundlevel_t)level, flags, pitch, delay);
+	if (g_InSoundHook)
+	{
+		ENGINE_CALL(EmitAmbientSound)(entity, pos, name, vol, (soundlevel_t)level, flags, pitch, delay);
+	}
+	else
+	{
+		engine->EmitAmbientSound(entity, pos, name, vol, (soundlevel_t)level, flags, pitch, delay);
+	}
 
 	return 1;
 }
@@ -186,8 +518,71 @@ static cell_t EmitSound(IPluginContext *pContext, const cell_t *params)
 			player[0] = pl_addr[i];
 			crf.Reset();
 			crf.Initialize(player, 1);
-			engsound->EmitSound(crf, 
-				player[0], 
+			if (g_InSoundHook)
+			{
+				SH_CALL(enginesoundPatch, 
+					static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, 
+					soundlevel_t, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int)>
+					(&IEngineSound::EmitSound))
+					(crf, 
+					player[0], 
+					channel, 
+					sample, 
+					vol, 
+					(soundlevel_t)level, 
+					flags, 
+					pitch, 
+					pOrigin,
+					pDir,
+					pOrigVec,
+					updatePos,
+					soundtime,
+					speakerentity);
+			}
+			else
+			{
+				engsound->EmitSound(crf, 
+					player[0], 
+					channel, 
+					sample, 
+					vol, 
+					(soundlevel_t)level, 
+					flags, 
+					pitch, 
+					pOrigin,
+					pDir,
+					pOrigVec,
+					updatePos,
+					soundtime,
+					speakerentity);
+			}
+		}
+	} else {
+		if (g_InSoundHook)
+		{
+			SH_CALL(enginesoundPatch, 
+				static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, 
+				soundlevel_t, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int)>
+				(&IEngineSound::EmitSound))
+				(crf, 
+				entity, 
+				channel, 
+				sample, 
+				vol, 
+				(soundlevel_t)level, 
+				flags, 
+				pitch, 
+				pOrigin,
+				pDir,
+				pOrigVec,
+				updatePos,
+				soundtime,
+				speakerentity);
+		}
+		else
+		{
+			engsound->EmitSound(crf, 
+				entity, 
 				channel, 
 				sample, 
 				vol, 
@@ -201,21 +596,6 @@ static cell_t EmitSound(IPluginContext *pContext, const cell_t *params)
 				soundtime,
 				speakerentity);
 		}
-	} else {
-		engsound->EmitSound(crf, 
-			entity, 
-			channel, 
-			sample, 
-			vol, 
-			(soundlevel_t)level, 
-			flags, 
-			pitch, 
-			pOrigin,
-			pDir,
-			pOrigVec,
-			updatePos,
-			soundtime,
-			speakerentity);
 	}
 
 	return 1;
@@ -296,14 +676,76 @@ static cell_t EmitSentence(IPluginContext *pContext, const cell_t *params)
 	return 1;
 }
 
+static cell_t smn_AddAmbientSoundHook(IPluginContext *pContext, const cell_t *params)
+{
+	IPluginFunction *pFunc = pContext->GetFunctionById(params[1]);
+	if (!pFunc)
+	{
+		return pContext->ThrowNativeError("Invalid function id (%X)", params[1]);
+	}
+
+	s_SoundHooks.AddHook(AMBIENT_SOUND_HOOK, pFunc);
+
+	return 1;
+}
+
+static cell_t smn_AddNormalSoundHook(IPluginContext *pContext, const cell_t *params)
+{
+	IPluginFunction *pFunc = pContext->GetFunctionById(params[1]);
+	if (!pFunc)
+	{
+		return pContext->ThrowNativeError("Invalid function id (%X)", params[1]);
+	}
+
+	s_SoundHooks.AddHook(NORMAL_SOUND_HOOK, pFunc);
+
+	return 1;
+}
+
+static cell_t smn_RemoveAmbientSoundHook(IPluginContext *pContext, const cell_t *params)
+{
+	IPluginFunction *pFunc = pContext->GetFunctionById(params[1]);
+	if (!pFunc)
+	{
+		return pContext->ThrowNativeError("Invalid function id (%X)", params[1]);
+	}
+
+	if (!s_SoundHooks.RemoveHook(AMBIENT_SOUND_HOOK, pFunc))
+	{
+		return pContext->ThrowNativeError("Invalid hooked function");
+	}
+
+	return 1;
+}
+
+static cell_t smn_RemoveNormalSoundHook(IPluginContext *pContext, const cell_t *params)
+{
+	IPluginFunction *pFunc = pContext->GetFunctionById(params[1]);
+	if (!pFunc)
+	{
+		return pContext->ThrowNativeError("Invalid function id (%X)", params[1]);
+	}
+
+	if (!s_SoundHooks.RemoveHook(NORMAL_SOUND_HOOK, pFunc))
+	{
+		return pContext->ThrowNativeError("Invalid hooked function");
+	}
+
+	return 1;
+}
+
 sp_nativeinfo_t g_SoundNatives[] = 
 {
-	{"EmitAmbientSound",	EmitAmbientSound},
-	{"EmitSentence",		EmitSentence},
-	{"EmitSound",			EmitSound},
-	{"FadeClientVolume",	FadeClientVolume},
-	{"GetSoundDuration",	GetSoundDuration},
-	{"PrefetchSound",		PrefetchSound},
-	{"StopSound",			StopSound},
-	{NULL,					NULL},
+	{"EmitAmbientSound",		EmitAmbientSound},
+	{"EmitSentence",			EmitSentence},
+	{"EmitSound",				EmitSound},
+	{"FadeClientVolume",		FadeClientVolume},
+	{"GetSoundDuration",		GetSoundDuration},
+	{"PrefetchSound",			PrefetchSound},
+	{"StopSound",				StopSound},
+	{"AddAmbientSoundHook",		smn_AddAmbientSoundHook},
+	{"AddNormalSoundHook",		smn_AddNormalSoundHook},
+	{"RemoveAmbientSoundHook",	smn_RemoveAmbientSoundHook},
+	{"RemoveNormalSoundHook",	smn_RemoveNormalSoundHook},
+	{NULL,						NULL},
 };
diff --git a/extensions/sdktools/vsound.h b/extensions/sdktools/vsound.h
new file mode 100644
index 00000000..12f26530
--- /dev/null
+++ b/extensions/sdktools/vsound.h
@@ -0,0 +1,76 @@
+/**
+* vim: set ts=4 :
+* =============================================================================
+* SourceMod SDKTools Extension
+* Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+* 
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program.  If not, see <http://www.gnu.org/licenses/>.
+*
+* As a special exception, AlliedModders LLC gives you permission to link the
+* code of this program (as well as its derivative works) to "Half-Life 2," the
+* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+* by the Valve Corporation.  You must obey the GNU General Public License in
+* all respects for all other code used.  Additionally, AlliedModders LLC grants
+* this exception to all derivative works.  AlliedModders LLC defines further
+* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+* or <http://www.sourcemod.net/license.php>.
+*
+* Version: $Id$
+*/
+
+#ifndef _INCLUDE_SOURCEMOD_VSOUND_H_
+#define _INCLUDE_SOURCEMOD_VSOUND_H_
+
+#include <sh_list.h>
+#include "extension.h"
+#include "CellRecipientFilter.h"
+
+#define NORMAL_SOUND_HOOK		0
+#define AMBIENT_SOUND_HOOK		1
+
+typedef SourceHook::List<IPluginFunction *>::iterator SoundHookIter;
+
+class SoundHooks : public IPluginsListener
+{
+public: //IPluginsListener
+	void OnPluginUnloaded(IPlugin *plugin);
+public:
+	void Initialize();
+	void Shutdown();
+	void AddHook(int type, IPluginFunction *pFunc);
+	bool RemoveHook(int type, IPluginFunction *pFunc);
+	void OnEmitAmbientSound(int entindex, const Vector &pos, const char *samp, float vol, 
+		soundlevel_t soundlevel, int fFlags, int pitch, float delay);
+	void OnEmitSound(IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample, float flVolume, 
+		soundlevel_t iSoundlevel, int iFlags, int iPitch, const Vector *pOrigin, 
+		const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions, 
+		float soundtime, int speakerentity);
+	void OnEmitSound2(IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample, float flVolume, 
+		float flAttenuation, int iFlags, int iPitch, const Vector *pOrigin, 
+		const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions, 
+		float soundtime, int speakerentity);
+private:
+	size_t _FillInPlayers(int *pl_array, IRecipientFilter *pFilter);
+	void _IncRefCounter(int type);
+	void _DecRefCounter(int type);
+private:
+	SourceHook::List<IPluginFunction *> m_AmbientFuncs;
+	SourceHook::List<IPluginFunction *> m_NormalFuncs;
+	size_t m_NormalCount;
+	size_t m_AmbientCount;
+};
+
+extern SoundHooks s_SoundHooks;
+
+#endif //_INCLUDE_SOURCEMOD_VSOUND_H_
\ No newline at end of file
diff --git a/plugins/include/core.inc b/plugins/include/core.inc
index df31a96b..ca226e09 100644
--- a/plugins/include/core.inc
+++ b/plugins/include/core.inc
@@ -58,6 +58,7 @@ enum Function
 enum Action
 {
 	Plugin_Continue = 0,	/**< Continue with the original action */
+	Plugin_Changed = 1,		/**< Inputs or outputs have been overridden with new values */
 	Plugin_Handled = 3,		/**< Handle the action at the end (don't call it) */
 	Plugin_Stop = 4,		/**< Immediately stop the hook chain and handle the original */
 };
diff --git a/plugins/include/sdktools_sound.inc b/plugins/include/sdktools_sound.inc
index 93fd2372..c60c19a6 100644
--- a/plugins/include/sdktools_sound.inc
+++ b/plugins/include/sdktools_sound.inc
@@ -256,6 +256,77 @@ native EmitSentence(const clients[],
 				 Float:soundtime = 0.0,
 				 any:...);
 
+/**
+ * Called when an ambient sound is about to be emitted to one or more clients.
+ *
+ * NOTICE: all parameters can be overwritten to modify the default behavior.
+ *
+ * @param sample	Sound file name relative to the "sounds" folder.
+ * @param entity	Entity index associated to the sound.
+ * @param volume	Volume (from 0.0 to 1.0).
+ * @param level		Sound level (from 0 to 255).
+ * @param pitch		Pitch (from 0 to 255).
+ * @param pos		Origin of sound.
+ * @param flags		Sound flags.
+ * @param delay		Play delay.
+ * @return		Plugin_Continue to allow the sound to be played, Plugin_Stop to block it, 
+ *			  Plugin_Changed when any parameter has been modified.
+ */
+functag AmbientSHook Action:public(String:sample[PLATFORM_MAX_PATH], &entity, &Float:volume, &level, &pitch, Float:pos[3], &flags, &Float:delay);
+
+/**
+ * Called when a sound is going to be emitted to one or more clients.
+ * NOTICE: all params can be overwritten to modify the default behaviour.
+ *
+ * @param clients		Array of client indexes.
+ * @param numClients		Number of clients in the array (modify this value if you add/remove elements from the client array).
+ * @param sample		Sound file name relative to the "sounds" folder.
+ * @param entity		Entity emitting the sound.
+ * @param channel		Channel emitting the sound.
+ * @param volume		Sound volume.
+ * @param level			Sound level.
+ * @param pitch			Sound pitch.
+ * @param flags			Sound flags.
+ * @return			Plugin_Continue to allow the sound to be played, Plugin_Stop to block it, 
+ *				  Plugin_Changed when any parameter has been modified.
+ */
+functag NormalSHook Action:public(clients[64], &numClients, String:sample[PLATFORM_MAX_PATH], &entity, &channel, &Float:volume, &level, &pitch, &flags);
+
+/**
+ * Hooks all played ambient sounds.
+ *
+ * @param hook		Function to use as a hook.
+ * @noreturn
+ * @error		Invalid function hook.
+ */
+native AddAmbientSoundHook(AmbientSHook:hook);
+
+/**
+ * Hooks all played normal sounds.
+ *
+ * @param hook		Function to use as a hook.
+ * @noreturn
+ * @error		Invalid function hook.
+ */
+native AddNormalSoundHook(NormalSHook:hook);
+
+/**
+ * Unhooks all played ambient sounds.
+ *
+ * @param hook		Function used for the hook.
+ * @noreturn
+ * @error		Invalid function hook.
+ */
+native RemoveAmbientSoundHook(AmbientSHook:hook);
+
+/**
+ * Unhooks all played normal sounds.
+ *
+ * @param hook		Function used for the hook.
+ * @noreturn
+ * @error		Invalid function hook.
+ */
+native RemoveNormalSoundHook(NormalSHook:hook);
 				 
 /**
  * Wrapper to emit sound to one client.
diff --git a/public/IForwardSys.h b/public/IForwardSys.h
index efa778e1..99149b64 100644
--- a/public/IForwardSys.h
+++ b/public/IForwardSys.h
@@ -65,6 +65,7 @@ namespace SourceMod
 	enum ResultType
 	{
 		Pl_Continue = 0,	/**< No result */
+		Pl_Changed = 1,		/**< Inputs or outputs have been overridden with new values */
 		Pl_Handled = 3,		/**< Result was handled, stop at the end */
 		Pl_Stop = 4,		/**< Result was handled, stop now */
 	};

From 1d2e7bb46b167cbca93db35a4205ffaa2606a349 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Sun, 2 Dec 2007 01:59:19 +0000
Subject: [PATCH 059/263] Fixed amb1219 - Proper tokenising of sm_addban

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401742
---
 plugins/basebans.sp | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/plugins/basebans.sp b/plugins/basebans.sp
index 370f575a..4fed0f80 100644
--- a/plugins/basebans.sp
+++ b/plugins/basebans.sp
@@ -209,7 +209,6 @@ public Action:Command_AddBan(client, args)
 	}
 
 	decl String:arg_string[256];
-	new String:reason[128];
 	new String:time[50];
 	new String:authid[50];
 
@@ -228,9 +227,12 @@ public Action:Command_AddBan(client, args)
 	/* Get steamid */
 	if ((len = BreakString(arg_string[total_len], authid, sizeof(authid))) != -1)
 	{
-		/* Get reason */
 		total_len += len;
-		BreakString(arg_string[total_len], reason, sizeof(reason));
+	}
+	else
+	{
+		total_len = 0;
+		arg_string[0] = '\0';
 	}
 
 	/* Verify steamid */
@@ -248,11 +250,11 @@ public Action:Command_AddBan(client, args)
 			  client, 
 			  minutes, 
 			  authid, 
-			  reason);
+			  arg_string[total_len]);
 	BanIdentity(authid, 
 				minutes, 
 				BANFLAG_AUTHID, 
-				reason, 
+				arg_string[total_len], 
 				"sm_addban", 
 				client);
 

From da9168082c73d640bee450001e072460f387ade4 Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Sun, 2 Dec 2007 02:05:55 +0000
Subject: [PATCH 060/263] stop crying gcc

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401743
---
 extensions/sdktools/vsound.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/extensions/sdktools/vsound.h b/extensions/sdktools/vsound.h
index 12f26530..040cbbe6 100644
--- a/extensions/sdktools/vsound.h
+++ b/extensions/sdktools/vsound.h
@@ -73,4 +73,4 @@ private:
 
 extern SoundHooks s_SoundHooks;
 
-#endif //_INCLUDE_SOURCEMOD_VSOUND_H_
\ No newline at end of file
+#endif //_INCLUDE_SOURCEMOD_VSOUND_H_

From a8ecd7fea49257947acc9c2d7f1e16574305af49 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Dec 2007 02:10:37 +0000
Subject: [PATCH 061/263] - added beefy new ReadMapList() native - admin menu
 now uses ReadMapList() - added UTIL_TrimWhitespace() to stringutils - moved
 GetFileTime() implementation to ILibrarySys - cleaned up sorting include a
 bit - removed adminmenu_maplist.ini, since it's specified by maplists.cfg -
 added maplists.cfg

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401744
---
 configs/adminmenu_maplist.ini  |   5 -
 configs/maplists.cfg           |  34 ++
 core/CrazyDebugger.cpp         |   2 +-
 core/Makefile.ep1              |   2 +-
 core/Makefile.ep2              |   2 +-
 core/Makefile.orig             |   2 +-
 core/msvc8/sourcemod_mm.vcproj |   4 +
 core/sm_stringutil.cpp         |  31 ++
 core/sm_stringutil.h           |   1 +
 core/smn_filesystem.cpp        |  27 +-
 core/smn_maplists.cpp          | 659 +++++++++++++++++++++++++++++++++
 core/systems/LibrarySys.cpp    |  30 ++
 core/systems/LibrarySys.h      |   1 +
 plugins/basecommands.sp        |   5 +-
 plugins/basecommands/map.sp    | 114 ++----
 plugins/include/sorting.inc    |   6 +-
 plugins/include/sourcemod.inc  |  64 ++++
 public/ILibrarySys.h           |  22 +-
 18 files changed, 880 insertions(+), 131 deletions(-)
 delete mode 100644 configs/adminmenu_maplist.ini
 create mode 100644 configs/maplists.cfg
 create mode 100644 core/smn_maplists.cpp

diff --git a/configs/adminmenu_maplist.ini b/configs/adminmenu_maplist.ini
deleted file mode 100644
index ae9bdf57..00000000
--- a/configs/adminmenu_maplist.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-// adminmenu_maplist.ini
-//
-// List maps here to be added to the map and votemap sections of the admin menu
-//
-
diff --git a/configs/maplists.cfg b/configs/maplists.cfg
new file mode 100644
index 00000000..032b4a7e
--- /dev/null
+++ b/configs/maplists.cfg
@@ -0,0 +1,34 @@
+/**
+ * Use this file to configure map lists.
+ *
+ * Each section is a map list that plugins can use.  For example, the Admin Menu 
+ * requests an "admin menu" map list, and you can control which maps appear via 
+ * this file.
+ *
+ * Each section must have a property that explains where to read the maps from.
+ * There are two properties:
+ *
+ *    target         - Redirect the request to another section.
+ *    file			 - Read a file of map names, in mapcycle.txt format.
+ *
+ * There is one section by default, called "mapcyclefile" - it is mapped to the 
+ * mapcycle.txt file, or whatever the contents of your mapcyclefile cvar is.
+ *
+ * If a plugin requests a map list file which doesn't exist, or is empty, SourceMod 
+ * tries the "default" section, and then the "mapcyclefile" section.
+ */
+"MapLists"
+{
+	/**
+	 * Default requests go right to the mapcyclefile.
+	 */
+	"default"
+	{
+		"target"		"mapcyclefile"
+	}
+	
+	"admin menu"
+	{
+		"file"			"addons/sourcemod/configs/adminmenu_maplist.ini"
+	}
+}
diff --git a/core/CrazyDebugger.cpp b/core/CrazyDebugger.cpp
index 7960191d..492766ce 100644
--- a/core/CrazyDebugger.cpp
+++ b/core/CrazyDebugger.cpp
@@ -29,7 +29,7 @@
  * Version: $Id$
  */
 
-#if defined DEBUG
+#if 0
 #include "sm_globals.h"
 #include "sourcemm_api.h"
 #include "Tlhelp32.h"
diff --git a/core/Makefile.ep1 b/core/Makefile.ep1
index 46064b72..c25cac9c 100644
--- a/core/Makefile.ep1
+++ b/core/Makefile.ep1
@@ -28,7 +28,7 @@ OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreC
 OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_datapacks.cpp smn_entities.cpp smn_events.cpp smn_fakenatives.cpp \
 	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
-	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp \
+	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplist.cpp \
 	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
 	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp
 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
diff --git a/core/Makefile.ep2 b/core/Makefile.ep2
index 4ee53df8..1d3ff939 100644
--- a/core/Makefile.ep2
+++ b/core/Makefile.ep2
@@ -28,7 +28,7 @@ OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreC
 OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_datapacks.cpp smn_entities.cpp smn_events.cpp smn_fakenatives.cpp \
 	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
-	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp \
+	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplist.cpp \
 	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
 	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp
 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
diff --git a/core/Makefile.orig b/core/Makefile.orig
index 4b716371..eec753e1 100644
--- a/core/Makefile.orig
+++ b/core/Makefile.orig
@@ -28,7 +28,7 @@ OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreC
 OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_datapacks.cpp smn_entities.cpp smn_events.cpp smn_fakenatives.cpp \
 	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
-	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp \
+	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplist.cpp \
 	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
 	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp
 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
diff --git a/core/msvc8/sourcemod_mm.vcproj b/core/msvc8/sourcemod_mm.vcproj
index 2d01ff19..823a0756 100644
--- a/core/msvc8/sourcemod_mm.vcproj
+++ b/core/msvc8/sourcemod_mm.vcproj
@@ -1378,6 +1378,10 @@
 				RelativePath="..\smn_lang.cpp"
 				>
 			</File>
+			<File
+				RelativePath="..\smn_maplists.cpp"
+				>
+			</File>
 			<File
 				RelativePath="..\smn_menus.cpp"
 				>
diff --git a/core/sm_stringutil.cpp b/core/sm_stringutil.cpp
index e94ff44e..70586d96 100644
--- a/core/sm_stringutil.cpp
+++ b/core/sm_stringutil.cpp
@@ -1275,3 +1275,34 @@ char *UTIL_ReplaceEx(char *subject, size_t maxLen, const char *search, size_t se
 
 	return NULL;
 }
+
+char *UTIL_TrimWhitespace(char *str, size_t &len)
+{
+	char *end = str + len - 1;
+
+	if (!len)
+	{
+		return str;
+	}
+
+	/* Iterate backwards through string until we reach first non-whitespace char */
+	while (end >= str && textparsers->IsWhitespace(end))
+	{
+		end--;
+		len--;
+	}
+
+	/* Replace first whitespace char (at the end) with null terminator.
+	 * If there is none, we're just replacing the null terminator. 
+	 */
+	*(end + 1) = '\0';
+
+	while (*str != '\0' && textparsers->IsWhitespace(str))
+	{
+		str++;
+		len--;
+	}
+
+	return str;
+}
+
diff --git a/core/sm_stringutil.h b/core/sm_stringutil.h
index 08e379b6..e96aac62 100644
--- a/core/sm_stringutil.h
+++ b/core/sm_stringutil.h
@@ -52,5 +52,6 @@ char *sm_strdup(const char *str);
 size_t CorePlayerTranslate(int client, char *buffer, size_t maxlength, const char *phrase, void **params);
 unsigned int UTIL_ReplaceAll(char *subject, size_t maxlength, const char *search, const char *replace);
 char *UTIL_ReplaceEx(char *subject, size_t maxLen, const char *search, size_t searchLen, const char *replace, size_t replaceLen);
+char *UTIL_TrimWhitespace(char *str, size_t &len);
 
 #endif // _INCLUDE_SOURCEMOD_STRINGUTIL_H_
diff --git a/core/smn_filesystem.cpp b/core/smn_filesystem.cpp
index 883ee5b8..b209bfd3 100644
--- a/core/smn_filesystem.cpp
+++ b/core/smn_filesystem.cpp
@@ -557,13 +557,6 @@ static cell_t sm_LogError(IPluginContext *pContext, const cell_t *params)
 	return 1;
 }
 
-enum
-{
-	FileTime_LastAccess = 0,	/* Last access (not available on FAT) */
-	FileTime_Created = 1,		/* Creation (not available on FAT) */
-	FileTime_LastChange = 2,	/* Last modification */
-};
-
 static cell_t sm_GetFileTime(IPluginContext *pContext, const cell_t *params)
 {
 	char *name;
@@ -574,30 +567,16 @@ static cell_t sm_GetFileTime(IPluginContext *pContext, const cell_t *params)
 		return 0;
 	}
 
+	time_t time_val;
 	char realpath[PLATFORM_MAX_PATH];
 	g_SourceMod.BuildPath(Path_Game, realpath, sizeof(realpath), "%s", name);
 
-#ifdef PLATFORM_WINDOWS
-	struct _stat s;
-	if (_stat(realpath, &s) != 0)
-#elif defined PLATFORM_POSIX
-	struct stat s;
-	if (stat(realpath, &s) != 0)
-#endif
+	if (!g_LibSys.FileTime(realpath, (FileTimeType)params[2], &time_val))
 	{
 		return -1;
-	} else {
-		if (params[2] == FileTime_LastAccess)
-		{
-			return (cell_t)s.st_atime;
-		} else if (params[2] == FileTime_Created) {
-			return (cell_t)s.st_ctime;
-		} else if (params[2] == FileTime_LastChange) {
-			return (cell_t)s.st_mtime;
-		}
 	}
 
-	return -1;
+	return (cell_t)time_val;
 }
 
 static cell_t sm_LogToOpenFile(IPluginContext *pContext, const cell_t *params)
diff --git a/core/smn_maplists.cpp b/core/smn_maplists.cpp
new file mode 100644
index 00000000..6a50b974
--- /dev/null
+++ b/core/smn_maplists.cpp
@@ -0,0 +1,659 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include <sh_list.h>
+#include "sm_globals.h"
+#include "sm_trie_tpl.h"
+#include "CellArray.h"
+#include "convar.h"
+#include "sourcemm_api.h"
+#include "LibrarySys.h"
+#include "TextParsers.h"
+#include "sm_stringutil.h"
+#include "sourcemod.h"
+#include "Logger.h"
+#include "HandleSys.h"
+
+using namespace SourceHook;
+
+struct maplist_info_t
+{
+	bool bIsCompat;
+	bool bIsPath;
+	char name[PLATFORM_MAX_PATH];
+	char path[PLATFORM_MAX_PATH];
+	time_t last_modified_time;
+	CellArray *pArray;
+	int serial;
+};
+
+#define MAPLIST_FLAG_MAPSFOLDER		(1<<0)		/**< On failure, use all maps in the maps folder. */
+#define MAPLIST_FLAG_CLEARARRAY		(1<<1)		/**< If an input array is specified, clear it before adding. */
+#define MAPLIST_FLAG_NO_DEFAULT		(1<<2)		/**< Do not read "default" or "mapcyclefile" on failure. */
+
+class MapLists : public SMGlobalClass, public ITextListener_SMC
+{
+public:
+	enum MapListState
+	{
+		MPS_NONE,
+		MPS_GLOBAL,
+		MPS_MAPLIST,
+	};
+public:
+	MapLists()
+	{
+		m_pMapCycleFile = NULL;
+		m_ConfigLastChanged = 0;
+		m_nSerialChange = 0;
+	}
+	void OnSourceModAllInitialized()
+	{
+		m_pMapCycleFile = icvar->FindVar("mapcyclefile");
+		g_SourceMod.BuildPath(Path_SM, m_ConfigFile, sizeof(m_ConfigFile), "configs/maplists.cfg");
+	}
+	void OnSourceModShutdown()
+	{
+		DumpCache(NULL);
+	}
+	void AddOrUpdateDefault(const char *name, const char *file)
+	{
+		char path[PLATFORM_MAX_PATH];
+		maplist_info_t *pMapList, **ppMapList;
+
+		if ((ppMapList = m_ListLookup.retrieve(name)) == NULL)
+		{
+			pMapList = new maplist_info_t;
+			pMapList->bIsCompat = true;
+			pMapList->bIsPath = true;
+			pMapList->last_modified_time = 0;
+			strncopy(pMapList->name, name, sizeof(pMapList->name));
+			pMapList->pArray = NULL;
+			g_SourceMod.BuildPath(Path_Game, 
+				pMapList->path,
+				sizeof(pMapList->path),
+				"%s",
+				file);
+			pMapList->serial = 0;
+			m_ListLookup.insert(name, pMapList);
+			m_MapLists.push_back(pMapList);
+			return;
+		}
+
+		pMapList = *ppMapList;
+
+		/* Don't modify if it's from the config file */
+		if (!pMapList->bIsCompat)
+		{
+			return;
+		}
+
+		g_SourceMod.BuildPath(Path_Game,
+			path,
+			sizeof(path),
+			"%s",
+			file);
+
+		/* If the path matches, don't reset the serial/time */
+		if (strcmp(path, pMapList->path) == 0)
+		{
+			return;
+		}
+
+		strncopy(pMapList->path, path, sizeof(pMapList->path));
+		pMapList->bIsPath = true;
+		pMapList->last_modified_time = 0;
+		pMapList->serial = 0;
+	}
+	void UpdateCache()
+	{
+		bool fileFound;
+		SMCError error;
+		time_t fileTime;
+		SMCStates states = {0, 0};
+		
+		fileFound = g_LibSys.FileTime(m_ConfigFile, FileTime_LastChange, &fileTime);
+
+		/* If the file is found and hasn't changed, bail out now. */
+		if (fileFound && fileTime == m_ConfigLastChanged)
+		{
+			return;
+		}
+
+		/* If the file wasn't found, and we already have entries, we bail out too. 
+		 * This case lets us optimize when a user deletes the config file, so we 
+		 * don't reparse every single time the function is called.
+		 */
+		if (!fileFound && m_MapLists.size() > 0)
+		{
+			return;
+		}
+
+		/* Dump everything we know about. */
+		List<maplist_info_t *> compat;
+		DumpCache(&compat);
+
+		/* All this is to add the default entry back in. */
+		maplist_info_t *pDefList = new maplist_info_t;
+
+		pDefList->bIsPath = true;
+		strncopy(pDefList->name, "mapcyclefile", sizeof(pDefList->name));
+		g_SourceMod.BuildPath(Path_Game,
+			pDefList->path, 
+			sizeof(pDefList->path),
+			"%s",
+			m_pMapCycleFile ? m_pMapCycleFile->GetString() : "mapcycle.txt");
+		pDefList->last_modified_time = 0;
+		pDefList->pArray = NULL;
+		pDefList->serial = 0;
+
+		m_ListLookup.insert("mapcyclefile", pDefList);
+		m_MapLists.push_back(pDefList);
+
+		/* Now parse the config file even if we don't know about it.
+		 * This will give us a nice error message.
+		 */
+		if ((error = g_TextParser.ParseFile_SMC(m_ConfigFile, this, &states))
+			!= SMCError_Okay)
+		{
+			const char *errmsg = g_TextParser.GetSMCErrorString(error);
+			if (errmsg == NULL)
+			{
+				errmsg = "Unknown error";
+			}
+			g_Logger.LogError("[SM] Could not parse file \"%s\"", m_ConfigFile);
+			g_Logger.LogError("[SM] Error on line %d (col %d): %s",
+				states.line,
+				states.col,
+				errmsg);
+		}
+		else
+		{
+			m_ConfigLastChanged = fileTime;
+		}
+
+		/* Now, re-add compat stuff back in if we can. */
+		List<maplist_info_t *>::iterator iter = compat.begin();
+		while (iter != compat.end())
+		{
+			if (m_ListLookup.retrieve((*iter)->name) != NULL)
+			{
+				/* The compatibility shim is no longer needed. */
+				delete (*iter)->pArray;
+				delete (*iter);
+			}
+			else
+			{
+				m_ListLookup.insert((*iter)->name, (*iter));
+				m_MapLists.push_back((*iter));
+			}
+			iter = compat.erase(iter);
+		}
+	}
+	void ReadSMC_ParseStart()
+	{
+		m_CurState = MPS_NONE;
+		m_IgnoreLevel = 0;
+		m_pCurMapList = NULL;
+	}
+	SMCResult ReadSMC_NewSection(const SMCStates *states, const char *name)
+	{
+		if (m_IgnoreLevel)
+		{
+			m_IgnoreLevel++;
+			return SMCResult_Continue;
+		}
+
+		if (m_CurState == MPS_NONE)
+		{
+			if (strcmp(name, "MapLists") == 0)
+			{
+				m_CurState = MPS_GLOBAL;
+			}
+			else
+			{
+				m_IgnoreLevel = 1;
+			}
+		}
+		else if (m_CurState == MPS_GLOBAL)
+		{
+			m_pCurMapList = new maplist_info_t;
+
+			memset(m_pCurMapList, 0, sizeof(maplist_info_t));
+			strncopy(m_pCurMapList->name, name, sizeof(m_pCurMapList->name));
+
+			m_CurState = MPS_MAPLIST;
+		}
+		else if (m_CurState == MPS_MAPLIST)
+		{
+			m_IgnoreLevel++;
+		}
+
+		return SMCResult_Continue;
+	}
+	SMCResult ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value)
+	{
+		if (m_IgnoreLevel || m_pCurMapList == NULL)
+		{
+			return SMCResult_Continue;
+		}
+
+		if (strcmp(key, "file") == 0)
+		{
+			g_SourceMod.BuildPath(Path_Game, 
+				m_pCurMapList->path,
+				sizeof(m_pCurMapList->path),
+				"%s",
+				value);
+			m_pCurMapList->bIsPath = true;
+		}
+		else if (strcmp(key, "target") == 0)
+		{
+			strncopy(m_pCurMapList->path, value, sizeof(m_pCurMapList->path));
+			m_pCurMapList->bIsPath = false;
+		}
+
+		return SMCResult_Continue;
+	}
+	SMCResult ReadSMC_LeavingSection(const SMCStates *states)
+	{
+		if (m_IgnoreLevel)
+		{
+			m_IgnoreLevel--;
+			return SMCResult_Continue;
+		}
+
+		if (m_CurState == MPS_MAPLIST)
+		{
+			if (m_pCurMapList != NULL
+				&& m_pCurMapList->path[0] != '\0'
+				&& m_ListLookup.retrieve(m_pCurMapList->name) == NULL)
+			{
+				m_ListLookup.insert(m_pCurMapList->name, m_pCurMapList);
+				m_MapLists.push_back(m_pCurMapList);
+				m_pCurMapList = NULL;
+			}
+			else
+			{
+				delete m_pCurMapList;
+				m_pCurMapList = NULL;
+			}
+			m_CurState = MPS_GLOBAL;
+		}
+		else if (m_CurState == MPS_GLOBAL)
+		{
+			m_CurState = MPS_NONE;
+		}
+
+		return SMCResult_Continue;
+	}
+	void ReadSMC_ParseEnd(bool halted, bool failed)
+	{
+		delete m_pCurMapList;
+		m_pCurMapList = NULL;
+	}
+	static int sort_maps_in_adt_array(const void *str1, const void *str2)
+	{
+		return strcmp((char *)str1, (char *)str2);
+	}
+	CellArray *UpdateMapList(CellArray *pUseArray, const char *name, int *pSerial, unsigned int flags)
+	{
+		int change_serial;
+		CellArray *pNewArray;
+		bool success, free_new_array;
+
+		free_new_array = false;
+		
+		if ((success = GetMapList(&pNewArray, name, &change_serial)) == false)
+		{
+			if ((flags & MAPLIST_FLAG_NO_DEFAULT) != MAPLIST_FLAG_NO_DEFAULT)
+			{
+				/* If this list failed, and it's not the default, try the default. 
+				 */
+				if (strcmp(name, "default") != 0)
+				{
+					success = GetMapList(&pNewArray, name, &change_serial);
+				}
+				/* If either of the last two conditions failed, try again if we can. */
+				if (!success)
+				{
+					success = GetMapList(&pNewArray, "mapcyclefile", &change_serial);
+				}
+			}
+		}
+
+		/* If there was a success, and the serial has not changed, bail out. */
+		if (*pSerial == change_serial)
+		{
+			return NULL;
+		}
+
+		/**
+		 * If there was a success but no map list, we need to look in the maps folder.
+		 * If there was a failure and the flag is specified, we need to look in the maps folder.
+		 */
+		if ((success && pNewArray == NULL)
+			|| (!success && ((flags & MAPLIST_FLAG_MAPSFOLDER) == MAPLIST_FLAG_MAPSFOLDER)))
+		{
+			char path[255];
+			IDirectory *pDir;
+
+			pNewArray = new CellArray(64);
+			free_new_array = true;
+			g_SourceMod.BuildPath(Path_Game, path, sizeof(path), "maps");
+
+			if ((pDir = g_LibSys.OpenDirectory(path)) != NULL)
+			{
+				char *ptr;
+				cell_t *blk;
+				char buffer[PLATFORM_MAX_PATH];
+
+				while (pDir->MoreFiles())
+				{
+					if (!pDir->IsEntryFile()
+						|| strcmp(pDir->GetEntryName(), ".") == 0
+						|| strcmp(pDir->GetEntryName(), "..") == 0)
+					{
+						pDir->NextEntry();
+						continue;
+					}
+					strncopy(buffer, pDir->GetEntryName(), sizeof(buffer));
+					if ((ptr = strstr(buffer, ".bsp")) == NULL)
+					{
+						pDir->NextEntry();
+						continue;
+					}
+					*ptr = '\0';
+					if (!engine->IsMapValid(buffer))
+					{
+						pDir->NextEntry();
+						continue;
+					}
+					if ((blk = pNewArray->push()) == NULL)
+					{
+						pDir->NextEntry();
+						continue;
+					}
+					strncopy((char *)blk, buffer, 255);
+					pDir->NextEntry();
+				}
+				g_LibSys.CloseDirectory(pDir);
+			}
+
+			/* Remove the array if there were no items. */
+			if (pNewArray->size() == 0)
+			{
+				delete pNewArray;
+				pNewArray = NULL;
+			}
+			else
+			{
+				qsort(pNewArray->base(), 
+					pNewArray->size(), 
+					pNewArray->blocksize() * sizeof(cell_t), 
+					sort_maps_in_adt_array);
+			}
+
+			change_serial = -1;
+		}
+
+		/* If there is still no array by this point, bail out. */
+		if (pNewArray == NULL)
+		{
+			*pSerial = -1;
+			return NULL;
+		}
+
+		*pSerial = change_serial;
+
+		/* If there is no input array, return something temporary. */
+		if (pUseArray == NULL)
+		{
+			if (free_new_array)
+			{
+				return pNewArray;
+			}
+			else
+			{
+				return pNewArray->clone();
+			}
+		}
+
+		/* Clear the input array if necessary. */
+		if ((flags & MAPLIST_FLAG_CLEARARRAY) == MAPLIST_FLAG_CLEARARRAY)
+		{
+			pUseArray->clear();
+		}
+
+		/* Copy. */
+		cell_t *blk_dst;
+		cell_t *blk_src;
+		for (size_t i = 0; i < pNewArray->size(); i++)
+		{
+			blk_dst = pUseArray->push();
+			blk_src = pNewArray->at(i);
+			strncopy((char *)blk_dst, (char *)blk_src, pUseArray->blocksize() * sizeof(cell_t));
+		}
+
+		/* Free resources if necessary. */
+		if (free_new_array)
+		{
+			delete pNewArray;
+		}
+
+		/* Return the array we were given. */
+		return pUseArray;
+	}
+private:
+	bool GetMapList(CellArray **ppArray, const char *name, int *pSerial)
+	{
+		time_t last_time;
+		maplist_info_t *pMapList, **ppMapList;
+
+		if ((ppMapList = m_ListLookup.retrieve(name)) == NULL)
+		{
+			return false;
+		}
+
+		pMapList = *ppMapList;
+
+		if (!pMapList->bIsPath)
+		{
+			return GetMapList(ppArray, pMapList->path, pSerial);
+		}
+
+		/* If it is a path, and the path is "*", assume all files must be used. */
+		if (strcmp(pMapList->path, "*") == 0)
+		{
+			*ppArray = NULL;
+			return true;
+		}
+
+		if (m_pMapCycleFile != NULL && strcmp(name, "mapcyclefile") == 0)
+		{
+			if (strcmp(m_pMapCycleFile->GetString(), pMapList->path) != 0)
+			{
+				strncopy(pMapList->path, m_pMapCycleFile->GetString(), sizeof(pMapList->path));
+				pMapList->last_modified_time = 0;
+			}
+		}
+
+		if (!g_LibSys.FileTime(pMapList->path, FileTime_LastChange, &last_time)
+			|| last_time > pMapList->last_modified_time)
+		{
+			/* Reparse */
+			FILE *fp;
+			cell_t *blk;
+			char buffer[255];
+
+			if ((fp = fopen(pMapList->path, "rt")) == NULL)
+			{
+				return false;
+			}
+
+			delete pMapList->pArray;
+			pMapList->pArray = new CellArray(64);
+
+			while (!feof(fp) && fgets(buffer, sizeof(buffer), fp) != NULL)
+			{
+				size_t len = strlen(buffer);
+				char *ptr = UTIL_TrimWhitespace(buffer, len);
+				if (*ptr == '\0'
+					|| *ptr == ';'
+					|| strncmp(ptr, "//", 2) == 0)
+				{
+					continue;
+				}
+				if (!engine->IsMapValid(ptr))
+				{
+					continue;
+				}
+				if ((blk = pMapList->pArray->push()) != NULL)
+				{
+					strncopy((char *)blk, ptr, 255);
+				}
+			}
+
+			fclose(fp);
+
+			pMapList->last_modified_time = last_time;
+			pMapList->serial = ++m_nSerialChange;
+		}
+
+		if (pMapList->pArray == NULL || pMapList->pArray->size() == 0)
+		{
+			return false;
+		}
+
+		*pSerial = pMapList->serial;
+		*ppArray = pMapList->pArray;
+
+		return true;
+	}
+	void DumpCache(List<maplist_info_t *> *compat_list)
+	{
+		m_ListLookup.clear();
+
+		List<maplist_info_t *>::iterator iter = m_MapLists.begin();
+		while (iter != m_MapLists.end())
+		{
+			if (compat_list != NULL && (*iter)->bIsCompat)
+			{
+				compat_list->push_back((*iter));
+			}
+			else
+			{
+				delete (*iter)->pArray;
+				delete (*iter);
+			}
+			iter = m_MapLists.erase(iter);
+		}
+	}
+private:
+	char m_ConfigFile[PLATFORM_MAX_PATH];
+	time_t m_ConfigLastChanged;
+	ConVar *m_pMapCycleFile;
+	KTrie<maplist_info_t *> m_ListLookup;
+	List<maplist_info_t *> m_MapLists;
+	MapListState m_CurState;
+	unsigned int m_IgnoreLevel;
+	maplist_info_t *m_pCurMapList;
+	int m_nSerialChange;
+} s_MapLists;
+
+static cell_t LoadMapList(IPluginContext *pContext, const cell_t *params)
+{
+	char *str;
+	Handle_t hndl;
+	cell_t *addr, flags;
+	CellArray *pArray, *pNewArray;
+
+	hndl = params[1];
+	pContext->LocalToPhysAddr(params[2], &addr);
+	pContext->LocalToString(params[3], &str);
+	flags = params[4];
+
+	/* Make sure the input Handle is valid */
+	pArray = NULL;
+	if (hndl != BAD_HANDLE)
+	{
+		HandleError err;
+		HandleSecurity sec(pContext->GetIdentity(), g_pCoreIdent);
+
+		if ((err = g_HandleSys.ReadHandle(hndl, htCellArray, &sec, (void **)&pArray))
+			!= HandleError_None)
+		{
+			return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err);
+		}
+	}
+
+	/* Make sure the map list cache is up to date at the root */
+	s_MapLists.UpdateCache();
+
+	/* Try to get the map list. */
+	if ((pNewArray = s_MapLists.UpdateMapList(pArray, str, addr, flags)) == NULL)
+	{
+		return BAD_HANDLE;
+	}
+
+	/* If the user wanted a new array, create it now. */
+	if (hndl == BAD_HANDLE)
+	{
+		if ((hndl = g_HandleSys.CreateHandle(htCellArray, pNewArray, pContext->GetIdentity(), g_pCoreIdent, NULL))
+			== BAD_HANDLE)
+		{
+			*addr = -1;
+			delete pNewArray;
+			return BAD_HANDLE;
+		}
+	}
+
+	return hndl;
+}
+
+static cell_t SetMapListCompatBind(IPluginContext *pContext, const cell_t *params)
+{
+	char *name, *file;
+
+	pContext->LocalToString(params[1], &name);
+	pContext->LocalToString(params[2], &file);
+
+	s_MapLists.AddOrUpdateDefault(name, file);
+
+	return 1;
+}
+
+REGISTER_NATIVES(mapListNatives)
+{
+	{"ReadMapList",				LoadMapList},
+	{"SetMapListCompatBind",	SetMapListCompatBind},
+	{NULL,						NULL},
+};
diff --git a/core/systems/LibrarySys.cpp b/core/systems/LibrarySys.cpp
index 373fe223..6b067217 100644
--- a/core/systems/LibrarySys.cpp
+++ b/core/systems/LibrarySys.cpp
@@ -29,6 +29,7 @@
  * Version: $Id$
  */
 
+#include <sys/stat.h>
 #include <stdio.h>
 #include <stdarg.h>
 #include <string.h>
@@ -396,3 +397,32 @@ size_t LibrarySystem::GetFileFromPath(char *buffer, size_t maxlength, const char
 	/* We scanned and found no path separator */
 	return UTIL_Format(buffer, maxlength, "%s", path);
 }
+
+bool LibrarySystem::FileTime(const char *path, FileTimeType type, time_t *pTime)
+{
+#ifdef PLATFORM_WINDOWS
+	struct _stat s;
+	if (_stat(path, &s) != 0)
+#elif defined PLATFORM_POSIX
+	struct stat s;
+	if (stat(path, &s) != 0)
+#endif
+	{
+		return false;
+	}
+
+	if (type == FileTime_LastAccess)
+	{
+		*pTime = s.st_atime;
+	}
+	else if (type == FileTime_Created)
+	{
+		*pTime = s.st_ctime;
+	}
+	else if (type == FileTime_LastChange)
+	{
+		*pTime = s.st_mtime;
+	}
+
+	return true;
+}
diff --git a/core/systems/LibrarySys.h b/core/systems/LibrarySys.h
index c1be68c1..cc7aa121 100644
--- a/core/systems/LibrarySys.h
+++ b/core/systems/LibrarySys.h
@@ -94,6 +94,7 @@ public:
 	const char *GetFileExtension(const char *filename);
 	bool CreateFolder(const char *path);
 	size_t GetFileFromPath(char *buffer, size_t maxlength, const char *path);
+	bool FileTime(const char *path, FileTimeType type, time_t *pTime);
 };
 
 extern LibrarySystem g_LibSys;
diff --git a/plugins/basecommands.sp b/plugins/basecommands.sp
index f85c0ee0..6f4f765d 100644
--- a/plugins/basecommands.sp
+++ b/plugins/basecommands.sp
@@ -49,7 +49,6 @@ public Plugin:myinfo =
 new Handle:hTopMenu = INVALID_HANDLE;
 
 new Handle:g_MapList;
-new g_mapFileTime;
 
 #include "basecommands/kick.sp"
 #include "basecommands/reloadadmins.sp"
@@ -82,6 +81,10 @@ public OnPluginStart()
 	g_MapList = CreateMenu(MenuHandler_ChangeMap);
 	SetMenuTitle(g_MapList, "Please select a map");
 	SetMenuExitBackButton(g_MapList, true);
+	
+	decl String:mapListPath[PLATFORM_MAX_PATH];
+	BuildPath(Path_SM, mapListPath, sizeof(mapListPath), "configs/adminmenu_maplist.ini");
+	SetMapListCompatBind("admin menu", mapListPath);
 }
 
 public OnMapStart()
diff --git a/plugins/basecommands/map.sp b/plugins/basecommands/map.sp
index 45b00ad9..0bf462b5 100644
--- a/plugins/basecommands/map.sp
+++ b/plugins/basecommands/map.sp
@@ -82,109 +82,37 @@ public Action:Timer_ChangeMap(Handle:timer, Handle:dp)
 	return Plugin_Stop;
 }
 
+new Handle:g_map_array = INVALID_HANDLE;
+new g_map_serial = -1;
+
 LoadMapList(Handle:menu)
 {
-	decl String:mapPath[256];
-	BuildPath(Path_SM, mapPath, sizeof(mapPath), "configs/adminmenu_maplist.ini");
+	new Handle:map_array;
 	
-	if (!FileExists(mapPath))
-	{	
-		if (g_MapList != INVALID_HANDLE)
-		{
-			RemoveAllMenuItems(menu);
-		}
-		
-		return LoadMapFolder(menu);		
-	}
-
-	// If the file hasn't changed, there's no reason to reload
-	// all of the maps.
-	new fileTime =  GetFileTime(mapPath, FileTime_LastChange);
-	if (g_mapFileTime == fileTime)
+	if ((map_array = ReadMapList(g_map_array,
+			g_map_serial,
+			"admin menu",
+			MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_NO_DEFAULT|MAPLIST_FLAG_MAPSFOLDER))
+		!= INVALID_HANDLE)
 	{
-		return GetMenuItemCount(menu);
+		g_map_array = map_array;
 	}
 	
-	g_mapFileTime = fileTime;
-	
-	// Reset the array
-	if (g_MapList != INVALID_HANDLE)
+	if (g_map_array == INVALID_HANDLE)
 	{
-		RemoveAllMenuItems(menu);
-	}
-
-	new Handle:file = OpenFile(mapPath, "rt");
-	if (file == INVALID_HANDLE)
-	{
-		LogError("[SM] Could not open file: %s, reverting to map folder", mapPath);
-		return LoadMapFolder(menu);
-	}
-	
-	decl String:buffer[256], len;
-	while (!IsEndOfFile(file) && ReadFileLine(file, buffer, sizeof(buffer)))
-	{
-		TrimString(buffer);
-		
-		if ((len = StrContains(buffer, ".bsp", false)) != -1)
-		{
-			buffer[len] = '\0';
-		}
-
-		if (buffer[0] == '\0' 
-			|| buffer[0] == ';'
-			|| buffer[0] == '/'
-			|| !IsValidConVarChar(buffer[0]))
-		{
-			continue;
-		}
-		
-		if (IsMapValid(buffer))
-		{
-			AddMenuItem(menu, buffer, buffer);
-		}
-	}
-
-	CloseHandle(file);
-	
-	new count = GetMenuItemCount(menu);
-	
-	if (!count)
-		return LoadMapFolder(menu);
-	else
-		return count;
-}
-
-LoadMapFolder(Handle:menu)
-{
-	LogMessage("[SM] Loading menu map list from maps folder");
-	
-	new Handle:mapDir = OpenDirectory("maps/");
-	
-	if (mapDir == INVALID_HANDLE)
-	{
-		LogError("[SM] Could not open map directory for reading");
 		return 0;
 	}
 	
-	new String:mapName[64];
-	new String:buffer[64];
-	new FileType:fileType;
-	new len;
+	RemoveAllMenuItems(menu);
 	
-	while(ReadDirEntry(mapDir, mapName, sizeof(mapName), fileType))
+	decl String:map_name[64];
+	new map_count = GetArraySize(g_map_array);
+	
+	for (new i = 0; i < map_count; i++)
 	{
-		if(fileType == FileType_File)
-		{
-			len = strlen(mapName);
-
-			if(SplitString(mapName, ".bsp", buffer, sizeof(buffer)) == len)
-			{
-				AddMenuItem(menu, buffer, buffer);
-			}
-		}
-  	}
-  	
-  	CloseHandle(mapDir);
-  	
-  	return GetMenuItemCount(menu);
+		GetArrayString(g_map_array, i, map_name, sizeof(map_name));
+		AddMenuItem(menu, map_name, map_name);
+	}
+	
+	return map_count;
 }
diff --git a/plugins/include/sorting.inc b/plugins/include/sorting.inc
index 6d49a238..9cb395d6 100644
--- a/plugins/include/sorting.inc
+++ b/plugins/include/sorting.inc
@@ -48,8 +48,8 @@ enum SortOrder
 /**
  * Data types for ADT Array Sorts
  */
-  enum SortType
- {
+enum SortType
+{
  	Sort_Integer = 0,
  	Sort_Float,
  	Sort_String,
@@ -147,7 +147,7 @@ native SortCustom2D(array[][], array_size, SortFunc2D:sortfunc, Handle:hndl=INVA
  * @param type			Data type stored in the ADT Array
  * @noreturn
  */
-native SortADTArray(Handle:array, SortOrder:order = Sort_Ascending, SortType:type = Sort_Integer);
+native SortADTArray(Handle:array, SortOrder:order, SortType:type);
 
 /**
  * Sort comparison function for ADT Array elements. Function provides you with
diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc
index acbcdeca..f10e9836 100644
--- a/plugins/include/sourcemod.inc
+++ b/plugins/include/sourcemod.inc
@@ -490,6 +490,70 @@ forward OnLibraryAdded(const String:name[]);
  */
 forward OnLibraryRemoved(const String:name[]);
 
+#define MAPLIST_FLAG_MAPSFOLDER		(1<<0)		/**< On failure, use all maps in the maps folder. */
+#define MAPLIST_FLAG_CLEARARRAY		(1<<1)		/**< If an input array is specified, clear it before adding. */
+#define MAPLIST_FLAG_NO_DEFAULT		(1<<2)		/**< Do not read "default" or "mapcyclefile" on failure. */
+
+/**
+ * Loads a map list to an ADT Array.
+ *
+ * A map list is a list of maps from a file.  SourceMod allows easy configuration of 
+ * maplists through addons/sourcemod/configs/maplists.cfg.  Each entry is given a 
+ * name and a file (for example, "rtv" => "rtv.cfg"), or a name and a redirection 
+ * (for example, "rtv" => "default").  This native will read a map list entry, 
+ * cache the file, and return the list of maps it holds.  
+ *
+ * Serial change numbers are used to identify if a map list has changed.  Thus, if 
+ * you pass a serial change number and it's equal to what SourceMod currently knows 
+ * about the map list, then SourceMod won't reparse the file.
+ *
+ * If the maps end up being read from the maps folder (MAPLIST_FLAG_MAPSFOLDER), they 
+ * are automatically sorted in alphabetical, ascending order.
+ *
+ * @param array			Array to store the map list.  If INVALID_HANDLE, a new blank 
+ *						array will be created.  The blocksize should be at least 16; 
+ *						otherwise results may be truncated.  Items are added to the array 
+ *						as strings.  The array is never checked for duplicates, and it is 
+ *						not read beforehand.  Only the serial number is used to detect 
+ *						changes.
+ * @param str			Config name, or "default" for the default map list.  Config names 
+ *						should be somewhat descriptive.  For example, the admin menu uses 
+ *						a config name of "admin menu".  The list names can be configured 
+ *						by users in addons/sourcemod/configs/maplists.cfg.
+ * @param serial		Serial number to identify last known map list change.  If -1, the 
+ *						the value will not be checked.  If the map list has since changed, 
+ *						the serial is updated (even if -1 was passed).  If there is an error 
+ *						finding a valid maplist, then the serial is set to -1.
+ * @param flags			MAPLIST_FLAG flags.
+ * @return				On failure:
+ *						 INVALID_HANDLE is returned, the serial is set to -1, and the input 
+ *						 array (if any) is left unchanged.
+ *						On no change:
+ 						 INVALID_HANDLE is returned, the serial is unchanged, and the input 
+ 						 array (if any) is left unchanged.
+ *						On success:
+ *						 A valid array Handle is returned, containing at least one map string.  
+ *						 If an array was passed, the return value is equal to the passed Array 
+ *						 Handle.  If the passed array was not cleared, it will have grown by at 
+ *						 least one item.  The serial number is updated to a positive number.
+ * @error				Invalid array Handle that is not INVALID_HANDLE.
+ */
+native Handle:ReadMapList(Handle:array=INVALID_HANDLE,
+						  &serial=-1,
+						  const String:str[]="default",
+						  flags=MAPLIST_FLAG_CLEARARRAY);
+						  
+/**
+ * Makes a compatibility binding for map lists.  For example, if a function previously used 
+ * "clam.cfg" for map lists, this function will insert a "fake" binding to "clam.cfg" that 
+ * will be overridden if it's in the maplists.cfg file.
+ *
+ * @param name			Configuration name that would be used with ReadMapList().
+ * @param file			Default file to use.
+ * @noreturn
+ */
+native SetMapListCompatBind(const String:name[], const String:file[]);
+
 #include <helpers>
 #include <entity>
 
diff --git a/public/ILibrarySys.h b/public/ILibrarySys.h
index e2cc240c..14dd22c1 100644
--- a/public/ILibrarySys.h
+++ b/public/ILibrarySys.h
@@ -42,7 +42,14 @@
 namespace SourceMod
 {
 	#define SMINTERFACE_LIBRARYSYS_NAME		"ILibrarySys"
-	#define SMINTERFACE_LIBRARYSYS_VERSION	3
+	#define SMINTERFACE_LIBRARYSYS_VERSION	4
+
+	enum FileTimeType
+	{
+		FileTime_LastAccess = 0,	/* Last access (not available on FAT) */
+		FileTime_Created = 1,		/* Creation (not available on FAT) */
+		FileTime_LastChange = 2,	/* Last modification */
+	};
 
 	class ILibrary
 	{
@@ -202,6 +209,19 @@ namespace SourceMod
 		 * @return			True on success, false otherwise.
 		 */
 		virtual bool CreateFolder(const char *path) =0;
+
+		/**
+		 * @brief Returns the requested timestamp of a file.
+		 *
+		 * NOTE: On FAT file systems, the access and creation times 
+		 * may not be valid.
+		 *
+		 * @param path		Path to file.
+		 * @param type		FileTimeType of time value to request.
+		 * @param pTime		Pointer to store time.
+		 * @return			True on success, false on failure.
+		 */
+		virtual bool FileTime(const char *path, FileTimeType type, time_t *pTime) =0;
 	};
 }
 

From ac058124cc5027f79697cc539880afefda63294c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Dec 2007 02:17:18 +0000
Subject: [PATCH 062/263] added a note about ReadMapList() lifetime

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401745
---
 plugins/include/sourcemod.inc | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc
index f10e9836..6f6f52f4 100644
--- a/plugins/include/sourcemod.inc
+++ b/plugins/include/sourcemod.inc
@@ -510,6 +510,10 @@ forward OnLibraryRemoved(const String:name[]);
  * If the maps end up being read from the maps folder (MAPLIST_FLAG_MAPSFOLDER), they 
  * are automatically sorted in alphabetical, ascending order.
  *
+ * Arrays created by this function are temporary and must be freed via CloseHandle().
+ * Modifying arrays created by this function will not affect future return values or 
+ * or the contents of arrays returned to other plugins.
+ *
  * @param array			Array to store the map list.  If INVALID_HANDLE, a new blank 
  *						array will be created.  The blocksize should be at least 16; 
  *						otherwise results may be truncated.  Items are added to the array 

From 5b2e32da18a59396ddbd838c6189326d0a67b1a6 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Sun, 2 Dec 2007 02:48:22 +0000
Subject: [PATCH 063/263] Added ReadMapList support for sm_votemap in the admin
 menu

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401746
---
 configs/maplists.cfg         |   6 +-
 plugins/basecommands.sp      |   9 ++-
 plugins/basecommands/map.sp  |   2 +-
 plugins/basevotes.sp         |   6 +-
 plugins/basevotes/votemap.sp | 117 +++++++----------------------------
 5 files changed, 38 insertions(+), 102 deletions(-)

diff --git a/configs/maplists.cfg b/configs/maplists.cfg
index 032b4a7e..a331f995 100644
--- a/configs/maplists.cfg
+++ b/configs/maplists.cfg
@@ -27,7 +27,11 @@
 		"target"		"mapcyclefile"
 	}
 	
-	"admin menu"
+	"sm_map menu"
+	{
+		"file"			"addons/sourcemod/configs/adminmenu_maplist.ini"
+	}
+	"sm_votemap menu"
 	{
 		"file"			"addons/sourcemod/configs/adminmenu_maplist.ini"
 	}
diff --git a/plugins/basecommands.sp b/plugins/basecommands.sp
index 6f4f765d..3471bc5a 100644
--- a/plugins/basecommands.sp
+++ b/plugins/basecommands.sp
@@ -84,16 +84,19 @@ public OnPluginStart()
 	
 	decl String:mapListPath[PLATFORM_MAX_PATH];
 	BuildPath(Path_SM, mapListPath, sizeof(mapListPath), "configs/adminmenu_maplist.ini");
-	SetMapListCompatBind("admin menu", mapListPath);
+	SetMapListCompatBind("sm_map menu", mapListPath);
 }
 
 public OnMapStart()
 {
-	LoadMapList(g_MapList);
-	
 	ParseConfigs();
 }
 
+public OnConfigsExecuted()
+{
+	LoadMapList(g_MapList);
+}
+
 public OnAdminMenuReady(Handle:topmenu)
 {
 	/* Block us from being called twice */
diff --git a/plugins/basecommands/map.sp b/plugins/basecommands/map.sp
index 0bf462b5..a6c313c6 100644
--- a/plugins/basecommands/map.sp
+++ b/plugins/basecommands/map.sp
@@ -91,7 +91,7 @@ LoadMapList(Handle:menu)
 	
 	if ((map_array = ReadMapList(g_map_array,
 			g_map_serial,
-			"admin menu",
+			"sm_map menu",
 			MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_NO_DEFAULT|MAPLIST_FLAG_MAPSFOLDER))
 		!= INVALID_HANDLE)
 	{
diff --git a/plugins/basevotes.sp b/plugins/basevotes.sp
index b93c03a7..c6c53df7 100644
--- a/plugins/basevotes.sp
+++ b/plugins/basevotes.sp
@@ -121,9 +121,13 @@ public OnPluginStart()
 	g_MapList = CreateMenu(MenuHandler_Map, MenuAction_DrawItem);
 	SetMenuTitle(g_MapList, "Please select a map");
 	SetMenuExitBackButton(g_MapList, true);
+	
+	decl String:mapListPath[PLATFORM_MAX_PATH];
+	BuildPath(Path_SM, mapListPath, sizeof(mapListPath), "configs/adminmenu_maplist.ini");
+	SetMapListCompatBind("sm_votemap menu", mapListPath);
 }
 
-public OnMapStart()
+public OnConfigsExecuted()
 {
 	g_mapCount = LoadMapList(g_MapList);
 }
diff --git a/plugins/basevotes/votemap.sp b/plugins/basevotes/votemap.sp
index c878ce77..50460d2d 100644
--- a/plugins/basevotes/votemap.sp
+++ b/plugins/basevotes/votemap.sp
@@ -1,5 +1,4 @@
 new Handle:g_MapList = INVALID_HANDLE;
-new g_mapFileTime;
 new g_mapCount;
 
 new Handle:g_SelectedMaps;
@@ -215,111 +214,37 @@ public Action:Command_Votemap(client, args)
 	return Plugin_Handled;	
 }
 
+new Handle:g_map_array = INVALID_HANDLE;
+new g_map_serial = -1;
+
 LoadMapList(Handle:menu)
 {
-	decl String:mapPath[256];
-	BuildPath(Path_SM, mapPath, sizeof(mapPath), "configs/adminmenu_maplist.ini");
+	new Handle:map_array;
 	
-	if (!FileExists(mapPath))
-	{	
-		if (g_MapList != INVALID_HANDLE)
-		{
-			RemoveAllMenuItems(menu);
-		}
-		
-		return LoadMapFolder(menu);		
-	}
-
-	// If the file hasn't changed, there's no reason to reload
-	// all of the maps.
-	new fileTime =  GetFileTime(mapPath, FileTime_LastChange);
-	if (g_mapFileTime == fileTime)
+	if ((map_array = ReadMapList(g_map_array,
+			g_map_serial,
+			"sm_votemap menu",
+			MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_NO_DEFAULT|MAPLIST_FLAG_MAPSFOLDER))
+		!= INVALID_HANDLE)
 	{
-		return GetMenuItemCount(menu);
+		g_map_array = map_array;
 	}
 	
-	g_mapFileTime = fileTime;
-	
-	// Reset the array
-	if (g_MapList != INVALID_HANDLE)
+	if (g_map_array == INVALID_HANDLE)
 	{
-		RemoveAllMenuItems(menu);
-	}
-
-	new Handle:file = OpenFile(mapPath, "rt");
-	if (file == INVALID_HANDLE)
-	{
-		LogError("[SM] Could not open file: %s, reverting to map folder", mapPath);
-		return LoadMapFolder(menu);
-	}
-	
-	decl String:buffer[256], len;
-	while (!IsEndOfFile(file) && ReadFileLine(file, buffer, sizeof(buffer)))
-	{
-		TrimString(buffer);
-
-		if ((len = StrContains(buffer, ".bsp", false)) != -1)
-		{
-			buffer[len] = '\0';
-		}
-
-		if (buffer[0] == '\0' 
-			|| buffer[0] == ';'
-			|| buffer[0] == '/'
-			|| !IsValidConVarChar(buffer[0]) 
-			|| !IsMapValid(buffer))
-		{
-			continue;
-		}
-
-		AddMenuItem(menu, buffer, buffer);
-	}
-
-	CloseHandle(file);
-	
-	new count = GetMenuItemCount(menu);
-	
-	if (!count)
-	{
-		return LoadMapFolder(menu);
-	} 
-	else
-	{
-		return count;
-	}
-}
-
-LoadMapFolder(Handle:menu)
-{
-	LogMessage("[SM] Loading menu map list from maps folder");
-	
-	new Handle:mapDir = OpenDirectory("maps/");
-	
-	if (mapDir == INVALID_HANDLE)
-	{
-		LogError("[SM] Could not open map directory for reading");
 		return 0;
 	}
 	
-	new String:mapName[64];
-	new String:buffer[64];
-	new FileType:fileType;
-	new len;
+	RemoveAllMenuItems(menu);
 	
-	while(ReadDirEntry(mapDir, mapName, sizeof(mapName), fileType))
+	decl String:map_name[64];
+	new map_count = GetArraySize(g_map_array);
+	
+	for (new i = 0; i < map_count; i++)
 	{
-		if(fileType == FileType_File)
-		{
-			len = strlen(mapName);
-
-			if(SplitString(mapName, ".bsp", buffer, sizeof(buffer)) == len)
-			{
-				AddMenuItem(menu, buffer, buffer);
-			}
-		}
-  	}
-  	
-  	CloseHandle(mapDir);
-  	
-  	return GetMenuItemCount(menu);
+		GetArrayString(g_map_array, i, map_name, sizeof(map_name));
+		AddMenuItem(menu, map_name, map_name);
+	}
+	
+	return map_count;
 }

From 9b2f22fa6d633a2720ecb57893f566cf686a14f3 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Dec 2007 04:31:28 +0000
Subject: [PATCH 064/263] fixed the build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401747
---
 core/Makefile.ep1  | 2 +-
 core/Makefile.ep2  | 2 +-
 core/Makefile.orig | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/core/Makefile.ep1 b/core/Makefile.ep1
index c25cac9c..195f7693 100644
--- a/core/Makefile.ep1
+++ b/core/Makefile.ep1
@@ -28,7 +28,7 @@ OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreC
 OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_datapacks.cpp smn_entities.cpp smn_events.cpp smn_fakenatives.cpp \
 	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
-	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplist.cpp \
+	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplists.cpp \
 	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
 	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp
 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
diff --git a/core/Makefile.ep2 b/core/Makefile.ep2
index 1d3ff939..f0df5e60 100644
--- a/core/Makefile.ep2
+++ b/core/Makefile.ep2
@@ -28,7 +28,7 @@ OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreC
 OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_datapacks.cpp smn_entities.cpp smn_events.cpp smn_fakenatives.cpp \
 	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
-	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplist.cpp \
+	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplists.cpp \
 	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
 	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp
 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
diff --git a/core/Makefile.orig b/core/Makefile.orig
index eec753e1..dc2e4c76 100644
--- a/core/Makefile.orig
+++ b/core/Makefile.orig
@@ -28,7 +28,7 @@ OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreC
 OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_datapacks.cpp smn_entities.cpp smn_events.cpp smn_fakenatives.cpp \
 	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
-	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplist.cpp \
+	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplists.cpp \
 	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
 	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp
 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \

From 6ecfa76b013d511f20f0a1edfacfc098a14b9477 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Dec 2007 05:33:57 +0000
Subject: [PATCH 065/263] committed vcproj changes left around

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401748
---
 core/msvc8/sourcemod_mm.vcproj | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/core/msvc8/sourcemod_mm.vcproj b/core/msvc8/sourcemod_mm.vcproj
index 823a0756..b059bb32 100644
--- a/core/msvc8/sourcemod_mm.vcproj
+++ b/core/msvc8/sourcemod_mm.vcproj
@@ -1425,7 +1425,15 @@
 			UniqueIdentifier="{2A750240-7C10-455f-A900-B9A9D362356C}"
 			>
 			<File
-				RelativePath="..\Makefile"
+				RelativePath="..\Makefile.ep1"
+				>
+			</File>
+			<File
+				RelativePath="..\Makefile.ep2"
+				>
+			</File>
+			<File
+				RelativePath="..\Makefile.orig"
 				>
 			</File>
 			<File

From 7e013d83438be876530652b4b297dc5cacf0be3d Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Dec 2007 05:38:58 +0000
Subject: [PATCH 066/263] fixed linux build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401749
---
 public/ILibrarySys.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/public/ILibrarySys.h b/public/ILibrarySys.h
index 14dd22c1..da6d4711 100644
--- a/public/ILibrarySys.h
+++ b/public/ILibrarySys.h
@@ -38,6 +38,7 @@
  */
 
 #include <IShareSys.h>
+#include <time.h>
 
 namespace SourceMod
 {

From b6bb09e0b8b6246bf15fa103fdf4cdaa46b09017 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Dec 2007 16:30:47 +0000
Subject: [PATCH 067/263] nextmap now use ReadMapList() and OnConfigsExecuted()
 instead of OnMapStart

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401750
---
 plugins/nextmap.sp | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/plugins/nextmap.sp b/plugins/nextmap.sp
index 160c2bce..d1d09568 100644
--- a/plugins/nextmap.sp
+++ b/plugins/nextmap.sp
@@ -52,7 +52,7 @@ new Handle:g_Cvar_Nextmap;
 
 new g_MapPos = -1;
 new Handle:g_MapList = INVALID_HANDLE;
-new g_mapFileTime;
+new g_MapListSerial = -1;
  
 public OnPluginStart()
 {
@@ -68,12 +68,6 @@ public OnPluginStart()
 	
 	g_MapList = CreateArray(32);
 
-	if (!LoadMaps(g_MapList, g_mapFileTime))
-	{
-		LogError("FATAL: Cannot load map cycle. Nextmap not loaded.");
-		SetFailState("Mapcycle Not Found");		
-	}	
-	
 	HookUserMessage(g_VGUIMenu, UserMsg_VGUIMenu);
 	
 	g_Cvar_Nextmap = CreateConVar("sm_nextmap", "", "Sets the Next Map", FCVAR_NOTIFY);
@@ -91,7 +85,7 @@ public OnPluginStart()
 	SetConVarString(g_Cvar_Nextmap, currentMap);
 }
  
-public OnMapStart()
+public OnConfigsExecuted()
 {
 	decl String:lastMap[64], String:currentMap[64];
 	GetConVarString(g_Cvar_Nextmap, lastMap, 64);
@@ -102,11 +96,18 @@ public OnMapStart()
 	// not in mapcyclefile. So we keep it set to the last expected nextmap. - ferret
 	if (strcmp(lastMap, currentMap) == 0)
 	{
-		if (!LoadMaps(g_MapList, g_mapFileTime))
+		if (ReadMapList(g_MapList, 
+				g_MapListSerial, 
+				"mapcyclefile", 
+				MAPLIST_FLAG_CLEARARRAY)
+			== INVALID_HANDLE)
 		{
-			LogError("FATAL: Cannot load map cycle. Nextmap not loaded.");
-			SetFailState("Mapcycle Not Found");	
-		}		
+			if (g_MapListSerial == -1)
+			{
+				LogError("FATAL: Cannot load map cycle. Nextmap not loaded.");
+				SetFailState("Mapcycle Not Found");
+			}
+		}
 		
 		FindAndSetNextMap();
 	}

From ab2ef7a0e02fa82423b8f3433121c4c980b06936 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Dec 2007 16:43:19 +0000
Subject: [PATCH 068/263] nextmap won't default to anything non-mapcyclefile
 now

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401751
---
 plugins/nextmap.sp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/nextmap.sp b/plugins/nextmap.sp
index d1d09568..01733f29 100644
--- a/plugins/nextmap.sp
+++ b/plugins/nextmap.sp
@@ -99,7 +99,7 @@ public OnConfigsExecuted()
 		if (ReadMapList(g_MapList, 
 				g_MapListSerial, 
 				"mapcyclefile", 
-				MAPLIST_FLAG_CLEARARRAY)
+				MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_NO_DEFAULT)
 			== INVALID_HANDLE)
 		{
 			if (g_MapListSerial == -1)

From 98b74c2e21c3b62deccd7c24f89c6ea2f3cf0267 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Dec 2007 16:43:34 +0000
Subject: [PATCH 069/263] fixed a bug where mapcyclefile might not be read
 properly

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401752
---
 core/smn_maplists.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/core/smn_maplists.cpp b/core/smn_maplists.cpp
index 6a50b974..27dd4971 100644
--- a/core/smn_maplists.cpp
+++ b/core/smn_maplists.cpp
@@ -77,7 +77,6 @@ public:
 	}
 	void OnSourceModAllInitialized()
 	{
-		m_pMapCycleFile = icvar->FindVar("mapcyclefile");
 		g_SourceMod.BuildPath(Path_SM, m_ConfigFile, sizeof(m_ConfigFile), "configs/maplists.cfg");
 	}
 	void OnSourceModShutdown()
@@ -157,6 +156,8 @@ public:
 			return;
 		}
 
+		m_pMapCycleFile = icvar->FindVar("mapcyclefile");
+
 		/* Dump everything we know about. */
 		List<maplist_info_t *> compat;
 		DumpCache(&compat);
@@ -343,7 +344,7 @@ public:
 					success = GetMapList(&pNewArray, name, &change_serial);
 				}
 				/* If either of the last two conditions failed, try again if we can. */
-				if (!success)
+				if (!success && strcmp(name, "mapcyclefile") != 0)
 				{
 					success = GetMapList(&pNewArray, "mapcyclefile", &change_serial);
 				}

From 86a9369c04029e542a7faaf00477491c03b6afaa Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Dec 2007 16:47:10 +0000
Subject: [PATCH 070/263] fixed a crashbug when MAPLIST_FLAG_MAPSFOLDER was not
 present and all fallbacks failed

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401753
---
 core/smn_maplists.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/smn_maplists.cpp b/core/smn_maplists.cpp
index 27dd4971..bb2b38a5 100644
--- a/core/smn_maplists.cpp
+++ b/core/smn_maplists.cpp
@@ -328,7 +328,7 @@ public:
 	CellArray *UpdateMapList(CellArray *pUseArray, const char *name, int *pSerial, unsigned int flags)
 	{
 		int change_serial;
-		CellArray *pNewArray;
+		CellArray *pNewArray = NULL;
 		bool success, free_new_array;
 
 		free_new_array = false;

From 049eff8336a6e04977de7bee823fa3714a1ae4c7 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 3 Dec 2007 02:27:59 +0000
Subject: [PATCH 071/263] fixed amb1233 - sm_psay from server console

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401754
---
 plugins/basechat.sp | 26 +++++++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/plugins/basechat.sp b/plugins/basechat.sp
index 17c803bf..a8ed25f9 100644
--- a/plugins/basechat.sp
+++ b/plugins/basechat.sp
@@ -317,17 +317,37 @@ public Action:Command_SmPsay(client, args)
 		return Plugin_Handled;	
 		
 	decl String:name[64], String:name2[64];
-	GetClientName(client, name, sizeof(name));
+
+	if (client == 0)
+	{
+		name = "Console";
+	}
+	else
+	{
+		GetClientName(client, name, sizeof(name));
+	}
+
 	GetClientName(target, name2, sizeof(name2));
 
-	if (g_DoColor)
+	if (client == 0)
+	{
+		PrintToServer("(Private: %s) %s: %s", name2, name, message);
+	}
+	else if (g_DoColor)
 	{
 		PrintToChat(client, "\x04(Private: %s) %s: \x01%s", name2, name, message);
-		PrintToChat(target, "\x04(Private: %s) %s: \x01%s", name2, name, message);
 	}
 	else
 	{
 		PrintToChat(client, "(Private: %s) %s: %s", name2, name, message);
+	}
+
+	if (g_DoColor)
+	{
+		PrintToChat(target, "\x04(Private: %s) %s: \x01%s", name2, name, message);
+	}
+	else
+	{
 		PrintToChat(target, "(Private: %s) %s: %s", name2, name, message);		
 	}
 

From 6533e16019a5cf83ac9752d2f3720cc438e60313 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 3 Dec 2007 02:43:42 +0000
Subject: [PATCH 072/263] fixed amb1210 - ReadMapList() broken for
 "mapcyclefile"

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401755
---
 core/smn_maplists.cpp | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/core/smn_maplists.cpp b/core/smn_maplists.cpp
index bb2b38a5..864751ee 100644
--- a/core/smn_maplists.cpp
+++ b/core/smn_maplists.cpp
@@ -500,9 +500,16 @@ private:
 
 		if (m_pMapCycleFile != NULL && strcmp(name, "mapcyclefile") == 0)
 		{
-			if (strcmp(m_pMapCycleFile->GetString(), pMapList->path) != 0)
+			char path[PLATFORM_MAX_PATH];
+			g_SourceMod.BuildPath(Path_Game,
+				path, 
+				sizeof(path),
+				"%s",
+				m_pMapCycleFile ? m_pMapCycleFile->GetString() : "mapcycle.txt");
+
+			if (strcmp(path, pMapList->path) != 0)
 			{
-				strncopy(pMapList->path, m_pMapCycleFile->GetString(), sizeof(pMapList->path));
+				strncopy(pMapList->path, path, sizeof(pMapList->path));
 				pMapList->last_modified_time = 0;
 			}
 		}

From dcb77e0918fa7bcd5206a5ebd5666f007c3bc998 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 3 Dec 2007 03:19:21 +0000
Subject: [PATCH 073/263] addressed amb1230 - BfReadString() erroring on
 something that should be perfectly valid

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401756
---
 core/smn_bitbuffer.cpp        |   9 +-
 plugins/include/bitbuffer.inc | 628 +++++++++++++++++-----------------
 plugins/nextmap.sp            |   7 +-
 3 files changed, 328 insertions(+), 316 deletions(-)

diff --git a/core/smn_bitbuffer.cpp b/core/smn_bitbuffer.cpp
index 56889ba2..fe8479a7 100644
--- a/core/smn_bitbuffer.cpp
+++ b/core/smn_bitbuffer.cpp
@@ -484,6 +484,7 @@ static cell_t smn_BfReadString(IPluginContext *pCtx, const cell_t *params)
 	HandleError herr;
 	HandleSecurity sec;
 	bf_read *pBitBuf;
+	int numChars = 0;
 	char *buf;
 
 	sec.pOwner = NULL;
@@ -496,12 +497,14 @@ static cell_t smn_BfReadString(IPluginContext *pCtx, const cell_t *params)
 	}
 
 	pCtx->LocalToPhysAddr(params[2], (cell_t **)&buf);
-	if (!pBitBuf->ReadString(buf, params[3], params[4] ? true : false))
+	pBitBuf->ReadString(buf, params[3], params[4], &numChars);
+
+	if (pBitBuf->IsOverflowed())
 	{
-		return pCtx->ThrowNativeError("Destination string buffer is too short, try increasing its size");
+		return -numChars - 1;
 	}
 
-	return 1;
+	return numChars;
 }
 
 static cell_t smn_BfReadEntity(IPluginContext *pCtx, const cell_t *params)
diff --git a/plugins/include/bitbuffer.inc b/plugins/include/bitbuffer.inc
index 40ee22ac..ddf0790d 100644
--- a/plugins/include/bitbuffer.inc
+++ b/plugins/include/bitbuffer.inc
@@ -1,312 +1,316 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
- * =============================================================================
- *
- * This file is part of the SourceMod/SourcePawn SDK.
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation.  You must obey the GNU General Public License in
- * all respects for all other code used.  Additionally, AlliedModders LLC grants
- * this exception to all derivative works.  AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or <http://www.sourcemod.net/license.php>.
- *
- * Version: $Id$
- */
-
-#if defined _bitbuffer_included
- #endinput
-#endif
-#define _bitbuffer_included
-
-/** 
- * Writes a single bit to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param bit			Bit to write (true for 1, false for 0).
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteBool(Handle:bf, bool:bit);
- 
-/**
- * Writes a byte to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param byte			Byte to write (value will be written as 8bit).
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteByte(Handle:bf, byte);
-
-/**
- * Writes a byte to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param chr			Character to write.
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteChar(Handle:bf, chr);
-
-/**
- * Writes a 16bit integer to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param num			Integer to write (value will be written as 16bit).
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteShort(Handle:bf, num);
-
-/**
- * Writes a 16bit unsigned integer to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param num			Integer to write (value will be written as 16bit).
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteWord(Handle:bf, num);
-
-/**
- * Writes a normal integer to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param num			Integer to write (value will be written as 32bit).
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteNum(Handle:bf, num);
-
-/**
- * Writes a floating point number to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param num			Number to write.
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteFloat(Handle:bf, Float:num);
-
-/**
- * Writes a string to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param string		Text string to write.
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteString(Handle:bf, const String:string[]);
-
-/**
- * Writes an entity to a writable bitbuffer (bf_write).
- * @note This is a wrapper around BfWriteShort().
- *
- * @param bf			bf_write handle to write to.
- * @param ent			Entity index to write.
- * @noreturn
- * @error				Invalid or incorrect Handle, or invalid entity.
- */
-native BfWriteEntity(Handle:bf, ent);
-
-/**
- * Writes a bit angle to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param angle			Angle to write.
- * @param numBits		Optional number of bits to use.
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteAngle(Handle:bf, Float:angle, numBits=8);
-
-/**
- * Writes a coordinate to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param coord			Coordinate to write.
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteCoord(Handle:bf, Float:coord);
-
-/**
- * Writes a 3D vector of coordinates to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param coord			Coordinate array to write.
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteVecCoord(Handle:bf, Float:coord[3]);
-
-/**
- * Writes a 3D normal vector to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param vec			Vector to write.
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteVecNormal(Handle:bf, Float:vec[3]);
-
-/**
- * Writes a 3D angle vector to a writable bitbuffer (bf_write).
- *
- * @param bf			bf_write handle to write to.
- * @param angles		Angle vector to write.
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfWriteAngles(Handle:bf, Float:angles[3]);
-
-/** 
- * Reads a single bit from a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @return			Bit value read.
- * @error				Invalid or incorrect Handle.
- */
-native bool:BfReadBool(Handle:bf);
-
-/**
- * Reads a byte from a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @return			Byte value read (read as 8bit).
- * @error				Invalid or incorrect Handle.
- */
-native BfReadByte(Handle:bf);
-
-/**
- * Reads a character from a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @return			Character value read.
- * @error				Invalid or incorrect Handle.
- */
-native BfReadChar(Handle:bf);
-
-/**
- * Reads a 16bit integer from a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @return			Integer value read (read as 16bit).
- * @error				Invalid or incorrect Handle.
- */
-native BfReadShort(Handle:bf);
-
-/**
- * Reads a 16bit unsigned integer from a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @return			Integer value read (read as 16bit).
- * @error				Invalid or incorrect Handle.
- */
-native BfReadWord(Handle:bf);
-
-/**
- * Reads a normal integer to a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @return			Integer value read (read as 32bit).
- * @error				Invalid or incorrect Handle.
- */
-native BfReadNum(Handle:bf);
-
-/**
- * Reads a floating point number from a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @return			Floating point value read.
- * @error				Invalid or incorrect Handle.
- */
-native Float:BfReadFloat(Handle:bf);
-
-/**
- * Reads a string from a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @param buffer		Destination string buffer.
- * @param maxlength		Maximum length of output string buffer.
- * @param line			If true the buffer will be copied until it reaches a '\n' or a null terminator.
- * @noreturn
- * @error				Invalid or incorrect Handle, destination string buffer was too short.
- */
-native BfReadString(Handle:bf, String:buffer[], maxlength, bool:line=false);
-
-/**
- * Reads an entity from a readable bitbuffer (bf_read).
- * @note This is a wrapper around BfReadShort().
- *
- * @param bf			bf_read handle to read from.
- * @return			Entity index read.
- * @error				Invalid or incorrect Handle.
- */
-native BfReadEntity(Handle:bf);
-
-/**
- * Reads a bit angle from a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @param numBits		Optional number of bits to use.
- * @return			Angle read.
- * @error				Invalid or incorrect Handle.
- */
-native Float:BfReadAngle(Handle:bf, numBits=8);
-
-/**
- * Reads a coordinate from a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @return			Coordinate read.
- * @error				Invalid or incorrect Handle.
- */
-native Float:BfReadCoord(Handle:bf);
-
-/**
- * Reads a 3D vector of coordinates from a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @param coord			Destination coordinate array.
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfReadVecCoord(Handle:bf, Float:coord[3]);
-
-/**
- * Reads a 3D normal vector from a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @param vec			Destination vector array.
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfReadVecNormal(Handle:bf, Float:vec[3]);
-
-/**
- * Reads a 3D angle vector from a readable bitbuffer (bf_read).
- *
- * @param bf			bf_read handle to read from.
- * @param angles		Destination angle vector.
- * @noreturn
- * @error				Invalid or incorrect Handle.
- */
-native BfReadAngles(Handle:bf, Float:angles[3]);
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This file is part of the SourceMod/SourcePawn SDK.
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#if defined _bitbuffer_included
+ #endinput
+#endif
+#define _bitbuffer_included
+
+/** 
+ * Writes a single bit to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param bit			Bit to write (true for 1, false for 0).
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteBool(Handle:bf, bool:bit);
+ 
+/**
+ * Writes a byte to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param byte			Byte to write (value will be written as 8bit).
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteByte(Handle:bf, byte);
+
+/**
+ * Writes a byte to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param chr			Character to write.
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteChar(Handle:bf, chr);
+
+/**
+ * Writes a 16bit integer to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param num			Integer to write (value will be written as 16bit).
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteShort(Handle:bf, num);
+
+/**
+ * Writes a 16bit unsigned integer to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param num			Integer to write (value will be written as 16bit).
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteWord(Handle:bf, num);
+
+/**
+ * Writes a normal integer to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param num			Integer to write (value will be written as 32bit).
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteNum(Handle:bf, num);
+
+/**
+ * Writes a floating point number to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param num			Number to write.
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteFloat(Handle:bf, Float:num);
+
+/**
+ * Writes a string to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param string		Text string to write.
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteString(Handle:bf, const String:string[]);
+
+/**
+ * Writes an entity to a writable bitbuffer (bf_write).
+ * @note This is a wrapper around BfWriteShort().
+ *
+ * @param bf			bf_write handle to write to.
+ * @param ent			Entity index to write.
+ * @noreturn
+ * @error				Invalid or incorrect Handle, or invalid entity.
+ */
+native BfWriteEntity(Handle:bf, ent);
+
+/**
+ * Writes a bit angle to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param angle			Angle to write.
+ * @param numBits		Optional number of bits to use.
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteAngle(Handle:bf, Float:angle, numBits=8);
+
+/**
+ * Writes a coordinate to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param coord			Coordinate to write.
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteCoord(Handle:bf, Float:coord);
+
+/**
+ * Writes a 3D vector of coordinates to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param coord			Coordinate array to write.
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteVecCoord(Handle:bf, Float:coord[3]);
+
+/**
+ * Writes a 3D normal vector to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param vec			Vector to write.
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteVecNormal(Handle:bf, Float:vec[3]);
+
+/**
+ * Writes a 3D angle vector to a writable bitbuffer (bf_write).
+ *
+ * @param bf			bf_write handle to write to.
+ * @param angles		Angle vector to write.
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfWriteAngles(Handle:bf, Float:angles[3]);
+
+/** 
+ * Reads a single bit from a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @return				Bit value read.
+ * @error				Invalid or incorrect Handle.
+ */
+native bool:BfReadBool(Handle:bf);
+
+/**
+ * Reads a byte from a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @return				Byte value read (read as 8bit).
+ * @error				Invalid or incorrect Handle.
+ */
+native BfReadByte(Handle:bf);
+
+/**
+ * Reads a character from a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @return				Character value read.
+ * @error				Invalid or incorrect Handle.
+ */
+native BfReadChar(Handle:bf);
+
+/**
+ * Reads a 16bit integer from a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @return				Integer value read (read as 16bit).
+ * @error				Invalid or incorrect Handle.
+ */
+native BfReadShort(Handle:bf);
+
+/**
+ * Reads a 16bit unsigned integer from a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @return				Integer value read (read as 16bit).
+ * @error				Invalid or incorrect Handle.
+ */
+native BfReadWord(Handle:bf);
+
+/**
+ * Reads a normal integer to a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @return				Integer value read (read as 32bit).
+ * @error				Invalid or incorrect Handle.
+ */
+native BfReadNum(Handle:bf);
+
+/**
+ * Reads a floating point number from a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @return				Floating point value read.
+ * @error				Invalid or incorrect Handle.
+ */
+native Float:BfReadFloat(Handle:bf);
+
+/**
+ * Reads a string from a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @param buffer		Destination string buffer.
+ * @param maxlength		Maximum length of output string buffer.
+ * @param line			If true the buffer will be copied until it reaches a '\n' or a null terminator.
+ * @return				Number of bytes written to the buffer.  If the bitbuffer stream overflowed, 
+ *						that is, had no terminator before the end of the stream, then a negative 
+ *						number will be returned equal to the number of characters written to the 
+ *						buffer minus 1.  The buffer will be null terminated regardless of the 
+ *						return value.
+ * @error				Invalid or incorrect Handle.
+ */
+native BfReadString(Handle:bf, String:buffer[], maxlength, bool:line=false);
+
+/**
+ * Reads an entity from a readable bitbuffer (bf_read).
+ * @note This is a wrapper around BfReadShort().
+ *
+ * @param bf			bf_read handle to read from.
+ * @return				Entity index read.
+ * @error				Invalid or incorrect Handle.
+ */
+native BfReadEntity(Handle:bf);
+
+/**
+ * Reads a bit angle from a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @param numBits		Optional number of bits to use.
+ * @return				Angle read.
+ * @error				Invalid or incorrect Handle.
+ */
+native Float:BfReadAngle(Handle:bf, numBits=8);
+
+/**
+ * Reads a coordinate from a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @return				Coordinate read.
+ * @error				Invalid or incorrect Handle.
+ */
+native Float:BfReadCoord(Handle:bf);
+
+/**
+ * Reads a 3D vector of coordinates from a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @param coord			Destination coordinate array.
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfReadVecCoord(Handle:bf, Float:coord[3]);
+
+/**
+ * Reads a 3D normal vector from a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @param vec			Destination vector array.
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfReadVecNormal(Handle:bf, Float:vec[3]);
+
+/**
+ * Reads a 3D angle vector from a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @param angles		Destination angle vector.
+ * @noreturn
+ * @error				Invalid or incorrect Handle.
+ */
+native BfReadAngles(Handle:bf, Float:angles[3]);
diff --git a/plugins/nextmap.sp b/plugins/nextmap.sp
index 01733f29..b17159a3 100644
--- a/plugins/nextmap.sp
+++ b/plugins/nextmap.sp
@@ -195,7 +195,12 @@ public Action:UserMsg_VGUIMenu(UserMsg:msg_id, Handle:bf, const players[], playe
 	}
 	
 	decl String:type[15];
-	BfReadString(bf, type, sizeof(type));
+
+	/* If we don't get a valid string, bail out. */
+	if (BfReadString(bf, type, sizeof(type)) < 0)
+	{
+		return Plugin_Handled;
+	}
  
 	if (BfReadByte(bf) == 1 && BfReadByte(bf) == 0 && (strcmp(type, "scores", false) == 0))
 	{

From 0cb387bf0a2fca346b1de165defc107f22fb5c26 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 3 Dec 2007 03:24:33 +0000
Subject: [PATCH 074/263] added amb995 - garrysmod support

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401757
---
 gamedata/sdktools.games.txt | 61 +++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index b2d75206..18fa31a6 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -1028,4 +1028,65 @@
 			}
 		}
 	}
+
+	/* Garry's Mod 10 - Windows only */
+	"garrysmod"
+	{
+		"Offsets"
+		{
+			"GiveNamedItem"
+			{
+				"windows"	"366"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"264"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"262"
+			}
+			"Ignite"
+			{
+				"windows"	"220"
+			}
+			"Extinguish"
+			{
+				"windows"	"221"
+			}
+			"Teleport"
+			{
+				"windows"	"99"
+			}
+			"CommitSuicide"
+			{
+				"windows"	"394"
+			}
+			"GetVelocity"
+			{
+				"windows"	"127"
+			}
+			"EyeAngles"
+			{
+				"windows"	"119"
+			}
+			"AcceptInput"
+			{
+				"windows"	"35"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+			}
+		}
+	}
 }
+

From 0b8410eae1fb1b0b3f2c8addb51d967a3f6c14e9 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 3 Dec 2007 22:55:23 +0000
Subject: [PATCH 075/263] added empires 2.0 support to sdktools

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401758
---
 gamedata/sdktools.games.ep2.txt | 1069 +++++++++++++++++++++++++++++--
 1 file changed, 1000 insertions(+), 69 deletions(-)

diff --git a/gamedata/sdktools.games.ep2.txt b/gamedata/sdktools.games.ep2.txt
index 7fc52211..c7c25951 100644
--- a/gamedata/sdktools.games.ep2.txt
+++ b/gamedata/sdktools.games.ep2.txt
@@ -25,13 +25,22 @@
 			}
 		}
 	}
-	
+
 	/* General Temp Entities */
 	"#default"
 	{
 		"#supported"
 		{
-			"game"		"tf"
+			"game"		"cstrike"
+			"game"		"dod"
+			"game"		"hl2mp"
+			"game"		"ship"
+			"game"		"!Dystopia"
+			"game"		"!Insurgency"
+			"game"		"!Pirates, Vikings and Knights II"
+			"game"		"!SourceForts v1.9.2"
+			"game"		"FortressForever"
+			"game"		"empires"
 		}
 
 		"Offsets"
@@ -53,8 +62,8 @@
 			}
 			"TE_GetServerClass"
 			{
-				"windows"	"0"
-				"linux"		"0"
+				"windows"	"1"
+				"linux"		"1"
 			}
 		}
 
@@ -73,37 +82,71 @@
 		}
 	}
 	
-	/* Create Entity Signatures */
+	/* General GameRules */
 	"#default"
 	{
 		"#supported"
 		{
-			"game"		"tf"
+			"game"		"cstrike"
+			"game"		"dod"
+			"game"		"garrysmod"
+			"game"		"hl2mp"
+			"game"		"ship"
+			"game"		"!Dystopia"
+			"game"		"!Insurgency"
+			"game"		"!Pirates, Vikings and Knights II"
+			"game"		"!SourceForts v1.9.2"
+			"game"		"FortressForever"
+			"game"		"empires"
 		}
-
+		
+		"Offsets"
+		{
+			/* Offset into CreateGameRulesObject */
+			"g_pGameRules"
+			{
+				"windows"	"2"
+			}
+		}
+		
 		"Signatures"
 		{
-			"DispatchSpawn"
+			/* This signature sometimes has multiple matches, but this
+			 * does not matter as g_pGameRules is involved in all of them.
+			 * The same g_pGameRules offset applies to each match.
+			 *
+			 * Sometimes this block of bytes is at the beginning of the static
+			 * CreateGameRulesObject function and sometimes it is in the middle
+			 * of an entirely different function. This depends on the game.
+			 */
+			"CreateGameRulesObject"
 			{
 				"library"	"server"
-				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
-				"windows"	"\x53\x55\x56\x8B\x74\x24\x10\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\x50\x64\x8B\xCB"
+				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x6A\x01\xFF\x50"
 			}
-			"CreateEntityByName"
+			"g_pGameRules"
 			{
 				"library"	"server"
-				"linux"		"@_Z18CreateEntityByNamePKci"
-				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x27\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x54\x56\xFF\xD2"
+				"linux"		"@g_pGameRules"
 			}
 		}
 	}
-
+	
 	/* CGlobalEntityList */
 	"#default"
 	{
 		"#supported"
 		{
-			"game"		"tf"
+			"game"		"cstrike"
+			"game"		"dod"
+			"game"		"garrysmod"
+			"game"		"hl2mp"
+			"game"		"ship"
+			"game"		"!Insurgency"
+			"game"		"!Pirates, Vikings and Knights II"
+			"game"		"!SourceForts v1.9.2"
+			"game"		"FortressForever"
+			"game"		"empires"
 		}
 		
 		"Offsets"
@@ -132,61 +175,795 @@
 			"FindEntityByClassname"
 			{
 				"library"	"server"
-				"windows"	"\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x85\xC9\x57\x74\x19\x8B\x01\x8B\x50\x08\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x83\xC0\x01\xC1\xE0\x04\x8B\x3C\x30\xEB\x06\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x39\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\xEB\x03"
+				"windows"	"\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x2A\x85\xC9\x57\x74\x2A\x8B\x01\xFF\x50\x2A\x8B\x08\x81\xE1\x2A\x2A\x2A\x2A\x83\xC1\x2A\xC1\xE1\x2A\x8B\x3C\x31\xEB\x2A\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x5C\x24\x2A\x8B\x2D\x2A\x2A\x2A\x2A\x8D\x9B\x00\x00\x00\x00\x8B\x37\x85\xF6\x75\x2A\x68\x2A\x2A\x2A\x2A\xFF\x2A\x83\xC4\x2A\xEB\x2A\x39"
 				"linux"		"@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
 			}
 		}
 	}
 
-	/* General GameRules */
+	/* Create Entity Signatures */
 	"#default"
 	{
 		"#supported"
 		{
-			"game"		"tf"
+			"game"		"cstrike"
+			"game"		"dod"
+			"game"		"hl2mp"
+			"game"		"!Insurgency"
+			"game"		"!Pirates, Vikings and Knights II"
+			"game"		"FortressForever"
+			"game"		"empires"
 		}
-		
-		"Offsets"
-		{
-			/* Offset into CreateGameRulesObject */
-			"g_pGameRules"
-			{
-				"windows"	"2"
-			}
-		}
-		
+
 		"Signatures"
 		{
-			/* This signature sometimes has multiple matches, but this
-			 * does not matter as g_pGameRules is involved in all of them.
-			 * The same g_pGameRules offset applies to each match.
+			"DispatchSpawn"
+			{
+				"library"	"server"
+				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
+				"windows"	"\x53\x55\x56\x8B\x74\x24\x10\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x60"
+			}
+			"CreateEntityByName"
+			{
+				"library"	"server"
+				"linux"		"@_Z18CreateEntityByNamePKci"
+				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
+			}
+		}
+	}
+
+	/* Create Entity Signatures */
+	"!SourceForts v1.9.2"
+	{
+		"Signatures"
+		{
+			"DispatchSpawn"
+			{
+				"library"	"server"
+				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
+				"windows"	"\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x14\x8B\x16\x8B\xCE"
+			}
+			"CreateEntityByName"
+			{
+				"library"	"server"
+				"linux"		"@_Z18CreateEntityByNamePKci"
+				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
+			}
+		}
+	}
+
+	/* Create Entity Signatures */
+	"ship"
+	{
+		"Signatures"
+		{
+			"DispatchSpawn"
+			{
+				"library"	"server"
+				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
+				"windows"	"\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x60\x8B\0x16"
+			}
+			"CreateEntityByName"
+			{
+				"library"	"server"
+				"linux"		"@_Z18CreateEntityByNamePKci"
+				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
+			}
+		}
+	}
+
+	/* Counter-Strike: Source */
+	"cstrike"
+	{
+		"Keys"
+		{
+			"SlapSoundCount"	"3"
+			"SlapSound1"		"player/damage1.wav"
+			"SlapSound2"		"player/damage2.wav"
+			"SlapSound3"		"player/damage3.wav"
+		}
+
+		"Offsets"
+		{
+			"GiveNamedItem"
+			{
+				"windows"	"329"
+				"linux"		"330"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"226"
+				"linux"		"227"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"224"
+				"linux"		"225"
+			}
+			"Ignite"
+			{
+				"windows"	"188"
+				"linux"		"189"
+			}
+			"Extinguish"
+			{
+				"windows"	"189"
+				"linux"		"190"
+			}
+			"Teleport"
+			{
+				"windows"	"98"
+				"linux"		"99"
+			}
+			"CommitSuicide"
+			{
+				"windows"	"357"
+				"linux"		"358"
+			}
+			"GetVelocity"
+			{
+				"windows"	"126"
+				"linux"		"127"
+			}
+			"EyeAngles"
+			{
+				"windows"	"118"
+				"linux"		"119"
+			}
+			"AcceptInput"
+			{
+				"windows"	"35"
+				"linux"		"36"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+				"linux"		"30"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+				"linux"		"32"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+		}
+	}
+
+	/* Day of Defeat */
+	"dod"
+	{
+		"Offsets"
+		{
+			"GiveNamedItem"
+			{
+				"windows"	"328"
+				"linux"		"330"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"226"
+				"linux"		"227"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"224"
+				"linux"		"225"
+			}
+			"Ignite"
+			{
+				"windows"	"188"
+				"linux"		"189"
+			}
+			"Extinguish"
+			{
+				"windows"	"189"
+				"linux"		"190"
+			}
+			"Teleport"
+			{
+				"windows"	"98"
+				"linux"		"99"
+			}
+			"CommitSuicide"
+			{
+				"windows"	"356"
+				"linux"		"357"
+			}
+			"GetVelocity"
+			{
+				"windows"	"126"
+				"linux"		"127"
+			}
+			"EyeAngles"
+			{
+				"windows"	"118"
+				"linux"		"119"
+			}
+			"AcceptInput"
+			{
+				"windows"	"35"
+				"linux"		"36"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+				"linux"		"30"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+				"linux"		"32"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+		}
+	}
+	
+	/* Half-Life 2: Deathmatch */
+	"hl2mp"
+	{
+		"Offsets"
+		{
+			"GiveNamedItem"
+			{
+				"windows"	"328"
+				"linux"		"329"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"226"
+				"linux"		"227"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"224"
+				"linux"		"225"
+			}
+			"Ignite"
+			{
+				"windows"	"188"
+				"linux"		"189"
+			}
+			"Extinguish"
+			{
+				"windows"	"189"
+				"linux"		"190"
+			}
+			"Teleport"
+			{
+				"windows"	"98"
+				"linux"		"99"
+			}
+			"CommitSuicide"
+			{
+				"windows"	"356"
+				"linux"		"357"
+			}
+			"GetVelocity"
+			{
+				"windows"	"126"
+				"linux"		"127"
+			}
+			"EyeAngles"
+			{
+				"windows"	"118"
+				"linux"		"119"
+			}
+			"AcceptInput"
+			{
+				"windows"	"35"
+				"linux"		"36"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+				"linux"		"30"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+				"linux"		"32"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+		}
+	}
+	
+	/* The Ship */
+	"ship"
+	{
+		"Offsets"
+		{
+			/* CBasePlayer */
+			"GiveNamedItem"
+			{
+				"windows"	"316"
+				"linux"		"317"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"220"
+				"linux"		"221"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"218"
+				"linux"		"219"
+			}
+			"Ignite"
+			{
+				"windows"	"180"
+				"linux"		"181"
+			}
+			"Extinguish"
+			{
+				"windows"	"181"
+				"linux"		"182"
+			}
+			"Teleport"
+			{
+				"windows"	"100"
+				"linux"		"101"
+			}
+			"CommitSuicide"
+			{
+				"windows"	"343"
+				"linux"		"344"
+			}
+			"GetVelocity"
+			{
+				"windows"	"124"
+				"linux"		"125"
+			}
+			"EyeAngles"
+			{
+				"windows"	"116"
+				"linux"		"117"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"35"
+				"linux"		"34"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"34"
+				"linux"		"35"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"33"
+				"linux"		"36"
+			}
+			"AcceptInput"
+			{
+				"windows"	"39"
+				"linux"		"40"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
+			
+			/* Temp Entities */
+			"TE_GetServerClass"
+			{
+				"windows"	"0"
+				"linux"		"0"
+			}
+		}
+	}
+	
+	/* Dsytopia */
+	"!Dystopia"
+	{
+
+		"Offsets"
+		{
+			/* CBasePlayer */
+			"GiveNamedItem"
+			{
+				"windows"	"331"
+				"linux"		"332"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"229"
+				"linux"		"230"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"227"
+				"linux"		"228"
+			}
+			"Ignite"
+			{
+				"windows"	"191"
+				"linux"		"192"
+			}
+			"Extinguish"
+			{
+				"windows"	"192"
+				"linux"		"193"
+			}
+			"Teleport"
+			{
+				"windows"	"100"
+				"linux"		"101"
+			}
+			"CommitSuicide"
+			{
+				"windows"	"360"
+				"linux"		"361"
+			}
+			"GetVelocity"
+			{
+				"windows"	"128"
+				"linux"		"129"
+			}
+			"EyeAngles"
+			{
+				"windows"	"120"
+				"linux"		"121"
+			}
+			"AcceptInput"
+			{
+				"windows"	"35"
+				"linux"		"36"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+				"linux"		"30"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+				"linux"		"32"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+
+			/* Offset into CBaseTempEntity constructor.
+			 * On Windows Dsytopia is heavily inlined; we use the function 
+			 * surrounding "aCouldnTFindTem" in IDA instead.
+			 */
+			"s_pTempEntities"
+			{
+				"windows"	"70"
+			}
+		}
+
+		"Signatures"
+		{
+			/* On Windows Dsytopia is heavily inlined; we use the function 
+			 * surrounding "aCouldnTFindTem" in IDA instead.
+			 */
+			"CBaseTempEntity"
+			{
+				"library"	"server"
+				"windows"	"\x81\xEC\x84\x00\x00\x00\x56\x8B\xF1\x8B\x46\x6C\x57\x8D\x7E\x6C\x8D\x4C\x24\x08\x83\xC8\x20\x51\x89\x44\x24\x0C\xE8\x2A\x2A\x2A"
+			}
+
+			/* Dystopia always has to be different, doesn't it
 			 *
-			 * Sometimes this block of bytes is at the beginning of the static
-			 * CreateGameRulesObject function and sometimes it is in the middle
-			 * of an entirely different function. This depends on the game.
+			 * This is very similar to the general signature, except that
+			 * it does "mov edx, [eax+2Ch]" before making a call rather than
+			 * doing "call dword ptr [eax+2Ch]"
 			 */
 			"CreateGameRulesObject"
 			{
 				"library"	"server"
 				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x6A\x01\xFF\xD2"
 			}
-			"g_pGameRules"
+		}
+	}
+
+	/* Insurgency Generic */
+	"!Insurgency"
+	{
+		"Offsets"
+		{
+			/* CBasePlayer */
+			"Ignite"
 			{
-				"library"	"server"
-				"linux"		"@g_pGameRules"
+				"windows"	"174"
+				"linux"		"175"
+			}
+			"Extinguish"
+			{
+				"windows"	"175"
+				"linux"		"176"
+			}
+			"Teleport"
+			{
+				"windows"	"90"
+				"linux"		"91"
+			}
+			"GetVelocity"
+			{
+				"windows"	"115"
+				"linux"		"116"
+			}
+			"EyeAngles"
+			{
+				"windows"	"107"
+				"linux"		"108"
+			}
+			"AcceptInput"
+			{
+				"windows"	"34"
+				"linux"		"35"
+			}
+			"s_pTempEntities"
+			{
+				"linux"		"28"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"30"
+				"linux"		"29"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"29"
+				"linux"		"30"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"28"
+				"linux"		"31"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"24"
+				"linux"		"25"
 			}
 		}
 	}
 
-	/* Team Fortress 2 Offsets */
-	"tf"
+	/* Insurgency 1.1a Patch for Linux */
+	"!Insurgency"
 	{
+		"CRC"
+		{
+			"server"
+			{
+				"linux"		"6D0E55DC"
+			}
+		}
+
+		"Offsets"
+		{
+			"s_pTempEntities"
+			{
+				"linux"		"29"
+			}
+		}
+	}
+
+	/* Pirates, Vikings and Knights II */
+	"!Pirates, Vikings and Knights II"
+	{
+		"Offsets"
+		{
+			/* CBasePlayer */
+			"GiveNamedItem"
+			{
+				"windows"	"328"
+				"linux"		"329"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"226"
+				"linux"		"227"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"224"
+				"linux"		"225"
+			}
+			"Ignite"
+			{
+				"windows"	"188"
+				"linux"		"189"
+			}
+			"Extinguish"
+			{
+				"windows"	"189"
+				"linux"		"190"
+			}
+			"Teleport"
+			{
+				"windows"	"98"
+				"linux"		"99"
+			}
+			"CommitSuicide"
+			{
+				"windows"	"356"
+				"linux"		"357"
+			}
+			"GetVelocity"
+			{
+				"windows"	"126"
+				"linux"		"127"
+			}
+			"EyeAngles"
+			{
+				"windows"	"118"
+				"linux"		"119"
+			}
+			"AcceptInput"
+			{
+				"windows"	"35"
+				"linux"		"36"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+				"linux"		"30"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+				"linux"		"32"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+			
+			/* Temp Entities */
+			"s_pTempEntities"
+			{
+				"linux"		"29"
+			}
+		}
+	}
+
+	/* SourceForts 1.9.2 */
+	"!SourceForts v1.9.2"
+	{
+		"Offsets"
+		{
+			/* CBasePlayer */
+			"GiveNamedItem"
+			{
+				"windows"	"294"
+				"linux"		"295"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"207"
+				"linux"		"208"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"205"
+				"linux"		"206"
+			}
+			"Ignite"
+			{
+				"windows"	"170"
+				"linux"		"171"
+			}
+			"Extinguish"
+			{
+				"windows"	"171"
+				"linux"		"172"
+			}
+			"Teleport"
+			{
+				"windows"	"90"
+				"linux"		"91"
+			}
+			"GetVelocity"
+			{
+				"windows"	"114"
+				"linux"		"115"
+			}
+			"EyeAngles"
+			{
+				"windows"	"106"
+				"linux"		"107"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"30"
+				"linux"		"29"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"29"
+				"linux"		"30"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"28"
+				"linux"		"31"
+			}
+			"AcceptInput"
+			{
+				"windows"	"34"
+				"linux"		"35"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+
+			/* Temp Entities */
+			"s_pTempEntities"
+			{
+				"linux"		"29"
+			}
+			"TE_GetServerClass"
+			{
+				"windows"	"0"
+				"linux"		"0"
+			}
+		}
+	}
+	
+	/* Fortress Forever */
+	"FortressForever"
+	{
+		"Signatures"
+		{
+			"CreateGameRulesObject"
+			{
+				"library"	"server"
+				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x3B\xCB\x74\x07\x8B\x01\x6A\x01\xFF\x50"
+			}
+		}
+		
 		"Offsets"
 		{
 			"GiveNamedItem"
 			{
-				"windows"	"348"
-				"linux"		"349"
+				"windows"	"338"
+				"linux"		"339"
 			}
 			"RemovePlayerItem"
 			{
@@ -200,59 +977,213 @@
 			}
 			"Ignite"
 			{
-				"windows"	"191"
-				"linux"		"192"
+				"windows"	"198"
+				"linux"		"199"
 			}
 			"Extinguish"
 			{
-				"windows"	"195"
-				"linux"		"196"
+				"windows"	"199"
+				"linux"		"200"
 			}
 			"Teleport"
 			{
-				"windows"	"99"
-				"linux"		"100"
+				"windows"	"104"
+				"linux"		"105"
 			}
 			"CommitSuicide"
 			{
-				"windows"	"384"
-				"linux"		"384"
+				"windows"	"366"
+				"linux"		"367"
 			}
 			"GetVelocity"
+			{
+				"windows"	"136"
+				"linux"		"137"
+			}
+			"EyeAngles"
 			{
 				"windows"	"128"
 				"linux"		"129"
 			}
-			"EyeAngles"
+			"AcceptInput"
 			{
-				"windows"	"120"
-				"linux"		"121"
+				"windows"	"39"
+				"linux"		"40"
 			}
 			"DispatchKeyValue"
 			{
-				"windows"	"29"
-				"linux"		"28"
+				"windows"	"35"
+				"linux"		"34"
 			}
 			"DispatchKeyValueFloat"
-			{
-				"windows"	"28"
-				"linux"		"29"
-			}
-			"DispatchKeyValueVector"
-			{
-				"windows"	"27"
-				"linux"		"30"
-			}
-			"SetEntityModel"
-			{
-				"windows"	"23"
-				"linux"		"24"
-			}
-			"AcceptInput"
 			{
 				"windows"	"34"
 				"linux"		"35"
 			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"33"
+				"linux"		"36"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"27"
+				"linux"		"28"
+			}
+		}
+	}
+
+	/* Garry's Mod 10 - Windows only */
+	"garrysmod"
+	{
+		"Offsets"
+		{
+			"GiveNamedItem"
+			{
+				"windows"	"366"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"264"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"262"
+			}
+			"Ignite"
+			{
+				"windows"	"220"
+			}
+			"Extinguish"
+			{
+				"windows"	"221"
+			}
+			"Teleport"
+			{
+				"windows"	"99"
+			}
+			"CommitSuicide"
+			{
+				"windows"	"394"
+			}
+			"GetVelocity"
+			{
+				"windows"	"127"
+			}
+			"EyeAngles"
+			{
+				"windows"	"119"
+			}
+			"AcceptInput"
+			{
+				"windows"	"35"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+			}
+		}
+	}
+
+	/* Empires 2 */
+	"empires"
+	{
+
+		"Offsets"
+		{
+			"GiveNamedItem"
+			{
+				"windows"	"332"
+				"linux"		"333"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"230"
+				"linux"		"231"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"228"
+				"linux"		"229"
+			}
+			"Ignite"
+			{
+				"windows"	"192"
+				"linux"		"193"
+			}
+			"Extinguish"
+			{
+				"windows"	"193"
+				"linux"		"194"
+			}
+			"Teleport"
+			{
+				"windows"	"102"
+				"linux"		"103"
+			}
+			"CommitSuicide"
+			{
+				"windows"	"360"
+				"linux"		"361"
+			}
+			"GetVelocity"
+			{
+				"windows"	"130"
+				"linux"		"131"
+			}
+			"EyeAngles"
+			{
+				"windows"	"122"
+				"linux"		"123"
+			}
+			"AcceptInput"
+			{
+				"windows"	"36"
+				"linux"		"37"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+				"linux"		"30"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+				"linux"		"32"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+
+			/* Offset into LevelShutdown for CGlobalEntList */
+			"gEntList"
+			{
+				"windows"	"64"
+			}
+		}
+		
+		"Signatures"
+		{
+			"LevelShutdown"
+			{
+				"library"	"server"
+				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2B\x56\xE8\x2A\x2A\x2A\x2A\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x8B\xF1\x74\x0E"
+			}
 		}
 	}
 }

From 430a7ee54bbac895730333dd375c3514daabc8c0 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 3 Dec 2007 22:57:47 +0000
Subject: [PATCH 076/263] reverted accidental stupid commit

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401759
---
 gamedata/sdktools.games.ep2.txt | 1059 ++-----------------------------
 1 file changed, 64 insertions(+), 995 deletions(-)

diff --git a/gamedata/sdktools.games.ep2.txt b/gamedata/sdktools.games.ep2.txt
index c7c25951..7fc52211 100644
--- a/gamedata/sdktools.games.ep2.txt
+++ b/gamedata/sdktools.games.ep2.txt
@@ -25,22 +25,13 @@
 			}
 		}
 	}
-
+	
 	/* General Temp Entities */
 	"#default"
 	{
 		"#supported"
 		{
-			"game"		"cstrike"
-			"game"		"dod"
-			"game"		"hl2mp"
-			"game"		"ship"
-			"game"		"!Dystopia"
-			"game"		"!Insurgency"
-			"game"		"!Pirates, Vikings and Knights II"
-			"game"		"!SourceForts v1.9.2"
-			"game"		"FortressForever"
-			"game"		"empires"
+			"game"		"tf"
 		}
 
 		"Offsets"
@@ -62,8 +53,8 @@
 			}
 			"TE_GetServerClass"
 			{
-				"windows"	"1"
-				"linux"		"1"
+				"windows"	"0"
+				"linux"		"0"
 			}
 		}
 
@@ -82,71 +73,37 @@
 		}
 	}
 	
-	/* General GameRules */
+	/* Create Entity Signatures */
 	"#default"
 	{
 		"#supported"
 		{
-			"game"		"cstrike"
-			"game"		"dod"
-			"game"		"garrysmod"
-			"game"		"hl2mp"
-			"game"		"ship"
-			"game"		"!Dystopia"
-			"game"		"!Insurgency"
-			"game"		"!Pirates, Vikings and Knights II"
-			"game"		"!SourceForts v1.9.2"
-			"game"		"FortressForever"
-			"game"		"empires"
+			"game"		"tf"
 		}
-		
-		"Offsets"
-		{
-			/* Offset into CreateGameRulesObject */
-			"g_pGameRules"
-			{
-				"windows"	"2"
-			}
-		}
-		
+
 		"Signatures"
 		{
-			/* This signature sometimes has multiple matches, but this
-			 * does not matter as g_pGameRules is involved in all of them.
-			 * The same g_pGameRules offset applies to each match.
-			 *
-			 * Sometimes this block of bytes is at the beginning of the static
-			 * CreateGameRulesObject function and sometimes it is in the middle
-			 * of an entirely different function. This depends on the game.
-			 */
-			"CreateGameRulesObject"
+			"DispatchSpawn"
 			{
 				"library"	"server"
-				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x6A\x01\xFF\x50"
+				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
+				"windows"	"\x53\x55\x56\x8B\x74\x24\x10\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\x50\x64\x8B\xCB"
 			}
-			"g_pGameRules"
+			"CreateEntityByName"
 			{
 				"library"	"server"
-				"linux"		"@g_pGameRules"
+				"linux"		"@_Z18CreateEntityByNamePKci"
+				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x27\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x54\x56\xFF\xD2"
 			}
 		}
 	}
-	
+
 	/* CGlobalEntityList */
 	"#default"
 	{
 		"#supported"
 		{
-			"game"		"cstrike"
-			"game"		"dod"
-			"game"		"garrysmod"
-			"game"		"hl2mp"
-			"game"		"ship"
-			"game"		"!Insurgency"
-			"game"		"!Pirates, Vikings and Knights II"
-			"game"		"!SourceForts v1.9.2"
-			"game"		"FortressForever"
-			"game"		"empires"
+			"game"		"tf"
 		}
 		
 		"Offsets"
@@ -175,795 +132,61 @@
 			"FindEntityByClassname"
 			{
 				"library"	"server"
-				"windows"	"\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x2A\x85\xC9\x57\x74\x2A\x8B\x01\xFF\x50\x2A\x8B\x08\x81\xE1\x2A\x2A\x2A\x2A\x83\xC1\x2A\xC1\xE1\x2A\x8B\x3C\x31\xEB\x2A\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x5C\x24\x2A\x8B\x2D\x2A\x2A\x2A\x2A\x8D\x9B\x00\x00\x00\x00\x8B\x37\x85\xF6\x75\x2A\x68\x2A\x2A\x2A\x2A\xFF\x2A\x83\xC4\x2A\xEB\x2A\x39"
+				"windows"	"\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x85\xC9\x57\x74\x19\x8B\x01\x8B\x50\x08\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x83\xC0\x01\xC1\xE0\x04\x8B\x3C\x30\xEB\x06\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x39\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\xEB\x03"
 				"linux"		"@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
 			}
 		}
 	}
 
-	/* Create Entity Signatures */
+	/* General GameRules */
 	"#default"
 	{
 		"#supported"
 		{
-			"game"		"cstrike"
-			"game"		"dod"
-			"game"		"hl2mp"
-			"game"		"!Insurgency"
-			"game"		"!Pirates, Vikings and Knights II"
-			"game"		"FortressForever"
-			"game"		"empires"
+			"game"		"tf"
 		}
-
+		
+		"Offsets"
+		{
+			/* Offset into CreateGameRulesObject */
+			"g_pGameRules"
+			{
+				"windows"	"2"
+			}
+		}
+		
 		"Signatures"
 		{
-			"DispatchSpawn"
-			{
-				"library"	"server"
-				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
-				"windows"	"\x53\x55\x56\x8B\x74\x24\x10\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x60"
-			}
-			"CreateEntityByName"
-			{
-				"library"	"server"
-				"linux"		"@_Z18CreateEntityByNamePKci"
-				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
-			}
-		}
-	}
-
-	/* Create Entity Signatures */
-	"!SourceForts v1.9.2"
-	{
-		"Signatures"
-		{
-			"DispatchSpawn"
-			{
-				"library"	"server"
-				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
-				"windows"	"\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x14\x8B\x16\x8B\xCE"
-			}
-			"CreateEntityByName"
-			{
-				"library"	"server"
-				"linux"		"@_Z18CreateEntityByNamePKci"
-				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
-			}
-		}
-	}
-
-	/* Create Entity Signatures */
-	"ship"
-	{
-		"Signatures"
-		{
-			"DispatchSpawn"
-			{
-				"library"	"server"
-				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
-				"windows"	"\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x60\x8B\0x16"
-			}
-			"CreateEntityByName"
-			{
-				"library"	"server"
-				"linux"		"@_Z18CreateEntityByNamePKci"
-				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
-			}
-		}
-	}
-
-	/* Counter-Strike: Source */
-	"cstrike"
-	{
-		"Keys"
-		{
-			"SlapSoundCount"	"3"
-			"SlapSound1"		"player/damage1.wav"
-			"SlapSound2"		"player/damage2.wav"
-			"SlapSound3"		"player/damage3.wav"
-		}
-
-		"Offsets"
-		{
-			"GiveNamedItem"
-			{
-				"windows"	"329"
-				"linux"		"330"
-			}
-			"RemovePlayerItem"
-			{
-				"windows"	"226"
-				"linux"		"227"
-			}
-			"Weapon_GetSlot"
-			{
-				"windows"	"224"
-				"linux"		"225"
-			}
-			"Ignite"
-			{
-				"windows"	"188"
-				"linux"		"189"
-			}
-			"Extinguish"
-			{
-				"windows"	"189"
-				"linux"		"190"
-			}
-			"Teleport"
-			{
-				"windows"	"98"
-				"linux"		"99"
-			}
-			"CommitSuicide"
-			{
-				"windows"	"357"
-				"linux"		"358"
-			}
-			"GetVelocity"
-			{
-				"windows"	"126"
-				"linux"		"127"
-			}
-			"EyeAngles"
-			{
-				"windows"	"118"
-				"linux"		"119"
-			}
-			"AcceptInput"
-			{
-				"windows"	"35"
-				"linux"		"36"
-			}
-			"DispatchKeyValue"
-			{
-				"windows"	"31"
-				"linux"		"30"
-			}
-			"DispatchKeyValueFloat"
-			{
-				"windows"	"30"
-				"linux"		"31"
-			}
-			"DispatchKeyValueVector"
-			{
-				"windows"	"29"
-				"linux"		"32"
-			}
-			"SetEntityModel"
-			{
-				"windows"	"25"
-				"linux"		"26"
-			}
-		}
-	}
-
-	/* Day of Defeat */
-	"dod"
-	{
-		"Offsets"
-		{
-			"GiveNamedItem"
-			{
-				"windows"	"328"
-				"linux"		"330"
-			}
-			"RemovePlayerItem"
-			{
-				"windows"	"226"
-				"linux"		"227"
-			}
-			"Weapon_GetSlot"
-			{
-				"windows"	"224"
-				"linux"		"225"
-			}
-			"Ignite"
-			{
-				"windows"	"188"
-				"linux"		"189"
-			}
-			"Extinguish"
-			{
-				"windows"	"189"
-				"linux"		"190"
-			}
-			"Teleport"
-			{
-				"windows"	"98"
-				"linux"		"99"
-			}
-			"CommitSuicide"
-			{
-				"windows"	"356"
-				"linux"		"357"
-			}
-			"GetVelocity"
-			{
-				"windows"	"126"
-				"linux"		"127"
-			}
-			"EyeAngles"
-			{
-				"windows"	"118"
-				"linux"		"119"
-			}
-			"AcceptInput"
-			{
-				"windows"	"35"
-				"linux"		"36"
-			}
-			"DispatchKeyValue"
-			{
-				"windows"	"31"
-				"linux"		"30"
-			}
-			"DispatchKeyValueFloat"
-			{
-				"windows"	"30"
-				"linux"		"31"
-			}
-			"DispatchKeyValueVector"
-			{
-				"windows"	"29"
-				"linux"		"32"
-			}
-			"SetEntityModel"
-			{
-				"windows"	"25"
-				"linux"		"26"
-			}
-		}
-	}
-	
-	/* Half-Life 2: Deathmatch */
-	"hl2mp"
-	{
-		"Offsets"
-		{
-			"GiveNamedItem"
-			{
-				"windows"	"328"
-				"linux"		"329"
-			}
-			"RemovePlayerItem"
-			{
-				"windows"	"226"
-				"linux"		"227"
-			}
-			"Weapon_GetSlot"
-			{
-				"windows"	"224"
-				"linux"		"225"
-			}
-			"Ignite"
-			{
-				"windows"	"188"
-				"linux"		"189"
-			}
-			"Extinguish"
-			{
-				"windows"	"189"
-				"linux"		"190"
-			}
-			"Teleport"
-			{
-				"windows"	"98"
-				"linux"		"99"
-			}
-			"CommitSuicide"
-			{
-				"windows"	"356"
-				"linux"		"357"
-			}
-			"GetVelocity"
-			{
-				"windows"	"126"
-				"linux"		"127"
-			}
-			"EyeAngles"
-			{
-				"windows"	"118"
-				"linux"		"119"
-			}
-			"AcceptInput"
-			{
-				"windows"	"35"
-				"linux"		"36"
-			}
-			"DispatchKeyValue"
-			{
-				"windows"	"31"
-				"linux"		"30"
-			}
-			"DispatchKeyValueFloat"
-			{
-				"windows"	"30"
-				"linux"		"31"
-			}
-			"DispatchKeyValueVector"
-			{
-				"windows"	"29"
-				"linux"		"32"
-			}
-			"SetEntityModel"
-			{
-				"windows"	"25"
-				"linux"		"26"
-			}
-		}
-	}
-	
-	/* The Ship */
-	"ship"
-	{
-		"Offsets"
-		{
-			/* CBasePlayer */
-			"GiveNamedItem"
-			{
-				"windows"	"316"
-				"linux"		"317"
-			}
-			"RemovePlayerItem"
-			{
-				"windows"	"220"
-				"linux"		"221"
-			}
-			"Weapon_GetSlot"
-			{
-				"windows"	"218"
-				"linux"		"219"
-			}
-			"Ignite"
-			{
-				"windows"	"180"
-				"linux"		"181"
-			}
-			"Extinguish"
-			{
-				"windows"	"181"
-				"linux"		"182"
-			}
-			"Teleport"
-			{
-				"windows"	"100"
-				"linux"		"101"
-			}
-			"CommitSuicide"
-			{
-				"windows"	"343"
-				"linux"		"344"
-			}
-			"GetVelocity"
-			{
-				"windows"	"124"
-				"linux"		"125"
-			}
-			"EyeAngles"
-			{
-				"windows"	"116"
-				"linux"		"117"
-			}
-			"DispatchKeyValue"
-			{
-				"windows"	"35"
-				"linux"		"34"
-			}
-			"DispatchKeyValueFloat"
-			{
-				"windows"	"34"
-				"linux"		"35"
-			}
-			"DispatchKeyValueVector"
-			{
-				"windows"	"33"
-				"linux"		"36"
-			}
-			"AcceptInput"
-			{
-				"windows"	"39"
-				"linux"		"40"
-			}
-			"SetEntityModel"
-			{
-				"windows"	"30"
-				"linux"		"31"
-			}
-			
-			/* Temp Entities */
-			"TE_GetServerClass"
-			{
-				"windows"	"0"
-				"linux"		"0"
-			}
-		}
-	}
-	
-	/* Dsytopia */
-	"!Dystopia"
-	{
-
-		"Offsets"
-		{
-			/* CBasePlayer */
-			"GiveNamedItem"
-			{
-				"windows"	"331"
-				"linux"		"332"
-			}
-			"RemovePlayerItem"
-			{
-				"windows"	"229"
-				"linux"		"230"
-			}
-			"Weapon_GetSlot"
-			{
-				"windows"	"227"
-				"linux"		"228"
-			}
-			"Ignite"
-			{
-				"windows"	"191"
-				"linux"		"192"
-			}
-			"Extinguish"
-			{
-				"windows"	"192"
-				"linux"		"193"
-			}
-			"Teleport"
-			{
-				"windows"	"100"
-				"linux"		"101"
-			}
-			"CommitSuicide"
-			{
-				"windows"	"360"
-				"linux"		"361"
-			}
-			"GetVelocity"
-			{
-				"windows"	"128"
-				"linux"		"129"
-			}
-			"EyeAngles"
-			{
-				"windows"	"120"
-				"linux"		"121"
-			}
-			"AcceptInput"
-			{
-				"windows"	"35"
-				"linux"		"36"
-			}
-			"DispatchKeyValue"
-			{
-				"windows"	"31"
-				"linux"		"30"
-			}
-			"DispatchKeyValueFloat"
-			{
-				"windows"	"30"
-				"linux"		"31"
-			}
-			"DispatchKeyValueVector"
-			{
-				"windows"	"29"
-				"linux"		"32"
-			}
-			"SetEntityModel"
-			{
-				"windows"	"25"
-				"linux"		"26"
-			}
-
-			/* Offset into CBaseTempEntity constructor.
-			 * On Windows Dsytopia is heavily inlined; we use the function 
-			 * surrounding "aCouldnTFindTem" in IDA instead.
-			 */
-			"s_pTempEntities"
-			{
-				"windows"	"70"
-			}
-		}
-
-		"Signatures"
-		{
-			/* On Windows Dsytopia is heavily inlined; we use the function 
-			 * surrounding "aCouldnTFindTem" in IDA instead.
-			 */
-			"CBaseTempEntity"
-			{
-				"library"	"server"
-				"windows"	"\x81\xEC\x84\x00\x00\x00\x56\x8B\xF1\x8B\x46\x6C\x57\x8D\x7E\x6C\x8D\x4C\x24\x08\x83\xC8\x20\x51\x89\x44\x24\x0C\xE8\x2A\x2A\x2A"
-			}
-
-			/* Dystopia always has to be different, doesn't it
+			/* This signature sometimes has multiple matches, but this
+			 * does not matter as g_pGameRules is involved in all of them.
+			 * The same g_pGameRules offset applies to each match.
 			 *
-			 * This is very similar to the general signature, except that
-			 * it does "mov edx, [eax+2Ch]" before making a call rather than
-			 * doing "call dword ptr [eax+2Ch]"
+			 * Sometimes this block of bytes is at the beginning of the static
+			 * CreateGameRulesObject function and sometimes it is in the middle
+			 * of an entirely different function. This depends on the game.
 			 */
 			"CreateGameRulesObject"
 			{
 				"library"	"server"
 				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x6A\x01\xFF\xD2"
 			}
-		}
-	}
-
-	/* Insurgency Generic */
-	"!Insurgency"
-	{
-		"Offsets"
-		{
-			/* CBasePlayer */
-			"Ignite"
-			{
-				"windows"	"174"
-				"linux"		"175"
-			}
-			"Extinguish"
-			{
-				"windows"	"175"
-				"linux"		"176"
-			}
-			"Teleport"
-			{
-				"windows"	"90"
-				"linux"		"91"
-			}
-			"GetVelocity"
-			{
-				"windows"	"115"
-				"linux"		"116"
-			}
-			"EyeAngles"
-			{
-				"windows"	"107"
-				"linux"		"108"
-			}
-			"AcceptInput"
-			{
-				"windows"	"34"
-				"linux"		"35"
-			}
-			"s_pTempEntities"
-			{
-				"linux"		"28"
-			}
-			"DispatchKeyValue"
-			{
-				"windows"	"30"
-				"linux"		"29"
-			}
-			"DispatchKeyValueFloat"
-			{
-				"windows"	"29"
-				"linux"		"30"
-			}
-			"DispatchKeyValueVector"
-			{
-				"windows"	"28"
-				"linux"		"31"
-			}
-			"SetEntityModel"
-			{
-				"windows"	"24"
-				"linux"		"25"
-			}
-		}
-	}
-
-	/* Insurgency 1.1a Patch for Linux */
-	"!Insurgency"
-	{
-		"CRC"
-		{
-			"server"
-			{
-				"linux"		"6D0E55DC"
-			}
-		}
-
-		"Offsets"
-		{
-			"s_pTempEntities"
-			{
-				"linux"		"29"
-			}
-		}
-	}
-
-	/* Pirates, Vikings and Knights II */
-	"!Pirates, Vikings and Knights II"
-	{
-		"Offsets"
-		{
-			/* CBasePlayer */
-			"GiveNamedItem"
-			{
-				"windows"	"328"
-				"linux"		"329"
-			}
-			"RemovePlayerItem"
-			{
-				"windows"	"226"
-				"linux"		"227"
-			}
-			"Weapon_GetSlot"
-			{
-				"windows"	"224"
-				"linux"		"225"
-			}
-			"Ignite"
-			{
-				"windows"	"188"
-				"linux"		"189"
-			}
-			"Extinguish"
-			{
-				"windows"	"189"
-				"linux"		"190"
-			}
-			"Teleport"
-			{
-				"windows"	"98"
-				"linux"		"99"
-			}
-			"CommitSuicide"
-			{
-				"windows"	"356"
-				"linux"		"357"
-			}
-			"GetVelocity"
-			{
-				"windows"	"126"
-				"linux"		"127"
-			}
-			"EyeAngles"
-			{
-				"windows"	"118"
-				"linux"		"119"
-			}
-			"AcceptInput"
-			{
-				"windows"	"35"
-				"linux"		"36"
-			}
-			"DispatchKeyValue"
-			{
-				"windows"	"31"
-				"linux"		"30"
-			}
-			"DispatchKeyValueFloat"
-			{
-				"windows"	"30"
-				"linux"		"31"
-			}
-			"DispatchKeyValueVector"
-			{
-				"windows"	"29"
-				"linux"		"32"
-			}
-			"SetEntityModel"
-			{
-				"windows"	"25"
-				"linux"		"26"
-			}
-			
-			/* Temp Entities */
-			"s_pTempEntities"
-			{
-				"linux"		"29"
-			}
-		}
-	}
-
-	/* SourceForts 1.9.2 */
-	"!SourceForts v1.9.2"
-	{
-		"Offsets"
-		{
-			/* CBasePlayer */
-			"GiveNamedItem"
-			{
-				"windows"	"294"
-				"linux"		"295"
-			}
-			"RemovePlayerItem"
-			{
-				"windows"	"207"
-				"linux"		"208"
-			}
-			"Weapon_GetSlot"
-			{
-				"windows"	"205"
-				"linux"		"206"
-			}
-			"Ignite"
-			{
-				"windows"	"170"
-				"linux"		"171"
-			}
-			"Extinguish"
-			{
-				"windows"	"171"
-				"linux"		"172"
-			}
-			"Teleport"
-			{
-				"windows"	"90"
-				"linux"		"91"
-			}
-			"GetVelocity"
-			{
-				"windows"	"114"
-				"linux"		"115"
-			}
-			"EyeAngles"
-			{
-				"windows"	"106"
-				"linux"		"107"
-			}
-			"DispatchKeyValue"
-			{
-				"windows"	"30"
-				"linux"		"29"
-			}
-			"DispatchKeyValueFloat"
-			{
-				"windows"	"29"
-				"linux"		"30"
-			}
-			"DispatchKeyValueVector"
-			{
-				"windows"	"28"
-				"linux"		"31"
-			}
-			"AcceptInput"
-			{
-				"windows"	"34"
-				"linux"		"35"
-			}
-			"SetEntityModel"
-			{
-				"windows"	"25"
-				"linux"		"26"
-			}
-
-			/* Temp Entities */
-			"s_pTempEntities"
-			{
-				"linux"		"29"
-			}
-			"TE_GetServerClass"
-			{
-				"windows"	"0"
-				"linux"		"0"
-			}
-		}
-	}
-	
-	/* Fortress Forever */
-	"FortressForever"
-	{
-		"Signatures"
-		{
-			"CreateGameRulesObject"
+			"g_pGameRules"
 			{
 				"library"	"server"
-				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x3B\xCB\x74\x07\x8B\x01\x6A\x01\xFF\x50"
+				"linux"		"@g_pGameRules"
 			}
 		}
-		
+	}
+
+	/* Team Fortress 2 Offsets */
+	"tf"
+	{
 		"Offsets"
 		{
 			"GiveNamedItem"
 			{
-				"windows"	"338"
-				"linux"		"339"
+				"windows"	"348"
+				"linux"		"349"
 			}
 			"RemovePlayerItem"
 			{
@@ -977,212 +200,58 @@
 			}
 			"Ignite"
 			{
-				"windows"	"198"
-				"linux"		"199"
+				"windows"	"191"
+				"linux"		"192"
 			}
 			"Extinguish"
 			{
-				"windows"	"199"
-				"linux"		"200"
-			}
-			"Teleport"
-			{
-				"windows"	"104"
-				"linux"		"105"
-			}
-			"CommitSuicide"
-			{
-				"windows"	"366"
-				"linux"		"367"
-			}
-			"GetVelocity"
-			{
-				"windows"	"136"
-				"linux"		"137"
-			}
-			"EyeAngles"
-			{
-				"windows"	"128"
-				"linux"		"129"
-			}
-			"AcceptInput"
-			{
-				"windows"	"39"
-				"linux"		"40"
-			}
-			"DispatchKeyValue"
-			{
-				"windows"	"35"
-				"linux"		"34"
-			}
-			"DispatchKeyValueFloat"
-			{
-				"windows"	"34"
-				"linux"		"35"
-			}
-			"DispatchKeyValueVector"
-			{
-				"windows"	"33"
-				"linux"		"36"
-			}
-			"SetEntityModel"
-			{
-				"windows"	"27"
-				"linux"		"28"
-			}
-		}
-	}
-
-	/* Garry's Mod 10 - Windows only */
-	"garrysmod"
-	{
-		"Offsets"
-		{
-			"GiveNamedItem"
-			{
-				"windows"	"366"
-			}
-			"RemovePlayerItem"
-			{
-				"windows"	"264"
-			}
-			"Weapon_GetSlot"
-			{
-				"windows"	"262"
-			}
-			"Ignite"
-			{
-				"windows"	"220"
-			}
-			"Extinguish"
-			{
-				"windows"	"221"
+				"windows"	"195"
+				"linux"		"196"
 			}
 			"Teleport"
 			{
 				"windows"	"99"
+				"linux"		"100"
 			}
 			"CommitSuicide"
 			{
-				"windows"	"394"
+				"windows"	"384"
+				"linux"		"384"
 			}
 			"GetVelocity"
 			{
-				"windows"	"127"
+				"windows"	"128"
+				"linux"		"129"
 			}
 			"EyeAngles"
 			{
-				"windows"	"119"
-			}
-			"AcceptInput"
-			{
-				"windows"	"35"
+				"windows"	"120"
+				"linux"		"121"
 			}
 			"DispatchKeyValue"
 			{
-				"windows"	"31"
+				"windows"	"29"
+				"linux"		"28"
 			}
 			"DispatchKeyValueFloat"
 			{
-				"windows"	"30"
+				"windows"	"28"
+				"linux"		"29"
 			}
 			"DispatchKeyValueVector"
 			{
-				"windows"	"29"
-			}
-		}
-	}
-
-	/* Empires 2 */
-	"empires"
-	{
-
-		"Offsets"
-		{
-			"GiveNamedItem"
-			{
-				"windows"	"332"
-				"linux"		"333"
-			}
-			"RemovePlayerItem"
-			{
-				"windows"	"230"
-				"linux"		"231"
-			}
-			"Weapon_GetSlot"
-			{
-				"windows"	"228"
-				"linux"		"229"
-			}
-			"Ignite"
-			{
-				"windows"	"192"
-				"linux"		"193"
-			}
-			"Extinguish"
-			{
-				"windows"	"193"
-				"linux"		"194"
-			}
-			"Teleport"
-			{
-				"windows"	"102"
-				"linux"		"103"
-			}
-			"CommitSuicide"
-			{
-				"windows"	"360"
-				"linux"		"361"
-			}
-			"GetVelocity"
-			{
-				"windows"	"130"
-				"linux"		"131"
-			}
-			"EyeAngles"
-			{
-				"windows"	"122"
-				"linux"		"123"
-			}
-			"AcceptInput"
-			{
-				"windows"	"36"
-				"linux"		"37"
-			}
-			"DispatchKeyValue"
-			{
-				"windows"	"31"
+				"windows"	"27"
 				"linux"		"30"
 			}
-			"DispatchKeyValueFloat"
-			{
-				"windows"	"30"
-				"linux"		"31"
-			}
-			"DispatchKeyValueVector"
-			{
-				"windows"	"29"
-				"linux"		"32"
-			}
 			"SetEntityModel"
 			{
-				"windows"	"25"
-				"linux"		"26"
+				"windows"	"23"
+				"linux"		"24"
 			}
-
-			/* Offset into LevelShutdown for CGlobalEntList */
-			"gEntList"
+			"AcceptInput"
 			{
-				"windows"	"64"
-			}
-		}
-		
-		"Signatures"
-		{
-			"LevelShutdown"
-			{
-				"library"	"server"
-				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2B\x56\xE8\x2A\x2A\x2A\x2A\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x8B\xF1\x74\x0E"
+				"windows"	"34"
+				"linux"		"35"
 			}
 		}
 	}

From 02c062a380a454dfa4a77c311e5cb02e10342429 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 3 Dec 2007 23:00:34 +0000
Subject: [PATCH 077/263] added empires mod support to sdktools

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401760
---
 gamedata/sdktools.games.txt | 98 +++++++++++++++++++++++++++++++++++++
 1 file changed, 98 insertions(+)

diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index 18fa31a6..e2a6815d 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -40,6 +40,7 @@
 			"game"		"!Pirates, Vikings and Knights II"
 			"game"		"!SourceForts v1.9.2"
 			"game"		"FortressForever"
+			"game"		"empires"
 		}
 
 		"Offsets"
@@ -96,6 +97,7 @@
 			"game"		"!Pirates, Vikings and Knights II"
 			"game"		"!SourceForts v1.9.2"
 			"game"		"FortressForever"
+			"game"		"empires"
 		}
 		
 		"Offsets"
@@ -144,6 +146,7 @@
 			"game"		"!Pirates, Vikings and Knights II"
 			"game"		"!SourceForts v1.9.2"
 			"game"		"FortressForever"
+			"game"		"empires"
 		}
 		
 		"Offsets"
@@ -189,6 +192,7 @@
 			"game"		"!Insurgency"
 			"game"		"!Pirates, Vikings and Knights II"
 			"game"		"FortressForever"
+			"game"		"empires"
 		}
 
 		"Signatures"
@@ -1088,5 +1092,99 @@
 			}
 		}
 	}
+
+	/* Empires 2 */
+	"empires"
+	{
+
+		"Offsets"
+		{
+			"GiveNamedItem"
+			{
+				"windows"	"332"
+				"linux"		"333"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"230"
+				"linux"		"231"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"228"
+				"linux"		"229"
+			}
+			"Ignite"
+			{
+				"windows"	"192"
+				"linux"		"193"
+			}
+			"Extinguish"
+			{
+				"windows"	"193"
+				"linux"		"194"
+			}
+			"Teleport"
+			{
+				"windows"	"102"
+				"linux"		"103"
+			}
+			"CommitSuicide"
+			{
+				"windows"	"360"
+				"linux"		"361"
+			}
+			"GetVelocity"
+			{
+				"windows"	"130"
+				"linux"		"131"
+			}
+			"EyeAngles"
+			{
+				"windows"	"122"
+				"linux"		"123"
+			}
+			"AcceptInput"
+			{
+				"windows"	"36"
+				"linux"		"37"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+				"linux"		"30"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+				"linux"		"32"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+
+			/* Offset into LevelShutdown for CGlobalEntList */
+			"gEntList"
+			{
+				"windows"	"64"
+			}
+		}
+		
+		"Signatures"
+		{
+			"LevelShutdown"
+			{
+				"library"	"server"
+				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2B\x56\xE8\x2A\x2A\x2A\x2A\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x8B\xF1\x74\x0E"
+			}
+		}
+	}
 }
 

From 0d6504b4a611116ada7378c2f46a9515bcd3bd3c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 4 Dec 2007 01:01:05 +0000
Subject: [PATCH 078/263] added empires to the list of mods that supports
 ShowMenu

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401761
---
 gamedata/core.games.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gamedata/core.games.txt b/gamedata/core.games.txt
index 0077e39f..e9fc883b 100644
--- a/gamedata/core.games.txt
+++ b/gamedata/core.games.txt
@@ -54,6 +54,7 @@
 			"game"		"sourceforts"
 			"game"		"!Insurgency"
 			"game"		"tf"
+			"game"		"empires"
 		}
 
 		"Keys"

From 3dd4c767c15fc4eef56dbf4951982c75ac56aec1 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 4 Dec 2007 01:08:03 +0000
Subject: [PATCH 079/263] added @t, @ts, @ct, @cts target patterns

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401762
---
 extensions/cstrike/extension.cpp | 113 +++++++++++++++++++++++++++++++
 extensions/cstrike/extension.h   |   6 +-
 2 files changed, 118 insertions(+), 1 deletion(-)

diff --git a/extensions/cstrike/extension.cpp b/extensions/cstrike/extension.cpp
index d0b8daa4..63943f77 100644
--- a/extensions/cstrike/extension.cpp
+++ b/extensions/cstrike/extension.cpp
@@ -32,6 +32,7 @@
 #include "extension.h"
 #include "RegNatives.h"
 #include "timeleft.h"
+#include "iplayerinfo.h"
 
 /**
  * @file extension.cpp
@@ -73,6 +74,8 @@ bool CStrike::SDK_OnLoad(char *error, size_t maxlength, bool late)
 		sharesys->OverrideNatives(myself, g_CS_PrintHintText);
 	}
 
+	playerhelpers->RegisterCommandTargetProcessor(this);
+
 	return true;
 }
 
@@ -94,6 +97,7 @@ void CStrike::SDK_OnUnload()
 	}
 	g_RegNatives.UnregisterAll();
 	gameconfs->CloseGameConfigFile(g_pGameConf);
+	playerhelpers->UnregisterCommandTargetProcessor(this);
 }
 
 void CStrike::SDK_OnAllLoaded()
@@ -127,3 +131,112 @@ void CStrike::NotifyInterfaceDrop(SMInterface *pInterface)
 {
 	g_RegNatives.UnregisterAll();
 }
+
+size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...)
+{
+	va_list ap;
+	va_start(ap, fmt);
+	size_t len = vsnprintf(buffer, maxlength, fmt, ap);
+	va_end(ap);
+
+	if (len >= maxlength)
+	{
+		buffer[maxlength - 1] = '\0';
+		return (maxlength - 1);
+	}
+	else
+	{
+		return len;
+	}
+}
+
+bool CStrike::ProcessCommandTarget(cmd_target_info_t *info)
+{
+	int max_clients;
+	IPlayerInfo *pInfo;
+	unsigned int team_index = 0;
+	IGamePlayer *pPlayer, *pAdmin;
+
+	if ((info->flags & COMMAND_FILTER_NO_MULTI) == COMMAND_FILTER_NO_MULTI)
+	{
+		return false;
+	}
+
+	if (info->admin)
+	{
+		if ((pAdmin = playerhelpers->GetGamePlayer(info->admin)) == NULL)
+		{
+			return false;
+		}
+		if (!pAdmin->IsInGame())
+		{
+			return false;
+		}
+	}
+	else
+	{
+		pAdmin = NULL;
+	}
+
+	if (strcmp(info->pattern, "@ct") == 0 || strcmp(info->pattern, "@cts") == 0)
+	{
+		team_index = 3;
+	}
+	else if (strcmp(info->pattern, "@t") == 0 || strcmp(info->pattern, "@ts") == 0)
+	{
+		team_index = 2;
+	}
+
+	info->num_targets = 0;
+
+	max_clients = playerhelpers->GetMaxClients();
+	for (int i = 1; 
+		 i <= max_clients && (cell_t)info->num_targets < info->max_targets; 
+		 i++)
+	{
+		if ((pPlayer = playerhelpers->GetGamePlayer(i)) == NULL)
+		{
+			continue;
+		}
+		if (!pPlayer->IsInGame())
+		{
+			continue;
+		}
+		if ((pInfo = pPlayer->GetPlayerInfo()) == NULL)
+		{
+			continue;
+		}
+		if (pInfo->GetTeamIndex() != team_index)
+		{
+			continue;
+		}
+		if (playerhelpers->FilterCommandTarget(pAdmin, pPlayer, info->flags) 
+			!= COMMAND_TARGET_VALID)
+		{
+			continue;
+		}
+		info->targets[info->num_targets] = i;
+		info->num_targets++;
+	}
+
+	if (info->num_targets == 0)
+	{
+		info->reason = COMMAND_TARGET_EMPTY_FILTER;
+	}
+	else
+	{
+		info->reason = COMMAND_TARGET_VALID;
+	}
+
+	info->target_name_style = COMMAND_TARGETNAME_RAW;
+	if (team_index == 2)
+	{
+		UTIL_Format(info->target_name, info->target_name_maxlength, "Terrorists");
+	}
+	else if (team_index == 3)
+	{
+		UTIL_Format(info->target_name, info->target_name_maxlength, "CTs");
+	}
+
+	return true;
+}
diff --git a/extensions/cstrike/extension.h b/extensions/cstrike/extension.h
index acf301f3..dc77a009 100644
--- a/extensions/cstrike/extension.h
+++ b/extensions/cstrike/extension.h
@@ -44,7 +44,9 @@
  * @brief Sample implementation of the SDK Extension.
  * Note: Uncomment one of the pre-defined virtual functions in order to use it.
  */
-class CStrike : public SDKExtension
+class CStrike : 
+	public SDKExtension,
+	public ICommandTargetProcessor
 {
 public:
 	/**
@@ -84,6 +86,8 @@ public:
 
 	void NotifyInterfaceDrop(SMInterface *pInterface);
 	bool QueryInterfaceDrop(SMInterface *pInterface);
+public:
+	bool ProcessCommandTarget(cmd_target_info_t *info);
 public:
 #if defined SMEXT_CONF_METAMOD
 	/**

From b569bd8f97195a89a4238c14f340bf423fb6d411 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 4 Dec 2007 01:17:15 +0000
Subject: [PATCH 080/263] - fixed a bug where sdktools did not filter @aim
 properly (:. immunity was ignored) - fixed a bug where sdktools did not check
 to see if g_pBinTools was valid before using it

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401763
---
 extensions/sdktools/extension.cpp | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/extensions/sdktools/extension.cpp b/extensions/sdktools/extension.cpp
index 290ac288..3a8d7450 100644
--- a/extensions/sdktools/extension.cpp
+++ b/extensions/sdktools/extension.cpp
@@ -195,6 +195,11 @@ void SDKTools::SDK_OnAllLoaded()
 {
 	SM_GET_LATE_IFACE(BINTOOLS, g_pBinTools);
 
+	if (!g_pBinTools)
+	{
+		return;
+	}
+
 	g_TEManager.Initialize();
 	s_TempEntHooks.Initialize();
 	s_SoundHooks.Initialize();
@@ -293,11 +298,20 @@ bool SDKTools::ProcessCommandTarget(cmd_target_info_t *info)
 	int player_index;
 	if ((player_index = GetClientAimTarget(pAdmin->GetEdict(), true)) < 1)
 	{
-		return false;
+		info->reason = COMMAND_TARGET_NONE;
+		info->num_targets = 0;
+		return true;
 	}
 
 	IGamePlayer *pTarget = playerhelpers->GetGamePlayer(info->admin);
 
+	info->reason = playerhelpers->FilterCommandTarget(pAdmin, pTarget, info->flags);
+	if (info->reason != COMMAND_TARGET_VALID)
+	{
+		info->num_targets = 0;
+		return true;
+	}
+
 	info->targets[0] = player_index;
 	info->num_targets = 1;
 	info->reason = COMMAND_TARGET_VALID;

From ec116917345ae0bc7ee54dbf983ff5bb7596dd07 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 4 Dec 2007 02:10:02 +0000
Subject: [PATCH 081/263] fixed build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401764
---
 extensions/cstrike/extension.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/extensions/cstrike/extension.cpp b/extensions/cstrike/extension.cpp
index 63943f77..20675935 100644
--- a/extensions/cstrike/extension.cpp
+++ b/extensions/cstrike/extension.cpp
@@ -206,7 +206,7 @@ bool CStrike::ProcessCommandTarget(cmd_target_info_t *info)
 		{
 			continue;
 		}
-		if (pInfo->GetTeamIndex() != team_index)
+		if (pInfo->GetTeamIndex() != (int)team_index)
 		{
 			continue;
 		}

From fc53efb2881380ceb6357bc7d060c47491a9405e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 4 Dec 2007 02:35:46 +0000
Subject: [PATCH 082/263] fixed amb1241 - IVEngineServer implementation of
 client querying is completely broken on orange box, thanks valve

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401765
---
 core/ConVarManager.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/ConVarManager.cpp b/core/ConVarManager.cpp
index 5e9a5ff4..594ccfd8 100644
--- a/core/ConVarManager.cpp
+++ b/core/ConVarManager.cpp
@@ -63,11 +63,11 @@ void ConVarManager::OnSourceModAllInitialized()
 	 */
 #if !defined ORANGEBOX_BUILD
 	if (g_SMAPI->GetGameDLLVersion() >= 6)
-#endif
 	{
 		SH_ADD_HOOK_MEMFUNC(IServerGameDLL, OnQueryCvarValueFinished, gamedll, this, &ConVarManager::OnQueryCvarValueFinished, false);
 		m_bIsDLLQueryHooked = true;
 	}
+#endif
 
 	HandleAccess sec;
 

From e07fa5bb28f54235af1b41dfcf024f8f1556fd51 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 4 Dec 2007 03:10:03 +0000
Subject: [PATCH 083/263] universal INS detection for radio menus

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401766
---
 gamedata/core.games.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gamedata/core.games.txt b/gamedata/core.games.txt
index e9fc883b..51b7448c 100644
--- a/gamedata/core.games.txt
+++ b/gamedata/core.games.txt
@@ -52,7 +52,8 @@
 			"game"		"cstrike"
 			"game"		"dod"
 			"game"		"sourceforts"
-			"game"		"!Insurgency"
+			"game"		"insurgency"
+			"game"		"Insurgency"
 			"game"		"tf"
 			"game"		"empires"
 		}

From 97e8e16012a8b19094d2acf6d4fc7d46c2ac815e Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Tue, 4 Dec 2007 03:29:02 +0000
Subject: [PATCH 084/263] Typo fixed

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401767
---
 translations/rockthevote.phrases.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/translations/rockthevote.phrases.txt b/translations/rockthevote.phrases.txt
index ebe48b11..c169ead0 100644
--- a/translations/rockthevote.phrases.txt
+++ b/translations/rockthevote.phrases.txt
@@ -31,7 +31,7 @@
 		"en"			"The minimal number of players required has not been met."
 	}
 
-	"Map Already in Vote"
+	"Map Already In Vote"
 	{
 		"#format"		"{1:s}"
 		"en"			"Map '{1}' already in the Rock the Vote list."

From c5b6c63ec6915549a849b461e125a8c6e502c5e1 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 4 Dec 2007 15:27:04 +0000
Subject: [PATCH 085/263] added ability to use game name from gameinfo.txt in
 gamedata files

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401768
---
 core/GameConfigs.cpp | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/core/GameConfigs.cpp b/core/GameConfigs.cpp
index b5b5ca8f..3811c3fa 100644
--- a/core/GameConfigs.cpp
+++ b/core/GameConfigs.cpp
@@ -51,6 +51,7 @@ GameConfigManager g_GameConfigs;
 IGameConfig *g_pGameConf = NULL;
 char g_Game[256];
 char g_GameDesc[256] = {'!', '\0'};
+char g_GameName[256] = {'$', '\0'};
 
 #define PSTATE_NONE						0
 #define PSTATE_GAMES					1
@@ -131,7 +132,8 @@ SMCResult CGameConfig::ReadSMC_NewSection(const SMCStates *states, const char *n
 			if ((strcmp(name, "*") == 0)
 				|| (strcmp(name, "#default") == 0)
 				|| (strcasecmp(name, g_Game) == 0)
-				|| (strcasecmp(name, g_GameDesc) == 0))
+				|| (strcasecmp(name, g_GameDesc) == 0)
+				|| (strcasecmp(name, g_GameName) == 0))
 			{
 				bShouldBeReadingDefault = true;
 				m_ParseState = PSTATE_GAMEDEFS;
@@ -271,7 +273,10 @@ SMCResult CGameConfig::ReadSMC_KeyValue(const SMCStates *states, const char *key
 		sm_trie_replace(m_pKeys, key, (void *)id);
 	} else if (m_ParseState == PSTATE_GAMEDEFS_SUPPORTED) {
 		if (strcmp(key, "game") == 0
-			&& (strcasecmp(value, g_Game) == 0 || strcasecmp(value, g_GameDesc) == 0))
+			&& (strcasecmp(value, g_Game) == 0 
+				|| strcasecmp(value, g_GameDesc) == 0
+				|| strcasecmp(value, g_GameName) == 0)
+				)
 		{
 			bShouldBeReadingDefault = true;
 		}
@@ -585,6 +590,17 @@ void GameConfigManager::OnSourceModStartup(bool late)
 
 	strncopy(g_Game, g_SourceMod.GetGameFolderName(), sizeof(g_Game));
 	strncopy(g_GameDesc + 1, SERVER_CALL(GetGameDescription)(), sizeof(g_GameDesc) - 1);
+
+	KeyValues *pGameInfo = new KeyValues("GameInfo");
+	if (pGameInfo->LoadFromFile(basefilesystem, "gameinfo.txt"))
+	{
+		const char *str;
+		if ((str = pGameInfo->GetString("game", NULL)) != NULL)
+		{
+			strncopy(g_GameName + 1, str, sizeof(g_GameName) - 1);
+		}
+	}
+	pGameInfo->deleteThis();
 }
 
 void GameConfigManager::OnSourceModAllInitialized()

From 8eb040a832c1e25c890db358d90186e9bd8b0986 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 4 Dec 2007 15:29:37 +0000
Subject: [PATCH 086/263] added sdktools support for sourceforts 1.9.3 removed
 old s_pTempEntities offsets for linux

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401769
---
 gamedata/sdktools.games.txt | 185 +++++++++++++++++++++---------------
 1 file changed, 110 insertions(+), 75 deletions(-)

diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index e2a6815d..5895b6ff 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -39,6 +39,7 @@
 			"game"		"!Insurgency"
 			"game"		"!Pirates, Vikings and Knights II"
 			"game"		"!SourceForts v1.9.2"
+			"game"		"$SourceForts v1.9.3"
 			"game"		"FortressForever"
 			"game"		"empires"
 		}
@@ -96,6 +97,7 @@
 			"game"		"!Insurgency"
 			"game"		"!Pirates, Vikings and Knights II"
 			"game"		"!SourceForts v1.9.2"
+			"game"		"$SourceForts v1.9.3"
 			"game"		"FortressForever"
 			"game"		"empires"
 		}
@@ -145,6 +147,7 @@
 			"game"		"!Insurgency"
 			"game"		"!Pirates, Vikings and Knights II"
 			"game"		"!SourceForts v1.9.2"
+			"game"		"$SourceForts v1.9.3"
 			"game"		"FortressForever"
 			"game"		"empires"
 		}
@@ -191,6 +194,7 @@
 			"game"		"hl2mp"
 			"game"		"!Insurgency"
 			"game"		"!Pirates, Vikings and Knights II"
+			"game"		"$SourceForts v1.9.3"
 			"game"		"FortressForever"
 			"game"		"empires"
 		}
@@ -212,46 +216,6 @@
 		}
 	}
 
-	/* Create Entity Signatures */
-	"!SourceForts v1.9.2"
-	{
-		"Signatures"
-		{
-			"DispatchSpawn"
-			{
-				"library"	"server"
-				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
-				"windows"	"\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x14\x8B\x16\x8B\xCE"
-			}
-			"CreateEntityByName"
-			{
-				"library"	"server"
-				"linux"		"@_Z18CreateEntityByNamePKci"
-				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
-			}
-		}
-	}
-
-	/* Create Entity Signatures */
-	"ship"
-	{
-		"Signatures"
-		{
-			"DispatchSpawn"
-			{
-				"library"	"server"
-				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
-				"windows"	"\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x60\x8B\0x16"
-			}
-			"CreateEntityByName"
-			{
-				"library"	"server"
-				"linux"		"@_Z18CreateEntityByNamePKci"
-				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
-			}
-		}
-	}
-
 	/* Counter-Strike: Source */
 	"cstrike"
 	{
@@ -578,6 +542,22 @@
 				"linux"		"0"
 			}
 		}
+
+		"Signatures"
+		{
+			"DispatchSpawn"
+			{
+				"library"	"server"
+				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
+				"windows"	"\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x60\x8B\0x16"
+			}
+			"CreateEntityByName"
+			{
+				"library"	"server"
+				"linux"		"@_Z18CreateEntityByNamePKci"
+				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
+			}
+		}
 	}
 	
 	/* Dsytopia */
@@ -729,10 +709,6 @@
 				"windows"	"34"
 				"linux"		"35"
 			}
-			"s_pTempEntities"
-			{
-				"linux"		"28"
-			}
 			"DispatchKeyValue"
 			{
 				"windows"	"30"
@@ -756,26 +732,6 @@
 		}
 	}
 
-	/* Insurgency 1.1a Patch for Linux */
-	"!Insurgency"
-	{
-		"CRC"
-		{
-			"server"
-			{
-				"linux"		"6D0E55DC"
-			}
-		}
-
-		"Offsets"
-		{
-			"s_pTempEntities"
-			{
-				"linux"		"29"
-			}
-		}
-	}
-
 	/* Pirates, Vikings and Knights II */
 	"!Pirates, Vikings and Knights II"
 	{
@@ -852,12 +808,6 @@
 				"windows"	"25"
 				"linux"		"26"
 			}
-			
-			/* Temp Entities */
-			"s_pTempEntities"
-			{
-				"linux"		"29"
-			}
 		}
 	}
 
@@ -933,17 +883,28 @@
 				"linux"		"26"
 			}
 
-			/* Temp Entities */
-			"s_pTempEntities"
-			{
-				"linux"		"29"
-			}
 			"TE_GetServerClass"
 			{
 				"windows"	"0"
 				"linux"		"0"
 			}
 		}
+
+		"Signatures"
+		{
+			"DispatchSpawn"
+			{
+				"library"	"server"
+				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
+				"windows"	"\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x14\x8B\x16\x8B\xCE"
+			}
+			"CreateEntityByName"
+			{
+				"library"	"server"
+				"linux"		"@_Z18CreateEntityByNamePKci"
+				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
+			}
+		}
 	}
 	
 	/* Fortress Forever */
@@ -1186,5 +1147,79 @@
 			}
 		}
 	}
+
+	/* SourceForts 1.9.3 */
+	"$SourceForts v1.9.3"
+	{
+		"Offsets"
+		{
+			/* CBasePlayer */
+			"GiveNamedItem"
+			{
+				"windows"	"328"
+				"linux"		"329"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"226"
+				"linux"		"227"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"224"
+				"linux"		"225"
+			}
+			"Ignite"
+			{
+				"windows"	"188"
+				"linux"		"189"
+			}
+			"Extinguish"
+			{
+				"windows"	"189"
+				"linux"		"190"
+			}
+			"Teleport"
+			{
+				"windows"	"98"
+				"linux"		"99"
+			}
+			"GetVelocity"
+			{
+				"windows"	"126"
+				"linux"		"127"
+			}
+			"EyeAngles"
+			{
+				"windows"	"118"
+				"linux"		"119"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+				"linux"		"30"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+				"linux"		"32"
+			}
+			"AcceptInput"
+			{
+				"windows"	"35"
+				"linux"		"36"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+		}
+	}
 }
 

From 737a359990aa3ba4e51f343bdeb3e128633304e1 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 4 Dec 2007 15:58:07 +0000
Subject: [PATCH 087/263] - removed ancient bcompat shim for
 translations/core.cfg file - fixed msvc8 whining about BfReadString

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401770
---
 core/Translator.cpp    | 15 +--------------
 core/smn_bitbuffer.cpp |  2 +-
 2 files changed, 2 insertions(+), 15 deletions(-)

diff --git a/core/Translator.cpp b/core/Translator.cpp
index eb6bc92e..938ad8af 100644
--- a/core/Translator.cpp
+++ b/core/Translator.cpp
@@ -729,20 +729,7 @@ void Translator::OnSourceModAllInitialized()
 
 	unsigned int id;
 
-	//backwards compatibility shim
-	/* hack -- if core.cfg exists, exec it instead. */
-	char path[PLATFORM_MAX_PATH];
-	g_SourceMod.BuildPath(Path_SM, path, sizeof(path), "translations/core.cfg");
-	
-	if (g_LibSys.PathExists(path))
-	{
-		id = FindOrAddPhraseFile("core.cfg");
-	}
-	else
-	{
-		id = FindOrAddPhraseFile("core.phrases.txt");
-	}
-
+	id = FindOrAddPhraseFile("core.phrases.txt");
 	g_pCorePhraseID = id;
 	g_pCorePhrases = GetFileByIndex(id);
 }
diff --git a/core/smn_bitbuffer.cpp b/core/smn_bitbuffer.cpp
index fe8479a7..7db96957 100644
--- a/core/smn_bitbuffer.cpp
+++ b/core/smn_bitbuffer.cpp
@@ -497,7 +497,7 @@ static cell_t smn_BfReadString(IPluginContext *pCtx, const cell_t *params)
 	}
 
 	pCtx->LocalToPhysAddr(params[2], (cell_t **)&buf);
-	pBitBuf->ReadString(buf, params[3], params[4], &numChars);
+	pBitBuf->ReadString(buf, params[3], params[4] ? true : false, &numChars);
 
 	if (pBitBuf->IsOverflowed())
 	{

From 41ac66fceb864a4f54666eb67f83fa67e618efe9 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 5 Dec 2007 15:38:45 +0000
Subject: [PATCH 088/263] deprecated IsValidHandle()

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401771
---
 plugins/include/handles.inc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/plugins/include/handles.inc b/plugins/include/handles.inc
index e0c93600..68e437a1 100644
--- a/plugins/include/handles.inc
+++ b/plugins/include/handles.inc
@@ -92,4 +92,5 @@ native Handle:CloneHandle(Handle:hndl, Handle:plugin=INVALID_HANDLE);
  * @param hndl		Handle to test for validity.
  * @return			True if handle is valid, false otherwise.
  */
+#pragma deprecated Do not use this function.
 native bool:IsValidHandle(Handle:hndl);

From 5ae2a5c4fed27a621f03cc424e8fd80a25197d0d Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 5 Dec 2007 18:07:18 +0000
Subject: [PATCH 089/263] sm_dump_handles now shows memory usage

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401772
---
 core/CellArray.h                      |  5 ++
 core/ConVarManager.cpp                |  6 ++
 core/ConVarManager.h                  |  1 +
 core/MenuManager.cpp                  | 20 ++++++-
 core/MenuManager.h                    |  1 +
 core/MenuStyle_Base.cpp               |  7 +++
 core/MenuStyle_Base.h                 |  1 +
 core/MenuStyle_Radio.cpp              | 17 ++++++
 core/MenuStyle_Radio.h                |  3 +
 core/MenuStyle_Valve.cpp              | 15 +++++
 core/MenuStyle_Valve.h                |  3 +
 core/sm_memtable.h                    |  4 ++
 core/sm_trie.cpp                      |  5 ++
 core/sm_trie.h                        |  1 +
 core/smn_adt_array.cpp                |  6 ++
 core/smn_functions.cpp                |  6 ++
 core/smn_keyvalues.cpp                | 25 +++++++++
 core/smn_menus.cpp                    |  6 ++
 core/smn_textparse.cpp                |  6 ++
 core/smn_usermsgs.cpp                 | 10 ++++
 core/systems/HandleSys.cpp            | 21 ++++++-
 core/systems/HandleSys.h              |  2 +
 core/systems/PluginSys.cpp            | 80 +++++++++++++++++++++++++++
 core/systems/PluginSys.h              |  2 +
 extensions/topmenus/TopMenu.cpp       | 23 ++++++++
 extensions/topmenus/TopMenu.h         |  2 +
 extensions/topmenus/sdk/sm_memtable.h |  4 ++
 extensions/topmenus/smn_topmenus.cpp  |  5 ++
 public/IHandleSys.h                   | 19 ++++++-
 public/IMenuManager.h                 | 23 +++++++-
 public/sm_trie_tpl.h                  |  7 +++
 31 files changed, 330 insertions(+), 6 deletions(-)

diff --git a/core/CellArray.h b/core/CellArray.h
index c9ee2831..f8925a60 100644
--- a/core/CellArray.h
+++ b/core/CellArray.h
@@ -156,6 +156,11 @@ public:
 		return m_Data;
 	}
 
+	size_t mem_usage()
+	{
+		return m_AllocSize * m_BlockSize * sizeof(cell_t);
+	}
+
 private:
 	bool GrowIfNeeded(size_t count)
 	{
diff --git a/core/ConVarManager.cpp b/core/ConVarManager.cpp
index 594ccfd8..f245efff 100644
--- a/core/ConVarManager.cpp
+++ b/core/ConVarManager.cpp
@@ -241,6 +241,12 @@ void ConVarManager::OnHandleDestroy(HandleType_t type, void *object)
 {
 }
 
+bool ConVarManager::GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+{
+	*pSize = sizeof(ConVar);
+	return true;
+}
+
 void ConVarManager::OnRootConsoleCommand(const char *cmdname, const CCommand &command)
 {
 	int argcount = command.ArgC();
diff --git a/core/ConVarManager.h b/core/ConVarManager.h
index d9cfea24..6757bbde 100644
--- a/core/ConVarManager.h
+++ b/core/ConVarManager.h
@@ -82,6 +82,7 @@ public: // SMGlobalClass
 	void OnSourceModVSPReceived();
 public: // IHandleTypeDispatch
 	void OnHandleDestroy(HandleType_t type, void *object);
+	bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize);
 public: // IPluginsListener
 	void OnPluginUnloaded(IPlugin *plugin);
 public: //IRootConsoleCommand
diff --git a/core/MenuManager.cpp b/core/MenuManager.cpp
index e0846f5e..c68fe454 100644
--- a/core/MenuManager.cpp
+++ b/core/MenuManager.cpp
@@ -81,11 +81,29 @@ void MenuManager::OnHandleDestroy(HandleType_t type, void *object)
 	{
 		IBaseMenu *menu = (IBaseMenu *)object;
 		menu->Destroy(false);
-	} else if (type == m_StyleType) {
+	}
+	else if (type == m_StyleType)
+	{
 		/* Do nothing */
 	}
 }
 
+bool MenuManager::GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+{
+	if (type == m_MenuType)
+	{
+		*pSize = ((IBaseMenu *)object)->GetApproxMemUsage();
+		return true;
+	}
+	else
+	{
+		*pSize = ((IMenuStyle *)object)->GetApproxMemUsage();
+		return true;
+	}
+
+	return false;
+}
+
 Handle_t MenuManager::CreateMenuHandle(IBaseMenu *menu, IdentityToken_t *pOwner)
 {
 	if (m_MenuType == NO_HANDLE_TYPE)
diff --git a/core/MenuManager.h b/core/MenuManager.h
index 47c07360..c3f97af3 100644
--- a/core/MenuManager.h
+++ b/core/MenuManager.h
@@ -91,6 +91,7 @@ public:
 	unsigned int GetRemainingVoteDelay();
 public: //IHandleTypeDispatch
 	void OnHandleDestroy(HandleType_t type, void *object);
+	bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize);
 public:
 	HandleError ReadMenuHandle(Handle_t handle, IBaseMenu **menu);
 	HandleError ReadStyleHandle(Handle_t handle, IMenuStyle **style);
diff --git a/core/MenuStyle_Base.cpp b/core/MenuStyle_Base.cpp
index fca46e6a..62f427eb 100644
--- a/core/MenuStyle_Base.cpp
+++ b/core/MenuStyle_Base.cpp
@@ -828,3 +828,10 @@ IMenuHandler *CBaseMenu::GetHandler()
 {
 	return m_pHandler;
 }
+
+unsigned int CBaseMenu::GetBaseMemUsage()
+{
+	return m_Title.size() 
+		+ m_Strings.GetMemTable()->GetMemUsage()
+		+ (m_items.size() * sizeof(CItem));
+}
diff --git a/core/MenuStyle_Base.h b/core/MenuStyle_Base.h
index 8d3df647..9cfe95a3 100644
--- a/core/MenuStyle_Base.h
+++ b/core/MenuStyle_Base.h
@@ -135,6 +135,7 @@ public:
 	virtual unsigned int GetMenuOptionFlags();
 	virtual void SetMenuOptionFlags(unsigned int flags);
 	virtual IMenuHandler *GetHandler();
+	unsigned int GetBaseMemUsage();
 private:
 	void InternalDelete();
 protected:
diff --git a/core/MenuStyle_Radio.cpp b/core/MenuStyle_Radio.cpp
index a1eee8ec..5efb3115 100644
--- a/core/MenuStyle_Radio.cpp
+++ b/core/MenuStyle_Radio.cpp
@@ -261,6 +261,11 @@ void CRadioStyle::ProcessWatchList()
 	}
 }
 
+unsigned int CRadioStyle::GetApproxMemUsage()
+{
+	return sizeof(CRadioStyle) + (sizeof(CRadioMenuPlayer) * 257);
+}
+
 CRadioDisplay::CRadioDisplay()
 {
 	Reset();
@@ -494,6 +499,13 @@ bool CRadioDisplay::SetSelectableKeys(unsigned int keymap)
 	return true;
 }
 
+unsigned int CRadioDisplay::GetApproxMemUsage()
+{
+	return sizeof(CRadioDisplay)
+		+ m_BufferText.size()
+		+ m_Title.size();
+}
+
 CRadioMenu::CRadioMenu(IMenuHandler *pHandler, IdentityToken_t *pOwner) : 
 CBaseMenu(pHandler, &g_RadioMenuStyle, pOwner)
 {
@@ -542,6 +554,11 @@ void CRadioMenu::Cancel_Finally()
 	g_RadioMenuStyle.CancelMenu(this);
 }
 
+unsigned int CRadioMenu::GetApproxMemUsage()
+{
+	return sizeof(CRadioMenu) + GetBaseMemUsage();
+}
+
 const char *g_RadioNumTable[11] = 
 {
 	"0. ", "1. ", "2. ", "3. ", "4. ", "5. ", "6. ", "7. ", "8. ", "9. ", "0. "
diff --git a/core/MenuStyle_Radio.h b/core/MenuStyle_Radio.h
index e8ba85f5..826c5de5 100644
--- a/core/MenuStyle_Radio.h
+++ b/core/MenuStyle_Radio.h
@@ -82,6 +82,7 @@ public: //IMenuStyle
 	IMenuPanel *CreatePanel();
 	IBaseMenu *CreateMenu(IMenuHandler *pHandler, IdentityToken_t *pOwner);
 	unsigned int GetMaxPageItems();
+	unsigned int GetApproxMemUsage();
 public: //IUserMessageListener
 	void OnUserMessage(int msg_id, bf_write *bf, IRecipientFilter *pFilter);
 	void OnUserMessageSent(int msg_id);
@@ -119,6 +120,7 @@ public: //IMenuPanel
 	unsigned int GetCurrentKey();
 	bool SetCurrentKey(unsigned int key);
 	int GetAmountRemaining();
+	unsigned int GetApproxMemUsage();
 public:
 	void DirectSet(const char *str, int keymap);
 private:
@@ -141,6 +143,7 @@ public:
 		unsigned int start_item,
 		IMenuHandler *alt_handler/* =NULL */);
 	void Cancel_Finally();
+	unsigned int GetApproxMemUsage();
 };
 
 extern CRadioStyle g_RadioMenuStyle;
diff --git a/core/MenuStyle_Valve.cpp b/core/MenuStyle_Valve.cpp
index dccace41..f51a85a0 100644
--- a/core/MenuStyle_Valve.cpp
+++ b/core/MenuStyle_Valve.cpp
@@ -163,6 +163,11 @@ bool ValveMenuStyle::DoClientMenu(int client, CBaseMenu *menu, unsigned int firs
 	return BaseMenuStyle::DoClientMenu(client, menu, first_item, mh, time);
 }
 
+unsigned int ValveMenuStyle::GetApproxMemUsage()
+{
+	return sizeof(ValveMenuStyle) + (sizeof(CValveMenuPlayer) * 257);
+}
+
 CValveMenuDisplay::CValveMenuDisplay()
 {
 	m_pKv = NULL;
@@ -342,6 +347,11 @@ int CValveMenuDisplay::GetAmountRemaining()
 	return -1;
 }
 
+unsigned int CValveMenuDisplay::GetApproxMemUsage()
+{
+	return sizeof(CValveMenuDisplay) + (sizeof(KeyValues) * m_NextPos * 10);
+}
+
 CValveMenu::CValveMenu(IMenuHandler *pHandler, IdentityToken_t *pOwner) : 
 CBaseMenu(pHandler, &g_ValveMenuStyle, pOwner), 
 	m_IntroColor(255, 0, 0, 255)
@@ -409,6 +419,11 @@ void CValveMenu::SetMenuOptionFlags(unsigned int flags)
 	CBaseMenu::SetMenuOptionFlags(flags);
 }
 
+unsigned int CValveMenu::GetApproxMemUsage()
+{
+	return sizeof(CValveMenu) + GetBaseMemUsage();
+}
+
 const char *g_OptionNumTable[] = 
 {
 	"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"
diff --git a/core/MenuStyle_Valve.h b/core/MenuStyle_Valve.h
index b59967c2..bf7bda4d 100644
--- a/core/MenuStyle_Valve.h
+++ b/core/MenuStyle_Valve.h
@@ -74,6 +74,7 @@ public: //IMenuStyle
 	IMenuPanel *CreatePanel();
 	IBaseMenu *CreateMenu(IMenuHandler *pHandler, IdentityToken_t *pOwner);
 	unsigned int GetMaxPageItems();
+	unsigned int GetApproxMemUsage();
 private:
 	void HookCreateMessage(edict_t *pEdict, DIALOG_TYPE type, KeyValues *kv, IServerPluginCallbacks *plugin);
 private:
@@ -103,6 +104,7 @@ public:
 	unsigned int GetCurrentKey();
 	bool SetCurrentKey(unsigned int key);
 	int GetAmountRemaining();
+	unsigned int GetApproxMemUsage();
 private:
 	KeyValues *m_pKv;
 	unsigned int m_NextPos;
@@ -126,6 +128,7 @@ public: //IBaseMenu
 		unsigned int start_item,
 		IMenuHandler *alt_handler/* =NULL */);
 	void SetMenuOptionFlags(unsigned int flags);
+	unsigned int GetApproxMemUsage();
 public: //CBaseMenu
 	void Cancel_Finally();
 private:
diff --git a/core/sm_memtable.h b/core/sm_memtable.h
index 744eb4b6..22743b7f 100644
--- a/core/sm_memtable.h
+++ b/core/sm_memtable.h
@@ -58,6 +58,10 @@ public:
 	 */
 	void Reset();
 
+	inline unsigned int GetMemUsage()
+	{
+		return size;
+	}
 
 private:
 	unsigned char *membase;
diff --git a/core/sm_trie.cpp b/core/sm_trie.cpp
index 14192d42..899ccd60 100644
--- a/core/sm_trie.cpp
+++ b/core/sm_trie.cpp
@@ -85,3 +85,8 @@ void sm_trie_clear(Trie *trie)
 {
 	trie->k.clear();
 }
+
+size_t sm_trie_mem_usage(Trie *trie)
+{
+	return trie->k.mem_usage();
+}
diff --git a/core/sm_trie.h b/core/sm_trie.h
index e3909dc2..6e25fbd1 100644
--- a/core/sm_trie.h
+++ b/core/sm_trie.h
@@ -41,5 +41,6 @@ bool sm_trie_replace(Trie *trie, const char *key, void *value);
 bool sm_trie_retrieve(Trie *trie, const char *key, void **value);
 bool sm_trie_delete(Trie *trie, const char *key);
 void sm_trie_clear(Trie *trie);
+size_t sm_trie_mem_usage(Trie *trie);
 
 #endif //_INCLUDE_SOURCEMOD_SIMPLE_TRIE_H_
diff --git a/core/smn_adt_array.cpp b/core/smn_adt_array.cpp
index a16fd479..cafcca54 100644
--- a/core/smn_adt_array.cpp
+++ b/core/smn_adt_array.cpp
@@ -56,6 +56,12 @@ public: //IHandleTypeDispatch
 		CellArray *array = (CellArray *)object;
 		delete array;
 	}
+	bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+	{
+		CellArray *pArray = (CellArray *)object;
+		*pSize = sizeof(CellArray) + pArray->mem_usage();
+		return true;
+	}
 } s_CellArrayHelpers;
 
 static cell_t CreateArray(IPluginContext *pContext, const cell_t *params)
diff --git a/core/smn_functions.cpp b/core/smn_functions.cpp
index d3b0c41a..24cade1b 100644
--- a/core/smn_functions.cpp
+++ b/core/smn_functions.cpp
@@ -78,6 +78,12 @@ public:
 
 		g_Forwards.ReleaseForward(pForward);
 	}
+
+	bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+	{
+		*pSize = sizeof(CForward) + (((IForward *)object)->GetFunctionCount() * 12);
+		return true;
+	}
 } g_ForwardNativeHelpers;
 
 
diff --git a/core/smn_keyvalues.cpp b/core/smn_keyvalues.cpp
index 025cc5c8..c098f40d 100644
--- a/core/smn_keyvalues.cpp
+++ b/core/smn_keyvalues.cpp
@@ -34,6 +34,7 @@
 #include "sm_stringutil.h"
 #include "HandleSys.h"
 #include <KeyValues.h>
+#include "utlbuffer.h"
 
 HandleType_t g_KeyValueType;
 
@@ -63,6 +64,30 @@ public:
 		pStk->pBase->deleteThis();
 		delete pStk;
 	}
+	int CalcKVSizeR(KeyValues *pv)
+	{
+		CUtlBuffer buf;
+		int size;
+
+		pv->RecursiveSaveToFile(buf, 0);
+		size = buf.TellMaxPut();
+
+		buf.Purge();
+
+		return size;
+	}
+	bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+	{
+		KeyValueStack *pStk = (KeyValueStack *)object;
+		unsigned int size = sizeof(KeyValueStack) + (pStk->pCurRoot.size() * sizeof(KeyValues *));
+
+		/* Check how much memory the actual thing takes up */		
+		size += CalcKVSizeR(pStk->pBase);
+
+		*pSize = size;
+
+		return true;
+	}
 };
 
 KeyValues *SourceModBase::ReadKeyValuesHandle(Handle_t hndl, HandleError *err, bool root)
diff --git a/core/smn_menus.cpp b/core/smn_menus.cpp
index 22534c7e..13473ee4 100644
--- a/core/smn_menus.cpp
+++ b/core/smn_menus.cpp
@@ -160,6 +160,12 @@ public:
 		panel->DeleteThis();
 	}
 
+	virtual bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+	{
+		*pSize = ((IMenuPanel *)object)->GetApproxMemUsage();
+		return true;
+	}
+
 	/**
 	 * It is extremely important that unloaded plugins don't crash.
 	 * Thus, if a plugin unloads, we run through every handler we have.
diff --git a/core/smn_textparse.cpp b/core/smn_textparse.cpp
index 38a23e24..78b26304 100644
--- a/core/smn_textparse.cpp
+++ b/core/smn_textparse.cpp
@@ -169,6 +169,12 @@ public:
 		ParseInfo *parse = (ParseInfo *)object;
 		delete parse;
 	}
+
+	bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+	{
+		*pSize = sizeof(ParseInfo);
+		return true;
+	}
 };
 
 TextParseGlobals g_TextParseGlobals;
diff --git a/core/smn_usermsgs.cpp b/core/smn_usermsgs.cpp
index d560dfbe..083d333c 100644
--- a/core/smn_usermsgs.cpp
+++ b/core/smn_usermsgs.cpp
@@ -57,6 +57,7 @@ public: //SMGlobalClass, IHandleTypeDispatch, IPluginListener
 	void OnSourceModAllInitialized();
 	void OnSourceModShutdown();
 	void OnHandleDestroy(HandleType_t type, void *object);
+	bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize);
 	void OnPluginUnloaded(IPlugin *plugin);
 public:
 	MsgListenerWrapper *CreateListener(IPluginContext *pCtx);
@@ -109,6 +110,15 @@ void UsrMessageNatives::OnHandleDestroy(HandleType_t type, void *object)
 {
 }
 
+bool UsrMessageNatives::GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+{
+	bf_read *pRead = (bf_read *)object;
+
+	*pSize = sizeof(bf_read) + pRead->GetNumBytesRead() + pRead->GetNumBytesLeft();
+
+	return true;
+}
+
 void UsrMessageNatives::OnPluginUnloaded(IPlugin *plugin)
 {
 	MsgWrapperList *pList;
diff --git a/core/systems/HandleSys.cpp b/core/systems/HandleSys.cpp
index 5d0e9885..951e0cb9 100644
--- a/core/systems/HandleSys.cpp
+++ b/core/systems/HandleSys.cpp
@@ -36,6 +36,7 @@
 #include "Logger.h"
 #include <assert.h>
 #include <string.h>
+#include "sm_stringutil.h"
 
 HandleSystem g_HandleSys;
 
@@ -996,8 +997,9 @@ bool HandleSystem::TryAndFreeSomeHandles()
 
 void HandleSystem::Dump(HANDLE_REPORTER rep)
 {
-	rep("%-10.10s\t%-20.20s\t%-20.20s", "Handle", "Owner", "Type");
-	rep("---------------------------------------------");
+	unsigned int total_size = 0;
+	rep("%-10.10s\t%-20.20s\t%-20.20s\t%-10.10s", "Handle", "Owner", "Type", "Memory");
+	rep("--------------------------------------------------------------------------");
 	for (unsigned int i = 1; i <= m_HandleTail; i++)
 	{
 		if (m_Handles[i].set != HandleSet_Used)
@@ -1042,11 +1044,24 @@ void HandleSystem::Dump(HANDLE_REPORTER rep)
 		}
 		const char *type = "ANON";
 		QHandleType *pType = &m_Types[m_Handles[i].type];
+		unsigned int size = 0;
 		if (pType->nameIdx != -1)
 		{
 			type = m_strtab->GetString(pType->nameIdx);
 		}
-		rep("0x%08x\t%-20.20s\t%-20.20s", index, owner, type);
+		if (pType->dispatch->GetDispatchVersion() < HANDLESYS_MEMUSAGE_MIN_VERSION
+			|| !pType->dispatch->GetHandleApproxSize(m_Handles[i].type, m_Handles[i].object, &size))
+		{
+			rep("0x%08x\t%-20.20s\t%-20.20s\t%-10.10s", index, owner, type, "-1");
+		}
+		else
+		{
+			char buffer[32];
+			UTIL_Format(buffer, sizeof(buffer), "%d", size);
+			rep("0x%08x\t%-20.20s\t%-20.20s\t%-10.10s", index, owner, type, buffer);
+			total_size += size;
+		}
 	}
+	rep("-- Approximately %d bytes of memory are in use by Handles.\n", total_size);
 }
 
diff --git a/core/systems/HandleSys.h b/core/systems/HandleSys.h
index c49b1510..b76c1896 100644
--- a/core/systems/HandleSys.h
+++ b/core/systems/HandleSys.h
@@ -48,6 +48,8 @@
 #define HANDLESYS_SERIAL_MASK		0xFFFF0000
 #define HANDLESYS_HANDLE_MASK		0x0000FFFF
 
+#define HANDLESYS_MEMUSAGE_MIN_VERSION		3
+
 /**
  *   The QHandle is a nasty structure that compacts the handle system into a big vector.
  * The members of the vector each encapsulate one Handle, however, they also act as nodes
diff --git a/core/systems/PluginSys.cpp b/core/systems/PluginSys.cpp
index d18aa689..e8225662 100644
--- a/core/systems/PluginSys.cpp
+++ b/core/systems/PluginSys.cpp
@@ -123,6 +123,80 @@ void CPlugin::InitIdentity()
 	}
 }
 
+unsigned int CPlugin::CalcMemUsage()
+{
+	unsigned int base_size = 
+		sizeof(CPlugin) 
+		+ sizeof(IdentityToken_t)
+		+ (m_PhraseFiles.size() * sizeof(unsigned int))
+		+ (m_dependents.size() * sizeof(CPlugin *))
+		+ (m_dependsOn.size() * sizeof(CPlugin *))
+		+ (m_fakeNatives.size() * (sizeof(FakeNative *) + sizeof(FakeNative)))
+		+ (m_WeakNatives.size() * sizeof(WeakNative))
+		+ (m_configs.size() * (sizeof(AutoConfig *) + sizeof(AutoConfig)))
+		+ sm_trie_mem_usage(m_pProps);
+
+	for (unsigned int i = 0; i < m_configs.size(); i++)
+	{
+		base_size += m_configs[i]->autocfg.size();
+		base_size += m_configs[i]->folder.size();
+	}
+
+	for (List<String>::iterator i = m_Libraries.begin();
+		 i != m_Libraries.end();
+		 i++)
+	{
+		base_size += (*i).size();
+	}
+
+	for (List<String>::iterator i = m_RequiredLibs.begin();
+		 i != m_RequiredLibs.end();
+		 i++)
+	{
+		base_size += (*i).size();
+	}
+
+	for (List<FakeNative *>::iterator i = m_fakeNatives.begin();
+		 i != m_fakeNatives.end();
+		 i++)
+	{
+		base_size += (*i)->name.size();
+	}
+
+	if (m_plugin != NULL)
+	{
+		base_size += sizeof(sp_plugin_t);
+		base_size += m_plugin->data_size;
+		base_size += m_plugin->pcode_size;
+		base_size += (m_plugin->info.natives_num * sizeof(sp_file_natives_t));
+		base_size += (m_plugin->info.publics_num * sizeof(sp_file_publics_t));
+		base_size += (m_plugin->info.pubvars_num * sizeof(sp_file_pubvars_t));
+		base_size += (m_plugin->debug.files_num * sizeof(sp_fdbg_file_t));
+		base_size += (m_plugin->debug.lines_num * sizeof(sp_fdbg_line_t));
+		base_size += (m_plugin->debug.syms_num * sizeof(sp_fdbg_symbol_t));
+		/* We can't get strtab size, oh well. */
+	}
+
+	if (m_ctx.base != NULL)
+	{
+		base_size += sizeof(BaseContext);
+		base_size += m_ctx.base->GetPublicsNum() * sizeof(CFunction);
+	}
+	if (m_ctx.ctx != NULL)
+	{
+		base_size += m_ctx.ctx->mem_size;
+		base_size += (m_plugin->debug.files_num * sizeof(sp_debug_file_t));
+		base_size += (m_plugin->debug.lines_num * sizeof(sp_debug_line_t));
+		base_size += (m_plugin->debug.syms_num * sizeof(sp_debug_symbol_t));
+		base_size += (m_plugin->info.pubvars_num * sizeof(sp_pubvar_t));
+		base_size += (m_plugin->info.publics_num * sizeof(sp_public_t));
+		base_size += (m_plugin->info.natives_num * sizeof(sp_native_t));
+		/* We also don't know the JIT code size, oh well. */
+	}
+
+	return base_size;
+}
+
 Handle_t CPlugin::GetMyHandle()
 {
 	return m_handle;
@@ -1969,6 +2043,12 @@ void CPluginManager::OnHandleDestroy(HandleType_t type, void *object)
 	/* We don't care about the internal object, actually */
 }
 
+bool CPluginManager::GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+{
+	*pSize = ((CPlugin *)object)->CalcMemUsage();
+	return true;
+}
+
 void CPluginManager::RegisterNativesFromCore(sp_nativeinfo_t *natives)
 {
 	for (unsigned int i = 0; natives[i].func != NULL; i++)
diff --git a/core/systems/PluginSys.h b/core/systems/PluginSys.h
index ce70a16f..f51b0f5a 100644
--- a/core/systems/PluginSys.h
+++ b/core/systems/PluginSys.h
@@ -169,6 +169,7 @@ public:
 	unsigned int GetSerial();
 	const sp_plugin_t *GetPluginStructure();
 	IdentityToken_t *GetIdentity();
+	unsigned int CalcMemUsage();
 	bool SetProperty(const char *prop, void *ptr);
 	bool GetProperty(const char *prop, void **ptr, bool remove=false);
 public:
@@ -355,6 +356,7 @@ public: //SMGlobalClass
 	void OnSourceModShutdown();
 public: //IHandleTypeDispatch
 	void OnHandleDestroy(HandleType_t type, void *object);
+	bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize);
 public: //IRootConsoleCommand
 	void OnRootConsoleCommand(const char *cmdname, const CCommand &command);
 public:
diff --git a/extensions/topmenus/TopMenu.cpp b/extensions/topmenus/TopMenu.cpp
index 53b266ec..61b14620 100644
--- a/extensions/topmenus/TopMenu.cpp
+++ b/extensions/topmenus/TopMenu.cpp
@@ -87,6 +87,29 @@ TopMenu::~TopMenu()
 	delete [] m_clients;
 }
 
+unsigned int TopMenu::CalcMemUsage()
+{
+	unsigned int size = sizeof(TopMenu);
+
+	size += m_Config.strings.GetMemTable()->MemUsage();
+	size += (m_Config.cats.size() * sizeof(int));
+	size += (sizeof(topmenu_player_t) * m_max_clients);
+	size += (m_SortedCats.size() * sizeof(unsigned int));
+	size += (m_UnsortedCats.size() * sizeof(unsigned int));
+	size += (m_Categories.size() * (sizeof(topmenu_category_t *) + sizeof(topmenu_category_t)));
+	size += (m_Objects.size() * (sizeof(topmenu_object_t *) + sizeof(topmenu_object_t)));
+	size += m_ObjLookup.mem_usage();
+
+	for (size_t i = 0; i < m_Categories.size(); i++)
+	{
+		size += m_Categories[i]->obj_list.size() * sizeof(topmenu_object_t *);
+		size += m_Categories[i]->sorted.size() * sizeof(topmenu_object_t *);
+		size += m_Categories[i]->unsorted.size() * sizeof(topmenu_object_t *);
+	}
+
+	return size;
+}
+
 void TopMenu::OnClientConnected(int client)
 {
 	if (m_clients == NULL)
diff --git a/extensions/topmenus/TopMenu.h b/extensions/topmenus/TopMenu.h
index c4c0ec86..2747c778 100644
--- a/extensions/topmenus/TopMenu.h
+++ b/extensions/topmenus/TopMenu.h
@@ -146,6 +146,8 @@ public: //ITextListener_SMC
 	SMCResult ReadSMC_NewSection(const SMCStates *states, const char *name);
 	SMCResult ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value);
 	SMCResult ReadSMC_LeavingSection(const SMCStates *states);
+public:
+	unsigned int CalcMemUsage();
 private:
 	void SortCategoriesIfNeeded();
 	void SortCategoryIfNeeded(unsigned int category);
diff --git a/extensions/topmenus/sdk/sm_memtable.h b/extensions/topmenus/sdk/sm_memtable.h
index 744eb4b6..7c7f00a2 100644
--- a/extensions/topmenus/sdk/sm_memtable.h
+++ b/extensions/topmenus/sdk/sm_memtable.h
@@ -58,6 +58,10 @@ public:
 	 */
 	void Reset();
 
+	inline unsigned int MemUsage()
+	{
+		return size;
+	}
 
 private:
 	unsigned char *membase;
diff --git a/extensions/topmenus/smn_topmenus.cpp b/extensions/topmenus/smn_topmenus.cpp
index 98575ec7..cb68c592 100644
--- a/extensions/topmenus/smn_topmenus.cpp
+++ b/extensions/topmenus/smn_topmenus.cpp
@@ -43,6 +43,11 @@ public:
 		ITopMenu *pTopMenu = (ITopMenu *)object;
 		g_TopMenus.DestroyTopMenu(pTopMenu);
 	}
+	bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+	{
+		*pSize = ((TopMenu *)object)->CalcMemUsage();
+		return true;
+	}
 } s_TopMenuHandle;
 
 void Initialize_Natives()
diff --git a/public/IHandleSys.h b/public/IHandleSys.h
index 55dc5fa5..b92cf828 100644
--- a/public/IHandleSys.h
+++ b/public/IHandleSys.h
@@ -52,7 +52,7 @@
 #include <sp_vm_types.h>
 
 #define SMINTERFACE_HANDLESYSTEM_NAME			"IHandleSys"
-#define SMINTERFACE_HANDLESYSTEM_VERSION		2
+#define SMINTERFACE_HANDLESYSTEM_VERSION		3
 
 /** Specifies no Identity */
 #define DEFAULT_IDENTITY			NULL
@@ -195,8 +195,25 @@ namespace SourceMod
 	public:
 		/**
 		 * @brief Called when destroying a handle.  Must be implemented.
+		 *
+		 * @param type		Handle type.
+		 * @param object	Handle internal object.
 		 */
 		virtual void OnHandleDestroy(HandleType_t type, void *object) =0;
+
+		/**
+		 * @brief Called to get the size of a handle's memory usage in bytes.
+		 * Implementation is optional.
+		 *
+		 * @param type		Handle type.
+		 * @param object	Handle internal object.
+		 * @param pSize		Pointer to store the approximate memory usage in bytes.
+		 * @return			True on success, false if not implemented.
+		 */
+		virtual bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+		{
+			return false;
+		}
 	};
 
 	/**
diff --git a/public/IMenuManager.h b/public/IMenuManager.h
index cb97a2f4..16099f23 100644
--- a/public/IMenuManager.h
+++ b/public/IMenuManager.h
@@ -36,7 +36,7 @@
 #include <IHandleSys.h>
 
 #define SMINTERFACE_MENUMANAGER_NAME		"IMenuManager"
-#define SMINTERFACE_MENUMANAGER_VERSION		13
+#define SMINTERFACE_MENUMANAGER_VERSION		14
 
 /**
  * @file IMenuManager.h
@@ -323,6 +323,13 @@ namespace SourceMod
 		 *						-1, then the panel has no text limit.
 		 */
 		virtual int GetAmountRemaining() =0;
+
+		/**
+		 * @brief For the Handle system, returns approximate memory usage.
+		 *
+		 * @return				Approximate number of bytes being used.
+		 */
+		virtual unsigned int GetApproxMemUsage() =0;
 	};
 
 	/**
@@ -406,6 +413,13 @@ namespace SourceMod
 		 * @return				Handle_t pointing to this object.
 		 */
 		virtual Handle_t GetHandle() =0;
+
+		/**
+		 * @brief For the Handle system, returns approximate memory usage.
+		 *
+		 * @return				Approximate number of bytes being used.
+		 */
+		virtual unsigned int GetApproxMemUsage() =0;
 	};
 
 	/**
@@ -597,6 +611,13 @@ namespace SourceMod
 			unsigned int time,
 			unsigned int start_item,
 			IMenuHandler *alt_handler=NULL) =0;
+
+		/**
+		 * @brief For the Handle system, returns approximate memory usage.
+		 *
+		 * @return				Approximate number of bytes being used.
+		 */
+		virtual unsigned int GetApproxMemUsage() =0;
 	};
 
 	/** 
diff --git a/public/sm_trie_tpl.h b/public/sm_trie_tpl.h
index 1aed1a38..195e1988 100644
--- a/public/sm_trie_tpl.h
+++ b/public/sm_trie_tpl.h
@@ -877,6 +877,13 @@ private:
 
 		return x_check_multi(offsets, count, to_check+1);
 	}
+public:
+	size_t mem_usage()
+	{
+		return (sizeof(KTrieNode) * (m_baseSize))
+			+ m_stSize
+			+ sizeof(KTrieNode);
+	}
 private:
 	KTrieNode *m_base;			/* Base array for the sparse tables */
 	KTrieNode *m_empty;			/* Special case for empty strings */

From b4aca8dd06db5a073ff8a1821f46fc10235273fe Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 5 Dec 2007 18:12:25 +0000
Subject: [PATCH 090/263] fixed @aim giving wrong name in ProcessTargetString()
 feedback

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401773
---
 extensions/sdktools/extension.cpp | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/extensions/sdktools/extension.cpp b/extensions/sdktools/extension.cpp
index 3a8d7450..e41a165d 100644
--- a/extensions/sdktools/extension.cpp
+++ b/extensions/sdktools/extension.cpp
@@ -303,7 +303,14 @@ bool SDKTools::ProcessCommandTarget(cmd_target_info_t *info)
 		return true;
 	}
 
-	IGamePlayer *pTarget = playerhelpers->GetGamePlayer(info->admin);
+	IGamePlayer *pTarget = playerhelpers->GetGamePlayer(player_index);
+
+	if (pTarget == NULL)
+	{
+		info->reason = COMMAND_TARGET_NONE;
+		info->num_targets = 0;
+		return true;
+	}
 
 	info->reason = playerhelpers->FilterCommandTarget(pAdmin, pTarget, info->flags);
 	if (info->reason != COMMAND_TARGET_VALID)

From 04c0684879054a963b3d8f64332d3936fd3172c4 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 5 Dec 2007 19:39:54 +0000
Subject: [PATCH 091/263] empires does not support radio menus properly

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401774
---
 gamedata/core.games.txt | 1 -
 1 file changed, 1 deletion(-)

diff --git a/gamedata/core.games.txt b/gamedata/core.games.txt
index 51b7448c..146edf1a 100644
--- a/gamedata/core.games.txt
+++ b/gamedata/core.games.txt
@@ -55,7 +55,6 @@
 			"game"		"insurgency"
 			"game"		"Insurgency"
 			"game"		"tf"
-			"game"		"empires"
 		}
 
 		"Keys"

From 9ab9eba5d7400c2ae3be50bf4c12a967f043512d Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Thu, 6 Dec 2007 02:25:35 +0000
Subject: [PATCH 092/263] added amb1235, added support for the IServer
 interface added a native to retrieve the spray file of a client added a
 native to get the net traffic of the server

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401775
---
 extensions/sdktools/extension.cpp      |  2 +
 extensions/sdktools/extension.h        |  3 ++
 extensions/sdktools/vglobals.cpp       | 57 ++++++++++++++++++++++++++
 extensions/sdktools/vglobals.h         |  1 +
 extensions/sdktools/vhelpers.cpp       |  9 ++++
 extensions/sdktools/vhelpers.h         |  2 +
 extensions/sdktools/vnatives.cpp       | 43 +++++++++++++++++++
 gamedata/sdktools.games.ep2.txt        | 23 +++++++++++
 gamedata/sdktools.games.txt            | 23 +++++++++++
 plugins/include/sdktools_functions.inc | 20 +++++++++
 10 files changed, 183 insertions(+)

diff --git a/extensions/sdktools/extension.cpp b/extensions/sdktools/extension.cpp
index e41a165d..c01ff74a 100644
--- a/extensions/sdktools/extension.cpp
+++ b/extensions/sdktools/extension.cpp
@@ -64,6 +64,7 @@ IServerGameClients *serverClients = NULL;
 IVoiceServer *voiceserver = NULL;
 IPlayerInfoManager *playerinfomngr = NULL;
 ICvar *icvar = NULL;
+IServer *iserver = NULL;
 SourceHook::CallClass<IVEngineServer> *enginePatch = NULL;
 SourceHook::CallClass<IEngineSound> *enginesoundPatch = NULL;
 HandleType_t g_CallHandle = 0;
@@ -204,6 +205,7 @@ void SDKTools::SDK_OnAllLoaded()
 	s_TempEntHooks.Initialize();
 	s_SoundHooks.Initialize();
 	InitializeValveGlobals();
+	GetIServer();
 }
 
 bool SDKTools::QueryRunning(char *error, size_t maxlength)
diff --git a/extensions/sdktools/extension.h b/extensions/sdktools/extension.h
index 7a331b55..c13343a9 100644
--- a/extensions/sdktools/extension.h
+++ b/extensions/sdktools/extension.h
@@ -46,6 +46,8 @@
 #include <ivoiceserver.h>
 #include <iplayerinfo.h>
 #include <convar.h>
+#include <iserver.h>
+#include <cdll_int.h>
 #include <compat_wrappers.h>
 
 /**
@@ -99,6 +101,7 @@ extern IServerGameClients *serverClients;
 extern IVoiceServer *voiceserver;
 extern IPlayerInfoManager *playerinfomngr;
 extern ICvar *icvar;
+extern IServer *iserver;
 /* Interfaces from SourceMod */
 extern IBinTools *g_pBinTools;
 extern IGameConfig *g_pGameConf;
diff --git a/extensions/sdktools/vglobals.cpp b/extensions/sdktools/vglobals.cpp
index d7cd3e4f..09337a70 100644
--- a/extensions/sdktools/vglobals.cpp
+++ b/extensions/sdktools/vglobals.cpp
@@ -82,3 +82,60 @@ void InitializeValveGlobals()
 	g_pGameRules = reinterpret_cast<void **>(addr);
 }
 #endif
+
+#if defined PLATFORM_WINDOWS
+	/* Thanks to DS for the sigs */
+	#define ISERVER_WIN_SIG				"\x8B\x44\x24\x2A\x50\xB9\x2A\x2A\x2A\x2A\xE8"
+	#define ISERVER_WIN_SIG_LEN			11
+void GetIServer()
+{
+	/* First check that the IVEngineServer::CreateFakeClient exists */
+	if (!memutils->FindPattern(engine, ISERVER_WIN_SIG, ISERVER_WIN_SIG_LEN))
+	{
+		return;
+	}
+
+	int offset;
+	void *vfunc = NULL;
+
+	/* Get the offset into CreateFakeClient */
+	if (!g_pGameConf->GetOffset("sv", &offset))
+	{
+		return;
+	}
+#if defined METAMOD_PLAPI_VERSION
+	/* Get the CreateFakeClient function pointer */
+	if (!(vfunc=SH_GET_ORIG_VFNPTR_ENTRY(engine, &IVEngineServer::CreateFakeClient)))
+	{
+		return;
+	}
+
+	/* Finally we have the interface we were looking for */
+	iserver = *reinterpret_cast<IServer **>(reinterpret_cast<unsigned char *>(vfunc) + offset);
+#else
+	/* Get the interface manually */
+	SourceHook::MemFuncInfo info = {true, -1, 0, 0};
+	SourceHook::GetFuncInfo(&IVEngineServer::CreateFakeClient, info);
+
+	vfunc = enginePatch->GetOrigFunc(info.vtbloffs, info.vtblindex);
+	if (!vfunc)
+	{
+		void **vtable = *reinterpret_cast<void ***>(enginePatch->GetThisPtr() + info.thisptroffs + info.vtbloffs);
+		vfunc = vtable[info.vtblindex];
+	}
+
+	iserver = *reinterpret_cast<IServer **>(reinterpret_cast<unsigned char *>(vfunc) + offset);
+#endif
+}
+#elif defined PLATFORM_POSIX
+void GetIServer()
+{
+	void *addr;
+	if (!g_pGameConf->GetMemSig("sv", &addr) || !addr)
+	{
+		return;
+	}
+
+	iserver = *reinterpret_cast<IServer **>(addr);
+}
+#endif
diff --git a/extensions/sdktools/vglobals.h b/extensions/sdktools/vglobals.h
index c66f2ada..5e9a65ee 100644
--- a/extensions/sdktools/vglobals.h
+++ b/extensions/sdktools/vglobals.h
@@ -36,5 +36,6 @@ extern void **g_pGameRules;
 extern void *g_EntList;
 
 void InitializeValveGlobals();
+void GetIServer();
 
 #endif // _INCLUDE_SDKTOOLS_VGLOBALS_H_
diff --git a/extensions/sdktools/vhelpers.cpp b/extensions/sdktools/vhelpers.cpp
index 93977c9c..44a577a1 100644
--- a/extensions/sdktools/vhelpers.cpp
+++ b/extensions/sdktools/vhelpers.cpp
@@ -267,6 +267,15 @@ bool IsEyeAnglesSupported()
 	return SetupGetEyeAngles();
 }
 
+bool GetPlayerInfo(int client, player_info_t *info)
+{
+#if defined ORANGEBOX_BUILD
+	return engine->GetPlayerInfo(client, info);
+#else
+	return iserver->GetPlayerInfo(client, info);
+#endif
+}
+
 void ShutdownHelpers()
 {
 	s_Teleport.Shutdown();
diff --git a/extensions/sdktools/vhelpers.h b/extensions/sdktools/vhelpers.h
index cae47a29..3ba1b116 100644
--- a/extensions/sdktools/vhelpers.h
+++ b/extensions/sdktools/vhelpers.h
@@ -68,6 +68,8 @@ bool IsEyeAnglesSupported();
 
 int GetClientAimTarget(edict_t *pEdict, bool only_players);
 
+bool GetPlayerInfo(int client, player_info_t *info);
+
 void ShutdownHelpers();
 
 #endif //_INCLUDE_SDKTOOLS_VHELPERS_H_
diff --git a/extensions/sdktools/vnatives.cpp b/extensions/sdktools/vnatives.cpp
index 886ad887..ce54958d 100644
--- a/extensions/sdktools/vnatives.cpp
+++ b/extensions/sdktools/vnatives.cpp
@@ -825,6 +825,47 @@ static cell_t sm_SetEntityModel(IPluginContext *pContext, const cell_t *params)
 	return 1;
 }
 
+static cell_t GetPlayerDecalFile(IPluginContext *pContext, const cell_t *params)
+{
+	IGamePlayer *player = playerhelpers->GetGamePlayer(params[1]);
+	if (player == NULL)
+	{
+		return pContext->ThrowNativeError("Invalid client index %d", params[1]);
+	}
+	if (!player->IsInGame())
+	{
+		return pContext->ThrowNativeError("Client %d is not in game", params[1]);
+	}
+
+	player_info_t info;
+	char *buffer;
+
+	if (!GetPlayerInfo(params[1], &info) || !info.customFiles[0])
+	{
+		return 0;
+	}
+
+	pContext->LocalToString(params[2], &buffer);
+	Q_binarytohex((byte *)&info.customFiles[0], sizeof(info.customFiles[0]), buffer, params[3]);
+
+	return 1;
+}
+
+static cell_t GetServerNetStats(IPluginContext *pContext, const cell_t *params)
+{
+	float in, out;
+	cell_t *pIn, *pOut;
+
+	pContext->LocalToPhysAddr(params[1], &pIn);
+	pContext->LocalToPhysAddr(params[2], &pOut);
+	iserver->GetNetStats(in, out);
+
+	*pIn = sp_ftoc(in);
+	*pOut = sp_ftoc(out);
+
+	return 1;
+}
+
 sp_nativeinfo_t g_Natives[] = 
 {
 	{"ExtinguishPlayer",		ExtinguishEntity},
@@ -850,5 +891,7 @@ sp_nativeinfo_t g_Natives[] =
 	{"DispatchKeyValueVector",	DispatchKeyValueVector},
 	{"GetClientAimTarget",		sm_GetClientAimTarget},
 	{"SetEntityModel",			sm_SetEntityModel},
+	{"GetPlayerDecalFile",		GetPlayerDecalFile},
+	{"GetServerNetStats",		GetServerNetStats},
 	{NULL,						NULL},
 };
diff --git a/gamedata/sdktools.games.ep2.txt b/gamedata/sdktools.games.ep2.txt
index 7fc52211..ea4e9c58 100644
--- a/gamedata/sdktools.games.ep2.txt
+++ b/gamedata/sdktools.games.ep2.txt
@@ -178,6 +178,29 @@
 		}
 	}
 
+	/* IServer interface pointer */
+	"#default"
+	{
+		"Offsets"
+		{
+			/* Offset into IVEngineServer::CreateFakeClient */
+			"sv"
+			{
+				"windows"	"6"
+			}
+		}
+
+		"Signatures"
+		{
+			/* CBaseServer object for IServer interface */
+			"sv"
+			{
+				"library"	"engine"
+				"linux"		"@sv"
+			}
+		}
+	}
+
 	/* Team Fortress 2 Offsets */
 	"tf"
 	{
diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index 5895b6ff..aadea07f 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -216,6 +216,29 @@
 		}
 	}
 
+	/* IServer interface pointer */
+	"#default"
+	{
+		"Offsets"
+		{
+			/* Offset into IVEngineServer::CreateFakeClient */
+			"sv"
+			{
+				"windows"	"6"
+			}
+		}
+
+		"Signatures"
+		{
+			/* CBaseServer object for IServer interface */
+			"sv"
+			{
+				"library"	"engine"
+				"linux"		"@sv"
+			}
+		}
+	}
+
 	/* Counter-Strike: Source */
 	"cstrike"
 	{
diff --git a/plugins/include/sdktools_functions.inc b/plugins/include/sdktools_functions.inc
index 4fc3958e..61eb4754 100644
--- a/plugins/include/sdktools_functions.inc
+++ b/plugins/include/sdktools_functions.inc
@@ -264,6 +264,26 @@ native GetTeamClientCount(index);
  */
 native SetEntityModel(entity, const String:model[]);
 
+/**
+ * Retrieves the decal file name associated to a given client.
+ *
+ * @param client			Player's index.
+ * @param hex				Buffer to store the logo filename.
+ * @param maxlength			Maximum length of string buffer.
+ * @return				True on success, otherwise false.
+ * @error				Invalid client or client not in game.
+ */
+native bool:GetPlayerDecalFile(client, String:hex[], maxlength);
+
+/**
+ * Returns the average server network traffic in bytes/sec.
+ *
+ * @param in				Buffer to store the input traffic velocity.
+ * @param out				Buffer to store the output traffic velocity.
+ * @noreturn
+ */
+native GetServerNetStats(&Float:in, &Float:out);
+
 /**
  * @deprecated
  */

From d78d7ab960f0ddb0aba9d50eadab51d96e33358d Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Thu, 6 Dec 2007 03:28:02 +0000
Subject: [PATCH 093/263] - rewrote internal convar hooking mechanism to
 prevent crashes and potential "race conditions" - sharesys is now the first
 thing to run, so g_pCoreIdent is valid EVERYWHERE - added internal convar
 hooking funcs for timersys

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401776
---
 core/ConVarManager.cpp    | 112 +++++++++++++++++++++++++-------------
 core/ConVarManager.h      |  14 ++++-
 core/TimerSys.cpp         |  34 ++----------
 core/sm_srvcmds.cpp       |  23 +++++---
 core/sm_srvcmds.h         |   1 +
 core/sourcemod.cpp        |   8 ++-
 core/systems/ShareSys.cpp |   2 +-
 core/systems/ShareSys.h   |   2 +-
 8 files changed, 115 insertions(+), 81 deletions(-)

diff --git a/core/ConVarManager.cpp b/core/ConVarManager.cpp
index f245efff..0f0f39ae 100644
--- a/core/ConVarManager.cpp
+++ b/core/ConVarManager.cpp
@@ -41,6 +41,16 @@
 
 ConVarManager g_ConVarManager;
 
+#if !defined ORANGEBOX_BUILD
+#define CallGlobalChangeCallbacks	CallGlobalChangeCallback
+#endif
+
+#if defined ORANGEBOX_BUILD
+SH_DECL_HOOK3_void(ICvar, CallGlobalChangeCallbacks, SH_NOATTRIB, false, ConVar *, const char *, float);
+#else
+SH_DECL_HOOK2_void(ICvar, CallGlobalChangeCallbacks, SH_NOATTRIB, false, ConVar *, const char *);
+#endif
+
 SH_DECL_HOOK5_void(IServerGameDLL, OnQueryCvarValueFinished, SH_NOATTRIB, 0, QueryCvarCookie_t, edict_t *, EQueryCvarValueStatus, const char *, const char *);
 SH_DECL_HOOK5_void(IServerPluginCallbacks, OnQueryCvarValueFinished, SH_NOATTRIB, 0, QueryCvarCookie_t, edict_t *, EQueryCvarValueStatus, const char *, const char *);
 
@@ -56,6 +66,19 @@ ConVarManager::~ConVarManager()
 {
 }
 
+void ConVarManager::OnSourceModStartup(bool late)
+{
+	HandleAccess sec;
+
+	/* Set up access rights for the 'ConVar' handle type */
+	sec.access[HandleAccess_Read] = 0;
+	sec.access[HandleAccess_Delete] = HANDLE_RESTRICT_IDENTITY | HANDLE_RESTRICT_OWNER;
+	sec.access[HandleAccess_Clone] = HANDLE_RESTRICT_IDENTITY | HANDLE_RESTRICT_OWNER;
+
+	/* Create the 'ConVar' handle type */
+	m_ConVarType = g_HandleSys.CreateType("ConVar", this, 0, NULL, &sec, g_pCoreIdent, NULL);
+}
+
 void ConVarManager::OnSourceModAllInitialized()
 {
 	/**
@@ -69,15 +92,7 @@ void ConVarManager::OnSourceModAllInitialized()
 	}
 #endif
 
-	HandleAccess sec;
-
-	/* Set up access rights for the 'ConVar' handle type */
-	sec.access[HandleAccess_Read] = 0;
-	sec.access[HandleAccess_Delete] = HANDLE_RESTRICT_IDENTITY | HANDLE_RESTRICT_OWNER;
-	sec.access[HandleAccess_Clone] = HANDLE_RESTRICT_IDENTITY | HANDLE_RESTRICT_OWNER;
-
-	/* Create the 'ConVar' handle type */
-	m_ConVarType = g_HandleSys.CreateType("ConVar", this, 0, NULL, &sec, g_pCoreIdent, NULL);
+	SH_ADD_HOOK_STATICFUNC(ICvar, CallGlobalChangeCallbacks, icvar, OnConVarChanged, false);
 
 	/* Add the 'convars' option to the 'sm' console command */
 	g_RootMenu.AddRootConsoleCommand("cvars", "View convars created by a plugin", this);
@@ -138,6 +153,8 @@ void ConVarManager::OnSourceModShutdown()
 		m_bIsVSPQueryHooked = false;
 	}
 
+	SH_REMOVE_HOOK_STATICFUNC(ICvar, CallGlobalChangeCallbacks, icvar, OnConVarChanged, false);
+
 	/* Remove the 'convars' option from the 'sm' console command */
 	g_RootMenu.RemoveRootConsoleCommand("cvars", this);
 
@@ -243,7 +260,7 @@ void ConVarManager::OnHandleDestroy(HandleType_t type, void *object)
 
 bool ConVarManager::GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
 {
-	*pSize = sizeof(ConVar);
+	*pSize = sizeof(ConVar) + sizeof(ConVarInfo);
 	return true;
 }
 
@@ -321,7 +338,6 @@ Handle_t ConVarManager::CreateConVar(IPluginContext *pContext, const char *name,
 			pInfo = new ConVarInfo();
 			pInfo->sourceMod = false;
 			pInfo->pChangeForward = NULL;
-			pInfo->origCallback = pConVar->GetCallback();
 			pInfo->pVar = pConVar;
 
 			/* If we don't, then create a new handle from the convar */
@@ -361,7 +377,6 @@ Handle_t ConVarManager::CreateConVar(IPluginContext *pContext, const char *name,
 	pInfo->handle = hndl;
 	pInfo->sourceMod = true;
 	pInfo->pChangeForward = NULL;
-	pInfo->origCallback = NULL;
 
 	/* Create a handle from the new convar */
 	hndl = g_HandleSys.CreateHandle(m_ConVarType, pInfo, NULL, g_pCoreIdent, NULL);
@@ -412,7 +427,6 @@ Handle_t ConVarManager::FindConVar(const char *name)
 	pInfo = new ConVarInfo();
 	pInfo->sourceMod = false;
 	pInfo->pChangeForward = NULL;
-	pInfo->origCallback = pConVar->GetCallback();
 	pInfo->pVar = pConVar;
 
 	/* If we don't have a handle, then create a new one */
@@ -433,6 +447,33 @@ Handle_t ConVarManager::FindConVar(const char *name)
 	return hndl;
 }
 
+void ConVarManager::AddConVarChangeListener(const char *name, IConVarChangeListener *pListener)
+{
+	ConVarInfo *pInfo;
+
+	if (FindConVar(name) == BAD_HANDLE)
+	{
+		return;
+	}
+
+	/* Find the convar in the lookup trie */
+	if (convar_cache_lookup(name, &pInfo))
+	{
+		pInfo->changeListeners.push_back(pListener);
+	}
+}
+
+void ConVarManager::RemoveConVarChangeListener(const char *name, IConVarChangeListener *pListener)
+{
+	ConVarInfo *pInfo;
+
+	/* Find the convar in the lookup trie */
+	if (convar_cache_lookup(name, &pInfo))
+	{
+		pInfo->changeListeners.remove(pListener);
+	}
+}
+
 void ConVarManager::HookConVarChange(ConVar *pConVar, IPluginFunction *pFunction)
 {
 	ConVarInfo *pInfo;
@@ -449,9 +490,6 @@ void ConVarManager::HookConVarChange(ConVar *pConVar, IPluginFunction *pFunction
 		{
 			pForward = g_Forwards.CreateForwardEx(NULL, ET_Ignore, 3, CONVARCHANGE_PARAMS);
 			pInfo->pChangeForward = pForward;
-
-			/* Install our own callback */
-			pConVar->InstallChangeCallback(OnConVarChanged);
 		}
 
 		/* Add function to forward's list */
@@ -491,9 +529,6 @@ void ConVarManager::UnhookConVarChange(ConVar *pConVar, IPluginFunction *pFuncti
 			/* Free this forward */
 			g_Forwards.ReleaseForward(pForward);
 			pInfo->pChangeForward = NULL;
-
-			/* Put back the original convar callback */
-			pConVar->InstallChangeCallback(pInfo->origCallback);
 		}
 	}
 }
@@ -561,15 +596,12 @@ void ConVarManager::AddConVarToPluginList(IPluginContext *pContext, const ConVar
 }
 
 #if defined ORANGEBOX_BUILD
-void ConVarManager::OnConVarChanged(IConVar *pIConVar, const char *oldValue, float flOldValue)
+void ConVarManager::OnConVarChanged(ConVar *pConVar, const char *oldValue, float flOldValue)
 #else
 void ConVarManager::OnConVarChanged(ConVar *pConVar, const char *oldValue)
 #endif
 {
 	/* If the values are the same, exit early in order to not trigger callbacks */
-#if defined ORANGEBOX_BUILD
-	ConVar *pConVar = (ConVar *)pIConVar;
-#endif
 	if (strcmp(pConVar->GetString(), oldValue) == 0)
 	{
 		return;
@@ -583,24 +615,30 @@ void ConVarManager::OnConVarChanged(ConVar *pConVar, const char *oldValue)
 		return;
 	}
 
-	FnChangeCallback_t origCallback = pInfo->origCallback;
 	IChangeableForward *pForward = pInfo->pChangeForward;
 
-	/* If there was a change callback installed previously, call it */
-	if (origCallback)
+	if (pInfo->changeListeners.size() != 0)
 	{
+		for (List<IConVarChangeListener *>::iterator i = pInfo->changeListeners.begin();
+			 i != pInfo->changeListeners.end();
+			 i++)
+		{
 #if defined ORANGEBOX_BUILD
-		origCallback(pConVar, oldValue, flOldValue);
+			(*i)->OnConVarChanged(pConVar, oldValue, flOldValue);
 #else
-		origCallback(pConVar, oldValue);
+			(*i)->OnConVarChanged(pConVar, oldValue, atof(oldValue));
 #endif
+		}
 	}
 
-	/* Now call forwards in plugins that have hooked this */
-	pForward->PushCell(pInfo->handle);
-	pForward->PushString(oldValue);
-	pForward->PushString(reinterpret_cast<ConVar *>(pConVar)->GetString());
-	pForward->Execute(NULL);
+	if (pForward != NULL)
+	{
+		/* Now call forwards in plugins that have hooked this */
+		pForward->PushCell(pInfo->handle);
+		pForward->PushString(oldValue);
+		pForward->PushString(pConVar->GetString());
+		pForward->Execute(NULL);
+	}
 }
 
 bool ConVarManager::IsQueryingSupported()
@@ -815,14 +853,10 @@ void _IntExt_EnableYamagrams()
 	}
 }
 
-#if defined ORANGEBOX_BUILD
-void _IntExt_OnHostnameChanged(IConVar *pConVar, const char *oldValue, float flOldValue)
-#else
-void _IntExt_OnHostnameChanged(ConVar *pConVar, char const *oldValue)
-#endif
+void _IntExt_OnHostnameChanged(ConVar *pConVar, const char *oldValue, float flOldValue)
 {
 	if (strcmp(oldValue, "Good morning, DS-san.") == 0
-		&& strcmp(reinterpret_cast<ConVar *>(pConVar)->GetString(), "Good night, talking desk lamp.") == 0)
+		&& strcmp(pConVar->GetString(), "Good night, talking desk lamp.") == 0)
 	{
 		_IntExt_EnableYamagrams();
 	}
diff --git a/core/ConVarManager.h b/core/ConVarManager.h
index 6757bbde..ac921ec5 100644
--- a/core/ConVarManager.h
+++ b/core/ConVarManager.h
@@ -44,6 +44,12 @@
 
 using namespace SourceHook;
 
+class IConVarChangeListener
+{
+public:
+	virtual void OnConVarChanged(ConVar *pConVar, const char *oldValue, float flOldValue) =0;
+};
+
 /**
  * Holds SourceMod-specific information about a convar
  */
@@ -52,8 +58,8 @@ struct ConVarInfo
 	Handle_t handle;					/**< Handle to self */
 	bool sourceMod;						/**< Determines whether or not convar was created by a SourceMod plugin */
 	IChangeableForward *pChangeForward;	/**< Forward associated with convar */
-	FnChangeCallback_t origCallback;	/**< The original callback function */
 	ConVar *pVar;						/**< The actual convar */
+	List<IConVarChangeListener *> changeListeners;
 };
 
 /**
@@ -77,6 +83,7 @@ public:
 	ConVarManager();
 	~ConVarManager();
 public: // SMGlobalClass
+	void OnSourceModStartup(bool late);
 	void OnSourceModAllInitialized();
 	void OnSourceModShutdown();
 	void OnSourceModVSPReceived();
@@ -111,6 +118,9 @@ public:
 	 */
 	void UnhookConVarChange(ConVar *pConVar, IPluginFunction *pFunction);
 
+	void AddConVarChangeListener(const char *name, IConVarChangeListener *pListener);
+	void RemoveConVarChangeListener(const char *name, IConVarChangeListener *pListener);
+
 	/**
 	 * Starts a query to find the value of a client convar.
 	 */
@@ -131,7 +141,7 @@ private:
 	 * Static callback that Valve's ConVar object executes when the convar's value changes.
 	 */
 #if defined ORANGEBOX_BUILD
-	static void OnConVarChanged(IConVar *pConVar, const char *oldValue, float flOldValue);
+	static void OnConVarChanged(ConVar *pConVar, const char *oldValue, float flOldValue);
 #else
 	static void OnConVarChanged(ConVar *pConVar, const char *oldValue);
 #endif
diff --git a/core/TimerSys.cpp b/core/TimerSys.cpp
index 464d4373..5831dd40 100644
--- a/core/TimerSys.cpp
+++ b/core/TimerSys.cpp
@@ -34,19 +34,10 @@
 #include "ForwardSys.h"
 #include "sourcemm_api.h"
 #include "frame_hooks.h"
+#include "ConVarManager.h"
 
 #define TIMER_MIN_ACCURACY		0.1
 
-#if !defined ORANGEBOX_BUILD
-#define CallGlobalChangeCallbacks	CallGlobalChangeCallback
-#endif
-
-#if defined ORANGEBOX_BUILD
-SH_DECL_HOOK3_void(ICvar, CallGlobalChangeCallbacks, SH_NOATTRIB, false, ConVar *, const char *, float);
-#else
-SH_DECL_HOOK2_void(ICvar, CallGlobalChangeCallbacks, SH_NOATTRIB, false, ConVar *, const char *);
-#endif
-
 TimerSystem g_Timers;
 double g_fUniversalTime = 0.0f;
 float g_fGameStartTime = 0.0f;	/* Game game start time, non-universal */
@@ -74,7 +65,8 @@ time_t GetAdjustedTime(time_t *buf)
 
 class DefaultMapTimer : 
 	public IMapTimer,
-	public SMGlobalClass
+	public SMGlobalClass,
+	public IConVarChangeListener
 {
 public:
 	DefaultMapTimer()
@@ -118,34 +110,20 @@ public:
 		mp_timelimit->SetValue(mp_timelimit->GetInt() + extra_time);
 	}
 
-#if defined ORANGEBOX_BUILD
-	void GlobalChangeCallback(ConVar *pVar, const char *old_value, float flOldValue)
-#else
-	void GlobalChangeCallback(ConVar *pVar, const char *old_value)
-#endif
+	void OnConVarChanged(ConVar *pConVar, const char *oldValue, float flOldValue)
 	{
-		if (pVar != mp_timelimit)
-		{
-			return;
-		}
-
-		if (atoi(old_value) == pVar->GetInt())
-		{
-			return;
-		}
-
 		g_Timers.MapTimeLeftChanged();
 	}
 
 private:
 	void Enable()
 	{
-		SH_ADD_HOOK_MEMFUNC(ICvar, CallGlobalChangeCallbacks, icvar, this, &DefaultMapTimer::GlobalChangeCallback, false);
+		g_ConVarManager.AddConVarChangeListener("mp_timelimit", this);
 	}
 
 	void Disable()
 	{
-		SH_REMOVE_HOOK_MEMFUNC(ICvar, CallGlobalChangeCallbacks, icvar, this, &DefaultMapTimer::GlobalChangeCallback, false);
+		g_ConVarManager.RemoveConVarChangeListener("mp_timelimit", this);
 	}
 
 private:
diff --git a/core/sm_srvcmds.cpp b/core/sm_srvcmds.cpp
index cbacadd0..657a8176 100644
--- a/core/sm_srvcmds.cpp
+++ b/core/sm_srvcmds.cpp
@@ -34,6 +34,7 @@
 #include "sm_stringutil.h"
 #include "HandleSys.h"
 #include "CoreConfig.h"
+#include "ConVarManager.h"
 
 RootConsoleMenu g_RootMenu;
 
@@ -57,11 +58,16 @@ RootConsoleMenu::~RootConsoleMenu()
 	m_Menu.clear();
 }
 
-#if defined ORANGEBOX_BUILD
-	extern void _IntExt_OnHostnameChanged(IConVar *var, const char *pOldValue, float flOldValue);
-#else
-	extern void _IntExt_OnHostnameChanged(ConVar *pConVar, char const *oldValue);
-#endif
+extern void _IntExt_OnHostnameChanged(ConVar *var, const char *pOldValue, float flOldValue);
+
+class DetectHostNameChanges : public IConVarChangeListener
+{
+public:
+	void OnConVarChanged(ConVar *pConVar, const char *oldValue, float flOldValue)
+	{
+		_IntExt_OnHostnameChanged(pConVar, oldValue, flOldValue);
+	}
+} s_HostnameChangeDetector;
 
 void RootConsoleMenu::OnSourceModStartup(bool late)
 {
@@ -71,13 +77,16 @@ void RootConsoleMenu::OnSourceModStartup(bool late)
 	CONVAR_REGISTER(this);
 	AddRootConsoleCommand("version", "Display version information", this);
 	AddRootConsoleCommand("credits", "Display credits listing", this);
+}
 
-	ConVar *pHost = icvar->FindVar("hostname");
-	pHost->InstallChangeCallback(_IntExt_OnHostnameChanged);
+void RootConsoleMenu::OnSourceModAllInitialized()
+{
+	g_ConVarManager.AddConVarChangeListener("hostname", &s_HostnameChangeDetector);
 }
 
 void RootConsoleMenu::OnSourceModShutdown()
 {
+	g_ConVarManager.RemoveConVarChangeListener("hostname", &s_HostnameChangeDetector);
 	RemoveRootConsoleCommand("credits", this);
 	RemoveRootConsoleCommand("version", this);
 }
diff --git a/core/sm_srvcmds.h b/core/sm_srvcmds.h
index 1562bda2..c3950909 100644
--- a/core/sm_srvcmds.h
+++ b/core/sm_srvcmds.h
@@ -63,6 +63,7 @@ public: //IConCommandBaseAccessor
 	bool RegisterConCommandBase(ConCommandBase *pCommand);
 public: //SMGlobalClass
 	void OnSourceModStartup(bool late);
+	void OnSourceModAllInitialized();
 	void OnSourceModShutdown();
 public: //IRootConsoleCommand
 	void OnRootConsoleCommand(const char *cmdname, const CCommand &command);
diff --git a/core/sourcemod.cpp b/core/sourcemod.cpp
index 26d9b22c..9b88b66c 100644
--- a/core/sourcemod.cpp
+++ b/core/sourcemod.cpp
@@ -281,6 +281,11 @@ void SourceModBase::StartSourceMod(bool late)
 	enginePatch = SH_GET_CALLCLASS(engine);
 	gamedllPatch = SH_GET_CALLCLASS(gamedll);
 
+	g_ShareSys.Initialize();
+
+	/* Make the global core identity */
+	g_pCoreIdent = g_ShareSys.CreateCoreIdentity();
+
 	/* Notify! */
 	SMGlobalClass *pBase = SMGlobalClass::head;
 	while (pBase)
@@ -289,9 +294,6 @@ void SourceModBase::StartSourceMod(bool late)
 		pBase = pBase->m_pGlobalClassNext;
 	}
 
-	/* Make the global core identity */
-	g_pCoreIdent = g_ShareSys.CreateCoreIdentity();
-
 	/* Notify! */
 	pBase = SMGlobalClass::head;
 	while (pBase)
diff --git a/core/systems/ShareSys.cpp b/core/systems/ShareSys.cpp
index c3bf2c2d..196c4eb0 100644
--- a/core/systems/ShareSys.cpp
+++ b/core/systems/ShareSys.cpp
@@ -54,7 +54,7 @@ IdentityToken_t *ShareSystem::CreateCoreIdentity()
 	return CreateIdentity(m_CoreType, this);
 }
 
-void ShareSystem::OnSourceModStartup(bool late)
+void ShareSystem::Initialize()
 {
 	TypeAccess sec;
 
diff --git a/core/systems/ShareSys.h b/core/systems/ShareSys.h
index 60e99c21..998ec98a 100644
--- a/core/systems/ShareSys.h
+++ b/core/systems/ShareSys.h
@@ -84,7 +84,7 @@ public: //IShareSys
 	void OverrideNatives(IExtension *myself, const sp_nativeinfo_t *natives);
 public: //SMGlobalClass
 	/* Pre-empt in case anything tries to register idents early */
-	void OnSourceModStartup(bool late);
+	void Initialize();
 	void OnSourceModShutdown();
 public: //IHandleTypeDispatch
 	void OnHandleDestroy(HandleType_t type, void *object);

From 37096d73070dbe03963483c1ea72a213ba6cd0b7 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Thu, 6 Dec 2007 12:26:59 +0000
Subject: [PATCH 094/263] fixed doc error on GetClientMenu()

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401777
---
 plugins/include/menus.inc | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/plugins/include/menus.inc b/plugins/include/menus.inc
index 46537ab2..825209dc 100644
--- a/plugins/include/menus.inc
+++ b/plugins/include/menus.inc
@@ -575,8 +575,7 @@ native Handle:CreatePanel(Handle:hStyle=INVALID_HANDLE);
 native Handle:CreateMenuEx(Handle:hStyle=INVALID_HANDLE, MenuHandler:handler, MenuAction:actions=MENU_ACTIONS_DEFAULT);
 
 /**
- * Returns whether a client is viewing a menu.  If the menu source 
- * is MenuSource_Normal, a menu Handle will also be returned.
+ * Returns whether a client is viewing a menu.
  *
  * @param client		Client index.
  * @param hStyle		MenuStyle Handle, or INVALID_HANDLE to use the default style.

From 6151b89b946d86e6713ef05dee1e5d9640784931 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Thu, 6 Dec 2007 14:08:22 +0000
Subject: [PATCH 095/263] fixed documented param order being wrong on
 ReadMapList()

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401778
---
 plugins/include/sourcemod.inc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc
index 6f6f52f4..842c5740 100644
--- a/plugins/include/sourcemod.inc
+++ b/plugins/include/sourcemod.inc
@@ -520,14 +520,14 @@ forward OnLibraryRemoved(const String:name[]);
  *						as strings.  The array is never checked for duplicates, and it is 
  *						not read beforehand.  Only the serial number is used to detect 
  *						changes.
- * @param str			Config name, or "default" for the default map list.  Config names 
- *						should be somewhat descriptive.  For example, the admin menu uses 
- *						a config name of "admin menu".  The list names can be configured 
- *						by users in addons/sourcemod/configs/maplists.cfg.
  * @param serial		Serial number to identify last known map list change.  If -1, the 
  *						the value will not be checked.  If the map list has since changed, 
  *						the serial is updated (even if -1 was passed).  If there is an error 
  *						finding a valid maplist, then the serial is set to -1.
+ * @param str			Config name, or "default" for the default map list.  Config names 
+ *						should be somewhat descriptive.  For example, the admin menu uses 
+ *						a config name of "admin menu".  The list names can be configured 
+ *						by users in addons/sourcemod/configs/maplists.cfg.
  * @param flags			MAPLIST_FLAG flags.
  * @return				On failure:
  *						 INVALID_HANDLE is returned, the serial is set to -1, and the input 

From 1ad8e3418146875820b448ba0dc3ea50f4e7fb93 Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Fri, 7 Dec 2007 00:17:24 +0000
Subject: [PATCH 096/263] fixed amb1252, GetPlayerInfo wouldnt work for the
 last player index fixed iserver crashing on linux

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401779
---
 extensions/sdktools/vglobals.cpp | 35 +++++++++++++++++++++++++-------
 extensions/sdktools/vhelpers.cpp |  2 +-
 extensions/sdktools/vnatives.cpp |  5 +++++
 3 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/extensions/sdktools/vglobals.cpp b/extensions/sdktools/vglobals.cpp
index 09337a70..0925dbec 100644
--- a/extensions/sdktools/vglobals.cpp
+++ b/extensions/sdktools/vglobals.cpp
@@ -83,18 +83,28 @@ void InitializeValveGlobals()
 }
 #endif
 
+bool vcmp(const void *_addr1, const void *_addr2, size_t len)
+{
+	unsigned char *addr1 = (unsigned char *)_addr1;
+	unsigned char *addr2 = (unsigned char *)_addr2;
+
+	for (size_t i=0; i<len; i++)
+	{
+		if (addr2[i] == '*')
+			continue;
+		if (addr1[i] != addr2[i])
+			return false;
+	}
+
+	return true;
+}
+
 #if defined PLATFORM_WINDOWS
 	/* Thanks to DS for the sigs */
 	#define ISERVER_WIN_SIG				"\x8B\x44\x24\x2A\x50\xB9\x2A\x2A\x2A\x2A\xE8"
 	#define ISERVER_WIN_SIG_LEN			11
 void GetIServer()
 {
-	/* First check that the IVEngineServer::CreateFakeClient exists */
-	if (!memutils->FindPattern(engine, ISERVER_WIN_SIG, ISERVER_WIN_SIG_LEN))
-	{
-		return;
-	}
-
 	int offset;
 	void *vfunc = NULL;
 
@@ -110,6 +120,12 @@ void GetIServer()
 		return;
 	}
 
+	/* Check if we're on the expected function */
+	if (!vcmp(vfunc, ISERVER_WIN_SIG, ISERVER_WIN_SIG_LEN))
+	{
+		return;
+	}
+
 	/* Finally we have the interface we were looking for */
 	iserver = *reinterpret_cast<IServer **>(reinterpret_cast<unsigned char *>(vfunc) + offset);
 #else
@@ -123,6 +139,11 @@ void GetIServer()
 		void **vtable = *reinterpret_cast<void ***>(enginePatch->GetThisPtr() + info.thisptroffs + info.vtbloffs);
 		vfunc = vtable[info.vtblindex];
 	}
+	/* Check if we're on the expected function */
+	if (!vcmp(vfunc, ISERVER_WIN_SIG, ISERVER_WIN_SIG_LEN))
+	{
+		return;
+	}
 
 	iserver = *reinterpret_cast<IServer **>(reinterpret_cast<unsigned char *>(vfunc) + offset);
 #endif
@@ -136,6 +157,6 @@ void GetIServer()
 		return;
 	}
 
-	iserver = *reinterpret_cast<IServer **>(addr);
+	iserver = reinterpret_cast<IServer *>(addr);
 }
 #endif
diff --git a/extensions/sdktools/vhelpers.cpp b/extensions/sdktools/vhelpers.cpp
index 44a577a1..571abdd0 100644
--- a/extensions/sdktools/vhelpers.cpp
+++ b/extensions/sdktools/vhelpers.cpp
@@ -272,7 +272,7 @@ bool GetPlayerInfo(int client, player_info_t *info)
 #if defined ORANGEBOX_BUILD
 	return engine->GetPlayerInfo(client, info);
 #else
-	return iserver->GetPlayerInfo(client, info);
+	return (iserver) ? iserver->GetPlayerInfo(client-1, info) : false;
 #endif
 }
 
diff --git a/extensions/sdktools/vnatives.cpp b/extensions/sdktools/vnatives.cpp
index ce54958d..6416caea 100644
--- a/extensions/sdktools/vnatives.cpp
+++ b/extensions/sdktools/vnatives.cpp
@@ -853,6 +853,11 @@ static cell_t GetPlayerDecalFile(IPluginContext *pContext, const cell_t *params)
 
 static cell_t GetServerNetStats(IPluginContext *pContext, const cell_t *params)
 {
+	if (iserver == NULL)
+	{
+		return pContext->ThrowNativeError("IServer interface not supported, file a bug report.");
+	}
+
 	float in, out;
 	cell_t *pIn, *pOut;
 

From bb64e2bd6d71b85ada38484c471ae8020aeaf32e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 7 Dec 2007 21:43:28 +0000
Subject: [PATCH 097/263] added debugging to build tool

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401780
---
 tools/builder/ABuilder.cs | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/builder/ABuilder.cs b/tools/builder/ABuilder.cs
index d678b974..1500d699 100644
--- a/tools/builder/ABuilder.cs
+++ b/tools/builder/ABuilder.cs
@@ -44,11 +44,13 @@ namespace builder
 			p.WaitForExit();
 			p.Close();
 
+			Console.WriteLine("Debug: wd = " + info.WorkingDirectory + " fn = " + info.FileName + " arg = " + info.Arguments);
 			Console.WriteLine(output);
 
 			string binary = Config.PathFormat("{0}/{1}/addons/sourcemod/scripting/{2}.smx", cfg.pkg_path, pkg.GetBaseFolder(), pl.Source);
 			if (!File.Exists(binary))
 			{
+				Console.WriteLine("Could not find binary: " + binary);
 				return false;
 			}
 

From f187f1eb8aac9a4e600fa9c6a88b0748bc7cda21 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 8 Dec 2007 17:31:44 +0000
Subject: [PATCH 098/263] fixed amb1225 - extremely rare compiler bug could
 cause crash.  unluckily, this suddenly started breaking the linux build,
 which should now work again

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401781
---
 sourcepawn/compiler/sc3.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sourcepawn/compiler/sc3.c b/sourcepawn/compiler/sc3.c
index 5ff02707..c9a86974 100644
--- a/sourcepawn/compiler/sc3.c
+++ b/sourcepawn/compiler/sc3.c
@@ -2365,7 +2365,7 @@ static int nesting=0;
          */
       } else {
         arglist[argpos]=ARG_DONE; /* flag argument as "present" */
-        if (arg[argidx].numtags==1)     /* set the expected tag, if any */
+        if (arg[argidx].ident!=0 && arg[argidx].numtags==1)     /* set the expected tag, if any */
           lval.cmptag=arg[argidx].tags[0];
         lvalue=hier14(&lval);
         assert(sc_status==statFIRST || arg[argidx].tags!=NULL);

From 4ec75fbfe4874890669b605c956fea9a44360be9 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 9 Dec 2007 19:33:25 +0000
Subject: [PATCH 099/263] added amb1257 - synergy support for sdktools

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401782
---
 gamedata/sdktools.games.txt | 78 +++++++++++++++++++++++++++++++++++++
 1 file changed, 78 insertions(+)

diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index aadea07f..fb742734 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -42,6 +42,7 @@
 			"game"		"$SourceForts v1.9.3"
 			"game"		"FortressForever"
 			"game"		"empires"
+			"game"		"synergy"
 		}
 
 		"Offsets"
@@ -100,6 +101,7 @@
 			"game"		"$SourceForts v1.9.3"
 			"game"		"FortressForever"
 			"game"		"empires"
+			"game"		"synergy"
 		}
 		
 		"Offsets"
@@ -150,6 +152,7 @@
 			"game"		"$SourceForts v1.9.3"
 			"game"		"FortressForever"
 			"game"		"empires"
+			"game"		"synergy"
 		}
 		
 		"Offsets"
@@ -197,6 +200,7 @@
 			"game"		"$SourceForts v1.9.3"
 			"game"		"FortressForever"
 			"game"		"empires"
+			"game"		"synergy"
 		}
 
 		"Signatures"
@@ -1244,5 +1248,79 @@
 			}
 		}
 	}
+
+	/* Synergy Release 1 */
+	"synergy"
+	{
+		"Offsets"
+		{
+			/* CBasePlayer */
+			"GiveNamedItem"
+			{
+				"windows"	"334"
+				"linux"		"335"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"226"
+				"linux"		"227"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"224"
+				"linux"		"225"
+			}
+			"Ignite"
+			{
+				"windows"	"188"
+				"linux"		"189"
+			}
+			"Extinguish"
+			{
+				"windows"	"189"
+				"linux"		"190"
+			}
+			"Teleport"
+			{
+				"windows"	"98"
+				"linux"		"99"
+			}
+			"GetVelocity"
+			{
+				"windows"	"126"
+				"linux"		"127"
+			}
+			"EyeAngles"
+			{
+				"windows"	"118"
+				"linux"		"119"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+				"linux"		"30"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+				"linux"		"32"
+			}
+			"AcceptInput"
+			{
+				"windows"	"35"
+				"linux"		"36"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+		}
+	}
 }
 

From 5f81dd7be599c540507948f6ba0599f4f107eaab Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Sun, 9 Dec 2007 21:45:23 +0000
Subject: [PATCH 100/263] Small change to RTV to avoid timer issues.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401783
---
 plugins/rockthevote.sp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/plugins/rockthevote.sp b/plugins/rockthevote.sp
index a57f038a..b85b54d1 100644
--- a/plugins/rockthevote.sp
+++ b/plugins/rockthevote.sp
@@ -315,7 +315,9 @@ public Action:Command_Say(client, args)
 
 public Action:Timer_DelayRTV(Handle:timer)
 {
-	g_RTVAllowed = true;
+	g_RTVAllowed = true;
+	g_RTVStarted = false;
+	g_RTVEnded = false;	
 }
 
 public Action:Timer_StartRTV(Handle:timer)

From ff15a84e7c4c8aa4f7d34c3d6bd82a5395a496e8 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 10 Dec 2007 03:14:54 +0000
Subject: [PATCH 101/263] added temporary debugging to ReadMapList()

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401784
---
 core/smn_maplists.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/core/smn_maplists.cpp b/core/smn_maplists.cpp
index 864751ee..4907bf14 100644
--- a/core/smn_maplists.cpp
+++ b/core/smn_maplists.cpp
@@ -524,6 +524,10 @@ private:
 
 			if ((fp = fopen(pMapList->path, "rt")) == NULL)
 			{
+				char error_msg[255];
+				strncopy(error_msg, "Unknown error", sizeof(error_msg));
+				g_LibSys.GetPlatformError(error_msg, sizeof(error_msg));
+				g_Logger.LogError("ReadMapList(): Could not open file \"%s\": %s\n", pMapList->path, error_msg);
 				return false;
 			}
 

From d3a22aeff7ee463357795a8105f98c7a0ca07fc1 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 10 Dec 2007 05:14:37 +0000
Subject: [PATCH 102/263] added amb1262 - adt_trie

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401785
---
 core/Makefile.ep1              |   3 +-
 core/Makefile.ep2              |   3 +-
 core/Makefile.orig             |   3 +-
 core/msvc8/sourcemod_mm.vcproj |   4 +
 core/smn_adt_trie.cpp          | 513 +++++++++++++++++++++++++++++++++
 plugins/include/adt.inc        |   1 +
 plugins/include/adt_trie.inc   | 146 ++++++++++
 7 files changed, 670 insertions(+), 3 deletions(-)
 create mode 100644 core/smn_adt_trie.cpp
 create mode 100644 plugins/include/adt_trie.inc

diff --git a/core/Makefile.ep1 b/core/Makefile.ep1
index 195f7693..c14f55d9 100644
--- a/core/Makefile.ep1
+++ b/core/Makefile.ep1
@@ -30,7 +30,8 @@ OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
 	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplists.cpp \
 	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
-	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp
+	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp \
+	smn_adt_trie.cpp
 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
 	  systems/LibrarySys.cpp systems/PluginInfoDatabase.cpp systems/PluginSys.cpp \
 	  systems/ShareSys.cpp vm/sp_vm_basecontext.cpp vm/sp_vm_engine.cpp \
diff --git a/core/Makefile.ep2 b/core/Makefile.ep2
index f0df5e60..99f9dbbf 100644
--- a/core/Makefile.ep2
+++ b/core/Makefile.ep2
@@ -30,7 +30,8 @@ OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
 	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplists.cpp \
 	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
-	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp
+	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp \
+	smn_adt_trie.cpp
 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
 	  systems/LibrarySys.cpp systems/PluginInfoDatabase.cpp systems/PluginSys.cpp \
 	  systems/ShareSys.cpp vm/sp_vm_basecontext.cpp vm/sp_vm_engine.cpp \
diff --git a/core/Makefile.orig b/core/Makefile.orig
index dc2e4c76..fe895f49 100644
--- a/core/Makefile.orig
+++ b/core/Makefile.orig
@@ -30,7 +30,8 @@ OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
 	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplists.cpp \
 	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
-	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp
+	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp \
+	smn_adt_trie.cpp
 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
 	  systems/LibrarySys.cpp systems/PluginInfoDatabase.cpp systems/PluginSys.cpp \
 	  systems/ShareSys.cpp vm/sp_vm_basecontext.cpp vm/sp_vm_engine.cpp \
diff --git a/core/msvc8/sourcemod_mm.vcproj b/core/msvc8/sourcemod_mm.vcproj
index b059bb32..d7e53673 100644
--- a/core/msvc8/sourcemod_mm.vcproj
+++ b/core/msvc8/sourcemod_mm.vcproj
@@ -1310,6 +1310,10 @@
 				RelativePath="..\smn_adt_array.cpp"
 				>
 			</File>
+			<File
+				RelativePath="..\smn_adt_trie.cpp"
+				>
+			</File>
 			<File
 				RelativePath="..\smn_banning.cpp"
 				>
diff --git a/core/smn_adt_trie.cpp b/core/smn_adt_trie.cpp
new file mode 100644
index 00000000..79fc6585
--- /dev/null
+++ b/core/smn_adt_trie.cpp
@@ -0,0 +1,513 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include <malloc.h>
+#include "sm_globals.h"
+#include "sm_stringutil.h"
+#include "HandleSys.h"
+#include "sm_trie_tpl.h"
+
+HandleType_t htCellTrie;
+
+enum TrieNodeType
+{
+	TrieNode_Cell,
+	TrieNode_CellArray,
+	TrieNode_String,
+};
+
+struct SmartTrieNode
+{
+	SmartTrieNode()
+	{
+		ptr = NULL;
+		type = TrieNode_Cell;
+	}
+	SmartTrieNode(const SmartTrieNode &obj)
+	{
+		type = obj.type;
+		ptr = obj.ptr;
+		data = obj.data;
+		data_len = obj.data_len;
+	}
+	SmartTrieNode & operator =(const SmartTrieNode &src)
+	{
+		type = src.type;
+		ptr = src.ptr;
+		data = src.data;
+		data_len = src.data_len;
+		return *this;
+	}
+	TrieNodeType type;
+	cell_t *ptr;
+	cell_t data;
+	cell_t data_len;
+};
+
+struct CellTrie
+{
+	KTrie<SmartTrieNode> trie;
+	cell_t mem_usage;
+};
+
+class TrieHelpers : 
+	public SMGlobalClass,
+	public IHandleTypeDispatch
+{
+public: //SMGlobalClass
+	void OnSourceModAllInitialized()
+	{
+		htCellTrie = g_HandleSys.CreateType("Trie", this, 0, NULL, NULL, g_pCoreIdent, NULL);
+	}
+	void OnSourceModShutdown()
+	{
+		g_HandleSys.RemoveType(htCellTrie, g_pCoreIdent);
+	}
+public: //IHandleTypeDispatch
+	static void DestroySmartTrieNode(SmartTrieNode *pNode)
+	{
+		free(pNode->ptr);
+	}
+	void OnHandleDestroy(HandleType_t type, void *object)
+	{
+		CellTrie *pTrie = (CellTrie *)object;
+
+		pTrie->trie.run_destructor(DestroySmartTrieNode);
+
+		delete pTrie;
+	}
+	bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+	{
+		CellTrie *pArray = (CellTrie *)object;
+		*pSize = sizeof(CellTrie) + pArray->mem_usage + pArray->trie.mem_usage();
+		return true;
+	}
+} s_CellTrieHelpers;
+
+static cell_t CreateTrie(IPluginContext *pContext, const cell_t *params)
+{
+	CellTrie *pTrie = new CellTrie;
+	Handle_t hndl;
+
+	pTrie->mem_usage = 0;
+
+	if ((hndl = g_HandleSys.CreateHandle(htCellTrie, pTrie, pContext->GetIdentity(), g_pCoreIdent, NULL))
+		== BAD_HANDLE)
+	{
+		delete pTrie;
+		return BAD_HANDLE;
+	}
+
+	return hndl;
+}
+
+static void UpdateNodeCells(CellTrie *pTrie, SmartTrieNode *pData, const cell_t *cells, cell_t num_cells)
+{
+	if (num_cells == 1)
+	{
+		pData->data = *cells;
+		pData->type = TrieNode_Cell;
+	}
+	else
+	{
+		pData->type = TrieNode_CellArray;
+		if (pData->ptr == NULL)
+		{
+			pData->ptr = (cell_t *)malloc(num_cells * sizeof(cell_t));
+			pData->data_len = num_cells;
+			pTrie->mem_usage += (pData->data_len * sizeof(cell_t));
+		}
+		else if (pData->data_len < num_cells)
+		{
+			pData->ptr = (cell_t *)realloc(pData->ptr, num_cells * sizeof(cell_t));
+			pTrie->mem_usage += (num_cells - pData->data_len) * sizeof(cell_t);
+			pData->data_len = num_cells;
+		}
+		if (num_cells != 0)
+		{
+			memcpy(pData->ptr, cells, sizeof(cell_t) * num_cells);
+		}
+		pData->data = num_cells;
+	}
+}
+
+static void UpdateNodeString(CellTrie *pTrie, SmartTrieNode *pData, const char *str)
+{
+	size_t len = strlen(str);
+	cell_t num_cells = (len + sizeof(cell_t)) / sizeof(cell_t);
+
+	if (pData->ptr == NULL)
+	{
+		pData->ptr = (cell_t *)malloc(num_cells * sizeof(cell_t));
+		pData->data_len = num_cells;
+		pTrie->mem_usage += (pData->data_len * sizeof(cell_t));
+	}
+	else if (pData->data_len < num_cells)
+	{
+		pData->ptr = (cell_t *)realloc(pData->ptr, num_cells * sizeof(cell_t));
+		pTrie->mem_usage += (num_cells - pData->data_len) * sizeof(cell_t);
+		pData->data_len = num_cells;
+	}
+
+	strcpy((char *)pData->ptr, str);
+	pData->data = len;
+	pData->type = TrieNode_String;
+}
+
+static cell_t SetTrieValue(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl;
+	CellTrie *pTrie;
+	HandleError err;
+	HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent);
+
+	hndl = params[1];
+
+	if ((err = g_HandleSys.ReadHandle(hndl, htCellTrie, &sec, (void **)&pTrie))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err);
+	}
+
+	char *key;
+	pContext->LocalToString(params[2], &key);
+
+	SmartTrieNode *pNode;
+	if ((pNode = pTrie->trie.retrieve(key)) == NULL)
+	{
+		SmartTrieNode node;
+		UpdateNodeCells(pTrie, &node, &params[3], 1);
+		return pTrie->trie.insert(key, node) ? 1 : 0;
+	}
+
+	if (!params[4])
+	{
+		return 0;
+	}
+
+	UpdateNodeCells(pTrie, pNode, &params[3], 1);
+
+	return 1;
+}
+
+static cell_t SetTrieArray(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl;
+	CellTrie *pTrie;
+	HandleError err;
+	HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent);
+
+	hndl = params[1];
+
+	if ((err = g_HandleSys.ReadHandle(hndl, htCellTrie, &sec, (void **)&pTrie))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err);
+	}
+
+	if (params[4] < 0)
+	{
+		return pContext->ThrowNativeError("Invalid array size: %d", params[4]);
+	}
+
+	char *key;
+	cell_t *array;
+	pContext->LocalToString(params[2], &key);
+	pContext->LocalToPhysAddr(params[3], &array);
+
+	SmartTrieNode *pNode;
+	if ((pNode = pTrie->trie.retrieve(key)) == NULL)
+	{
+		SmartTrieNode node;
+		UpdateNodeCells(pTrie, &node, array, params[4]);
+		if (!pTrie->trie.insert(key, node))
+		{
+			free(node.ptr);
+			return 0;
+		}
+		return 1;
+	}
+
+	if (!params[4])
+	{
+		return 0;
+	}
+
+	UpdateNodeCells(pTrie, pNode, array, params[4]);
+
+	return 1;
+}
+
+static cell_t SetTrieString(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl;
+	CellTrie *pTrie;
+	HandleError err;
+	HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent);
+
+	hndl = params[1];
+
+	if ((err = g_HandleSys.ReadHandle(hndl, htCellTrie, &sec, (void **)&pTrie))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err);
+	}
+
+	char *key, *val;
+	pContext->LocalToString(params[2], &key);
+	pContext->LocalToString(params[3], &val);
+
+	SmartTrieNode *pNode;
+	if ((pNode = pTrie->trie.retrieve(key)) == NULL)
+	{
+		SmartTrieNode node;
+		UpdateNodeString(pTrie, &node, val);
+		if (!pTrie->trie.insert(key, node))
+		{
+			free(node.ptr);
+			return 0;
+		}
+		return 1;
+	}
+
+	if (!params[4])
+	{
+		return 0;
+	}
+
+	UpdateNodeString(pTrie, pNode, val);
+
+	return 1;
+}
+
+static cell_t RemoveFromTrie(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl;
+	CellTrie *pTrie;
+	HandleError err;
+	HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent);
+
+	hndl = params[1];
+
+	if ((err = g_HandleSys.ReadHandle(hndl, htCellTrie, &sec, (void **)&pTrie))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err);
+	}
+
+	char *key;
+	pContext->LocalToString(params[2], &key);
+
+	SmartTrieNode *pNode;
+	if ((pNode = pTrie->trie.retrieve(key)) == NULL)
+	{
+		return 0;
+	}
+
+	free(pNode->ptr);
+	pNode->ptr = NULL;
+
+	return pTrie->trie.remove(key) ? 1 : 0;
+}
+
+static cell_t ClearTrie(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl;
+	CellTrie *pTrie;
+	HandleError err;
+	HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent);
+
+	hndl = params[1];
+
+	if ((err = g_HandleSys.ReadHandle(hndl, htCellTrie, &sec, (void **)&pTrie))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err);
+	}
+
+	pTrie->trie.run_destructor(TrieHelpers::DestroySmartTrieNode);
+	pTrie->trie.clear();
+
+	return 1;
+}
+
+static cell_t GetTrieValue(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl;
+	CellTrie *pTrie;
+	HandleError err;
+	HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent);
+
+	hndl = params[1];
+
+	if ((err = g_HandleSys.ReadHandle(hndl, htCellTrie, &sec, (void **)&pTrie))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err);
+	}
+
+	char *key;
+	cell_t *pValue;
+	pContext->LocalToString(params[2], &key);
+	pContext->LocalToPhysAddr(params[3], &pValue);
+
+	SmartTrieNode *pNode;
+	if ((pNode = pTrie->trie.retrieve(key)) == NULL)
+	{
+		return 0;
+	}
+
+	if (pNode->type == TrieNode_Cell)
+	{
+		*pValue = pNode->data;
+		return 1;
+	}
+	
+	return 0;
+}
+
+static cell_t GetTrieArray(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl;
+	CellTrie *pTrie;
+	HandleError err;
+	HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent);
+
+	hndl = params[1];
+
+	if ((err = g_HandleSys.ReadHandle(hndl, htCellTrie, &sec, (void **)&pTrie))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err);
+	}
+
+	if (params[4] < 0)
+	{
+		return pContext->ThrowNativeError("Invalid array size: %d", params[4]);
+	}
+
+	char *key;
+	cell_t *pValue, *pSize;
+	pContext->LocalToString(params[2], &key);
+	pContext->LocalToPhysAddr(params[3], &pValue);
+	pContext->LocalToPhysAddr(params[5], &pSize);
+
+	SmartTrieNode *pNode;
+	if ((pNode = pTrie->trie.retrieve(key)) == NULL
+		|| pNode->type != TrieNode_CellArray)
+	{
+		return 0;
+	}
+
+	if (pNode->ptr == NULL)
+	{
+		*pSize = 0;
+		return 1;
+	}
+
+	if (pNode->data > params[4])
+	{
+		*pSize = params[4];
+	}
+	else if (params[4] != 0)
+	{
+		*pSize = pNode->data;
+	}
+	else
+	{
+		return 1;
+	}
+
+	memcpy(pValue, pNode->ptr, sizeof(cell_t) * pSize[0]);
+
+	return 1;
+}
+
+static cell_t GetTrieString(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl;
+	CellTrie *pTrie;
+	HandleError err;
+	HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent);
+
+	hndl = params[1];
+
+	if ((err = g_HandleSys.ReadHandle(hndl, htCellTrie, &sec, (void **)&pTrie))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err);
+	}
+
+	if (params[4] < 0)
+	{
+		return pContext->ThrowNativeError("Invalid buffer size: %d", params[4]);
+	}
+
+	char *key;
+	cell_t *pSize;
+	pContext->LocalToString(params[2], &key);
+	pContext->LocalToPhysAddr(params[5], &pSize);
+
+	SmartTrieNode *pNode;
+	if ((pNode = pTrie->trie.retrieve(key)) == NULL
+		|| pNode->type != TrieNode_String)
+	{
+		return 0;
+	}
+
+	if (pNode->ptr == NULL)
+	{
+		*pSize = 0;
+		pContext->StringToLocal(params[3], params[4], "");
+		return 1;
+	}
+
+	size_t written;
+	pContext->StringToLocalUTF8(params[3], params[4], (char *)pNode->ptr, &written);
+
+	*pSize = (cell_t)written;
+
+	return 1;
+}
+
+REGISTER_NATIVES(trieNatives)
+{
+	{"ClearTrie",				ClearTrie},
+	{"CreateTrie",				CreateTrie},
+	{"GetTrieArray",			GetTrieArray},
+	{"GetTrieString",			GetTrieString},
+	{"GetTrieValue",			GetTrieValue},
+	{"RemoveFromTrie",			RemoveFromTrie},
+	{"SetTrieArray",			SetTrieArray},
+	{"SetTrieString",			SetTrieString},
+	{"SetTrieValue",			SetTrieValue},
+	{NULL,						NULL},
+};
diff --git a/plugins/include/adt.inc b/plugins/include/adt.inc
index 819fd512..5fb58bf0 100644
--- a/plugins/include/adt.inc
+++ b/plugins/include/adt.inc
@@ -36,3 +36,4 @@
 #define _adt_included
 
 #include <adt_array>
+#include <adt_trie>
diff --git a/plugins/include/adt_trie.inc b/plugins/include/adt_trie.inc
new file mode 100644
index 00000000..303b1949
--- /dev/null
+++ b/plugins/include/adt_trie.inc
@@ -0,0 +1,146 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This file is part of the SourceMod/SourcePawn SDK.
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+ 
+#if defined _adt_trie_included
+ #endinput
+#endif
+#define _adt_trie_included
+
+/**
+ * Creates a Trie structure.  A trie is a data storage object that maps any value to a 
+ * string of text.  It features very fast lookup and deletion, but grows very slow for 
+ * insertion once tens of thousands of items are added.
+ *
+ * Keys in Tries are unique.  That is, each key may only have one value.  Unlike arrays, 
+ * Tries cannot be iterated right now.  Since the contents are known to be unique, to 
+ * work around this, you can use ADT Arrays to store a list of keys known to be in a 
+ * Trie.
+ *
+ * @return 			New Trie Handle, which must be freed via CloseHandle().
+ */
+native Handle:CreateTrie();
+
+/**
+ * Sets a value in a Trie, either inserting a new entry or replacing an old one.
+ *
+ * @param trie		Trie Handle.
+ * @param key		Key string.
+ * @param value		Value to store at this key.
+ * @param replace	If false, operation will fail if the key is already set.
+ * @return			True on success, false on failure.
+ * @error			Invalid Handle.
+ */
+native bool:SetTrieValue(Handle:trie, const String:key[], any:value, bool:replace=true);
+
+/**
+ * Sets an array value in a Trie, either inserting a new entry or replacing an old one.
+ *
+ * @param trie		Trie Handle.
+ * @param key		Key string.
+ * @param array		Array to store.
+ * @param num_items	Number of items in the array.
+ * @param replace	If false, operation will fail if the key is already set.
+ * @return			True on success, false on failure.
+ * @error			Invalid Handle.
+ */
+native bool:SetTrieArray(Handle:trie, const String:key[], const array[], num_items, bool:replace=true);
+
+/**
+ * Sets a string value in a Trie, either inserting a new entry or replacing an old one.
+ *
+ * @param trie		Trie Handle.
+ * @param key		Key string.
+ * @param array		Array to store.
+ * @param num_items	Number of items in the array.
+ * @param replace	If false, operation will fail if the key is already set.
+ * @return			True on success, false on failure.
+ * @error			Invalid Handle.
+ */
+native bool:SetTrieString(Handle:trie, const String:key[], const String:value[], bool:replace=true);
+
+/**
+ * Retrieves a value in a Trie.
+ *
+ * @param trie		Trie Handle.
+ * @param key		Key string.
+ * @param val		Variable to store value.
+ * @return			True on success.  False if the key is not set, or the key is set 
+ *					as an array or string (not a value).
+ * @error			Invalid Handle.
+ */
+native bool:GetTrieValue(Handle:trie, const String:key[], &any:value);
+
+/**
+ * Retrieves an array in a Trie.
+ *
+ * @param trie		Trie Handle.
+ * @param key		Key string.
+ * @param array		Buffer to store array.
+ * @param max_size	Maximum size of array buffer.
+ * @param size		Optional parameter to store the number of elements written to the buffer.
+ * @return			True on success.  False if the key is not set, or the key is set 
+ *					as a value or string (not an array).
+ * @error			Invalid Handle.
+ */
+native bool:GetTrieArray(Handle:trie, const String:key[], array[], max_size, &size=0);
+
+/**
+ * Retrieves a string in a Trie.
+ *
+ * @param trie		Trie Handle.
+ * @param key		Key string.
+ * @param value		Buffer to store value.
+ * @param max_size	Maximum size of string buffer.
+ * @param size		Optional parameter to store the number of bytes written to the buffer.
+ * @return			True on success.  False if the key is not set, or the key is set 
+ *					as a value or array (not a string).
+ * @error			Invalid Handle.
+ */
+native bool:GetTrieString(Handle:trie, const String:key[], String:value[], max_size, &size=0);
+
+/**
+ * Removes a key entry from a Trie.
+ *
+ * @param trie		Trie Handle.
+ * @param key		Key string.
+ * @return			True on success, false if the value was never set.
+ * @error			Invalid Handle.
+ */
+native RemoveFromTrie(Handle:trie, const String:key[]);
+
+/**
+ * Clears all entries from a Trie.
+ *
+ * @param trie		Trie Handle.
+ * @error			Invalid Handle.
+ */
+native ClearTrie(Handle:trie);

From c987c2f0f7c08e6751f4bd0d004f6df8e6a225a3 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 10 Dec 2007 05:16:08 +0000
Subject: [PATCH 103/263] added new ktrie function for running custom
 destructor

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401786
---
 public/sm_trie_tpl.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/public/sm_trie_tpl.h b/public/sm_trie_tpl.h
index 195e1988..5d9b0b59 100644
--- a/public/sm_trie_tpl.h
+++ b/public/sm_trie_tpl.h
@@ -659,6 +659,17 @@ public:
 		free(m_base);
 		free(m_stringtab);
 	}
+	void run_destructor(void (*dtor)(K * ptr))
+	{
+		for (size_t i = 0; i <= m_baseSize; i++)
+		{
+			if (m_base[i].valset)
+			{
+				dtor(&m_base[i].value);
+				m_base[i].valset = false;
+			}
+		}
+	}
 private:
 	class KTrieNode
 	{

From 7847e6e2e85012e3bb998b200c632bfd21c196fa Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 10 Dec 2007 12:19:24 +0000
Subject: [PATCH 104/263] fixed amb1266 - cstrike's ProcCmdString hook had a
 bug

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401787
---
 extensions/cstrike/extension.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/extensions/cstrike/extension.cpp b/extensions/cstrike/extension.cpp
index 20675935..b35b98ba 100644
--- a/extensions/cstrike/extension.cpp
+++ b/extensions/cstrike/extension.cpp
@@ -186,6 +186,10 @@ bool CStrike::ProcessCommandTarget(cmd_target_info_t *info)
 	{
 		team_index = 2;
 	}
+	else
+	{
+		return false;
+	}
 
 	info->num_targets = 0;
 

From 1904348efc4c8fe0ffbd1bcfcb9e054a0c86488f Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 10 Dec 2007 22:20:53 +0000
Subject: [PATCH 105/263] - fixed amb1237 part 1 - maplists.cfg missing could
 cause ReadMapList() to fail - fixed amb1237 part 2 - nextmap could fail in
 certain cases with mapchooser present

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401789
---
 core/smn_maplists.cpp |  5 +----
 plugins/nextmap.sp    | 30 +++++++++++++++++-------------
 2 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/core/smn_maplists.cpp b/core/smn_maplists.cpp
index 4907bf14..640e0570 100644
--- a/core/smn_maplists.cpp
+++ b/core/smn_maplists.cpp
@@ -524,10 +524,6 @@ private:
 
 			if ((fp = fopen(pMapList->path, "rt")) == NULL)
 			{
-				char error_msg[255];
-				strncopy(error_msg, "Unknown error", sizeof(error_msg));
-				g_LibSys.GetPlatformError(error_msg, sizeof(error_msg));
-				g_Logger.LogError("ReadMapList(): Could not open file \"%s\": %s\n", pMapList->path, error_msg);
 				return false;
 			}
 
@@ -658,6 +654,7 @@ static cell_t SetMapListCompatBind(IPluginContext *pContext, const cell_t *param
 	pContext->LocalToString(params[1], &name);
 	pContext->LocalToString(params[2], &file);
 
+	s_MapLists.UpdateCache();
 	s_MapLists.AddOrUpdateDefault(name, file);
 
 	return 1;
diff --git a/plugins/nextmap.sp b/plugins/nextmap.sp
index b17159a3..56301872 100644
--- a/plugins/nextmap.sp
+++ b/plugins/nextmap.sp
@@ -96,19 +96,6 @@ public OnConfigsExecuted()
 	// not in mapcyclefile. So we keep it set to the last expected nextmap. - ferret
 	if (strcmp(lastMap, currentMap) == 0)
 	{
-		if (ReadMapList(g_MapList, 
-				g_MapListSerial, 
-				"mapcyclefile", 
-				MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_NO_DEFAULT)
-			== INVALID_HANDLE)
-		{
-			if (g_MapListSerial == -1)
-			{
-				LogError("FATAL: Cannot load map cycle. Nextmap not loaded.");
-				SetFailState("Mapcycle Not Found");
-			}
-		}
-		
 		FindAndSetNextMap();
 	}
 }
@@ -213,6 +200,10 @@ public Action:UserMsg_VGUIMenu(UserMsg:msg_id, Handle:bf, const players[], playe
 		
 		if (!IsMapValid(map))
 		{
+			if (g_MapPos == -1)
+			{
+				FindAndSetNextMap();
+			}
 			GetArrayString(g_MapList, g_MapPos, map, sizeof(map));
 		}
 		
@@ -244,6 +235,19 @@ public Action:Timer_ChangeMap(Handle:timer, Handle:dp)
  
 FindAndSetNextMap()
 {
+	if (ReadMapList(g_MapList, 
+			g_MapListSerial, 
+			"mapcyclefile", 
+			MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_NO_DEFAULT)
+		== INVALID_HANDLE)
+	{
+		if (g_MapListSerial == -1)
+		{
+			LogError("FATAL: Cannot load map cycle. Nextmap not loaded.");
+			SetFailState("Mapcycle Not Found");
+		}
+	}
+	
 	new mapCount = GetArraySize(g_MapList);
 	decl String:mapName[32];
 	

From f261c2e756e0aa3604e0d163c8a4bf89341a421e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 10 Dec 2007 23:32:32 +0000
Subject: [PATCH 106/263] fixed the global ock error message having too many
 punctuation marks

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401790
---
 core/systems/PluginSys.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/systems/PluginSys.cpp b/core/systems/PluginSys.cpp
index e8225662..d26cee0f 100644
--- a/core/systems/PluginSys.cpp
+++ b/core/systems/PluginSys.cpp
@@ -1125,7 +1125,7 @@ IPlugin *CPluginManager::LoadPlugin(const char *path, bool debug, PluginType typ
 	{
 		if (m_LoadingLocked)
 		{
-			UTIL_Format(error, maxlength, "There is a global plugin loading lock in effect.");
+			UTIL_Format(error, maxlength, "There is a global plugin loading lock in effect");
 		}
 		else
 		{

From 18235d90e58f9102772a6f3906b132b70a772431 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Wed, 12 Dec 2007 02:16:25 +0000
Subject: [PATCH 107/263] Added sm_beacon Fixed burn menu returning you to the
 slay menu.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401791
---
 plugins/basefuncommands.sp               |  17 ++
 plugins/basefuncommands/beacon.sp        | 255 +++++++++++++++++++++++
 plugins/basefuncommands/burn.sp          |   2 +-
 translations/basefuncommands.phrases.txt |  11 +
 4 files changed, 284 insertions(+), 1 deletion(-)
 create mode 100644 plugins/basefuncommands/beacon.sp

diff --git a/plugins/basefuncommands.sp b/plugins/basefuncommands.sp
index bfbf6139..55c49501 100644
--- a/plugins/basefuncommands.sp
+++ b/plugins/basefuncommands.sp
@@ -54,6 +54,7 @@ new g_SlapDamage[MAXPLAYERS+1];
 #include "basefuncommands/slay.sp"
 #include "basefuncommands/burn.sp"
 #include "basefuncommands/slap.sp"
+#include "basefuncommands/beacon.sp"
 
 public OnPluginStart()
 {
@@ -63,8 +64,11 @@ public OnPluginStart()
 	RegAdminCmd("sm_burn", Command_Burn, ADMFLAG_SLAY, "sm_burn <#userid|name> [time]");
 	RegAdminCmd("sm_slap", Command_Slap, ADMFLAG_SLAY, "sm_slap <#userid|name> [damage]");
 	RegAdminCmd("sm_slay", Command_Slay, ADMFLAG_SLAY, "sm_slay <#userid|name>");
+	RegAdminCmd("sm_beacon", Command_Beacon, ADMFLAG_SLAY, "sm_beacon <#userid|name>");
 	RegAdminCmd("sm_play", Command_Play, ADMFLAG_GENERIC, "sm_play <#userid|name> <filename>");
 	
+	SetupBeacon();
+	
 	/* Account for late loading */
 	new Handle:topmenu;
 	if (LibraryExists("adminmenu") && ((topmenu = GetAdminTopMenu()) != INVALID_HANDLE))
@@ -73,6 +77,11 @@ public OnPluginStart()
 	}
 }
 
+public OnMapEnd()
+{
+	KillAllBeacons();
+}
+
 public OnAdminMenuReady(Handle:topmenu)
 {
 	/* Block us from being called twice */
@@ -112,6 +121,14 @@ public OnAdminMenuReady(Handle:topmenu)
 			player_commands,
 			"sm_slap",
 			ADMFLAG_SLAY);	
+			
+		AddToTopMenu(hTopMenu,
+			"sm_beacon",
+			TopMenuObject_Item,
+			AdminMenu_Beacon,
+			player_commands,
+			"sm_beacon",
+			ADMFLAG_SLAY);			
 	}
 }
 
diff --git a/plugins/basefuncommands/beacon.sp b/plugins/basefuncommands/beacon.sp
new file mode 100644
index 00000000..0e434926
--- /dev/null
+++ b/plugins/basefuncommands/beacon.sp
@@ -0,0 +1,255 @@
+new Handle:g_BeaconTimers[MAXPLAYERS+1] = {INVALID_HANDLE, ...};
+
+new g_beamSprite;
+new g_haloSprite;
+
+SetupBeacon()
+{
+	HookEvent("player_death", Event_BeaconPlayerDeath, EventHookMode_Post);
+	HookEvent("round_end", Event_BeaconRoundEnd, EventHookMode_PostNoCopy);	
+
+	PrecacheSound("ambient/tones/elev1.wav", true);
+	//AddFileToDownloadsTable("sound/ambient/tones/elev1.wav");
+
+        g_beamSprite = PrecacheModel("materials/sprites/laser.vmt");
+	g_haloSprite = PrecacheModel("materials/sprites/halo01.vmt");	
+}
+
+CreateBeacon(client)
+{
+	g_BeaconTimers[client] = CreateTimer(2.0, Timer_Beacon, client, TIMER_REPEAT);	
+}
+
+KillBeacon(client)
+{
+	KillTimer(g_BeaconTimers[client]);
+	g_BeaconTimers[client] = INVALID_HANDLE;
+}
+
+KillAllBeacons()
+{
+	new maxclients = GetMaxClients();
+	for (new i = 1; i <= maxclients; i++)
+	{
+		if (g_BeaconTimers[i] != INVALID_HANDLE)
+		{
+			KillBeacon(i);
+		}
+	}
+}
+
+PerformBeacon(client, target)
+{
+	LogAction(client, target, "\"%L\" set a beacon on \"%L\"", client, target);
+	
+	if (g_BeaconTimers[target] == INVALID_HANDLE)
+	{
+		CreateBeacon(target);
+		LogAction(client, target, "\"%L\" set a beacon on \"%L\"", client, target);
+	}
+	else
+	{
+		KillBeacon(target);
+		LogAction(client, target, "\"%L\" removed a beacon on \"%L\"", client, target);
+	}
+}
+
+DisplayBeacon(client, r, g, b, a)
+{
+	new Float:vec[3];
+	GetClientAbsOrigin(client, vec);
+	vec[2] += 5;
+
+	TE_Start("BeamRingPoint");
+	TE_WriteVector("m_vecCenter", vec);
+	TE_WriteFloat("m_flStartRadius", 20.0);
+	TE_WriteFloat("m_flEndRadius", 400.0);
+	TE_WriteNum("m_nModelIndex", g_beamSprite);
+	TE_WriteNum("m_nHaloIndex", g_haloSprite);
+	TE_WriteNum("m_nStartFrame", 0);
+	TE_WriteNum("m_nFrameRate", 0);
+	TE_WriteFloat("m_fLife", 1.0);
+	TE_WriteFloat("m_fWidth", 5.0);
+	TE_WriteFloat("m_fEndWidth", 5.0);
+	TE_WriteFloat("m_fAmplitude", 0.0);
+	TE_WriteNum("r", r);
+	TE_WriteNum("g", g);
+	TE_WriteNum("b", b);
+	TE_WriteNum("a", a);
+	TE_WriteNum("m_nSpeed", 50);
+	TE_WriteNum("m_nFlags", 0);
+	TE_WriteNum("m_nFadeLength", 0);
+	TE_SendToAll();
+}
+
+public Action:Timer_Beacon(Handle:timer, any:client)
+{
+        if (!IsClientInGame(client) || !IsPlayerAlive(client))
+	{
+		KillBeacon(client);		
+		return Plugin_Handled;
+        }
+	
+	new team = GetClientTeam(client);
+	
+        if (team == 2)
+	{
+		DisplayBeacon(client, 255, 75, 75, 255);
+	}
+	else if (team == 3)
+	{
+		DisplayBeacon(client, 75, 75, 255, 255);
+	}
+	
+	// Create a double ring, if we are the repeating timer.
+	if (g_BeaconTimers[client] == timer)
+	{
+		CreateTimer(0.2, Timer_Beacon, client);
+
+		new Float:vec[3];
+		GetClientEyePosition(client, vec);
+		EmitAmbientSound("ambient/tones/elev1.wav", vec, client, SNDLEVEL_RAIDSIREN);	
+	}
+		
+	return Plugin_Handled;
+}
+
+public Action:Event_BeaconPlayerDeath(Handle:event,const String:name[],bool:dontBroadcast)
+{
+	new client = GetClientOfUserId(GetEventInt(event, "userid"));
+	if (g_BeaconTimers[client] != INVALID_HANDLE)
+	{
+		KillBeacon(client);
+	}
+
+	return Plugin_Continue;
+}
+
+public Action:Event_BeaconRoundEnd(Handle:event,const String:name[],bool:dontBroadcast)
+{
+	KillAllBeacons();
+	
+        return Plugin_Handled;
+}
+
+DisplayBeaconMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_Beacon);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "Beacon player", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddTargetsToMenu(menu, client, true, true);
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
+public AdminMenu_Beacon(Handle:topmenu, 
+					  TopMenuAction:action,
+					  TopMenuObject:object_id,
+					  param,
+					  String:buffer[],
+					  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		Format(buffer, maxlength, "%T", "Beacon player", param);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{
+		DisplayBeaconMenu(param);
+	}
+}
+
+public MenuHandler_Beacon(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		new userid, target;
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		userid = StringToInt(info);
+
+		if ((target = GetClientOfUserId(userid)) == 0)
+		{
+			PrintToChat(param1, "[SM] %t", "Player no longer available");
+		}
+		else if (!CanUserTarget(param1, target))
+		{
+			PrintToChat(param1, "[SM] %t", "Unable to target");
+		}
+		else
+		{
+			new String:name[32];
+			GetClientName(target, name, sizeof(name));
+			
+			PerformBeacon(param1, target);
+			ShowActivity2(param1, "[SM] ", "%t", "Toggled beacon on target", "_s", name);
+		}
+		
+		/* Re-draw the menu if they're still valid */
+		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
+		{
+			DisplayBeaconMenu(param1);
+		}
+	}
+}
+
+public Action:Command_Beacon(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_beacon <#userid|name>");
+		return Plugin_Handled;
+	}
+
+	decl String:arg[65];
+	GetCmdArg(1, arg, sizeof(arg));
+
+	decl String:target_name[MAX_TARGET_LENGTH];
+	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
+	
+	if ((target_count = ProcessTargetString(
+			arg,
+			client,
+			target_list,
+			MAXPLAYERS,
+			COMMAND_FILTER_ALIVE,
+			target_name,
+			sizeof(target_name),
+			tn_is_ml)) <= 0)
+	{
+		ReplyToTargetError(client, target_count);
+		return Plugin_Handled;
+	}
+	
+	for (new i = 0; i < target_count; i++)
+	{
+		PerformBeacon(client, target_list[i]);
+	}
+	
+	if (tn_is_ml)
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Toggled beacon on target", target_name);
+	}
+	else
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Toggled beacon on target", "_s", target_name);
+	}
+	
+	return Plugin_Handled;
+}
diff --git a/plugins/basefuncommands/burn.sp b/plugins/basefuncommands/burn.sp
index 5c969a72..8a35987e 100644
--- a/plugins/basefuncommands/burn.sp
+++ b/plugins/basefuncommands/burn.sp
@@ -75,7 +75,7 @@ public MenuHandler_Burn(Handle:menu, MenuAction:action, param1, param2)
 		/* Re-draw the menu if they're still valid */
 		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
 		{
-			DisplaySlayMenu(param1);
+			DisplayBurnMenu(param1);
 		}
 	}
 }
diff --git a/translations/basefuncommands.phrases.txt b/translations/basefuncommands.phrases.txt
index 6eb1f9f6..d71f212a 100644
--- a/translations/basefuncommands.phrases.txt
+++ b/translations/basefuncommands.phrases.txt
@@ -10,6 +10,11 @@
 	{
 		"en"			"Burn player"
 	}
+	
+	"Beacon player"
+	{
+		"en"			"Beacon player"
+	}	
 
 	"Slap player"
 	{
@@ -43,4 +48,10 @@
 		"#format"		"{1:t}"
 		"en"			"Set {1} on fire."
 	}
+	
+	"Toggled beacon on target"
+	{
+		"#format"		"{1:t}"
+		"en"			"toggled beacon on {1}."
+	}
 }

From 0e4ea825d3bf74529279d0b9ba55c20ac0cd094a Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Wed, 12 Dec 2007 02:23:00 +0000
Subject: [PATCH 108/263] Removed duplicated line in beacon.sp, whoops

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401792
---
 plugins/basefuncommands/beacon.sp | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/plugins/basefuncommands/beacon.sp b/plugins/basefuncommands/beacon.sp
index 0e434926..63112378 100644
--- a/plugins/basefuncommands/beacon.sp
+++ b/plugins/basefuncommands/beacon.sp
@@ -9,7 +9,6 @@ SetupBeacon()
 	HookEvent("round_end", Event_BeaconRoundEnd, EventHookMode_PostNoCopy);	
 
 	PrecacheSound("ambient/tones/elev1.wav", true);
-	//AddFileToDownloadsTable("sound/ambient/tones/elev1.wav");
 
         g_beamSprite = PrecacheModel("materials/sprites/laser.vmt");
 	g_haloSprite = PrecacheModel("materials/sprites/halo01.vmt");	
@@ -40,8 +39,6 @@ KillAllBeacons()
 
 PerformBeacon(client, target)
 {
-	LogAction(client, target, "\"%L\" set a beacon on \"%L\"", client, target);
-	
 	if (g_BeaconTimers[target] == INVALID_HANDLE)
 	{
 		CreateBeacon(target);

From b63963ef86ad1c97b70edf80ae808d0df5c234f4 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Wed, 12 Dec 2007 02:24:57 +0000
Subject: [PATCH 109/263] Removed player_death event from beacon.sp, wasn't
 needed, lol

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401793
---
 plugins/basefuncommands/beacon.sp | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/plugins/basefuncommands/beacon.sp b/plugins/basefuncommands/beacon.sp
index 63112378..2c89807c 100644
--- a/plugins/basefuncommands/beacon.sp
+++ b/plugins/basefuncommands/beacon.sp
@@ -5,7 +5,6 @@ new g_haloSprite;
 
 SetupBeacon()
 {
-	HookEvent("player_death", Event_BeaconPlayerDeath, EventHookMode_Post);
 	HookEvent("round_end", Event_BeaconRoundEnd, EventHookMode_PostNoCopy);	
 
 	PrecacheSound("ambient/tones/elev1.wav", true);
@@ -111,17 +110,6 @@ public Action:Timer_Beacon(Handle:timer, any:client)
 	return Plugin_Handled;
 }
 
-public Action:Event_BeaconPlayerDeath(Handle:event,const String:name[],bool:dontBroadcast)
-{
-	new client = GetClientOfUserId(GetEventInt(event, "userid"));
-	if (g_BeaconTimers[client] != INVALID_HANDLE)
-	{
-		KillBeacon(client);
-	}
-
-	return Plugin_Continue;
-}
-
 public Action:Event_BeaconRoundEnd(Handle:event,const String:name[],bool:dontBroadcast)
 {
 	KillAllBeacons();

From 43150b07c98fb9a151db0b1fd67f236e24fdbb7a Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 12 Dec 2007 22:45:23 +0000
Subject: [PATCH 110/263] fixed for amb1279 from ferret

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401794
---
 plugins/basefuncommands.sp        |  7 ++-
 plugins/basefuncommands/beacon.sp | 81 +++++++++++++++----------------
 2 files changed, 43 insertions(+), 45 deletions(-)

diff --git a/plugins/basefuncommands.sp b/plugins/basefuncommands.sp
index 55c49501..11694dd1 100644
--- a/plugins/basefuncommands.sp
+++ b/plugins/basefuncommands.sp
@@ -67,8 +67,6 @@ public OnPluginStart()
 	RegAdminCmd("sm_beacon", Command_Beacon, ADMFLAG_SLAY, "sm_beacon <#userid|name>");
 	RegAdminCmd("sm_play", Command_Play, ADMFLAG_GENERIC, "sm_play <#userid|name> <filename>");
 	
-	SetupBeacon();
-	
 	/* Account for late loading */
 	new Handle:topmenu;
 	if (LibraryExists("adminmenu") && ((topmenu = GetAdminTopMenu()) != INVALID_HANDLE))
@@ -77,6 +75,11 @@ public OnPluginStart()
 	}
 }
 
+public OnMapStart()
+{
+	SetupBeacon();	
+}
+
 public OnMapEnd()
 {
 	KillAllBeacons();
diff --git a/plugins/basefuncommands/beacon.sp b/plugins/basefuncommands/beacon.sp
index 2c89807c..eb864ccd 100644
--- a/plugins/basefuncommands/beacon.sp
+++ b/plugins/basefuncommands/beacon.sp
@@ -1,16 +1,26 @@
 new Handle:g_BeaconTimers[MAXPLAYERS+1] = {INVALID_HANDLE, ...};
 
-new g_beamSprite;
-new g_haloSprite;
+new g_BeaconRoundEndHooked = false;
+
+new g_BeamSprite;
+new g_HaloSprite;
+
+new redColor[4] = {255, 75, 75, 255};
+new greenColor[4] = {75, 255, 75, 255};
+new blueColor[4] = {75, 75, 255, 255};
 
 SetupBeacon()
 {
-	HookEvent("round_end", Event_BeaconRoundEnd, EventHookMode_PostNoCopy);	
+	if (!g_BeaconRoundEndHooked)
+	{
+		HookEvent("round_end", Event_BeaconRoundEnd, EventHookMode_PostNoCopy);	
+		g_BeaconRoundEndHooked = true;
+	}
 
 	PrecacheSound("ambient/tones/elev1.wav", true);
 
-        g_beamSprite = PrecacheModel("materials/sprites/laser.vmt");
-	g_haloSprite = PrecacheModel("materials/sprites/halo01.vmt");	
+	g_BeamSprite = PrecacheModel("materials/sprites/laser.vmt");
+	g_HaloSprite = PrecacheModel("materials/sprites/halo01.vmt");	
 }
 
 CreateBeacon(client)
@@ -50,59 +60,44 @@ PerformBeacon(client, target)
 	}
 }
 
-DisplayBeacon(client, r, g, b, a)
+public Action:Timer_Beacon(Handle:timer, any:client)
 {
+	if (!IsClientInGame(client) || !IsPlayerAlive(client))
+	{
+		if (g_BeaconTimers[client] == timer)
+		{
+			KillBeacon(client);		
+		}
+		
+		return Plugin_Handled;
+	}
+	
+	new team = GetClientTeam(client);
+
 	new Float:vec[3];
 	GetClientAbsOrigin(client, vec);
 	vec[2] += 5;
-
-	TE_Start("BeamRingPoint");
-	TE_WriteVector("m_vecCenter", vec);
-	TE_WriteFloat("m_flStartRadius", 20.0);
-	TE_WriteFloat("m_flEndRadius", 400.0);
-	TE_WriteNum("m_nModelIndex", g_beamSprite);
-	TE_WriteNum("m_nHaloIndex", g_haloSprite);
-	TE_WriteNum("m_nStartFrame", 0);
-	TE_WriteNum("m_nFrameRate", 0);
-	TE_WriteFloat("m_fLife", 1.0);
-	TE_WriteFloat("m_fWidth", 5.0);
-	TE_WriteFloat("m_fEndWidth", 5.0);
-	TE_WriteFloat("m_fAmplitude", 0.0);
-	TE_WriteNum("r", r);
-	TE_WriteNum("g", g);
-	TE_WriteNum("b", b);
-	TE_WriteNum("a", a);
-	TE_WriteNum("m_nSpeed", 50);
-	TE_WriteNum("m_nFlags", 0);
-	TE_WriteNum("m_nFadeLength", 0);
-	TE_SendToAll();
-}
-
-public Action:Timer_Beacon(Handle:timer, any:client)
-{
-        if (!IsClientInGame(client) || !IsPlayerAlive(client))
-	{
-		KillBeacon(client);		
-		return Plugin_Handled;
-        }
 	
-	new team = GetClientTeam(client);
-	
-        if (team == 2)
+	if (team == 2)
 	{
-		DisplayBeacon(client, 255, 75, 75, 255);
+		TE_SetupBeamRingPoint(vec, 20.0, 400.0, g_BeamSprite, g_HaloSprite, 0, 0, 1.0, 3.0, 0.0, redColor, 50, 0);
 	}
 	else if (team == 3)
 	{
-		DisplayBeacon(client, 75, 75, 255, 255);
+		TE_SetupBeamRingPoint(vec, 20.0, 400.0, g_BeamSprite, g_HaloSprite, 0, 0, 1.0, 3.0, 0.0, blueColor, 50, 0);
 	}
+	else
+	{
+		TE_SetupBeamRingPoint(vec, 20.0, 400.0, g_BeamSprite, g_HaloSprite, 0, 0, 1.0, 3.0, 0.0, greenColor, 50, 0);
+	}
+	
+	TE_SendToAll();
 	
 	// Create a double ring, if we are the repeating timer.
 	if (g_BeaconTimers[client] == timer)
 	{
 		CreateTimer(0.2, Timer_Beacon, client);
 
-		new Float:vec[3];
 		GetClientEyePosition(client, vec);
 		EmitAmbientSound("ambient/tones/elev1.wav", vec, client, SNDLEVEL_RAIDSIREN);	
 	}
@@ -114,7 +109,7 @@ public Action:Event_BeaconRoundEnd(Handle:event,const String:name[],bool:dontBro
 {
 	KillAllBeacons();
 	
-        return Plugin_Handled;
+	return Plugin_Handled;
 }
 
 DisplayBeaconMenu(client)

From 46c98c64fafafafb7d6ef619d950dcfe8279fd0e Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Thu, 13 Dec 2007 00:21:07 +0000
Subject: [PATCH 111/263] Fixed file headers on all base plugin includes.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401795
---
 plugins/basebans/ban.sp              | 33 +++++++++++++++++++++++++++
 plugins/basecomm/gag.sp              | 33 +++++++++++++++++++++++++++
 plugins/basecommands/cancelvote.sp   | 34 +++++++++++++++++++++++++++-
 plugins/basecommands/execcfg.sp      | 33 +++++++++++++++++++++++++++
 plugins/basecommands/kick.sp         | 34 +++++++++++++++++++++++++++-
 plugins/basecommands/map.sp          | 34 +++++++++++++++++++++++++++-
 plugins/basecommands/reloadadmins.sp | 34 +++++++++++++++++++++++++++-
 plugins/basecommands/who.sp          | 34 +++++++++++++++++++++++++++-
 plugins/basefuncommands/beacon.sp    | 33 +++++++++++++++++++++++++++
 plugins/basefuncommands/burn.sp      | 33 +++++++++++++++++++++++++++
 plugins/basefuncommands/slap.sp      | 33 +++++++++++++++++++++++++++
 plugins/basefuncommands/slay.sp      | 32 ++++++++++++++++++++++++++
 plugins/basefunvotes/votealltalk.sp  | 33 +++++++++++++++++++++++++++
 plugins/basefunvotes/voteburn.sp     | 33 +++++++++++++++++++++++++++
 plugins/basefunvotes/voteff.sp       | 33 +++++++++++++++++++++++++++
 plugins/basefunvotes/votegravity.sp  | 33 +++++++++++++++++++++++++++
 plugins/basefunvotes/voteslay.sp     | 33 +++++++++++++++++++++++++++
 plugins/basevotes/voteban.sp         | 32 ++++++++++++++++++++++++++
 plugins/basevotes/votekick.sp        | 33 +++++++++++++++++++++++++++
 plugins/basevotes/votemap.sp         | 33 +++++++++++++++++++++++++++
 20 files changed, 658 insertions(+), 5 deletions(-)

diff --git a/plugins/basebans/ban.sp b/plugins/basebans/ban.sp
index 5b3bb0e5..3ce206be 100644
--- a/plugins/basebans/ban.sp
+++ b/plugins/basebans/ban.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basecommands
+ * Functionality related to banning.
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+ 
 PrepareBan(client, target, time, const String:reason[])
 {
 	decl String:authid[64], String:name[32];
diff --git a/plugins/basecomm/gag.sp b/plugins/basecomm/gag.sp
index e8bd2925..fc14b32b 100644
--- a/plugins/basecomm/gag.sp
+++ b/plugins/basecomm/gag.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basecomm
+ * Part of Basecomm plugin, menu and other functionality.
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+
 enum CommType
 {
 	CommType_Mute,
diff --git a/plugins/basecommands/cancelvote.sp b/plugins/basecommands/cancelvote.sp
index 4946645c..1fb36689 100644
--- a/plugins/basecommands/cancelvote.sp
+++ b/plugins/basecommands/cancelvote.sp
@@ -1,4 +1,36 @@
-
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basecommands Plugin
+ * Provides cancelvote functionality.
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+ 
 PerformCancelVote(client)
 {
 	if (!IsVoteInProgress())
diff --git a/plugins/basecommands/execcfg.sp b/plugins/basecommands/execcfg.sp
index 916d1d9f..b4cebf6b 100644
--- a/plugins/basecommands/execcfg.sp
+++ b/plugins/basecommands/execcfg.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basecommands Plugin
+ * Provides exec cfg functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+
 new Handle:g_ConfigMenu = INVALID_HANDLE;
 
 PerformExec(client, String:path[])
diff --git a/plugins/basecommands/kick.sp b/plugins/basecommands/kick.sp
index 935100a2..13f580a9 100644
--- a/plugins/basecommands/kick.sp
+++ b/plugins/basecommands/kick.sp
@@ -1,4 +1,36 @@
-
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basecommands Plugin
+ * Provides kick functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+ 
 PerformKick(client, target, const String:reason[])
 {
 	LogAction(client, target, "\"%L\" kicked \"%L\" (reason \"%s\")", client, target, reason);
diff --git a/plugins/basecommands/map.sp b/plugins/basecommands/map.sp
index a6c313c6..cea38b31 100644
--- a/plugins/basecommands/map.sp
+++ b/plugins/basecommands/map.sp
@@ -1,4 +1,36 @@
-
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basecommands Plugin
+ * Provides map functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+ 
 public MenuHandler_ChangeMap(Handle:menu, MenuAction:action, param1, param2)
 {
 	if (action == MenuAction_Cancel)
diff --git a/plugins/basecommands/reloadadmins.sp b/plugins/basecommands/reloadadmins.sp
index d52197b0..82ce4d2e 100644
--- a/plugins/basecommands/reloadadmins.sp
+++ b/plugins/basecommands/reloadadmins.sp
@@ -1,4 +1,36 @@
-
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basecommands Plugin
+ * Provides reloadadmins functionality.
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+ 
 PerformReloadAdmins(client)
 {
 	/* Dump it all! */
diff --git a/plugins/basecommands/who.sp b/plugins/basecommands/who.sp
index 1419bd53..699528e1 100644
--- a/plugins/basecommands/who.sp
+++ b/plugins/basecommands/who.sp
@@ -1,4 +1,36 @@
-
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basecommands Plugin
+ * Provides sm_who functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+ 
 PerformWho(client, target, ReplySource:reply, bool:is_admin)
 {
 	decl String:name[MAX_NAME_LENGTH];
diff --git a/plugins/basefuncommands/beacon.sp b/plugins/basefuncommands/beacon.sp
index eb864ccd..fdfc4c08 100644
--- a/plugins/basefuncommands/beacon.sp
+++ b/plugins/basefuncommands/beacon.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefuncommands Plugin
+ * Provides beacon functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
 new Handle:g_BeaconTimers[MAXPLAYERS+1] = {INVALID_HANDLE, ...};
 
 new g_BeaconRoundEndHooked = false;
diff --git a/plugins/basefuncommands/burn.sp b/plugins/basefuncommands/burn.sp
index 8a35987e..86ec5abf 100644
--- a/plugins/basefuncommands/burn.sp
+++ b/plugins/basefuncommands/burn.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefuncommands Plugin
+ * Provides burn functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+
 PerformBurn(client, target, Float:seconds)
 {
 	LogAction(client, target, "\"%L\" ignited \"%L\" (seconds \"%f\")", client, target, seconds);
diff --git a/plugins/basefuncommands/slap.sp b/plugins/basefuncommands/slap.sp
index 1267381b..f5216835 100644
--- a/plugins/basefuncommands/slap.sp
+++ b/plugins/basefuncommands/slap.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefuncommands Plugin
+ * Provides slap functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+
 PerformSlap(client, target, damage)
 {
 	LogAction(client, target, "\"%L\" slapped \"%L\" (damage \"%d\")", client, target, damage);
diff --git a/plugins/basefuncommands/slay.sp b/plugins/basefuncommands/slay.sp
index e1b0b0bd..3eb686bd 100644
--- a/plugins/basefuncommands/slay.sp
+++ b/plugins/basefuncommands/slay.sp
@@ -1,3 +1,35 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefuncommands Plugin
+ * Provides slay functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
 
 PerformSlay(client, target)
 {
diff --git a/plugins/basefunvotes/votealltalk.sp b/plugins/basefunvotes/votealltalk.sp
index a66b0a78..01731e71 100644
--- a/plugins/basefunvotes/votealltalk.sp
+++ b/plugins/basefunvotes/votealltalk.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefunvotes Plugin
+ * Provides votealltalk functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+
 DisplayVoteAllTalkMenu(client)
 {
 	if (IsVoteInProgress())
diff --git a/plugins/basefunvotes/voteburn.sp b/plugins/basefunvotes/voteburn.sp
index 4ba326a9..c3ea24bd 100644
--- a/plugins/basefunvotes/voteburn.sp
+++ b/plugins/basefunvotes/voteburn.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefunvotes Plugin
+ * Provides voteburn functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+
 DisplayVoteBurnMenu(client, target, String:name[])
 {
 	if (!IsPlayerAlive(target))
diff --git a/plugins/basefunvotes/voteff.sp b/plugins/basefunvotes/voteff.sp
index 8effadd9..399a3ea4 100644
--- a/plugins/basefunvotes/voteff.sp
+++ b/plugins/basefunvotes/voteff.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefunvotes Plugin
+ * Provides vote ff functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+
 DisplayVoteFFMenu(client)
 {
 	if (IsVoteInProgress())
diff --git a/plugins/basefunvotes/votegravity.sp b/plugins/basefunvotes/votegravity.sp
index b5a37c7d..74a30ffd 100644
--- a/plugins/basefunvotes/votegravity.sp
+++ b/plugins/basefunvotes/votegravity.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefunvotes Plugin
+ * Provides votegravity functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+
 
 DisplayVoteGravityMenu(client,count,String:items[5][])
 {
diff --git a/plugins/basefunvotes/voteslay.sp b/plugins/basefunvotes/voteslay.sp
index fd8f80c1..db705fa7 100644
--- a/plugins/basefunvotes/voteslay.sp
+++ b/plugins/basefunvotes/voteslay.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefunvotes Plugin
+ * Provides voteslay functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+
 
 DisplayVoteSlayMenu(client, target, String:name[])
 {
diff --git a/plugins/basevotes/voteban.sp b/plugins/basevotes/voteban.sp
index 30918723..fa220f71 100644
--- a/plugins/basevotes/voteban.sp
+++ b/plugins/basevotes/voteban.sp
@@ -1,3 +1,35 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basevotes Plugin
+ * Provides ban functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
 
 DisplayVoteBanMenu(client, target)
 {
diff --git a/plugins/basevotes/votekick.sp b/plugins/basevotes/votekick.sp
index 83f6594f..ca5122ca 100644
--- a/plugins/basevotes/votekick.sp
+++ b/plugins/basevotes/votekick.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basevotes Plugin
+ * Provides kick functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+
 
 DisplayVoteKickMenu(client, target)
 {
diff --git a/plugins/basevotes/votemap.sp b/plugins/basevotes/votemap.sp
index 50460d2d..843b78d1 100644
--- a/plugins/basevotes/votemap.sp
+++ b/plugins/basevotes/votemap.sp
@@ -1,3 +1,36 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basevotes Plugin
+ * Provides map functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ */
+
 new Handle:g_MapList = INVALID_HANDLE;
 new g_mapCount;
 

From 99ebeb164523bc62b8ef221927a44a1d54fae71d Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 14 Dec 2007 05:09:29 +0000
Subject: [PATCH 112/263] added amb1276 - local socket support

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401796
---
 extensions/mysql/mysql/MyDriver.cpp | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/extensions/mysql/mysql/MyDriver.cpp b/extensions/mysql/mysql/MyDriver.cpp
index 49ecd91c..a39e12ec 100644
--- a/extensions/mysql/mysql/MyDriver.cpp
+++ b/extensions/mysql/mysql/MyDriver.cpp
@@ -94,6 +94,7 @@ const char *MyDriver::GetProductName()
 MYSQL *Connect(const DatabaseInfo *info, char *error, size_t maxlength)
 {
 	MYSQL *mysql = mysql_init(NULL);
+	const char *host = NULL, *socket = NULL;
 
 	if (info->maxTimeout > 0)
 	{
@@ -106,13 +107,24 @@ MYSQL *Connect(const DatabaseInfo *info, char *error, size_t maxlength)
 	my_bool my_true = true;
 	mysql_options(mysql, MYSQL_OPT_RECONNECT, (const char *)&my_true);
 
+	if (info->host[0] == '/')
+	{
+		host = "localhost";
+		socket = info->host;
+	}
+	else
+	{
+		host = info->host;
+		socket = NULL;
+	}
+
 	if (!mysql_real_connect(mysql,
-		info->host,
+		host,
 		info->user, 
 		info->pass,
 		info->database,
 		info->port,
-		NULL,
+		socket,
 		M_CLIENT_MULTI_RESULTS))
 	{
 		/* :TODO: expose UTIL_Format from smutil! */

From af2142d70b1fa70d5a987aa8cbeb84d61e424e95 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 14 Dec 2007 05:54:36 +0000
Subject: [PATCH 113/263] fixed amb1282 - elev1.wav is cstrike only

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401797
---
 plugins/basefuncommands.sp        |  9 +++++++++
 plugins/basefuncommands/beacon.sp | 11 +++++++++--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/plugins/basefuncommands.sp b/plugins/basefuncommands.sp
index 11694dd1..3e10caf1 100644
--- a/plugins/basefuncommands.sp
+++ b/plugins/basefuncommands.sp
@@ -50,6 +50,7 @@ public Plugin:myinfo =
 new Handle:hTopMenu = INVALID_HANDLE;
 
 new g_SlapDamage[MAXPLAYERS+1];
+new bool:g_cstrike = false;
 
 #include "basefuncommands/slay.sp"
 #include "basefuncommands/burn.sp"
@@ -73,6 +74,14 @@ public OnPluginStart()
 	{
 		OnAdminMenuReady(topmenu);
 	}
+	
+	decl String:folder[64];
+	GetGameFolderName(folder, sizeof(folder));
+	
+	if (strcmp(folder, "cstrike") == 0)
+	{
+		g_cstrike = true;
+	}
 }
 
 public OnMapStart()
diff --git a/plugins/basefuncommands/beacon.sp b/plugins/basefuncommands/beacon.sp
index fdfc4c08..3eb8c7df 100644
--- a/plugins/basefuncommands/beacon.sp
+++ b/plugins/basefuncommands/beacon.sp
@@ -50,7 +50,10 @@ SetupBeacon()
 		g_BeaconRoundEndHooked = true;
 	}
 
-	PrecacheSound("ambient/tones/elev1.wav", true);
+	if (g_cstrike)
+	{
+		PrecacheSound("ambient/tones/elev1.wav", true);
+	}
 
 	g_BeamSprite = PrecacheModel("materials/sprites/laser.vmt");
 	g_HaloSprite = PrecacheModel("materials/sprites/halo01.vmt");	
@@ -132,7 +135,11 @@ public Action:Timer_Beacon(Handle:timer, any:client)
 		CreateTimer(0.2, Timer_Beacon, client);
 
 		GetClientEyePosition(client, vec);
-		EmitAmbientSound("ambient/tones/elev1.wav", vec, client, SNDLEVEL_RAIDSIREN);	
+		
+		if (g_cstrike)
+		{
+			EmitAmbientSound("ambient/tones/elev1.wav", vec, client, SNDLEVEL_RAIDSIREN);	
+		}
 	}
 		
 	return Plugin_Handled;

From 8ffeb9f6271b842946c5a79b36ec10c66bc60f60 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 14 Dec 2007 06:19:42 +0000
Subject: [PATCH 114/263] fixed spacing and line endings

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401798
---
 plugins/include/console.inc | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/plugins/include/console.inc b/plugins/include/console.inc
index 919ab59a..f3934ee2 100644
--- a/plugins/include/console.inc
+++ b/plugins/include/console.inc
@@ -704,16 +704,17 @@ stock bool:IsValidConVarChar(c)
 /**
  * Returns the bitstring of flags of a command.
  *
- * @param name				Name of the command.
- * @return				A bitstring containing the FCVAR_* flags that are enabled or INVALID_FCVAR_FLAGS if command not found.
+ * @param name		Name of the command.
+ * @return			A bitstring containing the FCVAR_* flags that are enabled 
+ *					or INVALID_FCVAR_FLAGS if command not found.
  */
 native GetCommandFlags(const String:name[]);
 
 /**
  * Sets the bitstring of flags of a command.
  *
- * @param name			Name of the command.
- * @param flags			A bitstring containing the FCVAR_* flags to enable.
+ * @param name		Name of the command.
+ * @param flags		A bitstring containing the FCVAR_* flags to enable.
  * @return			True on success, otherwise false.
  */
 native bool:SetCommandFlags(const String:name[], flags);

From d87e00a82dd9a0177a0058aeea675babdefe767d Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 14 Dec 2007 06:20:07 +0000
Subject: [PATCH 115/263] added amb1281 - added nextmap command to server
 console

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401799
---
 plugins/nextmap.sp | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/plugins/nextmap.sp b/plugins/nextmap.sp
index 56301872..16150086 100644
--- a/plugins/nextmap.sp
+++ b/plugins/nextmap.sp
@@ -75,6 +75,11 @@ public OnPluginStart()
 	
 	RegConsoleCmd("say", Command_Say);
 	RegConsoleCmd("say_team", Command_Say);
+	
+	if (GetCommandFlags("nextmap") == INVALID_FCVAR_FLAGS)
+	{
+		RegServerCmd("nextmap", Command_Nextmap);
+	}
 
 	RegAdminCmd("sm_setnextmap", Command_SetNextmap, ADMFLAG_CHANGEMAP, "sm_setnextmap <map>");
 	RegConsoleCmd("listmaps", Command_List);
@@ -128,7 +133,7 @@ public Action:Command_Say(client, args)
 		decl String:map[32];
 		GetConVarString(g_Cvar_Nextmap, map, sizeof(map));
 		
-		PrintToChatAll("%t", "Next Map", map);
+		PrintToChat(client, "%t", "Next Map", map);
 	}
 	
 	return Plugin_Continue;	
@@ -217,6 +222,17 @@ public Action:UserMsg_VGUIMenu(UserMsg:msg_id, Handle:bf, const players[], playe
 	
 	return Plugin_Handled;
 }
+
+public Action:Command_Nextmap(args)
+{
+	decl String:map[64];
+	
+	GetConVarString(g_Cvar_Nextmap, map, sizeof(map));
+	
+	ReplyToCommand(0, "%t", "Next Map", map);
+	
+	return Plugin_Handled;
+}
  
 public Action:Timer_ChangeMap(Handle:timer, Handle:dp)
 {

From c9a9826989cf5310cd1b9bea405584609ab3b1de Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 14 Dec 2007 06:42:40 +0000
Subject: [PATCH 116/263] added amb968 - setting for suppressing potential chat
 triggers from admins

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401800
---
 configs/core.cfg      |  9 +++++++++
 core/ChatTriggers.cpp | 21 +++++++++++++++++++--
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/configs/core.cfg b/configs/core.cfg
index c0d83e91..bafb12b9 100644
--- a/configs/core.cfg
+++ b/configs/core.cfg
@@ -47,6 +47,15 @@
 	 */
 	"SilentChatTrigger"		"/"
 	
+	/**
+	 * If a say command is a silent chat trigger, and is used by an admin, 
+	 * but it does not evaluate to an actual command, it will be displayed 
+	 * publicly.  This setting allows you to suppress accidental typings.
+	 *
+	 * The default value is "no".  A value of "yes" will supress.
+	 */
+	"SilentFailSuppress"	"no"
+	
 	/**
 	 * Password setinfo key that clients must set.  You must change this in order for
 	 * passwords to work, for security reasons.
diff --git a/core/ChatTriggers.cpp b/core/ChatTriggers.cpp
index e3841ee1..e7526b94 100644
--- a/core/ChatTriggers.cpp
+++ b/core/ChatTriggers.cpp
@@ -33,7 +33,7 @@
 #include "ChatTriggers.h"
 #include "sm_stringutil.h"
 #include "ConCmdManager.h"
-#include <IPlayerHelpers.h>
+#include "PlayerManager.h"
 
 /* :HACKHACK: We can't SH_DECL here because ConCmdManager.cpp does.
  * While the OB build only runs on MM:S 1.6.0+ (SH 5+), the older one 
@@ -54,6 +54,7 @@ extern bool __SourceHook_FHAddConCommandDispatch(void *, bool, class fastdelegat
 #endif //ORANGEBOX_BUILD
 
 ChatTriggers g_ChatTriggers;
+bool g_bSupressSilentFails = false;
 
 ChatTriggers::ChatTriggers() : m_pSayCmd(NULL), m_bWillProcessInPost(false), 
 	m_bTriggerWasSilent(false), m_ReplyTo(SM_REPLY_CONSOLE)
@@ -85,12 +86,19 @@ ConfigResult ChatTriggers::OnSourceModConfigChanged(const char *key,
 		m_PubTrigger = sm_strdup(value);
 		m_PubTriggerSize = strlen(m_PubTrigger);
 		return ConfigResult_Accept;
-	} else if (strcmp(key, "SilentChatTrigger") == 0) {
+	}
+	else if (strcmp(key, "SilentChatTrigger") == 0)
+	{
 		delete [] m_PrivTrigger;
 		m_PrivTrigger = sm_strdup(value);
 		m_PrivTriggerSize = strlen(m_PrivTrigger);
 		return ConfigResult_Accept;
 	}
+	else if (strcmp(key, "SilentFailSuppress") == 0)
+	{
+		g_bSupressSilentFails = strcmp(value, "yes") == 0;
+		return ConfigResult_Accept;
+	}
 
 	return ConfigResult_Ignore;
 }
@@ -205,6 +213,15 @@ void ChatTriggers::OnSayCommand_Pre()
 	 */
 	if (!PreProcessTrigger(engine->PEntityOfEntIndex(client), args, is_quoted))
 	{
+		CPlayer *pPlayer;
+		if (is_silent 
+			&& g_bSupressSilentFails 
+			&& client != 0
+			&& (pPlayer = g_Players.GetPlayerByIndex(client)) != NULL
+			&& pPlayer->GetAdminId() != INVALID_ADMIN_ID)
+		{
+			RETURN_META(MRES_SUPERCEDE);
+		}
 		RETURN_META(MRES_IGNORED);
 	}
 

From cf023a0b7d68aae8d13b04e121f6cec582ce6ec7 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 14 Dec 2007 23:27:34 +0000
Subject: [PATCH 117/263] added amb1204 - concommandbase iteration

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401801
---
 core/smn_console.cpp        | 106 +++++++++++++++++++++++++++++++++++-
 plugins/include/console.inc |  36 ++++++++++++
 2 files changed, 139 insertions(+), 3 deletions(-)

diff --git a/core/smn_console.cpp b/core/smn_console.cpp
index 418a0915..fe4ace2b 100644
--- a/core/smn_console.cpp
+++ b/core/smn_console.cpp
@@ -53,6 +53,7 @@ enum ConVarBounds
 };
 
 HandleType_t hCmdIterType = 0;
+HandleType_t htConCmdIter = 0;
 
 struct GlobCmdIter
 {
@@ -60,6 +61,11 @@ struct GlobCmdIter
 	List<ConCmdInfo *>::iterator iter;
 };
 
+struct ConCmdIter
+{
+	const ConCommandBase *pLast;
+};
+
 class ConsoleHelpers : 
 	public SMGlobalClass,
 	public IHandleTypeDispatch
@@ -68,15 +74,41 @@ public:
 	virtual void OnSourceModAllInitialized()
 	{
 		HandleAccess access;
+
 		g_HandleSys.InitAccessDefaults(NULL, &access);
+
+		htConCmdIter = g_HandleSys.CreateType("ConCmdIter", this, 0, NULL, &access, g_pCoreIdent, NULL);
+
 		access.access[HandleAccess_Clone] = HANDLE_RESTRICT_OWNER | HANDLE_RESTRICT_IDENTITY;
 
-		hCmdIterType = g_HandleSys.CreateType(NULL, this, 0, NULL, &access, g_pCoreIdent, NULL);
+		hCmdIterType = g_HandleSys.CreateType("CmdIter", this, 0, NULL, &access, g_pCoreIdent, NULL);
 	}
 	virtual void OnHandleDestroy(HandleType_t type, void *object)
 	{
-		GlobCmdIter *iter = (GlobCmdIter *)object;
-		delete iter;
+		if (type == hCmdIterType)
+		{
+			GlobCmdIter *iter = (GlobCmdIter *)object;
+			delete iter;
+		}
+		else if (type == htConCmdIter)
+		{
+			ConCmdIter *iter = (ConCmdIter * )object;
+			delete iter;
+		}
+	}
+	virtual bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+	{
+		if (type == htConCmdIter)
+		{
+			*pSize = sizeof(ConCmdIter);
+			return true;
+		}
+		else if (type == hCmdIterType)
+		{
+			*pSize = sizeof(GlobCmdIter);
+			return true;
+		}
+		return false;
 	}
 } s_ConsoleHelpers;
 
@@ -1098,6 +1130,72 @@ static cell_t GetCommandFlags(IPluginContext *pContext, const cell_t *params)
 	return (s_CommandFlagsHelper.GetFlags(name, &flags)) ? flags : -1;
 }
 
+static cell_t FindFirstConCommand(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl;
+	ConCmdIter *pIter;
+	cell_t *pIsCmd, *pFlags;
+	const ConCommandBase *pConCmd;
+
+	pContext->LocalToPhysAddr(params[3], &pIsCmd);
+	pContext->LocalToPhysAddr(params[4], &pFlags);
+
+	pConCmd = icvar->GetCommands();
+
+	if (pConCmd == NULL)
+	{
+		return BAD_HANDLE;
+	}
+
+	pContext->StringToLocalUTF8(params[1], params[2], pConCmd->GetName(), NULL);
+	*pIsCmd = pConCmd->IsCommand() ? 1 : 0;
+	*pFlags = pConCmd->GetFlags();
+
+	pIter = new ConCmdIter;
+	pIter->pLast = pConCmd;
+
+	if ((hndl = g_HandleSys.CreateHandle(htConCmdIter, pIter, pContext->GetIdentity(), g_pCoreIdent, NULL))
+		== BAD_HANDLE)
+	{
+		delete pIter;
+		return BAD_HANDLE;
+	}
+
+	return hndl;
+}
+
+static cell_t FindNextConCommand(IPluginContext *pContext, const cell_t *params)
+{
+	HandleError err;
+	ConCmdIter *pIter;
+	cell_t *pIsCmd, *pFlags;
+	HandleSecurity sec(pContext->GetIdentity(), g_pCoreIdent);
+
+	if ((err = g_HandleSys.ReadHandle(params[1], htConCmdIter, &sec, (void **)&pIter)) != HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[1], err);
+	}
+
+	if (pIter->pLast == NULL)
+	{
+		return 0;
+	}
+
+	if ((pIter->pLast = pIter->pLast->GetNext()) == NULL)
+	{
+		return 0;
+	}
+
+	pContext->LocalToPhysAddr(params[4], &pIsCmd);
+	pContext->LocalToPhysAddr(params[5], &pFlags);
+
+	pContext->StringToLocalUTF8(params[2], params[3], pIter->pLast->GetName(), NULL);
+	*pIsCmd = pIter->pLast->IsCommand() ? 1 : 0;
+	*pFlags = pIter->pLast->GetFlags();
+
+	return 1;
+}
+
 REGISTER_NATIVES(consoleNatives)
 {
 	{"CreateConVar",		sm_CreateConVar},
@@ -1142,5 +1240,7 @@ REGISTER_NATIVES(consoleNatives)
 	{"IsChatTrigger",		IsChatTrigger},
 	{"SetCommandFlags",		SetCommandFlags},
 	{"GetCommandFlags",		GetCommandFlags},
+	{"FindFirstConCommand",	FindFirstConCommand},
+	{"FindNextConCommand",	FindNextConCommand},
 	{NULL,					NULL}
 };
diff --git a/plugins/include/console.inc b/plugins/include/console.inc
index f3934ee2..6869bdbd 100644
--- a/plugins/include/console.inc
+++ b/plugins/include/console.inc
@@ -718,3 +718,39 @@ native GetCommandFlags(const String:name[]);
  * @return			True on success, otherwise false.
  */
 native bool:SetCommandFlags(const String:name[], flags);
+
+/**
+ * Starts a ConCommandBase search, traversing the list of ConVars and 
+ * ConCommands.  If a Handle is returned, the next entry must be read 
+ * via FindNextConCommand().  The order of the list is undefined.
+ *
+ * @param buffer		Buffer to store entry name.
+ * @param max_size		Maximum size of the buffer.
+ * @param isCommand		Variable to store whether the entry is a command. 
+ *						If it is not a command, it is a ConVar.
+ * @param flags			Variable to store entry flags.
+ * @return				On success, a ConCmdIter Handle is returned, which 
+ *						can be read via FindNextConCommand(), and must be 
+ *						closed via CloseHandle().  Additionally, the output 
+ *						parameters will be filled with information of the 
+ *						first ConCommandBase entry.
+ *						On failure, INVALID_HANDLE is returned, and the 
+ *						contents of outputs is undefined.
+ */
+native Handle:FindFirstConCommand(String:buffer[], max_size, &bool:isCommand, &flags=0);
+
+/**
+ * Reads the next entry in a ConCommandBase iterator.
+ *
+ * @param search		ConCmdIter Handle to search.
+ * @param buffer		Buffer to store entry name.
+ * @param max_size		Maximum size of the buffer.
+ * @param isCommand		Variable to store whether the entry is a command.
+ *						If it is not a command, it is a ConVar.
+ * @param flags			Variable to store entry flags.
+ * @return				On success, the outputs are filled, the iterator is 
+ *						advanced to the next entry, and true is returned.  
+ *						If no more entries exist, false is returned, and the 
+ *						contents of outputs is undefined.
+ */
+native bool:FindNextConCommand(Handle:search, String:buffer[], max_size, &bool:isCommand, &flags=0);

From abb763d1e1049de0ae16d1848c0cf0619b747b88 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 16 Dec 2007 23:11:00 +0000
Subject: [PATCH 118/263] added amb618 - binary file i/o

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401802
---
 core/smn_filesystem.cpp   | 195 ++++++++++++++++++++++++++++++++++++++
 plugins/include/files.inc | 121 ++++++++++++++++++++---
 2 files changed, 303 insertions(+), 13 deletions(-)

diff --git a/core/smn_filesystem.cpp b/core/smn_filesystem.cpp
index b209bfd3..d54bc9f0 100644
--- a/core/smn_filesystem.cpp
+++ b/core/smn_filesystem.cpp
@@ -640,6 +640,197 @@ static cell_t sm_LogToOpenFileEx(IPluginContext *pContext, const cell_t *params)
 	return 1;
 }
 
+static cell_t sm_ReadFile(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl = static_cast<Handle_t>(params[1]);
+	HandleError herr;
+	HandleSecurity sec(pContext->GetIdentity(), g_pCoreIdent);
+	FILE *pFile;
+	size_t read = 0;
+
+	if ((herr=g_HandleSys.ReadHandle(hndl, g_FileType, &sec, (void **)&pFile))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid file handle %x (error %d)", hndl, herr);
+	}
+
+	if (params[4] != 1 && params[4] != 2 && params[4] != 4)
+	{
+		return pContext->ThrowNativeError("Invalid size specifier (%d is not 1, 2, or 4)", params[4]);
+	}
+
+	cell_t *data;
+	pContext->LocalToPhysAddr(params[2], &data);
+
+	if (params[4] == 4)
+	{
+		read = fread(data, sizeof(cell_t), params[3], pFile);
+	}
+	else if (params[4] == 2)
+	{
+		int16_t val;
+		for (cell_t i = 0; i < params[3]; i++)
+		{
+			if (fread(&val, sizeof(int16_t), 1, pFile) != 1)
+			{
+				break;
+			}
+			data[read++] = val;
+		}
+	}
+	else if (params[4] == 1)
+	{
+		int8_t val;
+		for (cell_t i = 0; i < params[3]; i++)
+		{
+			if (fread(&val, sizeof(int8_t), 1, pFile) != 1)
+			{
+				break;
+			}
+			data[read++] = val;
+		}
+	}
+
+	if (read != (size_t)params[3] && ferror(pFile) != 0)
+	{
+		return -1;
+	}
+
+	return read;
+}
+
+static cell_t sm_ReadFileString(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl = static_cast<Handle_t>(params[1]);
+	HandleError herr;
+	HandleSecurity sec(pContext->GetIdentity(), g_pCoreIdent);
+	FILE *pFile;
+	cell_t num_read = 0;
+
+	if ((herr=g_HandleSys.ReadHandle(hndl, g_FileType, &sec, (void **)&pFile))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid file handle %x (error %d)", hndl, herr);
+	}
+
+	char *buffer;
+	pContext->LocalToString(params[2], &buffer);
+
+	char val;
+	while (1)
+	{
+		/* If we're in stop mode, break as soon as the buffer is full. */
+		if (params[4] && (params[3] == 0 || num_read >= params[3] - 1))
+		{
+			break;
+		}
+		if (fread(&val, sizeof(val), 1, pFile) != 1)
+		{
+			if (ferror(pFile))
+			{
+				return -1;
+			}
+			break;
+		}
+		if (val == '\0')
+		{
+			break;
+		}
+		if (params[3] > 0 && num_read < params[3] - 1)
+		{
+			buffer[num_read++] = val;
+		}
+	}
+
+	if (params[3] > 0)
+	{
+		buffer[num_read] = '\0';
+	}
+
+	return num_read;
+}
+
+static cell_t sm_WriteFile(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl = static_cast<Handle_t>(params[1]);
+	HandleError herr;
+	HandleSecurity sec(pContext->GetIdentity(), g_pCoreIdent);
+	FILE *pFile;
+	size_t read = 0;
+
+	if ((herr=g_HandleSys.ReadHandle(hndl, g_FileType, &sec, (void **)&pFile))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid file handle %x (error %d)", hndl, herr);
+	}
+
+	cell_t *data;
+	pContext->LocalToPhysAddr(params[2], &data);
+
+	if (params[4] != 1 && params[4] != 2 && params[4] != 4)
+	{
+		return pContext->ThrowNativeError("Invalid size specifier (%d is not 1, 2, or 4)", params[4]);
+	}
+
+	/* :NOTE: This really isn't compatible with big endian but we will never have to worry about that. */
+
+	if (params[4] == 4)
+	{
+		if (fwrite(data, sizeof(cell_t), params[3], pFile) != (size_t)params[3])
+		{
+			return 0;
+		}
+	}
+	else if (params[4] == 2)
+	{
+		for (cell_t i = 0; i < params[3]; i++)
+		{
+			if (fwrite(&data[i], sizeof(int16_t), 1, pFile) != 1)
+			{
+				return 0;
+			}
+		}
+	}
+	else if (params[4] == 1)
+	{
+		for (cell_t i = 0; i < params[3]; i++)
+		{
+			if (fwrite(&data[i], sizeof(int8_t), 1, pFile) != 1)
+			{
+				return 0;
+			}
+		}
+	}
+
+	return 1;
+}
+
+static cell_t sm_WriteFileString(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl = static_cast<Handle_t>(params[1]);
+	HandleError herr;
+	HandleSecurity sec(pContext->GetIdentity(), g_pCoreIdent);
+	FILE *pFile;
+
+	if ((herr=g_HandleSys.ReadHandle(hndl, g_FileType, &sec, (void **)&pFile))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid file handle %x (error %d)", hndl, herr);
+	}
+
+	char *buffer;
+	pContext->LocalToString(params[2], &buffer);
+
+	size_t len = strlen(buffer);
+
+	if (params[3])
+	{
+		len++;
+	}
+
+	return (fwrite(buffer, sizeof(char), len, pFile) == len) ? 1 : 0;
+}
+
 REGISTER_NATIVES(filesystem)
 {
 	{"OpenDirectory",			sm_OpenDirectory},
@@ -664,5 +855,9 @@ REGISTER_NATIVES(filesystem)
 	{"GetFileTime",				sm_GetFileTime},
 	{"LogToOpenFile",			sm_LogToOpenFile},
 	{"LogToOpenFileEx",			sm_LogToOpenFileEx},
+	{"ReadFile",				sm_ReadFile},
+	{"ReadFileString",			sm_ReadFileString},
+	{"WriteFile",				sm_WriteFile},
+	{"WriteFileString",			sm_WriteFileString},
 	{NULL,						NULL},
 };
diff --git a/plugins/include/files.inc b/plugins/include/files.inc
index 41aa979a..54445510 100644
--- a/plugins/include/files.inc
+++ b/plugins/include/files.inc
@@ -158,6 +158,112 @@ native bool:DeleteFile(const String:path[]);
  */
 native bool:ReadFileLine(Handle:hndl, String:buffer[], maxlength);
 
+/**
+ * Reads binary data from a file.
+ *
+ * @param hndl			Handle to the file.
+ * @param items			Array to store each item read.  
+ * @param num_items		Number of items to read into the array.
+ * @param size			Size of each element, in bytes, to be read.
+ *						Valid sizes are 1, 2, or 4.
+ * @return				Number of elements read, or -1 on error.
+ */
+native ReadFile(Handle:hndl, items[], num_items, size);
+
+/**
+ * Reads a UTF8 or ANSI string from a file.
+ *
+ * @param hndl			Handle to the file.
+ * @param buffer		Buffer to store the string.
+ * @param max_size		Maximum size of the string buffer.
+ * @param stop			If true, reading will stop once max_size-1 bytes have 
+ *						been read.  If false, reading will stop once a NUL 
+ *						terminator is reached.  The buffer will simply be 
+ *						terminated in either case, the difference is in how 
+ *						the far the file position is changed.
+ * @return				Number of characters written to the buffer, or -1 
+ *						if an error was encountered.
+ * @error				Invalid Handle, or read_count > max_size.
+ */
+native ReadFileString(Handle:hndl, String:buffer[], max_size, read_count=-1);
+
+/**
+ * Writes binary data to a file.
+ *
+ * @param hndl			Handle to the file.
+ * @param items			Array of items to write.  The data is read directly. 
+ *						That is, in 1 or 2-byte mode, the lower byte(s) in 
+ *						each cell are used directly, rather than performing 
+ *						any casts from a 4-byte number to a smaller number.
+ * @param num_items		Number of items in the array.
+ * @param size			Size of each item in the array in bytes.  
+ *						Valid sizes are 1, 2, or 4.
+ * @return				True on success, false on error.
+ */
+native bool:WriteFile(Handle:hndl, const items[], num_items, size);
+
+/**
+ * Writes a binary string to a file.
+ *
+ * @param hndl			Handle to th efile.
+ * @param buffer		String to write.
+ * @param term			True to append NUL terminator, false otherwise.
+ * @return				True on success, false on error.
+ */
+native bool:WriteFileString(Handle:hndl, const String:buffer[], bool:term);
+
+/**
+ * Writes a line of text to a text file.  A newline is automatically appended.
+ *
+ * @param hndl			Handle to the file.
+ * @param format		Formatting rules.
+ * @param ...			Variable number of format parameters.
+ * @return				True on success, false otherwise.
+ */
+native bool:WriteFileLine(Handle:hndl, const String:format[], any:...);
+
+/**
+ * Reads a single binary cell from a file.
+ *
+ * @param hndl			Handle to the file.
+ * @param data			Variable to store the data read.
+ * @param size			Size of the data to read in bytes.  Valid 
+ *						sizes are 1, 2, or 4 bytes.
+ * @return				Number of elements read (max 1), or -1 on error.
+ */
+stock ReadFileCell(Handle:hndl, &data, size)
+{
+	new array[1], ret;
+	
+	if ((ret = ReadFile(hndl, array, 1, size)) == 1)
+	{
+		data = array[0];
+	}
+	
+	return ret;
+}
+
+/**
+ * Writes a single binary cell to a file.
+ *
+ * @param hndl			Handle to the file.
+ * @param data			Cell to write to the file.
+ * @param size			Size of the data to read in bytes.  Valid 
+ *						sizes are 1, 2, or 4 bytes.  If the size 
+ *						is less than 4 bytes, the data is truncated 
+ *						rather than casted.  That is, only the lower 
+ *						bits will be read.
+ * @return				True on success, false on error.
+ */
+stock bool:WriteFileCell(Handle:hndl, data, size)
+{
+	new array[1];
+	
+	array[0] = data;
+	
+	return WriteFile(hndl, array, 1, size);
+}
+ 
 /**
  * Tests if the end of file has been reached.
  *
@@ -171,10 +277,10 @@ native bool:IsEndOfFile(Handle:file);
  *
  * @param file			Handle to the file.
  * @param position		Position relative to what is specified in whence.
- * @param whence		Look at the SEEK_* definitions.
+ * @param where			SEEK_ constant value of where to see from.
  * @return				True on success, false otherwise.
  */
-native bool:FileSeek(Handle:file, position, whence);
+native bool:FileSeek(Handle:file, position, where);
 
 /**
  * Get current position in the file.
@@ -235,17 +341,6 @@ native FlushFile(Handle:file);
  */
 native bool:RemoveDir(const String:path[]);
 
-/**
- * Writes a line of text in a file.
- * @note This native will append the newline character.
- *
- * @param hndl			Handle to the file.
- * @param format		Formatting rules.
- * @param ...			Variable number of format parameters.
- * @return				True on success, false otherwise.
- */
-native bool:WriteFileLine(Handle:hndl, const String:format[], any:...);
-
 /**
  * Returns a file timestamp as a unix timestamp.
  *

From 63d301c4c79d397783dc58837368cba4dfe99dc1 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 16 Dec 2007 23:45:03 +0000
Subject: [PATCH 119/263] added @error lines to a bunch of native docs

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401803
---
 plugins/include/files.inc | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/plugins/include/files.inc b/plugins/include/files.inc
index 54445510..e8767e66 100644
--- a/plugins/include/files.inc
+++ b/plugins/include/files.inc
@@ -199,6 +199,7 @@ native ReadFileString(Handle:hndl, String:buffer[], max_size, read_count=-1);
  * @param size			Size of each item in the array in bytes.  
  *						Valid sizes are 1, 2, or 4.
  * @return				True on success, false on error.
+ * @error				Invalid Handle.
  */
 native bool:WriteFile(Handle:hndl, const items[], num_items, size);
 
@@ -209,6 +210,7 @@ native bool:WriteFile(Handle:hndl, const items[], num_items, size);
  * @param buffer		String to write.
  * @param term			True to append NUL terminator, false otherwise.
  * @return				True on success, false on error.
+ * @error				Invalid Handle.
  */
 native bool:WriteFileString(Handle:hndl, const String:buffer[], bool:term);
 
@@ -219,6 +221,7 @@ native bool:WriteFileString(Handle:hndl, const String:buffer[], bool:term);
  * @param format		Formatting rules.
  * @param ...			Variable number of format parameters.
  * @return				True on success, false otherwise.
+ * @error				Invalid Handle.
  */
 native bool:WriteFileLine(Handle:hndl, const String:format[], any:...);
 
@@ -230,6 +233,7 @@ native bool:WriteFileLine(Handle:hndl, const String:format[], any:...);
  * @param size			Size of the data to read in bytes.  Valid 
  *						sizes are 1, 2, or 4 bytes.
  * @return				Number of elements read (max 1), or -1 on error.
+ * @error				Invalid Handle.
  */
 stock ReadFileCell(Handle:hndl, &data, size)
 {
@@ -254,6 +258,7 @@ stock ReadFileCell(Handle:hndl, &data, size)
  *						rather than casted.  That is, only the lower 
  *						bits will be read.
  * @return				True on success, false on error.
+ * @error				Invalid Handle.
  */
 stock bool:WriteFileCell(Handle:hndl, data, size)
 {
@@ -269,6 +274,7 @@ stock bool:WriteFileCell(Handle:hndl, data, size)
  *
  * @param file			Handle to the file.
  * @return				True if end of file has been reached, false otherwise.
+ * @error				Invalid Handle.
  */
 native bool:IsEndOfFile(Handle:file);
 
@@ -279,6 +285,7 @@ native bool:IsEndOfFile(Handle:file);
  * @param position		Position relative to what is specified in whence.
  * @param where			SEEK_ constant value of where to see from.
  * @return				True on success, false otherwise.
+ * @error				Invalid Handle.
  */
 native bool:FileSeek(Handle:file, position, where);
 
@@ -287,6 +294,7 @@ native bool:FileSeek(Handle:file, position, where);
  *
  * @param file			Handle to the file.
  * @return				Value for the file position indicator.
+ * @error				Invalid Handle.
  */
 native FilePosition(Handle:file);
 

From 6ba2593738f582a8c2f7edf1352652106dbdf79c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 16 Dec 2007 23:45:41 +0000
Subject: [PATCH 120/263] added amb1289 - FindPluginByNumber

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401804
---
 core/smn_core.cpp             | 13 +++++++++++++
 plugins/include/sourcemod.inc | 12 ++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/core/smn_core.cpp b/core/smn_core.cpp
index b55042ed..cd8de231 100644
--- a/core/smn_core.cpp
+++ b/core/smn_core.cpp
@@ -585,6 +585,18 @@ static cell_t GetExtensionFileStatus(IPluginContext *pContext, const cell_t *par
 	return 1;
 }
 
+static cell_t FindPluginByNumber(IPluginContext *pContext, const cell_t *params)
+{
+	CPlugin *pPlugin = g_PluginSys.GetPluginByOrder(params[1]);
+	
+	if (pPlugin == NULL)
+	{
+		return BAD_HANDLE;
+	}
+
+	return pPlugin->GetMyHandle();
+}
+
 REGISTER_NATIVES(coreNatives)
 {
 	{"AutoExecConfig",			AutoExecConfig},
@@ -607,6 +619,7 @@ REGISTER_NATIVES(coreNatives)
 	{"LogToFile",				LogToFile},
 	{"LogToFileEx",				LogToFileEx},
 	{"GetExtensionFileStatus",	GetExtensionFileStatus},
+	{"FindPluginByNumber",		FindPluginByNumber},
 	{NULL,						NULL},
 };
 
diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc
index 842c5740..aab0d7ab 100644
--- a/plugins/include/sourcemod.inc
+++ b/plugins/include/sourcemod.inc
@@ -266,6 +266,18 @@ native bool:IsPluginDebugging(Handle:hndl);
  */
 native bool:GetPluginInfo(Handle:plugin, PluginInfo:info, String:buffer[], maxlength);
 
+/**
+ * Finds a plugin by its order in the list from the "plugins list" server 
+ * "sm" command.  You should not use this function to loop through all plugins, 
+ * use the iterator instead.  Looping through all plugins using this native 
+ * is O(n^2), whereas using the iterator is O(n).
+ *
+ * @param order_num		Number of the plugin as it appears in "sm plugins list".
+ * @return				Plugin Handle on success, INVALID_HANDLE if no plugin 
+ *						matches the given number.
+ */
+native Handle:FindPluginByNumber(order_num);
+
 /**
  * Causes the plugin to enter a failed state.  An error will be thrown and
  * the plugin will be paused until it is unloaded or reloaded.

From b1451f692c2b89460c01bfccde9c9328e8583162 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 17 Dec 2007 00:54:10 +0000
Subject: [PATCH 121/263] fixed linuxbuild

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401805
---
 core/smn_filesystem.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/core/smn_filesystem.cpp b/core/smn_filesystem.cpp
index d54bc9f0..eeec4886 100644
--- a/core/smn_filesystem.cpp
+++ b/core/smn_filesystem.cpp
@@ -756,7 +756,6 @@ static cell_t sm_WriteFile(IPluginContext *pContext, const cell_t *params)
 	HandleError herr;
 	HandleSecurity sec(pContext->GetIdentity(), g_pCoreIdent);
 	FILE *pFile;
-	size_t read = 0;
 
 	if ((herr=g_HandleSys.ReadHandle(hndl, g_FileType, &sec, (void **)&pFile))
 		!= HandleError_None)

From 570dc75512e1f3ac46c33e891ddd9698564c53aa Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Tue, 18 Dec 2007 21:03:34 +0000
Subject: [PATCH 122/263] Added new stocks for entity props.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401806
---
 plugins/include/entity_prop_stocks.inc | 84 ++++++++++++++++++++++++++
 plugins/include/sourcemod.inc          |  1 +
 2 files changed, 85 insertions(+)
 create mode 100644 plugins/include/entity_prop_stocks.inc

diff --git a/plugins/include/entity_prop_stocks.inc b/plugins/include/entity_prop_stocks.inc
new file mode 100644
index 00000000..28514566
--- /dev/null
+++ b/plugins/include/entity_prop_stocks.inc
@@ -0,0 +1,84 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This file is part of the SourceMod/SourcePawn SDK.
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+ 
+#if defined _entity_prop_stocks_included
+ #endinput
+#endif
+#define _entity_prop_stocks_included
+
+enum
+{
+	MOVETYPE_NONE = 0,			/** never moves */
+	MOVETYPE_ISOMETRIC,			/** For players */
+	MOVETYPE_WALK,				/** Player only - moving on the ground */
+	MOVETYPE_STEP,				/** gravity, special edge handling -- monsters use this */
+	MOVETYPE_FLY,				/** No gravity, but still collides with stuff */
+	MOVETYPE_FLYGRAVITY,			/** flies through the air + is affected by gravity */
+	MOVETYPE_VPHYSICS,			/** uses VPHYSICS for simulation */
+	MOVETYPE_PUSH,				/** no clip to world, push and crush */
+	MOVETYPE_NOCLIP,			/** No gravity, no collisions, still do velocity/avelocity */
+	MOVETYPE_LADDER,			/** Used by players only when going onto a ladder */
+	MOVETYPE_OBSERVER,			/** Observer movement, depends on player's observer mode */
+	MOVETYPE_CUSTOM,			/** Allows the entity to describe its own physics */
+};
+
+/**
+ * Sets an entity's color.
+ *
+ * @param index		Entity index
+ * @param mt		Movetype, see enum above
+ * @noreturn
+ */
+stock SetEntityMovetype(index, mt)
+{
+	new offset = GetEntSendPropOffs(index, "movetype");
+	SetEntData(index, offset, mt, 1, true);
+}
+
+/**
+ * Sets an entity's color.
+ *
+ * @param index		Entity index
+ * @param r 		Amount of red (0-255)
+ * @param g 		Amount of green (0-255)
+ * @param b 		Amount of blue (0-255)
+ * @param a 		Amount of alpha (0-255)
+ * @noreturn
+ */
+stock SetEntityRenderColor(index, r=255, g=255, b=255, a=255)
+{
+	new offset = GetEntSendPropOffs(index, "m_clrRender");
+	SetEntData(index, offset, r, 1, true);
+	SetEntData(index, offset + 1, g, 1, true);
+	SetEntData(index, offset + 2, b, 1, true);
+	SetEntData(index, offset + 3, a, 1, true);
+}
\ No newline at end of file
diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc
index aab0d7ab..a353b425 100644
--- a/plugins/include/sourcemod.inc
+++ b/plugins/include/sourcemod.inc
@@ -572,4 +572,5 @@ native SetMapListCompatBind(const String:name[], const String:file[]);
 
 #include <helpers>
 #include <entity>
+#include <entity_prop_stocks>
 

From 5175e5fe92a9182c3cc7682db5673c66dac75493 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Wed, 19 Dec 2007 01:16:15 +0000
Subject: [PATCH 123/263] Large additions to basefuncommands. Moved slay and
 slap to a new plugin.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401807
---
 plugins/basefuncommands.sp                    | 125 +++-
 plugins/basefuncommands/beacon.sp             | 157 ++---
 plugins/basefuncommands/burn.sp               | 172 ------
 plugins/basefuncommands/fire.sp               | 503 ++++++++++++++++
 plugins/basefuncommands/ice.sp                | 554 ++++++++++++++++++
 plugins/basefuncommands/timebomb.sp           | 364 ++++++++++++
 plugins/slapslay.sp                           | 103 ++++
 plugins/{basefuncommands => slapslay}/slap.sp |   4 +-
 plugins/{basefuncommands => slapslay}/slay.sp |   2 +-
 translations/basefuncommands.phrases.txt      |  77 ++-
 translations/slapslay.phrases.txt             |  29 +
 11 files changed, 1783 insertions(+), 307 deletions(-)
 delete mode 100644 plugins/basefuncommands/burn.sp
 create mode 100644 plugins/basefuncommands/fire.sp
 create mode 100644 plugins/basefuncommands/ice.sp
 create mode 100644 plugins/basefuncommands/timebomb.sp
 create mode 100644 plugins/slapslay.sp
 rename plugins/{basefuncommands => slapslay}/slap.sp (95%)
 rename plugins/{basefuncommands => slapslay}/slay.sp (94%)
 create mode 100644 translations/slapslay.phrases.txt

diff --git a/plugins/basefuncommands.sp b/plugins/basefuncommands.sp
index 3e10caf1..f15006bb 100644
--- a/plugins/basefuncommands.sp
+++ b/plugins/basefuncommands.sp
@@ -49,24 +49,58 @@ public Plugin:myinfo =
 
 new Handle:hTopMenu = INVALID_HANDLE;
 
-new g_SlapDamage[MAXPLAYERS+1];
-new bool:g_cstrike = false;
+// Sounds
+#define SOUND_BLIP		"buttons/blip1.wav"
+#define SOUND_BEEP		"buttons/button17.wav"
+#define SOUND_FINAL		"weapons/cguard/charging.wav"
+#define SOUND_BOOM		"weapons/explode3.wav"
+#define SOUND_FREEZE		"physics/glass/glass_impact_bullet4.wav"
 
-#include "basefuncommands/slay.sp"
-#include "basefuncommands/burn.sp"
-#include "basefuncommands/slap.sp"
+// Following are model indexes for temp entities
+new g_BeamSprite;
+new g_BeamSprite2;
+new g_HaloSprite;
+new g_GlowSprite;
+new g_ExplosionSprite;
+
+// Basic color arrays for temp entities
+new redColor[4] = {255, 75, 75, 255};
+new orangeColor[4] = {255, 128, 0, 255};
+new greenColor[4] = {75, 255, 75, 255};
+new blueColor[4] = {75, 75, 255, 255};
+new whiteColor[4] = {255, 255, 255, 255};
+new greyColor[4] = {128, 128, 128, 255};
+
+// Used for some trace rays.
+/*
+new g_FilteredEntity = -1;
+public bool:TR_Filter_Client(ent, contentMask)
+{
+   return (ent == g_FilteredEntity) ? false : true;
+}
+*/
+
+// Include various commands and supporting functions
 #include "basefuncommands/beacon.sp"
+#include "basefuncommands/timebomb.sp"
+#include "basefuncommands/fire.sp"
+#include "basefuncommands/ice.sp"
 
 public OnPluginStart()
 {
 	LoadTranslations("common.phrases");
 	LoadTranslations("basefuncommands.phrases");
 
-	RegAdminCmd("sm_burn", Command_Burn, ADMFLAG_SLAY, "sm_burn <#userid|name> [time]");
-	RegAdminCmd("sm_slap", Command_Slap, ADMFLAG_SLAY, "sm_slap <#userid|name> [damage]");
-	RegAdminCmd("sm_slay", Command_Slay, ADMFLAG_SLAY, "sm_slay <#userid|name>");
-	RegAdminCmd("sm_beacon", Command_Beacon, ADMFLAG_SLAY, "sm_beacon <#userid|name>");
 	RegAdminCmd("sm_play", Command_Play, ADMFLAG_GENERIC, "sm_play <#userid|name> <filename>");
+
+	HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);	
+
+	SetupBeacon();		// sm_beacon
+	SetupTimeBomb();	// sm_timebomb
+	SetupFire();		// sm_burn and sm_firebomb
+	SetupIce();			// sm_freeze and sm_freezebomb
+	
+	AutoExecConfig(true, "funcommands");
 	
 	/* Account for late loading */
 	new Handle:topmenu;
@@ -74,24 +108,39 @@ public OnPluginStart()
 	{
 		OnAdminMenuReady(topmenu);
 	}
-	
-	decl String:folder[64];
-	GetGameFolderName(folder, sizeof(folder));
-	
-	if (strcmp(folder, "cstrike") == 0)
-	{
-		g_cstrike = true;
-	}
 }
 
 public OnMapStart()
 {
-	SetupBeacon();	
+	PrecacheSound(SOUND_BLIP, true);
+	PrecacheSound(SOUND_BEEP, true);
+	PrecacheSound(SOUND_FINAL, true);
+	PrecacheSound(SOUND_BOOM, true);
+	PrecacheSound(SOUND_FREEZE, true);
+
+	g_BeamSprite = PrecacheModel("materials/sprites/laser.vmt");
+	g_BeamSprite2 = PrecacheModel("sprites/bluelight1.vmt");
+	g_HaloSprite = PrecacheModel("materials/sprites/halo01.vmt");	
+	g_GlowSprite = PrecacheModel("sprites/blueglow2.vmt");
+	g_ExplosionSprite = PrecacheModel("sprites/sprite_fire01.vmt");
 }
 
 public OnMapEnd()
 {
 	KillAllBeacons();
+	KillAllTimeBombs();
+	KillAllFireBombs();
+	KillAllFreezes();
+}
+
+public Action:Event_RoundEnd(Handle:event,const String:name[],bool:dontBroadcast)
+{
+	KillAllBeacons();
+	KillAllTimeBombs();
+	KillAllFireBombs();
+	KillAllFreezes();
+	
+	return Plugin_Handled;
 }
 
 public OnAdminMenuReady(Handle:topmenu)
@@ -111,13 +160,13 @@ public OnAdminMenuReady(Handle:topmenu)
 	if (player_commands != INVALID_TOPMENUOBJECT)
 	{
 		AddToTopMenu(hTopMenu,
-			"sm_slay",
+			"sm_beacon",
 			TopMenuObject_Item,
-			AdminMenu_Slay,
+			AdminMenu_Beacon,
 			player_commands,
-			"sm_slay",
+			"sm_beacon",
 			ADMFLAG_SLAY);
-			
+		
 		AddToTopMenu(hTopMenu,
 			"sm_burn",
 			TopMenuObject_Item,
@@ -127,20 +176,36 @@ public OnAdminMenuReady(Handle:topmenu)
 			ADMFLAG_SLAY);
 			
 		AddToTopMenu(hTopMenu,
-			"sm_slap",
+			"sm_freeze",
 			TopMenuObject_Item,
-			AdminMenu_Slap,
+			AdminMenu_Freeze,
 			player_commands,
-			"sm_slap",
+			"sm_freeze",
+			ADMFLAG_SLAY);
+
+		AddToTopMenu(hTopMenu,
+			"sm_timebomb",
+			TopMenuObject_Item,
+			AdminMenu_TimeBomb,
+			player_commands,
+			"sm_timebomb",
 			ADMFLAG_SLAY);	
 			
 		AddToTopMenu(hTopMenu,
-			"sm_beacon",
+			"sm_firebomb",
 			TopMenuObject_Item,
-			AdminMenu_Beacon,
+			AdminMenu_FireBomb,
 			player_commands,
-			"sm_beacon",
-			ADMFLAG_SLAY);			
+			"sm_firebomb",
+			ADMFLAG_SLAY);
+			
+		AddToTopMenu(hTopMenu,
+			"sm_freezebomb",
+			TopMenuObject_Item,
+			AdminMenu_FreezeBomb,
+			player_commands,
+			"sm_freezebomb",
+			ADMFLAG_SLAY);
 	}
 }
 
@@ -196,7 +261,7 @@ public Action:Command_Play(client, args)
 	for (new i = 0; i < target_count; i++)
 	{
 		ClientCommand(target_list[i], "playgamesound \"%s\"", Arguments[len]);
-		LogAction(client, target_list[i], "\"%L\" played sound on \"%L\" (file \"%s\")", client, target_list[i], Arguments[len]);	
+		LogAction(client, target_list[i], "\"%L\" played sound on \"%L\" (file \"%s\")", client, target_list[i], Arguments[len]);
 	}
 	
 	if (tn_is_ml)
diff --git a/plugins/basefuncommands/beacon.sp b/plugins/basefuncommands/beacon.sp
index 3eb8c7df..b178a032 100644
--- a/plugins/basefuncommands/beacon.sp
+++ b/plugins/basefuncommands/beacon.sp
@@ -31,32 +31,15 @@
  * Version: $Id$
  */
 
-new Handle:g_BeaconTimers[MAXPLAYERS+1] = {INVALID_HANDLE, ...};
+new Handle:g_BeaconTimers[MAXPLAYERS+1];
 
-new g_BeaconRoundEndHooked = false;
-
-new g_BeamSprite;
-new g_HaloSprite;
-
-new redColor[4] = {255, 75, 75, 255};
-new greenColor[4] = {75, 255, 75, 255};
-new blueColor[4] = {75, 75, 255, 255};
+new Handle:g_BeaconRadius = INVALID_HANDLE;
 
 SetupBeacon()
 {
-	if (!g_BeaconRoundEndHooked)
-	{
-		HookEvent("round_end", Event_BeaconRoundEnd, EventHookMode_PostNoCopy);	
-		g_BeaconRoundEndHooked = true;
-	}
-
-	if (g_cstrike)
-	{
-		PrecacheSound("ambient/tones/elev1.wav", true);
-	}
-
-	g_BeamSprite = PrecacheModel("materials/sprites/laser.vmt");
-	g_HaloSprite = PrecacheModel("materials/sprites/halo01.vmt");	
+	RegAdminCmd("sm_beacon", Command_Beacon, ADMFLAG_SLAY, "sm_beacon <#userid|name> [0/1]");
+	
+	g_BeaconRadius = CreateConVar("sm_beacon_radius", "375", "Sets the radius for beacon's light rings.", 0, true, 50.0, true, 1500.0);
 }
 
 CreateBeacon(client)
@@ -82,17 +65,41 @@ KillAllBeacons()
 	}
 }
 
-PerformBeacon(client, target)
+PerformBeacon(client, target, toggle)
 {
-	if (g_BeaconTimers[target] == INVALID_HANDLE)
+	switch (toggle)
 	{
-		CreateBeacon(target);
-		LogAction(client, target, "\"%L\" set a beacon on \"%L\"", client, target);
-	}
-	else
-	{
-		KillBeacon(target);
-		LogAction(client, target, "\"%L\" removed a beacon on \"%L\"", client, target);
+		case (2):
+		{
+			if (g_BeaconTimers[target] == INVALID_HANDLE)
+			{
+				CreateBeacon(target);
+				LogAction(client, target, "\"%L\" set a beacon on \"%L\"", client, target);
+			}
+			else
+			{
+				KillBeacon(target);
+				LogAction(client, target, "\"%L\" removed a beacon on \"%L\"", client, target);
+			}			
+		}
+
+		case (1):
+		{
+			if (g_BeaconTimers[target] == INVALID_HANDLE)
+			{
+				CreateBeacon(target);
+				LogAction(client, target, "\"%L\" set a beacon on \"%L\"", client, target);
+			}			
+		}
+		
+		case (0):
+		{
+			if (g_BeaconTimers[target] != INVALID_HANDLE)
+			{
+				KillBeacon(target);
+				LogAction(client, target, "\"%L\" removed a beacon on \"%L\"", client, target);
+			}			
+		}
 	}
 }
 
@@ -100,11 +107,8 @@ public Action:Timer_Beacon(Handle:timer, any:client)
 {
 	if (!IsClientInGame(client) || !IsPlayerAlive(client))
 	{
-		if (g_BeaconTimers[client] == timer)
-		{
-			KillBeacon(client);		
-		}
-		
+		KillBeacon(client);		
+
 		return Plugin_Handled;
 	}
 	
@@ -112,60 +116,32 @@ public Action:Timer_Beacon(Handle:timer, any:client)
 
 	new Float:vec[3];
 	GetClientAbsOrigin(client, vec);
-	vec[2] += 5;
+	vec[2] += 10;
+
+	TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_BeaconRadius), g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, greyColor, 10, 0);
+	TE_SendToAll();
 	
 	if (team == 2)
 	{
-		TE_SetupBeamRingPoint(vec, 20.0, 400.0, g_BeamSprite, g_HaloSprite, 0, 0, 1.0, 3.0, 0.0, redColor, 50, 0);
+		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_BeaconRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, redColor, 10, 0);
 	}
 	else if (team == 3)
 	{
-		TE_SetupBeamRingPoint(vec, 20.0, 400.0, g_BeamSprite, g_HaloSprite, 0, 0, 1.0, 3.0, 0.0, blueColor, 50, 0);
+		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_BeaconRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, blueColor, 10, 0);
 	}
 	else
 	{
-		TE_SetupBeamRingPoint(vec, 20.0, 400.0, g_BeamSprite, g_HaloSprite, 0, 0, 1.0, 3.0, 0.0, greenColor, 50, 0);
+		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_BeaconRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, greenColor, 10, 0);
 	}
 	
 	TE_SendToAll();
-	
-	// Create a double ring, if we are the repeating timer.
-	if (g_BeaconTimers[client] == timer)
-	{
-		CreateTimer(0.2, Timer_Beacon, client);
-
-		GetClientEyePosition(client, vec);
 		
-		if (g_cstrike)
-		{
-			EmitAmbientSound("ambient/tones/elev1.wav", vec, client, SNDLEVEL_RAIDSIREN);	
-		}
-	}
+	GetClientEyePosition(client, vec);
+	EmitAmbientSound(SOUND_BLIP, vec, client, SNDLEVEL_RAIDSIREN);	
 		
 	return Plugin_Handled;
 }
 
-public Action:Event_BeaconRoundEnd(Handle:event,const String:name[],bool:dontBroadcast)
-{
-	KillAllBeacons();
-	
-	return Plugin_Handled;
-}
-
-DisplayBeaconMenu(client)
-{
-	new Handle:menu = CreateMenu(MenuHandler_Beacon);
-	
-	decl String:title[100];
-	Format(title, sizeof(title), "%T:", "Beacon player", client);
-	SetMenuTitle(menu, title);
-	SetMenuExitBackButton(menu, true);
-	
-	AddTargetsToMenu(menu, client, true, true);
-	
-	DisplayMenu(menu, client, MENU_TIME_FOREVER);
-}
-
 public AdminMenu_Beacon(Handle:topmenu, 
 					  TopMenuAction:action,
 					  TopMenuObject:object_id,
@@ -183,6 +159,20 @@ public AdminMenu_Beacon(Handle:topmenu,
 	}
 }
 
+DisplayBeaconMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_Beacon);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "Beacon player", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddTargetsToMenu(menu, client, true, true);
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
 public MenuHandler_Beacon(Handle:menu, MenuAction:action, param1, param2)
 {
 	if (action == MenuAction_End)
@@ -217,7 +207,7 @@ public MenuHandler_Beacon(Handle:menu, MenuAction:action, param1, param2)
 			new String:name[32];
 			GetClientName(target, name, sizeof(name));
 			
-			PerformBeacon(param1, target);
+			PerformBeacon(param1, target, 2);
 			ShowActivity2(param1, "[SM] ", "%t", "Toggled beacon on target", "_s", name);
 		}
 		
@@ -233,12 +223,27 @@ public Action:Command_Beacon(client, args)
 {
 	if (args < 1)
 	{
-		ReplyToCommand(client, "[SM] Usage: sm_beacon <#userid|name>");
+		ReplyToCommand(client, "[SM] Usage: sm_beacon <#userid|name> [0/1]");
 		return Plugin_Handled;
 	}
 
 	decl String:arg[65];
 	GetCmdArg(1, arg, sizeof(arg));
+	
+	new toggle = 2;
+	if (args > 1)
+	{
+		decl String:arg2[2];
+		GetCmdArg(2, arg2, sizeof(arg2));
+		if (arg2[0])
+		{
+			toggle = 1;
+		}
+		else
+		{
+			toggle = 0;
+		}
+	}
 
 	decl String:target_name[MAX_TARGET_LENGTH];
 	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
@@ -259,7 +264,7 @@ public Action:Command_Beacon(client, args)
 	
 	for (new i = 0; i < target_count; i++)
 	{
-		PerformBeacon(client, target_list[i]);
+		PerformBeacon(client, target_list[i], toggle);
 	}
 	
 	if (tn_is_ml)
diff --git a/plugins/basefuncommands/burn.sp b/plugins/basefuncommands/burn.sp
deleted file mode 100644
index 86ec5abf..00000000
--- a/plugins/basefuncommands/burn.sp
+++ /dev/null
@@ -1,172 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Basefuncommands Plugin
- * Provides burn functionality
- *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation.  You must obey the GNU General Public License in
- * all respects for all other code used.  Additionally, AlliedModders LLC grants
- * this exception to all derivative works.  AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or <http://www.sourcemod.net/license.php>.
- *
- * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
- */
-
-PerformBurn(client, target, Float:seconds)
-{
-	LogAction(client, target, "\"%L\" ignited \"%L\" (seconds \"%f\")", client, target, seconds);
-	IgniteEntity(target, seconds);
-}
-
-DisplayBurnMenu(client)
-{
-	new Handle:menu = CreateMenu(MenuHandler_Burn);
-	
-	decl String:title[100];
-	Format(title, sizeof(title), "%T:", "Burn player", client);
-	SetMenuTitle(menu, title);
-	SetMenuExitBackButton(menu, true);
-	
-	AddTargetsToMenu(menu, client, true, true);
-	
-	DisplayMenu(menu, client, MENU_TIME_FOREVER);
-}
-
-public AdminMenu_Burn(Handle:topmenu, 
-					  TopMenuAction:action,
-					  TopMenuObject:object_id,
-					  param,
-					  String:buffer[],
-					  maxlength)
-{
-	if (action == TopMenuAction_DisplayOption)
-	{
-		Format(buffer, maxlength, "%T", "Burn player", param);
-	}
-	else if (action == TopMenuAction_SelectOption)
-	{
-		DisplayBurnMenu(param);
-	}
-}
-
-public MenuHandler_Burn(Handle:menu, MenuAction:action, param1, param2)
-{
-	if (action == MenuAction_End)
-	{
-		CloseHandle(menu);
-	}
-	else if (action == MenuAction_Cancel)
-	{
-		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
-		{
-			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
-		}
-	}
-	else if (action == MenuAction_Select)
-	{
-		decl String:info[32];
-		new userid, target;
-		
-		GetMenuItem(menu, param2, info, sizeof(info));
-		userid = StringToInt(info);
-
-		if ((target = GetClientOfUserId(userid)) == 0)
-		{
-			PrintToChat(param1, "[SM] %t", "Player no longer available");
-		}
-		else if (!CanUserTarget(param1, target))
-		{
-			PrintToChat(param1, "[SM] %t", "Unable to target");
-		}
-		else
-		{
-			new String:name[32];
-			GetClientName(target, name, sizeof(name));
-			PerformBurn(param1, target, 20.0);
-			ShowActivity2(param1, "[SM] ", "%t", "Set target on fire", "_s", name);
-		}
-		
-		/* Re-draw the menu if they're still valid */
-		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
-		{
-			DisplayBurnMenu(param1);
-		}
-	}
-}
-
-public Action:Command_Burn(client, args)
-{
-	if (args < 1)
-	{
-		ReplyToCommand(client, "[SM] Usage: sm_burn <#userid|name> [time]");
-		return Plugin_Handled;
-	}
-
-	decl String:arg[65];
-	GetCmdArg(1, arg, sizeof(arg));
-
-	new Float:seconds = 20.0;
-	
-	if (args > 1)
-	{
-		decl String:time[20];
-		GetCmdArg(2, time, sizeof(time));
-		if (StringToFloatEx(time, seconds) == 0)
-		{
-			ReplyToCommand(client, "[SM] %t", "Invalid Amount");
-			return Plugin_Handled;
-		}
-	}
-	
-	decl String:target_name[MAX_TARGET_LENGTH];
-	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
-	
-	if ((target_count = ProcessTargetString(
-			arg,
-			client,
-			target_list,
-			MAXPLAYERS,
-			COMMAND_FILTER_ALIVE,
-			target_name,
-			sizeof(target_name),
-			tn_is_ml)) <= 0)
-	{
-		ReplyToTargetError(client, target_count);
-		return Plugin_Handled;
-	}
-	
-	for (new i = 0; i < target_count; i++)
-	{
-		PerformBurn(client, target_list[i], seconds);
-	}
-	
-	if (tn_is_ml)
-	{
-		ShowActivity2(client, "[SM] ", "%t", "Set target on fire", target_name);
-	}
-	else
-	{
-		ShowActivity2(client, "[SM] ", "%t", "Set target on fire", "_s", target_name);
-	}
-
-	return Plugin_Handled;
-}
diff --git a/plugins/basefuncommands/fire.sp b/plugins/basefuncommands/fire.sp
new file mode 100644
index 00000000..d6222d22
--- /dev/null
+++ b/plugins/basefuncommands/fire.sp
@@ -0,0 +1,503 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefuncommands Plugin
+ * Provides FireBomb functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+new Handle:g_FireBombTimers[MAXPLAYERS+1];
+new g_FireBombTracker[MAXPLAYERS+1];
+
+new Handle:g_BurnDuration = INVALID_HANDLE;
+new Handle:g_FireBombTicks = INVALID_HANDLE;
+new Handle:g_FireBombRadius = INVALID_HANDLE;
+new Handle:g_FireBombMode = INVALID_HANDLE;
+
+SetupFire()
+{
+	RegAdminCmd("sm_burn", Command_Burn, ADMFLAG_SLAY, "sm_burn <#userid|name> [time]");
+	RegAdminCmd("sm_firebomb", Command_FireBomb, ADMFLAG_SLAY, "sm_firebomb <#userid|name> [0/1]");	
+	
+	g_BurnDuration = CreateConVar("sm_burn_duration", "20", "Sets the default duration of sm_burn and firebomb victims.", 0, true, 0.5, true, 20.0);
+	g_FireBombTicks = CreateConVar("sm_firebomb_ticks", "10", "Sets how long the FireBomb fuse is.", 0, true, 5.0, true, 120.0);
+	g_FireBombRadius = CreateConVar("sm_firebomb_radius", "1000", "Sets the bomb blast radius.", 0, true, 50.0, true, 3000.0);
+	g_FireBombMode = CreateConVar("sm_firebomb_mode", "0", "Who is targetted by the FireBomb? 0 = Target only, 1 = Target's team, 2 = Everyone", 0, true, 0.0, true, 2.0);
+}
+
+CreateFireBomb(client)
+{
+	g_FireBombTimers[client] = CreateTimer(1.0, Timer_FireBomb, client, TIMER_REPEAT);
+	g_FireBombTracker[client] = GetConVarInt(g_FireBombTicks);
+}
+
+KillFireBomb(client)
+{
+	KillTimer(g_FireBombTimers[client]);
+	g_FireBombTimers[client] = INVALID_HANDLE;
+	
+	SetEntityRenderColor(client, 255, 255, 255, 255);
+}
+
+KillAllFireBombs()
+{
+	new maxclients = GetMaxClients();
+	for (new i = 1; i <= maxclients; i++)
+	{
+		if (g_FireBombTimers[i] != INVALID_HANDLE)
+		{
+			KillFireBomb(i);
+		}
+	}
+}
+
+PerformBurn(client, target, Float:seconds)
+{
+	LogAction(client, target, "\"%L\" ignited \"%L\" (seconds \"%f\")", client, target, seconds);
+	IgniteEntity(target, seconds);
+}
+
+PerformFireBomb(client, target, toggle)
+{
+	switch (toggle)
+	{
+		case (2):
+		{
+			if (g_FireBombTimers[target] == INVALID_HANDLE)
+			{
+				CreateFireBomb(target);
+				LogAction(client, target, "\"%L\" set a FireBomb on \"%L\"", client, target);
+			}
+			else
+			{
+				KillFireBomb(target);
+				LogAction(client, target, "\"%L\" removed a FireBomb on \"%L\"", client, target);
+			}			
+		}
+
+		case (1):
+		{
+			if (g_FireBombTimers[target] == INVALID_HANDLE)
+			{
+				CreateFireBomb(target);
+				LogAction(client, target, "\"%L\" set a FireBomb on \"%L\"", client, target);
+			}			
+		}
+		
+		case (0):
+		{
+			if (g_FireBombTimers[target] != INVALID_HANDLE)
+			{
+				KillFireBomb(target);
+				LogAction(client, target, "\"%L\" removed a FireBomb on \"%L\"", client, target);
+			}			
+		}
+	}
+}
+
+public Action:Timer_FireBomb(Handle:timer, any:client)
+{
+	if (!IsClientInGame(client) || !IsPlayerAlive(client))
+	{
+		KillFireBomb(client);		
+
+		return Plugin_Handled;
+	}
+	
+	g_FireBombTracker[client]--;
+	
+	new Float:vec[3];
+	GetClientEyePosition(client, vec);
+	
+	if (g_FireBombTracker[client] > 1)
+	{
+		new color;
+		
+		if (g_FireBombTracker[client] > 1)
+		{
+			color = RoundToFloor(g_FireBombTracker[client] * (255.0 / GetConVarFloat(g_FireBombTicks)));
+			EmitAmbientSound(SOUND_BEEP, vec, client, SNDLEVEL_RAIDSIREN);	
+		}
+		else
+		{
+			color = 0;
+			EmitAmbientSound(SOUND_FINAL, vec, client, SNDLEVEL_RAIDSIREN);
+		}
+		
+		SetEntityRenderColor(client, 255, color, color, 255);
+
+		decl String:name[64];
+		GetClientName(client, name, sizeof(name));
+		PrintCenterTextAll("%t", "Till Explodes", name, g_FireBombTracker[client]);		
+		
+		GetClientAbsOrigin(client, vec);
+		vec[2] += 10;
+
+		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_FireBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, greyColor, 10, 0);
+		TE_SendToAll();
+		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_FireBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, whiteColor, 10, 0);
+		TE_SendToAll();
+	}
+	else
+	{
+		TE_SetupExplosion(vec, g_ExplosionSprite, 0.1, 1, 0, GetConVarInt(g_FireBombRadius), 5000);
+		TE_SendToAll();
+		
+		GetClientAbsOrigin(client, vec);
+		vec[2] += 10;
+		TE_SetupBeamRingPoint(vec, 50.0, GetConVarFloat(g_FireBombRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.5, 30.0, 1.5, orangeColor, 5, 0);
+		TE_SendToAll();
+		vec[2] += 15;
+		TE_SetupBeamRingPoint(vec, 40.0, GetConVarFloat(g_FireBombRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 30.0, 1.5, orangeColor, 5, 0);
+		TE_SendToAll();	
+		vec[2] += 15;
+		TE_SetupBeamRingPoint(vec, 30.0, GetConVarFloat(g_FireBombRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.7, 30.0, 1.5, orangeColor, 5, 0);
+		TE_SendToAll();
+		vec[2] += 15;
+		TE_SetupBeamRingPoint(vec, 20.0, GetConVarFloat(g_FireBombRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.8, 30.0, 1.5, orangeColor, 5, 0);
+		TE_SendToAll();		
+		
+		EmitAmbientSound(SOUND_BOOM, vec, client, SNDLEVEL_RAIDSIREN);
+
+		IgniteEntity(client, GetConVarFloat(g_BurnDuration));
+		KillFireBomb(client);
+		
+		if (GetConVarInt(g_FireBombMode) > 0)
+		{
+			new teamOnly = ((GetConVarInt(g_TimeBombMode) == 1) ? true : false);
+			new maxClients = GetMaxClients();
+			
+			for (new i = 1; i < maxClients; i++)
+			{
+				if (!IsClientInGame(i) || !IsPlayerAlive(i) || i == client)
+				{
+					continue;
+				}
+				
+				if (teamOnly && GetClientTeam(i) != GetClientTeam(client))
+				{
+					continue;
+				}
+				
+				new Float:pos[3];
+				GetClientAbsOrigin(i, pos);
+				
+				new Float:distance = GetVectorDistance(vec, pos);
+				
+				if (distance > GetConVarFloat(g_FireBombRadius))
+				{
+					continue;
+				}
+				
+				new Float:duration = GetConVarFloat(g_BurnDuration);
+				duration *= (GetConVarFloat(g_TimeBombRadius) - distance) / GetConVarFloat(g_TimeBombRadius);
+
+				IgniteEntity(i, duration);
+			}		
+		}
+	}
+			
+	return Plugin_Handled;
+}
+
+public AdminMenu_Burn(Handle:topmenu, 
+					  TopMenuAction:action,
+					  TopMenuObject:object_id,
+					  param,
+					  String:buffer[],
+					  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		Format(buffer, maxlength, "%T", "Burn player", param);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{
+		DisplayBurnMenu(param);
+	}
+}
+
+public AdminMenu_FireBomb(Handle:topmenu, 
+					  TopMenuAction:action,
+					  TopMenuObject:object_id,
+					  param,
+					  String:buffer[],
+					  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		Format(buffer, maxlength, "%T", "FireBomb player", param);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{
+		DisplayFireBombMenu(param);
+	}
+}
+
+DisplayBurnMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_Burn);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "Burn player", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddTargetsToMenu(menu, client, true, true);
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
+DisplayFireBombMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_FireBomb);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "FireBomb player", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddTargetsToMenu(menu, client, true, true);
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
+public MenuHandler_Burn(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		new userid, target;
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		userid = StringToInt(info);
+
+		if ((target = GetClientOfUserId(userid)) == 0)
+		{
+			PrintToChat(param1, "[SM] %t", "Player no longer available");
+		}
+		else if (!CanUserTarget(param1, target))
+		{
+			PrintToChat(param1, "[SM] %t", "Unable to target");
+		}
+		else
+		{
+			new String:name[32];
+			GetClientName(target, name, sizeof(name));
+			PerformBurn(param1, target, 20.0);
+			ShowActivity2(param1, "[SM] ", "%t", "Set target on fire", "_s", name);
+		}
+		
+		/* Re-draw the menu if they're still valid */
+		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
+		{
+			DisplayBurnMenu(param1);
+		}
+	}
+}
+
+public MenuHandler_FireBomb(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		new userid, target;
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		userid = StringToInt(info);
+
+		if ((target = GetClientOfUserId(userid)) == 0)
+		{
+			PrintToChat(param1, "[SM] %t", "Player no longer available");
+		}
+		else if (!CanUserTarget(param1, target))
+		{
+			PrintToChat(param1, "[SM] %t", "Unable to target");
+		}
+		else
+		{
+			new String:name[32];
+			GetClientName(target, name, sizeof(name));
+			
+			PerformFireBomb(param1, target, 2);
+			ShowActivity2(param1, "[SM] ", "%t", "Toggled FireBomb on target", "_s", name);
+		}
+		
+		/* Re-draw the menu if they're still valid */
+		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
+		{
+			DisplayFireBombMenu(param1);
+		}
+	}
+}
+
+public Action:Command_Burn(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_burn <#userid|name> [time]");
+		return Plugin_Handled;
+	}
+
+	decl String:arg[65];
+	GetCmdArg(1, arg, sizeof(arg));
+
+	new Float:seconds = GetConVarFloat(g_BurnDuration);
+	
+	if (args > 1)
+	{
+		decl String:time[20];
+		GetCmdArg(2, time, sizeof(time));
+		if (StringToFloatEx(time, seconds) == 0)
+		{
+			ReplyToCommand(client, "[SM] %t", "Invalid Amount");
+			return Plugin_Handled;
+		}
+	}
+	
+	decl String:target_name[MAX_TARGET_LENGTH];
+	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
+	
+	if ((target_count = ProcessTargetString(
+			arg,
+			client,
+			target_list,
+			MAXPLAYERS,
+			COMMAND_FILTER_ALIVE,
+			target_name,
+			sizeof(target_name),
+			tn_is_ml)) <= 0)
+	{
+		ReplyToTargetError(client, target_count);
+		return Plugin_Handled;
+	}
+	
+	for (new i = 0; i < target_count; i++)
+	{
+		PerformBurn(client, target_list[i], seconds);
+	}
+	
+	if (tn_is_ml)
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Set target on fire", target_name);
+	}
+	else
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Set target on fire", "_s", target_name);
+	}
+
+	return Plugin_Handled;
+}
+
+public Action:Command_FireBomb(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_firebomb <#userid|name> [0/1]");
+		return Plugin_Handled;
+	}
+
+	decl String:arg[65];
+	GetCmdArg(1, arg, sizeof(arg));
+	
+	new toggle = 2;
+	if (args > 1)
+	{
+		decl String:arg2[2];
+		GetCmdArg(2, arg2, sizeof(arg2));
+		if (arg2[0])
+		{
+			toggle = 1;
+		}
+		else
+		{
+			toggle = 0;
+		}
+	}
+
+	decl String:target_name[MAX_TARGET_LENGTH];
+	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
+	
+	if ((target_count = ProcessTargetString(
+			arg,
+			client,
+			target_list,
+			MAXPLAYERS,
+			COMMAND_FILTER_ALIVE,
+			target_name,
+			sizeof(target_name),
+			tn_is_ml)) <= 0)
+	{
+		ReplyToTargetError(client, target_count);
+		return Plugin_Handled;
+	}
+	
+	for (new i = 0; i < target_count; i++)
+	{
+		PerformFireBomb(client, target_list[i], toggle);
+	}
+	
+	if (tn_is_ml)
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Toggled FireBomb on target", target_name);
+	}
+	else
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Toggled FireBomb on target", "_s", target_name);
+	}
+	
+	return Plugin_Handled;
+}
+
+
+
+
+
+
diff --git a/plugins/basefuncommands/ice.sp b/plugins/basefuncommands/ice.sp
new file mode 100644
index 00000000..fb870215
--- /dev/null
+++ b/plugins/basefuncommands/ice.sp
@@ -0,0 +1,554 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefuncommands Plugin
+ * Provides freeze and freezebomb functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+new Handle:g_FreezeTimers[MAXPLAYERS+1];
+new Handle:g_FreezeBombTimers[MAXPLAYERS+1];
+new g_FreezeTracker[MAXPLAYERS+1];
+new g_FreezeBombTracker[MAXPLAYERS+1];
+
+new Handle:g_FreezeDuration = INVALID_HANDLE;
+new Handle:g_FreezeBombTicks = INVALID_HANDLE;
+new Handle:g_FreezeBombRadius = INVALID_HANDLE;
+new Handle:g_FreezeBombMode = INVALID_HANDLE;
+
+SetupIce()
+{
+	RegAdminCmd("sm_freeze", Command_Freeze, ADMFLAG_SLAY, "sm_freeze <#userid|name> [time]");
+	RegAdminCmd("sm_freezebomb", Command_FreezeBomb, ADMFLAG_SLAY, "sm_freezebomb <#userid|name> [0/1]");
+
+	g_FreezeDuration = CreateConVar("sm_freeze_duration", "10.0", "Sets the default duration for sm_freeze and freezebomb victims", 0, true, 1.0, true, 120.0);	
+	g_FreezeBombTicks = CreateConVar("sm_freezebomb_ticks", "10", "Sets how long the freezebomb fuse is.", 0, true, 5.0, true, 120.0);
+	g_FreezeBombRadius = CreateConVar("sm_freezebomb_radius", "1000", "Sets the freezebomb blast radius.", 0, true, 50.0, true, 3000.0);
+	g_FreezeBombMode = CreateConVar("sm_freezebomb_mode", "0", "Who is targetted by the freezebomb? 0 = Target only, 1 = Target's team, 2 = Everyone", 0, true, 0.0, true, 2.0);
+}
+
+FreezeClient(client, time)
+{
+	if (g_FreezeTimers[client] != INVALID_HANDLE)
+	{
+		UnfreezeClient(client);
+	}
+	
+	SetEntityMovetype(client, MOVETYPE_NONE);
+	SetEntityRenderColor(client, 0, 128, 255, 192);
+	
+	new Float:vec[3];
+	GetClientEyePosition(client, vec);
+	EmitAmbientSound(SOUND_FREEZE, vec, client, SNDLEVEL_RAIDSIREN);
+
+	g_FreezeTimers[client] = CreateTimer(1.0, Timer_Freeze, client, TIMER_REPEAT);
+	g_FreezeTracker[client] = time;
+}
+
+UnfreezeClient(client)
+{
+	KillTimer(g_FreezeTimers[client]);
+	g_FreezeTimers[client] = INVALID_HANDLE;
+}
+
+CreateFreezeBomb(client)
+{
+	g_FreezeBombTimers[client] = CreateTimer(1.0, Timer_FreezeBomb, client, TIMER_REPEAT);
+	g_FreezeBombTracker[client] = GetConVarInt(g_FreezeBombTicks);
+}
+
+
+KillFreezeBomb(client)
+{
+	KillTimer(g_FreezeBombTimers[client]);
+	g_FreezeBombTimers[client] = INVALID_HANDLE;
+	
+	SetEntityRenderColor(client, 255, 255, 255, 255);
+}
+
+KillAllFreezes()
+{
+	new maxclients = GetMaxClients();
+	for (new i = 1; i <= maxclients; i++)
+	{
+		if (g_FreezeTimers[i] != INVALID_HANDLE)
+		{
+			UnfreezeClient(i);
+		}		
+		
+		if (g_FreezeBombTimers[i] != INVALID_HANDLE)
+		{
+			KillFreezeBomb(i);
+		}
+	}
+}
+
+PerformFreeze(client, target, time)
+{
+	FreezeClient(target, time);
+	LogAction(client, target, "\"%L\" froze \"%L\"", client, target);
+}
+
+PerformFreezeBomb(client, target, toggle)
+{
+	switch (toggle)
+	{
+		case (2):
+		{
+			if (g_FreezeBombTimers[target] == INVALID_HANDLE)
+			{
+				CreateFreezeBomb(target);
+				LogAction(client, target, "\"%L\" set a FreezeBomb on \"%L\"", client, target);
+			}
+			else
+			{
+				KillFreezeBomb(target);
+				LogAction(client, target, "\"%L\" removed a FreezeBomb on \"%L\"", client, target);
+			}
+		}
+
+		case (1):
+		{
+			if (g_FreezeBombTimers[target] == INVALID_HANDLE)
+			{
+				CreateFreezeBomb(target);
+				LogAction(client, target, "\"%L\" set a FreezeBomb on \"%L\"", client, target);
+			}
+		}
+		
+		case (0):
+		{
+			if (g_FreezeBombTimers[target] != INVALID_HANDLE)
+			{
+				KillFreezeBomb(target);
+				LogAction(client, target, "\"%L\" removed a FreezeBomb on \"%L\"", client, target);
+			}
+		}
+	}
+}
+
+public Action:Timer_Freeze(Handle:timer, any:client)
+{
+	if (!IsClientInGame(client) || !IsPlayerAlive(client))
+	{
+		KillFreezeBomb(client);
+
+		return Plugin_Handled;
+	}
+	
+	g_FreezeTracker[client]--;
+	
+	SetEntityMovetype(client, MOVETYPE_NONE);
+	SetEntityRenderColor(client, 0, 128, 255, 135);
+	
+	new Float:vec[3];
+	GetClientAbsOrigin(client, vec);
+	vec[2] += 10;
+	
+	TE_SetupGlowSprite(vec, g_GlowSprite, 0.95, 1.5, 50);
+	TE_SendToAll();	
+
+	if (g_FreezeTracker[client] == 0)
+	{
+		UnfreezeClient(client);
+
+		GetClientEyePosition(client, vec);
+		EmitAmbientSound(SOUND_FREEZE, vec, client, SNDLEVEL_RAIDSIREN);
+
+		SetEntityMovetype(client, MOVETYPE_WALK);
+		SetEntityRenderColor(client, 255, 255, 255, 255);		
+	}
+			
+	return Plugin_Handled;
+}
+
+public Action:Timer_FreezeBomb(Handle:timer, any:client)
+{
+	if (!IsClientInGame(client) || !IsPlayerAlive(client))
+	{
+		KillFreezeBomb(client);
+
+		return Plugin_Handled;
+	}
+	
+	g_FreezeBombTracker[client]--;
+	
+	new Float:vec[3];
+	GetClientEyePosition(client, vec);
+	
+	if (g_FreezeBombTracker[client] > 1)
+	{
+		new color;
+		
+		if (g_FreezeBombTracker[client] > 1)
+		{
+			color = RoundToFloor(g_FreezeBombTracker[client] * (255.0 / GetConVarFloat(g_FreezeBombTicks)));
+			EmitAmbientSound(SOUND_BEEP, vec, client, SNDLEVEL_RAIDSIREN);	
+		}
+		else
+		{
+			color = 0;
+			EmitAmbientSound(SOUND_FINAL, vec, client, SNDLEVEL_RAIDSIREN);
+		}
+		
+		SetEntityRenderColor(client, color, color, 255, 255);
+
+		decl String:name[64];
+		GetClientName(client, name, sizeof(name));
+		PrintCenterTextAll("%t", "Till Explodes", name, g_FreezeBombTracker[client]);
+		
+		GetClientAbsOrigin(client, vec);
+		vec[2] += 10;
+
+		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_FreezeBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, greyColor, 10, 0);
+		TE_SendToAll();
+		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_FreezeBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, whiteColor, 10, 0);
+		TE_SendToAll();
+	}
+	else
+	{
+		TE_SetupExplosion(vec, g_ExplosionSprite, 5.0, 1, 0, GetConVarInt(g_FreezeBombRadius), 5000);
+		TE_SendToAll();
+
+		EmitAmbientSound(SOUND_BOOM, vec, client, SNDLEVEL_RAIDSIREN);
+
+		KillFreezeBomb(client);
+		FreezeClient(client, GetConVarInt(g_FreezeDuration));
+		
+		if (GetConVarInt(g_FreezeBombMode) > 0)
+		{
+			new teamOnly = ((GetConVarInt(g_FreezeBombMode) == 1) ? true : false);
+			new maxClients = GetMaxClients();
+			
+			for (new i = 1; i < maxClients; i++)
+			{
+				if (!IsClientInGame(i) || !IsPlayerAlive(i) || i == client)
+				{
+					continue;
+				}
+				
+				if (teamOnly && GetClientTeam(i) != GetClientTeam(client))
+				{
+					continue;
+				}
+				
+				new Float:pos[3];
+				GetClientEyePosition(i, pos);
+				
+				new Float:distance = GetVectorDistance(vec, pos);
+				
+				if (distance > GetConVarFloat(g_FreezeBombRadius))
+				{
+					continue;
+				}
+				
+//stock TE_SetupBeamPoints(const Float:start[3], const Float:end[3], ModelIndex, HaloIndex, StartFrame, FrameRate, Float:Life, 
+//				Float:Width, Float:EndWidth, FadeLength, Float:Amplitude, const Color[4], Speed)
+				
+				TE_SetupBeamPoints(vec, pos, g_BeamSprite2, g_HaloSprite, 0, 1, 0.7, 20.0, 50.0, 1, 1.5, blueColor, 10);
+				TE_SendToAll();
+				
+				FreezeClient(i, GetConVarInt(g_FreezeDuration));
+			}		
+		}
+	}
+			
+	return Plugin_Handled;
+}
+
+public AdminMenu_Freeze(Handle:topmenu, 
+					  TopMenuAction:action,
+					  TopMenuObject:object_id,
+					  param,
+					  String:buffer[],
+					  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		Format(buffer, maxlength, "%T", "Freeze player", param);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{
+		DisplayFreezeMenu(param);
+	}
+}
+
+public AdminMenu_FreezeBomb(Handle:topmenu, 
+					  TopMenuAction:action,
+					  TopMenuObject:object_id,
+					  param,
+					  String:buffer[],
+					  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		Format(buffer, maxlength, "%T", "FreezeBomb player", param);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{
+		DisplayFreezeBombMenu(param);
+	}
+}
+
+DisplayFreezeMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_Freeze);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "Freeze player", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddTargetsToMenu(menu, client, true, true);
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
+DisplayFreezeBombMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_FreezeBomb);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "FreezeBomb player", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddTargetsToMenu(menu, client, true, true);
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
+public MenuHandler_Freeze(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		new userid, target;
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		userid = StringToInt(info);
+
+		if ((target = GetClientOfUserId(userid)) == 0)
+		{
+			PrintToChat(param1, "[SM] %t", "Player no longer available");
+		}
+		else if (!CanUserTarget(param1, target))
+		{
+			PrintToChat(param1, "[SM] %t", "Unable to target");
+		}
+		else
+		{
+			new String:name[32];
+			GetClientName(target, name, sizeof(name));
+			
+			PerformFreeze(param1, target, 2);
+			ShowActivity2(param1, "[SM] ", "%t", "Froze target", "_s", name);
+		}
+		
+		/* Re-draw the menu if they're still valid */
+		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
+		{
+			DisplayFreezeBombMenu(param1);
+		}
+	}
+}
+
+public MenuHandler_FreezeBomb(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		new userid, target;
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		userid = StringToInt(info);
+
+		if ((target = GetClientOfUserId(userid)) == 0)
+		{
+			PrintToChat(param1, "[SM] %t", "Player no longer available");
+		}
+		else if (!CanUserTarget(param1, target))
+		{
+			PrintToChat(param1, "[SM] %t", "Unable to target");
+		}
+		else
+		{
+			new String:name[32];
+			GetClientName(target, name, sizeof(name));
+			
+			PerformFreezeBomb(param1, target, 2);
+			ShowActivity2(param1, "[SM] ", "%t", "Toggled FreezeBomb on target", "_s", name);
+		}
+		
+		/* Re-draw the menu if they're still valid */
+		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
+		{
+			DisplayFreezeBombMenu(param1);
+		}
+	}
+}
+
+public Action:Command_Freeze(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_freeze <#userid|name> [time]");
+		return Plugin_Handled;
+	}
+
+	decl String:arg[65];
+	GetCmdArg(1, arg, sizeof(arg));
+	
+	new seconds = GetConVarInt(g_FreezeDuration);
+	
+	if (args > 1)
+	{
+		decl String:time[20];
+		GetCmdArg(2, time, sizeof(time));
+		if (StringToIntEx(time, seconds) == 0)
+		{
+			ReplyToCommand(client, "[SM] %t", "Invalid Amount");
+			return Plugin_Handled;
+		}
+	}	
+
+	decl String:target_name[MAX_TARGET_LENGTH];
+	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
+	
+	if ((target_count = ProcessTargetString(
+			arg,
+			client,
+			target_list,
+			MAXPLAYERS,
+			COMMAND_FILTER_ALIVE,
+			target_name,
+			sizeof(target_name),
+			tn_is_ml)) <= 0)
+	{
+		ReplyToTargetError(client, target_count);
+		return Plugin_Handled;
+	}
+	
+	for (new i = 0; i < target_count; i++)
+	{
+		PerformFreeze(client, target_list[i], seconds);
+	}
+	
+	if (tn_is_ml)
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Froze target", target_name);
+	}
+	else
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Froze target", "_s", target_name);
+	}
+	
+	return Plugin_Handled;
+}
+
+public Action:Command_FreezeBomb(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_freezebomb <#userid|name> [0/1]");
+		return Plugin_Handled;
+	}
+
+	decl String:arg[65];
+	GetCmdArg(1, arg, sizeof(arg));
+	
+	new toggle = 2;
+	if (args > 1)
+	{
+		decl String:arg2[2];
+		GetCmdArg(2, arg2, sizeof(arg2));
+		if (arg2[0])
+		{
+			toggle = 1;
+		}
+		else
+		{
+			toggle = 0;
+		}
+	}
+
+	decl String:target_name[MAX_TARGET_LENGTH];
+	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
+	
+	if ((target_count = ProcessTargetString(
+			arg,
+			client,
+			target_list,
+			MAXPLAYERS,
+			COMMAND_FILTER_ALIVE,
+			target_name,
+			sizeof(target_name),
+			tn_is_ml)) <= 0)
+	{
+		ReplyToTargetError(client, target_count);
+		return Plugin_Handled;
+	}
+	
+	for (new i = 0; i < target_count; i++)
+	{
+		PerformFreezeBomb(client, target_list[i], toggle);
+	}
+	
+	if (tn_is_ml)
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Toggled FreezeBomb on target", target_name);
+	}
+	else
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Toggled FreezeBomb on target", "_s", target_name);
+	}
+	
+	return Plugin_Handled;
+}
diff --git a/plugins/basefuncommands/timebomb.sp b/plugins/basefuncommands/timebomb.sp
new file mode 100644
index 00000000..ac63ea84
--- /dev/null
+++ b/plugins/basefuncommands/timebomb.sp
@@ -0,0 +1,364 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefuncommands Plugin
+ * Provides TimeBomb functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+new Handle:g_TimeBombTimers[MAXPLAYERS+1];
+new g_TimeBombTracker[MAXPLAYERS+1];
+
+new Handle:g_TimeBombTicks = INVALID_HANDLE;
+new Handle:g_TimeBombRadius = INVALID_HANDLE;
+new Handle:g_TimeBombMode = INVALID_HANDLE;
+
+SetupTimeBomb()
+{
+	RegAdminCmd("sm_timebomb", Command_TimeBomb, ADMFLAG_SLAY, "sm_timebomb <#userid|name> [0/1]");	
+	
+	g_TimeBombTicks = CreateConVar("sm_timebomb_ticks", "10", "Sets how long the timebomb fuse is.", 0, true, 5.0, true, 120.0);
+	g_TimeBombRadius = CreateConVar("sm_timebomb_radius", "600", "Sets the bomb blast radius.", 0, true, 50.0, true, 3000.0);
+	g_TimeBombMode = CreateConVar("sm_timebomb_mode", "0", "Who is killed by the timebomb? 0 = Target only, 1 = Target's team, 2 = Everyone", 0, true, 0.0, true, 2.0);
+}
+
+CreateTimeBomb(client)
+{
+	g_TimeBombTimers[client] = CreateTimer(1.0, Timer_TimeBomb, client, TIMER_REPEAT);
+	g_TimeBombTracker[client] = GetConVarInt(g_TimeBombTicks);
+}
+
+KillTimeBomb(client)
+{
+	KillTimer(g_TimeBombTimers[client]);
+	g_TimeBombTimers[client] = INVALID_HANDLE;
+	
+	SetEntityRenderColor(client, 255, 255, 255, 255);
+}
+
+KillAllTimeBombs()
+{
+	new maxclients = GetMaxClients();
+	for (new i = 1; i <= maxclients; i++)
+	{
+		if (g_TimeBombTimers[i] != INVALID_HANDLE)
+		{
+			KillTimeBomb(i);
+		}
+	}
+}
+
+PerformTimeBomb(client, target, toggle)
+{
+	switch (toggle)
+	{
+		case (2):
+		{
+			if (g_TimeBombTimers[target] == INVALID_HANDLE)
+			{
+				CreateTimeBomb(target);
+				LogAction(client, target, "\"%L\" set a TimeBomb on \"%L\"", client, target);
+			}
+			else
+			{
+				KillTimeBomb(target);
+				LogAction(client, target, "\"%L\" removed a TimeBomb on \"%L\"", client, target);
+			}			
+		}
+
+		case (1):
+		{
+			if (g_TimeBombTimers[target] == INVALID_HANDLE)
+			{
+				CreateTimeBomb(target);
+				LogAction(client, target, "\"%L\" set a TimeBomb on \"%L\"", client, target);
+			}			
+		}
+		
+		case (0):
+		{
+			if (g_TimeBombTimers[target] != INVALID_HANDLE)
+			{
+				KillTimeBomb(target);
+				LogAction(client, target, "\"%L\" removed a TimeBomb on \"%L\"", client, target);
+			}			
+		}
+	}
+}
+
+public Action:Timer_TimeBomb(Handle:timer, any:client)
+{
+	if (!IsClientInGame(client) || !IsPlayerAlive(client))
+	{
+		KillTimeBomb(client);		
+
+		return Plugin_Handled;
+	}
+	
+	g_TimeBombTracker[client]--;
+	
+	new Float:vec[3];
+	GetClientEyePosition(client, vec);
+	
+	if (g_TimeBombTracker[client] > 1)
+	{
+		new color;
+		
+		if (g_TimeBombTracker[client] > 1)
+		{
+			color = RoundToFloor(g_TimeBombTracker[client] * (128.0 / GetConVarFloat(g_TimeBombTicks)));
+			EmitAmbientSound(SOUND_BEEP, vec, client, SNDLEVEL_RAIDSIREN);	
+		}
+		else
+		{
+			color = 0;
+			EmitAmbientSound(SOUND_FINAL, vec, client, SNDLEVEL_RAIDSIREN);
+		}
+		
+		SetEntityRenderColor(client, 255, 128, color, 255);
+
+		decl String:name[64];
+		GetClientName(client, name, sizeof(name));
+		PrintCenterTextAll("%t", "Till Explodes", name, g_TimeBombTracker[client]);
+		
+		GetClientAbsOrigin(client, vec);
+		vec[2] += 10;
+
+		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_TimeBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, greyColor, 10, 0);
+		TE_SendToAll();
+		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_TimeBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, whiteColor, 10, 0);
+		TE_SendToAll();
+	}
+	else
+	{
+		TE_SetupExplosion(vec, g_ExplosionSprite, 5.0, 1, 0, GetConVarInt(g_TimeBombRadius), 5000);
+		TE_SendToAll();
+
+		EmitAmbientSound(SOUND_BOOM, vec, client, SNDLEVEL_RAIDSIREN);
+
+		ForcePlayerSuicide(client);
+		KillTimeBomb(client);
+		
+		if (GetConVarInt(g_TimeBombMode) > 0)
+		{
+			new teamOnly = ((GetConVarInt(g_TimeBombMode) == 1) ? true : false);
+			new maxClients = GetMaxClients();
+			
+			//g_FilteredEntity = client;
+			
+			for (new i = 1; i < maxClients; i++)
+			{
+				if (!IsClientInGame(i) || !IsPlayerAlive(i) || i == client)
+				{
+					continue;
+				}
+				
+				if (teamOnly && GetClientTeam(i) != GetClientTeam(client))
+				{
+					continue;
+				}
+				
+				new Float:pos[3];
+				GetClientEyePosition(i, pos);
+				
+				new Float:distance = GetVectorDistance(vec, pos);
+				
+				if (distance > GetConVarFloat(g_TimeBombRadius))
+				{
+					continue;
+				}
+				
+				new damage = 220;
+				damage = RoundToFloor(damage * ((GetConVarFloat(g_TimeBombRadius) - distance) / GetConVarFloat(g_TimeBombRadius)));
+					
+				SlapPlayer(i, damage, false);
+				TE_SetupExplosion(pos, g_ExplosionSprite, 0.05, 1, 0, 1, 1);
+				TE_SendToAll();				
+				
+				/*
+				new Float:dir[3];
+				SubtractVectors(vec, pos, dir);
+				TR_TraceRayFilter(vec, dir, MASK_SOLID, RayType_Infinite, TR_Filter_Client);
+
+				if (i == TR_GetEntityIndex())
+				{
+					new damage = 100;
+					new radius = GetConVarInt(g_TimeBombRadius) / 2;
+					
+					if (distance > radius)
+					{
+						distance -= radius;
+						damage = RoundToFloor(damage * ((radius - distance) / radius));
+					}
+					
+					SlapPlayer(i, damage, false);
+				}
+				*/
+			}		
+		}
+	}
+			
+	return Plugin_Handled;
+}
+
+public AdminMenu_TimeBomb(Handle:topmenu, 
+					  TopMenuAction:action,
+					  TopMenuObject:object_id,
+					  param,
+					  String:buffer[],
+					  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		Format(buffer, maxlength, "%T", "TimeBomb player", param);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{
+		DisplayTimeBombMenu(param);
+	}
+}
+
+DisplayTimeBombMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_TimeBomb);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "TimeBomb player", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddTargetsToMenu(menu, client, true, true);
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
+public MenuHandler_TimeBomb(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		new userid, target;
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		userid = StringToInt(info);
+
+		if ((target = GetClientOfUserId(userid)) == 0)
+		{
+			PrintToChat(param1, "[SM] %t", "Player no longer available");
+		}
+		else if (!CanUserTarget(param1, target))
+		{
+			PrintToChat(param1, "[SM] %t", "Unable to target");
+		}
+		else
+		{
+			new String:name[32];
+			GetClientName(target, name, sizeof(name));
+			
+			PerformTimeBomb(param1, target, 2);
+			ShowActivity2(param1, "[SM] ", "%t", "Toggled TimeBomb on target", "_s", name);
+		}
+		
+		/* Re-draw the menu if they're still valid */
+		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
+		{
+			DisplayTimeBombMenu(param1);
+		}
+	}
+}
+
+public Action:Command_TimeBomb(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_timebomb <#userid|name> [0/1]");
+		return Plugin_Handled;
+	}
+
+	decl String:arg[65];
+	GetCmdArg(1, arg, sizeof(arg));
+	
+	new toggle = 2;
+	if (args > 1)
+	{
+		decl String:arg2[2];
+		GetCmdArg(2, arg2, sizeof(arg2));
+		if (arg2[0])
+		{
+			toggle = 1;
+		}
+		else
+		{
+			toggle = 0;
+		}
+	}
+
+	decl String:target_name[MAX_TARGET_LENGTH];
+	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
+	
+	if ((target_count = ProcessTargetString(
+			arg,
+			client,
+			target_list,
+			MAXPLAYERS,
+			COMMAND_FILTER_ALIVE,
+			target_name,
+			sizeof(target_name),
+			tn_is_ml)) <= 0)
+	{
+		ReplyToTargetError(client, target_count);
+		return Plugin_Handled;
+	}
+	
+	for (new i = 0; i < target_count; i++)
+	{
+		PerformTimeBomb(client, target_list[i], toggle);
+	}
+	
+	if (tn_is_ml)
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Toggled TimeBomb on target", target_name);
+	}
+	else
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Toggled TimeBomb on target", "_s", target_name);
+	}
+	
+	return Plugin_Handled;
+}
diff --git a/plugins/slapslay.sp b/plugins/slapslay.sp
new file mode 100644
index 00000000..2bd5ed9f
--- /dev/null
+++ b/plugins/slapslay.sp
@@ -0,0 +1,103 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod SlapSlay Commands Plugin
+ * Implements slap and slay commands
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#pragma semicolon 1
+
+#include <sourcemod>
+#include <sdktools>
+#undef REQUIRE_PLUGIN
+#include <adminmenu>
+
+public Plugin:myinfo =
+{
+	name = "SlapSlay Commands",
+	author = "AlliedModders LLC",
+	description = "Slap and Slay Commands",
+	version = SOURCEMOD_VERSION,
+	url = "http://www.sourcemod.net/"
+};
+
+new Handle:hTopMenu = INVALID_HANDLE;
+
+#include "basefuncommands/slay.sp"
+#include "basefuncommands/slap.sp"
+
+public OnPluginStart()
+{
+	LoadTranslations("common.phrases");
+	LoadTranslations("slapslay.phrases");
+
+	RegAdminCmd("sm_slap", Command_Slap, ADMFLAG_SLAY, "sm_slap <#userid|name> [damage]");
+	RegAdminCmd("sm_slay", Command_Slay, ADMFLAG_SLAY, "sm_slay <#userid|name>");
+	
+	/* Account for late loading */
+	new Handle:topmenu;
+	if (LibraryExists("adminmenu") && ((topmenu = GetAdminTopMenu()) != INVALID_HANDLE))
+	{
+		OnAdminMenuReady(topmenu);
+	}
+}
+
+public OnAdminMenuReady(Handle:topmenu)
+{
+	/* Block us from being called twice */
+	if (topmenu == hTopMenu)
+	{
+		return;
+	}
+	
+	/* Save the Handle */
+	hTopMenu = topmenu;
+	
+	/* Find the "Player Commands" category */
+	new TopMenuObject:player_commands = FindTopMenuCategory(hTopMenu, ADMINMENU_PLAYERCOMMANDS);
+
+	if (player_commands != INVALID_TOPMENUOBJECT)
+	{
+		AddToTopMenu(hTopMenu,
+			"sm_slay",
+			TopMenuObject_Item,
+			AdminMenu_Slay,
+			player_commands,
+			"sm_slay",
+			ADMFLAG_SLAY);
+			
+		AddToTopMenu(hTopMenu,
+			"sm_slap",
+			TopMenuObject_Item,
+			AdminMenu_Slap,
+			player_commands,
+			"sm_slap",
+			ADMFLAG_SLAY);	
+	}
+}
\ No newline at end of file
diff --git a/plugins/basefuncommands/slap.sp b/plugins/slapslay/slap.sp
similarity index 95%
rename from plugins/basefuncommands/slap.sp
rename to plugins/slapslay/slap.sp
index f5216835..efa793cb 100644
--- a/plugins/basefuncommands/slap.sp
+++ b/plugins/slapslay/slap.sp
@@ -28,8 +28,10 @@
  * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
  * or <http://www.sourcemod.net/license.php>.
  *
- * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ * Version: $Id$
  */
+ 
+new g_SlapDamage[MAXPLAYERS+1];
 
 PerformSlap(client, target, damage)
 {
diff --git a/plugins/basefuncommands/slay.sp b/plugins/slapslay/slay.sp
similarity index 94%
rename from plugins/basefuncommands/slay.sp
rename to plugins/slapslay/slay.sp
index 3eb686bd..daa00232 100644
--- a/plugins/basefuncommands/slay.sp
+++ b/plugins/slapslay/slay.sp
@@ -28,7 +28,7 @@
  * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
  * or <http://www.sourcemod.net/license.php>.
  *
- * Version: $Id: admin-flatfile.sp 1438 2007-09-16 03:45:06Z dvander $
+ * Version: $Id$
  */
 
 PerformSlay(client, target)
diff --git a/translations/basefuncommands.phrases.txt b/translations/basefuncommands.phrases.txt
index d71f212a..e14a9e8e 100644
--- a/translations/basefuncommands.phrases.txt
+++ b/translations/basefuncommands.phrases.txt
@@ -11,37 +11,30 @@
 		"en"			"Burn player"
 	}
 	
+	"FireBomb player"
+	{
+		"en"			"Firebomb player"
+	}
+	
+	"Freeze player"
+	{
+		"en"			"Freeze player"
+	}
+	
+	"FreezeBomb player"
+	{
+		"en"			"Freezebomb player"
+	}	
+	
+	"TimeBomb player"
+	{
+		"en"			"Timebomb player"
+	}	
+	
 	"Beacon player"
 	{
 		"en"			"Beacon player"
 	}	
-
-	"Slap player"
-	{
-		"en"			"Slap player"
-	}
-
-	"Slap damage"
-	{
-		"en"			"Slap damage"
-	}
-	
-	"Slay player"
-	{
-		"en"			"Slay player"
-	}
-	
-	"Slapped target"
-	{
-		"#format"		"{1:t}"
-		"en"			"Slapped {1}."
-	}
-	
-	"Slayed target"
-	{
-		"#format"		"{1:t}"
-		"en"			"Slayed {1}."
-	}
 	
 	"Set target on fire"
 	{
@@ -49,9 +42,39 @@
 		"en"			"Set {1} on fire."
 	}
 	
+	"Toggled FireBomb on target"
+	{
+		"#format"		"{1:t}"
+		"en"			"set a firebomb on {1}."
+	}	
+
+	"Froze target"
+	{
+		"#format"		"{1:t}"
+		"en"			"froze {1}."
+	}
+	
+	"Toggled FreezeBomb on target"
+	{
+		"#format"		"{1:t}"
+		"en"			"set a freezebomb on {1}."
+	}	
+	
 	"Toggled beacon on target"
 	{
 		"#format"		"{1:t}"
 		"en"			"toggled beacon on {1}."
 	}
+	
+	"Toggled TimeBomb on target"
+	{
+		"#format"		"{1:t}"
+		"en"			"set a timebomb on {1}."
+	}	
+	
+	"Till Explodes"
+	{
+		"#format"		"{1:s},{2:d}"
+		"en"			"{2} seconds until {1} explodes."
+	}
 }
diff --git a/translations/slapslay.phrases.txt b/translations/slapslay.phrases.txt
new file mode 100644
index 00000000..ae8dc245
--- /dev/null
+++ b/translations/slapslay.phrases.txt
@@ -0,0 +1,29 @@
+"Phrases"
+{
+	"Slap player"
+	{
+		"en"			"Slap player"
+	}
+
+	"Slap damage"
+	{
+		"en"			"Slap damage"
+	}
+	
+	"Slay player"
+	{
+		"en"			"Slay player"
+	}
+	
+	"Slapped target"
+	{
+		"#format"		"{1:t}"
+		"en"			"Slapped {1}."
+	}
+	
+	"Slayed target"
+	{
+		"#format"		"{1:t}"
+		"en"			"Slayed {1}."
+	}
+}

From 4d5af8a946fb0c664c37cfe3a7814e41dea4842b Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Wed, 19 Dec 2007 01:20:56 +0000
Subject: [PATCH 124/263] Small adjustment to default convar values

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401808
---
 plugins/basefuncommands/fire.sp | 2 +-
 plugins/basefuncommands/ice.sp  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/basefuncommands/fire.sp b/plugins/basefuncommands/fire.sp
index d6222d22..69ffb456 100644
--- a/plugins/basefuncommands/fire.sp
+++ b/plugins/basefuncommands/fire.sp
@@ -46,7 +46,7 @@ SetupFire()
 	
 	g_BurnDuration = CreateConVar("sm_burn_duration", "20", "Sets the default duration of sm_burn and firebomb victims.", 0, true, 0.5, true, 20.0);
 	g_FireBombTicks = CreateConVar("sm_firebomb_ticks", "10", "Sets how long the FireBomb fuse is.", 0, true, 5.0, true, 120.0);
-	g_FireBombRadius = CreateConVar("sm_firebomb_radius", "1000", "Sets the bomb blast radius.", 0, true, 50.0, true, 3000.0);
+	g_FireBombRadius = CreateConVar("sm_firebomb_radius", "600", "Sets the bomb blast radius.", 0, true, 50.0, true, 3000.0);
 	g_FireBombMode = CreateConVar("sm_firebomb_mode", "0", "Who is targetted by the FireBomb? 0 = Target only, 1 = Target's team, 2 = Everyone", 0, true, 0.0, true, 2.0);
 }
 
diff --git a/plugins/basefuncommands/ice.sp b/plugins/basefuncommands/ice.sp
index fb870215..c9dfc7db 100644
--- a/plugins/basefuncommands/ice.sp
+++ b/plugins/basefuncommands/ice.sp
@@ -48,7 +48,7 @@ SetupIce()
 
 	g_FreezeDuration = CreateConVar("sm_freeze_duration", "10.0", "Sets the default duration for sm_freeze and freezebomb victims", 0, true, 1.0, true, 120.0);	
 	g_FreezeBombTicks = CreateConVar("sm_freezebomb_ticks", "10", "Sets how long the freezebomb fuse is.", 0, true, 5.0, true, 120.0);
-	g_FreezeBombRadius = CreateConVar("sm_freezebomb_radius", "1000", "Sets the freezebomb blast radius.", 0, true, 50.0, true, 3000.0);
+	g_FreezeBombRadius = CreateConVar("sm_freezebomb_radius", "600", "Sets the freezebomb blast radius.", 0, true, 50.0, true, 3000.0);
 	g_FreezeBombMode = CreateConVar("sm_freezebomb_mode", "0", "Who is targetted by the freezebomb? 0 = Target only, 1 = Target's team, 2 = Everyone", 0, true, 0.0, true, 2.0);
 }
 

From 023e5629c759cbf8453f720324057936c22fe98c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 19 Dec 2007 01:34:01 +0000
Subject: [PATCH 125/263] renamed slapslay to playercommands

--HG--
rename : plugins/slapslay.sp => plugins/playercommands.sp
rename : plugins/slapslay/slap.sp => plugins/playercommands/slap.sp
rename : plugins/slapslay/slay.sp => plugins/playercommands/slay.sp
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401809
---
 plugins/{slapslay.sp => playercommands.sp}   | 4 ++--
 plugins/{slapslay => playercommands}/slap.sp | 0
 plugins/{slapslay => playercommands}/slay.sp | 0
 3 files changed, 2 insertions(+), 2 deletions(-)
 rename plugins/{slapslay.sp => playercommands.sp} (94%)
 rename plugins/{slapslay => playercommands}/slap.sp (100%)
 rename plugins/{slapslay => playercommands}/slay.sp (100%)

diff --git a/plugins/slapslay.sp b/plugins/playercommands.sp
similarity index 94%
rename from plugins/slapslay.sp
rename to plugins/playercommands.sp
index 2bd5ed9f..5709333b 100644
--- a/plugins/slapslay.sp
+++ b/plugins/playercommands.sp
@@ -49,8 +49,8 @@ public Plugin:myinfo =
 
 new Handle:hTopMenu = INVALID_HANDLE;
 
-#include "basefuncommands/slay.sp"
-#include "basefuncommands/slap.sp"
+#include "playercommands/slay.sp"
+#include "playercommands/slap.sp"
 
 public OnPluginStart()
 {
diff --git a/plugins/slapslay/slap.sp b/plugins/playercommands/slap.sp
similarity index 100%
rename from plugins/slapslay/slap.sp
rename to plugins/playercommands/slap.sp
diff --git a/plugins/slapslay/slay.sp b/plugins/playercommands/slay.sp
similarity index 100%
rename from plugins/slapslay/slay.sp
rename to plugins/playercommands/slay.sp

From d851108dd25631997ba214050cedf09a7bb476f9 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 19 Dec 2007 01:35:24 +0000
Subject: [PATCH 126/263] added "playercommands" to build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401810
---
 tools/builder/PkgCore.cs | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/builder/PkgCore.cs b/tools/builder/PkgCore.cs
index c5df9f5f..67ea621f 100644
--- a/tools/builder/PkgCore.cs
+++ b/tools/builder/PkgCore.cs
@@ -289,6 +289,7 @@ namespace builder
 			plugins.Add(new Plugin("randomcycle", true));
 			plugins.Add(new Plugin("rockthevote", true));
 			plugins.Add(new Plugin("adminmenu"));
+			plugins.Add(new Plugin("playercommands"));
 
 			return (Plugin [])plugins.ToArray(typeof(Plugin));
 		}

From ae766d315060a3c1ed0bfc663bbc8882f2f22ad9 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 19 Dec 2007 01:46:22 +0000
Subject: [PATCH 127/263] fixed build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401811
---
 tools/builder/PkgCore.cs | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/builder/PkgCore.cs b/tools/builder/PkgCore.cs
index 67ea621f..12ec36f3 100644
--- a/tools/builder/PkgCore.cs
+++ b/tools/builder/PkgCore.cs
@@ -118,6 +118,7 @@ namespace builder
 			builder.CopyFolder(this, "plugins/basevotes", "addons/sourcemod/scripting/basevotes", null);
 			builder.CopyFolder(this, "plugins/basebans", "addons/sourcemod/scripting/basebans", null);
 			builder.CopyFolder(this, "plugins/basefuncommands", "addons/sourcemod/scripting/basefuncommands", null);
+			builder.CopyFolder(this, "plugins/playercommands", "addons/sourcemod/scripting/playercommands", null);
 		}
 
 		/**

From 24db2b259779299c11ef76570f49a0d7b037fd09 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 19 Dec 2007 01:47:26 +0000
Subject: [PATCH 128/263] fixed build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401812
---
 tools/builder/PkgCore.cs | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/builder/PkgCore.cs b/tools/builder/PkgCore.cs
index 12ec36f3..0ef84bd5 100644
--- a/tools/builder/PkgCore.cs
+++ b/tools/builder/PkgCore.cs
@@ -66,6 +66,7 @@ namespace builder
 			folders.Add("addons/sourcemod/extensions/auto.1.ep1");
 			folders.Add("addons/sourcemod/extensions/auto.2.ep1");
 			folders.Add("addons/sourcemod/extensions/auto.2.ep2");
+			folders.Add("addons/sourcemod/scripting/playercommands");
 			
 			return (string [])folders.ToArray(typeof(string));
 		}

From 4d594bd4c72351603b56aa802a7bf36b24fc9ca0 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Wed, 19 Dec 2007 22:21:20 +0000
Subject: [PATCH 129/263] Fixed sm_freeze menu exit going to sm_freezebomb menu
 Fixed countdown timer on bombs stopping at 2 seconds, now stops at 1 second
 like it should.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401814
---
 plugins/basefuncommands/fire.sp     | 2 +-
 plugins/basefuncommands/ice.sp      | 7 ++-----
 plugins/basefuncommands/timebomb.sp | 2 +-
 3 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/plugins/basefuncommands/fire.sp b/plugins/basefuncommands/fire.sp
index 69ffb456..b05c0220 100644
--- a/plugins/basefuncommands/fire.sp
+++ b/plugins/basefuncommands/fire.sp
@@ -134,7 +134,7 @@ public Action:Timer_FireBomb(Handle:timer, any:client)
 	new Float:vec[3];
 	GetClientEyePosition(client, vec);
 	
-	if (g_FireBombTracker[client] > 1)
+	if (g_FireBombTracker[client] > 0)
 	{
 		new color;
 		
diff --git a/plugins/basefuncommands/ice.sp b/plugins/basefuncommands/ice.sp
index c9dfc7db..2066d4a6 100644
--- a/plugins/basefuncommands/ice.sp
+++ b/plugins/basefuncommands/ice.sp
@@ -201,7 +201,7 @@ public Action:Timer_FreezeBomb(Handle:timer, any:client)
 	new Float:vec[3];
 	GetClientEyePosition(client, vec);
 	
-	if (g_FreezeBombTracker[client] > 1)
+	if (g_FreezeBombTracker[client] > 0)
 	{
 		new color;
 		
@@ -267,9 +267,6 @@ public Action:Timer_FreezeBomb(Handle:timer, any:client)
 					continue;
 				}
 				
-//stock TE_SetupBeamPoints(const Float:start[3], const Float:end[3], ModelIndex, HaloIndex, StartFrame, FrameRate, Float:Life, 
-//				Float:Width, Float:EndWidth, FadeLength, Float:Amplitude, const Color[4], Speed)
-				
 				TE_SetupBeamPoints(vec, pos, g_BeamSprite2, g_HaloSprite, 0, 1, 0.7, 20.0, 50.0, 1, 1.5, blueColor, 10);
 				TE_SendToAll();
 				
@@ -384,7 +381,7 @@ public MenuHandler_Freeze(Handle:menu, MenuAction:action, param1, param2)
 		/* Re-draw the menu if they're still valid */
 		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
 		{
-			DisplayFreezeBombMenu(param1);
+			DisplayFreezeMenu(param1);
 		}
 	}
 }
diff --git a/plugins/basefuncommands/timebomb.sp b/plugins/basefuncommands/timebomb.sp
index ac63ea84..b808b4f5 100644
--- a/plugins/basefuncommands/timebomb.sp
+++ b/plugins/basefuncommands/timebomb.sp
@@ -125,7 +125,7 @@ public Action:Timer_TimeBomb(Handle:timer, any:client)
 	new Float:vec[3];
 	GetClientEyePosition(client, vec);
 	
-	if (g_TimeBombTracker[client] > 1)
+	if (g_TimeBombTracker[client] > 0)
 	{
 		new color;
 		

From 6c9c7327ca1a9eb581ed5b00a2735254327ba564 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Wed, 19 Dec 2007 22:22:35 +0000
Subject: [PATCH 130/263] Added new fun commands to adminmenu_sorting.txt

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401815
---
 configs/adminmenu_sorting.txt | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/configs/adminmenu_sorting.txt b/configs/adminmenu_sorting.txt
index 8dc3a1cb..24a9dbee 100644
--- a/configs/adminmenu_sorting.txt
+++ b/configs/adminmenu_sorting.txt
@@ -13,7 +13,12 @@
 		"item"		"sm_kick"
 		"item"		"sm_ban"
 		"item"		"sm_gag"
-		"item"		"sm_burn"
+		"item"		"sm_burn"		
+		"item"		"sm_beacon"
+		"item"		"sm_freeze"
+		"item"		"sm_timebomb"
+		"item"		"sm_firebomb"
+		"item"		"sm_freezebomb"
 	}
 
 	"ServerCommands"

From 02e210ae027ef760d474e439316d734afbf3dd23 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 21 Dec 2007 06:05:48 +0000
Subject: [PATCH 131/263] added support for Hidden:Source

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401816
---
 gamedata/sdktools.games.txt | 94 +++++++++++++++++++++++++++++++++++++
 1 file changed, 94 insertions(+)

diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index fb742734..b7962f52 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -43,6 +43,7 @@
 			"game"		"FortressForever"
 			"game"		"empires"
 			"game"		"synergy"
+			"game"		"hidden"
 		}
 
 		"Offsets"
@@ -102,6 +103,7 @@
 			"game"		"FortressForever"
 			"game"		"empires"
 			"game"		"synergy"
+			"game"		"hidden"
 		}
 		
 		"Offsets"
@@ -153,6 +155,7 @@
 			"game"		"FortressForever"
 			"game"		"empires"
 			"game"		"synergy"
+			"game"		"hidden"
 		}
 		
 		"Offsets"
@@ -201,6 +204,7 @@
 			"game"		"FortressForever"
 			"game"		"empires"
 			"game"		"synergy"
+			"game"		"hidden"
 		}
 
 		"Signatures"
@@ -1322,5 +1326,95 @@
 			}
 		}
 	}
+	
+	/* Hidden:Source Beta 4b */
+	"hidden"
+	{
+		"Offsets"
+		{
+			/* CBasePlayer */
+			"GiveNamedItem"
+			{
+				"windows"	"348"
+				"linux"		"349"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"207"
+				"linux"		"208"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"205"
+				"linux"		"206"
+			}
+			"Ignite"
+			{
+				"windows"	"170"
+				"linux"		"171"
+			}
+			"Extinguish"
+			{
+				"windows"	"171"
+				"linux"		"172"
+			}
+			"Teleport"
+			{
+				"windows"	"90"
+				"linux"		"91"
+			}
+			"GetVelocity"
+			{
+				"windows"	"114"
+				"linux"		"115"
+			}
+			"EyeAngles"
+			{
+				"windows"	"106"
+				"linux"		"107"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"30"
+				"linux"		"29"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"29"
+				"linux"		"30"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"28"
+				"linux"		"31"
+			}
+			"AcceptInput"
+			{
+				"windows"	"34"
+				"linux"		"35"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+			
+			"TE_GetServerClass"
+			{
+				"windows"	"0"
+				"linux"		"0"
+			}
+		}
+		
+		"Signatures"
+		{
+			"DispatchSpawn"
+			{
+				"library"	"server"
+				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
+				"windows"	"\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x14"
+			}
+		}
+	}
 }
 

From f87da92617edc286c072e219001a0933df872b73 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 21 Dec 2007 06:17:04 +0000
Subject: [PATCH 132/263] fixed amb1291 - CommitSuicide offsets missing for a
 few mods

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401817
---
 gamedata/sdktools.games.txt | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index b7962f52..23f15a42 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -1215,6 +1215,11 @@
 				"windows"	"98"
 				"linux"		"99"
 			}
+			"CommitSuicide"
+			{
+				"windows"	"356"
+				"linux"		"357"
+			}
 			"GetVelocity"
 			{
 				"windows"	"126"
@@ -1289,6 +1294,11 @@
 				"windows"	"98"
 				"linux"		"99"
 			}
+			"CommitSuicide"
+			{
+				"windows"	"362"
+				"linux"		"363"
+			}
 			"GetVelocity"
 			{
 				"windows"	"126"

From ad5ef39cb463af7aed342a8e5329e6d71fbc82de Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 22 Dec 2007 05:16:18 +0000
Subject: [PATCH 133/263] patched amb1296 - multi-d r-values are now impossible

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401818
---
 sourcepawn/compiler/msvc8/spcomp.vcproj | 12 ++++++------
 sourcepawn/compiler/sc3.c               |  3 ++-
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/sourcepawn/compiler/msvc8/spcomp.vcproj b/sourcepawn/compiler/msvc8/spcomp.vcproj
index 312f8f91..ead149fd 100644
--- a/sourcepawn/compiler/msvc8/spcomp.vcproj
+++ b/sourcepawn/compiler/msvc8/spcomp.vcproj
@@ -39,12 +39,12 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
-				Optimization="3"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				EnableFiberSafeOptimizations="true"
+				Optimization="0"
+				InlineFunctionExpansion="0"
+				EnableIntrinsicFunctions="false"
+				FavorSizeOrSpeed="0"
+				OmitFramePointers="false"
+				EnableFiberSafeOptimizations="false"
 				AdditionalIncludeDirectories="..\..\..\public\sourcepawn"
 				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
 				MinimalRebuild="true"
diff --git a/sourcepawn/compiler/sc3.c b/sourcepawn/compiler/sc3.c
index c9a86974..19332800 100644
--- a/sourcepawn/compiler/sc3.c
+++ b/sourcepawn/compiler/sc3.c
@@ -1207,7 +1207,7 @@ static int hier14(value *lval1)
       } /* if */
     } /* if */
     if (lval3.sym->dim.array.level!=level)
-      return error(48); /* array dimensions must match */
+      return error(47); /* array dimensions must match */
     else if (ltlength<val || exactmatch && ltlength>val || val==0)
       return error(47); /* array sizes must match */
     else if (lval3.ident!=iARRAYCELL && !matchtag(lval3.sym->x.tags.index,idxtag,TRUE))
@@ -1217,6 +1217,7 @@ static int hier14(value *lval1)
       symbol *sym1 = lval3.sym;
       symbol *sym2 = lval2.sym;
       int i;
+      error(23);
       assert(sym1!=NULL && sym2!=NULL);
       /* ^^^ sym2 must be valid, because only variables can be
        *     multi-dimensional (there are no multi-dimensional literals),

From a079a87f68b1030b3b7c3f0a9880fe88747f8fe8 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 22 Dec 2007 08:57:08 +0000
Subject: [PATCH 134/263] fixed amb1305 by making OnClientPostAdminCheck()
 always occur after OnClientPutInServer().  this is now GUARANTEED.  it was
 undefined before, however the usual case was opposite.  if plugins were
 relying on this, they were written poorly and shouldn't have worked in the
 first place, especially with the threaded SQL plugin.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401819
---
 core/PlayerManager.cpp      | 12 +++++++-----
 plugins/include/clients.inc | 29 ++++++++++++++++++++++-------
 2 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp
index 0e54712f..dcee273e 100644
--- a/core/PlayerManager.cpp
+++ b/core/PlayerManager.cpp
@@ -489,6 +489,11 @@ void PlayerManager::OnClientPutInServer(edict_t *pEntity, const char *playername
 
 	m_clputinserver->PushCell(client);
 	m_clputinserver->Execute(&res, NULL);
+
+	if (m_Players[client].IsAuthorized())
+	{
+		m_Players[client].DoPostConnectAuthorization();
+	}
 }
 
 void PlayerManager::OnSourceModLevelEnd()
@@ -1144,13 +1149,10 @@ void CPlayer::Connect()
 	{
 		const char *pass = engine->GetClientConVarValue(client, var);
 		m_LastPassword.assign(pass ? pass : "");
-	} else {
-		m_LastPassword.assign("");
 	}
-
-	if (m_IsAuthorized)
+	else
 	{
-		DoPostConnectAuthorization();
+		m_LastPassword.assign("");
 	}
 }
 
diff --git a/plugins/include/clients.inc b/plugins/include/clients.inc
index 219a25dd..69d90587 100644
--- a/plugins/include/clients.inc
+++ b/plugins/include/clients.inc
@@ -56,10 +56,15 @@ enum NetFlow
 forward bool:OnClientConnect(client, String:rejectmsg[], maxlen);
 
 /**
- * Called when a client is entering to the game.
+ * Called when a client is entering the game.
  *
- * @note Whether a client has a steamid is undefined until OnClientAuthorized
+ * Whether a client has a steamid is undefined until OnClientAuthorized
  * is called, which may occur either before or after OnClientPutInServer.
+ * Similarly, use OnClientPostAdminCheck() if you need to verify whether 
+ * connecting players are admins.
+ *
+ * GetClientCount() will include clients as they are passed through this 
+ * function, as clients are already in game at this point.
  *
  * @param client		Client index.
  * @noreturn
@@ -100,9 +105,11 @@ forward Action:OnClientCommand(client, args);
 forward OnClientSettingsChanged(client);
 
 /**
- * Called when a client receives a Steam ID.
- 
- * Admin properties are not assigned here, but on OnClientPostAdminCheck().
+ * Called when a client receives a Steam ID.  The state of a client's 
+ * authorization via Steam or as an admin is not guaranteed here.  
+ * Use OnClientAuthorized() or OnClientPostAdminCheck() for those, 
+ * respectively.
+ *
  * This is called by bots, but the ID will be "BOT".
  *
  * @param client		Client index.
@@ -114,11 +121,16 @@ forward OnClientAuthorized(client, const String:auth[]);
 /**
  * Called once a client is authorized and fully in-game, but 
  * before admin checks are done.  This can be used to override 
- * the default admin checks for a client.
+ * the default admin checks for a client.  You should only use 
+ * this for overriding; use OnClientPostAdminCheck() instead 
+ * if you want notification.
  *
  * Note: If handled/blocked, PostAdminCheck must be signalled 
  * manually via NotifyPostAdminCheck().
  *
+ * This callback is gauranteed to occur on all clients, and always 
+ * after each OnClientPutInServer() call.
+ *
  * @param client		Client index.
  * @return				Plugin_Handled to block admin checks.
  */
@@ -126,7 +138,10 @@ forward Action:OnClientPreAdminCheck(client);
 
 /**
  * Called once a client is authorized and fully in-game, and 
- * after all post-connection authorizations have been performed.
+ * after all post-connection authorizations have been performed.  
+ *
+ * This callback is gauranteed to occur on all clients, and always 
+ * after each OnClientPutInServer() call.
  *
  * @param client		Client index.
  * @noreturn

From c3456b880495bf246a459c61ff9088384cbcd83b Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 22 Dec 2007 19:35:54 +0000
Subject: [PATCH 135/263] moved errno.h to top of platform includes fixed bug
 where FormatMessage() did not ignore inserts

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401820
---
 core/systems/LibrarySys.cpp | 2 +-
 public/sm_platform.h        | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/core/systems/LibrarySys.cpp b/core/systems/LibrarySys.cpp
index 6b067217..15386387 100644
--- a/core/systems/LibrarySys.cpp
+++ b/core/systems/LibrarySys.cpp
@@ -278,7 +278,7 @@ void LibrarySystem::GetPlatformError(char *error, size_t maxlength)
 #if defined PLATFORM_WINDOWS
 		DWORD dw = GetLastError();
 		FormatMessageA(
-			FORMAT_MESSAGE_FROM_SYSTEM,
+			FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
 			NULL,
 			dw,
 			MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
diff --git a/public/sm_platform.h b/public/sm_platform.h
index 7a8405e3..2cc0e29f 100644
--- a/public/sm_platform.h
+++ b/public/sm_platform.h
@@ -63,9 +63,9 @@
 #elif defined __linux__
 #define PLATFORM_LINUX
 #define PLATFORM_POSIX
+#include <errno.h>
 #include <unistd.h>
 #include <dirent.h>
-#include <errno.h>
 #include <dlfcn.h>
 #include <sys/stat.h>
 #define PLATFORM_MAX_PATH		PATH_MAX

From f8f5a6a8888093076aaff4dae21b7e3d9df4d2b6 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 22 Dec 2007 19:36:28 +0000
Subject: [PATCH 136/263] added extended error info to text parser API;
 GameConfigs now display better errors

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401821
---
 core/GameConfigs.cpp  |  7 +------
 core/TextParsers.cpp  | 34 ++++++++++++++++++++++++++++++++++
 core/TextParsers.h    |  6 ++++++
 public/ITextParsers.h | 17 ++++++++++++++++-
 4 files changed, 57 insertions(+), 7 deletions(-)

diff --git a/core/GameConfigs.cpp b/core/GameConfigs.cpp
index 3811c3fa..cb96c655 100644
--- a/core/GameConfigs.cpp
+++ b/core/GameConfigs.cpp
@@ -508,14 +508,9 @@ bool CGameConfig::Reparse(char *error, size_t maxlength)
 	sm_trie_clear(m_pProps);
 	sm_trie_clear(m_pKeys);
 
-	if ((err=textparsers->ParseFile_SMC(path, this, NULL))
+	if ((err=textparsers->ParseSMCFile(path, this, NULL, error, maxlength))
 		!= SMCError_Okay)
 	{
-		if (error && (err != SMCError_Custom))
-		{
-			const char *str = textparsers->GetSMCErrorString(err);
-			snprintf(error, maxlength, "%s", str);
-		}
 		return false;
 	}
 
diff --git a/core/TextParsers.cpp b/core/TextParsers.cpp
index 51c23227..781ada22 100644
--- a/core/TextParsers.cpp
+++ b/core/TextParsers.cpp
@@ -37,6 +37,8 @@
 #include <assert.h>
 #include "TextParsers.h"
 #include "ShareSys.h"
+#include "sm_stringutil.h"
+#include "LibrarySys.h"
 
 TextParsers g_TextParser;
 ITextParsers *textparsers = &g_TextParser;
@@ -155,6 +157,38 @@ SMCError TextParsers::ParseFile_SMC(const char *file, ITextListener_SMC *smc, SM
 	return result;
 }
 
+SMCError TextParsers::ParseSMCFile(const char *file,
+								   ITextListener_SMC *smc_listener,
+								   SMCStates *states,
+								   char *buffer,
+								   size_t maxsize)
+{
+	const char *errstr;
+	FILE *fp = fopen(file, "rt");
+
+	if (fp == NULL)
+	{
+		char error[256] = "unknown";
+		if (states != NULL)
+		{
+			states->line = 0;
+			states->col = 0;
+		}
+		g_LibSys.GetPlatformError(error, sizeof(error));
+		UTIL_Format(buffer, maxsize, "File could not be opened: %s", error);
+		return SMCError_StreamOpen;
+	}
+
+	SMCError result = ParseStream_SMC(fp, FileStreamReader, smc_listener, states);
+
+	fclose(fp);
+
+	errstr = GetSMCErrorString(result);
+	UTIL_Format(buffer, maxsize, "%s", errstr != NULL ? errstr : "Unknown error");
+
+	return result;
+}
+
 /** 
  * Raw parsing of streams with helper functions
  */
diff --git a/core/TextParsers.h b/core/TextParsers.h
index 6065b0cf..7762c263 100644
--- a/core/TextParsers.h
+++ b/core/TextParsers.h
@@ -64,6 +64,12 @@ public:
 		ITextListener_SMC *smc_listener, 
 		SMCStates *states);
 
+	SMCError ParseSMCFile(const char *file,
+			ITextListener_SMC *smc_listener,
+			SMCStates *states,
+			char *buffer,
+			size_t maxsize);
+
 	unsigned int GetUTF8CharBytes(const char *stream);
 
 	const char *GetSMCErrorString(SMCError err);
diff --git a/public/ITextParsers.h b/public/ITextParsers.h
index 85f675e3..6cbdac95 100644
--- a/public/ITextParsers.h
+++ b/public/ITextParsers.h
@@ -43,7 +43,7 @@ namespace SourceMod
 {
 
 	#define SMINTERFACE_TEXTPARSERS_NAME		"ITextParsers"
-	#define SMINTERFACE_TEXTPARSERS_VERSION		2
+	#define SMINTERFACE_TEXTPARSERS_VERSION		3
 
 	/**
 	 * The INI file format is defined as:
@@ -390,6 +390,21 @@ namespace SourceMod
 		 * @return				True if first character is whitespace, false otherwise.
 		 */
 		virtual bool IsWhitespace(const char *stream) =0;
+
+		/**
+		 * @brief Same as ParseFile_SMC, but with an extended error buffer.
+		 *
+		 * @param file			Path to file.
+		 * @param smc_listener	Event handler for reading file.
+		 * @param states		Optional pointer to store last known states.
+		 * @param buffer		Error message buffer.
+		 * @param maxsize		Maximum size of the error buffer.
+		 */
+		virtual SMCError ParseSMCFile(const char *file,
+			ITextListener_SMC *smc_listener,
+			SMCStates *states,
+			char *buffer,
+			size_t maxsize) =0;
 	};
 
 	inline unsigned int _GetUTF8CharBytes(const char *stream)

From 474f4d86c6bae91bea583da61dd6d1caaae1d287 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 23 Dec 2007 00:08:08 +0000
Subject: [PATCH 137/263] added pdb logging

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401822
---
 tools/builder/Config.cs       |  5 +++++
 tools/builder/Main.cs         |  4 ++++
 tools/builder/Win32Builder.cs | 12 ++++++++----
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/tools/builder/Config.cs b/tools/builder/Config.cs
index 309fce4e..3deb61fe 100644
--- a/tools/builder/Config.cs
+++ b/tools/builder/Config.cs
@@ -16,6 +16,7 @@ namespace builder
 		public string pkg_path;
 		public string builder_path;
 		public string build_options;
+		public string pdb_log_file;
 		public builder.BasePlatform Platform;
 
 		public Config()
@@ -85,6 +86,10 @@ namespace builder
 						{
 							build_options = val;
 						}
+						else if (key.CompareTo("PDBLog") == 0)
+						{
+							pdb_log_file = val;
+						}
 					}
 				}
 			} 
diff --git a/tools/builder/Main.cs b/tools/builder/Main.cs
index 5fb74963..e4aa6452 100644
--- a/tools/builder/Main.cs
+++ b/tools/builder/Main.cs
@@ -31,6 +31,10 @@ namespace builder
 			else if (cfg.Platform == BasePlatform.Platform_Windows)
 			{
 				bld = new Win32Builder(cfg);
+				if (cfg.pdb_log_file != null && File.Exists(cfg.pdb_log_file))
+				{
+					File.Delete(cfg.pdb_log_file);
+				}
 			}
 
 			try
diff --git a/tools/builder/Win32Builder.cs b/tools/builder/Win32Builder.cs
index eff27468..99a55426 100644
--- a/tools/builder/Win32Builder.cs
+++ b/tools/builder/Win32Builder.cs
@@ -101,10 +101,14 @@ namespace builder
 				binName);
 			File.Copy(binpath, path, true);
 
-			/* On Windows we package the .pdb files as well */
-			binpath = binpath.Replace(".dll", ".pdb");
-			path = path.Replace(".dll", ".pdb");
-			File.Copy(binpath, path, true);
+			/* On Windows we optionally log the PDB path */
+			if (!lib.is_executable && cfg.pdb_log_file != null)
+			{
+				FileStream fs = File.Open(cfg.pdb_log_file, FileMode.Append, FileAccess.Write);
+				StreamWriter sw = new StreamWriter(fs);
+				sw.WriteLine(binpath.Replace(".dll", ".pdb"));
+				sw.Close();
+			}
 
 			return true;
 		}

From e1748d9814a892f97825ba99b33f7790f8ed374e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 23 Dec 2007 00:17:54 +0000
Subject: [PATCH 138/263] disabled mm:s 1.6-episode1 builds

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401823
---
 tools/builder/ABuilder.cs | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tools/builder/ABuilder.cs b/tools/builder/ABuilder.cs
index 1500d699..ffe46784 100644
--- a/tools/builder/ABuilder.cs
+++ b/tools/builder/ABuilder.cs
@@ -172,6 +172,10 @@ namespace builder
 			Library [] libs = pkg.GetLibraries();
 			for (int i=0; i<libs.Length; i++)
 			{
+				if (libs[i].build_mode == BuildMode.BuildMode_Episode1)
+				{
+					continue;
+				}
 				if (!BuildLibrary(pkg, libs[i]))
 				{
 					throw new System.Exception("Failed to compile library: " + libs[i].binary_name);

From c02dc7f71d5435107763dc3354c9cb59d7bdd66f Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Sun, 23 Dec 2007 00:47:49 +0000
Subject: [PATCH 139/263] Changed the convar change hook for sv_alltalk to
 enforce sm_deadtalk correctly

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401824
---
 plugins/basecomm.sp | 43 ++++++++++++++-----------------------------
 1 file changed, 14 insertions(+), 29 deletions(-)

diff --git a/plugins/basecomm.sp b/plugins/basecomm.sp
index d081d920..5636dbc3 100644
--- a/plugins/basecomm.sp
+++ b/plugins/basecomm.sp
@@ -156,46 +156,31 @@ public Action:Command_Say(client, args)
 
 public ConVarChange_Alltalk(Handle:convar, const String:oldValue[], const String:newValue[])
 {
-	if (StringToInt(newValue) != 0
-		|| StringToInt(oldValue) == 0)
-	{
-		return;
-	}
+	new mode = GetConVarInt(g_Cvar_Deadtalk);
+	new maxClients = GetMaxClients();
 	
-	new dt_val = GetConVarInt(g_Cvar_Deadtalk);
-	new max_clients = GetMaxClients();
-	
-	for (new i = 1; i <= max_clients; i++)
+	for (new i = 1; i <= maxClients; i++)
 	{
 		if (!IsClientInGame(i))
 		{
 			continue;
 		}
 		
-		PrintToServer("STAT (i %d) (g_Muted[%d] %d) (dt_val %d)", i, i, g_Muted[i], dt_val);
-		
-		if (IsPlayerAlive(i))
+		if (g_Muted[i])
 		{
-			if (g_Muted[i])
-			{
-				SetClientListeningFlags(i, VOICE_MUTED);
-			}
-			else
-			{
-				SetClientListeningFlags(i, VOICE_NORMAL);
-			}
+			SetClientListeningFlags(i, VOICE_MUTED);
+		}
+		else if (GetConVarBool(g_Cvar_Alltalk))
+		{
+			SetClientListeningFlags(i, VOICE_NORMAL);
 		}
 		else
 		{
-			if (g_Muted[i])
-			{
-				SetClientListeningFlags(i, VOICE_MUTED);
-			}
-			else if (dt_val == 1)
+			if (mode == 1)
 			{
 				SetClientListeningFlags(i, VOICE_LISTENALL);
 			}
-			else if (dt_val == 2)
+			else if (mode == 2)
 			{
 				SetClientListeningFlags(i, VOICE_TEAM);
 			}
@@ -233,12 +218,12 @@ public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
 		return;
 	}
 	
-	new dt_val = GetConVarInt(g_Cvar_Deadtalk);
-	if (dt_val == 1)
+	new mode = GetConVarInt(g_Cvar_Deadtalk);
+	if (mode == 1)
 	{
 		SetClientListeningFlags(client, VOICE_LISTENALL);
 	}
-	else if (dt_val == 2)
+	else if (mode == 2)
 	{
 		SetClientListeningFlags(client, VOICE_TEAM);
 	}

From fdc67a7a52a75ca2402b140aca8da998f9ba5dc9 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 23 Dec 2007 23:43:25 +0000
Subject: [PATCH 140/263] fixed amb1308 - CommitSuicide offset changed

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401825
---
 gamedata/sdktools.games.ep2.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gamedata/sdktools.games.ep2.txt b/gamedata/sdktools.games.ep2.txt
index ea4e9c58..93afb06d 100644
--- a/gamedata/sdktools.games.ep2.txt
+++ b/gamedata/sdktools.games.ep2.txt
@@ -238,8 +238,8 @@
 			}
 			"CommitSuicide"
 			{
-				"windows"	"384"
-				"linux"		"384"
+				"windows"	"385"
+				"linux"		"385"
 			}
 			"GetVelocity"
 			{

From 9ac2a2e318662bdcbcc65a617b78fe76a329acaa Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Mon, 24 Dec 2007 00:44:48 +0000
Subject: [PATCH 141/263] More netprop stocks for entities

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401826
---
 plugins/include/entity_prop_stocks.inc | 52 +++++++++++++++++++++++++-
 1 file changed, 51 insertions(+), 1 deletion(-)

diff --git a/plugins/include/entity_prop_stocks.inc b/plugins/include/entity_prop_stocks.inc
index 28514566..4e645b26 100644
--- a/plugins/include/entity_prop_stocks.inc
+++ b/plugins/include/entity_prop_stocks.inc
@@ -52,7 +52,19 @@ enum
 };
 
 /**
- * Sets an entity's color.
+ * Gets an entity's movetype.
+ *
+ * @param index		Entity index
+ * @return		Movetype, see enum above
+ */
+stock GetEntityMovetype(index)
+{
+	new offset = GetEntSendPropOffs(index, "movetype");
+	return GetEntData(index, offset, 1);
+}
+
+/**
+ * Sets an entity's movetype.
  *
  * @param index		Entity index
  * @param mt		Movetype, see enum above
@@ -81,4 +93,42 @@ stock SetEntityRenderColor(index, r=255, g=255, b=255, a=255)
 	SetEntData(index, offset + 1, g, 1, true);
 	SetEntData(index, offset + 2, b, 1, true);
 	SetEntData(index, offset + 3, a, 1, true);
+}
+
+/**
+ * Gets an entity's gravity.
+ *
+ * @param index		Entity index
+ * @return		Entity's m_flGravity value
+ */
+stock Float:GetEntityGravity(index)
+{
+	new offset = FindDataMapOffs(index, "m_flGravity");
+	return GetEntDataFloat(index, offset);	
+}
+
+/**
+ * Sets an entity's gravity.
+ *
+ * @param index		Entity index
+ * @param amount	Gravity to set. Default = 800
+ * @noreturn
+ */
+stock SetEntityGravity(index, Float:amount)
+{
+	new offset = FindDataMapOffs(index, "m_flGravity");
+	SetEntDataFloat(index, offset, amount, true);	
+}
+
+/**
+ * Sets an entity's health
+ *
+ * @param index		Entity index
+ * @param amount	Health
+ * @noreturn
+ */
+stock SetEntityHealth(index, amount)
+{
+	SetEntProp(client, Prop_Send, "m_iHealth", health, 1)
+	SetEntProp(client, Prop_Data, "m_iHealth", health, 1)
 }
\ No newline at end of file

From 6ab87ef82117d9b0dfe7d91d19db62f0aba2d096 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Mon, 24 Dec 2007 00:45:28 +0000
Subject: [PATCH 142/263] Added sm_blind, sm_drug, sm_gravity, sm_noclip Fixed
 the duration of sm_freeze when used from the menu

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401827
---
 plugins/basefuncommands.sp               | 178 ++++++++++++--
 plugins/basefuncommands/blind.sp         | 279 +++++++++++++++++++++
 plugins/basefuncommands/drug.sp          | 296 +++++++++++++++++++++++
 plugins/basefuncommands/gravity.sp       | 252 +++++++++++++++++++
 plugins/basefuncommands/ice.sp           |   2 +-
 plugins/basefuncommands/noclip.sp        | 175 ++++++++++++++
 translations/basefuncommands.phrases.txt | 102 +++++++-
 7 files changed, 1255 insertions(+), 29 deletions(-)
 create mode 100644 plugins/basefuncommands/blind.sp
 create mode 100644 plugins/basefuncommands/drug.sp
 create mode 100644 plugins/basefuncommands/gravity.sp
 create mode 100644 plugins/basefuncommands/noclip.sp

diff --git a/plugins/basefuncommands.sp b/plugins/basefuncommands.sp
index f15006bb..519a6408 100644
--- a/plugins/basefuncommands.sp
+++ b/plugins/basefuncommands.sp
@@ -47,6 +47,23 @@ public Plugin:myinfo =
 	url = "http://www.sourcemod.net/"
 };
 
+// -------------------------------------------------------------------------------
+// Set any of these to 0 and recompile to completely disable those commands
+// -------------------------------------------------------------------------------
+#define BEACON		1
+#define TIMEBOMB	1
+#define FIRE		1
+#define ICE			1
+#define GRAVITY		1
+#define BLIND		1
+#define NOCLIP		1
+#define DRUG		1
+#define TELEPORT	1
+#define HEALTH		1
+#define COLORS		1
+#define CASH		1
+// -------------------------------------------------------------------------------
+
 new Handle:hTopMenu = INVALID_HANDLE;
 
 // Sounds
@@ -71,34 +88,77 @@ new blueColor[4] = {75, 75, 255, 255};
 new whiteColor[4] = {255, 255, 255, 255};
 new greyColor[4] = {128, 128, 128, 255};
 
-// Used for some trace rays.
-/*
-new g_FilteredEntity = -1;
-public bool:TR_Filter_Client(ent, contentMask)
-{
-   return (ent == g_FilteredEntity) ? false : true;
-}
-*/
+// UserMessageId for Fade.
+new UserMsg:g_FadeUserMsgId;
 
 // Include various commands and supporting functions
+#if BEACON
 #include "basefuncommands/beacon.sp"
+#endif
+#if TIMEBOMB
 #include "basefuncommands/timebomb.sp"
+#endif
+#if FIRE
 #include "basefuncommands/fire.sp"
+#endif
+#if ICE
 #include "basefuncommands/ice.sp"
+#endif
+#if GRAVITY
+#include "basefuncommands/gravity.sp"
+#endif
+#if BLIND
+#include "basefuncommands/blind.sp"
+#endif
+#if NOCLIP
+#include "basefuncommands/noclip.sp"
+#endif
+#if DRUG
+#include "basefuncommands/drug.sp"
+#endif
 
 public OnPluginStart()
 {
 	LoadTranslations("common.phrases");
 	LoadTranslations("basefuncommands.phrases");
 
+	g_FadeUserMsgId = GetUserMessageId("Fade");
+	
 	RegAdminCmd("sm_play", Command_Play, ADMFLAG_GENERIC, "sm_play <#userid|name> <filename>");
 
 	HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);	
 
+	#if BEACON
 	SetupBeacon();		// sm_beacon
+	#endif
+	
+	#if TIMEBOMB
 	SetupTimeBomb();	// sm_timebomb
+	#endif
+	
+	#if FIRE
 	SetupFire();		// sm_burn and sm_firebomb
+	#endif
+	
+	#if ICE
 	SetupIce();			// sm_freeze and sm_freezebomb
+	#endif
+	
+	#if GRAVITY
+	SetupGravity();		// sm_gravity
+	#endif
+	
+	#if BLIND
+	SetupBlind();		// sm_blind
+	#endif
+	
+	#if NOCLIP
+	SetupNoClip();		// sm_noclip
+	#endif
+	
+	#if DRUG
+	SetupDrugs();		// sm_drug
+	#endif
 	
 	AutoExecConfig(true, "funcommands");
 	
@@ -127,18 +187,40 @@ public OnMapStart()
 
 public OnMapEnd()
 {
+	#if BEACON
 	KillAllBeacons();
+	#endif
+	#if TIMEBOMB
 	KillAllTimeBombs();
+	#endif
+	#if FIRE
 	KillAllFireBombs();
+	#endif
+	#if ICE
 	KillAllFreezes();
+	#endif
+	#if DRUG
+	KillAllDrugs();
+	#endif
 }
 
 public Action:Event_RoundEnd(Handle:event,const String:name[],bool:dontBroadcast)
 {
+	#if BEACON
 	KillAllBeacons();
+	#endif
+	#if TIMEBOMB
 	KillAllTimeBombs();
+	#endif
+	#if FIRE
 	KillAllFireBombs();
+	#endif
+	#if ICE
 	KillAllFreezes();
+	#endif
+	#if DRUG
+	KillAllDrugs();
+	#endif
 	
 	return Plugin_Handled;
 }
@@ -159,6 +241,7 @@ public OnAdminMenuReady(Handle:topmenu)
 
 	if (player_commands != INVALID_TOPMENUOBJECT)
 	{
+		#if BEACON
 		AddToTopMenu(hTopMenu,
 			"sm_beacon",
 			TopMenuObject_Item,
@@ -166,7 +249,19 @@ public OnAdminMenuReady(Handle:topmenu)
 			player_commands,
 			"sm_beacon",
 			ADMFLAG_SLAY);
+		#endif
 		
+		#if TIMEBOMB
+		AddToTopMenu(hTopMenu,
+			"sm_timebomb",
+			TopMenuObject_Item,
+			AdminMenu_TimeBomb,
+			player_commands,
+			"sm_timebomb",
+			ADMFLAG_SLAY);
+		#endif
+		
+		#if FIRE
 		AddToTopMenu(hTopMenu,
 			"sm_burn",
 			TopMenuObject_Item,
@@ -175,22 +270,6 @@ public OnAdminMenuReady(Handle:topmenu)
 			"sm_burn",
 			ADMFLAG_SLAY);
 			
-		AddToTopMenu(hTopMenu,
-			"sm_freeze",
-			TopMenuObject_Item,
-			AdminMenu_Freeze,
-			player_commands,
-			"sm_freeze",
-			ADMFLAG_SLAY);
-
-		AddToTopMenu(hTopMenu,
-			"sm_timebomb",
-			TopMenuObject_Item,
-			AdminMenu_TimeBomb,
-			player_commands,
-			"sm_timebomb",
-			ADMFLAG_SLAY);	
-			
 		AddToTopMenu(hTopMenu,
 			"sm_firebomb",
 			TopMenuObject_Item,
@@ -198,6 +277,16 @@ public OnAdminMenuReady(Handle:topmenu)
 			player_commands,
 			"sm_firebomb",
 			ADMFLAG_SLAY);
+		#endif
+		
+		#if ICE
+		AddToTopMenu(hTopMenu,
+			"sm_freeze",
+			TopMenuObject_Item,
+			AdminMenu_Freeze,
+			player_commands,
+			"sm_freeze",
+			ADMFLAG_SLAY);
 			
 		AddToTopMenu(hTopMenu,
 			"sm_freezebomb",
@@ -206,6 +295,47 @@ public OnAdminMenuReady(Handle:topmenu)
 			player_commands,
 			"sm_freezebomb",
 			ADMFLAG_SLAY);
+		#endif
+			
+		#if GRAVITY
+		AddToTopMenu(hTopMenu,
+			"sm_gravity",
+			TopMenuObject_Item,
+			AdminMenu_Gravity,
+			player_commands,
+			"sm_gravity",
+			ADMFLAG_SLAY);
+		#endif
+			
+		#if BLIND
+		AddToTopMenu(hTopMenu,
+			"sm_blind",
+			TopMenuObject_Item,
+			AdminMenu_Blind,
+			player_commands,
+			"sm_blind",
+			ADMFLAG_SLAY);
+		#endif
+		
+		#if NOCLIP
+		AddToTopMenu(hTopMenu,
+			"sm_noclip",
+			TopMenuObject_Item,
+			AdminMenu_NoClip,
+			player_commands,
+			"sm_noclip",
+			ADMFLAG_SLAY);
+		#endif
+		
+		#if DRUG
+		AddToTopMenu(hTopMenu,
+			"sm_drug",
+			TopMenuObject_Item,
+			AdminMenu_Drug,
+			player_commands,
+			"sm_drug",
+			ADMFLAG_SLAY);
+		#endif		
 	}
 }
 
diff --git a/plugins/basefuncommands/blind.sp b/plugins/basefuncommands/blind.sp
new file mode 100644
index 00000000..3f90aa06
--- /dev/null
+++ b/plugins/basefuncommands/blind.sp
@@ -0,0 +1,279 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefuncommands Plugin
+ * Provides blind functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+new g_BlindTarget[MAXPLAYERS+1];
+
+SetupBlind()
+{
+	RegAdminCmd("sm_blind", Command_Blind, ADMFLAG_SLAY, "sm_blind <#userid|name> [amount] - Leave amount off to reset.");
+}
+
+PerformBlind(client, target, amount)
+{
+	new targets[2];
+	targets[0] = target;
+	
+	new Handle:message = StartMessageEx(g_FadeUserMsgId, targets, 1);
+	BfWriteShort(message, 1536);
+	BfWriteShort(message, 1536);
+	
+	if (amount == 0)
+	{
+		BfWriteShort(message, (0x0001 | 0x0010));
+	}
+	else
+	{
+		BfWriteShort(message, (0x0002 | 0x0008));
+	}
+	
+	BfWriteByte(message, 0);
+	BfWriteByte(message, 0);
+	BfWriteByte(message, 0);
+	BfWriteByte(message, amount);
+	
+	EndMessage();
+
+	LogAction(client, target, "\"%L\" set blind on \"%L\", amount %d.", client, target, amount);
+}
+
+public AdminMenu_Blind(Handle:topmenu, 
+					  TopMenuAction:action,
+					  TopMenuObject:object_id,
+					  param,
+					  String:buffer[],
+					  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		Format(buffer, maxlength, "%T", "Blind player", param);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{
+		DisplayBlindMenu(param);
+	}
+	else if (action == TopMenuAction_DrawOption)
+	{	
+		// Disable if we could not find the user message id for Fade.
+		buffer[0] = ((g_FadeUserMsgId == INVALID_MESSAGE_ID) ? ITEMDRAW_IGNORE : ITEMDRAW_DEFAULT);
+	}	
+}
+
+DisplayBlindMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_Blind);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "Blind player", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddTargetsToMenu(menu, client, true, true);
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
+DisplayAmountMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_Amount);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "Blind amount", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddMenuItem(menu, "255", "Fully blind");
+	AddMenuItem(menu, "240", "Half blind");
+	AddMenuItem(menu, "0", "No blind");
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
+public MenuHandler_Blind(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		new userid, target;
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		userid = StringToInt(info);
+
+		if ((target = GetClientOfUserId(userid)) == 0)
+		{
+			PrintToChat(param1, "[SM] %t", "Player no longer available");
+		}
+		else if (!CanUserTarget(param1, target))
+		{
+			PrintToChat(param1, "[SM] %t", "Unable to target");
+		}
+		else
+		{
+			g_BlindTarget[param1] = userid;
+			DisplayAmountMenu(param1);
+			return;	// Return, because we went to a new menu and don't want the re-draw to occur.
+		}
+		
+		/* Re-draw the menu if they're still valid */
+		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
+		{
+			DisplayBlindMenu(param1);
+		}
+	}
+	
+	return;
+}
+
+public MenuHandler_Amount(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		new amount, target;
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		amount = StringToInt(info);
+
+		if ((target = GetClientOfUserId(g_BlindTarget[param1])) == 0)
+		{
+			PrintToChat(param1, "[SM] %t", "Player no longer available");
+		}
+		else if (!CanUserTarget(param1, target))
+		{
+			PrintToChat(param1, "[SM] %t", "Unable to target");
+		}
+		else
+		{
+			new String:name[32];
+			GetClientName(target, name, sizeof(name));
+			
+			PerformBlind(param1, target, amount);
+			ShowActivity2(param1, "[SM] ", "%t", "Set blind on target", "_s", name, amount);
+		}
+		
+		/* Re-draw the menu if they're still valid */
+		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
+		{
+			DisplayBlindMenu(param1);
+		}
+	}
+}
+
+
+public Action:Command_Blind(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_blind <#userid|name> [amount]");
+		return Plugin_Handled;
+	}
+
+	decl String:arg[65];
+	GetCmdArg(1, arg, sizeof(arg));
+	
+	new amount = 0;
+	if (args > 1)
+	{
+		decl String:arg2[20];
+		GetCmdArg(2, arg2, sizeof(arg2));
+		if (StringToIntEx(arg2, amount) == 0)
+		{
+			ReplyToCommand(client, "[SM] %t", "Invalid Amount");
+			return Plugin_Handled;
+		}
+		
+		if (amount < 0)
+		{
+			amount = 0;
+		}
+		
+		if (amount > 255)
+		{
+			amount = 255;
+		}
+	}
+
+	decl String:target_name[MAX_TARGET_LENGTH];
+	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
+	
+	if ((target_count = ProcessTargetString(
+			arg,
+			client,
+			target_list,
+			MAXPLAYERS,
+			COMMAND_FILTER_ALIVE,
+			target_name,
+			sizeof(target_name),
+			tn_is_ml)) <= 0)
+	{
+		ReplyToTargetError(client, target_count);
+		return Plugin_Handled;
+	}
+	
+	for (new i = 0; i < target_count; i++)
+	{
+		PerformBlind(client, target_list[i], amount);
+	}
+	
+	if (tn_is_ml)
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Set blind on target", target_name);
+	}
+	else
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Set blind on target", "_s", target_name);
+	}
+	
+	return Plugin_Handled;
+}
diff --git a/plugins/basefuncommands/drug.sp b/plugins/basefuncommands/drug.sp
new file mode 100644
index 00000000..59da6664
--- /dev/null
+++ b/plugins/basefuncommands/drug.sp
@@ -0,0 +1,296 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefuncommands Plugin
+ * Provides drug functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+new Handle:g_DrugTimers[MAXPLAYERS+1];
+new Float:g_DrugAngles[20] = {0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 20.0, 15.0, 10.0, 5.0, 0.0, -5.0, -10.0, -15.0, -20.0, -25.0, -20.0, -15.0, -10.0, -5.0};
+
+SetupDrugs()
+{
+	RegAdminCmd("sm_drug", Command_Drug, ADMFLAG_SLAY, "sm_drug <#userid|name> [0/1]");
+}
+
+CreateDrug(client)
+{
+	g_DrugTimers[client] = CreateTimer(1.0, Timer_Drug, client, TIMER_REPEAT);	
+}
+
+KillDrug(client)
+{
+	KillTimer(g_DrugTimers[client]);
+	g_DrugTimers[client] = INVALID_HANDLE;
+	
+	new Float:pos[3];
+	GetClientAbsOrigin(client, pos);
+	new Float:angs[3];
+	GetClientEyeAngles(client, angs);
+	
+	angs[2] = 0.0;
+	
+	TeleportEntity(client, pos, angs, NULL_VECTOR);	
+	
+	new clients[2];
+	clients[0] = client;	
+	
+	new Handle:message = StartMessageEx(g_FadeUserMsgId, clients, 1);
+	BfWriteShort(message, 1536);
+	BfWriteShort(message, 1536);
+	BfWriteShort(message, (0x0001 | 0x0010));
+	BfWriteByte(message, 0);
+	BfWriteByte(message, 0);
+	BfWriteByte(message, 0);
+	BfWriteByte(message, 0);
+	EndMessage();	
+}
+
+KillAllDrugs()
+{
+	new maxclients = GetMaxClients();
+	for (new i = 1; i <= maxclients; i++)
+	{
+		if (g_DrugTimers[i] != INVALID_HANDLE)
+		{
+			KillDrug(i);
+		}
+	}
+}
+
+PerformDrug(client, target, toggle)
+{
+	switch (toggle)
+	{
+		case (2):
+		{
+			if (g_DrugTimers[target] == INVALID_HANDLE)
+			{
+				CreateDrug(target);
+				LogAction(client, target, "\"%L\" drugged \"%L\"", client, target);
+			}
+			else
+			{
+				KillDrug(target);
+				LogAction(client, target, "\"%L\" undrugged \"%L\"", client, target);
+			}			
+		}
+
+		case (1):
+		{
+			if (g_DrugTimers[target] == INVALID_HANDLE)
+			{
+				CreateDrug(target);
+				LogAction(client, target, "\"%L\" drugged \"%L\"", client, target);
+			}			
+		}
+		
+		case (0):
+		{
+			if (g_DrugTimers[target] != INVALID_HANDLE)
+			{
+				KillDrug(target);
+				LogAction(client, target, "\"%L\" undrugged \"%L\"", client, target);
+			}			
+		}
+	}
+}
+
+public Action:Timer_Drug(Handle:timer, any:client)
+{
+	if (!IsClientInGame(client) || !IsPlayerAlive(client))
+	{
+		KillDrug(client);		
+
+		return Plugin_Handled;
+	}
+	
+	new Float:pos[3];
+	GetClientAbsOrigin(client, pos);
+	
+	new Float:angs[3];
+	GetClientEyeAngles(client, angs);
+	
+	angs[2] = g_DrugAngles[GetRandomInt(0,100) % 20];
+	
+	TeleportEntity(client, pos, angs, NULL_VECTOR);
+	
+	new clients[2];
+	clients[0] = client;	
+	
+	new Handle:message = StartMessageEx(g_FadeUserMsgId, clients, 1);
+	BfWriteShort(message, 255);
+	BfWriteShort(message, 255);
+	BfWriteShort(message, (0x0002));
+	BfWriteByte(message, GetRandomInt(0,255));
+	BfWriteByte(message, GetRandomInt(0,255));
+	BfWriteByte(message, GetRandomInt(0,255));
+	BfWriteByte(message, 128);
+	
+	EndMessage();	
+		
+	return Plugin_Handled;
+}
+
+public AdminMenu_Drug(Handle:topmenu, 
+					  TopMenuAction:action,
+					  TopMenuObject:object_id,
+					  param,
+					  String:buffer[],
+					  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		Format(buffer, maxlength, "%T", "Drug player", param);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{
+		DisplayDrugMenu(param);
+	}
+}
+
+DisplayDrugMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_Drug);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "Drug player", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddTargetsToMenu(menu, client, true, true);
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
+public MenuHandler_Drug(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		new userid, target;
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		userid = StringToInt(info);
+
+		if ((target = GetClientOfUserId(userid)) == 0)
+		{
+			PrintToChat(param1, "[SM] %t", "Player no longer available");
+		}
+		else if (!CanUserTarget(param1, target))
+		{
+			PrintToChat(param1, "[SM] %t", "Unable to target");
+		}
+		else
+		{
+			new String:name[32];
+			GetClientName(target, name, sizeof(name));
+			
+			PerformDrug(param1, target, 2);
+			ShowActivity2(param1, "[SM] ", "%t", "Toggled drug on target", "_s", name);
+		}
+		
+		/* Re-draw the menu if they're still valid */
+		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
+		{
+			DisplayDrugMenu(param1);
+		}
+	}
+}
+
+public Action:Command_Drug(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_drug <#userid|name> [0/1]");
+		return Plugin_Handled;
+	}
+
+	decl String:arg[65];
+	GetCmdArg(1, arg, sizeof(arg));
+	
+	new toggle = 2;
+	if (args > 1)
+	{
+		decl String:arg2[2];
+		GetCmdArg(2, arg2, sizeof(arg2));
+		if (arg2[0])
+		{
+			toggle = 1;
+		}
+		else
+		{
+			toggle = 0;
+		}
+	}
+
+	decl String:target_name[MAX_TARGET_LENGTH];
+	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
+	
+	if ((target_count = ProcessTargetString(
+			arg,
+			client,
+			target_list,
+			MAXPLAYERS,
+			COMMAND_FILTER_ALIVE,
+			target_name,
+			sizeof(target_name),
+			tn_is_ml)) <= 0)
+	{
+		ReplyToTargetError(client, target_count);
+		return Plugin_Handled;
+	}
+	
+	for (new i = 0; i < target_count; i++)
+	{
+		PerformDrug(client, target_list[i], toggle);
+	}
+	
+	if (tn_is_ml)
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Toggled drug on target", target_name);
+	}
+	else
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Toggled drug on target", "_s", target_name);
+	}
+	
+	return Plugin_Handled;
+}
diff --git a/plugins/basefuncommands/gravity.sp b/plugins/basefuncommands/gravity.sp
new file mode 100644
index 00000000..dfb7ece8
--- /dev/null
+++ b/plugins/basefuncommands/gravity.sp
@@ -0,0 +1,252 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefuncommands Plugin
+ * Provides gravity functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+new g_GravityTarget[MAXPLAYERS+1];
+
+SetupGravity()
+{
+	RegAdminCmd("sm_gravity", Command_Gravity, ADMFLAG_SLAY, "sm_gravity <#userid|name> [amount] - Leave amount off to reset. Amount is 0.0 through 5.0");
+}
+
+PerformGravity(client, target, Float:amount)
+{
+	new offset = FindDataMapOffs(client, "m_flGravity");
+	new Float:temp = GetEntDataFloat(client, offset);
+	PrintToChatAll("Gravity check %f", temp);
+	
+	SetEntityGravity(target, amount);
+	LogAction(client, target, "\"%L\" set gravity on \"%L\" to %d.", client, target, amount);
+}
+
+public AdminMenu_Gravity(Handle:topmenu, 
+					  TopMenuAction:action,
+					  TopMenuObject:object_id,
+					  param,
+					  String:buffer[],
+					  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		Format(buffer, maxlength, "%T", "Gravity player", param);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{
+		DisplayGravityMenu(param);
+	}
+}
+
+DisplayGravityMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_Gravity);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "Gravity player", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddTargetsToMenu(menu, client, true, true);
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
+DisplayGravityAmountMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_GravityAmount);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "Gravity amount", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddMenuItem(menu, "4.0", "Gravity Very High");
+	AddMenuItem(menu, "2.0", "Gravity High");
+	AddMenuItem(menu, "1.0", "Gravity Normal");
+	AddMenuItem(menu, "0.5", "Gravity Low");
+	AddMenuItem(menu, "0.1", "Gravity Very Low");
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
+public MenuHandler_Gravity(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		new userid, target;
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		userid = StringToInt(info);
+
+		if ((target = GetClientOfUserId(userid)) == 0)
+		{
+			PrintToChat(param1, "[SM] %t", "Player no longer available");
+		}
+		else if (!CanUserTarget(param1, target))
+		{
+			PrintToChat(param1, "[SM] %t", "Unable to target");
+		}
+		else
+		{
+			g_GravityTarget[param1] = userid;
+			DisplayGravityAmountMenu(param1);
+			return;	// Return, because we went to a new menu and don't want the re-draw to occur.
+		}
+		
+		/* Re-draw the menu if they're still valid */
+		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
+		{
+			DisplayGravityMenu(param1);
+		}
+	}
+	
+	return;
+}
+
+public MenuHandler_GravityAmount(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		new Float:amount, target;
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		amount = StringToFloat(info);
+
+		if ((target = GetClientOfUserId(g_GravityTarget[param1])) == 0)
+		{
+			PrintToChat(param1, "[SM] %t", "Player no longer available");
+		}
+		else if (!CanUserTarget(param1, target))
+		{
+			PrintToChat(param1, "[SM] %t", "Unable to target");
+		}
+		else
+		{
+			new String:name[32];
+			GetClientName(target, name, sizeof(name));
+			
+			PerformGravity(param1, target, amount);
+			ShowActivity2(param1, "[SM] ", "%t", "Set gravity on target", "_s", name, amount);
+		}
+		
+		/* Re-draw the menu if they're still valid */
+		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
+		{
+			DisplayGravityMenu(param1);
+		}
+	}
+}
+
+public Action:Command_Gravity(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_gravity <#userid|name> [amount]");
+		return Plugin_Handled;
+	}
+
+	decl String:arg[65];
+	GetCmdArg(1, arg, sizeof(arg));
+	
+	new Float:amount = 1.0;
+	if (args > 1)
+	{
+		decl String:arg2[20];
+		GetCmdArg(2, arg2, sizeof(arg2));
+		if (StringToFloatEx(arg2, amount) == 0)
+		{
+			ReplyToCommand(client, "[SM] %t", "Invalid Amount");
+			return Plugin_Handled;
+		}
+		
+		if (amount < 0.0)
+		{
+			amount = 0.0;
+		}
+	}
+
+	decl String:target_name[MAX_TARGET_LENGTH];
+	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
+	
+	if ((target_count = ProcessTargetString(
+			arg,
+			client,
+			target_list,
+			MAXPLAYERS,
+			COMMAND_FILTER_ALIVE,
+			target_name,
+			sizeof(target_name),
+			tn_is_ml)) <= 0)
+	{
+		ReplyToTargetError(client, target_count);
+		return Plugin_Handled;
+	}
+	
+	for (new i = 0; i < target_count; i++)
+	{
+		PerformGravity(client, target_list[i], amount);
+	}
+	
+	if (tn_is_ml)
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Set gravity on target", target_name);
+	}
+	else
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Set gravity on target", "_s", target_name);
+	}
+	
+	return Plugin_Handled;
+}
diff --git a/plugins/basefuncommands/ice.sp b/plugins/basefuncommands/ice.sp
index 2066d4a6..976742af 100644
--- a/plugins/basefuncommands/ice.sp
+++ b/plugins/basefuncommands/ice.sp
@@ -374,7 +374,7 @@ public MenuHandler_Freeze(Handle:menu, MenuAction:action, param1, param2)
 			new String:name[32];
 			GetClientName(target, name, sizeof(name));
 			
-			PerformFreeze(param1, target, 2);
+			PerformFreeze(param1, target, GetConVarInt(g_FreezeDuration));
 			ShowActivity2(param1, "[SM] ", "%t", "Froze target", "_s", name);
 		}
 		
diff --git a/plugins/basefuncommands/noclip.sp b/plugins/basefuncommands/noclip.sp
new file mode 100644
index 00000000..22a074af
--- /dev/null
+++ b/plugins/basefuncommands/noclip.sp
@@ -0,0 +1,175 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basefuncommands Plugin
+ * Provides noclip functionality
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+ 
+SetupNoClip()
+{
+	RegAdminCmd("sm_noclip", Command_NoClip, ADMFLAG_SLAY|ADMFLAG_CHEATS, "sm_noclip <#userid|name>");
+}
+
+PerformNoClip(client, target)
+{
+	new movetype = GetEntityMovetype(target);
+	PrintToChatAll("movetype was %d", movetype);
+	if (movetype != MOVETYPE_NOCLIP)
+	{
+		SetEntityMovetype(target, MOVETYPE_NOCLIP);
+	}
+	else
+	{
+		SetEntityMovetype(target, MOVETYPE_WALK);
+	}
+	
+	LogAction(client, target, "\"%L\" toggled noclip on \"%L\"", client, target);
+}
+
+public AdminMenu_NoClip(Handle:topmenu, 
+					  TopMenuAction:action,
+					  TopMenuObject:object_id,
+					  param,
+					  String:buffer[],
+					  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		Format(buffer, maxlength, "%T", "NoClip player", param);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{
+		DisplayNoClipMenu(param);
+	}
+}
+
+DisplayNoClipMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_NoClip);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "NoClip player", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddTargetsToMenu(menu, client, true, true);
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);
+}
+
+public MenuHandler_NoClip(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		new userid, target;
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		userid = StringToInt(info);
+
+		if ((target = GetClientOfUserId(userid)) == 0)
+		{
+			PrintToChat(param1, "[SM] %t", "Player no longer available");
+		}
+		else if (!CanUserTarget(param1, target))
+		{
+			PrintToChat(param1, "[SM] %t", "Unable to target");
+		}
+		else
+		{
+			new String:name[32];
+			GetClientName(target, name, sizeof(name));
+			
+			PerformNoClip(param1, target);
+			ShowActivity2(param1, "[SM] ", "%t", "Toggled noclip on target", "_s", name);
+		}
+		
+		/* Re-draw the menu if they're still valid */
+		if (IsClientInGame(param1) && !IsClientInKickQueue(param1))
+		{
+			DisplayNoClipMenu(param1);
+		}
+	}
+}
+
+public Action:Command_NoClip(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_noclip <#userid|name>");
+		return Plugin_Handled;
+	}
+
+	decl String:arg[65];
+	GetCmdArg(1, arg, sizeof(arg));
+	
+	decl String:target_name[MAX_TARGET_LENGTH];
+	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
+	
+	if ((target_count = ProcessTargetString(
+			arg,
+			client,
+			target_list,
+			MAXPLAYERS,
+			COMMAND_FILTER_ALIVE,
+			target_name,
+			sizeof(target_name),
+			tn_is_ml)) <= 0)
+	{
+		ReplyToTargetError(client, target_count);
+		return Plugin_Handled;
+	}
+	
+	for (new i = 0; i < target_count; i++)
+	{
+		PerformNoClip(client, target_list[i]);
+	}
+	
+	if (tn_is_ml)
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Toggled noclip on target", target_name);
+	}
+	else
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Toggled noclip on target", "_s", target_name);
+	}
+	
+	return Plugin_Handled;
+}
diff --git a/translations/basefuncommands.phrases.txt b/translations/basefuncommands.phrases.txt
index e14a9e8e..1d132c9e 100644
--- a/translations/basefuncommands.phrases.txt
+++ b/translations/basefuncommands.phrases.txt
@@ -34,7 +34,77 @@
 	"Beacon player"
 	{
 		"en"			"Beacon player"
-	}	
+	}
+	
+	"NoClip player"
+	{
+		"en"			"NoClip player"
+	}
+	
+	"Blind player"
+	{
+		"en"			"Blind player"
+	}
+	
+	"Drug player"
+	{
+		"en"			"Drug player"
+	}
+	
+	"Gravity player"
+	{
+		"en"			"Gravity player"
+	}
+	
+	"Blind amount"
+	{
+		"en"			"How blind?"
+	}
+	
+	"Fully blind"
+	{
+		"en"			"Fully blind"
+	}
+	
+	"Half blind"
+	{
+		"en"			"Half blind"
+	}
+	
+	"No blind"
+	{
+		"en"			"No blind"
+	}
+	
+	"Gravity amount"
+	{
+		"en"			"Gravity?"
+	}
+	
+	"Gravity Very High"
+	{
+		"en"			"Gravity Very High"
+	}
+	
+	"Gravity High"
+	{
+		"en"			"Gravity High"
+	}
+	
+	"Gravity Normal"
+	{
+		"en"			"Gravity Normal"
+	}
+	
+	"Gravity Low"
+	{
+		"en"			"Gravity Low"
+	}
+	
+	"Gravity Very Low"
+	{
+		"en"			"Gravity Very Low"
+	}
 	
 	"Set target on fire"
 	{
@@ -45,7 +115,7 @@
 	"Toggled FireBomb on target"
 	{
 		"#format"		"{1:t}"
-		"en"			"set a firebomb on {1}."
+		"en"			"toggled firebomb on {1}."
 	}	
 
 	"Froze target"
@@ -57,7 +127,7 @@
 	"Toggled FreezeBomb on target"
 	{
 		"#format"		"{1:t}"
-		"en"			"set a freezebomb on {1}."
+		"en"			"toggled freezebomb on {1}."
 	}	
 	
 	"Toggled beacon on target"
@@ -69,7 +139,31 @@
 	"Toggled TimeBomb on target"
 	{
 		"#format"		"{1:t}"
-		"en"			"set a timebomb on {1}."
+		"en"			"toggled timebomb on {1}."
+	}
+
+	"Toggled noclip on target"
+	{
+		"#format"		"{1:t}"
+		"en"			"toggled noclip on {1}."
+	}
+	
+	"Toggled drug on target"
+	{
+		"#format"		"{1:t}"
+		"en"			"toggled drugs on {1}."
+	}	
+	
+	"Set blind on target"
+	{
+		"#format"		"{1:t}"
+		"en"			"used blind on {1}."
+	}
+	
+	"Set gravity on target"
+	{
+		"#format"		"{1:t}"
+		"en"			"set {1}'s gravity."
 	}	
 	
 	"Till Explodes"

From ef7fed49fa7aa70f99d4924965d23cbca362f704 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Mon, 24 Dec 2007 20:41:33 +0000
Subject: [PATCH 143/263] Removed '#include <core>'

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401828
---
 plugins/include/cstrike.inc | 2 --
 1 file changed, 2 deletions(-)

diff --git a/plugins/include/cstrike.inc b/plugins/include/cstrike.inc
index b0e867cd..7f8ae436 100644
--- a/plugins/include/cstrike.inc
+++ b/plugins/include/cstrike.inc
@@ -35,8 +35,6 @@
 #endif
 #define _cstrike_included
 
-#include <core>
-
 #define CS_TEAM_NONE		0	/**< No team yet. */
 #define CS_TEAM_SPECTATOR	1	/**< Spectators. */
 #define CS_TEAM_T 			2	/**< Terrorists. */

From d0fac2def94e7ca3c44467c82627e742e837be33 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Fri, 28 Dec 2007 07:10:09 +0000
Subject: [PATCH 144/263] Added a new entity stock function GetClientButtons()

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401832
---
 plugins/include/entity_prop_stocks.inc | 38 ++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/plugins/include/entity_prop_stocks.inc b/plugins/include/entity_prop_stocks.inc
index 4e645b26..20cf2f94 100644
--- a/plugins/include/entity_prop_stocks.inc
+++ b/plugins/include/entity_prop_stocks.inc
@@ -51,6 +51,32 @@ enum
 	MOVETYPE_CUSTOM,			/** Allows the entity to describe its own physics */
 };
 
+#define IN_ATTACK		(1 << 0)
+#define IN_JUMP			(1 << 1)
+#define IN_DUCK			(1 << 2)
+#define IN_FORWARD		(1 << 3)
+#define IN_BACK			(1 << 4)
+#define IN_USE			(1 << 5)
+#define IN_CANCEL		(1 << 6)
+#define IN_LEFT			(1 << 7)
+#define IN_RIGHT		(1 << 8)
+#define IN_MOVELEFT		(1 << 9)
+#define IN_MOVERIGHT	(1 << 10)
+#define IN_ATTACK2		(1 << 11)
+#define IN_RUN			(1 << 12)
+#define IN_RELOAD		(1 << 13)
+#define IN_ALT1			(1 << 14)
+#define IN_ALT2			(1 << 15)
+#define IN_SCORE		(1 << 16)   // Used by client.dll for when scoreboard is held down
+#define IN_SPEED		(1 << 17)	// Player is holding the speed key
+#define IN_WALK			(1 << 18)	// Player holding walk key
+#define IN_ZOOM			(1 << 19)	// Zoom key for HUD zoom
+#define IN_WEAPON1		(1 << 20)	// weapon defines these bits
+#define IN_WEAPON2		(1 << 21)	// weapon defines these bits
+#define IN_BULLRUSH		(1 << 22)
+#define IN_GRENADE1		(1 << 23)	// grenade 1
+#define IN_GRENADE2		(1 << 24)	// grenade 2
+
 /**
  * Gets an entity's movetype.
  *
@@ -131,4 +157,16 @@ stock SetEntityHealth(index, amount)
 {
 	SetEntProp(client, Prop_Send, "m_iHealth", health, 1)
 	SetEntProp(client, Prop_Data, "m_iHealth", health, 1)
+}
+
+/**
+ * Get's a users current pressed buttons
+ *
+ * @param client	Client index
+ * @return			Bitsum of buttons
+ */
+stock GetClientButtons(client)
+{
+	new offset = FindDataMapOffs(client, "m_nButtons");
+	return GetEntData(client, offset, 4);
 }
\ No newline at end of file

From 9970ad59ac5b233f23967259270f6de8d76f38c9 Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Fri, 28 Dec 2007 16:46:42 +0000
Subject: [PATCH 145/263] A few runtime fixes for basefuncommands

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401833
---
 plugins/basefuncommands/drug.sp     | 29 +++++++++++++++----
 plugins/basefuncommands/fire.sp     |  5 ++--
 plugins/basefuncommands/ice.sp      | 44 +++++++++++++++++++++--------
 plugins/basefuncommands/timebomb.sp |  5 ++--
 4 files changed, 63 insertions(+), 20 deletions(-)

diff --git a/plugins/basefuncommands/drug.sp b/plugins/basefuncommands/drug.sp
index 59da6664..f6572dc9 100644
--- a/plugins/basefuncommands/drug.sp
+++ b/plugins/basefuncommands/drug.sp
@@ -46,8 +46,7 @@ CreateDrug(client)
 
 KillDrug(client)
 {
-	KillTimer(g_DrugTimers[client]);
-	g_DrugTimers[client] = INVALID_HANDLE;
+	KillDrugTimer(client);
 	
 	new Float:pos[3];
 	GetClientAbsOrigin(client, pos);
@@ -72,6 +71,12 @@ KillDrug(client)
 	EndMessage();	
 }
 
+KillDrugTimer(client)
+{
+	KillTimer(g_DrugTimers[client]);
+	g_DrugTimers[client] = INVALID_HANDLE;	
+}
+
 KillAllDrugs()
 {
 	new maxclients = GetMaxClients();
@@ -79,7 +84,14 @@ KillAllDrugs()
 	{
 		if (g_DrugTimers[i] != INVALID_HANDLE)
 		{
-			KillDrug(i);
+			if(IsClientInGame(i))
+			{
+				KillDrug(i);
+			}
+			else
+			{
+				KillDrugTimer(i);
+			}
 		}
 	}
 }
@@ -124,13 +136,20 @@ PerformDrug(client, target, toggle)
 
 public Action:Timer_Drug(Handle:timer, any:client)
 {
-	if (!IsClientInGame(client) || !IsPlayerAlive(client))
+	if (!IsClientInGame(client))
 	{
-		KillDrug(client);		
+		KillDrugTimer(client);
 
 		return Plugin_Handled;
 	}
 	
+	if (!IsPlayerAlive(client))
+	{
+		KillDrug(client);
+		
+		return Plugin_Handled;
+	}
+	
 	new Float:pos[3];
 	GetClientAbsOrigin(client, pos);
 	
diff --git a/plugins/basefuncommands/fire.sp b/plugins/basefuncommands/fire.sp
index b05c0220..90e96c3c 100644
--- a/plugins/basefuncommands/fire.sp
+++ b/plugins/basefuncommands/fire.sp
@@ -60,8 +60,6 @@ KillFireBomb(client)
 {
 	KillTimer(g_FireBombTimers[client]);
 	g_FireBombTimers[client] = INVALID_HANDLE;
-	
-	SetEntityRenderColor(client, 255, 255, 255, 255);
 }
 
 KillAllFireBombs()
@@ -96,6 +94,7 @@ PerformFireBomb(client, target, toggle)
 			else
 			{
 				KillFireBomb(target);
+				SetEntityRenderColor(client, 255, 255, 255, 255);
 				LogAction(client, target, "\"%L\" removed a FireBomb on \"%L\"", client, target);
 			}			
 		}
@@ -114,6 +113,7 @@ PerformFireBomb(client, target, toggle)
 			if (g_FireBombTimers[target] != INVALID_HANDLE)
 			{
 				KillFireBomb(target);
+				SetEntityRenderColor(client, 255, 255, 255, 255);
 				LogAction(client, target, "\"%L\" removed a FireBomb on \"%L\"", client, target);
 			}			
 		}
@@ -186,6 +186,7 @@ public Action:Timer_FireBomb(Handle:timer, any:client)
 
 		IgniteEntity(client, GetConVarFloat(g_BurnDuration));
 		KillFireBomb(client);
+		SetEntityRenderColor(client, 255, 255, 255, 255);
 		
 		if (GetConVarInt(g_FireBombMode) > 0)
 		{
diff --git a/plugins/basefuncommands/ice.sp b/plugins/basefuncommands/ice.sp
index 976742af..11afbcbb 100644
--- a/plugins/basefuncommands/ice.sp
+++ b/plugins/basefuncommands/ice.sp
@@ -71,6 +71,21 @@ FreezeClient(client, time)
 }
 
 UnfreezeClient(client)
+{
+	KillFreezeTimer(client);
+
+	new Float:vec[3];
+	GetClientAbsOrigin(client, vec);
+	vec[2] += 10;	
+	
+	GetClientEyePosition(client, vec);
+	EmitAmbientSound(SOUND_FREEZE, vec, client, SNDLEVEL_RAIDSIREN);
+
+	SetEntityMovetype(client, MOVETYPE_WALK);
+	SetEntityRenderColor(client, 255, 255, 255, 255);	
+}
+
+KillFreezeTimer(client)
 {
 	KillTimer(g_FreezeTimers[client]);
 	g_FreezeTimers[client] = INVALID_HANDLE;
@@ -82,7 +97,6 @@ CreateFreezeBomb(client)
 	g_FreezeBombTracker[client] = GetConVarInt(g_FreezeBombTicks);
 }
 
-
 KillFreezeBomb(client)
 {
 	KillTimer(g_FreezeBombTimers[client]);
@@ -98,7 +112,14 @@ KillAllFreezes()
 	{
 		if (g_FreezeTimers[i] != INVALID_HANDLE)
 		{
-			UnfreezeClient(i);
+			if(IsClientInGame(i))
+			{
+				UnfreezeClient(i);
+			}
+			else
+			{
+				KillFreezeTimer(i);
+			}			
 		}		
 		
 		if (g_FreezeBombTimers[i] != INVALID_HANDLE)
@@ -154,13 +175,20 @@ PerformFreezeBomb(client, target, toggle)
 
 public Action:Timer_Freeze(Handle:timer, any:client)
 {
-	if (!IsClientInGame(client) || !IsPlayerAlive(client))
+	if (!IsClientInGame(client))
 	{
-		KillFreezeBomb(client);
+		KillFreezeTimer(client);
 
 		return Plugin_Handled;
 	}
 	
+	if (!IsPlayerAlive(client))
+	{
+		UnfreezeClient(client);
+		
+		return Plugin_Handled;
+	}		
+	
 	g_FreezeTracker[client]--;
 	
 	SetEntityMovetype(client, MOVETYPE_NONE);
@@ -176,14 +204,8 @@ public Action:Timer_Freeze(Handle:timer, any:client)
 	if (g_FreezeTracker[client] == 0)
 	{
 		UnfreezeClient(client);
-
-		GetClientEyePosition(client, vec);
-		EmitAmbientSound(SOUND_FREEZE, vec, client, SNDLEVEL_RAIDSIREN);
-
-		SetEntityMovetype(client, MOVETYPE_WALK);
-		SetEntityRenderColor(client, 255, 255, 255, 255);		
 	}
-			
+
 	return Plugin_Handled;
 }
 
diff --git a/plugins/basefuncommands/timebomb.sp b/plugins/basefuncommands/timebomb.sp
index b808b4f5..be6731e0 100644
--- a/plugins/basefuncommands/timebomb.sp
+++ b/plugins/basefuncommands/timebomb.sp
@@ -57,8 +57,6 @@ KillTimeBomb(client)
 {
 	KillTimer(g_TimeBombTimers[client]);
 	g_TimeBombTimers[client] = INVALID_HANDLE;
-	
-	SetEntityRenderColor(client, 255, 255, 255, 255);
 }
 
 KillAllTimeBombs()
@@ -87,6 +85,7 @@ PerformTimeBomb(client, target, toggle)
 			else
 			{
 				KillTimeBomb(target);
+				SetEntityRenderColor(client, 255, 255, 255, 255);
 				LogAction(client, target, "\"%L\" removed a TimeBomb on \"%L\"", client, target);
 			}			
 		}
@@ -105,6 +104,7 @@ PerformTimeBomb(client, target, toggle)
 			if (g_TimeBombTimers[target] != INVALID_HANDLE)
 			{
 				KillTimeBomb(target);
+				SetEntityRenderColor(client, 255, 255, 255, 255);
 				LogAction(client, target, "\"%L\" removed a TimeBomb on \"%L\"", client, target);
 			}			
 		}
@@ -163,6 +163,7 @@ public Action:Timer_TimeBomb(Handle:timer, any:client)
 
 		ForcePlayerSuicide(client);
 		KillTimeBomb(client);
+		SetEntityRenderColor(client, 255, 255, 255, 255);
 		
 		if (GetConVarInt(g_TimeBombMode) > 0)
 		{

From d37e02c65cb8768bd16934b5796231585b9fb92c Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Mon, 31 Dec 2007 01:47:33 +0000
Subject: [PATCH 146/263] fixed amb1325 - SetEntityHealth()

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401834
---
 plugins/include/entity_prop_stocks.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/include/entity_prop_stocks.inc b/plugins/include/entity_prop_stocks.inc
index 20cf2f94..d6690ebb 100644
--- a/plugins/include/entity_prop_stocks.inc
+++ b/plugins/include/entity_prop_stocks.inc
@@ -155,8 +155,8 @@ stock SetEntityGravity(index, Float:amount)
  */
 stock SetEntityHealth(index, amount)
 {
-	SetEntProp(client, Prop_Send, "m_iHealth", health, 1)
-	SetEntProp(client, Prop_Data, "m_iHealth", health, 1)
+	SetEntProp(client, Prop_Send, "m_iHealth", amount, 4)
+	SetEntProp(client, Prop_Data, "m_iHealth", amount, 4)
 }
 
 /**

From 4e1fb49096026238036464b72aee7127eda7bf70 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Thu, 3 Jan 2008 06:11:26 +0000
Subject: [PATCH 147/263] added amb1336 - GetTrieSize()

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401835
---
 core/smn_adt_trie.cpp        | 19 +++++++++++++++++++
 plugins/include/adt_trie.inc | 12 ++++++++++++
 public/sm_trie_tpl.h         | 19 +++++++++++++++++++
 3 files changed, 50 insertions(+)

diff --git a/core/smn_adt_trie.cpp b/core/smn_adt_trie.cpp
index 79fc6585..2aab9833 100644
--- a/core/smn_adt_trie.cpp
+++ b/core/smn_adt_trie.cpp
@@ -498,6 +498,24 @@ static cell_t GetTrieString(IPluginContext *pContext, const cell_t *params)
 	return 1;
 }
 
+static cell_t GetTrieSize(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl;
+	CellTrie *pTrie;
+	HandleError err;
+	HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent);
+
+	hndl = params[1];
+
+	if ((err = g_HandleSys.ReadHandle(hndl, htCellTrie, &sec, (void **)&pTrie))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err);
+	}
+
+	return pTrie->trie.size();
+}
+
 REGISTER_NATIVES(trieNatives)
 {
 	{"ClearTrie",				ClearTrie},
@@ -509,5 +527,6 @@ REGISTER_NATIVES(trieNatives)
 	{"SetTrieArray",			SetTrieArray},
 	{"SetTrieString",			SetTrieString},
 	{"SetTrieValue",			SetTrieValue},
+	{"GetTrieSize",				GetTrieSize},
 	{NULL,						NULL},
 };
diff --git a/plugins/include/adt_trie.inc b/plugins/include/adt_trie.inc
index 303b1949..b777d41d 100644
--- a/plugins/include/adt_trie.inc
+++ b/plugins/include/adt_trie.inc
@@ -144,3 +144,15 @@ native RemoveFromTrie(Handle:trie, const String:key[]);
  * @error			Invalid Handle.
  */
 native ClearTrie(Handle:trie);
+
+/**
+ * Retrieves the number of elements in a trie.
+ *
+ * Note that trie items are not enumerable/iteratable.  If you need to 
+ * retrieve the elements in a trie, store its keys in an ADT Array. 
+ *
+ * @param trie		Trie Handle.
+ * @return			Number of elements in the trie.
+ * @error			Invalid Handle.
+ */
+native GetTrieSize(Handle:trie);
diff --git a/public/sm_trie_tpl.h b/public/sm_trie_tpl.h
index 5d9b0b59..5018c8a2 100644
--- a/public/sm_trie_tpl.h
+++ b/public/sm_trie_tpl.h
@@ -83,6 +83,8 @@ public:
 		node->value.~K();
 		node->valset = false;
 
+		m_numElements--;
+
 		return true;
 	}
 
@@ -164,6 +166,8 @@ public:
 			m_empty->valset = true;
 			new (&m_empty->value) K(obj);
 
+			m_numElements++;
+
 			return true;
 		}
 
@@ -204,6 +208,8 @@ public:
 				node->valset = true;
 				new (&node->value) K(obj);
 
+				m_numElements++;
+
 				return true;
 			}
 			else if (node->parent != lastidx)
@@ -403,6 +409,8 @@ public:
 				node->valset = true;
 				new (&node->value) K(obj);
 
+				m_numElements++;
+
 				return true;
 			}
 			else
@@ -421,6 +429,7 @@ public:
 						{
 							node->valset = true;
 							new (&node->value) K(obj);
+							m_numElements++;
 							return true;
 						}
 						/* Same string.  We can't insert. */
@@ -605,6 +614,8 @@ public:
 						}
 					}
 
+					m_numElements++;
+
 					/* Phew! */
 					return true;
 				}
@@ -631,6 +642,7 @@ public:
 		{
 			node->valset = true;
 			new (&node->value) K(obj);
+			m_numElements++;
 			return true;
 		}
 
@@ -644,6 +656,7 @@ public:
 		m_baseSize = 256;
 		m_stSize = 256;
 		m_empty = NULL;
+		m_numElements = 0;
 
 		internal_clear();
 	}
@@ -775,6 +788,7 @@ private:
 	void internal_clear()
 	{
 		m_tail = 0;
+		m_numElements = 0;
 
 		memset(m_base, 0, sizeof(KTrieNode) * (m_baseSize + 1));
 		memset(m_stringtab, 0, sizeof(char) * m_stSize);
@@ -895,6 +909,10 @@ public:
 			+ m_stSize
 			+ sizeof(KTrieNode);
 	}
+	size_t size()
+	{
+		return m_numElements;
+	}
 private:
 	KTrieNode *m_base;			/* Base array for the sparse tables */
 	KTrieNode *m_empty;			/* Special case for empty strings */
@@ -902,6 +920,7 @@ private:
 	unsigned int m_baseSize;	/* Size of the base array, in members */
 	unsigned int m_stSize;		/* Size of the string table, in bytes */
 	unsigned int m_tail;		/* Current unused offset into the string table */
+	size_t m_numElements;		/* Number of elements in use */
 };
 
 /**

From 9b6c6c1fcd447011166e13564f839db131028542 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Thu, 3 Jan 2008 18:46:01 +0000
Subject: [PATCH 148/263] added amb1335 - zombie_master sdktools support

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401836
---
 gamedata/sdktools.games.txt | 126 ++++++++++++++++++++++++++++++++++++
 1 file changed, 126 insertions(+)

diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index 23f15a42..8379aa63 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -44,6 +44,7 @@
 			"game"		"empires"
 			"game"		"synergy"
 			"game"		"hidden"
+			"game"		"zombie_master"
 		}
 
 		"Offsets"
@@ -156,6 +157,7 @@
 			"game"		"empires"
 			"game"		"synergy"
 			"game"		"hidden"
+			"game"		"zombie_master"
 		}
 		
 		"Offsets"
@@ -1426,5 +1428,129 @@
 			}
 		}
 	}
+
+	/* Zombie Master 1.1.3 */
+	"zombie_master"
+	{
+		"Offsets"
+		{
+			/* CBasePlayer */
+			"GiveNamedItem"
+			{
+				"windows"	"329"
+				"linux"		"330"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"226"
+				"linux"		"227"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"224"
+				"linux"		"225"
+			}
+			"Ignite"
+			{
+				"windows"	"188"
+				"linux"		"189"
+			}
+			"Extinguish"
+			{
+				"windows"	"189"
+				"linux"		"190"
+			}
+			"Teleport"
+			{
+				"windows"	"98"
+				"linux"		"99"
+			}
+			"CommitSuicide"
+			{
+				"windows"	"357"
+				"linux"		"358"
+			}
+			"GetVelocity"
+			{
+				"windows"	"126"
+				"linux"		"127"
+			}
+			"EyeAngles"
+			{
+				"windows"	"118"
+				"linux"		"119"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+				"linux"		"30"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+				"linux"		"32"
+			}
+			"AcceptInput"
+			{
+				"windows"	"35"
+				"linux"		"36"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+			"s_pTempEntities"
+			{
+				"windows"	"30"
+			}
+			"g_pGameRules"
+			{
+				"windows"	"7"
+			}
+		}
+
+		"Signatures"
+		{
+			"CBaseTempEntity"
+			{
+				"library"	"server"
+				"windows"	"\x55\x8B\xEC\x51\x89\x4D\xFC\x8B\x45\xFC\xC7\x00\x2A\x2A\x2A\x2A\x8B\x4D\xFC\x8B\x55\x08\x89\x51\x04\x8B\x45\xFC\x8B\x0D\x2A\x2A"
+			}
+			"DispatchSpawn"
+			{
+				"library"	"server"
+				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
+				"windows"	"\x55\x8B\xEC\x83\xEC\x20\x83\x7D\x08\x00\x0F\x84\x95\x01\x00\x00\xA1\x2A\x2A\x2A\x2A\x50\x8D\x4D\xF0\xE8\x2A\x2A\x2A\x2A\x8D\x4D"
+			}
+			"CreateEntityByName"
+			{
+				"library"	"server"
+				"linux"		"@_Z18CreateEntityByNamePKci"
+				"windows"	"\x55\x8B\xEC\x83\xEC\x0C\x83\x7D\x0C\xFF\x74\x39\x8B\x45\x0C\x50\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x11\x8B\x0D\x2A\x2A\x2A\x2A\xFF\x52"
+			}
+			"FindEntityByClassname"
+			{
+				"library"	"server"
+				"windows"	"\x55\x8B\xEC\x83\xEC\x10\x89\x4D\xF4\x83\x7D\x08\x00\x74\x1C\x8B\x45\x08\x8B\x10\x8B\x4D\x08\xFF\x52\x08\x50\x8B\x4D\xF4\xE8\x2A\x2A\x2A\x2A\x8B\x40\x0C\x89\x45\x\xF0\xEB\x0B\x8B\x4D\xF4\xE8\x2A\x2A\x2A\x2A\x89\x45\xF0\x8B\x4D\xF0\x89\x4D\xFC\xEB\x09\x8B\x55\xFC\x8B\x42\x0C\x89\x45\xFC\x83\x7D\xFC\x00\x74\x38\x8B\x4D\xFC\x8B\x11\x89"
+				"linux"		"@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
+			}
+			"CreateGameRulesObject"
+			{
+				"library"	"server"
+				"windows"	"\x55\x8B\xEC\x83\xEC\x10\xA1\x2A\x2A\x2A\x2A\x89\x45\xF4\x8B\x4D\xF4\x89\x4D\xF8\x83\x7D\xF8\x00"
+			}
+			"g_pGameRules"
+			{
+				"library"	"server"
+				"linux"		"@g_pGameRules"
+			}
+		}
+	}
 }
 

From 89ac3a14ba1e0514dee6da89dc7b65a7f6544d5a Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Thu, 3 Jan 2008 19:40:55 +0000
Subject: [PATCH 149/263] added amb1341 - OnClientPostAdminFilter

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401837
---
 core/PlayerManager.cpp      |  6 ++++++
 plugins/include/clients.inc | 17 +++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp
index dcee273e..302f8603 100644
--- a/core/PlayerManager.cpp
+++ b/core/PlayerManager.cpp
@@ -51,6 +51,7 @@ PlayerManager g_Players;
 bool g_OnMapStarted = false;
 IForward *PreAdminCheck = NULL;
 IForward *PostAdminCheck = NULL;
+IForward *PostAdminFilter = NULL;
 const unsigned int *g_NumPlayersToAuth = NULL;
 int lifestate_offset = -1;
 List<ICommandTargetProcessor *> target_processors;
@@ -130,6 +131,7 @@ void PlayerManager::OnSourceModAllInitialized()
 
 	PreAdminCheck = g_Forwards.CreateForward("OnClientPreAdminCheck", ET_Event, 1, p1);
 	PostAdminCheck = g_Forwards.CreateForward("OnClientPostAdminCheck", ET_Ignore, 1, p1);
+	PostAdminFilter = g_Forwards.CreateForward("OnClientPostAdminFilter", ET_Ignore, 1, p1);
 }
 
 void PlayerManager::OnSourceModShutdown()
@@ -155,6 +157,7 @@ void PlayerManager::OnSourceModShutdown()
 
 	g_Forwards.ReleaseForward(PreAdminCheck);
 	g_Forwards.ReleaseForward(PostAdminCheck);
+	g_Forwards.ReleaseForward(PostAdminFilter);
 
 	delete [] m_Players;
 }
@@ -1374,6 +1377,9 @@ void CPlayer::NotifyPostAdminChecks()
 		pListener->OnClientPostAdminCheck(m_iIndex);
 	}
 
+	PostAdminFilter->PushCell(m_iIndex);
+	PostAdminFilter->Execute(NULL);
+
 	PostAdminCheck->PushCell(m_iIndex);
 	PostAdminCheck->Execute(NULL);
 }
diff --git a/plugins/include/clients.inc b/plugins/include/clients.inc
index 69d90587..29d6ac5b 100644
--- a/plugins/include/clients.inc
+++ b/plugins/include/clients.inc
@@ -136,6 +136,23 @@ forward OnClientAuthorized(client, const String:auth[]);
  */
 forward Action:OnClientPreAdminCheck(client);
 
+/**
+ * Called directly before OnClientPostAdminCheck() as a method to 
+ * alter administrative permissions before plugins perform final 
+ * post-connect operations.  
+ *
+ * In general, do not use this function unless you are specifically 
+ * attempting to change access permissions.  Use OnClientPostAdminCheck() 
+ * instead if you simply want to perform post-connect authorization 
+ * routines.
+ *
+ * See OnClientPostAdminCheck() for more information.
+ *
+ * @param client		Client index.
+ * @noreturn
+ */
+forward OnClientPostAdminFilter(client);
+
 /**
  * Called once a client is authorized and fully in-game, and 
  * after all post-connection authorizations have been performed.  

From 4e07200cfb54ace3ce404d7fb6eb88462192bb6c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 4 Jan 2008 16:05:26 +0000
Subject: [PATCH 150/263] - added AddTargetsToMenu2() for using COMMAND_FILTER
 flags - fixed amb1350 - sm_voteban/menu ban on fake clients would crash -
 fake clients can no longer be banned and do not appear on ban menus

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401838
---
 core/smn_banning.cpp               |  5 ++++
 plugins/adminmenu.sp               | 48 +++++++++++++++++++++++++++---
 plugins/basebans/ban.sp            |  2 +-
 plugins/basevotes/voteban.sp       |  2 +-
 plugins/include/adminmenu.inc      | 19 +++++++++++-
 plugins/include/commandfilters.inc | 28 ++++++++---------
 6 files changed, 83 insertions(+), 21 deletions(-)

diff --git a/core/smn_banning.cpp b/core/smn_banning.cpp
index 2cf5888e..876e31fd 100644
--- a/core/smn_banning.cpp
+++ b/core/smn_banning.cpp
@@ -256,6 +256,11 @@ static cell_t BanClient(IPluginContext *pContext, const cell_t *params)
 		return pContext->ThrowNativeError("Client index %d is invalid", client);
 	}
 
+	if (pPlayer->IsFakeClient())
+	{
+		return pContext->ThrowNativeError("Cannot ban fake client %d", client);
+	}
+
 	pContext->LocalToString(params[4], &ban_reason);
 	pContext->LocalToString(params[5], (char **)&kick_message);
 	pContext->LocalToString(params[6], &ban_cmd);
diff --git a/plugins/adminmenu.sp b/plugins/adminmenu.sp
index 9d21bc84..8a68b46c 100644
--- a/plugins/adminmenu.sp
+++ b/plugins/adminmenu.sp
@@ -61,6 +61,7 @@ public bool:AskPluginLoad(Handle:myself, bool:late, String:error[], err_max)
 {
 	CreateNative("GetAdminTopMenu", __GetAdminTopMenu);
 	CreateNative("AddTargetsToMenu", __AddTargetsToMenu);
+	CreateNative("AddTargetsToMenu2", __AddTargetsToMenu2);
 	RegPluginLibrary("adminmenu");
 	return true;
 }
@@ -181,6 +182,11 @@ public __AddTargetsToMenu(Handle:plugin, numParams)
 	return UTIL_AddTargetsToMenu(GetNativeCell(1), GetNativeCell(2), GetNativeCell(3), alive_only);
 }
 
+public __AddTargetsToMenu2(Handle:plugin, numParams)
+{
+	return UTIL_AddTargetsToMenu2(GetNativeCell(1), GetNativeCell(2), GetNativeCell(3));
+}
+
 public Action:Command_DisplayMenu(client, args)
 {
 	if (client == 0)
@@ -194,7 +200,7 @@ public Action:Command_DisplayMenu(client, args)
 	return Plugin_Handled;
 }
 
-stock UTIL_AddTargetsToMenu(Handle:menu, source_client, bool:in_game_only, bool:alive_only)
+stock UTIL_AddTargetsToMenu2(Handle:menu, source_client, flags)
 {
 	new max_clients = GetMaxClients();
 	decl String:user_id[12];
@@ -210,17 +216,34 @@ stock UTIL_AddTargetsToMenu(Handle:menu, source_client, bool:in_game_only, bool:
 			continue;
 		}
 		
-		if (in_game_only && !IsClientInGame(i))
+		PrintToServer("%d, %d, %d", i, flags, IsFakeClient(i));
+		
+		if (((flags & COMMAND_FILTER_NO_BOTS) == COMMAND_FILTER_NO_BOTS)
+			&& IsFakeClient(i))
 		{
 			continue;
 		}
 		
-		if (alive_only && !IsPlayerAlive(i))
+		if (((flags & COMMAND_FILTER_CONNECTED) != COMMAND_FILTER_CONNECTED)
+			&& !IsClientInGame(i))
 		{
 			continue;
 		}
 		
-		if (source_client && !CanUserTarget(source_client, i))
+		if (((flags & COMMAND_FILTER_ALIVE) == COMMAND_FILTER_ALIVE) 
+			&& !IsPlayerAlive(i))
+		{
+			continue;
+		}
+		
+		if (((flags & COMMAND_FILTER_DEAD) == COMMAND_FILTER_DEAD)
+			&& IsPlayerAlive(i))
+		{
+			continue;
+		}
+		
+		if ((source_client && ((flags & COMMAND_FILTER_NO_IMMUNITY) != COMMAND_FILTER_NO_IMMUNITY))
+			&& !CanUserTarget(source_client, i))
 		{
 			continue;
 		}
@@ -235,3 +258,20 @@ stock UTIL_AddTargetsToMenu(Handle:menu, source_client, bool:in_game_only, bool:
 	return num_clients;
 }
 
+stock UTIL_AddTargetsToMenu(Handle:menu, source_client, bool:in_game_only, bool:alive_only)
+{
+	new flags = 0;
+	
+	if (!in_game_only)
+	{
+		flags |= COMMAND_FILTER_CONNECTED;
+	}
+	
+	if (alive_only)
+	{
+		flags |= COMMAND_FILTER_ALIVE;
+	}
+	
+	return UTIL_AddTargetsToMenu2(menu, source_client, flags);
+}
+
diff --git a/plugins/basebans/ban.sp b/plugins/basebans/ban.sp
index 3ce206be..40c698da 100644
--- a/plugins/basebans/ban.sp
+++ b/plugins/basebans/ban.sp
@@ -75,7 +75,7 @@ DisplayBanTargetMenu(client)
 	SetMenuTitle(menu, title);
 	SetMenuExitBackButton(menu, true);
 	
-	AddTargetsToMenu(menu, client, false, false);
+	AddTargetsToMenu2(menu, client, COMMAND_FILTER_NO_BOTS|COMMAND_FILTER_CONNECTED);
 	
 	DisplayMenu(menu, client, MENU_TIME_FOREVER);
 }
diff --git a/plugins/basevotes/voteban.sp b/plugins/basevotes/voteban.sp
index fa220f71..1827c0c6 100644
--- a/plugins/basevotes/voteban.sp
+++ b/plugins/basevotes/voteban.sp
@@ -167,7 +167,7 @@ public Action:Command_Voteban(client, args)
 			client,
 			target_list,
 			MAXPLAYERS,
-			COMMAND_FILTER_NO_MULTI,
+			COMMAND_FILTER_NO_MULTI|COMMAND_FILTER_NO_BOTS,
 			target_name,
 			sizeof(target_name),
 			tn_is_ml)) <= 0)
diff --git a/plugins/include/adminmenu.inc b/plugins/include/adminmenu.inc
index 619165e5..dcac5c4f 100644
--- a/plugins/include/adminmenu.inc
+++ b/plugins/include/adminmenu.inc
@@ -94,7 +94,23 @@ native Handle:GetAdminTopMenu();
  * @param alive_only 	True to only select alive players.
  * @return				Number of clients added.
  */
-native AddTargetsToMenu(Handle:menu, source_client, bool:in_game_only=true, bool:alive_only=false);
+native AddTargetsToMenu(Handle:menu, 
+						source_client, 
+						bool:in_game_only=true, 
+						bool:alive_only=false);
+
+/**
+ * Adds targets to an admin menu.
+ *
+ * Each client is displayed as: name (userid)
+ * Each item contains the userid as a string for its info.
+ *
+ * @param menu			Menu Handle.
+ * @param source_client	Source client, or 0 to ignore immunity.
+ * @param flags			COMMAND_FILTER flags from commandfilters.inc.
+ * @return				Number of clients added.
+ */
+native AddTargetsToMenu2(Handle:menu, source_client, flags);
 
 /**
  * Re-displays the admin menu to a client after selecting an item.
@@ -132,5 +148,6 @@ public __pl_adminmenu_SetNTVOptional()
 {
 	MarkNativeAsOptional("GetAdminTopMenu");
 	MarkNativeAsOptional("AddTargetsToMenu");
+	MarkNativeAsOptional("AddTargetsToMenu2");
 }
 #endif
diff --git a/plugins/include/commandfilters.inc b/plugins/include/commandfilters.inc
index fa8829a9..914982a8 100644
--- a/plugins/include/commandfilters.inc
+++ b/plugins/include/commandfilters.inc
@@ -37,21 +37,21 @@
 
 #define MAX_TARGET_LENGTH			64
 
-#define COMMAND_FILTER_ALIVE		(1<<0)		/* Only allow alive players */
-#define COMMAND_FILTER_DEAD			(1<<1)		/* Only filter dead players */
-#define COMMAND_FILTER_CONNECTED	(1<<2)		/* Allow players not fully in-game */
-#define COMMAND_FILTER_NO_IMMUNITY	(1<<3)		/* Ignore immunity rules */
-#define COMMAND_FILTER_NO_MULTI		(1<<4)		/* Do not allow multiple target patterns */
-#define COMMAND_FILTER_NO_BOTS		(1<<5)		/* Do not allow bots to be targetted */
+#define COMMAND_FILTER_ALIVE		(1<<0)		/**< Only allow alive players */
+#define COMMAND_FILTER_DEAD			(1<<1)		/**< Only filter dead players */
+#define COMMAND_FILTER_CONNECTED	(1<<2)		/**< Allow players not fully in-game */
+#define COMMAND_FILTER_NO_IMMUNITY	(1<<3)		/**< Ignore immunity rules */
+#define COMMAND_FILTER_NO_MULTI		(1<<4)		/**< Do not allow multiple target patterns */
+#define COMMAND_FILTER_NO_BOTS		(1<<5)		/**< Do not allow bots to be targetted */
 
-#define COMMAND_TARGET_NONE			0			/* No target was found */
-#define COMMAND_TARGET_NOT_ALIVE	-1			/* Single client is not alive */
-#define COMMAND_TARGET_NOT_DEAD		-2			/* Single client is not dead */
-#define COMMAND_TARGET_NOT_IN_GAME	-3			/* Single client is not in game */
-#define COMMAND_TARGET_IMMUNE		-4			/* Single client is immune */
-#define COMMAND_TARGET_EMPTY_FILTER	-5			/* A multi-filter (such as @all) had no targets */
-#define COMMAND_TARGET_NOT_HUMAN	-6			/* Target was not human */
-#define COMMAND_TARGET_AMBIGUOUS	-7			/* Partial name had too many targets */
+#define COMMAND_TARGET_NONE			0			/**< No target was found */
+#define COMMAND_TARGET_NOT_ALIVE	-1			/**< Single client is not alive */
+#define COMMAND_TARGET_NOT_DEAD		-2			/**< Single client is not dead */
+#define COMMAND_TARGET_NOT_IN_GAME	-3			/**< Single client is not in game */
+#define COMMAND_TARGET_IMMUNE		-4			/**< Single client is immune */
+#define COMMAND_TARGET_EMPTY_FILTER	-5			/**< A multi-filter (such as @all) had no targets */
+#define COMMAND_TARGET_NOT_HUMAN	-6			/**< Target was not human */
+#define COMMAND_TARGET_AMBIGUOUS	-7			/**< Partial name had too many targets */
 
 /**
  * Processes a generic command target string, and resolves it to a list 

From 1ffd1db733abd3f8351417225705e60c965f9d00 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 4 Jan 2008 16:20:25 +0000
Subject: [PATCH 151/263] added amb1348 - SetFailState() formatting

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401839
---
 core/smn_core.cpp             | 29 ++++++++++++++++++++++++++---
 plugins/include/sourcemod.inc | 14 ++++++++++++--
 2 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/core/smn_core.cpp b/core/smn_core.cpp
index cd8de231..67c413c6 100644
--- a/core/smn_core.cpp
+++ b/core/smn_core.cpp
@@ -371,12 +371,35 @@ static cell_t GetPluginInfo(IPluginContext *pContext, const cell_t *params)
 static cell_t SetFailState(IPluginContext *pContext, const cell_t *params)
 {
 	char *str;
+	CPlugin *pPlugin;
+
 	pContext->LocalToString(params[1], &str);
+	pPlugin = g_PluginSys.GetPluginByCtx(pContext->GetContext());
 
-	CPlugin *pPlugin = g_PluginSys.GetPluginByCtx(pContext->GetContext());
-	pPlugin->SetErrorState(Plugin_Error, "%s", str);
+	if (params[0] == 1)
+	{
+		pPlugin->SetErrorState(Plugin_Error, "%s", str);
 
-	return pContext->ThrowNativeErrorEx(SP_ERROR_ABORTED, "%s", str);
+		return pContext->ThrowNativeErrorEx(SP_ERROR_ABORTED, "%s", str);
+	}
+	else
+	{
+		char buffer[2048];
+
+		g_SourceMod.FormatString(buffer, sizeof(buffer), pContext, params, 1);
+		if (pContext->GetContext()->n_err != SP_ERROR_NONE)
+		{
+			pPlugin->SetErrorState(Plugin_Error, "%s", str);
+			return pContext->ThrowNativeErrorEx(SP_ERROR_ABORTED, "Formatting error (%s)", str);
+		}
+		else
+		{
+			pPlugin->SetErrorState(Plugin_Error, "%s", buffer);
+			return pContext->ThrowNativeErrorEx(SP_ERROR_ABORTED, "%s", buffer);
+		}
+	}
+
+	return 0;
 }
 
 static cell_t GetSysTickCount(IPluginContext *pContext, const cell_t *params)
diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc
index a353b425..0f625607 100644
--- a/plugins/include/sourcemod.inc
+++ b/plugins/include/sourcemod.inc
@@ -282,11 +282,21 @@ native Handle:FindPluginByNumber(order_num);
  * Causes the plugin to enter a failed state.  An error will be thrown and
  * the plugin will be paused until it is unloaded or reloaded.
  *
- * @param string		Message to print.
+ * For backwards compatibility, if no extra arguments are passed, no 
+ * formatting is applied.  If one or more additional arguments is passed, 
+ * the string is formatted using Format().  If any errors are encountered 
+ * during formatting, both the format specifier string and an additional 
+ * error message are written.
+ *
+ * This function does not return, and no further code in the plugin is 
+ * executed.
+ *
+ * @param string		Format specifier string.
+ * @param ...			Formatting arguments.
  * @noreturn
  * @error				Always throws SP_ERROR_ABORT.
  */
-native SetFailState(const String:string[]);
+native SetFailState(const String:string[], any:...);
 
 /**
  * Aborts the current callback and throws an error.  This function

From 934fb9741a1b8808a08413e3c8493c1ef9b2e4b7 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 6 Jan 2008 01:35:24 +0000
Subject: [PATCH 152/263] commited a new version of this file.  suffice to say
 the massive inconsistencies and clear compiling bugs in this was
 disappointing

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401840
---
 plugins/include/entity_prop_stocks.inc | 75 ++++++++++++++------------
 1 file changed, 40 insertions(+), 35 deletions(-)

diff --git a/plugins/include/entity_prop_stocks.inc b/plugins/include/entity_prop_stocks.inc
index d6690ebb..0bc4a1fd 100644
--- a/plugins/include/entity_prop_stocks.inc
+++ b/plugins/include/entity_prop_stocks.inc
@@ -80,83 +80,86 @@ enum
 /**
  * Gets an entity's movetype.
  *
- * @param index		Entity index
- * @return		Movetype, see enum above
+ * @param entity	Entity index.
+ * @return			Movetype, see enum above.
+ * @error			Invalid entity index, or lack of mod compliance.
  */
-stock GetEntityMovetype(index)
+stock GetEntityMovetype(entity)
 {
-	new offset = GetEntSendPropOffs(index, "movetype");
-	return GetEntData(index, offset, 1);
+	new offset = GetEntSendPropOffs(entity, "movetype");
+	return GetEntData(entity, offset, 1);
 }
 
 /**
  * Sets an entity's movetype.
  *
- * @param index		Entity index
- * @param mt		Movetype, see enum above
+ * @param entity	Entity index.
+ * @param mt		Movetype, see enum above.
  * @noreturn
+ * @error			Invalid entity index, or lack of mod compliance.
  */
-stock SetEntityMovetype(index, mt)
+stock SetEntityMovetype(entity, mt)
 {
-	new offset = GetEntSendPropOffs(index, "movetype");
-	SetEntData(index, offset, mt, 1, true);
+	new offset = GetEntSendPropOffs(entity, "movetype");
+	SetEntData(entity, offset, mt, 1, true);
 }
 
 /**
  * Sets an entity's color.
  *
- * @param index		Entity index
+ * @param entity	Entity index
  * @param r 		Amount of red (0-255)
  * @param g 		Amount of green (0-255)
  * @param b 		Amount of blue (0-255)
  * @param a 		Amount of alpha (0-255)
  * @noreturn
+ * @error			Invalid entity index, or lack of mod compliance.
  */
-stock SetEntityRenderColor(index, r=255, g=255, b=255, a=255)
+stock SetEntityRenderColor(entity, r=255, g=255, b=255, a=255)
 {
-	new offset = GetEntSendPropOffs(index, "m_clrRender");
-	SetEntData(index, offset, r, 1, true);
-	SetEntData(index, offset + 1, g, 1, true);
-	SetEntData(index, offset + 2, b, 1, true);
-	SetEntData(index, offset + 3, a, 1, true);
+	new offset = GetEntSendPropOffs(entity, "m_clrRender");
+	SetEntData(entity, offset, r, 1, true);
+	SetEntData(entity, offset + 1, g, 1, true);
+	SetEntData(entity, offset + 2, b, 1, true);
+	SetEntData(entity, offset + 3, a, 1, true);
 }
 
 /**
  * Gets an entity's gravity.
  *
- * @param index		Entity index
- * @return		Entity's m_flGravity value
+ * @param entity 	Entity index.
+ * @return			Entity's m_flGravity value.
+ * @error			Invalid entity index, or lack of mod compliance.
  */
-stock Float:GetEntityGravity(index)
+stock Float:GetEntityGravity(entity)
 {
-	new offset = FindDataMapOffs(index, "m_flGravity");
-	return GetEntDataFloat(index, offset);	
+	return GetEntPropFloat(entity, Prop_Data, "m_flGravity");
 }
 
 /**
  * Sets an entity's gravity.
  *
- * @param index		Entity index
- * @param amount	Gravity to set. Default = 800
+ * @param entity	Entity index.
+ * @param amount	Gravity to set (default = 800).
  * @noreturn
+ * @error			Invalid entity index, or lack of mod compliance.
  */
-stock SetEntityGravity(index, Float:amount)
+stock SetEntityGravity(entity, Float:amount)
 {
-	new offset = FindDataMapOffs(index, "m_flGravity");
-	SetEntDataFloat(index, offset, amount, true);	
+	SetEntPropFloat(entity, Prop_Data, "m_flGravity", amount);
 }
 
 /**
  * Sets an entity's health
  *
- * @param index		Entity index
- * @param amount	Health
+ * @param entity	Entity index.
+ * @param amount	Health amount.
  * @noreturn
+ * @error			Invalid entity index, or lack of mod compliance.
  */
-stock SetEntityHealth(index, amount)
+stock SetEntityHealth(entity, amount)
 {
-	SetEntProp(client, Prop_Send, "m_iHealth", amount, 4)
-	SetEntProp(client, Prop_Data, "m_iHealth", amount, 4)
+	SetEntProp(entity, Prop_Send, "m_iHealth", amount);
 }
 
 /**
@@ -164,9 +167,11 @@ stock SetEntityHealth(index, amount)
  *
  * @param client	Client index
  * @return			Bitsum of buttons
+ * @error			Invalid client index, client not in game, 
+ *					or lack of mod compliance.
  */
 stock GetClientButtons(client)
 {
-	new offset = FindDataMapOffs(client, "m_nButtons");
-	return GetEntData(client, offset, 4);
-}
\ No newline at end of file
+	return GetEntProp(client, Prop_Data, "m_nButtons");
+}
+

From 6e09aacd98f8ac8f5d03615a111c80a459fbdaee Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 7 Jan 2008 04:00:47 +0000
Subject: [PATCH 153/263] fixed amb1355 - optional extensions did not work
 properly

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401841
---
 core/systems/PluginSys.cpp | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/core/systems/PluginSys.cpp b/core/systems/PluginSys.cpp
index d26cee0f..8a64c450 100644
--- a/core/systems/PluginSys.cpp
+++ b/core/systems/PluginSys.cpp
@@ -1326,10 +1326,6 @@ bool CPluginManager::LoadOrRequireExtensions(CPlugin *pPlugin, unsigned int pass
 		if (strncmp(pubvar->name, "__ext_", 6) == 0)
 		{
 			ext = (_ext *)pubvar->offs;
-			if (!ext->required && !ext->autoload)
-			{
-				continue;
-			}
 			if (pBase->LocalToString(ext->file, &file) != SP_ERROR_NONE)
 			{
 				continue;

From e1bc3234b28d5d143884b6672a11daca24c3239c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 7 Jan 2008 06:58:43 +0000
Subject: [PATCH 154/263] added /MP to compilation settings

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401842
---
 core/msvc8/sourcemod_mm.vcproj | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/core/msvc8/sourcemod_mm.vcproj b/core/msvc8/sourcemod_mm.vcproj
index d7e53673..6007b001 100644
--- a/core/msvc8/sourcemod_mm.vcproj
+++ b/core/msvc8/sourcemod_mm.vcproj
@@ -40,6 +40,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/MP"
 				FavorSizeOrSpeed="1"
 				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER"
@@ -120,6 +121,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/MP"
 				Optimization="0"
 				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER"
@@ -281,6 +283,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/MP"
 				FavorSizeOrSpeed="1"
 				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER;ORANGEBOX_BUILD"
@@ -361,6 +364,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/MP"
 				Optimization="0"
 				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER;ORANGEBOX_BUILD"
@@ -442,6 +446,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/MP"
 				Optimization="0"
 				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER"
@@ -524,6 +529,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/MP"
 				FavorSizeOrSpeed="1"
 				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER"

From c033f5415a2271df243508e636e0ebc85d5b92e8 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 7 Jan 2008 06:59:44 +0000
Subject: [PATCH 155/263] - added GuessSDKVersion() - added rendermode and
 renderfx prop stocks and defines - added MoveType tag to MOVETYPE defines -
 changed Movetype functions to MoveType to use correct SourceMod casing

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401843
---
 core/smn_halflife.cpp                  |  32 ++++++
 plugins/basefuncommands/ice.sp         |   6 +-
 plugins/basefuncommands/noclip.sp      |   8 +-
 plugins/include/entity.inc             |   4 +-
 plugins/include/entity_prop_stocks.inc | 140 ++++++++++++++++++++++---
 plugins/include/halflife.inc           |  18 +++-
 6 files changed, 182 insertions(+), 26 deletions(-)

diff --git a/core/smn_halflife.cpp b/core/smn_halflife.cpp
index 73091109..2b8adc9c 100644
--- a/core/smn_halflife.cpp
+++ b/core/smn_halflife.cpp
@@ -436,6 +436,37 @@ static cell_t smn_IsPlayerAlive(IPluginContext *pContext, const cell_t *params)
 	}
 }
 
+static cell_t GuessSDKVersion(IPluginContext *pContext, const cell_t *params)
+{
+#if defined METAMOD_PLAPI_VERSION
+	int version = g_SMAPI->GetSourceEngineBuild();
+
+	if (version == SOURCE_ENGINE_ORIGINAL)
+	{
+		return 10;
+	}
+	else if (version == SOURCE_ENGINE_EPISODEONE)
+	{
+		return 20;
+	}
+	else if (version == SOURCE_ENGINE_ORANGEBOX)
+	{
+		return 30;
+	}
+#else
+	if (g_HL2.IsOriginalEngine())
+	{
+		return 10;
+	}
+	else
+	{
+		return 20;
+	}
+#endif
+
+	return 0;
+}
+
 REGISTER_NATIVES(halflifeNatives)
 {
 	{"CreateFakeClient",		CreateFakeClient},
@@ -465,5 +496,6 @@ REGISTER_NATIVES(halflifeNatives)
 	{"PrintHintText",			PrintHintText},
 	{"ShowVGUIPanel",			ShowVGUIPanel},
 	{"IsPlayerAlive",			smn_IsPlayerAlive},
+	{"GuessSDKVersion",			GuessSDKVersion},
 	{NULL,						NULL},
 };
diff --git a/plugins/basefuncommands/ice.sp b/plugins/basefuncommands/ice.sp
index 11afbcbb..fcd06084 100644
--- a/plugins/basefuncommands/ice.sp
+++ b/plugins/basefuncommands/ice.sp
@@ -59,7 +59,7 @@ FreezeClient(client, time)
 		UnfreezeClient(client);
 	}
 	
-	SetEntityMovetype(client, MOVETYPE_NONE);
+	SetEntityMoveType(client, MOVETYPE_NONE);
 	SetEntityRenderColor(client, 0, 128, 255, 192);
 	
 	new Float:vec[3];
@@ -81,7 +81,7 @@ UnfreezeClient(client)
 	GetClientEyePosition(client, vec);
 	EmitAmbientSound(SOUND_FREEZE, vec, client, SNDLEVEL_RAIDSIREN);
 
-	SetEntityMovetype(client, MOVETYPE_WALK);
+	SetEntityMoveType(client, MOVETYPE_WALK);
 	SetEntityRenderColor(client, 255, 255, 255, 255);	
 }
 
@@ -191,7 +191,7 @@ public Action:Timer_Freeze(Handle:timer, any:client)
 	
 	g_FreezeTracker[client]--;
 	
-	SetEntityMovetype(client, MOVETYPE_NONE);
+	SetEntityMoveType(client, MOVETYPE_NONE);
 	SetEntityRenderColor(client, 0, 128, 255, 135);
 	
 	new Float:vec[3];
diff --git a/plugins/basefuncommands/noclip.sp b/plugins/basefuncommands/noclip.sp
index 22a074af..d4732faa 100644
--- a/plugins/basefuncommands/noclip.sp
+++ b/plugins/basefuncommands/noclip.sp
@@ -38,15 +38,15 @@ SetupNoClip()
 
 PerformNoClip(client, target)
 {
-	new movetype = GetEntityMovetype(target);
-	PrintToChatAll("movetype was %d", movetype);
+	new MoveType:movetype = GetEntityMoveType(target);
+
 	if (movetype != MOVETYPE_NOCLIP)
 	{
-		SetEntityMovetype(target, MOVETYPE_NOCLIP);
+		SetEntityMoveType(target, MOVETYPE_NOCLIP);
 	}
 	else
 	{
-		SetEntityMovetype(target, MOVETYPE_WALK);
+		SetEntityMoveType(target, MOVETYPE_WALK);
 	}
 	
 	LogAction(client, target, "\"%L\" toggled noclip on \"%L\"", client, target);
diff --git a/plugins/include/entity.inc b/plugins/include/entity.inc
index 90830111..d3f3a33a 100644
--- a/plugins/include/entity.inc
+++ b/plugins/include/entity.inc
@@ -217,7 +217,7 @@ native GetEntData(entity, offset, size=4);
  * @error				Invalid entity or offset out of reasonable bounds.
  * @noreturn
  */
-native SetEntData(entity, offset, value, size=4, bool:changeState=false);
+native SetEntData(entity, offset, any:value, size=4, bool:changeState=false);
 
 /**
  * Peeks into an entity's object data and retrieves the float value at 
@@ -414,7 +414,7 @@ stock GetEntProp(entity, PropType:type, const String:prop[], size=4)
  * @error				Invalid entity or offset out of reasonable bounds.
  * @noreturn
  */
-stock SetEntProp(entity, PropType:type, const String:prop[], value, size=4)
+stock SetEntProp(entity, PropType:type, const String:prop[], any:value, size=4)
 {
 	new offs;
 
diff --git a/plugins/include/entity_prop_stocks.inc b/plugins/include/entity_prop_stocks.inc
index 0bc4a1fd..ab492494 100644
--- a/plugins/include/entity_prop_stocks.inc
+++ b/plugins/include/entity_prop_stocks.inc
@@ -35,20 +35,65 @@
 #endif
 #define _entity_prop_stocks_included
 
-enum
+enum MoveType
 {
-	MOVETYPE_NONE = 0,			/** never moves */
-	MOVETYPE_ISOMETRIC,			/** For players */
-	MOVETYPE_WALK,				/** Player only - moving on the ground */
-	MOVETYPE_STEP,				/** gravity, special edge handling -- monsters use this */
-	MOVETYPE_FLY,				/** No gravity, but still collides with stuff */
-	MOVETYPE_FLYGRAVITY,			/** flies through the air + is affected by gravity */
-	MOVETYPE_VPHYSICS,			/** uses VPHYSICS for simulation */
-	MOVETYPE_PUSH,				/** no clip to world, push and crush */
-	MOVETYPE_NOCLIP,			/** No gravity, no collisions, still do velocity/avelocity */
-	MOVETYPE_LADDER,			/** Used by players only when going onto a ladder */
-	MOVETYPE_OBSERVER,			/** Observer movement, depends on player's observer mode */
-	MOVETYPE_CUSTOM,			/** Allows the entity to describe its own physics */
+	MOVETYPE_NONE = 0,			/**< never moves */
+	MOVETYPE_ISOMETRIC,			/**< For players */
+	MOVETYPE_WALK,				/**< Player only - moving on the ground */
+	MOVETYPE_STEP,				/**< gravity, special edge handling -- monsters use this */
+	MOVETYPE_FLY,				/**< No gravity, but still collides with stuff */
+	MOVETYPE_FLYGRAVITY,		/**< flies through the air + is affected by gravity */
+	MOVETYPE_VPHYSICS,			/**< uses VPHYSICS for simulation */
+	MOVETYPE_PUSH,				/**< no clip to world, push and crush */
+	MOVETYPE_NOCLIP,			/**< No gravity, no collisions, still do velocity/avelocity */
+	MOVETYPE_LADDER,			/**< Used by players only when going onto a ladder */
+	MOVETYPE_OBSERVER,			/**< Observer movement, depends on player's observer mode */
+	MOVETYPE_CUSTOM,			/**< Allows the entity to describe its own physics */
+};
+
+enum RenderMode
+{	
+	RENDER_NORMAL,			/**< src */
+	RENDER_TRANSCOLOR,		/**< c*a+dest*(1-a) */
+	RENDER_TRANSTEXTURE,	/**< src*a+dest*(1-a) */
+	RENDER_GLOW,			/**< src*a+dest -- No Z buffer checks -- Fixed size in screen space */
+	RENDER_TRANSALPHA,		/**< src*srca+dest*(1-srca) */
+	RENDER_TRANSADD,		/**< src*a+dest */
+	RENDER_ENVIRONMENTAL,	/**< not drawn, used for environmental effects */
+	RENDER_TRANSADDFRAMEBLEND, /**< use a fractional frame value to blend between animation frames */
+	RENDER_TRANSALPHAADD,	/**< src + dest*(1-a) */
+	RENDER_WORLDGLOW,		/**< Same as kRenderGlow but not fixed size in screen space */
+	RENDER_NONE,			/**< Don't render. */
+};
+
+enum RenderFx
+{	
+	RENDERFX_NONE = 0, 
+	RENDERFX_PULSE_SLOW, 
+	RENDERFX_PULSE_FAST, 
+	RENDERFX_PULSE_SLOW_WIDE, 
+	RENDERFX_PULSE_FAST_WIDE, 
+	RENDERFX_FADE_SLOW, 
+	RENDERFX_FADE_FAST, 
+	RENDERFX_SOLID_SLOW, 
+	RENDERFX_SOLID_FAST, 	   
+	RENDERFX_STROBE_SLOW, 
+	RENDERFX_STROBE_FAST, 
+	RENDERFX_STROBE_FASTER, 
+	RENDERFX_FLICKER_SLOW, 
+	RENDERFX_FLICKER_FAST,
+	RENDERFX_NO_DISSIPATION,
+	RENDERFX_DISTORT,			/**< Distort/scale/translate flicker */
+	RENDERFX_HOLOGRAM,			/**< kRenderFxDistort + distance fade */
+	RENDERFX_EXPLODE,			/**< Scale up really big! */
+	RENDERFX_GLOWSHELL,			/**< Glowing Shell */
+	RENDERFX_CLAMP_MIN_SCALE,	/**< Keep this sprite from getting very small (SPRITES only!) */
+	RENDERFX_ENV_RAIN,			/**< for environmental rendermode, make rain */
+	RENDERFX_ENV_SNOW,			/**<  "        "            "    , make snow */
+	RENDERFX_SPOTLIGHT,			/**< TEST CODE for experimental spotlight */
+	RENDERFX_RAGDOLL,			/**< HACKHACK: TEST CODE for signalling death of a ragdoll character */
+	RENDERFX_PULSE_FAST_WIDER,
+	RENDERFX_MAX
 };
 
 #define IN_ATTACK		(1 << 0)
@@ -84,10 +129,10 @@ enum
  * @return			Movetype, see enum above.
  * @error			Invalid entity index, or lack of mod compliance.
  */
-stock GetEntityMovetype(entity)
+stock MoveType:GetEntityMoveType(entity)
 {
 	new offset = GetEntSendPropOffs(entity, "movetype");
-	return GetEntData(entity, offset, 1);
+	return MoveType:GetEntData(entity, offset, 1);
 }
 
 /**
@@ -98,12 +143,62 @@ stock GetEntityMovetype(entity)
  * @noreturn
  * @error			Invalid entity index, or lack of mod compliance.
  */
-stock SetEntityMovetype(entity, mt)
+stock SetEntityMoveType(entity, MoveType:mt)
 {
 	new offset = GetEntSendPropOffs(entity, "movetype");
 	SetEntData(entity, offset, mt, 1, true);
 }
 
+/**
+ * Gets an entity's render mode.
+ *
+ * @param entity	Entity index.
+ * @return			RenderMode value.
+ * @error			Invalid entity index, or lack of mod compliance.
+ */
+stock RenderMode:GetEntityRenderMode(entity)
+{
+	return RenderMode:GetEntProp(entity, Prop_Send, "m_nRenderMode", 1);
+}
+
+/**
+ * Sets an entity's render mode.
+ *
+ * @param entity	Entity index.
+ * @param mode		RenderMode value.
+ * @noreturn
+ * @error			Invalid entity index, or lack of mod compliance.
+ */
+stock SetEntityRenderMode(entity, RenderMode:mode)
+{
+	SetEntProp(entity, Prop_Send, "m_nRenderMode", mode, 1);
+}
+
+/**
+ * Gets an entity's render Fx.
+ *
+ * @param entity	Entity index.
+ * @return			RenderFx value.
+ * @error			Invalid entity index, or lack of mod compliance.
+ */
+stock RenderFx:GetEntityRenderFx(entity)
+{
+	return RenderFx:GetEntProp(entity, Prop_Send, "m_nRenderFX", 1);
+}
+
+/**
+ * Sets an entity's render Fx.
+ *
+ * @param entity	Entity index.
+ * @param fx		RenderFx value.
+ * @noreturn
+ * @error			Invalid entity index, or lack of mod compliance.
+ */
+stock SetEntityRenderFx(entity, RenderFx:fx)
+{
+	SetEntProp(entity, Prop_Send, "m_nRenderFX", fx, 1);
+}
+
 /**
  * Sets an entity's color.
  *
@@ -124,6 +219,8 @@ stock SetEntityRenderColor(entity, r=255, g=255, b=255, a=255)
 	SetEntData(entity, offset + 3, a, 1, true);
 }
 
+/* GuessSDKVersion */
+
 /**
  * Gets an entity's gravity.
  *
@@ -175,3 +272,14 @@ stock GetClientButtons(client)
 	return GetEntProp(client, Prop_Data, "m_nButtons");
 }
 
+#pragma deprecated Case change, use MoveType version
+stock SetEntityMovetype(entity, any:mt)
+{
+	SetEntityMoveType(entity, MoveType:mt);
+}
+
+#pragma deprecated Case change, use MoveType version
+stock GetEntityMovetype(entity)
+{
+	return _:GetEntityMoveType(entity);
+}
diff --git a/plugins/include/halflife.inc b/plugins/include/halflife.inc
index 58e3b37a..c9f1fbba 100644
--- a/plugins/include/halflife.inc
+++ b/plugins/include/halflife.inc
@@ -35,8 +35,13 @@
 #endif
 #define _halflife_included
 
+#define SOURCE_SDK_UNKNOWN			0		/**< Could not determine the engine version */
+#define SOURCE_SDK_ORIGINAL			10		/**< Original Source engine (still used by "The Ship") */
+#define SOURCE_SDK_EPISODE1			20		/**< SDK+Engine released after Episode 1 */
+#define SOURCE_SDK_EPISODE2			30		/**< Engine released after Episode 2 (no SDK yet) */
+
 #define MOTDPANEL_TYPE_TEXT		0	/**< Treat msg as plain text */
-#define MOTDPANEL_TYPE_INDEX		1	/**< Msg is auto determined by the engine */
+#define MOTDPANEL_TYPE_INDEX	1	/**< Msg is auto determined by the engine */
 #define MOTDPANEL_TYPE_URL		2	/**< Treat msg as an URL link */
 #define MOTDPANEL_TYPE_FILE		3	/**< Treat msg as a filename to be openned */
 
@@ -231,6 +236,17 @@ native bool:IsSoundPrecached(const String:sound[]);
  */
 native CreateDialog(client, Handle:kv, DialogType:type);
 
+/**
+ * Guesses the SDK version a mod was compiled against.  If nothing 
+ * specific is known about the game, the engine version is used instead.
+ *
+ * The return values are guaranteed to increase chronologically (that is, 
+ * a later release will have a higher value).
+ *
+ * @return				SOURCE_SDK version code.
+ */
+native GuessSDKVersion();
+
 /**
  * Prints a message to a specific client in the chat area.
  *

From 63592212d526f7ea94734ee9f813390a471b831c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 7 Jan 2008 22:36:39 +0000
Subject: [PATCH 156/263] - fixed amb1302 - GetClientMenu() could return 1 for
 stale external menus - fixed a debug assertion from StartMessage() + ShowMenu

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401844
---
 core/MenuStyle_Radio.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/core/MenuStyle_Radio.cpp b/core/MenuStyle_Radio.cpp
index 5efb3115..20372c59 100644
--- a/core/MenuStyle_Radio.cpp
+++ b/core/MenuStyle_Radio.cpp
@@ -118,6 +118,7 @@ bool CRadioStyle::OnClientCommand(int client, const char *cmdname, const CComman
 	{
 		if (!m_players[client].bInMenu)
 		{
+			m_players[client].bInExternMenu = false;
 			return false;
 		}
 
@@ -136,7 +137,7 @@ static int g_last_clients[256];
 void CRadioStyle::OnUserMessage(int msg_id, bf_write *bf, IRecipientFilter *pFilter)
 {
 	int count = pFilter->GetRecipientCount();
-	bf_read br(bf->GetBasePointer(), 2);
+	bf_read br(bf->GetBasePointer(), 3);
 
 	br.ReadWord();
 	int c = br.ReadChar();

From 42a313486a412101910d91da6965e43a6cf8b4a2 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 8 Jan 2008 03:06:33 +0000
Subject: [PATCH 157/263] - added amb1332, new cvar protection mechanism for
 rcon_password - removed FCVAR_PROTECTED from Core cvars

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401845
---
 core/AdminCache.cpp                  |  2 +-
 core/smn_player.cpp                  |  2 +-
 plugins/basecommands.sp              | 85 +++++++++++++++++++---------
 translations/plugin.basecommands.txt |  6 ++
 4 files changed, 66 insertions(+), 29 deletions(-)

diff --git a/core/AdminCache.cpp b/core/AdminCache.cpp
index f8c880e3..9e447248 100644
--- a/core/AdminCache.cpp
+++ b/core/AdminCache.cpp
@@ -50,7 +50,7 @@ AdminCache g_Admins;
 AdminFlag g_FlagLetters[26];
 bool g_FlagSet[26];
 
-ConVar sm_immunity_mode("sm_immunity_mode", "1", FCVAR_SPONLY|FCVAR_PROTECTED, "Mode for deciding immunity protection");
+ConVar sm_immunity_mode("sm_immunity_mode", "1", FCVAR_SPONLY, "Mode for deciding immunity protection");
 
 /* Default flags */
 AdminFlag g_DefaultFlags[26] = 
diff --git a/core/smn_player.cpp b/core/smn_player.cpp
index 03f504b0..09c3f4e8 100644
--- a/core/smn_player.cpp
+++ b/core/smn_player.cpp
@@ -38,7 +38,7 @@
 #include <inetchannel.h>
 #include <iclient.h>
 
-ConVar sm_show_activity("sm_show_activity", "13", FCVAR_SPONLY|FCVAR_PROTECTED, "Activity display setting (see sourcemod.cfg)");
+ConVar sm_show_activity("sm_show_activity", "13", FCVAR_SPONLY, "Activity display setting (see sourcemod.cfg)");
 
 static cell_t sm_GetClientCount(IPluginContext *pCtx, const cell_t *params)
 {
diff --git a/plugins/basecommands.sp b/plugins/basecommands.sp
index 3471bc5a..a33f2c68 100644
--- a/plugins/basecommands.sp
+++ b/plugins/basecommands.sp
@@ -49,6 +49,7 @@ public Plugin:myinfo =
 new Handle:hTopMenu = INVALID_HANDLE;
 
 new Handle:g_MapList;
+new Handle:g_ProtectedVars;
 
 #include "basecommands/kick.sp"
 #include "basecommands/reloadadmins.sp"
@@ -85,6 +86,11 @@ public OnPluginStart()
 	decl String:mapListPath[PLATFORM_MAX_PATH];
 	BuildPath(Path_SM, mapListPath, sizeof(mapListPath), "configs/adminmenu_maplist.ini");
 	SetMapListCompatBind("sm_map menu", mapListPath);
+	
+	g_ProtectedVars = CreateTrie();
+	ProtectVar("rcon_password");
+	ProtectVar("sm_show_activity");
+	ProtectVar("sm_immunity_mode");
 }
 
 public OnMapStart()
@@ -97,6 +103,17 @@ public OnConfigsExecuted()
 	LoadMapList(g_MapList);
 }
 
+ProtectVar(const String:cvar[])
+{
+	SetTrieValue(g_ProtectedVars, cvar, 1);
+}
+
+bool:IsVarProtected(const String:cvar[])
+{
+	decl dummy_value;
+	return GetTrieValue(g_ProtectedVars, cvar, dummy_value);
+}
+
 public OnAdminMenuReady(Handle:topmenu)
 {
 	/* Block us from being called twice */
@@ -244,12 +261,32 @@ public Action:Command_Cvar(client, args)
 {
 	if (args < 1)
 	{
-		ReplyToCommand(client, "[SM] Usage: sm_cvar <cvar> [value]");
+		if (client == 0)
+		{
+			ReplyToCommand(client, "[SM] Usage: sm_cvar <cvar|protect> [value]");
+		}
+		else
+		{
+			ReplyToCommand(client, "[SM] Usage: sm_cvar <cvar> [value]");
+		}
 		return Plugin_Handled;
 	}
 
 	decl String:cvarname[64];
 	GetCmdArg(1, cvarname, sizeof(cvarname));
+	
+	if (client == 0 && StrEqual(cvarname, "protect"))
+	{
+		if (args < 2)
+		{
+			ReplyToCommand(client, "[SM] Usage: sm_cvar <protect> <cvar>");
+			return Plugin_Handled;
+		}
+		GetCmdArg(2, cvarname, sizeof(cvarname));
+		ProtectVar(cvarname);
+		ReplyToCommand(client, "[SM] %t", "Cvar is now protected", cvarname);
+		return Plugin_Handled;
+	}
 
 	new Handle:hndl = FindConVar(cvarname);
 	if (hndl == INVALID_HANDLE)
@@ -257,36 +294,30 @@ public Action:Command_Cvar(client, args)
 		ReplyToCommand(client, "[SM] %t", "Unable to find cvar", cvarname);
 		return Plugin_Handled;
 	}
-
+	
 	new bool:allowed = false;
-	if (GetConVarFlags(hndl) & FCVAR_PROTECTED)
-	{
-		/* If they're root, allow anything */
-		if ((GetUserFlagBits(client) & ADMFLAG_ROOT) == ADMFLAG_ROOT)
-		{
-			allowed = true;
-		}
-		/* If they're not root, and getting sv_password, see if they have ADMFLAG_PASSWORD */
-		else if (StrEqual(cvarname, "sv_password") && (GetUserFlagBits(client) & ADMFLAG_PASSWORD))
-		{
-			allowed = true;
-		}
-	}
-	/* Do a check for the cheat cvar */
-	else if (StrEqual(cvarname, "sv_cheats"))
-	{
-		if (GetUserFlagBits(client) & ADMFLAG_CHEATS
-			|| GetUserFlagBits(client) & ADMFLAG_ROOT)
-		{
-			allowed = true;
-		}
-	}
-	/* If we drop down to here, it was a normal cvar. */
-	else
+	new client_flags = GetUserFlagBits(client);
+	
+	if (client_flags & ADMFLAG_ROOT)
 	{
 		allowed = true;
 	}
-
+	else
+	{
+		if (GetConVarFlags(hndl) & FCVAR_PROTECTED)
+		{
+			allowed = ((client_flags & ADMFLAG_PASSWORD) == ADMFLAG_PASSWORD);
+		}
+		else if (StrEqual(cvarname, "sv_cheats"))
+		{
+			allowed = ((client_flags & ADMFLAG_CHEATS) == ADMFLAG_CHEATS);
+		}
+		else if (!IsVarProtected(cvarname))
+		{
+			allowed = true;
+		}
+	}
+	
 	if (!allowed)
 	{
 		ReplyToCommand(client, "[SM] %t", "No access to cvar");
diff --git a/translations/plugin.basecommands.txt b/translations/plugin.basecommands.txt
index 7410b72a..48400328 100644
--- a/translations/plugin.basecommands.txt
+++ b/translations/plugin.basecommands.txt
@@ -129,4 +129,10 @@
 	{
 		"en"			"Admin access"
 	}
+	
+	"Cvar is now protected"
+	{
+		"#format"		"{1:s}"
+		"en"			"Cvar {1} is now protected."
+	}
 }

From 9756e7062fa24f67f1d55947105c2fbe7efbce13 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Thu, 10 Jan 2008 18:15:45 +0000
Subject: [PATCH 158/263] added extended error messaging to the loader

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401846
---
 loader/loader.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 54 insertions(+), 4 deletions(-)

diff --git a/loader/loader.cpp b/loader/loader.cpp
index 4ab3699a..d3fd5ea6 100644
--- a/loader/loader.cpp
+++ b/loader/loader.cpp
@@ -70,6 +70,29 @@
 HINSTANCE g_hCore = NULL;
 bool load_attempted = false;
 
+size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...);
+
+class FailPlugin : public SourceMM::ISmmFailPlugin
+{
+public:
+	int GetApiVersion()
+	{
+		return fail_version;
+	}
+
+	bool Load(SourceMM::PluginId id, SourceMM::ISmmAPI *ismm, char *error, size_t maxlength, bool late)
+	{
+		if (error != NULL && maxlength != 0)
+		{
+			UTIL_Format(error, maxlength, "%s", error_buffer);
+		}
+		return false;
+	}
+
+	int fail_version;
+	char error_buffer[512];
+} s_FailPlugin;
+
 size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...)
 {
 	va_list ap;
@@ -87,7 +110,7 @@ size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...)
 	return len;
 }
 
-METAMOD_PLUGIN *_GetPluginPtr(const char *path)
+METAMOD_PLUGIN *_GetPluginPtr(const char *path, int fail_api)
 {
 	METAMOD_FN_ORIG_LOAD fn;
 	METAMOD_PLUGIN *pl;
@@ -95,7 +118,34 @@ METAMOD_PLUGIN *_GetPluginPtr(const char *path)
 
 	if (!(g_hCore=openlib(path)))
 	{
-		return NULL;
+#if defined __linux__
+		UTIL_Format(s_FailPlugin.error_buffer, 
+			sizeof(s_FailPlugin.error_buffer),
+			"%s",
+			dlerror());
+#else
+		DWORD err = GetLastError();
+
+		if (FormatMessageA(
+				FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
+				NULL,
+				err,
+				MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+				s_FailPlugin.error_buffer,
+				sizeof(s_FailPlugin.error_buffer),
+				NULL)
+			== 0)
+		{
+			UTIL_Format(s_FailPlugin.error_buffer, 
+				sizeof(s_FailPlugin.error_buffer),
+				"unknown error %x",
+				err);
+		}
+#endif
+
+		s_FailPlugin.fail_version = fail_api;
+
+		return (METAMOD_PLUGIN *)&s_FailPlugin;
 	}
 
 	if (!(fn=(METAMOD_FN_ORIG_LOAD)findsym(g_hCore, "CreateInterface")))
@@ -171,7 +221,7 @@ DLL_EXPORT METAMOD_PLUGIN *CreateInterface_MMS(const MetamodVersionInfo *mvi, co
 	char abspath[256];
 	UTIL_Format(abspath, sizeof(abspath), "%s" PATH_SEP_CHAR "%s", mli->pl_path, filename);
 
-	return _GetPluginPtr(abspath);
+	return _GetPluginPtr(abspath, METAMOD_FAIL_API_V2);
 }
 
 DLL_EXPORT void UnloadInterface_MMS()
@@ -215,7 +265,7 @@ DLL_EXPORT void *CreateInterface(const char *iface, int *ret)
 
 		UTIL_Format(targetfile, sizeof(targetfile), "%s" PATH_SEP_CHAR FILENAME_1_4_EP1, thisfile);
 
-		return _GetPluginPtr(targetfile);
+		return _GetPluginPtr(targetfile, METAMOD_FAIL_API_V1);
 	}
 
 	return NULL;

From fd1f271e871c55374c0682e9ffe3bea05c031c5c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Thu, 10 Jan 2008 18:27:52 +0000
Subject: [PATCH 159/263] removed SSE requirement for JIT

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401847
---
 sourcepawn/jit/x86/msvc8/jit-x86.vcproj | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/sourcepawn/jit/x86/msvc8/jit-x86.vcproj b/sourcepawn/jit/x86/msvc8/jit-x86.vcproj
index 4a1136f8..3a51b8fc 100644
--- a/sourcepawn/jit/x86/msvc8/jit-x86.vcproj
+++ b/sourcepawn/jit/x86/msvc8/jit-x86.vcproj
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="Windows-1252"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
-	Version="8,00"
+	Version="8.00"
 	Name="jit-x86"
 	ProjectGUID="{6EF06E6E-0ED5-4E2D-A8F3-01DD1EC25BA7}"
 	RootNamespace="jitx86"
@@ -45,7 +45,7 @@
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
-				EnableEnhancedInstructionSet="1"
+				EnableEnhancedInstructionSet="0"
 				RuntimeTypeInfo="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
@@ -123,7 +123,7 @@
 				AdditionalIncludeDirectories="..\..\..\..\public\jit;..\..\..\..\public\jit\x86;..\..\..\..\public\sourcepawn"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;JITX86_EXPORTS"
 				RuntimeLibrary="0"
-				EnableEnhancedInstructionSet="1"
+				EnableEnhancedInstructionSet="0"
 				RuntimeTypeInfo="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"

From 1efb7cc4dff7ec16b8e003c0d32d231e02a2730f Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Thu, 10 Jan 2008 22:51:09 +0000
Subject: [PATCH 160/263] fixed build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401849
---
 loader/loader.cpp | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/loader/loader.cpp b/loader/loader.cpp
index d3fd5ea6..043e7d22 100644
--- a/loader/loader.cpp
+++ b/loader/loader.cpp
@@ -33,6 +33,7 @@
 #include <stdarg.h>
 #include <string.h>
 #include <stdio.h>
+#include <malloc.h>
 
 #if defined _MSC_VER
 	#define DLL_EXPORT				extern "C" __declspec(dllexport)
@@ -286,3 +287,32 @@ __attribute__((destructor)) static void gcc_fini()
 	UnloadInterface_MMS();
 }
 #endif
+
+/* Overload a few things to prevent libstdc++ linking */
+#if defined __linux__
+extern "C" void __cxa_pure_virtual(void)
+{
+}
+
+void *operator new(size_t size)
+{
+	return malloc(size);
+}
+
+void *operator new[](size_t size)
+{
+	return malloc(size);
+}
+
+void operator delete(void *ptr)
+{
+	free(ptr);
+}
+
+void operator delete[](void * ptr)
+{
+	free(ptr);
+}
+#endif
+
+

From a2a8634bb215cee51e06bd02c255572fbf001bf4 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Thu, 10 Jan 2008 23:03:29 +0000
Subject: [PATCH 161/263] fixed amb1382 - sm_cvar from console rte'd

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401850
---
 plugins/basecommands.sp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/basecommands.sp b/plugins/basecommands.sp
index a33f2c68..f3222982 100644
--- a/plugins/basecommands.sp
+++ b/plugins/basecommands.sp
@@ -296,7 +296,7 @@ public Action:Command_Cvar(client, args)
 	}
 	
 	new bool:allowed = false;
-	new client_flags = GetUserFlagBits(client);
+	new client_flags = client == 0 ? ADMFLAG_ROOT : GetUserFlagBits(client);
 	
 	if (client_flags & ADMFLAG_ROOT)
 	{

From a446121d6e8ab84ecd6a5671ffd6378f2aa6114f Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Sat, 12 Jan 2008 19:45:36 +0000
Subject: [PATCH 162/263] New stock to get m_fFlags, and #defines for its bits.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401851
---
 plugins/include/entity_prop_stocks.inc | 57 ++++++++++++++++++++++++--
 1 file changed, 54 insertions(+), 3 deletions(-)

diff --git a/plugins/include/entity_prop_stocks.inc b/plugins/include/entity_prop_stocks.inc
index ab492494..4d4fbfbc 100644
--- a/plugins/include/entity_prop_stocks.inc
+++ b/plugins/include/entity_prop_stocks.inc
@@ -96,6 +96,7 @@ enum RenderFx
 	RENDERFX_MAX
 };
 
+// These defines are for client button presses.
 #define IN_ATTACK		(1 << 0)
 #define IN_JUMP			(1 << 1)
 #define IN_DUCK			(1 << 2)
@@ -106,13 +107,13 @@ enum RenderFx
 #define IN_LEFT			(1 << 7)
 #define IN_RIGHT		(1 << 8)
 #define IN_MOVELEFT		(1 << 9)
-#define IN_MOVERIGHT	(1 << 10)
+#define IN_MOVERIGHT		(1 << 10)
 #define IN_ATTACK2		(1 << 11)
 #define IN_RUN			(1 << 12)
 #define IN_RELOAD		(1 << 13)
 #define IN_ALT1			(1 << 14)
 #define IN_ALT2			(1 << 15)
-#define IN_SCORE		(1 << 16)   // Used by client.dll for when scoreboard is held down
+#define IN_SCORE		(1 << 16)   	// Used by client.dll for when scoreboard is held down
 #define IN_SPEED		(1 << 17)	// Player is holding the speed key
 #define IN_WALK			(1 << 18)	// Player holding walk key
 #define IN_ZOOM			(1 << 19)	// Zoom key for HUD zoom
@@ -122,6 +123,56 @@ enum RenderFx
 #define IN_GRENADE1		(1 << 23)	// grenade 1
 #define IN_GRENADE2		(1 << 24)	// grenade 2
 
+// CBaseEntity::m_fFlags
+// PLAYER SPECIFIC FLAGS FIRST BECAUSE WE USE ONLY A FEW BITS OF NETWORK PRECISION
+#define	FL_ONGROUND			(1 << 0)	// At rest / on the ground
+#define FL_DUCKING			(1 << 1)	// Player flag -- Player is fully crouched
+#define	FL_WATERJUMP			(1 << 2)	// player jumping out of water
+#define FL_ONTRAIN			(1 << 3)	// Player is _controlling_ a train, so movement commands should be ignored on client during prediction.
+#define FL_INRAIN			(1 << 4)	// Indicates the entity is standing in rain
+#define FL_FROZEN			(1 << 5)	// Player is frozen for 3rd person camera
+#define FL_ATCONTROLS			(1 << 6)	// Player can't move, but keeps key inputs for controlling another entity
+#define	FL_CLIENT			(1 << 7)	// Is a player
+#define FL_FAKECLIENT			(1 << 8)	// Fake client, simulated server side; don't send network messages to them
+// NOTE if you move things up, make sure to change this value
+#define PLAYER_FLAG_BITS		9
+// NON-PLAYER SPECIFIC (i.e., not used by GameMovement or the client .dll ) -- Can still be applied to players, though
+#define	FL_INWATER			(1 << 9)	// In water
+#define	FL_FLY				(1 << 10)	// Changes the SV_Movestep() behavior to not need to be on ground
+#define	FL_SWIM				(1 << 11)	// Changes the SV_Movestep() behavior to not need to be on ground (but stay in water)
+#define	FL_CONVEYOR			(1 << 12)
+#define	FL_NPC				(1 << 13)
+#define	FL_GODMODE			(1 << 14)
+#define	FL_NOTARGET			(1 << 15)
+#define	FL_AIMTARGET			(1 << 16)	// set if the crosshair needs to aim onto the entity
+#define	FL_PARTIALGROUND		(1 << 17)	// not all corners are valid
+#define FL_STATICPROP			(1 << 18)	// Eetsa static prop!		
+#define FL_GRAPHED			(1 << 19)	// worldgraph has this ent listed as something that blocks a connection
+#define FL_GRENADE			(1 << 20)
+#define FL_STEPMOVEMENT			(1 << 21)	// Changes the SV_Movestep() behavior to not do any processing
+#define FL_DONTTOUCH			(1 << 22)	// Doesn't generate touch functions, generates Untouch() for anything it was touching when this flag was set
+#define FL_BASEVELOCITY			(1 << 23)	// Base velocity has been applied this frame (used to convert base velocity into momentum)
+#define FL_WORLDBRUSH			(1 << 24)	// Not moveable/removeable brush entity (really part of the world, but represented as an entity for transparency or something)
+#define FL_OBJECT			(1 << 25)	// Terrible name. This is an object that NPCs should see. Missiles, for example.
+#define FL_KILLME			(1 << 26)	// This entity is marked for death -- will be freed by game DLL
+#define FL_ONFIRE			(1 << 27)	// You know...
+#define FL_DISSOLVING			(1 << 28)	// We're dissolving!
+#define FL_TRANSRAGDOLL			(1 << 29)	// In the process of turning into a client side ragdoll.
+#define FL_UNBLOCKABLE_BY_PLAYER	(1 << 30)	// pusher that can't be blocked by the player
+// END m_fFlags #defines
+
+/**
+ * Get an entity's flags.
+ *
+ * @param entity	Entity index.
+ * @return			Entity's flags, see m_fFlag defines above
+ * @error			Invalid entity index, or lack of mod compliance.
+ */
+stock GetEntityFlags(entity)
+{
+	return GetEntProp(entity, Prop_Data, "m_fFlags");
+}
+
 /**
  * Gets an entity's movetype.
  *
@@ -237,7 +288,7 @@ stock Float:GetEntityGravity(entity)
  * Sets an entity's gravity.
  *
  * @param entity	Entity index.
- * @param amount	Gravity to set (default = 800).
+ * @param amount	Gravity to set (default = 1.0, half = 0.5, double = 2.0).
  * @noreturn
  * @error			Invalid entity index, or lack of mod compliance.
  */

From a9017a829100517e648aea47d1f979199c9acb95 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 13 Jan 2008 02:08:40 +0000
Subject: [PATCH 163/263] AutoExecConfig() protects against double-call bugs
 now (amb 1356)

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401852
---
 core/systems/PluginSys.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/core/systems/PluginSys.cpp b/core/systems/PluginSys.cpp
index 8a64c450..4e022cca 100644
--- a/core/systems/PluginSys.cpp
+++ b/core/systems/PluginSys.cpp
@@ -799,6 +799,17 @@ AutoConfig *CPlugin::GetConfig(unsigned int i)
 
 void CPlugin::AddConfig(bool autoCreate, const char *cfg, const char *folder)
 {
+	/* Do a check for duplicates to prevent double-execution */
+	for (size_t i = 0; i < m_configs.size(); i++)
+	{
+		if (m_configs[i]->autocfg.compare(cfg) == 0
+			&& m_configs[i]->folder.compare(folder) == 0
+			&& m_configs[i]->create == autoCreate)
+		{
+			return;
+		}
+	}
+
 	AutoConfig *c = new AutoConfig;
 
 	c->autocfg = cfg;

From 5f61876ab62e61835cc721b681b2b7724396e180 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 13 Jan 2008 08:10:25 +0000
Subject: [PATCH 164/263] fixed amb1379 with sweeping changes to the entity
 stuff.  all prop stocks are now natives so they can properly compute
 everything quickly, as well as do type checks.  Get/SetEntDataEnt are
 deprecated for being sucky, the new 2 versions do more checking and uses
 better values.  lastly, there are functions/parameters for finding types and
 sizes of property.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401853
---
 core/HalfLife2.cpp             |   71 ++-
 core/HalfLife2.h               |    4 +-
 core/msvc8/sourcemod_mm.vcproj |   12 +-
 core/smn_entities.cpp          | 1032 ++++++++++++++++++++++++++++++--
 plugins/include/entity.inc     |  447 ++++++--------
 public/IGameHelpers.h          |   32 +-
 6 files changed, 1267 insertions(+), 331 deletions(-)

diff --git a/core/HalfLife2.cpp b/core/HalfLife2.cpp
index 6aec953e..2ea8faf2 100644
--- a/core/HalfLife2.cpp
+++ b/core/HalfLife2.cpp
@@ -70,7 +70,6 @@ CHalfLife2::~CHalfLife2()
 	for (iter=m_Tables.begin(); iter!=m_Tables.end(); iter++)
 	{
 		pInfo = (*iter);
-		sm_trie_destroy(pInfo->lookup);
 		delete pInfo;
 	}
 
@@ -115,6 +114,8 @@ void CHalfLife2::OnSourceModAllInitialized()
 	m_HinTextMsg = g_UserMsgs.GetMessageIndex("HintText");
 	m_VGUIMenu = g_UserMsgs.GetMessageIndex("VGUIMenu");
 	g_ShareSys.AddInterface(NULL, this);
+
+	FindInSendTable("CTFPlayer", "m_nDisguiseClass");
 }
 
 #if !defined METAMOD_PLAPI_VERSION
@@ -129,7 +130,10 @@ IChangeInfoAccessor *CBaseEdict::GetChangeAccessor()
 	return engine->GetChangeAccessor( (const edict_t *)this );
 }
 
-SendProp *UTIL_FindInSendTable(SendTable *pTable, const char *name)
+bool UTIL_FindInSendTable(SendTable *pTable, 
+						  const char *name,
+						  sm_sendprop_info_t *info,
+						  unsigned int offset)
 {
 	const char *pname;
 	int props = pTable->GetNumProps();
@@ -141,13 +145,19 @@ SendProp *UTIL_FindInSendTable(SendTable *pTable, const char *name)
 		pname = prop->GetName();
 		if (pname && strcmp(name, pname) == 0)
 		{
-			return prop;
+			info->prop = prop;
+			info->actual_offset = offset + info->prop->GetOffset();
+			return true;
 		}
 		if (prop->GetDataTable())
 		{
-			if ((prop=UTIL_FindInSendTable(prop->GetDataTable(), name)) != NULL)
+			if (UTIL_FindInSendTable(prop->GetDataTable(), 
+				name,
+				info,
+				offset + prop->GetOffset())
+				)
 			{
-				return prop;
+				return true;
 			}
 		}
 	}
@@ -187,6 +197,7 @@ typedescription_t *UTIL_FindInDataMap(datamap_t *pMap, const char *name)
 ServerClass *CHalfLife2::FindServerClass(const char *classname)
 {
 	DataTableInfo *pInfo = _FindServerClass(classname);
+
 	if (!pInfo)
 	{
 		return NULL;
@@ -207,7 +218,6 @@ DataTableInfo *CHalfLife2::_FindServerClass(const char *classname)
 			if (strcmp(classname, sc->GetName()) == 0)
 			{
 				pInfo = new DataTableInfo;
-				pInfo->lookup = sm_trie_create();
 				pInfo->sc = sc;
 				sm_trie_insert(m_pClasses, classname, pInfo);
 				m_Tables.push_back(pInfo);
@@ -224,25 +234,46 @@ DataTableInfo *CHalfLife2::_FindServerClass(const char *classname)
 	return pInfo;
 }
 
+bool CHalfLife2::FindSendPropInfo(const char *classname, const char *offset, sm_sendprop_info_t *info)
+{
+	DataTableInfo *pInfo;
+	sm_sendprop_info_t *prop;
+
+	if ((pInfo = _FindServerClass(classname)) == NULL)
+	{
+		return false;
+	}
+
+	if ((prop = pInfo->lookup.retrieve(offset)) == NULL)
+	{
+		sm_sendprop_info_t temp_info;
+
+		if (!UTIL_FindInSendTable(pInfo->sc->m_pTable, offset, &temp_info, 0))
+		{
+			return false;
+		}
+
+		pInfo->lookup.insert(offset, temp_info);
+		*info = temp_info;
+	}
+	else
+	{
+		*info = *prop;
+	}
+	
+	return true;
+}
+
 SendProp *CHalfLife2::FindInSendTable(const char *classname, const char *offset)
 {
-	DataTableInfo *pInfo = _FindServerClass(classname);
+	sm_sendprop_info_t info;
 
-	if (!pInfo)
+	if (!FindSendPropInfo(classname, offset, &info))
 	{
 		return NULL;
 	}
 
-	SendProp *pProp = NULL;
-	if (!sm_trie_retrieve(pInfo->lookup, offset, (void **)&pProp))
-	{
-		if ((pProp = UTIL_FindInSendTable(pInfo->sc->m_pTable, offset)) != NULL)
-		{
-			sm_trie_insert(pInfo->lookup, offset, pProp);
-		}
-	}
-
-	return pProp;
+	return info.prop;
 }
 
 typedescription_t *CHalfLife2::FindInDataMap(datamap_t *pMap, const char *offset)
@@ -272,7 +303,9 @@ void CHalfLife2::SetEdictStateChanged(edict_t *pEdict, unsigned short offset)
 		if (offset)
 		{
 			pEdict->StateChanged(offset);
-		} else {
+		}
+		else
+		{
 			pEdict->StateChanged();
 		}
 	}
diff --git a/core/HalfLife2.h b/core/HalfLife2.h
index ca5fb754..e6bcf05a 100644
--- a/core/HalfLife2.h
+++ b/core/HalfLife2.h
@@ -35,6 +35,7 @@
 #include <sh_list.h>
 #include <sh_string.h>
 #include <sh_tinyhash.h>
+#include <sm_trie_tpl.h>
 #include "sm_trie.h"
 #include "sm_globals.h"
 #include "sm_queue.h"
@@ -52,7 +53,7 @@ using namespace SourceMod;
 struct DataTableInfo
 {
 	ServerClass *sc;
-	Trie *lookup;
+	KTrie<sm_sendprop_info_t> lookup;
 };
 
 struct DataMapTrie
@@ -89,6 +90,7 @@ public:
 	/*void OnSourceModAllShutdown();*/
 public: //IGameHelpers
 	SendProp *FindInSendTable(const char *classname, const char *offset);
+	bool FindSendPropInfo(const char *classname, const char *offset, sm_sendprop_info_t *info);
 	datamap_t *GetDataMap(CBaseEntity *pEntity);
 	ServerClass *FindServerClass(const char *classname);
 	typedescription_t *FindInDataMap(datamap_t *pMap, const char *offset);
diff --git a/core/msvc8/sourcemod_mm.vcproj b/core/msvc8/sourcemod_mm.vcproj
index 6007b001..049ee1d2 100644
--- a/core/msvc8/sourcemod_mm.vcproj
+++ b/core/msvc8/sourcemod_mm.vcproj
@@ -45,7 +45,7 @@
 				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER"
 				RuntimeLibrary="0"
-				EnableEnhancedInstructionSet="1"
+				EnableEnhancedInstructionSet="0"
 				RuntimeTypeInfo="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
@@ -128,7 +128,7 @@
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
-				EnableEnhancedInstructionSet="1"
+				EnableEnhancedInstructionSet="0"
 				RuntimeTypeInfo="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
@@ -288,7 +288,7 @@
 				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER;ORANGEBOX_BUILD"
 				RuntimeLibrary="0"
-				EnableEnhancedInstructionSet="1"
+				EnableEnhancedInstructionSet="0"
 				RuntimeTypeInfo="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
@@ -371,7 +371,7 @@
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
-				EnableEnhancedInstructionSet="1"
+				EnableEnhancedInstructionSet="0"
 				RuntimeTypeInfo="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
@@ -453,7 +453,7 @@
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
-				EnableEnhancedInstructionSet="1"
+				EnableEnhancedInstructionSet="0"
 				RuntimeTypeInfo="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
@@ -534,7 +534,7 @@
 				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER"
 				RuntimeLibrary="0"
-				EnableEnhancedInstructionSet="1"
+				EnableEnhancedInstructionSet="0"
 				RuntimeTypeInfo="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
diff --git a/core/smn_entities.cpp b/core/smn_entities.cpp
index dd69c267..f8fe5ecf 100644
--- a/core/smn_entities.cpp
+++ b/core/smn_entities.cpp
@@ -44,6 +44,16 @@ enum PropType
 	Prop_Data
 };
 
+enum PropFieldType
+{
+	PropField_Unsupported,		/**< The type is unsupported. */
+	PropField_Integer,			/**< Valid for SendProp and Data fields */
+	PropField_Float,			/**< Valid for SendProp and Data fields */
+	PropField_Entity,			/**< Valid for Data fields only (SendProp shows as int) */
+	PropField_Vector,			/**< Valid for SendProp and Data fields */
+	PropField_String,			/**< Valid for SendProp and Data fields */
+};
+
 inline edict_t *GetEdict(cell_t num)
 {
 	edict_t *pEdict = engine->PEntityOfEntIndex(num);
@@ -292,7 +302,7 @@ static cell_t GetEntData(IPluginContext *pContext, const cell_t *params)
 	}
 
 	int offset = params[2];
-	if (offset < 0 || offset > 32768)
+	if (offset <= 0 || offset > 32768)
 	{
 		return pContext->ThrowNativeError("Offset %d is invalid", offset);
 	}
@@ -321,7 +331,7 @@ static cell_t SetEntData(IPluginContext *pContext, const cell_t *params)
 	}
 
 	int offset = params[2];
-	if (offset < 0 || offset > 32768)
+	if (offset <= 0 || offset > 32768)
 	{
 		return pContext->ThrowNativeError("Offset %d is invalid", offset);
 	}
@@ -366,7 +376,7 @@ static cell_t GetEntDataFloat(IPluginContext *pContext, const cell_t *params)
 	}
 
 	int offset = params[2];
-	if (offset < 0 || offset > 32768)
+	if (offset <= 0 || offset > 32768)
 	{
 		return pContext->ThrowNativeError("Offset %d is invalid", offset);
 	}
@@ -387,7 +397,7 @@ static cell_t SetEntDataFloat(IPluginContext *pContext, const cell_t *params)
 	}
 
 	int offset = params[2];
-	if (offset < 0 || offset > 32768)
+	if (offset <= 0 || offset > 32768)
 	{
 		return pContext->ThrowNativeError("Offset %d is invalid", offset);
 	}
@@ -413,7 +423,7 @@ static cell_t GetEntDataVector(IPluginContext *pContext, const cell_t *params)
 	}
 
 	int offset = params[2];
-	if (offset < 0 || offset > 32768)
+	if (offset <= 0 || offset > 32768)
 	{
 		return pContext->ThrowNativeError("Offset %d is invalid", offset);
 	}
@@ -441,7 +451,7 @@ static cell_t SetEntDataVector(IPluginContext *pContext, const cell_t *params)
 	}
 
 	int offset = params[2];
-	if (offset < 0 || offset > 32768)
+	if (offset <= 0 || offset > 32768)
 	{
 		return pContext->ThrowNativeError("Offset %d is invalid", offset);
 	}
@@ -463,6 +473,7 @@ static cell_t SetEntDataVector(IPluginContext *pContext, const cell_t *params)
 	return 1;
 }
 
+/* THIS GUY IS DEPRECATED. */
 static cell_t GetEntDataEnt(IPluginContext *pContext, const cell_t *params)
 {
 	CBaseEntity *pEntity;
@@ -474,7 +485,7 @@ static cell_t GetEntDataEnt(IPluginContext *pContext, const cell_t *params)
 	}
 
 	int offset = params[2];
-	if (offset < 0 || offset > 32768)
+	if (offset <= 0 || offset > 32768)
 	{
 		return pContext->ThrowNativeError("Offset %d is invalid", offset);
 	}
@@ -486,11 +497,65 @@ static cell_t GetEntDataEnt(IPluginContext *pContext, const cell_t *params)
 		return 0;
 	}
 
-	/* :TODO: check serial no.? */
-
 	return hndl.GetEntryIndex();
 }
 
+int CheckBaseHandle(CBaseHandle &hndl)
+{
+	if (!hndl.IsValid())
+	{
+		return -1;
+	}
+
+	int index = hndl.GetEntryIndex();
+
+	edict_t *pStoredEdict;
+	CBaseEntity *pStoredEntity;
+
+	pStoredEdict = GetEntity(index, &pStoredEntity);
+
+	if (pStoredEdict == NULL || pStoredEntity == NULL)
+	{
+		return -1;
+	}
+
+	IServerEntity *pSE = pStoredEdict->GetIServerEntity();
+
+	if (pSE == NULL)
+	{
+		return -1;
+	}
+
+	if (pSE->GetRefEHandle() != hndl)
+	{
+		return -1;
+	}
+
+	return index;
+}
+
+static cell_t GetEntDataEnt2(IPluginContext *pContext, const cell_t *params)
+{
+	CBaseEntity *pEntity;
+	edict_t *pEdict = GetEntity(params[1], &pEntity);
+
+	if (pEdict == NULL || pEntity == NULL)
+	{
+		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
+	}
+
+	int offset = params[2];
+	if (offset <= 0 || offset > 32768)
+	{
+		return pContext->ThrowNativeError("Offset %d is invalid", offset);
+	}
+
+	CBaseHandle &hndl = *(CBaseHandle *)((uint8_t *)pEntity + offset);
+
+	return CheckBaseHandle(hndl);
+}
+
+/* THIS GUY IS DEPRECATED. */
 static cell_t SetEntDataEnt(IPluginContext *pContext, const cell_t *params)
 {
 	CBaseEntity *pEntity;
@@ -502,7 +567,7 @@ static cell_t SetEntDataEnt(IPluginContext *pContext, const cell_t *params)
 	}
 
 	int offset = params[2];
-	if (offset < 0 || offset > 32768)
+	if (offset <= 0 || offset > 32768)
 	{
 		return pContext->ThrowNativeError("Offset %d is invalid", offset);
 	}
@@ -530,6 +595,47 @@ static cell_t SetEntDataEnt(IPluginContext *pContext, const cell_t *params)
 	return 1;
 }
 
+static cell_t SetEntDataEnt2(IPluginContext *pContext, const cell_t *params)
+{
+	CBaseEntity *pEntity;
+	edict_t *pEdict = GetEntity(params[1], &pEntity);
+
+	if (!pEdict || !pEntity)
+	{
+		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
+	}
+
+	int offset = params[2];
+	if (offset <= 0 || offset > 32768)
+	{
+		return pContext->ThrowNativeError("Offset %d is invalid", offset);
+	}
+
+	CBaseHandle &hndl = *(CBaseHandle *)((uint8_t *)pEntity + offset);
+
+	if (params[3] == -1)
+	{
+		hndl.Set(NULL);
+	}
+	else
+	{
+		edict_t *pEdict = GetEdict(params[3]);
+		if (!pEdict)
+		{
+			return pContext->ThrowNativeError("Entity %d is invalid", params[3]);
+		}
+		IServerEntity *pEntOther = pEdict->GetIServerEntity();
+		hndl.Set(pEntOther);
+	}
+
+	if (params[4])
+	{
+		g_HL2.SetEdictStateChanged(pEdict, offset);
+	}
+
+	return 1;
+}
+
 static cell_t ChangeEdictState(IPluginContext *pContext, const cell_t *params)
 {
 	edict_t *pEdict = GetEdict(params[1]);
@@ -560,6 +666,59 @@ static cell_t FindSendPropOffs(IPluginContext *pContext, const cell_t *params)
 	return pSend->GetOffset();
 }
 
+static cell_t FindSendPropInfo(IPluginContext *pContext, const cell_t *params)
+{
+	char *cls, *prop;
+	sm_sendprop_info_t info;
+	cell_t *pType, *pBits, *pLocal;
+
+	pContext->LocalToString(params[1], &cls);
+	pContext->LocalToString(params[2], &prop);
+
+	if (!g_HL2.FindSendPropInfo(cls, prop, &info))
+	{
+		return -1;
+	}
+
+	pContext->LocalToPhysAddr(params[3], &pType);
+	pContext->LocalToPhysAddr(params[4], &pBits);
+	pContext->LocalToPhysAddr(params[5], &pLocal);
+
+	switch (info.prop->GetType())
+	{
+	case DPT_Int:
+		{
+			*pType = PropField_Integer;
+			break;
+		}
+	case DPT_Float:
+		{
+			*pType = PropField_Float;
+			break;
+		}
+	case DPT_String:
+		{
+			*pType = PropField_String;
+			break;
+		}
+	case DPT_Vector:
+		{
+			*pType = PropField_Vector;
+			break;
+		}
+	default:
+		{
+			*pType = PropField_Unsupported;
+			break;
+		}
+	}
+
+	*pBits = info.prop->m_nBits;
+	*pLocal = info.prop->GetOffset();
+
+	return info.actual_offset;
+}
+
 static cell_t FindDataMapOffs(IPluginContext *pContext, const cell_t *params)
 {
 	CBaseEntity *pEntity;
@@ -584,6 +743,79 @@ static cell_t FindDataMapOffs(IPluginContext *pContext, const cell_t *params)
 		return -1;
 	}
 
+	if (params[0] == 4)
+	{
+		cell_t *pType, *pSize;
+
+		pContext->LocalToPhysAddr(params[3], &pType);
+		pContext->LocalToPhysAddr(params[4], &pSize);
+
+		switch (td->fieldType)
+		{
+		case FIELD_TICK:
+		case FIELD_MODELINDEX:
+		case FIELD_MATERIALINDEX:
+		case FIELD_INTEGER:
+		case FIELD_COLOR32:
+			{
+				*pType = PropField_Integer;
+				*pSize = 32;
+				break;
+			}
+		case FIELD_VECTOR:
+		case FIELD_POSITION_VECTOR:
+			{
+				*pType = PropField_Vector;
+				*pSize = 12;
+				break;
+			}
+		case FIELD_SHORT:
+			{
+				*pType = PropField_Integer;
+				*pSize = 16;
+				break;
+			}
+		case FIELD_BOOLEAN:
+			{
+				*pType = PropField_Integer;
+				*pSize = 1;
+				break;
+			}
+		case FIELD_CHARACTER:
+			{
+				if (td->fieldSize == 1)
+				{
+					*pType = PropField_Integer;
+					*pSize = 8;
+				}
+				else
+				{
+					*pType = PropField_String;
+					*pSize = 8 * td->fieldSize;
+				}
+				break;
+			}
+		case FIELD_FLOAT:
+		case FIELD_TIME:
+			{
+				*pType = PropField_Float;
+				*pSize = 32;
+				break;
+			}
+		case FIELD_EHANDLE:
+			{
+				*pType = PropField_Entity;
+				*pSize = 32;
+				break;
+			}
+		default:
+			{
+				*pType = PropField_Unsupported;
+				*pSize = 0;
+			}
+		}
+	}
+
 	return td->fieldOffset[TD_OFFSET_NORMAL];
 }
 
@@ -640,59 +872,764 @@ static cell_t SetEntDataString(IPluginContext *pContext, const cell_t *params)
 	return len;
 }
 
-static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
+#define FIND_PROP_DATA(td) \
+	datamap_t *pMap; \
+	if ((pMap = CBaseEntity_GetDataDescMap(pEntity)) == NULL) \
+	{ \
+		return pContext->ThrowNativeError("Could not retrieve datamap"); \
+	} \
+	if ((td = g_HL2.FindInDataMap(pMap, prop)) == NULL) \
+	{ \
+		return pContext->ThrowNativeError("Property \"%s\" not found (entity %d/%s)", \
+			prop, \
+			params[1], \
+			class_name); \
+	}
+
+#define FIND_PROP_SEND(pProp) \
+	IServerNetworkable *pNet = pEdict->GetNetworkable(); \
+	if (!pNet) \
+	{ \
+		return pContext->ThrowNativeError("Edict %d is not networkable", params[1]); \
+	} \
+	if (!g_HL2.FindSendPropInfo(pNet->GetServerClass()->GetName(), prop, pProp)) \
+	{ \
+		return pContext->ThrowNativeError("Property \"%s\" not found (entity %d/%s)", \
+			prop, \
+			params[1], \
+			class_name); \
+	}
+
+inline int MatchFieldAsInteger(int field_type)
+{
+	switch (field_type)
+	{
+	case FIELD_TICK:
+	case FIELD_MODELINDEX:
+	case FIELD_MATERIALINDEX:
+	case FIELD_INTEGER:
+	case FIELD_COLOR32:
+		return 32;
+	case FIELD_SHORT:
+		return 16;
+	case FIELD_CHARACTER:
+		return 8;
+	case FIELD_BOOLEAN:
+		return 1;
+	default:
+		return 0;
+	}
+
+	return 0;
+}
+
+static cell_t GetEntProp(IPluginContext *pContext, const cell_t *params)
 {
 	CBaseEntity *pEntity;
 	char *prop;
 	int offset;
-	edict_t *pEdict = GetEntity(params[1], &pEntity);
+	const char *class_name;
+	edict_t *pEdict;
+	int bit_count;
+
+	pEdict = GetEntity(params[1], &pEntity);
 
 	if (!pEdict || !pEntity)
 	{
 		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
 	}
 
+	if ((class_name = pEdict->GetClassName()) == NULL)
+	{
+		class_name = "";
+	}
+
+	pContext->LocalToString(params[3], &prop);
+
 	switch (params[2])
 	{
 	case Prop_Data:
 		{
-			datamap_t *pMap;
 			typedescription_t *td;
-			if ((pMap=CBaseEntity_GetDataDescMap(pEntity)) == NULL)
+
+			FIND_PROP_DATA(td);
+
+			if ((bit_count = MatchFieldAsInteger(td->fieldType)) == 0)
 			{
-				return pContext->ThrowNativeError("Unable to retrieve GetDataDescMap offset");
-			}
-			pContext->LocalToString(params[3], &prop);
-			if ((td=g_HL2.FindInDataMap(pMap, prop)) == NULL)
-			{
-				return pContext->ThrowNativeError("Property \"%s\" not found for entity %d", prop, params[1]);
-			}
-			if (td->fieldType != FIELD_CHARACTER)
-			{
-				return pContext->ThrowNativeError("Property \"%s\" is not a valid string", prop);
+				return pContext->ThrowNativeError("Data field %s is not an integer (%d)", 
+					prop,
+					td->fieldType);
 			}
+
 			offset = td->fieldOffset[TD_OFFSET_NORMAL];
 			break;
 		}
 	case Prop_Send:
 		{
-			char *prop;
-			IServerNetworkable *pNet = pEdict->GetNetworkable();
-			if (!pNet)
+			sm_sendprop_info_t info;
+
+			FIND_PROP_SEND(&info);
+
+			if (info.prop->GetType() != DPT_Int)
 			{
-				return pContext->ThrowNativeError("The edict is not networkable");
+				return pContext->ThrowNativeError("SendProp %s is not an integer ([%d,%d] != %d)",
+					prop,
+					info.prop->GetType(),
+					info.prop->m_nBits,
+					DPT_Int);
 			}
-			pContext->LocalToString(params[3], &prop);
-			SendProp *pSend = g_HL2.FindInSendTable(pNet->GetServerClass()->GetName(), prop);
-			if (!pSend)
+
+			bit_count = info.prop->m_nBits;
+			offset = info.actual_offset;
+			break;
+		}
+	default:
+		{
+			return pContext->ThrowNativeError("Invalid Property type %d", params[2]);
+		}
+	}
+
+	if (bit_count < 1)
+	{
+		bit_count = params[4] * 8;
+	}
+
+	if (bit_count >= 17)
+	{
+		return *(int32_t *)((uint8_t *)pEntity + offset);
+	}
+	else if (bit_count >= 9)
+	{
+		return *(int16_t *)((uint8_t *)pEntity + offset);
+	}
+	else if (bit_count >= 2)
+	{
+		return *(int8_t *)((uint8_t *)pEntity + offset);
+	}
+	else
+	{
+		return *(bool *)((uint8_t *)pEntity + offset) ? 1 : 0;
+	}
+
+	return 0;
+}
+
+static cell_t SetEntProp(IPluginContext *pContext, const cell_t *params)
+{
+	CBaseEntity *pEntity;
+	char *prop;
+	int offset;
+	const char *class_name;
+	edict_t *pEdict;
+	int bit_count;
+
+	pEdict = GetEntity(params[1], &pEntity);
+
+	if (!pEdict || !pEntity)
+	{
+		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
+	}
+
+	if ((class_name = pEdict->GetClassName()) == NULL)
+	{
+		class_name = "";
+	}
+
+	pContext->LocalToString(params[3], &prop);
+
+	switch (params[2])
+	{
+	case Prop_Data:
+		{
+			typedescription_t *td;
+
+			FIND_PROP_DATA(td);
+
+			if ((bit_count = MatchFieldAsInteger(td->fieldType)) == 0)
 			{
-				return pContext->ThrowNativeError("Property \"%s\" not found for entity %d", prop, params[1]);
+				return pContext->ThrowNativeError("Data field %s is not an integer (%d)", 
+					prop,
+					td->fieldType);
 			}
-			if (pSend->GetType() != DPT_String)
+
+			offset = td->fieldOffset[TD_OFFSET_NORMAL];
+			break;
+		}
+	case Prop_Send:
+		{
+			sm_sendprop_info_t info;
+
+			FIND_PROP_SEND(&info);
+
+			if (info.prop->GetType() != DPT_Int)
 			{
-				return pContext->ThrowNativeError("Property \"%s\" is not a valid string", prop);
+				return pContext->ThrowNativeError("SendProp %s is not an integer ([%d,%d] != %d)",
+					prop,
+					info.prop->GetType(),
+					info.prop->m_nBits,
+					DPT_Int);
 			}
-			offset = pSend->GetOffset();
+
+			bit_count = info.prop->m_nBits;
+			offset = info.actual_offset;
+			break;
+		}
+	default:
+		{
+			return pContext->ThrowNativeError("Invalid Property type %d", params[2]);
+		}
+	}
+
+	if (bit_count < 1)
+	{
+		bit_count = params[5] * 8;
+	}
+
+	if (bit_count >= 17)
+	{
+		*(int32_t *)((uint8_t *)pEntity + offset) = params[4];
+	}
+	else if (bit_count >= 9)
+	{
+		*(int16_t *)((uint8_t *)pEntity + offset) = (int16_t)params[4];
+	}
+	else if (bit_count >= 2)
+	{
+		*(int8_t *)((uint8_t *)pEntity + offset) = (int8_t)params[4];
+	}
+	else
+	{
+		*(bool *)((uint8_t *)pEntity + offset) = params[4] ? true : false;
+	}
+
+	return 0;
+}
+
+static cell_t GetEntPropFloat(IPluginContext *pContext, const cell_t *params)
+{
+	CBaseEntity *pEntity;
+	char *prop;
+	int offset;
+	const char *class_name;
+	edict_t *pEdict;
+
+	pEdict = GetEntity(params[1], &pEntity);
+
+	if (!pEdict || !pEntity)
+	{
+		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
+	}
+
+	if ((class_name = pEdict->GetClassName()) == NULL)
+	{
+		class_name = "";
+	}
+
+	pContext->LocalToString(params[3], &prop);
+
+	switch (params[2])
+	{
+	case Prop_Data:
+		{
+			typedescription_t *td;
+
+			FIND_PROP_DATA(td);
+
+			if (td->fieldType != FIELD_FLOAT
+				&& td->fieldType != FIELD_TIME)
+			{
+				return pContext->ThrowNativeError("Data field %s is not a float (%d != [%d,%d])", 
+					prop,
+					td->fieldType,
+					FIELD_FLOAT,
+					FIELD_TIME);
+			}
+
+			offset = td->fieldOffset[TD_OFFSET_NORMAL];
+			break;
+		}
+	case Prop_Send:
+		{
+			sm_sendprop_info_t info;
+
+			FIND_PROP_SEND(&info);
+
+			if (info.prop->GetType() != DPT_Float)
+			{
+				return pContext->ThrowNativeError("SendProp %s is not a float (%d != %d)",
+					prop,
+					info.prop->GetType(),
+					DPT_Float);
+			}
+
+			offset = info.actual_offset;
+			break;
+		}
+	default:
+		{
+			return pContext->ThrowNativeError("Invalid Property type %d", params[2]);
+		}
+	}
+
+	float val = *(float *)((uint8_t *)pEntity + offset);
+
+	return sp_ftoc(val);
+}
+
+static cell_t SetEntPropFloat(IPluginContext *pContext, const cell_t *params)
+{
+	CBaseEntity *pEntity;
+	char *prop;
+	int offset;
+	const char *class_name;
+	edict_t *pEdict;
+
+	pEdict = GetEntity(params[1], &pEntity);
+
+	if (!pEdict || !pEntity)
+	{
+		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
+	}
+
+	if ((class_name = pEdict->GetClassName()) == NULL)
+	{
+		class_name = "";
+	}
+
+	pContext->LocalToString(params[3], &prop);
+
+	switch (params[2])
+	{
+	case Prop_Data:
+		{
+			typedescription_t *td;
+
+			FIND_PROP_DATA(td);
+
+			if (td->fieldType != FIELD_FLOAT
+				&& td->fieldType != FIELD_TIME)
+			{
+				return pContext->ThrowNativeError("Data field %s is not a float (%d != [%d,%d])", 
+					prop,
+					td->fieldType,
+					FIELD_FLOAT,
+					FIELD_TIME);
+			}
+
+			offset = td->fieldOffset[TD_OFFSET_NORMAL];
+			break;
+		}
+	case Prop_Send:
+		{
+			sm_sendprop_info_t info;
+
+			FIND_PROP_SEND(&info);
+
+			if (info.prop->GetType() != DPT_Float)
+			{
+				return pContext->ThrowNativeError("SendProp %s is not a float (%d != %d)",
+					prop,
+					info.prop->GetType(),
+					DPT_Float);
+			}
+
+			offset = info.actual_offset;
+			break;
+		}
+	default:
+		{
+			return pContext->ThrowNativeError("Invalid Property type %d", params[2]);
+		}
+	}
+
+	*(float *)((uint8_t *)pEntity + offset) = sp_ctof(params[4]);
+
+	if (params[2] == Prop_Send)
+	{
+		g_HL2.SetEdictStateChanged(pEdict, offset);
+	}
+
+	return 1;
+}
+
+static cell_t GetEntPropEnt(IPluginContext *pContext, const cell_t *params)
+{
+	CBaseEntity *pEntity;
+	char *prop;
+	int offset;
+	const char *class_name;
+	edict_t *pEdict;
+
+	pEdict = GetEntity(params[1], &pEntity);
+
+	if (!pEdict || !pEntity)
+	{
+		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
+	}
+
+	if ((class_name = pEdict->GetClassName()) == NULL)
+	{
+		class_name = "";
+	}
+
+	pContext->LocalToString(params[3], &prop);
+
+	switch (params[2])
+	{
+	case Prop_Data:
+		{
+			typedescription_t *td;
+
+			FIND_PROP_DATA(td);
+
+			if (td->fieldType != FIELD_EHANDLE)
+			{
+				return pContext->ThrowNativeError("Data field %s is not an entity (%d != %d)", 
+					prop,
+					td->fieldType,
+					FIELD_EHANDLE);
+			}
+
+			offset = td->fieldOffset[TD_OFFSET_NORMAL];
+			break;
+		}
+	case Prop_Send:
+		{
+			sm_sendprop_info_t info;
+
+			FIND_PROP_SEND(&info);
+
+			if (info.prop->GetType() != DPT_Int)
+			{
+				return pContext->ThrowNativeError("SendProp %s is not an integer (%d != %d)",
+					prop,
+					info.prop->GetType(),
+					DPT_Int);
+			}
+
+			offset = info.actual_offset;
+			break;
+		}
+	default:
+		{
+			return pContext->ThrowNativeError("Invalid Property type %d", params[2]);
+		}
+	}
+
+	CBaseHandle &hndl = *(CBaseHandle *)((uint8_t *)pEntity + offset);
+
+	return CheckBaseHandle(hndl);
+}
+
+static cell_t SetEntPropEnt(IPluginContext *pContext, const cell_t *params)
+{
+	CBaseEntity *pEntity;
+	char *prop;
+	int offset;
+	const char *class_name;
+	edict_t *pEdict;
+
+	pEdict = GetEntity(params[1], &pEntity);
+
+	if (!pEdict || !pEntity)
+	{
+		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
+	}
+
+	if ((class_name = pEdict->GetClassName()) == NULL)
+	{
+		class_name = "";
+	}
+
+	pContext->LocalToString(params[3], &prop);
+
+	switch (params[2])
+	{
+	case Prop_Data:
+		{
+			typedescription_t *td;
+
+			FIND_PROP_DATA(td);
+
+			if (td->fieldType != FIELD_EHANDLE)
+			{
+				return pContext->ThrowNativeError("Data field %s is not an entity (%d != %d)", 
+					prop,
+					td->fieldType,
+					FIELD_EHANDLE);
+			}
+
+			offset = td->fieldOffset[TD_OFFSET_NORMAL];
+			break;
+		}
+	case Prop_Send:
+		{
+			sm_sendprop_info_t info;
+
+			FIND_PROP_SEND(&info);
+
+			if (info.prop->GetType() != DPT_Int)
+			{
+				return pContext->ThrowNativeError("SendProp %s is not an integer (%d != %d)",
+					prop,
+					info.prop->GetType(),
+					DPT_Int);
+			}
+
+			offset = info.actual_offset;
+			break;
+		}
+	default:
+		{
+			return pContext->ThrowNativeError("Invalid Property type %d", params[2]);
+		}
+	}
+
+	CBaseHandle &hndl = *(CBaseHandle *)((uint8_t *)pEntity + offset);
+
+	if (params[4] == -1)
+	{
+		hndl.Set(NULL);
+	}
+	else
+	{
+		edict_t *pOther;
+		CBaseEntity *pOtherEnt;
+
+		if ((pOther = GetEntity(params[4], &pOtherEnt)) == NULL)
+		{
+			return pContext->ThrowNativeError("Invalid entity %d", params[4]);
+		}
+
+		hndl.Set(pOther->GetIServerEntity());
+	}
+
+	if (params[2] == Prop_Send)
+	{
+		g_HL2.SetEdictStateChanged(pEdict, offset);
+	}
+
+	return 1;
+}
+
+static cell_t GetEntPropVector(IPluginContext *pContext, const cell_t *params)
+{
+	CBaseEntity *pEntity;
+	char *prop;
+	int offset;
+	const char *class_name;
+	edict_t *pEdict;
+	
+	pEdict = GetEntity(params[1], &pEntity);
+
+	if (!pEdict || !pEntity)
+	{
+		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
+	}
+
+	if ((class_name = pEdict->GetClassName()) == NULL)
+	{
+		class_name = "";
+	}
+
+	pContext->LocalToString(params[3], &prop);
+
+	switch (params[2])
+	{
+	case Prop_Data:
+		{
+			typedescription_t *td;
+			
+			FIND_PROP_DATA(td);
+
+			if (td->fieldType != FIELD_VECTOR
+				&& td->fieldType != FIELD_POSITION_VECTOR)
+			{
+				return pContext->ThrowNativeError("Data field %s is not a vector (%d != [%d,%d])", 
+					prop,
+					td->fieldType,
+					FIELD_VECTOR,
+					FIELD_POSITION_VECTOR);
+			}
+
+			offset = td->fieldOffset[TD_OFFSET_NORMAL];
+			break;
+		}
+	case Prop_Send:
+		{
+			sm_sendprop_info_t info;
+
+			FIND_PROP_SEND(&info);
+
+			if (info.prop->GetType() != DPT_Vector)
+			{
+				return pContext->ThrowNativeError("SendProp %s is not a vector (%d != %d)",
+					prop,
+					info.prop->GetType(),
+					DPT_Vector);
+			}
+
+			offset = info.actual_offset;
+			break;
+		}
+	default:
+		{
+			return pContext->ThrowNativeError("Invalid Property type %d", params[2]);
+		}
+	}
+
+	Vector *v = (Vector *)((uint8_t *)pEntity + offset);
+
+	cell_t *vec;
+	pContext->LocalToPhysAddr(params[4], &vec);
+
+	vec[0] = sp_ftoc(v->x);
+	vec[1] = sp_ftoc(v->y);
+	vec[2] = sp_ftoc(v->z);
+
+	return 1;
+}
+
+static cell_t SetEntPropVector(IPluginContext *pContext, const cell_t *params)
+{
+	CBaseEntity *pEntity;
+	char *prop;
+	int offset;
+	const char *class_name;
+	edict_t *pEdict;
+	
+	pEdict = GetEntity(params[1], &pEntity);
+
+	if (!pEdict || !pEntity)
+	{
+		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
+	}
+
+	if ((class_name = pEdict->GetClassName()) == NULL)
+	{
+		class_name = "";
+	}
+
+	pContext->LocalToString(params[3], &prop);
+
+	switch (params[2])
+	{
+	case Prop_Data:
+		{
+			typedescription_t *td;
+			
+			FIND_PROP_DATA(td);
+
+			if (td->fieldType != FIELD_VECTOR
+				&& td->fieldType != FIELD_POSITION_VECTOR)
+			{
+				return pContext->ThrowNativeError("Data field %s is not a vector (%d != [%d,%d])", 
+					prop,
+					td->fieldType,
+					FIELD_VECTOR,
+					FIELD_POSITION_VECTOR);
+			}
+
+			offset = td->fieldOffset[TD_OFFSET_NORMAL];
+			break;
+		}
+	case Prop_Send:
+		{
+			sm_sendprop_info_t info;
+
+			FIND_PROP_SEND(&info);
+
+			if (info.prop->GetType() != DPT_Vector)
+			{
+				return pContext->ThrowNativeError("SendProp %s is not a vector (%d != %d)",
+					prop,
+					info.prop->GetType(),
+					DPT_Vector);
+			}
+
+			offset = info.actual_offset;
+			break;
+		}
+	default:
+		{
+			return pContext->ThrowNativeError("Invalid Property type %d", params[2]);
+		}
+	}
+
+	Vector *v = (Vector *)((uint8_t *)pEntity + offset);
+
+	cell_t *vec;
+	pContext->LocalToPhysAddr(params[4], &vec);
+
+	v->x = sp_ctof(vec[0]);
+	v->y = sp_ctof(vec[1]);
+	v->z = sp_ctof(vec[2]);
+
+	if (params[2] == Prop_Send)
+	{
+		g_HL2.SetEdictStateChanged(pEdict, offset);
+	}
+
+	return 1;
+}
+
+static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
+{
+	CBaseEntity *pEntity;
+	char *prop;
+	int offset;
+	const char *class_name;
+	edict_t *pEdict;
+	
+	pEdict = GetEntity(params[1], &pEntity);
+
+	if (!pEdict || !pEntity)
+	{
+		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
+	}
+
+	if ((class_name = pEdict->GetClassName()) == NULL)
+	{
+		class_name = "";
+	}
+
+	pContext->LocalToString(params[3], &prop);
+
+	switch (params[2])
+	{
+	case Prop_Data:
+		{
+			typedescription_t *td;
+			
+			FIND_PROP_DATA(td);
+
+			if (td->fieldType != FIELD_CHARACTER)
+			{
+				return pContext->ThrowNativeError("Data field %s is not a string (%d != %d)", 
+					prop,
+					td->fieldType,
+					FIELD_CHARACTER);
+			}
+
+			offset = td->fieldOffset[TD_OFFSET_NORMAL];
+			break;
+		}
+	case Prop_Send:
+		{
+			sm_sendprop_info_t info;
+
+			FIND_PROP_SEND(&info);
+
+			if (info.prop->GetType() != DPT_String)
+			{
+				return pContext->ThrowNativeError("SendProp %s is not a string (%d != %d)",
+					prop,
+					info.prop->GetType(),
+					DPT_String);
+			}
+
+			offset = info.actual_offset;
+			break;
 			break;
 		}
 	default:
@@ -714,7 +1651,6 @@ static cell_t SetEntPropString(IPluginContext *pContext, const cell_t *params)
 	char *prop;
 	int offset;
 	int maxlen;
-	bool is_sendprop = false;
 	edict_t *pEdict = GetEntity(params[1], &pEntity);
 
 	if (!pEdict || !pEntity)
@@ -765,7 +1701,6 @@ static cell_t SetEntPropString(IPluginContext *pContext, const cell_t *params)
 			}
 			offset = pSend->GetOffset();
 			maxlen = DT_MAX_STRING_BUFFERSIZE;
-			is_sendprop = true;
 			break;
 		}
 	default:
@@ -780,7 +1715,7 @@ static cell_t SetEntPropString(IPluginContext *pContext, const cell_t *params)
 	pContext->LocalToString(params[4], &src);
 	size_t len = strncopy(dest, src, maxlen);
 
-	if (is_sendprop)
+	if (params[2] == Prop_Send)
 	{
 		g_HL2.SetEdictStateChanged(pEdict, offset);
 	}
@@ -792,13 +1727,22 @@ REGISTER_NATIVES(entityNatives)
 {
 	{"ChangeEdictState",		ChangeEdictState},
 	{"CreateEdict",				CreateEdict},
+	{"FindDataMapOffs",			FindDataMapOffs},
+	{"FindSendPropInfo",		FindSendPropInfo},
 	{"FindSendPropOffs",		FindSendPropOffs},
 	{"GetEdictClassname",		GetEdictClassname},
 	{"GetEdictFlags",			GetEdictFlags},
 	{"GetEntData",				GetEntData},
-	{"GetEntDataEnt",			GetEntDataEnt},
+	{"GetEntDataEnt",			GetEntDataEnt},		/** DEPRECATED */
+	{"GetEntDataEnt2",			GetEntDataEnt2},
 	{"GetEntDataFloat",			GetEntDataFloat},
+	{"GetEntDataString",		GetEntDataString},
 	{"GetEntDataVector",		GetEntDataVector},
+	{"GetEntProp",				GetEntProp},
+	{"GetEntPropEnt",			GetEntPropEnt},
+	{"GetEntPropFloat",			GetEntPropFloat},
+	{"GetEntPropString",		GetEntPropString},
+	{"GetEntPropVector",		GetEntPropVector},
 	{"GetEntityCount",			GetEntityCount},
 	{"GetEntityNetClass",		GetEntityNetClass},
 	{"GetMaxEntities",			GetMaxEntities},
@@ -808,13 +1752,15 @@ REGISTER_NATIVES(entityNatives)
 	{"RemoveEdict",				RemoveEdict},
 	{"SetEdictFlags",			SetEdictFlags},
 	{"SetEntData",				SetEntData},
-	{"SetEntDataEnt",			SetEntDataEnt},
+	{"SetEntDataEnt",			SetEntDataEnt},		/** DEPRECATED */
+	{"SetEntDataEnt2",			SetEntDataEnt2},
 	{"SetEntDataFloat",			SetEntDataFloat},
 	{"SetEntDataVector",		SetEntDataVector},
-	{"FindDataMapOffs",			FindDataMapOffs},
-	{"GetEntDataString",		GetEntDataString},
 	{"SetEntDataString",		SetEntDataString},
-	{"GetEntPropString",		GetEntPropString},
+	{"SetEntProp",				SetEntProp},
+	{"SetEntPropEnt",			SetEntPropEnt},
+	{"SetEntPropFloat",			SetEntPropFloat},
 	{"SetEntPropString",		SetEntPropString},
+	{"SetEntPropVector",		SetEntPropVector},
 	{NULL,						NULL}
 };
diff --git a/plugins/include/entity.inc b/plugins/include/entity.inc
index d3f3a33a..79d90fc4 100644
--- a/plugins/include/entity.inc
+++ b/plugins/include/entity.inc
@@ -41,7 +41,7 @@
 enum PropType
 {
 	Prop_Send = 0,	/**< This property is networked. */
-	Prop_Data = 1,	/**< This property is for saved game files. */
+	Prop_Data = 1,	/**< This property is for save game data fields. */
 };
 
 /**
@@ -59,6 +59,16 @@ enum PropType
 #define FL_EDICT_DIRTY_PVS_INFORMATION	(1<<7)
 #define FL_FULL_EDICT_CHANGED		(1<<8)
 
+enum PropFieldType
+{
+	PropField_Unsupported,		/**< The type is unsupported. */
+	PropField_Integer,			/**< Valid for SendProp and Data fields */
+	PropField_Float,			/**< Valid for SendProp and Data fields */
+	PropField_Entity,			/**< Valid for Data fields only (SendProp shows as int) */
+	PropField_Vector,			/**< Valid for SendProp and Data fields */
+	PropField_String,			/**< Valid for SendProp and Data fields */
+};
+
 /**
  * @endsection
  */
@@ -244,8 +254,14 @@ native Float:GetEntDataFloat(entity, offset);
 native SetEntDataFloat(entity, offset, Float:value, bool:changeState=false);
 
 /**
- * Peeks into an entity's object data and retrieves the entity handle
- * info at the given offset.
+ * This function is deprecated.  Use GetEntDataEnt2 instead, for 
+ * reasons explained in the notes.
+ *
+ * Note: This function returns 0 on failure, which may be misleading, 
+ * as the number 0 is also used for the world entity index.
+ *
+ * Note: This function makes no attempt to validate the returned 
+ * entity, and in fact, it could be garbage or completely unexpected.
  * 
  * @param entity		Edict index.
  * @param offset		Offset to use.
@@ -255,8 +271,12 @@ native SetEntDataFloat(entity, offset, Float:value, bool:changeState=false);
 native GetEntDataEnt(entity, offset);
 
 /**
- * Peeks into an entity's object data and sets the entity handle info
- * at the given offset.
+ * This function is deprecated.   Use GetEntDataEnt2 instead, for 
+ * reasons explained in the notes.
+ *
+ * Note: This function uses 0 as an indicator to unset data, but 
+ * 0 is also the world entity index.  Thus, the a property cannot 
+ * be set to the world entity using this native.
  * 
  * @param entity		Edict index.
  * @param offset		Offset to use.
@@ -267,6 +287,39 @@ native GetEntDataEnt(entity, offset);
  */
 native SetEntDataEnt(entity, offset, other, bool:changeState=false);
 
+/**
+ * Peeks into an entity's object data and retrieves the entity index 
+ * at the given offset.
+ *
+ * Note: This will only work on offsets that are stored as "entity 
+ * handles" (which usually looks like m_h* in properties).  These 
+ * are not SourceMod Handles, but internal Source structures.
+ * 
+ * @param entity		Edict index.
+ * @param offset		Offset to use.
+ * @return				Entity index at the given location.  If there is no entity, 
+ *						or the stored entity is invalid, then -1 is returned.
+ * @error				Invalid input entity, or offset out of reasonable bounds.
+ */
+native GetEntDataEnt2(entity, offset);
+
+/**
+ * Peeks into an entity's object data and sets the entity index at the 
+ * given offset.
+ *
+ * Note: This will only work on offsets that are stored as "entity 
+ * handles" (which usually looks like m_h* in properties).  These 
+ * are not SourceMod Handles, but internal Source structures.
+ * 
+ * @param entity		Edict index.
+ * @param offset		Offset to use.
+ * @param other			Entity index to set, or -1 to clear.
+ * @param changeState	If true, change will be sent over the network.
+ * @noreturn
+ * @error				Invalid input entity, or offset out of reasonable bounds.
+ */
+native SetEntDataEnt2(entity, offset, other, bool:changeState=false);
+
 /**
  * Peeks into an entity's object data and retrieves the vector at the 
  * given offset.
@@ -331,30 +384,74 @@ native SetEntDataString(entity, offset, const String:buffer[], maxlen, bool:chan
  * Given a ServerClass name, finds a networkable send property offset.
  * This information is cached for future calls.
  *
+ * Note, this function may return offsets that do not work!
+ * If a property is nested beneath a parent object, the resulting offset 
+ * will be invalid for direct use with data functions.  Therefore, you 
+ * should use FindSendPropInfo() instead.  An example of such a property is 
+ * CTFPlayer::DT_LocalPlayer.m_nDisguiseClass on Team Fortress.
+ *
  * @param cls			Classname.
  * @param prop			Property name.
  * @return				An offset, or -1 on failure.
  */
 native FindSendPropOffs(const String:cls[], const String:prop[]);
 
+/**
+ * Given a ServerClass name, finds a networkable send property offset.
+ * This information is cached for future calls.
+ * 
+ * Note: This function will correctly compute nested offsets, unlike 
+ * FindSendPropOffs().  YOU SHOULD NOT use this function to self-compute 
+ * nested offsets.  For example, it is okay to add indexes for arrays, 
+ * but not to add DT_LocalPlayer to m_nDisguiseClass.
+ *
+ * @param cls			Classname.
+ * @param prop			Property name.
+ * @param type			Optional parameter to store the type.
+ * @param num_bits		Optional parameter to store the number of bits the field 
+ *						uses, if applicable (otherwise 0 is stored).  The number 
+ *						of bits varies for integers and floats, and is always 0 
+ * 						for strings.
+ * @param local_offset	Optional parameter to store the local offset, as 
+ *						FindSendPropOffs() would return.
+ * @return				On success, returns an absolutely computed offset.
+ *						If no offset is available, 0 is returned.
+ *						If the property is not found, -1 is returned.
+ */
+native FindSendPropInfo(const String:cls[], 
+						const String:prop[], 
+						&PropFieldType:type=PropFieldType:0,
+						&num_bits=0,
+						&local_offset=0);
+
 /**
  * Given an entity, finds a datamap property offset.
  * This information is cached for future calls.
  *
  * @param entity		Entity index.
  * @param prop			Property name.
+ * @param type			Optional parameter to store the type.
+ * @param num_bits		Optional parameter to store the number of bits the field 
+ *						uses.  The bit count will either be 1 (for boolean) or 
+ *						divisible by 8 (including 0 if unknown).
  * @return				An offset, or -1 on failure.
  */
-native FindDataMapOffs(entity, const String:prop[]);
+native FindDataMapOffs(entity, 
+					   const String:prop[],
+					   &PropFieldType:type=PropFieldType:0,
+					   &num_bits=0);
 
 /**
  * Wrapper function for finding a send property for a particular entity.
  *
  * @param ent			Entity index.
  * @param prop			Property name.
+ * @param actual		Defaults to false for backwards compatibility.
+ *						If true, the newer FindSendPropInfo() function 
+ *						is used instead.
  * @return				An offset, or -1 on failure.
  */
-stock GetEntSendPropOffs(ent, const String:prop[])
+stock GetEntSendPropOffs(ent, const String:prop[], bool:actual=false)
 {
 	decl String:cls[64];
 	
@@ -363,314 +460,149 @@ stock GetEntSendPropOffs(ent, const String:prop[])
 		return -1;
 	}
 	
-	return FindSendPropOffs(cls, prop);
+	if (actual)
+	{
+		return FindSendPropInfo(cls, prop);
+	}
+	else
+	{
+		return FindSendPropOffs(cls, prop);
+	}
 }
 
 /**
- * Gets a network property as an integer; wrapper around GetEntData().
+ * Retrieves an integer value from an entity's property.
+ *
+ * This function is considered safer and more robust over GetEntData, 
+ * because it performs strict offset checking and typing rules.  There is a 
+ * very minor performance hit from this.
  * 
- * @param entity		Edict index.
+ * @param entity		Entity/edict index.
  * @param type			Property type.
- * @param prop			Property to use.
- * @param size			Number of bytes to read (valid values are 1, 2, or 4).
+ * @param prop			Property name.
+ * @param size			Number of bytes to write (valid values are 1, 2, or 4).
+ *						This value is auto-detected, and the size parameter is 
+ *						only used as a fallback in case detection fails.
  * @return				Value at the given property offset.
  * @error				Invalid entity or property not found.
  */
-stock GetEntProp(entity, PropType:type, const String:prop[], size=4)
-{
-	new offs;
-
-	switch (type)
-	{
-		case Prop_Send:
-		{
-			offs = GetEntSendPropOffs(entity, prop);
-		}
-		case Prop_Data:
-		{
-			offs = FindDataMapOffs(entity, prop);
-		}
-		default:
-		{
-			ThrowError("Invalid Property type %d", type);
-		}
-	}
-
-	if (offs == -1)
-	{
-		ThrowError("Property \"%s\" not found for entity %d", prop, entity);
-	}
-
-	return GetEntData(entity, offs, size);
-}
+native GetEntProp(entity, PropType:type, const String:prop[], size=4);
 
 /**
- * Sets a network property as an integer; wrapper around GetEntData().
+ * Sets an integer value in an entity's property.
  *
- * @param entity		Edict index.
+ * This function is considered safer and more robust over SetEntData, 
+ * because it performs strict offset checking and typing rules.  There is a 
+ * very minor performance hit from this.
+ * 
+ * @param entity		Entity/edict index.
  * @param type			Property type.
- * @param prop			Property to use.
+ * @param prop			Property name.
  * @param size			Number of bytes to write (valid values are 1, 2, or 4).
+ *						This value is auto-detected, and the size parameter is 
+ *						only used as a fallback in case detection fails.
  * @error				Invalid entity or offset out of reasonable bounds.
  * @noreturn
  */
-stock SetEntProp(entity, PropType:type, const String:prop[], any:value, size=4)
-{
-	new offs;
-
-	switch (type)
-	{
-		case Prop_Send:
-		{
-			offs = GetEntSendPropOffs(entity, prop);
-		}
-		case Prop_Data:
-		{
-			offs = FindDataMapOffs(entity, prop);
-		}
-		default:
-		{
-			ThrowError("Invalid Property type %d", type);
-		}
-	}
-
-	if (offs == -1)
-	{
-		ThrowError("Property \"%s\" not found for entity %d", prop, entity);
-	}
-
-	return SetEntData(entity, offs, value, size, true);
-}
+native SetEntProp(entity, PropType:type, const String:prop[], any:value, size=4);
 
 /**
- * Gets a network property as a float; wrapper around GetEntDataFloat().
+ * Retrieves a float value from an entity's property.
+ *
+ * This function is considered safer and more robust over GetEntDataFloat, 
+ * because it performs strict offset checking and typing rules.  There is a 
+ * very minor performance hit from this.
  * 
- * @param entity		Edict index.
+ * @param entity		Entity/edict index.
  * @param type			Property type.
- * @param prop			Property to use.
+ * @param prop			Property name.
  * @return				Value at the given property offset.
  * @error				Invalid entity or offset out of reasonable bounds.
  */
-stock Float:GetEntPropFloat(entity, PropType:type, const String:prop[])
-{
-	new offs;
-
-	switch (type)
-	{
-		case Prop_Send:
-		{
-			offs = GetEntSendPropOffs(entity, prop);
-		}
-		case Prop_Data:
-		{
-			offs = FindDataMapOffs(entity, prop);
-		}
-		default:
-		{
-			ThrowError("Invalid Property type %d", type);
-		}
-	}
-
-	if (offs == -1)
-	{
-		ThrowError("Property \"%s\" not found for entity %d", prop, entity);
-	}
-
-	return GetEntDataFloat(entity, offs);
-}
+native Float:GetEntPropFloat(entity, PropType:type, const String:prop[]);
 
 /**
- * Sets a network property as a float; wrapper around SetEntDataFloat().
+ * Sets a float value in an entity's property.
+ *
+ * This function is considered safer and more robust over SetEntDataFloat, 
+ * because it performs strict offset checking and typing rules.  There is a 
+ * very minor performance hit from this.
  * 
- * @param entity		Edict index.
+ * @param entity		Entity/edict index.
  * @param type			Property type.
- * @param prop			Property to use.
+ * @param prop			Property name.
  * @param value			Value to set.
  * @noreturn
  * @error				Invalid entity or offset out of reasonable bounds.
  */
-stock SetEntPropFloat(entity, PropType:type, const String:prop[], Float:value)
-{
-	new offs;
-
-	switch (type)
-	{
-		case Prop_Send:
-		{
-			offs = GetEntSendPropOffs(entity, prop);
-		}
-		case Prop_Data:
-		{
-			offs = FindDataMapOffs(entity, prop);
-		}
-		default:
-		{
-			ThrowError("Invalid Property type %d", type);
-		}
-	}
-
-	if (offs == -1)
-	{
-		ThrowError("Property \"%s\" not found for entity %d", prop, entity);
-	}
-
-	return SetEntDataFloat(entity, offs, value, true);
-}
+native SetEntPropFloat(entity, PropType:type, const String:prop[], Float:value);
 
 /**
- * Gets a network property as a handle entity; wrapper around GetEntDataEnt().
+ * Retrieves an entity index from an entity's property.
+ *
+ * This function is considered safer and more robust over GetEntDataEnt*, 
+ * because it performs strict offset checking and typing rules.  There is a 
+ * very minor performance hit from this.
  * 
- * @param entity		Edict index.
+ * @param entity		Entity/edict index.
  * @param type			Property type.
- * @param prop			Property to use.
- * @return				Entity index at the given property, or 0 if none.
+ * @param prop			Property name.
+ * @return				Entity index at the given property.
+ *						If there is no entity, or the entity is not valid, 
+ *						then -1 is returned.
  * @error				Invalid entity or offset out of reasonable bounds.
  */
-stock GetEntPropEnt(entity, PropType:type, const String:prop[])
-{
-	new offs;
-
-	switch (type)
-	{
-		case Prop_Send:
-		{
-			offs = GetEntSendPropOffs(entity, prop);
-		}
-		case Prop_Data:
-		{
-			offs = FindDataMapOffs(entity, prop);
-		}
-		default:
-		{
-			ThrowError("Invalid Property type %d", type);
-		}
-	}
-
-	if (offs == -1)
-	{
-		ThrowError("Property \"%s\" not found for entity %d", prop, entity);
-	}
-
-	return GetEntDataEnt(entity, offs);
-}
+native GetEntPropEnt(entity, PropType:type, const String:prop[]);
 
 /**
- * Sets a network property as a handle entity; wrapper around SetEntDataEnt().
+ * Sets an entity index in an entity's property.
+ *
+ * This function is considered safer and more robust over SetEntDataEnt*, 
+ * because it performs strict offset checking and typing rules.  There is a 
+ * very minor performance hit from this.
  * 
- * @param entity		Edict index.
+ * @param entity		Entity/edict index.
  * @param type			Property type.
- * @param prop			Property to use.
- * @param other			Entity index to set, or 0 to unset.
+ * @param prop			Property name.
+ * @param other			Entity index to set, or -1 to unset.
  * @noreturn
  * @error				Invalid entity or offset out of reasonable bounds.
  */
-stock SetEntPropEnt(entity, PropType:type, const String:prop[], other)
-{
-	new offs;
-
-	switch (type)
-	{
-		case Prop_Send:
-		{
-			offs = GetEntSendPropOffs(entity, prop);
-		}
-		case Prop_Data:
-		{
-			offs = FindDataMapOffs(entity, prop);
-		}
-		default:
-		{
-			ThrowError("Invalid Property type %d", type);
-		}
-	}
-
-	if (offs == -1)
-	{
-		ThrowError("Property \"%s\" not found for entity %d", prop, entity);
-	}
-
-	return SetEntDataEnt(entity, offs, other, true);
-}
+native SetEntPropEnt(entity, PropType:type, const String:prop[], other);
 
 /**
- * Gets a network property as a vector; wrapper around GetEntDataVector().
- * @note Both a Vector and a QAngle are three floats.  This is a 
- * convenience function and will work with both types.
+ * Retrieves a vector of floats from an entity, given a named network property.
+ *
+ * This function is considered safer and more robust over GetEntDataVector, 
+ * because it performs strict offset checking and typing rules.  There is a 
+ * very minor performance hit from this.
  * 
- * @param entity		Edict index.
+ * @param entity		Entity/edict index.
  * @param type			Property type.
- * @param prop			Property to use.
+ * @param prop			Property name.
  * @param vec			Vector buffer to store data in.
  * @noreturn
- * @error				Invalid entity or offset out of reasonable bounds.
+ * @error				Invalid entity, property not found, or property not 
+ *						actually a vector data type.
  */
-stock GetEntPropVector(entity, PropType:type, const String:prop[], Float:vec[3])
-{
-	new offs;
-
-	switch (type)
-	{
-		case Prop_Send:
-		{
-			offs = GetEntSendPropOffs(entity, prop);
-		}
-		case Prop_Data:
-		{
-			offs = FindDataMapOffs(entity, prop);
-		}
-		default:
-		{
-			ThrowError("Invalid Property type %d", type);
-		}
-	}
-
-	if (offs == -1)
-	{
-		ThrowError("Property \"%s\" not found for entity %d", prop, entity);
-	}
-
-	return GetEntDataVector(entity, offs, vec);
-}
+native GetEntPropVector(entity, PropType:type, const String:prop[], Float:vec[3]);
 
 /**
- * Sets a network property as a vector; wrapper around SetEntDataVector().
- * @note Both a Vector and a QAngle are three floats.  This is a 
- * convenience function and will work with both types.
+ * Sets a vector of floats in an entity, given a named network property.
+ *
+ * This function is considered safer and more robust over SetEntDataVector, 
+ * because it performs strict offset checking and typing rules.  There is a 
+ * very minor performance hit from this.
  * 
- * @param entity		Edict index.
+ * @param entity		Entity/edict index.
  * @param type			Property type.
- * @param prop			Property to use.
+ * @param prop			Property name.
  * @param vec			Vector to set.
  * @noreturn
- * @error				Invalid entity or offset out of reasonable bounds.
+ * @error				Invalid entity, property not found, or property not 
+ *						actually a vector data type.
  */
-stock SetEntPropVector(entity, PropType:type, const String:prop[], const Float:vec[3])
-{
-	new offs;
-
-	switch (type)
-	{
-		case Prop_Send:
-		{
-			offs = GetEntSendPropOffs(entity, prop);
-		}
-		case Prop_Data:
-		{
-			offs = FindDataMapOffs(entity, prop);
-		}
-		default:
-		{
-			ThrowError("Invalid Property type %d", type);
-		}
-	}
-
-	if (offs == -1)
-	{
-		ThrowError("Property \"%s\" not found for entity %d", prop, entity);
-	}
-
-	return SetEntDataVector(entity, offs, vec, true);
-}
+native SetEntPropVector(entity, PropType:type, const String:prop[], const Float:vec[3]);
 
 /**
  * Gets a network property as a string.
@@ -716,7 +648,6 @@ stock GetEntDataArray(entity, offset, array[], arraySize, dataSize=4)
 	}
 }
 
-
 /**
  * Copies an array of cells to an entity at a given offset.
  *
diff --git a/public/IGameHelpers.h b/public/IGameHelpers.h
index 25d1d5c6..1467ed6c 100644
--- a/public/IGameHelpers.h
+++ b/public/IGameHelpers.h
@@ -48,6 +48,15 @@
 
 namespace SourceMod
 {
+	/**
+	 * @brief Maps the heirarchy of a SendProp.
+	 */
+	struct sm_sendprop_info_t
+	{
+		SendProp *prop;					/**< Property instance. */
+		unsigned int actual_offset;		/**< Actual computed offset. */
+	};
+
 	class IGameHelpers : public SMInterface
 	{
 	public:
@@ -61,11 +70,11 @@ namespace SourceMod
 		}
 	public:
 		/**
-		 * @brief Finds a send property in a named send table.
+		 * @brief Deprecated; use FindSendPropInfo() instead.
 		 *
-		 * @param classname		Top-level sendtable name.
-		 * @param offset		Property name.
-		 * @return				SendProp pointer on success, NULL on failure.
+		 * @param classname		Do not use.
+		 * @param offset		Do not use.
+		 * @return				Do not use.
 		 */
 		virtual SendProp *FindInSendTable(const char *classname, const char *offset) =0;
 
@@ -118,6 +127,21 @@ namespace SourceMod
 		 * @return				True if LAN server, false otherwise.
 		 */
 		virtual bool IsLANServer() =0;
+
+		/**
+		 * @brief Finds a send property in a named ServerClass.
+		 *
+		 * This version, unlike FindInSendTable(), correctly deduces the 
+		 * offsets of nested tables.
+		 *
+		 * @param classname		ServerClass name (such as CBasePlayer).
+		 * @param offset		Offset name (such as m_iAmmo).
+		 * @param info			Buffer to store sm_sendprop_info_t data.
+		 * @return				True on success, false on failure.
+		 */
+		virtual bool FindSendPropInfo(const char *classname,
+			const char *offset,
+			sm_sendprop_info_t *info) =0;
 	};
 }
 

From 59b5a6f879a26b1b765df6987f717fdeb25486a4 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 13 Jan 2008 08:17:47 +0000
Subject: [PATCH 165/263] fixed linux build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401854
---
 core/HalfLife2.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/HalfLife2.cpp b/core/HalfLife2.cpp
index 2ea8faf2..3e642283 100644
--- a/core/HalfLife2.cpp
+++ b/core/HalfLife2.cpp
@@ -162,7 +162,7 @@ bool UTIL_FindInSendTable(SendTable *pTable,
 		}
 	}
 
-	return NULL;
+	return false;
 }
 
 typedescription_t *UTIL_FindInDataMap(datamap_t *pMap, const char *name)

From 97062c4de8b1efd18f7f4cf46e37588cfb3dd59e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 19 Jan 2008 16:47:31 +0000
Subject: [PATCH 166/263] removed -msse from JIT

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401856
---
 sourcepawn/jit/x86/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sourcepawn/jit/x86/Makefile b/sourcepawn/jit/x86/Makefile
index 55148aac..cbb31238 100644
--- a/sourcepawn/jit/x86/Makefile
+++ b/sourcepawn/jit/x86/Makefile
@@ -32,7 +32,7 @@ endif
 
 GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
 
-CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Wno-non-virtual-dtor -Werror -fPIC -fno-exceptions -fno-rtti -msse -DHAVE_STDINT_H
+CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -fno-rtti -DHAVE_STDINT_H
 
 ifeq "$(GCC_VERSION)" "4"
 	CFLAGS += $(GCC4_FLAGS)

From f939f472183ceebc3328ea9e80e73bc4f240a1c3 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 19 Jan 2008 20:58:10 +0000
Subject: [PATCH 167/263] added some more doc to events

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401857
---
 plugins/include/events.inc | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/plugins/include/events.inc b/plugins/include/events.inc
index fc189830..300703bd 100644
--- a/plugins/include/events.inc
+++ b/plugins/include/events.inc
@@ -108,6 +108,9 @@ native UnhookEvent(const String:name[], EventHook:callback, EventHookMode:mode=E
 /**
  * Creates a game event to be fired later.
  *
+ * The Handle should not be closed via CloseHandle().  It must be closed via 
+ * FireEvent() or CancelCreatedEvent().
+ *
  * @param name			Name of event.
  * @param force			If set to true, this forces the event to be created even if it's not being hooked.
  *						Note that this will not force it if the event doesn't exist at all.
@@ -119,6 +122,8 @@ native Handle:CreateEvent(const String:name[], bool:force=false);
 /**
  * Fires a game event.
  *
+ * This function closes the event Handle after completing.
+ *
  * @param event			Handle to the event.
  * @param dontBroadcast	Optional boolean that determines if event should be broadcast to clients.
  * @noreturn
@@ -169,6 +174,11 @@ native GetEventInt(Handle:event, const String:key[]);
 /**
  * Sets the integer value of a game event's key.
  *
+ * Integer value refers to anything that can be reduced to an integer.
+ * The various size specifiers, such as "byte" and "short" are still 
+ * integers, and only refer to how much data will actually be sent 
+ * over the network (if applicable).
+ *
  * @param event			Handle to the event.
  * @param key			Name of event key.
  * @param value			New integer value.

From e30f612a2194df22dd6cae482607b19d8b306597 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Mon, 21 Jan 2008 02:01:22 +0000
Subject: [PATCH 168/263] Added new native SendConVarValue for networking fake
 convar values to individual clients

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401858
---
 core/smn_console.cpp        | 47 +++++++++++++++++++++++++++++++++++++
 plugins/include/console.inc | 11 +++++++++
 2 files changed, 58 insertions(+)

diff --git a/core/smn_console.cpp b/core/smn_console.cpp
index fe4ace2b..e2be7a50 100644
--- a/core/smn_console.cpp
+++ b/core/smn_console.cpp
@@ -1196,6 +1196,52 @@ static cell_t FindNextConCommand(IPluginContext *pContext, const cell_t *params)
 	return 1;
 }
 
+static cell_t SendConVarValue(IPluginContext *pContext, const cell_t *params)
+{
+	Handle_t hndl = static_cast<Handle_t>(params[2]);
+	HandleError err;
+	ConVar *pConVar;
+
+	char *value;
+	pContext->LocalToString(params[3], &value);
+
+	if ((err=g_ConVarManager.ReadConVarHandle(hndl, &pConVar))
+		!= HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid convar handle %x (error %d)", hndl, err);
+	}
+
+	char data[256];
+	bf_write buffer(data, sizeof(data));
+
+	buffer.WriteUBitLong(NET_SETCONVAR, 5);
+	buffer.WriteByte(1);
+	buffer.WriteString(pConVar->GetName());
+	buffer.WriteString(value);
+
+	CPlayer *pPlayer = g_Players.GetPlayerByIndex(params[1]);
+
+	if (!pPlayer)
+	{
+		return pContext->ThrowNativeError("Client index %d is invalid", params[1]);
+	}
+
+	if (!pPlayer->IsConnected())
+	{
+		return pContext->ThrowNativeError("Client %d is not connected", params[1]);
+	}
+
+	if (pPlayer->IsFakeClient())
+	{
+		return pContext->ThrowNativeError("Client %d is fake and cannot be targeted", params[1]);
+	}
+
+	INetChannel *netchan = static_cast<INetChannel *>(engine->GetPlayerNetInfo(params[1]));
+	netchan->SendData(buffer);
+
+	return 1;
+}
+
 REGISTER_NATIVES(consoleNatives)
 {
 	{"CreateConVar",		sm_CreateConVar},
@@ -1242,5 +1288,6 @@ REGISTER_NATIVES(consoleNatives)
 	{"GetCommandFlags",		GetCommandFlags},
 	{"FindFirstConCommand",	FindFirstConCommand},
 	{"FindNextConCommand",	FindNextConCommand},
+	{"SendConVarValue",		SendConVarValue},
 	{NULL,					NULL}
 };
diff --git a/plugins/include/console.inc b/plugins/include/console.inc
index 6869bdbd..d866d5bd 100644
--- a/plugins/include/console.inc
+++ b/plugins/include/console.inc
@@ -754,3 +754,14 @@ native Handle:FindFirstConCommand(String:buffer[], max_size, &bool:isCommand, &f
  *						contents of outputs is undefined.
  */
 native bool:FindNextConCommand(Handle:search, String:buffer[], max_size, &bool:isCommand, &flags=0);
+
+/**
+ * Replicates a convar value to a specific client. This does not change the actual convar value.
+ *
+ * @param client		Client index
+ * @param convar		ConVar handle
+ * @param value			String value to send
+ * @return				True on success, false on failure
+ * @error 				Invalid client index, client not in game, or client is fake
+ */
+native bool:SendConVarValue(client, Handle:convar, const String:value[]);

From 89b6252f8e5c13554f9e0b5b22c7f7ac9e70b80e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 22 Jan 2008 16:47:10 +0000
Subject: [PATCH 169/263] fire requires timebomb

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401859
---
 plugins/basefuncommands.sp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/plugins/basefuncommands.sp b/plugins/basefuncommands.sp
index 519a6408..7505cf03 100644
--- a/plugins/basefuncommands.sp
+++ b/plugins/basefuncommands.sp
@@ -64,6 +64,13 @@ public Plugin:myinfo =
 #define CASH		1
 // -------------------------------------------------------------------------------
 
+/**
+ * Fire requires timebomb
+ */
+#if TIMEBOMB == 0 && FIRE == 1
+#error "TimeBomb requires Fire"
+#endif
+
 new Handle:hTopMenu = INVALID_HANDLE;
 
 // Sounds

From f50509abf0ce94155e99634ca318d0f12ca43f92 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 22 Jan 2008 17:04:59 +0000
Subject: [PATCH 170/263] added amb1378 - FileExists() for valve fs

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401860
---
 core/smn_filesystem.cpp   | 5 +++++
 plugins/include/files.inc | 6 +++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/core/smn_filesystem.cpp b/core/smn_filesystem.cpp
index eeec4886..124371a4 100644
--- a/core/smn_filesystem.cpp
+++ b/core/smn_filesystem.cpp
@@ -288,6 +288,11 @@ static cell_t sm_FileExists(IPluginContext *pContext, const cell_t *params)
 		return 0;
 	}
 
+	if (params[0] >= 2 && params[2] == 1)
+	{
+		return basefilesystem->FileExists(name) ? 1 : 0;
+	}
+
 	char realpath[PLATFORM_MAX_PATH];
 	g_SourceMod.BuildPath(Path_Game, realpath, sizeof(realpath), "%s", name);
 #ifdef PLATFORM_WINDOWS
diff --git a/plugins/include/files.inc b/plugins/include/files.inc
index e8767e66..20f3424c 100644
--- a/plugins/include/files.inc
+++ b/plugins/include/files.inc
@@ -302,9 +302,13 @@ native FilePosition(Handle:file);
  * Checks if a file exists.
  *
  * @param path			Path to the file.
+ * @param use_valve_fs	If true, the Valve file system will be used instead.
+ *						This can be used to check for the existance of files 
+ *						inside GCFs or the game cache, rather than solely files 
+ *						that are on disk.
  * @return				True if the file exists, false otherwise.
  */
-native bool:FileExists(const String:path[]);
+native bool:FileExists(const String:path[], bool:use_valve_fs=false);
 
 /**
  * Renames a file.

From 38012bf3e64d16bc9551d25be92512468ee42e02 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 22 Jan 2008 17:18:15 +0000
Subject: [PATCH 171/263] added amb1383 - data value to filter functions

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401861
---
 extensions/sdktools/trnatives.cpp  |  30 +++++++-
 plugins/include/sdktools_trace.inc | 115 ++++++++++++++++++-----------
 2 files changed, 99 insertions(+), 46 deletions(-)

diff --git a/extensions/sdktools/trnatives.cpp b/extensions/sdktools/trnatives.cpp
index 9ac7921d..4fb07d93 100644
--- a/extensions/sdktools/trnatives.cpp
+++ b/extensions/sdktools/trnatives.cpp
@@ -41,16 +41,19 @@ public:
 		edict_t *pEdict = gameents->BaseEntityToEdict(reinterpret_cast<CBaseEntity *>(pEntity));
 		m_pFunc->PushCell(engine->IndexOfEdict(pEdict));
 		m_pFunc->PushCell(contentsMask);
+		m_pFunc->PushCell(m_Data);
 		m_pFunc->Execute(&res);
 
 		return (res) ? true : false;
 	}
-	void SetFunctionPtr(IPluginFunction *pFunc)
+	void SetFunctionPtr(IPluginFunction *pFunc, cell_t data)
 	{
 		m_pFunc = pFunc;
+		m_Data = data;
 	}
 private:
 	IPluginFunction *m_pFunc;
+	cell_t m_Data;
 };
 
 /* Used for the global trace version */
@@ -105,13 +108,24 @@ static cell_t smn_TRTraceRayFilter(IPluginContext *pContext, const cell_t *param
 {
 	cell_t *startaddr, *endaddr;
 	IPluginFunction *pFunc;
+	cell_t data;
 
 	pFunc = pContext->GetFunctionById(params[5]);
 	if (!pFunc)
 	{
 		return pContext->ThrowNativeError("Invalid function id (%X)", params[5]);
 	}
-	g_SMTraceFilter.SetFunctionPtr(pFunc);
+
+	if (params[0] >= 6)
+	{
+		data = params[6];
+	}
+	else
+	{
+		data = 0;
+	}
+
+	g_SMTraceFilter.SetFunctionPtr(pFunc, data);
 	pContext->LocalToPhysAddr(params[1], &startaddr);
 	pContext->LocalToPhysAddr(params[2], &endaddr);
 
@@ -192,6 +206,7 @@ static cell_t smn_TRTraceRayFilterEx(IPluginContext *pContext, const cell_t *par
 {
 	IPluginFunction *pFunc;
 	cell_t *startaddr, *endaddr;
+	cell_t data;
 
 	pFunc = pContext->GetFunctionById(params[5]);
 	if (!pFunc)
@@ -205,7 +220,16 @@ static cell_t smn_TRTraceRayFilterEx(IPluginContext *pContext, const cell_t *par
 	CSMTraceFilter smfilter;
 	Ray_t ray;
 
-	smfilter.SetFunctionPtr(pFunc);
+	if (params[0] >= 6)
+	{
+		data = params[6];
+	}
+	else
+	{
+		data = 0;
+	}
+
+	smfilter.SetFunctionPtr(pFunc, data);
 	StartVec.Init(sp_ctof(startaddr[0]), sp_ctof(startaddr[1]), sp_ctof(startaddr[2]));
 
 	switch (params[4])
diff --git a/plugins/include/sdktools_trace.inc b/plugins/include/sdktools_trace.inc
index 7fa47f0d..df651afb 100644
--- a/plugins/include/sdktools_trace.inc
+++ b/plugins/include/sdktools_trace.inc
@@ -44,9 +44,9 @@
 #define	CONTENTS_WATER			0x20
 #define	CONTENTS_MIST			0x40
 #define CONTENTS_OPAQUE			0x80		/**< things that cannot be seen through (may be non-solid though). */
-#define	LAST_VISIBLE_CONTENTS		0x80
-#define ALL_VISIBLE_CONTENTS 		(LAST_VISIBLE_CONTENTS | (LAST_VISIBLE_CONTENTS-1))
-#define CONTENTS_TESTFOGVOLUME		0x100
+#define	LAST_VISIBLE_CONTENTS	0x80
+#define ALL_VISIBLE_CONTENTS 	(LAST_VISIBLE_CONTENTS | (LAST_VISIBLE_CONTENTS-1))
+#define CONTENTS_TESTFOGVOLUME	0x100
 #define CONTENTS_UNUSED5		0x200
 #define CONTENTS_UNUSED6		0x4000
 #define CONTENTS_TEAM1			0x800		/**< per team contents used to differentiate collisions. */
@@ -55,17 +55,17 @@
 #define CONTENTS_MOVEABLE		0x4000		/**< hits entities which are MOVETYPE_PUSH (doors, plats, etc) */
 #define	CONTENTS_AREAPORTAL		0x8000		/**< remaining contents are non-visible, and don't eat brushes. */
 #define	CONTENTS_PLAYERCLIP		0x10000
-#define	CONTENTS_MONSTERCLIP		0x20000
+#define	CONTENTS_MONSTERCLIP	0x20000
 
 /**
  * @section currents can be added to any other contents, and may be mixed
  */
 #define	CONTENTS_CURRENT_0		0x40000
 #define	CONTENTS_CURRENT_90		0x80000
-#define	CONTENTS_CURRENT_180		0x100000
-#define	CONTENTS_CURRENT_270		0x200000
+#define	CONTENTS_CURRENT_180	0x100000
+#define	CONTENTS_CURRENT_270	0x200000
 #define	CONTENTS_CURRENT_UP		0x400000
-#define	CONTENTS_CURRENT_DOWN		0x800000
+#define	CONTENTS_CURRENT_DOWN	0x800000
 
 /**
  * @endsection
@@ -75,30 +75,30 @@
 #define	CONTENTS_MONSTER		0x2000000	/**< should never be on a brush, only in game. */
 #define	CONTENTS_DEBRIS			0x4000000
 #define	CONTENTS_DETAIL			0x8000000	/**< brushes to be added after vis leafs. */
-#define	CONTENTS_TRANSLUCENT		0x10000000	/**< auto set if any surface has trans. */
+#define	CONTENTS_TRANSLUCENT	0x10000000	/**< auto set if any surface has trans. */
 #define	CONTENTS_LADDER			0x20000000
 #define CONTENTS_HITBOX			0x40000000	/**< use accurate hitboxes on trace. */
 
 /**
  * @section Trace masks.
  */
-#define	MASK_ALL			(0xFFFFFFFF)
-#define	MASK_SOLID			(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) 			/**< everything that is normally solid */
+#define	MASK_ALL				(0xFFFFFFFF)
+#define	MASK_SOLID				(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) 			/**< everything that is normally solid */
 #define	MASK_PLAYERSOLID		(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_PLAYERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) 	/**< everything that blocks player movement */
 #define	MASK_NPCSOLID			(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) /**< blocks npc movement */
-#define	MASK_WATER			(CONTENTS_WATER|CONTENTS_MOVEABLE|CONTENTS_SLIME) 							/**< water physics in these contents */
-#define	MASK_OPAQUE			(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_OPAQUE) 							/**< everything that blocks line of sight for AI, lighting, etc */
-#define MASK_OPAQUE_AND_NPCS		(MASK_OPAQUE|CONTENTS_MONSTER)										/**< everything that blocks line of sight for AI, lighting, etc, but with monsters added. */
+#define	MASK_WATER				(CONTENTS_WATER|CONTENTS_MOVEABLE|CONTENTS_SLIME) 							/**< water physics in these contents */
+#define	MASK_OPAQUE				(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_OPAQUE) 							/**< everything that blocks line of sight for AI, lighting, etc */
+#define MASK_OPAQUE_AND_NPCS	(MASK_OPAQUE|CONTENTS_MONSTER)										/**< everything that blocks line of sight for AI, lighting, etc, but with monsters added. */
 #define	MASK_VISIBLE			(MASK_OPAQUE|CONTENTS_IGNORE_NODRAW_OPAQUE) 								/**< everything that blocks line of sight for players */
-#define MASK_VISIBLE_AND_NPCS		(MASK_OPAQUE_AND_NPCS|CONTENTS_IGNORE_NODRAW_OPAQUE) 							/**< everything that blocks line of sight for players, but with monsters added. */
-#define	MASK_SHOT			(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_HITBOX) 	/**< bullets see these as solid */
+#define MASK_VISIBLE_AND_NPCS	(MASK_OPAQUE_AND_NPCS|CONTENTS_IGNORE_NODRAW_OPAQUE) 							/**< everything that blocks line of sight for players, but with monsters added. */
+#define	MASK_SHOT				(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_HITBOX) 	/**< bullets see these as solid */
 #define MASK_SHOT_HULL			(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_GRATE) 	/**< non-raycasted weapons see this as solid (includes grates) */
 #define MASK_SHOT_PORTAL		(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW) 							/**< hits solids (not grates) and passes through everything else */
-#define MASK_SOLID_BRUSHONLY		(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_GRATE) 					/**< everything normally solid, except monsters (world+brush only) */
+#define MASK_SOLID_BRUSHONLY	(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_GRATE) 					/**< everything normally solid, except monsters (world+brush only) */
 #define MASK_PLAYERSOLID_BRUSHONLY	(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_PLAYERCLIP|CONTENTS_GRATE) 			/**< everything normally solid for player movement, except monsters (world+brush only) */
-#define MASK_NPCSOLID_BRUSHONLY		(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) 			/**< everything normally solid for npc movement, except monsters (world+brush only) */
+#define MASK_NPCSOLID_BRUSHONLY	(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) 			/**< everything normally solid for npc movement, except monsters (world+brush only) */
 #define MASK_NPCWORLDSTATIC		(CONTENTS_SOLID|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) 					/**< just the world, used for route rebuilding */
-#define MASK_SPLITAREAPORTAL		(CONTENTS_WATER|CONTENTS_SLIME) 									/**< These are things that can split areaportals */
+#define MASK_SPLITAREAPORTAL	(CONTENTS_WATER|CONTENTS_SLIME) 									/**< These are things that can split areaportals */
 
 /**
  * @endsection
@@ -110,21 +110,34 @@ enum RayType
 	RayType_Infinite	/**< The trace ray will go from the start position to infinity using a direction vector. */
 };
 
-/**
- * Called on entity filtering.
- *
- * @param entity		Entity index.
- * @param contentsMask		Contents Mask.
- * @return			True to allow the current entity to be hit, otherwise false.
- */
-functag TraceEntityFilter bool:public(entity, contentsMask);
+funcenum TraceEntityFilter
+{
+	/**
+	 * Called on entity filtering.
+	 *
+	 * @param entity		Entity index.
+ 	 * @param contentsMask	Contents Mask.
+ 	 * @return				True to allow the current entity to be hit, otherwise false.
+ 	 */
+	bool:public(entity, contentsMask),
+	
+	/**
+	 * Called on entity filtering.
+	 *
+	 * @param entity		Entity index.
+ 	 * @param contentsMask	Contents Mask.
+ 	 * @param data			Data value, if used.
+ 	 * @return				True to allow the current entity to be hit, otherwise false.
+ 	 */
+	bool:public(entity, contentsMask, any:data),
+};
 
 /**
  * Get the contents mask and the entity index at the given position.
  *
  * @param pos			World position to test.
  * @param entindex		Entity index found at the given position (by reference).
- * @return			Contents mask.
+ * @return				Contents mask.
  */
 native TR_GetPointContents(const Float:pos[3], &entindex=-1);
 
@@ -133,7 +146,7 @@ native TR_GetPointContents(const Float:pos[3], &entindex=-1);
  *
  * @param entindex		Entity index to test.
  * @param pos			World position.
- * @return			Contents mask.
+ * @return				Contents mask.
  */
 native TR_GetPointContentsEnt(entindex, const Float:pos[3]);
 
@@ -151,14 +164,23 @@ native TR_TraceRay(const Float:pos[3], const Float:vec[3], flags, RayType:rtype)
 /**
  * Starts up a new trace ray using a global trace result and a customized trace ray filter.
  *
+ * Calling TR_TraceRayFilter or TR_TraceRayFilterEx from inside a filter function is 
+ * currently not allowed and may not work.
+ *
  * @param pos			Starting position of the ray.
  * @param vec			Depending on RayType, it will be used as the ending point, or the direction angle.
  * @param flags			Trace flags.
  * @param rtype			Method to calculate the ray direction.
  * @param filter		Function to use as a filter.
+ * @param data			Arbitrary data value to pass through to the filter function.
  * @noreturn
  */
-native TR_TraceRayFilter(const Float:pos[3], const Float:vec[3], flags, RayType:rtype, TraceEntityFilter:filter);
+native TR_TraceRayFilter(const Float:pos[3],
+						 const Float:vec[3],
+						 flags,
+						 RayType:rtype,
+						 TraceEntityFilter:filter,
+						 any:data=0);
 
 /**
  * Starts up a new trace ray using a new trace result.
@@ -167,30 +189,37 @@ native TR_TraceRayFilter(const Float:pos[3], const Float:vec[3], flags, RayType:
  * @param vec			Depending on RayType, it will be used as the ending point, or the direction angle.
  * @param flags			Trace flags.
  * @param rtype			Method to calculate the ray direction.
- * @return			Ray trace handle.
- * @note Traces are closed with CloseHandle().
+ * @return				Ray trace handle, which must be closed via CloseHandle().
  */
 native Handle:TR_TraceRayEx(const Float:pos[3], const Float:vec[3], flags, RayType:rtype);
 
 /**
  * Starts up a new trace ray using a new trace result and a customized trace ray filter.
  *
+ * Calling TR_TraceRayFilter or TR_TraceRayFilterEx from inside a filter function is 
+ * currently not allowed and may not work.
+ *
  * @param pos			Starting position of the ray.
  * @param vec			Depending on RayType, it will be used as the ending point, or the direction angle.
  * @param flags			Trace flags.
  * @param rtype			Method to calculate the ray direction.
  * @param filter		Function to use as a filter.
- * @return			Ray trace handle.
- * @note Traces are closed with CloseHandle().
+ * @param data			Arbitrary data value to pass through to the filter function.
+ * @return				Ray trace handle, which must be closed via CloseHandle().
  */
-native Handle:TR_TraceRayFilterEx(const Float:pos[3], const Float:vec[3], flags, RayType:rtype, TraceEntityFilter:filter);
+native Handle:TR_TraceRayFilterEx(const Float:pos[3], 
+								  const Float:vec[3],
+								  flags, 
+								  RayType:rtype, 
+								  TraceEntityFilter:filter,
+								  any:data=0);
 
 /**
  * Returns the time fraction from a trace result (1.0 means no collision).
  *
  * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
- * @return			Time fraction value of the trace.
- * @error			Invalid Handle.
+ * @return				Time fraction value of the trace.
+ * @error				Invalid Handle.
  */
 native Float:TR_GetFraction(Handle:hndl=INVALID_HANDLE);
 
@@ -200,7 +229,7 @@ native Float:TR_GetFraction(Handle:hndl=INVALID_HANDLE);
  * @param pos			Vector buffer to store data in.
  * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
  * @noreturn
- * @error			Invalid Handle.
+ * @error				Invalid Handle.
  */
 native TR_GetEndPosition(Float:pos[3], Handle:hndl=INVALID_HANDLE);
 
@@ -208,8 +237,8 @@ native TR_GetEndPosition(Float:pos[3], Handle:hndl=INVALID_HANDLE);
  * Returns the entity index that collided with the trace.
  *
  * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
- * @return			Entity index or -1 for no collision.
- * @error			Invalid Handle.
+ * @return				Entity index or -1 for no collision.
+ * @error				Invalid Handle.
  */
 native TR_GetEntityIndex(Handle:hndl=INVALID_HANDLE);
 
@@ -217,8 +246,8 @@ native TR_GetEntityIndex(Handle:hndl=INVALID_HANDLE);
  * Returns if there was any kind of collision along the trace ray.
  *
  * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
- * @return			True if any collision found, otherwise false.
- * @error			Invalid Handle.
+ * @return				True if any collision found, otherwise false.
+ * @error				Invalid Handle.
  */
 native bool:TR_DidHit(Handle:hndl=INVALID_HANDLE);
 
@@ -226,7 +255,7 @@ native bool:TR_DidHit(Handle:hndl=INVALID_HANDLE);
  * Returns in which body hit group the trace collided if any.
  *
  * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
- * @return			Body hit group.
- * @error			Invalid Handle.
+ * @return				Body hit group.
+ * @error				Invalid Handle.
  */
 native TR_GetHitGroup(Handle:hndl=INVALID_HANDLE);

From 85eaa3137449bcb106d70cac2095aa1296cbe894 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 22 Jan 2008 17:30:58 +0000
Subject: [PATCH 172/263] fixed amb1400 - invalid dereference caused crash in
 ternary operators

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401862
---
 sourcepawn/compiler/sc3.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/sourcepawn/compiler/sc3.c b/sourcepawn/compiler/sc3.c
index 19332800..2ef2be5c 100644
--- a/sourcepawn/compiler/sc3.c
+++ b/sourcepawn/compiler/sc3.c
@@ -1329,7 +1329,9 @@ static int hier13(value *lval)
     array1= (lval->ident==iARRAY || lval->ident==iREFARRAY);
     array2= (lval2.ident==iARRAY || lval2.ident==iREFARRAY);
     if (array1 && !array2) {
-      char *ptr=(lval->sym->name!=NULL) ? lval->sym->name : "-unknown-";
+      const char *ptr = "-unknown-";
+	  if (lval->sym != NULL && lval->sym->name != NULL)
+        ptr = lval->sym->name;
       error(33,ptr);            /* array must be indexed */
     } else if (!array1 && array2) {
       char *ptr=(lval2.sym->name!=NULL) ? lval2.sym->name : "-unknown-";
@@ -1570,7 +1572,7 @@ static int hier2(value *lval)
 	  if (level>sym->dim.array.level+1) {
         error(28,sym->name);  /* invalid subscript */
       } else if (level==sym->dim.array.level+1) {
-        lval->constval= (idxsym!=NULL && idxsym->dim.array.length>0) ? idxsym->dim.array.length : 1;
+        lval->constval=(idxsym!=NULL && idxsym->dim.array.length>0) ? idxsym->dim.array.length : 1;
       } else {
         lval->constval=array_levelsize(sym,level);
       }

From aba5378f95da9f4a1fefef4ed9611e19ec0b9e7a Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Tue, 22 Jan 2008 22:53:41 +0000
Subject: [PATCH 173/263] fixed amb1373 - off-by-one error a helper routine
 prevented CS natives from using the last client

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401863
---
 extensions/cstrike/natives.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/extensions/cstrike/natives.cpp b/extensions/cstrike/natives.cpp
index ce711e68..b97f070e 100644
--- a/extensions/cstrike/natives.cpp
+++ b/extensions/cstrike/natives.cpp
@@ -49,14 +49,16 @@ inline CBaseEntity *GetCBaseEntity(int num, bool isplayer)
 		return NULL;
 	}
 
-	if (num > 0 && num < playerhelpers->GetMaxClients())
+	if (num > 0 && num <= playerhelpers->GetMaxClients())
 	{
 		IGamePlayer *pPlayer = playerhelpers->GetGamePlayer(pEdict);
 		if (!pPlayer || !pPlayer->IsConnected())
 		{
 			return NULL;
 		}
-	} else if (isplayer) {
+	}
+	else if (isplayer) 
+	{
 		return NULL;
 	}
 

From e5539962816e5f1048851bf54d362042600609dc Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 23 Jan 2008 03:18:36 +0000
Subject: [PATCH 174/263] fixed amb1408 - compiler did not warn about invalid
 public usage

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401864
---
 sourcepawn/compiler/sc1.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sourcepawn/compiler/sc1.c b/sourcepawn/compiler/sc1.c
index fc304674..75828758 100644
--- a/sourcepawn/compiler/sc1.c
+++ b/sourcepawn/compiler/sc1.c
@@ -4136,6 +4136,8 @@ static int newfunc(char *firstname,int firsttag,int fpublic,int fstatic,int stoc
   /* "declargs()" found the ")"; if a ";" appears after this, it was a
    * prototype */
   if (matchtoken(';')) {
+    if (sym->usage & uPUBLIC)
+      error(10);
     sym->usage|=uFORWARD;
     if (!sc_needsemicolon)
       error(10);       /* old style prototypes used with optional semicolumns */

From 4ade0dbdc26c84ee6614ce4b7ed710c5fb4ebff6 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 23 Jan 2008 17:05:50 +0000
Subject: [PATCH 175/263] added amb1403 - CBaseTrace.plane from pRED

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401865
---
 extensions/sdktools/trnatives.cpp  | 862 +++++++++++++++--------------
 plugins/include/sdktools_trace.inc | 532 +++++++++---------
 2 files changed, 715 insertions(+), 679 deletions(-)

diff --git a/extensions/sdktools/trnatives.cpp b/extensions/sdktools/trnatives.cpp
index 4fb07d93..5f19a72a 100644
--- a/extensions/sdktools/trnatives.cpp
+++ b/extensions/sdktools/trnatives.cpp
@@ -1,418 +1,444 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation.  You must obey the GNU General Public License in
- * all respects for all other code used.  Additionally, AlliedModders LLC grants
- * this exception to all derivative works.  AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or <http://www.sourcemod.net/license.php>.
- *
- * Version: $Id$
- */
-
-#include "extension.h"
-#include <worldsize.h>
-
-class CSMTraceFilter : public CTraceFilter
-{
-public:
-	bool ShouldHitEntity(IHandleEntity *pEntity, int contentsMask)
-	{
-		cell_t res = 1;
-		edict_t *pEdict = gameents->BaseEntityToEdict(reinterpret_cast<CBaseEntity *>(pEntity));
-		m_pFunc->PushCell(engine->IndexOfEdict(pEdict));
-		m_pFunc->PushCell(contentsMask);
-		m_pFunc->PushCell(m_Data);
-		m_pFunc->Execute(&res);
-
-		return (res) ? true : false;
-	}
-	void SetFunctionPtr(IPluginFunction *pFunc, cell_t data)
-	{
-		m_pFunc = pFunc;
-		m_Data = data;
-	}
-private:
-	IPluginFunction *m_pFunc;
-	cell_t m_Data;
-};
-
-/* Used for the global trace version */
-Ray_t g_Ray;
-trace_t g_Trace;
-Vector g_StartVec;
-Vector g_EndVec;
-QAngle g_DirAngles;
-CTraceFilterHitAll g_HitAllFilter;
-CSMTraceFilter g_SMTraceFilter;
-
-enum
-{
-	RayType_EndPoint,
-	RayType_Infinite
-};
-
-static cell_t smn_TRTraceRay(IPluginContext *pContext, const cell_t *params)
-{
-	cell_t *startaddr, *endaddr;
-	pContext->LocalToPhysAddr(params[1], &startaddr);
-	pContext->LocalToPhysAddr(params[2], &endaddr);
-
-	g_StartVec.Init(sp_ctof(startaddr[0]), sp_ctof(startaddr[1]), sp_ctof(startaddr[2]));
-
-	switch (params[4])
-	{
-	case RayType_EndPoint:
-		{
-			g_EndVec.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
-			break;
-		}
-	case RayType_Infinite:
-		{
-			g_DirAngles.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
-			AngleVectors(g_DirAngles, &g_EndVec);
-
-			/* Make it unitary and get the ending point */
-			g_EndVec.NormalizeInPlace();
-			g_EndVec = g_StartVec + g_EndVec * MAX_TRACE_LENGTH;
-			break;
-		}
-	}
-
-	g_Ray.Init(g_StartVec, g_EndVec);
-	enginetrace->TraceRay(g_Ray, params[3], &g_HitAllFilter, &g_Trace);
-
-	return 1;
-}
-
-static cell_t smn_TRTraceRayFilter(IPluginContext *pContext, const cell_t *params)
-{
-	cell_t *startaddr, *endaddr;
-	IPluginFunction *pFunc;
-	cell_t data;
-
-	pFunc = pContext->GetFunctionById(params[5]);
-	if (!pFunc)
-	{
-		return pContext->ThrowNativeError("Invalid function id (%X)", params[5]);
-	}
-
-	if (params[0] >= 6)
-	{
-		data = params[6];
-	}
-	else
-	{
-		data = 0;
-	}
-
-	g_SMTraceFilter.SetFunctionPtr(pFunc, data);
-	pContext->LocalToPhysAddr(params[1], &startaddr);
-	pContext->LocalToPhysAddr(params[2], &endaddr);
-
-	g_StartVec.Init(sp_ctof(startaddr[0]), sp_ctof(startaddr[1]), sp_ctof(startaddr[2]));
-
-	switch (params[4])
-	{
-	case RayType_EndPoint:
-		{
-			g_EndVec.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
-			break;
-		}
-	case RayType_Infinite:
-		{
-			g_DirAngles.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
-			AngleVectors(g_DirAngles, &g_EndVec);
-
-			/* Make it unitary and get the ending point */
-			g_EndVec.NormalizeInPlace();
-			g_EndVec = g_StartVec + g_EndVec * MAX_TRACE_LENGTH;
-			break;
-		}
-	}
-
-	g_Ray.Init(g_StartVec, g_EndVec);
-	enginetrace->TraceRay(g_Ray, params[3], &g_SMTraceFilter, &g_Trace);
-
-	return 1;
-}
-
-static cell_t smn_TRTraceRayEx(IPluginContext *pContext, const cell_t *params)
-{
-	cell_t *startaddr, *endaddr;
-	pContext->LocalToPhysAddr(params[1], &startaddr);
-	pContext->LocalToPhysAddr(params[2], &endaddr);
-
-	Vector StartVec, EndVec;
-	Ray_t ray;
-
-	StartVec.Init(sp_ctof(startaddr[0]), sp_ctof(startaddr[1]), sp_ctof(startaddr[2]));
-
-	switch (params[4])
-	{
-	case RayType_EndPoint:
-		{
-			EndVec.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
-			break;
-		}
-	case RayType_Infinite:
-		{
-			QAngle DirAngles;
-			DirAngles.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
-			AngleVectors(DirAngles, &EndVec);
-
-			/* Make it unitary and get the ending point */
-			EndVec.NormalizeInPlace();
-			EndVec = StartVec + EndVec * MAX_TRACE_LENGTH;
-			break;
-		}
-	}
-
-	trace_t *tr = new trace_t;
-	ray.Init(StartVec, EndVec);
-	enginetrace->TraceRay(ray, params[3], &g_HitAllFilter, tr);
-
-	HandleError herr;
-	Handle_t hndl;
-	if (!(hndl=handlesys->CreateHandle(g_TraceHandle, tr, pContext->GetIdentity(), myself->GetIdentity(), &herr)))
-	{
-		delete tr;
-		return pContext->ThrowNativeError("Unable to create a new trace handle (error %d)", herr);
-	}
-
-	return hndl;
-}
-
-static cell_t smn_TRTraceRayFilterEx(IPluginContext *pContext, const cell_t *params)
-{
-	IPluginFunction *pFunc;
-	cell_t *startaddr, *endaddr;
-	cell_t data;
-
-	pFunc = pContext->GetFunctionById(params[5]);
-	if (!pFunc)
-	{
-		return pContext->ThrowNativeError("Invalid function id (%X)", params[5]);
-	}
-	pContext->LocalToPhysAddr(params[1], &startaddr);
-	pContext->LocalToPhysAddr(params[2], &endaddr);
-
-	Vector StartVec, EndVec;
-	CSMTraceFilter smfilter;
-	Ray_t ray;
-
-	if (params[0] >= 6)
-	{
-		data = params[6];
-	}
-	else
-	{
-		data = 0;
-	}
-
-	smfilter.SetFunctionPtr(pFunc, data);
-	StartVec.Init(sp_ctof(startaddr[0]), sp_ctof(startaddr[1]), sp_ctof(startaddr[2]));
-
-	switch (params[4])
-	{
-	case RayType_EndPoint:
-		{
-			EndVec.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
-			break;
-		}
-	case RayType_Infinite:
-		{
-			QAngle DirAngles;
-			DirAngles.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
-			AngleVectors(DirAngles, &EndVec);
-
-			/* Make it unitary and get the ending point */
-			EndVec.NormalizeInPlace();
-			EndVec = StartVec + EndVec * MAX_TRACE_LENGTH;
-			break;
-		}
-	}
-
-	trace_t *tr = new trace_t;
-	ray.Init(StartVec, EndVec);
-	enginetrace->TraceRay(ray, params[3], &smfilter, tr);
-
-	HandleError herr;
-	Handle_t hndl;
-	if (!(hndl=handlesys->CreateHandle(g_TraceHandle, tr, pContext->GetIdentity(), myself->GetIdentity(), &herr)))
-	{
-		delete tr;
-		return pContext->ThrowNativeError("Unable to create a new trace handle (error %d)", herr);
-	}
-
-	return hndl;
-}
-
-static cell_t smn_TRGetFraction(IPluginContext *pContext, const cell_t *params)
-{
-	trace_t *tr;
-	HandleError err;
-	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
-
-	if (params[1] == BAD_HANDLE)
-	{
-		tr = &g_Trace;
-	} else if ((err = handlesys->ReadHandle(params[1], g_TraceHandle, &sec, (void **)&tr)) != HandleError_None) {
-		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[1], err);
-	}
-
-	return sp_ftoc(tr->fraction);
-}
-
-static cell_t smn_TRGetEndPosition(IPluginContext *pContext, const cell_t *params)
-{
-	trace_t *tr;
-	HandleError err;
-	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
-
-	if (params[2] == BAD_HANDLE)
-	{
-		tr = &g_Trace;
-	} else if ((err = handlesys->ReadHandle(params[2], g_TraceHandle, &sec, (void **)&tr)) != HandleError_None) {
-		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[2], err);
-	}
-
-	cell_t *addr;
-	pContext->LocalToPhysAddr(params[1], &addr);
-
-	addr[0] = sp_ftoc(tr->endpos.x);
-	addr[1] = sp_ftoc(tr->endpos.y);
-	addr[2] = sp_ftoc(tr->endpos.z);
-
-	return 1;
-}
-
-static cell_t smn_TRDidHit(IPluginContext *pContext, const cell_t *params)
-{
-	trace_t *tr;
-	HandleError err;
-	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
-
-	if (params[1] == BAD_HANDLE)
-	{
-		tr = &g_Trace;
-	} else if ((err = handlesys->ReadHandle(params[1], g_TraceHandle, &sec, (void **)&tr)) != HandleError_None) {
-		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[1], err);
-	}
-
-	return tr->DidHit() ? 1 : 0;
-}
-
-static cell_t smn_TRGetHitGroup(IPluginContext *pContext, const cell_t *params)
-{
-	trace_t *tr;
-	HandleError err;
-	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
-
-	if (params[1] == BAD_HANDLE)
-	{
-		tr = &g_Trace;
-	} else if ((err = handlesys->ReadHandle(params[1], g_TraceHandle, &sec, (void **)&tr)) != HandleError_None) {
-		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[1], err);
-	}
-
-	return tr->hitgroup;
-}
-
-static cell_t smn_TRGetEntityIndex(IPluginContext *pContext, const cell_t *params)
-{
-	trace_t *tr;
-	HandleError err;
-	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
-
-	if (params[1] == BAD_HANDLE)
-	{
-		tr = &g_Trace;
-	} else if ((err = handlesys->ReadHandle(params[1], g_TraceHandle, &sec, (void **)&tr)) != HandleError_None) {
-		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[1], err);
-	}
-
-	edict_t *pEdict = gameents->BaseEntityToEdict(tr->m_pEnt);
-	return engine->IndexOfEdict(pEdict);
-}
-
-static cell_t smn_TRGetPointContents(IPluginContext *pContext, const cell_t *params)
-{
-	cell_t *vec, *ent;
-	IHandleEntity *hentity;
-	Vector pos;
-	int mask;
-
-	pContext->LocalToPhysAddr(params[1], &vec);
-	pContext->LocalToPhysAddr(params[2], &ent);
-
-	pos.x = sp_ctof(vec[0]);
-	pos.y = sp_ctof(vec[1]);
-	pos.z = sp_ctof(vec[2]);
-
-	if (*ent == -1)
-	{
-		mask = enginetrace->GetPointContents(pos);
-	} else {
-		mask = enginetrace->GetPointContents(pos, &hentity);
-		edict_t *pEdict = gameents->BaseEntityToEdict(reinterpret_cast<CBaseEntity *>(hentity));
-		*ent = engine->IndexOfEdict(pEdict);
-	}
-
-	return mask;
-}
-
-static cell_t smn_TRGetPointContentsEnt(IPluginContext *pContext, const cell_t *params)
-{
-	edict_t *pEdict = engine->PEntityOfEntIndex(params[1]);
-	if (!pEdict || pEdict->IsFree())
-	{
-		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
-	}
-
-	cell_t *addr;
-	Vector pos;
-
-	pContext->LocalToPhysAddr(params[2], &addr);
-
-	pos.x = sp_ctof(addr[0]);
-	pos.y = sp_ctof(addr[1]);
-	pos.z = sp_ctof(addr[2]);
-
-	return enginetrace->GetPointContents_Collideable(pEdict->GetCollideable(), pos);
-}
-
-sp_nativeinfo_t g_TRNatives[] = 
-{
-	{"TR_TraceRay",				smn_TRTraceRay},
-	{"TR_TraceRayEx",			smn_TRTraceRayEx},
-	{"TR_GetFraction",			smn_TRGetFraction},
-	{"TR_GetEndPosition",		smn_TRGetEndPosition},
-	{"TR_GetEntityIndex",		smn_TRGetEntityIndex},
-	{"TR_DidHit",				smn_TRDidHit},
-	{"TR_GetHitGroup",			smn_TRGetHitGroup},
-	{"TR_GetPointContents",		smn_TRGetPointContents},
-	{"TR_GetPointContentsEnt",	smn_TRGetPointContentsEnt},
-	{"TR_TraceRayFilter",		smn_TRTraceRayFilter},
-	{"TR_TraceRayFilterEx",		smn_TRTraceRayFilterEx},
-	{NULL,						NULL}
-};
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod SDKTools Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include "extension.h"
+#include <worldsize.h>
+
+class CSMTraceFilter : public CTraceFilter
+{
+public:
+	bool ShouldHitEntity(IHandleEntity *pEntity, int contentsMask)
+	{
+		cell_t res = 1;
+		edict_t *pEdict = gameents->BaseEntityToEdict(reinterpret_cast<CBaseEntity *>(pEntity));
+		m_pFunc->PushCell(engine->IndexOfEdict(pEdict));
+		m_pFunc->PushCell(contentsMask);
+		m_pFunc->PushCell(m_Data);
+		m_pFunc->Execute(&res);
+
+		return (res) ? true : false;
+	}
+	void SetFunctionPtr(IPluginFunction *pFunc, cell_t data)
+	{
+		m_pFunc = pFunc;
+		m_Data = data;
+	}
+private:
+	IPluginFunction *m_pFunc;
+	cell_t m_Data;
+};
+
+/* Used for the global trace version */
+Ray_t g_Ray;
+trace_t g_Trace;
+Vector g_StartVec;
+Vector g_EndVec;
+QAngle g_DirAngles;
+CTraceFilterHitAll g_HitAllFilter;
+CSMTraceFilter g_SMTraceFilter;
+
+enum
+{
+	RayType_EndPoint,
+	RayType_Infinite
+};
+
+static cell_t smn_TRTraceRay(IPluginContext *pContext, const cell_t *params)
+{
+	cell_t *startaddr, *endaddr;
+	pContext->LocalToPhysAddr(params[1], &startaddr);
+	pContext->LocalToPhysAddr(params[2], &endaddr);
+
+	g_StartVec.Init(sp_ctof(startaddr[0]), sp_ctof(startaddr[1]), sp_ctof(startaddr[2]));
+
+	switch (params[4])
+	{
+	case RayType_EndPoint:
+		{
+			g_EndVec.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
+			break;
+		}
+	case RayType_Infinite:
+		{
+			g_DirAngles.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
+			AngleVectors(g_DirAngles, &g_EndVec);
+
+			/* Make it unitary and get the ending point */
+			g_EndVec.NormalizeInPlace();
+			g_EndVec = g_StartVec + g_EndVec * MAX_TRACE_LENGTH;
+			break;
+		}
+	}
+
+	g_Ray.Init(g_StartVec, g_EndVec);
+	enginetrace->TraceRay(g_Ray, params[3], &g_HitAllFilter, &g_Trace);
+
+	return 1;
+}
+
+static cell_t smn_TRTraceRayFilter(IPluginContext *pContext, const cell_t *params)
+{
+	cell_t *startaddr, *endaddr;
+	IPluginFunction *pFunc;
+	cell_t data;
+
+	pFunc = pContext->GetFunctionById(params[5]);
+	if (!pFunc)
+	{
+		return pContext->ThrowNativeError("Invalid function id (%X)", params[5]);
+	}
+
+	if (params[0] >= 6)
+	{
+		data = params[6];
+	}
+	else
+	{
+		data = 0;
+	}
+
+	g_SMTraceFilter.SetFunctionPtr(pFunc, data);
+	pContext->LocalToPhysAddr(params[1], &startaddr);
+	pContext->LocalToPhysAddr(params[2], &endaddr);
+
+	g_StartVec.Init(sp_ctof(startaddr[0]), sp_ctof(startaddr[1]), sp_ctof(startaddr[2]));
+
+	switch (params[4])
+	{
+	case RayType_EndPoint:
+		{
+			g_EndVec.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
+			break;
+		}
+	case RayType_Infinite:
+		{
+			g_DirAngles.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
+			AngleVectors(g_DirAngles, &g_EndVec);
+
+			/* Make it unitary and get the ending point */
+			g_EndVec.NormalizeInPlace();
+			g_EndVec = g_StartVec + g_EndVec * MAX_TRACE_LENGTH;
+			break;
+		}
+	}
+
+	g_Ray.Init(g_StartVec, g_EndVec);
+	enginetrace->TraceRay(g_Ray, params[3], &g_SMTraceFilter, &g_Trace);
+
+	return 1;
+}
+
+static cell_t smn_TRTraceRayEx(IPluginContext *pContext, const cell_t *params)
+{
+	cell_t *startaddr, *endaddr;
+	pContext->LocalToPhysAddr(params[1], &startaddr);
+	pContext->LocalToPhysAddr(params[2], &endaddr);
+
+	Vector StartVec, EndVec;
+	Ray_t ray;
+
+	StartVec.Init(sp_ctof(startaddr[0]), sp_ctof(startaddr[1]), sp_ctof(startaddr[2]));
+
+	switch (params[4])
+	{
+	case RayType_EndPoint:
+		{
+			EndVec.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
+			break;
+		}
+	case RayType_Infinite:
+		{
+			QAngle DirAngles;
+			DirAngles.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
+			AngleVectors(DirAngles, &EndVec);
+
+			/* Make it unitary and get the ending point */
+			EndVec.NormalizeInPlace();
+			EndVec = StartVec + EndVec * MAX_TRACE_LENGTH;
+			break;
+		}
+	}
+
+	trace_t *tr = new trace_t;
+	ray.Init(StartVec, EndVec);
+	enginetrace->TraceRay(ray, params[3], &g_HitAllFilter, tr);
+
+	HandleError herr;
+	Handle_t hndl;
+	if (!(hndl=handlesys->CreateHandle(g_TraceHandle, tr, pContext->GetIdentity(), myself->GetIdentity(), &herr)))
+	{
+		delete tr;
+		return pContext->ThrowNativeError("Unable to create a new trace handle (error %d)", herr);
+	}
+
+	return hndl;
+}
+
+static cell_t smn_TRTraceRayFilterEx(IPluginContext *pContext, const cell_t *params)
+{
+	IPluginFunction *pFunc;
+	cell_t *startaddr, *endaddr;
+	cell_t data;
+
+	pFunc = pContext->GetFunctionById(params[5]);
+	if (!pFunc)
+	{
+		return pContext->ThrowNativeError("Invalid function id (%X)", params[5]);
+	}
+	pContext->LocalToPhysAddr(params[1], &startaddr);
+	pContext->LocalToPhysAddr(params[2], &endaddr);
+
+	Vector StartVec, EndVec;
+	CSMTraceFilter smfilter;
+	Ray_t ray;
+
+	if (params[0] >= 6)
+	{
+		data = params[6];
+	}
+	else
+	{
+		data = 0;
+	}
+
+	smfilter.SetFunctionPtr(pFunc, data);
+	StartVec.Init(sp_ctof(startaddr[0]), sp_ctof(startaddr[1]), sp_ctof(startaddr[2]));
+
+	switch (params[4])
+	{
+	case RayType_EndPoint:
+		{
+			EndVec.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
+			break;
+		}
+	case RayType_Infinite:
+		{
+			QAngle DirAngles;
+			DirAngles.Init(sp_ctof(endaddr[0]), sp_ctof(endaddr[1]), sp_ctof(endaddr[2]));
+			AngleVectors(DirAngles, &EndVec);
+
+			/* Make it unitary and get the ending point */
+			EndVec.NormalizeInPlace();
+			EndVec = StartVec + EndVec * MAX_TRACE_LENGTH;
+			break;
+		}
+	}
+
+	trace_t *tr = new trace_t;
+	ray.Init(StartVec, EndVec);
+	enginetrace->TraceRay(ray, params[3], &smfilter, tr);
+
+	HandleError herr;
+	Handle_t hndl;
+	if (!(hndl=handlesys->CreateHandle(g_TraceHandle, tr, pContext->GetIdentity(), myself->GetIdentity(), &herr)))
+	{
+		delete tr;
+		return pContext->ThrowNativeError("Unable to create a new trace handle (error %d)", herr);
+	}
+
+	return hndl;
+}
+
+static cell_t smn_TRGetFraction(IPluginContext *pContext, const cell_t *params)
+{
+	trace_t *tr;
+	HandleError err;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if (params[1] == BAD_HANDLE)
+	{
+		tr = &g_Trace;
+	} else if ((err = handlesys->ReadHandle(params[1], g_TraceHandle, &sec, (void **)&tr)) != HandleError_None) {
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[1], err);
+	}
+
+	return sp_ftoc(tr->fraction);
+}
+
+static cell_t smn_TRGetPlaneNormal(IPluginContext *pContext, const cell_t *params)
+{
+	trace_t *tr;
+	HandleError err;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if (params[1] == BAD_HANDLE)
+	{
+		tr = &g_Trace;
+	} else if ((err = handlesys->ReadHandle(params[1], g_TraceHandle, &sec, (void **)&tr)) != HandleError_None) {
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[1], err);
+	}
+
+	Vector *normal = &tr->plane.normal;
+
+	cell_t *r;
+	pContext->LocalToPhysAddr(params[2], &r);
+	r[0] = sp_ftoc(normal->x);
+	r[1] = sp_ftoc(normal->y);
+	r[2] = sp_ftoc(normal->z);
+
+	return 1;
+}
+
+
+static cell_t smn_TRGetEndPosition(IPluginContext *pContext, const cell_t *params)
+{
+	trace_t *tr;
+	HandleError err;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if (params[2] == BAD_HANDLE)
+	{
+		tr = &g_Trace;
+	} else if ((err = handlesys->ReadHandle(params[2], g_TraceHandle, &sec, (void **)&tr)) != HandleError_None) {
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[2], err);
+	}
+
+	cell_t *addr;
+	pContext->LocalToPhysAddr(params[1], &addr);
+
+	addr[0] = sp_ftoc(tr->endpos.x);
+	addr[1] = sp_ftoc(tr->endpos.y);
+	addr[2] = sp_ftoc(tr->endpos.z);
+
+	return 1;
+}
+
+static cell_t smn_TRDidHit(IPluginContext *pContext, const cell_t *params)
+{
+	trace_t *tr;
+	HandleError err;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if (params[1] == BAD_HANDLE)
+	{
+		tr = &g_Trace;
+	} else if ((err = handlesys->ReadHandle(params[1], g_TraceHandle, &sec, (void **)&tr)) != HandleError_None) {
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[1], err);
+	}
+
+	return tr->DidHit() ? 1 : 0;
+}
+
+static cell_t smn_TRGetHitGroup(IPluginContext *pContext, const cell_t *params)
+{
+	trace_t *tr;
+	HandleError err;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if (params[1] == BAD_HANDLE)
+	{
+		tr = &g_Trace;
+	} else if ((err = handlesys->ReadHandle(params[1], g_TraceHandle, &sec, (void **)&tr)) != HandleError_None) {
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[1], err);
+	}
+
+	return tr->hitgroup;
+}
+
+static cell_t smn_TRGetEntityIndex(IPluginContext *pContext, const cell_t *params)
+{
+	trace_t *tr;
+	HandleError err;
+	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
+
+	if (params[1] == BAD_HANDLE)
+	{
+		tr = &g_Trace;
+	} else if ((err = handlesys->ReadHandle(params[1], g_TraceHandle, &sec, (void **)&tr)) != HandleError_None) {
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[1], err);
+	}
+
+	edict_t *pEdict = gameents->BaseEntityToEdict(tr->m_pEnt);
+	return engine->IndexOfEdict(pEdict);
+}
+
+static cell_t smn_TRGetPointContents(IPluginContext *pContext, const cell_t *params)
+{
+	cell_t *vec, *ent;
+	IHandleEntity *hentity;
+	Vector pos;
+	int mask;
+
+	pContext->LocalToPhysAddr(params[1], &vec);
+	pContext->LocalToPhysAddr(params[2], &ent);
+
+	pos.x = sp_ctof(vec[0]);
+	pos.y = sp_ctof(vec[1]);
+	pos.z = sp_ctof(vec[2]);
+
+	if (*ent == -1)
+	{
+		mask = enginetrace->GetPointContents(pos);
+	} else {
+		mask = enginetrace->GetPointContents(pos, &hentity);
+		edict_t *pEdict = gameents->BaseEntityToEdict(reinterpret_cast<CBaseEntity *>(hentity));
+		*ent = engine->IndexOfEdict(pEdict);
+	}
+
+	return mask;
+}
+
+static cell_t smn_TRGetPointContentsEnt(IPluginContext *pContext, const cell_t *params)
+{
+	edict_t *pEdict = engine->PEntityOfEntIndex(params[1]);
+	if (!pEdict || pEdict->IsFree())
+	{
+		return pContext->ThrowNativeError("Entity %d is invalid", params[1]);
+	}
+
+	cell_t *addr;
+	Vector pos;
+
+	pContext->LocalToPhysAddr(params[2], &addr);
+
+	pos.x = sp_ctof(addr[0]);
+	pos.y = sp_ctof(addr[1]);
+	pos.z = sp_ctof(addr[2]);
+
+	return enginetrace->GetPointContents_Collideable(pEdict->GetCollideable(), pos);
+}
+
+sp_nativeinfo_t g_TRNatives[] = 
+{
+	{"TR_TraceRay",				smn_TRTraceRay},
+	{"TR_TraceRayEx",			smn_TRTraceRayEx},
+	{"TR_GetFraction",			smn_TRGetFraction},
+	{"TR_GetEndPosition",		smn_TRGetEndPosition},
+	{"TR_GetEntityIndex",		smn_TRGetEntityIndex},
+	{"TR_DidHit",				smn_TRDidHit},
+	{"TR_GetHitGroup",			smn_TRGetHitGroup},
+	{"TR_GetPointContents",		smn_TRGetPointContents},
+	{"TR_GetPointContentsEnt",	smn_TRGetPointContentsEnt},
+	{"TR_TraceRayFilter",		smn_TRTraceRayFilter},
+	{"TR_TraceRayFilterEx",		smn_TRTraceRayFilterEx},
+	{"TR_GetPlaneNormal",		smn_TRGetPlaneNormal},
+	{NULL,						NULL}
+};
diff --git a/plugins/include/sdktools_trace.inc b/plugins/include/sdktools_trace.inc
index df651afb..b9a0b82b 100644
--- a/plugins/include/sdktools_trace.inc
+++ b/plugins/include/sdktools_trace.inc
@@ -1,261 +1,271 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
- * =============================================================================
- *
- * This file is part of the SourceMod/SourcePawn SDK.
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation.  You must obey the GNU General Public License in
- * all respects for all other code used.  Additionally, AlliedModders LLC grants
- * this exception to all derivative works.  AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or <http://www.sourcemod.net/license.php>.
- *
- * Version: $Id$
- */
-
-#if defined _sdktools_trace_included
- #endinput
-#endif
-#define _sdktools_trace_included
-
-#define	CONTENTS_EMPTY			0		/**< No contents. */
-#define	CONTENTS_SOLID			0x1		/**< an eye is never valid in a solid . */
-#define	CONTENTS_WINDOW			0x2		/**< translucent, but not watery (glass). */
-#define	CONTENTS_AUX			0x4
-#define	CONTENTS_GRATE			0x8		/**< alpha-tested "grate" textures.  Bullets/sight pass through, but solids don't. */
-#define	CONTENTS_SLIME			0x10
-#define	CONTENTS_WATER			0x20
-#define	CONTENTS_MIST			0x40
-#define CONTENTS_OPAQUE			0x80		/**< things that cannot be seen through (may be non-solid though). */
-#define	LAST_VISIBLE_CONTENTS	0x80
-#define ALL_VISIBLE_CONTENTS 	(LAST_VISIBLE_CONTENTS | (LAST_VISIBLE_CONTENTS-1))
-#define CONTENTS_TESTFOGVOLUME	0x100
-#define CONTENTS_UNUSED5		0x200
-#define CONTENTS_UNUSED6		0x4000
-#define CONTENTS_TEAM1			0x800		/**< per team contents used to differentiate collisions. */
-#define CONTENTS_TEAM2			0x1000		/**< between players and objects on different teams. */
-#define CONTENTS_IGNORE_NODRAW_OPAQUE	0x2000		/**< ignore CONTENTS_OPAQUE on surfaces that have SURF_NODRAW. */
-#define CONTENTS_MOVEABLE		0x4000		/**< hits entities which are MOVETYPE_PUSH (doors, plats, etc) */
-#define	CONTENTS_AREAPORTAL		0x8000		/**< remaining contents are non-visible, and don't eat brushes. */
-#define	CONTENTS_PLAYERCLIP		0x10000
-#define	CONTENTS_MONSTERCLIP	0x20000
-
-/**
- * @section currents can be added to any other contents, and may be mixed
- */
-#define	CONTENTS_CURRENT_0		0x40000
-#define	CONTENTS_CURRENT_90		0x80000
-#define	CONTENTS_CURRENT_180	0x100000
-#define	CONTENTS_CURRENT_270	0x200000
-#define	CONTENTS_CURRENT_UP		0x400000
-#define	CONTENTS_CURRENT_DOWN	0x800000
-
-/**
- * @endsection
- */
-
-#define	CONTENTS_ORIGIN			0x1000000	/**< removed before bsping an entity. */
-#define	CONTENTS_MONSTER		0x2000000	/**< should never be on a brush, only in game. */
-#define	CONTENTS_DEBRIS			0x4000000
-#define	CONTENTS_DETAIL			0x8000000	/**< brushes to be added after vis leafs. */
-#define	CONTENTS_TRANSLUCENT	0x10000000	/**< auto set if any surface has trans. */
-#define	CONTENTS_LADDER			0x20000000
-#define CONTENTS_HITBOX			0x40000000	/**< use accurate hitboxes on trace. */
-
-/**
- * @section Trace masks.
- */
-#define	MASK_ALL				(0xFFFFFFFF)
-#define	MASK_SOLID				(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) 			/**< everything that is normally solid */
-#define	MASK_PLAYERSOLID		(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_PLAYERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) 	/**< everything that blocks player movement */
-#define	MASK_NPCSOLID			(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) /**< blocks npc movement */
-#define	MASK_WATER				(CONTENTS_WATER|CONTENTS_MOVEABLE|CONTENTS_SLIME) 							/**< water physics in these contents */
-#define	MASK_OPAQUE				(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_OPAQUE) 							/**< everything that blocks line of sight for AI, lighting, etc */
-#define MASK_OPAQUE_AND_NPCS	(MASK_OPAQUE|CONTENTS_MONSTER)										/**< everything that blocks line of sight for AI, lighting, etc, but with monsters added. */
-#define	MASK_VISIBLE			(MASK_OPAQUE|CONTENTS_IGNORE_NODRAW_OPAQUE) 								/**< everything that blocks line of sight for players */
-#define MASK_VISIBLE_AND_NPCS	(MASK_OPAQUE_AND_NPCS|CONTENTS_IGNORE_NODRAW_OPAQUE) 							/**< everything that blocks line of sight for players, but with monsters added. */
-#define	MASK_SHOT				(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_HITBOX) 	/**< bullets see these as solid */
-#define MASK_SHOT_HULL			(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_GRATE) 	/**< non-raycasted weapons see this as solid (includes grates) */
-#define MASK_SHOT_PORTAL		(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW) 							/**< hits solids (not grates) and passes through everything else */
-#define MASK_SOLID_BRUSHONLY	(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_GRATE) 					/**< everything normally solid, except monsters (world+brush only) */
-#define MASK_PLAYERSOLID_BRUSHONLY	(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_PLAYERCLIP|CONTENTS_GRATE) 			/**< everything normally solid for player movement, except monsters (world+brush only) */
-#define MASK_NPCSOLID_BRUSHONLY	(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) 			/**< everything normally solid for npc movement, except monsters (world+brush only) */
-#define MASK_NPCWORLDSTATIC		(CONTENTS_SOLID|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) 					/**< just the world, used for route rebuilding */
-#define MASK_SPLITAREAPORTAL	(CONTENTS_WATER|CONTENTS_SLIME) 									/**< These are things that can split areaportals */
-
-/**
- * @endsection
- */
-
-enum RayType
-{
-	RayType_EndPoint,	/**< The trace ray will go from the start position to the end position. */
-	RayType_Infinite	/**< The trace ray will go from the start position to infinity using a direction vector. */
-};
-
-funcenum TraceEntityFilter
-{
-	/**
-	 * Called on entity filtering.
-	 *
-	 * @param entity		Entity index.
- 	 * @param contentsMask	Contents Mask.
- 	 * @return				True to allow the current entity to be hit, otherwise false.
- 	 */
-	bool:public(entity, contentsMask),
-	
-	/**
-	 * Called on entity filtering.
-	 *
-	 * @param entity		Entity index.
- 	 * @param contentsMask	Contents Mask.
- 	 * @param data			Data value, if used.
- 	 * @return				True to allow the current entity to be hit, otherwise false.
- 	 */
-	bool:public(entity, contentsMask, any:data),
-};
-
-/**
- * Get the contents mask and the entity index at the given position.
- *
- * @param pos			World position to test.
- * @param entindex		Entity index found at the given position (by reference).
- * @return				Contents mask.
- */
-native TR_GetPointContents(const Float:pos[3], &entindex=-1);
-
-/**
- * Get the point contents testing only the given entity index.
- *
- * @param entindex		Entity index to test.
- * @param pos			World position.
- * @return				Contents mask.
- */
-native TR_GetPointContentsEnt(entindex, const Float:pos[3]);
-
-/**
- * Starts up a new trace ray using a global trace result.
- *
- * @param pos			Starting position of the ray.
- * @param vec			Depending on RayType, it will be used as the ending point, or the direction angle.
- * @param flags			Trace flags.
- * @param rtype			Method to calculate the ray direction.
- * @noreturn
- */
-native TR_TraceRay(const Float:pos[3], const Float:vec[3], flags, RayType:rtype);
-
-/**
- * Starts up a new trace ray using a global trace result and a customized trace ray filter.
- *
- * Calling TR_TraceRayFilter or TR_TraceRayFilterEx from inside a filter function is 
- * currently not allowed and may not work.
- *
- * @param pos			Starting position of the ray.
- * @param vec			Depending on RayType, it will be used as the ending point, or the direction angle.
- * @param flags			Trace flags.
- * @param rtype			Method to calculate the ray direction.
- * @param filter		Function to use as a filter.
- * @param data			Arbitrary data value to pass through to the filter function.
- * @noreturn
- */
-native TR_TraceRayFilter(const Float:pos[3],
-						 const Float:vec[3],
-						 flags,
-						 RayType:rtype,
-						 TraceEntityFilter:filter,
-						 any:data=0);
-
-/**
- * Starts up a new trace ray using a new trace result.
- *
- * @param pos			Starting position of the ray.
- * @param vec			Depending on RayType, it will be used as the ending point, or the direction angle.
- * @param flags			Trace flags.
- * @param rtype			Method to calculate the ray direction.
- * @return				Ray trace handle, which must be closed via CloseHandle().
- */
-native Handle:TR_TraceRayEx(const Float:pos[3], const Float:vec[3], flags, RayType:rtype);
-
-/**
- * Starts up a new trace ray using a new trace result and a customized trace ray filter.
- *
- * Calling TR_TraceRayFilter or TR_TraceRayFilterEx from inside a filter function is 
- * currently not allowed and may not work.
- *
- * @param pos			Starting position of the ray.
- * @param vec			Depending on RayType, it will be used as the ending point, or the direction angle.
- * @param flags			Trace flags.
- * @param rtype			Method to calculate the ray direction.
- * @param filter		Function to use as a filter.
- * @param data			Arbitrary data value to pass through to the filter function.
- * @return				Ray trace handle, which must be closed via CloseHandle().
- */
-native Handle:TR_TraceRayFilterEx(const Float:pos[3], 
-								  const Float:vec[3],
-								  flags, 
-								  RayType:rtype, 
-								  TraceEntityFilter:filter,
-								  any:data=0);
-
-/**
- * Returns the time fraction from a trace result (1.0 means no collision).
- *
- * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
- * @return				Time fraction value of the trace.
- * @error				Invalid Handle.
- */
-native Float:TR_GetFraction(Handle:hndl=INVALID_HANDLE);
-
-/**
- * Returns the collision position of a trace result.
- *
- * @param pos			Vector buffer to store data in.
- * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
- * @noreturn
- * @error				Invalid Handle.
- */
-native TR_GetEndPosition(Float:pos[3], Handle:hndl=INVALID_HANDLE);
-
-/**
- * Returns the entity index that collided with the trace.
- *
- * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
- * @return				Entity index or -1 for no collision.
- * @error				Invalid Handle.
- */
-native TR_GetEntityIndex(Handle:hndl=INVALID_HANDLE);
-
-/**
- * Returns if there was any kind of collision along the trace ray.
- *
- * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
- * @return				True if any collision found, otherwise false.
- * @error				Invalid Handle.
- */
-native bool:TR_DidHit(Handle:hndl=INVALID_HANDLE);
-
-/**
- * Returns in which body hit group the trace collided if any.
- *
- * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
- * @return				Body hit group.
- * @error				Invalid Handle.
- */
-native TR_GetHitGroup(Handle:hndl=INVALID_HANDLE);
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This file is part of the SourceMod/SourcePawn SDK.
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#if defined _sdktools_trace_included
+ #endinput
+#endif
+#define _sdktools_trace_included
+
+#define	CONTENTS_EMPTY			0		/**< No contents. */
+#define	CONTENTS_SOLID			0x1		/**< an eye is never valid in a solid . */
+#define	CONTENTS_WINDOW			0x2		/**< translucent, but not watery (glass). */
+#define	CONTENTS_AUX			0x4
+#define	CONTENTS_GRATE			0x8		/**< alpha-tested "grate" textures.  Bullets/sight pass through, but solids don't. */
+#define	CONTENTS_SLIME			0x10
+#define	CONTENTS_WATER			0x20
+#define	CONTENTS_MIST			0x40
+#define CONTENTS_OPAQUE			0x80		/**< things that cannot be seen through (may be non-solid though). */
+#define	LAST_VISIBLE_CONTENTS	0x80
+#define ALL_VISIBLE_CONTENTS 	(LAST_VISIBLE_CONTENTS | (LAST_VISIBLE_CONTENTS-1))
+#define CONTENTS_TESTFOGVOLUME	0x100
+#define CONTENTS_UNUSED5		0x200
+#define CONTENTS_UNUSED6		0x4000
+#define CONTENTS_TEAM1			0x800		/**< per team contents used to differentiate collisions. */
+#define CONTENTS_TEAM2			0x1000		/**< between players and objects on different teams. */
+#define CONTENTS_IGNORE_NODRAW_OPAQUE	0x2000		/**< ignore CONTENTS_OPAQUE on surfaces that have SURF_NODRAW. */
+#define CONTENTS_MOVEABLE		0x4000		/**< hits entities which are MOVETYPE_PUSH (doors, plats, etc) */
+#define	CONTENTS_AREAPORTAL		0x8000		/**< remaining contents are non-visible, and don't eat brushes. */
+#define	CONTENTS_PLAYERCLIP		0x10000
+#define	CONTENTS_MONSTERCLIP	0x20000
+
+/**
+ * @section currents can be added to any other contents, and may be mixed
+ */
+#define	CONTENTS_CURRENT_0		0x40000
+#define	CONTENTS_CURRENT_90		0x80000
+#define	CONTENTS_CURRENT_180	0x100000
+#define	CONTENTS_CURRENT_270	0x200000
+#define	CONTENTS_CURRENT_UP		0x400000
+#define	CONTENTS_CURRENT_DOWN	0x800000
+
+/**
+ * @endsection
+ */
+
+#define	CONTENTS_ORIGIN			0x1000000	/**< removed before bsping an entity. */
+#define	CONTENTS_MONSTER		0x2000000	/**< should never be on a brush, only in game. */
+#define	CONTENTS_DEBRIS			0x4000000
+#define	CONTENTS_DETAIL			0x8000000	/**< brushes to be added after vis leafs. */
+#define	CONTENTS_TRANSLUCENT	0x10000000	/**< auto set if any surface has trans. */
+#define	CONTENTS_LADDER			0x20000000
+#define CONTENTS_HITBOX			0x40000000	/**< use accurate hitboxes on trace. */
+
+/**
+ * @section Trace masks.
+ */
+#define	MASK_ALL				(0xFFFFFFFF)
+#define	MASK_SOLID				(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) 			/**< everything that is normally solid */
+#define	MASK_PLAYERSOLID		(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_PLAYERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) 	/**< everything that blocks player movement */
+#define	MASK_NPCSOLID			(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) /**< blocks npc movement */
+#define	MASK_WATER				(CONTENTS_WATER|CONTENTS_MOVEABLE|CONTENTS_SLIME) 							/**< water physics in these contents */
+#define	MASK_OPAQUE				(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_OPAQUE) 							/**< everything that blocks line of sight for AI, lighting, etc */
+#define MASK_OPAQUE_AND_NPCS	(MASK_OPAQUE|CONTENTS_MONSTER)										/**< everything that blocks line of sight for AI, lighting, etc, but with monsters added. */
+#define	MASK_VISIBLE			(MASK_OPAQUE|CONTENTS_IGNORE_NODRAW_OPAQUE) 								/**< everything that blocks line of sight for players */
+#define MASK_VISIBLE_AND_NPCS	(MASK_OPAQUE_AND_NPCS|CONTENTS_IGNORE_NODRAW_OPAQUE) 							/**< everything that blocks line of sight for players, but with monsters added. */
+#define	MASK_SHOT				(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_HITBOX) 	/**< bullets see these as solid */
+#define MASK_SHOT_HULL			(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_GRATE) 	/**< non-raycasted weapons see this as solid (includes grates) */
+#define MASK_SHOT_PORTAL		(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW) 							/**< hits solids (not grates) and passes through everything else */
+#define MASK_SOLID_BRUSHONLY	(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_GRATE) 					/**< everything normally solid, except monsters (world+brush only) */
+#define MASK_PLAYERSOLID_BRUSHONLY	(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_PLAYERCLIP|CONTENTS_GRATE) 			/**< everything normally solid for player movement, except monsters (world+brush only) */
+#define MASK_NPCSOLID_BRUSHONLY	(CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) 			/**< everything normally solid for npc movement, except monsters (world+brush only) */
+#define MASK_NPCWORLDSTATIC		(CONTENTS_SOLID|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) 					/**< just the world, used for route rebuilding */
+#define MASK_SPLITAREAPORTAL	(CONTENTS_WATER|CONTENTS_SLIME) 									/**< These are things that can split areaportals */
+
+/**
+ * @endsection
+ */
+
+enum RayType
+{
+	RayType_EndPoint,	/**< The trace ray will go from the start position to the end position. */
+	RayType_Infinite	/**< The trace ray will go from the start position to infinity using a direction vector. */
+};
+
+funcenum TraceEntityFilter
+{
+	/**
+	 * Called on entity filtering.
+	 *
+	 * @param entity		Entity index.
+ 	 * @param contentsMask	Contents Mask.
+ 	 * @return				True to allow the current entity to be hit, otherwise false.
+ 	 */
+	bool:public(entity, contentsMask),
+	
+	/**
+	 * Called on entity filtering.
+	 *
+	 * @param entity		Entity index.
+ 	 * @param contentsMask	Contents Mask.
+ 	 * @param data			Data value, if used.
+ 	 * @return				True to allow the current entity to be hit, otherwise false.
+ 	 */
+	bool:public(entity, contentsMask, any:data),
+};
+
+/**
+ * Get the contents mask and the entity index at the given position.
+ *
+ * @param pos			World position to test.
+ * @param entindex		Entity index found at the given position (by reference).
+ * @return				Contents mask.
+ */
+native TR_GetPointContents(const Float:pos[3], &entindex=-1);
+
+/**
+ * Get the point contents testing only the given entity index.
+ *
+ * @param entindex		Entity index to test.
+ * @param pos			World position.
+ * @return				Contents mask.
+ */
+native TR_GetPointContentsEnt(entindex, const Float:pos[3]);
+
+/**
+ * Starts up a new trace ray using a global trace result.
+ *
+ * @param pos			Starting position of the ray.
+ * @param vec			Depending on RayType, it will be used as the ending point, or the direction angle.
+ * @param flags			Trace flags.
+ * @param rtype			Method to calculate the ray direction.
+ * @noreturn
+ */
+native TR_TraceRay(const Float:pos[3], const Float:vec[3], flags, RayType:rtype);
+
+/**
+ * Starts up a new trace ray using a global trace result and a customized trace ray filter.
+ *
+ * Calling TR_TraceRayFilter or TR_TraceRayFilterEx from inside a filter function is 
+ * currently not allowed and may not work.
+ *
+ * @param pos			Starting position of the ray.
+ * @param vec			Depending on RayType, it will be used as the ending point, or the direction angle.
+ * @param flags			Trace flags.
+ * @param rtype			Method to calculate the ray direction.
+ * @param filter		Function to use as a filter.
+ * @param data			Arbitrary data value to pass through to the filter function.
+ * @noreturn
+ */
+native TR_TraceRayFilter(const Float:pos[3],
+						 const Float:vec[3],
+						 flags,
+						 RayType:rtype,
+						 TraceEntityFilter:filter,
+						 any:data=0);
+
+/**
+ * Starts up a new trace ray using a new trace result.
+ *
+ * @param pos			Starting position of the ray.
+ * @param vec			Depending on RayType, it will be used as the ending point, or the direction angle.
+ * @param flags			Trace flags.
+ * @param rtype			Method to calculate the ray direction.
+ * @return				Ray trace handle, which must be closed via CloseHandle().
+ */
+native Handle:TR_TraceRayEx(const Float:pos[3], const Float:vec[3], flags, RayType:rtype);
+
+/**
+ * Starts up a new trace ray using a new trace result and a customized trace ray filter.
+ *
+ * Calling TR_TraceRayFilter or TR_TraceRayFilterEx from inside a filter function is 
+ * currently not allowed and may not work.
+ *
+ * @param pos			Starting position of the ray.
+ * @param vec			Depending on RayType, it will be used as the ending point, or the direction angle.
+ * @param flags			Trace flags.
+ * @param rtype			Method to calculate the ray direction.
+ * @param filter		Function to use as a filter.
+ * @param data			Arbitrary data value to pass through to the filter function.
+ * @return				Ray trace handle, which must be closed via CloseHandle().
+ */
+native Handle:TR_TraceRayFilterEx(const Float:pos[3], 
+								  const Float:vec[3],
+								  flags, 
+								  RayType:rtype, 
+								  TraceEntityFilter:filter,
+								  any:data=0);
+
+/**
+ * Returns the time fraction from a trace result (1.0 means no collision).
+ *
+ * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
+ * @return				Time fraction value of the trace.
+ * @error				Invalid Handle.
+ */
+native Float:TR_GetFraction(Handle:hndl=INVALID_HANDLE);
+
+/**
+ * Returns the collision position of a trace result.
+ *
+ * @param pos			Vector buffer to store data in.
+ * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
+ * @noreturn
+ * @error				Invalid Handle.
+ */
+native TR_GetEndPosition(Float:pos[3], Handle:hndl=INVALID_HANDLE);
+
+/**
+ * Returns the entity index that collided with the trace.
+ *
+ * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
+ * @return				Entity index or -1 for no collision.
+ * @error				Invalid Handle.
+ */
+native TR_GetEntityIndex(Handle:hndl=INVALID_HANDLE);
+
+/**
+ * Returns if there was any kind of collision along the trace ray.
+ *
+ * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
+ * @return				True if any collision found, otherwise false.
+ * @error				Invalid Handle.
+ */
+native bool:TR_DidHit(Handle:hndl=INVALID_HANDLE);
+
+/**
+ * Returns in which body hit group the trace collided if any.
+ *
+ * @param hndl			A trace Handle, or INVALID_HANDLE to use a global trace result.
+ * @return				Body hit group.
+ * @error				Invalid Handle.
+ */
+native TR_GetHitGroup(Handle:hndl=INVALID_HANDLE);
+
+/**
+ * Find the normal vector to the collison plane of a trace.
+ *
+ * @param hndl		A trace Handle, or INVALID_HANDLE to use a global trace result.
+ * @param normal	Vector buffer to store the vector normal to the collision plane
+ * @noreturn
+ * @error			Invalid Handle
+ */
+native TR_GetPlaneNormal(Handle:hndl=INVALID_HANDLE, Float:normal[3]);

From a86d6821e319c448d2bae32b5d771c9410bde784 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 23 Jan 2008 17:06:33 +0000
Subject: [PATCH 176/263] fixed improper default parameter

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401866
---
 plugins/include/sdktools_trace.inc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/plugins/include/sdktools_trace.inc b/plugins/include/sdktools_trace.inc
index b9a0b82b..32d9face 100644
--- a/plugins/include/sdktools_trace.inc
+++ b/plugins/include/sdktools_trace.inc
@@ -268,4 +268,5 @@ native TR_GetHitGroup(Handle:hndl=INVALID_HANDLE);
  * @noreturn
  * @error			Invalid Handle
  */
-native TR_GetPlaneNormal(Handle:hndl=INVALID_HANDLE, Float:normal[3]);
+native TR_GetPlaneNormal(Handle:hndl, Float:normal[3]);
+

From a0a916de6efd0eb8b86cf6216a056a02419b7a2d Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Sat, 26 Jan 2008 19:54:15 +0000
Subject: [PATCH 177/263] MapChooser extensions simplied.
 "maxtime/maxround/maxfrag" cvars removed. sm_mapvote_extend now controls the
 number of extensions that will occur. If set to 0, no extensions occur. If
 set to 1, then 1, and set to 2, then 2. The "step" cvars are still used to
 determine how big the extension is.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401867
---
 plugins/mapchooser.sp | 41 ++++++++---------------------------------
 1 file changed, 8 insertions(+), 33 deletions(-)

diff --git a/plugins/mapchooser.sp b/plugins/mapchooser.sp
index 55cea42c..715f01ad 100644
--- a/plugins/mapchooser.sp
+++ b/plugins/mapchooser.sp
@@ -53,11 +53,8 @@ new Handle:g_Cvar_Nextmap = INVALID_HANDLE;
 new Handle:g_Cvar_StartTime = INVALID_HANDLE;
 new Handle:g_Cvar_StartRounds = INVALID_HANDLE;
 new Handle:g_Cvar_StartFrags = INVALID_HANDLE;
-new Handle:g_Cvar_ExtendTimeMax = INVALID_HANDLE;
 new Handle:g_Cvar_ExtendTimeStep = INVALID_HANDLE;
-new Handle:g_Cvar_ExtendRoundMax = INVALID_HANDLE;
 new Handle:g_Cvar_ExtendRoundStep = INVALID_HANDLE;
-new Handle:g_Cvar_ExtendFragMax = INVALID_HANDLE;
 new Handle:g_Cvar_ExtendFragStep = INVALID_HANDLE;
 new Handle:g_Cvar_Mapfile = INVALID_HANDLE;
 new Handle:g_Cvar_ExcludeMaps = INVALID_HANDLE;
@@ -74,6 +71,7 @@ new Handle:g_NextMapList = INVALID_HANDLE;
 new Handle:g_TeamScores = INVALID_HANDLE;
 new Handle:g_VoteMenu = INVALID_HANDLE;
 
+new g_Extends;
 new g_TotalRounds;
 new bool:g_HasVoteStarted;
 new g_mapFileTime;
@@ -92,17 +90,14 @@ public OnPluginStart()
 	g_Cvar_StartTime = CreateConVar("sm_mapvote_start", "3.0", "Specifies when to start the vote based on time remaining.", _, true, 1.0);
 	g_Cvar_StartRounds = CreateConVar("sm_mapvote_startround", "2.0", "Specifies when to start the vote based on rounds remaining.", _, true, 1.0);
 	g_Cvar_StartFrags = CreateConVar("sm_mapvote_startfrags", "5.0", "Specifies when to start the vote base on frags remaining.", _, true, 1.0);
-	g_Cvar_ExtendTimeMax = CreateConVar("sm_extendmap_maxtime", "90", "Specifies the maximum amount of time a map can be extended", _, true, 0.0);
 	g_Cvar_ExtendTimeStep = CreateConVar("sm_extendmap_timestep", "15", "Specifies how much many more minutes each extension makes", _, true, 5.0);
-	g_Cvar_ExtendRoundMax = CreateConVar("sm_extendmap_maxrounds", "30", "Specfies the maximum amount of rounds a map can be extended", _, true, 0.0);
 	g_Cvar_ExtendRoundStep = CreateConVar("sm_extendmap_roundstep", "5", "Specifies how many more rounds each extension makes", _, true, 5.0);
-	g_Cvar_ExtendFragMax = CreateConVar("sm_extendmap_maxfrags", "150", "Specfies the maximum frags allowed that a map can be extended.", _, true, 0.0);
 	g_Cvar_ExtendFragStep = CreateConVar("sm_extendmap_fragstep", "10", "Specifies how many more frags are allowed when map is extended.", _, true, 5.0);	
 	g_Cvar_Mapfile = CreateConVar("sm_mapvote_file", "configs/maps.ini", "Map file to use. (Def sourcemod/configs/maps.ini)");
 	g_Cvar_ExcludeMaps = CreateConVar("sm_mapvote_exclude", "5", "Specifies how many past maps to exclude from the vote.", _, true, 0.0);
 	g_Cvar_IncludeMaps = CreateConVar("sm_mapvote_include", "5", "Specifies how many maps to include in the vote.", _, true, 2.0, true, 6.0);
 	g_Cvar_NoVoteMode = CreateConVar("sm_mapvote_novote", "1", "Specifies whether or not MapChooser should pick a map if no votes are received.", _, true, 0.0, true, 1.0);
-	g_Cvar_Extend = CreateConVar("sm_mapvote_extend", "1", "Specifies whether or not MapChooser will allow the map to be extended.", _, true, 0.0, true, 1.0);
+	g_Cvar_Extend = CreateConVar("sm_mapvote_extend", "0", "Number of extensions allowed each map.", _, true, 0.0);
 
 	RegAdminCmd("sm_mapvote", Command_Mapvote, ADMFLAG_CHANGEMAP, "sm_mapvote - Forces MapChooser to attempt to run a map vote now.");
 
@@ -147,6 +142,8 @@ public OnConfigsExecuted()
 	
 	g_TeamScores = CreateArray(2);
 	g_TotalRounds = 0;
+	
+	g_Extends = 0;
 }
 
 public OnMapEnd()
@@ -334,33 +331,9 @@ InitiateVote()
 		AddMenuItem(g_VoteMenu, map, map);
 	}
 
-	if (GetConVarBool(g_Cvar_Extend))
+	if (GetConVarBool(g_Cvar_Extend) && g_Extends < GetConVarInt(g_Cvar_Extend))
 	{
-		new bool:allowExtend, time;
-		if (GetMapTimeLimit(time) && time > 0 && time < GetConVarInt(g_Cvar_ExtendTimeMax))
-		{
-			allowExtend = true;
-		}
-
-		if (g_Cvar_Winlimit != INVALID_HANDLE && GetConVarInt(g_Cvar_Winlimit) < GetConVarInt(g_Cvar_ExtendRoundMax))
-		{
-			allowExtend = true;
-		}	
-	
-		if (g_Cvar_Maxrounds != INVALID_HANDLE && GetConVarInt(g_Cvar_Maxrounds) < GetConVarInt(g_Cvar_ExtendRoundMax))
-		{
-			allowExtend = true;
-		}
-	
-		if (g_Cvar_Fraglimit != INVALID_HANDLE && GetConVarInt(g_Cvar_Fraglimit) < GetConVarInt(g_Cvar_ExtendFragMax))
-		{
-			allowExtend = true;
-		}
-
-		if (allowExtend)
-		{
-			AddMenuItem(g_VoteMenu, VOTE_EXTEND, "Extend Map");
-		}
+		AddMenuItem(g_VoteMenu, VOTE_EXTEND, "Extend Map");
 	}
 
 	SetMenuExitButton(g_VoteMenu, false);
@@ -445,6 +418,8 @@ public Handler_MapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
 
 			if (strcmp(map, VOTE_EXTEND, false) == 0)
 			{
+				g_Extends++;
+				
 				new time;
 				if (GetMapTimeLimit(time))
 				{

From 363c7821e51a32b38664421f69d0b58e4ac3f73b Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Sun, 27 Jan 2008 16:04:36 +0000
Subject: [PATCH 178/263] File saved wrong? Fixed...

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401868
---
 plugins/mapchooser.sp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/plugins/mapchooser.sp b/plugins/mapchooser.sp
index 715f01ad..df4817ce 100644
--- a/plugins/mapchooser.sp
+++ b/plugins/mapchooser.sp
@@ -423,7 +423,7 @@ public Handler_MapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
 				new time;
 				if (GetMapTimeLimit(time))
 				{
-					if (time > 0 && time < GetConVarInt(g_Cvar_ExtendTimeMax))
+					if (time > 0)
 					{
 						ExtendMapTimeLimit(GetConVarInt(g_Cvar_ExtendTimeStep)*60);						
 					}
@@ -432,7 +432,7 @@ public Handler_MapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
 				if (g_Cvar_Winlimit != INVALID_HANDLE)
 				{
 					new winlimit = GetConVarInt(g_Cvar_Winlimit);
-					if (winlimit && winlimit < GetConVarInt(g_Cvar_ExtendRoundMax))
+					if (winlimit)
 					{
 						SetConVarInt(g_Cvar_Winlimit, winlimit + GetConVarInt(g_Cvar_ExtendRoundStep));
 					}					
@@ -441,7 +441,7 @@ public Handler_MapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
 				if (g_Cvar_Maxrounds != INVALID_HANDLE)
 				{
 					new maxrounds = GetConVarInt(g_Cvar_Maxrounds);
-					if (maxrounds && maxrounds < GetConVarInt(g_Cvar_ExtendRoundMax))
+					if (maxrounds)
 					{
 						SetConVarInt(g_Cvar_Maxrounds, maxrounds + GetConVarInt(g_Cvar_ExtendRoundStep));
 					}
@@ -450,7 +450,7 @@ public Handler_MapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
 				if (g_Cvar_Fraglimit != INVALID_HANDLE)
 				{
 					new fraglimit = GetConVarInt(g_Cvar_Fraglimit);
-					if (fraglimit && fraglimit < GetConVarInt(g_Cvar_ExtendFragMax))
+					if (fraglimit)
 					{
 						SetConVarInt(g_Cvar_Fraglimit, fraglimit + GetConVarInt(g_Cvar_ExtendFragStep));						
 					}

From a6af8e771869532ab8cfcb5978a608675d7a0da8 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 27 Jan 2008 16:24:32 +0000
Subject: [PATCH 179/263] reversed timebomb/fire #error

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401869
---
 plugins/basefuncommands.sp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/basefuncommands.sp b/plugins/basefuncommands.sp
index 7505cf03..376a1c8d 100644
--- a/plugins/basefuncommands.sp
+++ b/plugins/basefuncommands.sp
@@ -51,7 +51,7 @@ public Plugin:myinfo =
 // Set any of these to 0 and recompile to completely disable those commands
 // -------------------------------------------------------------------------------
 #define BEACON		1
-#define TIMEBOMB	1
+#define TIMEBOMB	0
 #define FIRE		1
 #define ICE			1
 #define GRAVITY		1
@@ -68,7 +68,7 @@ public Plugin:myinfo =
  * Fire requires timebomb
  */
 #if TIMEBOMB == 0 && FIRE == 1
-#error "TimeBomb requires Fire"
+#error "FIRE requires TIMEBOMB"
 #endif
 
 new Handle:hTopMenu = INVALID_HANDLE;

From 4ebcb623b40b02515d4cc853806a4e7c33ba1d5e Mon Sep 17 00:00:00 2001
From: Michael McKoy <ferret99gt@gmail.com>
Date: Sun, 27 Jan 2008 16:32:47 +0000
Subject: [PATCH 180/263] Fixed fire.sp cvars that were using timebomb stuff.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401870
---
 plugins/basefuncommands.sp      | 11 ++---------
 plugins/basefuncommands/fire.sp |  4 ++--
 2 files changed, 4 insertions(+), 11 deletions(-)

diff --git a/plugins/basefuncommands.sp b/plugins/basefuncommands.sp
index 376a1c8d..303e6bb4 100644
--- a/plugins/basefuncommands.sp
+++ b/plugins/basefuncommands.sp
@@ -51,9 +51,9 @@ public Plugin:myinfo =
 // Set any of these to 0 and recompile to completely disable those commands
 // -------------------------------------------------------------------------------
 #define BEACON		1
-#define TIMEBOMB	0
+#define TIMEBOMB	1
 #define FIRE		1
-#define ICE			1
+#define ICE		1
 #define GRAVITY		1
 #define BLIND		1
 #define NOCLIP		1
@@ -64,13 +64,6 @@ public Plugin:myinfo =
 #define CASH		1
 // -------------------------------------------------------------------------------
 
-/**
- * Fire requires timebomb
- */
-#if TIMEBOMB == 0 && FIRE == 1
-#error "FIRE requires TIMEBOMB"
-#endif
-
 new Handle:hTopMenu = INVALID_HANDLE;
 
 // Sounds
diff --git a/plugins/basefuncommands/fire.sp b/plugins/basefuncommands/fire.sp
index 90e96c3c..9f0b4c31 100644
--- a/plugins/basefuncommands/fire.sp
+++ b/plugins/basefuncommands/fire.sp
@@ -190,7 +190,7 @@ public Action:Timer_FireBomb(Handle:timer, any:client)
 		
 		if (GetConVarInt(g_FireBombMode) > 0)
 		{
-			new teamOnly = ((GetConVarInt(g_TimeBombMode) == 1) ? true : false);
+			new teamOnly = ((GetConVarInt(g_FireBombMode) == 1) ? true : false);
 			new maxClients = GetMaxClients();
 			
 			for (new i = 1; i < maxClients; i++)
@@ -216,7 +216,7 @@ public Action:Timer_FireBomb(Handle:timer, any:client)
 				}
 				
 				new Float:duration = GetConVarFloat(g_BurnDuration);
-				duration *= (GetConVarFloat(g_TimeBombRadius) - distance) / GetConVarFloat(g_TimeBombRadius);
+				duration *= (GetConVarFloat(g_FireBombRadius) - distance) / GetConVarFloat(g_FireBombRadius);
 
 				IgniteEntity(i, duration);
 			}		

From e2bfd15ae1a673a96e411c70b698c06cba11ae88 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 30 Jan 2008 19:48:51 +0000
Subject: [PATCH 181/263] removed hardcoded path

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401871
---
 tools/builder/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/builder/Makefile b/tools/builder/Makefile
index 08090e8c..0e888927 100644
--- a/tools/builder/Makefile
+++ b/tools/builder/Makefile
@@ -1,4 +1,4 @@
-CS = /usr/mono/bin/mcs
+CS = mcs
 NAME = builder
 BINARY = $(NAME).exe
 

From 98720129b3a134bdc3b6fb0da0b253c54def39c4 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 30 Jan 2008 20:50:28 +0000
Subject: [PATCH 182/263] Makefiles now cross-compile on 64-bit systems

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401872
---
 core/Makefile.ep1                 | 2 +-
 core/Makefile.ep2                 | 9 ++++++---
 core/Makefile.orig                | 9 ++++++---
 extensions/cstrike/Makefile.orig  | 8 ++++----
 extensions/geoip/Makefile         | 9 ++++++---
 extensions/mysql/Makefile         | 9 ++++++---
 extensions/sdktools/Makefile.ep2  | 6 +++---
 extensions/sdktools/Makefile.orig | 6 +++---
 extensions/sqlite/Makefile        | 9 ++++++---
 extensions/topmenus/Makefile      | 9 ++++++---
 loader/Makefile                   | 9 ++++++---
 11 files changed, 53 insertions(+), 32 deletions(-)

diff --git a/core/Makefile.ep1 b/core/Makefile.ep1
index c14f55d9..01002949 100644
--- a/core/Makefile.ep1
+++ b/core/Makefile.ep1
@@ -1,7 +1,7 @@
 #(C)2004-2006 SourceMM Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
-SMM_BASE = ../../sourcemm
+SMM_BASE = ../../sourcemm-1.6
 HL2SDK = ../../hl2sdk
 SMSDK = ..
 SRCDS = ~/srcds
diff --git a/core/Makefile.ep2 b/core/Makefile.ep2
index 99f9dbbf..e5376eb8 100644
--- a/core/Makefile.ep2
+++ b/core/Makefile.ep2
@@ -1,7 +1,7 @@
 #(C)2004-2006 SourceMM Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
-SMM_BASE = ../../sourcemm
+SMM_BASE = ../../sourcemm-1.6
 HL2SDK = ../../hl2sdk-ob
 SMSDK = ..
 SRCDS = ~/srcds
@@ -58,7 +58,10 @@ endif
 
 GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
 
-CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Wno-uninitialized -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DSM_DEFAULT_THREADER -DORANGEBOX_BUILD
+CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp \
+	-Wall -Wno-uninitialized -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DSM_DEFAULT_THREADER \
+	-DORANGEBOX_BUILD -m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
 
 ifeq "$(GCC_VERSION)" "4"
@@ -86,7 +89,7 @@ all:
 	$(MAKE) -f Makefile.ep2 sourcemod
 
 sourcemod: $(OBJ_LINUX) $(OBJ_LINUX_C)
-	$(CPP) $(INCLUDE) $(OBJ_LINUX) $(OBJ_LINUX_C) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(OBJ_LINUX) $(OBJ_LINUX_C) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:	
 	$(MAKE) -f Makefile.ep2 all DEBUG=true
diff --git a/core/Makefile.orig b/core/Makefile.orig
index fe895f49..278ca7e8 100644
--- a/core/Makefile.orig
+++ b/core/Makefile.orig
@@ -1,7 +1,7 @@
 #(C)2004-2006 SourceMM Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
-SMM_BASE = ../../sourcemm-1.4.2
+SMM_BASE = ../../sourcemm-1.4
 HL2SDK = ../../hl2sdk
 SMSDK = ..
 SRCDS = ~/srcds
@@ -58,7 +58,10 @@ endif
 
 GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
 
-CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Wno-uninitialized -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DSM_DEFAULT_THREADER
+CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
+	-Dstrcmpi=strcasecmp -Wall -Wno-uninitialized -Werror -fPIC -mfpmath=sse -msse \
+	-DSOURCEMOD_BUILD -DSM_DEFAULT_THREADER -m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
 
 ifeq "$(GCC_VERSION)" "4"
@@ -85,7 +88,7 @@ all:
 	$(MAKE) -f Makefile.orig sourcemod
 
 sourcemod: $(OBJ_LINUX) $(OBJ_LINUX_C)
-	$(CPP) $(INCLUDE) $(OBJ_LINUX) $(OBJ_LINUX_C) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(OBJ_LINUX) $(OBJ_LINUX_C) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:	
 	$(MAKE) -f Makefile.orig all DEBUG=true
diff --git a/extensions/cstrike/Makefile.orig b/extensions/cstrike/Makefile.orig
index 4ae96fd1..51504fca 100644
--- a/extensions/cstrike/Makefile.orig
+++ b/extensions/cstrike/Makefile.orig
@@ -3,7 +3,7 @@
 
 SMSDK = ../..
 SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm-1.4.2
+SOURCEMM = ../../../sourcemm-1.4
 HL2SDK = ../../../hl2sdk
 
 #####################################
@@ -37,8 +37,8 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2
 
 CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
 	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp \
-	-Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H
-CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
+	-Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32
+CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti 
 
 ################################################
 ### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
@@ -72,7 +72,7 @@ all:
 	$(MAKE) -f Makefile.orig extension
 
 extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:	
 	$(MAKE) -f Makefile.orig all DEBUG=true
diff --git a/extensions/geoip/Makefile b/extensions/geoip/Makefile
index 14f9df77..fce544d6 100644
--- a/extensions/geoip/Makefile
+++ b/extensions/geoip/Makefile
@@ -3,7 +3,7 @@
 
 SMSDK = ../..
 SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm
+SOURCEMM = ../../../sourcemm-1.6
 
 #####################################
 ### EDIT BELOW FOR OTHER PROJECTS ###
@@ -36,7 +36,10 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2
           -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SMM_TRUNK) -I$(SMM_TRUNK)/sourcehook -I$(SMM_TRUNK)/sourcemm \
 	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
 
-CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD
+CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
+	-Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD \
+	-m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
 
 ################################################
@@ -75,7 +78,7 @@ all:
 	$(MAKE) extension
 
 extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:	
 	$(MAKE) all DEBUG=true
diff --git a/extensions/mysql/Makefile b/extensions/mysql/Makefile
index 46a8e18b..5af33974 100644
--- a/extensions/mysql/Makefile
+++ b/extensions/mysql/Makefile
@@ -3,7 +3,7 @@
 
 SMSDK = ../..
 SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm
+SOURCEMM = ../../../sourcemm-1.6
 MYSQL = ../../../mysql-5.0
 
 #####################################
@@ -41,7 +41,10 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine \
 	-I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
 	-I$(MYSQL)/include
 
-CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -Wno-switch
+CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
+	-Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H \
+	-Wno-switch -m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
 
 ################################################
@@ -77,7 +80,7 @@ all:
 	$(MAKE) extension
 
 extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:	
 	$(MAKE) all DEBUG=true
diff --git a/extensions/sdktools/Makefile.ep2 b/extensions/sdktools/Makefile.ep2
index 19875fd8..b82a0b6d 100644
--- a/extensions/sdktools/Makefile.ep2
+++ b/extensions/sdktools/Makefile.ep2
@@ -3,7 +3,7 @@
 
 SMSDK = ../..
 SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm
+SOURCEMM = ../../../sourcemm-1.6
 HL2SDK = ../../../hl2sdk-ob
 
 #####################################
@@ -39,7 +39,7 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2
 
 CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
 	-D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -Wno-switch \
-	-Wno-unused -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -DORANGEBOX_BUILD
+	-Wno-unused -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -DORANGEBOX_BUILD -m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti -fno-threadsafe-statics 
 
 ################################################
@@ -74,7 +74,7 @@ all:
 	$(MAKE) -f Makefile.ep2 extension
 
 extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:
 	$(MAKE) -f Makefile.ep2 all DEBUG=true
diff --git a/extensions/sdktools/Makefile.orig b/extensions/sdktools/Makefile.orig
index a509365a..b34a3e4a 100644
--- a/extensions/sdktools/Makefile.orig
+++ b/extensions/sdktools/Makefile.orig
@@ -3,7 +3,7 @@
 
 SMSDK = ../..
 SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm-1.4.2
+SOURCEMM = ../../../sourcemm-1.4
 HL2SDK = ../../../hl2sdk
 
 #####################################
@@ -39,7 +39,7 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2
 
 CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
 	-D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -Wno-switch \
-	-Wno-unused -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H
+	-Wno-unused -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti -fno-threadsafe-statics 
 
 ################################################
@@ -74,7 +74,7 @@ all:
 	$(MAKE) -f Makefile.orig extension
 
 extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:
 	$(MAKE) -f Makefile.orig all DEBUG=true
diff --git a/extensions/sqlite/Makefile b/extensions/sqlite/Makefile
index 602af760..2839482d 100644
--- a/extensions/sqlite/Makefile
+++ b/extensions/sqlite/Makefile
@@ -3,7 +3,7 @@
 
 SMSDK = ../..
 SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm
+SOURCEMM = ../../../sourcemm-1.6
 
 #####################################
 ### EDIT BELOW FOR OTHER PROJECTS ###
@@ -55,7 +55,10 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2
           -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
 	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
 
-CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -Wno-uninitialized -DSQLITE_THREADSAFE -DSQLITE_OMIT_LOAD_EXTENSION
+CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
+	-Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -Wno-uninitialized \
+	-DSQLITE_THREADSAFE -DSQLITE_OMIT_LOAD_EXTENSION -m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
 
 ################################################
@@ -96,7 +99,7 @@ all:
 	$(MAKE) extension
 
 extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:	
 	$(MAKE) all DEBUG=true
diff --git a/extensions/topmenus/Makefile b/extensions/topmenus/Makefile
index 1aa654e0..769d133a 100644
--- a/extensions/topmenus/Makefile
+++ b/extensions/topmenus/Makefile
@@ -3,7 +3,7 @@
 
 SMSDK = ../..
 SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm
+SOURCEMM = ../../../sourcemm-1.6
 HL2SDK = ../../../hl2sdk
 
 #####################################
@@ -36,7 +36,10 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2
           -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
 	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
 
-CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -Wno-switch -Wno-unused -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -Wno-uninitialized
+CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
+	-Dstrcmpi=strcasecmp -Wall -Werror -Wno-switch -Wno-unused -fPIC -mfpmath=sse -msse \
+	-DSOURCEMOD_BUILD -DHAVE_STDINT_H -Wno-uninitialized -m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
 
 ################################################
@@ -71,7 +74,7 @@ all:
 	$(MAKE) extension
 
 extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:
 	$(MAKE) all DEBUG=true
diff --git a/loader/Makefile b/loader/Makefile
index 889dca2c..a1fe7f02 100644
--- a/loader/Makefile
+++ b/loader/Makefile
@@ -5,7 +5,7 @@
 # running against Metamod:Source.
 
 SMSDK = ..
-SOURCEMM = ../../sourcemm
+SOURCEMM = ../../sourcemm-1.6
 
 #####################################
 ### EDIT BELOW FOR OTHER PROJECTS ###
@@ -29,7 +29,10 @@ LINK = -static-libgcc
 INCLUDE = -I. -I.. -Isdk -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
 	-I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
 
-CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -Wno-uninitialized
+CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
+	-Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H \
+	-Wno-uninitialized -m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
 
 ################################################
@@ -62,7 +65,7 @@ all:
 	$(MAKE) extension
 
 extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:	
 	$(MAKE) all DEBUG=true

From 22bc72c0d43e38f10fbbfc33b13c2deb6791f53b Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 30 Jan 2008 20:50:45 +0000
Subject: [PATCH 183/263] cross-compiles

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401873
---
 extensions/bintools/Makefile | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/extensions/bintools/Makefile b/extensions/bintools/Makefile
index 842fb7be..66a2976e 100644
--- a/extensions/bintools/Makefile
+++ b/extensions/bintools/Makefile
@@ -37,8 +37,11 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2
 	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions -I$(SMSDK)/public/jit \
 	-I$(SMSDK)/public/jit/x86
 
-CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H
-CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
+CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
+	-Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H \
+	-m32
+CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti -m32
 
 ################################################
 ### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
@@ -72,7 +75,7 @@ all:
 	$(MAKE) extension
 
 extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:	
 	$(MAKE) all DEBUG=true

From 512ec748191578322f8def06e6412c453c76a725 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 30 Jan 2008 20:51:07 +0000
Subject: [PATCH 184/263] cross-compiling

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401874
---
 sourcepawn/compiler/Makefile | 4 ++--
 sourcepawn/jit/x86/Makefile  | 7 +++++--
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/sourcepawn/compiler/Makefile b/sourcepawn/compiler/Makefile
index b7007401..c7b7c1dd 100644
--- a/sourcepawn/compiler/Makefile
+++ b/sourcepawn/compiler/Makefile
@@ -36,7 +36,7 @@ else
 	CPPFLAGS += $(OPT_CPP_FLAGS)
 endif
 
-CFLAGS += -DLINUX -DNDEBUG -DHAVE_STDINT_H -DAMX_ANSIONLY -DENABLE_BINRELOC
+CFLAGS += -DLINUX -DNDEBUG -DHAVE_STDINT_H -DAMX_ANSIONLY -DENABLE_BINRELOC -m32
 CPPFLAGS += -Wno-deprecated -fno-exceptions -fno-rtti
 
 OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
@@ -53,7 +53,7 @@ all:
 	$(MAKE) spcomp
 
 spcomp: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug: 
 	$(MAKE) all DEBUG=true
diff --git a/sourcepawn/jit/x86/Makefile b/sourcepawn/jit/x86/Makefile
index cbb31238..d6bd4873 100644
--- a/sourcepawn/jit/x86/Makefile
+++ b/sourcepawn/jit/x86/Makefile
@@ -32,7 +32,10 @@ endif
 
 GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
 
-CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -fno-rtti -DHAVE_STDINT_H
+CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
+	-Dstrcmpi=strcasecmp -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -fno-rtti \
+	-DHAVE_STDINT_H -m32
 
 ifeq "$(GCC_VERSION)" "4"
 	CFLAGS += $(GCC4_FLAGS)
@@ -52,7 +55,7 @@ all:
 	ln -sf $(BIN_DIR)/$(BINARY) $(BINARY)
 
 binary: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:	
 	$(MAKE) all DEBUG=true

From 9e9f74aab08e29a0456fce17d1841da22dde97e9 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Thu, 31 Jan 2008 02:37:34 +0000
Subject: [PATCH 185/263] added some more doc

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401875
---
 plugins/include/sourcemod.inc | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc
index 0f625607..afc93521 100644
--- a/plugins/include/sourcemod.inc
+++ b/plugins/include/sourcemod.inc
@@ -85,9 +85,12 @@ struct Plugin
 public Plugin:myinfo;
  
 /**
- * Called when the plugin is fully initialized and all known external references are resolved.
- * This is called even if the plugin type is "private."
- * @note Errors in this function will cause the plugin to stop running.
+ * Called when the plugin is fully initialized and all known external references 
+ * are resolved. This is only called once in the lifetime of the plugin, and is 
+ * paired with OnPluginEnd().
+ *
+ * If any run-time error is thrown during this callback, the plugin will be marked 
+ * as failed.
  *
  * @noreturn
  */
@@ -101,6 +104,9 @@ forward OnPluginStart();
  * 
  * @note It is not safe to call externally resolved natives until OnPluginStart().
  * @note Any sort of RTE in this function will cause the plugin to fail loading.
+ * @note You MUST remember to return SOMETHING here.  The act of not returning is 
+ *       equivalent to returning 0 (false).  If you forgot to return, it will 
+ *       cause your plugin to not load with a very strange error message.
  *
  * @param myself	Handle to the plugin.
  * @param late		Whether or not the plugin was loaded "late" (after map load).

From 4bbad7450607a84a1a159a7790095ef50d072951 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Sun, 10 Feb 2008 01:19:34 +0000
Subject: [PATCH 186/263] Fixed amb1446 : Updated pvkii showmenu and sdktools
 support.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401876
---
 gamedata/core.games.txt     |  1 +
 gamedata/sdktools.games.txt | 10 +++++-----
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/gamedata/core.games.txt b/gamedata/core.games.txt
index 146edf1a..f598813a 100644
--- a/gamedata/core.games.txt
+++ b/gamedata/core.games.txt
@@ -55,6 +55,7 @@
 			"game"		"insurgency"
 			"game"		"Insurgency"
 			"game"		"tf"
+			"game"		"pvkii"
 		}
 
 		"Keys"
diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index 8379aa63..ea233126 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -37,7 +37,7 @@
 			"game"		"ship"
 			"game"		"!Dystopia"
 			"game"		"!Insurgency"
-			"game"		"!Pirates, Vikings and Knights II"
+			"game"		"pvkii"
 			"game"		"!SourceForts v1.9.2"
 			"game"		"$SourceForts v1.9.3"
 			"game"		"FortressForever"
@@ -98,7 +98,7 @@
 			"game"		"ship"
 			"game"		"!Dystopia"
 			"game"		"!Insurgency"
-			"game"		"!Pirates, Vikings and Knights II"
+			"game"		"pvkii"
 			"game"		"!SourceForts v1.9.2"
 			"game"		"$SourceForts v1.9.3"
 			"game"		"FortressForever"
@@ -150,7 +150,7 @@
 			"game"		"hl2mp"
 			"game"		"ship"
 			"game"		"!Insurgency"
-			"game"		"!Pirates, Vikings and Knights II"
+			"game"		"pvkii"
 			"game"		"!SourceForts v1.9.2"
 			"game"		"$SourceForts v1.9.3"
 			"game"		"FortressForever"
@@ -201,7 +201,7 @@
 			"game"		"dod"
 			"game"		"hl2mp"
 			"game"		"!Insurgency"
-			"game"		"!Pirates, Vikings and Knights II"
+			"game"		"pvkii"
 			"game"		"$SourceForts v1.9.3"
 			"game"		"FortressForever"
 			"game"		"empires"
@@ -766,7 +766,7 @@
 	}
 
 	/* Pirates, Vikings and Knights II */
-	"!Pirates, Vikings and Knights II"
+	"pvkii"
 	{
 		"Offsets"
 		{

From 9a49bf2f083501dc46e618e77df5144208f11d7e Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Wed, 20 Feb 2008 07:56:33 +0000
Subject: [PATCH 187/263] Update of project file to match latest hl2sdk

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401877
---
 core/Makefile.ep2                         |   3 +-
 core/bitbuf.cpp                           | 961 ----------------------
 core/msvc8/sourcemod_mm.vcproj            |  28 +-
 core/smn_usermsgs.cpp                     |   4 +-
 core/smn_vector.cpp                       |  16 +-
 extensions/cstrike/msvc8/cstrike.vcproj   |  26 +-
 extensions/sdktools/msvc8/sdktools.vcproj |  26 +-
 7 files changed, 45 insertions(+), 1019 deletions(-)
 delete mode 100644 core/bitbuf.cpp

diff --git a/core/Makefile.ep2 b/core/Makefile.ep2
index e5376eb8..b5638966 100644
--- a/core/Makefile.ep2
+++ b/core/Makefile.ep2
@@ -24,7 +24,7 @@ OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreC
 	sm_autonatives.cpp sm_memtable.cpp sm_srvcmds.cpp sm_stringutil.cpp sm_trie.cpp \
 	sourcemm_api.cpp sourcemod.cpp MenuStyle_Base.cpp MenuStyle_Valve.cpp MenuManager.cpp \
 	MenuStyle_Radio.cpp ChatTriggers.cpp ADTFactory.cpp MenuVoting.cpp sm_crc32.cpp \
-	frame_hooks.cpp bitbuf.cpp concmd_cleaner.cpp
+	frame_hooks.cpp concmd_cleaner.cpp
 OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_datapacks.cpp smn_entities.cpp smn_events.cpp smn_fakenatives.cpp \
 	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
@@ -85,7 +85,6 @@ all:
 	mkdir -p $(BIN_DIR)/thread
 	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
 	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
-	ln -sf $(HL2SDK)/tier1/bitbuf.cpp bitbuf.cpp
 	$(MAKE) -f Makefile.ep2 sourcemod
 
 sourcemod: $(OBJ_LINUX) $(OBJ_LINUX_C)
diff --git a/core/bitbuf.cpp b/core/bitbuf.cpp
deleted file mode 100644
index 23c0040e..00000000
--- a/core/bitbuf.cpp
+++ /dev/null
@@ -1,961 +0,0 @@
-//========= Copyright � 1996-2005, Valve Corporation, All rights reserved. ============//
-//
-// Purpose: 
-//
-// $NoKeywords: $
-//
-//=============================================================================//
-
-#include "bitbuf.h"
-#include "coordsize.h"
-#include "vector.h"
-#include "mathlib/math_base.h"
-#include "vstdlib/strtools.h"
-
-
-// FIXME: Can't use this until we get multithreaded allocations in tier0 working for tools
-// This is used by VVIS and fails to link
-// NOTE: This must be the last file included!!!
-//#include "tier0/memdbgon.h"
-
-#ifdef _XBOX
-// mandatory ... wary of above comment and isolating, tier0 is built as MT though
-#include "tier0/memdbgon.h"
-#endif
-
-static BitBufErrorHandler g_BitBufErrorHandler = 0;
-
-
-void InternalBitBufErrorHandler( BitBufErrorType errorType, const char *pDebugName )
-{
-	if ( g_BitBufErrorHandler )
-		g_BitBufErrorHandler( errorType, pDebugName );
-}
-
-
-void SetBitBufErrorHandler( BitBufErrorHandler fn )
-{
-	g_BitBufErrorHandler = fn;
-}
-
-
-// #define BB_PROFILING
-
-
-// Precalculated bit masks for WriteUBitLong. Using these tables instead of 
-// doing the calculations gives a 33% speedup in WriteUBitLong.
-unsigned long g_BitWriteMasks[32][33];
-
-// (1 << i) - 1
-unsigned long g_ExtraMasks[32];
-
-class CBitWriteMasksInit
-{
-public:
-	CBitWriteMasksInit()
-	{
-		for( unsigned int startbit=0; startbit < 32; startbit++ )
-		{
-			for( unsigned int nBitsLeft=0; nBitsLeft < 33; nBitsLeft++ )
-			{
-				unsigned int endbit = startbit + nBitsLeft;
-				g_BitWriteMasks[startbit][nBitsLeft] = (1 << startbit) - 1;
-				if(endbit < 32)
-					g_BitWriteMasks[startbit][nBitsLeft] |= ~((1 << endbit) - 1);
-			}
-		}
-
-		for ( unsigned int maskBit=0; maskBit < 32; maskBit++ )
-			g_ExtraMasks[maskBit] = (1 << maskBit) - 1;
-	}
-};
-CBitWriteMasksInit g_BitWriteMasksInit;
-
-
-// ---------------------------------------------------------------------------------------- //
-// bf_write
-// ---------------------------------------------------------------------------------------- //
-
-bf_write::bf_write()
-{
-	m_pData = NULL;
-	m_nDataBytes = 0;
-	m_nDataBits = -1; // set to -1 so we generate overflow on any operation
-	m_iCurBit = 0;
-	m_bOverflow = false;
-	m_bAssertOnOverflow = true;
-	m_pDebugName = NULL;
-}
-
-bf_write::bf_write( const char *pDebugName, void *pData, int nBytes, int nBits )
-{
-	m_bAssertOnOverflow = true;
-	m_pDebugName = pDebugName;
-	StartWriting( pData, nBytes, 0, nBits );
-}
-
-bf_write::bf_write( void *pData, int nBytes, int nBits )
-{
-	m_bAssertOnOverflow = true;
-	StartWriting( pData, nBytes, 0, nBits );
-}
-
-void bf_write::StartWriting( void *pData, int nBytes, int iStartBit, int nBits )
-{
-	// Make sure it's dword aligned and padded.
-	Assert( (nBytes % 4) == 0 );
-	Assert(((unsigned long)pData & 3) == 0);
-
-	m_pData = (unsigned char*)pData;
-	m_nDataBytes = nBytes;
-
-	if ( nBits == -1 )
-	{
-		m_nDataBits = nBytes << 3;
-	}
-	else
-	{
-		Assert( nBits <= nBytes*8 );
-		m_nDataBits = nBits;
-	}
-
-	m_iCurBit = iStartBit;
-	m_bOverflow = false;
-}
-
-void bf_write::Reset()
-{
-	m_iCurBit = 0;
-	m_bOverflow = false;
-}
-
-
-void bf_write::SetAssertOnOverflow( bool bAssert )
-{
-	m_bAssertOnOverflow = bAssert;
-}
-
-
-const char* bf_write::GetDebugName()
-{
-	return m_pDebugName;
-}
-
-
-void bf_write::SetDebugName( const char *pDebugName )
-{
-	m_pDebugName = pDebugName;
-}
-
-
-void bf_write::SeekToBit( int bitPos )
-{
-	m_iCurBit = bitPos;
-}
-
-
-// Sign bit comes first
-void bf_write::WriteSBitLong( int data, int numbits )
-{
-	// Do we have a valid # of bits to encode with?
-	Assert( numbits >= 1 );
-
-	// Note: it does this wierdness here so it's bit-compatible with regular integer data in the buffer.
-	// (Some old code writes direct integers right into the buffer).
-	if(data < 0)
-	{
-#ifdef _DEBUG
-	if( numbits < 32 )
-	{
-		// Make sure it doesn't overflow.
-
-		if( data < 0 )
-		{
-			Assert( data >= -(1 << (numbits-1)) );
-		}
-		else
-		{
-			Assert( data < (1 << (numbits-1)) );
-		}
-	}
-#endif
-
-		WriteUBitLong( (unsigned int)(0x80000000 + data), numbits - 1, false );
-		WriteOneBit( 1 );
-	}
-	else
-	{
-		WriteUBitLong((unsigned int)data, numbits - 1);
-		WriteOneBit( 0 );
-	}
-}
-
-// writes an unsigned integer with variable bit length
-void bf_write::WriteUBitVar( unsigned int data )
-{
-	unsigned int bits = 0;
-	unsigned int base = 0;
-
-	while (data > (base<<1))
-	{
-		bits++;
-		base = (1<<bits)-1;
-	}
-
-	// how many bits do we use
-	if ( bits > 0)
-		WriteUBitLong( 0, bits );
-
-	// end marker
-	WriteOneBit( 1 );  
-
-	// write the value
-	if ( bits > 0)
-		WriteUBitLong( data - base , bits );
-}
-
-void bf_write::WriteBitLong(unsigned int data, int numbits, bool bSigned)
-{
-	if(bSigned)
-		WriteSBitLong((int)data, numbits);
-	else
-		WriteUBitLong(data, numbits);
-}
-
-bool bf_write::WriteBits(const void *pInData, int nBits)
-{
-#if defined( BB_PROFILING )
-	VPROF( "bf_write::WriteBits" );
-#endif
-
-	unsigned char *pOut = (unsigned char*)pInData;
-	int nBitsLeft = nBits;
-
-	if((m_iCurBit+nBits) > m_nDataBits)
-	{
-		SetOverflowFlag();
-		CallErrorHandler( BITBUFERROR_BUFFER_OVERRUN, GetDebugName() );
-		return false;
-	}
-
-	// Get output dword-aligned.
-	while(((unsigned long)pOut & 3) != 0 && nBitsLeft >= 8)
-	{
-
-		WriteUBitLong( *pOut, 8, false );
-		++pOut;
-		nBitsLeft -= 8;
-	}
-	
-	// check if we can use fast memcpy if m_iCurBit is byte aligned
-	if ( (nBitsLeft >= 32) && (m_iCurBit & 7) == 0 )
-	{
-		int numbytes = (nBitsLeft >> 3); 
-		int numbits = numbytes << 3;
-		
-		// Bounds checking..
-		// TODO: May not need this check anymore
-		if((m_iCurBit+numbits) > m_nDataBits)
-		{
-			m_iCurBit = m_nDataBits;
-			SetOverflowFlag();
-			CallErrorHandler( BITBUFERROR_BUFFER_OVERRUN, GetDebugName() );
-			return false;
-		}
-		
-		Q_memcpy( m_pData+(m_iCurBit>>3), pOut, numbytes );
-		pOut += numbytes;
-		nBitsLeft -= numbits;
-		m_iCurBit += numbits;
-	}
-
-	// Read dwords.
-	while(nBitsLeft >= 32)
-	{
-		WriteUBitLong( *((unsigned long*)pOut), 32, false );
-		pOut += sizeof(unsigned long);
-		nBitsLeft -= 32;
-	}
-
-	// Read the remaining bytes.
-	while(nBitsLeft >= 8)
-	{
-		WriteUBitLong( *pOut, 8, false );
-		++pOut;
-		nBitsLeft -= 8;
-	}
-	
-	// Read the remaining bits.
-	if(nBitsLeft)
-	{
-		WriteUBitLong( *pOut, nBitsLeft, false );
-	}
-
-	return !IsOverflowed();
-}
-
-
-bool bf_write::WriteBitsFromBuffer( bf_read *pIn, int nBits )
-{
-	// This could be optimized a little by
-	while ( nBits > 32 )
-	{
-		WriteUBitLong( pIn->ReadUBitLong( 32 ), 32 );
-		nBits -= 32;
-	}
-
-	WriteUBitLong( pIn->ReadUBitLong( nBits ), nBits );
-	return !IsOverflowed() && !pIn->IsOverflowed();
-}
-
-
-void bf_write::WriteBitAngle( float fAngle, int numbits )
-{
-	int d;
-	unsigned int mask;
-	unsigned int shift;
-
-	shift = (1<<numbits);
-	mask = shift - 1;
-
-	d = (int)( (fAngle / 360.0) * shift );
-	d &= mask;
-
-	WriteUBitLong((unsigned int)d, numbits);
-}
-
-void bf_write::WriteBitCoord (const float f)
-{
-#if defined( BB_PROFILING )
-	VPROF( "bf_write::WriteBitCoord" );
-#endif
-	int		signbit = (f <= -COORD_RESOLUTION);
-	int		intval = abs(static_cast<int>(f));
-	int		fractval = abs((int)(f*COORD_DENOMINATOR)) & (COORD_DENOMINATOR-1);
-
-
-	// Send the bit flags that indicate whether we have an integer part and/or a fraction part.
-	WriteOneBit( intval );
-	WriteOneBit( fractval );
-
-	if ( intval || fractval )
-	{
-		// Send the sign bit
-		WriteOneBit( signbit );
-
-		// Send the integer if we have one.
-		if ( intval )
-		{
-			// Adjust the integers from [1..MAX_COORD_VALUE] to [0..MAX_COORD_VALUE-1]
-			intval--;
-			WriteUBitLong( (unsigned int)intval, COORD_INTEGER_BITS );
-		}
-		
-		// Send the fraction if we have one
-		if ( fractval )
-		{
-			WriteUBitLong( (unsigned int)fractval, COORD_FRACTIONAL_BITS );
-		}
-	}
-}
-
-void bf_write::WriteBitFloat(float val)
-{
-	long intVal;
-
-	Assert(sizeof(long) == sizeof(float));
-	Assert(sizeof(float) == 4);
-
-	void *v = &val;
-	intVal = *reinterpret_cast<long *>(v);
-	WriteUBitLong( intVal, 32 );
-}
-
-void bf_write::WriteBitVec3Coord( const Vector& fa )
-{
-	int		xflag, yflag, zflag;
-
-	xflag = (fa[0] >= COORD_RESOLUTION) || (fa[0] <= -COORD_RESOLUTION);
-	yflag = (fa[1] >= COORD_RESOLUTION) || (fa[1] <= -COORD_RESOLUTION);
-	zflag = (fa[2] >= COORD_RESOLUTION) || (fa[2] <= -COORD_RESOLUTION);
-
-	WriteOneBit( xflag );
-	WriteOneBit( yflag );
-	WriteOneBit( zflag );
-
-	if ( xflag )
-		WriteBitCoord( fa[0] );
-	if ( yflag )
-		WriteBitCoord( fa[1] );
-	if ( zflag )
-		WriteBitCoord( fa[2] );
-}
-
-void bf_write::WriteBitNormal( float f )
-{
-	int	signbit = (f <= -NORMAL_RESOLUTION);
-
-	// NOTE: Since +/-1 are valid values for a normal, I'm going to encode that as all ones
-	unsigned int fractval = abs( (int)(f*NORMAL_DENOMINATOR) );
-
-	// clamp..
-	if (fractval > NORMAL_DENOMINATOR)
-		fractval = NORMAL_DENOMINATOR;
-
-	// Send the sign bit
-	WriteOneBit( signbit );
-
-	// Send the fractional component
-	WriteUBitLong( fractval, NORMAL_FRACTIONAL_BITS );
-}
-
-void bf_write::WriteBitVec3Normal( const Vector& fa )
-{
-	int		xflag, yflag;
-
-	xflag = (fa[0] >= NORMAL_RESOLUTION) || (fa[0] <= -NORMAL_RESOLUTION);
-	yflag = (fa[1] >= NORMAL_RESOLUTION) || (fa[1] <= -NORMAL_RESOLUTION);
-
-	WriteOneBit( xflag );
-	WriteOneBit( yflag );
-
-	if ( xflag )
-		WriteBitNormal( fa[0] );
-	if ( yflag )
-		WriteBitNormal( fa[1] );
-	
-	// Write z sign bit
-	int	signbit = (fa[2] <= -NORMAL_RESOLUTION);
-	WriteOneBit( signbit );
-}
-
-void bf_write::WriteBitAngles( const QAngle& fa )
-{
-	// FIXME:
-	Vector tmp( fa.x, fa.y, fa.z );
-	WriteBitVec3Coord( tmp );
-}
-
-void bf_write::WriteChar(int val)
-{
-	WriteSBitLong(val, sizeof(char) << 3);
-}
-
-void bf_write::WriteByte(int val)
-{
-	WriteUBitLong(val, sizeof(unsigned char) << 3);
-}
-
-void bf_write::WriteShort(int val)
-{
-	WriteSBitLong(val, sizeof(short) << 3);
-}
-
-void bf_write::WriteWord(int val)
-{
-	WriteUBitLong(val, sizeof(unsigned short) << 3);
-}
-
-void bf_write::WriteLong(long val)
-{
-	WriteSBitLong(val, sizeof(long) << 3);
-}
-
-void bf_write::WriteFloat(float val)
-{
-	WriteBits(&val, sizeof(val) << 3);
-}
-
-bool bf_write::WriteBytes( const void *pBuf, int nBytes )
-{
-	return WriteBits(pBuf, nBytes << 3);
-}
-
-bool bf_write::WriteString(const char *pStr)
-{
-	if(pStr)
-	{
-		do
-		{
-			WriteChar( *pStr );
-			++pStr;
-		} while( *(pStr-1) != 0 );
-	}
-	else
-	{
-		WriteChar( 0 );
-	}
-
-	return !IsOverflowed();
-}
-
-// ---------------------------------------------------------------------------------------- //
-// bf_read
-// ---------------------------------------------------------------------------------------- //
-
-bf_read::bf_read()
-{
-	m_pData = NULL;
-	m_nDataBytes = 0;
-	m_nDataBits = -1; // set to -1 so we overflow on any operation
-	m_iCurBit = 0;
-	m_bOverflow = false;
-	m_bAssertOnOverflow = true;
-	m_pDebugName = NULL;
-}
-
-bf_read::bf_read( const void *pData, int nBytes, int nBits )
-{
-	m_bAssertOnOverflow = true;
-	StartReading( pData, nBytes, 0, nBits );
-}
-
-bf_read::bf_read( const char *pDebugName, const void *pData, int nBytes, int nBits )
-{
-	m_bAssertOnOverflow = true;
-	m_pDebugName = pDebugName;
-	StartReading( pData, nBytes, 0, nBits );
-}
-
-void bf_read::StartReading( const void *pData, int nBytes, int iStartBit, int nBits )
-{
-	// Make sure we're dword aligned.
-	Assert(((unsigned long)pData & 3) == 0);
-
-	m_pData = (unsigned char*)pData;
-	m_nDataBytes = nBytes;
-
-	if ( nBits == -1 )
-	{
-		m_nDataBits = m_nDataBytes << 3;
-	}
-	else
-	{
-		Assert( nBits <= nBytes*8 );
-		m_nDataBits = nBits;
-	}
-
-	m_iCurBit = iStartBit;
-	m_bOverflow = false;
-}
-
-void bf_read::Reset()
-{
-	m_iCurBit = 0;
-	m_bOverflow = false;
-}
-
-void bf_read::SetAssertOnOverflow( bool bAssert )
-{
-	m_bAssertOnOverflow = bAssert;
-}
-
-const char* bf_read::GetDebugName()
-{
-	return m_pDebugName;
-}
-
-void bf_read::SetDebugName( const char *pName )
-{
-	m_pDebugName = pName;
-}
-
-unsigned int bf_read::CheckReadUBitLong(int numbits)
-{
-	// Ok, just read bits out.
-	int i, nBitValue;
-	unsigned int r = 0;
-
-	for(i=0; i < numbits; i++)
-	{
-		nBitValue = ReadOneBitNoCheck();
-		r |= nBitValue << i;
-	}
-	m_iCurBit -= numbits;
-	
-	return r;
-}
-
-bool bf_read::ReadBits(void *pOutData, int nBits)
-{
-#if defined( BB_PROFILING )
-	VPROF( "bf_write::ReadBits" );
-#endif
-
-	unsigned char *pOut = (unsigned char*)pOutData;
-	int nBitsLeft = nBits;
-
-	
-	// Get output dword-aligned.
-	while(((unsigned long)pOut & 3) != 0 && nBitsLeft >= 8)
-	{
-		*pOut = (unsigned char)ReadUBitLong(8);
-		++pOut;
-		nBitsLeft -= 8;
-	}
-
-	// Read dwords.
-	while(nBitsLeft >= 32)
-	{
-		*((unsigned long*)pOut) = ReadUBitLong(32);
-		pOut += sizeof(unsigned long);
-		nBitsLeft -= 32;
-	}
-
-	// Read the remaining bytes.
-	while(nBitsLeft >= 8)
-	{
-		*pOut = ReadUBitLong(8);
-		++pOut;
-		nBitsLeft -= 8;
-	}
-	
-	// Read the remaining bits.
-	if(nBitsLeft)
-	{
-		*pOut = ReadUBitLong(nBitsLeft);
-	}
-
-	return !IsOverflowed();
-}
-
-float bf_read::ReadBitAngle( int numbits )
-{
-	float fReturn;
-	int i;
-	float shift;
-
-	shift = (float)( 1 << numbits );
-
-	i = ReadUBitLong( numbits );
-	fReturn = (float)i * (360.0 / shift);
-
-	return fReturn;
-}
-
-unsigned int bf_read::PeekUBitLong( int numbits )
-{
-	unsigned int r;
-	int i, nBitValue;
-#ifdef BIT_VERBOSE
-	int nShifts = numbits;
-#endif
-
-	bf_read savebf;
-
-	savebf = *this;  // Save current state info
-
-	r = 0;
-	for(i=0; i < numbits; i++)
-	{
-		nBitValue = ReadOneBit();
-
-		// Append to current stream
-		if ( nBitValue )
-		{
-			r |= 1 << i;
-		}
-	}
-	
-	*this = savebf;
-
-#ifdef BIT_VERBOSE
-	Con_Printf( "PeekBitLong:  %i %i\n", nShifts, (unsigned int)r );
-#endif
-
-	return r;
-}
-
-// Append numbits least significant bits from data to the current bit stream
-int bf_read::ReadSBitLong( int numbits )
-{
-	int r, sign;
-
-	r = ReadUBitLong(numbits - 1);
-
-	// Note: it does this wierdness here so it's bit-compatible with regular integer data in the buffer.
-	// (Some old code writes direct integers right into the buffer).
-	sign = ReadOneBit();
-	if(sign)
-		r = -((1 << (numbits-1)) - r);
-
-	return r;
-}
-
-unsigned int bf_read::ReadUBitVar()
-{
-	int bits = 0; // how many bits are used to encode delta offset
-
-		// how many bits do we use
-	while ( ReadOneBit() == 0 )
-		bits++;
-
-	unsigned int data = (1<<bits)-1;
-	
-	// read the value
-	if ( bits > 0)
-		data += ReadUBitLong( bits );
-
-	return data;
-}
-
-
-unsigned int bf_read::ReadBitLong(int numbits, bool bSigned)
-{
-	if(bSigned)
-		return (unsigned int)ReadSBitLong(numbits);
-	else
-		return ReadUBitLong(numbits);
-}
-
-
-// Basic Coordinate Routines (these contain bit-field size AND fixed point scaling constants)
-float bf_read::ReadBitCoord (void)
-{
-#if defined( BB_PROFILING )
-	VPROF( "bf_write::ReadBitCoord" );
-#endif
-	int		intval=0,fractval=0,signbit=0;
-	float	value = 0.0;
-
-
-	// Read the required integer and fraction flags
-	intval = ReadOneBit();
-	fractval = ReadOneBit();
-
-	// If we got either parse them, otherwise it's a zero.
-	if ( intval || fractval )
-	{
-		// Read the sign bit
-		signbit = ReadOneBit();
-
-		// If there's an integer, read it in
-		if ( intval )
-		{
-			// Adjust the integers from [0..MAX_COORD_VALUE-1] to [1..MAX_COORD_VALUE]
-			intval = ReadUBitLong( COORD_INTEGER_BITS ) + 1;
-		}
-
-		// If there's a fraction, read it in
-		if ( fractval )
-		{
-			fractval = ReadUBitLong( COORD_FRACTIONAL_BITS );
-		}
-
-		// Calculate the correct floating point value
-		value = intval + ((float)fractval * COORD_RESOLUTION);
-
-		// Fixup the sign if negative.
-		if ( signbit )
-			value = -value;
-	}
-
-	return value;
-}
-
-void bf_read::ReadBitVec3Coord( Vector& fa )
-{
-	int		xflag, yflag, zflag;
-
-	// This vector must be initialized! Otherwise, If any of the flags aren't set, 
-	// the corresponding component will not be read and will be stack garbage.
-	fa.Init( 0, 0, 0 );
-
-	xflag = ReadOneBit();
-	yflag = ReadOneBit(); 
-	zflag = ReadOneBit();
-
-	if ( xflag )
-		fa[0] = ReadBitCoord();
-	if ( yflag )
-		fa[1] = ReadBitCoord();
-	if ( zflag )
-		fa[2] = ReadBitCoord();
-}
-
-float bf_read::ReadBitNormal (void)
-{
-	// Read the sign bit
-	int	signbit = ReadOneBit();
-
-	// Read the fractional part
-	unsigned int fractval = ReadUBitLong( NORMAL_FRACTIONAL_BITS );
-
-	// Calculate the correct floating point value
-	float value = (float)fractval * NORMAL_RESOLUTION;
-
-	// Fixup the sign if negative.
-	if ( signbit )
-		value = -value;
-
-	return value;
-}
-
-void bf_read::ReadBitVec3Normal( Vector& fa )
-{
-	int xflag = ReadOneBit();
-	int yflag = ReadOneBit(); 
-
-	if (xflag)
-		fa[0] = ReadBitNormal();
-	else
-		fa[0] = 0.0f;
-
-	if (yflag)
-		fa[1] = ReadBitNormal();
-	else
-		fa[1] = 0.0f;
-
-	// The first two imply the third (but not its sign)
-	int znegative = ReadOneBit();
-
-	float fafafbfb = fa[0] * fa[0] + fa[1] * fa[1];
-	if (fafafbfb < 1.0f)
-		fa[2] = sqrt( 1.0f - fafafbfb );
-	else
-		fa[2] = 0.0f;
-
-	if (znegative)
-		fa[2] = -fa[2];
-}
-
-void bf_read::ReadBitAngles( QAngle& fa )
-{
-	Vector tmp;
-	ReadBitVec3Coord( tmp );
-	fa.Init( tmp.x, tmp.y, tmp.z );
-}
-
-int bf_read::ReadChar()
-{
-	return ReadSBitLong(sizeof(char) << 3);
-}
-
-int bf_read::ReadByte()
-{
-	return ReadUBitLong(sizeof(unsigned char) << 3);
-}
-
-int bf_read::ReadShort()
-{
-	return ReadSBitLong(sizeof(short) << 3);
-}
-
-int bf_read::ReadWord()
-{
-	return ReadUBitLong(sizeof(unsigned short) << 3);
-}
-
-long bf_read::ReadLong()
-{
-	return ReadSBitLong(sizeof(long) << 3);
-}
-
-float bf_read::ReadFloat()
-{
-	float ret;
-	Assert( sizeof(ret) == 4 );
-	ReadBits(&ret, 32);
-	return ret;
-}
-
-bool bf_read::ReadBytes(void *pOut, int nBytes)
-{
-	return ReadBits(pOut, nBytes << 3);
-}
-
-bool bf_read::ReadString( char *pStr, int maxLen, bool bLine, int *pOutNumChars )
-{
-	Assert( maxLen != 0 );
-
-	bool bTooSmall = false;
-	int iChar = 0;
-	while(1)
-	{
-		char val = ReadChar();
-		if ( val == 0 )
-			break;
-		else if ( bLine && val == '\n' )
-			break;
-
-		if ( iChar < (maxLen-1) )
-		{
-			pStr[iChar] = val;
-			++iChar;
-		}
-		else
-		{
-			bTooSmall = true;
-		}
-	}
-
-	// Make sure it's null-terminated.
-	Assert( iChar < maxLen );
-	pStr[iChar] = 0;
-
-	if ( pOutNumChars )
-		*pOutNumChars = iChar;
-
-	return !IsOverflowed() && !bTooSmall;
-}
-
-
-char* bf_read::ReadAndAllocateString( bool *pOverflow )
-{
-	char str[2048];
-	
-	int nChars;
-	bool bOverflow = !ReadString( str, sizeof( str ), false, &nChars );
-	if ( pOverflow )
-		*pOverflow = bOverflow;
-
-	// Now copy into the output and return it;
-	char *pRet = new char[ nChars + 1 ];
-	for ( int i=0; i <= nChars; i++ )
-		pRet[i] = str[i];
-
-	return pRet;
-}
-
-	
-bool bf_read::Seek(int iBit)
-{
-	if(iBit < 0)
-	{
-		SetOverflowFlag();
-		m_iCurBit = m_nDataBits;
-		return false;
-	}
-	else if(iBit > m_nDataBits)
-	{
-		SetOverflowFlag();
-		m_iCurBit = m_nDataBits;
-		return false;
-	}
-	else
-	{
-		m_iCurBit = iBit;
-		return true;
-	}
-}
-
-void bf_read::ExciseBits( int startbit, int bitstoremove )
-{
-	int endbit = startbit + bitstoremove;
-	int remaining_to_end = m_nDataBits - endbit;
-
-	bf_write temp;
-	temp.StartWriting( (void *)m_pData, m_nDataBits << 3, startbit );
-
-	Seek( endbit );
-
-	for ( int i = 0; i < remaining_to_end; i++ )
-	{
-		temp.WriteOneBit( ReadOneBit() );
-	}
-
-	Seek( startbit );
-	
-	m_nDataBits -= bitstoremove;
-	m_nDataBytes = m_nDataBits >> 3;
-}
diff --git a/core/msvc8/sourcemod_mm.vcproj b/core/msvc8/sourcemod_mm.vcproj
index 049ee1d2..43282ece 100644
--- a/core/msvc8/sourcemod_mm.vcproj
+++ b/core/msvc8/sourcemod_mm.vcproj
@@ -42,7 +42,7 @@
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\mathlib&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="0"
@@ -63,7 +63,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sourcemod.2.ep1.dll"
 				LinkIncremental="1"
 				GenerateDebugInformation="true"
@@ -123,7 +123,7 @@
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\mathlib&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -146,7 +146,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sourcemod.2.ep1.dll"
 				LinkIncremental="2"
 				IgnoreDefaultLibraryNames="LIBCMT"
@@ -285,7 +285,7 @@
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\public\mathlib&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER;ORANGEBOX_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="0"
@@ -306,7 +306,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDKOB)\lib\public\tier0.lib $(HL2SDKOB)\lib\public\tier1.lib $(HL2SDKOB)\lib\public\vstdlib.lib $(HL2SDKOB)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDKOB)\lib\public\tier0.lib&quot; &quot;$(HL2SDKOB)\lib\public\tier1.lib&quot; &quot;$(HL2SDKOB)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDKOB)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sourcemod.2.ep2.dll"
 				LinkIncremental="1"
 				GenerateDebugInformation="true"
@@ -366,7 +366,7 @@
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\public\mathlib&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER;ORANGEBOX_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -389,7 +389,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDKOB)\lib\public\tier0.lib $(HL2SDKOB)\lib\public\tier1.lib $(HL2SDKOB)\lib\public\vstdlib.lib $(HL2SDKOB)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDKOB)\lib\public\tier0.lib&quot; &quot;$(HL2SDKOB)\lib\public\tier1.lib&quot; &quot;$(HL2SDKOB)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDKOB)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sourcemod.2.ep2.dll"
 				LinkIncremental="2"
 				IgnoreDefaultLibraryNames="LIBCMT"
@@ -448,7 +448,7 @@
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
+				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\mathlib&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM14)&quot;;&quot;$(SOURCEMM14)\sourcemm&quot;;&quot;$(SOURCEMM14)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -471,7 +471,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sourcemod.1.ep1.dll"
 				LinkIncremental="2"
 				IgnoreDefaultLibraryNames="LIBCMT"
@@ -531,7 +531,7 @@
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
+				AdditionalIncludeDirectories="..\;..\systems;..\..\public;..\..\public\sourcepawn;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\mathlib&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM14)&quot;;&quot;$(SOURCEMM14)\sourcemm&quot;;&quot;$(SOURCEMM14)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SOURCEMOD_MM_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;SOURCEMOD_BUILD;SM_DEFAULT_THREADER"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="0"
@@ -552,7 +552,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sourcemod.1.ep1.dll"
 				LinkIncremental="1"
 				GenerateDebugInformation="true"
@@ -603,10 +603,6 @@
 				RelativePath="..\ADTFactory.cpp"
 				>
 			</File>
-			<File
-				RelativePath="..\bitbuf.cpp"
-				>
-			</File>
 			<File
 				RelativePath="..\CDataPack.cpp"
 				>
diff --git a/core/smn_usermsgs.cpp b/core/smn_usermsgs.cpp
index 083d333c..0e68d395 100644
--- a/core/smn_usermsgs.cpp
+++ b/core/smn_usermsgs.cpp
@@ -112,9 +112,7 @@ void UsrMessageNatives::OnHandleDestroy(HandleType_t type, void *object)
 
 bool UsrMessageNatives::GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
 {
-	bf_read *pRead = (bf_read *)object;
-
-	*pSize = sizeof(bf_read) + pRead->GetNumBytesRead() + pRead->GetNumBytesLeft();
+	*pSize = sizeof(bf_read);
 
 	return true;
 }
diff --git a/core/smn_vector.cpp b/core/smn_vector.cpp
index 705740ee..96bf57b9 100644
--- a/core/smn_vector.cpp
+++ b/core/smn_vector.cpp
@@ -31,7 +31,11 @@
 
 #include "sm_globals.h"
 #include <vector.h>
-#include <mathlib/math_base.h>
+#if defined ORANGEBOX_BUILD
+#include <mathlib.h>
+#else
+#include <math_base.h>
+#endif
 
 #define SET_VECTOR(addr, vec) \
 	addr[0] = sp_ftoc(vec.x); \
@@ -181,16 +185,6 @@ static cell_t NormalizeVector(IPluginContext *pContext, const cell_t *params)
 	return sp_ftoc(length);
 }
 
-//:TODO: OMG remove this when we get the OB SDK!!1
-// as well as bitbuf.cpp (i write it here just to remind it)
-#if defined ORANGEBOX_BUILD && !defined __linux__
-float ham(float _X)
-{
-	return sqrt(_X); 
-}
-float (*pfSqrt)(float x)  = ham;
-#endif
-
 REGISTER_NATIVES(vectorNatives)
 {
 	{"GetAngleVectors",			GetAngleVectors},
diff --git a/extensions/cstrike/msvc8/cstrike.vcproj b/extensions/cstrike/msvc8/cstrike.vcproj
index bdf9c936..8821c1ee 100644
--- a/extensions/cstrike/msvc8/cstrike.vcproj
+++ b/extensions/cstrike/msvc8/cstrike.vcproj
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="Windows-1252"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
-	Version="8,00"
+	Version="8.00"
 	Name="cstrike"
 	ProjectGUID="{B3E797CF-4E77-4C9D-B8A8-7589B6902206}"
 	RootNamespace="cstrike"
@@ -200,7 +200,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM16);$(SOURCEMM16)\sourcemm;$(SOURCEMM16)\sourcehook"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -223,7 +223,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\game.cstrike.ext.dll"
 				LinkIncremental="2"
 				GenerateDebugInformation="true"
@@ -280,7 +280,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM16);$(SOURCEMM16)\sourcemm;$(SOURCEMM16)\sourcehook"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -303,7 +303,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDKOB)\lib\public\tier0.lib $(HL2SDKOB)\lib\public\tier1.lib $(HL2SDKOB)\lib\public\vstdlib.lib $(HL2SDKOB)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDKOB)\lib\public\tier0.lib&quot; &quot;$(HL2SDKOB)\lib\public\tier1.lib&quot; &quot;$(HL2SDKOB)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDKOB)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\game.cstrike.ext.dll"
 				LinkIncremental="2"
 				GenerateDebugInformation="true"
@@ -360,7 +360,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM14);$(SOURCEMM14)\sourcemm;$(SOURCEMM14)\sourcehook"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -383,7 +383,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\game.cstrike.ext.dll"
 				LinkIncremental="2"
 				GenerateDebugInformation="true"
@@ -441,7 +441,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM14);$(SOURCEMM14)\sourcemm;$(SOURCEMM14)\sourcehook"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"
@@ -462,7 +462,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\game.cstrike.ext.dll"
 				LinkIncremental="1"
 				GenerateDebugInformation="true"
@@ -522,7 +522,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM16);$(SOURCEMM16)\sourcemm;$(SOURCEMM16)\sourcehook"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"
@@ -543,7 +543,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDKOB)\lib\public\tier0.lib $(HL2SDKOB)\lib\public\tier1.lib $(HL2SDKOB)\lib\public\vstdlib.lib $(HL2SDKOB)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDKOB)\lib\public\tier0.lib&quot; &quot;$(HL2SDKOB)\lib\public\tier1.lib&quot; &quot;$(HL2SDKOB)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDKOB)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\game.cstrike.ext.dll"
 				LinkIncremental="1"
 				GenerateDebugInformation="true"
@@ -603,7 +603,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM16);$(SOURCEMM16)\sourcemm;$(SOURCEMM16)\sourcehook"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"
@@ -624,7 +624,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\game.cstrike.ext.dll"
 				LinkIncremental="1"
 				GenerateDebugInformation="true"
diff --git a/extensions/sdktools/msvc8/sdktools.vcproj b/extensions/sdktools/msvc8/sdktools.vcproj
index d5c6e484..4cdb9edb 100644
--- a/extensions/sdktools/msvc8/sdktools.vcproj
+++ b/extensions/sdktools/msvc8/sdktools.vcproj
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="Windows-1252"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
-	Version="8,00"
+	Version="8.00"
 	Name="sdktools"
 	ProjectGUID="{7A740927-C751-4312-BF9D-6367F8C508F8}"
 	RootNamespace="sdk"
@@ -202,7 +202,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\dlls&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;&apos;$(HL2SDKOB)\public\tier1&quot;&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;ORANGEBOX_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -225,7 +225,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDKOB)\lib\public\tier0.lib $(HL2SDKOB)\lib\public\tier1.lib $(HL2SDKOB)\lib\public\vstdlib.lib $(HL2SDKOB)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDKOB)\lib\public\tier0.lib&quot; &quot;$(HL2SDKOB)\lib\public\tier1.lib&quot; &quot;$(HL2SDKOB)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDKOB)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sdktools.ext.dll"
 				LinkIncremental="2"
 				IgnoreDefaultLibraryNames="LIBCMT"
@@ -283,7 +283,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -306,7 +306,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sdktools.ext.dll"
 				LinkIncremental="2"
 				IgnoreDefaultLibraryNames="LIBCMT"
@@ -364,7 +364,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM14)&quot;;&quot;$(SOURCEMM14)\sourcemm&quot;;&quot;$(SOURCEMM14)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -387,7 +387,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sdktools.ext.dll"
 				LinkIncremental="2"
 				IgnoreDefaultLibraryNames="LIBCMT"
@@ -446,7 +446,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\dlls&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;&apos;$(HL2SDKOB)\public\tier1&quot;&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;ORANGEBOX_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"
@@ -467,7 +467,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDKOB)\lib\public\tier0.lib $(HL2SDKOB)\lib\public\tier1.lib $(HL2SDKOB)\lib\public\vstdlib.lib $(HL2SDKOB)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDKOB)\lib\public\tier0.lib&quot; &quot;$(HL2SDKOB)\lib\public\tier1.lib&quot; &quot;$(HL2SDKOB)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDKOB)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sdktools.ext.dll"
 				LinkIncremental="1"
 				GenerateDebugInformation="true"
@@ -527,7 +527,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"
@@ -548,7 +548,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sdktools.ext.dll"
 				LinkIncremental="1"
 				GenerateDebugInformation="true"
@@ -608,7 +608,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM14)&quot;;&quot;$(SOURCEMM14)\sourcemm&quot;;&quot;$(SOURCEMM14)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"
@@ -629,7 +629,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sdktools.ext.dll"
 				LinkIncremental="1"
 				GenerateDebugInformation="true"

From 7a5b8caa16a06c3efafc5bc445fc39342985e7e6 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Thu, 21 Feb 2008 01:03:35 +0000
Subject: [PATCH 188/263] Added amb1460 - BfGetNumBytesLeft

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401878
---
 core/smn_bitbuffer.cpp        | 20 ++++++++++++++++++++
 plugins/include/bitbuffer.inc |  9 +++++++++
 2 files changed, 29 insertions(+)

diff --git a/core/smn_bitbuffer.cpp b/core/smn_bitbuffer.cpp
index 7db96957..949717e2 100644
--- a/core/smn_bitbuffer.cpp
+++ b/core/smn_bitbuffer.cpp
@@ -651,6 +651,25 @@ static cell_t smn_BfReadAngles(IPluginContext *pCtx, const cell_t *params)
 	return 1;
 }
 
+static cell_t smn_BfGetNumBytesLeft(IPluginContext *pCtx, const cell_t *params)
+{
+	Handle_t hndl = static_cast<Handle_t>(params[1]);
+	HandleError herr;
+	HandleSecurity sec;
+	bf_read *pBitBuf;
+
+	sec.pOwner = NULL;
+	sec.pIdentity = g_pCoreIdent;
+
+	if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
+		!= HandleError_None)
+	{
+		return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
+	}
+
+	return pBitBuf->GetNumBitsLeft() >> 3;
+}
+
 REGISTER_NATIVES(bitbufnatives)
 {
 	{"BfWriteBool",				smn_BfWriteBool},
@@ -681,5 +700,6 @@ REGISTER_NATIVES(bitbufnatives)
 	{"BfReadVecCoord",			smn_BfReadVecCoord},
 	{"BfReadVecNormal",			smn_BfReadVecNormal},
 	{"BfReadAngles",			smn_BfReadAngles},
+	{"BfGetNumBytesLeft",		smn_BfGetNumBytesLeft},
 	{NULL,						NULL}
 };
diff --git a/plugins/include/bitbuffer.inc b/plugins/include/bitbuffer.inc
index ddf0790d..87de566c 100644
--- a/plugins/include/bitbuffer.inc
+++ b/plugins/include/bitbuffer.inc
@@ -314,3 +314,12 @@ native BfReadVecNormal(Handle:bf, Float:vec[3]);
  * @error				Invalid or incorrect Handle.
  */
 native BfReadAngles(Handle:bf, Float:angles[3]);
+
+/**
+ * Returns the number of bytes left in a readable bitbuffer (bf_read).
+ *
+ * @param bf			bf_read handle to read from.
+ * @return				Number of bytes left unread.
+ * @error				Invalid or incorrect Handle.
+ */
+native BfGetNumBytesLeft(Handle:bf);

From cf52d02803d186bae853f35b5cf48facebc55e03 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 01:56:22 +0000
Subject: [PATCH 189/263] fixed amb1468 - renderer marked disabled items as
 valid selections

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401879
---
 core/MenuManager.cpp | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/core/MenuManager.cpp b/core/MenuManager.cpp
index c68fe454..c7b64c1d 100644
--- a/core/MenuManager.cpp
+++ b/core/MenuManager.cpp
@@ -448,7 +448,14 @@ skip_search:
 			if (position != 0)
 			{
 				slots[position].item = drawItems[i].position;
-				slots[position].type = ItemSel_Item;
+				if ((dr.style & ITEMDRAW_DISABLED) == ITEMDRAW_DISABLED)
+				{
+					slots[position].type = ItemSel_None;
+				}
+				else
+				{
+					slots[position].type = ItemSel_Item;
+				}
 			}
 		}
 	}
@@ -469,7 +476,14 @@ skip_search:
 			if (position != 0)
 			{
 				slots[position].item = drawItems[i].position;
-				slots[position].type = ItemSel_Item;
+				if ((dr.style & ITEMDRAW_DISABLED) == ITEMDRAW_DISABLED)
+				{
+					slots[position].type = ItemSel_None;
+				}
+				else
+				{
+					slots[position].type = ItemSel_Item;
+				}
 			}
 		}
 	}

From e4450610dabc8e4e05ade4ad854d6024d34199d7 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 02:23:17 +0000
Subject: [PATCH 190/263] amb1443 - SQL_QuoteString -> SQL_EscapeString

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401880
---
 core/smn_database.cpp         |  1 +
 plugins/admin-sql-threaded.sp |  2 +-
 plugins/include/dbi.inc       | 29 ++++++++++++++++++++++++++---
 plugins/sql-admin-manager.sp  | 20 ++++++++++----------
 4 files changed, 38 insertions(+), 14 deletions(-)

diff --git a/core/smn_database.cpp b/core/smn_database.cpp
index b53a271e..34f30f5c 100644
--- a/core/smn_database.cpp
+++ b/core/smn_database.cpp
@@ -1271,6 +1271,7 @@ REGISTER_NATIVES(dbNatives)
 	{"SQL_CheckConfig",			SQL_CheckConfig},
 	{"SQL_Connect",				SQL_Connect},
 	{"SQL_ConnectEx",			SQL_ConnectEx},
+	{"SQL_EscapeString",		SQL_QuoteString},
 	{"SQL_Execute",				SQL_Execute},
 	{"SQL_FastQuery",			SQL_FastQuery},
 	{"SQL_FetchFloat",			SQL_FetchFloat},
diff --git a/plugins/admin-sql-threaded.sp b/plugins/admin-sql-threaded.sp
index d5094eb0..601acd18 100644
--- a/plugins/admin-sql-threaded.sp
+++ b/plugins/admin-sql-threaded.sp
@@ -484,7 +484,7 @@ FetchUser(Handle:db, client)
 		}
 	}
 	
-	SQL_QuoteString(db, name, safe_name, sizeof(safe_name));
+	SQL_EscapeString(db, name, safe_name, sizeof(safe_name));
 	
 	/**
 	 * Construct the query using the information the user gave us.
diff --git a/plugins/include/dbi.inc b/plugins/include/dbi.inc
index c61ac0ce..cba44810 100644
--- a/plugins/include/dbi.inc
+++ b/plugins/include/dbi.inc
@@ -235,8 +235,14 @@ native SQL_GetInsertId(Handle:hndl);
 native bool:SQL_GetError(Handle:hndl, String:error[], maxlength);
 
 /**
- * Quotes a database string for literal insertion.  This is not needed
- * for binding strings in prepared statements.
+ * Escapes a database string for literal insertion.  This is not needed
+ * for binding strings in prepared statements.  
+ *
+ * Generally, database strings are inserted into queries enclosed in 
+ * single quotes (').  If user input has a single quote in it, the 
+ * quote needs to be escaped.  This function ensures that any unsafe 
+ * characters are safely escaped according to the database engine and 
+ * the database's character set.
  *
  * @param hndl			A database Handle.
  * @param string		String to quote.
@@ -247,7 +253,24 @@ native bool:SQL_GetError(Handle:hndl, String:error[], maxlength);
  *						The buffer must be at least 2*strlen(string)+1.
  * @error				Invalid database or statement Handle.
  */
-native bool:SQL_QuoteString(Handle:database, const String:string[], String:buffer[], maxlength, &written=0);
+native bool:SQL_EscapeString(Handle:database, 
+							 const String:string[], 
+							 String:buffer[], 
+							 maxlength, 
+							 &written=0);
+
+/**
+ * This is a backwards compatibility stock.  You should use SQL_EscapeString() 
+ * instead, as this function will probably be deprecated in SourceMod 1.1.
+ */
+stock bool:SQL_QuoteString(Handle:database,
+						   const String:string[],
+						   String:buffer[],
+						   maxlength,
+						   &written=0)
+{
+	return SQL_EscapeString(database, string, buffer, maxlength, written);
+}
 
 /**
  * Executes a query and ignores the result set.
diff --git a/plugins/sql-admin-manager.sp b/plugins/sql-admin-manager.sp
index 33d1bcb0..587ea1e6 100644
--- a/plugins/sql-admin-manager.sp
+++ b/plugins/sql-admin-manager.sp
@@ -417,7 +417,7 @@ public Action:Command_SetAdminGroups(client, args)
 	decl String:identity[65];
 	decl String:safe_identity[140];
 	GetCmdArg(2, identity, sizeof(identity));
-	SQL_QuoteString(db, identity, safe_identity, sizeof(safe_identity));
+	SQL_EscapeString(db, identity, safe_identity, sizeof(safe_identity));
 	
 	decl String:query[255];
 	Format(query, 
@@ -541,9 +541,9 @@ public Action:Command_DelGroup(client, args)
 	if (len > 1 && (name[0] == '"' && name[len-1] == '"'))
 	{
 		name[--len] = '\0';
-		SQL_QuoteString(db, name[1], safe_name, sizeof(safe_name));
+		SQL_EscapeString(db, name[1], safe_name, sizeof(safe_name));
 	} else {
-		SQL_QuoteString(db, name, safe_name, sizeof(safe_name));
+		SQL_EscapeString(db, name, safe_name, sizeof(safe_name));
 	}
 	
 	decl String:query[256];
@@ -632,7 +632,7 @@ public Action:Command_AddGroup(client, args)
 	decl String:name[64];
 	decl String:safe_name[64];
 	GetCmdArg(1, name, sizeof(name));
-	SQL_QuoteString(db, name, safe_name, sizeof(safe_name));
+	SQL_EscapeString(db, name, safe_name, sizeof(safe_name));
 	
 	new Handle:hQuery;
 	decl String:query[256];
@@ -655,7 +655,7 @@ public Action:Command_AddGroup(client, args)
 	decl String:flags[30];
 	decl String:safe_flags[64];
 	GetCmdArg(2, flags, sizeof(safe_flags));
-	SQL_QuoteString(db, flags, safe_flags, sizeof(safe_flags));
+	SQL_EscapeString(db, flags, safe_flags, sizeof(safe_flags));
 	
 	Format(query, 
 		sizeof(query),
@@ -706,7 +706,7 @@ public Action:Command_DelAdmin(client, args)
 	decl String:identity[65];
 	decl String:safe_identity[140];
 	GetCmdArg(2, identity, sizeof(identity));
-	SQL_QuoteString(db, identity, safe_identity, sizeof(safe_identity));
+	SQL_EscapeString(db, identity, safe_identity, sizeof(safe_identity));
 	
 	decl String:query[255];
 	Format(query, 
@@ -798,7 +798,7 @@ public Action:Command_AddAdmin(client, args)
 		return Plugin_Handled;
 	}
 	
-	SQL_QuoteString(db, identity, safe_identity, sizeof(safe_identity));
+	SQL_EscapeString(db, identity, safe_identity, sizeof(safe_identity));
 	
 	Format(query, sizeof(query), "SELECT id FROM sm_admins WHERE authtype = '%s' AND identity = '%s'", authtype, identity);
 	if ((hQuery = SQL_Query(db, query)) == INVALID_HANDLE)
@@ -819,19 +819,19 @@ public Action:Command_AddAdmin(client, args)
 	decl String:alias[64];
 	decl String:safe_alias[140];
 	GetCmdArg(1, alias, sizeof(alias));
-	SQL_QuoteString(db, alias, safe_alias, sizeof(safe_alias));
+	SQL_EscapeString(db, alias, safe_alias, sizeof(safe_alias));
 	
 	decl String:flags[30];
 	decl String:safe_flags[64];
 	GetCmdArg(4, flags, sizeof(flags));
-	SQL_QuoteString(db, flags, safe_flags, sizeof(safe_flags));
+	SQL_EscapeString(db, flags, safe_flags, sizeof(safe_flags));
 	
 	decl String:password[32];
 	decl String:safe_password[80];
 	if (args > 4)
 	{
 		GetCmdArg(5, password, sizeof(password));
-		SQL_QuoteString(db, password, safe_password, sizeof(safe_password));
+		SQL_EscapeString(db, password, safe_password, sizeof(safe_password));
 	} else {
 		safe_password[0] = '\0';
 	}

From 750edc27e209e9273c31c695cc24e008834a2b1c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 02:27:08 +0000
Subject: [PATCH 191/263] fixed some pointless typos

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401881
---
 configs/cfg/sourcemod.cfg | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/configs/cfg/sourcemod.cfg b/configs/cfg/sourcemod.cfg
index b98133a6..0c4f4dd7 100644
--- a/configs/cfg/sourcemod.cfg
+++ b/configs/cfg/sourcemod.cfg
@@ -89,14 +89,14 @@ sm_hide_slots 0
 // Specifies whether or not non-admins can send messages to admins using
 // say_team @<message>. Valid values are 0 (disabled) or 1 (enabled)
 // --
-// Required: basechat.smx
+// Requires: basechat.smx
 // Default: 1
 sm_chat_mode 1
 
 // Specifies whether or not "timeleft" will automaticly be triggered every
 // x seconds. Valid values are 0 (disabled) to 1800 seconds.
 // --
-// Required: basetriggers.smx
+// Requires: basetriggers.smx
 // Default: 0
 sm_timeleft_interval 0
 
@@ -104,6 +104,6 @@ sm_timeleft_interval 0
 // the player who requested the info trigger. Valid values are 0 (Disabled) or
 // 1 (Enabled)
 // --
-// Required: basetriggers.smx
+// Requires: basetriggers.smx
 // Default: 1
 sm_trigger_show 1

From d7443c5af99851af5e2184b30dd2f105af2f82c9 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 02:27:41 +0000
Subject: [PATCH 192/263] what

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401882
---
 configs/plugin_settings.cfg | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configs/plugin_settings.cfg b/configs/plugin_settings.cfg
index 20212f7a..d8364de0 100644
--- a/configs/plugin_settings.cfg
+++ b/configs/plugin_settings.cfg
@@ -4,7 +4,7 @@
  * If the filename has no explicit path, it will be patched to any sub-path in the plugins folder.
  *
  *   Available properties for plugins are:
- * "pause"			- Whether or not the plugin should load paused - "yes" or "no" (defualt)
+ * "pause"			- Whether or not the plugin should load paused - "yes" or "no" (default)
  * "lifetime"		- Lifetime of the plugin.  Options:
  *		  "mapsync"	 - Plugins should be reloaded on mapchange if changed (default)
  *		  "global"	 - Plugin will never be unloaded or updated

From 5827c76897ebaaeade3dbcde086cb4c2202cfb9d Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 02:28:33 +0000
Subject: [PATCH 193/263] added sourcemod's VDF file.  yay

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401883
---
 configs/metamod/sourcemod.vdf | 5 +++++
 1 file changed, 5 insertions(+)
 create mode 100644 configs/metamod/sourcemod.vdf

diff --git a/configs/metamod/sourcemod.vdf b/configs/metamod/sourcemod.vdf
new file mode 100644
index 00000000..c29686c4
--- /dev/null
+++ b/configs/metamod/sourcemod.vdf
@@ -0,0 +1,5 @@
+"Metamod Plugin"
+{
+	"alias"		"sourcemod"
+	"file"		"addons/sourcemod/bin/sourcemod_mm"
+}

From 5398db729c743ec8f64650e433f4200a77ee2a98 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 14:16:53 +0000
Subject: [PATCH 194/263] shiny new Makefiles with new build procedure.  i've
 removed ep1+mms16 support for now.  i've also removed -fPIC since it's
 useless bloat on modern x86.

--HG--
rename : core/Makefile.orig => core/Makefile
rename : extensions/cstrike/Makefile.orig => extensions/cstrike/Makefile
rename : extensions/sdktools/Makefile.orig => extensions/sdktools/Makefile
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401884
---
 core/{Makefile.orig => Makefile}              |  91 ++++++++------
 core/Makefile.ep1                             | 108 -----------------
 core/Makefile.ep2                             | 111 ------------------
 extensions/bintools/Makefile                  |   2 +-
 .../cstrike/{Makefile.orig => Makefile}       |  71 ++++++-----
 extensions/cstrike/Makefile.ep1               |  88 --------------
 extensions/cstrike/Makefile.ep2               |  88 --------------
 extensions/geoip/Makefile                     |   2 +-
 extensions/mysql/Makefile                     |   2 +-
 .../sdktools/{Makefile.ep1 => Makefile}       |  71 ++++++-----
 extensions/sdktools/Makefile.ep2              |  90 --------------
 extensions/sdktools/Makefile.orig             |  90 --------------
 extensions/sqlite/Makefile                    |   2 +-
 extensions/topmenus/Makefile                  |   2 +-
 14 files changed, 145 insertions(+), 673 deletions(-)
 rename core/{Makefile.orig => Makefile} (60%)
 delete mode 100644 core/Makefile.ep1
 delete mode 100644 core/Makefile.ep2
 rename extensions/cstrike/{Makefile.orig => Makefile} (51%)
 delete mode 100644 extensions/cstrike/Makefile.ep1
 delete mode 100644 extensions/cstrike/Makefile.ep2
 rename extensions/sdktools/{Makefile.ep1 => Makefile} (51%)
 delete mode 100644 extensions/sdktools/Makefile.ep2
 delete mode 100644 extensions/sdktools/Makefile.orig

diff --git a/core/Makefile.orig b/core/Makefile
similarity index 60%
rename from core/Makefile.orig
rename to core/Makefile
index 278ca7e8..e76f34ea 100644
--- a/core/Makefile.orig
+++ b/core/Makefile
@@ -1,22 +1,21 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
-SMM_BASE = ../../sourcemm-1.4
-HL2SDK = ../../hl2sdk
+#Local paths
+HL2SDK_ORIG = ../../hl2sdk
+HL2SDK_OB = ../../hl2sdk-ob
+SOURCEMM14 = ../../sourcemm-1.4
+SOURCEMM16 = ../../sourcemm-1.6
+SRCDS_BASE = ~/srcds
 SMSDK = ..
-SRCDS = ~/srcds
-
-### EDIT BELOW FOR OTHER PROJECTS ###
 
+#Project options
 OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
 GCC4_FLAGS = -fvisibility=hidden 
 GCC4_CPP_FLAGS = -fvisibility-inlines-hidden
 DEBUG_FLAGS = -g -ggdb3
 CPP = gcc-4.1
-BINARY = sourcemod.1.ep1.so
 
-HL2PUB = $(HL2SDK)/public
-HL2LIB = $(HL2SDK)/linux_sdk
 
 OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreConfig.cpp \
 	Database.cpp DebugReporter.cpp EventManager.cpp GameConfigs.cpp HalfLife2.cpp Logger.cpp \
@@ -33,34 +32,59 @@ OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp \
 	smn_adt_trie.cpp
 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
-	  systems/LibrarySys.cpp systems/PluginInfoDatabase.cpp systems/PluginSys.cpp \
-	  systems/ShareSys.cpp vm/sp_vm_basecontext.cpp vm/sp_vm_engine.cpp \
-	  vm/sp_vm_function.cpp
+	systems/LibrarySys.cpp systems/PluginInfoDatabase.cpp systems/PluginSys.cpp \
+	systems/ShareSys.cpp vm/sp_vm_basecontext.cpp vm/sp_vm_engine.cpp \
+	vm/sp_vm_function.cpp
 OBJECTS += thread/ThreadWorker.cpp thread/BaseWorker.cpp thread/PosixThreads.cpp ThreadSupport.cpp
 OBJECTS_C = zlib/adler32.c zlib/compress.c zlib/crc32.c zlib/deflate.c zlib/gzio.c \
 	   zlib/infback.c zlib/inffast.c zlib/inflate.c zlib/inftrees.c zlib/trees.c \
 	   zlib/uncompr.c zlib/zutil.c
 
-LINK = $(HL2LIB)/tier1_i486.a $(HL2LIB)/mathlib_i486.a vstdlib_i486.so tier0_i486.so -lpthread -static-libgcc
+ifeq "$(ENGINE)" "original"
+	HL2SDK = $(HL2SDK_ORIG)
+	HL2PUB = $(HL2SDK_ORIG)/public
+	HL2LIB = $(HL2SDK)/linux_sdk
+	METAMOD = $(SOURCEMM14)
+	INCLUDE += -I$(HL2PUB)/dlls
+	SRCDS = $(SRCDS_BASE)
+	BINARY = sourcemod.1.ep1.so
+endif
+ifeq "$(ENGINE)" "orangebox"
+	HL2SDK = $(HL2SDK_OB)
+	HL2PUB = $(HL2SDK_OB)/public
+	HL2LIB = $(HL2SDK)/linux_sdk
+	CFLAGS += -DORANGEBOX_BUILD
+	METAMOD = $(SOURCEMM16)
+	INCLUDE += -I$(HL2PUB)/game/server
+	SRCDS = $(SRCDS_BASE)/orangebox
+	BINARY = sourcemod.2.ep2.so
+endif
+ifeq "$(BINARY)" ""
+	echo "You must supply ENGINE=orangebox or ENGINE=original"
+	false
+endif
 
-INCLUDE = -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
-          -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SMM_BASE) -I$(SMM_BASE)/sourcehook -I$(SMM_BASE)/sourcemm \
-	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
-	  -Isystems
+LINK += $(HL2LIB)/tier1_i486.a $(HL2LIB)/mathlib_i486.a vstdlib_i486.so \
+	tier0_i486.so -lpthread -static-libgcc
+
+INCLUDE += -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
+	-I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(METAMOD) -I$(METAMOD)/sourcehook -I$(METAMOD)/sourcemm \
+	-I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions -Isystems \
+	-I$(HL2PUB)/mathlib
 
 ifeq "$(DEBUG)" "true"
-	BIN_DIR = Debug
-	CFLAGS = $(DEBUG_FLAGS)
+	BIN_DIR = Debug.$(ENGINE)
+	CFLAGS += $(DEBUG_FLAGS)
 else
-	BIN_DIR = Release
-	CFLAGS = $(OPT_FLAGS)
+	BIN_DIR = Release.$(ENGINE)
+	CFLAGS += $(OPT_FLAGS)
 endif
 
 GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
 
 CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
 	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
-	-Dstrcmpi=strcasecmp -Wall -Wno-uninitialized -Werror -fPIC -mfpmath=sse -msse \
+	-Dstrcmpi=strcasecmp -Wall -Wno-uninitialized -Werror -mfpmath=sse -msse \
 	-DSOURCEMOD_BUILD -DSM_DEFAULT_THREADER -m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
 
@@ -85,27 +109,18 @@ all:
 	mkdir -p $(BIN_DIR)/thread
 	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
 	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
-	$(MAKE) -f Makefile.orig sourcemod
+	$(MAKE) -f Makefile sourcemod
 
 sourcemod: $(OBJ_LINUX) $(OBJ_LINUX_C)
 	$(CPP) $(INCLUDE) $(OBJ_LINUX) $(OBJ_LINUX_C) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
-debug:	
-	$(MAKE) -f Makefile.orig all DEBUG=true
-
 default: all
 
 clean:
-	rm -rf Release/*.ox
-	rm -rf Release/systems/*.ox
-	rm -rf Release/zlib/*.oc
-	rm -rf Release/vm/*.ox
-	rm -rf Release/thread/*.ox
-	rm -rf Release/$(BINARY)
-	rm -rf Debug/*.ox
-	rm -rf Debug/systems/*.ox
-	rm -rf Debug/zlib/*.oc
-	rm -rf Debug/vm/*.ox
-	rm -rf Debug/thread/*.ox
-	rm -rf Debug/$(BINARY)
+	rm -rf $(BIN_DIR)/*.ox
+	rm -rf $(BIN_DIR)/systems/*.ox
+	rm -rf $(BIN_DIR)/zlib/*.oc
+	rm -rf $(BIN_DIR)/vm/*.ox
+	rm -rf $(BIN_DIR)/thread/*.ox
+	rm -rf $(BIN_DIR)/$(BINARY)
 
diff --git a/core/Makefile.ep1 b/core/Makefile.ep1
deleted file mode 100644
index 01002949..00000000
--- a/core/Makefile.ep1
+++ /dev/null
@@ -1,108 +0,0 @@
-#(C)2004-2006 SourceMM Development Team
-# Makefile written by David "BAILOPAN" Anderson
-
-SMM_BASE = ../../sourcemm-1.6
-HL2SDK = ../../hl2sdk
-SMSDK = ..
-SRCDS = ~/srcds
-
-### EDIT BELOW FOR OTHER PROJECTS ###
-
-OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
-GCC4_FLAGS = -fvisibility=hidden 
-GCC4_CPP_FLAGS = -fvisibility-inlines-hidden
-DEBUG_FLAGS = -g -ggdb3
-CPP = gcc-4.1
-BINARY = sourcemod.2.ep1.so
-
-HL2PUB = $(HL2SDK)/public
-HL2LIB = $(HL2SDK)/linux_sdk
-
-OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreConfig.cpp \
-	Database.cpp DebugReporter.cpp EventManager.cpp GameConfigs.cpp HalfLife2.cpp Logger.cpp \
-	MemoryUtils.cpp PlayerManager.cpp TextParsers.cpp TimerSys.cpp Translator.cpp UserMessages.cpp \
-	sm_autonatives.cpp sm_memtable.cpp sm_srvcmds.cpp sm_stringutil.cpp sm_trie.cpp \
-	sourcemm_api.cpp sourcemod.cpp MenuStyle_Base.cpp MenuStyle_Valve.cpp MenuManager.cpp \
-	MenuStyle_Radio.cpp ChatTriggers.cpp ADTFactory.cpp MenuVoting.cpp sm_crc32.cpp \
-	frame_hooks.cpp concmd_cleaner.cpp
-OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
-	smn_datapacks.cpp smn_entities.cpp smn_events.cpp smn_fakenatives.cpp \
-	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
-	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplists.cpp \
-	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
-	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp \
-	smn_adt_trie.cpp
-OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
-	  systems/LibrarySys.cpp systems/PluginInfoDatabase.cpp systems/PluginSys.cpp \
-	  systems/ShareSys.cpp vm/sp_vm_basecontext.cpp vm/sp_vm_engine.cpp \
-	  vm/sp_vm_function.cpp
-OBJECTS += thread/ThreadWorker.cpp thread/BaseWorker.cpp thread/PosixThreads.cpp ThreadSupport.cpp
-OBJECTS_C = zlib/adler32.c zlib/compress.c zlib/crc32.c zlib/deflate.c zlib/gzio.c \
-	   zlib/infback.c zlib/inffast.c zlib/inflate.c zlib/inftrees.c zlib/trees.c \
-	   zlib/uncompr.c zlib/zutil.c
-
-LINK = $(HL2LIB)/tier1_i486.a $(HL2LIB)/mathlib_i486.a vstdlib_i486.so tier0_i486.so -lpthread -static-libgcc
-
-INCLUDE = -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
-          -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SMM_BASE) -I$(SMM_BASE)/sourcehook -I$(SMM_BASE)/sourcemm \
-	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
-	  -Isystems
-
-ifeq "$(DEBUG)" "true"
-	BIN_DIR = Debug
-	CFLAGS = $(DEBUG_FLAGS)
-else
-	BIN_DIR = Release
-	CFLAGS = $(OPT_FLAGS)
-endif
-
-GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
-
-CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Wno-uninitialized -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DSM_DEFAULT_THREADER
-CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
-
-ifeq "$(GCC_VERSION)" "4"
-	CFLAGS += $(GCC4_FLAGS)
-	CPPFLAGS += $(GCC4_CPP_FLAGS)
-endif
-
-OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.ox)
-OBJ_LINUX_C := $(OBJECTS_C:%.c=$(BIN_DIR)/%.oc)
-
-$(BIN_DIR)/%.ox: %.cpp
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
-
-$(BIN_DIR)/%.oc: %.c
-	$(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $<
-
-all:
-	mkdir -p $(BIN_DIR)/systems
-	mkdir -p $(BIN_DIR)/vm
-	mkdir -p $(BIN_DIR)/zlib
-	mkdir -p $(BIN_DIR)/thread
-	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
-	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
-	$(MAKE) -f Makefile.ep1 sourcemod
-
-sourcemod: $(OBJ_LINUX) $(OBJ_LINUX_C)
-	$(CPP) $(INCLUDE) $(OBJ_LINUX) $(OBJ_LINUX_C) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
-
-debug:	
-	$(MAKE) -f Makefile.ep1 all DEBUG=true
-
-default: all
-
-clean:
-	rm -rf Release/*.ox
-	rm -rf Release/systems/*.ox
-	rm -rf Release/zlib/*.oc
-	rm -rf Release/vm/*.ox
-	rm -rf Release/thread/*.ox
-	rm -rf Release/$(BINARY)
-	rm -rf Debug/*.ox
-	rm -rf Debug/systems/*.ox
-	rm -rf Debug/zlib/*.oc
-	rm -rf Debug/vm/*.ox
-	rm -rf Debug/thread/*.ox
-	rm -rf Debug/$(BINARY)
-
diff --git a/core/Makefile.ep2 b/core/Makefile.ep2
deleted file mode 100644
index b5638966..00000000
--- a/core/Makefile.ep2
+++ /dev/null
@@ -1,111 +0,0 @@
-#(C)2004-2006 SourceMM Development Team
-# Makefile written by David "BAILOPAN" Anderson
-
-SMM_BASE = ../../sourcemm-1.6
-HL2SDK = ../../hl2sdk-ob
-SMSDK = ..
-SRCDS = ~/srcds
-
-### EDIT BELOW FOR OTHER PROJECTS ###
-
-OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
-GCC4_FLAGS = -fvisibility=hidden 
-GCC4_CPP_FLAGS = -fvisibility-inlines-hidden
-DEBUG_FLAGS = -g -ggdb3
-CPP = gcc-4.1
-BINARY = sourcemod.2.ep2.so
-
-HL2PUB = $(HL2SDK)/public
-HL2LIB = $(HL2SDK)/linux_sdk
-
-OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreConfig.cpp \
-	Database.cpp DebugReporter.cpp EventManager.cpp GameConfigs.cpp HalfLife2.cpp Logger.cpp \
-	MemoryUtils.cpp PlayerManager.cpp TextParsers.cpp TimerSys.cpp Translator.cpp UserMessages.cpp \
-	sm_autonatives.cpp sm_memtable.cpp sm_srvcmds.cpp sm_stringutil.cpp sm_trie.cpp \
-	sourcemm_api.cpp sourcemod.cpp MenuStyle_Base.cpp MenuStyle_Valve.cpp MenuManager.cpp \
-	MenuStyle_Radio.cpp ChatTriggers.cpp ADTFactory.cpp MenuVoting.cpp sm_crc32.cpp \
-	frame_hooks.cpp concmd_cleaner.cpp
-OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
-	smn_datapacks.cpp smn_entities.cpp smn_events.cpp smn_fakenatives.cpp \
-	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
-	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplists.cpp \
-	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
-	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp \
-	smn_adt_trie.cpp
-OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
-	  systems/LibrarySys.cpp systems/PluginInfoDatabase.cpp systems/PluginSys.cpp \
-	  systems/ShareSys.cpp vm/sp_vm_basecontext.cpp vm/sp_vm_engine.cpp \
-	  vm/sp_vm_function.cpp
-OBJECTS += thread/ThreadWorker.cpp thread/BaseWorker.cpp thread/PosixThreads.cpp ThreadSupport.cpp
-OBJECTS_C = zlib/adler32.c zlib/compress.c zlib/crc32.c zlib/deflate.c zlib/gzio.c \
-	   zlib/infback.c zlib/inffast.c zlib/inflate.c zlib/inftrees.c zlib/trees.c \
-	   zlib/uncompr.c zlib/zutil.c
-
-LINK = $(HL2LIB)/tier1_i486.a $(HL2LIB)/mathlib_i486.a vstdlib_i486.so tier0_i486.so -lpthread -static-libgcc
-
-INCLUDE = -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
-          -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SMM_BASE) -I$(SMM_BASE)/sourcehook -I$(SMM_BASE)/sourcemm \
-	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
-	  -Isystems
-
-ifeq "$(DEBUG)" "true"
-	BIN_DIR = Debug
-	CFLAGS = $(DEBUG_FLAGS)
-else
-	BIN_DIR = Release
-	CFLAGS = $(OPT_FLAGS)
-endif
-
-GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
-
-CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
-	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp \
-	-Wall -Wno-uninitialized -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DSM_DEFAULT_THREADER \
-	-DORANGEBOX_BUILD -m32
-CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
-
-ifeq "$(GCC_VERSION)" "4"
-	CFLAGS += $(GCC4_FLAGS)
-	CPPFLAGS += $(GCC4_CPP_FLAGS)
-endif
-
-OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.ox)
-OBJ_LINUX_C := $(OBJECTS_C:%.c=$(BIN_DIR)/%.oc)
-
-$(BIN_DIR)/%.ox: %.cpp
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
-
-$(BIN_DIR)/%.oc: %.c
-	$(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $<
-
-all:
-	mkdir -p $(BIN_DIR)/systems
-	mkdir -p $(BIN_DIR)/vm
-	mkdir -p $(BIN_DIR)/zlib
-	mkdir -p $(BIN_DIR)/thread
-	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
-	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
-	$(MAKE) -f Makefile.ep2 sourcemod
-
-sourcemod: $(OBJ_LINUX) $(OBJ_LINUX_C)
-	$(CPP) $(INCLUDE) $(OBJ_LINUX) $(OBJ_LINUX_C) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
-
-debug:	
-	$(MAKE) -f Makefile.ep2 all DEBUG=true
-
-default: all
-
-clean:
-	rm -rf Release/*.ox
-	rm -rf Release/systems/*.ox
-	rm -rf Release/zlib/*.oc
-	rm -rf Release/vm/*.ox
-	rm -rf Release/thread/*.ox
-	rm -rf Release/$(BINARY)
-	rm -rf Debug/*.ox
-	rm -rf Debug/systems/*.ox
-	rm -rf Debug/zlib/*.oc
-	rm -rf Debug/vm/*.ox
-	rm -rf Debug/thread/*.ox
-	rm -rf Debug/$(BINARY)
-
diff --git a/extensions/bintools/Makefile b/extensions/bintools/Makefile
index 66a2976e..fd8c1f79 100644
--- a/extensions/bintools/Makefile
+++ b/extensions/bintools/Makefile
@@ -39,7 +39,7 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2
 
 CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
 	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
-	-Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H \
+	-Dstrcmpi=strcasecmp -Wall -Werror -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H \
 	-m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti -m32
 
diff --git a/extensions/cstrike/Makefile.orig b/extensions/cstrike/Makefile
similarity index 51%
rename from extensions/cstrike/Makefile.orig
rename to extensions/cstrike/Makefile
index 51504fca..78c71e63 100644
--- a/extensions/cstrike/Makefile.orig
+++ b/extensions/cstrike/Makefile
@@ -1,10 +1,12 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
+HL2SDK_ORIG = ../../../hl2sdk
+HL2SDK_OB = ../../../hl2sdk-ob
+SOURCEMM14 = ../../../sourcemm-1.4
+SOURCEMM16 = ../../../sourcemm-1.6
+SRCDS_BASE = ~/srcds
 SMSDK = ../..
-SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm-1.4
-HL2SDK = ../../../hl2sdk
 
 #####################################
 ### EDIT BELOW FOR OTHER PROJECTS ###
@@ -12,9 +14,6 @@ HL2SDK = ../../../hl2sdk
 
 PROJECT = game.cstrike
 
-#Uncomment for SourceMM-enabled extensions
-LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
-
 OBJECTS = sdk/smsdk_ext.cpp extension.cpp natives.cpp RegNatives.cpp timeleft.cpp
 
 ##############################################
@@ -26,29 +25,50 @@ C_DEBUG_FLAGS = -g -ggdb3
 CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
 CPP = gcc-4.1
 
-HL2PUB = $(HL2SDK)/public
-HL2LIB = $(HL2SDK)/linux_sdk
+ifeq "$(ENGINE)" "original"
+	HL2SDK = $(HL2SDK_ORIG)
+	HL2PUB = $(HL2SDK_ORIG)/public
+	HL2LIB = $(HL2SDK_ORIG)/linux_sdk
+	METAMOD = $(SOURCEMM14)
+	INCLUDE += -I$(HL2SDK)/public/dlls
+	SRCDS = $(SRCDS_BASE)
+endif
+ifeq "$(ENGINE)" "orangebox"
+	HL2SDK = $(HL2SDK_OB)
+	HL2PUB = $(HL2SDK_OB)/public
+	HL2LIB = $(HL2SDK_OB)/linux_sdk
+	CFLAGS += -DORANGEBOX_BUILD
+	METAMOD = $(SOURCEMM16)
+	INCLUDE += -I$(HL2SDK)/public/game/server
+	SRCDS = $(SRCDS_BASE)/orangebox
+endif
+ifeq "$(ENGINE)" ""
+	echo "You must supply ENGINE=orangebox or ENGINE=original"
+	false
+endif
 
-LINK = $(LINK_HL2) -static-libgcc
+LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
 
-INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
-          -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
-	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
+LINK += $(LINK_HL2) -static-libgcc
 
-CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+INCLUDE += -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
+	-I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(METAMOD) -I$(METAMOD)/sourcehook -I$(METAMOD)/sourcemm \
+	-I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions 
+
+CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
 	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp \
-	-Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32
-CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti 
+	-Wall -Werror -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32
+CPPFLAGS += -Wno-non-virtual-dtor -fno-exceptions -fno-rtti 
 
 ################################################
 ### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
 ################################################
 
 ifeq "$(DEBUG)" "true"
-	BIN_DIR = Debug
+	BIN_DIR = Debug.$(ENGINE)
 	CFLAGS += $(C_DEBUG_FLAGS)
 else
-	BIN_DIR = Release
+	BIN_DIR = Release.$(ENGINE)
 	CFLAGS += $(C_OPT_FLAGS)
 endif
 
@@ -69,20 +89,15 @@ all:
 	mkdir -p $(BIN_DIR)/sdk
 	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
 	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
-	$(MAKE) -f Makefile.orig extension
+	$(MAKE) -f Makefile extension
 
 extension: $(OBJ_LINUX)
 	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
-debug:	
-	$(MAKE) -f Makefile.orig all DEBUG=true
-
 default: all
 
 clean:
-	rm -rf Release/*.o
-	rm -rf Release/sdk/*.o
-	rm -rf Release/$(BINARY)
-	rm -rf Debug/*.o
-	rm -rf Debug/sdk/*.o
-	rm -rf Debug/$(BINARY)
+	rm -rf $(BIN_DIR)/*.o
+	rm -rf $(BIN_DIR)/sdk/*.o
+	rm -rf $(BIN_DIR)/$(BINARY)
+
diff --git a/extensions/cstrike/Makefile.ep1 b/extensions/cstrike/Makefile.ep1
deleted file mode 100644
index 6bfeafe5..00000000
--- a/extensions/cstrike/Makefile.ep1
+++ /dev/null
@@ -1,88 +0,0 @@
-#(C)2004-2006 SourceMM Development Team
-# Makefile written by David "BAILOPAN" Anderson
-
-SMSDK = ../..
-SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm
-HL2SDK = ../../../hl2sdk
-
-#####################################
-### EDIT BELOW FOR OTHER PROJECTS ###
-#####################################
-
-PROJECT = game.cstrike
-
-#Uncomment for SourceMM-enabled extensions
-LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
-
-OBJECTS = sdk/smsdk_ext.cpp extension.cpp natives.cpp RegNatives.cpp timeleft.cpp
-
-##############################################
-### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
-##############################################
-
-C_OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
-C_DEBUG_FLAGS = -g -ggdb3
-CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
-CPP = gcc-4.1
-
-HL2PUB = $(HL2SDK)/public
-HL2LIB = $(HL2SDK)/linux_sdk
-
-LINK = $(LINK_HL2) -static-libgcc
-
-INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
-          -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
-	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
-
-CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
-	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp \
-	-Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H
-CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
-
-################################################
-### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
-################################################
-
-ifeq "$(DEBUG)" "true"
-	BIN_DIR = Debug
-	CFLAGS += $(C_DEBUG_FLAGS)
-else
-	BIN_DIR = Release
-	CFLAGS += $(C_OPT_FLAGS)
-endif
-
-
-GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
-ifeq "$(GCC_VERSION)" "4"
-	CPPFLAGS += $(CPP_GCC4_FLAGS)
-endif
-
-BINARY = $(PROJECT).ext.so
-
-OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
-
-$(BIN_DIR)/%.o: %.cpp
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
-
-all:
-	mkdir -p $(BIN_DIR)/sdk
-	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
-	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
-	$(MAKE) -f Makefile.ep1 extension
-
-extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
-
-debug:	
-	$(MAKE) -f Makefile.ep1 all DEBUG=true
-
-default: all
-
-clean:
-	rm -rf Release/*.o
-	rm -rf Release/sdk/*.o
-	rm -rf Release/$(BINARY)
-	rm -rf Debug/*.o
-	rm -rf Debug/sdk/*.o
-	rm -rf Debug/$(BINARY)
diff --git a/extensions/cstrike/Makefile.ep2 b/extensions/cstrike/Makefile.ep2
deleted file mode 100644
index 5852266e..00000000
--- a/extensions/cstrike/Makefile.ep2
+++ /dev/null
@@ -1,88 +0,0 @@
-#(C)2004-2006 SourceMM Development Team
-# Makefile written by David "BAILOPAN" Anderson
-
-SMSDK = ../..
-SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm
-HL2SDK = ../../../hl2sdk-ob
-
-#####################################
-### EDIT BELOW FOR OTHER PROJECTS ###
-#####################################
-
-PROJECT = game.cstrike
-
-#Uncomment for SourceMM-enabled extensions
-LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
-
-OBJECTS = sdk/smsdk_ext.cpp extension.cpp natives.cpp RegNatives.cpp timeleft.cpp
-
-##############################################
-### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
-##############################################
-
-C_OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
-C_DEBUG_FLAGS = -g -ggdb3
-CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
-CPP = gcc-4.1
-
-HL2PUB = $(HL2SDK)/public
-HL2LIB = $(HL2SDK)/linux_sdk
-
-LINK = $(LINK_HL2) -static-libgcc
-
-INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
-          -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
-	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
-
-CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
-	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp \
-	-Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -DORANGEBOX_BUILD
-CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
-
-################################################
-### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
-################################################
-
-ifeq "$(DEBUG)" "true"
-	BIN_DIR = Debug
-	CFLAGS += $(C_DEBUG_FLAGS)
-else
-	BIN_DIR = Release
-	CFLAGS += $(C_OPT_FLAGS)
-endif
-
-
-GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
-ifeq "$(GCC_VERSION)" "4"
-	CPPFLAGS += $(CPP_GCC4_FLAGS)
-endif
-
-BINARY = $(PROJECT).ext.so
-
-OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
-
-$(BIN_DIR)/%.o: %.cpp
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
-
-all:
-	mkdir -p $(BIN_DIR)/sdk
-	ln -sf $(SRCDS)/orangebox/bin/vstdlib_i486.so vstdlib_i486.so
-	ln -sf $(SRCDS)/orangebox/bin/tier0_i486.so tier0_i486.so
-	$(MAKE) -f Makefile.ep2 extension
-
-extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
-
-debug:	
-	$(MAKE) -f Makefile.ep2 all DEBUG=true
-
-default: all
-
-clean:
-	rm -rf Release/*.o
-	rm -rf Release/sdk/*.o
-	rm -rf Release/$(BINARY)
-	rm -rf Debug/*.o
-	rm -rf Debug/sdk/*.o
-	rm -rf Debug/$(BINARY)
diff --git a/extensions/geoip/Makefile b/extensions/geoip/Makefile
index fce544d6..29e872f7 100644
--- a/extensions/geoip/Makefile
+++ b/extensions/geoip/Makefile
@@ -38,7 +38,7 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2
 
 CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
 	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
-	-Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD \
+	-Dstrcmpi=strcasecmp -Wall -Werror -mfpmath=sse -msse -DSOURCEMOD_BUILD \
 	-m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
 
diff --git a/extensions/mysql/Makefile b/extensions/mysql/Makefile
index 5af33974..3fb9a0c3 100644
--- a/extensions/mysql/Makefile
+++ b/extensions/mysql/Makefile
@@ -43,7 +43,7 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine \
 
 CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
 	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
-	-Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H \
+	-Dstrcmpi=strcasecmp -Wall -Werror -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H \
 	-Wno-switch -m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
 
diff --git a/extensions/sdktools/Makefile.ep1 b/extensions/sdktools/Makefile
similarity index 51%
rename from extensions/sdktools/Makefile.ep1
rename to extensions/sdktools/Makefile
index 28a16db1..d02951cf 100644
--- a/extensions/sdktools/Makefile.ep1
+++ b/extensions/sdktools/Makefile
@@ -1,10 +1,12 @@
 #(C)2004-2006 SourceMM Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
+HL2SDK_ORIG = ../../../hl2sdk
+HL2SDK_OB = ../../../hl2sdk-ob
+SOURCEMM14 = ../../../sourcemm-1.4
+SOURCEMM16 = ../../../sourcemm-1.6
+SRCDS_BASE = ~/srcds
 SMSDK = ../..
-SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm
-HL2SDK = ../../../hl2sdk
 
 #####################################
 ### EDIT BELOW FOR OTHER PROJECTS ###
@@ -12,9 +14,6 @@ HL2SDK = ../../../hl2sdk
 
 PROJECT = sdktools
 
-#Uncomment for SourceMM-enabled extensions
-LINK_HL2 = $(HL2LIB)/tier1_i486.a $(HL2LIB)/mathlib_i486.a vstdlib_i486.so tier0_i486.so
-
 OBJECTS = sdk/smsdk_ext.cpp extension.cpp vdecoder.cpp vcallbuilder.cpp vcaller.cpp \
 	vnatives.cpp vsound.cpp tenatives.cpp trnatives.cpp tempents.cpp vstringtable.cpp \
 	vhelpers.cpp vglobals.cpp voice.cpp inputnatives.cpp teamnatives.cpp
@@ -28,33 +27,53 @@ C_DEBUG_FLAGS = -g -ggdb3
 CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
 CPP = gcc-4.1
 
-HL2PUB = $(HL2SDK)/public
-HL2LIB = $(HL2SDK)/linux_sdk
+ifeq "$(ENGINE)" "original"
+	HL2SDK = $(HL2SDK_ORIG)
+	HL2PUB = $(HL2SDK_ORIG)/public
+	HL2LIB = $(HL2SDK_ORIG)/linux_sdk
+	METAMOD = $(SOURCEMM14)
+	INCLUDE += -I$(HL2SDK)/public/dlls
+	SRCDS = $(SRCDS_BASE)
+endif
+ifeq "$(ENGINE)" "orangebox"
+	HL2SDK = $(HL2SDK_OB)
+	HL2PUB = $(HL2SDK_OB)/public
+	HL2LIB = $(HL2SDK_OB)/linux_sdk
+	CFLAGS += -DORANGEBOX_BUILD
+	METAMOD = $(SOURCEMM16)
+	INCLUDE += -I$(HL2SDK)/public/game/server -I$(HL2SDK)/common
+	SRCDS = $(SRCDS_BASE)/orangebox
+endif
+ifeq "$(ENGINE)" ""
+	echo "You must supply ENGINE=orangebox or ENGINE=original"
+	false
+endif
 
-LINK = $(LINK_HL2) -static-libgcc
+LINK_HL2 = $(HL2LIB)/tier1_i486.a $(HL2LIB)/mathlib_i486.a vstdlib_i486.so tier0_i486.so
 
-INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
-          -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
-	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
+LINK += $(LINK_HL2) -static-libgcc
 
-CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
+INCLUDE += -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
+	-I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(METAMOD) -I$(METAMOD)/sourcehook -I$(METAMOD)/sourcemm \
+	-I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
+
+CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
 	-D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -Wno-switch \
-	-Wno-unused -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H
-CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti -fno-threadsafe-statics 
+	-Wno-unused -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32
+CPPFLAGS += -Wno-non-virtual-dtor -fno-exceptions -fno-rtti -fno-threadsafe-statics 
 
 ################################################
 ### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
 ################################################
 
 ifeq "$(DEBUG)" "true"
-	BIN_DIR = Debug
+	BIN_DIR = Debug.$(ENGINE)
 	CFLAGS += $(C_DEBUG_FLAGS)
 else
-	BIN_DIR = Release
+	BIN_DIR = Release.$(ENGINE)
 	CFLAGS += $(C_OPT_FLAGS)
 endif
 
-
 GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
 ifeq "$(GCC_VERSION)" "4"
 	CPPFLAGS += $(CPP_GCC4_FLAGS)
@@ -71,20 +90,18 @@ all:
 	mkdir -p $(BIN_DIR)/sdk
 	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
 	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
-	$(MAKE) -f Makefile.ep1 extension
+	$(MAKE) -f Makefile extension
 
 extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+	$(CPP) $(INCLUDE) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 debug:
-	$(MAKE) -f Makefile.ep1 all DEBUG=true
+	$(MAKE) -f Makefile all DEBUG=true
 
 default: all
 
 clean:
-	rm -rf Release/*.o
-	rm -rf Release/sdk/*.o
-	rm -rf Release/$(BINARY)
-	rm -rf Debug/*.o
-	rm -rf Debug/sdk/*.o
-	rm -rf Debug/$(BINARY)
+	rm -rf $(BIN_DIR)/*.o
+	rm -rf $(BIN_DIR)/sdk/*.o
+	rm -rf $(BIN_DIR)/$(BINARY)
+
diff --git a/extensions/sdktools/Makefile.ep2 b/extensions/sdktools/Makefile.ep2
deleted file mode 100644
index b82a0b6d..00000000
--- a/extensions/sdktools/Makefile.ep2
+++ /dev/null
@@ -1,90 +0,0 @@
-#(C)2004-2006 SourceMM Development Team
-# Makefile written by David "BAILOPAN" Anderson
-
-SMSDK = ../..
-SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm-1.6
-HL2SDK = ../../../hl2sdk-ob
-
-#####################################
-### EDIT BELOW FOR OTHER PROJECTS ###
-#####################################
-
-PROJECT = sdktools
-
-#Uncomment for SourceMM-enabled extensions
-LINK_HL2 = $(HL2LIB)/tier1_i486.a $(HL2LIB)/mathlib_i486.a vstdlib_i486.so tier0_i486.so
-
-OBJECTS = sdk/smsdk_ext.cpp extension.cpp vdecoder.cpp vcallbuilder.cpp vcaller.cpp \
-	vnatives.cpp vsound.cpp tenatives.cpp trnatives.cpp tempents.cpp vstringtable.cpp \
-	vhelpers.cpp vglobals.cpp voice.cpp inputnatives.cpp teamnatives.cpp
-
-##############################################
-### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
-##############################################
-
-C_OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
-C_DEBUG_FLAGS = -g -ggdb3
-CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
-CPP = gcc-4.1
-
-HL2PUB = $(HL2SDK)/public
-HL2LIB = $(HL2SDK)/linux_sdk
-
-LINK = $(LINK_HL2) -static-libgcc
-
-INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
-          -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
-	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
-
-CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
-	-D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -Wno-switch \
-	-Wno-unused -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -DORANGEBOX_BUILD -m32
-CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti -fno-threadsafe-statics 
-
-################################################
-### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
-################################################
-
-ifeq "$(DEBUG)" "true"
-	BIN_DIR = Debug
-	CFLAGS += $(C_DEBUG_FLAGS)
-else
-	BIN_DIR = Release
-	CFLAGS += $(C_OPT_FLAGS)
-endif
-
-
-GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
-ifeq "$(GCC_VERSION)" "4"
-	CPPFLAGS += $(CPP_GCC4_FLAGS)
-endif
-
-BINARY = $(PROJECT).ext.so
-
-OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
-
-$(BIN_DIR)/%.o: %.cpp
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
-
-all:
-	mkdir -p $(BIN_DIR)/sdk
-	ln -sf $(SRCDS)/orangebox/bin/vstdlib_i486.so vstdlib_i486.so
-	ln -sf $(SRCDS)/orangebox/bin/tier0_i486.so tier0_i486.so
-	$(MAKE) -f Makefile.ep2 extension
-
-extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
-
-debug:
-	$(MAKE) -f Makefile.ep2 all DEBUG=true
-
-default: all
-
-clean:
-	rm -rf Release/*.o
-	rm -rf Release/sdk/*.o
-	rm -rf Release/$(BINARY)
-	rm -rf Debug/*.o
-	rm -rf Debug/sdk/*.o
-	rm -rf Debug/$(BINARY)
diff --git a/extensions/sdktools/Makefile.orig b/extensions/sdktools/Makefile.orig
deleted file mode 100644
index b34a3e4a..00000000
--- a/extensions/sdktools/Makefile.orig
+++ /dev/null
@@ -1,90 +0,0 @@
-#(C)2004-2006 SourceMM Development Team
-# Makefile written by David "BAILOPAN" Anderson
-
-SMSDK = ../..
-SRCDS = ~/srcds
-SOURCEMM = ../../../sourcemm-1.4
-HL2SDK = ../../../hl2sdk
-
-#####################################
-### EDIT BELOW FOR OTHER PROJECTS ###
-#####################################
-
-PROJECT = sdktools
-
-#Uncomment for SourceMM-enabled extensions
-LINK_HL2 = $(HL2LIB)/tier1_i486.a $(HL2LIB)/mathlib_i486.a vstdlib_i486.so tier0_i486.so
-
-OBJECTS = sdk/smsdk_ext.cpp extension.cpp vdecoder.cpp vcallbuilder.cpp vcaller.cpp \
-	vnatives.cpp vsound.cpp tenatives.cpp trnatives.cpp tempents.cpp vstringtable.cpp \
-	vhelpers.cpp vglobals.cpp voice.cpp inputnatives.cpp teamnatives.cpp
-
-##############################################
-### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
-##############################################
-
-C_OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
-C_DEBUG_FLAGS = -g -ggdb3
-CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
-CPP = gcc-4.1
-
-HL2PUB = $(HL2SDK)/public
-HL2LIB = $(HL2SDK)/linux_sdk
-
-LINK = $(LINK_HL2) -static-libgcc
-
-INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
-          -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
-	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
-
-CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
-	-D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -Wno-switch \
-	-Wno-unused -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32
-CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti -fno-threadsafe-statics 
-
-################################################
-### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
-################################################
-
-ifeq "$(DEBUG)" "true"
-	BIN_DIR = Debug
-	CFLAGS += $(C_DEBUG_FLAGS)
-else
-	BIN_DIR = Release
-	CFLAGS += $(C_OPT_FLAGS)
-endif
-
-
-GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
-ifeq "$(GCC_VERSION)" "4"
-	CPPFLAGS += $(CPP_GCC4_FLAGS)
-endif
-
-BINARY = $(PROJECT).ext.so
-
-OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
-
-$(BIN_DIR)/%.o: %.cpp
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
-
-all:
-	mkdir -p $(BIN_DIR)/sdk
-	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
-	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
-	$(MAKE) -f Makefile.orig extension
-
-extension: $(OBJ_LINUX)
-	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
-
-debug:
-	$(MAKE) -f Makefile.orig all DEBUG=true
-
-default: all
-
-clean:
-	rm -rf Release/*.o
-	rm -rf Release/sdk/*.o
-	rm -rf Release/$(BINARY)
-	rm -rf Debug/*.o
-	rm -rf Debug/sdk/*.o
-	rm -rf Debug/$(BINARY)
diff --git a/extensions/sqlite/Makefile b/extensions/sqlite/Makefile
index 2839482d..ff7ed908 100644
--- a/extensions/sqlite/Makefile
+++ b/extensions/sqlite/Makefile
@@ -57,7 +57,7 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2
 
 CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
 	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
-	-Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -Wno-uninitialized \
+	-Dstrcmpi=strcasecmp -Wall -Werror -mfpmath=sse -msse -DSOURCEMOD_BUILD -Wno-uninitialized \
 	-DSQLITE_THREADSAFE -DSQLITE_OMIT_LOAD_EXTENSION -m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
 
diff --git a/extensions/topmenus/Makefile b/extensions/topmenus/Makefile
index 769d133a..1fe7e23f 100644
--- a/extensions/topmenus/Makefile
+++ b/extensions/topmenus/Makefile
@@ -38,7 +38,7 @@ INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2
 
 CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
 	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
-	-Dstrcmpi=strcasecmp -Wall -Werror -Wno-switch -Wno-unused -fPIC -mfpmath=sse -msse \
+	-Dstrcmpi=strcasecmp -Wall -Werror -Wno-switch -Wno-unused -mfpmath=sse -msse \
 	-DSOURCEMOD_BUILD -DHAVE_STDINT_H -Wno-uninitialized -m32
 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
 

From b66203259ba0b590181b93fcd6afc5d166991179 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 14:20:02 +0000
Subject: [PATCH 195/263] attempt at getting the build tool to use the new
 makefiles

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401885
---
 tools/builder/LinuxBuilder.cs | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/tools/builder/LinuxBuilder.cs b/tools/builder/LinuxBuilder.cs
index a4eeccf5..c843bd21 100644
--- a/tools/builder/LinuxBuilder.cs
+++ b/tools/builder/LinuxBuilder.cs
@@ -49,25 +49,25 @@ namespace builder
 				File.Delete(binpath);
 			}
 
-			string makefile_name = "Makefile";
+			string makefile_args = null;
 
 			if (lib.build_mode == BuildMode.BuildMode_Episode1)
 			{
-				makefile_name = "Makefile.ep1";
+				makefile_args = null;
 			}
 			else if (lib.build_mode == BuildMode.BuildMode_Episode2)
 			{
-				makefile_name = "Makefile.ep2";
+				makefile_args = "ENGINE=\"orangebox\"";
 			}
 			else if (lib.build_mode == BuildMode.BuildMode_OldMetamod)
 			{
-				makefile_name = "Makefile.orig";
+				makefile_args = "ENGINE=\"original\"";
 			}
 
 			/* Clean the project first */
 			info.WorkingDirectory = path;
 			info.FileName = cfg.builder_path;
-			info.Arguments = "-f " + makefile_name + " clean";
+			info.Arguments = makefile_args + " clean";
 			info.UseShellExecute = false;
 
 			Process p = Process.Start(info);
@@ -77,7 +77,7 @@ namespace builder
 			/* Now build it */
 			info.WorkingDirectory = path;
 			info.FileName = cfg.builder_path;
-			info.Arguments = "-f " + makefile_name;
+			info.Arguments = makefile_args + " clean";
 			info.UseShellExecute = false;
 
 			if (cfg.build_options != null)

From c733283b90f512c884cece252297de572371f308 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 14:32:08 +0000
Subject: [PATCH 196/263] more fixes for build tool

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401886
---
 tools/builder/LinuxBuilder.cs | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tools/builder/LinuxBuilder.cs b/tools/builder/LinuxBuilder.cs
index c843bd21..9de45697 100644
--- a/tools/builder/LinuxBuilder.cs
+++ b/tools/builder/LinuxBuilder.cs
@@ -49,7 +49,7 @@ namespace builder
 				File.Delete(binpath);
 			}
 
-			string makefile_args = null;
+			string makefile_args = "";
 
 			if (lib.build_mode == BuildMode.BuildMode_Episode1)
 			{
@@ -58,10 +58,12 @@ namespace builder
 			else if (lib.build_mode == BuildMode.BuildMode_Episode2)
 			{
 				makefile_args = "ENGINE=\"orangebox\"";
+				binpath += ".orangebox";
 			}
 			else if (lib.build_mode == BuildMode.BuildMode_OldMetamod)
 			{
 				makefile_args = "ENGINE=\"original\"";
+				binpath += ".original";
 			}
 
 			/* Clean the project first */
@@ -77,7 +79,7 @@ namespace builder
 			/* Now build it */
 			info.WorkingDirectory = path;
 			info.FileName = cfg.builder_path;
-			info.Arguments = makefile_args + " clean";
+			info.Arguments = makefile_args;
 			info.UseShellExecute = false;
 
 			if (cfg.build_options != null)

From 90d275109ac17575dcb5a7086f1116aefbedd271 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 14:36:04 +0000
Subject: [PATCH 197/263] another build tool fix, golly

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401887
---
 tools/builder/LinuxBuilder.cs | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/tools/builder/LinuxBuilder.cs b/tools/builder/LinuxBuilder.cs
index 9de45697..1fac9619 100644
--- a/tools/builder/LinuxBuilder.cs
+++ b/tools/builder/LinuxBuilder.cs
@@ -39,9 +39,20 @@ namespace builder
 				}
 			}
 
+			string output_folder = (lib.release_mode == ReleaseMode.ReleaseMode_Release) ? "Release" : "Debug";
+
+			if (lib.build_mode == BuildMode.BuildMode_Episode2)
+			{
+				output_folder += ".orangebox";
+			}
+			else if (lib.build_mode == BuildMode.BuildMode_OldMetamod)
+			{
+				output_folder += ".original";
+			}
+
 			string binpath = Config.PathFormat("{0}/{1}/{2}",
 				path,
-				(lib.release_mode == ReleaseMode.ReleaseMode_Release) ? "Release" : "Debug",
+				output_folder,
 				binName);
 			
 			if (File.Exists(binpath))
@@ -58,12 +69,10 @@ namespace builder
 			else if (lib.build_mode == BuildMode.BuildMode_Episode2)
 			{
 				makefile_args = "ENGINE=\"orangebox\"";
-				binpath += ".orangebox";
 			}
 			else if (lib.build_mode == BuildMode.BuildMode_OldMetamod)
 			{
 				makefile_args = "ENGINE=\"original\"";
-				binpath += ".original";
 			}
 
 			/* Clean the project first */

From d2740940fcaa26fa0599b7a0157eebe2ffd4cb34 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 15:05:51 +0000
Subject: [PATCH 198/263] fixed double quotes in project filex

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401888
---
 extensions/sdktools/msvc8/sdktools.vcproj | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/extensions/sdktools/msvc8/sdktools.vcproj b/extensions/sdktools/msvc8/sdktools.vcproj
index 4cdb9edb..bc11f13a 100644
--- a/extensions/sdktools/msvc8/sdktools.vcproj
+++ b/extensions/sdktools/msvc8/sdktools.vcproj
@@ -202,7 +202,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\dlls&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;&apos;$(HL2SDKOB)\public\tier1&quot;&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;;"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\dlls&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\common&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;ORANGEBOX_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -446,7 +446,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\dlls&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;&apos;$(HL2SDKOB)\public\tier1&quot;&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;;"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\dlls&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\common&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;ORANGEBOX_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"

From 67442ac4a00a50e4209e6ab84ee9cc1be0a45b9a Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 16:07:27 +0000
Subject: [PATCH 199/263] added amb1447 - IRootConsoleMenu exposure

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401889
---
 core/sm_srvcmds.cpp       | 12 ++++++++++++
 core/sm_srvcmds.h         |  3 +++
 public/IRootConsoleMenu.h | 12 ++++++------
 3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/core/sm_srvcmds.cpp b/core/sm_srvcmds.cpp
index 657a8176..4e374084 100644
--- a/core/sm_srvcmds.cpp
+++ b/core/sm_srvcmds.cpp
@@ -35,6 +35,7 @@
 #include "HandleSys.h"
 #include "CoreConfig.h"
 #include "ConVarManager.h"
+#include "ShareSys.h"
 
 RootConsoleMenu g_RootMenu;
 
@@ -82,6 +83,7 @@ void RootConsoleMenu::OnSourceModStartup(bool late)
 void RootConsoleMenu::OnSourceModAllInitialized()
 {
 	g_ConVarManager.AddConVarChangeListener("hostname", &s_HostnameChangeDetector);
+	g_ShareSys.AddInterface(NULL, this);
 }
 
 void RootConsoleMenu::OnSourceModShutdown()
@@ -215,6 +217,16 @@ void RootConsoleMenu::DrawGenericOption(const char *cmd, const char *text)
 	}
 }
 
+const char *RootConsoleMenu::GetInterfaceName()
+{
+	return SMINTERFACE_ROOTCONSOLE_NAME;
+}
+
+unsigned int RootConsoleMenu::GetInterfaceVersion()
+{
+	return SMINTERFACE_ROOTCONSOLE_VERSION;
+}
+
 extern void _IntExt_EnableYams();
 
 void RootConsoleMenu::GotRootCmd(const CCommand &cmd)
diff --git a/core/sm_srvcmds.h b/core/sm_srvcmds.h
index c3950909..5d38d666 100644
--- a/core/sm_srvcmds.h
+++ b/core/sm_srvcmds.h
@@ -59,6 +59,9 @@ class RootConsoleMenu :
 public:
 	RootConsoleMenu();
 	~RootConsoleMenu();
+public:
+	const char *GetInterfaceName();
+	unsigned int GetInterfaceVersion();
 public: //IConCommandBaseAccessor
 	bool RegisterConCommandBase(ConCommandBase *pCommand);
 public: //SMGlobalClass
diff --git a/public/IRootConsoleMenu.h b/public/IRootConsoleMenu.h
index 928d8758..dd0da8c9 100644
--- a/public/IRootConsoleMenu.h
+++ b/public/IRootConsoleMenu.h
@@ -36,13 +36,13 @@
  * @file IRootConsoleMenu.h
  * @brief Defines the interface for adding options to the "sm" console command.
  *
- *  This interface is not yet exported.  It will be eventually.  The initial reason should 
- * be obvious: we do not want users actually touching it.  If we exposed this, every little 
- * plugin would be dropping down a silly set of user commands, and exploiting/cluttering the menu.
- * Since this menu is explicitly provided for stuff that only Core itself is capable of managing,
- * we won't expose it until a legitimate reason comes up.
+ * You must be using the compat_wrappers.h header file to use this on 
+ * Original/Episode1 builds.  
  */
 
+#define SMINTERFACE_ROOTCONSOLE_NAME			"IRootConsole"
+#define SMINTERFACE_ROOTCONSOLE_VERSION			1
+
 class CCommand;
 
 namespace SourceMod
@@ -59,7 +59,7 @@ namespace SourceMod
 	/**
 	 * @brief Manages the root console menu - the "sm" command for servers.
 	 */
-	class IRootConsole
+	class IRootConsole : public SMInterface
 	{
 	public:
 		/**

From 1f57da5aa0adecbd4e32d8c8ca6a21b9a4624660 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 16:51:15 +0000
Subject: [PATCH 200/263] added amb1418 - FIELD_STRING support for
 GetEntPropString()

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401890
---
 core/smn_entities.cpp      | 30 ++++++++++++++++++++++++++++--
 plugins/include/entity.inc |  8 ++++++++
 2 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/core/smn_entities.cpp b/core/smn_entities.cpp
index f8fe5ecf..cd3e4ea1 100644
--- a/core/smn_entities.cpp
+++ b/core/smn_entities.cpp
@@ -52,6 +52,7 @@ enum PropFieldType
 	PropField_Entity,			/**< Valid for Data fields only (SendProp shows as int) */
 	PropField_Vector,			/**< Valid for SendProp and Data fields */
 	PropField_String,			/**< Valid for SendProp and Data fields */
+	PropField_String_T,			/**< Valid for Data fields.  Read only! */
 };
 
 inline edict_t *GetEdict(cell_t num)
@@ -795,6 +796,12 @@ static cell_t FindDataMapOffs(IPluginContext *pContext, const cell_t *params)
 				}
 				break;
 			}
+		case FIELD_STRING:
+			{
+				*pSize = sizeof(string_t);
+				*pType = PropField_String_T;
+				break;
+			}
 		case FIELD_FLOAT:
 		case FIELD_TIME:
 			{
@@ -1580,6 +1587,7 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
 	int offset;
 	const char *class_name;
 	edict_t *pEdict;
+	bool bIsStringIndex;
 	
 	pEdict = GetEntity(params[1], &pEntity);
 
@@ -1595,6 +1603,8 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
 
 	pContext->LocalToString(params[3], &prop);
 
+	bIsStringIndex = false;
+
 	switch (params[2])
 	{
 	case Prop_Data:
@@ -1603,7 +1613,8 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
 			
 			FIND_PROP_DATA(td);
 
-			if (td->fieldType != FIELD_CHARACTER)
+			if (td->fieldType != FIELD_CHARACTER
+				&& td->fieldType != FIELD_STRING)
 			{
 				return pContext->ThrowNativeError("Data field %s is not a string (%d != %d)", 
 					prop,
@@ -1611,6 +1622,8 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
 					FIELD_CHARACTER);
 			}
 
+			bIsStringIndex = (td->fieldType == FIELD_STRING);
+
 			offset = td->fieldOffset[TD_OFFSET_NORMAL];
 			break;
 		}
@@ -1639,7 +1652,20 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
 	}
 
 	size_t len;
-	char *src = (char *)((uint8_t *)pEntity + offset);
+	const char *src; 
+	
+	if (!bIsStringIndex)
+	{
+		src = (char *)((uint8_t *)pEntity + offset);
+	}
+	else
+	{
+		string_t idx;
+
+		idx = *(string_t *)((uint8_t *)pEntity + offset);
+		src = (idx == NULL_STRING) ? "" : STRING(idx);
+	}
+
 	pContext->StringToLocalUTF8(params[4], params[5], src, &len);
 
 	return len;
diff --git a/plugins/include/entity.inc b/plugins/include/entity.inc
index 79d90fc4..fefc76f5 100644
--- a/plugins/include/entity.inc
+++ b/plugins/include/entity.inc
@@ -67,6 +67,11 @@ enum PropFieldType
 	PropField_Entity,			/**< Valid for Data fields only (SendProp shows as int) */
 	PropField_Vector,			/**< Valid for SendProp and Data fields */
 	PropField_String,			/**< Valid for SendProp and Data fields */
+	PropField_String_T,			/**< Valid for Data fields.  Read only.  
+									 Note that the size of a string_t is dynamic, and 
+									 thus FindDataMapOffs() will return the constant size 
+									 of the string_t container (which is 32 bits right now).
+								 */
 };
 
 /**
@@ -619,6 +624,9 @@ native GetEntPropString(entity, PropType:type, const String:prop[], String:buffe
 
 /**
  * Sets a network property as a string.
+ *
+ * This cannot set property fields of type PropField_String_T (such as "m_target").
+ * To set such fields, you should use DispatchKeyValue() from SDKTools.
  * 
  * @param entity		Edict index.
  * @param type			Property type.

From ef92966bac9035a1eead5939060b66777a70fd02 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 17:12:24 +0000
Subject: [PATCH 201/263] added amb1402 - gameconfig errors are now logged
 fully

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401891
---
 core/GameConfigs.cpp | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/core/GameConfigs.cpp b/core/GameConfigs.cpp
index cb96c655..18ffaeb5 100644
--- a/core/GameConfigs.cpp
+++ b/core/GameConfigs.cpp
@@ -489,6 +489,7 @@ skip_find:
 bool CGameConfig::Reparse(char *error, size_t maxlength)
 {
 	SMCError err;
+	SMCStates state = {0, 0};
 
 	char path[PLATFORM_MAX_PATH];
 	g_SourceMod.BuildPath(Path_SM, path, sizeof(path), "gamedata/%s.txt", m_pFile);
@@ -508,9 +509,19 @@ bool CGameConfig::Reparse(char *error, size_t maxlength)
 	sm_trie_clear(m_pProps);
 	sm_trie_clear(m_pKeys);
 
-	if ((err=textparsers->ParseSMCFile(path, this, NULL, error, maxlength))
+	if ((err=textparsers->ParseSMCFile(path, this, &state, error, maxlength))
 		!= SMCError_Okay)
 	{
+		const char *msg;
+
+		msg = textparsers->GetSMCErrorString(err);
+
+		g_Logger.LogError("[SM] Error parsing gameconfig file \"%s\":", path);
+		g_Logger.LogError("[SM] Error %d on line %d, col %d: %s", 
+			err,
+			state.line,
+			state.col,
+			msg ? msg : "Unknown error");
 		return false;
 	}
 

From 41f4e68e7e303f0fd703e077334ef4d16274fb3e Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 18:17:26 +0000
Subject: [PATCH 202/263] amb1442 - zps support

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401892
---
 gamedata/sdktools.games.txt | 107 ++++++++++++++++++++++++++++++++++++
 1 file changed, 107 insertions(+)

diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index ea233126..dc62fb3c 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -1552,5 +1552,112 @@
 			}
 		}
 	}
+	
+	/* Zombie Panic! Source 1.2b 
+	 * Note: This mod is not fully supported yet. 
+	 * The definitions below were supplied by a third party.
+	 */
+	"$Zombie Panic! Source"
+	{
+		"Offsets"
+		{
+			"GiveNamedItem"
+			{
+				"windows"	"333"
+				"linux"		"334"
+			}
+			"RemovePlayerItem"
+			{
+				"windows"	"230"
+				"linux"		"231"
+			}
+			"Weapon_GetSlot"
+			{
+				"windows"	"226"
+				"linux"		"227"
+			}
+			"Ignite"
+			{
+				"windows"	"190"
+				"linux"		"191"
+			}
+			"Extinguish"
+			{
+				"windows"	"191"
+				"linux"		"192"
+			}
+			"Teleport"
+			{
+				"windows"	"100"
+				"linux"		"101"
+			}
+			"CommitSuicide"
+			{
+				"windows"	"361"
+				"linux"		"362"
+			}
+			"GetVelocity"
+			{
+				"windows"	"128"
+				"linux"		"129"
+			}
+			"EyeAngles"
+			{
+				"windows"	"120"
+				"linux"		"121"
+			}
+			"AcceptInput"
+			{
+				"windows"	"35"
+				"linux"		"36"
+			}
+			"DispatchKeyValue"
+			{
+				"windows"	"31"
+				"linux"		"30"
+			}
+			"DispatchKeyValueFloat"
+			{
+				"windows"	"30"
+				"linux"		"31"
+			}
+			"DispatchKeyValueVector"
+			{
+				"windows"	"29"
+				"linux"		"32"
+			}
+			"SetEntityModel"
+			{
+				"windows"	"25"
+				"linux"		"26"
+			}
+		}
+		"Signatures"
+		{
+			"CreateGameRulesObject"
+			{
+				"library"	"server"
+				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2C\x6A\x01"
+			}
+			"FindEntityByClassname"
+			{
+				"library"	"server"
+				"windows"	"\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x2A\x2A\x8B\x00\x25\xFF\x0F\x00\x00\x40\xC1\xC1\xE0\x04\x8B\x2A\x2A\xEB\x2A\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x5C\x24\x2A\x8B\x2D\x2A\x2A\x2A\x2A\x8D\xA4\x24\x00\x00\x00\x00\x8B\x37\x85\xF6\x75\x2A\x68\x2A\x2A\x2A\x2A\xFF\x2A\x83\xC4\x2A\xEB\x2A\x39"								
+				"linux"		"@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
+			}
+			"CreateEntityByName"
+			{
+				"library"	"server"
+				"linux"		"@_Z18CreateEntityByNamePKci"
+				"windows"	"\x56\x8B\x74\x24\x2A\x57\x8B\x7C\x24\x2A\x83\xFE\xFF\x74\x2A\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x2A\x56\xFF\xD2"
+			}
+			"DispatchSpawn"
+			{
+				"library"	"server"
+				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
+				"windows"	"\x53\x55\x56\x8B\x74\x24\x10\x2A\x85\xF6\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\x50\x60\x8B\xCB"
+			} 
+		}
+	}
 }
 

From b4b6238bbe37a0af261f98acc9dd3b9017ae9596 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 18:19:25 +0000
Subject: [PATCH 203/263] added credits

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401893
---
 gamedata/sdktools.games.txt | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index dc62fb3c..b0d7210c 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -1027,7 +1027,11 @@
 		}
 	}
 
-	/* Garry's Mod 10 - Windows only */
+	/* Garry's Mod 10 - Windows only
+	 * This mod is not officially supported, and the definitions are 
+	 * for Garry's Mod pre-Orange Box.  
+	 * (credits: Damaged Soul)
+	 */
 	"garrysmod"
 	{
 		"Offsets"
@@ -1556,6 +1560,7 @@
 	/* Zombie Panic! Source 1.2b 
 	 * Note: This mod is not fully supported yet. 
 	 * The definitions below were supplied by a third party.
+	 * (thanks "noob cannon lol")
 	 */
 	"$Zombie Panic! Source"
 	{

From 2edce74e0f7736e70843f37986f864b8c5d4cbc7 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 19:22:22 +0000
Subject: [PATCH 204/263] amb1420 - full ff2.0 support

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401894
---
 gamedata/sdktools.games.txt | 37 ++++++++++++++++++++++++++-----------
 1 file changed, 26 insertions(+), 11 deletions(-)

diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index b0d7210c..9ce214c5 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -203,10 +203,10 @@
 			"game"		"!Insurgency"
 			"game"		"pvkii"
 			"game"		"$SourceForts v1.9.3"
-			"game"		"FortressForever"
 			"game"		"empires"
 			"game"		"synergy"
 			"game"		"hidden"
+			"game"		"FortressForever"
 		}
 
 		"Signatures"
@@ -942,16 +942,7 @@
 	
 	/* Fortress Forever */
 	"FortressForever"
-	{
-		"Signatures"
-		{
-			"CreateGameRulesObject"
-			{
-				"library"	"server"
-				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x3B\xCB\x74\x07\x8B\x01\x6A\x01\xFF\x50"
-			}
-		}
-		
+	{	
 		"Offsets"
 		{
 			"GiveNamedItem"
@@ -1025,6 +1016,30 @@
 				"linux"		"28"
 			}
 		}
+		
+		"Signatures"
+		{
+			"CreateGameRulesObject"
+			{
+				"library"	"server"
+				"windows"	"8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x09\x8B\x01\x8B\x50\x2C\x6A\x01"
+			}
+			"FindEntityByClassname"
+			{
+				"library"	"server"
+				"windows"	"\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x85\xC9\x57\x74\x19\x8B\x01\x8B\x50\x08\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x83\xC0\x01\xC1\xE0\x04\x8B\x3C\x30\xEB\x06\x8B\xBE\x04\x00\x01\x00\x85\xFF\x74\x39\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\xEB\x03"
+			}
+			"DispatchSpawn"
+			{
+				"library"	"server"
+				"windows"	"\x53\x55\x56\x8B\x74\x24\x10\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\x50\x60\x8B\xCB"
+			}
+			"CreateEntityByName"
+			{
+				"library"	"server"
+				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x27\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x54\x56\xFF\xD2"
+			}
+		}
 	}
 
 	/* Garry's Mod 10 - Windows only

From 63cb644232268b302efc996974c4a798f8582580 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 21:01:08 +0000
Subject: [PATCH 205/263] deprecated LoadMaps() and its usage in three plugins
 renamed basefun* to fun* removed map file list cvars

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401895
---
 configs/maplists.cfg                          |  21 +
 .../{basefuncommands.sp => funcommands.sp}    |  29 +-
 .../beacon.sp                                 |   0
 .../{basefuncommands => funcommands}/blind.sp |   0
 .../{basefuncommands => funcommands}/drug.sp  |   0
 .../{basefuncommands => funcommands}/fire.sp  |   0
 .../gravity.sp                                |   0
 .../{basefuncommands => funcommands}/ice.sp   |   0
 .../noclip.sp                                 |   0
 .../timebomb.sp                               |   0
 plugins/{basefunvotes.sp => funvotes.sp}      |  17 +-
 .../{basefunvotes => funvotes}/votealltalk.sp |   0
 .../{basefunvotes => funvotes}/voteburn.sp    |   0
 plugins/{basefunvotes => funvotes}/voteff.sp  |   0
 .../{basefunvotes => funvotes}/votegravity.sp |   0
 .../{basefunvotes => funvotes}/voteslay.sp    |   0
 plugins/include/helpers.inc                   |   7 +-
 plugins/mapchooser.sp                         |  22 +-
 plugins/randomcycle.sp                        |  17 +-
 plugins/rockthevote.sp                        | 887 +++++++++---------
 20 files changed, 529 insertions(+), 471 deletions(-)
 rename plugins/{basefuncommands.sp => funcommands.sp} (90%)
 rename plugins/{basefuncommands => funcommands}/beacon.sp (100%)
 rename plugins/{basefuncommands => funcommands}/blind.sp (100%)
 rename plugins/{basefuncommands => funcommands}/drug.sp (100%)
 rename plugins/{basefuncommands => funcommands}/fire.sp (100%)
 rename plugins/{basefuncommands => funcommands}/gravity.sp (100%)
 rename plugins/{basefuncommands => funcommands}/ice.sp (100%)
 rename plugins/{basefuncommands => funcommands}/noclip.sp (100%)
 rename plugins/{basefuncommands => funcommands}/timebomb.sp (100%)
 rename plugins/{basefunvotes.sp => funvotes.sp} (93%)
 rename plugins/{basefunvotes => funvotes}/votealltalk.sp (100%)
 rename plugins/{basefunvotes => funvotes}/voteburn.sp (100%)
 rename plugins/{basefunvotes => funvotes}/voteff.sp (100%)
 rename plugins/{basefunvotes => funvotes}/votegravity.sp (100%)
 rename plugins/{basefunvotes => funvotes}/voteslay.sp (100%)

diff --git a/configs/maplists.cfg b/configs/maplists.cfg
index a331f995..06e7f1c2 100644
--- a/configs/maplists.cfg
+++ b/configs/maplists.cfg
@@ -27,12 +27,33 @@
 		"target"		"mapcyclefile"
 	}
 	
+	/* Admin menu, map menu */
 	"sm_map menu"
 	{
 		"file"			"addons/sourcemod/configs/adminmenu_maplist.ini"
 	}
+	
+	/* Admin menu, map voting menu */
 	"sm_votemap menu"
 	{
 		"file"			"addons/sourcemod/configs/adminmenu_maplist.ini"
 	}
+	
+	/* For the "randomcycle" plugin */
+	"randomcycle"
+	{
+		"target"		"default"
+	}
+	
+	/* For the "mapchooser" plugin */
+	"mapchooser"
+	{
+		"target"		"default"
+	}
+	
+	/* For the "randomcycle" plugin */
+	"rockthevote"
+	{
+		"target"		"default"
+	}
 }
diff --git a/plugins/basefuncommands.sp b/plugins/funcommands.sp
similarity index 90%
rename from plugins/basefuncommands.sp
rename to plugins/funcommands.sp
index 303e6bb4..aa5bd467 100644
--- a/plugins/basefuncommands.sp
+++ b/plugins/funcommands.sp
@@ -40,9 +40,9 @@
 
 public Plugin:myinfo =
 {
-	name = "Basic Fun Commands",
+	name = "Fun Commands",
 	author = "AlliedModders LLC",
-	description = "Basic Fun Commands",
+	description = "Fun Commands",
 	version = SOURCEMOD_VERSION,
 	url = "http://www.sourcemod.net/"
 };
@@ -53,7 +53,7 @@ public Plugin:myinfo =
 #define BEACON		1
 #define TIMEBOMB	1
 #define FIRE		1
-#define ICE		1
+#define ICE			1
 #define GRAVITY		1
 #define BLIND		1
 #define NOCLIP		1
@@ -71,7 +71,7 @@ new Handle:hTopMenu = INVALID_HANDLE;
 #define SOUND_BEEP		"buttons/button17.wav"
 #define SOUND_FINAL		"weapons/cguard/charging.wav"
 #define SOUND_BOOM		"weapons/explode3.wav"
-#define SOUND_FREEZE		"physics/glass/glass_impact_bullet4.wav"
+#define SOUND_FREEZE	"physics/glass/glass_impact_bullet4.wav"
 
 // Following are model indexes for temp entities
 new g_BeamSprite;
@@ -93,32 +93,37 @@ new UserMsg:g_FadeUserMsgId;
 
 // Include various commands and supporting functions
 #if BEACON
-#include "basefuncommands/beacon.sp"
+#include "funcommands/beacon.sp"
 #endif
 #if TIMEBOMB
-#include "basefuncommands/timebomb.sp"
+#include "funcommands/timebomb.sp"
 #endif
 #if FIRE
-#include "basefuncommands/fire.sp"
+#include "funcommands/fire.sp"
 #endif
 #if ICE
-#include "basefuncommands/ice.sp"
+#include "funcommands/ice.sp"
 #endif
 #if GRAVITY
-#include "basefuncommands/gravity.sp"
+#include "funcommands/gravity.sp"
 #endif
 #if BLIND
-#include "basefuncommands/blind.sp"
+#include "funcommands/blind.sp"
 #endif
 #if NOCLIP
-#include "basefuncommands/noclip.sp"
+#include "funcommands/noclip.sp"
 #endif
 #if DRUG
-#include "basefuncommands/drug.sp"
+#include "funcommands/drug.sp"
 #endif
 
 public OnPluginStart()
 {
+	if (FindPluginByFile("basefuncommands.smx") != INVALID_HANDLE)
+	{
+		ThrowError("This plugin replaces basefuncommands.  You cannot run both at once.");
+	}
+	
 	LoadTranslations("common.phrases");
 	LoadTranslations("basefuncommands.phrases");
 
diff --git a/plugins/basefuncommands/beacon.sp b/plugins/funcommands/beacon.sp
similarity index 100%
rename from plugins/basefuncommands/beacon.sp
rename to plugins/funcommands/beacon.sp
diff --git a/plugins/basefuncommands/blind.sp b/plugins/funcommands/blind.sp
similarity index 100%
rename from plugins/basefuncommands/blind.sp
rename to plugins/funcommands/blind.sp
diff --git a/plugins/basefuncommands/drug.sp b/plugins/funcommands/drug.sp
similarity index 100%
rename from plugins/basefuncommands/drug.sp
rename to plugins/funcommands/drug.sp
diff --git a/plugins/basefuncommands/fire.sp b/plugins/funcommands/fire.sp
similarity index 100%
rename from plugins/basefuncommands/fire.sp
rename to plugins/funcommands/fire.sp
diff --git a/plugins/basefuncommands/gravity.sp b/plugins/funcommands/gravity.sp
similarity index 100%
rename from plugins/basefuncommands/gravity.sp
rename to plugins/funcommands/gravity.sp
diff --git a/plugins/basefuncommands/ice.sp b/plugins/funcommands/ice.sp
similarity index 100%
rename from plugins/basefuncommands/ice.sp
rename to plugins/funcommands/ice.sp
diff --git a/plugins/basefuncommands/noclip.sp b/plugins/funcommands/noclip.sp
similarity index 100%
rename from plugins/basefuncommands/noclip.sp
rename to plugins/funcommands/noclip.sp
diff --git a/plugins/basefuncommands/timebomb.sp b/plugins/funcommands/timebomb.sp
similarity index 100%
rename from plugins/basefuncommands/timebomb.sp
rename to plugins/funcommands/timebomb.sp
diff --git a/plugins/basefunvotes.sp b/plugins/funvotes.sp
similarity index 93%
rename from plugins/basefunvotes.sp
rename to plugins/funvotes.sp
index d00df05e..231765ae 100644
--- a/plugins/basefunvotes.sp
+++ b/plugins/funvotes.sp
@@ -41,7 +41,7 @@
 
 public Plugin:myinfo =
 {
-	name = "Basic Fun Votes",
+	name = "Fun Votes",
 	author = "AlliedModders LLC",
 	description = "Fun Vote Commands",
 	version = SOURCEMOD_VERSION,
@@ -85,14 +85,19 @@ new String:g_voteInfo[3][65];	/* Holds the target's name, authid, and IP */
 
 new Handle:hTopMenu = INVALID_HANDLE;
 
-#include "basefunvotes/votegravity.sp"
-#include "basefunvotes/voteburn.sp"
-#include "basefunvotes/voteslay.sp"
-#include "basefunvotes/votealltalk.sp"
-#include "basefunvotes/voteff.sp"
+#include "funvotes/votegravity.sp"
+#include "funvotes/voteburn.sp"
+#include "funvotes/voteslay.sp"
+#include "funvotes/votealltalk.sp"
+#include "funvotes/voteff.sp"
 
 public OnPluginStart()
 {
+	if (FindPluginByFile("basefunvotes.smx") != INVALID_HANDLE)
+	{
+		ThrowError("This plugin replaces basefuncommands.  You cannot run both at once.");
+	}
+	
 	LoadTranslations("common.phrases");
 	LoadTranslations("basevotes.phrases");
 	LoadTranslations("basefunvotes.phrases");
diff --git a/plugins/basefunvotes/votealltalk.sp b/plugins/funvotes/votealltalk.sp
similarity index 100%
rename from plugins/basefunvotes/votealltalk.sp
rename to plugins/funvotes/votealltalk.sp
diff --git a/plugins/basefunvotes/voteburn.sp b/plugins/funvotes/voteburn.sp
similarity index 100%
rename from plugins/basefunvotes/voteburn.sp
rename to plugins/funvotes/voteburn.sp
diff --git a/plugins/basefunvotes/voteff.sp b/plugins/funvotes/voteff.sp
similarity index 100%
rename from plugins/basefunvotes/voteff.sp
rename to plugins/funvotes/voteff.sp
diff --git a/plugins/basefunvotes/votegravity.sp b/plugins/funvotes/votegravity.sp
similarity index 100%
rename from plugins/basefunvotes/votegravity.sp
rename to plugins/funvotes/votegravity.sp
diff --git a/plugins/basefunvotes/voteslay.sp b/plugins/funvotes/voteslay.sp
similarity index 100%
rename from plugins/basefunvotes/voteslay.sp
rename to plugins/funvotes/voteslay.sp
diff --git a/plugins/include/helpers.inc b/plugins/include/helpers.inc
index 5e6bbad1..40338059 100644
--- a/plugins/include/helpers.inc
+++ b/plugins/include/helpers.inc
@@ -202,6 +202,10 @@ stock FindTarget(client, const String:target[], bool:nobots = false, bool:immuni
 }
 
 /**
+ * This function is no longer supported.  It has been replaced with ReadMapList(), 
+ * which uses a more unified caching and configuration mechanism.  This function also 
+ * has a bug where if the cvar contents changes, the fileTime change won't be recognized.
+ * 
  * Loads a specified array with maps. The maps will be either loaded from mapcyclefile, or if supplied
  * a cvar containing a file name. If the file in the cvar is bad, it will use mapcyclefile. The fileTime
  * parameter is used to store a timestamp of the file. If specified, the file will only be reloaded if it
@@ -210,8 +214,9 @@ stock FindTarget(client, const String:target[], bool:nobots = false, bool:immuni
  * @param array		Valid array handle, should be created with CreateArray(33) or larger. 
  * @param fileTime	Variable containing the "last changed" time of the file. Used to avoid needless reloading.
  * @param fileCvar	CVAR set to the file to be loaded. Optional.
- * @return		Number of maps loaded or 0 if in error.
+ * @return			Number of maps loaded or 0 if in error.
  */
+#pragma deprecated Use ReadMapList() instead. 
  stock LoadMaps(Handle:array, &fileTime = 0, Handle:fileCvar = INVALID_HANDLE)
  { 
  	decl String:mapPath[256], String:mapFile[64];
diff --git a/plugins/mapchooser.sp b/plugins/mapchooser.sp
index df4817ce..bf978f05 100644
--- a/plugins/mapchooser.sp
+++ b/plugins/mapchooser.sp
@@ -56,7 +56,6 @@ new Handle:g_Cvar_StartFrags = INVALID_HANDLE;
 new Handle:g_Cvar_ExtendTimeStep = INVALID_HANDLE;
 new Handle:g_Cvar_ExtendRoundStep = INVALID_HANDLE;
 new Handle:g_Cvar_ExtendFragStep = INVALID_HANDLE;
-new Handle:g_Cvar_Mapfile = INVALID_HANDLE;
 new Handle:g_Cvar_ExcludeMaps = INVALID_HANDLE;
 new Handle:g_Cvar_IncludeMaps = INVALID_HANDLE;
 new Handle:g_Cvar_NoVoteMode = INVALID_HANDLE;
@@ -74,7 +73,7 @@ new Handle:g_VoteMenu = INVALID_HANDLE;
 new g_Extends;
 new g_TotalRounds;
 new bool:g_HasVoteStarted;
-new g_mapFileTime;
+new g_mapFileSerial = -1;
 
 #define VOTE_EXTEND "##extend##"
 
@@ -93,7 +92,6 @@ public OnPluginStart()
 	g_Cvar_ExtendTimeStep = CreateConVar("sm_extendmap_timestep", "15", "Specifies how much many more minutes each extension makes", _, true, 5.0);
 	g_Cvar_ExtendRoundStep = CreateConVar("sm_extendmap_roundstep", "5", "Specifies how many more rounds each extension makes", _, true, 5.0);
 	g_Cvar_ExtendFragStep = CreateConVar("sm_extendmap_fragstep", "10", "Specifies how many more frags are allowed when map is extended.", _, true, 5.0);	
-	g_Cvar_Mapfile = CreateConVar("sm_mapvote_file", "configs/maps.ini", "Map file to use. (Def sourcemod/configs/maps.ini)");
 	g_Cvar_ExcludeMaps = CreateConVar("sm_mapvote_exclude", "5", "Specifies how many past maps to exclude from the vote.", _, true, 0.0);
 	g_Cvar_IncludeMaps = CreateConVar("sm_mapvote_include", "5", "Specifies how many maps to include in the vote.", _, true, 2.0, true, 6.0);
 	g_Cvar_NoVoteMode = CreateConVar("sm_mapvote_novote", "1", "Specifies whether or not MapChooser should pick a map if no votes are received.", _, true, 0.0, true, 1.0);
@@ -128,13 +126,23 @@ public OnConfigsExecuted()
 		SetFailState("sm_nextmap not found");
 	}
 	
-	if (LoadMaps(g_MapList, g_mapFileTime, g_Cvar_Mapfile))
+	if (ReadMapList(g_MapList,
+					 g_mapFileSerial, 
+					 "mapchooser",
+					 MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_MAPSFOLDER)
+		!= INVALID_HANDLE)
+		
 	{
-		CreateNextVote();
-		SetupTimeleftTimer();
-		SetConVarString(g_Cvar_Nextmap, "Pending Vote");
+		if (g_mapFileSerial == -1)
+		{
+			LogError("Unable to create a valid map list.");
+		}
 	}
 	
+	CreateNextVote();
+	SetupTimeleftTimer();
+	SetConVarString(g_Cvar_Nextmap, "Pending Vote");
+	
 	if (g_TeamScores != INVALID_HANDLE)
 	{
 		CloseHandle(g_TeamScores);
diff --git a/plugins/randomcycle.sp b/plugins/randomcycle.sp
index 5d4137ca..e8708b9f 100644
--- a/plugins/randomcycle.sp
+++ b/plugins/randomcycle.sp
@@ -44,12 +44,11 @@ public Plugin:myinfo =
 };
 
 new Handle:g_Cvar_Nextmap = INVALID_HANDLE;
-new Handle:g_Cvar_Mapfile = INVALID_HANDLE;
 new Handle:g_Cvar_ExcludeMaps = INVALID_HANDLE;
 
 new Handle:g_MapList = INVALID_HANDLE;
 new Handle:g_OldMapList = INVALID_HANDLE;
-new g_mapFileTime;
+new g_mapListSerial = -1;
 
 public OnPluginStart()
 {
@@ -57,7 +56,6 @@ public OnPluginStart()
 	g_MapList = CreateArray(arraySize);
 	g_OldMapList = CreateArray(arraySize);
 
-	g_Cvar_Mapfile = CreateConVar("sm_randomcycle_file", "configs/maps.ini", "Map file to use. (Def sourcemod/configs/maps.ini)");
 	g_Cvar_ExcludeMaps = CreateConVar("sm_randomcycle_exclude", "5", "Specifies how many past maps to exclude from the vote.", _, true, 0.0);
 	
 	AutoExecConfig(true, "randomcycle");
@@ -73,10 +71,19 @@ public OnConfigsExecuted()
 		SetFailState("sm_nextmap not found");
 	}
 	
-	if (LoadMaps(g_MapList, g_mapFileTime, g_Cvar_Mapfile))
+	if (ReadMapList(g_MapList, 
+					g_mapListSerial, 
+					"randomcycle", 
+					MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_MAPSFOLDER)
+		== INVALID_HANDLE)
 	{
-		CreateTimer(5.0, Timer_RandomizeNextmap); // Small delay to give Nextmap time to complete OnMapStart()
+		if (g_mapListSerial == -1)
+		{
+			LogError("Unable to create a valid map list.");
+		}
 	}
+	
+	CreateTimer(5.0, Timer_RandomizeNextmap); // Small delay to give Nextmap time to complete OnMapStart()
 }
 
 public Action:Timer_RandomizeNextmap(Handle:timer)
diff --git a/plugins/rockthevote.sp b/plugins/rockthevote.sp
index b85b54d1..7d50b1c0 100644
--- a/plugins/rockthevote.sp
+++ b/plugins/rockthevote.sp
@@ -1,93 +1,91 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Rock The Vote Plugin
- * Creates a map vote when the required number of players have requested one.
- *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation.  You must obey the GNU General Public License in
- * all respects for all other code used.  Additionally, AlliedModders LLC grants
- * this exception to all derivative works.  AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or <http://www.sourcemod.net/license.php>.
- *
- * Version: $Id$
- */
-
-#include <sourcemod>
-
-#pragma semicolon 1
-
-public Plugin:myinfo =
-{
-	name = "Rock The Vote",
-	author = "AlliedModders LLC",
-	description = "Provides RTV Map Voting",
-	version = SOURCEMOD_VERSION,
-	url = "http://www.sourcemod.net/"
-};
-
-new Handle:g_Cvar_Needed = INVALID_HANDLE;
-new Handle:g_Cvar_File = INVALID_HANDLE;
-new Handle:g_Cvar_Maps = INVALID_HANDLE;
-new Handle:g_Cvar_Nominate = INVALID_HANDLE;
-new Handle:g_Cvar_MinPlayers = INVALID_HANDLE;
-
-new Handle:g_MapList = INVALID_HANDLE;
-new Handle:g_RTVMapList = INVALID_HANDLE;
-new Handle:g_MapMenu = INVALID_HANDLE;
-new Handle:g_RetryTimer = INVALID_HANDLE;
-new g_mapFileTime;
-
-new bool:g_CanRTV = false;		// True if RTV loaded maps and is active.
-new bool:g_RTVAllowed = false;	// True if RTV is available to players. Used to delay rtv votes.
-new bool:g_RTVStarted = false;	// Indicates that the actual map vote has started
-new bool:g_RTVEnded = false;	// Indicates that the actual map vote has concluded
-new g_Voters = 0;				// Total voters connected. Doesn't include fake clients.
-new g_Votes = 0;				// Total number of "say rtv" votes
-new g_VotesNeeded = 0;			// Necessary votes before map vote begins. (voters * percent_needed)
-new bool:g_Voted[MAXPLAYERS+1] = {false, ...};
-new bool:g_Nominated[MAXPLAYERS+1] = {false, ...};
-
-public OnPluginStart()
-{
-	LoadTranslations("common.phrases");
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Rock The Vote Plugin
+ * Creates a map vote when the required number of players have requested one.
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include <sourcemod>
+
+#pragma semicolon 1
+
+public Plugin:myinfo =
+{
+	name = "Rock The Vote",
+	author = "AlliedModders LLC",
+	description = "Provides RTV Map Voting",
+	version = SOURCEMOD_VERSION,
+	url = "http://www.sourcemod.net/"
+};
+
+new Handle:g_Cvar_Needed = INVALID_HANDLE;
+new Handle:g_Cvar_Maps = INVALID_HANDLE;
+new Handle:g_Cvar_Nominate = INVALID_HANDLE;
+new Handle:g_Cvar_MinPlayers = INVALID_HANDLE;
+
+new Handle:g_MapList = INVALID_HANDLE;
+new Handle:g_RTVMapList = INVALID_HANDLE;
+new Handle:g_MapMenu = INVALID_HANDLE;
+new Handle:g_RetryTimer = INVALID_HANDLE;
+new g_mapFileSerial = -1;
+
+new bool:g_CanRTV = false;		// True if RTV loaded maps and is active.
+new bool:g_RTVAllowed = false;	// True if RTV is available to players. Used to delay rtv votes.
+new bool:g_RTVStarted = false;	// Indicates that the actual map vote has started
+new bool:g_RTVEnded = false;	// Indicates that the actual map vote has concluded
+new g_Voters = 0;				// Total voters connected. Doesn't include fake clients.
+new g_Votes = 0;				// Total number of "say rtv" votes
+new g_VotesNeeded = 0;			// Necessary votes before map vote begins. (voters * percent_needed)
+new bool:g_Voted[MAXPLAYERS+1] = {false, ...};
+new bool:g_Nominated[MAXPLAYERS+1] = {false, ...};
+
+public OnPluginStart()
+{
+	LoadTranslations("common.phrases");
 	LoadTranslations("rockthevote.phrases");
 	
 	new arraySize = ByteCountToCells(33);	
 	g_MapList = CreateArray(arraySize);
-	g_RTVMapList = CreateArray(arraySize);
-	
-	g_Cvar_Needed = CreateConVar("sm_rtv_needed", "0.60", "Percentage of players needed to rockthevote (Def 60%)", 0, true, 0.05, true, 1.0);
-	g_Cvar_File = CreateConVar("sm_rtv_file", "configs/maps.ini", "Map file to use. (Def configs/maps.ini)");
-	g_Cvar_Maps = CreateConVar("sm_rtv_maps", "4", "Number of maps to be voted on. 2 to 6. (Def 4)", 0, true, 2.0, true, 6.0);
-	g_Cvar_Nominate = CreateConVar("sm_rtv_nominate", "1", "Enables nomination system.", 0, true, 0.0, true, 1.0);
-	g_Cvar_MinPlayers = CreateConVar("sm_rtv_minplayers", "0", "Number of players required before RTV will be enabled.", 0, true, 0.0, true, float(MAXPLAYERS));
-	
-	RegConsoleCmd("say", Command_Say);
-	RegConsoleCmd("say_team", Command_Say);
-	
+	g_RTVMapList = CreateArray(arraySize);
+	
+	g_Cvar_Needed = CreateConVar("sm_rtv_needed", "0.60", "Percentage of players needed to rockthevote (Def 60%)", 0, true, 0.05, true, 1.0);
+	g_Cvar_Maps = CreateConVar("sm_rtv_maps", "4", "Number of maps to be voted on. 2 to 6. (Def 4)", 0, true, 2.0, true, 6.0);
+	g_Cvar_Nominate = CreateConVar("sm_rtv_nominate", "1", "Enables nomination system.", 0, true, 0.0, true, 1.0);
+	g_Cvar_MinPlayers = CreateConVar("sm_rtv_minplayers", "0", "Number of players required before RTV will be enabled.", 0, true, 0.0, true, float(MAXPLAYERS));
+	
+	RegConsoleCmd("say", Command_Say);
+	RegConsoleCmd("say_team", Command_Say);
+	
 	RegAdminCmd("sm_rtv_addmap", Command_Addmap, ADMFLAG_CHANGEMAP, "sm_rtv_addmap <mapname> - Forces a map to be on the RTV, and lowers the allowed nominations.");
 	
-	AutoExecConfig(true, "rtv");
-}
+	AutoExecConfig(true, "rtv");
+}
 
 public OnMapStart()
 {
@@ -97,13 +95,13 @@ public OnMapStart()
 	g_RTVStarted = false;
 	g_RTVEnded = false;
 }
-
-public OnMapEnd()
+
+public OnMapEnd()
 {
-	g_CanRTV = false;	
-	g_RTVAllowed = false;
-}
-
+	g_CanRTV = false;	
+	g_RTVAllowed = false;
+}
+
 public OnConfigsExecuted()
 {
 	if (g_RTVMapList != INVALID_HANDLE)
@@ -111,239 +109,248 @@ public OnConfigsExecuted()
 		ClearArray(g_RTVMapList);
 	}
 	
-	if (LoadMaps(g_MapList, g_mapFileTime, g_Cvar_File))
+	if (ReadMapList(g_MapList,
+					g_mapFileSerial,
+					"rockthevote",
+					MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_MAPSFOLDER)
+		== INVALID_HANDLE)
 	{
-		BuildMapMenu();
-		g_CanRTV = true;
-		CreateTimer(30.0, Timer_DelayRTV);
+		if (g_mapFileSerial == -1)
+		{
+			LogError("Unable to create a valid map list.");
+		}
 	}
-}
-
-public bool:OnClientConnect(client, String:rejectmsg[], maxlen)
-{
-	if(!g_CanRTV || IsFakeClient(client))
-		return true;
-	
-	g_Voted[client] = false;
-	g_Nominated[client] = false;
-
-	g_Voters++;
-	g_VotesNeeded = RoundToFloor(float(g_Voters) * GetConVarFloat(g_Cvar_Needed));
-	
-	return true;
-}
-
-public OnClientDisconnect(client)
-{
-	if(!g_CanRTV || IsFakeClient(client))
-		return;
-	
-	if(g_Voted[client])
-	{
-		g_Votes--;
-	}
-	
-	g_Voters--;
 	
-	g_VotesNeeded = RoundToFloor(float(g_Voters) * GetConVarFloat(g_Cvar_Needed));
-	
-	if (g_Votes && g_Voters && g_Votes >= g_VotesNeeded && g_RTVAllowed && !g_RTVStarted) 
+	BuildMapMenu();
+	g_CanRTV = true;
+	CreateTimer(30.0, Timer_DelayRTV);
+}
+
+public bool:OnClientConnect(client, String:rejectmsg[], maxlen)
+{
+	if(!g_CanRTV || IsFakeClient(client))
+		return true;
+	
+	g_Voted[client] = false;
+	g_Nominated[client] = false;
+
+	g_Voters++;
+	g_VotesNeeded = RoundToFloor(float(g_Voters) * GetConVarFloat(g_Cvar_Needed));
+	
+	return true;
+}
+
+public OnClientDisconnect(client)
+{
+	if(!g_CanRTV || IsFakeClient(client))
+		return;
+	
+	if(g_Voted[client])
 	{
-		g_RTVStarted = true;
-		CreateTimer(2.0, Timer_StartRTV, TIMER_FLAG_NO_MAPCHANGE);
-	}	
-}
-
-public Action:Command_Addmap(client, args)
-{
-	if (args < 1)
-	{
-		ReplyToCommand(client, "[SM] Usage: sm_rtv_addmap <mapname>");
-		return Plugin_Handled;
+		g_Votes--;
+	}
+	
+	g_Voters--;
+	
+	g_VotesNeeded = RoundToFloor(float(g_Voters) * GetConVarFloat(g_Cvar_Needed));
+	
+	if (g_Votes && g_Voters && g_Votes >= g_VotesNeeded && g_RTVAllowed && !g_RTVStarted) 
+	{
+		g_RTVStarted = true;
+		CreateTimer(2.0, Timer_StartRTV, TIMER_FLAG_NO_MAPCHANGE);
+	}	
+}
+
+public Action:Command_Addmap(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_rtv_addmap <mapname>");
+		return Plugin_Handled;
 	}
 	
 	if (!g_CanRTV)
 	{
 		ReplyToCommand(client, "[SM] RockTheVote is not available.");
 		return Plugin_Handled;
-	}
-	
-	decl String:mapname[64];
-	GetCmdArg(1, mapname, sizeof(mapname));
-
-	if (FindStringInArray(g_MapList, mapname) == -1)
-	{
-		ReplyToCommand(client, "%t", "Map was not found", mapname);
-		return Plugin_Handled;
-	}
-	
-	if (GetArraySize(g_RTVMapList) > 0)
+	}
+	
+	decl String:mapname[64];
+	GetCmdArg(1, mapname, sizeof(mapname));
+
+	if (FindStringInArray(g_MapList, mapname) == -1)
+	{
+		ReplyToCommand(client, "%t", "Map was not found", mapname);
+		return Plugin_Handled;
+	}
+	
+	if (GetArraySize(g_RTVMapList) > 0)
 	{
 		if (FindStringInArray(g_RTVMapList, mapname) != -1)
 		{
 			ReplyToCommand(client, "%t", "Map Already In Vote", mapname);
 			return Plugin_Handled;				
-		}
-		
-		ShiftArrayUp(g_RTVMapList, 0);
-		SetArrayString(g_RTVMapList, 0, mapname);
-		
-		while (GetArraySize(g_RTVMapList) > GetConVarInt(g_Cvar_Maps))
-		{
-			RemoveFromArray(g_RTVMapList, GetConVarInt(g_Cvar_Maps));
-		}
-	}
-	else
-	{
-		PushArrayString(g_RTVMapList, mapname);
-	}
-		
-	decl String:item[64];
-	for (new i = 0; i < GetMenuItemCount(g_MapMenu); i++)
-	{
-		GetMenuItem(g_MapMenu, i, item, sizeof(item));
-		if (strcmp(item, mapname) == 0)
-		{
-			RemoveMenuItem(g_MapMenu, i);
-			break;
-		}			
-	}	
-	
-	ReplyToCommand(client, "%t", "Map Inserted", mapname);
-	LogAction(client, -1, "\"%L\" inserted map \"%s\".", client, mapname);
-
-	return Plugin_Handled;		
-}
-
-public Action:Command_Say(client, args)
-{
-	if (!g_CanRTV || !client)
-	{
-		return Plugin_Continue;
-	}
-
-	decl String:text[192];
-	if (!GetCmdArgString(text, sizeof(text)))
-	{
-		return Plugin_Continue;
-	}
-	
-	new startidx = 0;
-	if(text[strlen(text)-1] == '"')
-	{
-		text[strlen(text)-1] = '\0';
-		startidx = 1;
-	}
-	
-	if (strcmp(text[startidx], "rtv", false) == 0 || strcmp(text[startidx], "rockthevote", false) == 0)
-	{
-		if (!g_RTVAllowed)
-		{
-			PrintToChat(client, "[SM] %t", "RTV Not Allowed");
-			return Plugin_Continue;
-		}
-		
-		if (g_RTVEnded)
-		{
-			PrintToChat(client, "[SM] %t", "RTV Ended");
-			return Plugin_Continue;
-		}
-		
-		if (g_RTVStarted)
-		{
-			PrintToChat(client, "[SM] %t", "RTV Started");
-			return Plugin_Continue;
-		}
-		
-		if (GetClientCount(true) < GetConVarInt(g_Cvar_MinPlayers) && g_Votes == 0) // Should we keep checking g_Votes here?
-		{
-			PrintToChat(client, "[SM] %t", "Minimal Players Not Met");
-			return Plugin_Continue;			
-		}
-		
-		if (g_Voted[client])
-		{
-			PrintToChat(client, "[SM] %t", "Already Voted");
-			return Plugin_Continue;
-		}	
-		
-		new String:name[64];
-		GetClientName(client, name, sizeof(name));
-		
-		g_Votes++;
-		g_Voted[client] = true;
-		
-		PrintToChatAll("[SM] %t", "RTV Requested", name, g_Votes, g_VotesNeeded);
-		
-		if (g_Votes >= g_VotesNeeded)
+		}
+		
+		ShiftArrayUp(g_RTVMapList, 0);
+		SetArrayString(g_RTVMapList, 0, mapname);
+		
+		while (GetArraySize(g_RTVMapList) > GetConVarInt(g_Cvar_Maps))
 		{
-			g_RTVStarted = true;
-			CreateTimer(2.0, Timer_StartRTV, TIMER_FLAG_NO_MAPCHANGE);
-		}
-	}
-	else if (GetConVarBool(g_Cvar_Nominate) && strcmp(text[startidx], "nominate", false) == 0)
-	{
-		if (g_RTVEnded)
-		{
-			PrintToChat(client, "[SM] %t", "RTV Ended");
-			return Plugin_Continue;
-		}		
-		
-		if (g_RTVStarted)
-		{
-			PrintToChat(client, "[SM] %t", "RTV Started");
-			return Plugin_Continue;
-		}
-		
-		if (g_Nominated[client])
-		{
-			PrintToChat(client, "[SM] %t", "Already Nominated");
-			return Plugin_Continue;
-		}
-		
-		if (GetArraySize(g_RTVMapList) >= GetConVarInt(g_Cvar_Maps))
-		{
-			PrintToChat(client, "[SM] %t", "Max Nominations");
-			return Plugin_Continue;			
-		}
-		
-		DisplayMenu(g_MapMenu, client, MENU_TIME_FOREVER);		
-	}
-	
-	return Plugin_Continue;	
-}
-
-public Action:Timer_DelayRTV(Handle:timer)
-{
+			RemoveFromArray(g_RTVMapList, GetConVarInt(g_Cvar_Maps));
+		}
+	}
+	else
+	{
+		PushArrayString(g_RTVMapList, mapname);
+	}
+		
+	decl String:item[64];
+	for (new i = 0; i < GetMenuItemCount(g_MapMenu); i++)
+	{
+		GetMenuItem(g_MapMenu, i, item, sizeof(item));
+		if (strcmp(item, mapname) == 0)
+		{
+			RemoveMenuItem(g_MapMenu, i);
+			break;
+		}			
+	}	
+	
+	ReplyToCommand(client, "%t", "Map Inserted", mapname);
+	LogAction(client, -1, "\"%L\" inserted map \"%s\".", client, mapname);
+
+	return Plugin_Handled;		
+}
+
+public Action:Command_Say(client, args)
+{
+	if (!g_CanRTV || !client)
+	{
+		return Plugin_Continue;
+	}
+
+	decl String:text[192];
+	if (!GetCmdArgString(text, sizeof(text)))
+	{
+		return Plugin_Continue;
+	}
+	
+	new startidx = 0;
+	if(text[strlen(text)-1] == '"')
+	{
+		text[strlen(text)-1] = '\0';
+		startidx = 1;
+	}
+	
+	if (strcmp(text[startidx], "rtv", false) == 0 || strcmp(text[startidx], "rockthevote", false) == 0)
+	{
+		if (!g_RTVAllowed)
+		{
+			PrintToChat(client, "[SM] %t", "RTV Not Allowed");
+			return Plugin_Continue;
+		}
+		
+		if (g_RTVEnded)
+		{
+			PrintToChat(client, "[SM] %t", "RTV Ended");
+			return Plugin_Continue;
+		}
+		
+		if (g_RTVStarted)
+		{
+			PrintToChat(client, "[SM] %t", "RTV Started");
+			return Plugin_Continue;
+		}
+		
+		if (GetClientCount(true) < GetConVarInt(g_Cvar_MinPlayers) && g_Votes == 0) // Should we keep checking g_Votes here?
+		{
+			PrintToChat(client, "[SM] %t", "Minimal Players Not Met");
+			return Plugin_Continue;			
+		}
+		
+		if (g_Voted[client])
+		{
+			PrintToChat(client, "[SM] %t", "Already Voted");
+			return Plugin_Continue;
+		}	
+		
+		new String:name[64];
+		GetClientName(client, name, sizeof(name));
+		
+		g_Votes++;
+		g_Voted[client] = true;
+		
+		PrintToChatAll("[SM] %t", "RTV Requested", name, g_Votes, g_VotesNeeded);
+		
+		if (g_Votes >= g_VotesNeeded)
+		{
+			g_RTVStarted = true;
+			CreateTimer(2.0, Timer_StartRTV, TIMER_FLAG_NO_MAPCHANGE);
+		}
+	}
+	else if (GetConVarBool(g_Cvar_Nominate) && strcmp(text[startidx], "nominate", false) == 0)
+	{
+		if (g_RTVEnded)
+		{
+			PrintToChat(client, "[SM] %t", "RTV Ended");
+			return Plugin_Continue;
+		}		
+		
+		if (g_RTVStarted)
+		{
+			PrintToChat(client, "[SM] %t", "RTV Started");
+			return Plugin_Continue;
+		}
+		
+		if (g_Nominated[client])
+		{
+			PrintToChat(client, "[SM] %t", "Already Nominated");
+			return Plugin_Continue;
+		}
+		
+		if (GetArraySize(g_RTVMapList) >= GetConVarInt(g_Cvar_Maps))
+		{
+			PrintToChat(client, "[SM] %t", "Max Nominations");
+			return Plugin_Continue;			
+		}
+		
+		DisplayMenu(g_MapMenu, client, MENU_TIME_FOREVER);		
+	}
+	
+	return Plugin_Continue;	
+}
+
+public Action:Timer_DelayRTV(Handle:timer)
+{
 	g_RTVAllowed = true;
 	g_RTVStarted = false;
-	g_RTVEnded = false;	
-}
-
-public Action:Timer_StartRTV(Handle:timer)
-{
-	if (timer == g_RetryTimer)
-	{
-		g_RetryTimer = INVALID_HANDLE;
-	}
-	
-	if (g_RetryTimer != INVALID_HANDLE)
-	{
-		return;
-	}
-
-	if (IsVoteInProgress())
-	{
-		// Can't start a vote, try again in 5 seconds.
-		g_RetryTimer = CreateTimer(5.0, Timer_StartRTV, TIMER_FLAG_NO_MAPCHANGE);
-		return;
-	}			
-	
-	PrintToChatAll("[SM] %t", "RTV Vote Ready");
-		
-	new Handle:MapVoteMenu = CreateMenu(Handler_MapMapVoteMenu, MenuAction:MENU_ACTIONS_ALL);
-	SetMenuTitle(MapVoteMenu, "Rock The Vote");
-	
+	g_RTVEnded = false;	
+}
+
+public Action:Timer_StartRTV(Handle:timer)
+{
+	if (timer == g_RetryTimer)
+	{
+		g_RetryTimer = INVALID_HANDLE;
+	}
+	
+	if (g_RetryTimer != INVALID_HANDLE)
+	{
+		return;
+	}
+
+	if (IsVoteInProgress())
+	{
+		// Can't start a vote, try again in 5 seconds.
+		g_RetryTimer = CreateTimer(5.0, Timer_StartRTV, TIMER_FLAG_NO_MAPCHANGE);
+		return;
+	}			
+	
+	PrintToChatAll("[SM] %t", "RTV Vote Ready");
+		
+	new Handle:MapVoteMenu = CreateMenu(Handler_MapMapVoteMenu, MenuAction:MENU_ACTIONS_ALL);
+	SetMenuTitle(MapVoteMenu, "Rock The Vote");
+	
 	new Handle:tempMaps  = CloneArray(g_MapList);
 	decl String:map[32];
 
@@ -383,44 +390,44 @@ public Action:Timer_StartRTV(Handle:timer)
 	}	
 	
 	CloseHandle(tempMaps);
-	
-	AddMenuItem(MapVoteMenu, "Don't Change", "Don't Change");
-		
-	SetMenuExitButton(MapVoteMenu, false);
-	VoteMenuToAll(MapVoteMenu, 20);
-		
-	LogMessage("[SM] Rockthevote was successfully started.");
-}
-
-public Action:Timer_ChangeMap(Handle:hTimer, Handle:dp)
-{
-	new String:map[65];
-	
-	ResetPack(dp);
-	ReadPackString(dp, map, sizeof(map));
-	
-	ServerCommand("changelevel \"%s\"", map);
-	
-	return Plugin_Stop;
-}
-
-public Handler_MapMapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
-{
-	switch (action)
-	{
-		case MenuAction_End:
-		{
-			CloseHandle(menu);
-		}
-		
-		case MenuAction_Display:
-		{
+	
+	AddMenuItem(MapVoteMenu, "Don't Change", "Don't Change");
+		
+	SetMenuExitButton(MapVoteMenu, false);
+	VoteMenuToAll(MapVoteMenu, 20);
+		
+	LogMessage("[SM] Rockthevote was successfully started.");
+}
+
+public Action:Timer_ChangeMap(Handle:hTimer, Handle:dp)
+{
+	new String:map[65];
+	
+	ResetPack(dp);
+	ReadPackString(dp, map, sizeof(map));
+	
+	ServerCommand("changelevel \"%s\"", map);
+	
+	return Plugin_Stop;
+}
+
+public Handler_MapMapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
+{
+	switch (action)
+	{
+		case MenuAction_End:
+		{
+			CloseHandle(menu);
+		}
+		
+		case MenuAction_Display:
+		{
 	 		decl String:oldTitle[255], String:buffer[255];
-			GetMenuTitle(menu, oldTitle, sizeof(oldTitle));
-			Format(buffer, sizeof(buffer), "%T", oldTitle, param1);
-
-			new Handle:panel = Handle:param2;
-			SetPanelTitle(panel, buffer);
+			GetMenuTitle(menu, oldTitle, sizeof(oldTitle));
+			Format(buffer, sizeof(buffer), "%T", oldTitle, param1);
+
+			new Handle:panel = Handle:param2;
+			SetPanelTitle(panel, buffer);
 		}
 		
 		case MenuAction_DisplayItem:
@@ -431,105 +438,105 @@ public Handler_MapMapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
 				Format(buffer, sizeof(buffer), "%T", "Don't Change", param1);
 				return RedrawMenuItem(buffer);
 			}
-		}		
-
-		// Why am I commented out? Because BAIL hasn't decided yet if
-		// vote notification will be built into the Vote API.
-		/*case MenuAction_Select:
-		{
-			decl String:Name[32], String:Map[32];
-			GetClientName(param1, Name, sizeof(Name));
-			GetMenuItem(menu, param2, Map, sizeof(Map));
-
-			PrintToChatAll("[SM] %s has voted for map '%s'", Name, Map);
-		}*/
-		
-		case MenuAction_VoteCancel:
-		{
-			if (param1 == VoteCancel_NoVotes)
-			{
+		}		
+
+		// Why am I commented out? Because BAIL hasn't decided yet if
+		// vote notification will be built into the Vote API.
+		/*case MenuAction_Select:
+		{
+			decl String:Name[32], String:Map[32];
+			GetClientName(param1, Name, sizeof(Name));
+			GetMenuItem(menu, param2, Map, sizeof(Map));
+
+			PrintToChatAll("[SM] %s has voted for map '%s'", Name, Map);
+		}*/
+		
+		case MenuAction_VoteCancel:
+		{
+			if (param1 == VoteCancel_NoVotes)
+			{
 				PrintToChatAll("[SM] %t", "No Votes");
-				g_RTVEnded = true;
-			}
-		}
-
-		case MenuAction_VoteEnd:
-		{
-			new String:map[64];
-			
-			GetMenuItem(menu, param1, map, sizeof(map));
-			
-			if (GetMenuItemCount(menu) - 1 == param1) // This should always match the "Keep Current" option
-			{
-				PrintToChatAll("[SM] %t", "Current Map Stays");
-				LogMessage("[SM] Rockthevote has ended, current map kept.");
-			}
-			else
-			{
-				PrintToChatAll("[SM] %t", "Changing Maps", map);
-				LogMessage("[SM] Rockthevote has ended, changing to map %s.", map);
-				new Handle:dp;
-				CreateDataTimer(5.0, Timer_ChangeMap, dp);
-				WritePackString(dp, map);
-			}
-			
-			g_RTVEnded = true;
-		}
+				g_RTVEnded = true;
+			}
+		}
+
+		case MenuAction_VoteEnd:
+		{
+			new String:map[64];
+			
+			GetMenuItem(menu, param1, map, sizeof(map));
+			
+			if (GetMenuItemCount(menu) - 1 == param1) // This should always match the "Keep Current" option
+			{
+				PrintToChatAll("[SM] %t", "Current Map Stays");
+				LogMessage("[SM] Rockthevote has ended, current map kept.");
+			}
+			else
+			{
+				PrintToChatAll("[SM] %t", "Changing Maps", map);
+				LogMessage("[SM] Rockthevote has ended, changing to map %s.", map);
+				new Handle:dp;
+				CreateDataTimer(5.0, Timer_ChangeMap, dp);
+				WritePackString(dp, map);
+			}
+			
+			g_RTVEnded = true;
+		}
 	}
 	
-	return 0;
-}
-
-public Handler_MapSelectMenu(Handle:menu, MenuAction:action, param1, param2)
-{
-	switch (action)
-	{
-		case MenuAction_Select:
-		{
-			if (GetArraySize(g_RTVMapList) >= GetConVarInt(g_Cvar_Maps)) 
-			{
-				PrintToChat(param1, "[SM] %t", "Max Nominations");
-				return;	
-			}
-			
-			decl String:map[64], String:name[64];
-			GetMenuItem(menu, param2, map, sizeof(map));
-			
-			if (FindStringInArray(g_RTVMapList, map) != -1)
-			{
-				PrintToChat(param1, "[SM] %t", "Map Already Nominated");
-				return;
-			}
-			
-			GetClientName(param1, name, 64);
-
-			PushArrayString(g_RTVMapList, map);
-			RemoveMenuItem(menu, param2);
-			
-			g_Nominated[param1] = true;
-			
-			PrintToChatAll("[SM] %t", "Map Nominated", name, map);
-		}
-	}
-}
-
-BuildMapMenu()
-{
-	if (g_MapMenu != INVALID_HANDLE)
-	{
-		CloseHandle(g_MapMenu);
-		g_MapMenu = INVALID_HANDLE;
-	}
-	
-	g_MapMenu = CreateMenu(Handler_MapSelectMenu);
-	SetMenuTitle(g_MapMenu, "%t", "Nominate Title");
-
-	decl String:map[64];		
-	for (new i = 0; i < GetArraySize(g_MapList); i++)
-	{
-		GetArrayString(g_MapList, i, map, sizeof(map));
-		AddMenuItem(g_MapMenu, map, map);
-	}
-	
-	SetMenuExitButton(g_MapMenu, false);
+	return 0;
+}
+
+public Handler_MapSelectMenu(Handle:menu, MenuAction:action, param1, param2)
+{
+	switch (action)
+	{
+		case MenuAction_Select:
+		{
+			if (GetArraySize(g_RTVMapList) >= GetConVarInt(g_Cvar_Maps)) 
+			{
+				PrintToChat(param1, "[SM] %t", "Max Nominations");
+				return;	
+			}
+			
+			decl String:map[64], String:name[64];
+			GetMenuItem(menu, param2, map, sizeof(map));
+			
+			if (FindStringInArray(g_RTVMapList, map) != -1)
+			{
+				PrintToChat(param1, "[SM] %t", "Map Already Nominated");
+				return;
+			}
+			
+			GetClientName(param1, name, 64);
+
+			PushArrayString(g_RTVMapList, map);
+			RemoveMenuItem(menu, param2);
+			
+			g_Nominated[param1] = true;
+			
+			PrintToChatAll("[SM] %t", "Map Nominated", name, map);
+		}
+	}
+}
+
+BuildMapMenu()
+{
+	if (g_MapMenu != INVALID_HANDLE)
+	{
+		CloseHandle(g_MapMenu);
+		g_MapMenu = INVALID_HANDLE;
+	}
+	
+	g_MapMenu = CreateMenu(Handler_MapSelectMenu);
+	SetMenuTitle(g_MapMenu, "%t", "Nominate Title");
+
+	decl String:map[64];		
+	for (new i = 0; i < GetArraySize(g_MapList); i++)
+	{
+		GetArrayString(g_MapList, i, map, sizeof(map));
+		AddMenuItem(g_MapMenu, map, map);
+	}
+	
+	SetMenuExitButton(g_MapMenu, false);
 }
\ No newline at end of file

From d8569c1139e5f05ff8171e548bb1f4e6a86d67a3 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 21:51:04 +0000
Subject: [PATCH 206/263] updated build tool for vdf file and new plugin names

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401896
---
 tools/builder/PkgCore.cs | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/tools/builder/PkgCore.cs b/tools/builder/PkgCore.cs
index 0ef84bd5..b7276217 100644
--- a/tools/builder/PkgCore.cs
+++ b/tools/builder/PkgCore.cs
@@ -67,6 +67,7 @@ namespace builder
 			folders.Add("addons/sourcemod/extensions/auto.2.ep1");
 			folders.Add("addons/sourcemod/extensions/auto.2.ep2");
 			folders.Add("addons/sourcemod/scripting/playercommands");
+			folders.Add("addons/metamod");
 			
 			return (string [])folders.ToArray(typeof(string));
 		}
@@ -87,6 +88,7 @@ namespace builder
 			builder.CopyFolder(this, "configs", "addons/sourcemod/configs", null);
 			builder.CopyFolder(this, "configs/geoip", "addons/sourcemod/configs/geoip", null);
 			builder.CopyFolder(this, "configs/cfg", "cfg/sourcemod", null);
+			builder.CopyFolder(this, "configs/metamod", "addons/metamod", null);
 			builder.CopyFolder(this,
 				"configs/sql-init-scripts", 
 				"addons/sourcemod/configs/sql-init-scripts", 
@@ -115,10 +117,10 @@ namespace builder
 			builder.CopyFolder(this, "plugins/testsuite", "addons/sourcemod/scripting/testsuite", null);
 			builder.CopyFolder(this, "plugins/basecommands", "addons/sourcemod/scripting/basecommands", null);
 			builder.CopyFolder(this, "plugins/basecomm", "addons/sourcemod/scripting/basecomm", null);
-			builder.CopyFolder(this, "plugins/basefunvotes", "addons/sourcemod/scripting/basefunvotes", null);
+			builder.CopyFolder(this, "plugins/funvotes", "addons/sourcemod/scripting/funvotes", null);
 			builder.CopyFolder(this, "plugins/basevotes", "addons/sourcemod/scripting/basevotes", null);
 			builder.CopyFolder(this, "plugins/basebans", "addons/sourcemod/scripting/basebans", null);
-			builder.CopyFolder(this, "plugins/basefuncommands", "addons/sourcemod/scripting/basefuncommands", null);
+			builder.CopyFolder(this, "plugins/funcommands", "addons/sourcemod/scripting/funcommands", null);
 			builder.CopyFolder(this, "plugins/playercommands", "addons/sourcemod/scripting/playercommands", null);
 		}
 
@@ -279,9 +281,9 @@ namespace builder
 			plugins.Add(new Plugin("basetriggers"));
 			plugins.Add(new Plugin("nextmap"));
 			plugins.Add(new Plugin("basechat"));
-			plugins.Add(new Plugin("basefuncommands"));
+			plugins.Add(new Plugin("funcommands"));
 			plugins.Add(new Plugin("basevotes"));
-			plugins.Add(new Plugin("basefunvotes"));
+			plugins.Add(new Plugin("funvotes"));
 			plugins.Add(new Plugin("admin-sql-prefetch", true));
 			plugins.Add(new Plugin("admin-sql-threaded", true));
 			plugins.Add(new Plugin("sql-admin-manager", true));

From 887b384f4760292fd5dace8522daafed57b85bf8 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 22 Feb 2008 22:07:41 +0000
Subject: [PATCH 207/263] fixed bug in the build tool

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401897
---
 tools/builder/PkgCore.cs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/builder/PkgCore.cs b/tools/builder/PkgCore.cs
index b7276217..0067e441 100644
--- a/tools/builder/PkgCore.cs
+++ b/tools/builder/PkgCore.cs
@@ -59,10 +59,10 @@ namespace builder
 			folders.Add("addons/sourcemod/extensions/games");
 			folders.Add("addons/sourcemod/scripting/basecommands");
 			folders.Add("addons/sourcemod/scripting/basecomm");
-			folders.Add("addons/sourcemod/scripting/basefunvotes");
+			folders.Add("addons/sourcemod/scripting/funvotes");
 			folders.Add("addons/sourcemod/scripting/basevotes");
 			folders.Add("addons/sourcemod/scripting/basebans");
-			folders.Add("addons/sourcemod/scripting/basefuncommands");
+			folders.Add("addons/sourcemod/scripting/funcommands");
 			folders.Add("addons/sourcemod/extensions/auto.1.ep1");
 			folders.Add("addons/sourcemod/extensions/auto.2.ep1");
 			folders.Add("addons/sourcemod/extensions/auto.2.ep2");

From 7bf9cfc2e806367dcf620e9751f10e7b2280a8ce Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Sat, 23 Feb 2008 11:40:45 +0000
Subject: [PATCH 208/263] improved timer error message (amb1474)

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401898
---
 core/smn_timers.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/core/smn_timers.cpp b/core/smn_timers.cpp
index ee5214c6..d0be127e 100644
--- a/core/smn_timers.cpp
+++ b/core/smn_timers.cpp
@@ -150,7 +150,10 @@ void TimerNatives::OnTimerEnd(ITimer *pTimer, void *pData)
 	{
 		if ((herr=g_HandleSys.FreeHandle(usrhndl, &sec)) != HandleError_None)
 		{
-			g_Logger.LogError("Invalid data handle %x (error %d) passed during timer end", usrhndl, herr);
+			g_Logger.LogError("Invalid data handle %x (error %d) passed during timer end on plugin %s", 
+								usrhndl, 
+								herr, 
+								g_PluginSys.FindPluginByContext(pInfo->pContext->GetContext())->GetFilename());
 		}
 	}
 

From 0e547df4476c40524440479e776d8bdd9325891f Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Sat, 23 Feb 2008 12:25:27 +0000
Subject: [PATCH 209/263] added amb1425, added description buffers to find
 concommand natives

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401899
---
 core/smn_console.cpp        | 14 ++++++++++++++
 plugins/include/console.inc |  8 ++++++--
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/core/smn_console.cpp b/core/smn_console.cpp
index e2be7a50..63417144 100644
--- a/core/smn_console.cpp
+++ b/core/smn_console.cpp
@@ -1136,6 +1136,7 @@ static cell_t FindFirstConCommand(IPluginContext *pContext, const cell_t *params
 	ConCmdIter *pIter;
 	cell_t *pIsCmd, *pFlags;
 	const ConCommandBase *pConCmd;
+	const char *desc;
 
 	pContext->LocalToPhysAddr(params[3], &pIsCmd);
 	pContext->LocalToPhysAddr(params[4], &pFlags);
@@ -1151,6 +1152,12 @@ static cell_t FindFirstConCommand(IPluginContext *pContext, const cell_t *params
 	*pIsCmd = pConCmd->IsCommand() ? 1 : 0;
 	*pFlags = pConCmd->GetFlags();
 
+	if (params[6])
+	{
+		desc = pConCmd->GetHelpText();
+		pContext->StringToLocalUTF8(params[5], params[6], (desc && desc[0]) ? desc : "", NULL);
+	}
+
 	pIter = new ConCmdIter;
 	pIter->pLast = pConCmd;
 
@@ -1169,6 +1176,7 @@ static cell_t FindNextConCommand(IPluginContext *pContext, const cell_t *params)
 	HandleError err;
 	ConCmdIter *pIter;
 	cell_t *pIsCmd, *pFlags;
+	const char *desc;
 	HandleSecurity sec(pContext->GetIdentity(), g_pCoreIdent);
 
 	if ((err = g_HandleSys.ReadHandle(params[1], htConCmdIter, &sec, (void **)&pIter)) != HandleError_None)
@@ -1193,6 +1201,12 @@ static cell_t FindNextConCommand(IPluginContext *pContext, const cell_t *params)
 	*pIsCmd = pIter->pLast->IsCommand() ? 1 : 0;
 	*pFlags = pIter->pLast->GetFlags();
 
+	if (params[7])
+	{
+		desc = pIter->pLast->GetHelpText();
+		pContext->StringToLocalUTF8(params[6], params[7], (desc && desc[0]) ? desc : "", NULL);
+	}
+
 	return 1;
 }
 
diff --git a/plugins/include/console.inc b/plugins/include/console.inc
index d866d5bd..84d04cd5 100644
--- a/plugins/include/console.inc
+++ b/plugins/include/console.inc
@@ -729,6 +729,8 @@ native bool:SetCommandFlags(const String:name[], flags);
  * @param isCommand		Variable to store whether the entry is a command. 
  *						If it is not a command, it is a ConVar.
  * @param flags			Variable to store entry flags.
+ * @param description		Buffer to store the description, empty if no description present.
+ * @param descrmax_size		Maximum size of the description buffer.
  * @return				On success, a ConCmdIter Handle is returned, which 
  *						can be read via FindNextConCommand(), and must be 
  *						closed via CloseHandle().  Additionally, the output 
@@ -737,7 +739,7 @@ native bool:SetCommandFlags(const String:name[], flags);
  *						On failure, INVALID_HANDLE is returned, and the 
  *						contents of outputs is undefined.
  */
-native Handle:FindFirstConCommand(String:buffer[], max_size, &bool:isCommand, &flags=0);
+native Handle:FindFirstConCommand(String:buffer[], max_size, &bool:isCommand, &flags=0, String:description[]="", descrmax_size=0);
 
 /**
  * Reads the next entry in a ConCommandBase iterator.
@@ -748,12 +750,14 @@ native Handle:FindFirstConCommand(String:buffer[], max_size, &bool:isCommand, &f
  * @param isCommand		Variable to store whether the entry is a command.
  *						If it is not a command, it is a ConVar.
  * @param flags			Variable to store entry flags.
+ * @param description		Buffer to store the description, empty if no description present.
+ * @param descrmax_size		Maximum size of the description buffer.
  * @return				On success, the outputs are filled, the iterator is 
  *						advanced to the next entry, and true is returned.  
  *						If no more entries exist, false is returned, and the 
  *						contents of outputs is undefined.
  */
-native bool:FindNextConCommand(Handle:search, String:buffer[], max_size, &bool:isCommand, &flags=0);
+native bool:FindNextConCommand(Handle:search, String:buffer[], max_size, &bool:isCommand, &flags=0, String:description[]="", descrmax_size=0);
 
 /**
  * Replicates a convar value to a specific client. This does not change the actual convar value.

From 45860880efaacf2ad907b47a8f831b9bd8fc5eea Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Sat, 23 Feb 2008 20:18:49 +0000
Subject: [PATCH 210/263] Executable memory is now provided by MM:S's
 allocator, this should reduce virtual memory usage.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401900
---
 core/msvc8/sourcemod_mm.vcproj      | 42 ++++++++++++++++++++++++++++-
 core/smn_timers.cpp                 | 22 ++++++++-------
 core/vm/sp_vm_engine.cpp            | 22 ++++++++++++++-
 core/vm/sp_vm_engine.h              | 14 ++++++++++
 extensions/bintools/CallWrapper.cpp |  2 +-
 extensions/bintools/jit_call.cpp    |  4 ++-
 public/ISourceMod.h                 |  2 +-
 public/sourcepawn/sp_vm_api.h       | 33 ++++++++++++++++++++++-
 sourcepawn/jit/x86/jit_x86.cpp      | 16 +++++++----
 9 files changed, 137 insertions(+), 20 deletions(-)

diff --git a/core/msvc8/sourcemod_mm.vcproj b/core/msvc8/sourcemod_mm.vcproj
index 43282ece..a4b30dd0 100644
--- a/core/msvc8/sourcemod_mm.vcproj
+++ b/core/msvc8/sourcemod_mm.vcproj
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="Windows-1252"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
-	Version="8.00"
+	Version="8,00"
 	Name="sourcemod_mm"
 	ProjectGUID="{E39527CD-7CAB-4420-97CC-DA1B93B260BC}"
 	RootNamespace="sourcemod_mm"
@@ -1154,6 +1154,46 @@
 				<File
 					RelativePath="..\vm\sp_vm_engine.cpp"
 					>
+					<FileConfiguration
+						Name="Release - Episode 1|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							AdditionalIncludeDirectories=""
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug - Episode 1|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							AdditionalIncludeDirectories=""
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="CrazyDebug|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							AdditionalIncludeDirectories="&quot;$(SOURCEMM16)\sourcehook&quot;"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug - Old Metamod|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							AdditionalIncludeDirectories="&quot;$(SOURCEMM16)\sourcehook&quot;"
+						/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release - Old Metamod|Win32"
+						>
+						<Tool
+							Name="VCCLCompilerTool"
+							AdditionalIncludeDirectories="&quot;$(SOURCEMM16)\sourcehook&quot;"
+						/>
+					</FileConfiguration>
 				</File>
 				<File
 					RelativePath="..\vm\sp_vm_function.cpp"
diff --git a/core/smn_timers.cpp b/core/smn_timers.cpp
index d0be127e..362606e0 100644
--- a/core/smn_timers.cpp
+++ b/core/smn_timers.cpp
@@ -33,6 +33,7 @@
 #include "TimerSys.h"
 #include "PluginSys.h"
 #include "Logger.h"
+#include "DebugReporter.h"
 
 #define TIMER_HNDL_CLOSE	(1<<9)
 
@@ -150,19 +151,23 @@ void TimerNatives::OnTimerEnd(ITimer *pTimer, void *pData)
 	{
 		if ((herr=g_HandleSys.FreeHandle(usrhndl, &sec)) != HandleError_None)
 		{
-			g_Logger.LogError("Invalid data handle %x (error %d) passed during timer end on plugin %s", 
-								usrhndl, 
-								herr, 
-								g_PluginSys.FindPluginByContext(pInfo->pContext->GetContext())->GetFilename());
+			g_DbgReporter.GenerateError(pInfo->pContext,
+										pInfo->Hook->GetFunctionID(), 
+										SP_ERROR_NATIVE, 
+										"Invalid data handle %x (error %d) passed during timer end",
+										usrhndl, 
+										herr);
 		}
 	}
 
 	if ((herr=g_HandleSys.FreeHandle(pInfo->TimerHandle, &sec)) != HandleError_None)
 	{
-		g_Logger.LogError("Invalid timer handle %x (error %d) on plugin %s during timer end", 
-							pInfo->TimerHandle, 
-							herr, 
-							g_PluginSys.FindPluginByContext(pInfo->pContext->GetContext())->GetFilename());
+		g_DbgReporter.GenerateError(pInfo->pContext, 
+									pInfo->Hook->GetFunctionID(), 
+									SP_ERROR_NATIVE, 
+									"Invalid timer handle %x (error %d) during timer end, displayed function is timer callback, not the stack trace", 
+									pInfo->TimerHandle, 
+									herr);
 		return;
 	}
 	DeleteTimerInfo(pInfo);
@@ -332,4 +337,3 @@ REGISTER_NATIVES(timernatives)
 	{"IsServerProcessing",		smn_IsServerProcessing},
 	{NULL,						NULL}
 };
-
diff --git a/core/vm/sp_vm_engine.cpp b/core/vm/sp_vm_engine.cpp
index 7dbc9fc8..02615e26 100644
--- a/core/vm/sp_vm_engine.cpp
+++ b/core/vm/sp_vm_engine.cpp
@@ -90,7 +90,7 @@ const char *GetSourcePawnErrorMessage(int error)
 	return g_ErrorMsgTable[error];
 }
 
-SourcePawnEngine::SourcePawnEngine()
+SourcePawnEngine::SourcePawnEngine() : m_ExeMemory(16)
 {
 	m_pDebugHook = NULL;
 	m_CallStack = NULL;
@@ -137,6 +137,26 @@ void *SourcePawnEngine::ExecAlloc(size_t size)
 #endif
 }
 
+void *SourcePawnEngine::AllocatePageMemory(size_t size)
+{
+	return m_ExeMemory.Alloc(size);
+}
+
+void SourcePawnEngine::SetReadExecute(void *ptr)
+{
+	m_ExeMemory.SetRE(ptr);
+}
+
+void SourcePawnEngine::SetReadWrite(void *ptr)
+{
+	m_ExeMemory.SetRW(ptr);
+}
+
+void SourcePawnEngine::FreePageMemory(void *ptr)
+{
+	m_ExeMemory.Free(ptr);
+}
+
 void SourcePawnEngine::ExecFree(void *address)
 {
 #if defined WIN32
diff --git a/core/vm/sp_vm_engine.h b/core/vm/sp_vm_engine.h
index 4dd320d7..5e3eee98 100644
--- a/core/vm/sp_vm_engine.h
+++ b/core/vm/sp_vm_engine.h
@@ -32,6 +32,15 @@
 #ifndef _INCLUDE_SOURCEPAWN_VM_ENGINE_H_
 #define _INCLUDE_SOURCEPAWN_VM_ENGINE_H_
 
+#include <sh_memory.h>
+/* HACK to avoid including sourcehook.h for just the SH_ASSERT definition */
+#if !defined  SH_ASSERT
+	#define SH_ASSERT(x, info)
+	#include <sh_pagealloc.h>
+	#undef SH_ASSERT
+#else
+	#include <sh_pagealloc.h>
+#endif
 #include "sp_vm_api.h"
 #include "sp_vm_function.h"
 
@@ -82,6 +91,10 @@ public: //ISourcePawnEngine
 	IDebugListener *SetDebugListener(IDebugListener *pListener);
 	unsigned int GetContextCallCount();
 	unsigned int GetEngineAPIVersion();
+	void *AllocatePageMemory(size_t size);
+	void SetReadWrite(void *ptr);
+	void SetReadExecute(void *ptr);
+	void FreePageMemory(void *ptr);
 public: //Debugger Stuff
 	/**
 	 * @brief Pushes a context onto the top of the call tracer.
@@ -110,6 +123,7 @@ private:
 	TracedCall *m_FreedCalls;
 	TracedCall *m_CallStack;
 	unsigned int m_CurChain;
+	SourceHook::CPageAlloc m_ExeMemory;
 	//CFunction *m_pFreeFuncs;
 };
 
diff --git a/extensions/bintools/CallWrapper.cpp b/extensions/bintools/CallWrapper.cpp
index 6a27cfa1..41392e2b 100644
--- a/extensions/bintools/CallWrapper.cpp
+++ b/extensions/bintools/CallWrapper.cpp
@@ -75,7 +75,7 @@ CallWrapper::~CallWrapper()
 {
 	delete [] m_Params;
 	delete m_RetParam;
-	g_SPEngine->ExecFree(m_Addrs[ADDR_CODEBASE]);
+	g_SPEngine->FreePageMemory(m_Addrs[ADDR_CODEBASE]);
 }
 
 void CallWrapper::Destroy()
diff --git a/extensions/bintools/jit_call.cpp b/extensions/bintools/jit_call.cpp
index 112094a4..7443260e 100644
--- a/extensions/bintools/jit_call.cpp
+++ b/extensions/bintools/jit_call.cpp
@@ -637,7 +637,8 @@ skip_retbuffer:
 	if (writer.outbase == NULL)
 	{
 		CodeSize = writer.get_outputpos();
-		writer.outbase = (jitcode_t)g_SPEngine->ExecAlloc(CodeSize);
+		writer.outbase = (jitcode_t)g_SPEngine->AllocatePageMemory(CodeSize);
+		g_SPEngine->SetReadWrite(writer.outbase);
 		writer.outptr = writer.outbase;
 		pWrapper->m_Addrs[ADDR_CODEBASE] = writer.outbase;
 		g_StackAlign = (g_StackUsage) ? ((g_StackUsage & 0xFFFFFFF0) + 16) - g_StackUsage : 0;
@@ -646,4 +647,5 @@ skip_retbuffer:
 		Needs_Retbuf = false;
 		goto jit_rewind;
 	}
+	g_SPEngine->SetReadExecute(writer.outbase);
 }
diff --git a/public/ISourceMod.h b/public/ISourceMod.h
index ae5f0851..5782b772 100644
--- a/public/ISourceMod.h
+++ b/public/ISourceMod.h
@@ -43,7 +43,7 @@
 #include <time.h>
 
 #define SMINTERFACE_SOURCEMOD_NAME		"ISourceMod"
-#define SMINTERFACE_SOURCEMOD_VERSION	4
+#define SMINTERFACE_SOURCEMOD_VERSION	5
 
 /**
 * @brief Forward declaration of the KeyValues class.
diff --git a/public/sourcepawn/sp_vm_api.h b/public/sourcepawn/sp_vm_api.h
index 36fd5935..7920188b 100644
--- a/public/sourcepawn/sp_vm_api.h
+++ b/public/sourcepawn/sp_vm_api.h
@@ -41,7 +41,7 @@
 #include "sp_vm_types.h"
 
 /** SourcePawn Engine API Version */
-#define SOURCEPAWN_ENGINE_API_VERSION	1
+#define SOURCEPAWN_ENGINE_API_VERSION	2
 
 /** SourcePawn VM API Version */
 #define SOURCEPAWN_VM_API_VERSION		5
@@ -740,6 +740,7 @@ namespace SourcePawn
 
 		/**
 		 * @brief Allocates executable memory.
+		 * @deprecated Use AllocPageMemory()
 		 *
 		 * @param size		Size of memory to allocate.
 		 * @return			Pointer to memory, NULL if allocation failed.
@@ -748,6 +749,7 @@ namespace SourcePawn
 
 		/**
 		 * @brief Frees executable memory.
+		 * @deprecated Use FreePageMemory()
 		 *
 		 * @param address	Address to free.
 		 */
@@ -777,6 +779,35 @@ namespace SourcePawn
 		 * @return			Engine API version.
 		 */
 		virtual unsigned int GetEngineAPIVersion() =0;
+
+		/**
+		 * @brief Allocates executable memory.
+		 *
+		 * @param size		Size of memory to allocate.
+		 * @return			Pointer to memory, NULL if allocation failed.
+		 */
+		virtual void *AllocatePageMemory(size_t size) =0;
+		
+		/**
+		 * @brief Sets the input memory permissions to read+write.
+		 *
+		 * @param ptr		Memory block.
+		 */
+		virtual void SetReadWrite(void *ptr) =0;
+
+		/**
+		 * @brief Sets the input memory permissions to read+execute.
+		 *
+		 * @param ptr		Memory block.
+		 */
+		virtual void SetReadExecute(void *ptr) =0;
+
+		/**
+		 * @brief Frees executable memory.
+		 *
+		 * @param ptr		Address to free.
+		 */
+		virtual void FreePageMemory(void *ptr) =0;
 	};
 
 
diff --git a/sourcepawn/jit/x86/jit_x86.cpp b/sourcepawn/jit/x86/jit_x86.cpp
index ec492a5b..a01a66cd 100644
--- a/sourcepawn/jit/x86/jit_x86.cpp
+++ b/sourcepawn/jit/x86/jit_x86.cpp
@@ -2380,7 +2380,8 @@ jit_rewind:
 
 		/* the total codesize is now known! */
 		codemem = writer.get_outputpos();
-		writer.outbase = (jitcode_t)engine->ExecAlloc(codemem);
+		writer.outbase = (jitcode_t)engine->AllocatePageMemory(codemem);
+		engine->SetReadWrite(writer.outbase);
 		writer.outptr = writer.outbase;
 		/* go back for third pass */
 		goto jit_rewind;
@@ -2398,6 +2399,8 @@ jit_rewind:
 		}
 		/* Write these last because error jumps should be unpredicted, and thus forward */
 		WriteErrorRoutines(data, jit);
+
+		engine->SetReadExecute(writer.outbase);
 	}
 
 	/*************
@@ -2605,22 +2608,25 @@ rewind:
 	if (jw.outbase == NULL)
 	{
 		/* Second pass: Actually write */
-		jw.outbase = (jitcode_t)engine->ExecAlloc(jw.get_outputpos());
+		jw.outbase = (jitcode_t)engine->AllocatePageMemory(jw.get_outputpos());
 		if (!jw.outbase)
 		{
 			return NULL;
 		}
+		engine->SetReadWrite(jw.outbase);
 		jw.outptr = jw.outbase;
 	
 		goto rewind;
 	}
-	
+
+	engine->SetReadExecute(jw.outbase);
+
 	return (SPVM_NATIVE_FUNC)jw.outbase;
 }
 
 void JITX86::DestroyFakeNative(SPVM_NATIVE_FUNC func)
 {
-	engine->ExecFree((void *)func);
+	engine->FreePageMemory(func);
 }
 
 const char *JITX86::GetVMName()
@@ -2637,7 +2643,7 @@ int JITX86::ContextExecute(sp_context_t *ctx, uint32_t code_idx, cell_t *result)
 
 void JITX86::FreeContext(sp_context_t *ctx)
 {
-	engine->ExecFree(ctx->codebase);
+	engine->FreePageMemory(ctx->codebase);
 	delete [] ctx->memory;
 	delete [] ctx->files;
 	delete [] ctx->lines;

From 4365d3763d2e0d56cdf120aad7dbba4c216e0d9f Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Sat, 23 Feb 2008 20:33:33 +0000
Subject: [PATCH 211/263] moved these includes for GCC

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401901
---
 core/vm/sp_vm_engine.cpp | 10 ++++++++++
 core/vm/sp_vm_engine.h   | 11 ++---------
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/core/vm/sp_vm_engine.cpp b/core/vm/sp_vm_engine.cpp
index 02615e26..9438c034 100644
--- a/core/vm/sp_vm_engine.cpp
+++ b/core/vm/sp_vm_engine.cpp
@@ -29,6 +29,16 @@
  * Version: $Id$
  */
 
+#include <sh_memory.h>
+/* HACK to avoid including sourcehook.h for just the SH_ASSERT definition */
+#if !defined  SH_ASSERT
+	#define SH_ASSERT(x, info)
+	#include <sh_pagealloc.h>
+	#undef SH_ASSERT
+#else
+	#include <sh_pagealloc.h>
+#endif
+
 #include <malloc.h>
 #include <string.h>
 #include <assert.h>
diff --git a/core/vm/sp_vm_engine.h b/core/vm/sp_vm_engine.h
index 5e3eee98..e5b4294c 100644
--- a/core/vm/sp_vm_engine.h
+++ b/core/vm/sp_vm_engine.h
@@ -32,18 +32,11 @@
 #ifndef _INCLUDE_SOURCEPAWN_VM_ENGINE_H_
 #define _INCLUDE_SOURCEPAWN_VM_ENGINE_H_
 
-#include <sh_memory.h>
-/* HACK to avoid including sourcehook.h for just the SH_ASSERT definition */
-#if !defined  SH_ASSERT
-	#define SH_ASSERT(x, info)
-	#include <sh_pagealloc.h>
-	#undef SH_ASSERT
-#else
-	#include <sh_pagealloc.h>
-#endif
 #include "sp_vm_api.h"
 #include "sp_vm_function.h"
 
+class SourceHook::CPageAlloc;
+
 struct TracedCall
 {
 	uint32_t cip;

From 1b26a1984a2af55efea4a15ad573cab3156d5c2b Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Sat, 23 Feb 2008 20:50:26 +0000
Subject: [PATCH 212/263] gah GCC crying again

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401902
---
 core/vm/sp_vm_engine.cpp | 12 +++++++-----
 core/vm/sp_vm_engine.h   |  3 ---
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/core/vm/sp_vm_engine.cpp b/core/vm/sp_vm_engine.cpp
index 9438c034..4790a930 100644
--- a/core/vm/sp_vm_engine.cpp
+++ b/core/vm/sp_vm_engine.cpp
@@ -59,6 +59,8 @@
 
 using namespace SourcePawn;
 
+SourceHook::CPageAlloc g_ExeMemory(16);
+
 #define ERROR_MESSAGE_MAX		25
 static const char *g_ErrorMsgTable[] = 
 {
@@ -100,7 +102,7 @@ const char *GetSourcePawnErrorMessage(int error)
 	return g_ErrorMsgTable[error];
 }
 
-SourcePawnEngine::SourcePawnEngine() : m_ExeMemory(16)
+SourcePawnEngine::SourcePawnEngine()
 {
 	m_pDebugHook = NULL;
 	m_CallStack = NULL;
@@ -149,22 +151,22 @@ void *SourcePawnEngine::ExecAlloc(size_t size)
 
 void *SourcePawnEngine::AllocatePageMemory(size_t size)
 {
-	return m_ExeMemory.Alloc(size);
+	return g_ExeMemory.Alloc(size);
 }
 
 void SourcePawnEngine::SetReadExecute(void *ptr)
 {
-	m_ExeMemory.SetRE(ptr);
+	g_ExeMemory.SetRE(ptr);
 }
 
 void SourcePawnEngine::SetReadWrite(void *ptr)
 {
-	m_ExeMemory.SetRW(ptr);
+	g_ExeMemory.SetRW(ptr);
 }
 
 void SourcePawnEngine::FreePageMemory(void *ptr)
 {
-	m_ExeMemory.Free(ptr);
+	g_ExeMemory.Free(ptr);
 }
 
 void SourcePawnEngine::ExecFree(void *address)
diff --git a/core/vm/sp_vm_engine.h b/core/vm/sp_vm_engine.h
index e5b4294c..a14b8b45 100644
--- a/core/vm/sp_vm_engine.h
+++ b/core/vm/sp_vm_engine.h
@@ -35,8 +35,6 @@
 #include "sp_vm_api.h"
 #include "sp_vm_function.h"
 
-class SourceHook::CPageAlloc;
-
 struct TracedCall
 {
 	uint32_t cip;
@@ -116,7 +114,6 @@ private:
 	TracedCall *m_FreedCalls;
 	TracedCall *m_CallStack;
 	unsigned int m_CurChain;
-	SourceHook::CPageAlloc m_ExeMemory;
 	//CFunction *m_pFreeFuncs;
 };
 

From 4eda818e0ffd3c21fffa12fe10f8c8e659b5d3d9 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 23 Feb 2008 20:54:31 +0000
Subject: [PATCH 213/263] added special build rule for sp_vm_engine.cpp fixed
 an uninitialized memory read in ReadMapList()

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401903
---
 core/Makefile            | 19 +++++++++++++------
 core/smn_maplists.cpp    |  2 +-
 core/vm/sp_vm_engine.cpp |  2 +-
 3 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/core/Makefile b/core/Makefile
index e76f34ea..5b4e3447 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -33,12 +33,12 @@ OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_adt_trie.cpp
 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
 	systems/LibrarySys.cpp systems/PluginInfoDatabase.cpp systems/PluginSys.cpp \
-	systems/ShareSys.cpp vm/sp_vm_basecontext.cpp vm/sp_vm_engine.cpp \
-	vm/sp_vm_function.cpp
+	systems/ShareSys.cpp vm/sp_vm_basecontext.cpp vm/sp_vm_function.cpp
 OBJECTS += thread/ThreadWorker.cpp thread/BaseWorker.cpp thread/PosixThreads.cpp ThreadSupport.cpp
 OBJECTS_C = zlib/adler32.c zlib/compress.c zlib/crc32.c zlib/deflate.c zlib/gzio.c \
 	   zlib/infback.c zlib/inffast.c zlib/inflate.c zlib/inftrees.c zlib/trees.c \
 	   zlib/uncompr.c zlib/zutil.c
+OBJECTS_SM16 = vm/sp_vm_engine.cpp
 
 ifeq "$(ENGINE)" "original"
 	HL2SDK = $(HL2SDK_ORIG)
@@ -67,10 +67,13 @@ endif
 LINK += $(HL2LIB)/tier1_i486.a $(HL2LIB)/mathlib_i486.a vstdlib_i486.so \
 	tier0_i486.so -lpthread -static-libgcc
 
+INCLUDE_SMSDK = -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions 
+
 INCLUDE += -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
 	-I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(METAMOD) -I$(METAMOD)/sourcehook -I$(METAMOD)/sourcemm \
-	-I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions -Isystems \
-	-I$(HL2PUB)/mathlib
+	-I$(HL2PUB)/mathlib -Isystems $(INCLUDE_SMSDK)
+
+SM16_INCLUDE = -I. -I.. -I$(SOURCEMM16)/sourcehook $(INCLUDE_SMSDK)
 
 ifeq "$(DEBUG)" "true"
 	BIN_DIR = Debug.$(ENGINE)
@@ -95,6 +98,7 @@ endif
 
 OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.ox)
 OBJ_LINUX_C := $(OBJECTS_C:%.c=$(BIN_DIR)/%.oc)
+OBJ_LINUX_SM16 := $(OBJECTS_SM16:%.cpp=$(BIN_DIR)/%.ok)
 
 $(BIN_DIR)/%.ox: %.cpp
 	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
@@ -102,6 +106,9 @@ $(BIN_DIR)/%.ox: %.cpp
 $(BIN_DIR)/%.oc: %.c
 	$(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $<
 
+$(BIN_DIR)/%.ok: %.cpp
+	$(CPP) $(SM16_INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
+
 all:
 	mkdir -p $(BIN_DIR)/systems
 	mkdir -p $(BIN_DIR)/vm
@@ -111,8 +118,8 @@ all:
 	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
 	$(MAKE) -f Makefile sourcemod
 
-sourcemod: $(OBJ_LINUX) $(OBJ_LINUX_C)
-	$(CPP) $(INCLUDE) $(OBJ_LINUX) $(OBJ_LINUX_C) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+sourcemod: $(OBJ_LINUX) $(OBJ_LINUX_C) $(OBJ_LINUX_SM16)
+	$(CPP) $(OBJ_LINUX) $(OBJ_LINUX_C) $(OBJ_LINUX_SM16) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
 
 default: all
 
diff --git a/core/smn_maplists.cpp b/core/smn_maplists.cpp
index 640e0570..b2c228dd 100644
--- a/core/smn_maplists.cpp
+++ b/core/smn_maplists.cpp
@@ -352,7 +352,7 @@ public:
 		}
 
 		/* If there was a success, and the serial has not changed, bail out. */
-		if (*pSerial == change_serial)
+		if (success && *pSerial == change_serial)
 		{
 			return NULL;
 		}
diff --git a/core/vm/sp_vm_engine.cpp b/core/vm/sp_vm_engine.cpp
index 4790a930..136172aa 100644
--- a/core/vm/sp_vm_engine.cpp
+++ b/core/vm/sp_vm_engine.cpp
@@ -29,6 +29,7 @@
  * Version: $Id$
  */
 
+#include "sp_vm_types.h"
 #include <sh_memory.h>
 /* HACK to avoid including sourcehook.h for just the SH_ASSERT definition */
 #if !defined  SH_ASSERT
@@ -43,7 +44,6 @@
 #include <string.h>
 #include <assert.h>
 #include "sp_file_headers.h"
-#include "sp_vm_types.h"
 #include "sp_vm_engine.h"
 #include "zlib/zlib.h"
 #include "sp_vm_basecontext.h"

From 82c57bb7b0b80aae3decca4ccfded4800c5a9b94 Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Sat, 23 Feb 2008 21:05:23 +0000
Subject: [PATCH 214/263] fixed linux build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401904
---
 sourcepawn/jit/x86/jit_x86.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sourcepawn/jit/x86/jit_x86.cpp b/sourcepawn/jit/x86/jit_x86.cpp
index a01a66cd..05e48271 100644
--- a/sourcepawn/jit/x86/jit_x86.cpp
+++ b/sourcepawn/jit/x86/jit_x86.cpp
@@ -2626,7 +2626,7 @@ rewind:
 
 void JITX86::DestroyFakeNative(SPVM_NATIVE_FUNC func)
 {
-	engine->FreePageMemory(func);
+	engine->FreePageMemory((void *)func);
 }
 
 const char *JITX86::GetVMName()

From 5b2d36e386bc87de2cd44513b91426d505c10068 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 27 Feb 2008 13:46:41 +0000
Subject: [PATCH 215/263] fixed amb1487 (sm_slap for negative damage)

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401905
---
 plugins/playercommands/slap.sp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/playercommands/slap.sp b/plugins/playercommands/slap.sp
index efa793cb..891bb463 100644
--- a/plugins/playercommands/slap.sp
+++ b/plugins/playercommands/slap.sp
@@ -175,7 +175,7 @@ public Action:Command_Slap(client, args)
 	{
 		decl String:arg2[20];
 		GetCmdArg(2, arg2, sizeof(arg2));
-		if (StringToIntEx(arg2, damage) == 0)
+		if (StringToIntEx(arg2, damage) == 0 || damage < 0)
 		{
 			ReplyToCommand(client, "[SM] %t", "Invalid Amount");
 			return Plugin_Handled;

From b144620eeb97b77559f8842510c58a0a5f5008a1 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 27 Feb 2008 13:49:57 +0000
Subject: [PATCH 216/263] fixed amb1483 - GetEntPropString() rejected
 FIELD_MODELNAME/FIELD_SOUNDNAME

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401906
---
 core/smn_entities.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/core/smn_entities.cpp b/core/smn_entities.cpp
index cd3e4ea1..29b341bd 100644
--- a/core/smn_entities.cpp
+++ b/core/smn_entities.cpp
@@ -796,6 +796,8 @@ static cell_t FindDataMapOffs(IPluginContext *pContext, const cell_t *params)
 				}
 				break;
 			}
+		case FIELD_MODELNAME:
+		case FIELD_SOUNDNAME:
 		case FIELD_STRING:
 			{
 				*pSize = sizeof(string_t);
@@ -1614,7 +1616,9 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
 			FIND_PROP_DATA(td);
 
 			if (td->fieldType != FIELD_CHARACTER
-				&& td->fieldType != FIELD_STRING)
+				&& td->fieldType != FIELD_STRING
+				&& td->fieldType != FIELD_MODELNAME 
+				&& td->fieldType != FIELD_SOUNDNAME)
 			{
 				return pContext->ThrowNativeError("Data field %s is not a string (%d != %d)", 
 					prop,
@@ -1622,7 +1626,7 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
 					FIELD_CHARACTER);
 			}
 
-			bIsStringIndex = (td->fieldType == FIELD_STRING);
+			bIsStringIndex = (td->fieldType != FIELD_CHARACTER);
 
 			offset = td->fieldOffset[TD_OFFSET_NORMAL];
 			break;

From a87628654d35130598a4455e5031b68f680b8efd Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 1 Mar 2008 05:18:26 +0000
Subject: [PATCH 217/263] fixed amb1476 - sm_sql_addgroup params were backwards

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401907
---
 plugins/sql-admin-manager.sp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/sql-admin-manager.sp b/plugins/sql-admin-manager.sp
index 587ea1e6..058ef74c 100644
--- a/plugins/sql-admin-manager.sp
+++ b/plugins/sql-admin-manager.sp
@@ -606,7 +606,7 @@ public Action:Command_AddGroup(client, args)
 {
 	if (args < 2)
 	{
-		ReplyToCommand(client, "[SM] Usage: sm_sql_addgroup <name> <flags> [immunity]");
+		ReplyToCommand(client, "[SM] Usage: sm_sql_addgroup <flags> <name> [immunity]");
 		return Plugin_Handled;
 	}
 

From f30d3d1901a8a86bfd0aaa2cc6937feafb9e5d0a Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 1 Mar 2008 05:42:25 +0000
Subject: [PATCH 218/263] fixed amb1475 - inconsistent root console menu usage

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401908
---
 core/ConCmdManager.cpp     | 144 +--------------------------------
 core/ConVarManager.cpp     | 162 +------------------------------------
 core/sm_srvcmds.cpp        |  22 +----
 core/systems/PluginSys.cpp |  88 +++++++++++++++++---
 core/systems/PluginSys.h   |   2 +
 5 files changed, 87 insertions(+), 331 deletions(-)

diff --git a/core/ConCmdManager.cpp b/core/ConCmdManager.cpp
index 28a97069..8e27b477 100644
--- a/core/ConCmdManager.cpp
+++ b/core/ConCmdManager.cpp
@@ -914,12 +914,11 @@ void ConCmdManager::OnRootConsoleCommand(const char *cmdname, const CCommand &co
 	{
 		const char *text = command.Arg(2);
 
-		int id = atoi(text);
-		CPlugin *pPlugin = g_PluginSys.GetPluginByOrder(id);
+		CPlugin *pPlugin = g_PluginSys.FindPluginByConsoleArg(text);
 
 		if (!pPlugin)
 		{
-			g_RootMenu.ConsolePrint("[SM] Plugin index %d not found.", id);
+			g_RootMenu.ConsolePrint("[SM] Plugin \"%s\" was not found.", text);
 			return;
 		}
 
@@ -946,7 +945,7 @@ void ConCmdManager::OnRootConsoleCommand(const char *cmdname, const CCommand &co
 		g_RootMenu.ConsolePrint("  %-17.16s %-8.7s %s", "[Name]", "[Type]", "[Help]");
 		for (iter=pList->begin();
 			 iter!=pList->end();
-			 iter++, id++)
+			 iter++)
 		{
 			PlCmdInfo &cmd = (*iter);
 			if (cmd.type == Cmd_Server)
@@ -978,140 +977,3 @@ void ConCmdManager::OnRootConsoleCommand(const char *cmdname, const CCommand &co
 
 	g_RootMenu.ConsolePrint("[SM] Usage: sm cmds <plugin #>");
 }
-
-static int g_yam_state = 0;
-void _YamState(int state)
-{
-	if (state == 0)
-	{
-		g_RootMenu.ConsolePrint("Welcome to the SourceMod Text Adventure.");
-		g_RootMenu.ConsolePrint("Type sm_text to see the last message.");
-		g_RootMenu.ConsolePrint("Type sm_text <word> to follow a capital word.");
-		g_RootMenu.ConsolePrint("-------------------------------");
-		g_RootMenu.ConsolePrint("You are at VALVE HEADQUARTERS.");
-		g_RootMenu.ConsolePrint("To your LEFT is BAILOPAN, rearranging the letters to spell");
-		g_RootMenu.ConsolePrint("\"A HARD VEAL QUEST\".  FORWARD is the entrance to the building.");
-		g_RootMenu.ConsolePrint("To your RIGHT is your last chance to flee in terror.");
-	} else if (state == 1) {
-		g_RootMenu.ConsolePrint("BAILOPAN tells you that his name his pronounced");
-		g_RootMenu.ConsolePrint("\"bye low pahn,\" not \"bay low pan.\"  Do you ");
-		g_RootMenu.ConsolePrint("MOCK him, or NOD quietly?");
-	} else if (state == 2) {
-		g_RootMenu.ConsolePrint("You enter the Valve building.  You hear screams coming from within.");
-		g_RootMenu.ConsolePrint("A grotesque figure lumbers up to greet you; it is Gabe Newell.");
-		g_RootMenu.ConsolePrint("\"Welcome,\" he belches, \"to my lair.\"");
-		g_RootMenu.ConsolePrint("Do you SHAKE Gaben's hand, WALK past him, or OFFER a donut?");
-	} else if (state == 3) {
-		g_RootMenu.ConsolePrint("You walk into the break room.  Alfred \"Alf is from Melmac\" Reynolds and");
-		g_RootMenu.ConsolePrint("Yahn \"Yeti\" Bernier are discussing something (you overhear ");
-		g_RootMenu.ConsolePrint("the phrase \"and next Steam update, here's what we should break\").");
-		g_RootMenu.ConsolePrint("Should you DIE in a fire, REPORT a bug, REQUEST a feature, or ");
-		g_RootMenu.ConsolePrint("SPRAY them with butter?");
-	}
-	g_yam_state = state;
-}
-
-#if defined ORANGEBOX_BUILD
-void _IntExt_CallYams(const CCommand &cmd)
-{
-#else
-void _IntExt_CallYams()
-{
-	CCommand cmd;
-#endif
-	const char *arg = cmd.Arg(1);
-
-	/* should be impossible */
-	if (!arg || arg[0] == '\0')
-	{
-		_YamState(g_yam_state);
-	}
-
-	if (g_yam_state == 1)
-	{
-		if (strcasecmp(arg, "mock") == 0)
-		{
-			g_RootMenu.ConsolePrint("You mock BAILOPAN's pronunciation.  In a fit of rage, ");
-			g_RootMenu.ConsolePrint("he sticks an INT 3 call into your chest, rendering you broken.");
-			g_RootMenu.ConsolePrint("YOU HAVE DIED.  GAME OVER.");
-			g_yam_state = 0;
-		} else if (strcasecmp(arg, "nod") == 0) {
-			g_RootMenu.ConsolePrint("You nod quietly, and then slowly back away into the Valve headquarters.");
-			_YamState(2);
-		} else {
-			g_RootMenu.ConsolePrint("Commands are MOCK and NOD.");
-		}
-	} else if (g_yam_state == 3) {
-		if (strcasecmp(arg, "report") == 0)
-		{
-			g_RootMenu.ConsolePrint("You report a bug to Alfred and Yeti.  Immediately, both fall asleep.");
-			g_RootMenu.ConsolePrint("You decay in the break room for two years while they sleep.");
-			g_RootMenu.ConsolePrint("YOU HAVE DIED.  GAME OVER.");
-			g_yam_state = 0;
-		} else if (strcasecmp(arg, "request") == 0) {
-			g_RootMenu.ConsolePrint("You request a feature to Alfred and Yeti.  They both mutter something");
-			g_RootMenu.ConsolePrint("about it being implemented \"soon.\"  Then, by accident, someone sends");
-			g_RootMenu.ConsolePrint("a message over \"Friends.\"  The entire building catches fire.");
-			g_RootMenu.ConsolePrint("YOU HAVE DIED.  GAME OVER.");
-			g_yam_state = 0;
-		} else if (strcasecmp(arg, "die") == 0) {
-			g_RootMenu.ConsolePrint("For no reason, you suddenly catch fire.  Alfred and Yeti find this");
-			g_RootMenu.ConsolePrint("deeply disturbing, and cover your flaming corpse with Episode 2");
-			g_RootMenu.ConsolePrint("advertisements.  Coming soon, with Team Fortress 2, and Portal!");
-			g_RootMenu.ConsolePrint("YOU HAVE DIED.  GAME OVER.");
-			g_yam_state = 0;
-		} else if (strcasecmp(arg, "spray") == 0) {
-			g_RootMenu.ConsolePrint("You spray Alfred and Yeti with butter.  Like Jack Thompson to an");
-			g_RootMenu.ConsolePrint("ambulance, Gabe Newell instantly appears and devours them both.");
-			g_RootMenu.ConsolePrint("You run away, just in time, as Gabe Newell explodes, registering ");
-			g_RootMenu.ConsolePrint("a 5.6 earthquake.  Outside, world peace is achieved.");
-			g_RootMenu.ConsolePrint("YOU HAVE WON.");
-			g_yam_state = 0;
-		}
-	} else if (g_yam_state == 2) {
-		if (strcasecmp(arg, "shake") == 0)
-		{
-			g_RootMenu.ConsolePrint("You shake Gaben's hand.  It is a terrifying and disgusting experience.");
-			g_RootMenu.ConsolePrint("However, you survive, and continue on.");
-			_YamState(3);
-		} else if (strcasecmp(arg, "offer") == 0) {
-			g_RootMenu.ConsolePrint("You offer Gabe Newell one (1) donut.  With a gleam in his eyes, ");
-			g_RootMenu.ConsolePrint("he picks you up and devours you whole.");
-			g_RootMenu.ConsolePrint("YOU HAVE DIED.  GAME OVER.");
-			g_yam_state = 0;
-		} else if (strcasecmp(arg, "walk") == 0) {
-			g_RootMenu.ConsolePrint("You walk past Gabe Newell.  He can't keep up with your pace!");
-			_YamState(3);
-		} else {
-			g_RootMenu.ConsolePrint("Commands are SHAKE, OFFER, and WALK.");
-		}
-	} else if (g_yam_state == 0) {
-		if (strcasecmp(arg, "left") == 0)
-		{
-			_YamState(1);
-		} else if (strcasecmp(arg, "right") == 0) {
-			g_RootMenu.ConsolePrint("You run away from the Valve headquarters in sheer terror.");
-			g_RootMenu.ConsolePrint("While running, you smash into an unknown person, who turns out to be your soul mate.");
-			g_RootMenu.ConsolePrint("You marry and raise a family of 3 kids.");
-			g_RootMenu.ConsolePrint("Many years later, you look back, and realize this was your best choice.");
-			g_RootMenu.ConsolePrint("YOU HAVE WON.");
-			g_yam_state = 0;
-		} else if (strcasecmp(arg, "forward") == 0) {
-			_YamState(2);
-		} else if (arg[0] != '\0') {
-			g_RootMenu.ConsolePrint("Commands are FORWARD, LEFT, and RIGHT.");
-		}
-	}
-}
-
-void _IntExt_EnableYams()
-{
-	static ConCommand *pCmd = NULL;
-	if (!pCmd)
-	{
-		pCmd = new ConCommand("sm_text", _IntExt_CallYams, "Fountain of Yams Adventure Game", FCVAR_GAMEDLL);
-		g_RootMenu.ConsolePrint("Something is now enabled...");
-	} else {
-		g_RootMenu.ConsolePrint("Something is already enabled...");
-	}
-}
diff --git a/core/ConVarManager.cpp b/core/ConVarManager.cpp
index 0f0f39ae..5de8d87a 100644
--- a/core/ConVarManager.cpp
+++ b/core/ConVarManager.cpp
@@ -270,14 +270,14 @@ void ConVarManager::OnRootConsoleCommand(const char *cmdname, const CCommand &co
 	if (argcount >= 3)
 	{
 		/* Get plugin index that was passed */
-		int id = atoi(command.Arg(2));
+		const char *arg = command.Arg(2);
 		
 		/* Get plugin object */
-		CPlugin *plugin = g_PluginSys.GetPluginByOrder(id);
+		CPlugin *plugin = g_PluginSys.FindPluginByConsoleArg(arg);
 
 		if (!plugin)
 		{
-			g_RootMenu.ConsolePrint("[SM] Plugin index %d not found.", id);
+			g_RootMenu.ConsolePrint("[SM] Plugin \"%s\" was not found.", arg);
 			return;
 		}
 
@@ -705,159 +705,3 @@ HandleError ConVarManager::ReadConVarHandle(Handle_t hndl, ConVar **pVar)
 
 	return error;
 }
-
-static int s_YamagramState = 0;
-
-void _YamagramPrinterTwoPointOhOh(int yamagram)
-{
-	switch (yamagram)
-	{
-	case 0:
-		g_RootMenu.ConsolePrint("Answer the following questions correctly and Gaben may not eat you after all.");
-		g_RootMenu.ConsolePrint("You will be given one hint in the form of my patented yamagrams.");
-		g_RootMenu.ConsolePrint("Type sm_nana to see the last question.");
-		g_RootMenu.ConsolePrint("Type sm_nana <answer> to attempt an answer of the question.");
-		g_RootMenu.ConsolePrint("-------------------------------");
-		_YamagramPrinterTwoPointOhOh(1);
-		return;
-	case 1:
-		g_RootMenu.ConsolePrint("Question Ichi (1)");
-		g_RootMenu.ConsolePrint("One can turn into a cow by doing what action?");
-		g_RootMenu.ConsolePrint("Hint: AGE SANS GRIT");
-		break;
-	case 2:
-		g_RootMenu.ConsolePrint("Question Ni (2)");
-		g_RootMenu.ConsolePrint("What kind of hat should you wear when using the Internet?");
-		g_RootMenu.ConsolePrint("Hint: BRR MOOSE");
-		break;
-	case 3:
-		g_RootMenu.ConsolePrint("Question San (3)");
-		g_RootMenu.ConsolePrint("Who is the lead developer of SourceMod?");
-		g_RootMenu.ConsolePrint("Hint: VEAL BANDANA DID RIP SOON");
-		break;
-	case 4:
-		g_RootMenu.ConsolePrint("Question Yon (4)");
-		g_RootMenu.ConsolePrint("A terrible translation of 'SVN Revision' to Japanese romaji might be ...");
-		g_RootMenu.ConsolePrint("Hint: I TAKE IN AN AIR OK");
-		break;
-	case 5:
-		g_RootMenu.ConsolePrint("Question Go (5)");
-		g_RootMenu.ConsolePrint("What is a fundamental concept in the game of Go?");
-		g_RootMenu.ConsolePrint("Hint: AD LADEN THIEF");
-		break;
-	case 6:
-		g_RootMenu.ConsolePrint("Question Roku (6)");
-		g_RootMenu.ConsolePrint("Why am I asking all these strange questions?");
-		g_RootMenu.ConsolePrint("Hint: CHUBBY TITAN EATS EWE WAGE DATA");
-		break;
-	case 7:
-		g_RootMenu.ConsolePrint("Question Nana (7)");
-		g_RootMenu.ConsolePrint("What is my name?");
-		g_RootMenu.ConsolePrint("Hint: AD MODE LAG US");
-		break;
-	default:
-		break;
-	}
-
-	s_YamagramState = yamagram;
-}
-
-#if defined ORANGEBOX_BUILD
-void _IntExt_CallYamagrams(const CCommand &cmd)
-{
-#else
-void _IntExt_CallYamagrams()
-{
-	CCommand cmd;
-#endif
-	bool correct = false;
-	const char *arg = cmd.ArgS();
-
-	if (!arg || arg[0] == '\0')
-	{
-		_YamagramPrinterTwoPointOhOh(s_YamagramState);
-		return;
-	}
-
-	switch (s_YamagramState)
-	{
-	case 1:
-		correct = !strcasecmp(arg, "eating grass");
-		break;
-	case 2:
-		correct = !strcasecmp(arg, "sombrero");
-		break;
-	case 3:
-		correct = !strcasecmp(arg, "david bailopan anderson");
-		break;
-	case 4:
-		correct = !strcasecmp(arg, "kaitei no kairan");
-		break;
-	case 5:
-		correct = !strcasecmp(arg, "life and death");
-		break;
-	case 6:
-		correct = !strcasecmp(arg, "because gabe wanted it that way");
-		if (correct)
-		{
-			g_RootMenu.ConsolePrint("Congratulations, you have answered 6 of my questions.");
-			g_RootMenu.ConsolePrint("However, I have one final question for you. It wouldn't be nana without it.");
-			g_RootMenu.ConsolePrint("-------------------------------");
-			_YamagramPrinterTwoPointOhOh(7);
-			return;
-		}
-		break;
-	case 7:
-		correct = !strcasecmp(arg, "damaged soul");
-		if (correct)
-		{
-			g_RootMenu.ConsolePrint("You don't know how lucky you are to still be alive!");
-			g_RootMenu.ConsolePrint("Congratulations. You have answered all 7 questions correctly.");
-			g_RootMenu.ConsolePrint("The SourceMod Dev Team will be at your door with anti-Gaben grenades");
-			g_RootMenu.ConsolePrint("within seconds. You will also be provided with a rocket launcher,");
-			g_RootMenu.ConsolePrint("just in case Alfred decides to strike you with a blitzkrieg in retaliation.");
-
-			s_YamagramState = 0;
-			return;
-		}
-		break;
-	default:
-		break;
-	}
-
-	if (s_YamagramState > 0)
-	{
-		if (correct)
-		{
-			g_RootMenu.ConsolePrint("Correct! You are one step closer to avoiding the deadly jaws of Gaben.");
-			g_RootMenu.ConsolePrint("-------------------------------");
-			s_YamagramState++;
-		} else {
-			g_RootMenu.ConsolePrint("Wrong! You better be more careful. Gaben may be at your door at any minute.");
-			return;
-		}
-	}
-
-	_YamagramPrinterTwoPointOhOh(s_YamagramState);
-}
-
-void _IntExt_EnableYamagrams()
-{
-	static ConCommand *pCmd = NULL;
-	if (!pCmd)
-	{
-		pCmd = new ConCommand("sm_nana", _IntExt_CallYamagrams, "Try these yamagrams!", FCVAR_GAMEDLL);
-		g_RootMenu.ConsolePrint("[SM] Warning: Gaben has been alerted of your actions. You may be eaten.");
-	} else {
-		g_RootMenu.ConsolePrint("[SM] Gaben has already been alerted of your actions...");
-	}
-}
-
-void _IntExt_OnHostnameChanged(ConVar *pConVar, const char *oldValue, float flOldValue)
-{
-	if (strcmp(oldValue, "Good morning, DS-san.") == 0
-		&& strcmp(pConVar->GetString(), "Good night, talking desk lamp.") == 0)
-	{
-		_IntExt_EnableYamagrams();
-	}
-}
diff --git a/core/sm_srvcmds.cpp b/core/sm_srvcmds.cpp
index 4e374084..7f2a749d 100644
--- a/core/sm_srvcmds.cpp
+++ b/core/sm_srvcmds.cpp
@@ -59,17 +59,6 @@ RootConsoleMenu::~RootConsoleMenu()
 	m_Menu.clear();
 }
 
-extern void _IntExt_OnHostnameChanged(ConVar *var, const char *pOldValue, float flOldValue);
-
-class DetectHostNameChanges : public IConVarChangeListener
-{
-public:
-	void OnConVarChanged(ConVar *pConVar, const char *oldValue, float flOldValue)
-	{
-		_IntExt_OnHostnameChanged(pConVar, oldValue, flOldValue);
-	}
-} s_HostnameChangeDetector;
-
 void RootConsoleMenu::OnSourceModStartup(bool late)
 {
 #if defined ORANGEBOX_BUILD
@@ -82,13 +71,11 @@ void RootConsoleMenu::OnSourceModStartup(bool late)
 
 void RootConsoleMenu::OnSourceModAllInitialized()
 {
-	g_ConVarManager.AddConVarChangeListener("hostname", &s_HostnameChangeDetector);
 	g_ShareSys.AddInterface(NULL, this);
 }
 
 void RootConsoleMenu::OnSourceModShutdown()
 {
-	g_ConVarManager.RemoveConVarChangeListener("hostname", &s_HostnameChangeDetector);
 	RemoveRootConsoleCommand("credits", this);
 	RemoveRootConsoleCommand("version", this);
 }
@@ -227,8 +214,6 @@ unsigned int RootConsoleMenu::GetInterfaceVersion()
 	return SMINTERFACE_ROOTCONSOLE_VERSION;
 }
 
-extern void _IntExt_EnableYams();
-
 void RootConsoleMenu::GotRootCmd(const CCommand &cmd)
 {
 	unsigned int argnum = cmd.ArgC();
@@ -236,12 +221,7 @@ void RootConsoleMenu::GotRootCmd(const CCommand &cmd)
 	if (argnum >= 2)
 	{
 		const char *cmdname = cmd.Arg(1);
-		if (strcmp(cmdname, "text") == 0)
-		{
-			_IntExt_EnableYams();
-			return;
-		}
-		else if (strcmp(cmdname, "internal") == 0)
+		if (strcmp(cmdname, "internal") == 0)
 		{
 			if (argnum >= 3)
 			{
diff --git a/core/systems/PluginSys.cpp b/core/systems/PluginSys.cpp
index 4e022cca..0fac4d59 100644
--- a/core/systems/PluginSys.cpp
+++ b/core/systems/PluginSys.cpp
@@ -2305,14 +2305,33 @@ void CPluginManager::OnRootConsoleCommand(const char *cmdname, const CCommand &c
 				return;
 			}
 
-			int num = atoi(command.Arg(3));
-			if (num < 1 || num > (int)GetPluginCount())
+			CPlugin *pl;
+			char *end;
+			const char *arg = command.Arg(3);
+			int id = strtol(arg, &end, 10);
+
+			if (*end == '\0')
 			{
-				g_RootMenu.ConsolePrint("[SM] Plugin index not found.");
-				return;
+				pl = GetPluginByOrder(id);
+				if (!pl)
+				{
+					g_RootMenu.ConsolePrint("[SM] Plugin index %d not found.", id);
+					return;
+				}
+			}
+			else
+			{
+				char pluginfile[256];
+				const char *ext = g_LibSys.GetFileExtension(arg) ? "" : ".smx";
+				UTIL_Format(pluginfile, sizeof(pluginfile), "%s%s", arg, ext);
+
+				if (!sm_trie_retrieve(m_LoadLookup, pluginfile, (void **)&pl))
+				{
+					g_RootMenu.ConsolePrint("[SM] Plugin %s is not loaded.", pluginfile);
+					return;
+				}
 			}
 
-			CPlugin *pl = GetPluginByOrder(num);
 			const sm_plugininfo_t *info = pl->GetPublicInfo();
 
 			g_RootMenu.ConsolePrint("  Filename: %s", pl->GetFilename());
@@ -2388,11 +2407,31 @@ void CPluginManager::OnRootConsoleCommand(const char *cmdname, const CCommand &c
 				return;
 			}
 
-			int num = atoi(command.Arg(3));
-			if (num < 1 || num > (int)GetPluginCount())
+			CPlugin *pl;
+			char *end;
+			const char *arg = command.Arg(3);
+			int id = strtol(arg, &end, 10);
+
+			if (*end == '\0')
 			{
-				g_RootMenu.ConsolePrint("[SM] Plugin index not found.");
-				return;
+				pl = GetPluginByOrder(id);
+				if (!pl)
+				{
+					g_RootMenu.ConsolePrint("[SM] Plugin index %d not found.", id);
+					return;
+				}
+			}
+			else
+			{
+				char pluginfile[256];
+				const char *ext = g_LibSys.GetFileExtension(arg) ? "" : ".smx";
+				UTIL_Format(pluginfile, sizeof(pluginfile), "%s%s", arg, ext);
+
+				if (!sm_trie_retrieve(m_LoadLookup, pluginfile, (void **)&pl))
+				{
+					g_RootMenu.ConsolePrint("[SM] Plugin %s is not loaded.", pluginfile);
+					return;
+				}
 			}
 
 			int res;
@@ -2413,7 +2452,6 @@ void CPluginManager::OnRootConsoleCommand(const char *cmdname, const CCommand &c
 				debug = false;
 			}
 
-			CPlugin *pl = GetPluginByOrder(num);
 			if (debug && pl->IsDebugging())
 			{
 				g_RootMenu.ConsolePrint("[SM] This plugin is already in debug mode.");
@@ -2807,3 +2845,33 @@ int CPluginManager::GetOrderOfPlugin(IPlugin *pl)
 	return -1;
 }
 
+CPlugin *CPluginManager::FindPluginByConsoleArg(const char *arg)
+{
+	int id;
+	char *end;
+	CPlugin *pl;
+	
+	id = strtol(arg, &end, 10);
+
+	if (*end == '\0')
+	{
+		pl = GetPluginByOrder(id);
+		if (!pl)
+		{
+			return NULL;
+		}
+	}
+	else
+	{
+		char pluginfile[256];
+		const char *ext = g_LibSys.GetFileExtension(arg) ? "" : ".smx";
+		UTIL_Format(pluginfile, sizeof(pluginfile), "%s%s", arg, ext);
+
+		if (!sm_trie_retrieve(m_LoadLookup, pluginfile, (void **)&pl))
+		{
+			return NULL;
+		}
+	}
+
+	return pl;
+}
diff --git a/core/systems/PluginSys.h b/core/systems/PluginSys.h
index f51b0f5a..6a607797 100644
--- a/core/systems/PluginSys.h
+++ b/core/systems/PluginSys.h
@@ -443,6 +443,8 @@ public:
 	bool ReloadPlugin(CPlugin *pl);
 
 	void UnloadAll();
+
+	CPlugin *FindPluginByConsoleArg(const char *arg);
 private:
 	LoadRes _LoadPlugin(CPlugin **pPlugin, const char *path, bool debug, PluginType type, char error[], size_t maxlength);
 

From 1e6b1c92cc57dbf916d5396efbf7c30da113f8ab Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 1 Mar 2008 06:07:16 +0000
Subject: [PATCH 219/263] fixed amb1485 - memory corruption in ShiftArrayUp() /
 CellArray::insert_at()

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401909
---
 core/CellArray.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/CellArray.h b/core/CellArray.h
index f8925a60..786cd255 100644
--- a/core/CellArray.h
+++ b/core/CellArray.h
@@ -118,7 +118,7 @@ public:
 		/* move everything up */
 		cell_t *src = at(index);
 		cell_t *dst = at(index + 1);
-		memmove(dst, src, sizeof(cell_t) * m_BlockSize * m_Size);
+		memmove(dst, src, sizeof(cell_t) * m_BlockSize * (m_Size-index));
 
 		m_Size++;
 

From 2be85f1a3e122dbd2d93c49504aba4e81c7ad014 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 1 Mar 2008 06:33:25 +0000
Subject: [PATCH 220/263] added amb1495 - ISourceMod::Add/RemoveGameFrameHook

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401910
---
 core/TimerSys.cpp    |  2 +-
 core/frame_hooks.cpp |  4 ++--
 core/frame_hooks.h   |  2 +-
 core/sourcemod.cpp   | 30 ++++++++++++++++++++++++++++++
 core/sourcemod.h     |  5 +++++
 public/ISourceMod.h  | 23 ++++++++++++++++++++++-
 6 files changed, 61 insertions(+), 5 deletions(-)

diff --git a/core/TimerSys.cpp b/core/TimerSys.cpp
index 5831dd40..633de682 100644
--- a/core/TimerSys.cpp
+++ b/core/TimerSys.cpp
@@ -234,7 +234,7 @@ void TimerSystem::GameFrame(bool simulating)
 		g_fTimerThink = CalcNextThink(g_fTimerThink, TIMER_MIN_ACCURACY);
 	}
 
-	RunFrameHooks();
+	RunFrameHooks(simulating);
 
 	if (m_pOnGameFrame->GetFunctionCount())
 	{
diff --git a/core/frame_hooks.cpp b/core/frame_hooks.cpp
index 5603e881..09a38a67 100644
--- a/core/frame_hooks.cpp
+++ b/core/frame_hooks.cpp
@@ -39,11 +39,12 @@
 float g_LastMenuTime = 0.0f;
 float g_LastAuthCheck = 0.0f;
 
-void RunFrameHooks()
+void RunFrameHooks(bool simulating)
 {
 	/* Frame based hooks */
 	g_DBMan.RunFrame();
 	g_HL2.ProcessFakeCliCmdQueue();
+	g_SourceMod.ProcessGameFrameHooks(simulating);
 
 	float curtime = *g_pUniversalTime;
 
@@ -60,4 +61,3 @@ void RunFrameHooks()
 		g_LastAuthCheck = curtime;
 	}
 }
-
diff --git a/core/frame_hooks.h b/core/frame_hooks.h
index 098ff428..f99d560c 100644
--- a/core/frame_hooks.h
+++ b/core/frame_hooks.h
@@ -32,6 +32,6 @@
 #ifndef _INCLUDE_SOURCEMOD_FRAME_HOOKS_H_
 #define _INCLUDE_SOURCEMOD_FRAME_HOOKS_H_
 
-void RunFrameHooks();
+void RunFrameHooks(bool simulating);
 
 #endif //_INCLUDE_SOURCEMOD_FRAME_HOOKS_H_
diff --git a/core/sourcemod.cpp b/core/sourcemod.cpp
index 9b88b66c..5a44e775 100644
--- a/core/sourcemod.cpp
+++ b/core/sourcemod.cpp
@@ -670,6 +670,36 @@ time_t SourceModBase::GetAdjustedTime()
 	return GetAdjustedTime();
 }
 
+void SourceModBase::AddGameFrameHook(GAME_FRAME_HOOK hook)
+{
+	m_frame_hooks.push_back(hook);
+}
+
+void SourceModBase::RemoveGameFrameHook(GAME_FRAME_HOOK hook)
+{
+	for (size_t i = 0; i < m_frame_hooks.size(); i++)
+	{
+		if (m_frame_hooks[i] == hook)
+		{
+			m_frame_hooks.erase(m_frame_hooks.iterAt(i));
+			return;
+		}
+	}
+}
+
+void SourceModBase::ProcessGameFrameHooks(bool simulating)
+{
+	if (m_frame_hooks.size() == 0)
+	{
+		return;
+	}
+
+	for (size_t i = 0; i < m_frame_hooks.size(); i++)
+	{
+		m_frame_hooks[i](simulating);
+	}
+}
+
 SMGlobalClass *SMGlobalClass::head = NULL;
 
 SMGlobalClass::SMGlobalClass()
diff --git a/core/sourcemod.h b/core/sourcemod.h
index 1b222c80..cb4ff880 100644
--- a/core/sourcemod.h
+++ b/core/sourcemod.h
@@ -35,6 +35,7 @@
 #include "sm_globals.h"
 #include <ISourceMod.h>
 #include <sh_stack.h>
+#include <sh_vector.h>
 #include "CDataPack.h"
 
 using namespace SourceHook;
@@ -114,6 +115,9 @@ public: // ISourceMod
 	void GlobalPause();
 	void GlobalUnpause();
 	void DoGlobalPluginLoads();
+	void AddGameFrameHook(GAME_FRAME_HOOK hook);
+	void RemoveGameFrameHook(GAME_FRAME_HOOK hook);
+	void ProcessGameFrameHooks(bool simulating);
 private:
 	CStack<CDataPack *> m_freepacks;
 	char m_SMBaseDir[PLATFORM_MAX_PATH];
@@ -124,6 +128,7 @@ private:
 	bool m_ExecOnMapEnd;
 	unsigned int m_target;
 	bool m_GotBasePath;
+	CVector<GAME_FRAME_HOOK> m_frame_hooks;
 };
 
 extern bool g_Loaded;
diff --git a/public/ISourceMod.h b/public/ISourceMod.h
index 5782b772..66b21090 100644
--- a/public/ISourceMod.h
+++ b/public/ISourceMod.h
@@ -43,7 +43,7 @@
 #include <time.h>
 
 #define SMINTERFACE_SOURCEMOD_NAME		"ISourceMod"
-#define SMINTERFACE_SOURCEMOD_VERSION	5
+#define SMINTERFACE_SOURCEMOD_VERSION	6
 
 /**
 * @brief Forward declaration of the KeyValues class.
@@ -63,6 +63,13 @@ namespace SourceMod
 		Path_SM_Rel,			/**< Base path is relative to SourceMod */
 	};
 
+	/**
+	 * @brief Called when a game frame is fired.
+	 *
+	 * @param simulating		Whether or not the game is ticking.
+	 */
+	typedef void (*GAME_FRAME_HOOK)(bool simulating);
+
 	/**
 	 * @brief Contains miscellaneous helper functions.
 	 */
@@ -225,6 +232,20 @@ namespace SourceMod
 		 * @return			Global client value.
 		 */
 		virtual unsigned int GetGlobalTarget() const =0;
+
+		/**
+		 * @brief Adds a function to be called each game frame.
+		 *
+		 * @param hook		Hook function.
+		 */
+		virtual void AddGameFrameHook(GAME_FRAME_HOOK hook) =0;
+
+		/**
+		 * @brief Removes one game frame hook matching the given function.
+		 *
+		 * @param hook		Hook function.
+		 */
+		virtual void RemoveGameFrameHook(GAME_FRAME_HOOK hook) =0;
 	};
 }
 

From 7c0e564db7d2800d9e0b20e152f1e189770293a8 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 1 Mar 2008 07:14:16 +0000
Subject: [PATCH 221/263] added amb1320 - added @me and @!me targets

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401911
---
 core/PlayerManager.cpp | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp
index 302f8603..c90deea4 100644
--- a/core/PlayerManager.cpp
+++ b/core/PlayerManager.cpp
@@ -961,10 +961,22 @@ void PlayerManager::ProcessCommandTarget(cmd_target_info_t *info)
 		}
 	}
 
+	if (strcmp(info->pattern, "@me") == 0)
+	{
+		info->targets[0] = info->admin;
+		info->num_targets = 1;
+		strncopy(info->target_name, 
+			pAdmin ? pAdmin->GetName() : "Console",
+			info->target_name_maxlength);
+		info->target_name_style = COMMAND_TARGETNAME_RAW;
+		return;
+	}
+
 	if ((info->flags & COMMAND_FILTER_NO_MULTI) != COMMAND_FILTER_NO_MULTI)
 	{
 		bool is_multi = false;
 		bool bots_only = false;
+		int skip_client = -1;
 
 		if (strcmp(info->pattern, "@all") == 0)
 		{
@@ -1018,6 +1030,13 @@ void PlayerManager::ProcessCommandTarget(cmd_target_info_t *info)
 			info->target_name_style = COMMAND_TARGETNAME_ML;
 			info->flags |= COMMAND_FILTER_NO_BOTS;
 		}
+		else if (strcmp(info->pattern, "@!me") == 0)
+		{
+			is_multi = true;
+			strncopy(info->target_name, "all players", info->target_name_maxlength);
+			info->target_name_style = COMMAND_TARGETNAME_ML;
+			skip_client = info->admin;
+		}
 
 		if (is_multi)
 		{
@@ -1029,7 +1048,8 @@ void PlayerManager::ProcessCommandTarget(cmd_target_info_t *info)
 				}
 				if (FilterCommandTarget(pAdmin, pTarget, info->flags) > 0)
 				{
-					if (!bots_only || pTarget->IsFakeClient())
+					if ((!bots_only || pTarget->IsFakeClient())
+						&& skip_client != i)
 					{
 						info->targets[total++] = i;
 					}

From 7a8309deed72ef9e1ac450145296f1db29614bdd Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 1 Mar 2008 07:17:38 +0000
Subject: [PATCH 222/263] fixed a bug from @me in server console

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401912
---
 core/PlayerManager.cpp | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp
index c90deea4..79936b11 100644
--- a/core/PlayerManager.cpp
+++ b/core/PlayerManager.cpp
@@ -961,13 +961,11 @@ void PlayerManager::ProcessCommandTarget(cmd_target_info_t *info)
 		}
 	}
 
-	if (strcmp(info->pattern, "@me") == 0)
+	if (strcmp(info->pattern, "@me") == 0 && info->admin != 0)
 	{
 		info->targets[0] = info->admin;
 		info->num_targets = 1;
-		strncopy(info->target_name, 
-			pAdmin ? pAdmin->GetName() : "Console",
-			info->target_name_maxlength);
+		strncopy(info->target_name, pAdmin->GetName(), info->target_name_maxlength);
 		info->target_name_style = COMMAND_TARGETNAME_RAW;
 		return;
 	}

From f4e23a14ddb821d95d3a7f95a8d4b7b97861ced0 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sat, 1 Mar 2008 07:59:53 +0000
Subject: [PATCH 223/263] added amb1331 - steamid targetting

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401913
---
 core/PlayerManager.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp
index 79936b11..ac1fc427 100644
--- a/core/PlayerManager.cpp
+++ b/core/PlayerManager.cpp
@@ -931,6 +931,53 @@ void PlayerManager::ProcessCommandTarget(cmd_target_info_t *info)
 			}
 		}
 
+		/* Do we need to look for a steam id? */
+		if (strncmp(&info->pattern[1], "STEAM_", 6) == 0)
+		{
+			size_t p, len;
+			char new_pattern[256];
+
+			strcpy(new_pattern, "STEAM_");
+			len = strlen(&info->pattern[7]);
+			for (p = 0; p < len; p++)
+			{
+				new_pattern[6 + p] = info->pattern[7 + p];
+				if (new_pattern[6 + p] == '_')
+				{
+					new_pattern[6 + p] = ':';
+				}
+			}
+			new_pattern[6 + p] = '\0';
+
+			for (int i = 1; i <= max_clients; i++)
+			{
+				if ((pTarget = GetPlayerByIndex(i)) == NULL)
+				{
+					continue;
+				}
+				if (!pTarget->IsConnected() || !pTarget->IsAuthorized())
+				{
+					continue;
+				}
+				if (strcmp(pTarget->GetAuthString(), new_pattern) == 0)
+				{
+					if ((info->reason = FilterCommandTarget(pAdmin, pTarget, info->flags))
+						== COMMAND_TARGET_VALID)
+					{
+						info->targets[0] = i;
+						info->num_targets = 1;
+						strncopy(info->target_name, pTarget->GetName(), info->target_name_maxlength);
+						info->target_name_style = COMMAND_TARGETNAME_RAW;
+					}
+					else
+					{
+						info->num_targets = 0;
+					}
+					return;
+				}
+			}
+		}
+
 		/* See if an exact name matches */
 		for (int i = 1; i <= max_clients; i++)
 		{

From 0817bd0b8ba57270a9812b4216e6b441ae36d178 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Mar 2008 06:40:59 +0000
Subject: [PATCH 224/263] added amb256 - (nice number), profiler complete with
 gui to show files

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401914
---
 configs/plugin_settings.cfg                 |   7 +
 core/Profiler.cpp                           | 483 ++++++++++++++++++++
 core/Profiler.h                             | 131 ++++++
 core/msvc8/sourcemod_mm.vcproj              |  10 +-
 core/systems/PluginSys.cpp                  |   1 -
 core/vm/sp_vm_basecontext.cpp               |  41 +-
 core/vm/sp_vm_basecontext.h                 |   2 +
 core/vm/sp_vm_function.cpp                  |  27 +-
 core/vm/sp_vm_function.h                    |   8 +-
 public/sourcepawn/sp_vm_api.h               |  61 ++-
 public/sourcepawn/sp_vm_types.h             |  10 +
 sourcepawn/jit/x86/dll_exports.cpp          |   2 +-
 sourcepawn/jit/x86/jit_x86.cpp              | 217 ++++++++-
 sourcepawn/jit/x86/jit_x86.h                |   5 +-
 tools/profiler/csharp/Comparators.cs        |  85 ++++
 tools/profiler/csharp/Form1.Designer.cs     | 244 ++++++++++
 tools/profiler/csharp/Form1.cs              |  98 ++++
 tools/profiler/csharp/Form1.resx            | 126 +++++
 tools/profiler/csharp/ProfReport.cs         | 157 +++++++
 tools/profiler/csharp/Program.cs            |  20 +
 tools/profiler/csharp/profviewer.csproj     |  80 ++++
 tools/profiler/csharp/profviewer.sln        |  20 +
 tools/profiler/php/ProfFileParser.class.php |  73 +++
 23 files changed, 1874 insertions(+), 34 deletions(-)
 create mode 100644 core/Profiler.cpp
 create mode 100644 core/Profiler.h
 create mode 100644 tools/profiler/csharp/Comparators.cs
 create mode 100644 tools/profiler/csharp/Form1.Designer.cs
 create mode 100644 tools/profiler/csharp/Form1.cs
 create mode 100644 tools/profiler/csharp/Form1.resx
 create mode 100644 tools/profiler/csharp/ProfReport.cs
 create mode 100644 tools/profiler/csharp/Program.cs
 create mode 100644 tools/profiler/csharp/profviewer.csproj
 create mode 100644 tools/profiler/csharp/profviewer.sln
 create mode 100644 tools/profiler/php/ProfFileParser.class.php

diff --git a/configs/plugin_settings.cfg b/configs/plugin_settings.cfg
index d8364de0..cf46ae71 100644
--- a/configs/plugin_settings.cfg
+++ b/configs/plugin_settings.cfg
@@ -14,6 +14,13 @@
  *
  * You can also have an "Options" section declaring options to pass onto the JIT:
  * "debug"		- Whether or not to load the plugin in debug mode
+ * "profile"	- Bit flags for profiling level.  Add flags together to reach a value.
+ *				  WARNING: Profiler is _ALPHA_ software!  Use it at your own risk for 
+ *				  development cycles only (not production setups).
+ *				  See the wiki article "SourceMod Profiler" for more information.
+ *				  1 - Profile natives
+ *				  2 - Profile callbacks
+ *				  4 - Profile internal plugin function calls
  */
 	
 "Plugins"
diff --git a/core/Profiler.cpp b/core/Profiler.cpp
new file mode 100644
index 00000000..7f119144
--- /dev/null
+++ b/core/Profiler.cpp
@@ -0,0 +1,483 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include "Profiler.h"
+#include "PluginSys.h"
+#include "sm_stringutil.h"
+#include "Logger.h"
+
+ProfileEngine g_Profiler;
+IProfiler *sm_profiler = &g_Profiler;
+
+#if defined PLATFORM_WINDOWS
+double WINDOWS_PERFORMANCE_FREQUENCY;
+#endif
+
+class EmptyProfiler : public IProfiler
+{
+public:
+	void OnNativeBegin(IPluginContext *pContext, sp_native_t *native)
+	{
+	}
+	void OnNativeEnd()
+	{
+	}
+	void OnFunctionBegin(IPluginContext *pContext, const char *name)
+	{
+	}
+	void OnFunctionEnd()
+	{
+	}
+	int OnCallbackBegin(IPluginContext *pContext, sp_public_t *pubfunc)
+	{
+		return 0;
+	}
+	void OnCallbackEnd(int serial)
+	{
+	}
+} s_EmptyProfiler;
+
+inline void InitProfPoint(prof_point_t &pt)
+{
+#if defined PLATFORM_WINDOWS
+	QueryPerformanceCounter(&pt.value);
+#elif defined PLATFORM_POSIX
+	gettimeofday(&pt.value, NULL);
+#endif
+	pt.is_set = true;
+}
+
+ProfileEngine::ProfileEngine()
+{
+	m_serial = 0;
+
+#if defined PLATFORM_WINDOWS
+	LARGE_INTEGER pf;
+
+	if (QueryPerformanceFrequency(&pf))
+	{
+		WINDOWS_PERFORMANCE_FREQUENCY = 1.0 / (double)(pf.QuadPart);
+	}
+	else
+	{
+		WINDOWS_PERFORMANCE_FREQUENCY = -1.0;
+	}
+#endif
+
+	if (IsEnabled())
+	{
+		InitProfPoint(m_ProfStart);
+	}
+	else
+	{
+		sm_profiler = &s_EmptyProfiler;
+	}
+}
+
+bool ProfileEngine::IsEnabled()
+{
+#if defined PLATFORM_WINDOWS
+	return (WINDOWS_PERFORMANCE_FREQUENCY > 0.0);
+#elif defined PLATFORM_POSIX
+	return true;
+#endif
+}
+
+inline double DiffProfPoints(const prof_point_t &start, const prof_point_t &end)
+{
+	double seconds;
+
+#if defined PLATFORM_WINDOWS
+	LONGLONG diff;
+	
+	diff = end.value.QuadPart - start.value.QuadPart;
+	seconds = diff * WINDOWS_PERFORMANCE_FREQUENCY;
+#elif defined PLATFORM_POSIX
+	seconds = (double)(end.value.tv_sec - start.value.tv_sec);
+
+	if (start.value.tv_usec > after.value.tv_usec)
+	{
+		seconds - 1.0;
+		seconds += (double)(1000000 - (before.value.tv_usec - after.tv_usec)) / 1000000.0;
+	}
+	else
+	{
+		seconds += (double)(after.value.tv_usec - before.value.tv_usec) / 1000000.0;
+	}
+#endif
+
+	return seconds;
+}
+
+inline double CalcAtomTime(const prof_atom_t &atom)
+{
+	if (!atom.end.is_set)
+	{
+		return atom.base_time;
+	}
+
+	return atom.base_time + DiffProfPoints(atom.start, atom.end);
+}
+
+void ProfileEngine::OnNativeBegin(IPluginContext *pContext, sp_native_t *native)
+{
+	PushProfileStack(pContext, SP_PROF_NATIVES, native->name);
+}
+
+void ProfileEngine::OnNativeEnd()
+{
+	assert(!m_AtomStack.empty());
+	assert(m_AtomStack.front().atom_type == SP_PROF_NATIVES);
+
+	PopProfileStack(&m_Natives);
+}
+
+void ProfileEngine::OnFunctionBegin(IPluginContext *pContext, const char *name)
+{
+	PushProfileStack(pContext, SP_PROF_FUNCTIONS, name);
+}
+
+void ProfileEngine::OnFunctionEnd()
+{
+	assert(!m_AtomStack.empty());
+	assert(m_AtomStack.front().atom_type == SP_PROF_FUNCTIONS);
+
+	PopProfileStack(&m_Functions);
+}
+
+int ProfileEngine::OnCallbackBegin(IPluginContext *pContext, sp_public_t *pubfunc)
+{
+	PushProfileStack(pContext, SP_PROF_CALLBACKS, pubfunc->name);
+
+	return m_serial;
+}
+
+void ProfileEngine::OnCallbackEnd(int serial)
+{
+	assert(!m_AtomStack.empty());
+
+	/**
+	 * Account for the situation where the JIT discards the 
+	 * stack because there was an RTE of sorts.
+	 */
+	if (m_AtomStack.front().atom_type != SP_PROF_CALLBACKS
+		&& m_AtomStack.front().atom_serial != serial)
+	{
+		prof_atom_t atom;
+		double total_time;
+
+		/* There was an error, and we need to discard things. */
+		total_time = 0.0;
+		while (!m_AtomStack.empty() 
+			&& m_AtomStack.front().atom_type != SP_PROF_CALLBACKS 
+			&& m_AtomStack.front().atom_serial != serial)
+		{
+			total_time += CalcAtomTime(m_AtomStack.front());
+			m_AtomStack.pop();
+		}
+
+		/**
+		 * Now we can end and discard ourselves, without saving the data.
+		 * Since this data is all erroneous anyway, we don't care if it's 
+		 * not totally accurate. 
+		 */
+
+		assert(!m_AtomStack.empty());
+		atom = m_AtomStack.front();
+		m_AtomStack.pop();
+
+		/* Note: We don't need to resume ourselves because end is set by Pause(). */
+		total_time += CalcAtomTime(atom);
+
+		ResumeParent(total_time);
+		return;
+	}
+
+	PopProfileStack(&m_Callbacks);
+}
+
+void ProfileEngine::PushProfileStack(IPluginContext *ctx, int type, const char *name)
+{
+	prof_atom_t atom;
+
+	PauseParent();
+
+	atom.atom_type = type;
+	atom.base_time = 0.0;
+	atom.ctx = ctx->GetContext();
+	atom.name = name;
+	atom.end.is_set = false;
+
+	if (type == SP_PROF_CALLBACKS)
+	{
+		atom.atom_serial = ++m_serial;
+	}
+	else
+	{
+		atom.atom_serial = 0;
+	}
+
+	m_AtomStack.push(atom);
+
+	/* Note: We do this after because the stack could grow and skew results */
+	InitProfPoint(m_AtomStack.front().start);
+}
+
+void ProfileEngine::PopProfileStack(ProfileReport *reporter)
+{
+	double total_time;
+
+	prof_atom_t &atom = m_AtomStack.front();
+
+	/* We're okay to cache our used time. */
+	InitProfPoint(atom.end);
+	total_time = CalcAtomTime(atom);
+
+	/* Now it's time to save this! This may do a lot of computations which 
+	 * is why we've cached the time beforehand.
+	 */
+	reporter->SaveAtom(atom);
+	m_AtomStack.pop();
+
+	/* Finally, tell our parent how much time we used. */
+	ResumeParent(total_time);
+}
+
+void ProfileEngine::PauseParent()
+{
+	if (m_AtomStack.empty())
+	{
+		return;
+	}
+
+	InitProfPoint(m_AtomStack.front().end);
+}
+
+void ProfileEngine::ResumeParent(double addTime)
+{
+	if (m_AtomStack.empty())
+	{
+		return;
+	}
+
+	prof_atom_t &atom = m_AtomStack.front();
+
+	/* Move its "paused time" to its base (known) time, 
+	 * then reset the start/end.  Note that since CalcAtomTime() 
+	 * reads the base time, we SHOULD NOT use += to add.
+	 */
+	atom.base_time = CalcAtomTime(atom);
+	atom.base_time += addTime;
+	InitProfPoint(atom.start);
+	atom.end.is_set = false;
+}
+
+void ProfileEngine::Clear()
+{
+	m_Natives.Clear();
+	m_Callbacks.Clear();
+	m_Functions.Clear();
+	InitProfPoint(m_ProfStart);
+}
+
+void ProfileEngine::OnSourceModAllInitialized()
+{
+	g_RootMenu.AddRootConsoleCommand("profiler", "Profiler commands", this);
+}
+
+void ProfileEngine::OnSourceModShutdown()
+{
+	g_RootMenu.RemoveRootConsoleCommand("profiler", this);
+}
+
+void ProfileEngine::OnRootConsoleCommand(const char *cmdname, const CCommand &command)
+{
+	if (command.ArgC() >= 3)
+	{
+		if (strcmp(command.Arg(2), "flush") == 0)
+		{
+			FILE *fp;
+			char path[256];
+
+			g_SourceMod.BuildPath(Path_SM, path, sizeof(path), "logs/profile_%d.xml", (int)time(NULL));
+
+			if ((fp = fopen(path, "wt")) == NULL)
+			{
+				g_RootMenu.ConsolePrint("Failed, could not open file for writing: %s", path);
+				return;
+			}
+
+			GenerateReport(fp);
+
+			fclose(fp);
+
+			g_RootMenu.ConsolePrint("Profiler report generated as: %s\n", path);
+
+			return;
+		}
+	}
+
+	g_RootMenu.ConsolePrint("Profiler commands:");
+	g_RootMenu.DrawGenericOption("flush", "Flushes statistics to disk and starts over");
+}
+
+bool ProfileEngine::GenerateReport(FILE *fp)
+{
+	time_t t;
+	double total_time;
+	prof_point_t end_time;
+
+	InitProfPoint(end_time);
+	total_time = DiffProfPoints(m_ProfStart, end_time);
+
+	t = time(NULL);
+
+	fprintf(fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n");
+	fprintf(fp, "<profile time=\"%d\" uptime=\"%f\">\n", (int)t, total_time);
+	WriteReport(fp, &m_Natives, "natives");
+	WriteReport(fp, &m_Callbacks, "callbacks");
+	WriteReport(fp, &m_Functions, "functions");
+	fprintf(fp, "</profile>\n");
+
+	return true;
+}
+
+void ProfileEngine::WriteReport(FILE *fp, ProfileReport *report, const char *name)
+{
+	size_t i, num;
+	prof_atom_report_t *ar;
+	char new_name[512];
+
+	fprintf(fp, " <report name=\"%s\">\n", name);
+	
+	num = report->GetNumReports();
+	for (i = 0; i < num; i++)
+	{
+		ar = report->GetReport(i);
+
+		strncopy(new_name, ar->atom_name, sizeof(new_name));
+		UTIL_ReplaceAll(new_name, sizeof(new_name), "<", "&lt;");
+		UTIL_ReplaceAll(new_name, sizeof(new_name), ">", "&gt;");
+
+		fprintf(fp, "  <item name=\"%s\" numcalls=\"%d\" mintime=\"%f\" maxtime=\"%f\" totaltime=\"%f\"/>\n", 
+			new_name,
+			ar->num_calls,
+			ar->min_time,
+			ar->max_time,
+			ar->total_time);
+	}
+
+	fprintf(fp, " </report>\n");
+}
+
+ProfileReport::~ProfileReport()
+{
+	for (size_t i = 0; i < m_Reports.size(); i++)
+	{
+		delete m_Reports[i];
+	}
+}
+
+void ProfileReport::Clear()
+{
+	m_ReportLookup.clear();
+	for (size_t i = 0; i < m_Reports.size(); i++)
+	{
+		delete m_Reports[i];
+	}
+	m_Reports.clear();
+}
+
+size_t ProfileReport::GetNumReports()
+{
+	return m_Reports.size();
+}
+
+prof_atom_report_t *ProfileReport::GetReport(size_t i)
+{
+	return m_Reports[i];
+}
+
+void ProfileReport::SaveAtom(const prof_atom_t &atom)
+{
+	double atom_time;
+	char full_name[256];
+	prof_atom_report_t **pReport, *report;
+
+	if (atom.atom_type == SP_PROF_NATIVES)
+	{
+		strncopy(full_name, atom.name, sizeof(full_name));
+	}
+	else
+	{
+		CPlugin *pl;
+		const char *file;
+
+		file = "unknown";
+		if ((pl = g_PluginSys.GetPluginByCtx(atom.ctx)) != NULL)
+		{
+			file = pl->GetFilename();
+		}
+
+		UTIL_Format(full_name, sizeof(full_name), "%s!%s", file, atom.name);
+	}
+
+	atom_time = CalcAtomTime(atom);
+
+	if ((pReport = m_ReportLookup.retrieve(full_name)) == NULL)
+	{
+		report = new prof_atom_report_t;
+
+		strncopy(report->atom_name, full_name, sizeof(report->atom_name));
+		report->max_time = atom_time;
+		report->min_time = atom_time;
+		report->num_calls = 1;
+		report->total_time = atom_time;
+		
+		m_ReportLookup.insert(full_name, report);
+		m_Reports.push_back(report);
+	}
+	else
+	{
+		report = *pReport;
+
+		if (atom_time > report->max_time)
+		{
+			report->max_time = atom_time;
+		}
+		if (atom_time < report->min_time)
+		{
+			report->min_time = atom_time;
+		}
+		report->num_calls++;
+		report->total_time += atom_time;
+	}
+}
diff --git a/core/Profiler.h b/core/Profiler.h
new file mode 100644
index 00000000..3781a247
--- /dev/null
+++ b/core/Profiler.h
@@ -0,0 +1,131 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#ifndef _INCLUDE_SOURCEMOD_PLUGIN_PROFILER_H_
+#define _INCLUDE_SOURCEMOD_PLUGIN_PROFILER_H_
+
+#include <sp_vm_api.h>
+#include <sm_platform.h>
+#include <sm_trie_tpl.h>
+#include <sh_vector.h>
+#include <sh_stack.h>
+#include <stdio.h>
+#include "sm_globals.h"
+#include "sm_srvcmds.h"
+
+using namespace SourcePawn;
+using namespace SourceHook;
+
+struct prof_point_t
+{
+#if defined PLATFORM_WINDOWS
+	LARGE_INTEGER value;
+#elif defined PLATFORM_POSIX
+	struct timeval value;
+#endif
+	bool is_set;
+};
+
+struct prof_atom_t
+{
+	int atom_type;			/* Type of object we're profiling */
+	int atom_serial;		/* Serial number, if appropriate */
+	sp_context_t *ctx;		/* Plugin context. */
+	const char *name;		/* Name of the function */
+	prof_point_t start;		/* Start time */
+	prof_point_t end;		/* End time */
+	double base_time;		/* Known time from children or pausing. */
+};
+
+struct prof_atom_report_t
+{
+	char atom_name[256];	/* Full name to shove to logs */
+	double total_time;		/* Total time spent executing, in s */
+	unsigned int num_calls;	/* Number of invocations */
+	double min_time;		/* Min time spent in one call, in s */
+	double max_time;		/* Max time spent in one call, in s */
+};
+
+class ProfileReport
+{
+public:
+	~ProfileReport();
+public:
+	void SaveAtom(const prof_atom_t &atom);
+	size_t GetNumReports();
+	prof_atom_report_t *GetReport(size_t i);
+	void Clear();
+private:
+	KTrie<prof_atom_report_t *> m_ReportLookup;
+	CVector<prof_atom_report_t *> m_Reports;
+};
+
+class ProfileEngine :
+	public SMGlobalClass,
+	public IRootConsoleCommand,
+	public IProfiler
+{
+public:
+	ProfileEngine();
+public:
+	bool IsEnabled();
+	bool GenerateReport(FILE *fp);
+	void Clear();
+public: //SMGlobalClass
+	void OnSourceModAllInitialized();
+	void OnSourceModShutdown();
+public: //IRootConsoleCommand
+	void OnRootConsoleCommand(const char *cmdname, const CCommand &command);
+public: //IProfiler
+	void OnNativeBegin(IPluginContext *pContext, sp_native_t *native);
+	void OnNativeEnd() ;
+	void OnFunctionBegin(IPluginContext *pContext, const char *name);
+	void OnFunctionEnd();
+	int OnCallbackBegin(IPluginContext *pContext, sp_public_t *pubfunc);
+	void OnCallbackEnd(int serial);
+private:
+	void PushProfileStack(IPluginContext *ctx, int type, const char *name);
+	void PopProfileStack(ProfileReport *reporter);
+	void PauseParent();
+	void ResumeParent(double addTime);
+	void WriteReport(FILE *fp, ProfileReport *report, const char *name);
+private:
+	CStack<prof_atom_t> m_AtomStack;
+	ProfileReport m_Callbacks;
+	ProfileReport m_Functions;
+	ProfileReport m_Natives;
+	int m_serial;
+	prof_point_t m_ProfStart;
+};
+
+extern ProfileEngine g_Profiler;
+
+#endif //_INCLUDE_SOURCEMOD_PLUGIN_PROFILER_H_
diff --git a/core/msvc8/sourcemod_mm.vcproj b/core/msvc8/sourcemod_mm.vcproj
index a4b30dd0..c3efbe2c 100644
--- a/core/msvc8/sourcemod_mm.vcproj
+++ b/core/msvc8/sourcemod_mm.vcproj
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="Windows-1252"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
-	Version="8,00"
+	Version="8.00"
 	Name="sourcemod_mm"
 	ProjectGUID="{E39527CD-7CAB-4420-97CC-DA1B93B260BC}"
 	RootNamespace="sourcemod_mm"
@@ -723,6 +723,10 @@
 				RelativePath="..\PlayerManager.cpp"
 				>
 			</File>
+			<File
+				RelativePath="..\Profiler.cpp"
+				>
+			</File>
 			<File
 				RelativePath="..\sm_autonatives.cpp"
 				>
@@ -881,6 +885,10 @@
 				RelativePath="..\PlayerManager.h"
 				>
 			</File>
+			<File
+				RelativePath="..\Profiler.h"
+				>
+			</File>
 			<File
 				RelativePath="..\sm_autonatives.h"
 				>
diff --git a/core/systems/PluginSys.cpp b/core/systems/PluginSys.cpp
index 0fac4d59..91977bdd 100644
--- a/core/systems/PluginSys.cpp
+++ b/core/systems/PluginSys.cpp
@@ -982,7 +982,6 @@ void CPluginManager::LoadPluginsFromDir(const char *basedir, const char *localpa
 	g_LibSys.CloseDirectory(dir);
 }
 
-//well i have discovered that gabe newell is very fat, so i wrote this comment now
 LoadRes CPluginManager::_LoadPlugin(CPlugin **_plugin, const char *path, bool debug, PluginType type, char error[], size_t maxlength)
 {
 	if (m_LoadingLocked)
diff --git a/core/vm/sp_vm_basecontext.cpp b/core/vm/sp_vm_basecontext.cpp
index f9ad80f8..d851a714 100644
--- a/core/vm/sp_vm_basecontext.cpp
+++ b/core/vm/sp_vm_basecontext.cpp
@@ -61,6 +61,12 @@ BaseContext::BaseContext(sp_context_t *_ctx)
 	ctx = _ctx;
 	ctx->context = this;
 	ctx->dbreak = GlobalDebugBreak;
+
+	if (ctx->prof_flags != 0)
+	{
+		ctx->profiler = sm_profiler;
+	}
+
 	m_InExec = false;
 	m_CustomMsg = false;
 	m_funcsnum = ctx->vmbase->FunctionCount(ctx);
@@ -150,7 +156,7 @@ void BaseContext::RefreshFunctionCache()
 			{
 				continue;
 			}
-			m_pub_funcs[i]->Set(pub->code_offs, this, pub->funcid);
+			m_pub_funcs[i]->Set(pub->code_offs, this, pub->funcid, i);
 		}
 	}
 
@@ -186,9 +192,16 @@ void BaseContext::SetContext(sp_context_t *_ctx)
 	{
 		return;
 	}
+
 	ctx = _ctx;
 	ctx->context = this;
 	ctx->dbreak = GlobalDebugBreak;
+
+	if (ctx->prof_flags != 0)
+	{
+		ctx->profiler = sm_profiler;
+	}
+
 	RefreshFunctionCache();
 }
 
@@ -992,10 +1005,18 @@ IPluginFunction *BaseContext::GetFunctionById(funcid_t func_id)
 		pFunc = m_pub_funcs[func_id];
 		if (!pFunc)
 		{
-			m_pub_funcs[func_id] = new CFunction(ctx->publics[func_id].code_offs, this, ctx->publics[func_id].funcid);
+			m_pub_funcs[func_id] = new CFunction(ctx->publics[func_id].code_offs, 
+												 this, 
+												 ctx->publics[func_id].funcid,
+												 func_id);
 			pFunc = m_pub_funcs[func_id];
-		} else if (pFunc->IsInvalidated()) {
-			pFunc->Set(ctx->publics[func_id].code_offs, this, ctx->publics[func_id].funcid);
+		}
+		else if (pFunc->IsInvalidated())
+		{
+			pFunc->Set(ctx->publics[func_id].code_offs, 
+				       this,
+					   ctx->publics[func_id].funcid,
+					   func_id);
 		}
 	} else {
 		/* :TODO: currently not used */
@@ -1034,16 +1055,20 @@ IPluginFunction *BaseContext::GetFunctionByName(const char *public_name)
 		GetPublicByIndex(index, &pub);
 		if (pub)
 		{
-			m_pub_funcs[index] = new CFunction(pub->code_offs, this, pub->funcid);
+			m_pub_funcs[index] = new CFunction(pub->code_offs, this, pub->funcid, index);
 		}
 		pFunc = m_pub_funcs[index];
-	} else if (pFunc->IsInvalidated()) {
+	}
+	else if (pFunc->IsInvalidated())
+	{
 		sp_public_t *pub = NULL;
 		GetPublicByIndex(index, &pub);
 		if (pub)
 		{
-			pFunc->Set(pub->code_offs, this, pub->funcid);
-		} else {
+			pFunc->Set(pub->code_offs, this, pub->funcid, index);
+		}
+		else
+		{
 			pFunc = NULL;
 		}
 	}
diff --git a/core/vm/sp_vm_basecontext.h b/core/vm/sp_vm_basecontext.h
index ce399fd6..9df690b2 100644
--- a/core/vm/sp_vm_basecontext.h
+++ b/core/vm/sp_vm_basecontext.h
@@ -39,6 +39,8 @@
  * :TODO: Make functions allocate as a lump instead of individual allocations!
  */
 
+extern IProfiler *sm_profiler;
+
 namespace SourcePawn
 {
 	class BaseContext : 
diff --git a/core/vm/sp_vm_function.cpp b/core/vm/sp_vm_function.cpp
index bb0b1b08..30615034 100644
--- a/core/vm/sp_vm_function.cpp
+++ b/core/vm/sp_vm_function.cpp
@@ -32,12 +32,13 @@
 #include <stdio.h>
 #include <string.h>
 #include "sp_vm_function.h"
+#include "sm_stringutil.h"
 
 /********************
 * FUNCTION CALLING *
 ********************/
 
-void CFunction::Set(uint32_t code_addr, IPluginContext *plugin, funcid_t id)
+void CFunction::Set(uint32_t code_addr, IPluginContext *plugin, funcid_t id, uint32_t pub_id)
 {
 	m_codeaddr = code_addr;
 	m_pContext = plugin;
@@ -46,6 +47,8 @@ void CFunction::Set(uint32_t code_addr, IPluginContext *plugin, funcid_t id)
 	m_Invalid = false;
 	m_pCtx = plugin ? plugin->GetContext() : NULL;
 	m_FnId = id;
+	
+	m_pContext->GetPublicByIndex(pub_id, &m_pPublic);
 }
 
 bool CFunction::IsRunnable()
@@ -55,17 +58,33 @@ bool CFunction::IsRunnable()
 
 int CFunction::CallFunction(const cell_t *params, unsigned int num_params, cell_t *result)
 {
+	int ir, serial;
+
 	if (!IsRunnable())
 	{
 		return SP_ERROR_NOT_RUNNABLE;
 	}
 
+	if ((m_pCtx->prof_flags & SP_PROF_CALLBACKS) == SP_PROF_CALLBACKS
+		&& m_pPublic != NULL)
+	{
+		serial = m_pCtx->profiler->OnCallbackBegin(m_pContext, m_pPublic);
+	}
+
 	while (num_params--)
 	{
 		m_pContext->PushCell(params[num_params]);
 	}
 
-	return m_pContext->Execute(m_codeaddr, result);
+	ir = m_pContext->Execute(m_codeaddr, result);
+
+	if ((m_pCtx->prof_flags & SP_PROF_CALLBACKS) == SP_PROF_CALLBACKS
+		&& m_pPublic != NULL)
+	{
+		m_pCtx->profiler->OnCallbackEnd(serial);
+	}
+
+	return ir;
 }
 
 IPluginContext *CFunction::GetParentContext()
@@ -73,7 +92,7 @@ IPluginContext *CFunction::GetParentContext()
 	return m_pContext;
 }
 
-CFunction::CFunction(uint32_t code_addr, IPluginContext *plugin, funcid_t id) : 
+CFunction::CFunction(uint32_t code_addr, IPluginContext *plugin, funcid_t id, uint32_t pub_id) : 
 	m_codeaddr(code_addr), m_pContext(plugin), m_curparam(0), 
 	m_errorstate(SP_ERROR_NONE), m_FnId(id)
 {
@@ -82,6 +101,7 @@ CFunction::CFunction(uint32_t code_addr, IPluginContext *plugin, funcid_t id) :
 	{
 		m_pCtx = plugin->GetContext();
 	}
+	m_pContext->GetPublicByIndex(pub_id, &m_pPublic);
 }
 
 int CFunction::PushCell(cell_t cell)
@@ -319,3 +339,4 @@ funcid_t CFunction::GetFunctionID()
 {
 	return m_FnId;
 }
+
diff --git a/core/vm/sp_vm_function.h b/core/vm/sp_vm_function.h
index f1bf210b..e19417b0 100644
--- a/core/vm/sp_vm_function.h
+++ b/core/vm/sp_vm_function.h
@@ -55,7 +55,10 @@ class CFunction : public IPluginFunction
 {
 	friend class SourcePawnEngine;
 public:
-	CFunction(uint32_t code_addr, IPluginContext *pContext, funcid_t fnid);
+	CFunction(uint32_t code_addr,
+			  IPluginContext *pContext, 
+			  funcid_t fnid,
+			  uint32_t pub_id);
 public:
 	virtual int PushCell(cell_t cell);
 	virtual int PushCellByRef(cell_t *cell, int flags);
@@ -79,7 +82,7 @@ public:
 	bool IsRunnable();
 	funcid_t GetFunctionID();
 public:
-	void Set(uint32_t code_addr, IPluginContext *plugin, funcid_t fnid);
+	void Set(uint32_t code_addr, IPluginContext *plugin, funcid_t fnid, uint32_t pub_id);
 private:
 	int _PushString(const char *string, int sz_flags, int cp_flags, size_t len);
 	inline int SetError(int err)
@@ -98,6 +101,7 @@ private:
 	CFunction *m_pNext;
 	bool m_Invalid;
 	funcid_t m_FnId;
+	sp_public_t *m_pPublic;
 };
 
 #endif //_INCLUDE_SOURCEMOD_BASEFUNCTION_H_
diff --git a/public/sourcepawn/sp_vm_api.h b/public/sourcepawn/sp_vm_api.h
index 7920188b..b0f4b917 100644
--- a/public/sourcepawn/sp_vm_api.h
+++ b/public/sourcepawn/sp_vm_api.h
@@ -41,10 +41,10 @@
 #include "sp_vm_types.h"
 
 /** SourcePawn Engine API Version */
-#define SOURCEPAWN_ENGINE_API_VERSION	2
+#define SOURCEPAWN_ENGINE_API_VERSION	3
 
 /** SourcePawn VM API Version */
-#define SOURCEPAWN_VM_API_VERSION		5
+#define SOURCEPAWN_VM_API_VERSION		6
 
 #if !defined SOURCEMOD_BUILD
 #define SOURCEMOD_BUILD
@@ -688,6 +688,63 @@ namespace SourcePawn
 		virtual void OnContextExecuteError(IPluginContext *ctx, IContextTrace *error) =0;
 	};
 
+	/**
+	 * @brief Represents a code profiler for plugins.
+	 */
+	class IProfiler
+	{
+	public:
+		/**
+		 * @brief Invoked by the JIT to notify that a native is being started.
+		 *
+		 * @param pContext			Plugin context.
+		 * @param native			Native information.
+		 */
+		virtual void OnNativeBegin(IPluginContext *pContext, sp_native_t *native) =0;
+
+		/**
+		 * @brief Invoked by the JIT to notify that the last native on the stack 
+		 * is no longer being executed.
+		 */
+		virtual void OnNativeEnd() =0;
+
+		/**
+		 * @brief Invoked by the JIT to notify that a function call is starting.
+		 *
+		 * @param pContext			Plugin context.
+		 * @param name				Function name, or NULL if not known.
+		 * @param code_addr			P-Code address.
+		 */
+		virtual void OnFunctionBegin(IPluginContext *pContext, const char *name) =0;
+
+		/**
+		 * @brief Invoked by the JIT to notify that the last function call has 
+		 * concluded.  In the case of an error inside a function, this will not 
+		 * be called.  Instead, the VM will call OnCallbackEnd() and the profiler 
+		 * stack must be unwound.
+		 */
+		virtual void OnFunctionEnd() =0;
+
+		/**
+		 * @brief Invoked by the VM to notify that a forward/callback is starting.
+		 *
+		 * @param pContext			Plugin context.
+		 * @param pubfunc			Public function information.
+		 * @return					Unique number to pass to OnFunctionEnd().
+		 */
+		virtual int OnCallbackBegin(IPluginContext *pContext, sp_public_t *pubfunc) =0;
+
+		/**
+		 * @brief Invoked by the JIT to notify that a callback has ended.  
+		 *
+		 * As noted in OnFunctionEnd(), this my be called with a misaligned 
+		 * profiler stack.  To correct this, the stack should be unwound 
+		 * (discarding data as appropriate) to a matching serial number.
+		 *
+		 * @param serial			Unique number from OnCallbackBegin().
+		 */
+		virtual void OnCallbackEnd(int serial) =0;
+	};
 
 	/**
 	 * @brief Contains helper functions used by VMs and the host app
diff --git a/public/sourcepawn/sp_vm_types.h b/public/sourcepawn/sp_vm_types.h
index a64efeaa..4b348a86 100644
--- a/public/sourcepawn/sp_vm_types.h
+++ b/public/sourcepawn/sp_vm_types.h
@@ -47,6 +47,13 @@ typedef uint32_t	funcid_t;			/**< Function index code */
 
 #define SP_MAX_EXEC_PARAMS				32	/**< Maximum number of parameters in a function */
 
+#define SP_JITCONF_DEBUG		"debug"		/**< Configuration option for debugging. */
+#define SP_JITCONF_PROFILE		"profile"	/**< Configuration option for profiling. */
+
+#define SP_PROF_NATIVES			(1<<0)		/**< Profile natives. */
+#define SP_PROF_CALLBACKS		(1<<1)		/**< Profile callbacks. */
+#define SP_PROF_FUNCTIONS		(1<<2)		/**< Profile functions. */
+
 /**
  * @brief Error codes for SourcePawn routines.
  */
@@ -139,6 +146,7 @@ namespace SourcePawn
 {
 	class IPluginContext;
 	class IVirtualMachine;
+	class IProfiler;
 };
 
 struct sp_context_s;
@@ -285,6 +293,8 @@ typedef struct sp_context_s
 	sp_debug_file_t	*files;		/**< Files */
 	sp_debug_line_t	*lines;		/**< Lines */
 	sp_debug_symbol_t *symbols;	/**< Symbols */
+	SourcePawn::IProfiler *profiler;		/**< Pointer to IProfiler */
+	uint32_t		prof_flags;	/**< Profiling flags */
 } sp_context_t;
 
 #endif //_INCLUDE_SOURCEPAWN_VM_TYPES_H
diff --git a/sourcepawn/jit/x86/dll_exports.cpp b/sourcepawn/jit/x86/dll_exports.cpp
index f5f4c552..c69666c1 100644
--- a/sourcepawn/jit/x86/dll_exports.cpp
+++ b/sourcepawn/jit/x86/dll_exports.cpp
@@ -25,7 +25,7 @@ EXPORTFUNC int GiveEnginePointer2(SourcePawn::ISourcePawnEngine *engine_p, unsig
 {
 	engine = engine_p;
 
-	if (api_version > SOURCEPAWN_ENGINE_API_VERSION)
+	if (api_version > SOURCEPAWN_ENGINE_API_VERSION || api_version < 2)
 	{
 		return SP_ERROR_PARAM;
 	}
diff --git a/sourcepawn/jit/x86/jit_x86.cpp b/sourcepawn/jit/x86/jit_x86.cpp
index 05e48271..6f3d5138 100644
--- a/sourcepawn/jit/x86/jit_x86.cpp
+++ b/sourcepawn/jit/x86/jit_x86.cpp
@@ -1278,12 +1278,95 @@ inline void WriteOp_Retn(JitWriter *jit)
 	IA32_Return(jit);
 }
 
+void ProfCallGate_Begin(sp_context_t *ctx, const char *name)
+{
+	ctx->profiler->OnFunctionBegin(ctx->context, name);
+}
+
+void ProfCallGate_End(sp_context_t *ctx)
+{
+	ctx->profiler->OnFunctionEnd();
+}
+
+const char *find_func_name(sp_plugin_t *plugin, uint32_t offs)
+{
+	uint32_t max, iter;
+	sp_fdbg_symbol_t *sym;
+	sp_fdbg_arraydim_t *arr;
+	uint8_t *cursor = (uint8_t *)(plugin->debug.symbols);
+
+	max = plugin->debug.syms_num;
+	for (iter = 0; iter < max; iter++)
+	{
+		sym = (sp_fdbg_symbol_t *)cursor;
+
+		if (sym->ident == SP_SYM_FUNCTION
+			&& sym->codestart <= offs 
+			&& sym->codeend > offs)
+		{
+			return plugin->debug.stringbase + sym->name;
+		}
+
+		if (sym->dimcount > 0)
+		{
+			cursor += sizeof(sp_fdbg_symbol_t);
+			arr = (sp_fdbg_arraydim_t *)cursor;
+			cursor += sizeof(sp_fdbg_arraydim_t) * sym->dimcount;
+			continue;
+		}
+
+		cursor += sizeof(sp_fdbg_symbol_t);
+	}
+
+	return NULL;
+}
+
 inline void WriteOp_Call(JitWriter *jit)
 {
-	cell_t offs = jit->read_cell();
+	cell_t offs;
+	jitoffs_t jmp;
+	CompData *data;
+		
+	data = (CompData *)jit->data; 
+	offs = jit->read_cell();
 
-	jitoffs_t jmp = IA32_Call_Imm32(jit, 0);
-	IA32_Write_Jump32(jit, jmp, RelocLookup(jit, offs, false));
+	if ((data->profile & SP_PROF_FUNCTIONS) == SP_PROF_FUNCTIONS)
+	{
+		const char *name;
+
+		/* Find the function name */
+		if ((name = find_func_name(data->plugin, offs)) == NULL)
+		{
+			name = "unknown";
+		}
+
+		//push name
+		//push [esi+context] 
+		//call ProfCallGate_Begin
+		//add esp, 8
+		IA32_Push_Imm32(jit, (jit_int32_t)(intptr_t)name);
+		IA32_Push_Rm_Disp8(jit, AMX_REG_INFO, AMX_INFO_CONTEXT);
+		jmp = IA32_Call_Imm32(jit, 0);
+		IA32_Write_Jump32_Abs(jit, jmp, (void *)ProfCallGate_Begin);
+		IA32_Add_Rm_Imm8(jit, REG_ESP, 8, MOD_REG);
+
+		//call <addr>
+		jmp = IA32_Call_Imm32(jit, 0);
+		IA32_Write_Jump32(jit, jmp, RelocLookup(jit, offs, false));
+
+		//push [esi+context]
+		//call ProfCallGate_End
+		//add esp, 4
+		IA32_Push_Rm_Disp8(jit, AMX_REG_INFO, AMX_INFO_CONTEXT);
+		jmp = IA32_Call_Imm32(jit, 0);
+		IA32_Write_Jump32_Abs(jit, jmp, (void *)ProfCallGate_End);
+		IA32_Add_Rm_Imm8(jit, REG_ESP, 4, MOD_REG);
+	}
+	else
+	{
+		jmp = IA32_Call_Imm32(jit, 0);
+		IA32_Write_Jump32(jit, jmp, RelocLookup(jit, offs, false));
+	}
 }
 
 inline void WriteOp_Bounds(JitWriter *jit)
@@ -1653,9 +1736,25 @@ inline void WriteOp_Sysreq_N(JitWriter *jit)
 	jitoffs_t call = IA32_Call_Imm32(jit, 0);
 	if (!data->debug)
 	{
-		IA32_Write_Jump32_Abs(jit, call, (void *)NativeCallback);
-	} else {
-		IA32_Write_Jump32_Abs(jit, call, (void *)NativeCallback_Debug);
+		if ((data->profile & SP_PROF_NATIVES) == SP_PROF_NATIVES)
+		{
+			IA32_Write_Jump32_Abs(jit, call, (void *)NativeCallback_Profile);
+		}
+		else
+		{
+			IA32_Write_Jump32_Abs(jit, call, (void *)NativeCallback);
+		}
+	}
+	else
+	{
+		if ((data->profile & SP_PROF_NATIVES) == SP_PROF_NATIVES)
+		{
+			IA32_Write_Jump32_Abs(jit, call, (void *)NativeCallback_Debug_Profile);
+		}
+		else
+		{
+			IA32_Write_Jump32_Abs(jit, call, (void *)NativeCallback_Debug);
+		}
 	}
 	
 	/* check for errors */
@@ -2122,7 +2221,9 @@ inline void WriteOp_FloatCompare(JitWriter *jit)
 
 cell_t NativeCallback(sp_context_t *ctx, ucell_t native_idx, cell_t *params)
 {
-	sp_native_t *native = &ctx->natives[native_idx];
+	sp_native_t *native;
+	
+	native = &ctx->natives[native_idx];
 
 	ctx->n_idx = native_idx;
 	
@@ -2136,12 +2237,27 @@ cell_t NativeCallback(sp_context_t *ctx, ucell_t native_idx, cell_t *params)
 	return native->pfn(ctx->context, params);
 }
 
-static cell_t InvalidNative(IPluginContext *pCtx, const cell_t *params)
+cell_t NativeCallback_Profile(sp_context_t *ctx, ucell_t native_idx, cell_t *params)
 {
-	sp_context_t *ctx = pCtx->GetContext();
-	ctx->n_err = SP_ERROR_INVALID_NATIVE;
+	cell_t val;
+	sp_native_t *native;
 
-	return 0;
+	native = &ctx->natives[native_idx];
+
+	ctx->n_idx = native_idx;
+
+	/* Technically both aren't needed, I guess */
+	if (native->status == SP_NATIVE_UNBOUND)
+	{
+		ctx->n_err = SP_ERROR_INVALID_NATIVE;
+		return 0;
+	}
+
+	ctx->profiler->OnNativeBegin(ctx->context, native);
+	val = native->pfn(ctx->context, params);
+	ctx->profiler->OnNativeEnd();
+
+	return val;
 }
 
 cell_t NativeCallback_Debug(sp_context_t *ctx, ucell_t native_idx, cell_t *params)
@@ -2170,7 +2286,7 @@ cell_t NativeCallback_Debug(sp_context_t *ctx, ucell_t native_idx, cell_t *param
 	}
 
 	cell_t result = NativeCallback(ctx, native_idx, params);
-	
+
 	if (ctx->n_err != SP_ERROR_NONE)
 	{
 		return result;
@@ -2180,7 +2296,9 @@ cell_t NativeCallback_Debug(sp_context_t *ctx, ucell_t native_idx, cell_t *param
 	{
 		ctx->n_err = SP_ERROR_STACKLEAK;
 		return result;
-	} else if (save_hp != ctx->hp) {
+	}
+	else if (save_hp != ctx->hp)
+	{
 		ctx->n_err = SP_ERROR_HEAPLEAK;
 		return result;
 	}
@@ -2188,6 +2306,60 @@ cell_t NativeCallback_Debug(sp_context_t *ctx, ucell_t native_idx, cell_t *param
 	return result;
 }
 
+cell_t NativeCallback_Debug_Profile(sp_context_t *ctx, ucell_t native_idx, cell_t *params)
+{
+	cell_t save_sp = ctx->sp;
+	cell_t save_hp = ctx->hp;
+
+	ctx->n_idx = native_idx;
+
+	if (ctx->hp < ctx->heap_base)
+	{
+		ctx->n_err = SP_ERROR_HEAPMIN;
+		return 0;
+	}
+
+	if (ctx->hp + STACK_MARGIN > ctx->sp)
+	{
+		ctx->n_err = SP_ERROR_STACKLOW;
+		return 0;
+	}
+
+	if ((uint32_t)ctx->sp >= ctx->mem_size)
+	{
+		ctx->n_err = SP_ERROR_STACKMIN;
+		return 0;
+	}
+
+	cell_t result = NativeCallback_Profile(ctx, native_idx, params);
+
+	if (ctx->n_err != SP_ERROR_NONE)
+	{
+		return result;
+	}
+
+	if (save_sp != ctx->sp)
+	{
+		ctx->n_err = SP_ERROR_STACKLEAK;
+		return result;
+	}
+	else if (save_hp != ctx->hp)
+	{
+		ctx->n_err = SP_ERROR_HEAPLEAK;
+		return result;
+	}
+
+	return result;
+}
+
+static cell_t InvalidNative(IPluginContext *pCtx, const cell_t *params)
+{
+	sp_context_t *ctx = pCtx->GetContext();
+	ctx->n_err = SP_ERROR_INVALID_NATIVE;
+
+	return 0;
+}
+
 jitoffs_t RelocLookup(JitWriter *jit, cell_t pcode_offs, bool relative)
 {
 	if (jit->outptr)
@@ -2204,7 +2376,9 @@ jitoffs_t RelocLookup(JitWriter *jit, cell_t pcode_offs, bool relative)
 		assert(pcode_offs >= 0 && (uint32_t)pcode_offs <= data->codesize);
 		/* Do the lookup in the native dictionary. */
 		return *(jitoffs_t *)(data->rebase + pcode_offs);
-	} else {
+	}
+	else
+	{
 		return 0;
 	}
 }
@@ -2423,6 +2597,7 @@ jit_rewind:
 	ctx->heap_base = plugin->data_size;
 	ctx->hp = ctx->heap_base;
 	ctx->sp = ctx->mem_size - sizeof(cell_t);
+	ctx->prof_flags = data->profile;
 
 	const char *strbase = plugin->info.stringbase;
 	uint32_t max, iter;
@@ -2726,7 +2901,7 @@ bool JITX86::SetCompilationOption(ICompilation *co, const char *key, const char
 {
 	CompData *data = (CompData *)co;
 
-	if (strcmp(key, "debug") == 0)
+	if (strcmp(key, SP_JITCONF_DEBUG) == 0)
 	{
 		if ((atoi(val) == 1) || !strcmp(val, "yes"))
 		{
@@ -2741,6 +2916,18 @@ bool JITX86::SetCompilationOption(ICompilation *co, const char *key, const char
 		}
 		return true;
 	}
+	else if (strcmp(key, SP_JITCONF_PROFILE) == 0)
+	{
+		data->profile = atoi(val);
+
+		/** Callbacks must be profiled to profile functions! */
+		if ((data->profile & SP_PROF_FUNCTIONS) == SP_PROF_FUNCTIONS)
+		{
+			data->profile |= SP_PROF_CALLBACKS;
+		}
+
+		return true;
+	}
 
 	return false;
 }
diff --git a/sourcepawn/jit/x86/jit_x86.h b/sourcepawn/jit/x86/jit_x86.h
index 1bdc1311..a1d9dc0b 100644
--- a/sourcepawn/jit/x86/jit_x86.h
+++ b/sourcepawn/jit/x86/jit_x86.h
@@ -67,13 +67,14 @@ class CompData : public ICompilation
 {
 public:
 	CompData() : plugin(NULL), 
-		debug(false), inline_level(0), rebase(NULL),
+		debug(false), profile(0), inline_level(0), rebase(NULL),
 		error_set(SP_ERROR_NONE), func_idx(0)
 	{
 	};
 public:
 	sp_plugin_t *plugin;			/* plugin handle */
 	bool debug;						/* whether to compile debug mode */
+	int profile;					/* profiling flags */
 	int inline_level;				/* inline optimization level */
 	jitcode_t rebase;				/* relocation map */
 	int error_set;					/* error code to halt process */
@@ -121,6 +122,8 @@ public:
 
 cell_t NativeCallback(sp_context_t *ctx, ucell_t native_idx, cell_t *params);
 cell_t NativeCallback_Debug(sp_context_t *ctx, ucell_t native_idx, cell_t *params);
+cell_t NativeCallback_Debug_Profile(sp_context_t *ctx, ucell_t native_idx, cell_t *params);
+cell_t NativeCallback_Profile(sp_context_t *ctx, ucell_t native_idx, cell_t *params);
 jitoffs_t RelocLookup(JitWriter *jit, cell_t pcode_offs, bool relative=false);
 
 #define AMX_REG_PRI		REG_EAX
diff --git a/tools/profiler/csharp/Comparators.cs b/tools/profiler/csharp/Comparators.cs
new file mode 100644
index 00000000..301aa70b
--- /dev/null
+++ b/tools/profiler/csharp/Comparators.cs
@@ -0,0 +1,85 @@
+using System;
+using System.Collections;
+using System.Text;
+using System.Windows.Forms;
+
+namespace profviewer
+{
+    class LIStringComparator : IComparer
+    {
+        private int m_col;
+
+        public LIStringComparator(int col)
+        {
+            m_col = col;
+        }
+
+        public int Compare(object x, object y)
+        {
+            ListViewItem a = (ListViewItem)x;
+            ListViewItem b = (ListViewItem)y;
+
+            return String.Compare(a.SubItems[m_col].Text, b.SubItems[m_col].Text);
+        }
+    }
+
+    class LIIntComparator : IComparer
+    {
+        private int m_col;
+
+        public LIIntComparator(int col)
+        {
+            m_col = col;
+        }
+
+        public int Compare(object x, object y)
+        {
+            ListViewItem a = (ListViewItem)x;
+            ListViewItem b = (ListViewItem)y;
+
+            int num1 = Int32.Parse(a.SubItems[m_col].Text);
+            int num2 = Int32.Parse(b.SubItems[m_col].Text);
+
+            if (num1 > num2)
+            {
+                return -1;
+            }
+            else if (num1 < num2)
+            {
+                return 1;
+            }
+
+            return 0;
+        }
+    }
+
+    class LIDoubleComparator : IComparer
+    {
+        private int m_col;
+
+        public LIDoubleComparator(int col)
+        {
+            m_col = col;
+        }
+
+        public int Compare(object x, object y)
+        {
+            ListViewItem a = (ListViewItem)x;
+            ListViewItem b = (ListViewItem)y;
+
+            double num1 = Double.Parse(a.SubItems[m_col].Text);
+            double num2 = Double.Parse(b.SubItems[m_col].Text);
+
+            if (num1 > num2)
+            {
+                return -1;
+            }
+            else if (num1 < num2)
+            {
+                return 1;
+            }
+
+            return 0;
+        }
+    }
+}
diff --git a/tools/profiler/csharp/Form1.Designer.cs b/tools/profiler/csharp/Form1.Designer.cs
new file mode 100644
index 00000000..8b2cdd04
--- /dev/null
+++ b/tools/profiler/csharp/Form1.Designer.cs
@@ -0,0 +1,244 @@
+namespace profviewer
+{
+    partial class Main
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.report_list = new System.Windows.Forms.ListView();
+            this.pr_type = new System.Windows.Forms.ColumnHeader();
+            this.pr_name = new System.Windows.Forms.ColumnHeader();
+            this.pr_calls = new System.Windows.Forms.ColumnHeader();
+            this.pr_avg_time = new System.Windows.Forms.ColumnHeader();
+            this.pr_min_time = new System.Windows.Forms.ColumnHeader();
+            this.pr_max_time = new System.Windows.Forms.ColumnHeader();
+            this.pr_total_time = new System.Windows.Forms.ColumnHeader();
+            this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+            this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.menu_file_open = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
+            this.menu_file_exit = new System.Windows.Forms.ToolStripMenuItem();
+            this.label1 = new System.Windows.Forms.Label();
+            this.report_info_starttime = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.report_info_duration = new System.Windows.Forms.Label();
+            this.dialog_open = new System.Windows.Forms.OpenFileDialog();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.menuStrip1.SuspendLayout();
+            this.panel1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // report_list
+            // 
+            this.report_list.AllowColumnReorder = true;
+            this.report_list.AutoArrange = false;
+            this.report_list.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.pr_type,
+            this.pr_name,
+            this.pr_calls,
+            this.pr_avg_time,
+            this.pr_min_time,
+            this.pr_max_time,
+            this.pr_total_time});
+            this.report_list.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.report_list.Location = new System.Drawing.Point(0, 24);
+            this.report_list.MultiSelect = false;
+            this.report_list.Name = "report_list";
+            this.report_list.Size = new System.Drawing.Size(759, 300);
+            this.report_list.TabIndex = 0;
+            this.report_list.UseCompatibleStateImageBehavior = false;
+            this.report_list.View = System.Windows.Forms.View.Details;
+            this.report_list.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.report_list_ColumnClick);
+            // 
+            // pr_type
+            // 
+            this.pr_type.Text = "Type";
+            this.pr_type.Width = 71;
+            // 
+            // pr_name
+            // 
+            this.pr_name.Text = "Name";
+            this.pr_name.Width = 270;
+            // 
+            // pr_calls
+            // 
+            this.pr_calls.Text = "Calls";
+            this.pr_calls.Width = 61;
+            // 
+            // pr_avg_time
+            // 
+            this.pr_avg_time.Text = "Avg Time";
+            this.pr_avg_time.Width = 74;
+            // 
+            // pr_min_time
+            // 
+            this.pr_min_time.Text = "Min Time";
+            this.pr_min_time.Width = 78;
+            // 
+            // pr_max_time
+            // 
+            this.pr_max_time.Text = "Max Time";
+            this.pr_max_time.Width = 77;
+            // 
+            // pr_total_time
+            // 
+            this.pr_total_time.Text = "Total Time";
+            this.pr_total_time.Width = 84;
+            // 
+            // menuStrip1
+            // 
+            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.fileToolStripMenuItem});
+            this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+            this.menuStrip1.Name = "menuStrip1";
+            this.menuStrip1.Size = new System.Drawing.Size(759, 24);
+            this.menuStrip1.TabIndex = 1;
+            this.menuStrip1.Text = "menuStrip1";
+            // 
+            // fileToolStripMenuItem
+            // 
+            this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.menu_file_open,
+            this.toolStripMenuItem1,
+            this.menu_file_exit});
+            this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+            this.fileToolStripMenuItem.Size = new System.Drawing.Size(35, 20);
+            this.fileToolStripMenuItem.Text = "&File";
+            // 
+            // menu_file_open
+            // 
+            this.menu_file_open.Name = "menu_file_open";
+            this.menu_file_open.Size = new System.Drawing.Size(100, 22);
+            this.menu_file_open.Text = "&Open";
+            this.menu_file_open.Click += new System.EventHandler(this.menu_file_open_Click);
+            // 
+            // toolStripMenuItem1
+            // 
+            this.toolStripMenuItem1.Name = "toolStripMenuItem1";
+            this.toolStripMenuItem1.Size = new System.Drawing.Size(97, 6);
+            // 
+            // menu_file_exit
+            // 
+            this.menu_file_exit.Name = "menu_file_exit";
+            this.menu_file_exit.Size = new System.Drawing.Size(100, 22);
+            this.menu_file_exit.Text = "E&xit";
+            this.menu_file_exit.Click += new System.EventHandler(this.menu_file_exit_Click);
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(3, 13);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(76, 13);
+            this.label1.TabIndex = 2;
+            this.label1.Text = "Profile Started:";
+            // 
+            // report_info_starttime
+            // 
+            this.report_info_starttime.AutoSize = true;
+            this.report_info_starttime.Location = new System.Drawing.Point(79, 13);
+            this.report_info_starttime.Name = "report_info_starttime";
+            this.report_info_starttime.Size = new System.Drawing.Size(0, 13);
+            this.report_info_starttime.TabIndex = 3;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(264, 13);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(82, 13);
+            this.label2.TabIndex = 4;
+            this.label2.Text = "Profile Duration:";
+            // 
+            // report_info_duration
+            // 
+            this.report_info_duration.AutoSize = true;
+            this.report_info_duration.Location = new System.Drawing.Point(346, 13);
+            this.report_info_duration.Name = "report_info_duration";
+            this.report_info_duration.Size = new System.Drawing.Size(0, 13);
+            this.report_info_duration.TabIndex = 5;
+            // 
+            // dialog_open
+            // 
+            this.dialog_open.FileName = "openFileDialog1";
+            this.dialog_open.Filter = "Profiler files|*.xml|All files|*.*";
+            // 
+            // panel1
+            // 
+            this.panel1.Controls.Add(this.label1);
+            this.panel1.Controls.Add(this.report_info_duration);
+            this.panel1.Controls.Add(this.report_info_starttime);
+            this.panel1.Controls.Add(this.label2);
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.panel1.Location = new System.Drawing.Point(0, 324);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(759, 33);
+            this.panel1.TabIndex = 6;
+            // 
+            // Main
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(759, 357);
+            this.Controls.Add(this.report_list);
+            this.Controls.Add(this.menuStrip1);
+            this.Controls.Add(this.panel1);
+            this.MainMenuStrip = this.menuStrip1;
+            this.Name = "Main";
+            this.Text = "SourceMod Profiler Report Viewer";
+            this.menuStrip1.ResumeLayout(false);
+            this.menuStrip1.PerformLayout();
+            this.panel1.ResumeLayout(false);
+            this.panel1.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.ListView report_list;
+        private System.Windows.Forms.ColumnHeader pr_type;
+        private System.Windows.Forms.ColumnHeader pr_name;
+        private System.Windows.Forms.ColumnHeader pr_calls;
+        private System.Windows.Forms.ColumnHeader pr_avg_time;
+        private System.Windows.Forms.ColumnHeader pr_min_time;
+        private System.Windows.Forms.ColumnHeader pr_max_time;
+        private System.Windows.Forms.ColumnHeader pr_total_time;
+        private System.Windows.Forms.MenuStrip menuStrip1;
+        private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem menu_file_open;
+        private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
+        private System.Windows.Forms.ToolStripMenuItem menu_file_exit;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label report_info_starttime;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label report_info_duration;
+        private System.Windows.Forms.OpenFileDialog dialog_open;
+        private System.Windows.Forms.Panel panel1;
+    }
+}
+
diff --git a/tools/profiler/csharp/Form1.cs b/tools/profiler/csharp/Form1.cs
new file mode 100644
index 00000000..d6af181e
--- /dev/null
+++ b/tools/profiler/csharp/Form1.cs
@@ -0,0 +1,98 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace profviewer
+{
+    public partial class Main : Form
+    {
+        private ProfileReport m_Report;
+
+        public Main()
+        {
+            InitializeComponent();
+        }
+
+        private void menu_file_open_Click(object sender, EventArgs e)
+        {
+            DialogResult res;
+            
+            res = dialog_open.ShowDialog(this);
+
+            if (res != DialogResult.OK)
+            {
+                return;
+            }
+
+            m_Report = null;
+
+            try
+            {
+                m_Report = new ProfileReport(dialog_open.FileName);
+            }
+            catch (System.Exception ex)
+            {
+                MessageBox.Show("Error opening or parsing file: " + ex.Message);
+            }
+
+            UpdateListView();
+        }
+
+        private void UpdateListView()
+        {
+            ProfileItem atom;
+            ListViewItem item;
+
+            if (m_Report == null)
+            {
+                report_list.Items.Clear();
+                report_info_duration.Text = "";
+                report_info_starttime.Text = "";
+                return;
+            }
+
+            report_info_duration.Text = m_Report.Duration.ToString() + " seconds";
+            report_info_starttime.Text = m_Report.StartTime.ToString();
+
+            for (int i = 0; i < m_Report.Count; i++)
+            {
+                atom = m_Report.GetItem(i);
+                item = new ListViewItem(ProfileReport.TypeStrings[(int)atom.type]);
+
+                item.SubItems.Add(atom.name);
+                item.SubItems.Add(atom.num_calls.ToString());
+                item.SubItems.Add(atom.AverageTime.ToString("F6"));
+                item.SubItems.Add(atom.min_time.ToString("F6"));
+                item.SubItems.Add(atom.max_time.ToString("F6"));
+                item.SubItems.Add(atom.total_time.ToString("F6"));
+
+                report_list.Items.Add(item);
+            }
+        }
+
+        private void menu_file_exit_Click(object sender, EventArgs e)
+        {
+            Application.Exit();
+        }
+
+        private void report_list_ColumnClick(object sender, ColumnClickEventArgs e)
+        {
+            if (e.Column == 1)
+            {
+                report_list.ListViewItemSorter = new LIStringComparator(1);
+            }
+            else if (e.Column == 2)
+            {
+                report_list.ListViewItemSorter = new LIIntComparator(2);
+            }
+            else if (e.Column > 2)
+            {
+                report_list.ListViewItemSorter = new LIDoubleComparator(e.Column);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tools/profiler/csharp/Form1.resx b/tools/profiler/csharp/Form1.resx
new file mode 100644
index 00000000..e0c7795c
--- /dev/null
+++ b/tools/profiler/csharp/Form1.resx
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="dialog_open.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>126, 17</value>
+  </metadata>
+</root>
\ No newline at end of file
diff --git a/tools/profiler/csharp/ProfReport.cs b/tools/profiler/csharp/ProfReport.cs
new file mode 100644
index 00000000..88073834
--- /dev/null
+++ b/tools/profiler/csharp/ProfReport.cs
@@ -0,0 +1,157 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Xml;
+
+namespace profviewer
+{
+    enum ProfileType : int
+    {
+        ProfType_Unknown = 0,
+        ProfType_Native,
+        ProfType_Callback,
+        ProfType_Function
+    }
+
+    class ProfileItem
+    {
+        public string name;
+        public double total_time;
+        public uint num_calls;
+        public double min_time;
+        public double max_time;
+        public ProfileType type;
+
+        public double AverageTime
+        {
+            get
+            {
+                return total_time / num_calls;
+            }
+        }
+    }
+
+    class ProfileReport
+    {
+        public static string[] TypeStrings;
+        private DateTime m_start_time;
+        private double m_duration;
+        private List<ProfileItem> m_Items;
+
+        public int Count
+        {
+            get
+            {
+                return m_Items.Count;
+            }
+        }
+
+        static ProfileReport()
+        {
+            TypeStrings = new string[4];
+
+            TypeStrings[0] = "unknown";
+            TypeStrings[1] = "native";
+            TypeStrings[2] = "callback";
+            TypeStrings[3] = "function";
+        }
+
+        public ProfileReport(string file)
+        {
+            bool in_profile;
+            ProfileType type;
+            string cur_report;
+            XmlTextReader xml;
+
+            xml = new XmlTextReader(file);
+            xml.WhitespaceHandling = WhitespaceHandling.None;
+
+            m_Items = new List<ProfileItem>();
+
+            type = ProfileType.ProfType_Unknown;
+            in_profile = false;
+            cur_report = null;
+            while (xml.Read())
+            {
+                if (xml.NodeType == XmlNodeType.Element)
+                {
+                    if (xml.Name.CompareTo("profile") == 0)
+                    {
+                        in_profile = true;
+                        m_duration = Double.Parse(xml.GetAttribute("uptime"));
+                        m_start_time = new DateTime(1970, 1, 1, 0, 0, 0);
+                        m_start_time.AddSeconds(Int32.Parse(xml.GetAttribute("time")));
+                    }
+                    else if (in_profile)
+                    {
+                        if (xml.Name.CompareTo("report") == 0)
+                        {
+                            cur_report = xml.GetAttribute("name");
+                            if (cur_report.CompareTo("natives") == 0)
+                            {
+                                type = ProfileType.ProfType_Native;
+                            }
+                            else if (cur_report.CompareTo("callbacks") == 0)
+                            {
+                                type = ProfileType.ProfType_Callback;
+                            }
+                            else if (cur_report.CompareTo("functions") == 0)
+                            {
+                                type = ProfileType.ProfType_Function;
+                            }
+                            else
+                            {
+                                type = ProfileType.ProfType_Unknown;
+                            }
+                        }
+                        else if (xml.Name.CompareTo("item") == 0 && cur_report != null)
+                        {
+                            ProfileItem item;
+
+                            item = new ProfileItem();
+                            item.name = xml.GetAttribute("name");
+                            item.max_time = Double.Parse(xml.GetAttribute("maxtime"));
+                            item.min_time = Double.Parse(xml.GetAttribute("mintime"));
+                            item.num_calls = UInt32.Parse(xml.GetAttribute("numcalls"));
+                            item.total_time = Double.Parse(xml.GetAttribute("totaltime"));
+                            item.type = type;
+                            m_Items.Add(item);
+                        }
+                    }
+                }
+                else if (xml.NodeType == XmlNodeType.EndElement)
+                {
+                    if (xml.Name.CompareTo("profile") == 0)
+                    {
+                        break;
+                    }
+                    else if (xml.Name.CompareTo("report") == 0)
+                    {
+                        cur_report = null;
+                    }
+                }
+            }
+        }
+
+        public double Duration
+        {
+            get
+            {
+                return m_duration;
+            }
+        }
+
+        public DateTime StartTime
+        {
+            get
+            {
+                return m_start_time;
+            }
+        }
+
+        public ProfileItem GetItem(int i)
+        {
+            return m_Items[i];
+        }
+    }
+}
diff --git a/tools/profiler/csharp/Program.cs b/tools/profiler/csharp/Program.cs
new file mode 100644
index 00000000..a14aa1ae
--- /dev/null
+++ b/tools/profiler/csharp/Program.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace profviewer
+{
+    static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new Main());
+        }
+    }
+}
\ No newline at end of file
diff --git a/tools/profiler/csharp/profviewer.csproj b/tools/profiler/csharp/profviewer.csproj
new file mode 100644
index 00000000..04f791cf
--- /dev/null
+++ b/tools/profiler/csharp/profviewer.csproj
@@ -0,0 +1,80 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{1EE11F57-B933-4D06-B0E6-EAFB60ACAC73}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>profviewer</RootNamespace>
+    <AssemblyName>profviewer</AssemblyName>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Comparators.cs" />
+    <Compile Include="Form1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form1.Designer.cs">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ProfReport.cs" />
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="Form1.resx">
+      <SubType>Designer</SubType>
+      <DependentUpon>Form1.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/tools/profiler/csharp/profviewer.sln b/tools/profiler/csharp/profviewer.sln
new file mode 100644
index 00000000..80e570af
--- /dev/null
+++ b/tools/profiler/csharp/profviewer.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "profviewer", "profviewer.csproj", "{1EE11F57-B933-4D06-B0E6-EAFB60ACAC73}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{1EE11F57-B933-4D06-B0E6-EAFB60ACAC73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1EE11F57-B933-4D06-B0E6-EAFB60ACAC73}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1EE11F57-B933-4D06-B0E6-EAFB60ACAC73}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1EE11F57-B933-4D06-B0E6-EAFB60ACAC73}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/tools/profiler/php/ProfFileParser.class.php b/tools/profiler/php/ProfFileParser.class.php
new file mode 100644
index 00000000..88b5d472
--- /dev/null
+++ b/tools/profiler/php/ProfFileParser.class.php
@@ -0,0 +1,73 @@
+<?php
+
+class ProfReport
+{
+	public $time;
+	public $uptime;
+	public $items = array();
+}
+
+class ProfReportParser
+{
+	private $report;
+	private $curtype;
+	public $last_error;
+
+	public function Parse($file)
+	{
+		$this->report = FALSE;
+		$this->curtype = FALSE;
+
+		if (($contents = file_get_contents($file)) === FALSE)
+		{
+			$this->last_error = 'File not found';
+			return FALSE;
+		}
+		
+		$xml = xml_parser_create();
+		xml_set_object($xml, $this);
+		xml_set_element_handler($xml, 'tag_open', 'tag_close');
+		xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, false);
+
+		if (!xml_parse($xml, $contents))
+		{
+			$this->last_error = 'Line: ' . xml_get_current_line_number($xml) . ' -- ' . xml_error_string(xml_get_error_code($xml));
+			return FALSE;
+		}
+
+		return $this->report;
+	}
+
+	public function tag_open($parser, $tag, $attrs)
+	{
+		if ($tag == 'profile')
+		{
+			$this->report = new ProfReport();
+			$this->report->time = $attrs['time'];
+			$this->report->uptime = $attrs['uptime'];
+		}
+		else if ($tag == 'report')
+		{
+			$this->curtype = $attrs['name'];
+		}
+		else if ($tag == 'item')
+		{
+			if ($this->report === FALSE || $this->curtype === FALSE)
+			{
+				return;
+			}
+			$attrs['type'] = $this->curtype;
+			$this->report->items[] = $attrs;
+		}
+	}
+
+	public function tag_close($parser, $tag)
+	{
+		if ($tag == 'report')
+		{
+			$this->curtype = FALSE;
+		}
+	}
+}
+
+?>

From 0d9f3fb417e54609d6936d35b696e93d522321bb Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Mar 2008 07:15:28 +0000
Subject: [PATCH 225/263] fixed dialog box in profviewer showing nonsense file
 name

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401915
---
 tools/profiler/csharp/Form1.Designer.cs | 1 -
 1 file changed, 1 deletion(-)

diff --git a/tools/profiler/csharp/Form1.Designer.cs b/tools/profiler/csharp/Form1.Designer.cs
index 8b2cdd04..9453cd3d 100644
--- a/tools/profiler/csharp/Form1.Designer.cs
+++ b/tools/profiler/csharp/Form1.Designer.cs
@@ -183,7 +183,6 @@ namespace profviewer
             // 
             // dialog_open
             // 
-            this.dialog_open.FileName = "openFileDialog1";
             this.dialog_open.Filter = "Profiler files|*.xml|All files|*.*";
             // 
             // panel1

From c6dd96e2018c07174e41d5263149e7e02f03b7c2 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Mar 2008 07:28:24 +0000
Subject: [PATCH 226/263] fixed a bug with start time display

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401916
---
 tools/profiler/csharp/ProfReport.cs | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/profiler/csharp/ProfReport.cs b/tools/profiler/csharp/ProfReport.cs
index 88073834..580e2094 100644
--- a/tools/profiler/csharp/ProfReport.cs
+++ b/tools/profiler/csharp/ProfReport.cs
@@ -77,10 +77,12 @@ namespace profviewer
                 {
                     if (xml.Name.CompareTo("profile") == 0)
                     {
+                        int t;
                         in_profile = true;
                         m_duration = Double.Parse(xml.GetAttribute("uptime"));
                         m_start_time = new DateTime(1970, 1, 1, 0, 0, 0);
-                        m_start_time.AddSeconds(Int32.Parse(xml.GetAttribute("time")));
+                        t = Int32.Parse(xml.GetAttribute("time"));
+                        m_start_time = m_start_time.AddSeconds(t);
                     }
                     else if (in_profile)
                     {

From b3c7d4803ffe9fd76acf5ee26d27cd90ea8fad25 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Mar 2008 08:10:34 +0000
Subject: [PATCH 227/263] fixed linux build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401917
---
 core/Makefile     |  2 +-
 core/Profiler.cpp | 12 ++++++++----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/core/Makefile b/core/Makefile
index 5b4e3447..a49dc222 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -23,7 +23,7 @@ OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreC
 	sm_autonatives.cpp sm_memtable.cpp sm_srvcmds.cpp sm_stringutil.cpp sm_trie.cpp \
 	sourcemm_api.cpp sourcemod.cpp MenuStyle_Base.cpp MenuStyle_Valve.cpp MenuManager.cpp \
 	MenuStyle_Radio.cpp ChatTriggers.cpp ADTFactory.cpp MenuVoting.cpp sm_crc32.cpp \
-	frame_hooks.cpp concmd_cleaner.cpp
+	frame_hooks.cpp concmd_cleaner.cpp Profiler.cpp
 OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_datapacks.cpp smn_entities.cpp smn_events.cpp smn_fakenatives.cpp \
 	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
diff --git a/core/Profiler.cpp b/core/Profiler.cpp
index 7f119144..b69341da 100644
--- a/core/Profiler.cpp
+++ b/core/Profiler.cpp
@@ -33,6 +33,10 @@
 #include "PluginSys.h"
 #include "sm_stringutil.h"
 #include "Logger.h"
+#if defined PLATFORM_POSIX
+#include <sys/time.h>
+#include <time.h>
+#endif
 
 ProfileEngine g_Profiler;
 IProfiler *sm_profiler = &g_Profiler;
@@ -123,14 +127,14 @@ inline double DiffProfPoints(const prof_point_t &start, const prof_point_t &end)
 #elif defined PLATFORM_POSIX
 	seconds = (double)(end.value.tv_sec - start.value.tv_sec);
 
-	if (start.value.tv_usec > after.value.tv_usec)
+	if (start.value.tv_usec > end.value.tv_usec)
 	{
-		seconds - 1.0;
-		seconds += (double)(1000000 - (before.value.tv_usec - after.tv_usec)) / 1000000.0;
+		seconds -= 1.0;
+		seconds += (double)(1000000 - (start.value.tv_usec - end.value.tv_usec)) / 1000000.0;
 	}
 	else
 	{
-		seconds += (double)(after.value.tv_usec - before.value.tv_usec) / 1000000.0;
+		seconds += (double)(end.value.tv_usec - start.value.tv_usec) / 1000000.0;
 	}
 #endif
 

From 31a745422d935e0cfd21ecff082d2e88587e2b1f Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Mar 2008 18:01:49 +0000
Subject: [PATCH 228/263] added amb1377 - binary sql functions

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401918
---
 core/smn_database.cpp                   | 16 ++++++-
 extensions/mysql/mysql/MyDatabase.cpp   | 31 +++++++++++++
 extensions/mysql/mysql/MyDatabase.h     |  2 +
 extensions/sqlite/driver/SqDatabase.cpp | 61 +++++++++++++++++++++++--
 extensions/sqlite/driver/SqDatabase.h   |  3 ++
 plugins/include/dbi.inc                 | 10 +++-
 public/IDBDriver.h                      | 28 +++++++++++-
 7 files changed, 142 insertions(+), 9 deletions(-)

diff --git a/core/smn_database.cpp b/core/smn_database.cpp
index 34f30f5c..22f4b6a3 100644
--- a/core/smn_database.cpp
+++ b/core/smn_database.cpp
@@ -644,6 +644,11 @@ static cell_t SQL_FastQuery(IPluginContext *pContext, const cell_t *params)
 	char *query;
 	pContext->LocalToString(params[2], &query);
 
+	if (params[0] >= 3 && params[3] != -1)
+	{
+		return db->DoSimpleQueryEx(query, params[3]) ? 1 : 0;
+	}
+
 	return db->DoSimpleQuery(query) ? 1 : 0;
 }
 
@@ -661,7 +666,16 @@ static cell_t SQL_Query(IPluginContext *pContext, const cell_t *params)
 	char *query;
 	pContext->LocalToString(params[2], &query);
 
-	IQuery *qr = db->DoQuery(query);
+	IQuery *qr;
+	
+	if (params[0] >= 3 && params[3] != -1)
+	{
+		qr = db->DoQueryEx(query, params[3]);
+	}
+	else
+	{
+		qr = db->DoQuery(query);
+	}
 
 	if (!qr)
 	{
diff --git a/extensions/mysql/mysql/MyDatabase.cpp b/extensions/mysql/mysql/MyDatabase.cpp
index d1c85bd7..b9f797a0 100644
--- a/extensions/mysql/mysql/MyDatabase.cpp
+++ b/extensions/mysql/mysql/MyDatabase.cpp
@@ -226,6 +226,37 @@ IQuery *MyDatabase::DoQuery(const char *query)
 	return new MyQuery(this, res);
 }
 
+bool MyDatabase::DoSimpleQueryEx(const char *query, size_t len)
+{
+	IQuery *pQuery = DoQueryEx(query, len);
+	if (!pQuery)
+	{
+		return false;
+	}
+	pQuery->Destroy();
+	return true;
+}
+
+IQuery *MyDatabase::DoQueryEx(const char *query, size_t len)
+{
+	if (mysql_real_query(m_mysql, query, len) != 0)
+	{
+		return NULL;
+	}
+
+	MYSQL_RES *res = NULL;
+	if (mysql_field_count(m_mysql))
+	{
+		res = mysql_store_result(m_mysql);
+		if (!res)
+		{
+			return NULL;
+		}
+	}
+
+	return new MyQuery(this, res);
+}
+
 IPreparedQuery *MyDatabase::PrepareQuery(const char *query, char *error, size_t maxlength, int *errCode)
 {
 	MYSQL_STMT *stmt = mysql_stmt_init(m_mysql);
diff --git a/extensions/mysql/mysql/MyDatabase.h b/extensions/mysql/mysql/MyDatabase.h
index 57d4b8a0..14ba739e 100644
--- a/extensions/mysql/mysql/MyDatabase.h
+++ b/extensions/mysql/mysql/MyDatabase.h
@@ -58,6 +58,8 @@ public: //IDatabase
 	void UnlockFromFullAtomicOperation();
 	void IncReferenceCount();
 	IDBDriver *GetDriver();
+	bool DoSimpleQueryEx(const char *query, size_t len);
+	IQuery *DoQueryEx(const char *query, size_t len);
 public:
 	const DatabaseInfo &GetInfo();
 private:
diff --git a/extensions/sqlite/driver/SqDatabase.cpp b/extensions/sqlite/driver/SqDatabase.cpp
index 450eb1b0..a008aca1 100644
--- a/extensions/sqlite/driver/SqDatabase.cpp
+++ b/extensions/sqlite/driver/SqDatabase.cpp
@@ -160,7 +160,36 @@ IQuery *SqDatabase::DoQuery(const char *query)
 	return pQuery;
 }
 
-IPreparedQuery *SqDatabase::PrepareQuery(const char *query, char *error, size_t maxlength, int *errCode/* =NULL */)
+bool SqDatabase::DoSimpleQueryEx(const char *query, size_t len)
+{
+	IQuery *pQuery = DoQueryEx(query, len);
+	if (!pQuery)
+	{
+		return false;
+	}
+	pQuery->Destroy();
+	return true;
+}
+
+IQuery *SqDatabase::DoQueryEx(const char *query, size_t len)
+{
+	IPreparedQuery *pQuery = PrepareQueryEx(query, len, NULL, 0, NULL);
+	if (!pQuery)
+	{
+		return NULL;
+	}
+	if (!pQuery->Execute())
+	{
+		pQuery->Destroy();
+		return NULL;
+	}
+	return pQuery;
+}
+
+IPreparedQuery *SqDatabase::PrepareQuery(const char *query, 
+										 char *error, 
+										 size_t maxlength, 
+										 int *errCode/* =NULL */)
 {
 	sqlite3_stmt *stmt = NULL;
 	if ((m_LastErrorCode = sqlite3_prepare_v2(m_sq3, query, -1, &stmt, NULL)) != SQLITE_OK
@@ -179,12 +208,34 @@ IPreparedQuery *SqDatabase::PrepareQuery(const char *query, char *error, size_t
 			strncopy(error, msg, maxlength);
 		}
 		m_LastError.assign(msg);
-		#if 0 /* This didn't really seem like a good idea... */
-		if (stmt)
+		return NULL;
+	}
+	return new SqQuery(this, stmt);
+}
+
+IPreparedQuery *SqDatabase::PrepareQueryEx(const char *query, 
+										   size_t len, 
+										   char *error, 
+										   size_t maxlength, 
+										   int *errCode/* =NULL */)
+{
+	sqlite3_stmt *stmt = NULL;
+	if ((m_LastErrorCode = sqlite3_prepare_v2(m_sq3, query, len, &stmt, NULL)) != SQLITE_OK
+		|| !stmt)
+	{
+		const char *msg;
+		if (m_LastErrorCode != SQLITE_OK)
 		{
-			sqlite3_finalize(stmt);
+			msg = sqlite3_errmsg(m_sq3);
+		} else {
+			msg = "Invalid query string";
+			m_LastErrorCode = SQLITE_ERROR;
 		}
-		#endif
+		if (error)
+		{
+			strncopy(error, msg, maxlength);
+		}
+		m_LastError.assign(msg);
 		return NULL;
 	}
 	return new SqQuery(this, stmt);
diff --git a/extensions/sqlite/driver/SqDatabase.h b/extensions/sqlite/driver/SqDatabase.h
index 63f96e9f..6044a3f0 100644
--- a/extensions/sqlite/driver/SqDatabase.h
+++ b/extensions/sqlite/driver/SqDatabase.h
@@ -46,6 +46,7 @@ public:
 	bool DoSimpleQuery(const char *query);
 	IQuery *DoQuery(const char *query);
 	IPreparedQuery *PrepareQuery(const char *query, char *error, size_t maxlength, int *errCode=NULL);
+	IPreparedQuery *PrepareQueryEx(const char *query, size_t len, char *error, size_t maxlength, int *errCode=NULL);
 	bool QuoteString(const char *str, char buffer[], size_t maxlen, size_t *newSize);
 	unsigned int GetAffectedRows();
 	unsigned int GetInsertID();
@@ -53,6 +54,8 @@ public:
 	void UnlockFromFullAtomicOperation();
 	void IncReferenceCount();
 	IDBDriver *GetDriver();
+	bool DoSimpleQueryEx(const char *query, size_t len);
+	IQuery *DoQueryEx(const char *query, size_t len);
 public:
 	sqlite3 *GetDb();
 private:
diff --git a/plugins/include/dbi.inc b/plugins/include/dbi.inc
index cba44810..084b6d4e 100644
--- a/plugins/include/dbi.inc
+++ b/plugins/include/dbi.inc
@@ -277,11 +277,14 @@ stock bool:SQL_QuoteString(Handle:database,
  *
  * @param database		A database Handle.
  * @param query			Query string.
+ * @param len			Optional parameter to specify the query length, in 
+ *						bytes.  This can be used to send binary queries that 
+ * 						have a premature terminator.
  * @return				True if query succeeded, false otherwise.  Use
  *						SQL_GetError to find the last error.
  * @error				Invalid database Handle.
  */
-native bool:SQL_FastQuery(Handle:database, const String:query[]);
+native bool:SQL_FastQuery(Handle:database, const String:query[], len=-1);
 
 /**
  * Executes a simple query and returns a new query Handle for
@@ -289,11 +292,14 @@ native bool:SQL_FastQuery(Handle:database, const String:query[]);
  *
  * @param database		A database Handle.
  * @param query			Query string.
+ * @param len			Optional parameter to specify the query length, in 
+ *						bytes.  This can be used to send binary queries that 
+ * 						have a premature terminator.
  * @return				A new Query Handle on success, INVALID_HANDLE
  *						otherwise.  The Handle must be freed with CloseHandle().
  * @error				Invalid database Handle.
  */
-native Handle:SQL_Query(Handle:database, const String:query[]);
+native Handle:SQL_Query(Handle:database, const String:query[], len=-1);
 
 /**
  * Creates a new prepared statement query.  Prepared statements can
diff --git a/public/IDBDriver.h b/public/IDBDriver.h
index d4e35268..71d9fe2d 100644
--- a/public/IDBDriver.h
+++ b/public/IDBDriver.h
@@ -42,7 +42,7 @@
  */
 
 #define SMINTERFACE_DBI_NAME		"IDBI"
-#define SMINTERFACE_DBI_VERSION		5
+#define SMINTERFACE_DBI_VERSION		6
 
 namespace SourceMod
 {
@@ -547,6 +547,32 @@ namespace SourceMod
 		 * This function is thread safe.
 		 */
 		virtual IDBDriver *GetDriver() =0;
+
+		/**
+		 * @brief Prepares and executes a binary query in one step, and discards
+		 * any return data.
+		 *
+		 * This function is not thread safe and must be included in any locks.
+		 *
+		 * @param query			Query string.
+		 * @param length		Length of query string.
+		 * @return				True on success, false otherwise.
+		 */
+		virtual bool DoSimpleQueryEx(const char *query, size_t len) =0;
+
+		/**
+		 * @brief Prepares and executes a binary query in one step, and returns
+		 * the resultant data set.
+		 *
+		 * Note: If a query contains more than one result set, each
+		 * result set must be processed before a new query is started.
+		 *
+		 * This function is not thread safe and must be included in any locks.
+		 *
+		 * @param query			Query string.
+		 * @return				IQuery pointer on success, NULL otherwise.
+		 */
+		virtual IQuery *DoQueryEx(const char *query, size_t len) =0;
 	};
 
 	/** 

From e6d37a3850ad00e012be561ae9a381115b128883 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Mar 2008 18:18:42 +0000
Subject: [PATCH 229/263] fixed a serious codegen bug where profiled internal
 functions in plugins could have their return values smashed.  this only
 affected plugins being internally profiled

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401919
---
 sourcepawn/jit/x86/jit_x86.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/sourcepawn/jit/x86/jit_x86.cpp b/sourcepawn/jit/x86/jit_x86.cpp
index 6f3d5138..6103f3da 100644
--- a/sourcepawn/jit/x86/jit_x86.cpp
+++ b/sourcepawn/jit/x86/jit_x86.cpp
@@ -1351,16 +1351,20 @@ inline void WriteOp_Call(JitWriter *jit)
 		IA32_Add_Rm_Imm8(jit, REG_ESP, 8, MOD_REG);
 
 		//call <addr>
+		//push eax
 		jmp = IA32_Call_Imm32(jit, 0);
 		IA32_Write_Jump32(jit, jmp, RelocLookup(jit, offs, false));
+		IA32_Push_Reg(jit, REG_EAX);
 
 		//push [esi+context]
 		//call ProfCallGate_End
 		//add esp, 4
+		//pop eax
 		IA32_Push_Rm_Disp8(jit, AMX_REG_INFO, AMX_INFO_CONTEXT);
 		jmp = IA32_Call_Imm32(jit, 0);
 		IA32_Write_Jump32_Abs(jit, jmp, (void *)ProfCallGate_End);
 		IA32_Add_Rm_Imm8(jit, REG_ESP, 4, MOD_REG);
+		IA32_Pop_Reg(jit, REG_EAX);
 	}
 	else
 	{

From e0b4b8b9f635da0e6217fbc392217564bbd22ae6 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Mar 2008 19:08:27 +0000
Subject: [PATCH 230/263] added amb1497 - log hooking

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401920
---
 core/Logger.cpp               |  15 +++-
 core/Logger.h                 |   3 +
 core/smn_filesystem.cpp       | 102 ++++++++++++++++++++++-
 plugins/include/logging.inc   | 153 ++++++++++++++++++++++++++++++++++
 plugins/include/sourcemod.inc |  91 ++------------------
 5 files changed, 274 insertions(+), 90 deletions(-)
 create mode 100644 plugins/include/logging.inc

diff --git a/core/Logger.cpp b/core/Logger.cpp
index 031e5d96..bd8cbe8f 100644
--- a/core/Logger.cpp
+++ b/core/Logger.cpp
@@ -434,7 +434,7 @@ void Logger::_PrintToGameLog(const char *fmt, va_list ap)
 	msg[len++] = '\n';
 	msg[len] = '\0';
 
-	engine->LogPrint(msg);
+	Engine_LogPrintWrapper(msg);
 }
 
 const char *Logger::GetLogFileName(LogType type) const
@@ -505,3 +505,16 @@ void Logger::LogFatal(const char *msg, ...)
 	}
 }
 
+bool g_in_game_log_hook = false;
+
+void Engine_LogPrintWrapper(const char *msg)
+{
+	if (g_in_game_log_hook)
+	{
+		ENGINE_CALL(LogPrint)(msg);
+	}
+	else
+	{
+		engine->LogPrint(msg);
+	}
+}
diff --git a/core/Logger.h b/core/Logger.h
index 0f6e22ed..fb643a2e 100644
--- a/core/Logger.h
+++ b/core/Logger.h
@@ -98,6 +98,9 @@ private:
 	bool m_InitialState;
 };
 
+void Engine_LogPrintWrapper(const char *msg);
+
+extern bool g_in_game_log_hook;
 extern Logger g_Logger;
 
 #endif // _INCLUDE_SOURCEMOD_CLOGGER_H_
diff --git a/core/smn_filesystem.cpp b/core/smn_filesystem.cpp
index 124371a4..08630af3 100644
--- a/core/smn_filesystem.cpp
+++ b/core/smn_filesystem.cpp
@@ -37,22 +37,40 @@
 #include "Logger.h"
 #include "PluginSys.h"
 #include "sourcemm_api.h"
+#include "ForwardSys.h"
+
+SH_DECL_HOOK1_void(IVEngineServer, LogPrint, SH_NOATTRIB, false, const char *);
 
 HandleType_t g_FileType;
 HandleType_t g_DirType;
+IChangeableForward *g_pLogHook = NULL;
 
 class FileNatives : 
 	public SMGlobalClass,
-	public IHandleTypeDispatch
+	public IHandleTypeDispatch,
+	public IPluginsListener
 {
 public:
+	FileNatives()
+	{
+		m_bIsLoggingHooked = false;
+	}
 	virtual void OnSourceModAllInitialized()
 	{
 		g_FileType = g_HandleSys.CreateType("File", this, 0, NULL, NULL, g_pCoreIdent, NULL);
 		g_DirType = g_HandleSys.CreateType("Directory", this, 0, NULL, NULL, g_pCoreIdent, NULL);
+		g_pLogHook = g_Forwards.CreateForwardEx(NULL, ET_Hook, 1, NULL, Param_String);
+		g_PluginSys.AddPluginsListener(this);
 	}
 	virtual void OnSourceModShutdown()
 	{
+		g_PluginSys.RemovePluginsListener(this);
+		if (m_bIsLoggingHooked)
+		{
+			SH_REMOVE_HOOK_MEMFUNC(IVEngineServer, LogPrint, engine, this, &FileNatives::LogPrint, false);
+			m_bIsLoggingHooked = false;
+		}
+		g_Forwards.ReleaseForward(g_pLogHook);
 		g_HandleSys.RemoveType(g_DirType, g_pCoreIdent);
 		g_HandleSys.RemoveType(g_FileType, g_pCoreIdent);
 		g_DirType = 0;
@@ -64,11 +82,59 @@ public:
 		{
 			FILE *fp = (FILE *)object;
 			fclose(fp);
-		} else if (type == g_DirType) {
+		}
+		else if (type == g_DirType)
+		{
 			IDirectory *pDir = (IDirectory *)object;
 			g_LibSys.CloseDirectory(pDir);
 		}
 	}
+	virtual void OnPluginDestroyed(IPlugin *plugin)
+	{
+		if (m_bIsLoggingHooked && g_pLogHook->GetFunctionCount() == 0)
+		{
+			SH_REMOVE_HOOK_MEMFUNC(IVEngineServer, LogPrint, engine, this, &FileNatives::LogPrint, false);
+			m_bIsLoggingHooked = false;
+		}
+	}
+	virtual void AddLogHook(IPluginFunction *pFunc)
+	{
+		if (!m_bIsLoggingHooked)
+		{
+			SH_ADD_HOOK_MEMFUNC(IVEngineServer, LogPrint, engine, this, &FileNatives::LogPrint, false);
+			m_bIsLoggingHooked = true;
+		}
+
+		g_pLogHook->AddFunction(pFunc);
+	}
+	virtual void RemoveLogHook(IPluginFunction *pFunc)
+	{
+		g_pLogHook->RemoveFunction(pFunc);
+
+		if (m_bIsLoggingHooked && g_pLogHook->GetFunctionCount() == 0)
+		{
+			SH_REMOVE_HOOK_MEMFUNC(IVEngineServer, LogPrint, engine, this, &FileNatives::LogPrint, false);
+			m_bIsLoggingHooked = false;
+		}
+	}
+	virtual void LogPrint(const char *msg)
+	{
+		cell_t result;
+
+		result = 0;
+
+		g_in_game_log_hook = true;
+		g_pLogHook->PushString(msg);
+		g_pLogHook->Execute(&result);
+		g_in_game_log_hook = false;
+
+		if (result >= Pl_Handled)
+		{
+			RETURN_META(MRES_SUPERCEDE);
+		}
+	}
+private:
+	bool m_bIsLoggingHooked;
 } s_FileNatives;
 
 static cell_t sm_OpenDirectory(IPluginContext *pContext, const cell_t *params)
@@ -521,7 +587,7 @@ static cell_t sm_LogToGame(IPluginContext *pContext, const cell_t *params)
 		buffer[len] = '\0';
 	}
 
-	engine->LogPrint(buffer);
+	Engine_LogPrintWrapper(buffer);
 
 	return 1;
 }
@@ -835,6 +901,34 @@ static cell_t sm_WriteFileString(IPluginContext *pContext, const cell_t *params)
 	return (fwrite(buffer, sizeof(char), len, pFile) == len) ? 1 : 0;
 }
 
+static cell_t sm_AddGameLogHook(IPluginContext *pContext, const cell_t *params)
+{
+	IPluginFunction *pFunction;
+
+	if ((pFunction=pContext->GetFunctionById(params[1])) == NULL)
+	{
+		return pContext->ThrowNativeError("Function id %x is invalid", params[1]);
+	}
+
+	s_FileNatives.AddLogHook(pFunction);
+	
+	return 1;
+}
+
+static cell_t sm_RemoveGameLogHook(IPluginContext *pContext, const cell_t *params)
+{
+	IPluginFunction *pFunction;
+
+	if ((pFunction=pContext->GetFunctionById(params[1])) == NULL)
+	{
+		return pContext->ThrowNativeError("Function id %x is invalid", params[1]);
+	}
+
+	s_FileNatives.RemoveLogHook(pFunction);
+
+	return 1;
+}
+
 REGISTER_NATIVES(filesystem)
 {
 	{"OpenDirectory",			sm_OpenDirectory},
@@ -863,5 +957,7 @@ REGISTER_NATIVES(filesystem)
 	{"ReadFileString",			sm_ReadFileString},
 	{"WriteFile",				sm_WriteFile},
 	{"WriteFileString",			sm_WriteFileString},
+	{"AddGameLogHook",			sm_AddGameLogHook},
+	{"RemoveGameLogHook",		sm_RemoveGameLogHook},
 	{NULL,						NULL},
 };
diff --git a/plugins/include/logging.inc b/plugins/include/logging.inc
new file mode 100644
index 00000000..14b0e906
--- /dev/null
+++ b/plugins/include/logging.inc
@@ -0,0 +1,153 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This file is part of the SourceMod/SourcePawn SDK.
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+ 
+#if defined _sm_logging_included
+ #endinput
+#endif
+#define _sm_logging_included
+
+/**
+ * Logs a plugin message to the SourceMod logs.  The log message will be 
+ * prefixed by the plugin's logtag (filename).
+ *
+ * @param format		String format.
+ * @param ...			Format arguments.
+ * @noreturn
+ */
+native LogMessage(const String:format[], any:...);
+
+/**
+ * Logs a message to the SourceMod logs without any plugin logtag.  This is 
+ * useful for re-routing messages from other plugins, for example, messages 
+ * from LogAction().
+ *
+ * @param format		String format.
+ * @param ...			Format arguments.
+ * @noreturn
+ */
+native LogMessageEx(const String:format[], any:...);
+
+/**
+ * Logs a message to any file.  The log message will be in the normal 
+ * SourceMod format, with the plugin logtag prepended.
+ *
+ * @param file			File to write the log message in.
+ * @param format		String format.
+ * @param ...			Format arguments.
+ * @noreturn
+ * @error				File could not be opened/written.
+ */
+native LogToFile(const String:file[], const String:format[], any:...);
+
+/**
+ * Same as LogToFile(), except no plugin logtag is prepended.
+ *
+ * @param file			File to write the log message in.
+ * @param format		String format.
+ * @param ...			Format arguments.
+ * @noreturn
+ * @error				File could not be opened/written.
+ */
+native LogToFileEx(const String:file[], const String:format[], any:...);
+
+/**
+ * Logs an action from a command or event whereby interception and routing may 
+ * be important.  This is intended to be a logging version of ShowActivity().
+ *
+ * @param client		Client performing the action, 0 for server, or -1 if not 
+ *						applicable.
+ * @param target		Client being targetted, or -1 if not applicable.
+ * @param message		Message format.
+ * @param ...			Message formatting parameters.
+ * @noreturn
+ */
+native LogAction(client, target, const String:message[], any:...);
+
+/**
+ * Logs a plugin error message to the SourceMod logs.
+ *
+ * @param format		String format.
+ * @param ...			Format arguments.
+ * @noreturn
+ */
+native LogError(const String:format[], any:...);
+
+/**
+ * Called when an action is going to be logged.
+ *
+ * @param source		Handle to the object logging the action, or INVALID_HANDLE 
+ *						if Core is logging the action.
+ * @param ident			Type of object logging the action (plugin, ext, or core).
+ * @param client		Client the action is from; 0 for server, -1 if not applicable.
+ * @param target		Client the action is targetting, or -1 if not applicable.
+ * @param message		Message that is being logged.
+ * @return				Plugin_Continue will cause Core to defaulty log the message.
+ *						Plugin_Handled will stop Core from logging the message.
+ * 						Plugin_Stop is the same as Handled, but prevents any other 
+ *						plugins from handling the message.
+ */
+forward Action:OnLogAction(Handle:source, 
+						   Identity:ident,
+						   client,
+						   target,
+						   const String:message[]);
+
+/**
+ * Called when a game log message is received.
+ *
+ * Any Log*() functions called within this callback will not recursively 
+ * pass through.  That is, they will log directly, bypassing this callback.
+ *
+ * Note that this does not capture log messages from the engine.  It only 
+ * captures log messages being sent from the game/mod itself.
+ *
+ * @param message		Message contents.
+ * @return				Plugin_Handled or Plugin_Stop will prevent the message 
+ * 						from being written to the log file.
+ */
+functag GameLogHook Action:public(const String:message[]);
+
+/**
+ * Adds a game log hook.
+ *
+ * @param hook			Hook function.
+ * @noreturn
+ */
+native AddGameLogHook(GameLogHook:hook);
+
+/**
+ * Removes a game log hook.
+ *
+ * @param hook			Hook function.
+ * @noreturn
+ */
+native RemoveGameLogHook(GameLogHook:hook);
diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc
index afc93521..dea00ddb 100644
--- a/plugins/include/sourcemod.inc
+++ b/plugins/include/sourcemod.inc
@@ -54,6 +54,7 @@ struct Plugin
 #include <handles>
 #include <functions>
 #include <files>
+#include <logging>
 #include <timers>
 #include <admin>
 #include <dbi>
@@ -92,6 +93,10 @@ public Plugin:myinfo;
  * If any run-time error is thrown during this callback, the plugin will be marked 
  * as failed.
  *
+ * It is not necessary to close any handles or remove hooks in this function.  
+ * SourceMod guarantees that plugin shutdown automatically and correctly releases 
+ * all resources.
+ *
  * @noreturn
  */
 forward OnPluginStart();
@@ -176,26 +181,6 @@ forward OnServerCfg();
  */
 forward OnAllPluginsLoaded();
 
-/**
- * Called when an action is going to be logged.
- *
- * @param source		Handle to the object logging the action, or INVALID_HANDLE 
- *						if Core is logging the action.
- * @param ident			Type of object logging the action (plugin, ext, or core).
- * @param client		Client the action is from; 0 for server, -1 if not applicable.
- * @param target		Client the action is targetting, or -1 if not applicable.
- * @param message		Message that is being logged.
- * @return				Plugin_Continue will cause Core to defaulty log the message.
- *						Plugin_Handled will stop Core from logging the message.
- * 						Plugin_Stop is the same as Handled, but prevents any other 
- *						plugins from handling the message.
- */
-forward Action:OnLogAction(Handle:source, 
-						   Identity:ident,
-						   client,
-						   target,
-						   const String:message[]);
-
 /**
  * Returns the calling plugin's Handle.
  *
@@ -315,72 +300,6 @@ native SetFailState(const String:string[], any:...);
  */
 native ThrowError(const String:fmt[], any:...);
 
-/**
- * Logs a plugin message to the SourceMod logs.  The log message will be 
- * prefixed by the plugin's logtag (filename).
- *
- * @param format		String format.
- * @param ...			Format arguments.
- * @noreturn
- */
-native LogMessage(const String:format[], any:...);
-
-/**
- * Logs a message to the SourceMod logs without any plugin logtag.  This is 
- * useful for re-routing messages from other plugins, for example, messages 
- * from LogAction().
- *
- * @param format		String format.
- * @param ...			Format arguments.
- * @noreturn
- */
-native LogMessageEx(const String:format[], any:...);
-
-/**
- * Logs a message to any file.  The log message will be in the normal 
- * SourceMod format, with the plugin logtag prepended.
- *
- * @param file			File to write the log message in.
- * @param format		String format.
- * @param ...			Format arguments.
- * @noreturn
- * @error				File could not be opened/written.
- */
-native LogToFile(const String:file[], const String:format[], any:...);
-
-/**
- * Same as LogToFile(), except no plugin logtag is prepended.
- *
- * @param file			File to write the log message in.
- * @param format		String format.
- * @param ...			Format arguments.
- * @noreturn
- * @error				File could not be opened/written.
- */
-native LogToFileEx(const String:file[], const String:format[], any:...);
-
-/**
- * Logs an action from a command or event whereby interception and routing may 
- * be important.  This is intended to be a logging version of ShowActivity().
- *
- * @param client		Client performing the action, 0 for server, or -1 if not 
- *						applicable.
- * @param target		Client being targetted, or -1 if not applicable.
- * @param message		Message format.
- * @param ...			Message formatting parameters.
- * @noreturn
- */
-native LogAction(client, target, const String:message[], any:...);
-
-/**
- * Logs a plugin error message to the SourceMod logs.
- *
- * @param format		String format.
- * @param ...			Format arguments.
- * @noreturn
- */
-native LogError(const String:format[], any:...);
-
 /**
  * Gets the system time as a unix timestamp.
  *

From e7f8d1b2f53a70a4fc718244eb45e959c541f0bf Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Mar 2008 23:54:38 +0000
Subject: [PATCH 231/263] added amb1424 - hudtext functions for mods that
 support them

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401921
---
 core/PlayerManager.cpp         |   1 +
 core/msvc8/sourcemod_mm.vcproj |   4 +
 core/sm_globals.h              |   9 +-
 core/smn_hudtext.cpp           | 475 +++++++++++++++++++++++++++++++++
 core/sourcemod.cpp             |   8 +
 gamedata/core.games.txt        |  18 ++
 plugins/include/halflife.inc   | 147 +++++++++-
 7 files changed, 658 insertions(+), 4 deletions(-)
 create mode 100644 core/smn_hudtext.cpp

diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp
index ac1fc427..b6f37ca5 100644
--- a/core/PlayerManager.cpp
+++ b/core/PlayerManager.cpp
@@ -90,6 +90,7 @@ PlayerManager::PlayerManager()
 {
 	m_AuthQueue = NULL;
 	m_FirstPass = false;
+	m_maxClients = 0;
 
 	m_UserIdLookUp = new int[USHRT_MAX+1];
 	memset(m_UserIdLookUp, 0, sizeof(int) * (USHRT_MAX+1));
diff --git a/core/msvc8/sourcemod_mm.vcproj b/core/msvc8/sourcemod_mm.vcproj
index c3efbe2c..3c5985a0 100644
--- a/core/msvc8/sourcemod_mm.vcproj
+++ b/core/msvc8/sourcemod_mm.vcproj
@@ -1424,6 +1424,10 @@
 				RelativePath="..\smn_handles.cpp"
 				>
 			</File>
+			<File
+				RelativePath="..\smn_hudtext.cpp"
+				>
+			</File>
 			<File
 				RelativePath="..\smn_keyvalues.cpp"
 				>
diff --git a/core/sm_globals.h b/core/sm_globals.h
index b761fabf..42fa6b15 100644
--- a/core/sm_globals.h
+++ b/core/sm_globals.h
@@ -85,12 +85,19 @@ public:
 	}
 
 	/**
-	 * @brief Called after all global classes have initialized
+	 * @brief Called after all global classes have been started up
 	 */
 	virtual void OnSourceModAllInitialized()
 	{
 	}
 
+	/**
+	 * @brief Called after all global classes have initialized
+	 */
+	virtual void OnSourceModAllInitialized_Post()
+	{
+	}
+
 	/**
 	 * @brief Called when SourceMod is shutting down
 	 */
diff --git a/core/smn_hudtext.cpp b/core/smn_hudtext.cpp
new file mode 100644
index 00000000..50d1923a
--- /dev/null
+++ b/core/smn_hudtext.cpp
@@ -0,0 +1,475 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include "sm_globals.h"
+#include "GameConfigs.h"
+#include "UserMessages.h"
+#include "TimerSys.h"
+#include "PlayerManager.h"
+#include "HandleSys.h"
+
+#define MAX_HUD_CHANNELS		6
+
+int g_HudMsgNum = -1;
+
+struct hud_syncobj_t
+{
+	int *player_channels;
+};
+
+struct player_chaninfo_t
+{
+	double chan_times[MAX_HUD_CHANNELS];
+	hud_syncobj_t *chan_syncobjs[MAX_HUD_CHANNELS];
+};
+
+struct hud_text_parms
+{
+	float       x;
+	float       y;
+	int         effect;
+	byte        r1, g1, b1, a1;
+	byte        r2, g2, b2, a2;
+	float       fadeinTime;
+	float       fadeoutTime;
+	float       holdTime;
+	float       fxTime;
+	int         channel;
+};
+
+class HudMsgHelpers : 
+	public SMGlobalClass,
+	public IHandleTypeDispatch,
+	public IClientListener
+{
+public:
+	bool IsSupported()
+	{
+		return (g_HudMsgNum != -1);
+	}
+
+	virtual void OnSourceModAllInitialized_Post()
+	{
+		const char *key;
+
+		key = g_pGameConf->GetKeyValue("HudTextMsg");
+		if (key != NULL)
+		{
+			g_HudMsgNum = g_UserMsgs.GetMessageIndex(key);
+		}
+
+		if (!IsSupported())
+		{
+			m_hHudSyncObj = 0;
+			m_PlayerHuds = NULL;
+			return;
+		}
+
+		m_PlayerHuds = new player_chaninfo_t[256+1];
+		m_hHudSyncObj = g_HandleSys.CreateType("HudSyncObj", this, 0, NULL, NULL, g_pCoreIdent, NULL);
+
+		g_Players.AddClientListener(this);
+	}
+
+	virtual void OnSourceModShutdown()
+	{
+		if (!IsSupported())
+		{
+			return;
+		}
+
+		delete [] m_PlayerHuds;
+		g_HandleSys.RemoveType(m_hHudSyncObj, g_pCoreIdent);
+
+		g_Players.RemoveClientListener(this);
+	}
+
+	virtual void OnHandleDestroy(HandleType_t type, void *object)
+	{
+		hud_syncobj_t *obj = (hud_syncobj_t *)object;
+
+		delete [] obj->player_channels;
+		delete obj;
+	}
+
+	virtual bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize)
+	{
+		*pSize = sizeof(unsigned int) * g_Players.GetMaxClients();
+		return true;
+	}
+
+	virtual void OnClientConnected(int client)
+	{
+		player_chaninfo_t *player;
+
+		player = &m_PlayerHuds[client];
+		memset(player->chan_syncobjs, 0, sizeof(player->chan_syncobjs));
+		memset(player->chan_times, 0, sizeof(player->chan_times));
+	}
+
+	Handle_t CreateHudSyncObj(IdentityToken_t *pIdent)
+	{
+		Handle_t hndl;
+		int max_clients;
+		HandleError err;
+		hud_syncobj_t *obj;
+		HandleSecurity sec;
+
+		if ((max_clients = g_Players.MaxClients()) == 0)
+		{
+			max_clients = 256+1;
+		}
+
+		obj = new hud_syncobj_t;
+		obj->player_channels = new int[max_clients];
+
+		memset(obj->player_channels, 0, sizeof(int) * max_clients);
+
+		sec = HandleSecurity(pIdent, g_pCoreIdent);
+		
+		if ((hndl = g_HandleSys.CreateHandleEx(m_hHudSyncObj, obj, &sec, NULL, &err))
+			== BAD_HANDLE)
+		{
+			delete [] obj->player_channels;
+			delete obj;
+		}
+
+		return hndl;
+	}
+
+	HandleError ReadHudSyncObj(Handle_t hndl, 
+		IdentityToken_t *pOwner, 
+		hud_syncobj_t **pObj)
+	{
+		HandleSecurity sec(pOwner, g_pCoreIdent);
+		return g_HandleSys.ReadHandle(hndl, m_hHudSyncObj, &sec, (void **)pObj);
+	}
+
+	unsigned int AutoSelectChannel(unsigned int client)
+	{
+		int last_channel;
+		player_chaninfo_t *player;
+
+		player = &m_PlayerHuds[client];
+
+		last_channel = 0;
+		for (unsigned int i = 1; i < MAX_HUD_CHANNELS; i++)
+		{
+			if (player->chan_times[i] < player->chan_times[last_channel])
+			{
+				last_channel = i;
+			}
+		}
+
+		ManualSelectChannel(client, last_channel);
+
+		return last_channel;
+	}
+
+	int TryReuseLastChannel(unsigned int client, hud_syncobj_t *obj)
+	{
+		int last_channel;
+		player_chaninfo_t *player;
+
+		player = &m_PlayerHuds[client];
+
+		/* First, see if we can re-use the previous channel. */
+		last_channel = obj->player_channels[client];
+
+		if (player->chan_syncobjs[last_channel] == obj)
+		{
+			player->chan_times[last_channel] = *g_pUniversalTime;
+			return last_channel;
+		}
+
+		return -1;
+	}
+
+	int AutoSelectChannel(unsigned int client, hud_syncobj_t *obj)
+	{
+		int last_channel;
+		player_chaninfo_t *player;
+
+		player = &m_PlayerHuds[client];
+		
+		/* First, see if we can re-use the previous channel. */
+		last_channel = obj->player_channels[client];
+
+		if (player->chan_syncobjs[last_channel] == obj)
+		{
+			player->chan_times[last_channel] = *g_pUniversalTime;
+			return last_channel;
+		}
+
+		last_channel = 0;
+		for (unsigned int i = 1; i < MAX_HUD_CHANNELS; i++)
+		{
+			if (player->chan_times[i] < player->chan_times[last_channel])
+			{
+				last_channel = i;
+			}
+		}
+
+		obj->player_channels[client] = last_channel;
+		player->chan_syncobjs[last_channel] = obj;
+		player->chan_times[last_channel] = *g_pUniversalTime;
+
+		return last_channel;
+	}
+
+	int ManualSelectChannel(unsigned int client, int channel)
+	{
+		player_chaninfo_t *player;
+
+		player = &m_PlayerHuds[client];
+		player->chan_times[channel] = *g_pUniversalTime;
+		player->chan_syncobjs[channel] = NULL;
+
+		return channel;
+	}
+private:
+	HandleType_t m_hHudSyncObj;
+	player_chaninfo_t *m_PlayerHuds;
+} s_HudMsgHelpers;
+
+hud_text_parms g_hud_params;
+
+static cell_t CreateHudSynchronizer(IPluginContext *pContext, const cell_t *params)
+{
+	return s_HudMsgHelpers.CreateHudSyncObj(pContext->GetIdentity());
+}
+
+static cell_t SetHudTextParams(IPluginContext *pContext, const cell_t *params)
+{
+	g_hud_params.x = sp_ctof(params[1]);
+	g_hud_params.y = sp_ctof(params[2]);
+	g_hud_params.holdTime = sp_ctof(params[3]);
+	g_hud_params.r1 = static_cast<byte>(params[4]);
+	g_hud_params.g1 = static_cast<byte>(params[5]);
+	g_hud_params.b1 = static_cast<byte>(params[6]);
+	g_hud_params.a1 = static_cast<byte>(params[7]);
+	g_hud_params.effect = params[8];
+	g_hud_params.fxTime = sp_ctof(params[9]);
+	g_hud_params.fadeinTime = sp_ctof(params[10]);
+	g_hud_params.fadeoutTime = sp_ctof(params[11]);
+	g_hud_params.r2 = 255;
+	g_hud_params.g2 = 255;
+	g_hud_params.b2 = 250;
+	g_hud_params.a2 = 0;
+
+	return 1;
+}
+
+static cell_t SetHudTextParamsEx(IPluginContext *pContext, const cell_t *params)
+{
+	cell_t *color1, *color2;
+
+	pContext->LocalToPhysAddr(params[4], &color1);
+	pContext->LocalToPhysAddr(params[5], &color2);
+
+	g_hud_params.x = sp_ctof(params[1]);
+	g_hud_params.y = sp_ctof(params[2]);
+	g_hud_params.holdTime = sp_ctof(params[3]);
+	g_hud_params.r1 = static_cast<byte>(color1[0]);
+	g_hud_params.g1 = static_cast<byte>(color1[1]);
+	g_hud_params.b1 = static_cast<byte>(color1[2]);
+	g_hud_params.a1 = static_cast<byte>(color1[3]);
+	g_hud_params.effect = params[6];
+	g_hud_params.fxTime = sp_ctof(params[7]);
+	g_hud_params.fadeinTime = sp_ctof(params[8]);
+	g_hud_params.fadeoutTime = sp_ctof(params[9]);
+	g_hud_params.r2 = static_cast<byte>(color2[0]);
+	g_hud_params.g2 = static_cast<byte>(color2[1]);
+	g_hud_params.b2 = static_cast<byte>(color2[2]);
+	g_hud_params.a2 = static_cast<byte>(color2[3]);
+
+	return 1;
+}
+
+void UTIL_SendHudText(int client, const hud_text_parms &textparms, const char *pMessage)
+{
+	bf_write *bf;
+	cell_t players[1];
+
+	players[0] = client;
+
+	bf = g_UserMsgs.StartMessage(g_HudMsgNum, players, 1, 0);
+	bf->WriteByte(textparms.channel & 0xFF );
+	bf->WriteFloat(textparms.x);
+	bf->WriteFloat(textparms.y);
+	bf->WriteByte(textparms.r1);
+	bf->WriteByte(textparms.g1);
+	bf->WriteByte(textparms.b1);
+	bf->WriteByte(textparms.a1);
+	bf->WriteByte(textparms.r2);
+	bf->WriteByte(textparms.g2);
+	bf->WriteByte(textparms.b2);
+	bf->WriteByte(textparms.a2);
+	bf->WriteByte(textparms.effect);
+	bf->WriteFloat(textparms.fadeinTime);
+	bf->WriteFloat(textparms.fadeoutTime);
+	bf->WriteFloat(textparms.holdTime);
+	bf->WriteFloat(textparms.fxTime);
+	bf->WriteString(pMessage);
+	g_UserMsgs.EndMessage();
+}
+
+static cell_t ShowSyncHudText(IPluginContext *pContext, const cell_t *params)
+{
+	int client;
+	Handle_t err;
+	CPlayer *pPlayer;
+	hud_syncobj_t *obj;
+	char message_buffer[255-36];
+
+	if (!s_HudMsgHelpers.IsSupported())
+	{
+		return -1;
+	}
+
+	if ((err = s_HudMsgHelpers.ReadHudSyncObj(params[2], pContext->GetIdentity(), &obj)) != HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[2], err);
+	}
+
+	client = params[1];
+	if ((pPlayer = g_Players.GetPlayerByIndex(client)) == NULL)
+	{
+		return pContext->ThrowNativeError("Invalid client index %d", client);
+	}
+	else if (!pPlayer->IsInGame())
+	{
+		return pContext->ThrowNativeError("Client %d is not in-game", client);
+	}
+
+	g_SourceMod.FormatString(message_buffer, sizeof(message_buffer), pContext, params, 3);
+	if (pContext->GetContext()->n_err != SP_ERROR_NONE)
+	{
+		return 0;
+	}
+
+	g_hud_params.channel = s_HudMsgHelpers.AutoSelectChannel(client, obj);
+	UTIL_SendHudText(client, g_hud_params, message_buffer);
+
+	return 1;
+}
+
+static cell_t ClearSyncHud(IPluginContext *pContext, const cell_t *params)
+{
+	int client;
+	int channel;
+	Handle_t err;
+	CPlayer *pPlayer;
+	hud_syncobj_t *obj;
+
+	if (!s_HudMsgHelpers.IsSupported())
+	{
+		return -1;
+	}
+
+	if ((err = s_HudMsgHelpers.ReadHudSyncObj(params[2], pContext->GetIdentity(), &obj)) != HandleError_None)
+	{
+		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[2], err);
+	}
+
+	client = params[1];
+	if ((pPlayer = g_Players.GetPlayerByIndex(client)) == NULL)
+	{
+		return pContext->ThrowNativeError("Invalid client index %d", client);
+	}
+	else if (!pPlayer->IsInGame())
+	{
+		return pContext->ThrowNativeError("Client %d is not in-game", client);
+	}
+
+	if ((channel = s_HudMsgHelpers.TryReuseLastChannel(client, obj)) == -1)
+	{
+		return -1;
+	}
+
+	g_hud_params.channel = channel;
+	UTIL_SendHudText(client, g_hud_params, "");
+
+	return g_hud_params.channel;
+}
+
+static cell_t ShowHudText(IPluginContext *pContext, const cell_t *params)
+{
+	int client;
+	CPlayer *pPlayer;
+	char message_buffer[255-36];
+
+	if (!s_HudMsgHelpers.IsSupported())
+	{
+		return -1;
+	}
+
+	client = params[1];
+	if ((pPlayer = g_Players.GetPlayerByIndex(client)) == NULL)
+	{
+		return pContext->ThrowNativeError("Invalid client index %d", client);
+	}
+	else if (!pPlayer->IsInGame())
+	{
+		return pContext->ThrowNativeError("Client %d is not in-game", client);
+	}
+
+	g_SourceMod.FormatString(message_buffer, sizeof(message_buffer), pContext, params, 3);
+	if (pContext->GetContext()->n_err != SP_ERROR_NONE)
+	{
+		return 0;
+	}
+
+	if (params[2] == -1)
+	{
+		g_hud_params.channel = s_HudMsgHelpers.AutoSelectChannel(client);
+	}
+	else
+	{
+		g_hud_params.channel = params[2] % MAX_HUD_CHANNELS;
+		s_HudMsgHelpers.ManualSelectChannel(client, g_hud_params.channel);
+	}
+
+	UTIL_SendHudText(client, g_hud_params, message_buffer);
+
+	return g_hud_params.channel;
+}
+
+REGISTER_NATIVES(hudNatives)
+{
+	{"ClearSyncHud",				ClearSyncHud},
+	{"CreateHudSynchronizer",		CreateHudSynchronizer},
+	{"SetHudTextParams",			SetHudTextParams},
+	{"SetHudTextParamsEx",			SetHudTextParamsEx},
+	{"ShowHudText",					ShowHudText},
+	{"ShowSyncHudText",				ShowSyncHudText},
+	{NULL,							NULL},
+};
diff --git a/core/sourcemod.cpp b/core/sourcemod.cpp
index 5a44e775..695e9933 100644
--- a/core/sourcemod.cpp
+++ b/core/sourcemod.cpp
@@ -302,6 +302,14 @@ void SourceModBase::StartSourceMod(bool late)
 		pBase = pBase->m_pGlobalClassNext;
 	}
 
+	/* Notify! */
+	pBase = SMGlobalClass::head;
+	while (pBase)
+	{
+		pBase->OnSourceModAllInitialized_Post();
+		pBase = pBase->m_pGlobalClassNext;
+	}
+
 	/* Add us now... */
 	g_ShareSys.AddInterface(NULL, this);
 
diff --git a/gamedata/core.games.txt b/gamedata/core.games.txt
index f598813a..2d91a614 100644
--- a/gamedata/core.games.txt
+++ b/gamedata/core.games.txt
@@ -63,6 +63,24 @@
 			"HudRadioMenuMsg"		"ShowMenu"
 		}
 	}
+	
+	/**
+	 * Which games support HudMsg?
+	 */
+	"#default"
+	{
+		"#supported"
+		{
+			"game"		"hl2mp"
+			"game"		"sourceforts"
+			"game"		"tf"
+		}
+		
+		"Keys"
+		{
+			"HudTextMsg"			"HudMsg"
+		}
+	}
 
 	/**
 	 * Which games use an extra byte in the HintText 
diff --git a/plugins/include/halflife.inc b/plugins/include/halflife.inc
index c9f1fbba..35fd7f74 100644
--- a/plugins/include/halflife.inc
+++ b/plugins/include/halflife.inc
@@ -353,21 +353,162 @@ stock PrintHintTextToAll(const String:format[], any:...)
  * Shows a VGUI panel to a specific client.
  *
  * @param client		Client index.
- * @param name			Panel type name (Check viewport_panel_names.h to see a list of some panel names).
- * @param Kv			KeyValues handle with all the data for the panel setup (Depends on the panel type and may be unused).
+ * @param name			Panel type name (Check viewport_panel_names.h to see a list of 
+ *						some panel names).
+ * @param Kv			KeyValues handle with all the data for the panel setup (Depends 
+ *						on the panel type and may be unused).
  * @param show			True to show the panel, or false to remove it from the client screen.
  * @noreturn
  * @error				If the client is not connected an error will be thrown.
  */
 native ShowVGUIPanel(client, const String:name[], Handle:Kv=INVALID_HANDLE, bool:show=true);
 
+/**
+ * Creates a HUD synchronization object.  This object is used to automatically assign and 
+ * re-use channels for a set of messages.  
+ *
+ * The HUD has a hardcoded number of channels (usually 6) for displaying 
+ * text.  You can use any channel for any area of the screen.  Text on 
+ * different channels can overlap, but text on the same channel will 
+ * erase the old text first.  This overlapping and overwriting gets problematic.
+ *
+ * A HUD synchronization object automatically selects channels for you based on 
+ * the following heuristics:
+ *  - If channel X was last used by the object, and hasn't been modified again, 
+ *    channel X gets re-used.
+ *  - Otherwise, a new channel is chosen based on the least-recently-used channel.
+ *
+ * This ensures that if you display text on a sync object, that the previous text 
+ * displayed on it will always be cleared first.  This is because your new text 
+ * will either overwrite the old text on the same channel, or because another 
+ * channel has already erased your text.
+ *
+ * Note that messages can still overlap if they are on different synchronization 
+ * objects, or they are displayed to manual channels.
+ *
+ * These are particularly useful for displaying repeating or refreshing HUD text, in 
+ * addition to displaying multiple message sets in one area of the screen (for example, 
+ * center-say messages that may pop up randomly that you don't want to overlap each 
+ * other).
+ *
+ * @return				New HUD synchronization object.
+ *						The Handle can be closed with CloseHandle().
+ *						If HUD text is not supported on this mod, then 
+ *						INVALID_HANDLE is returned.
+ */
+native Handle:CreateHudSynchronizer();
+
+/**
+ * Sets the HUD parameters for drawing text.  These parameters are stored 
+ * globally, although nothing other than this function and SetHudTextParamsEx 
+ * modify them.
+ *
+ * You must call this function before drawing text.  If you are drawing 
+ * text to multiple clients, you can set the parameters once, since 
+ * they won't be modified.  However, as soon as you pass control back 
+ * to other plugins, you must reset the parameters next time you draw.
+ *
+ * @param x				x coordinate, from 0 to 1.  -1.0 is the center.
+ * @param y				y coordinate, from 0 to 1.  -1.0 is the center.
+ * @param holdTime		Number of seconds to hold the text.
+ * @param r				Red color value.
+ * @param g				Green color value.
+ * @param b				Blue color value.
+ * @param a				Alpha transparency value.
+ * @param effect 		0/1 causes the text to fade in and fade out.
+ *						2 causes the text to flash[?].
+ * @param fxTime		Duration of chosen effect (may not apply to all effects).
+ * @param fadeIn		Number of seconds to spend fading in.
+ * @param fadeOut		Number of seconds to spend fading out.
+ * @noreturn
+ */
+native SetHudTextParams(Float:x, Float:y, Float:holdTime, r, g, b, a, effect = 0,
+						Float:fxTime=6.0, Float:fadeIn=0.1, Float:fadeOut=0.2);
+						
+/**
+ * Sets the HUD parameters for drawing text.  These parameters are stored 
+ * globally, although nothing other than this function and SetHudTextParams
+ * modify them.
+ *
+ * This is the same as SetHudTextParams(), except it lets you set the alternate 
+ * color for when effects require it.  
+ *
+ * @param x				x coordinate, from 0 to 1.  -1.0 is the center.
+ * @param y				y coordinate, from 0 to 1.  -1.0 is the center.
+ * @param holdTime		Number of seconds to hold the text.
+ * @param color1		First color set, array values being [red, green, blue, alpha]
+ * @param color2		Second color set, array values being [red, green, blue, alpha]
+ * @param effect 		0/1 causes the text to fade in and fade out.
+ *						2 causes the text to flash[?].
+ * @param fxTime		Duration of chosen effect (may not apply to all effects).
+ * @param fadeIn		Number of seconds to spend fading in.
+ * @param fadeOut		Number of seconds to spend fading out.
+ * @noreturn
+ */
+native SetHudTextParamsEx(Float:x, Float:y, Float:holdTime, color1[4], 
+						  color2[4]={255,255,255,0}, effect = 0, Float:fxTime=6.0, 
+						  Float:fadeIn=0.1, Float:fadeOut=0.2);
+
+/**
+ * Shows a synchronized HUD message to a client.  
+ *
+ * As of this writing, only TF, HL2MP, and SourceForts support HUD Text.
+ *
+ * @param client		Client index to send the message to.
+ * @param sync			Synchronization object.
+ * @param message		Message text or formatting rules.
+ * @param ...			Message formatting parameters.
+ * @return				-1 on failure, anything else on success.
+ *						This function fails if the mod does not support it.
+ * @error				Client not in-game, or sync object not valid.
+ */
+native ShowSyncHudText(client, Handle:sync, const String:message[], any:...);
+
+/**
+ * Clears the text on a synchronized HUD channel. 
+ *
+ * This is not the same as sending "" because it guarantees that it won't 
+ * overwrite text on another channel.  For example, consider the scenario: 
+ *
+ * 1. Your synchronized message goes to channel 3.
+ * 2. Someone else's non-synchronized message goes to channel 3.
+ *
+ * If you were to simply send "" on your synchronized message, 
+ * then someone else's text could be overwritten.
+ *
+ * @param client		Client index to send the message to.
+ * @param sync			Synchronization object.
+ * @noreturn
+ * @error				Client not in-game, or sync object not valid.
+ */
+native ClearSyncHud(client, Handle:sync);
+
+/**
+ * Shows a HUD message to a client on the given channel.
+ *
+ * As of this writing, only TF, HL2MP, and SourceForts support HUD Text.
+ * 
+ * @param client		Client index to send the message to.
+ * @param channel		A channel number.
+ *						If -1, then a channel will automatically be selected 
+ *						based on the least-recently-used channel.  If the 
+ *						channel is any other number, it will be modulo'd with 
+ *						the channel count to get a final channel number.
+ * @param message		Message text or formatting rules.
+ * @param ...			Message formatting parameters.
+ * @return				-1 on failure (lack of mod support).
+ *						Any other return value is the channel number that was 
+ *						used to render the text.
+ */
+native ShowHudText(client, channel, const String:message[], any:...);
+
 /**
  * Shows a MOTD panel to a specific client.
  *
  * @param client		Client index.
  * @param title			Title of the panel (printed on the top border of the window).
  * @param msg			Contents of the panel, it can be treated as an url, filename or plain text
- *				  depending on the type parameter (WARNING: msg has to be 192 bytes maximum!)
+ *				 		depending on the type parameter (WARNING: msg has to be 192 bytes maximum!)
  * @param type			Determines the way to treat the message body of the panel.
  * @noreturn
  * @error				If the client is not connected an error will be thrown.

From 1f96e25121c8c8b81286c16f7fadea8bb29d0005 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 2 Mar 2008 23:58:33 +0000
Subject: [PATCH 232/263] updated linux build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401922
---
 core/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/Makefile b/core/Makefile
index a49dc222..c7ac052c 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -30,7 +30,7 @@ OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
 	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplists.cpp \
 	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
 	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp \
-	smn_adt_trie.cpp
+	smn_adt_trie.cpp smn_hudtext.cpp
 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
 	systems/LibrarySys.cpp systems/PluginInfoDatabase.cpp systems/PluginSys.cpp \
 	systems/ShareSys.cpp vm/sp_vm_basecontext.cpp vm/sp_vm_function.cpp

From 211b0159e5c92626c042f05dd6bf2de83b951731 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Mon, 3 Mar 2008 06:28:41 +0000
Subject: [PATCH 233/263] Added amb466 - Random Sorting

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401923
---
 core/smn_sorting.cpp          | 64 +++++++++++++++++++++++++++++++++--
 plugins/include/sorting.inc   |  1 +
 plugins/testsuite/sorttest.sp | 32 +++++++++++++++---
 3 files changed, 90 insertions(+), 7 deletions(-)

diff --git a/core/smn_sorting.cpp b/core/smn_sorting.cpp
index e300e282..2e1bf330 100644
--- a/core/smn_sorting.cpp
+++ b/core/smn_sorting.cpp
@@ -86,8 +86,26 @@ enum SortOrder
 {
 	Sort_Ascending = 0,
 	Sort_Descending = 1,
+	Sort_Random = 2,
 };
 
+void sort_random(cell_t *array, cell_t size)
+{
+	srand((unsigned int)time(NULL));
+
+	for (int i = size-1; i > 0; i--)
+	{
+        int n = (rand() % i) + 1;
+
+		if (array[i] != array[n]) 
+		{
+			array[i] ^= array[n];
+			array[n] ^= array[i];
+			array[i] ^= array[n];
+		}
+	}
+}
+
 int sort_ints_asc(const void *int1, const void *int2)
 {
 	return (*(int *)int1) - (*(int *)int2);
@@ -109,9 +127,15 @@ static cell_t sm_SortIntegers(IPluginContext *pContext, const cell_t *params)
 	if (type == Sort_Ascending)
 	{
 		qsort(array, array_size, sizeof(cell_t), sort_ints_asc);
-	} else {
+	} 
+	else if (type == Sort_Descending)
+	{
 		qsort(array, array_size, sizeof(cell_t), sort_ints_desc);
 	}
+	else
+	{
+		sort_random(array, array_size);
+	}
 
 	return 1;
 }
@@ -157,9 +181,15 @@ static cell_t sm_SortFloats(IPluginContext *pContext, const cell_t *params)
 	if (type == Sort_Ascending)
 	{
 		qsort(array, array_size, sizeof(cell_t), sort_floats_asc);
-	} else {
+	}
+	else if (type == Sort_Descending)
+	{
 		qsort(array, array_size, sizeof(cell_t), sort_floats_desc);
 	}
+	else
+	{
+		sort_random(array, array_size);
+	}
 
 	return 1;
 }
@@ -217,9 +247,15 @@ static cell_t sm_SortStrings(IPluginContext *pContext, const cell_t *params)
 	if (type == Sort_Ascending)
 	{
 		qsort(array, array_size, sizeof(cell_t), sort_strings_asc);
-	} else {
+	} 
+	else if (type == Sort_Descending)
+	{
 		qsort(array, array_size, sizeof(cell_t), sort_strings_desc);
 	}
+	else
+	{
+		sort_random(array, array_size);
+	}
 
 	/* END HACKHACK - restore what we damaged so Pawn doesn't throw up.
 	 * We'll browse through each index of the array and patch up the distance.
@@ -392,6 +428,20 @@ int sort_adtarray_strings_desc(const void *str1, const void *str2)
 	return strcmp((char *) str2, (char *) str1);
 }
 
+void sort_adt_random(CellArray *cArray)
+{
+	size_t arraysize = cArray->size();
+
+	srand((unsigned int)time(NULL));
+
+	for (int i = arraysize-1; i > 0; i--)
+	{
+        int n = (rand() % i) + 1;
+
+		cArray->swap(i, n);
+	}
+}
+
 static cell_t sm_SortADTArray(IPluginContext *pContext, const cell_t *params)
 {
 	CellArray *cArray;
@@ -405,6 +455,14 @@ static cell_t sm_SortADTArray(IPluginContext *pContext, const cell_t *params)
 	}
 
 	cell_t order = params[2];
+	
+	if (order == Sort_Random)
+	{
+		sort_adt_random(cArray);
+
+		return 1;
+	}
+
 	cell_t type = params[3];
 	size_t arraysize = cArray->size();
 	size_t blocksize = cArray->blocksize();
diff --git a/plugins/include/sorting.inc b/plugins/include/sorting.inc
index 9cb395d6..7fd59687 100644
--- a/plugins/include/sorting.inc
+++ b/plugins/include/sorting.inc
@@ -43,6 +43,7 @@ enum SortOrder
 {
 	Sort_Ascending = 0,		/**< Ascending order */
 	Sort_Descending = 1,	/**< Descending order */
+	Sort_Random = 2			/**< Random order */
 };
 
 /**
diff --git a/plugins/testsuite/sorttest.sp b/plugins/testsuite/sorttest.sp
index bd9d4d87..c8423fa9 100644
--- a/plugins/testsuite/sorttest.sp
+++ b/plugins/testsuite/sorttest.sp
@@ -47,6 +47,10 @@ public Action:Command_TestSortInts(args)
 	SortIntegers(array, 10, Sort_Descending)
 	PrintIntegers(array, 10)
 	
+	PrintToServer("Testing random sort:")
+	SortIntegers(array, 10, Sort_Random)
+	PrintIntegers(array, 10)
+	
 	return Plugin_Handled
 }
 
@@ -74,6 +78,10 @@ public Action:Command_TestSortFloats(args)
 	SortFloats(array, 10, Sort_Descending)
 	PrintFloats(array, 10)
 	
+	PrintToServer("Testing random sort:")
+	SortFloats(array, 10, Sort_Random)
+	PrintFloats(array, 10)
+	
 	return Plugin_Handled
 }
 
@@ -125,7 +133,7 @@ public Action:Command_TestSortStrings(args)
 			"sidluke",
 			"johnny got his gun",
 			"gabe newell",
-			"hello",
+			"pRED*'s awesome",
 			"WHAT?!"
 		}
 		
@@ -137,6 +145,10 @@ public Action:Command_TestSortStrings(args)
 	SortStrings(strarray, 10, Sort_Descending)
 	PrintStrings(strarray, 10)
 	
+	PrintToServer("Testing random sort:")
+	SortStrings(strarray, 10, Sort_Random)
+	PrintStrings(strarray, 10)
+	
 	return Plugin_Handled
 }
 
@@ -157,7 +169,7 @@ public Action:Command_TestSort2D(args)
 			"sidluke",
 			"johnny got his gun",
 			"gabe newell",
-			"hello",
+			"pred is a crab",
 			"WHAT?!"
 		}
 	
@@ -204,6 +216,10 @@ public Action:Command_TestSortADTInts(args)
 	SortADTArray(array, Sort_Descending, Sort_Integer)
 	PrintADTArrayIntegers(array)
 	
+	PrintToServer("Testing random sort:")
+	SortADTArray(array, Sort_Random, Sort_Integer)
+	PrintADTArrayIntegers(array)
+	
 	return Plugin_Handled
 
 }
@@ -239,6 +255,10 @@ public Action:Command_TestSortADTFloats(args)
 	SortADTArray(array, Sort_Descending, Sort_Float)
 	PrintADTArrayFloats(array)
 	
+	PrintToServer("Testing random sort:")
+	SortADTArray(array, Sort_Random, Sort_Float)
+	PrintADTArrayFloats(array)
+	
 	return Plugin_Handled
 }
 
@@ -264,7 +284,7 @@ public Action:Command_TestSortADTStrings(args)
 	PushArrayString(array, "sidluke");
 	PushArrayString(array, "johnny got his gun");
 	PushArrayString(array, "gabe newell");
-	PushArrayString(array, "hello");
+	PushArrayString(array, "Hello pRED*");
 	PushArrayString(array, "WHAT?!");
 	
 	PrintToServer("Testing ascending sort:")
@@ -275,6 +295,10 @@ public Action:Command_TestSortADTStrings(args)
 	SortADTArray(array, Sort_Descending, Sort_String)
 	PrintADTArrayStrings(array)
 	
+	PrintToServer("Testing random sort:")
+	SortADTArray(array, Sort_Random, Sort_String)
+	PrintADTArrayStrings(array)
+	
 	return Plugin_Handled
 }
 
@@ -298,7 +322,7 @@ public Action:Command_TestSortADTCustom(args)
 	PushArrayString(array, "sidluke");
 	PushArrayString(array, "johnny got his gun");
 	PushArrayString(array, "gabe newell");
-	PushArrayString(array, "hello");
+	PushArrayString(array, "pRED*'s running out of ideas");
 	PushArrayString(array, "WHAT?!");
 	
 	PrintToServer("Testing custom sort:")

From 54640a1fd04b3a4f16ba500e7302a446a6b7121b Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 3 Mar 2008 15:27:27 +0000
Subject: [PATCH 234/263] amb1502 - fixed typo

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401924
---
 plugins/include/sdktools_functions.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/include/sdktools_functions.inc b/plugins/include/sdktools_functions.inc
index 61eb4754..e85f544a 100644
--- a/plugins/include/sdktools_functions.inc
+++ b/plugins/include/sdktools_functions.inc
@@ -124,7 +124,7 @@ native SlapPlayer(client, health=5, bool:sound=true);
 /**
  * Searches for an entity by classname.
  *
- * @param startEnt		The entity index to begin searching from.
+ * @param startEnt		The entity index after which to begin searching from.
  *						Use -1 to start from the first entity.
  * @param classname		Classname of the entity to find.
  * @return				Entity index >= 0 if found, -1 otherwise.

From c6868c213e0eb69f287f340049365bcc63529daf Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Tue, 11 Mar 2008 19:25:19 +0000
Subject: [PATCH 235/263] Added Load Failures to sm plugins list

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401926
---
 core/systems/PluginSys.cpp | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/core/systems/PluginSys.cpp b/core/systems/PluginSys.cpp
index 91977bdd..06d6bb88 100644
--- a/core/systems/PluginSys.cpp
+++ b/core/systems/PluginSys.cpp
@@ -2149,6 +2149,8 @@ void CPluginManager::OnRootConsoleCommand(const char *cmdname, const CCommand &c
 				g_RootMenu.ConsolePrint("[SM] Listing %d plugin%s:", GetPluginCount(), (plnum > 1) ? "s" : "");
 			}
 
+			SourceHook::List<IPlugin *> m_FailList;
+
 			IPluginIterator *iter = GetPluginIterator();
 			for (; iter->MorePlugins(); iter->NextPlugin(), id++)
 			{
@@ -2159,6 +2161,12 @@ void CPluginManager::OnRootConsoleCommand(const char *cmdname, const CCommand &c
 				if (pl->GetStatus() != Plugin_Running)
 				{
 					len += UTIL_Format(buffer, sizeof(buffer), "  %02d <%s>", id, GetStatusText(pl->GetStatus()));
+
+					if (pl->GetStatus() <= Plugin_Error)
+					{
+						/* Plugin has failed to load. */
+						m_FailList.push_back(pl);
+					}
 				}
 				else
 				{
@@ -2177,6 +2185,22 @@ void CPluginManager::OnRootConsoleCommand(const char *cmdname, const CCommand &c
 			}
 
 			iter->Release();
+
+			if (!m_FailList.empty())
+			{
+				g_RootMenu.ConsolePrint("Load Errors:");
+
+				SourceHook::List<IPlugin *>::iterator _iter;
+
+				CPlugin *pl;
+
+				for (_iter=m_FailList.begin(); _iter!=m_FailList.end(); _iter++)
+				{
+					pl = (CPlugin *)*_iter;
+					g_RootMenu.ConsolePrint("%s: %s",(IS_STR_FILLED(pl->GetPublicInfo()->name)) ? pl->GetPublicInfo()->name : pl->GetFilename(), pl->m_errormsg);
+				}
+			}
+
 			return;
 		}
 		else if (strcmp(cmd, "load") == 0)

From b1da7e1cf811724d9f502b6ebb3cf9bd4c68015a Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Tue, 11 Mar 2008 23:52:56 +0000
Subject: [PATCH 236/263] Fixed bug in GetAdjustedTime()

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401927
---
 core/sourcemod.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/sourcemod.cpp b/core/sourcemod.cpp
index 695e9933..06ba14d6 100644
--- a/core/sourcemod.cpp
+++ b/core/sourcemod.cpp
@@ -675,7 +675,7 @@ void SourceModBase::AllPluginsLoaded()
 
 time_t SourceModBase::GetAdjustedTime()
 {
-	return GetAdjustedTime();
+	return ::GetAdjustedTime();
 }
 
 void SourceModBase::AddGameFrameHook(GAME_FRAME_HOOK hook)

From 352b131c35c69222fc2b4ee53bab0cecf16734b2 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Wed, 12 Mar 2008 00:43:35 +0000
Subject: [PATCH 237/263] Added sm_dump_classes command

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401928
---
 extensions/sdktools/util.h       | 102 +++++++++++++++++++++++++++
 extensions/sdktools/vhelpers.cpp | 114 +++++++++++++++++++++++++++++++
 gamedata/sdktools.games.ep2.txt  |  13 ++++
 gamedata/sdktools.games.txt      |  14 ++++
 4 files changed, 243 insertions(+)
 create mode 100644 extensions/sdktools/util.h

diff --git a/extensions/sdktools/util.h b/extensions/sdktools/util.h
new file mode 100644
index 00000000..12404557
--- /dev/null
+++ b/extensions/sdktools/util.h
@@ -0,0 +1,102 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod SDKTools Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id: vcallbuilder.h 1566 2007-10-14 22:12:46Z faluco $
+ */
+
+#ifndef _INCLUDE_SOURCEMOD_UTIL_H_
+#define _INCLUDE_SOURCEMOD_UTIL_H_
+
+#include "utldict.h"
+
+abstract_class IEntityFactory
+{
+public:
+	virtual IServerNetworkable *Create( const char *pClassName ) = 0;
+	virtual void Destroy( IServerNetworkable *pNetworkable ) = 0;
+	virtual size_t GetEntitySize() = 0;
+};
+
+template <class T>
+class CEntityFactory : public IEntityFactory
+{
+public:
+	CEntityFactory( const char *pClassName )
+	{
+		EntityFactoryDictionary()->InstallFactory( this, pClassName );
+	}
+
+	IServerNetworkable *Create( const char *pClassName )
+	{
+		T* pEnt = _CreateEntityTemplate((T*)NULL, pClassName);
+		return pEnt->NetworkProp();
+	}
+
+	void Destroy( IServerNetworkable *pNetworkable )
+	{
+		if ( pNetworkable )
+		{
+			pNetworkable->Release();
+		}
+	}
+
+	virtual size_t GetEntitySize()
+	{
+		return sizeof(T);
+	}
+};
+
+abstract_class IEntityFactoryDictionary
+{
+public:
+	virtual void InstallFactory( IEntityFactory *pFactory, const char *pClassName ) = 0;
+	virtual IServerNetworkable *Create( const char *pClassName ) = 0;
+	virtual void Destroy( const char *pClassName, IServerNetworkable *pNetworkable ) = 0;
+	virtual IEntityFactory *FindFactory( const char *pClassName ) = 0;
+	virtual const char *GetCannonicalName( const char *pClassName ) = 0;
+};
+
+
+class CEntityFactoryDictionary : public IEntityFactoryDictionary
+{
+public:
+	CEntityFactoryDictionary();
+
+	virtual void InstallFactory( IEntityFactory *pFactory, const char *pClassName );
+	virtual IServerNetworkable *Create( const char *pClassName );
+	virtual void Destroy( const char *pClassName, IServerNetworkable *pNetworkable );
+	virtual const char *GetCannonicalName( const char *pClassName );
+	void ReportEntitySizes();
+
+private:
+	IEntityFactory *FindFactory( const char *pClassName );
+public:
+	CUtlDict< IEntityFactory *, unsigned short > m_Factories;
+};
+
+#endif //_INCLUDE_SOURCEMOD_UTIL_H_
diff --git a/extensions/sdktools/vhelpers.cpp b/extensions/sdktools/vhelpers.cpp
index 571abdd0..49a83b3d 100644
--- a/extensions/sdktools/vhelpers.cpp
+++ b/extensions/sdktools/vhelpers.cpp
@@ -30,6 +30,7 @@
  */
 
 #include "extension.h"
+#include "util.h"
 #include "vhelpers.h"
 
 CallHelper s_Teleport;
@@ -501,3 +502,116 @@ CON_COMMAND(sm_dump_netprops, "Dumps the networkable property table as a text fi
 	fclose(fp);
 }
 
+#if defined SUBPLATFORM_SECURECRT
+void _ignore_invalid_parameter(
+						const wchar_t * expression,
+						const wchar_t * function, 
+						const wchar_t * file, 
+						unsigned int line,
+						uintptr_t pReserved
+						)
+{
+	/* Wow we don't care, thanks Microsoft. */
+}
+#endif
+
+CON_COMMAND(sm_dump_classes, "Dumps the class list as a text file")
+{
+#if !defined ORANGEBOX_BUILD
+	CCommand args;
+#endif
+
+	if (args.ArgC() < 2)
+	{
+		META_CONPRINT("Usage: sm_dump_classes <file>\n");
+		return;
+	}
+
+	const char *file = args.Arg(1);
+	if (!file || file[0] == '\0')
+	{
+		META_CONPRINT("Usage: sm_dump_classes <file>\n");
+		return;
+	}
+
+	ICallWrapper *pWrapper = NULL;
+
+	if (!pWrapper)
+	{
+		PassInfo retData;
+		retData.flags = PASSFLAG_BYVAL;
+		retData.size = sizeof(void *);
+		retData.type = PassType_Basic;
+
+		void *addr;
+		if (!g_pGameConf->GetMemSig("EntityFactory", &addr) || addr == NULL)
+		{
+			META_CONPRINT("Failed to locate function\n");
+			return;
+		}
+
+		pWrapper = g_pBinTools->CreateCall(addr, CallConv_Cdecl, &retData, NULL, 0);
+	}
+
+
+	void *returnData = NULL;
+
+	pWrapper->Execute(NULL, &returnData);
+
+	pWrapper->Destroy();
+
+	if (returnData == NULL)
+	{
+		return;
+	}
+
+	CEntityFactoryDictionary *dict = ( CEntityFactoryDictionary * )returnData;
+
+	if ( !dict )
+	{
+		return;
+	}
+
+	char path[PLATFORM_MAX_PATH];
+	g_pSM->BuildPath(Path_Game, path, sizeof(path), "%s", file);
+
+	FILE *fp = NULL;
+	if ((fp = fopen(path, "wt")) == NULL)
+	{
+		META_CONPRINTF("Could not open file \"%s\"\n", path);
+		return;
+	}
+
+	char buffer[80];
+	buffer[0] = 0;
+
+#if defined SUBPLATFORM_SECURECRT
+	_invalid_parameter_handler handler = _set_invalid_parameter_handler(_ignore_invalid_parameter);
+#endif
+
+	time_t t = g_pSM->GetAdjustedTime();
+	size_t written = strftime(buffer, sizeof(buffer), "%d/%m/%Y", localtime(&t));
+
+#if defined SUBPLATFORM_SECURECRT
+	_set_invalid_parameter_handler(handler);
+#endif
+
+	fprintf(fp, "// Dump of all classes for \"%s\" as at %s\n//\n\n", g_pSM->GetGameFolderName(), buffer);
+
+	for ( int i = dict->m_Factories.First(); i != dict->m_Factories.InvalidIndex(); i = dict->m_Factories.Next( i ) )
+	{
+		IServerNetworkable *entity = dict->Create(dict->m_Factories.GetElementName(i));
+		ServerClass *sclass = entity->GetServerClass();
+		fprintf(fp,"%s - %s\n",sclass->GetName(), dict->m_Factories.GetElementName(i));
+
+		typedescription_t *datamap = gamehelpers->FindInDataMap(gamehelpers->GetDataMap(entity->GetBaseEntity()), "m_iEFlags");
+		
+		int *eflags = (int *)((char *)entity->GetBaseEntity() + datamap->fieldOffset[TD_OFFSET_NORMAL]);
+		*eflags |= (1<<0); // EFL_KILLME
+	}
+
+	fclose(fp);
+
+}
+
+
diff --git a/gamedata/sdktools.games.ep2.txt b/gamedata/sdktools.games.ep2.txt
index 93afb06d..65a430be 100644
--- a/gamedata/sdktools.games.ep2.txt
+++ b/gamedata/sdktools.games.ep2.txt
@@ -278,4 +278,17 @@
 			}
 		}
 	}
+	/* EntityFactoryDictionary function */
+	"#default"
+	{
+		"Signatures"
+		{
+			"EntityFactory"
+			{
+				"library"	"server"
+				"windows"	"\xB8\x01\x00\x00\x00\x84\x2A\x2A\x2A\x2A\x2A\x75\x1D\x09\x2A\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x68\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x83\xC4\x04\xB8\x2A\x2A\x2A\x2A\xC3"
+				"linux"		"@_Z23EntityFactoryDictionaryv"
+			}
+		}
+	}
 }
diff --git a/gamedata/sdktools.games.txt b/gamedata/sdktools.games.txt
index 9ce214c5..cd53d356 100644
--- a/gamedata/sdktools.games.txt
+++ b/gamedata/sdktools.games.txt
@@ -1679,5 +1679,19 @@
 			} 
 		}
 	}
+
+	/* EntityFactoryDictionary function */
+	"#default"
+	{
+		"Signatures"
+		{
+			"EntityFactory"
+			{
+				"library"	"server"
+				"windows"	"\xB8\x01\x00\x00\x00\x84\x2A\x2A\x2A\x2A\x2A\x75\x1D\x09\x2A\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x68\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x83\xC4\x04\xB8\x2A\x2A\x2A\x2A\xC3"
+				"linux"		"@_Z23EntityFactoryDictionaryv"
+			}
+		}
+	}
 }
 

From f5c9a0c3e530c39612b9d735607bb6356e5243ab Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 12 Mar 2008 02:12:47 +0000
Subject: [PATCH 238/263] updated comment at top of pluginsys header

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401929
---
 core/systems/PluginSys.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/core/systems/PluginSys.h b/core/systems/PluginSys.h
index 6a607797..6fa4b7e4 100644
--- a/core/systems/PluginSys.h
+++ b/core/systems/PluginSys.h
@@ -59,6 +59,10 @@ using namespace SourceHook;
 /**
  * NOTES:
  *
+ * UPDATE 2008-03-11: These comments are horribly out of date.  They paint a good overall 
+ * picture of how PluginSys works, but things like dependencies and fake natives have 
+ * complicated things quite a bit.
+ *
  *  Currently this system needs a lot of work but it's good skeletally.  Plugin creation 
  * is done without actually compiling anything.  This is done by Load functions in the 
  * manager.  This will need a rewrite when we add context switching.

From b10bf9d31a04ec63cdccb6a4bbcb96bf53cee0f6 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Wed, 12 Mar 2008 02:13:08 +0000
Subject: [PATCH 239/263] Fixed linux build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401930
---
 extensions/sdktools/util.h | 30 ------------------------------
 1 file changed, 30 deletions(-)

diff --git a/extensions/sdktools/util.h b/extensions/sdktools/util.h
index 12404557..2aa42160 100644
--- a/extensions/sdktools/util.h
+++ b/extensions/sdktools/util.h
@@ -42,35 +42,6 @@ public:
 	virtual size_t GetEntitySize() = 0;
 };
 
-template <class T>
-class CEntityFactory : public IEntityFactory
-{
-public:
-	CEntityFactory( const char *pClassName )
-	{
-		EntityFactoryDictionary()->InstallFactory( this, pClassName );
-	}
-
-	IServerNetworkable *Create( const char *pClassName )
-	{
-		T* pEnt = _CreateEntityTemplate((T*)NULL, pClassName);
-		return pEnt->NetworkProp();
-	}
-
-	void Destroy( IServerNetworkable *pNetworkable )
-	{
-		if ( pNetworkable )
-		{
-			pNetworkable->Release();
-		}
-	}
-
-	virtual size_t GetEntitySize()
-	{
-		return sizeof(T);
-	}
-};
-
 abstract_class IEntityFactoryDictionary
 {
 public:
@@ -81,7 +52,6 @@ public:
 	virtual const char *GetCannonicalName( const char *pClassName ) = 0;
 };
 
-
 class CEntityFactoryDictionary : public IEntityFactoryDictionary
 {
 public:

From aed775162c9464e94eab1441fabfe96a415d7340 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 12 Mar 2008 03:33:52 +0000
Subject: [PATCH 240/263] reworked antiflood.  it now has some logic in core to
 take care of loading order nastiness, and to fully prevent trigger spamming

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401931
---
 core/ChatTriggers.cpp         | 87 ++++++++++++++++++++++++++++++++++-
 core/ChatTriggers.h           |  8 ++++
 core/ConCmdManager.cpp        | 24 ++++++++--
 core/Translator.cpp           | 39 ++++++++++------
 core/Translator.h             |  7 +++
 plugins/antiflood.sp          | 80 +++++++++++++++++++-------------
 plugins/include/sourcemod.inc | 26 +++++++++++
 7 files changed, 219 insertions(+), 52 deletions(-)

diff --git a/core/ChatTriggers.cpp b/core/ChatTriggers.cpp
index e7526b94..c0b00aae 100644
--- a/core/ChatTriggers.cpp
+++ b/core/ChatTriggers.cpp
@@ -34,6 +34,8 @@
 #include "sm_stringutil.h"
 #include "ConCmdManager.h"
 #include "PlayerManager.h"
+#include "Translator.h"
+#include "HalfLife2.h"
 
 /* :HACKHACK: We can't SH_DECL here because ConCmdManager.cpp does.
  * While the OB build only runs on MM:S 1.6.0+ (SH 5+), the older one 
@@ -55,6 +57,7 @@ extern bool __SourceHook_FHAddConCommandDispatch(void *, bool, class fastdelegat
 
 ChatTriggers g_ChatTriggers;
 bool g_bSupressSilentFails = false;
+CPhraseFile *g_pFloodPhrases = NULL;
 
 ChatTriggers::ChatTriggers() : m_pSayCmd(NULL), m_bWillProcessInPost(false), 
 	m_bTriggerWasSilent(false), m_ReplyTo(SM_REPLY_CONSOLE)
@@ -103,6 +106,20 @@ ConfigResult ChatTriggers::OnSourceModConfigChanged(const char *key,
 	return ConfigResult_Ignore;
 }
 
+void ChatTriggers::OnSourceModAllInitialized()
+{
+	m_pShouldFloodBlock = g_Forwards.CreateForward("OnClientFloodCheck", ET_Event, 1, NULL, Param_Cell);
+	m_pDidFloodBlock = g_Forwards.CreateForward("OnClientFloodResult", ET_Event, 2, NULL, Param_Cell, Param_Cell);
+}
+
+void ChatTriggers::OnSourceModAllInitialized_Post()
+{
+	unsigned int file_id;
+	
+	file_id = g_Translator.FindOrAddPhraseFile("antiflood.phrases.txt");
+	g_pFloodPhrases = g_Translator.GetFileByIndex(file_id);
+}
+
 void ChatTriggers::OnSourceModGameInitialized()
 {
 	unsigned int total = 2;
@@ -155,6 +172,9 @@ void ChatTriggers::OnSourceModShutdown()
 		SH_REMOVE_HOOK_MEMFUNC(ConCommand, Dispatch, m_pSayCmd, this, &ChatTriggers::OnSayCommand_Post, true);
 		SH_REMOVE_HOOK_MEMFUNC(ConCommand, Dispatch, m_pSayCmd, this, &ChatTriggers::OnSayCommand_Pre, false);
 	}
+
+	g_Forwards.ReleaseForward(m_pShouldFloodBlock);
+	g_Forwards.ReleaseForward(m_pDidFloodBlock);
 }
 
 #if defined ORANGEBOX_BUILD
@@ -167,6 +187,7 @@ void ChatTriggers::OnSayCommand_Pre()
 #endif
 	int client = g_ConCmds.GetCommandClient();
 	m_bIsChatTrigger = false;
+	m_bWasFloodedMessage = false;
 
 	/* The server console cannot do this */
 	if (client == 0)
@@ -181,6 +202,35 @@ void ChatTriggers::OnSayCommand_Pre()
 		RETURN_META(MRES_IGNORED);
 	}
 
+	/* Check if we need to block this message from being sent */
+	if (ClientIsFlooding(client))
+	{
+		char buffer[128];
+
+		/* :TODO: log an error? */
+		if (g_Translator.CoreTransEx(g_pFloodPhrases, 
+			client, 
+			buffer, 
+			sizeof(buffer),
+			"Flooding the server",
+			NULL,
+			NULL)
+			!= Trans_Okay)
+		{
+			UTIL_Format(buffer, sizeof(buffer), "You are flooding the server!");
+		}
+
+		/* :TODO: we should probably kick people who spam too much. */
+
+		char fullbuffer[192];
+		UTIL_Format(fullbuffer, sizeof(fullbuffer), "[SM] %s", buffer);
+		g_HL2.TextMsg(client, HUD_PRINTTALK, fullbuffer);
+
+		m_bWasFloodedMessage = true;
+
+		RETURN_META(MRES_SUPERCEDE);
+	}
+
 	/* Handle quoted string sets */
 	bool is_quoted = false;
 	if (args[0] == '"')
@@ -197,7 +247,9 @@ void ChatTriggers::OnSayCommand_Pre()
 	{
 		is_trigger = true;
 		args = &args[m_PubTriggerSize];
-	} else if (m_PrivTriggerSize && strncmp(args, m_PrivTrigger, m_PrivTriggerSize) == 0) {
+	} 
+	else if (m_PrivTriggerSize && strncmp(args, m_PrivTrigger, m_PrivTriggerSize) == 0) 
+	{
 		is_trigger = true;
 		is_silent = true;
 		args = &args[m_PrivTriggerSize];
@@ -250,6 +302,7 @@ void ChatTriggers::OnSayCommand_Post()
 #endif
 {
 	m_bIsChatTrigger = false;
+	m_bWasFloodedMessage = false;
 	if (m_bWillProcessInPost)
 	{
 		/* Reset this for re-entrancy */
@@ -355,3 +408,35 @@ bool ChatTriggers::IsChatTrigger()
 {
 	return m_bIsChatTrigger;
 }
+
+bool ChatTriggers::ClientIsFlooding(int client)
+{
+	bool is_flooding = false;
+
+	if (m_pShouldFloodBlock->GetFunctionCount() != 0)
+	{
+		cell_t res = 0;
+
+		m_pShouldFloodBlock->PushCell(client);
+		m_pShouldFloodBlock->Execute(&res);
+
+		if (res != 0)
+		{
+			is_flooding = true;
+		}
+	}
+
+	if (m_pDidFloodBlock->GetFunctionCount() != 0)
+	{
+		m_pDidFloodBlock->PushCell(client);
+		m_pDidFloodBlock->PushCell(is_flooding ? 1 : 0);
+		m_pDidFloodBlock->Execute(NULL);
+	}
+
+	return is_flooding;
+}
+
+bool ChatTriggers::WasFloodedMessage()
+{
+	return m_bWasFloodedMessage;
+}
diff --git a/core/ChatTriggers.h b/core/ChatTriggers.h
index c4adbb4a..0da7e549 100644
--- a/core/ChatTriggers.h
+++ b/core/ChatTriggers.h
@@ -36,6 +36,7 @@
 #include "sourcemm_api.h"
 #include <IGameHelpers.h>
 #include <compat_wrappers.h>
+#include <IForwardSys.h>
 
 class ChatTriggers : public SMGlobalClass
 {
@@ -43,6 +44,8 @@ public:
 	ChatTriggers();
 	~ChatTriggers();
 public: //SMGlobalClass
+	void OnSourceModAllInitialized();
+	void OnSourceModAllInitialized_Post();
 	void OnSourceModGameInitialized();
 	void OnSourceModShutdown();
 	ConfigResult OnSourceModConfigChanged(const char *key, 
@@ -62,8 +65,10 @@ public:
 	unsigned int GetReplyTo();
 	unsigned int SetReplyTo(unsigned int reply);
 	bool IsChatTrigger();
+	bool WasFloodedMessage();
 private:
 	bool PreProcessTrigger(edict_t *pEdict, const char *args, bool is_quoted);
+	bool ClientIsFlooding(int client);
 private:
 	ConCommand *m_pSayCmd;
 	ConCommand *m_pSayTeamCmd;
@@ -74,8 +79,11 @@ private:
 	bool m_bWillProcessInPost;
 	bool m_bTriggerWasSilent;
 	bool m_bIsChatTrigger;
+	bool m_bWasFloodedMessage;
 	unsigned int m_ReplyTo;
 	char m_ToExecute[300];
+	IForward *m_pShouldFloodBlock;
+	IForward *m_pDidFloodBlock;
 };
 
 extern ChatTriggers g_ChatTriggers;
diff --git a/core/ConCmdManager.cpp b/core/ConCmdManager.cpp
index 8e27b477..9c7c5d92 100644
--- a/core/ConCmdManager.cpp
+++ b/core/ConCmdManager.cpp
@@ -299,6 +299,16 @@ void ConCmdManager::InternalDispatch(const CCommand &command)
 		return;
 	}
 
+	/* This is a hack to prevent say triggers from firing on messages that were 
+	 * blocked because of flooding.  We won't remove this, but the hack will get 
+	 * "nicer" when we expose explicit say hooks.
+	 */
+	if (META_RESULT_STATUS == MRES_SUPERCEDE 
+		&& g_ChatTriggers.WasFloodedMessage())
+	{
+		return;
+	}
+
 	cell_t result = Pl_Continue;
 	int args = command.ArgC() - 1;
 
@@ -456,7 +466,9 @@ bool ConCmdManager::CheckCommandAccess(int client, const char *cmd, FlagBits cmd
 				if (rule == Command_Allow)
 				{
 					return true;
-				} else if (rule == Command_Deny) {
+				}
+				else if (rule == Command_Deny)
+				{
 					return false;
 				}
 			}
@@ -486,18 +498,20 @@ bool ConCmdManager::CheckAccess(int client, const char *cmd, AdminCmdInfo *pAdmi
 	if (g_Translator.CoreTrans(client, buffer, sizeof(buffer), "No Access", NULL, NULL)
 		!= Trans_Okay)
 	{
-		snprintf(buffer, sizeof(buffer), "You do not have access to this command");
+		UTIL_Format(buffer, sizeof(buffer), "You do not have access to this command");
 	}
 
 	unsigned int replyto = g_ChatTriggers.GetReplyTo();
 	if (replyto == SM_REPLY_CONSOLE)
 	{
 		char fullbuffer[192];
-		snprintf(fullbuffer, sizeof(fullbuffer), "[SM] %s.\n", buffer);
+		UTIL_Format(fullbuffer, sizeof(fullbuffer), "[SM] %s.\n", buffer);
 		engine->ClientPrintf(pEdict, fullbuffer);
-	} else if (replyto == SM_REPLY_CHAT) {
+	}
+	else if (replyto == SM_REPLY_CHAT)
+	{
 		char fullbuffer[192];
-		snprintf(fullbuffer, sizeof(fullbuffer), "[SM] %s.", buffer);
+		UTIL_Format(fullbuffer, sizeof(fullbuffer), "[SM] %s.", buffer);
 		g_HL2.TextMsg(client, HUD_PRINTTALK, fullbuffer);
 	}
 	
diff --git a/core/Translator.cpp b/core/Translator.cpp
index 938ad8af..004d8903 100644
--- a/core/Translator.cpp
+++ b/core/Translator.cpp
@@ -949,25 +949,19 @@ size_t Translator::Translate(char *buffer, size_t maxlength, void **params, cons
 	return gnprintf(buffer, maxlength, pTrans->szPhrase, new_params);
 }
 
-TransError Translator::CoreTrans(int client, 
-								  char *buffer, 
-								  size_t maxlength, 
-								  const char *phrase, 
-								  void **params, 
-								  size_t *outlen)
+TransError Translator::CoreTransEx(CPhraseFile *pFile,
+								   int client, 
+								   char *buffer, 
+								   size_t maxlength, 
+								   const char *phrase, 
+								   void **params, 
+								   size_t *outlen)
 {
-	/* :TODO: do language stuff here */
-
-	if (!g_pCorePhrases)
-	{
-		return Trans_BadPhraseFile;
-	}
-
 	Translation trans;
 	TransError err;
-	
+
 	/* Using server lang temporarily until client lang stuff is implemented */
-	if ((err=g_pCorePhrases->GetTranslation(phrase, m_ServerLang, &trans)) != Trans_Okay)
+	if ((err = pFile->GetTranslation(phrase, m_ServerLang, &trans)) != Trans_Okay)
 	{
 		return err;
 	}
@@ -982,6 +976,21 @@ TransError Translator::CoreTrans(int client,
 	return Trans_Okay;
 }
 
+TransError Translator::CoreTrans(int client, 
+								  char *buffer, 
+								  size_t maxlength, 
+								  const char *phrase, 
+								  void **params, 
+								  size_t *outlen)
+{
+	if (!g_pCorePhrases)
+	{
+		return Trans_BadPhraseFile;
+	}
+
+	return CoreTransEx(g_pCorePhrases, client, buffer, maxlength, phrase, params, outlen);
+}
+
 unsigned int Translator::GetServerLanguage()
 {
 	return m_ServerLang;
diff --git a/core/Translator.h b/core/Translator.h
index 6ae3b13f..cd3f835d 100644
--- a/core/Translator.h
+++ b/core/Translator.h
@@ -140,6 +140,13 @@ public:
 	bool GetLanguageByName(const char *name, unsigned int *index);
 	size_t Translate(char *buffer, size_t maxlength, void **params, const Translation *pTrans);
 	CPhraseFile *GetFileByIndex(unsigned int index);
+	TransError CoreTransEx(CPhraseFile *pFile,
+		int client, 
+		char *buffer, 
+		size_t maxlength, 
+		const char *phrase, 
+		void **params, 
+		size_t *outlen=NULL);
 	TransError CoreTrans(int client, 
 						 char *buffer, 
 						 size_t maxlength, 
diff --git a/plugins/antiflood.sp b/plugins/antiflood.sp
index b74d71c4..c965745a 100644
--- a/plugins/antiflood.sp
+++ b/plugins/antiflood.sp
@@ -51,10 +51,6 @@ new Handle:sm_flood_time;								/* Handle to sm_flood_time convar */
 
 public OnPluginStart()
 {
-	LoadTranslations("antiflood.phrases");
-	
-	RegConsoleCmd("say", CheckChatFlood);
-	RegConsoleCmd("say_team", CheckChatFlood);
 	sm_flood_time = CreateConVar("sm_flood_time", "0.75", "Amount of time allowed between chat messages");
 }
 
@@ -64,41 +60,63 @@ public OnClientPutInServer(client)
 	g_FloodTokens[client] = 0;
 }
 
-public Action:CheckChatFlood(client, args)
+new Float:max_chat;
+
+public bool:OnClientFloodCheck(client)
 {
-	/* Chat from server console shouldn't be checked for flooding */
-	if (client == 0)
+	max_chat = GetConVarFloat(sm_flood_time);
+	
+	if (max_chat <= 0.0 
+		|| (GetUserFlagBits(client) & ADMFLAG_ROOT) == ADMFLAG_ROOT)
 	{
-		return Plugin_Continue;
+		return false;
 	}
 	
-	new Float:maxChat = GetConVarFloat(sm_flood_time);
+	PrintToServer("OCFC: %f %f %d", g_LastTime[client], GetGameTime(), g_FloodTokens[client]);
 	
-	if (maxChat > 0.0)
+	if (g_LastTime[client] > GetGameTime())
 	{
-		new Float:curTime = GetGameTime();
-		
-		if (g_LastTime[client] > curTime)
+		/* If player has 3 or more flood tokens, block their message */
+		if (g_FloodTokens[client] >= 3)
 		{
-			/* If player has 3 or more flood tokens, block their message */
-			if (g_FloodTokens[client] >= 3)
-			{
-				PrintToChat(client, "[SM] %t", "Flooding the server");
-				g_LastTime[client] = curTime + maxChat + 3.0;
-				
-				return Plugin_Stop;	
-			}
-			
-			/* Add one flood token when player goes over chat time limit */
-			g_FloodTokens[client]++;
-		} else if (g_FloodTokens[client]) {
-			/* Remove one flood token when player chats within time limit (slow decay) */
-			g_FloodTokens[client]--;
+			return true;
 		}
-		
-		/* Store last time of chat usage */
-		g_LastTime[client] = curTime + maxChat;
 	}
 	
-	return Plugin_Continue;
+	return false;
+}
+
+public OnClientFloodResult(client, bool:blocked)
+{
+	if (max_chat <= 0.0 
+		|| (GetUserFlagBits(client) & ADMFLAG_ROOT) == ADMFLAG_ROOT)
+	{
+		return;
+	}
+	
+	new Float:curTime = GetGameTime();
+	new Float:newTime = curTime + max_chat;
+	
+	PrintToServer("OCFR: %f, %f", g_LastTime[client], GetGameTime());
+	
+	if (g_LastTime[client] > curTime)
+	{
+		/* If the last message was blocked, update their time limit */
+		if (blocked)
+		{
+			newTime += 3.0;
+		}
+		/* Add one flood token when player goes over chat time limit */
+		else if (g_FloodTokens[client] < 3)
+		{
+			g_FloodTokens[client]++;
+		}
+	}
+	else if (g_FloodTokens[client] > 0)
+	{
+		/* Remove one flood token when player chats within time limit (slow decay) */
+		g_FloodTokens[client]--;
+	}
+	
+	g_LastTime[client] = newTime;
 }
diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc
index dea00ddb..9fdd0985 100644
--- a/plugins/include/sourcemod.inc
+++ b/plugins/include/sourcemod.inc
@@ -505,6 +505,32 @@ native Handle:ReadMapList(Handle:array=INVALID_HANDLE,
  */
 native SetMapListCompatBind(const String:name[], const String:file[]);
 
+/**
+ * Called when a client has sent chat text.  This must return either true or 
+ * false to indicate that a client is or is not spamming the server.
+ *
+ * The return value is a hint only.  Core or another plugin may decide 
+ * otherwise.
+ *
+ * @param client		Client index.  The server (0) will never be passed.
+ * @return				True if client is spamming the server, false otherwise.
+ */
+forward bool:OnClientFloodCheck(client);
+
+/**
+ * Called after a client's flood check has been computed.  This can be used 
+ * by antiflood algorithms to decay/increase flooding weights.
+ *
+ * Since the result from "OnClientFloodCheck" isn't guaranteed to be the 
+ * final result, it is generally a good idea to use this to play with other 
+ * algorithms nicely.
+ *
+ * @param client		Client index.  The server (0) will never be passed.
+ * @param blocked		True if client flooded last "say", false otherwise.
+ * @noreturn
+ */
+forward OnClientFloodResult(client, bool:blocked);
+
 #include <helpers>
 #include <entity>
 #include <entity_prop_stocks>

From 100c3ae389ed224bb7375788aa05f76e0cbb73e3 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 12 Mar 2008 04:06:32 +0000
Subject: [PATCH 241/263] implemented amb1514 - SM_PARAM_STRING_BINARY (bumped
 ISourceMod for this)

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401932
---
 core/vm/sp_vm_function.cpp    | 36 +++++++++++++++++++++++++++++------
 plugins/include/functions.inc |  4 ++++
 public/ISourceMod.h           |  2 +-
 public/sourcepawn/sp_vm_api.h |  8 +++++++-
 4 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/core/vm/sp_vm_function.cpp b/core/vm/sp_vm_function.cpp
index 30615034..4a008120 100644
--- a/core/vm/sp_vm_function.cpp
+++ b/core/vm/sp_vm_function.cpp
@@ -200,10 +200,12 @@ void CFunction::Cancel()
 int CFunction::Execute(cell_t *result)
 {
 	int err = SP_ERROR_NONE;
+
 	if (!IsRunnable())
 	{
 		m_errorstate = SP_ERROR_NOT_RUNNABLE;
 	}
+
 	if (m_errorstate != SP_ERROR_NONE)
 	{
 		err = m_errorstate;
@@ -245,7 +247,9 @@ int CFunction::Execute(cell_t *result)
 				{
 					memcpy(temp_info[i].phys_addr, temp_info[i].orig_addr, sizeof(cell_t) * temp_info[i].size);
 				}
-			} else {
+			}
+			else
+			{
 				/* Calculate cells required for the string */
 				size_t cells = (temp_info[i].size + sizeof(cell_t) - 1) / sizeof(cell_t);
 
@@ -260,6 +264,7 @@ int CFunction::Execute(cell_t *result)
 				/* Copy original string if necessary */
 				if ((temp_info[i].str.sz_flags & SM_PARAM_STRING_COPY) && (temp_info[i].orig_addr != NULL))
 				{
+					/* Cut off UTF-8 properly */
 					if (temp_info[i].str.sz_flags & SM_PARAM_STRING_UTF8)
 					{
 						if ((err=m_pContext->StringToLocalUTF8(temp_info[i].local_addr, 
@@ -270,7 +275,15 @@ int CFunction::Execute(cell_t *result)
 						{
 							break;
 						}
-					} else {
+					}
+					/* Copy a binary blob */
+					else if (temp_info[i].str.sz_flags & SM_PARAM_STRING_BINARY)
+					{
+						memmove(temp_info[i].phys_addr, temp_info[i].orig_addr, temp_info[i].size);
+					}
+					/* Copy ASCII characters */
+					else
+					{
 						if ((err=m_pContext->StringToLocal(temp_info[i].local_addr,
 															temp_info[i].size,
 															(const char *)temp_info[i].orig_addr))
@@ -283,7 +296,9 @@ int CFunction::Execute(cell_t *result)
 			} /* End array/string calculation */
 			/* Update the pushed parameter with the byref local address */
 			temp_params[i] = temp_info[i].local_addr;
-		} else {
+		}
+		else
+		{
 			/* Just copy the value normally */
 			temp_params[i] = m_params[i];
 		}
@@ -296,7 +311,9 @@ int CFunction::Execute(cell_t *result)
 		{
 			docopies = false;
 		}
-	} else {
+	}
+	else
+	{
 		docopies = false;
 	}
 
@@ -307,6 +324,7 @@ int CFunction::Execute(cell_t *result)
 		{
 			continue;
 		}
+
 		if (docopies && (temp_info[i].flags & SM_PARAM_COPYBACK))
 		{
 			if (temp_info[i].orig_addr)
@@ -314,11 +332,16 @@ int CFunction::Execute(cell_t *result)
 				if (temp_info[i].str.is_sz)
 				{
 					memcpy(temp_info[i].orig_addr, temp_info[i].phys_addr, temp_info[i].size);
-				} else {
+				
+				}
+				else
+				{
 					if (temp_info[i].size == 1)
 					{
 						*temp_info[i].orig_addr = *(temp_info[i].phys_addr);
-					} else {
+					}
+					else
+					{
 						memcpy(temp_info[i].orig_addr, 
 								temp_info[i].phys_addr, 
 								temp_info[i].size * sizeof(cell_t));
@@ -326,6 +349,7 @@ int CFunction::Execute(cell_t *result)
 				}
 			}
 		}
+
 		if ((err=m_pContext->HeapPop(temp_info[i].local_addr)) != SP_ERROR_NONE)
 		{
 			return err;
diff --git a/plugins/include/functions.inc b/plugins/include/functions.inc
index bef2f22c..8cd69bf4 100644
--- a/plugins/include/functions.inc
+++ b/plugins/include/functions.inc
@@ -61,9 +61,12 @@ enum ExecType
 /**
  * @section Flags that are used with Call_PushArrayEx() and Call_PushStringEx()
  */
+ 
 #define SM_PARAM_COPYBACK		(1<<0)		/**< Copy an array/reference back after call */
+
 #define SM_PARAM_STRING_UTF8	(1<<0)		/**< String should be UTF-8 handled */
 #define SM_PARAM_STRING_COPY	(1<<1)		/**< String should be copied into the plugin */
+#define SM_PARAM_STRING_BINARY	(1<<2)		/**< Treat the string as a binary string */
 
 /**
  * @endsection
@@ -311,6 +314,7 @@ native Call_PushString(const String:value[]);
  * @param length			Length of string buffer.
  * @param szflags			Flags determining how string should be handled.
  *							See SP_PARAM_STRING_* constants for details.
+ *							The default (0) is to push ASCII.
  * @param cpflags			Whether or not changes should be copied back to the input array.
  *							See SP_PARAM_* constants for details.		
  * @noreturn
diff --git a/public/ISourceMod.h b/public/ISourceMod.h
index 66b21090..06f1650b 100644
--- a/public/ISourceMod.h
+++ b/public/ISourceMod.h
@@ -43,7 +43,7 @@
 #include <time.h>
 
 #define SMINTERFACE_SOURCEMOD_NAME		"ISourceMod"
-#define SMINTERFACE_SOURCEMOD_VERSION	6
+#define SMINTERFACE_SOURCEMOD_VERSION	7
 
 /**
 * @brief Forward declaration of the KeyValues class.
diff --git a/public/sourcepawn/sp_vm_api.h b/public/sourcepawn/sp_vm_api.h
index b0f4b917..100dcaaa 100644
--- a/public/sourcepawn/sp_vm_api.h
+++ b/public/sourcepawn/sp_vm_api.h
@@ -61,9 +61,13 @@ namespace SourcePawn
 {
 	class IVirtualMachine;
 
+	/* Parameter flags */
 	#define SM_PARAM_COPYBACK		(1<<0)		/**< Copy an array/reference back after call */
+
+	/* String parameter flags (separate from parameter flags) */
 	#define SM_PARAM_STRING_UTF8	(1<<0)		/**< String should be UTF-8 handled */
 	#define SM_PARAM_STRING_COPY	(1<<1)		/**< String should be copied into the plugin */
+	#define SM_PARAM_STRING_BINARY	(1<<2)		/**< String should be handled as binary data */
 
 #if defined SOURCEMOD_BUILD
 	/**
@@ -151,11 +155,13 @@ namespace SourcePawn
 
 		/**
 		 * @brief Pushes a string or string buffer.
+		 * 
 		 * NOTE: On Execute, the pointer passed will be modified if copy-back is enabled.
 		 *
 		 * @param buffer	Pointer to string buffer.
 		 * @param length	Length of buffer.
-		 * @param sz_flags	String flags.
+		 * @param sz_flags	String flags.  In copy mode, the string will be copied 
+		 *					according to the handling (ascii, utf-8, binary, etc).
 		 * @param cp_flags	Copy-back flags.
 		 * @return			Error code, if any.
 		 */

From 39885cd9e714763b448183bfbd5e04895d23aa79 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 12 Mar 2008 04:51:41 +0000
Subject: [PATCH 242/263] fixed crash bug in new antiflood code

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401933
---
 core/ConCmdManager.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/core/ConCmdManager.cpp b/core/ConCmdManager.cpp
index 9c7c5d92..ec112f78 100644
--- a/core/ConCmdManager.cpp
+++ b/core/ConCmdManager.cpp
@@ -303,8 +303,7 @@ void ConCmdManager::InternalDispatch(const CCommand &command)
 	 * blocked because of flooding.  We won't remove this, but the hack will get 
 	 * "nicer" when we expose explicit say hooks.
 	 */
-	if (META_RESULT_STATUS == MRES_SUPERCEDE 
-		&& g_ChatTriggers.WasFloodedMessage())
+	if (g_ChatTriggers.WasFloodedMessage())
 	{
 		return;
 	}

From 94da06c69fbae22e101f8aa3fec720aac95f3dfa Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 12 Mar 2008 05:21:56 +0000
Subject: [PATCH 243/263] addressed amb1498 - GetSoundDuration() is broken on
 valve's end

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401934
---
 plugins/include/sdktools_sound.inc | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/plugins/include/sdktools_sound.inc b/plugins/include/sdktools_sound.inc
index c60c19a6..aa51cfa2 100644
--- a/plugins/include/sdktools_sound.inc
+++ b/plugins/include/sdktools_sound.inc
@@ -130,11 +130,13 @@ enum
 native PrefetchSound(const String:nane[]);
 
 /**
- * Gets a sound's duration (does not work for mp3s).
+ * This function is not known to work, and may crash.  You should 
+ * not use it.  It is provided for backwards compatibility only.
  *
  * @param name		Sound file name relative to the "sounds" folder.
  * @return			Duration in seconds.
  */
+#pragma deprecated Does not work, may crash.
 native Float:GetSoundDuration(const String:name[]);
 
 /**

From f9eed97d66be8adb48ecd3c15381267f01623ca3 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 12 Mar 2008 06:08:56 +0000
Subject: [PATCH 244/263] removed unused extensions/games and
 extensions/auto.2.ep1 folders

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401935
---
 tools/builder/PkgCore.cs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/builder/PkgCore.cs b/tools/builder/PkgCore.cs
index 0067e441..e0d3a9c3 100644
--- a/tools/builder/PkgCore.cs
+++ b/tools/builder/PkgCore.cs
@@ -56,7 +56,7 @@ namespace builder
 			folders.Add("addons/sourcemod/configs/sql-init-scripts");
 			folders.Add("addons/sourcemod/configs/sql-init-scripts/mysql");
 			folders.Add("addons/sourcemod/configs/sql-init-scripts/sqlite");
-			folders.Add("addons/sourcemod/extensions/games");
+			//folders.Add("addons/sourcemod/extensions/games");
 			folders.Add("addons/sourcemod/scripting/basecommands");
 			folders.Add("addons/sourcemod/scripting/basecomm");
 			folders.Add("addons/sourcemod/scripting/funvotes");
@@ -64,7 +64,7 @@ namespace builder
 			folders.Add("addons/sourcemod/scripting/basebans");
 			folders.Add("addons/sourcemod/scripting/funcommands");
 			folders.Add("addons/sourcemod/extensions/auto.1.ep1");
-			folders.Add("addons/sourcemod/extensions/auto.2.ep1");
+			//folders.Add("addons/sourcemod/extensions/auto.2.ep1");
 			folders.Add("addons/sourcemod/extensions/auto.2.ep2");
 			folders.Add("addons/sourcemod/scripting/playercommands");
 			folders.Add("addons/metamod");

From 44eb5a9cf44ac46256381b871a44a0016b45cfa3 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Fri, 14 Mar 2008 02:48:43 +0000
Subject: [PATCH 245/263] fixed tTERM overlapping with tUNDEF (thanks sawce)

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401938
---
 sourcepawn/compiler/sc.h | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/sourcepawn/compiler/sc.h b/sourcepawn/compiler/sc.h
index ea3ad048..b6a59971 100644
--- a/sourcepawn/compiler/sc.h
+++ b/sourcepawn/compiler/sc.h
@@ -373,16 +373,16 @@ typedef struct s_stringpair {
 #define tpTRYINCLUDE 332
 #define tpUNDEF  333
 /* semicolon is a special case, because it can be optional */
-#define tTERM    333    /* semicolon or newline */
-#define tENDEXPR 334    /* forced end of expression */
+#define tTERM    334    /* semicolon or newline */
+#define tENDEXPR 335    /* forced end of expression */
 /* other recognized tokens */
-#define tNUMBER  335    /* integer number */
-#define tRATIONAL 336   /* rational number */
-#define tSYMBOL  337
-#define tLABEL   338
-#define tSTRING  339
-#define tEXPR    340 /* for assigment to "lastst" only (see SC1.C) */
-#define tENDLESS 341 /* endless loop, for assigment to "lastst" only */
+#define tNUMBER  336    /* integer number */
+#define tRATIONAL 337   /* rational number */
+#define tSYMBOL  338
+#define tLABEL   339
+#define tSTRING  340
+#define tEXPR    341 /* for assigment to "lastst" only (see SC1.C) */
+#define tENDLESS 342 /* endless loop, for assigment to "lastst" only */
 
 /* (reversed) evaluation of staging buffer */
 #define sSTARTREORDER 0x01

From 76f1c1040900cc26e0ed4d7ce30321f56ecf61b4 Mon Sep 17 00:00:00 2001
From: Matt Woodrow <pred@alliedmods.net>
Date: Fri, 14 Mar 2008 06:11:01 +0000
Subject: [PATCH 246/263] Updated sample_ext project files to support building
 for both engines.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401939
---
 public/sample_ext/msvc8/sdk.sln    |  20 ++--
 public/sample_ext/msvc8/sdk.vcproj | 169 ++++++++++++++++++++++++++++-
 2 files changed, 179 insertions(+), 10 deletions(-)

diff --git a/public/sample_ext/msvc8/sdk.sln b/public/sample_ext/msvc8/sdk.sln
index a7b266be..073a4358 100644
--- a/public/sample_ext/msvc8/sdk.sln
+++ b/public/sample_ext/msvc8/sdk.sln
@@ -1,18 +1,24 @@
 
 Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
+# Visual C++ Express 2005
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdk", "sdk.vcproj", "{B3E797CF-4E77-4C9D-B8A8-7589B6902206}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Release|Win32 = Release|Win32
+		Debug - Episode 1|Win32 = Debug - Episode 1|Win32
+		Debug - Orange Box|Win32 = Debug - Orange Box|Win32
+		Release - Episode 1|Win32 = Release - Episode 1|Win32
+		Release - Orange Box|Win32 = Release - Orange Box|Win32
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug|Win32.Build.0 = Debug|Win32
-		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release|Win32.ActiveCfg = Release|Win32
-		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release|Win32.Build.0 = Release|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Episode 1|Win32.ActiveCfg = Debug|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Episode 1|Win32.Build.0 = Debug|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Episode 1|Win32.ActiveCfg = Release|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Episode 1|Win32.Build.0 = Release|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Orange Box|Win32.Build.0 = Release - Orange Box|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/public/sample_ext/msvc8/sdk.vcproj b/public/sample_ext/msvc8/sdk.vcproj
index cc1c4ac4..c90623c8 100644
--- a/public/sample_ext/msvc8/sdk.vcproj
+++ b/public/sample_ext/msvc8/sdk.vcproj
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="Windows-1252"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
-	Version="8,00"
+	Version="8.00"
 	Name="sdk"
 	ProjectGUID="{B3E797CF-4E77-4C9D-B8A8-7589B6902206}"
 	RootNamespace="sdk"
@@ -40,7 +40,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn"
+				AdditionalIncludeDirectories="..;..\sdk;;..\systems;..\..\;..\..\sourcepawn;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\mathlib&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM142)&quot;;&quot;$(SOURCEMM142)\sourcemm&quot;;&quot;$(SOURCEMM142)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -63,6 +63,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sample.ext.dll"
 				LinkIncremental="2"
 				GenerateDebugInformation="true"
@@ -120,7 +121,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn"
+				AdditionalIncludeDirectories="..;..\sdk;;..\systems;..\..\;..\..\sourcepawn;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\mathlib&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM142)&quot;;&quot;$(SOURCEMM142)\sourcemm&quot;;&quot;$(SOURCEMM142)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"
@@ -141,6 +142,168 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
+				AdditionalDependencies="&quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
+				OutputFile="$(OutDir)\sample.ext.dll"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug - Orange Box|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\;..\sdk;..\systems;..\..\;..\..\sourcepawn;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\public\mathlib&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;ORANGEBOX_BUILD"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="&quot;$(HL2SDKOB)\lib\public\tier0.lib&quot; &quot;$(HL2SDKOB)\lib\public\tier1.lib&quot; &quot;$(HL2SDKOB)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDKOB)\lib\public\mathlib.lib&quot;"
+				OutputFile="$(OutDir)\sample.ext.dll"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release - Orange Box|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..\;..\sdk;..\systems;..\..\;..\..\sourcepawn;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\public\mathlib&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;ORANGEBOX_BUILD"
+				RuntimeLibrary="0"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="&quot;$(HL2SDKOB)\lib\public\tier0.lib&quot; &quot;$(HL2SDKOB)\lib\public\tier1.lib&quot; &quot;$(HL2SDKOB)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDKOB)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\sample.ext.dll"
 				LinkIncremental="1"
 				GenerateDebugInformation="true"

From 2583e7e69eb1b0cb244070008facbd46b6370be2 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 16 Mar 2008 22:32:03 +0000
Subject: [PATCH 247/263] removed debug output fixed an antiflood bug posted on
 the forums

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401940
---
 core/ChatTriggers.cpp | 13 +++++++++++--
 plugins/antiflood.sp  |  4 ----
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/core/ChatTriggers.cpp b/core/ChatTriggers.cpp
index c0b00aae..cf6baa36 100644
--- a/core/ChatTriggers.cpp
+++ b/core/ChatTriggers.cpp
@@ -185,12 +185,21 @@ void ChatTriggers::OnSayCommand_Pre()
 {
 	CCommand command;
 #endif
-	int client = g_ConCmds.GetCommandClient();
+	int client;
+	CPlayer *pPlayer;
+	
+	client = g_ConCmds.GetCommandClient();
 	m_bIsChatTrigger = false;
 	m_bWasFloodedMessage = false;
 
 	/* The server console cannot do this */
-	if (client == 0)
+	if (client == 0 || (pPlayer = g_Players.GetPlayerByIndex(client)) == NULL)
+	{
+		RETURN_META(MRES_IGNORED);
+	}
+
+	/* We guarantee the client is connected */
+	if (!pPlayer->IsConnected())
 	{
 		RETURN_META(MRES_IGNORED);
 	}
diff --git a/plugins/antiflood.sp b/plugins/antiflood.sp
index c965745a..ae39c1e6 100644
--- a/plugins/antiflood.sp
+++ b/plugins/antiflood.sp
@@ -72,8 +72,6 @@ public bool:OnClientFloodCheck(client)
 		return false;
 	}
 	
-	PrintToServer("OCFC: %f %f %d", g_LastTime[client], GetGameTime(), g_FloodTokens[client]);
-	
 	if (g_LastTime[client] > GetGameTime())
 	{
 		/* If player has 3 or more flood tokens, block their message */
@@ -97,8 +95,6 @@ public OnClientFloodResult(client, bool:blocked)
 	new Float:curTime = GetGameTime();
 	new Float:newTime = curTime + max_chat;
 	
-	PrintToServer("OCFR: %f, %f", g_LastTime[client], GetGameTime());
-	
 	if (g_LastTime[client] > curTime)
 	{
 		/* If the last message was blocked, update their time limit */

From 3788c61cb9b3cd6758b19254c2e0fd64365c6254 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 16 Mar 2008 22:54:06 +0000
Subject: [PATCH 248/263] removed deprecated natives from sdktools

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401941
---
 extensions/sdktools/vnatives.cpp       |  3 ---
 plugins/include/sdktools_functions.inc | 27 --------------------------
 2 files changed, 30 deletions(-)

diff --git a/extensions/sdktools/vnatives.cpp b/extensions/sdktools/vnatives.cpp
index 6416caea..d905fadd 100644
--- a/extensions/sdktools/vnatives.cpp
+++ b/extensions/sdktools/vnatives.cpp
@@ -873,15 +873,12 @@ static cell_t GetServerNetStats(IPluginContext *pContext, const cell_t *params)
 
 sp_nativeinfo_t g_Natives[] = 
 {
-	{"ExtinguishPlayer",		ExtinguishEntity},
 	{"ExtinguishEntity",		ExtinguishEntity},
 	{"ForcePlayerSuicide",		ForcePlayerSuicide},
 	{"GivePlayerItem",			GiveNamedItem},
 	{"GetPlayerWeaponSlot",		GetPlayerWeaponSlot},
-	{"IgnitePlayer",			IgniteEntity},
 	{"IgniteEntity",			IgniteEntity},
 	{"RemovePlayerItem",		RemovePlayerItem},
-	{"TeleportPlayer",			TeleportEntity},
 	{"TeleportEntity",			TeleportEntity},
 	{"SetClientViewEntity",		SetClientViewEntity},
 	{"SetLightStyle",			SetLightStyle},
diff --git a/plugins/include/sdktools_functions.inc b/plugins/include/sdktools_functions.inc
index e85f544a..1765878c 100644
--- a/plugins/include/sdktools_functions.inc
+++ b/plugins/include/sdktools_functions.inc
@@ -283,30 +283,3 @@ native bool:GetPlayerDecalFile(client, String:hex[], maxlength);
  * @noreturn
  */
 native GetServerNetStats(&Float:in, &Float:out);
-
-/**
- * @deprecated
- */
-#pragma deprecated Use IgniteEntity() instead
-stock IgnitePlayer(client, Float:time, bool:npc=false, Float:size=0.0, bool:level=false)
-{
-	return IgniteEntity(client, time, npc, size, level);
-}
-
-/**
- * @deprecated
- */
-#pragma deprecated Use ExtinguishEntity() instead
-stock ExtinguishClient(client)
-{
-	return ExtinguishEntity(client);
-}
-
-/**
- * @deprecated
- */
-#pragma deprecated Use TeleportEntity() instead
-stock TeleportPlayer(client, const Float:origin[3], const Float:angles[3], const Float:velocity[3])
-{
-	return TeleportEntity(client, origin, angles, velocity);
-}

From 074883512a8b56170c419d4fbe524a62d6939df8 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 16 Mar 2008 23:08:56 +0000
Subject: [PATCH 249/263] removed core bcompat shims where possible

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401942
---
 core/smn_float.cpp        |  1 -
 core/smn_keyvalues.cpp    |  2 --
 core/smn_player.cpp       |  1 -
 core/smn_string.cpp       |  3 ---
 plugins/include/float.inc | 11 -----------
 5 files changed, 18 deletions(-)

diff --git a/core/smn_float.cpp b/core/smn_float.cpp
index d1dbc906..7a0fa9d5 100644
--- a/core/smn_float.cpp
+++ b/core/smn_float.cpp
@@ -308,6 +308,5 @@ REGISTER_NATIVES(floatnatives)
 	{"ArcCosine",		sm_ArcCosine},
 	{"ArcSine",			sm_ArcSine},
 	{"ArcTangent2",		sm_ArcTangent2},
-	{"FloatRound",		sm_FloatRound},			/* Backwards compat shim */
 	{NULL,				NULL}
 };
diff --git a/core/smn_keyvalues.cpp b/core/smn_keyvalues.cpp
index c098f40d..183802c1 100644
--- a/core/smn_keyvalues.cpp
+++ b/core/smn_keyvalues.cpp
@@ -1123,9 +1123,7 @@ REGISTER_NATIVES(keyvaluenatives)
 	{"KvJumpToKey",				smn_KvJumpToKey},
 	{"KvJumpToKeySymbol",		smn_KvJumpToKeySymbol},
 	{"KvGotoNextKey",			smn_KvGotoNextKey},
-	{"KvJumpFirstSubKey",		smn_KvGotoFirstSubKey},		/* BACKWARDS COMPAT SHIM */
 	{"KvGotoFirstSubKey",		smn_KvGotoFirstSubKey},
-	{"KvJumpNextSubKey",		smn_KvJumpNextSubKey},		/* BACKWARDS COMPAT SHIM */
 	{"KvGoBack",				smn_KvGoBack},
 	{"KvRewind",				smn_KvRewind},
 	{"KvGetSectionName",		smn_KvGetSectionName},
diff --git a/core/smn_player.cpp b/core/smn_player.cpp
index 09c3f4e8..5f7d21a6 100644
--- a/core/smn_player.cpp
+++ b/core/smn_player.cpp
@@ -1347,7 +1347,6 @@ REGISTER_NATIVES(playernatives)
 	{"IsClientAuthorized",		sm_IsClientAuthorized},
 	{"IsClientConnected",		sm_IsClientConnected},
 	{"IsFakeClient",			sm_IsClientFakeClient},
-	{"IsPlayerInGame",			sm_IsClientInGame},			/* Backwards compat shim */
 	{"IsClientInGame",			sm_IsClientInGame},
 	{"IsClientObserver",		IsClientObserver},
 	{"RemoveUserFlags",			RemoveUserFlags},
diff --git a/core/smn_string.cpp b/core/smn_string.cpp
index 8202deee..dae6b19f 100644
--- a/core/smn_string.cpp
+++ b/core/smn_string.cpp
@@ -578,13 +578,10 @@ REGISTER_NATIVES(basicStrings)
 	{"ReplaceStringEx",		ReplaceStringEx},
 	{"SplitString",			SplitString},
 	{"strlen",				sm_strlen},
-	{"StrBreak",			BreakString},		/* Backwards compat shim */
 	{"StrContains",			sm_contain},
 	{"strcmp",				sm_strcmp},
-	{"StrCompare",			sm_strcmp},			/* Backwards compat shim */
 	{"strncmp",				sm_strncmp},
 	{"strcopy",				sm_strcopy},
-	{"StrCopy",				sm_strcopy},		/* Backwards compat shim */
 	{"StringToInt",			sm_strconvint},
 	{"StringToIntEx",		StringToIntEx},
 	{"StringToFloat",		sm_strtofloat},
diff --git a/plugins/include/float.inc b/plugins/include/float.inc
index fbe6cd59..280e22c1 100644
--- a/plugins/include/float.inc
+++ b/plugins/include/float.inc
@@ -240,17 +240,6 @@ stock RoundFloat(Float:value)
 	return RoundToNearest(value);
 }
 
-/**
- * Backwards compatibility stock.  Do not use.
- *
- * @deprecated
- */
-#pragma deprecated Use RoundToNearest() or RoundFloat() instead
-stock FloatRound(Float:value)
-{
-	return RoundToNearest(value);
-}
-
 /**
  * User defined operators.
  *

From 9581e2b854fb8476706127d1db768554f1cf245c Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Sun, 16 Mar 2008 23:16:34 +0000
Subject: [PATCH 250/263] more deprecation

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401943
---
 plugins/include/adt_array.inc          | 12 +---------
 plugins/include/entity_prop_stocks.inc | 12 ----------
 plugins/include/functions.inc          | 32 --------------------------
 plugins/include/usermessages.inc       | 11 ---------
 4 files changed, 1 insertion(+), 66 deletions(-)

diff --git a/plugins/include/adt_array.inc b/plugins/include/adt_array.inc
index 8af2ed8c..d92a8cf4 100644
--- a/plugins/include/adt_array.inc
+++ b/plugins/include/adt_array.inc
@@ -280,14 +280,4 @@ native FindStringInArray(Handle:array, const String:item[]);
  * @return				Array index, or -1 on failure
  * @error				Invalid Handle
  */
-native FindValueInArray(Handle:array, item); 
-
-/**
- * Backwards compatible stock - Use FindStringInArray()
- * @deprecated		Replaced by FindStringInArray()
- */
-#pragma deprecated Use FindStringInArray() instead
-stock bool:IsStringInArray(Handle:array, const String:item[])
-{
-	return (FindStringInArray(array, item) != -1);
-}
+native FindValueInArray(Handle:array, any:item); 
diff --git a/plugins/include/entity_prop_stocks.inc b/plugins/include/entity_prop_stocks.inc
index 4d4fbfbc..b4b5cd64 100644
--- a/plugins/include/entity_prop_stocks.inc
+++ b/plugins/include/entity_prop_stocks.inc
@@ -322,15 +322,3 @@ stock GetClientButtons(client)
 {
 	return GetEntProp(client, Prop_Data, "m_nButtons");
 }
-
-#pragma deprecated Case change, use MoveType version
-stock SetEntityMovetype(entity, any:mt)
-{
-	SetEntityMoveType(entity, MoveType:mt);
-}
-
-#pragma deprecated Case change, use MoveType version
-stock GetEntityMovetype(entity)
-{
-	return _:GetEntityMoveType(entity);
-}
diff --git a/plugins/include/functions.inc b/plugins/include/functions.inc
index 8cd69bf4..1a77f7f1 100644
--- a/plugins/include/functions.inc
+++ b/plugins/include/functions.inc
@@ -487,35 +487,3 @@ native FormatNativeString(out_param,
 						  &written=0,
 						  String:out_string[]="",
 						  const String:fmt_string[]="");
-
-/**
- * Backwards compatibility stock - use GetNativeCell or GetNativeCellRef
- *
- * @deprecated
- */
-#pragma deprecated Use GetNativeCell() or GetNativeCellRef() instead
-stock Float:GetNativeFloat(param, bool:byref)
-{
-	if (!byref)
-	{
-		return Float:GetNativeCell(param);
-	} else {
-		return Float:GetNativeCellRef(param);
-	}
-}
-
-/**
- * Backwards compatibility stock - use GetNativeCell or GetNativeCellRef
- *
- * @deprecated
- */
-#pragma deprecated Use GetNativeCell() or GetNativeCellRef() instead
-stock Handle:GetNativeHandle(param, bool:byref)
-{
-	if (!byref)
-	{
-		return Handle:GetNativeCell(param);
-	} else {
-		return Handle:GetNativeCellRef(param);
-	}
-}
diff --git a/plugins/include/usermessages.inc b/plugins/include/usermessages.inc
index 28f78318..79e0e229 100644
--- a/plugins/include/usermessages.inc
+++ b/plugins/include/usermessages.inc
@@ -50,17 +50,6 @@ enum UserMsg
 #define USERMSG_INITMSG			(1<<3)		/**< Message will be considered to be an initmsg */
 #define USERMSG_BLOCKHOOKS		(1<<7)		/**< Prevents the message from triggering SourceMod and Metamod hooks */
 
-#pragma deprecated Constant has no effect
-#define USERMSG_PASSTHRU		(1<<0)		/**< (DEPRECATED, NO EFFECT) */
-#pragma deprecated Constant has no effect
-#define USERMSG_PASSTHRU_ALL	(1<<1)		/**< (DEPRECATED, NO EFFECT) */
-#pragma deprecated Constant has no effect
-#define USERMSG_BLOCK_MM		(1<<4)		/**< (DEPRECATED, NO EFFECT) */
-#pragma deprecated Constant has no effect
-#define USERMSG_BLOCK_SM		(1<<5)		/**< (DEPRECATED, NO EFFECT) */
-#pragma deprecated Constant has no effect
-#define USERMSG_BLOCK_ALL		(1<<6)		/**< (DEPRECATED, NO EFFECT) */
-
 /**
  * @endsection
  */

From 2a7e1f5bc0f945338a24670a32e04f65c2755318 Mon Sep 17 00:00:00 2001
From: Borja Ferrer <faluco@alliedmods.net>
Date: Sun, 16 Mar 2008 23:36:28 +0000
Subject: [PATCH 251/263] updated to latest geoip database

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401944
---
 configs/geoip/GeoIP.dat | Bin 994672 -> 1104406 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/configs/geoip/GeoIP.dat b/configs/geoip/GeoIP.dat
index 0531b57c7053393b6e2b742ec585f4239268eb6a..e05bf098e71798f98f8c94ddf1f1446651f4812f 100644
GIT binary patch
literal 1104406
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%0A{pO<Kyczbbt7
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%0DpnIZCw@L3^^JZE}miOkO8d65@PMstkjT#=WA
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%0DTfcxt^3_0N8y4_!g|)WAYFxnO1vHUx
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%0ABfDeW}&HZu+tS-Z1WZE)U?X0N#<fB7nE8
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%0Aep8
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%0D^1F(O3erj?
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

literal 994672
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


From aebdfea1ff3797fbd85c5c0cfd42edf31ca62ec7 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 17 Mar 2008 00:07:58 +0000
Subject: [PATCH 252/263] fixed build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401945
---
 core/smn_float.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/core/smn_float.cpp b/core/smn_float.cpp
index 7a0fa9d5..0b15aca2 100644
--- a/core/smn_float.cpp
+++ b/core/smn_float.cpp
@@ -247,6 +247,7 @@ static cell_t sm_ArcTangent2(IPluginContext *pCtx, const cell_t *params)
 	return sp_ftoc(val1);
 }
 
+#if 0
 static cell_t sm_FloatRound(IPluginContext *pCtx, const cell_t *params)
 {
 	float val = sp_ctof(params[1]);
@@ -282,6 +283,7 @@ static cell_t sm_FloatRound(IPluginContext *pCtx, const cell_t *params)
 
 	return static_cast<int>(val);
 }
+#endif
 
 REGISTER_NATIVES(floatnatives)
 {

From 34204b20438ea277a73a9f887f963491744f5277 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 17 Mar 2008 00:11:01 +0000
Subject: [PATCH 253/263] actually fixed build

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401946
---
 core/smn_keyvalues.cpp | 27 ---------------------------
 1 file changed, 27 deletions(-)

diff --git a/core/smn_keyvalues.cpp b/core/smn_keyvalues.cpp
index 183802c1..45cfb93e 100644
--- a/core/smn_keyvalues.cpp
+++ b/core/smn_keyvalues.cpp
@@ -627,33 +627,6 @@ static cell_t smn_KvGotoNextKey(IPluginContext *pCtx, const cell_t *params)
 	return 1;	
 }
 
-static cell_t smn_KvJumpNextSubKey(IPluginContext *pCtx, const cell_t *params)
-{
-	Handle_t hndl = static_cast<Handle_t>(params[1]);
-	HandleError herr;
-	HandleSecurity sec;
-	KeyValueStack *pStk;
-
-	sec.pOwner = NULL;
-	sec.pIdentity = g_pCoreIdent;
-
-	if ((herr=g_HandleSys.ReadHandle(hndl, g_KeyValueType, &sec, (void **)&pStk))
-		!= HandleError_None)
-	{
-		return pCtx->ThrowNativeError("Invalid key value handle %x (error %d)", hndl, herr);
-	}
-
-	KeyValues *pSubKey = pStk->pCurRoot.front();
-	KeyValues *pNextKey = pSubKey->GetNextKey();
-	if (!pNextKey)
-	{
-		return 0;
-	}
-	pStk->pCurRoot.push(pNextKey);
-
-	return 1;	
-}
-
 static cell_t smn_KvGoBack(IPluginContext *pCtx, const cell_t *params)
 {
 	Handle_t hndl = static_cast<Handle_t>(params[1]);

From eda712cb33b973f4f943f2ff2d3cb6d51a3fabbe Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 17 Mar 2008 01:09:28 +0000
Subject: [PATCH 254/263] bumped versions

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401949
---
 core/sm_version.h                 |  4 +-
 extensions/bintools/svn_version.h |  4 +-
 extensions/cstrike/svn_version.h  |  6 +--
 extensions/geoip/svn_version.h    |  4 +-
 extensions/mysql/svn_version.h    |  4 +-
 extensions/sdktools/svn_version.h |  4 +-
 extensions/sqlite/svn_version.h   |  4 +-
 extensions/topmenus/svn_version.h | 84 +++++++++++++++----------------
 loader/svn_version.h              |  4 +-
 plugins/include/version.inc       | 84 +++++++++++++++----------------
 sourcepawn/compiler/svn_version.h |  4 +-
 sourcepawn/jit/x86/jit_version.h  |  4 +-
 12 files changed, 105 insertions(+), 105 deletions(-)

diff --git a/core/sm_version.h b/core/sm_version.h
index fc40f58b..58fdccc2 100644
--- a/core/sm_version.h
+++ b/core/sm_version.h
@@ -40,7 +40,7 @@
  * @file Contains SourceMod version information.
  */
 
-#define SVN_FULL_VERSION	"1.0.0.1336"
-#define SVN_FILE_VERSION	1,0,0,1336
+#define SVN_FULL_VERSION	"1.0.0.1946"
+#define SVN_FILE_VERSION	1,0,0,1946
 
 #endif //_INCLUDE_SOURCEMOD_VERSION_H_
diff --git a/extensions/bintools/svn_version.h b/extensions/bintools/svn_version.h
index 25b06621..5b19358a 100644
--- a/extensions/bintools/svn_version.h
+++ b/extensions/bintools/svn_version.h
@@ -36,7 +36,7 @@
 #ifndef _INCLUDE_BINTOOLS_VERSION_H_
 #define _INCLUDE_BINTOOLS_VERSION_H_
 
-#define SVN_FULL_VERSION	"1.0.0.1336"
-#define SVN_FILE_VERSION	1,0,0,1336
+#define SVN_FULL_VERSION	"1.0.0.1900"
+#define SVN_FILE_VERSION	1,0,0,1900
 
 #endif //_INCLUDE_BINTOOLS_VERSION_H_
diff --git a/extensions/cstrike/svn_version.h b/extensions/cstrike/svn_version.h
index 4f3dd9a8..d39c1aa0 100644
--- a/extensions/cstrike/svn_version.h
+++ b/extensions/cstrike/svn_version.h
@@ -26,7 +26,7 @@
  * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
  * or <http://www.sourcemod.net/license.php>.
  *
- * Version: $Id: svn_version.h 1336 2007-08-15 06:19:30Z damagedsoul $
+ * Version: $Id$
  */
 
 /**
@@ -36,7 +36,7 @@
 #ifndef _INCLUDE_SDKTOOLS_VERSION_H_
 #define _INCLUDE_SDKTOOLS_VERSION_H_
 
-#define SVN_FULL_VERSION	"1.0.0.1336"
-#define SVN_FILE_VERSION	1,0,0,1336
+#define SVN_FULL_VERSION	"1.0.0.1884"
+#define SVN_FILE_VERSION	1,0,0,1884
 
 #endif //_INCLUDE_SDKTOOLS_VERSION_H_
diff --git a/extensions/geoip/svn_version.h b/extensions/geoip/svn_version.h
index 76884401..be31e51c 100644
--- a/extensions/geoip/svn_version.h
+++ b/extensions/geoip/svn_version.h
@@ -36,7 +36,7 @@
 #ifndef _INCLUDE_GEOIP_VERSION_H_
 #define _INCLUDE_GEOIP_VERSION_H_
 
-#define SVN_FULL_VERSION	"1.0.0.1336"
-#define SVN_FILE_VERSION	1,0,0,1336
+#define SVN_FULL_VERSION	"1.0.0.1884"
+#define SVN_FILE_VERSION	1,0,0,1884
 
 #endif //_INCLUDE_GEOIP_VERSION_H_
diff --git a/extensions/mysql/svn_version.h b/extensions/mysql/svn_version.h
index 40cff5e0..9cb9b6ea 100644
--- a/extensions/mysql/svn_version.h
+++ b/extensions/mysql/svn_version.h
@@ -36,7 +36,7 @@
 #ifndef _INCLUDE_MYSQLEXT_VERSION_H_
 #define _INCLUDE_MYSQLEXT_VERSION_H_
 
-#define SVN_FULL_VERSION	"1.0.0.1336"
-#define SVN_FILE_VERSION	1,0,0,1336
+#define SVN_FULL_VERSION	"1.0.0.1918"
+#define SVN_FILE_VERSION	1,0,0,1918
 
 #endif //_INCLUDE_MYSQLEXT_VERSION_H_
diff --git a/extensions/sdktools/svn_version.h b/extensions/sdktools/svn_version.h
index 8873263e..2f1f44c0 100644
--- a/extensions/sdktools/svn_version.h
+++ b/extensions/sdktools/svn_version.h
@@ -36,7 +36,7 @@
 #ifndef _INCLUDE_SDKTOOLS_VERSION_H_
 #define _INCLUDE_SDKTOOLS_VERSION_H_
 
-#define SVN_FULL_VERSION	"1.0.0.1336"
-#define SVN_FILE_VERSION	1,0,0,1336
+#define SVN_FULL_VERSION	"1.0.0.1930"
+#define SVN_FILE_VERSION	1,0,0,1930
 
 #endif //_INCLUDE_SDKTOOLS_VERSION_H_
diff --git a/extensions/sqlite/svn_version.h b/extensions/sqlite/svn_version.h
index 9cf1b0df..dd2fefef 100644
--- a/extensions/sqlite/svn_version.h
+++ b/extensions/sqlite/svn_version.h
@@ -36,7 +36,7 @@
 #ifndef _INCLUDE_SQLITEEXT_VERSION_H_
 #define _INCLUDE_SQLITEEXT_VERSION_H_
 
-#define SVN_FULL_VERSION	"1.0.0.1336"
-#define SVN_FILE_VERSION	1,0,0,1336
+#define SVN_FULL_VERSION	"1.0.0.1918"
+#define SVN_FILE_VERSION	1,0,0,1918
 
 #endif //_INCLUDE_SQLITEEXT_VERSION_H_
diff --git a/extensions/topmenus/svn_version.h b/extensions/topmenus/svn_version.h
index ba4cb0bd..8b5468a4 100644
--- a/extensions/topmenus/svn_version.h
+++ b/extensions/topmenus/svn_version.h
@@ -1,42 +1,42 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation.  You must obey the GNU General Public License in
- * all respects for all other code used.  Additionally, AlliedModders LLC grants
- * this exception to all derivative works.  AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or <http://www.sourcemod.net/license.php>.
- *
- * Version: $Id$
- */
-
-/**
- * Autogenerated by build scripts
- */
-
-#ifndef _INCLUDE_TOPMENUS_VERSION_H_
-#define _INCLUDE_TOPMENUS_VERSION_H_
-
-#define SVN_FULL_VERSION	"1.0.0.1336"
-#define SVN_FILE_VERSION	1,0,0,1336
-
-#endif //_INCLUDE_TOPMENUS_VERSION_H_
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod SQLite Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+/**
+ * Autogenerated by build scripts
+ */
+
+#ifndef _INCLUDE_SQLITEEXT_VERSION_H_
+#define _INCLUDE_SQLITEEXT_VERSION_H_
+
+#define SVN_FULL_VERSION	"1.0.0.1884"
+#define SVN_FILE_VERSION	1,0,0,1884
+
+#endif //_INCLUDE_SQLITEEXT_VERSION_H_
diff --git a/loader/svn_version.h b/loader/svn_version.h
index fc40f58b..58fdccc2 100644
--- a/loader/svn_version.h
+++ b/loader/svn_version.h
@@ -40,7 +40,7 @@
  * @file Contains SourceMod version information.
  */
 
-#define SVN_FULL_VERSION	"1.0.0.1336"
-#define SVN_FILE_VERSION	1,0,0,1336
+#define SVN_FULL_VERSION	"1.0.0.1946"
+#define SVN_FILE_VERSION	1,0,0,1946
 
 #endif //_INCLUDE_SOURCEMOD_VERSION_H_
diff --git a/plugins/include/version.inc b/plugins/include/version.inc
index 88b48cef..9adbf8bc 100644
--- a/plugins/include/version.inc
+++ b/plugins/include/version.inc
@@ -1,42 +1,42 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
- * =============================================================================
- *
- * This file is part of the SourceMod/SourcePawn SDK.
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation.  You must obey the GNU General Public License in
- * all respects for all other code used.  Additionally, AlliedModders LLC grants
- * this exception to all derivative works.  AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or <http://www.sourcemod.net/license.php>.
- *
- * Version: $Id$
- */
- 
-#if defined _version_included
- #endinput
-#endif
-#define _version_included
-
-#define SOURCEMOD_V_MAJOR		1				/**< SourceMod Major version */
-#define SOURCEMOD_V_MINOR		0				/**< SourceMod Minor version */
-#define SOURCEMOD_V_RELEASE		0				/**< SourceMod Release version */
-
-#define SOURCEMOD_VERSION		"1.0.0.1336"	/**< SourceMod version string (major.minor.release.build) */
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This file is part of the SourceMod/SourcePawn SDK.
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+ 
+#if defined _version_included
+ #endinput
+#endif
+#define _version_included
+
+#define SOURCEMOD_V_MAJOR		1				/**< SourceMod Major version */
+#define SOURCEMOD_V_MINOR		0				/**< SourceMod Minor version */
+#define SOURCEMOD_V_RELEASE		0				/**< SourceMod Release version */
+
+#define SOURCEMOD_VERSION		"1.0.0.1946"	/**< SourceMod version string (major.minor.release.build) */
diff --git a/sourcepawn/compiler/svn_version.h b/sourcepawn/compiler/svn_version.h
index ac9f1a94..bd964324 100644
--- a/sourcepawn/compiler/svn_version.h
+++ b/sourcepawn/compiler/svn_version.h
@@ -19,7 +19,7 @@
  * @file Contains SourceMod version information.
  */
 
-#define SVN_FULL_VERSION	"1.0.0.800"
-#define SVN_FILE_VERSION	1,0,0,800
+#define SVN_FULL_VERSION	"1.0.0.1874"
+#define SVN_FILE_VERSION	1,0,0,1874
 
 #endif //_INCLUDE_SOURCEMOD_VERSION_H_
diff --git a/sourcepawn/jit/x86/jit_version.h b/sourcepawn/jit/x86/jit_version.h
index e221abba..525849a2 100644
--- a/sourcepawn/jit/x86/jit_version.h
+++ b/sourcepawn/jit/x86/jit_version.h
@@ -16,7 +16,7 @@
 #ifndef _INCLUDE_JIT_VERSION_H_
 #define _INCLUDE_JIT_VERSION_H_
 
-#define SVN_FULL_VERSION	"1.0.0.1336"
-#define SVN_FILE_VERSION	1,0,0,1336
+#define SVN_FULL_VERSION	"1.0.0.1919"
+#define SVN_FILE_VERSION	1,0,0,1919
 
 #endif //_INCLUDE_JIT_VERSION_H_

From 8ba6d5cbba47150dd30af387679100147167c21f Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Mon, 17 Mar 2008 15:30:39 +0000
Subject: [PATCH 255/263] bumped trunk version

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401953
---
 modules.versions | 128 +++++++++++++++++++++++------------------------
 1 file changed, 64 insertions(+), 64 deletions(-)

diff --git a/modules.versions b/modules.versions
index 79e549ab..84612773 100644
--- a/modules.versions
+++ b/modules.versions
@@ -1,64 +1,64 @@
-[PRODUCT]
-major = 1
-minor = 0
-revision = 0
-
-[core]
-folder = core
-in = sm_version.tpl
-out = sm_version.h
-
-[plugins]
-folder = plugins/include
-in = version.tpl
-out = version.inc
-
-[jitx86]
-folder = sourcepawn/jit/x86
-in = jit_version.tpl
-out = jit_version.h
-
-[geoip]
-folder = extensions/geoip
-in = svn_version.tpl
-out = svn_version.h
-
-[compiler]
-folder = sourcepawn/compiler
-in = svn_version.tpl
-out = svn_version.h
-
-[bintools]
-folder = extensions/bintools
-in = svn_version.tpl
-out = svn_version.h
-
-[sdktools]
-folder = extensions/sdktools
-in = svn_version.tpl
-out = svn_version.h
-
-[mysql]
-folder = extensions/mysql
-in = svn_version.tpl
-out = svn_version.h
-
-[sqlite]
-folder = extensions/sqlite
-in = svn_version.tpl
-out = svn_version.h
-
-[cstrike]
-folder = extensions/cstrike
-in = svn_version.tpl
-out = svn_version.h
-
-[loader]
-folder = loader
-in = svn_version.tpl
-out = svn_version.h
-
-[topmenus]
-folder = extensions/topmenus
-in = svn_version.tpl
-out = svn_version.h
+[PRODUCT]
+major = 1
+minor = 1
+revision = 0
+
+[core]
+folder = core
+in = sm_version.tpl
+out = sm_version.h
+
+[plugins]
+folder = plugins/include
+in = version.tpl
+out = version.inc
+
+[jitx86]
+folder = sourcepawn/jit/x86
+in = jit_version.tpl
+out = jit_version.h
+
+[geoip]
+folder = extensions/geoip
+in = svn_version.tpl
+out = svn_version.h
+
+[compiler]
+folder = sourcepawn/compiler
+in = svn_version.tpl
+out = svn_version.h
+
+[bintools]
+folder = extensions/bintools
+in = svn_version.tpl
+out = svn_version.h
+
+[sdktools]
+folder = extensions/sdktools
+in = svn_version.tpl
+out = svn_version.h
+
+[mysql]
+folder = extensions/mysql
+in = svn_version.tpl
+out = svn_version.h
+
+[sqlite]
+folder = extensions/sqlite
+in = svn_version.tpl
+out = svn_version.h
+
+[cstrike]
+folder = extensions/cstrike
+in = svn_version.tpl
+out = svn_version.h
+
+[loader]
+folder = loader
+in = svn_version.tpl
+out = svn_version.h
+
+[topmenus]
+folder = extensions/topmenus
+in = svn_version.tpl
+out = svn_version.h

From 83a1ebcf0fc7443402c83bd55cdb0829793c3265 Mon Sep 17 00:00:00 2001
From: Scott Ehlert <ds@alliedmods.net>
Date: Thu, 20 Mar 2008 19:52:30 +0000
Subject: [PATCH 256/263] Removed debug code?

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401954
---
 core/HalfLife2.cpp | 2 --
 1 file changed, 2 deletions(-)

diff --git a/core/HalfLife2.cpp b/core/HalfLife2.cpp
index 3e642283..39e2c9eb 100644
--- a/core/HalfLife2.cpp
+++ b/core/HalfLife2.cpp
@@ -114,8 +114,6 @@ void CHalfLife2::OnSourceModAllInitialized()
 	m_HinTextMsg = g_UserMsgs.GetMessageIndex("HintText");
 	m_VGUIMenu = g_UserMsgs.GetMessageIndex("VGUIMenu");
 	g_ShareSys.AddInterface(NULL, this);
-
-	FindInSendTable("CTFPlayer", "m_nDisguiseClass");
 }
 
 #if !defined METAMOD_PLAPI_VERSION

From 3bcd296d99f1da04ccb702598418e24748ab9037 Mon Sep 17 00:00:00 2001
From: Scott Ehlert <ds@alliedmods.net>
Date: Fri, 21 Mar 2008 04:26:53 +0000
Subject: [PATCH 257/263] Merged crash fix (amb1539) from 1.0.1 branch

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401958
---
 core/GameConfigs.cpp   |  2 +-
 core/HalfLife2.cpp     | 41 +++++++++++++++++++++++++++++++++++++++++
 core/HalfLife2.h       |  1 +
 core/smn_keyvalues.cpp |  5 ++++-
 4 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/core/GameConfigs.cpp b/core/GameConfigs.cpp
index 18ffaeb5..354f3d19 100644
--- a/core/GameConfigs.cpp
+++ b/core/GameConfigs.cpp
@@ -598,7 +598,7 @@ void GameConfigManager::OnSourceModStartup(bool late)
 	strncopy(g_GameDesc + 1, SERVER_CALL(GetGameDescription)(), sizeof(g_GameDesc) - 1);
 
 	KeyValues *pGameInfo = new KeyValues("GameInfo");
-	if (pGameInfo->LoadFromFile(basefilesystem, "gameinfo.txt"))
+	if (g_HL2.KVLoadFromFile(pGameInfo, basefilesystem, "gameinfo.txt"))
 	{
 		const char *str;
 		if ((str = pGameInfo->GetString("game", NULL)) != NULL)
diff --git a/core/HalfLife2.cpp b/core/HalfLife2.cpp
index 39e2c9eb..2a84f142 100644
--- a/core/HalfLife2.cpp
+++ b/core/HalfLife2.cpp
@@ -435,6 +435,47 @@ bool CHalfLife2::IsLANServer()
 	return (sv_lan->GetInt() != 0);
 }
 
+bool CHalfLife2::KVLoadFromFile(KeyValues *kv, IBaseFileSystem *filesystem, const char *resourceName, const char *pathID)
+{
+#if defined METAMOD_PLAPI_VERSION
+	if (g_SMAPI->GetSourceEngineBuild() == SOURCE_ENGINE_ORIGINAL)
+#else
+	if (strcasecmp(g_SourceMod.GetGameFolderName(), "ship") == 0)
+#endif
+	{
+		Assert(filesystem);
+#ifdef _MSC_VER
+		Assert(_heapchk() == _HEAPOK);
+#endif
+
+		FileHandle_t f = filesystem->Open(resourceName, "rb", pathID);
+		if (!f)
+			return false;
+
+		// load file into a null-terminated buffer
+		int fileSize = filesystem->Size(f);
+		char *buffer = (char *)MemAllocScratch(fileSize + 1);
+
+		Assert(buffer);
+
+		filesystem->Read(buffer, fileSize, f); // read into local buffer
+
+		buffer[fileSize] = 0; // null terminate file as EOF
+
+		filesystem->Close( f );	// close file after reading
+
+		bool retOK = kv->LoadFromBuffer( resourceName, buffer, filesystem );
+
+		MemFreeScratch();
+
+		return retOK;
+	}
+	else
+	{
+		return kv->LoadFromFile(filesystem, resourceName, pathID);
+	}
+}
+
 void CHalfLife2::PushCommandStack(const CCommand *cmd)
 {
 	CachedCommandInfo info;
diff --git a/core/HalfLife2.h b/core/HalfLife2.h
index e6bcf05a..90059620 100644
--- a/core/HalfLife2.h
+++ b/core/HalfLife2.h
@@ -99,6 +99,7 @@ public: //IGameHelpers
 	bool HintTextMsg(int client, const char *msg);
 	bool ShowVGUIMenu(int client, const char *name, KeyValues *data, bool show);
 	bool IsLANServer();
+	bool KVLoadFromFile(KeyValues *kv, IBaseFileSystem *filesystem, const char *resourceName, const char *pathID = NULL);
 public:
 	void AddToFakeCliCmdQueue(int client, int userid, const char *cmd);
 	void ProcessFakeCliCmdQueue();
diff --git a/core/smn_keyvalues.cpp b/core/smn_keyvalues.cpp
index 45cfb93e..825b26f1 100644
--- a/core/smn_keyvalues.cpp
+++ b/core/smn_keyvalues.cpp
@@ -33,6 +33,7 @@
 #include "sourcemm_api.h"
 #include "sm_stringutil.h"
 #include "HandleSys.h"
+#include "HalfLife2.h"
 #include <KeyValues.h>
 #include "utlbuffer.h"
 
@@ -782,6 +783,7 @@ static cell_t smn_FileToKeyValues(IPluginContext *pCtx, const cell_t *params)
 	HandleSecurity sec;
 	char *path;
 	KeyValueStack *pStk;
+	KeyValues *kv;
 
 	sec.pOwner = NULL;
 	sec.pIdentity = g_pCoreIdent;
@@ -797,7 +799,8 @@ static cell_t smn_FileToKeyValues(IPluginContext *pCtx, const cell_t *params)
 	char realpath[PLATFORM_MAX_PATH];
 	g_SourceMod.BuildPath(Path_Game, realpath, sizeof(realpath), "%s", path);
 
-	return pStk->pCurRoot.front()->LoadFromFile(basefilesystem, realpath);
+	kv = pStk->pCurRoot.front();
+	return g_HL2.KVLoadFromFile(kv, basefilesystem, realpath);
 }
 
 static cell_t smn_KvSetEscapeSequences(IPluginContext *pCtx, const cell_t *params)

From c5af41d9830cc5c243eccb7f79e83d8a24c75e00 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Wed, 26 Mar 2008 03:52:37 +0000
Subject: [PATCH 258/263] merged branch-1.1.0 back into trunk

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401960
---
 extensions/regex/CRegEx.cpp          | 124 +++++
 extensions/regex/CRegEx.h            |  28 ++
 extensions/regex/Makefile.ep1        |  89 ++++
 extensions/regex/Makefile.ep2        |  91 ++++
 extensions/regex/Makefile.orig       |  90 ++++
 extensions/regex/extension.cpp       | 188 +++++++
 extensions/regex/extension.h         | 133 +++++
 extensions/regex/lib_linux/libpcre.a | Bin 0 -> 184250 bytes
 extensions/regex/lib_win/pcre.lib    | Bin 0 -> 172300 bytes
 extensions/regex/msvc8/sdk.sln       |  26 +
 extensions/regex/msvc8/sdk.vcproj    | 422 ++++++++++++++++
 extensions/regex/pcre.h              | 305 +++++++++++
 extensions/regex/sdk/smsdk_config.h  |  79 +++
 extensions/regex/sdk/smsdk_ext.cpp   | 455 +++++++++++++++++
 extensions/regex/sdk/smsdk_ext.h     | 327 ++++++++++++
 extensions/tf2/Makefile.ep1          |  88 ++++
 extensions/tf2/Makefile.ep2          |  88 ++++
 extensions/tf2/Makefile.orig         |  88 ++++
 extensions/tf2/RegNatives.cpp        |  50 ++
 extensions/tf2/RegNatives.h          |  48 ++
 extensions/tf2/extension.cpp         | 229 +++++++++
 extensions/tf2/extension.h           | 130 +++++
 extensions/tf2/msvc8/tf2.sln         |  32 ++
 extensions/tf2/msvc8/tf2.vcproj      | 727 +++++++++++++++++++++++++++
 extensions/tf2/natives.cpp           | 159 ++++++
 extensions/tf2/sdk/smsdk_config.h    |  76 +++
 extensions/tf2/sdk/smsdk_ext.cpp     | 422 ++++++++++++++++
 extensions/tf2/sdk/smsdk_ext.h       | 310 ++++++++++++
 extensions/tf2/sm-tf2.games.txt      |  21 +
 extensions/tf2/svn_version.h         |  42 ++
 extensions/tf2/svn_version.tpl       |  42 ++
 extensions/tf2/tf2-test.sp           |  55 ++
 extensions/tf2/tf2.inc               |  24 +
 extensions/tf2/version.rc            | 104 ++++
 plugins/adminmenu.sp                 |  23 +-
 plugins/adminmenu/dynamicmenu.sp     | 520 +++++++++++++++++++
 plugins/include/regex.inc            | 141 ++++++
 plugins/mapmanager.sp                | 362 +++++++++++++
 plugins/mapmanager/commands.sp       | 398 +++++++++++++++
 plugins/mapmanager/events.sp         | 166 ++++++
 plugins/mapmanager/functions.sp      | 335 ++++++++++++
 plugins/mapmanager/functions_menu.sp | 115 +++++
 plugins/mapmanager/globals.sp        | 104 ++++
 plugins/mapmanager/menus.sp          | 263 ++++++++++
 plugins/mapmanager/timers.sp         | 166 ++++++
 plugins/mapmanager/votes.sp          | 318 ++++++++++++
 plugins/testsuite/goto_test.sp       |  28 ++
 sourcepawn/compiler/sc4.c            |  15 +-
 sourcepawn/compiler/sc6.c            |   1 +
 sourcepawn/jit/x86/jit_x86.cpp       |  22 +
 sourcepawn/jit/x86/opcode_helpers.h  |  27 +-
 sourcepawn/jit/x86/opcode_switch.inc |   5 +
 52 files changed, 8062 insertions(+), 39 deletions(-)
 create mode 100644 extensions/regex/CRegEx.cpp
 create mode 100644 extensions/regex/CRegEx.h
 create mode 100644 extensions/regex/Makefile.ep1
 create mode 100644 extensions/regex/Makefile.ep2
 create mode 100644 extensions/regex/Makefile.orig
 create mode 100644 extensions/regex/extension.cpp
 create mode 100644 extensions/regex/extension.h
 create mode 100644 extensions/regex/lib_linux/libpcre.a
 create mode 100644 extensions/regex/lib_win/pcre.lib
 create mode 100644 extensions/regex/msvc8/sdk.sln
 create mode 100644 extensions/regex/msvc8/sdk.vcproj
 create mode 100644 extensions/regex/pcre.h
 create mode 100644 extensions/regex/sdk/smsdk_config.h
 create mode 100644 extensions/regex/sdk/smsdk_ext.cpp
 create mode 100644 extensions/regex/sdk/smsdk_ext.h
 create mode 100644 extensions/tf2/Makefile.ep1
 create mode 100644 extensions/tf2/Makefile.ep2
 create mode 100644 extensions/tf2/Makefile.orig
 create mode 100644 extensions/tf2/RegNatives.cpp
 create mode 100644 extensions/tf2/RegNatives.h
 create mode 100644 extensions/tf2/extension.cpp
 create mode 100644 extensions/tf2/extension.h
 create mode 100644 extensions/tf2/msvc8/tf2.sln
 create mode 100644 extensions/tf2/msvc8/tf2.vcproj
 create mode 100644 extensions/tf2/natives.cpp
 create mode 100644 extensions/tf2/sdk/smsdk_config.h
 create mode 100644 extensions/tf2/sdk/smsdk_ext.cpp
 create mode 100644 extensions/tf2/sdk/smsdk_ext.h
 create mode 100644 extensions/tf2/sm-tf2.games.txt
 create mode 100644 extensions/tf2/svn_version.h
 create mode 100644 extensions/tf2/svn_version.tpl
 create mode 100644 extensions/tf2/tf2-test.sp
 create mode 100644 extensions/tf2/tf2.inc
 create mode 100644 extensions/tf2/version.rc
 create mode 100644 plugins/adminmenu/dynamicmenu.sp
 create mode 100644 plugins/include/regex.inc
 create mode 100644 plugins/mapmanager.sp
 create mode 100644 plugins/mapmanager/commands.sp
 create mode 100644 plugins/mapmanager/events.sp
 create mode 100644 plugins/mapmanager/functions.sp
 create mode 100644 plugins/mapmanager/functions_menu.sp
 create mode 100644 plugins/mapmanager/globals.sp
 create mode 100644 plugins/mapmanager/menus.sp
 create mode 100644 plugins/mapmanager/timers.sp
 create mode 100644 plugins/mapmanager/votes.sp
 create mode 100644 plugins/testsuite/goto_test.sp

diff --git a/extensions/regex/CRegEx.cpp b/extensions/regex/CRegEx.cpp
new file mode 100644
index 00000000..6405a3a0
--- /dev/null
+++ b/extensions/regex/CRegEx.cpp
@@ -0,0 +1,124 @@
+#include "pcre.h"
+#include "CRegEx.h"
+#include <sh_string.h>
+#include "extension.h"
+
+RegEx::RegEx()
+{
+	mErrorOffset = 0;
+	mError = NULL;
+	re = NULL;
+	mFree = true;
+	subject = NULL;
+	mSubStrings = 0;
+}
+
+void RegEx::Clear ()
+{
+	mErrorOffset = 0;
+	mError = NULL;
+	if (re)
+		pcre_free(re);
+	re = NULL;
+	mFree = true;
+	if (subject)
+		delete [] subject;
+	subject = NULL;
+	mSubStrings = 0;
+}
+
+RegEx::~RegEx()
+{
+	Clear();
+}
+
+bool RegEx::isFree(bool set, bool val)
+{
+	if (set)
+	{
+		mFree = val;
+		return true;
+	} else {
+		return mFree;
+	}
+}
+
+int RegEx::Compile(const char *pattern, int iFlags)
+{
+	if (!mFree)
+		Clear();
+		
+	re = pcre_compile(pattern, iFlags, &mError, &mErrorOffset, NULL);
+
+	if (re == NULL)
+	{
+		return 0;
+	}
+
+	mFree = false;
+
+	return 1;
+}
+
+int RegEx::Match(const char *str)
+{
+	int rc = 0;
+
+	if (mFree || re == NULL)
+		return -1;
+		
+	this->ClearMatch();
+
+	//save str
+	subject = new char[strlen(str)+1];
+	strcpy(subject, str);
+
+	rc = pcre_exec(re, NULL, subject, (int)strlen(subject), 0, 0, ovector, 30);
+
+	if (rc < 0)
+	{
+		if (rc == PCRE_ERROR_NOMATCH)
+		{
+			return 0;
+		} else {
+			mErrorOffset = rc;
+			return -1;
+		}
+	}
+
+	mSubStrings = rc;
+
+	return 1;
+}
+void RegEx::ClearMatch()
+{
+	// Clears match results
+	mErrorOffset = 0;
+	mError = NULL;
+	if (subject)
+		delete [] subject;
+	subject = NULL;
+	mSubStrings = 0;
+}
+
+const char *RegEx::GetSubstring(int s, char buffer[], int max)
+{
+	int i = 0;
+	if (s >= mSubStrings || s < 0)
+		return NULL;
+
+	char *substr_a = subject + ovector[2*s];
+	int substr_l = ovector[2*s+1] - ovector[2*s];
+
+	for (i = 0; i<substr_l; i++)
+	{
+		if (i >= max)
+			break;
+		buffer[i] = substr_a[i];
+	}
+
+	buffer[i] = '\0';
+
+	return buffer;
+}
+
diff --git a/extensions/regex/CRegEx.h b/extensions/regex/CRegEx.h
new file mode 100644
index 00000000..183a3039
--- /dev/null
+++ b/extensions/regex/CRegEx.h
@@ -0,0 +1,28 @@
+#ifndef _INCLUDE_CREGEX_H
+#define _INCLUDE_CREGEX_H
+
+class RegEx
+{
+public:
+	RegEx();
+	~RegEx();
+	bool isFree(bool set=false, bool val=false);
+	void Clear();
+
+	int Compile(const char *pattern, int iFlags);
+	int Match(const char *str);
+	void ClearMatch();
+	const char *GetSubstring(int s, char buffer[], int max);
+public:
+	int mErrorOffset;
+	const char *mError;
+	int mSubStrings;
+private:
+	pcre *re;
+	bool mFree;
+	int ovector[30];
+	char *subject;
+};
+
+#endif //_INCLUDE_CREGEX_H
+
diff --git a/extensions/regex/Makefile.ep1 b/extensions/regex/Makefile.ep1
new file mode 100644
index 00000000..989ee7d4
--- /dev/null
+++ b/extensions/regex/Makefile.ep1
@@ -0,0 +1,89 @@
+#(C)2004-2007 AlliedModders LLC
+#
+# This sample Makefile is designed for SourceMod extensions that 
+# are built against Metamod:Source 1.4.2, Episode 1 of the HL2SDK.
+#
+
+SMSDK = ../..
+SRCDS = ~/srcds
+SOURCEMM = ../../../sourcemm
+HL2SDK = ../../../hl2sdk
+
+#####################################
+### EDIT BELOW FOR OTHER PROJECTS ###
+#####################################
+
+PROJECT = regex
+
+#Uncomment for SourceMM-enabled extensions
+LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
+
+OBJECTS = sdk/smsdk_ext.cpp extension.cpp CRegEx.cpp
+
+##############################################
+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
+##############################################
+
+C_OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
+C_DEBUG_FLAGS = -g -ggdb3
+CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
+CPP = gcc-4.1
+
+HL2PUB = $(HL2SDK)/public
+HL2LIB = $(HL2SDK)/linux_sdk
+
+LINK = $(LINK_HL2) -static-libgcc
+
+INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
+	-I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
+	-I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
+
+CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -Wno-uninitialized
+CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
+
+################################################
+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
+################################################
+
+ifeq "$(DEBUG)" "true"
+	BIN_DIR = Debug
+	CFLAGS += $(C_DEBUG_FLAGS)
+else
+	BIN_DIR = Release
+	CFLAGS += $(C_OPT_FLAGS)
+endif
+
+
+GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
+ifeq "$(GCC_VERSION)" "4"
+	CPPFLAGS += $(CPP_GCC4_FLAGS)
+endif
+
+BINARY = $(PROJECT).ext.so
+
+OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
+
+$(BIN_DIR)/%.o: %.cpp
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
+
+all:
+	mkdir -p $(BIN_DIR)/sdk
+	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
+	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
+	$(MAKE) -f Makefile.ep1 extension
+
+extension: $(OBJ_LINUX)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+
+debug:	
+	$(MAKE) -f Makefile.ep1 all DEBUG=true
+
+default: all
+
+clean:
+	rm -rf Release/*.o
+	rm -rf Release/sdk/*.o
+	rm -rf Release/$(BINARY)
+	rm -rf Debug/*.o
+	rm -rf Debug/sdk/*.o
+	rm -rf Debug/$(BINARY)
diff --git a/extensions/regex/Makefile.ep2 b/extensions/regex/Makefile.ep2
new file mode 100644
index 00000000..3582838c
--- /dev/null
+++ b/extensions/regex/Makefile.ep2
@@ -0,0 +1,91 @@
+#(C)2004-2007 AlliedModders LLC
+#
+# This sample Makefile is designed for SourceMod extensions that 
+# are built against Metamod:Source 1.6.0, Episode 2 of the HL2SDK.
+#
+
+SMSDK = ../..
+SRCDS = ~/srcds
+SOURCEMM = ../../../sourcemm
+HL2SDK = ../../../hl2sdk-ob
+
+#####################################
+### EDIT BELOW FOR OTHER PROJECTS ###
+#####################################
+
+PROJECT = regex
+
+#Uncomment for SourceMM-enabled extensions
+LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
+
+OBJECTS = sdk/smsdk_ext.cpp extension.cpp CRegEx.cpp
+
+##############################################
+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
+##############################################
+
+C_OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
+C_DEBUG_FLAGS = -g -ggdb3
+CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
+CPP = gcc-4.1
+
+HL2PUB = $(HL2SDK)/public
+HL2LIB = $(HL2SDK)/linux_sdk
+
+LINK = $(LINK_HL2) -static-libgcc
+
+INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
+	-I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
+	-I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
+
+CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
+	-D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse \
+	-msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -Wno-uninitialized -DORANGEBOX_BUILD
+CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
+
+################################################
+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
+################################################
+
+ifeq "$(DEBUG)" "true"
+	BIN_DIR = Debug
+	CFLAGS += $(C_DEBUG_FLAGS)
+else
+	BIN_DIR = Release
+	CFLAGS += $(C_OPT_FLAGS)
+endif
+
+
+GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
+ifeq "$(GCC_VERSION)" "4"
+	CPPFLAGS += $(CPP_GCC4_FLAGS)
+endif
+
+BINARY = $(PROJECT).ext.so
+
+OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
+
+$(BIN_DIR)/%.o: %.cpp
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
+
+all:
+	mkdir -p $(BIN_DIR)/sdk
+	ln -sf $(SRCDS)/orangebox/bin/vstdlib_i486.so vstdlib_i486.so
+	ln -sf $(SRCDS)/orangebox/bin/tier0_i486.so tier0_i486.so
+	$(MAKE) -f Makefile.ep1 extension
+
+extension: $(OBJ_LINUX)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+
+debug:	
+	$(MAKE) -f Makefile.ep1 all DEBUG=true
+
+default: all
+
+clean:
+	rm -rf Release/*.o
+	rm -rf Release/sdk/*.o
+	rm -rf Release/$(BINARY)
+	rm -rf Debug/*.o
+	rm -rf Debug/sdk/*.o
+	rm -rf Debug/$(BINARY)
diff --git a/extensions/regex/Makefile.orig b/extensions/regex/Makefile.orig
new file mode 100644
index 00000000..3dc19ef8
--- /dev/null
+++ b/extensions/regex/Makefile.orig
@@ -0,0 +1,90 @@
+#(C)2004-2007 AlliedModders LLC
+#
+# This sample Makefile is designed for SourceMod extensions that 
+# are built against Metamod:Source 1.6.0, Episode 1 of the HL2SDK.
+
+SMSDK = ../..
+SRCDS = ~/srcds
+SOURCEMM = ../../../sourcemm-1.4.2
+HL2SDK = ../../../hl2sdk
+
+#####################################
+### EDIT BELOW FOR OTHER PROJECTS ###
+#####################################
+
+PROJECT = regex
+
+#Uncomment for SourceMM-enabled extensions
+LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
+
+OBJECTS = sdk/smsdk_ext.cpp extension.cpp CRegEx.cpp
+
+##############################################
+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
+##############################################
+
+C_OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
+C_DEBUG_FLAGS = -g -ggdb3
+CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
+CPP = gcc-4.1
+
+HL2PUB = $(HL2SDK)/public
+HL2LIB = $(HL2SDK)/linux_sdk
+
+LINK = $(LINK_HL2) -static-libgcc
+
+INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
+	-I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
+	-I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
+
+CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
+	-D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -fPIC -mfpmath=sse \
+	-msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -Wno-uninitialized
+CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
+
+################################################
+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
+################################################
+
+ifeq "$(DEBUG)" "true"
+	BIN_DIR = Debug
+	CFLAGS += $(C_DEBUG_FLAGS)
+else
+	BIN_DIR = Release
+	CFLAGS += $(C_OPT_FLAGS)
+endif
+
+
+GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
+ifeq "$(GCC_VERSION)" "4"
+	CPPFLAGS += $(CPP_GCC4_FLAGS)
+endif
+
+BINARY = $(PROJECT).ext.so
+
+OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
+
+$(BIN_DIR)/%.o: %.cpp
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
+
+all:
+	mkdir -p $(BIN_DIR)/sdk
+	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
+	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
+	$(MAKE) -f Makefile.orig extension
+
+extension: $(OBJ_LINUX)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+
+debug:	
+	$(MAKE) -f Makefile.orig all DEBUG=true
+
+default: all
+
+clean:
+	rm -rf Release/*.o
+	rm -rf Release/sdk/*.o
+	rm -rf Release/$(BINARY)
+	rm -rf Debug/*.o
+	rm -rf Debug/sdk/*.o
+	rm -rf Debug/$(BINARY)
diff --git a/extensions/regex/extension.cpp b/extensions/regex/extension.cpp
new file mode 100644
index 00000000..e3519172
--- /dev/null
+++ b/extensions/regex/extension.cpp
@@ -0,0 +1,188 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Sample Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include "extension.h"
+
+#include <sh_string.h>
+#include "pcre.h"
+#include "CRegEx.h"
+using namespace SourceHook;
+
+/**
+ * @file extension.cpp
+ * @brief Implement extension code here.
+ */
+
+RegexExtension g_RegexExtension;		/**< Global singleton for extension's main interface */
+
+SMEXT_LINK(&g_RegexExtension);
+
+RegexHandler g_RegexHandler;
+HandleType_t g_RegexHandle=0;
+
+
+
+bool RegexExtension::SDK_OnLoad(char *error, size_t err_max, bool late)
+{
+	g_pShareSys->AddNatives(myself,regex_natives);
+	g_RegexHandle = g_pHandleSys->CreateType("Regex", &g_RegexHandler, 0, NULL, NULL, myself->GetIdentity(), NULL);
+	return true;
+}
+
+void RegexExtension::SDK_OnUnload()
+{
+	g_pHandleSys->RemoveType(g_RegexHandle, myself->GetIdentity());
+
+}
+
+static cell_t CompileRegex(IPluginContext *pCtx, const cell_t *params)
+{
+	char *regex;
+	pCtx->LocalToString(params[1], &regex);
+
+	RegEx *x = new RegEx();
+	
+	if (x->Compile(regex, params[2]) == 0)
+	{
+		cell_t *eOff;
+		pCtx->LocalToPhysAddr(params[5], &eOff);
+		const char *err = x->mError;
+		*eOff = x->mErrorOffset;
+		pCtx->StringToLocal(params[3], params[4], err ? err:"unknown");
+		return 0;
+	}
+
+	return g_pHandleSys->CreateHandle(g_RegexHandle, (void*)x, pCtx->GetIdentity(), myself->GetIdentity(), NULL);
+}
+
+
+static cell_t MatchRegex(IPluginContext *pCtx, const cell_t *params)
+{
+	Handle_t hndl = static_cast<Handle_t>(params[1]);
+	HandleError err;
+	HandleSecurity sec;
+	sec.pOwner = NULL;
+	sec.pIdentity = myself->GetIdentity();
+
+	RegEx *x;
+
+	if ((err=g_pHandleSys->ReadHandle(hndl, g_RegexHandle, &sec, (void **)&x)) != HandleError_None)
+	{
+		return pCtx->ThrowNativeError("Invalid file handle %x (error %d)", hndl, err);
+	}
+
+	if (!x)
+	{
+		pCtx->ThrowNativeError("Regex data not found\n");
+
+		return 0;
+	}
+
+	char *str;
+	pCtx->LocalToString(params[2], &str);
+
+	int e = x->Match(str);
+
+	if (e == -1)
+	{
+		/* there was a match error.  move on. */
+		cell_t *res;
+		pCtx->LocalToPhysAddr(params[3], &res);
+		*res = x->mErrorOffset;
+		/* only clear the match results, since the regex object
+		   may still be referenced later */
+		x->ClearMatch();
+
+		return -1;
+	}
+	else if (e == 0) 
+	{
+		/* only clear the match results, since the regex object
+		   may still be referenced later */
+		x->ClearMatch();
+
+		return 0;
+	} 
+	else 
+	{
+		return x->mSubStrings;
+	}
+}
+
+static cell_t GetRegexSubString(IPluginContext *pCtx, const cell_t *params)
+{
+	Handle_t hndl=static_cast<Handle_t>(params[1]);
+	HandleError err;
+	HandleSecurity sec;
+	sec.pOwner=NULL;
+	sec.pIdentity=myself->GetIdentity();
+
+	RegEx *x;
+
+	if ((err=g_pHandleSys->ReadHandle(hndl, g_RegexHandle, &sec, (void **)&x)) != HandleError_None)
+	{
+		return pCtx->ThrowNativeError("Invalid file handle %x (error %d)", hndl, err);
+	}
+
+	if (!x)
+	{
+		pCtx->ThrowNativeError("Regex data not found\n");
+		return 0;
+	}
+
+	static char buffer[4096];
+	const char *ret=x->GetSubstring(params[2], buffer, sizeof(buffer));
+
+	if(!ret)
+	{
+		return 0;
+	}
+
+	pCtx->StringToLocalUTF8(params[3], params[4], ret, NULL);
+
+	return 1;
+}
+
+void RegexHandler::OnHandleDestroy(HandleType_t type, void *object)
+{
+	RegEx *x = (RegEx *)object;
+
+	x->Clear();
+	delete x;
+}
+
+const sp_nativeinfo_t regex_natives[] = 
+{
+	{"GetRegexSubString",			GetRegexSubString},
+	{"MatchRegex",					MatchRegex},
+	{"CompileRegex",				CompileRegex},
+	{NULL,							NULL},
+};
diff --git a/extensions/regex/extension.h b/extensions/regex/extension.h
new file mode 100644
index 00000000..0c4beff2
--- /dev/null
+++ b/extensions/regex/extension.h
@@ -0,0 +1,133 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Sample Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#ifndef _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
+#define _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
+
+/**
+ * @file extension.h
+ * @brief Sample extension code header.
+ */
+
+#include "smsdk_ext.h"
+
+
+/**
+ * @brief Sample implementation of the SDK Extension.
+ * Note: Uncomment one of the pre-defined virtual functions in order to use it.
+ */
+class RegexExtension : public SDKExtension
+{
+public:
+	/**
+	 * @brief This is called after the initial loading sequence has been processed.
+	 *
+	 * @param error		Error message buffer.
+	 * @param maxlength	Size of error message buffer.
+	 * @param late		Whether or not the module was loaded after map load.
+	 * @return			True to succeed loading, false to fail.
+	 */
+	virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
+	
+	/**
+	 * @brief This is called right before the extension is unloaded.
+	 */
+	virtual void SDK_OnUnload();
+
+	/**
+	 * @brief This is called once all known extensions have been loaded.
+	 * Note: It is is a good idea to add natives here, if any are provided.
+	 */
+	//virtual void SDK_OnAllLoaded();
+
+	/**
+	 * @brief Called when the pause state is changed.
+	 */
+	//virtual void SDK_OnPauseChange(bool paused);
+
+	/**
+	 * @brief this is called when Core wants to know if your extension is working.
+	 *
+	 * @param error		Error message buffer.
+	 * @param maxlength	Size of error message buffer.
+	 * @return			True if working, false otherwise.
+	 */
+	//virtual bool QueryRunning(char *error, size_t maxlength);
+public:
+#if defined SMEXT_CONF_METAMOD
+	/**
+	 * @brief Called when Metamod is attached, before the extension version is called.
+	 *
+	 * @param error			Error buffer.
+	 * @param maxlength		Maximum size of error buffer.
+	 * @param late			Whether or not Metamod considers this a late load.
+	 * @return				True to succeed, false to fail.
+	 */
+	//virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
+
+	/**
+	 * @brief Called when Metamod is detaching, after the extension version is called.
+	 * NOTE: By default this is blocked unless sent from SourceMod.
+	 *
+	 * @param error			Error buffer.
+	 * @param maxlength		Maximum size of error buffer.
+	 * @return				True to succeed, false to fail.
+	 */
+	//virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
+
+	/**
+	 * @brief Called when Metamod's pause state is changing.
+	 * NOTE: By default this is blocked unless sent from SourceMod.
+	 *
+	 * @param paused		Pause state being set.
+	 * @param error			Error buffer.
+	 * @param maxlength		Maximum size of error buffer.
+	 * @return				True to succeed, false to fail.
+	 */
+	//virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
+#endif
+};
+
+
+class RegexHandler: public IHandleTypeDispatch
+{
+public:
+	void OnHandleDestroy(HandleType_t type, void *object);
+};
+
+extern RegexHandler g_RegexHandler;
+extern HandleType_t g_RegexHandle;
+
+
+// Natives
+extern const sp_nativeinfo_t regex_natives[];
+
+#endif // _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
diff --git a/extensions/regex/lib_linux/libpcre.a b/extensions/regex/lib_linux/libpcre.a
new file mode 100644
index 0000000000000000000000000000000000000000..e8f6fbdefa0da9a25a9f12394c19c3fd43057330
GIT binary patch
literal 184250
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%0D#l*Lgi1_{jWPB%A071)U=n)Jz?{*W;
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%0AgYLD~pS4^cIL!@!T4WgcwCvAl?h2zN|E@Wr
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%0DNo4{y}b1koik*XN2<l8
zR>YU>t7c9dcK6-7J9%TzcV~T`TG6F^WT^DlppJfv5By%o;)31f3HjwI&gBKWTXYTT
z+qzd(x#eTyL*}@yc`((jqq+?}x6b;!*PNtziM?he%_&~IJvgGLR=iSP@cH5qI~EVj
zPAV@rASCGAV{t<Er$6g}@6Qb-EMAv-+3msn3<@324jNK~#zALVYY#SE`)T8{539!)
z=ykl#eBwe|53bNqT%i&<m1T2wIjPs`JZjhF1-r`Dw-3&K%AaUu=03IJj8OULxY9$6
z&yL^ct%X}<d_D@sr^JlUzs%4JJ-^Wmot{*3gXU$Lo>{rEV3(=4N=tTeEjUS;WgD{g
z4HHu<28VhTe4cvUy0SSt;?=j@b*T$SYF5inj#E9Y&9g5H4wM~CF6mcxFtH@B>|j#r
zwd=~h3H=scvTa`r#V_*@#n0NbFVhsQu=8VTKCu5T(?rj8%l6;=j8+F{zjp0<TC=uY
z{SDP$zW#z^`d{))&7+=6nZ&>B8Ou%8e={Rh_w9Nnz;9D*TR(E&o~;7;iZc5EQ~r<k
z?YC5^OJPBr;gS3HKZ-Nkv#CE;jfqP)6)?q)6`tJeKVws|`WKd%{w3-!)<5%Rv8gXM
zJ)-*B#zc(e6;yd`vfqt$z=)<;+>yrs6L++0)T;Af%BQJQm10f({ikEVX2p$EOl*p^
z8}k^ervLTF0Mo<YCv!}Q9be75VvYgs@7ckzEOyOnlFd4lZ(cA3>r~Z)LF}B)9vhBw
zK4(w)%=w?aApY&K$yKj{owHQGxjQ%2Pz(Nkd<~waL5kCWn|n3pcyyVe;+Gnl6~)A9
ze$2XJXy)251)6>v@08oQ>gDmDAIEaL{ny7a{a$S_#g1b&g0py=7W^NIi%&?bRy`@X
zM$MF3wNulMsZ%$-UPk@Q1`Qjzjhi&hYSz3(cFR_+!)@BOYu}+`CoiXSm#*Eq_sH#e
zY_GiDefs8)8$Y3V;-s^pXHPz7%DGdgO+RnO%#vBN&%fZpi%uJR`Wa^y{c--qm&}<v
z&o7-{wqW6<mn~Yn<nk-ZmtMK-s;jTL_PXo;cEgP~-F(a6Z@q2#?RVUH*WLHryW+l;
z_doF9Lk~al=wpvR@npqQtDb)5+2>ZTdA@S(x);{JxMAZ<FK>F~)z@BsWAmF^w!XD(
z``bI-d3Wco_ul_t_lJ8v`p3t6KlyauXZt_@;>)iNeErS0-~IFZ9}fQb)1jY#`Sq|C
z!2j<2_v=4kV8NilLxv6;e%y%TPbfU`q>+(PqfZ`l%BlZ<%zq!PgH=|CqrW^HZ|-E6
zzoSq31j?UGI#Qa;$NxC}am?X(<z4ni`AUyX^N!X)EK@vczSe@DH3kRucfpb6P1!1G
zewEk3%ij`0AxHoIZ8AwF#@A$CxxY<HGzkrZsm@U*74XykbAC|A|J(omlJk<1i5KYp
zdGWZCaZbnaGiN$~-T8<)&oIj%c0OYFgTD`10xz2p7h944D6X~Q%zpgO;@VT6cJINI
zumAI7jp=ok{>)_BG5w28zG9Ac{?J<iRpVAxsmqj&<sEtcVB++C>Tgpl&M?+DletI(
zv`jSTJpbwZAyZp%*c4!j)fe*^tET_?`9sy7n6ZtGuC2}7L$5mhr~5u;jE^z#!TG?1
b=(rid9dC2{+aC0Fuo^dON{K!0&vgC=cwHgD

literal 0
HcmV?d00001

diff --git a/extensions/regex/lib_win/pcre.lib b/extensions/regex/lib_win/pcre.lib
new file mode 100644
index 0000000000000000000000000000000000000000..0fb8eeaa1cdc8147916540d438b7686bebf90e01
GIT binary patch
literal 172300
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

literal 0
HcmV?d00001

diff --git a/extensions/regex/msvc8/sdk.sln b/extensions/regex/msvc8/sdk.sln
new file mode 100644
index 00000000..90618048
--- /dev/null
+++ b/extensions/regex/msvc8/sdk.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual C++ Express 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "regex", "sdk.vcproj", "{B3E797CF-4E77-4C9D-B8A8-7589B6902206}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug - Episode 1|Win32 = Debug - Episode 1|Win32
+		Debug - Orange Box|Win32 = Debug - Orange Box|Win32
+		Release - Episode 1|Win32 = Release - Episode 1|Win32
+		Release - Orange Box|Win32 = Release - Orange Box|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Episode 1|Win32.ActiveCfg = Debug|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Episode 1|Win32.Build.0 = Debug|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Episode 1|Win32.ActiveCfg = Release|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Episode 1|Win32.Build.0 = Release|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Orange Box|Win32.Build.0 = Release - Orange Box|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/extensions/regex/msvc8/sdk.vcproj b/extensions/regex/msvc8/sdk.vcproj
new file mode 100644
index 00000000..ec06e64e
--- /dev/null
+++ b/extensions/regex/msvc8/sdk.vcproj
@@ -0,0 +1,422 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="regex"
+	ProjectGUID="{B3E797CF-4E77-4C9D-B8A8-7589B6902206}"
+	RootNamespace="sdk"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\;..\sdk;..\..;..\systems;..\..\..\public;..\..\..\public\sourcepawn;&quot;$(SOURCEMM142)&quot;;&quot;$(SOURCEMM142)\sourcemm&quot;;&quot;$(SOURCEMM142)\sourcehook&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\game\server&quot;;&quot;$(HL2SDK)\public\mathlib&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="false"
+				AdditionalDependencies="..\lib_win\pcre.lib &quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
+				OutputFile="$(OutDir)\regex.ext.dll"
+				LinkIncremental="2"
+				IgnoreDefaultLibraryNames="LIBCMTD"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="0"
+				EnableCOMDATFolding="0"
+				ImportLibrary="$(OutDir)/sdk.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..\;..\sdk;..\..;..\systems;..\..\..\public;..\..\..\public\sourcepawn;&quot;$(SOURCEMM142)&quot;;&quot;$(SOURCEMM142)\sourcemm&quot;;&quot;$(SOURCEMM142)\sourcehook&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\game\server&quot;;&quot;$(HL2SDK)\public\mathlib&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
+				RuntimeLibrary="0"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="..\lib_win\pcre.lib &quot;$(HL2SDK)\lib\public\tier0.lib&quot; &quot;$(HL2SDK)\lib\public\tier1.lib&quot; &quot;$(HL2SDK)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDK)\lib\public\mathlib.lib&quot;"
+				OutputFile="$(OutDir)\regex.ext.dll"
+				LinkIncremental="1"
+				IgnoreDefaultLibraryNames="LIBCMT"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug - Orange Box|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\;..\sdk;..\..;..\systems;..\..\..\public;..\..\..\public\sourcepawn;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\public\mathlib&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="false"
+				AdditionalDependencies="..\lib_win\pcre.lib &quot;$(HL2SDKOB)\lib\public\tier0.lib&quot; &quot;$(HL2SDKOB)\lib\public\tier1.lib&quot; &quot;$(HL2SDKOB)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDKOB)\lib\public\mathlib.lib&quot;"
+				OutputFile="$(OutDir)\regex.ext.dll"
+				LinkIncremental="2"
+				IgnoreDefaultLibraryNames="LIBCMTD"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="0"
+				EnableCOMDATFolding="0"
+				ImportLibrary="$(OutDir)/sdk.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release - Orange Box|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..\;..\sdk;..\..;..\systems;..\..\..\public;..\..\..\public\sourcepawn;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\public\mathlib&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
+				RuntimeLibrary="0"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="..\lib_win\pcre.lib &quot;$(HL2SDKOB)\lib\public\tier0.lib&quot; &quot;$(HL2SDKOB)\lib\public\tier1.lib&quot; &quot;$(HL2SDKOB)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDKOB)\lib\public\mathlib.lib&quot;"
+				OutputFile="$(OutDir)\regex.ext.dll"
+				LinkIncremental="1"
+				IgnoreDefaultLibraryNames="LIBCMT"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\CRegEx.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\extension.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\CRegEx.h"
+				>
+			</File>
+			<File
+				RelativePath="..\extension.h"
+				>
+			</File>
+			<File
+				RelativePath="..\pcre.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+		<Filter
+			Name="SourceMod SDK"
+			UniqueIdentifier="{31958233-BB2D-4e41-A8F9-CE8A4684F436}"
+			>
+			<File
+				RelativePath="..\sdk\smsdk_config.h"
+				>
+			</File>
+			<File
+				RelativePath="..\sdk\smsdk_ext.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\sdk\smsdk_ext.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Library Files"
+			>
+			<File
+				RelativePath="..\lib_win\pcre.lib"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/extensions/regex/pcre.h b/extensions/regex/pcre.h
new file mode 100644
index 00000000..77720e1c
--- /dev/null
+++ b/extensions/regex/pcre.h
@@ -0,0 +1,305 @@
+/*************************************************
+*       Perl-Compatible Regular Expressions      *
+*************************************************/
+
+/* This is the public header file for the PCRE library, to be #included by
+applications that call the PCRE functions.
+
+           Copyright (c) 1997-2007 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+#ifndef _PCRE_H
+#define _PCRE_H
+
+/* The current PCRE version information. */
+
+#define PCRE_MAJOR          7
+#define PCRE_MINOR          4
+#define PCRE_PRERELEASE     
+#define PCRE_DATE           2007-09-21
+
+/* When an application links to a PCRE DLL in Windows, the symbols that are
+imported have to be identified as such. When building PCRE, the appropriate
+export setting is defined in pcre_internal.h, which includes this file. So we
+don't change existing definitions of PCRE_EXP_DECL and PCRECPP_EXP_DECL. */
+
+#define PCRE_STATIC
+
+#if defined(_WIN32) && !defined(PCRE_STATIC)
+#  ifndef PCRE_EXP_DECL
+#    define PCRE_EXP_DECL  extern __declspec(dllimport)
+#  endif
+#  ifdef __cplusplus
+#    ifndef PCRECPP_EXP_DECL
+#      define PCRECPP_EXP_DECL  extern __declspec(dllimport)
+#    endif
+#    ifndef PCRECPP_EXP_DEFN
+#      define PCRECPP_EXP_DEFN  __declspec(dllimport)
+#    endif
+#  endif
+#endif
+
+/* By default, we use the standard "extern" declarations. */
+
+#ifndef PCRE_EXP_DECL
+#  ifdef __cplusplus
+#    define PCRE_EXP_DECL  extern "C"
+#  else
+#    define PCRE_EXP_DECL  extern
+#  endif
+#endif
+
+#ifdef __cplusplus
+#  ifndef PCRECPP_EXP_DECL
+#    define PCRECPP_EXP_DECL  extern
+#  endif
+#  ifndef PCRECPP_EXP_DEFN
+#    define PCRECPP_EXP_DEFN
+#  endif
+#endif
+
+/* Have to include stdlib.h in order to ensure that size_t is defined;
+it is needed here for malloc. */
+
+#include <stdlib.h>
+
+/* Allow for C++ users */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Options */
+
+#define PCRE_CASELESS           0x00000001
+#define PCRE_MULTILINE          0x00000002
+#define PCRE_DOTALL             0x00000004
+#define PCRE_EXTENDED           0x00000008
+#define PCRE_ANCHORED           0x00000010
+#define PCRE_DOLLAR_ENDONLY     0x00000020
+#define PCRE_EXTRA              0x00000040
+#define PCRE_NOTBOL             0x00000080
+#define PCRE_NOTEOL             0x00000100
+#define PCRE_UNGREEDY           0x00000200
+#define PCRE_NOTEMPTY           0x00000400
+#define PCRE_UTF8               0x00000800
+#define PCRE_NO_AUTO_CAPTURE    0x00001000
+#define PCRE_NO_UTF8_CHECK      0x00002000
+#define PCRE_AUTO_CALLOUT       0x00004000
+#define PCRE_PARTIAL            0x00008000
+#define PCRE_DFA_SHORTEST       0x00010000
+#define PCRE_DFA_RESTART        0x00020000
+#define PCRE_FIRSTLINE          0x00040000
+#define PCRE_DUPNAMES           0x00080000
+#define PCRE_NEWLINE_CR         0x00100000
+#define PCRE_NEWLINE_LF         0x00200000
+#define PCRE_NEWLINE_CRLF       0x00300000
+#define PCRE_NEWLINE_ANY        0x00400000
+#define PCRE_NEWLINE_ANYCRLF    0x00500000
+#define PCRE_BSR_ANYCRLF        0x00800000
+#define PCRE_BSR_UNICODE        0x01000000
+
+/* Exec-time and get/set-time error codes */
+
+#define PCRE_ERROR_NOMATCH         (-1)
+#define PCRE_ERROR_NULL            (-2)
+#define PCRE_ERROR_BADOPTION       (-3)
+#define PCRE_ERROR_BADMAGIC        (-4)
+#define PCRE_ERROR_UNKNOWN_OPCODE  (-5)
+#define PCRE_ERROR_UNKNOWN_NODE    (-5)  /* For backward compatibility */
+#define PCRE_ERROR_NOMEMORY        (-6)
+#define PCRE_ERROR_NOSUBSTRING     (-7)
+#define PCRE_ERROR_MATCHLIMIT      (-8)
+#define PCRE_ERROR_CALLOUT         (-9)  /* Never used by PCRE itself */
+#define PCRE_ERROR_BADUTF8        (-10)
+#define PCRE_ERROR_BADUTF8_OFFSET (-11)
+#define PCRE_ERROR_PARTIAL        (-12)
+#define PCRE_ERROR_BADPARTIAL     (-13)
+#define PCRE_ERROR_INTERNAL       (-14)
+#define PCRE_ERROR_BADCOUNT       (-15)
+#define PCRE_ERROR_DFA_UITEM      (-16)
+#define PCRE_ERROR_DFA_UCOND      (-17)
+#define PCRE_ERROR_DFA_UMLIMIT    (-18)
+#define PCRE_ERROR_DFA_WSSIZE     (-19)
+#define PCRE_ERROR_DFA_RECURSE    (-20)
+#define PCRE_ERROR_RECURSIONLIMIT (-21)
+#define PCRE_ERROR_NULLWSLIMIT    (-22)  /* No longer actually used */
+#define PCRE_ERROR_BADNEWLINE     (-23)
+
+/* Request types for pcre_fullinfo() */
+
+#define PCRE_INFO_OPTIONS            0
+#define PCRE_INFO_SIZE               1
+#define PCRE_INFO_CAPTURECOUNT       2
+#define PCRE_INFO_BACKREFMAX         3
+#define PCRE_INFO_FIRSTBYTE          4
+#define PCRE_INFO_FIRSTCHAR          4  /* For backwards compatibility */
+#define PCRE_INFO_FIRSTTABLE         5
+#define PCRE_INFO_LASTLITERAL        6
+#define PCRE_INFO_NAMEENTRYSIZE      7
+#define PCRE_INFO_NAMECOUNT          8
+#define PCRE_INFO_NAMETABLE          9
+#define PCRE_INFO_STUDYSIZE         10
+#define PCRE_INFO_DEFAULT_TABLES    11
+#define PCRE_INFO_OKPARTIAL         12
+#define PCRE_INFO_JCHANGED          13
+#define PCRE_INFO_HASCRORLF         14
+
+/* Request types for pcre_config(). Do not re-arrange, in order to remain
+compatible. */
+
+#define PCRE_CONFIG_UTF8                    0
+#define PCRE_CONFIG_NEWLINE                 1
+#define PCRE_CONFIG_LINK_SIZE               2
+#define PCRE_CONFIG_POSIX_MALLOC_THRESHOLD  3
+#define PCRE_CONFIG_MATCH_LIMIT             4
+#define PCRE_CONFIG_STACKRECURSE            5
+#define PCRE_CONFIG_UNICODE_PROPERTIES      6
+#define PCRE_CONFIG_MATCH_LIMIT_RECURSION   7
+#define PCRE_CONFIG_BSR                     8
+
+/* Bit flags for the pcre_extra structure. Do not re-arrange or redefine
+these bits, just add new ones on the end, in order to remain compatible. */
+
+#define PCRE_EXTRA_STUDY_DATA             0x0001
+#define PCRE_EXTRA_MATCH_LIMIT            0x0002
+#define PCRE_EXTRA_CALLOUT_DATA           0x0004
+#define PCRE_EXTRA_TABLES                 0x0008
+#define PCRE_EXTRA_MATCH_LIMIT_RECURSION  0x0010
+
+/* Types */
+
+struct real_pcre;                 /* declaration; the definition is private  */
+typedef struct real_pcre pcre;
+
+/* When PCRE is compiled as a C++ library, the subject pointer type can be
+replaced with a custom type. For conventional use, the public interface is a
+const char *. */
+
+#ifndef PCRE_SPTR
+#define PCRE_SPTR const char *
+#endif
+
+/* The structure for passing additional data to pcre_exec(). This is defined in
+such as way as to be extensible. Always add new fields at the end, in order to
+remain compatible. */
+
+typedef struct pcre_extra {
+  unsigned long int flags;        /* Bits for which fields are set */
+  void *study_data;               /* Opaque data from pcre_study() */
+  unsigned long int match_limit;  /* Maximum number of calls to match() */
+  void *callout_data;             /* Data passed back in callouts */
+  const unsigned char *tables;    /* Pointer to character tables */
+  unsigned long int match_limit_recursion; /* Max recursive calls to match() */
+} pcre_extra;
+
+/* The structure for passing out data via the pcre_callout_function. We use a
+structure so that new fields can be added on the end in future versions,
+without changing the API of the function, thereby allowing old clients to work
+without modification. */
+
+typedef struct pcre_callout_block {
+  int          version;           /* Identifies version of block */
+  /* ------------------------ Version 0 ------------------------------- */
+  int          callout_number;    /* Number compiled into pattern */
+  int         *offset_vector;     /* The offset vector */
+  PCRE_SPTR    subject;           /* The subject being matched */
+  int          subject_length;    /* The length of the subject */
+  int          start_match;       /* Offset to start of this match attempt */
+  int          current_position;  /* Where we currently are in the subject */
+  int          capture_top;       /* Max current capture */
+  int          capture_last;      /* Most recently closed capture */
+  void        *callout_data;      /* Data passed in with the call */
+  /* ------------------- Added for Version 1 -------------------------- */
+  int          pattern_position;  /* Offset to next item in the pattern */
+  int          next_item_length;  /* Length of next item in the pattern */
+  /* ------------------------------------------------------------------ */
+} pcre_callout_block;
+
+/* Indirection for store get and free functions. These can be set to
+alternative malloc/free functions if required. Special ones are used in the
+non-recursive case for "frames". There is also an optional callout function
+that is triggered by the (?) regex item. For Virtual Pascal, these definitions
+have to take another form. */
+
+#ifndef VPCOMPAT
+PCRE_EXP_DECL void *(*pcre_malloc)(size_t);
+PCRE_EXP_DECL void  (*pcre_free)(void *);
+PCRE_EXP_DECL void *(*pcre_stack_malloc)(size_t);
+PCRE_EXP_DECL void  (*pcre_stack_free)(void *);
+PCRE_EXP_DECL int   (*pcre_callout)(pcre_callout_block *);
+#else   /* VPCOMPAT */
+PCRE_EXP_DECL void *pcre_malloc(size_t);
+PCRE_EXP_DECL void  pcre_free(void *);
+PCRE_EXP_DECL void *pcre_stack_malloc(size_t);
+PCRE_EXP_DECL void  pcre_stack_free(void *);
+PCRE_EXP_DECL int   pcre_callout(pcre_callout_block *);
+#endif  /* VPCOMPAT */
+
+/* Exported PCRE functions */
+
+PCRE_EXP_DECL pcre *pcre_compile(const char *, int, const char **, int *,
+                  const unsigned char *);
+PCRE_EXP_DECL pcre *pcre_compile2(const char *, int, int *, const char **,
+                  int *, const unsigned char *);
+PCRE_EXP_DECL int  pcre_config(int, void *);
+PCRE_EXP_DECL int  pcre_copy_named_substring(const pcre *, const char *,
+                  int *, int, const char *, char *, int);
+PCRE_EXP_DECL int  pcre_copy_substring(const char *, int *, int, int, char *,
+                  int);
+PCRE_EXP_DECL int  pcre_dfa_exec(const pcre *, const pcre_extra *,
+                  const char *, int, int, int, int *, int , int *, int);
+PCRE_EXP_DECL int  pcre_exec(const pcre *, const pcre_extra *, PCRE_SPTR,
+                   int, int, int, int *, int);
+PCRE_EXP_DECL void pcre_free_substring(const char *);
+PCRE_EXP_DECL void pcre_free_substring_list(const char **);
+PCRE_EXP_DECL int  pcre_fullinfo(const pcre *, const pcre_extra *, int,
+                  void *);
+PCRE_EXP_DECL int  pcre_get_named_substring(const pcre *, const char *,
+                  int *, int, const char *, const char **);
+PCRE_EXP_DECL int  pcre_get_stringnumber(const pcre *, const char *);
+PCRE_EXP_DECL int  pcre_get_stringtable_entries(const pcre *, const char *,
+                  char **, char **);
+PCRE_EXP_DECL int  pcre_get_substring(const char *, int *, int, int,
+                  const char **);
+PCRE_EXP_DECL int  pcre_get_substring_list(const char *, int *, int,
+                  const char ***);
+PCRE_EXP_DECL int  pcre_info(const pcre *, int *, int *);
+PCRE_EXP_DECL const unsigned char *pcre_maketables(void);
+PCRE_EXP_DECL int  pcre_refcount(pcre *, int);
+PCRE_EXP_DECL pcre_extra *pcre_study(const pcre *, int, const char **);
+PCRE_EXP_DECL const char *pcre_version(void);
+
+#ifdef __cplusplus
+}  /* extern "C" */
+#endif
+
+#endif /* End of pcre.h */
diff --git a/extensions/regex/sdk/smsdk_config.h b/extensions/regex/sdk/smsdk_config.h
new file mode 100644
index 00000000..0889a8f5
--- /dev/null
+++ b/extensions/regex/sdk/smsdk_config.h
@@ -0,0 +1,79 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Sample Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#ifndef _INCLUDE_SOURCEMOD_EXTENSION_CONFIG_H_
+#define _INCLUDE_SOURCEMOD_EXTENSION_CONFIG_H_
+
+/**
+ * @file smsdk_config.h
+ * @brief Contains macros for configuring basic extension information.
+ */
+
+/* Basic information exposed publicly */
+#define SMEXT_CONF_NAME			"Regex"
+#define SMEXT_CONF_DESCRIPTION	"Provides regex natives for plugins"
+#define SMEXT_CONF_VERSION		"SVN_FULL_VERSION"
+#define SMEXT_CONF_AUTHOR		"AlliedModders LLC"
+#define SMEXT_CONF_URL			"http://www.sourcemod.net/"
+#define SMEXT_CONF_LOGTAG		"REGEX"
+#define SMEXT_CONF_LICENSE		"GPL"
+#define SMEXT_CONF_DATESTRING	__DATE__
+
+/** 
+ * @brief Exposes plugin's main interface.
+ */
+#define SMEXT_LINK(name) SDKExtension *g_pExtensionIface = name;
+
+/**
+ * @brief Sets whether or not this plugin required Metamod.
+ * NOTE: Uncomment to enable, comment to disable.
+ */
+//#define SMEXT_CONF_METAMOD		
+
+/** Enable interfaces you want to use here by uncommenting lines */
+//#define SMEXT_ENABLE_FORWARDSYS
+#define SMEXT_ENABLE_HANDLESYS
+//#define SMEXT_ENABLE_PLAYERHELPERS
+//#define SMEXT_ENABLE_DBMANAGER
+//#define SMEXT_ENABLE_GAMECONF
+//#define SMEXT_ENABLE_MEMUTILS
+//#define SMEXT_ENABLE_GAMEHELPERS
+//#define SMEXT_ENABLE_TIMERSYS
+//#define SMEXT_ENABLE_THREADER
+//#define SMEXT_ENABLE_LIBSYS
+//#define SMEXT_ENABLE_MENUS
+//#define SMEXT_ENABLE_ADTFACTORY
+//#define SMEXT_ENABLE_PLUGINSYS
+//#define SMEXT_ENABLE_ADMINSYS
+//#define SMEXT_ENABLE_TEXTPARSERS
+#define SMEXT_ENABLE_USERMSGS
+
+#endif // _INCLUDE_SOURCEMOD_EXTENSION_CONFIG_H_
diff --git a/extensions/regex/sdk/smsdk_ext.cpp b/extensions/regex/sdk/smsdk_ext.cpp
new file mode 100644
index 00000000..0c728f00
--- /dev/null
+++ b/extensions/regex/sdk/smsdk_ext.cpp
@@ -0,0 +1,455 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Base Extension Code
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include <stdio.h>
+#include <malloc.h>
+#include "smsdk_ext.h"
+
+/**
+ * @file smsdk_ext.cpp
+ * @brief Contains wrappers for making Extensions easier to write.
+ */
+
+IExtension *myself = NULL;				/**< Ourself */
+IShareSys *g_pShareSys = NULL;			/**< Share system */
+IShareSys *sharesys = NULL;				/**< Share system */
+ISourceMod *g_pSM = NULL;				/**< SourceMod helpers */
+ISourceMod *smutils = NULL;				/**< SourceMod helpers */
+
+#if defined SMEXT_ENABLE_FORWARDSYS
+IForwardManager *g_pForwards = NULL;	/**< Forward system */
+IForwardManager *forwards = NULL;		/**< Forward system */
+#endif
+#if defined SMEXT_ENABLE_HANDLESYS
+IHandleSys *g_pHandleSys = NULL;		/**< Handle system */
+IHandleSys *handlesys = NULL;			/**< Handle system */
+#endif
+#if defined SMEXT_ENABLE_PLAYERHELPERS
+IPlayerManager *playerhelpers = NULL;	/**< Player helpers */
+#endif //SMEXT_ENABLE_PLAYERHELPERS
+#if defined SMEXT_ENABLE_DBMANAGER
+IDBManager *dbi = NULL;					/**< DB Manager */
+#endif //SMEXT_ENABLE_DBMANAGER
+#if defined SMEXT_ENABLE_GAMECONF
+IGameConfigManager *gameconfs = NULL;	/**< Game config manager */
+#endif //SMEXT_ENABLE_DBMANAGER
+#if defined SMEXT_ENABLE_MEMUTILS
+IMemoryUtils *memutils = NULL;
+#endif //SMEXT_ENABLE_DBMANAGER
+#if defined SMEXT_ENABLE_GAMEHELPERS
+IGameHelpers *gamehelpers = NULL;
+#endif
+#if defined SMEXT_ENABLE_TIMERSYS
+ITimerSystem *timersys = NULL;
+#endif
+#if defined SMEXT_ENABLE_ADTFACTORY
+IADTFactory *adtfactory = NULL;
+#endif
+#if defined SMEXT_ENABLE_THREADER
+IThreader *threader = NULL;
+#endif
+#if defined SMEXT_ENABLE_LIBSYS
+ILibrarySys *libsys = NULL;
+#endif
+#if defined SMEXT_ENABLE_PLUGINSYS
+SourceMod::IPluginManager *plsys;
+#endif
+#if defined SMEXT_ENABLE_MENUS
+IMenuManager *menus = NULL;
+#endif
+#if defined SMEXT_ENABLE_ADMINSYS
+IAdminSystem *adminsys = NULL;
+#endif
+#if defined SMEXT_ENABLE_TEXTPARSERS
+ITextParsers *textparsers = NULL;
+#endif
+#if defined SMEXT_ENABLE_USERMSGS
+IUserMessages *usermsgs = NULL;
+#endif
+
+/** Exports the main interface */
+PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
+{
+	return g_pExtensionIface;
+}
+
+SDKExtension::SDKExtension()
+{
+#if defined SMEXT_CONF_METAMOD
+	m_SourceMMLoaded = false;
+	m_WeAreUnloaded = false;
+	m_WeGotPauseChange = false;
+#endif
+}
+
+bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
+{
+	g_pShareSys = sharesys = sys;
+	myself = me;
+
+#if defined SMEXT_CONF_METAMOD
+	m_WeAreUnloaded = true;
+
+	if (!m_SourceMMLoaded)
+	{
+		if (error)
+		{
+			snprintf(error, maxlength, "Metamod attach failed");
+		}
+		return false;
+	}
+#endif
+	SM_GET_IFACE(SOURCEMOD, g_pSM);
+	smutils = g_pSM;
+#if defined SMEXT_ENABLE_HANDLESYS
+	SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
+	handlesys = g_pHandleSys;
+#endif
+#if defined SMEXT_ENABLE_FORWARDSYS
+	SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
+	forwards = g_pForwards;
+#endif
+#if defined SMEXT_ENABLE_PLAYERHELPERS
+	SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
+#endif
+#if defined SMEXT_ENABLE_DBMANAGER
+	SM_GET_IFACE(DBI, dbi);
+#endif
+#if defined SMEXT_ENABLE_GAMECONF
+	SM_GET_IFACE(GAMECONFIG, gameconfs);
+#endif
+#if defined SMEXT_ENABLE_MEMUTILS
+	SM_GET_IFACE(MEMORYUTILS, memutils);
+#endif
+#if defined SMEXT_ENABLE_GAMEHELPERS
+	SM_GET_IFACE(GAMEHELPERS, gamehelpers);
+#endif
+#if defined SMEXT_ENABLE_TIMERSYS
+	SM_GET_IFACE(TIMERSYS, timersys);
+#endif
+#if defined SMEXT_ENABLE_ADTFACTORY
+	SM_GET_IFACE(ADTFACTORY, adtfactory);
+#endif
+#if defined SMEXT_ENABLE_THREADER
+	SM_GET_IFACE(THREADER, threader);
+#endif
+#if defined SMEXT_ENABLE_LIBSYS
+	SM_GET_IFACE(LIBRARYSYS, libsys);
+#endif
+#if defined SMEXT_ENABLE_PLUGINSYS
+	SM_GET_IFACE(PLUGINSYSTEM, plsys);
+#endif
+#if defined SMEXT_ENABLE_MENUS
+	SM_GET_IFACE(MENUMANAGER, menus);
+#endif
+#if defined SMEXT_ENABLE_ADMINSYS
+	SM_GET_IFACE(ADMINSYS, adminsys);
+#endif
+#if defined SMEXT_ENABLE_TEXTPARSERS
+	SM_GET_IFACE(TEXTPARSERS, textparsers);
+#endif
+#if defined SMEXT_ENABLE_USERMSGS
+	SM_GET_IFACE(USERMSGS, usermsgs);
+#endif
+
+	if (SDK_OnLoad(error, maxlength, late))
+	{
+#if defined SMEXT_CONF_METAMOD
+		m_WeAreUnloaded = true;
+#endif
+		return true;
+	}
+
+	return false;
+}
+
+bool SDKExtension::IsMetamodExtension()
+{
+#if defined SMEXT_CONF_METAMOD
+	return true;
+#else
+	return false;
+#endif
+}
+
+void SDKExtension::OnExtensionPauseChange(bool state)
+{
+#if defined SMEXT_CONF_METAMOD
+	m_WeGotPauseChange = true;
+#endif
+	SDK_OnPauseChange(state);
+}
+
+void SDKExtension::OnExtensionsAllLoaded()
+{
+	SDK_OnAllLoaded();
+}
+
+void SDKExtension::OnExtensionUnload()
+{
+#if defined SMEXT_CONF_METAMOD
+	m_WeAreUnloaded = true;
+#endif
+	SDK_OnUnload();
+}
+
+const char *SDKExtension::GetExtensionAuthor()
+{
+	return SMEXT_CONF_AUTHOR;
+}
+
+const char *SDKExtension::GetExtensionDateString()
+{
+	return SMEXT_CONF_DATESTRING;
+}
+
+const char *SDKExtension::GetExtensionDescription()
+{
+	return SMEXT_CONF_DESCRIPTION;
+}
+
+const char *SDKExtension::GetExtensionVerString()
+{
+	return SMEXT_CONF_VERSION;
+}
+
+const char *SDKExtension::GetExtensionName()
+{
+	return SMEXT_CONF_NAME;
+}
+
+const char *SDKExtension::GetExtensionTag()
+{
+	return SMEXT_CONF_LOGTAG;
+}
+
+const char *SDKExtension::GetExtensionURL()
+{
+	return SMEXT_CONF_URL;
+}
+
+bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
+{
+	return true;
+}
+
+void SDKExtension::SDK_OnUnload()
+{
+}
+
+void SDKExtension::SDK_OnPauseChange(bool paused)
+{
+}
+
+void SDKExtension::SDK_OnAllLoaded()
+{
+}
+
+#if defined SMEXT_CONF_METAMOD
+
+PluginId g_PLID = 0;						/**< Metamod plugin ID */
+ISmmPlugin *g_PLAPI = NULL;					/**< Metamod plugin API */
+SourceHook::ISourceHook *g_SHPtr = NULL;	/**< SourceHook pointer */
+ISmmAPI *g_SMAPI = NULL;					/**< SourceMM API pointer */
+
+IVEngineServer *engine = NULL;				/**< IVEngineServer pointer */
+IServerGameDLL *gamedll = NULL;				/**< IServerGameDLL pointer */
+
+/** Exposes the extension to Metamod */
+SMM_API void *PL_EXPOSURE(const char *name, int *code)
+{
+#if defined METAMOD_PLAPI_VERSION
+	if (name && !strcmp(name, METAMOD_PLAPI_NAME))
+#else
+	if (name && !strcmp(name, PLAPI_NAME))
+#endif
+	{
+		if (code)
+		{
+			*code = IFACE_OK;
+		}
+		return static_cast<void *>(g_pExtensionIface);
+	}
+
+	if (code)
+	{
+		*code = IFACE_FAILED;
+	}
+
+	return NULL;
+}
+
+bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
+{
+	PLUGIN_SAVEVARS();
+
+#if defined METAMOD_PLAPI_VERSION
+	GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
+	GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
+#else
+	GET_V_IFACE_ANY(GetServerFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
+	GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
+#endif
+
+	m_SourceMMLoaded = true;
+
+	return SDK_OnMetamodLoad(ismm, error, maxlen, late);
+}
+
+bool SDKExtension::Unload(char *error, size_t maxlen)
+{
+	if (!m_WeAreUnloaded)
+	{
+		if (error)
+		{
+			snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
+		}
+		return false;
+	}
+
+	return SDK_OnMetamodUnload(error, maxlen);
+}
+
+bool SDKExtension::Pause(char *error, size_t maxlen)
+{
+	if (!m_WeGotPauseChange)
+	{
+		if (error)
+		{
+			snprintf(error, maxlen, "This extension must be paused by SourceMod.");
+		}
+		return false;
+	}
+
+	m_WeGotPauseChange = false;
+
+	return SDK_OnMetamodPauseChange(true, error, maxlen);
+}
+
+bool SDKExtension::Unpause(char *error, size_t maxlen)
+{
+	if (!m_WeGotPauseChange)
+	{
+		if (error)
+		{
+			snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
+		}
+		return false;
+	}
+
+	m_WeGotPauseChange = false;
+
+	return SDK_OnMetamodPauseChange(false, error, maxlen);
+}
+
+const char *SDKExtension::GetAuthor()
+{
+	return GetExtensionAuthor();
+}
+
+const char *SDKExtension::GetDate()
+{
+	return GetExtensionDateString();
+}
+
+const char *SDKExtension::GetDescription()
+{
+	return GetExtensionDescription();
+}
+
+const char *SDKExtension::GetLicense()
+{
+	return SMEXT_CONF_LICENSE;
+}
+
+const char *SDKExtension::GetLogTag()
+{
+	return GetExtensionTag();
+}
+
+const char *SDKExtension::GetName()
+{
+	return GetExtensionName();
+}
+
+const char *SDKExtension::GetURL()
+{
+	return GetExtensionURL();
+}
+
+const char *SDKExtension::GetVersion()
+{
+	return GetExtensionVerString();
+}
+
+bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
+{
+	return true;
+}
+
+bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
+{
+	return true;
+}
+
+bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
+{
+	return true;
+}
+
+#endif
+
+/* Overload a few things to prevent libstdc++ linking */
+#if defined __linux__
+extern "C" void __cxa_pure_virtual(void)
+{
+}
+
+void *operator new(size_t size)
+{
+	return malloc(size);
+}
+
+void *operator new[](size_t size) 
+{
+	return malloc(size);
+}
+
+void operator delete(void *ptr) 
+{
+	free(ptr);
+}
+
+void operator delete[](void * ptr)
+{
+	free(ptr);
+}
+#endif
diff --git a/extensions/regex/sdk/smsdk_ext.h b/extensions/regex/sdk/smsdk_ext.h
new file mode 100644
index 00000000..4702f2a2
--- /dev/null
+++ b/extensions/regex/sdk/smsdk_ext.h
@@ -0,0 +1,327 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Base Extension Code
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#ifndef _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
+#define _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
+
+/**
+ * @file smsdk_ext.h
+ * @brief Contains wrappers for making Extensions easier to write.
+ */
+
+#include "smsdk_config.h"
+#include <IExtensionSys.h>
+#include <IHandleSys.h>
+#include <sp_vm_api.h>
+#include <sm_platform.h>
+#include <ISourceMod.h>
+#if defined SMEXT_ENABLE_FORWARDSYS
+#include <IForwardSys.h>
+#endif //SMEXT_ENABLE_FORWARDSYS
+#if defined SMEXT_ENABLE_PLAYERHELPERS
+#include <IPlayerHelpers.h>
+#endif //SMEXT_ENABLE_PlAYERHELPERS
+#if defined SMEXT_ENABLE_DBMANAGER
+#include <IDBDriver.h>
+#endif //SMEXT_ENABLE_DBMANAGER
+#if defined SMEXT_ENABLE_GAMECONF
+#include <IGameConfigs.h>
+#endif
+#if defined SMEXT_ENABLE_MEMUTILS
+#include <IMemoryUtils.h>
+#endif
+#if defined SMEXT_ENABLE_GAMEHELPERS
+#include <IGameHelpers.h>
+#endif
+#if defined SMEXT_ENABLE_TIMERSYS
+#include <ITimerSystem.h>
+#endif
+#if defined SMEXT_ENABLE_ADTFACTORY
+#include <IADTFactory.h>
+#endif
+#if defined SMEXT_ENABLE_THREADER
+#include <IThreader.h>
+#endif
+#if defined SMEXT_ENABLE_LIBSYS
+#include <ILibrarySys.h>
+#endif
+#if defined SMEXT_ENABLE_PLUGINSYS
+#include <IPluginSys.h>
+#endif
+#if defined SMEXT_ENABLE_MENUS
+#include <IMenuManager.h>
+#endif
+#if defined SMEXT_ENABLE_ADMINSYS
+#include <IAdminSystem.h>
+#endif
+#if defined SMEXT_ENABLE_TEXTPARSERS
+#include <ITextParsers.h>
+#endif
+#if defined SMEXT_ENABLE_USERMSGS
+#include <IUserMessages.h>
+#endif
+
+#if defined SMEXT_CONF_METAMOD
+#include <ISmmPlugin.h>
+#include <eiface.h>
+#endif
+
+using namespace SourceMod;
+using namespace SourcePawn;
+
+class SDKExtension : 
+#if defined SMEXT_CONF_METAMOD
+	public ISmmPlugin,
+#endif
+	public IExtensionInterface
+{
+public:
+	/** Constructor */
+	SDKExtension();
+public:
+	/**
+	 * @brief This is called after the initial loading sequence has been processed.
+	 *
+	 * @param error		Error message buffer.
+	 * @param maxlength	Size of error message buffer.
+	 * @param late		Whether or not the module was loaded after map load.
+	 * @return			True to succeed loading, false to fail.
+	 */
+	virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
+	
+	/**
+	 * @brief This is called right before the extension is unloaded.
+	 */
+	virtual void SDK_OnUnload();
+
+	/**
+	 * @brief This is called once all known extensions have been loaded.
+	 */
+	virtual void SDK_OnAllLoaded();
+
+	/**
+	 * @brief Called when the pause state is changed.
+	 */
+	virtual void SDK_OnPauseChange(bool paused);
+
+#if defined SMEXT_CONF_METAMOD
+	/**
+	 * @brief Called when Metamod is attached, before the extension version is called.
+	 *
+	 * @param error			Error buffer.
+	 * @param maxlength		Maximum size of error buffer.
+	 * @param late			Whether or not Metamod considers this a late load.
+	 * @return				True to succeed, false to fail.
+	 */
+	virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
+
+	/**
+	 * @brief Called when Metamod is detaching, after the extension version is called.
+	 * NOTE: By default this is blocked unless sent from SourceMod.
+	 *
+	 * @param error			Error buffer.
+	 * @param maxlength		Maximum size of error buffer.
+	 * @return				True to succeed, false to fail.
+	 */
+	virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
+
+	/**
+	 * @brief Called when Metamod's pause state is changing.
+	 * NOTE: By default this is blocked unless sent from SourceMod.
+	 *
+	 * @param paused		Pause state being set.
+	 * @param error			Error buffer.
+	 * @param maxlength		Maximum size of error buffer.
+	 * @return				True to succeed, false to fail.
+	 */
+	virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
+#endif
+
+public: //IExtensionInterface
+	virtual bool OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late);
+	virtual void OnExtensionUnload();
+	virtual void OnExtensionsAllLoaded();
+
+	/** Returns whether or not this is a Metamod-based extension */
+	virtual bool IsMetamodExtension();
+
+	/**
+	 * @brief Called when the pause state changes.
+	 * 
+	 * @param state			True if being paused, false if being unpaused.
+	 */
+	virtual void OnExtensionPauseChange(bool state);
+
+	/** Returns name */
+	virtual const char *GetExtensionName();
+	/** Returns URL */
+	virtual const char *GetExtensionURL();
+	/** Returns log tag */
+	virtual const char *GetExtensionTag();
+	/** Returns author */
+	virtual const char *GetExtensionAuthor();
+	/** Returns version string */
+	virtual const char *GetExtensionVerString();
+	/** Returns description string */
+	virtual const char *GetExtensionDescription();
+	/** Returns date string */
+	virtual const char *GetExtensionDateString();
+#if defined SMEXT_CONF_METAMOD
+public: //ISmmPlugin
+	/** Called when the extension is attached to Metamod. */
+	virtual bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlength, bool late);
+	/** Returns the author to MM */
+	virtual const char *GetAuthor();
+	/** Returns the name to MM */
+	virtual const char *GetName();
+	/** Returns the description to MM */
+	virtual const char *GetDescription();
+	/** Returns the URL to MM */
+	virtual const char *GetURL();
+	/** Returns the license to MM */
+	virtual const char *GetLicense();
+	/** Returns the version string to MM */
+	virtual const char *GetVersion();
+	/** Returns the date string to MM */
+	virtual const char *GetDate();
+	/** Returns the logtag to MM */
+	virtual const char *GetLogTag();
+	/** Called on unload */
+	virtual bool Unload(char *error, size_t maxlength);
+	/** Called on pause */
+	virtual bool Pause(char *error, size_t maxlength);
+	/** Called on unpause */
+	virtual bool Unpause(char *error, size_t maxlength);
+private:
+	bool m_SourceMMLoaded;
+	bool m_WeAreUnloaded;
+	bool m_WeGotPauseChange;
+#endif
+};
+
+extern SDKExtension *g_pExtensionIface;
+extern IExtension *myself;
+
+extern IShareSys *g_pShareSys;
+extern IShareSys *sharesys;				/* Note: Newer name */
+extern ISourceMod *g_pSM;
+extern ISourceMod *smutils;				/* Note: Newer name */
+
+/* Optional interfaces are below */
+#if defined SMEXT_ENABLE_FORWARDSYS
+extern IForwardManager *g_pForwards;
+extern IForwardManager *forwards;		/* Note: Newer name */
+#endif //SMEXT_ENABLE_FORWARDSYS
+#if defined SMEXT_ENABLE_HANDLESYS
+extern IHandleSys *g_pHandleSys;
+extern IHandleSys *handlesys;			/* Note: Newer name */
+#endif //SMEXT_ENABLE_HANDLESYS
+#if defined SMEXT_ENABLE_PLAYERHELPERS
+extern IPlayerManager *playerhelpers;
+#endif //SMEXT_ENABLE_PLAYERHELPERS
+#if defined SMEXT_ENABLE_DBMANAGER
+extern IDBManager *dbi;
+#endif //SMEXT_ENABLE_DBMANAGER
+#if defined SMEXT_ENABLE_GAMECONF
+extern IGameConfigManager *gameconfs;
+#endif //SMEXT_ENABLE_DBMANAGER
+#if defined SMEXT_ENABLE_MEMUTILS
+extern IMemoryUtils *memutils;
+#endif
+#if defined SMEXT_ENABLE_GAMEHELPERS
+extern IGameHelpers *gamehelpers;
+#endif
+#if defined SMEXT_ENABLE_TIMERSYS
+extern ITimerSystem *timersys;
+#endif
+#if defined SMEXT_ENABLE_ADTFACTORY
+extern IADTFactory *adtfactory;
+#endif
+#if defined SMEXT_ENABLE_THREADER
+extern IThreader *threader;
+#endif
+#if defined SMEXT_ENABLE_LIBSYS
+extern ILibrarySys *libsys;
+#endif
+#if defined SMEXT_ENABLE_PLUGINSYS
+extern SourceMod::IPluginManager *plsys;
+#endif
+#if defined SMEXT_ENABLE_MENUS
+extern IMenuManager *menus;
+#endif
+#if defined SMEXT_ENABLE_ADMINSYS
+extern IAdminSystem *adminsys;
+#endif
+#if defined SMEXT_ENABLE_USERMSGS
+extern IUserMessages *usermsgs;
+#endif
+
+#if defined SMEXT_CONF_METAMOD
+PLUGIN_GLOBALVARS();
+extern IVEngineServer *engine;
+extern IServerGameDLL *gamedll;
+#endif
+
+/** Creates a SourceMod interface macro pair */
+#define SM_MKIFACE(name) SMINTERFACE_##name##_NAME, SMINTERFACE_##name##_VERSION
+/** Automates retrieving SourceMod interfaces */
+#define SM_GET_IFACE(prefix, addr) \
+	if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \
+	{ \
+		if (error != NULL && maxlength) \
+		{ \
+			size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
+			if (len >= maxlength) \
+			{ \
+				error[maxlength - 1] = '\0'; \
+			} \
+		} \
+		return false; \
+	}
+/** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */
+#define SM_GET_LATE_IFACE(prefix, addr) \
+	g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)
+/** Validates a SourceMod interface pointer */
+#define SM_CHECK_IFACE(prefix, addr) \
+	if (!addr) \
+	{ \
+		if (error != NULL && maxlength) \
+		{ \
+			size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
+			if (len >= maxlength) \
+			{ \
+				error[maxlength - 1] = '\0'; \
+			} \
+		} \
+		return false; \
+	}
+
+#endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
diff --git a/extensions/tf2/Makefile.ep1 b/extensions/tf2/Makefile.ep1
new file mode 100644
index 00000000..87f0423f
--- /dev/null
+++ b/extensions/tf2/Makefile.ep1
@@ -0,0 +1,88 @@
+#(C)2004-2006 SourceMM Development Team
+# Makefile written by David "BAILOPAN" Anderson
+
+SMSDK = ../smsdk
+SRCDS = ~/srcds_l/steaminstall
+SOURCEMM = ../sourcemm
+HL2SDK = ../hl2sdk
+
+#####################################
+### EDIT BELOW FOR OTHER PROJECTS ###
+#####################################
+
+PROJECT = game.tf2
+
+#Uncomment for SourceMM-enabled extensions
+LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
+
+OBJECTS = sdk/smsdk_ext.cpp extension.cpp natives.cpp RegNatives.cpp
+
+##############################################
+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
+##############################################
+
+C_OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
+C_DEBUG_FLAGS = -g -ggdb3
+CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
+CPP = gcc-4.1
+
+HL2PUB = $(HL2SDK)/public
+HL2LIB = $(HL2SDK)/linux_sdk
+
+LINK = $(LINK_HL2) -static-libgcc
+
+INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
+          -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
+	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
+
+CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp \
+	-Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H
+CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
+
+################################################
+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
+################################################
+
+ifeq "$(DEBUG)" "true"
+	BIN_DIR = Debug
+	CFLAGS += $(C_DEBUG_FLAGS)
+else
+	BIN_DIR = Release
+	CFLAGS += $(C_OPT_FLAGS)
+endif
+
+
+GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
+ifeq "$(GCC_VERSION)" "4"
+	CPPFLAGS += $(CPP_GCC4_FLAGS)
+endif
+
+BINARY = $(PROJECT).ext.so
+
+OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
+
+$(BIN_DIR)/%.o: %.cpp
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
+
+all:
+	mkdir -p $(BIN_DIR)/sdk
+	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
+	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
+	$(MAKE) -f Makefile.ep1 extension
+
+extension: $(OBJ_LINUX)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+
+debug:	
+	$(MAKE) -f Makefile.ep1 all DEBUG=true
+
+default: all
+
+clean:
+	rm -rf Release/*.o
+	rm -rf Release/sdk/*.o
+	rm -rf Release/$(BINARY)
+	rm -rf Debug/*.o
+	rm -rf Debug/sdk/*.o
+	rm -rf Debug/$(BINARY)
diff --git a/extensions/tf2/Makefile.ep2 b/extensions/tf2/Makefile.ep2
new file mode 100644
index 00000000..ff407f70
--- /dev/null
+++ b/extensions/tf2/Makefile.ep2
@@ -0,0 +1,88 @@
+#(C)2004-2006 SourceMM Development Team
+# Makefile written by David "BAILOPAN" Anderson
+
+SMSDK = ../smsdk
+SRCDS = ~/srcds_l/steaminstall
+SOURCEMM = ../sourcemm
+HL2SDK = ../hl2sdk-ob
+
+#####################################
+### EDIT BELOW FOR OTHER PROJECTS ###
+#####################################
+
+PROJECT = game.tf2
+
+#Uncomment for SourceMM-enabled extensions
+LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
+
+OBJECTS = sdk/smsdk_ext.cpp extension.cpp natives.cpp RegNatives.cpp
+
+##############################################
+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
+##############################################
+
+C_OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
+C_DEBUG_FLAGS = -g -ggdb3
+CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
+CPP = gcc-4.1
+
+HL2PUB = $(HL2SDK)/public
+HL2LIB = $(HL2SDK)/linux_sdk
+
+LINK = $(LINK_HL2) -static-libgcc
+
+INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
+          -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
+	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
+
+CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp \
+	-Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -DORANGEBOX_BUILD
+CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
+
+################################################
+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
+################################################
+
+ifeq "$(DEBUG)" "true"
+	BIN_DIR = Debug
+	CFLAGS += $(C_DEBUG_FLAGS)
+else
+	BIN_DIR = Release
+	CFLAGS += $(C_OPT_FLAGS)
+endif
+
+
+GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
+ifeq "$(GCC_VERSION)" "4"
+	CPPFLAGS += $(CPP_GCC4_FLAGS)
+endif
+
+BINARY = $(PROJECT).ext.so
+
+OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
+
+$(BIN_DIR)/%.o: %.cpp
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
+
+all:
+	mkdir -p $(BIN_DIR)/sdk
+	ln -sf $(SRCDS)/orangebox/bin/vstdlib_i486.so vstdlib_i486.so
+	ln -sf $(SRCDS)/orangebox/bin/tier0_i486.so tier0_i486.so
+	$(MAKE) -f Makefile.ep2 extension
+
+extension: $(OBJ_LINUX)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+
+debug:	
+	$(MAKE) -f Makefile.ep2 all DEBUG=true
+
+default: all
+
+clean:
+	rm -rf Release/*.o
+	rm -rf Release/sdk/*.o
+	rm -rf Release/$(BINARY)
+	rm -rf Debug/*.o
+	rm -rf Debug/sdk/*.o
+	rm -rf Debug/$(BINARY)
diff --git a/extensions/tf2/Makefile.orig b/extensions/tf2/Makefile.orig
new file mode 100644
index 00000000..f31cf6f2
--- /dev/null
+++ b/extensions/tf2/Makefile.orig
@@ -0,0 +1,88 @@
+#(C)2004-2006 SourceMM Development Team
+# Makefile written by David "BAILOPAN" Anderson
+
+SMSDK = ../smsdk
+SRCDS = ~/srcds_l/steaminstall
+SOURCEMM = ../sourcemm
+HL2SDK = ../hl2sdk
+
+#####################################
+### EDIT BELOW FOR OTHER PROJECTS ###
+#####################################
+
+PROJECT = game.tf2
+
+#Uncomment for SourceMM-enabled extensions
+LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so 
+
+OBJECTS = sdk/smsdk_ext.cpp extension.cpp natives.cpp RegNatives.cpp
+
+##############################################
+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
+##############################################
+
+C_OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
+C_DEBUG_FLAGS = -g -ggdb3
+CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
+CPP = gcc-4.1
+
+HL2PUB = $(HL2SDK)/public
+HL2LIB = $(HL2SDK)/linux_sdk
+
+LINK = $(LINK_HL2) -static-libgcc
+
+INCLUDE = -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
+          -I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SOURCEMM) -I$(SOURCEMM)/sourcehook -I$(SOURCEMM)/sourcemm \
+	  -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
+
+CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
+	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp \
+	-Wall -Werror -fPIC -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H
+CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
+
+################################################
+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
+################################################
+
+ifeq "$(DEBUG)" "true"
+	BIN_DIR = Debug
+	CFLAGS += $(C_DEBUG_FLAGS)
+else
+	BIN_DIR = Release
+	CFLAGS += $(C_OPT_FLAGS)
+endif
+
+
+GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
+ifeq "$(GCC_VERSION)" "4"
+	CPPFLAGS += $(CPP_GCC4_FLAGS)
+endif
+
+BINARY = $(PROJECT).ext.so
+
+OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
+
+$(BIN_DIR)/%.o: %.cpp
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
+
+all:
+	mkdir -p $(BIN_DIR)/sdk
+	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
+	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
+	$(MAKE) -f Makefile.orig extension
+
+extension: $(OBJ_LINUX)
+	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
+
+debug:	
+	$(MAKE) -f Makefile.orig all DEBUG=true
+
+default: all
+
+clean:
+	rm -rf Release/*.o
+	rm -rf Release/sdk/*.o
+	rm -rf Release/$(BINARY)
+	rm -rf Debug/*.o
+	rm -rf Debug/sdk/*.o
+	rm -rf Debug/$(BINARY)
diff --git a/extensions/tf2/RegNatives.cpp b/extensions/tf2/RegNatives.cpp
new file mode 100644
index 00000000..2f001b78
--- /dev/null
+++ b/extensions/tf2/RegNatives.cpp
@@ -0,0 +1,50 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Counter-Strike:Source Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include "extension.h"
+#include "RegNatives.h"
+
+RegNatives g_RegNatives;
+
+void RegNatives::Register(ICallWrapper *pWrapper)
+{
+	m_List.push_back(pWrapper);
+}
+
+void RegNatives::UnregisterAll()
+{
+	SourceHook::List<ICallWrapper *>::iterator iter;
+
+	for (iter=m_List.begin(); iter!=m_List.end(); iter++)
+	{
+		(*iter)->Destroy();
+	}
+}
diff --git a/extensions/tf2/RegNatives.h b/extensions/tf2/RegNatives.h
new file mode 100644
index 00000000..1913530f
--- /dev/null
+++ b/extensions/tf2/RegNatives.h
@@ -0,0 +1,48 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Counter-Strike:Source Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#ifndef _INCLUDE_TF2TOOLS_REGNATIVES_H_
+#define _INCLUDE_TF2TOOLS_REGNATIVES_H_
+
+#include <sh_list.h>
+
+class RegNatives
+{
+public:
+	void Register(ICallWrapper *pWrapper);
+	void UnregisterAll();
+private:
+	SourceHook::List<ICallWrapper *> m_List;
+};
+
+extern RegNatives g_RegNatives;
+
+#endif //_INCLUDE_TF2TOOLS_REGNATIVES_H_
diff --git a/extensions/tf2/extension.cpp b/extensions/tf2/extension.cpp
new file mode 100644
index 00000000..ae67d077
--- /dev/null
+++ b/extensions/tf2/extension.cpp
@@ -0,0 +1,229 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Counter-Strike:Source Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include "extension.h"
+#include "RegNatives.h"
+#include "iplayerinfo.h"
+
+/**
+ * @file extension.cpp
+ * @brief Implement extension code here.
+ */
+
+
+TF2Tools g_TF2Tools;
+IGameConfig *g_pGameConf = NULL;
+
+IBinTools *g_pBinTools = NULL;
+
+SMEXT_LINK(&g_TF2Tools);
+
+SendProp *playerSharedOffset;
+
+extern sp_nativeinfo_t g_TFNatives[];
+
+bool TF2Tools::SDK_OnLoad(char *error, size_t maxlength, bool late)
+{
+	sharesys->AddDependency(myself, "bintools.ext", true, true);
+
+	char conf_error[255];
+	if (!gameconfs->LoadGameConfigFile("sm-tf2.games", &g_pGameConf, conf_error, sizeof(conf_error)))
+	{
+		if (error)
+		{
+			snprintf(error, maxlength, "Could not read sm-tf2.games.txt: %s", conf_error);
+		}
+		return false;
+	}
+
+	sharesys->AddNatives(myself, g_TFNatives);
+	sharesys->RegisterLibrary(myself, "tf2");
+
+	playerSharedOffset = gamehelpers->FindInSendTable("CTFPlayer", "DT_TFPlayerShared");
+
+	playerhelpers->RegisterCommandTargetProcessor(this);
+
+	return true;
+}
+
+bool TF2Tools::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool late)
+{
+	GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
+
+	return true;
+}
+
+void TF2Tools::SDK_OnUnload()
+{
+	g_RegNatives.UnregisterAll();
+	gameconfs->CloseGameConfigFile(g_pGameConf);
+}
+
+void TF2Tools::SDK_OnAllLoaded()
+{
+	SM_GET_LATE_IFACE(BINTOOLS, g_pBinTools);
+}
+
+bool TF2Tools::QueryRunning(char *error, size_t maxlength)
+{
+	SM_CHECK_IFACE(BINTOOLS, g_pBinTools);
+
+	return true;
+}
+
+bool TF2Tools::QueryInterfaceDrop(SMInterface *pInterface)
+{
+	if (pInterface == g_pBinTools)
+	{
+		return false;
+	}
+
+	return IExtensionInterface::QueryInterfaceDrop(pInterface);
+}
+
+void TF2Tools::NotifyInterfaceDrop(SMInterface *pInterface)
+{
+	g_RegNatives.UnregisterAll();
+}
+
+size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...)
+{
+	va_list ap;
+	va_start(ap, fmt);
+	size_t len = vsnprintf(buffer, maxlength, fmt, ap);
+	va_end(ap);
+
+	if (len >= maxlength)
+	{
+		buffer[maxlength - 1] = '\0';
+		return (maxlength - 1);
+	}
+	else
+	{
+		return len;
+	}
+}
+
+bool TF2Tools::ProcessCommandTarget(cmd_target_info_t *info)
+{
+	int max_clients;
+	IPlayerInfo *pInfo;
+	unsigned int team_index = 0;
+	IGamePlayer *pPlayer, *pAdmin;
+
+	if ((info->flags & COMMAND_FILTER_NO_MULTI) == COMMAND_FILTER_NO_MULTI)
+	{
+		return false;
+	}
+
+	if (info->admin)
+	{
+		if ((pAdmin = playerhelpers->GetGamePlayer(info->admin)) == NULL)
+		{
+			return false;
+		}
+		if (!pAdmin->IsInGame())
+		{
+			return false;
+		}
+	}
+	else
+	{
+		pAdmin = NULL;
+	}
+
+	if (strcmp(info->pattern, "@red") == 0 )
+	{
+		team_index = 2;
+	}
+	else if (strcmp(info->pattern, "@blue") == 0)
+	{
+		team_index = 3;
+	}
+	else
+	{
+		return false;
+	}
+
+	info->num_targets = 0;
+
+	max_clients = playerhelpers->GetMaxClients();
+	for (int i = 1; 
+		 i <= max_clients && (cell_t)info->num_targets < info->max_targets; 
+		 i++)
+	{
+		if ((pPlayer = playerhelpers->GetGamePlayer(i)) == NULL)
+		{
+			continue;
+		}
+		if (!pPlayer->IsInGame())
+		{
+			continue;
+		}
+		if ((pInfo = pPlayer->GetPlayerInfo()) == NULL)
+		{
+			continue;
+		}
+		if (pInfo->GetTeamIndex() != (int)team_index)
+		{
+			continue;
+		}
+		if (playerhelpers->FilterCommandTarget(pAdmin, pPlayer, info->flags) 
+			!= COMMAND_TARGET_VALID)
+		{
+			continue;
+		}
+		info->targets[info->num_targets] = i;
+		info->num_targets++;
+	}
+
+	if (info->num_targets == 0)
+	{
+		info->reason = COMMAND_TARGET_EMPTY_FILTER;
+	}
+	else
+	{
+		info->reason = COMMAND_TARGET_VALID;
+	}
+
+	info->target_name_style = COMMAND_TARGETNAME_RAW;
+	if (team_index == 2)
+	{
+		UTIL_Format(info->target_name, info->target_name_maxlength, "Red Team");
+	}
+	else if (team_index == 3)
+	{
+		UTIL_Format(info->target_name, info->target_name_maxlength, "Blue Team");
+	}
+
+	return true;
+}
+
diff --git a/extensions/tf2/extension.h b/extensions/tf2/extension.h
new file mode 100644
index 00000000..91090fd9
--- /dev/null
+++ b/extensions/tf2/extension.h
@@ -0,0 +1,130 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Counter-Strike:Source Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#ifndef _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
+#define _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
+
+/**
+ * @file extension.h
+ * @brief Sample extension code header.
+ */
+
+#include "smsdk_ext.h"
+#include <IBinTools.h>
+
+/**
+ * @brief Sample implementation of the SDK Extension.
+ * Note: Uncomment one of the pre-defined virtual functions in order to use it.
+ */
+class TF2Tools : 
+	public SDKExtension,
+	public ICommandTargetProcessor
+{
+public:
+	/**
+	 * @brief This is called after the initial loading sequence has been processed.
+	 *
+	 * @param error		Error message buffer.
+	 * @param maxlength	Size of error message buffer.
+	 * @param late		Whether or not the module was loaded after map load.
+	 * @return			True to succeed loading, false to fail.
+	 */
+	virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
+	
+	/**
+	 * @brief This is called right before the extension is unloaded.
+	 */
+	virtual void SDK_OnUnload();
+
+	/**
+	 * @brief This is called once all known extensions have been loaded.
+	 * Note: It is is a good idea to add natives here, if any are provided.
+	 */
+	virtual void SDK_OnAllLoaded();
+
+	/**
+	 * @brief Called when the pause state is changed.
+	 */
+	//virtual void SDK_OnPauseChange(bool paused);
+
+	/**
+	 * @brief this is called when Core wants to know if your extension is working.
+	 *
+	 * @param error		Error message buffer.
+	 * @param maxlength	Size of error message buffer.
+	 * @return			True if working, false otherwise.
+	 */
+	virtual bool QueryRunning(char *error, size_t maxlength);
+
+	void NotifyInterfaceDrop(SMInterface *pInterface);
+	bool QueryInterfaceDrop(SMInterface *pInterface);
+public:
+	bool ProcessCommandTarget(cmd_target_info_t *info);
+public:
+#if defined SMEXT_CONF_METAMOD
+	/**
+	 * @brief Called when Metamod is attached, before the extension version is called.
+	 *
+	 * @param error			Error buffer.
+	 * @param maxlength		Maximum size of error buffer.
+	 * @param late			Whether or not Metamod considers this a late load.
+	 * @return				True to succeed, false to fail.
+	 */
+	virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
+
+	/**
+	 * @brief Called when Metamod is detaching, after the extension version is called.
+	 * NOTE: By default this is blocked unless sent from SourceMod.
+	 *
+	 * @param error			Error buffer.
+	 * @param maxlength		Maximum size of error buffer.
+	 * @return				True to succeed, false to fail.
+	 */
+	//virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
+
+	/**
+	 * @brief Called when Metamod's pause state is changing.
+	 * NOTE: By default this is blocked unless sent from SourceMod.
+	 *
+	 * @param paused		Pause state being set.
+	 * @param error			Error buffer.
+	 * @param maxlength		Maximum size of error buffer.
+	 * @return				True to succeed, false to fail.
+	 */
+	//virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
+#endif
+};
+
+extern IBinTools *g_pBinTools;
+extern IGameConfig *g_pGameConf;
+extern SendProp *playerSharedOffset;
+
+#endif // _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
diff --git a/extensions/tf2/msvc8/tf2.sln b/extensions/tf2/msvc8/tf2.sln
new file mode 100644
index 00000000..5aa5277e
--- /dev/null
+++ b/extensions/tf2/msvc8/tf2.sln
@@ -0,0 +1,32 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tf2", "tf2.vcproj", "{B3E797CF-4E77-4C9D-B8A8-7589B6902206}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug - Episode1|Win32 = Debug - Episode1|Win32
+		Debug - Old Metamod|Win32 = Debug - Old Metamod|Win32
+		Debug - Orange Box|Win32 = Debug - Orange Box|Win32
+		Release - Episode 1|Win32 = Release - Episode 1|Win32
+		Release - Old Metamod|Win32 = Release - Old Metamod|Win32
+		Release - Orange Box|Win32 = Release - Orange Box|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Episode1|Win32.ActiveCfg = Debug - Episode1|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Episode1|Win32.Build.0 = Debug - Episode1|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Old Metamod|Win32.ActiveCfg = Debug - Old Metamod|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Old Metamod|Win32.Build.0 = Debug - Old Metamod|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Episode 1|Win32.ActiveCfg = Release - Episode 1|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Episode 1|Win32.Build.0 = Release - Episode 1|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Old Metamod|Win32.ActiveCfg = Release - Old Metamod|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Old Metamod|Win32.Build.0 = Release - Old Metamod|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
+		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Orange Box|Win32.Build.0 = Release - Orange Box|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/extensions/tf2/msvc8/tf2.vcproj b/extensions/tf2/msvc8/tf2.vcproj
new file mode 100644
index 00000000..67172d95
--- /dev/null
+++ b/extensions/tf2/msvc8/tf2.vcproj
@@ -0,0 +1,727 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="tf2"
+	ProjectGUID="{B3E797CF-4E77-4C9D-B8A8-7589B6902206}"
+	RootNamespace="tf2"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="tier0.lib"
+				OutputFile="$(OutDir)\game.tf2.ext.dll"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
+				RuntimeLibrary="0"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)\game.tf2.ext.dll"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug - Episode1|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				OutputFile="$(OutDir)\game.tf2.ext.dll"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug - Orange Box|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="$(HL2SDKOB)\lib\public\tier0.lib $(HL2SDKOB)\lib\public\tier1.lib $(HL2SDKOB)\lib\public\vstdlib.lib $(HL2SDKOB)\lib\public\mathlib.lib"
+				OutputFile="$(OutDir)\game.tf2.ext.dll"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug - Old Metamod|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				OutputFile="$(OutDir)\game.tf2.ext.dll"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release - Old Metamod|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
+				RuntimeLibrary="0"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				OutputFile="$(OutDir)\game.tf2.ext.dll"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release - Orange Box|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
+				RuntimeLibrary="0"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="$(HL2SDKOB)\lib\public\tier0.lib $(HL2SDKOB)\lib\public\tier1.lib $(HL2SDKOB)\lib\public\vstdlib.lib $(HL2SDKOB)\lib\public\mathlib.lib"
+				OutputFile="$(OutDir)\game.tf2.ext.dll"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release - Episode 1|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
+				RuntimeLibrary="0"
+				EnableEnhancedInstructionSet="1"
+				RuntimeTypeInfo="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				OutputFile="$(OutDir)\game.tf2.ext.dll"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\extension.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\natives.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\RegNatives.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\extension.h"
+				>
+			</File>
+			<File
+				RelativePath="..\RegNatives.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+			<File
+				RelativePath="..\version.rc"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="SourceMod SDK"
+			UniqueIdentifier="{31958233-BB2D-4e41-A8F9-CE8A4684F436}"
+			>
+			<File
+				RelativePath="..\sdk\smsdk_config.h"
+				>
+			</File>
+			<File
+				RelativePath="..\sdk\smsdk_ext.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\sdk\smsdk_ext.h"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/extensions/tf2/natives.cpp b/extensions/tf2/natives.cpp
new file mode 100644
index 00000000..7d6887f0
--- /dev/null
+++ b/extensions/tf2/natives.cpp
@@ -0,0 +1,159 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Counter-Strike:Source Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include "extension.h"
+#include "RegNatives.h"
+
+#define REGISTER_NATIVE_ADDR(name, code) \
+	void *addr; \
+	if (!g_pGameConf->GetMemSig(name, &addr)) \
+	{ \
+		return pContext->ThrowNativeError("Failed to locate function"); \
+	} \
+	code; \
+	g_RegNatives.Register(pWrapper);
+
+inline CBaseEntity *GetCBaseEntity(int num, bool onlyPlayers)
+{
+	edict_t *pEdict = engine->PEntityOfEntIndex(num);
+	if (!pEdict || pEdict->IsFree())
+	{
+		return NULL;
+	}
+
+	if (num > 0 && num < playerhelpers->GetMaxClients())
+	{
+		IGamePlayer *pPlayer = playerhelpers->GetGamePlayer(pEdict);
+		if (!pPlayer || !pPlayer->IsConnected())
+		{
+			return NULL;
+		}
+	}
+	else if (onlyPlayers)
+	{
+		return NULL;
+	}
+
+	IServerUnknown *pUnk;
+	if ((pUnk=pEdict->GetUnknown()) == NULL)
+	{
+		return NULL;
+	}
+
+	return pUnk->GetBaseEntity();
+}
+
+
+// native TF2_Burn(client)
+cell_t TF2_Burn(IPluginContext *pContext, const cell_t *params)
+{
+	static ICallWrapper *pWrapper = NULL;
+
+	// CTFPlayerShared::Burn(CTFPlayer*)
+	if (!pWrapper)
+	{
+		REGISTER_NATIVE_ADDR("Burn", 
+			PassInfo pass[1]; \
+			pass[0].flags = PASSFLAG_BYVAL; \
+			pass[0].size = sizeof(CBaseEntity *); \
+			pass[0].type = PassType_Basic; \
+			pWrapper = g_pBinTools->CreateCall(addr, CallConv_ThisCall, NULL, pass, 1))
+	}
+
+	CBaseEntity *pEntity;
+	if (!(pEntity=GetCBaseEntity(params[1], true)))
+	{
+		return pContext->ThrowNativeError("Client index %d is not valid", params[1]);
+	}
+
+	void *obj = (void *)((uint8_t *)pEntity + playerSharedOffset->GetOffset());
+
+	unsigned char vstk[sizeof(void *) + sizeof(CBaseEntity *)];
+	unsigned char *vptr = vstk;
+
+	*(void **)vptr = obj;
+	vptr += sizeof(void *);
+	*(CBaseEntity **)vptr = pEntity;
+
+	pWrapper->Execute(vstk, NULL);
+
+	return 1;
+}
+
+// native TF2_Invuln(client, bool:something, bool:anothersomething)
+cell_t TF2_Invuln(IPluginContext *pContext, const cell_t *params)
+{
+	static ICallWrapper *pWrapper = NULL;
+
+	//CTFPlayerShared::SetInvulnerable(bool, bool)
+	if (!pWrapper)
+	{
+		REGISTER_NATIVE_ADDR("Invuln", 
+			PassInfo pass[2]; \
+			pass[0].flags = PASSFLAG_BYVAL; \
+			pass[0].size = sizeof(bool); \
+			pass[0].type = PassType_Basic; \
+			pass[1].flags = PASSFLAG_BYVAL; \
+			pass[1].size = sizeof(bool); \
+			pass[1].type = PassType_Basic; \
+			pWrapper = g_pBinTools->CreateCall(addr, CallConv_ThisCall, NULL, pass, 2))
+	}
+
+	CBaseEntity *pEntity;
+	if (!(pEntity=GetCBaseEntity(params[1], true)))
+	{
+		return pContext->ThrowNativeError("Client index %d is not valid", params[1]);
+	}
+
+	void *obj = (void *)((uint8_t *)pEntity + playerSharedOffset->GetOffset());
+
+	unsigned char vstk[sizeof(void *) + 2*sizeof(bool)];
+	unsigned char *vptr = vstk;
+
+
+	*(void **)vptr = obj;
+	vptr += sizeof(bool);
+	*(bool *)vptr = !!params[2];
+	vptr += sizeof(bool);
+	*(bool *)vptr = !!params[3];
+
+	pWrapper->Execute(vstk, NULL);
+
+	return 1;
+}
+
+
+sp_nativeinfo_t g_TFNatives[] = 
+{
+	{"TF2_Burn",						TF2_Burn},
+	{"TF2_Invuln",					TF2_Invuln},
+	{NULL,							NULL}
+};
diff --git a/extensions/tf2/sdk/smsdk_config.h b/extensions/tf2/sdk/smsdk_config.h
new file mode 100644
index 00000000..09397393
--- /dev/null
+++ b/extensions/tf2/sdk/smsdk_config.h
@@ -0,0 +1,76 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Counter-Strike:Source Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#ifndef _INCLUDE_SOURCEMOD_EXTENSION_CONFIG_H_
+#define _INCLUDE_SOURCEMOD_EXTENSION_CONFIG_H_
+
+/**
+ * @file smsdk_config.h
+ * @brief Contains macros for configuring basic extension information.
+ */
+
+#include "svn_version.h"
+
+/* Basic information exposed publicly */
+#define SMEXT_CONF_NAME			"TF2 Tools"
+#define SMEXT_CONF_DESCRIPTION	"TF2 extended functionality"
+#define SMEXT_CONF_VERSION		SVN_FULL_VERSION
+#define SMEXT_CONF_AUTHOR		"AlliedModders LLC"
+#define SMEXT_CONF_URL			"http://www.sourcemod.net/"
+#define SMEXT_CONF_LOGTAG		"TF2"
+#define SMEXT_CONF_LICENSE		"GPL"
+#define SMEXT_CONF_DATESTRING	__DATE__
+
+/** 
+ * @brief Exposes plugin's main interface.
+ */
+#define SMEXT_LINK(name) SDKExtension *g_pExtensionIface = name;
+
+/**
+ * @brief Sets whether or not this plugin required Metamod.
+ * NOTE: Uncomment to enable, comment to disable.
+ */
+#define SMEXT_CONF_METAMOD
+
+/** Enable interfaces you want to use here by uncommenting lines */
+//#define SMEXT_ENABLE_FORWARDSYS
+//#define SMEXT_ENABLE_HANDLESYS
+#define SMEXT_ENABLE_PLAYERHELPERS
+//#define SMEXT_ENABLE_DBMANAGER
+#define SMEXT_ENABLE_GAMECONF
+//#define SMEXT_ENABLE_MEMUTILS
+#define SMEXT_ENABLE_GAMEHELPERS
+//#define SMEXT_ENABLE_TIMERSYS
+//#define SMEXT_ENABLE_THREADER
+//#define SMEXT_ENABLE_LIBSYS
+//#define SMEXT_ENABLE_USERMSGS
+
+#endif // _INCLUDE_SOURCEMOD_EXTENSION_CONFIG_H_
diff --git a/extensions/tf2/sdk/smsdk_ext.cpp b/extensions/tf2/sdk/smsdk_ext.cpp
new file mode 100644
index 00000000..f5e6f3fc
--- /dev/null
+++ b/extensions/tf2/sdk/smsdk_ext.cpp
@@ -0,0 +1,422 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Base Extension Code
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#include <stdio.h>
+#include <malloc.h>
+#include "smsdk_ext.h"
+
+/**
+ * @file smsdk_ext.cpp
+ * @brief Contains wrappers for making Extensions easier to write.
+ */
+
+IExtension *myself = NULL;				/**< Ourself */
+IShareSys *g_pShareSys = NULL;			/**< Share system */
+IShareSys *sharesys = NULL;				/**< Share system */
+ISourceMod *g_pSM = NULL;				/**< SourceMod helpers */
+ISourceMod *smutils = NULL;				/**< SourceMod helpers */
+
+#if defined SMEXT_ENABLE_FORWARDSYS
+IForwardManager *g_pForwards = NULL;	/**< Forward system */
+IForwardManager *forwards = NULL;		/**< Forward system */
+#endif
+#if defined SMEXT_ENABLE_HANDLESYS
+IHandleSys *g_pHandleSys = NULL;		/**< Handle system */
+IHandleSys *handlesys = NULL;			/**< Handle system */
+#endif
+#if defined SMEXT_ENABLE_PLAYERHELPERS
+IPlayerManager *playerhelpers = NULL;	/**< Player helpers */
+#endif //SMEXT_ENABLE_PLAYERHELPERS
+#if defined SMEXT_ENABLE_DBMANAGER
+IDBManager *dbi = NULL;					/**< DB Manager */
+#endif //SMEXT_ENABLE_DBMANAGER
+#if defined SMEXT_ENABLE_GAMECONF
+IGameConfigManager *gameconfs = NULL;	/**< Game config manager */
+#endif //SMEXT_ENABLE_DBMANAGER
+#if defined SMEXT_ENABLE_MEMUTILS
+IMemoryUtils *memutils = NULL;
+#endif //SMEXT_ENABLE_DBMANAGER
+#if defined SMEXT_ENABLE_GAMEHELPERS
+IGameHelpers *gamehelpers = NULL;
+#endif
+#if defined SMEXT_ENABLE_TIMERSYS
+ITimerSystem *timersys = NULL;
+#endif
+#if defined SMEXT_ENABLE_ADTFACTORY
+IADTFactory *adtfactory = NULL;
+#endif
+#if defined SMEXT_ENABLE_THREADER
+IThreader *threader = NULL;
+#endif
+#if defined SMEXT_ENABLE_LIBSYS
+ILibrarySys *libsys = NULL;
+#endif
+#if defined SMEXT_ENABLE_USERMSGS
+IUserMessages *usermsgs = NULL;
+#endif
+
+/** Exports the main interface */
+PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
+{
+	return g_pExtensionIface;
+}
+
+SDKExtension::SDKExtension()
+{
+#if defined SMEXT_CONF_METAMOD
+	m_SourceMMLoaded = false;
+	m_WeAreUnloaded = false;
+	m_WeGotPauseChange = false;
+#endif
+}
+
+bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
+{
+	g_pShareSys = sharesys = sys;
+	myself = me;
+
+#if defined SMEXT_CONF_METAMOD
+	m_WeAreUnloaded = true;
+
+	if (!m_SourceMMLoaded)
+	{
+		if (error)
+		{
+			snprintf(error, maxlength, "Metamod attach failed");
+		}
+		return false;
+	}
+#endif
+	SM_GET_IFACE(SOURCEMOD, g_pSM);
+	smutils = g_pSM;
+#if defined SMEXT_ENABLE_HANDLESYS
+	SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
+	handlesys = g_pHandleSys;
+#endif
+#if defined SMEXT_ENABLE_FORWARDSYS
+	SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
+	forwards = g_pForwards;
+#endif
+#if defined SMEXT_ENABLE_PLAYERHELPERS
+	SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
+#endif
+#if defined SMEXT_ENABLE_DBMANAGER
+	SM_GET_IFACE(DBI, dbi);
+#endif
+#if defined SMEXT_ENABLE_GAMECONF
+	SM_GET_IFACE(GAMECONFIG, gameconfs);
+#endif
+#if defined SMEXT_ENABLE_MEMUTILS
+	SM_GET_IFACE(MEMORYUTILS, memutils);
+#endif
+#if defined SMEXT_ENABLE_GAMEHELPERS
+	SM_GET_IFACE(GAMEHELPERS, gamehelpers);
+#endif
+#if defined SMEXT_ENABLE_TIMERSYS
+	SM_GET_IFACE(TIMERSYS, timersys);
+#endif
+#if defined SMEXT_ENABLE_ADTFACTORY
+	SM_GET_IFACE(ADTFACTORY, adtfactory);
+#endif
+#if defined SMEXT_ENABLE_THREADER
+	SM_GET_IFACE(THREADER, threader);
+#endif
+#if defined SMEXT_ENABLE_LIBSYS
+	SM_GET_IFACE(LIBRARYSYS, libsys);
+#endif
+#if defined SMEXT_ENABLE_USERMSGS
+	SM_GET_IFACE(USERMSGS, usermsgs);
+#endif
+
+	if (SDK_OnLoad(error, maxlength, late))
+	{
+#if defined SMEXT_CONF_METAMOD
+		m_WeAreUnloaded = true;
+#endif
+		return true;
+	}
+
+	return false;
+}
+
+bool SDKExtension::IsMetamodExtension()
+{
+#if defined SMEXT_CONF_METAMOD
+	return true;
+#else
+	return false;
+#endif
+}
+
+void SDKExtension::OnExtensionPauseChange(bool state)
+{
+#if defined SMEXT_CONF_METAMOD
+	m_WeGotPauseChange = true;
+#endif
+	SDK_OnPauseChange(state);
+}
+
+void SDKExtension::OnExtensionsAllLoaded()
+{
+	SDK_OnAllLoaded();
+}
+
+void SDKExtension::OnExtensionUnload()
+{
+#if defined SMEXT_CONF_METAMOD
+	m_WeAreUnloaded = true;
+#endif
+	SDK_OnUnload();
+}
+
+const char *SDKExtension::GetExtensionAuthor()
+{
+	return SMEXT_CONF_AUTHOR;
+}
+
+const char *SDKExtension::GetExtensionDateString()
+{
+	return SMEXT_CONF_DATESTRING;
+}
+
+const char *SDKExtension::GetExtensionDescription()
+{
+	return SMEXT_CONF_DESCRIPTION;
+}
+
+const char *SDKExtension::GetExtensionVerString()
+{
+	return SMEXT_CONF_VERSION;
+}
+
+const char *SDKExtension::GetExtensionName()
+{
+	return SMEXT_CONF_NAME;
+}
+
+const char *SDKExtension::GetExtensionTag()
+{
+	return SMEXT_CONF_LOGTAG;
+}
+
+const char *SDKExtension::GetExtensionURL()
+{
+	return SMEXT_CONF_URL;
+}
+
+bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
+{
+	return true;
+}
+
+void SDKExtension::SDK_OnUnload()
+{
+}
+
+void SDKExtension::SDK_OnPauseChange(bool paused)
+{
+}
+
+void SDKExtension::SDK_OnAllLoaded()
+{
+}
+
+#if defined SMEXT_CONF_METAMOD
+
+PluginId g_PLID = 0;						/**< Metamod plugin ID */
+ISmmPlugin *g_PLAPI = NULL;					/**< Metamod plugin API */
+SourceHook::ISourceHook *g_SHPtr = NULL;	/**< SourceHook pointer */
+ISmmAPI *g_SMAPI = NULL;					/**< SourceMM API pointer */
+
+IVEngineServer *engine = NULL;				/**< IVEngineServer pointer */
+IServerGameDLL *gamedll = NULL;				/**< IServerGameDLL pointer */
+
+/** Exposes the extension to Metamod */
+SMM_API void *PL_EXPOSURE(const char *name, int *code)
+{
+	if (name && !strcmp(name, METAMOD_PLAPI_NAME))
+	{
+		if (code)
+		{
+			*code = IFACE_OK;
+		}
+		return static_cast<void *>(g_pExtensionIface);
+	}
+
+	if (code)
+	{
+		*code = IFACE_FAILED;
+	}
+
+	return NULL;
+}
+
+bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
+{
+	PLUGIN_SAVEVARS();
+
+	GET_V_IFACE_ANY(GetServerFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
+	GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
+
+	m_SourceMMLoaded = true;
+
+	return SDK_OnMetamodLoad(ismm, error, maxlen, late);
+}
+
+bool SDKExtension::Unload(char *error, size_t maxlen)
+{
+	if (!m_WeAreUnloaded)
+	{
+		if (error)
+		{
+			snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
+		}
+		return false;
+	}
+
+	return SDK_OnMetamodUnload(error, maxlen);
+}
+
+bool SDKExtension::Pause(char *error, size_t maxlen)
+{
+	if (!m_WeGotPauseChange)
+	{
+		if (error)
+		{
+			snprintf(error, maxlen, "This extension must be paused by SourceMod.");
+		}
+		return false;
+	}
+
+	m_WeGotPauseChange = false;
+
+	return SDK_OnMetamodPauseChange(true, error, maxlen);
+}
+
+bool SDKExtension::Unpause(char *error, size_t maxlen)
+{
+	if (!m_WeGotPauseChange)
+	{
+		if (error)
+		{
+			snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
+		}
+		return false;
+	}
+
+	m_WeGotPauseChange = false;
+
+	return SDK_OnMetamodPauseChange(false, error, maxlen);
+}
+
+const char *SDKExtension::GetAuthor()
+{
+	return GetExtensionAuthor();
+}
+
+const char *SDKExtension::GetDate()
+{
+	return GetExtensionDateString();
+}
+
+const char *SDKExtension::GetDescription()
+{
+	return GetExtensionDescription();
+}
+
+const char *SDKExtension::GetLicense()
+{
+	return SMEXT_CONF_LICENSE;
+}
+
+const char *SDKExtension::GetLogTag()
+{
+	return GetExtensionTag();
+}
+
+const char *SDKExtension::GetName()
+{
+	return GetExtensionName();
+}
+
+const char *SDKExtension::GetURL()
+{
+	return GetExtensionURL();
+}
+
+const char *SDKExtension::GetVersion()
+{
+	return GetExtensionVerString();
+}
+
+bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
+{
+	return true;
+}
+
+bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
+{
+	return true;
+}
+
+bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
+{
+	return true;
+}
+
+#endif
+
+/* Overload a few things to prevent libstdc++ linking */
+#if defined __linux__
+extern "C" void __cxa_pure_virtual(void)
+{
+}
+
+void *operator new(size_t size)
+{
+	return malloc(size);
+}
+
+void *operator new[](size_t size) 
+{
+	return malloc(size);
+}
+
+void operator delete(void *ptr) 
+{
+	free(ptr);
+}
+
+void operator delete[](void * ptr)
+{
+	free(ptr);
+}
+#endif
diff --git a/extensions/tf2/sdk/smsdk_ext.h b/extensions/tf2/sdk/smsdk_ext.h
new file mode 100644
index 00000000..c137616b
--- /dev/null
+++ b/extensions/tf2/sdk/smsdk_ext.h
@@ -0,0 +1,310 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Base Extension Code
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#ifndef _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
+#define _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
+
+/**
+ * @file smsdk_ext.h
+ * @brief Contains wrappers for making Extensions easier to write.
+ */
+
+#include "smsdk_config.h"
+#include <IExtensionSys.h>
+#include <IHandleSys.h>
+#include <sp_vm_api.h>
+#include <sm_platform.h>
+#include <ISourceMod.h>
+#if defined SMEXT_ENABLE_FORWARDSYS
+#include <IForwardSys.h>
+#endif //SMEXT_ENABLE_FORWARDSYS
+#if defined SMEXT_ENABLE_PLAYERHELPERS
+#include <IPlayerHelpers.h>
+#endif //SMEXT_ENABLE_PlAYERHELPERS
+#if defined SMEXT_ENABLE_DBMANAGER
+#include <IDBDriver.h>
+#endif //SMEXT_ENABLE_DBMANAGER
+#if defined SMEXT_ENABLE_GAMECONF
+#include <IGameConfigs.h>
+#endif
+#if defined SMEXT_ENABLE_MEMUTILS
+#include <IMemoryUtils.h>
+#endif
+#if defined SMEXT_ENABLE_GAMEHELPERS
+#include <IGameHelpers.h>
+#endif
+#if defined SMEXT_ENABLE_TIMERSYS
+#include <ITimerSystem.h>
+#endif
+#if defined SMEXT_ENABLE_ADTFACTORY
+#include <IADTFactory.h>
+#endif
+#if defined SMEXT_ENABLE_THREADER
+#include <IThreader.h>
+#endif
+#if defined SMEXT_ENABLE_LIBSYS
+#include <ILibrarySys.h>
+#endif
+#if defined SMEXT_ENABLE_USERMSGS
+#include <IUserMessages.h>
+#endif
+
+#if defined SMEXT_CONF_METAMOD
+#include <ISmmPlugin.h>
+#include <eiface.h>
+#endif
+
+#if !defined METAMOD_PLAPI_VERSION
+	#include <metamod_wrappers.h>
+#endif
+
+using namespace SourceMod;
+using namespace SourcePawn;
+
+class SDKExtension : 
+#if defined SMEXT_CONF_METAMOD
+	public ISmmPlugin,
+#endif
+	public IExtensionInterface
+{
+public:
+	/** Constructor */
+	SDKExtension();
+public:
+	/**
+	 * @brief This is called after the initial loading sequence has been processed.
+	 *
+	 * @param error		Error message buffer.
+	 * @param maxlength	Size of error message buffer.
+	 * @param late		Whether or not the module was loaded after map load.
+	 * @return			True to succeed loading, false to fail.
+	 */
+	virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
+	
+	/**
+	 * @brief This is called right before the extension is unloaded.
+	 */
+	virtual void SDK_OnUnload();
+
+	/**
+	 * @brief This is called once all known extensions have been loaded.
+	 */
+	virtual void SDK_OnAllLoaded();
+
+	/**
+	 * @brief Called when the pause state is changed.
+	 */
+	virtual void SDK_OnPauseChange(bool paused);
+
+#if defined SMEXT_CONF_METAMOD
+	/**
+	 * @brief Called when Metamod is attached, before the extension version is called.
+	 *
+	 * @param error			Error buffer.
+	 * @param maxlength		Maximum size of error buffer.
+	 * @param late			Whether or not Metamod considers this a late load.
+	 * @return				True to succeed, false to fail.
+	 */
+	virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
+
+	/**
+	 * @brief Called when Metamod is detaching, after the extension version is called.
+	 * NOTE: By default this is blocked unless sent from SourceMod.
+	 *
+	 * @param error			Error buffer.
+	 * @param maxlength		Maximum size of error buffer.
+	 * @return				True to succeed, false to fail.
+	 */
+	virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
+
+	/**
+	 * @brief Called when Metamod's pause state is changing.
+	 * NOTE: By default this is blocked unless sent from SourceMod.
+	 *
+	 * @param paused		Pause state being set.
+	 * @param error			Error buffer.
+	 * @param maxlength		Maximum size of error buffer.
+	 * @return				True to succeed, false to fail.
+	 */
+	virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
+#endif
+
+public: //IExtensionInterface
+	virtual bool OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late);
+	virtual void OnExtensionUnload();
+	virtual void OnExtensionsAllLoaded();
+
+	/** Returns whether or not this is a Metamod-based extension */
+	virtual bool IsMetamodExtension();
+
+	/**
+	 * @brief Called when the pause state changes.
+	 * 
+	 * @param state			True if being paused, false if being unpaused.
+	 */
+	virtual void OnExtensionPauseChange(bool state);
+
+	/** Returns name */
+	virtual const char *GetExtensionName();
+	/** Returns URL */
+	virtual const char *GetExtensionURL();
+	/** Returns log tag */
+	virtual const char *GetExtensionTag();
+	/** Returns author */
+	virtual const char *GetExtensionAuthor();
+	/** Returns version string */
+	virtual const char *GetExtensionVerString();
+	/** Returns description string */
+	virtual const char *GetExtensionDescription();
+	/** Returns date string */
+	virtual const char *GetExtensionDateString();
+#if defined SMEXT_CONF_METAMOD
+public: //ISmmPlugin
+	/** Called when the extension is attached to Metamod. */
+	virtual bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlength, bool late);
+	/** Returns the author to MM */
+	virtual const char *GetAuthor();
+	/** Returns the name to MM */
+	virtual const char *GetName();
+	/** Returns the description to MM */
+	virtual const char *GetDescription();
+	/** Returns the URL to MM */
+	virtual const char *GetURL();
+	/** Returns the license to MM */
+	virtual const char *GetLicense();
+	/** Returns the version string to MM */
+	virtual const char *GetVersion();
+	/** Returns the date string to MM */
+	virtual const char *GetDate();
+	/** Returns the logtag to MM */
+	virtual const char *GetLogTag();
+	/** Called on unload */
+	virtual bool Unload(char *error, size_t maxlength);
+	/** Called on pause */
+	virtual bool Pause(char *error, size_t maxlength);
+	/** Called on unpause */
+	virtual bool Unpause(char *error, size_t maxlength);
+private:
+	bool m_SourceMMLoaded;
+	bool m_WeAreUnloaded;
+	bool m_WeGotPauseChange;
+#endif
+};
+
+extern SDKExtension *g_pExtensionIface;
+extern IExtension *myself;
+
+extern IShareSys *g_pShareSys;
+extern IShareSys *sharesys;				/* Note: Newer name */
+extern ISourceMod *g_pSM;
+extern ISourceMod *smutils;				/* Note: Newer name */
+
+/* Optional interfaces are below */
+#if defined SMEXT_ENABLE_FORWARDSYS
+extern IForwardManager *g_pForwards;
+extern IForwardManager *forwards;		/* Note: Newer name */
+#endif //SMEXT_ENABLE_FORWARDSYS
+#if defined SMEXT_ENABLE_HANDLESYS
+extern IHandleSys *g_pHandleSys;
+extern IHandleSys *handlesys;			/* Note: Newer name */
+#endif //SMEXT_ENABLE_HANDLESYS
+#if defined SMEXT_ENABLE_PLAYERHELPERS
+extern IPlayerManager *playerhelpers;
+#endif //SMEXT_ENABLE_PLAYERHELPERS
+#if defined SMEXT_ENABLE_DBMANAGER
+extern IDBManager *dbi;
+#endif //SMEXT_ENABLE_DBMANAGER
+#if defined SMEXT_ENABLE_GAMECONF
+extern IGameConfigManager *gameconfs;
+#endif //SMEXT_ENABLE_DBMANAGER
+#if defined SMEXT_ENABLE_MEMUTILS
+extern IMemoryUtils *memutils;
+#endif
+#if defined SMEXT_ENABLE_GAMEHELPERS
+extern IGameHelpers *gamehelpers;
+#endif
+#if defined SMEXT_ENABLE_TIMERSYS
+extern ITimerSystem *timersys;
+#endif
+#if defined SMEXT_ENABLE_ADTFACTORY
+extern IADTFactory *adtfactory;
+#endif
+#if defined SMEXT_ENABLE_THREADER
+extern IThreader *threader;
+#endif
+#if defined SMEXT_ENABLE_LIBSYS
+extern ILibrarySys *libsys;
+#endif
+#if defined SMEXT_ENABLE_USERMSGS
+extern IUserMessages *usermsgs;
+#endif
+
+#if defined SMEXT_CONF_METAMOD
+PLUGIN_GLOBALVARS();
+extern IVEngineServer *engine;
+extern IServerGameDLL *gamedll;
+#endif
+
+/** Creates a SourceMod interface macro pair */
+#define SM_MKIFACE(name) SMINTERFACE_##name##_NAME, SMINTERFACE_##name##_VERSION
+/** Automates retrieving SourceMod interfaces */
+#define SM_GET_IFACE(prefix, addr) \
+	if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \
+	{ \
+		if (error != NULL && maxlength) \
+		{ \
+			size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
+			if (len >= maxlength) \
+			{ \
+				error[maxlength - 1] = '\0'; \
+			} \
+		} \
+		return false; \
+	}
+/** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */
+#define SM_GET_LATE_IFACE(prefix, addr) \
+	g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)
+/** Validates a SourceMod interface pointer */
+#define SM_CHECK_IFACE(prefix, addr) \
+	if (!addr) \
+	{ \
+		if (error != NULL && maxlength) \
+		{ \
+			size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
+			if (len >= maxlength) \
+			{ \
+				error[maxlength - 1] = '\0'; \
+			} \
+		} \
+		return false; \
+	}
+
+#endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
diff --git a/extensions/tf2/sm-tf2.games.txt b/extensions/tf2/sm-tf2.games.txt
new file mode 100644
index 00000000..3adc88b2
--- /dev/null
+++ b/extensions/tf2/sm-tf2.games.txt
@@ -0,0 +1,21 @@
+"Games"
+{
+	"tf"
+	{
+		"Signatures"
+		{
+			"Burn"
+			{
+				"library"	"server"
+				"windows"	"\x56\x8B\xF1\x8B\x4E\x7C\x8B\x01\x8B\x90\xF8\x00\x00\x00\xFF\xD2\x84\xC0\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x46\x7C"
+				"linux"		"@_ZN15CTFPlayerShared4BurnEP9CTFPlayer"
+			}
+			"Invuln"
+			{
+				"library"	"server"
+				"windows"	"\x8A\x44\x24\x04\x83\xEC\x20\x56\x8B\xF1\x8B\x4E\x08\x57\x8D\x7E\x08\xC1\xE9\x05\x80\xE1\x01\x3A\xC8\x75\x32\x84\xC0"
+				"linux"		"@_ZN15CTFPlayerShared15SetInvulnerableEbb"
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/extensions/tf2/svn_version.h b/extensions/tf2/svn_version.h
new file mode 100644
index 00000000..8873263e
--- /dev/null
+++ b/extensions/tf2/svn_version.h
@@ -0,0 +1,42 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod SDKTools Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+/**
+ * Autogenerated by build scripts
+ */
+
+#ifndef _INCLUDE_SDKTOOLS_VERSION_H_
+#define _INCLUDE_SDKTOOLS_VERSION_H_
+
+#define SVN_FULL_VERSION	"1.0.0.1336"
+#define SVN_FILE_VERSION	1,0,0,1336
+
+#endif //_INCLUDE_SDKTOOLS_VERSION_H_
diff --git a/extensions/tf2/svn_version.tpl b/extensions/tf2/svn_version.tpl
new file mode 100644
index 00000000..ad458193
--- /dev/null
+++ b/extensions/tf2/svn_version.tpl
@@ -0,0 +1,42 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod SDKTools Extension
+ * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+/**
+ * Autogenerated by build scripts
+ */
+
+#ifndef _INCLUDE_SDKTOOLS_VERSION_H_
+#define _INCLUDE_SDKTOOLS_VERSION_H_
+
+#define SVN_FULL_VERSION	"$PMAJOR$.$PMINOR$.$PREVISION$.$LOCAL_BUILD$"
+#define SVN_FILE_VERSION	$PMAJOR$,$PMINOR$,$PREVISION$,$LOCAL_BUILD$
+
+#endif //_INCLUDE_SDKTOOLS_VERSION_H_
diff --git a/extensions/tf2/tf2-test.sp b/extensions/tf2/tf2-test.sp
new file mode 100644
index 00000000..b1239543
--- /dev/null
+++ b/extensions/tf2/tf2-test.sp
@@ -0,0 +1,55 @@
+#include <sourcemod>
+#include "tf2.inc"
+
+public Plugin:myinfo = 
+{
+	name = "TF2 Test",
+	author = "pRED*",
+	description = "Test of Tf2 functions",
+	version = "1.0",
+	url = "www.sourcemod.net"
+}
+
+public OnPluginStart()
+{
+	RegConsoleCmd("sm_burnme", Command_Burn);
+	RegConsoleCmd("sm_invuln", Command_Invuln);
+}
+
+public Action:Command_Burn(client, args)
+{
+	if (client == 0)
+	{
+		return Plugin_Continue;
+	}
+	
+	TF2_Burn(client);
+	
+	return Plugin_Continue;
+}
+
+public Action:Command_Invuln(client, args)
+{
+	if (client == 0)
+	{
+		return Plugin_Continue;
+	}
+	
+	if (args < 2)
+	{
+		return Plugin_Continue;	
+	}
+	
+	decl String:text[10];
+	decl String:text2[10];
+	GetCmdArg(1, text, sizeof(text));
+	GetCmdArg(2, text2, sizeof(text2));
+	
+	new bool:one = !!StringToInt(text);
+	new bool:two = !!StringToInt(text2);
+
+	TF2_Invuln(client, one, two)
+	
+	return Plugin_Continue;
+}
+
diff --git a/extensions/tf2/tf2.inc b/extensions/tf2/tf2.inc
new file mode 100644
index 00000000..c2c4c39a
--- /dev/null
+++ b/extensions/tf2/tf2.inc
@@ -0,0 +1,24 @@
+#if defined _tf2_included
+ #endinput
+#endif
+#define _tf2_included
+
+
+native TF2_Invuln(client, bool:something, bool:anothersomething);
+
+native TF2_Burn(client);
+
+/**
+ * Do not edit below this line!
+ */
+public Extension:__ext_tf2 = 
+{
+	name = "TF2 Tools",
+	file = "game.tf2.ext",
+	autoload = 0,
+#if defined REQUIRE_EXTENSIONS
+	required = 1,
+#else
+	required = 0,
+#endif
+};
diff --git a/extensions/tf2/version.rc b/extensions/tf2/version.rc
new file mode 100644
index 00000000..37d14dad
--- /dev/null
+++ b/extensions/tf2/version.rc
@@ -0,0 +1,104 @@
+// Microsoft Visual C++ generated resource script.
+//
+//#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "winres.h"
+
+#include "svn_version.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION  SVN_FILE_VERSION
+ PRODUCTVERSION SVN_FILE_VERSION
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "000004b0"
+        BEGIN
+            VALUE "Comments", "SourceMod CS:S Extension"
+            VALUE "FileDescription", "SourceMod CS:S Extension"
+            VALUE "FileVersion", SVN_FULL_VERSION
+            VALUE "InternalName", "SourceMod CS:S Extension"
+            VALUE "LegalCopyright", "Copyright (c) 2004-2007, AlliedModders LLC"
+            VALUE "OriginalFilename", "game.cstrike.ext.dll"
+            VALUE "ProductName", "SourceMod CS:S Extension"
+            VALUE "ProductVersion", SVN_FULL_VERSION
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x0, 1200
+    END
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE 
+BEGIN
+    "#include ""winres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
diff --git a/plugins/adminmenu.sp b/plugins/adminmenu.sp
index 8a68b46c..d3985ed5 100644
--- a/plugins/adminmenu.sp
+++ b/plugins/adminmenu.sp
@@ -45,6 +45,8 @@ public Plugin:myinfo =
 	url = "http://www.sourcemod.net/"
 };
 
+new g_maxPlayers;
+
 /* Forwards */
 new Handle:hOnAdminMenuReady = INVALID_HANDLE;
 new Handle:hOnAdminMenuCreated = INVALID_HANDLE;
@@ -57,6 +59,8 @@ new TopMenuObject:obj_playercmds = INVALID_TOPMENUOBJECT;
 new TopMenuObject:obj_servercmds = INVALID_TOPMENUOBJECT;
 new TopMenuObject:obj_votingcmds = INVALID_TOPMENUOBJECT;
 
+#include "adminmenu/dynamicmenu.sp"
+
 public bool:AskPluginLoad(Handle:myself, bool:late, String:error[], err_max)
 {
 	CreateNative("GetAdminTopMenu", __GetAdminTopMenu);
@@ -91,27 +95,36 @@ public OnConfigsExecuted()
 	}
 }
 
+public OnMapStart()
+{
+	g_maxPlayers = GetMaxClients();
+	
+	ParseConfigs();
+}
+
 public OnAllPluginsLoaded()
 {
-	hAdminMenu = CreateTopMenu(CategoryHandler);
+	hAdminMenu = CreateTopMenu(DefaultCategoryHandler);
 	
 	obj_playercmds = AddToTopMenu(hAdminMenu, 
 		"PlayerCommands",
 		TopMenuObject_Category,
-		CategoryHandler,
+		DefaultCategoryHandler,
 		INVALID_TOPMENUOBJECT);
 
 	obj_servercmds = AddToTopMenu(hAdminMenu,
 		"ServerCommands",
 		TopMenuObject_Category,
-		CategoryHandler,
+		DefaultCategoryHandler,
 		INVALID_TOPMENUOBJECT);
 
 	obj_votingcmds = AddToTopMenu(hAdminMenu,
 		"VotingCommands",
 		TopMenuObject_Category,
-		CategoryHandler,
+		DefaultCategoryHandler,
 		INVALID_TOPMENUOBJECT);
+		
+	BuildDynamicMenu();
 	
 	Call_StartForward(hOnAdminMenuCreated);
 	Call_PushCell(hAdminMenu);
@@ -122,7 +135,7 @@ public OnAllPluginsLoaded()
 	Call_Finish();
 }
 
-public CategoryHandler(Handle:topmenu, 
+public DefaultCategoryHandler(Handle:topmenu, 
 						TopMenuAction:action,
 						TopMenuObject:object_id,
 						param,
diff --git a/plugins/adminmenu/dynamicmenu.sp b/plugins/adminmenu/dynamicmenu.sp
new file mode 100644
index 00000000..fcd8ec63
--- /dev/null
+++ b/plugins/adminmenu/dynamicmenu.sp
@@ -0,0 +1,520 @@
+
+#define NAME_LENGTH 32
+#define CMD_LENGTH 255
+
+#define ARRAY_STRING_LENGTH 32
+
+new Handle:g_kvMenu;
+
+enum GroupCommands
+{
+	Handle:groupListName,
+	Handle:groupListCommand	
+};
+
+new g_groupList[GroupCommands];
+new g_groupCount;
+
+new Handle:g_configParser = INVALID_HANDLE;
+
+enum Places
+{
+	Place_Category,
+	Place_Item,
+	Place_ReplaceNum	
+};
+
+new String:g_command[MAXPLAYERS+1][CMD_LENGTH];
+new g_currentPlace[MAXPLAYERS+1][Places];
+
+/**
+ * What to put in the 'info' menu field (for PlayerList and Player_Team menus only)
+ */
+enum PlayerMethod
+{		
+	ClientId,				/** Client id number ( 1 - Maxplayers) */
+	UserId,					/** Client userid */
+	Name,					/** Client Name */
+	SteamId,				/** Client Steamid */
+	IpAddress,				/** Client's Ip Address */
+	UserId2					/** Userid (not prefixed with #) */
+};
+
+BuildDynamicMenu()
+{
+	if (g_kvMenu != INVALID_HANDLE)
+	{
+		CloseHandle(g_kvMenu);	
+	}
+	
+	g_kvMenu = CreateKeyValues("Commands");
+	new String:file[256];
+	BuildPath(Path_SM, file, 255, "configs/dynamicmenu/menu.ini");
+	FileToKeyValues(g_kvMenu, file);
+	
+	new String:name[NAME_LENGTH];
+	new String:buffer[NAME_LENGTH];
+	
+	
+	if (!KvGotoFirstSubKey(g_kvMenu))
+	{
+		return;
+	}
+	
+	decl String:admin[30];
+	
+	new TopMenuObject:categoryId;
+	
+	new catId;
+	new id;
+	
+	do
+	{		
+		KvGetSectionName(g_kvMenu, buffer, sizeof(buffer));
+
+		KvGetString(g_kvMenu, "admin", admin, sizeof(admin),"sm_admin");
+				
+		if ((categoryId =FindTopMenuCategory(hAdminMenu, buffer)) == INVALID_TOPMENUOBJECT)
+		{
+			categoryId = AddToTopMenu(hAdminMenu,
+							buffer,
+							TopMenuObject_Category,
+							DynamicMenuCategoryHandler,
+							INVALID_TOPMENUOBJECT,
+							admin,
+							ADMFLAG_GENERIC,
+							name);
+
+		}
+		
+		if (!KvGetSectionSymbol(g_kvMenu, catId))
+		{
+			LogError("Key Id not found for section: %s", buffer);
+			break;
+		}
+		
+		if (!KvGotoFirstSubKey(g_kvMenu))
+		{
+			return;
+		}
+		
+		do
+		{		
+			KvGetSectionName(g_kvMenu, buffer, sizeof(buffer));
+
+			KvGetString(g_kvMenu, "admin", admin, sizeof(admin),"");
+			
+			if (admin[0] == '\0')
+			{
+				//No 'admin' keyvalue was found
+				//Use the first argument of the 'cmd' string instead
+				
+				decl String:temp[64];
+				KvGetString(g_kvMenu, "cmd", temp, sizeof(temp),"");
+				
+				BreakString(temp, admin, sizeof(admin));
+			}
+							  
+			if (!KvGetSectionSymbol(g_kvMenu, id))
+			{
+				LogError("Key Id not found for section: %s");
+				break;
+			}
+			
+			decl String:keyId[64];
+			
+			Format(keyId, sizeof(keyId), "%i %i", catId, id);
+		
+			AddToTopMenu(hAdminMenu,
+							buffer,
+							TopMenuObject_Item,
+							DynamicMenuItemHandler,
+  							categoryId,
+  							admin,
+  							ADMFLAG_GENERIC,
+  							keyId);
+		
+		} while (KvGotoNextKey(g_kvMenu));
+		
+		KvGoBack(g_kvMenu);
+		
+	} while (KvGotoNextKey(g_kvMenu));
+	
+	KvRewind(g_kvMenu);	
+}
+
+ParseConfigs()
+{
+	if (g_configParser == INVALID_HANDLE)
+	{
+		g_configParser = SMC_CreateParser();
+	}
+	
+	SMC_SetReaders(g_configParser, NewSection, KeyValue, EndSection);
+	
+	if (g_groupList[groupListName] != INVALID_HANDLE)
+	{
+		CloseHandle(g_groupList[groupListName]);
+	}
+	
+	if (g_groupList[groupListCommand] != INVALID_HANDLE)
+	{
+		CloseHandle(g_groupList[groupListCommand]);
+	}
+	
+	g_groupList[groupListName] = CreateArray(ARRAY_STRING_LENGTH);
+	g_groupList[groupListCommand] = CreateArray(ARRAY_STRING_LENGTH);
+	
+	decl String:configPath[256];
+	BuildPath(Path_SM, configPath, sizeof(configPath), "configs/dynamicmenu/adminmenu_grouping.txt");
+	
+	if (!FileExists(configPath))
+	{
+		LogError("Unable to locate admin menu groups file, no groups loaded.");
+			
+		return;		
+	}
+	
+	new line;
+	new SMCError:err = SMC_ParseFile(g_configParser, configPath, line);
+	if (err != SMCError_Okay)
+	{
+		decl String:error[256];
+		SMC_GetErrorString(err, error, sizeof(error));
+		LogError("Could not parse file (line %d, file \"%s\"):", line, configPath);
+		LogError("Parser encountered error: %s", error);
+	}
+	
+	return;
+}
+
+public SMCResult:NewSection(Handle:smc, const String:name[], bool:opt_quotes)
+{
+
+}
+
+public SMCResult:KeyValue(Handle:smc, const String:key[], const String:value[], bool:key_quotes, bool:value_quotes)
+{
+	PushArrayString(g_groupList[groupListName], key);
+	PushArrayString(g_groupList[groupListCommand], value);
+}
+
+public SMCResult:EndSection(Handle:smc)
+{
+	g_groupCount = GetArraySize(g_groupList[groupListName]);
+}
+
+public DynamicMenuCategoryHandler(Handle:topmenu, 
+						TopMenuAction:action,
+						TopMenuObject:object_id,
+						param,
+						String:buffer[],
+						maxlength)
+{
+	if ((action == TopMenuAction_DisplayTitle) || (action == TopMenuAction_DisplayOption))
+	{
+		GetTopMenuObjName(topmenu, object_id, buffer, maxlength);
+	}
+}
+
+public DynamicMenuItemHandler(Handle:topmenu, 
+					  TopMenuAction:action,
+					  TopMenuObject:object_id,
+					  param,
+					  String:buffer[],
+					  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		GetTopMenuObjName(topmenu, object_id, buffer, maxlength);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{	
+		new String:keyId[64];
+		new String:catId[64];
+		GetTopMenuInfoString(topmenu, object_id, keyId, sizeof(keyId));
+		
+		new start = BreakString(keyId, catId, sizeof(catId));
+		
+		new id = StringToInt(keyId[start]);
+		new category = StringToInt(catId);
+		
+		KvJumpToKeySymbol(g_kvMenu, category);
+		KvJumpToKeySymbol(g_kvMenu, id);
+		
+		KvGetString(g_kvMenu, "cmd", g_command[param], sizeof(g_command[]),"");
+		KvRewind(g_kvMenu);
+					
+		g_currentPlace[param][Place_Category] = category;
+		g_currentPlace[param][Place_Item] = id;
+		
+		ParamCheck(param);
+	}
+}
+
+public ParamCheck(client)
+{
+	new String:buffer[6];
+	new String:buffer2[6];
+
+	KvJumpToKeySymbol(g_kvMenu, g_currentPlace[client][Place_Category]);
+	KvJumpToKeySymbol(g_kvMenu, g_currentPlace[client][Place_Item]);
+	
+	new String:type[NAME_LENGTH];
+		
+	if (g_currentPlace[client][Place_ReplaceNum] < 1)
+	{
+		g_currentPlace[client][Place_ReplaceNum] = 1;
+	}
+	
+	Format(buffer, 5, "#%i", g_currentPlace[client][Place_ReplaceNum]);
+	Format(buffer2, 5, "@%i", g_currentPlace[client][Place_ReplaceNum]);
+	
+	if (StrContains(g_command[client], buffer) != -1 || StrContains(g_command[client], buffer2) != -1)
+	{
+		//user has a parameter to fill. lets do it.	
+		KvJumpToKey(g_kvMenu, buffer[1]); // Jump to current param
+		KvGetString(g_kvMenu, "type", type, sizeof(type),"list");
+		
+		PrintToChatAll("Checking param %s - type %s", buffer[1], type);
+		
+		new Handle:itemMenu = CreateMenu(Menu_Selection);
+		
+		new String:title[NAME_LENGTH];
+			
+		if (strncmp(type,"group",5)==0 && g_groupCount)
+		{	
+			decl String:nameBuffer[ARRAY_STRING_LENGTH];
+			decl String:commandBuffer[ARRAY_STRING_LENGTH];
+		
+			for (new i = 0; i<g_groupCount; i++)
+			{			
+				GetArrayString(g_groupList[groupListName], i, nameBuffer, sizeof(nameBuffer));
+				GetArrayString(g_groupList[groupListCommand], i, commandBuffer, sizeof(commandBuffer));
+				AddMenuItem(itemMenu, commandBuffer, nameBuffer);
+			}
+		}
+		
+		if (strncmp(type,"mapcycle",8) == 0)
+		{
+			decl String:path[200];
+			KvGetString(g_kvMenu, "path", path, sizeof(path),"mapcycle.txt");
+		
+			new Handle:file = OpenFile(path, "rt");
+			new String:readData[128];
+			
+			if(file != INVALID_HANDLE)
+			{
+				while(!IsEndOfFile(file) && ReadFileLine(file, readData, sizeof(readData)))
+				{
+					TrimString(readData);
+					
+					if (IsMapValid(readData))
+					{
+						AddMenuItem(itemMenu, readData, readData);
+					}
+				}
+			}
+		}
+		else if (StrContains(type, "player") != -1)
+		{
+			PrintToChatAll("Building Player List");
+			
+			new PlayerMethod:playermethod;
+			new String:method[NAME_LENGTH];
+			
+			KvGetString(g_kvMenu, "method", method, sizeof(method),"name");
+			
+			if (strncmp(method,"clientid",8)==0)
+			{
+				playermethod = ClientId;
+			}
+			else if (strncmp(method,"steamid",7)==0)
+			{
+				playermethod = SteamId;
+			}
+			else if (strncmp(method,"userid2",7)==0)
+			{
+				playermethod = UserId2;
+			}
+			else if (strncmp(method,"userid",6)==0)
+			{
+				playermethod = UserId;
+			}
+			else if (strncmp(method,"ip",2)==0)
+			{
+				playermethod = IpAddress;
+			}
+			else
+			{
+				playermethod = Name;
+			}
+	
+			
+			new String:nameBuffer[32];
+			new String:infoBuffer[32];
+			new String:temp[4];
+			
+			//loop through players. Add name as text and name/userid/steamid as info
+			for (new i=1; i<=g_maxPlayers; i++)
+			{
+				if (IsClientInGame(i))
+				{			
+					GetClientName(i, nameBuffer, 31);
+					
+					switch (playermethod)
+					{
+						case UserId:
+						{
+							new userid = GetClientUserId(i);
+							Format(infoBuffer, sizeof(infoBuffer), "#%i", userid);
+							AddMenuItem(itemMenu, infoBuffer, nameBuffer);	
+						}
+						case UserId2:
+						{
+							new userid = GetClientUserId(i);
+							Format(infoBuffer, sizeof(infoBuffer), "%i", userid);
+							AddMenuItem(itemMenu, infoBuffer, nameBuffer);							
+						}
+						case SteamId:
+						{
+							GetClientAuthString(i, infoBuffer, sizeof(infoBuffer));
+							AddMenuItem(itemMenu, infoBuffer, nameBuffer);							
+						}	
+						case IpAddress:
+						{
+							GetClientIP(i, infoBuffer, sizeof(infoBuffer));
+							AddMenuItem(itemMenu, infoBuffer, nameBuffer);							
+						}
+						case Name:
+						{
+							AddMenuItem(itemMenu, nameBuffer, nameBuffer);
+						}	
+						default: //assume client id
+						{
+							Format(temp,3,"%i",i);
+							AddMenuItem(itemMenu, temp, nameBuffer);						
+						}								
+					}
+				}
+			}
+		}
+		else if (strncmp(type,"onoff",5) == 0)
+		{
+			AddMenuItem(itemMenu, "1", "On");
+			AddMenuItem(itemMenu, "0", "Off");
+		}		
+		else
+		{
+			//list menu
+			
+			PrintToChatAll("Building List Menu");
+
+			new String:temp[6];
+			new String:value[64];
+			new String:text[64];
+			new i=1;
+			new bool:more = true;
+					
+			new String:admin[NAME_LENGTH];
+						
+			do
+			{
+				// load the i and i. options from kv and make a menu from them (i* = required admin level to view)
+				Format(temp,3,"%i",i);
+				KvGetString(g_kvMenu, temp, value, sizeof(value), "");
+				
+				Format(temp,5,"%i.",i);
+				KvGetString(g_kvMenu, temp, text, sizeof(text), value);
+				
+				Format(temp,5,"%i*",i);
+				KvGetString(g_kvMenu, temp, admin, sizeof(admin),"");	
+				
+				if (value[0]=='\0')
+				{
+					more = false;
+				}
+				else if (CheckCommandAccess(client, admin, 0))
+				{
+					AddMenuItem(itemMenu, value, text);
+				}
+				
+				i++;
+								
+			} while (more);
+		
+		}
+		
+		KvGetString(g_kvMenu, "title", title, sizeof(title),"Choose an Option");
+		SetMenuTitle(itemMenu, title);
+		
+		DisplayMenu(itemMenu, client, MENU_TIME_FOREVER);
+	}
+	else
+	{	
+		//nothing else need to be done. Run teh command.
+		new String:execute[7];
+		KvGetString(g_kvMenu, "execute", execute, sizeof(execute), "player");
+		
+		DisplayTopMenu(hAdminMenu, client, TopMenuPosition_LastCategory);
+		
+		if (execute[0]=='p') // assume 'player' type execute option
+		{
+			FakeClientCommand(client, g_command[client]);
+		}
+		else // assume 'server' type execute option
+		{
+			InsertServerCommand(g_command[client]);
+			ServerExecute();
+		}
+
+		g_command[client][0] = '\0';
+		g_currentPlace[client][Place_ReplaceNum] = 1;
+	}
+	
+	KvRewind(g_kvMenu);
+}
+
+public Menu_Selection(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	
+	if (action == MenuAction_Select)
+	{
+		new String:info[NAME_LENGTH];
+ 
+		/* Get item info */
+		new bool:found = GetMenuItem(menu, param2, info, sizeof(info));
+		
+		if (!found)
+		{
+			return;
+		}
+		
+		new String:buffer[6];
+		new String:infobuffer[NAME_LENGTH+2];
+		Format(infobuffer, sizeof(infobuffer), "\"%s\"", info);
+		
+		Format(buffer, 5, "#%i", g_currentPlace[param1][Place_ReplaceNum]);
+		ReplaceString(g_command[param1], sizeof(g_command[]), buffer, infobuffer);
+		//replace #num with the selected option (quoted)
+		
+		Format(buffer, 5, "@%i", g_currentPlace[param1][Place_ReplaceNum]);
+		ReplaceString(g_command[param1], sizeof(g_command[]), buffer, info);
+		//replace @num with the selected option (unquoted)
+		
+		// Increment the parameter counter.
+		g_currentPlace[param1][Place_ReplaceNum]++;
+		
+		ParamCheck(param1);
+	}
+	
+	if (action == MenuAction_Cancel && param2 == MenuCancel_Exit)
+	{
+		//client exited we should go back to submenu i think
+		DisplayTopMenu(hAdminMenu, param1, TopMenuPosition_LastCategory);
+	}
+}
\ No newline at end of file
diff --git a/plugins/include/regex.inc b/plugins/include/regex.inc
new file mode 100644
index 00000000..f4efb22c
--- /dev/null
+++ b/plugins/include/regex.inc
@@ -0,0 +1,141 @@
+#if defined _regex_included
+  #endinput
+#endif
+#define _regex_included
+
+/**
+ * @section 	Flags for compiling regex expressions.  These come directly from the 
+ * pcre library and can be used in MatchRegex and CompileRegex.
+ */
+#define PCRE_CASELESS           0x00000001 /* Ignore Case */
+#define PCRE_MULTILINE          0x00000002 /* Multilines (affects ^ and $ so that they match the start/end of a line rather than matching the start/end of the string). */
+#define PCRE_DOTALL             0x00000004 /* Single line (affects . so that it matches any character, even new line characters). */
+#define PCRE_EXTENDED           0x00000008 /* Pattern extension (ignore whitespace and # comments). */
+#define PCRE_UNGREEDY           0x00000200 /* Invert greediness of quantifiers */
+#define PCRE_UTF8               0x00000800 /* Use UTF-8 Chars */
+#define PCRE_NO_UTF8_CHECK      0x00002000 /* Do not check the pattern for UTF-8 validity (only relevant if PCRE_UTF8 is set) */
+
+
+/**
+ * Regex expression error codes.
+ */
+enum RegexError
+{
+	REGEX_ERROR_NONE = 0,				/* No error */
+	REGEX_ERROR_NOMATCH = -1,			/* No match was found */
+	REGEX_ERROR_NULL = -2,
+	REGEX_ERROR_BADOPTION = -3,
+	REGEX_ERROR_BADMAGIC = -4,
+	REGEX_ERROR_UNKNOWN_OPCODE = -5,
+	REGEX_ERROR_NOMEMORY = -6,
+	REGEX_ERROR_NOSUBSTRING = -7,
+	REGEX_ERROR_MATCHLIMIT = -8,
+	REGEX_ERROR_CALLOUT = -9,  			/* Never used by PCRE itself */
+	REGEX_ERROR_BADUTF8 = -10,
+	REGEX_ERROR_BADUTF8_OFFSET = -11,
+	REGEX_ERROR_PARTIAL = -12,
+	REGEX_ERROR_BADPARTIAL = -13,
+	REGEX_ERROR_INTERNAL = -14,
+	REGEX_ERROR_BADCOUNT = -15,
+	REGEX_ERROR_DFA_UITEM = -16,
+	REGEX_ERROR_DFA_UCOND = -17,
+	REGEX_ERROR_DFA_UMLIMIT = -18,
+	REGEX_ERROR_DFA_WSSIZE = -19,
+	REGEX_ERROR_DFA_RECURSE = -20,
+	REGEX_ERROR_RECURSIONLIMIT = -21,
+	REGEX_ERROR_NULLWSLIMIT = -22,  	/* No longer actually used */
+	REGEX_ERROR_BADNEWLINE = -23
+}
+
+/**
+ * Precompile a regular expression.  Use this if you intend on using the 
+ * same expression multiple times.  Pass the regex handle returned here to
+ * MatchRegex to check for matches.
+ *
+ * @param pattern		The regular expression pattern.
+ * @param flags			General flags for the regular expression.
+ * @param error			Error message encountered, if applicable.
+ * @param maxLen		Maximum string length of the error buffer.
+ * @param errcode		Regex type error code encountered, if applicable.
+ * @return				Valid regex handle on success, INVALID_HANDLE on failure.
+ */
+native Handle:CompileRegex(const String:pattern[], flags = 0, String:error[]="", maxLen = 0, &RegexError:errcode = REGEX_ERROR_NONE);
+
+/**
+ * Matches a string against a pre-compiled regular expression pattern.
+ *
+ * @param str			The string to check.
+ * @param regex			Regex Handle from CompileRegex()
+ * @param ret			Error code, if applicable.
+ * @return				Number of substrings found or -1 on failure.
+ *
+ * @note				Use the regex handle passed to this function to extract
+ *						matches with GetRegexSubString().
+ */
+native MatchRegex(Handle:regex, const String:str[], &RegexError:ret = REGEX_ERROR_NONE);
+
+/**
+ * Returns a matched substring from a regex handle.
+ * Substring ids start at 0 and end at substrings-1, where substrings is the number returned 
+ * by MatchRegex
+ *
+ * @param regex			The regex handle to extract data from.
+ * @param str_id		The index of the expression to get - starts at 0, and ends at substrings - 1.
+ * @param buffer		The buffer to set to the matching substring.
+ * @param maxLen		The maximum string length of the buffer.
+ * @return				True if a substring was found, False on fail/error
+ */
+native bool:GetRegexSubString(Handle:regex, str_id, String:buffer[], maxlen);
+
+/**
+ * Matches a string against a regular expression pattern.
+ *
+ * @note				If you intend on using the same regular expression pattern
+ *						multiple times, consider using CompileRegex and MatchRegex 
+ *						instead of making this function reparse the expression each time.
+ *
+ * @param str			The string to check.
+ * @param pattern		The regular expression pattern.
+ * @param flags			General flags for the regular expression.
+ * @param error			Error message, if applicable.
+ * @param maxLen		Maximum length of the error buffer.
+ * @return				Number of substrings found or -1 on failure.
+ */
+stock SimpleRegexMatch(const String:str[], const String:pattern[], flags = 0, String:error[]="", maxLen = 0)
+{
+	new Handle:regex = CompileRegex(pattern, flags, error, maxLen);
+	
+	if (regex == INVALID_HANDLE)
+	{
+		return -1;	
+	}
+	
+	new substrings = MatchRegex(regex, str);
+	
+	CloseHandle(regex);
+	
+	return substrings;	
+}
+
+/**
+ * @endsection
+ */
+
+/**
+ * Do not edit below this line!
+ */
+public Extension:__ext_regex = 
+{
+	name = "Regex Extension",
+	file = "regex.ext",
+#if defined AUTOLOAD_EXTENSIONS
+	autoload = 1,
+#else
+	autoload = 0,
+#endif
+#if defined REQUIRE_EXTENSIONS
+	required = 1,
+#else
+	required = 0,
+#endif
+};
diff --git a/plugins/mapmanager.sp b/plugins/mapmanager.sp
new file mode 100644
index 00000000..dbf3ec39
--- /dev/null
+++ b/plugins/mapmanager.sp
@@ -0,0 +1,362 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Map Management Plugin
+ * Provides all map related functionality, including map changing, map voting,
+ * and nextmap.
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#pragma semicolon 1
+#include <sourcemod>
+
+public Plugin:myinfo =
+{
+	name = "Map Manager",
+	author = "AlliedModders LLC",
+	description = "Map Management",
+	version = SOURCEMOD_VERSION,
+	url = "http://www.sourcemod.net/"
+};
+
+#include "mapmanagement/globals.sp"
+#include "mapmanagement/commands.sp"
+#include "mapmanagement/events.sp"
+#include "mapmanagement/functions.sp"
+#include "mapmanagement/menus.sp"
+#include "mapmanagement/timers.sp"
+#include "mapmanagement/votes.sp"
+
+public OnPluginStart()
+{	
+	LoadTranslations("mapmanager.phrases");
+
+	// Prepare nextmap functionality.	
+	g_VGUIMenu = GetUserMessageId("VGUIMenu");
+	if (g_VGUIMenu == INVALID_MESSAGE_ID)
+	{
+		LogError("FATAL: Cannot find VGUIMenu user message id. MapManager crippled.");
+		g_NextMapEnabled = false;
+	}
+	HookUserMessage(g_VGUIMenu, UserMsg_VGUIMenu);
+
+	// Create all of the arrays, sized for a 64 character string.
+	new arraySize = ByteCountToCells(64);
+	g_MapCycle = CreateArray(arraySize);
+	g_MapList = CreateArray(arraySize);
+	g_MapHistory = CreateArray(arraySize);
+	g_NextVoteMaps = CreateArray(arraySize);
+	g_SelectedMaps = CreateArray(arraySize);
+	g_NominatedMaps = CreateArray(arraySize);
+	
+	g_TeamScores = CreateArray(2);
+
+	// Hook say
+	RegConsoleCmd("say", Command_Say);
+	RegConsoleCmd("say_team", Command_Say);	
+
+	// Register all commands.
+	RegAdminCmd("sm_map", Command_Map, ADMFLAG_CHANGEMAP, "sm_map <map> [r/e]");
+	RegAdminCmd("sm_setnextmap", Command_SetNextmap, ADMFLAG_CHANGEMAP, "sm_setnextmap <map>");
+	RegAdminCmd("sm_votemap", Command_Votemap, ADMFLAG_VOTE|ADMFLAG_CHANGEMAP, "sm_votemap <mapname> [mapname2] ... [mapname5] ");
+	RegAdminCmd("sm_maplist", Command_List, ADMFLAG_GENERIC, "sm_maplist");
+	RegAdminCmd("sm_nominate", Command_Addmap, ADMFLAG_CHANGEMAP, "sm_nominate <mapname> - Nominates a map for RockTheVote and MapChooser. Overrides existing nominations.");
+	RegAdminCmd("sm_mapvote", Command_Mapvote, ADMFLAG_CHANGEMAP, "sm_mapvote - Forces the MapChooser vote to occur.");
+	
+	if (GetCommandFlags("nextmap") == INVALID_FCVAR_FLAGS)
+	{
+		RegServerCmd("nextmap", Command_Nextmap);
+	}	
+	
+	// Register all convars
+	g_Cvar_Nextmap = CreateConVar("sm_nextmap", "", "Sets the Next Map", FCVAR_NOTIFY);
+	
+	g_Cvar_MapCount = CreateConVar("sm_mm_maps", "4", "Number of maps to be voted on at end of map or RTV. 2 to 6. (Def 4)", 0, true, 2.0, true, 6.0);	
+	g_Cvar_Excludes = CreateConVar("sm_mm_exclude", "5", "Specifies how many past maps to exclude from end of map vote and RTV.", _, true, 0.0);
+	
+	g_Cvar_MapChooser = CreateConVar("sm_mm_mapchooser", "0", "Enables MapChooser (End of Map voting)", 0, true, 0.0, true, 1.0);
+	g_Cvar_RockTheVote = CreateConVar("sm_mm_rockthevote", "0", "Enables RockTheVote (Player initiated map votes)", 0, true, 0.0, true, 1.0);
+	g_Cvar_Randomize = CreateConVar("sm_mm_randomize", "0", "Enabled Randomizer (Randomly picks the next map)", 0, true, 0.0, true, 1.0);
+	g_Cvar_Nominate = CreateConVar("sm_mm_nominate", "1", "Enables nomination system.", 0, true, 0.0, true, 1.0);
+	
+	g_Cvar_VoteMap = CreateConVar("sm_mm_votemap", "0.60", "Percentage required for successful sm_votemap.", 0, true, 0.05, true, 1.0);
+	g_Cvar_RTVLimit = CreateConVar("sm_mm_rtvlimit", "0.60", "Required percentage of players needed to rockthevote", 0, true, 0.05, true, 1.0);
+	g_Cvar_MinPlayers = CreateConVar("sm_mm_minplayers", "0", "Number of players required before RTV will be enabled.", 0, true, 0.0, true, float(MAXPLAYERS));
+	
+	g_Cvar_StartTime = CreateConVar("sm_mapvote_start", "3.0", "Specifies when to start the vote based on time remaining.", _, true, 1.0);
+	g_Cvar_StartRounds = CreateConVar("sm_mapvote_startround", "2.0", "Specifies when to start the vote based on rounds remaining.", _, true, 1.0);
+	g_Cvar_StartFrags = CreateConVar("sm_mapvote_startfrags", "5.0", "Specifies when to start the vote base on frags remaining.", _, true, 1.0);
+	g_Cvar_ExtendTimeMax = CreateConVar("sm_extendmap_maxtime", "90", "Specifies the maximum amount of time a map can be extended", _, true, 0.0);
+	g_Cvar_ExtendTimeStep = CreateConVar("sm_extendmap_timestep", "15", "Specifies how much many more minutes each extension makes", _, true, 5.0);
+	g_Cvar_ExtendRoundMax = CreateConVar("sm_extendmap_maxrounds", "30", "Specfies the maximum amount of rounds a map can be extended", _, true, 0.0);
+	g_Cvar_ExtendRoundStep = CreateConVar("sm_extendmap_roundstep", "5", "Specifies how many more rounds each extension makes", _, true, 5.0);
+	g_Cvar_ExtendFragMax = CreateConVar("sm_extendmap_maxfrags", "150", "Specfies the maximum frags allowed that a map can be extended.", _, true, 0.0);
+	g_Cvar_ExtendFragStep = CreateConVar("sm_extendmap_fragstep", "10", "Specifies how many more frags are allowed when map is extended.", _, true, 5.0);	
+	g_Cvar_Mapfile = CreateConVar("sm_mapvote_file", "configs/maps.ini", "Map file to use. (Def sourcemod/configs/maps.ini)");
+	g_Cvar_ExcludeMaps = CreateConVar("sm_mapvote_exclude", "5", "Specifies how many past maps to exclude from the vote.", _, true, 0.0);
+	g_Cvar_IncludeMaps = CreateConVar("sm_mapvote_include", "5", "Specifies how many maps to include in the vote.", _, true, 2.0, true, 6.0);
+	g_Cvar_NoVoteMode = CreateConVar("sm_mapvote_novote", "1", "Specifies whether or not MapChooser should pick a map if no votes are received.", _, true, 0.0, true, 1.0);
+	g_Cvar_Extend = CreateConVar("sm_mapvote_extend", "1", "Specifies whether or not MapChooser will allow the map to be extended.", _, true, 0.0, true, 1.0);
+	
+	// Find game convars
+	g_Cvar_Chattime = FindConVar("mp_chattime");
+	g_Cvar_Winlimit = FindConVar("mp_winlimit");
+	g_Cvar_Maxrounds = FindConVar("mp_maxrounds");
+	g_Cvar_Fraglimit = FindConVar("mp_fraglimit");	
+
+	if (GetCommandFlags("nextmap") == INVALID_FCVAR_FLAGS)
+	{
+		RegServerCmd("nextmap", Command_Nextmap);
+	}
+	
+	// Hook events
+	HookEvent("round_end", Event_RoundEnd);	// We always require round_end
+	if (g_Cvar_Fraglimit != INVALID_HANDLE)
+	{
+		HookEvent("player_death", Event_PlayerDeath);		
+	}	
+	
+	// Set to the current map so OnMapStart() will know what to do
+	decl String:currentMap[64];
+	GetCurrentMap(currentMap, 64);
+	SetNextmap(currentMap);	
+
+	// Create necessary menus for TopMenu
+	g_Menu_Map = CreateMenu(MenuHandler_Map);
+	SetMenuTitle(g_Menu_Map, "Please select a map");
+	SetMenuExitBackButton(g_Menu_Map, true);
+	
+	g_Menu_Votemap = CreateMenu(MenuHandler_VoteMap, MenuAction_DrawItem);
+	SetMenuTitle(g_Menu_Votemap, "Please select a map");
+	SetMenuExitBackButton(g_Menu_Votemap, true);	
+	
+	// Bind TopMenu commands to adminmenu_maplist.ini, in cases it doesn't exist in maplists.cfg
+	decl String:mapListPath[PLATFORM_MAX_PATH];
+	BuildPath(Path_SM, mapListPath, sizeof(mapListPath), "configs/adminmenu_maplist.ini");
+	SetMapListCompatBind("sm_map menu", mapListPath);
+	SetMapListCompatBind("sm_votemap menu", mapListPath);
+
+	// Account for late loading
+	new Handle:topmenu;
+	if (LibraryExists("adminmenu") && ((topmenu = GetAdminTopMenu()) != INVALID_HANDLE))
+	{
+		OnAdminMenuReady(topmenu);
+	}	
+	
+	AutoExecConfig(true, "mapmanager");
+}
+
+public OnAdminMenuReady(Handle:topmenu)
+{
+	/* Block us from being called twice */
+	if (topmenu == hTopMenu)
+	{
+		return;
+	}
+	
+	/* Save the Handle */
+	hTopMenu = topmenu;
+	
+	new TopMenuObject:server_commands = FindTopMenuCategory(hTopMenu, ADMINMENU_SERVERCOMMANDS);
+
+	if (server_commands != INVALID_TOPMENUOBJECT)
+	{
+		AddToTopMenu(hTopMenu,
+			"sm_map",
+			TopMenuObject_Item,
+			AdminMenu_Map,
+			server_commands,
+			"sm_map",
+			ADMFLAG_CHANGEMAP);
+	}
+
+	new TopMenuObject:voting_commands = FindTopMenuCategory(hTopMenu, ADMINMENU_VOTINGCOMMANDS);
+
+	if (voting_commands != INVALID_TOPMENUOBJECT)
+	{
+		AddToTopMenu(hTopMenu,
+			"sm_votemap",
+			TopMenuObject_Item,
+			AdminMenu_VoteMap,
+			voting_commands,
+			"sm_votemap",
+			ADMFLAG_VOTE|ADMFLAG_CHANGEMAP);
+	}
+}
+
+public OnLibraryRemoved(const String:name[])
+{
+	if (strcmp(name, "adminmenu") == 0)
+	{
+		hTopMenu = INVALID_HANDLE;
+	}
+}
+
+public OnConfigsExecuted()
+{
+	// Add map logic here
+	
+	// Get the current and last maps.
+	decl String:lastMap[64], String:currentMap[64];
+	GetConVarString(g_Cvar_Nextmap, lastMap, 64);
+	GetCurrentMap(currentMap, 64);
+	
+	// Why am I doing this? If we switched to a new map, but it wasn't what we expected (Due to sm_map, sm_votemap, or
+	// some other plugin/command), we don't want to scramble the map cycle. Or for example, admin switches to a custom map
+	// not in mapcyclefile. So we keep it set to the last expected nextmap. - ferret
+	if (strcmp(lastMap, currentMap) == 0)
+	{
+		FindAndSetNextMap();
+	}
+	
+	// Build map menus for sm_map, sm_votemap, and RTV.
+	BuildMapMenu(g_Menu_Map, list);
+	BuildMapMenu(g_Menu_VoteMap, list);
+	
+	// If the Randomize option is on, randomize!
+	if (GetConVarBool(g_Cvar_Randomize))
+	{
+		CreateTimer(5.0, Timer_RandomizeNextmap);
+	}
+	
+	// If MapChooser is active, start it up!
+	if (GetConVarBool(g_Cvar_MapChooser))
+	{
+		SetupTimeleftTimer();
+		SetConVarString(g_Cvar_Nextmap, "Pending Vote");
+	}
+	
+	// If RockTheVote is active, start it up!
+	if (GetConVarBool(g_Cvar_RockTheVote))
+	{
+		BuildMapMenu(g_Menu_RTV, list);
+		CreateTimer(30.0, Timer_DelayRTV);
+	}	
+}
+
+// Reinitialize all our various globals
+public OnMapStart()
+{
+	if (g_Nominate != INVALID_HANDLE)
+	{
+		ClearArray(g_Nominate);
+	}
+	
+	if (g_TeamScores != INVALID_HANDLE)
+	{
+		ClearArray(g_TeamScores);
+	}
+
+	g_TotalRounds = 0;	
+	
+	g_RTV_Voters = 0;
+	g_RTV_Votes = 0;
+	g_RTV_VotesNeeded = 0;
+	g_RTV_Started = false;
+	g_RTV_Ended = false;
+}
+
+// Reset globals as necessary and kill timers
+public OnMapEnd()
+{
+	g_IntermissionCalled = false;
+	g_HasVoteStarted = false;
+		
+	g_RTV_Allowed = false;	
+	
+	if (g_VoteTimer != INVALID_HANDLE)
+	{
+		KillTimer(g_VoteTimer);
+		g_VoteTimer = INVALID_HANDLE;
+	}
+	
+	if (g_RetryTimer != INVALID_HANDLE)
+	{
+		KillTimer(g_RetryTimer);
+		g_RetryTimer = INVALID_HANDLE;
+	}
+}
+
+public bool:OnClientConnect(client, String:rejectmsg[], maxlen)
+{
+	if (IsFakeClient(client))
+	{
+		return true;
+	}
+	
+	// If RTV is active, deal with vote counting.
+	if (GetConVarBool(g_Cvar_RockTheVote))
+	{
+		g_RTV_Voted[client] = false;
+		g_RTV_Voters++;
+		g_RTV_VotesNeeded = RoundToFloor(float(g_Voters) * GetConVarFloat(g_Cvar_Needed));
+	}
+
+	// If Nominate is active, let the new client nominate
+	if (GetConVarBool(g_Cvar_Nominate))
+	{
+		g_Nominated[client] = false;
+	}
+	
+	return true;
+}
+
+public OnClientDisconnect(client)
+{
+	if (IsFakeClient(client))
+	{
+		return;
+	}
+	
+	// If RTV is active, deal with vote counting.
+	if (GetConVarBool(g_Cvar_RockTheVote))
+	{
+		if(g_RTV_Voted[client])
+		{
+			g_RTV_Votes--;
+		}
+
+		g_RTV_Voters--;
+		g_RTV_VotesNeeded = RoundToFloor(float(g_RTV_Voters) * GetConVarFloat(g_Cvar_RTVLimit));
+		
+		// If this client caused us to fall below the RTV threshold and its allowed be started, start it.	
+		if (g_RTV_Votes && g_RTV_Voters && g_RTV_Votes >= g_RTV_VotesNeeded && g_RTV_Allowed && !g_RTV_Started) 
+		{
+			g_RTV_Started = true;
+			CreateTimer(2.0, Timer_StartRTV, TIMER_FLAG_NO_MAPCHANGE);
+		}	
+	}
+}
+
+public OnMapTimeLeftChanged()
+{
+	if (GetConVarBool(g_Cvar_MapChooser))
+	{
+		SetupTimeleftTimer();
+	}
+}
\ No newline at end of file
diff --git a/plugins/mapmanager/commands.sp b/plugins/mapmanager/commands.sp
new file mode 100644
index 00000000..bba25765
--- /dev/null
+++ b/plugins/mapmanager/commands.sp
@@ -0,0 +1,398 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Map Manager Plugin
+ * Contains callbacks for commands
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+ 
+ public Action:Command_Say(client, args)
+ {
+	decl String:text[192];
+	if (GetCmdArgString(text, sizeof(text)) < 1)
+	{
+		return Plugin_Continue;
+	}
+	
+	new startidx;
+	if (text[strlen(text)-1] == '"')
+	{
+		text[strlen(text)-1] = '\0';
+		startidx = 1;
+	}
+	
+	decl String:message[8];
+	BreakString(text[startidx], message, sizeof(message));
+	
+	if (strcmp(message, "nextmap", false) == 0)
+	{
+		decl String:map[32];
+		GetConVarString(g_Cvar_Nextmap, map, sizeof(map));
+		
+		PrintToChat(client, "%t", "Next Map", map);
+	}
+	else
+	{
+		if (GetConVarBool(g_Cvar_RockTheVote) && (strcmp(text[startidx], "rtv", false) == 0 || strcmp(text[startidx], "rockthevote", false) == 0))
+		{
+			if (g_MapChanged)
+			{
+				ReplyToCommand(client, "[SM] %t", "Map change in progress");
+				return Plugin_Continue;
+			}			
+			
+			if (!g_RTV_Allowed)
+			{
+				PrintToChat(client, "[SM] %t", "RTV Not Allowed");
+				return Plugin_Continue;
+			}
+			
+			if (g_RTV_Ended)
+			{
+				PrintToChat(client, "[SM] %t", "RTV Ended");
+				return Plugin_Continue;
+			}
+			
+			if (g_RTV_Started)
+			{
+				PrintToChat(client, "[SM] %t", "RTV Started");
+				return Plugin_Continue;
+			}
+			
+			if (GetClientCount(true) < GetConVarInt(g_Cvar_MinPlayers) && g_RTV_Votes == 0) // Should we keep checking g_Votes here?
+			{
+				PrintToChat(client, "[SM] %t", "Minimal Players Not Met");
+				return Plugin_Continue;			
+			}
+			
+			if (g_RTV_Voted[client])
+			{
+				PrintToChat(client, "[SM] %t", "Already Voted");
+				return Plugin_Continue;
+			}	
+			
+			new String:name[64];
+			GetClientName(client, name, sizeof(name));
+			
+			g_RTV_Votes++;
+			g_RTV_Voted[client] = true;
+			
+			PrintToChatAll("[SM] %t", "RTV Requested", name, g_RTV_Votes, g_RTV_VotesNeeded);
+			
+			if (g_RTV_Votes >= g_RTV_VotesNeeded)
+			{
+				g_RTV_Started = true;
+				CreateTimer(2.0, Timer_StartRTV, TIMER_FLAG_NO_MAPCHANGE);
+			}
+		}
+		else if (GetConVarBool(g_Cvar_Nominate) && strcmp(text[startidx], "nominate", false) == 0)
+		{
+			if (g_MapChanged)
+			{
+				ReplyToCommand(client, "[SM] %t", "Map change in progress");
+				return Plugin_Continue;
+			}
+			
+			if (g_RTV_Started || g_HasVoteStarted)
+			{
+				ReplyToCommand(client, "[SM] %t", "Map vote in progress");
+				return Plugin_Continue;				
+			}
+			
+			if (g_Nominated[client])
+			{
+				PrintToChat(client, "[SM] %t", "Already Nominated");
+				return Plugin_Continue;
+			}
+			
+			if (GetArraySize(g_Nominate) >= GetConVarInt(g_Cvar_Maps))
+			{
+				PrintToChat(client, "[SM] %t", "Max Nominations");
+				return Plugin_Continue;			
+			}
+			
+			DisplayMenu(g_Menu_Nominate, client, MENU_TIME_FOREVER);		
+		}		
+	}
+	
+	return Plugin_Continue;	
+}
+
+public Action:Command_Mapvote(client, args)
+{
+	InitiateVote();
+
+	return Plugin_Handled;	
+}
+ 
+public Action:Command_Nextmap(args)
+{
+	decl String:map[64];
+	
+	GetConVarString(g_Cvar_Nextmap, map, sizeof(map));
+	
+	ReplyToCommand(0, "%t", "Next Map", map);
+	
+	return Plugin_Handled;
+} 
+ 
+public Action:Command_List(client, args) 
+{
+	PrintToConsole(client, "Map Cycle:");
+	
+	decl String:currentMap[64];
+	GetCurrentMap(currentMap, 64);	
+	
+	decl String:mapName[64];
+	for (new i = 0; i < GetArraySize(g_MapCycle); i++)
+	{
+		GetArrayString(g_MapCycle, i, mapName, sizeof(mapName));
+		if (strcmp(mapName, currentMap) == 0)
+		{
+			PrintToConsole(client, "%s <========= Current map", mapName);
+		}
+		else if (strcmp(mapName, g_NextMap) == 0)
+		{
+			PrintToConsole(client, "%s <========= Next map", mapName);
+		}
+		else
+		{
+			PrintToConsole(client, "%s", mapName);
+		}
+	}
+ 
+	return Plugin_Handled;
+} 
+
+public Action:Command_SetNextmap(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_setnextmap <map>");
+		return Plugin_Handled;
+	}
+	
+	if (g_MapChanged)
+	{
+		ReplyToCommand(client, "[SM] %t", "Map change in progress");
+		return Plugin_Handled;
+	}	
+
+	decl String:map[64];
+	GetCmdArg(1, map, sizeof(map));
+
+	if (!IsMapValid(map))
+	{
+		ReplyToCommand(client, "[SM] %t", "Map was not found", map);
+		return Plugin_Handled;
+	}
+
+	ShowActivity(client, "%t", "Cvar changed", "sm_nextmap", map);
+	LogMessage("\"%L\" changed sm_nextmap to \"%s\"", client, map);
+
+	SetNextMap(map);
+
+	return Plugin_Handled;
+}
+ 
+ public Action:Command_Map(client, args)
+ {
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_map <map> [r/e]");
+		return Plugin_Handled;
+	}
+	
+	if (g_MapChanged)
+	{
+		ReplyToCommand(client, "[SM] %t", "Map change in progress");
+		return Plugin_Handled;
+	}
+ 
+	decl String:map[64];
+	GetCmdArg(1, map, sizeof(map));
+ 
+	if (!IsMapValid(map))
+	{
+		ReplyToCommand(client, "[SM] %t", "Map was not found", map);
+		return Plugin_Handled;
+	}
+	
+	decl String:when[2];
+	if (args > 1)
+	{
+		GetCmdArg(2, when, sizeof(when));
+		
+		when[0] = CharToLower(when[0]);
+		if (when[0] != 'r' && when[0] != 'e')
+		{
+			when[0] = 'i';
+		}	
+	}
+	
+	SetMapChange(client, map, when);
+ 
+	return Plugin_Handled;
+}
+
+public Action:Command_Votemap(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_votemap [r/e] <mapname> [mapname2] ... [mapname5]");
+		return Plugin_Handled;	
+	}
+	
+	if (g_MapChanged)
+	{
+		ReplyToCommand(client, "[SM] %t", "Map change in progress");
+		return Plugin_Handled;
+	}	
+	
+	if (IsVoteInProgress())
+	{
+		ReplyToCommand(client, "[SM] %t", "Vote in Progress");
+		return Plugin_Handled;
+	}
+		
+	if (!TestVoteDelay(client))
+	{
+		return Plugin_Handled;
+	}
+	
+	decl String:text[256];
+	GetCmdArgString(text, sizeof(text));
+
+	decl String:maps[5][64];
+	new mapCount;	
+	new len, pos;
+
+	// Find out if the user specified "when"
+	decl String:when[64];
+	pos = BreakString(text[len], when, sizeof(when));
+	if (!IsMapValid(when))
+	{
+		when[0] = CharToLower(when[0]);
+		if (when[0] != 'r' && when[0] != 'e')
+		{
+			ReplyToCommand(client, "[SM] %t", "Map was not found", maps[mapCount]);
+			return Plugin_Handled;
+		}
+	}
+	else
+	{
+		strcpy(maps[mapCount], sizeof(maps[]), when);
+		mapCount++;
+		when[0] = 'i';
+	}
+	
+	len += pos;
+	
+	while (pos != -1 && mapCount < 5)
+	{	
+		pos = BreakString(text[len], maps[mapCount], sizeof(maps[]));
+		
+		if (!IsMapValid(maps[mapCount]))
+		{
+			ReplyToCommand(client, "[SM] %t", "Map was not found", maps[mapCount]);
+			return Plugin_Handled;
+		}		
+
+		mapCount++;
+		
+		len += pos;
+	}
+
+	g_VoteMapInUse = client;
+	g_Client_Data[client][0] = when[0];
+
+	DisplayVoteMapMenu(client, mapCount, maps);
+	
+	return Plugin_Handled;	
+}
+
+public Action:Command_Nominate(client, args)
+{
+	if (args < 1)
+	{
+		ReplyToCommand(client, "[SM] Usage: sm_nominate <mapname>");
+		return Plugin_Handled;
+	}
+	
+	if (!GetConVarBool(g_Cvar_Nominate))
+	{
+		ReplyToCommand(client, "[SM] Nominations are currently disabled.");
+		return Plugin_Handled;
+	}
+	
+	decl String:mapname[64];
+	GetCmdArg(1, mapname, sizeof(mapname));
+
+	if (FindStringInArray(g_MapList, mapname) == -1)
+	{
+		ReplyToCommand(client, "%t", "Map was not found", mapname);
+		return Plugin_Handled;
+	}
+	
+	if (GetArraySize(g_Nominated) > 0)
+	{
+		if (FindStringInArray(g_Nominated, mapname) != -1)
+		{
+			ReplyToCommand(client, "%t", "Map Already In Vote", mapname);
+			return Plugin_Handled;				
+		}
+		
+		ShiftArrayUp(g_Nominated, 0);
+		SetArrayString(g_Nominated, 0, mapname);
+		
+		while (GetArraySize(g_Nominated) > GetConVarInt(g_Cvar_Maps))
+		{
+			RemoveFromArray(g_Nominated, GetConVarInt(g_Cvar_Maps));
+		}
+	}
+	else
+	{
+		PushArrayString(g_Nominated, mapname);
+	}
+		
+	decl String:item[64];
+	for (new i = 0; i < GetMenuItemCount(g_Menu_Nominate); i++)
+	{
+		GetMenuItem(g_Menu_Nominate, i, item, sizeof(item));
+		if (strcmp(item, mapname) == 0)
+		{
+			RemoveMenuItem(g_Menu_Nominate, i);
+			break;
+		}			
+	}	
+	
+	ReplyToCommand(client, "%t", "Map Inserted", mapname);
+	LogAction(client, -1, "\"%L\" inserted map \"%s\".", client, mapname);
+
+	return Plugin_Handled;		
+}
\ No newline at end of file
diff --git a/plugins/mapmanager/events.sp b/plugins/mapmanager/events.sp
new file mode 100644
index 00000000..be57776b
--- /dev/null
+++ b/plugins/mapmanager/events.sp
@@ -0,0 +1,166 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Map Manager Plugin
+ * Contains event callbacks
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+public Action:UserMsg_VGUIMenu(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)
+{
+	if (g_IntermissionCalled)
+	{
+		return Plugin_Handled;
+	}
+	
+	decl String:type[15];
+
+	/* If we don't get a valid string, bail out. */
+	if (BfReadString(bf, type, sizeof(type)) < 0)
+	{
+		return Plugin_Handled;
+	}
+ 
+	if (BfReadByte(bf) == 1 && BfReadByte(bf) == 0 && (strcmp(type, "scores", false) == 0))
+	{
+		g_IntermissionCalled = true;
+		
+		decl String:map[32];
+		new Float:fChatTime = GetConVarFloat(g_Cvar_Chattime);
+		
+		if (fChatTime < 2.0)
+		{
+			SetConVarFloat(g_Cvar_Chattime, 2.0);
+		}
+		
+		LogMessage("[MapManager] Changing map to '%s' due to map ending.", g_NextMap);
+		
+		g_MapChanged = true;
+		CreateTimer(fChatTime - 1.0, Timer_ChangeMap);		
+	}
+	
+	return Plugin_Handled;
+}
+
+public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
+{
+	if (g_MapChanged)
+	{
+		return;
+	}
+	
+	if (g_MapChangeSet && g_MapChangeWhen == 'r')
+	{
+		LogMessage("[MapManager] Changing map to '%s' due to round ending.", g_NextMap);
+		
+		g_MapChanged = true;
+		CreateTimer(1.0, Timer_ChangeMap);
+		
+		return;
+	}
+	
+	if (g_HasVoteStarted)
+	{
+		return;
+	}
+
+	new winner = GetEventInt(event, "winner");
+	
+	if (winner == 0 || winner == 1)
+	{
+		return;
+	}
+
+	g_TotalRounds++;
+	
+	new team[2], teamPos = -1;
+	for (new i; i < GetArraySize(g_TeamScores); i++)
+	{
+		GetArrayArray(g_TeamScores, i, team);
+		if (team[0] == winner)
+		{
+			teamPos = i;
+			break;
+		}		
+	}
+	
+	if (teamPos == -1)
+	{
+		team[0] = winner;
+		team[1] = 1;
+		PushArrayArray(g_TeamScores, team);
+	}
+	else
+	{
+		team[1]++;
+		SetArrayArray(g_TeamScores, teamPos, team);
+	}	
+	
+	if (g_Cvar_Winlimit != INVALID_HANDLE)
+	{
+		new winlimit = GetConVarInt(g_Cvar_Winlimit);
+		if (winlimit)
+		{
+			if (team[1] >= (winlimit - GetConVarInt(g_Cvar_StartRounds)))
+			{
+				InitiateVote();
+			}
+		}
+	}
+	
+	if (g_Cvar_Maxrounds != INVALID_HANDLE)
+	{
+		new maxrounds = GetConVarInt(g_Cvar_Maxrounds);
+		if (maxrounds)
+		{
+			if (g_TotalRounds >= (maxrounds - GetConVarInt(g_Cvar_StartRounds)))
+			{
+				InitiateVote();
+			}			
+		}
+	}
+}
+
+public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
+{
+	if (g_MapChanged || g_HasVoteStarted || g_Cvar_Fraglimit == INVALID_HANDLE)
+	{
+		return;
+	}
+	
+	if (!GetConVarInt(g_Cvar_Fraglimit))
+	{
+		return;
+	}
+
+	new fragger = GetClientOfUserId(GetEventInt(event, "attacker"));
+	if (fragger && GetClientFrags(fragger) >= (GetConVarInt(g_Cvar_Fraglimit) - GetConVarInt(g_Cvar_StartFrags)))
+	{
+		InitiateVote();
+	}
+}
\ No newline at end of file
diff --git a/plugins/mapmanager/functions.sp b/plugins/mapmanager/functions.sp
new file mode 100644
index 00000000..963dcafc
--- /dev/null
+++ b/plugins/mapmanager/functions.sp
@@ -0,0 +1,335 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Map Management Plugin
+ * Contains misc functions.
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+SetNextMap(String:map[])
+{
+	strcopy(g_NextMap, sizeof(g_NextMap), map);
+	SetConVarString(g_Cvar_Nextmap, map);
+}
+
+SetMapChange(client, map, when, Float:time = 3.0)
+{
+	g_MapChangeSet = true;
+	g_MapChangeWhen = when[0];
+	SetNextMap(map);
+ 
+	if (when[0] == 'r')
+	{
+ 		ShowActivity2(client, "[SM] ", "%t", "Changing map end of round", map);
+ 		LogAction(client, -1, "\"%L\" set end of round map change to \"%s\"", client, map);
+	}
+	else if (when[0] == 'e')
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Set nextmap", map);
+		LogAction(client, -1, "\"%L\" set the next map to \"%s\"", client, map);
+	}
+	else
+	{
+		ShowActivity2(client, "[SM] ", "%t", "Change map", map);
+		LogAction(client, -1, "\"%L\" changed map to \"%s\"", client, map);
+		
+		g_MapChanged = true;
+	 	CreateTimer(3.0, Timer_ChangeMap);
+	}
+}
+
+FindAndSetNextMap()
+{
+	if (ReadMapList(g_MapList, 
+			g_MapListSerial, 
+			"mapcyclefile", 
+			MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_NO_DEFAULT)
+		== INVALID_HANDLE)
+	{
+		if (g_MapListSerial == -1)
+		{
+			LogError("FATAL: Cannot load map cycle. Nextmap not loaded.");
+			SetFailState("Mapcycle Not Found");
+		}
+	}
+	
+	new mapCount = GetArraySize(g_MapList);
+	decl String:mapName[32];
+	
+	if (g_MapPos == -1)
+	{
+		decl String:current[64];
+		GetCurrentMap(current, 64);
+
+		for (new i = 0; i < mapCount; i++)
+		{
+			GetArrayString(g_MapList, i, mapName, sizeof(mapName));
+			if (strcmp(current, mapName, false) == 0)
+			{
+				g_MapPos = i;
+				break;
+			}
+		}
+		
+		if (g_MapPos == -1)
+			g_MapPos = 0;
+	}
+	
+	g_MapPos++;
+	if (g_MapPos >= mapCount)
+		g_MapPos = 0;	
+ 
+ 	GetArrayString(g_MapList, g_MapPos, mapName, sizeof(mapName));
+	SetConVarString(g_Cvar_Nextmap, mapName);
+}
+
+Float:GetVotePercent(votes, totalVotes)
+{
+	return FloatDiv(float(votes),float(totalVotes));
+}
+
+bool:TestVoteDelay(client)
+{
+ 	new delay = CheckVoteDelay();
+ 	
+ 	if (delay > 0)
+ 	{
+ 		if (delay > 60)
+ 		{
+ 			ReplyToCommand(client, "[SM] %t", "Vote Delay Minutes", delay % 60);
+ 		}
+ 		else
+ 		{
+ 			ReplyToCommand(client, "[SM] %t", "Vote Delay Seconds", delay);
+ 		}
+ 		
+ 		return false;
+ 	}
+ 	
+	return true;
+}
+
+BuildMapMenu()
+{
+	if (g_MapMenu != INVALID_HANDLE)
+	{
+		CloseHandle(g_MapMenu);
+		g_MapMenu = INVALID_HANDLE;
+	}
+	
+	g_MapMenu = CreateMenu(Handler_MapSelectMenu);
+	SetMenuTitle(g_MapMenu, "%t", "Nominate Title");
+
+	decl String:map[64];		
+	for (new i = 0; i < GetArraySize(g_MapList); i++)
+	{
+		GetArrayString(g_MapList, i, map, sizeof(map));
+		AddMenuItem(g_MapMenu, map, map);
+	}
+	
+	SetMenuExitButton(g_MapMenu, false);
+}
+
+SetupTimeleftTimer()
+{
+	new time;
+	if (GetMapTimeLeft(time) && time > 0)
+	{
+		new startTime = GetConVarInt(g_Cvar_StartTime) * 60;
+		if (time - startTime < 0)
+		{
+			InitiateVote();		
+		}
+		else
+		{
+			if (g_VoteTimer != INVALID_HANDLE)
+			{
+				KillTimer(g_VoteTimer);
+				g_VoteTimer = INVALID_HANDLE;
+			}	
+			
+			g_VoteTimer = CreateTimer(float(time - startTime), Timer_StartMapVote);
+		}		
+	}
+}
+
+InitiateVote()
+{
+	if (g_HasVoteStarted || g_RetryTimer != INVALID_HANDLE)
+	{
+		return;
+	}
+	
+	if (IsVoteInProgress())
+	{
+		// Can't start a vote, try again in 5 seconds.
+		g_RetryTimer = CreateTimer(5.0, Timer_StartMapVote);
+		return;
+	}		
+	
+	g_HasVoteStarted = true;
+	g_VoteMenu = CreateMenu(Handler_MapVoteMenu, MenuAction:MENU_ACTIONS_ALL);
+	SetMenuTitle(g_VoteMenu, "Vote Nextmap");
+
+	decl String:map[32];
+	for (new i = 0; i < GetArraySize(g_NextMapList); i++)
+	{
+		GetArrayString(g_NextMapList, i, map, sizeof(map));
+		AddMenuItem(g_VoteMenu, map, map);
+	}
+
+	if (GetConVarBool(g_Cvar_Extend))
+	{
+		new bool:allowExtend, time;
+		if (GetMapTimeLimit(time) && time > 0 && time < GetConVarInt(g_Cvar_ExtendTimeMax))
+		{
+			allowExtend = true;
+		}
+
+		if (g_Cvar_Winlimit != INVALID_HANDLE && GetConVarInt(g_Cvar_Winlimit) < GetConVarInt(g_Cvar_ExtendRoundMax))
+		{
+			allowExtend = true;
+		}	
+	
+		if (g_Cvar_Maxrounds != INVALID_HANDLE && GetConVarInt(g_Cvar_Maxrounds) < GetConVarInt(g_Cvar_ExtendRoundMax))
+		{
+			allowExtend = true;
+		}
+	
+		if (g_Cvar_Fraglimit != INVALID_HANDLE && GetConVarInt(g_Cvar_Fraglimit) < GetConVarInt(g_Cvar_ExtendFragMax))
+		{
+			allowExtend = true;
+		}
+
+		if (allowExtend)
+		{
+			AddMenuItem(g_VoteMenu, VOTE_EXTEND, "Extend Map");
+		}
+	}
+
+	SetMenuExitButton(g_VoteMenu, false);
+	VoteMenuToAll(g_VoteMenu, 20);
+
+	LogMessage("Voting for next map has started.");
+	PrintToChatAll("[SM] %t", "Nextmap Voting Started");
+}
+
+SetNextMap(const String:map[])
+{
+	SetConVarString(g_Cvar_Nextmap, map);
+	PushArrayString(g_OldMapList, map);
+				
+	if (GetArraySize(g_OldMapList) > GetConVarInt(g_Cvar_ExcludeMaps))
+	{
+		RemoveFromArray(g_OldMapList, 0);
+	}
+		
+	PrintToChatAll("[SM] %t", "Nextmap Voting Finished", map);
+	LogMessage("Voting for next map has finished. Nextmap: %s.", map);	
+}
+
+CreateNextVote()
+{
+	if(g_NextMapList != INVALID_HANDLE)
+	{
+		ClearArray(g_NextMapList);
+	}
+	
+	decl String:map[32];
+	new index, Handle:tempMaps  = CloneArray(g_MapList);
+	
+	GetCurrentMap(map, sizeof(map));
+	index = FindStringInArray(tempMaps, map);
+	if (index != -1)
+	{
+		RemoveFromArray(tempMaps, index);
+	}	
+	
+	if (GetConVarInt(g_Cvar_ExcludeMaps) && GetArraySize(tempMaps) > GetConVarInt(g_Cvar_ExcludeMaps))
+	{
+		for (new i = 0; i < GetArraySize(g_OldMapList); i++)
+		{
+			GetArrayString(g_OldMapList, i, map, sizeof(map));
+			index = FindStringInArray(tempMaps, map);
+			if (index != -1)
+			{
+				RemoveFromArray(tempMaps, index);
+			}
+		}	
+	}
+
+	new limit = (GetConVarInt(g_Cvar_IncludeMaps) < GetArraySize(tempMaps) ? GetConVarInt(g_Cvar_IncludeMaps) : GetArraySize(tempMaps));
+	for (new i = 0; i < limit; i++)
+	{
+		new b = GetRandomInt(0, GetArraySize(tempMaps) - 1);
+		GetArrayString(tempMaps, b, map, sizeof(map));		
+		PushArrayString(g_NextMapList, map);
+		RemoveFromArray(tempMaps, b);
+	}
+	
+	CloseHandle(tempMaps);
+}
+
+/*
+
+new Handle:g_map_array = INVALID_HANDLE;
+new g_map_serial = -1;
+
+LoadMapList(Handle:menu)
+{
+	new Handle:map_array;
+	
+	if ((map_array = ReadMapList(g_map_array,
+			g_map_serial,
+			"sm_map menu",
+			MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_NO_DEFAULT|MAPLIST_FLAG_MAPSFOLDER))
+		!= INVALID_HANDLE)
+	{
+		g_map_array = map_array;
+	}
+	
+	if (g_map_array == INVALID_HANDLE)
+	{
+		return 0;
+	}
+	
+	RemoveAllMenuItems(menu);
+	
+	decl String:map_name[64];
+	new map_count = GetArraySize(g_map_array);
+	
+	for (new i = 0; i < map_count; i++)
+	{
+		GetArrayString(g_map_array, i, map_name, sizeof(map_name));
+		AddMenuItem(menu, map_name, map_name);
+	}
+	
+	return map_count;
+}
+
+*/
\ No newline at end of file
diff --git a/plugins/mapmanager/functions_menu.sp b/plugins/mapmanager/functions_menu.sp
new file mode 100644
index 00000000..51f78f57
--- /dev/null
+++ b/plugins/mapmanager/functions_menu.sp
@@ -0,0 +1,115 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Map Management Plugin
+ * Contains misc functions.
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+DisplayWhenMenu(client, bool:vote = false)
+{
+	new Handle:
+	
+	if (!vote)
+	{
+		menu = CreateMenu(MenuHandler_ChangeMap);
+	}
+	else
+	{
+		menu = CreateMenu(MenuHandler_VoteWhen);
+	}
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "Map Change When", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddMenuItem(menu, "i", "Immediately");
+	AddMenuItem(menu, "r", "Round End");
+	AddMenuItem(menu, "e", "Map End");
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);	
+}
+
+DisplayConfirmVoteMenu(client)
+{
+	new Handle:menu = CreateMenu(MenuHandler_Confirm);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "Confirm Vote", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddMenuItem(menu, "Confirm", "Start the Vote");
+	
+	DisplayMenu(menu, client, MENU_TIME_FOREVER);	
+}
+
+DisplayAcceptVoteMenu(String:map[])
+{
+	new Handle:menu = CreateMenu(MenuHandler_Accept);
+	
+	decl String:title[100];
+	Format(title, sizeof(title), "%T:", "Accept Vote", client);
+	SetMenuTitle(menu, title);
+	SetMenuExitBackButton(menu, true);
+	
+	AddMenuItem(menu, map, "Accept Vote");
+	
+	DisplayMenu(menu, g_VoteMapInUse, MENU_TIME_FOREVER);	
+}
+
+DisplayVoteMapMenu(client, mapCount, String:maps[5][])
+{
+	LogAction(client, -1, "\"%L\" initiated a map vote.", client);
+	ShowActivity2(client, "[SM] ", "%t", "Initiated Vote Map");
+	
+	new Handle:menu = CreateMenu(Handler_VoteCallback, MenuAction:MENU_ACTIONS_ALL);
+	
+	if (mapCount == 1)
+	{
+		//strcopy(g_voteInfo[VOTE_NAME], sizeof(g_voteInfo[]), maps[0]);
+			
+		SetMenuTitle(menu, "Change Map To");
+		AddMenuItem(menu, maps[0], "Yes");
+		AddMenuItem(menu, VOTE_NO, "No");
+	}
+	else
+	{
+		//g_voteInfo[VOTE_NAME][0] = '\0';
+		
+		SetMenuTitle(menu, "Map Vote");
+		for (new i = 0; i < mapCount; i++)
+		{
+			AddMenuItem(menu, maps[i], maps[i]);
+		}	
+	}
+	
+	SetMenuExitButton(menu, false);
+	VoteMenuToAll(menu, 20);		
+}
diff --git a/plugins/mapmanager/globals.sp b/plugins/mapmanager/globals.sp
new file mode 100644
index 00000000..171c3a16
--- /dev/null
+++ b/plugins/mapmanager/globals.sp
@@ -0,0 +1,104 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Map Manager Plugin
+ * Contains globals and defines
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+#define VOTE_EXTEND "##extend##"
+#define VOTE_YES "###yes###"
+#define VOTE_NO "###no###"
+
+new Handle:hTopMenu = INVALID_HANDLE;			// TopMenu
+
+new Handle:g_MapCycle = INVALID_HANDLE;			// mapcyclefile maps
+new Handle:g_MapList = INVALID_HANDLE;			// maplist.txt maps
+new Handle:g_MapHistory = INVALID_HANDLE;		// History of maps played
+new Handle:g_NextVoteMaps = INVALID_HANDLE;		// Array of maps for next RTV or MC vote
+new Handle:g_NominatedMaps = INVALID_HANDLE;	// Array of maps that have been nominated
+
+new Handle:g_Menu_Map = INVALID_HANDLE;			// Menu of maps used by sm_map in admin menu
+new Handle:g_Menu_Votemap = INVALID_HANDLE;		// Menu of maps used by sm_votemap in admin menu
+new Handle:g_Menu_Nominate = INVALID_HANDLE;		// Menu of maps used by Nomination system
+
+new Handle:g_SelectedMaps;						// List of maps chosen so far by a user in sm_votemap admin menu
+new g_VoteMapInUse;								// Client index of admin using sm_votemap
+new String:g_Client_Data[MAXCLIENTS+1][64]; 	// Used to hold bits of client data during sm_votemap
+
+new bool:g_MapChangeSet;						// True if a command or vote has set the map
+new bool:g_MapChanged;							// True if a map change has been issued
+new g_MapChangeWhen;							// Either 'i' for immediate, 'r' for round end, or 'e' for end of map.
+
+new UserMsg:g_VGUIMenu;							// VGUI usermsg id for nextmap
+new bool:g_NextMapEnabled = true				// If set to false, all features requiring nextmap are disabled.
+new bool:g_IntermissionCalled;					// Has the end of map intermission begun?
+new String:g_NextMap[64];						// All important! This is the next map!
+new g_MapPos = -1;								// Position in mapcycle
+
+new bool:g_RTV_Voted[MAXPLAYERS+1] = {false, ...};	// Whether or not a player has voted for RTV
+new bool:g_RTV_Allowed = false;					// True if RTV is available to players. Used to delay rtv votes.
+new bool:g_RTV_Started = false;					// Indicates that the actual map vote has started
+new bool:g_RTV_Ended = false;					// Indicates that the actual map vote has concluded
+new g_RTV_Voters = 0;							// Total voters connected. Doesn't include fake clients.
+new g_RTV_Votes = 0;							// Total number of "say rtv" votes
+new g_RTV_VotesNeeded = 0;						// Necessary votes before map vote begins. (voters * percent_needed)
+
+new bool:g_Nominated[MAXPLAYERS+1] = {false, ...};	// Whether or not a player has nominated a map
+
+new Handle:g_TeamScores = INVALID_HANDLE;		// Array of team scores
+new g_TotalRounds;								// Total rounds played this map
+new bool:g_HasVoteStarted;						// Whether or not MapChooser has begun
+
+// ConVar handles
+new Handle:g_Cvar_NextMap = INVALID_HANDLE;
+new Handle:g_Cvar_VoteMap = INVALID_HANDLE;
+new Handle:g_Cvar_Excludes = INVALID_HANDLE;
+new Handle:g_Cvar_StartTime = INVALID_HANDLE;
+new Handle:g_Cvar_StartRounds = INVALID_HANDLE;
+new Handle:g_Cvar_StartFrags = INVALID_HANDLE;
+new Handle:g_Cvar_ExtendTimeMax = INVALID_HANDLE;
+new Handle:g_Cvar_ExtendTimeStep = INVALID_HANDLE;
+new Handle:g_Cvar_ExtendRoundMax = INVALID_HANDLE;
+new Handle:g_Cvar_ExtendRoundStep = INVALID_HANDLE;
+new Handle:g_Cvar_ExtendFragMax = INVALID_HANDLE;
+new Handle:g_Cvar_ExtendFragStep = INVALID_HANDLE;
+new Handle:g_Cvar_Mapfile = INVALID_HANDLE;
+new Handle:g_Cvar_ExcludeMaps = INVALID_HANDLE;
+new Handle:g_Cvar_IncludeMaps = INVALID_HANDLE;
+new Handle:g_Cvar_NoVoteMode = INVALID_HANDLE;
+new Handle:g_Cvar_Extend = INVALID_HANDLE;
+
+new Handle:g_VoteTimer = INVALID_HANDLE;
+new Handle:g_RetryTimer = INVALID_HANDLE;
+
+// VALVe ConVars
+new Handle:g_Cvar_Chattime = INVALID_HANDLE;
+new Handle:g_Cvar_Winlimit = INVALID_HANDLE;
+new Handle:g_Cvar_Maxrounds = INVALID_HANDLE;
+new Handle:g_Cvar_Fraglimit = INVALID_HANDLE;
diff --git a/plugins/mapmanager/menus.sp b/plugins/mapmanager/menus.sp
new file mode 100644
index 00000000..c47e76be
--- /dev/null
+++ b/plugins/mapmanager/menus.sp
@@ -0,0 +1,263 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Map Manager Plugin
+ * Contains menu callbacks
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+// Following callbacks are for sm_map
+public AdminMenu_Map(Handle:topmenu, 
+							  TopMenuAction:action,
+							  TopMenuObject:object_id,
+							  param,
+							  String:buffer[],
+							  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		Format(buffer, maxlength, "%T", "Choose Map", param);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{
+		DisplayMenu(g_Menu_Map, param, MENU_TIME_FOREVER);
+	}
+}
+
+public MenuHandler_Map(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		GetMenuItem(menu, param2, g_Client_Data[param1], sizeof(g_Client_Data[]));
+		DisplayWhenMenu(param1);
+	}
+}
+
+public MenuHandler_ChangeMap(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:when[2];
+		GetMenuItem(menu, param2, when, sizeof(when));
+		SetMapChange(client, g_Client_Data[param1], when[0])
+	}
+}
+
+// Following callbacks are for sm_votemap
+public AdminMenu_VoteMap(Handle:topmenu, 
+							  TopMenuAction:action,
+							  TopMenuObject:object_id,
+							  param,
+							  String:buffer[],
+							  maxlength)
+{
+	if (action == TopMenuAction_DisplayOption)
+	{
+		Format(buffer, maxlength, "%T", "Map vote", param);
+	}
+	else if (action == TopMenuAction_SelectOption)
+	{
+		g_VoteMapInUse = param;
+		ClearArray(g_SelectedMaps);
+		DisplayMenu(g_Menu_Votemap, param, MENU_TIME_FOREVER);
+	}
+	else if (action == TopMenuAction_DrawOption)
+	{	
+		/* disable this option if a vote is already running, theres no maps listed or someone else has already accessed this menu */
+		buffer[0] = (!IsNewVoteAllowed() || g_VoteMapInUse) ? ITEMDRAW_IGNORE : ITEMDRAW_DEFAULT;
+	}
+}
+
+public MenuHandler_VoteMap(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_Cancel)
+	{		
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayWhenMenu(param1, true);
+		}
+		else // no action was selected.
+		{
+			/* Re-enable the menu option */
+			g_VoteMapInUse = 0;
+		}
+	}
+	else if (action == MenuAction_DrawItem)
+	{
+		decl String:info[32];
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		
+		if (FindStringInArray(g_SelectedMaps, info) != -1)
+		{
+			return ITEMDRAW_IGNORE;
+		}
+		else
+		{
+			return ITEMDRAW_DEFAULT;
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:info[32];
+		
+		GetMenuItem(menu, param2, info, sizeof(info));
+		
+		PushArrayString(g_SelectedMaps, info);
+		
+		/* Redisplay the list */
+		if (GetArraySize(g_SelectedMaps) < 5)
+		{
+			DisplayMenu(g_MapList, param1, MENU_TIME_FOREVER);
+		}
+		else
+		{
+			DisplayWhenMenu(param1, true);
+		}
+	}
+	
+	return 0;
+}
+
+public MenuHandler_VoteWhen(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			g_Menu_Info[param1][0] = 'i';
+			DisplayConfirmVoteMenu(param1);
+		}
+		else
+		{
+			g_VoteMapInUse = 0;
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		GetMenuItem(menu, param2, g_Menu_Info[param1], sizeof(g_Menu_Info[]));
+		
+		DisplayConfirmVoteMenu(param1);
+	}
+}
+
+public MenuHandler_Confirm(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Cancel)
+	{
+		g_VoteMapInUse = 0;
+		
+		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
+		{
+			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
+		}
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:maps[5][64];
+		new selectedmaps = GetArraySize(g_SelectedMaps);
+		
+		for (new i = 0; i < selectedmaps; i++)
+		{
+			GetArrayString(g_SelectedMaps, i, maps[i], sizeof(maps[]));
+		}
+		
+		DisplayVoteMapMenu(param1, selectedmaps, maps);
+	}
+}
+
+public MenuHandler_Accept(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+		g_VoteMapInUse = 0;
+	}
+	else if (action == MenuAction_Select)
+	{
+		decl String:map[64]
+		GetMenuItem(menu, 1, map, sizeof(map));
+		
+		SetMapChange(param1, map, g_Client_Data[param1][0])
+	}
+}
+
+public Handler_MapSelectMenu(Handle:menu, MenuAction:action, param1, param2)
+{
+	switch (action)
+	{
+		case MenuAction_Select:
+		{
+			if (GetArraySize(g_RTVMapList) >= GetConVarInt(g_Cvar_Maps)) 
+			{
+				PrintToChat(param1, "[SM] %t", "Max Nominations");
+				return;	
+			}
+			
+			decl String:map[64], String:name[64];
+			GetMenuItem(menu, param2, map, sizeof(map));
+			
+			if (FindStringInArray(g_RTVMapList, map) != -1)
+			{
+				PrintToChat(param1, "[SM] %t", "Map Already Nominated");
+				return;
+			}
+			
+			GetClientName(param1, name, 64);
+
+			PushArrayString(g_RTVMapList, map);
+			RemoveMenuItem(menu, param2);
+			
+			g_Nominated[param1] = true;
+			
+			PrintToChatAll("[SM] %t", "Map Nominated", name, map);
+		}
+	}
+}
\ No newline at end of file
diff --git a/plugins/mapmanager/timers.sp b/plugins/mapmanager/timers.sp
new file mode 100644
index 00000000..c0d5a3e3
--- /dev/null
+++ b/plugins/mapmanager/timers.sp
@@ -0,0 +1,166 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Map Manager Plugin
+ * Contains timer callbacks
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+public Action:Timer_ChangeMap(Handle:timer)
+{
+	ServerCommand("changelevel \"%s\"", g_NextMap);
+	PushArrayString(g_MapHistory, g_NextMap);
+
+	return Plugin_Stop;
+}
+
+public Action:Timer_RandomizeNextmap(Handle:timer)
+{
+	decl String:map[64];
+	
+	new exclusion = GetConVarInt(g_Cvar_ExcludeMaps);
+	if (exclusion > GetArraySize(g_MapCycle))
+	{
+		exclusion = GetArraySize(g_MapCycle) - 1;
+	}
+
+	new b = GetRandomInt(0, GetArraySize(g_MapCycle) - 1);
+	GetArrayString(g_MapCycle, b, map, sizeof(map));
+
+	while (FindStringInArray(g_MapHistory, map) != -1)
+	{
+		b = GetRandomInt(0, GetArraySize(g_MapCycle) - 1);
+		GetArrayString(g_MapCycle, b, map, sizeof(map));
+	}
+	
+	SetNextmap(map);
+
+	LogMessage("[MapManager] Randomizer has chosen '%s' as the next map.", map);	
+
+	return Plugin_Stop;
+}
+
+public Action:Timer_DelayRTV(Handle:timer)
+{
+	g_RTVAllowed = true;
+	g_RTVStarted = false;
+	g_RTVEnded = false;	
+}
+
+public Action:Timer_StartRTV(Handle:timer)
+{
+	if (timer == g_RetryTimer)
+	{
+		g_RetryTimer = INVALID_HANDLE;
+	}
+	
+	if (g_RetryTimer != INVALID_HANDLE)
+	{
+		return;
+	}
+
+	if (IsVoteInProgress())
+	{
+		// Can't start a vote, try again in 5 seconds.
+		g_RetryTimer = CreateTimer(5.0, Timer_StartRTV, TIMER_FLAG_NO_MAPCHANGE);
+		return;
+	}			
+	
+	PrintToChatAll("[SM] %t", "RTV Vote Ready");
+		
+	new Handle:MapVoteMenu = CreateMenu(Handler_MapMapVoteMenu, MenuAction:MENU_ACTIONS_ALL);
+	SetMenuTitle(MapVoteMenu, "Rock The Vote");
+	
+	new Handle:tempMaps  = CloneArray(g_MapList);
+	decl String:map[32];
+
+	GetCurrentMap(map, sizeof(map));
+	new index = FindStringInArray(tempMaps, map);
+	if (index != -1)
+	{
+		RemoveFromArray(tempMaps, index);
+	}	
+	
+	// We assume that g_RTVMapList is within the correct limits, based on the logic for nominations
+	for (new i = 0; i < GetArraySize(g_RTVMapList); i++)
+	{
+		GetArrayString(g_RTVMapList, i, map, sizeof(map));
+		AddMenuItem(MapVoteMenu, map, map);
+		
+		index = FindStringInArray(tempMaps, map);
+		if (index != -1)
+		{
+			RemoveFromArray(tempMaps, index);
+		}
+	}
+	
+	new limit = GetConVarInt(g_Cvar_Maps) - GetArraySize(g_RTVMapList);
+	if (limit > GetArraySize(tempMaps))
+	{
+		limit = GetArraySize(tempMaps);
+	}
+
+	for (new i = 0; i < limit; i++)
+	{
+		new b = GetRandomInt(0, GetArraySize(tempMaps) - 1);
+		GetArrayString(tempMaps, b, map, sizeof(map));		
+		PushArrayString(g_RTVMapList, map);
+		AddMenuItem(MapVoteMenu, map, map);			
+		RemoveFromArray(tempMaps, b);
+	}	
+	
+	CloseHandle(tempMaps);
+	
+	AddMenuItem(MapVoteMenu, "Don't Change", "Don't Change");
+		
+	SetMenuExitButton(MapVoteMenu, false);
+	VoteMenuToAll(MapVoteMenu, 20);
+		
+	LogMessage("[SM] Rockthevote was successfully started.");
+}
+
+public Action:Timer_StartMapVote(Handle:timer)
+{
+	if (!GetArraySize(g_MapList))
+	{
+		return Plugin_Stop;
+	}		
+	
+	if (timer == g_RetryTimer)
+	{
+		g_RetryTimer = INVALID_HANDLE;
+	}
+	else
+	{
+		g_VoteTimer = INVALID_HANDLE;
+	}
+
+	InitiateVote();
+
+	return Plugin_Stop;
+}
\ No newline at end of file
diff --git a/plugins/mapmanager/votes.sp b/plugins/mapmanager/votes.sp
new file mode 100644
index 00000000..c8a1d6f7
--- /dev/null
+++ b/plugins/mapmanager/votes.sp
@@ -0,0 +1,318 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Map Manager Plugin
+ * Contains vote callbacks
+ *
+ * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation.  You must obey the GNU General Public License in
+ * all respects for all other code used.  Additionally, AlliedModders LLC grants
+ * this exception to all derivative works.  AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or <http://www.sourcemod.net/license.php>.
+ *
+ * Version: $Id$
+ */
+
+// sm_votemap
+public Handler_VoteCallback(Handle:menu, MenuAction:action, param1, param2)
+{
+	if (action == MenuAction_End)
+	{
+		CloseHandle(menu);
+	}
+	else if (action == MenuAction_Display)
+	{
+	 	decl String:title[64];
+		GetMenuTitle(menu, title, sizeof(title));
+			
+		decl String:map[64];
+		GetMenuItem(menu, 1, map, sizeof(map));
+		
+ 		decl String:buffer[255];
+		Format(buffer, sizeof(buffer), "%T", title, param1, map);
+
+		new Handle:panel = Handle:param2;
+		SetPanelTitle(panel, buffer);
+	}
+	else if (action == MenuAction_DisplayItem)
+	{
+		decl String:display[64];
+		GetMenuItem(menu, param2, "", 0, _, display, sizeof(display));
+	 
+	 	if (strcmp(display, "No") == 0 || strcmp(display, "Yes") == 0)
+	 	{
+			decl String:buffer[255];
+			Format(buffer, sizeof(buffer), "%T", display, param1);
+
+			return RedrawMenuItem(buffer);
+		}
+	}
+	else if (action == MenuAction_VoteCancel && param1 == VoteCancel_NoVotes)
+	{
+		PrintToChatAll("[SM] %t", "No Votes Cast");
+	}	
+	else if (action == MenuAction_VoteEnd)
+	{
+		decl String:item[64], String:display[64];
+		new Float:percent, Float:limit, votes, totalVotes;
+
+		GetMenuVoteInfo(param2, votes, totalVotes);
+		GetMenuItem(menu, param1, item, sizeof(item), _, display, sizeof(display));
+		
+		if (strcmp(item, VOTE_NO) == 0 && param1 == 1)
+		{
+			votes = totalVotes - votes; // Reverse the votes to be in relation to the Yes option.
+		}
+		
+		percent = GetVotePercent(votes, totalVotes);
+		
+		limit = GetConVarFloat(g_Cvar_VoteMap);
+		
+		// A multi-argument vote is "always successful", but have to check if its a Yes/No vote.
+		if ((strcmp(item, VOTE_YES) == 0 && FloatCompare(percent,limit) < 0 && param1 == 0) || (strcmp(item, VOTE_NO) == 0 && param1 == 1))
+		{
+			LogAction(-1, -1, "Vote failed.");
+			PrintToChatAll("[SM] %t", "Votemap Failed", RoundToNearest(100.0*limit), RoundToNearest(100.0*percent), totalVotes);
+		}
+		else
+		{
+			PrintToChatAll("[SM] %t", "Votemap Successful", RoundToNearest(100.0*percent), totalVotes);
+
+			if (g_VoteMapInUse && IsClientInGame(g_VoteMapInUse))
+			{
+				DisplayAcceptVoteMenu(item);
+			}
+			else
+			{
+				LogAction(-1, -1, "Changing map to %s due to vote.", item);
+				PrintToChatAll("[SM] %t", "Changing map", item);
+				SetMapChange(0, item, g_Client_Data[g_VoteMapInUse][0])
+			}	
+		}
+	}
+	
+	return 0;
+}
+
+public Handler_MapMapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
+{
+	switch (action)
+	{
+		case MenuAction_End:
+		{
+			CloseHandle(menu);
+		}
+		
+		case MenuAction_Display:
+		{
+	 		decl String:oldTitle[255], String:buffer[255];
+			GetMenuTitle(menu, oldTitle, sizeof(oldTitle));
+			Format(buffer, sizeof(buffer), "%T", oldTitle, param1);
+
+			new Handle:panel = Handle:param2;
+			SetPanelTitle(panel, buffer);
+		}
+		
+		case MenuAction_DisplayItem:
+		{
+			if (GetMenuItemCount(menu) - 1 == param2)
+			{
+				decl String:buffer[255];
+				Format(buffer, sizeof(buffer), "%T", "Don't Change", param1);
+				return RedrawMenuItem(buffer);
+			}
+		}		
+
+		// Why am I commented out? Because BAIL hasn't decided yet if
+		// vote notification will be built into the Vote API.
+		/*case MenuAction_Select:
+		{
+			decl String:Name[32], String:Map[32];
+			GetClientName(param1, Name, sizeof(Name));
+			GetMenuItem(menu, param2, Map, sizeof(Map));
+
+			PrintToChatAll("[SM] %s has voted for map '%s'", Name, Map);
+		}*/
+		
+		case MenuAction_VoteCancel:
+		{
+			if (param1 == VoteCancel_NoVotes)
+			{
+				PrintToChatAll("[SM] %t", "No Votes");
+				g_RTVEnded = true;
+			}
+		}
+
+		case MenuAction_VoteEnd:
+		{
+			new String:map[64];
+			
+			GetMenuItem(menu, param1, map, sizeof(map));
+			
+			if (GetMenuItemCount(menu) - 1 == param1) // This should always match the "Keep Current" option
+			{
+				PrintToChatAll("[SM] %t", "Current Map Stays");
+				LogMessage("[SM] Rockthevote has ended, current map kept.");
+			}
+			else
+			{
+				PrintToChatAll("[SM] %t", "Changing Maps", map);
+				LogMessage("[SM] Rockthevote has ended, changing to map %s.", map);
+				new Handle:dp;
+				CreateDataTimer(5.0, Timer_ChangeMap, dp);
+				WritePackString(dp, map);
+			}
+			
+			g_RTVEnded = true;
+		}
+	}
+	
+	return 0;
+}
+
+public Handler_MapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
+{
+	switch (action)
+	{
+		case MenuAction_End:
+		{
+			g_VoteMenu = INVALID_HANDLE;
+			CloseHandle(menu);
+		}
+		
+		case MenuAction_Display:
+		{
+	 		decl String:buffer[255];
+			Format(buffer, sizeof(buffer), "%T", "Vote Nextmap", param1);
+
+			new Handle:panel = Handle:param2;
+			SetPanelTitle(panel, buffer);
+		}		
+		
+		case MenuAction_DisplayItem:
+		{
+			if (GetMenuItemCount(menu) - 1 == param2)
+			{
+				decl String:map[64], String:buffer[255];
+				GetMenuItem(menu, param2, map, sizeof(map));
+				if (strcmp(map, VOTE_EXTEND, false) == 0)
+				{
+					Format(buffer, sizeof(buffer), "%T", "Extend Map", param1);
+					return RedrawMenuItem(buffer);
+				}
+			}
+		}		
+
+		// Why am I commented out? Because BAIL hasn't decided yet if
+		// vote notification will be built into the Vote API.
+		/*case MenuAction_Select:
+		{
+			decl String:Name[32], String:Map[32];
+			GetClientName(param1, Name, sizeof(Name));
+			GetMenuItem(menu, param2, Map, sizeof(Map));
+
+			PrintToChatAll("[SM] %s has voted for map '%s'", Name, Map);
+		}*/
+		
+		case MenuAction_VoteCancel:
+		{
+			// If we receive 0 votes, pick at random.
+			if (param1 == VoteCancel_NoVotes && GetConVarBool(g_Cvar_NoVoteMode))
+			{
+				new count = GetMenuItemCount(menu);
+				new item = GetRandomInt(0, count - 1);
+				decl String:map[32];
+				GetMenuItem(menu, item, map, sizeof(map));
+				
+				while (strcmp(map, VOTE_EXTEND, false) == 0)
+				{
+					item = GetRandomInt(0, count - 1);
+					GetMenuItem(menu, item, map, sizeof(map));
+				}
+				
+				SetNextMap(map);			
+			}
+			else
+			{
+				// We were actually cancelled. What should we do?
+			}
+		}
+
+		case MenuAction_VoteEnd:
+		{
+			decl String:map[32];
+			GetMenuItem(menu, param1, map, sizeof(map));
+
+			if (strcmp(map, VOTE_EXTEND, false) == 0)
+			{
+				new time;
+				if (GetMapTimeLimit(time))
+				{
+					if (time > 0 && time < GetConVarInt(g_Cvar_ExtendTimeMax))
+					{
+						ExtendMapTimeLimit(GetConVarInt(g_Cvar_ExtendTimeStep)*60);						
+					}
+				}
+				
+				if (g_Cvar_Winlimit != INVALID_HANDLE)
+				{
+					new winlimit = GetConVarInt(g_Cvar_Winlimit);
+					if (winlimit && winlimit < GetConVarInt(g_Cvar_ExtendRoundMax))
+					{
+						SetConVarInt(g_Cvar_Winlimit, winlimit + GetConVarInt(g_Cvar_ExtendRoundStep));
+					}					
+				}
+				
+				if (g_Cvar_Maxrounds != INVALID_HANDLE)
+				{
+					new maxrounds = GetConVarInt(g_Cvar_Maxrounds);
+					if (maxrounds && maxrounds < GetConVarInt(g_Cvar_ExtendRoundMax))
+					{
+						SetConVarInt(g_Cvar_Maxrounds, maxrounds + GetConVarInt(g_Cvar_ExtendRoundStep));
+					}
+				}
+				
+				if (g_Cvar_Fraglimit != INVALID_HANDLE)
+				{
+					new fraglimit = GetConVarInt(g_Cvar_Fraglimit);
+					if (fraglimit && fraglimit < GetConVarInt(g_Cvar_ExtendFragMax))
+					{
+						SetConVarInt(g_Cvar_Fraglimit, fraglimit + GetConVarInt(g_Cvar_ExtendFragStep));						
+					}
+				}
+
+				PrintToChatAll("[SM] %t", "Current Map Extended");
+				LogMessage("Voting for next map has finished. The current map has been extended.");
+				
+				// We extended, so we'll have to vote again.
+				g_HasVoteStarted = false;
+				CreateNextVote();
+				SetupTimeleftTimer();
+			}
+			else
+			{
+				SetNextMap(map);
+			}
+		}
+	}
+	
+	return 0;
+}
\ No newline at end of file
diff --git a/plugins/testsuite/goto_test.sp b/plugins/testsuite/goto_test.sp
new file mode 100644
index 00000000..2c6721c8
--- /dev/null
+++ b/plugins/testsuite/goto_test.sp
@@ -0,0 +1,28 @@
+#include <sourcemod>
+
+public OnPluginStart()
+{
+	RegServerCmd("test_goto", Test_Goto);
+}
+
+public Action:Test_Goto(args)
+{
+	new bool:hello = false;
+	new String:crab[] = "space crab";
+
+sample_label:
+
+	new String:yam[] = "yams";
+
+	PrintToServer("%s %s", crab, yam);
+
+	if (!hello)
+	{
+		new bool:what = true;
+		hello = what
+		goto sample_label;
+	}
+
+	return Plugin_Handled;
+}
+
diff --git a/sourcepawn/compiler/sc4.c b/sourcepawn/compiler/sc4.c
index 91887f5c..1eb19208 100644
--- a/sourcepawn/compiler/sc4.c
+++ b/sourcepawn/compiler/sc4.c
@@ -854,19 +854,10 @@ SC_FUNC void modstk(int delta)
 /* set the stack to a hard offset from the frame */
 SC_FUNC void setstk(cell value)
 {
-  stgwrite("\tlctrl 5\n");      /* get FRM in PRI */
+  stgwrite("\tstackadjust ");
   assert(value<=0);             /* STK should always become <= FRM */
-  if (value<0) {
-    stgwrite("\tadd.c ");
-    outval(value, TRUE);        /* add (negative) offset */
-    code_idx+=opcodes(1)+opargs(1);
-    // ??? write zeros in the space between STK and the value in PRI (the new stk)
-    //     get value of STK in ALT
-    //     zero PRI
-    //     need new FILL opcode that takes a variable size
-  } /* if */
-  stgwrite("\tsctrl 4\n");      /* store in STK */
-  code_idx+=opcodes(2)+opargs(2);
+  outval(value, TRUE);        /* add (negative) offset */
+  code_idx+=opcodes(1)+opargs(1);
 }
 
 SC_FUNC void modheap(int delta)
diff --git a/sourcepawn/compiler/sc6.c b/sourcepawn/compiler/sc6.c
index a19b62cd..6a431eac 100644
--- a/sourcepawn/compiler/sc6.c
+++ b/sourcepawn/compiler/sc6.c
@@ -596,6 +596,7 @@ static OPCODEC opcodelist[] = {
   { 21, "sref.s.pri", sIN_CSEG, parm1 },
   { 67, "sshr",       sIN_CSEG, parm0 },
   { 44, "stack",      sIN_CSEG, parm1 },
+  {165, "stackadjust",sIN_CSEG, parm1 },
   {  0, "stksize",    0,        noop },
   { 16, "stor.alt",   sIN_CSEG, parm1 },
   { 23, "stor.i",     sIN_CSEG, parm0 },
diff --git a/sourcepawn/jit/x86/jit_x86.cpp b/sourcepawn/jit/x86/jit_x86.cpp
index 6103f3da..23e9a22c 100644
--- a/sourcepawn/jit/x86/jit_x86.cpp
+++ b/sourcepawn/jit/x86/jit_x86.cpp
@@ -1209,6 +1209,28 @@ inline void WriteOp_Stack(JitWriter *jit)
 	}
 }
 
+inline void WriteOp_StackAdjust(JitWriter *jit)
+{
+	cell_t val = jit->read_cell();
+
+	assert(val <= 0);
+
+	//lea edi, [ebx-val]
+	
+	if (val < SCHAR_MAX && val > SCHAR_MIN)
+	{
+		IA32_Lea_DispRegImm8(jit, AMX_REG_STK, AMX_REG_FRM, val);
+	}
+	else
+	{
+		IA32_Lea_DispRegImm32(jit, AMX_REG_STK, AMX_REG_FRM, val);
+	}
+
+	/* We assume the compiler has generated good code -- 
+	 * That is, we do not bother validating this amount!
+	 */
+}
+
 inline void WriteOp_Heap(JitWriter *jit)
 {
 	//mov edx, [esi+hea]
diff --git a/sourcepawn/jit/x86/opcode_helpers.h b/sourcepawn/jit/x86/opcode_helpers.h
index eb74eb30..c7bb2c75 100644
--- a/sourcepawn/jit/x86/opcode_helpers.h
+++ b/sourcepawn/jit/x86/opcode_helpers.h
@@ -124,8 +124,8 @@ typedef enum
 	OP_LOAD_ALT,			//~!VERIFIED (load.pri)
 	OP_LOAD_S_PRI,			//VERIFIED
 	OP_LOAD_S_ALT,			//VERIFIED
-	OP_LREF_PRI,			// !GEN :TODO: we will need this for dynarrays
-	OP_LREF_ALT,			// !GEN :TODO: we will need this for dynarrays
+	OP_LREF_PRI,			//VERIFIED
+	OP_LREF_ALT,			//~VERIFIED
 	OP_LREF_S_PRI,			//VERIFIED
 	OP_LREF_S_ALT,			//~VERIFIED (lref.s.pri)
 	OP_LOAD_I,				//VERIFIED
@@ -138,8 +138,8 @@ typedef enum
 	OP_STOR_ALT,			//~VERIFIED (stor.pri)
 	OP_STOR_S_PRI,			//VERIFIED
 	OP_STOR_S_ALT,			//~VERIFIED (stor.s.pri)
-	OP_SREF_PRI,			// !GEN :TODO: we will need this for dynarrays
-	OP_SREF_ALT,			// !GEN :TODO: we will need this for dynarrays
+	OP_SREF_PRI,			//VERIFIED
+	OP_SREF_ALT,			//~VERIFIED
 	OP_SREF_S_PRI,			//VERIFIED
 	OP_SREF_S_ALT,			//~VERIFIED (stor.s.alt)
 	OP_STOR_I,				//VERIFIED
@@ -286,6 +286,7 @@ typedef enum
 	OP_GENARRAY,			//VERIFIED
 	OP_GENARRAY_Z,			//-VERIFIED (not tested for 1D arrays)
 	OP_STRADJUST_PRI,		//VERIFIED
+	OP_STACKADJUST,			//:TODO: VERIFY
 	OP_FABS,				//VERIFIED
 	OP_FLOAT,				//VERIFIED
 	OP_FLOATADD,			//VERIFIED
@@ -301,22 +302,4 @@ typedef enum
 	OP_NUM_OPCODES
 } OPCODE;
 
-/*
-* :TODO: List of ASM Opts
-*	from jit_x86.cpp 
-*       DONE: Rest of opcodes including the SYSREQ.N inlined version (rev2)
-*			  Including genarray and the 2 tracker ones
-*       DONE: ALL ungen opcodes (rev1)
-*	from opcode_helpers.cpp
-*       DONE: SYSREQ.N .C (rev2)
-*			  MACRO OPCODES (rev2)
-*             ERROR CHECKS\{VERIFY ADDR} (rev2)
-*			  ARRAY STUFF
-*		TODO: BrkDebug
-*			  EXEC FUNCTION
-*			  VERIFY ADDR
-*
-*	Oh and ALIGN to 16BYTES all stuff that is called via CALL and frequently used jump labels like what's done with PROC.
-*/
-
 #endif //_INCLUDE_SOURCEPAWN_JIT_X86_OPCODE_INFO_H_
diff --git a/sourcepawn/jit/x86/opcode_switch.inc b/sourcepawn/jit/x86/opcode_switch.inc
index 2ac2d2f0..e62c5791 100644
--- a/sourcepawn/jit/x86/opcode_switch.inc
+++ b/sourcepawn/jit/x86/opcode_switch.inc
@@ -748,6 +748,11 @@
 				WriteOp_FloatCompare(jit);
 				break;
 			}
+		case OP_STACKADJUST:
+			{
+				WriteOp_StackAdjust(jit);
+				break;
+			}
 #if defined USE_UNGEN_OPCODES
 		#include "ungen_opcode_switch.inc"
 #endif

From cc3c16c079546ba4421bbedbf860c7d678ac974e Mon Sep 17 00:00:00 2001
From: Scott Ehlert <ds@alliedmods.net>
Date: Thu, 27 Mar 2008 04:00:57 +0000
Subject: [PATCH 259/263] Changed the environment variable used in the include
 paths from SOURCEMM -> SOURCEMM16

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401961
---
 loader/msvc8/loader.vcproj | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/loader/msvc8/loader.vcproj b/loader/msvc8/loader.vcproj
index 0d48a624..a84f17d6 100644
--- a/loader/msvc8/loader.vcproj
+++ b/loader/msvc8/loader.vcproj
@@ -40,7 +40,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;&quot;$(SOURCEMM)\sourcehook&quot;;&quot;$(SOURCEMM)&quot;;&quot;$(SOURCEMM)\sourcemm&quot;"
+				AdditionalIncludeDirectories="..;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LOADER_EXPORTS;_CRT_SECURE_NO_DEPRECATE"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -120,7 +120,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;&quot;$(SOURCEMM)\sourcemm&quot;;&quot;$(SOURCEMM)&quot;;&quot;$(SOURCEMM)\sourcehook&quot;"
+				AdditionalIncludeDirectories="..;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LOADER_EXPORTS;_CRT_SECURE_NO_DEPRECATE"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"

From 97c26eee3ccf251b05bccf7641f87f3aa9b3cf26 Mon Sep 17 00:00:00 2001
From: Scott Ehlert <ds@alliedmods.net>
Date: Thu, 27 Mar 2008 04:54:56 +0000
Subject: [PATCH 260/263] Updated copyright year

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401964
---
 core/ADTFactory.cpp                          |   2 +-
 core/ADTFactory.h                            |   2 +-
 core/AdminCache.cpp                          |   2 +-
 core/AdminCache.h                            |   2 +-
 core/CDataPack.cpp                           |   2 +-
 core/CDataPack.h                             |   2 +-
 core/CellArray.h                             |   2 +-
 core/CellRecipientFilter.h                   |   2 +-
 core/ChatTriggers.cpp                        |   2 +-
 core/ChatTriggers.h                          |   2 +-
 core/ConCmdManager.cpp                       |   2 +-
 core/ConCmdManager.h                         |   2 +-
 core/ConVarManager.cpp                       |   2 +-
 core/ConVarManager.h                         |   2 +-
 core/CoreConfig.cpp                          |   2 +-
 core/CoreConfig.h                            |   2 +-
 core/CrazyDebugger.cpp                       |   2 +-
 core/Database.cpp                            |   2 +-
 core/Database.h                              |   2 +-
 core/DebugReporter.cpp                       |   2 +-
 core/DebugReporter.h                         |   2 +-
 core/EventManager.cpp                        |   2 +-
 core/EventManager.h                          |   2 +-
 core/GameConfigs.cpp                         |   2 +-
 core/GameConfigs.h                           |   2 +-
 core/HalfLife2.cpp                           |   2 +-
 core/HalfLife2.h                             |   2 +-
 core/Logger.cpp                              |   2 +-
 core/Logger.h                                |   2 +-
 core/MemoryUtils.cpp                         |   2 +-
 core/MemoryUtils.h                           |   2 +-
 core/MenuManager.cpp                         |   2 +-
 core/MenuManager.h                           |   2 +-
 core/MenuStyle_Base.cpp                      |   2 +-
 core/MenuStyle_Base.h                        |   2 +-
 core/MenuStyle_Radio.cpp                     |   2 +-
 core/MenuStyle_Radio.h                       |   2 +-
 core/MenuStyle_Valve.cpp                     |   2 +-
 core/MenuStyle_Valve.h                       |   2 +-
 core/MenuVoting.cpp                          |   2 +-
 core/MenuVoting.h                            |   2 +-
 core/PlayerManager.cpp                       |   2 +-
 core/PlayerManager.h                         |   2 +-
 core/Profiler.cpp                            |   2 +-
 core/Profiler.h                              |   2 +-
 core/TextParsers.cpp                         |   2 +-
 core/TextParsers.h                           |   2 +-
 core/ThreadSupport.cpp                       |   2 +-
 core/ThreadSupport.h                         |   2 +-
 core/TimerSys.cpp                            |   2 +-
 core/TimerSys.h                              |   2 +-
 core/Translator.cpp                          |   2 +-
 core/Translator.h                            |   2 +-
 core/UserMessages.cpp                        |   2 +-
 core/UserMessages.h                          |   2 +-
 core/concmd_cleaner.cpp                      |   2 +-
 core/concmd_cleaner.h                        |   2 +-
 core/frame_hooks.cpp                         |   2 +-
 core/frame_hooks.h                           |   2 +-
 core/sm_autonatives.cpp                      |   2 +-
 core/sm_autonatives.h                        |   2 +-
 core/sm_crc32.cpp                            |   2 +-
 core/sm_crc32.h                              |   2 +-
 core/sm_fastlink.h                           |   2 +-
 core/sm_globals.h                            |   2 +-
 core/sm_memtable.cpp                         |   2 +-
 core/sm_memtable.h                           |   2 +-
 core/sm_queue.h                              |   2 +-
 core/sm_simple_prioqueue.h                   |   2 +-
 core/sm_srvcmds.cpp                          |   2 +-
 core/sm_srvcmds.h                            |   2 +-
 core/sm_stringutil.cpp                       |   2 +-
 core/sm_stringutil.h                         |   2 +-
 core/sm_trie.cpp                             |   2 +-
 core/sm_trie.h                               |   2 +-
 core/sm_version.h                            |   2 +-
 core/sm_version.tpl                          |   2 +-
 core/smn_admin.cpp                           |   2 +-
 core/smn_adt_array.cpp                       |   2 +-
 core/smn_adt_trie.cpp                        |   2 +-
 core/smn_banning.cpp                         |   2 +-
 core/smn_bitbuffer.cpp                       |   2 +-
 core/smn_console.cpp                         |   2 +-
 core/smn_core.cpp                            |   2 +-
 core/smn_database.cpp                        |   2 +-
 core/smn_datapacks.cpp                       |   2 +-
 core/smn_entities.cpp                        |   2 +-
 core/smn_events.cpp                          |   2 +-
 core/smn_fakenatives.cpp                     |   2 +-
 core/smn_filesystem.cpp                      |   2 +-
 core/smn_float.cpp                           |   2 +-
 core/smn_functions.cpp                       |   2 +-
 core/smn_gameconfigs.cpp                     |   2 +-
 core/smn_halflife.cpp                        |   2 +-
 core/smn_handles.cpp                         |   2 +-
 core/smn_hudtext.cpp                         |   2 +-
 core/smn_keyvalues.cpp                       |   2 +-
 core/smn_lang.cpp                            |   2 +-
 core/smn_maplists.cpp                        |   2 +-
 core/smn_menus.cpp                           |   2 +-
 core/smn_player.cpp                          |   2 +-
 core/smn_profiler.cpp                        |   2 +-
 core/smn_sorting.cpp                         |   2 +-
 core/smn_string.cpp                          |   2 +-
 core/smn_textparse.cpp                       |   2 +-
 core/smn_timers.cpp                          |   2 +-
 core/smn_usermsgs.cpp                        |   2 +-
 core/smn_usermsgs.h                          |   2 +-
 core/smn_vector.cpp                          |   2 +-
 core/sourcemm_api.cpp                        |   2 +-
 core/sourcemm_api.h                          |   2 +-
 core/sourcemod.cpp                           |   2 +-
 core/sourcemod.h                             |   2 +-
 core/systems/ExtensionSys.cpp                |   2 +-
 core/systems/ExtensionSys.h                  |   2 +-
 core/systems/ForwardSys.cpp                  |   2 +-
 core/systems/ForwardSys.h                    |   2 +-
 core/systems/HandleSys.cpp                   |   2 +-
 core/systems/HandleSys.h                     |   2 +-
 core/systems/LibrarySys.cpp                  |   2 +-
 core/systems/LibrarySys.h                    |   2 +-
 core/systems/PluginInfoDatabase.cpp          |   2 +-
 core/systems/PluginInfoDatabase.h            |   2 +-
 core/systems/PluginSys.cpp                   |   2 +-
 core/systems/PluginSys.h                     |   2 +-
 core/systems/ShareSys.cpp                    |   2 +-
 core/systems/ShareSys.h                      |   2 +-
 core/thread/BaseWorker.cpp                   |   2 +-
 core/thread/BaseWorker.h                     |   2 +-
 core/thread/PosixThreads.cpp                 |   2 +-
 core/thread/PosixThreads.h                   |   2 +-
 core/thread/ThreadWorker.cpp                 |   2 +-
 core/thread/ThreadWorker.h                   |   2 +-
 core/thread/WinThreads.cpp                   |   2 +-
 core/thread/WinThreads.h                     |   2 +-
 core/version.rc                              |   2 +-
 core/vm/sp_vm_basecontext.cpp                |   2 +-
 core/vm/sp_vm_basecontext.h                  |   2 +-
 core/vm/sp_vm_engine.cpp                     |   2 +-
 core/vm/sp_vm_engine.h                       |   2 +-
 core/vm/sp_vm_function.cpp                   |   2 +-
 core/vm/sp_vm_function.h                     |   2 +-
 extensions/batsupport/BATInterface.h         |   2 +-
 extensions/batsupport/Makefile               |   2 +-
 extensions/batsupport/extension.cpp          |   2 +-
 extensions/batsupport/extension.h            |   2 +-
 extensions/batsupport/sdk/smsdk_config.h     |   2 +-
 extensions/batsupport/sdk/smsdk_ext.cpp      |   2 +-
 extensions/batsupport/sdk/smsdk_ext.h        |   2 +-
 extensions/bintools/CallMaker.cpp            |   2 +-
 extensions/bintools/CallMaker.h              |   2 +-
 extensions/bintools/CallWrapper.cpp          |   2 +-
 extensions/bintools/CallWrapper.h            |   2 +-
 extensions/bintools/Makefile                 |   2 +-
 extensions/bintools/extension.cpp            |   2 +-
 extensions/bintools/extension.h              |   2 +-
 extensions/bintools/jit_call.cpp             |   2 +-
 extensions/bintools/jit_call.h               |   2 +-
 extensions/bintools/sdk/smsdk_config.h       |   2 +-
 extensions/bintools/sdk/smsdk_ext.cpp        |   2 +-
 extensions/bintools/sdk/smsdk_ext.h          |   2 +-
 extensions/bintools/svn_version.h            |   2 +-
 extensions/bintools/svn_version.tpl          |   2 +-
 extensions/bintools/version.rc               |   2 +-
 extensions/cstrike/RegNatives.cpp            |   2 +-
 extensions/cstrike/RegNatives.h              |   2 +-
 extensions/cstrike/extension.cpp             |   2 +-
 extensions/cstrike/extension.h               |   2 +-
 extensions/cstrike/natives.cpp               |   2 +-
 extensions/cstrike/sdk/smsdk_config.h        |   2 +-
 extensions/cstrike/sdk/smsdk_ext.cpp         |   2 +-
 extensions/cstrike/sdk/smsdk_ext.h           |   2 +-
 extensions/cstrike/svn_version.h             |   2 +-
 extensions/cstrike/svn_version.tpl           |   2 +-
 extensions/cstrike/timeleft.cpp              |   2 +-
 extensions/cstrike/timeleft.h                |   2 +-
 extensions/cstrike/version.rc                |   2 +-
 extensions/geoip/Makefile                    |   2 +-
 extensions/geoip/extension.cpp               |   2 +-
 extensions/geoip/extension.h                 |   2 +-
 extensions/geoip/sdk/smsdk_config.h          |   2 +-
 extensions/geoip/sdk/smsdk_ext.cpp           |   2 +-
 extensions/geoip/sdk/smsdk_ext.h             |   2 +-
 extensions/geoip/svn_version.h               |   2 +-
 extensions/geoip/svn_version.tpl             |   2 +-
 extensions/geoip/version.rc                  |   2 +-
 extensions/mysql/Makefile                    |   2 +-
 extensions/mysql/extension.cpp               |   2 +-
 extensions/mysql/extension.h                 |   2 +-
 extensions/mysql/mysql/MyBasicResults.cpp    |   2 +-
 extensions/mysql/mysql/MyBasicResults.h      |   2 +-
 extensions/mysql/mysql/MyBoundResults.cpp    |   2 +-
 extensions/mysql/mysql/MyBoundResults.h      |   2 +-
 extensions/mysql/mysql/MyDatabase.cpp        |   2 +-
 extensions/mysql/mysql/MyDatabase.h          |   2 +-
 extensions/mysql/mysql/MyDriver.cpp          |   2 +-
 extensions/mysql/mysql/MyDriver.h            |   2 +-
 extensions/mysql/mysql/MyStatement.cpp       |   2 +-
 extensions/mysql/mysql/MyStatement.h         |   2 +-
 extensions/mysql/sdk/smsdk_config.h          |   2 +-
 extensions/mysql/sdk/smsdk_ext.cpp           |   2 +-
 extensions/mysql/sdk/smsdk_ext.h             |   2 +-
 extensions/mysql/svn_version.h               |   2 +-
 extensions/mysql/svn_version.tpl             |   2 +-
 extensions/mysql/version.rc                  |   2 +-
 extensions/regex/Makefile.ep1                |   2 +-
 extensions/regex/Makefile.ep2                |   2 +-
 extensions/regex/Makefile.orig               |   2 +-
 extensions/regex/extension.cpp               |   2 +-
 extensions/regex/extension.h                 |   2 +-
 extensions/regex/sdk/smsdk_config.h          |   2 +-
 extensions/regex/sdk/smsdk_ext.cpp           |   2 +-
 extensions/regex/sdk/smsdk_ext.h             |   2 +-
 extensions/sdktools/CellRecipientFilter.h    |   2 +-
 extensions/sdktools/Makefile                 |   2 +-
 extensions/sdktools/extension.cpp            |   2 +-
 extensions/sdktools/extension.h              |   2 +-
 extensions/sdktools/inputnatives.cpp         |   2 +-
 extensions/sdktools/sdk/smsdk_config.h       |   2 +-
 extensions/sdktools/sdk/smsdk_ext.cpp        |   2 +-
 extensions/sdktools/sdk/smsdk_ext.h          |   2 +-
 extensions/sdktools/svn_version.h            |   2 +-
 extensions/sdktools/svn_version.tpl          |   2 +-
 extensions/sdktools/teamnatives.cpp          |   2 +-
 extensions/sdktools/tempents.cpp             |   2 +-
 extensions/sdktools/tempents.h               |   2 +-
 extensions/sdktools/tenatives.cpp            |   2 +-
 extensions/sdktools/trnatives.cpp            |   2 +-
 extensions/sdktools/util.h                   |   2 +-
 extensions/sdktools/vcallbuilder.cpp         |   2 +-
 extensions/sdktools/vcallbuilder.h           |   2 +-
 extensions/sdktools/vcaller.cpp              |   2 +-
 extensions/sdktools/vdecoder.cpp             |   2 +-
 extensions/sdktools/vdecoder.h               |   2 +-
 extensions/sdktools/version.rc               |   2 +-
 extensions/sdktools/vglobals.cpp             |   2 +-
 extensions/sdktools/vglobals.h               |   2 +-
 extensions/sdktools/vhelpers.cpp             |   2 +-
 extensions/sdktools/vhelpers.h               |   2 +-
 extensions/sdktools/vnatives.cpp             |   2 +-
 extensions/sdktools/vnatives.h               |   2 +-
 extensions/sdktools/voice.cpp                |   2 +-
 extensions/sdktools/vsound.cpp               |   2 +-
 extensions/sdktools/vsound.h                 |   2 +-
 extensions/sdktools/vstringtable.cpp         |   2 +-
 extensions/sqlite/Makefile                   |   2 +-
 extensions/sqlite/driver/SqDatabase.cpp      |   2 +-
 extensions/sqlite/driver/SqDatabase.h        |   2 +-
 extensions/sqlite/driver/SqDriver.cpp        |   2 +-
 extensions/sqlite/driver/SqDriver.h          |   2 +-
 extensions/sqlite/driver/SqQuery.cpp         |   2 +-
 extensions/sqlite/driver/SqQuery.h           |   2 +-
 extensions/sqlite/driver/SqResults.cpp       |   2 +-
 extensions/sqlite/driver/SqResults.h         |   2 +-
 extensions/sqlite/extension.cpp              |   2 +-
 extensions/sqlite/extension.h                |   2 +-
 extensions/sqlite/sdk/smsdk_config.h         |   2 +-
 extensions/sqlite/sdk/smsdk_ext.cpp          |   2 +-
 extensions/sqlite/sdk/smsdk_ext.h            |   2 +-
 extensions/sqlite/sm_memtable.cpp            |   2 +-
 extensions/sqlite/sm_memtable.h              |   2 +-
 extensions/sqlite/svn_version.h              |   2 +-
 extensions/sqlite/svn_version.tpl            |   2 +-
 extensions/sqlite/version.rc                 |   2 +-
 extensions/tf2/Makefile.ep1                  |   2 +-
 extensions/tf2/Makefile.ep2                  |   2 +-
 extensions/tf2/Makefile.orig                 |   2 +-
 extensions/tf2/RegNatives.cpp                |   2 +-
 extensions/tf2/RegNatives.h                  |   2 +-
 extensions/tf2/extension.cpp                 |   2 +-
 extensions/tf2/extension.h                   |   2 +-
 extensions/tf2/natives.cpp                   |   2 +-
 extensions/tf2/sdk/smsdk_config.h            |   2 +-
 extensions/tf2/sdk/smsdk_ext.cpp             |   2 +-
 extensions/tf2/sdk/smsdk_ext.h               |   2 +-
 extensions/tf2/svn_version.h                 |   2 +-
 extensions/tf2/svn_version.tpl               |   2 +-
 extensions/tf2/version.rc                    |   2 +-
 extensions/topmenus/Makefile                 |   2 +-
 extensions/topmenus/TopMenu.cpp              |   2 +-
 extensions/topmenus/TopMenu.h                |   2 +-
 extensions/topmenus/TopMenuManager.cpp       |   2 +-
 extensions/topmenus/TopMenuManager.h         |   2 +-
 extensions/topmenus/extension.cpp            |   2 +-
 extensions/topmenus/extension.h              |   2 +-
 extensions/topmenus/sdk/sm_memtable.cpp      |   2 +-
 extensions/topmenus/sdk/sm_memtable.h        |   2 +-
 extensions/topmenus/sdk/smsdk_config.h       |   2 +-
 extensions/topmenus/sdk/smsdk_ext.cpp        |   2 +-
 extensions/topmenus/sdk/smsdk_ext.h          |   2 +-
 extensions/topmenus/smn_topmenus.cpp         |   2 +-
 extensions/topmenus/smn_topmenus.h           |   2 +-
 extensions/topmenus/svn_version.h            |   2 +-
 extensions/topmenus/svn_version.tpl          |   2 +-
 extensions/topmenus/version.rc               |   2 +-
 loader/Makefile                              |   2 +-
 loader/loader.cpp                            |   2 +-
 loader/svn_version.h                         |   2 +-
 loader/svn_version.tpl                       |   2 +-
 loader/version.rc                            |   2 +-
 plugins/admin-flatfile/admin-flatfile.sp     |   2 +-
 plugins/admin-flatfile/admin-groups.sp       |   2 +-
 plugins/admin-flatfile/admin-overrides.sp    |   2 +-
 plugins/admin-flatfile/admin-simple.sp       |   2 +-
 plugins/admin-flatfile/admin-users.sp        |   2 +-
 plugins/admin-sql-prefetch.sp                |   2 +-
 plugins/admin-sql-threaded.sp                |   2 +-
 plugins/adminhelp.sp                         |   2 +-
 plugins/adminmenu.sp                         |   2 +-
 plugins/antiflood.sp                         |   2 +-
 plugins/basebans.sp                          |   2 +-
 plugins/basebans/ban.sp                      |   2 +-
 plugins/basechat.sp                          |   2 +-
 plugins/basecomm.sp                          |   2 +-
 plugins/basecomm/gag.sp                      |   2 +-
 plugins/basecommands.sp                      |   2 +-
 plugins/basecommands/cancelvote.sp           |   2 +-
 plugins/basecommands/execcfg.sp              |   2 +-
 plugins/basecommands/kick.sp                 |   2 +-
 plugins/basecommands/map.sp                  |   2 +-
 plugins/basecommands/reloadadmins.sp         |   2 +-
 plugins/basecommands/who.sp                  |   2 +-
 plugins/basetriggers.sp                      |   2 +-
 plugins/basevotes.sp                         |   2 +-
 plugins/basevotes/voteban.sp                 |   2 +-
 plugins/basevotes/votekick.sp                |   2 +-
 plugins/basevotes/votemap.sp                 |   2 +-
 plugins/compile.exe                          | Bin 0 -> 113664 bytes
 plugins/funcommands.sp                       |   2 +-
 plugins/funcommands/beacon.sp                |   2 +-
 plugins/funcommands/blind.sp                 |   2 +-
 plugins/funcommands/drug.sp                  |   2 +-
 plugins/funcommands/fire.sp                  |   2 +-
 plugins/funcommands/gravity.sp               |   2 +-
 plugins/funcommands/ice.sp                   |   2 +-
 plugins/funcommands/noclip.sp                |   2 +-
 plugins/funcommands/timebomb.sp              |   2 +-
 plugins/funvotes.sp                          |   2 +-
 plugins/funvotes/votealltalk.sp              |   2 +-
 plugins/funvotes/voteburn.sp                 |   2 +-
 plugins/funvotes/voteff.sp                   |   2 +-
 plugins/funvotes/votegravity.sp              |   2 +-
 plugins/funvotes/voteslay.sp                 |   2 +-
 plugins/include/admin.inc                    |   2 +-
 plugins/include/adminmenu.inc                |   2 +-
 plugins/include/adt.inc                      |   2 +-
 plugins/include/adt_array.inc                |   2 +-
 plugins/include/adt_trie.inc                 |   2 +-
 plugins/include/banning.inc                  |   2 +-
 plugins/include/bitbuffer.inc                |   2 +-
 plugins/include/clients.inc                  |   2 +-
 plugins/include/commandfilters.inc           |   2 +-
 plugins/include/console.inc                  |   2 +-
 plugins/include/core.inc                     |   2 +-
 plugins/include/cstrike.inc                  |   2 +-
 plugins/include/datapack.inc                 |   2 +-
 plugins/include/dbi.inc                      |   2 +-
 plugins/include/entity.inc                   |   2 +-
 plugins/include/entity_prop_stocks.inc       |   2 +-
 plugins/include/events.inc                   |   2 +-
 plugins/include/files.inc                    |   2 +-
 plugins/include/float.inc                    |   2 +-
 plugins/include/functions.inc                |   2 +-
 plugins/include/geoip.inc                    |   2 +-
 plugins/include/halflife.inc                 |   2 +-
 plugins/include/handles.inc                  |   2 +-
 plugins/include/helpers.inc                  |   2 +-
 plugins/include/keyvalues.inc                |   2 +-
 plugins/include/lang.inc                     |   2 +-
 plugins/include/logging.inc                  |   2 +-
 plugins/include/menus.inc                    |   2 +-
 plugins/include/profiler.inc                 |   2 +-
 plugins/include/sdktools.inc                 |   2 +-
 plugins/include/sdktools_engine.inc          |   2 +-
 plugins/include/sdktools_entinput.inc        |   2 +-
 plugins/include/sdktools_functions.inc       |   2 +-
 plugins/include/sdktools_sound.inc           |   2 +-
 plugins/include/sdktools_stocks.inc          |   2 +-
 plugins/include/sdktools_stringtables.inc    |   2 +-
 plugins/include/sdktools_tempents.inc        |   2 +-
 plugins/include/sdktools_tempents_stocks.inc |   2 +-
 plugins/include/sdktools_trace.inc           |   2 +-
 plugins/include/sdktools_voice.inc           |   2 +-
 plugins/include/sorting.inc                  |   2 +-
 plugins/include/sourcemod.inc                |   2 +-
 plugins/include/string.inc                   |   2 +-
 plugins/include/textparse.inc                |   2 +-
 plugins/include/timers.inc                   |   2 +-
 plugins/include/topmenus.inc                 |   2 +-
 plugins/include/usermessages.inc             |   2 +-
 plugins/include/vector.inc                   |   2 +-
 plugins/include/version.inc                  |   2 +-
 plugins/include/version.tpl                  |   2 +-
 plugins/mapchooser.sp                        |   2 +-
 plugins/mapmanager.sp                        |   2 +-
 plugins/mapmanager/commands.sp               |   2 +-
 plugins/mapmanager/events.sp                 |   2 +-
 plugins/mapmanager/functions.sp              |   2 +-
 plugins/mapmanager/functions_menu.sp         |   2 +-
 plugins/mapmanager/globals.sp                |   2 +-
 plugins/mapmanager/menus.sp                  |   2 +-
 plugins/mapmanager/timers.sp                 |   2 +-
 plugins/mapmanager/votes.sp                  |   2 +-
 plugins/nextmap.sp                           |   2 +-
 plugins/playercommands.sp                    |   2 +-
 plugins/playercommands/slap.sp               |   2 +-
 plugins/playercommands/slay.sp               |   2 +-
 plugins/randomcycle.sp                       |   2 +-
 plugins/reservedslots.sp                     |   2 +-
 plugins/rockthevote.sp                       |   2 +-
 plugins/spcomp.exe                           | Bin 0 -> 315392 bytes
 plugins/sql-admin-manager.sp                 |   2 +-
 public/IADTFactory.h                         |   2 +-
 public/IAdminSystem.h                        |   2 +-
 public/IDBDriver.h                           |   2 +-
 public/IDataPack.h                           |   2 +-
 public/IExtensionSys.h                       |   2 +-
 public/IForwardSys.h                         |   2 +-
 public/IGameConfigs.h                        |   2 +-
 public/IGameHelpers.h                        |   2 +-
 public/IHandleSys.h                          |   2 +-
 public/ILibrarySys.h                         |   2 +-
 public/IMemoryUtils.h                        |   2 +-
 public/IMenuManager.h                        |   2 +-
 public/IPlayerHelpers.h                      |   2 +-
 public/IPluginSys.h                          |   2 +-
 public/IRootConsoleMenu.h                    |   2 +-
 public/IShareSys.h                           |   2 +-
 public/ISourceMod.h                          |   2 +-
 public/ITextParsers.h                        |   2 +-
 public/IThreader.h                           |   2 +-
 public/ITimerSystem.h                        |   2 +-
 public/IUserMessages.h                       |   2 +-
 public/compat_wrappers.h                     |   2 +-
 public/extensions/IBinTools.h                |   2 +-
 public/extensions/ITopMenus.h                |   2 +-
 public/jit/jit_helpers.h                     |   2 +-
 public/jit/x86/x86_macros.h                  |   2 +-
 public/metamod_wrappers.h                    |   2 +-
 public/mms_sample_ext/Makefile.ep2           |   2 +-
 public/mms_sample_ext/Makefile.orig          |   2 +-
 public/sample_ext/Makefile                   |   2 +-
 public/sample_ext/Makefile.ep1               |   2 +-
 public/sample_ext/Makefile.ep2               |   2 +-
 public/sample_ext/Makefile.orig              |   2 +-
 public/sample_ext/extension.cpp              |   2 +-
 public/sample_ext/extension.h                |   2 +-
 public/sample_ext/sdk/smsdk_config.h         |   2 +-
 public/sample_ext/sdk/smsdk_ext.cpp          |   2 +-
 public/sample_ext/sdk/smsdk_ext.h            |   2 +-
 public/sm_platform.h                         |   2 +-
 public/sm_trie_tpl.h                         |   2 +-
 public/sourcepawn/sp_file_headers.h          |   2 +-
 public/sourcepawn/sp_typeutil.h              |   2 +-
 public/sourcepawn/sp_vm_api.h                |   2 +-
 public/sourcepawn/sp_vm_base.h               |   2 +-
 public/sourcepawn/sp_vm_types.h              |   2 +-
 sourcepawn/compiler/Makefile                 |   2 +-
 sourcepawn/compiler/sc1.c                    |   2 +-
 sourcepawn/compiler/svn_version.h            |   2 +-
 sourcepawn/compiler/svn_version.tpl          |   2 +-
 sourcepawn/jit/x86/Makefile                  |   2 +-
 sourcepawn/jit/x86/dll_exports.cpp           |   2 +-
 sourcepawn/jit/x86/dll_exports.h             |   2 +-
 sourcepawn/jit/x86/jit_version.h             |   2 +-
 sourcepawn/jit/x86/jit_version.tpl           |   2 +-
 sourcepawn/jit/x86/jit_x86.cpp               |   2 +-
 sourcepawn/jit/x86/jit_x86.h                 |   2 +-
 sourcepawn/jit/x86/opcode_helpers.cpp        |   2 +-
 sourcepawn/jit/x86/opcode_helpers.h          |   2 +-
 sourcepawn/jit/x86/opcode_switch.inc         |   2 +-
 sourcepawn/jit/x86/ungen_opcode_switch.inc   |   2 +-
 sourcepawn/jit/x86/ungen_opcodes.h           |   2 +-
 sourcepawn/jit/x86/version.rc                |   2 +-
 474 files changed, 472 insertions(+), 472 deletions(-)
 create mode 100644 plugins/compile.exe
 create mode 100644 plugins/spcomp.exe

diff --git a/core/ADTFactory.cpp b/core/ADTFactory.cpp
index c6630971..e8fc2031 100644
--- a/core/ADTFactory.cpp
+++ b/core/ADTFactory.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/ADTFactory.h b/core/ADTFactory.h
index 9c80a0de..31bff041 100644
--- a/core/ADTFactory.h
+++ b/core/ADTFactory.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/AdminCache.cpp b/core/AdminCache.cpp
index 9e447248..e469cdbc 100644
--- a/core/AdminCache.cpp
+++ b/core/AdminCache.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/AdminCache.h b/core/AdminCache.h
index f6cc2db7..ab0b7461 100644
--- a/core/AdminCache.h
+++ b/core/AdminCache.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/CDataPack.cpp b/core/CDataPack.cpp
index c502f806..99d15694 100644
--- a/core/CDataPack.cpp
+++ b/core/CDataPack.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/CDataPack.h b/core/CDataPack.h
index d04cca51..83a53539 100644
--- a/core/CDataPack.h
+++ b/core/CDataPack.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/CellArray.h b/core/CellArray.h
index 786cd255..42f8b452 100644
--- a/core/CellArray.h
+++ b/core/CellArray.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/CellRecipientFilter.h b/core/CellRecipientFilter.h
index 30070553..e7dcddee 100644
--- a/core/CellRecipientFilter.h
+++ b/core/CellRecipientFilter.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/ChatTriggers.cpp b/core/ChatTriggers.cpp
index cf6baa36..4e1ec018 100644
--- a/core/ChatTriggers.cpp
+++ b/core/ChatTriggers.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/ChatTriggers.h b/core/ChatTriggers.h
index 0da7e549..c003f997 100644
--- a/core/ChatTriggers.h
+++ b/core/ChatTriggers.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/ConCmdManager.cpp b/core/ConCmdManager.cpp
index ec112f78..b41b6bfd 100644
--- a/core/ConCmdManager.cpp
+++ b/core/ConCmdManager.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/ConCmdManager.h b/core/ConCmdManager.h
index 51938cf7..8c25bb73 100644
--- a/core/ConCmdManager.h
+++ b/core/ConCmdManager.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/ConVarManager.cpp b/core/ConVarManager.cpp
index 5de8d87a..f8e27cee 100644
--- a/core/ConVarManager.cpp
+++ b/core/ConVarManager.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/ConVarManager.h b/core/ConVarManager.h
index ac921ec5..148f7c40 100644
--- a/core/ConVarManager.h
+++ b/core/ConVarManager.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/CoreConfig.cpp b/core/CoreConfig.cpp
index dab545bb..0075c537 100644
--- a/core/CoreConfig.cpp
+++ b/core/CoreConfig.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/CoreConfig.h b/core/CoreConfig.h
index 2de99a33..8a1732b7 100644
--- a/core/CoreConfig.h
+++ b/core/CoreConfig.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/CrazyDebugger.cpp b/core/CrazyDebugger.cpp
index 492766ce..3bada64f 100644
--- a/core/CrazyDebugger.cpp
+++ b/core/CrazyDebugger.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/Database.cpp b/core/Database.cpp
index 5efd0d6f..4b9e4294 100644
--- a/core/Database.cpp
+++ b/core/Database.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/Database.h b/core/Database.h
index aae09862..505842a3 100644
--- a/core/Database.h
+++ b/core/Database.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/DebugReporter.cpp b/core/DebugReporter.cpp
index 29e203d3..4572ebaf 100644
--- a/core/DebugReporter.cpp
+++ b/core/DebugReporter.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/DebugReporter.h b/core/DebugReporter.h
index acac6571..9fa37aae 100644
--- a/core/DebugReporter.h
+++ b/core/DebugReporter.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/EventManager.cpp b/core/EventManager.cpp
index 5882dc54..76ad2478 100644
--- a/core/EventManager.cpp
+++ b/core/EventManager.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/EventManager.h b/core/EventManager.h
index 09fc0394..54a830bc 100644
--- a/core/EventManager.h
+++ b/core/EventManager.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/GameConfigs.cpp b/core/GameConfigs.cpp
index 354f3d19..777b20e1 100644
--- a/core/GameConfigs.cpp
+++ b/core/GameConfigs.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/GameConfigs.h b/core/GameConfigs.h
index f0fd35b2..4b447084 100644
--- a/core/GameConfigs.h
+++ b/core/GameConfigs.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/HalfLife2.cpp b/core/HalfLife2.cpp
index 2a84f142..f7fd7c17 100644
--- a/core/HalfLife2.cpp
+++ b/core/HalfLife2.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/HalfLife2.h b/core/HalfLife2.h
index 90059620..ba61c31e 100644
--- a/core/HalfLife2.h
+++ b/core/HalfLife2.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/Logger.cpp b/core/Logger.cpp
index bd8cbe8f..cc35ef1a 100644
--- a/core/Logger.cpp
+++ b/core/Logger.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/Logger.h b/core/Logger.h
index fb643a2e..7d9cc57d 100644
--- a/core/Logger.h
+++ b/core/Logger.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/MemoryUtils.cpp b/core/MemoryUtils.cpp
index 81090a61..6af80718 100644
--- a/core/MemoryUtils.cpp
+++ b/core/MemoryUtils.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/MemoryUtils.h b/core/MemoryUtils.h
index 312d2ede..560d3a97 100644
--- a/core/MemoryUtils.h
+++ b/core/MemoryUtils.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/MenuManager.cpp b/core/MenuManager.cpp
index c7b64c1d..34b83202 100644
--- a/core/MenuManager.cpp
+++ b/core/MenuManager.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/MenuManager.h b/core/MenuManager.h
index c3f97af3..2672d92d 100644
--- a/core/MenuManager.h
+++ b/core/MenuManager.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/MenuStyle_Base.cpp b/core/MenuStyle_Base.cpp
index 62f427eb..f53afa7f 100644
--- a/core/MenuStyle_Base.cpp
+++ b/core/MenuStyle_Base.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/MenuStyle_Base.h b/core/MenuStyle_Base.h
index 9cfe95a3..8dc41fa1 100644
--- a/core/MenuStyle_Base.h
+++ b/core/MenuStyle_Base.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/MenuStyle_Radio.cpp b/core/MenuStyle_Radio.cpp
index 20372c59..8da01b1c 100644
--- a/core/MenuStyle_Radio.cpp
+++ b/core/MenuStyle_Radio.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/MenuStyle_Radio.h b/core/MenuStyle_Radio.h
index 826c5de5..f9d1dd66 100644
--- a/core/MenuStyle_Radio.h
+++ b/core/MenuStyle_Radio.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/MenuStyle_Valve.cpp b/core/MenuStyle_Valve.cpp
index f51a85a0..39e987a1 100644
--- a/core/MenuStyle_Valve.cpp
+++ b/core/MenuStyle_Valve.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/MenuStyle_Valve.h b/core/MenuStyle_Valve.h
index bf7bda4d..68d4925b 100644
--- a/core/MenuStyle_Valve.h
+++ b/core/MenuStyle_Valve.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/MenuVoting.cpp b/core/MenuVoting.cpp
index d1f5d672..ee9b4c1f 100644
--- a/core/MenuVoting.cpp
+++ b/core/MenuVoting.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/MenuVoting.h b/core/MenuVoting.h
index 22e42a09..0710c298 100644
--- a/core/MenuVoting.h
+++ b/core/MenuVoting.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp
index b6f37ca5..e8b14cc1 100644
--- a/core/PlayerManager.cpp
+++ b/core/PlayerManager.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/PlayerManager.h b/core/PlayerManager.h
index 767a90dd..e4930099 100644
--- a/core/PlayerManager.h
+++ b/core/PlayerManager.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/Profiler.cpp b/core/Profiler.cpp
index b69341da..fab086fb 100644
--- a/core/Profiler.cpp
+++ b/core/Profiler.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/Profiler.h b/core/Profiler.h
index 3781a247..b6588f49 100644
--- a/core/Profiler.h
+++ b/core/Profiler.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/TextParsers.cpp b/core/TextParsers.cpp
index 781ada22..060124f5 100644
--- a/core/TextParsers.cpp
+++ b/core/TextParsers.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/TextParsers.h b/core/TextParsers.h
index 7762c263..30e8a781 100644
--- a/core/TextParsers.h
+++ b/core/TextParsers.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/ThreadSupport.cpp b/core/ThreadSupport.cpp
index e694abe5..a8f1cc19 100644
--- a/core/ThreadSupport.cpp
+++ b/core/ThreadSupport.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/ThreadSupport.h b/core/ThreadSupport.h
index 6c0e8fa6..badb2171 100644
--- a/core/ThreadSupport.h
+++ b/core/ThreadSupport.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/TimerSys.cpp b/core/TimerSys.cpp
index 633de682..32726a01 100644
--- a/core/TimerSys.cpp
+++ b/core/TimerSys.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/TimerSys.h b/core/TimerSys.h
index 3f040ea3..fa96f769 100644
--- a/core/TimerSys.h
+++ b/core/TimerSys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/Translator.cpp b/core/Translator.cpp
index 004d8903..917cf372 100644
--- a/core/Translator.cpp
+++ b/core/Translator.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/Translator.h b/core/Translator.h
index cd3f835d..c878e3e7 100644
--- a/core/Translator.h
+++ b/core/Translator.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/UserMessages.cpp b/core/UserMessages.cpp
index 0413286f..62ea58f1 100644
--- a/core/UserMessages.cpp
+++ b/core/UserMessages.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/UserMessages.h b/core/UserMessages.h
index 01969fcf..4fbf5c43 100644
--- a/core/UserMessages.h
+++ b/core/UserMessages.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/concmd_cleaner.cpp b/core/concmd_cleaner.cpp
index 0f376c18..658c4c37 100644
--- a/core/concmd_cleaner.cpp
+++ b/core/concmd_cleaner.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/concmd_cleaner.h b/core/concmd_cleaner.h
index cfd90be8..99122ccd 100644
--- a/core/concmd_cleaner.h
+++ b/core/concmd_cleaner.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/frame_hooks.cpp b/core/frame_hooks.cpp
index 09a38a67..b84a3e53 100644
--- a/core/frame_hooks.cpp
+++ b/core/frame_hooks.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/frame_hooks.h b/core/frame_hooks.h
index f99d560c..3bcb05b3 100644
--- a/core/frame_hooks.h
+++ b/core/frame_hooks.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_autonatives.cpp b/core/sm_autonatives.cpp
index bf7c785e..09fd2881 100644
--- a/core/sm_autonatives.cpp
+++ b/core/sm_autonatives.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_autonatives.h b/core/sm_autonatives.h
index 6ee35645..c3b0d22b 100644
--- a/core/sm_autonatives.h
+++ b/core/sm_autonatives.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_crc32.cpp b/core/sm_crc32.cpp
index b6e426e2..a94d6053 100644
--- a/core/sm_crc32.cpp
+++ b/core/sm_crc32.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_crc32.h b/core/sm_crc32.h
index 8b36e970..cccac8c6 100644
--- a/core/sm_crc32.h
+++ b/core/sm_crc32.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_fastlink.h b/core/sm_fastlink.h
index 3f678711..9814faa2 100644
--- a/core/sm_fastlink.h
+++ b/core/sm_fastlink.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_globals.h b/core/sm_globals.h
index 42fa6b15..7f7f5253 100644
--- a/core/sm_globals.h
+++ b/core/sm_globals.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_memtable.cpp b/core/sm_memtable.cpp
index 95cdebda..8f18b136 100644
--- a/core/sm_memtable.cpp
+++ b/core/sm_memtable.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_memtable.h b/core/sm_memtable.h
index 22743b7f..caf8cf87 100644
--- a/core/sm_memtable.h
+++ b/core/sm_memtable.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_queue.h b/core/sm_queue.h
index 2a963aa8..4d438ad5 100644
--- a/core/sm_queue.h
+++ b/core/sm_queue.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_simple_prioqueue.h b/core/sm_simple_prioqueue.h
index a30ca254..ad7b0a42 100644
--- a/core/sm_simple_prioqueue.h
+++ b/core/sm_simple_prioqueue.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_srvcmds.cpp b/core/sm_srvcmds.cpp
index 7f2a749d..957d4ff1 100644
--- a/core/sm_srvcmds.cpp
+++ b/core/sm_srvcmds.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_srvcmds.h b/core/sm_srvcmds.h
index 5d38d666..ea8d172b 100644
--- a/core/sm_srvcmds.h
+++ b/core/sm_srvcmds.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_stringutil.cpp b/core/sm_stringutil.cpp
index 70586d96..de344f03 100644
--- a/core/sm_stringutil.cpp
+++ b/core/sm_stringutil.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_stringutil.h b/core/sm_stringutil.h
index e96aac62..12868046 100644
--- a/core/sm_stringutil.h
+++ b/core/sm_stringutil.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_trie.cpp b/core/sm_trie.cpp
index 899ccd60..3c518f20 100644
--- a/core/sm_trie.cpp
+++ b/core/sm_trie.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_trie.h b/core/sm_trie.h
index 6e25fbd1..ca224d53 100644
--- a/core/sm_trie.h
+++ b/core/sm_trie.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_version.h b/core/sm_version.h
index 58fdccc2..91f34709 100644
--- a/core/sm_version.h
+++ b/core/sm_version.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sm_version.tpl b/core/sm_version.tpl
index 611663dc..c9d0c6a3 100644
--- a/core/sm_version.tpl
+++ b/core/sm_version.tpl
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_admin.cpp b/core/smn_admin.cpp
index 836a6cd5..d7fec06b 100644
--- a/core/smn_admin.cpp
+++ b/core/smn_admin.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_adt_array.cpp b/core/smn_adt_array.cpp
index cafcca54..08852eb0 100644
--- a/core/smn_adt_array.cpp
+++ b/core/smn_adt_array.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_adt_trie.cpp b/core/smn_adt_trie.cpp
index 2aab9833..19ef31a3 100644
--- a/core/smn_adt_trie.cpp
+++ b/core/smn_adt_trie.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_banning.cpp b/core/smn_banning.cpp
index 876e31fd..0ed31467 100644
--- a/core/smn_banning.cpp
+++ b/core/smn_banning.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_bitbuffer.cpp b/core/smn_bitbuffer.cpp
index 949717e2..11a31229 100644
--- a/core/smn_bitbuffer.cpp
+++ b/core/smn_bitbuffer.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_console.cpp b/core/smn_console.cpp
index 63417144..8f2a4eb7 100644
--- a/core/smn_console.cpp
+++ b/core/smn_console.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_core.cpp b/core/smn_core.cpp
index 67c413c6..93feb99d 100644
--- a/core/smn_core.cpp
+++ b/core/smn_core.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_database.cpp b/core/smn_database.cpp
index 22f4b6a3..5327cb8d 100644
--- a/core/smn_database.cpp
+++ b/core/smn_database.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_datapacks.cpp b/core/smn_datapacks.cpp
index ed78ac1d..40e5d6b7 100644
--- a/core/smn_datapacks.cpp
+++ b/core/smn_datapacks.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_entities.cpp b/core/smn_entities.cpp
index 29b341bd..2a6d91a0 100644
--- a/core/smn_entities.cpp
+++ b/core/smn_entities.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_events.cpp b/core/smn_events.cpp
index 1cae1ed6..7fcac525 100644
--- a/core/smn_events.cpp
+++ b/core/smn_events.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_fakenatives.cpp b/core/smn_fakenatives.cpp
index b9e49076..35697216 100644
--- a/core/smn_fakenatives.cpp
+++ b/core/smn_fakenatives.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_filesystem.cpp b/core/smn_filesystem.cpp
index 08630af3..8c19e4af 100644
--- a/core/smn_filesystem.cpp
+++ b/core/smn_filesystem.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_float.cpp b/core/smn_float.cpp
index 0b15aca2..a13cd26f 100644
--- a/core/smn_float.cpp
+++ b/core/smn_float.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_functions.cpp b/core/smn_functions.cpp
index 24cade1b..2f6f68c5 100644
--- a/core/smn_functions.cpp
+++ b/core/smn_functions.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_gameconfigs.cpp b/core/smn_gameconfigs.cpp
index 0efa7e97..0ec301ed 100644
--- a/core/smn_gameconfigs.cpp
+++ b/core/smn_gameconfigs.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_halflife.cpp b/core/smn_halflife.cpp
index 2b8adc9c..d34d6732 100644
--- a/core/smn_halflife.cpp
+++ b/core/smn_halflife.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_handles.cpp b/core/smn_handles.cpp
index 6cb2bb4a..e4fb47cb 100644
--- a/core/smn_handles.cpp
+++ b/core/smn_handles.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_hudtext.cpp b/core/smn_hudtext.cpp
index 50d1923a..01426830 100644
--- a/core/smn_hudtext.cpp
+++ b/core/smn_hudtext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_keyvalues.cpp b/core/smn_keyvalues.cpp
index 825b26f1..ee7252b4 100644
--- a/core/smn_keyvalues.cpp
+++ b/core/smn_keyvalues.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_lang.cpp b/core/smn_lang.cpp
index 602c4934..56e6b6fa 100644
--- a/core/smn_lang.cpp
+++ b/core/smn_lang.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_maplists.cpp b/core/smn_maplists.cpp
index b2c228dd..f44eb732 100644
--- a/core/smn_maplists.cpp
+++ b/core/smn_maplists.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_menus.cpp b/core/smn_menus.cpp
index 13473ee4..72628c07 100644
--- a/core/smn_menus.cpp
+++ b/core/smn_menus.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_player.cpp b/core/smn_player.cpp
index 5f7d21a6..688f87ed 100644
--- a/core/smn_player.cpp
+++ b/core/smn_player.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_profiler.cpp b/core/smn_profiler.cpp
index 392fc617..a359e1ff 100644
--- a/core/smn_profiler.cpp
+++ b/core/smn_profiler.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_sorting.cpp b/core/smn_sorting.cpp
index 2e1bf330..7dcdb82b 100644
--- a/core/smn_sorting.cpp
+++ b/core/smn_sorting.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_string.cpp b/core/smn_string.cpp
index dae6b19f..65295536 100644
--- a/core/smn_string.cpp
+++ b/core/smn_string.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_textparse.cpp b/core/smn_textparse.cpp
index 78b26304..2a989ed4 100644
--- a/core/smn_textparse.cpp
+++ b/core/smn_textparse.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_timers.cpp b/core/smn_timers.cpp
index 362606e0..3a95c34f 100644
--- a/core/smn_timers.cpp
+++ b/core/smn_timers.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_usermsgs.cpp b/core/smn_usermsgs.cpp
index 0e68d395..b1206e53 100644
--- a/core/smn_usermsgs.cpp
+++ b/core/smn_usermsgs.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_usermsgs.h b/core/smn_usermsgs.h
index a4eb5fc8..bb16ab38 100644
--- a/core/smn_usermsgs.h
+++ b/core/smn_usermsgs.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/smn_vector.cpp b/core/smn_vector.cpp
index 96bf57b9..46158d7a 100644
--- a/core/smn_vector.cpp
+++ b/core/smn_vector.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sourcemm_api.cpp b/core/sourcemm_api.cpp
index d91168d8..263c5ff8 100644
--- a/core/sourcemm_api.cpp
+++ b/core/sourcemm_api.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sourcemm_api.h b/core/sourcemm_api.h
index 85b85817..2b31c851 100644
--- a/core/sourcemm_api.h
+++ b/core/sourcemm_api.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sourcemod.cpp b/core/sourcemod.cpp
index 06ba14d6..4aea3619 100644
--- a/core/sourcemod.cpp
+++ b/core/sourcemod.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/sourcemod.h b/core/sourcemod.h
index cb4ff880..3948b44a 100644
--- a/core/sourcemod.h
+++ b/core/sourcemod.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/ExtensionSys.cpp b/core/systems/ExtensionSys.cpp
index 8209b3ce..4d053496 100644
--- a/core/systems/ExtensionSys.cpp
+++ b/core/systems/ExtensionSys.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/ExtensionSys.h b/core/systems/ExtensionSys.h
index dbba34e6..a3e1ddce 100644
--- a/core/systems/ExtensionSys.h
+++ b/core/systems/ExtensionSys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/ForwardSys.cpp b/core/systems/ForwardSys.cpp
index cf42fa79..d83b1040 100644
--- a/core/systems/ForwardSys.cpp
+++ b/core/systems/ForwardSys.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/ForwardSys.h b/core/systems/ForwardSys.h
index 68b7d9fa..e3ff7b4d 100644
--- a/core/systems/ForwardSys.h
+++ b/core/systems/ForwardSys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/HandleSys.cpp b/core/systems/HandleSys.cpp
index 951e0cb9..897a5ff9 100644
--- a/core/systems/HandleSys.cpp
+++ b/core/systems/HandleSys.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/HandleSys.h b/core/systems/HandleSys.h
index b76c1896..8fb0e879 100644
--- a/core/systems/HandleSys.h
+++ b/core/systems/HandleSys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/LibrarySys.cpp b/core/systems/LibrarySys.cpp
index 15386387..641cc22f 100644
--- a/core/systems/LibrarySys.cpp
+++ b/core/systems/LibrarySys.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/LibrarySys.h b/core/systems/LibrarySys.h
index cc7aa121..0a948b83 100644
--- a/core/systems/LibrarySys.h
+++ b/core/systems/LibrarySys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/PluginInfoDatabase.cpp b/core/systems/PluginInfoDatabase.cpp
index a8be1601..2ee18097 100644
--- a/core/systems/PluginInfoDatabase.cpp
+++ b/core/systems/PluginInfoDatabase.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/PluginInfoDatabase.h b/core/systems/PluginInfoDatabase.h
index 16ed542a..8d84be48 100644
--- a/core/systems/PluginInfoDatabase.h
+++ b/core/systems/PluginInfoDatabase.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/PluginSys.cpp b/core/systems/PluginSys.cpp
index 06d6bb88..7b2dfcab 100644
--- a/core/systems/PluginSys.cpp
+++ b/core/systems/PluginSys.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/PluginSys.h b/core/systems/PluginSys.h
index 6fa4b7e4..d7dc8e65 100644
--- a/core/systems/PluginSys.h
+++ b/core/systems/PluginSys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/ShareSys.cpp b/core/systems/ShareSys.cpp
index 196c4eb0..213a4e2f 100644
--- a/core/systems/ShareSys.cpp
+++ b/core/systems/ShareSys.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/systems/ShareSys.h b/core/systems/ShareSys.h
index 998ec98a..b26b9ea2 100644
--- a/core/systems/ShareSys.h
+++ b/core/systems/ShareSys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/thread/BaseWorker.cpp b/core/thread/BaseWorker.cpp
index d0365f58..ef126e64 100644
--- a/core/thread/BaseWorker.cpp
+++ b/core/thread/BaseWorker.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/thread/BaseWorker.h b/core/thread/BaseWorker.h
index 6173fa9f..38deaac9 100644
--- a/core/thread/BaseWorker.h
+++ b/core/thread/BaseWorker.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/thread/PosixThreads.cpp b/core/thread/PosixThreads.cpp
index 02bbcb71..f0369a4c 100644
--- a/core/thread/PosixThreads.cpp
+++ b/core/thread/PosixThreads.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/thread/PosixThreads.h b/core/thread/PosixThreads.h
index 90be641b..0a1d4cb1 100644
--- a/core/thread/PosixThreads.h
+++ b/core/thread/PosixThreads.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/thread/ThreadWorker.cpp b/core/thread/ThreadWorker.cpp
index d6b8000e..5f4c969e 100644
--- a/core/thread/ThreadWorker.cpp
+++ b/core/thread/ThreadWorker.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/thread/ThreadWorker.h b/core/thread/ThreadWorker.h
index 0101e2b3..93e7c434 100644
--- a/core/thread/ThreadWorker.h
+++ b/core/thread/ThreadWorker.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/thread/WinThreads.cpp b/core/thread/WinThreads.cpp
index a62c8609..cf7780d7 100644
--- a/core/thread/WinThreads.cpp
+++ b/core/thread/WinThreads.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/thread/WinThreads.h b/core/thread/WinThreads.h
index 511be4b6..059a9209 100644
--- a/core/thread/WinThreads.h
+++ b/core/thread/WinThreads.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/version.rc b/core/version.rc
index 2a9e0860..0e0cf070 100644
--- a/core/version.rc
+++ b/core/version.rc
@@ -49,7 +49,7 @@ BEGIN
             VALUE "FileDescription", "SourceMod Core"
             VALUE "FileVersion", SVN_FULL_VERSION
             VALUE "InternalName", "sourcemod"
-            VALUE "LegalCopyright", "Copyright (c) 2004-2007, AlliedModders LLC"
+            VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC"
             VALUE "OriginalFilename", "sourcemod_mm.dll"
             VALUE "ProductName", "SourceMod"
             VALUE "ProductVersion", SVN_FULL_VERSION
diff --git a/core/vm/sp_vm_basecontext.cpp b/core/vm/sp_vm_basecontext.cpp
index d851a714..b963d523 100644
--- a/core/vm/sp_vm_basecontext.cpp
+++ b/core/vm/sp_vm_basecontext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/vm/sp_vm_basecontext.h b/core/vm/sp_vm_basecontext.h
index 9df690b2..4b58937e 100644
--- a/core/vm/sp_vm_basecontext.h
+++ b/core/vm/sp_vm_basecontext.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/vm/sp_vm_engine.cpp b/core/vm/sp_vm_engine.cpp
index 136172aa..6a28014b 100644
--- a/core/vm/sp_vm_engine.cpp
+++ b/core/vm/sp_vm_engine.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/vm/sp_vm_engine.h b/core/vm/sp_vm_engine.h
index a14b8b45..c50f8267 100644
--- a/core/vm/sp_vm_engine.h
+++ b/core/vm/sp_vm_engine.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/vm/sp_vm_function.cpp b/core/vm/sp_vm_function.cpp
index 4a008120..cfc080ab 100644
--- a/core/vm/sp_vm_function.cpp
+++ b/core/vm/sp_vm_function.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/core/vm/sp_vm_function.h b/core/vm/sp_vm_function.h
index e19417b0..275143c9 100644
--- a/core/vm/sp_vm_function.h
+++ b/core/vm/sp_vm_function.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/batsupport/BATInterface.h b/extensions/batsupport/BATInterface.h
index 7640f52b..f89e1de5 100644
--- a/extensions/batsupport/BATInterface.h
+++ b/extensions/batsupport/BATInterface.h
@@ -1,5 +1,5 @@
 /* ======== Basic Admin tool ========
-* Copyright (C) 2004-2006 Erling K. S�terdal
+* Copyright (C) 2004-2008 Erling K. S�terdal
 * No warranties of any kind
 *
 * License: zlib/libpng
diff --git a/extensions/batsupport/Makefile b/extensions/batsupport/Makefile
index 8ea51205..bfebba58 100644
--- a/extensions/batsupport/Makefile
+++ b/extensions/batsupport/Makefile
@@ -1,4 +1,4 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 SMSDK = ../..
diff --git a/extensions/batsupport/extension.cpp b/extensions/batsupport/extension.cpp
index 1a691c78..10a3f8f4 100644
--- a/extensions/batsupport/extension.cpp
+++ b/extensions/batsupport/extension.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BAT Support Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/batsupport/extension.h b/extensions/batsupport/extension.h
index d2ef1ae9..4e4015e2 100644
--- a/extensions/batsupport/extension.h
+++ b/extensions/batsupport/extension.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BAT Support Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/batsupport/sdk/smsdk_config.h b/extensions/batsupport/sdk/smsdk_config.h
index 18ffb732..d34dc0db 100644
--- a/extensions/batsupport/sdk/smsdk_config.h
+++ b/extensions/batsupport/sdk/smsdk_config.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BAT Support Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/batsupport/sdk/smsdk_ext.cpp b/extensions/batsupport/sdk/smsdk_ext.cpp
index ef7cd82f..6e4c84e6 100644
--- a/extensions/batsupport/sdk/smsdk_ext.cpp
+++ b/extensions/batsupport/sdk/smsdk_ext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/batsupport/sdk/smsdk_ext.h b/extensions/batsupport/sdk/smsdk_ext.h
index 1be1ce8a..f7b5a066 100644
--- a/extensions/batsupport/sdk/smsdk_ext.h
+++ b/extensions/batsupport/sdk/smsdk_ext.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/CallMaker.cpp b/extensions/bintools/CallMaker.cpp
index 9ee6aad4..2084a478 100644
--- a/extensions/bintools/CallMaker.cpp
+++ b/extensions/bintools/CallMaker.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BinTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/CallMaker.h b/extensions/bintools/CallMaker.h
index 42da57b9..2ed0eeeb 100644
--- a/extensions/bintools/CallMaker.h
+++ b/extensions/bintools/CallMaker.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BinTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/CallWrapper.cpp b/extensions/bintools/CallWrapper.cpp
index 41392e2b..5f87de5d 100644
--- a/extensions/bintools/CallWrapper.cpp
+++ b/extensions/bintools/CallWrapper.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BinTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/CallWrapper.h b/extensions/bintools/CallWrapper.h
index c7a18cdd..1ca78bc4 100644
--- a/extensions/bintools/CallWrapper.h
+++ b/extensions/bintools/CallWrapper.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BinTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/Makefile b/extensions/bintools/Makefile
index fd8c1f79..eb85ca4f 100644
--- a/extensions/bintools/Makefile
+++ b/extensions/bintools/Makefile
@@ -1,4 +1,4 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 SMSDK = ../..
diff --git a/extensions/bintools/extension.cpp b/extensions/bintools/extension.cpp
index be88bb09..b62d0287 100644
--- a/extensions/bintools/extension.cpp
+++ b/extensions/bintools/extension.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BinTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/extension.h b/extensions/bintools/extension.h
index 42534511..2bdbdb0c 100644
--- a/extensions/bintools/extension.h
+++ b/extensions/bintools/extension.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BinTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/jit_call.cpp b/extensions/bintools/jit_call.cpp
index 7443260e..ea0755c4 100644
--- a/extensions/bintools/jit_call.cpp
+++ b/extensions/bintools/jit_call.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BinTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/jit_call.h b/extensions/bintools/jit_call.h
index d12c59f0..39d46412 100644
--- a/extensions/bintools/jit_call.h
+++ b/extensions/bintools/jit_call.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BinTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/sdk/smsdk_config.h b/extensions/bintools/sdk/smsdk_config.h
index dcb85e6b..f706d6dd 100644
--- a/extensions/bintools/sdk/smsdk_config.h
+++ b/extensions/bintools/sdk/smsdk_config.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BinTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/sdk/smsdk_ext.cpp b/extensions/bintools/sdk/smsdk_ext.cpp
index a4b80a10..db14af69 100644
--- a/extensions/bintools/sdk/smsdk_ext.cpp
+++ b/extensions/bintools/sdk/smsdk_ext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/sdk/smsdk_ext.h b/extensions/bintools/sdk/smsdk_ext.h
index 4324a11b..d77d84db 100644
--- a/extensions/bintools/sdk/smsdk_ext.h
+++ b/extensions/bintools/sdk/smsdk_ext.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/svn_version.h b/extensions/bintools/svn_version.h
index 5b19358a..5ae76abf 100644
--- a/extensions/bintools/svn_version.h
+++ b/extensions/bintools/svn_version.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BinTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/svn_version.tpl b/extensions/bintools/svn_version.tpl
index 388fafd4..158d9bf4 100644
--- a/extensions/bintools/svn_version.tpl
+++ b/extensions/bintools/svn_version.tpl
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BinTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/bintools/version.rc b/extensions/bintools/version.rc
index 8a357fe5..3d0e4184 100644
--- a/extensions/bintools/version.rc
+++ b/extensions/bintools/version.rc
@@ -49,7 +49,7 @@ BEGIN
             VALUE "FileDescription", "SourceMod BinTools Extension"
             VALUE "FileVersion", SVN_FULL_VERSION
             VALUE "InternalName", "SourceMod BinTools Extension"
-            VALUE "LegalCopyright", "Copyright (c) 2004-2007, AlliedModders LLC"
+            VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC"
             VALUE "OriginalFilename", "bintools.ext.dll"
             VALUE "ProductName", "SourceMod BinTools Extension"
             VALUE "ProductVersion", SVN_FULL_VERSION
diff --git a/extensions/cstrike/RegNatives.cpp b/extensions/cstrike/RegNatives.cpp
index 2f001b78..e663a186 100644
--- a/extensions/cstrike/RegNatives.cpp
+++ b/extensions/cstrike/RegNatives.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/cstrike/RegNatives.h b/extensions/cstrike/RegNatives.h
index c92e5072..f9c22f82 100644
--- a/extensions/cstrike/RegNatives.h
+++ b/extensions/cstrike/RegNatives.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/cstrike/extension.cpp b/extensions/cstrike/extension.cpp
index b35b98ba..4caf629c 100644
--- a/extensions/cstrike/extension.cpp
+++ b/extensions/cstrike/extension.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/cstrike/extension.h b/extensions/cstrike/extension.h
index dc77a009..20a866a1 100644
--- a/extensions/cstrike/extension.h
+++ b/extensions/cstrike/extension.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/cstrike/natives.cpp b/extensions/cstrike/natives.cpp
index b97f070e..29c81aea 100644
--- a/extensions/cstrike/natives.cpp
+++ b/extensions/cstrike/natives.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/cstrike/sdk/smsdk_config.h b/extensions/cstrike/sdk/smsdk_config.h
index a070e6b3..c3b6081a 100644
--- a/extensions/cstrike/sdk/smsdk_config.h
+++ b/extensions/cstrike/sdk/smsdk_config.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/cstrike/sdk/smsdk_ext.cpp b/extensions/cstrike/sdk/smsdk_ext.cpp
index f5e6f3fc..37733333 100644
--- a/extensions/cstrike/sdk/smsdk_ext.cpp
+++ b/extensions/cstrike/sdk/smsdk_ext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/cstrike/sdk/smsdk_ext.h b/extensions/cstrike/sdk/smsdk_ext.h
index c137616b..3d5a229d 100644
--- a/extensions/cstrike/sdk/smsdk_ext.h
+++ b/extensions/cstrike/sdk/smsdk_ext.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/cstrike/svn_version.h b/extensions/cstrike/svn_version.h
index d39c1aa0..403601cf 100644
--- a/extensions/cstrike/svn_version.h
+++ b/extensions/cstrike/svn_version.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/cstrike/svn_version.tpl b/extensions/cstrike/svn_version.tpl
index ad458193..08a4c47d 100644
--- a/extensions/cstrike/svn_version.tpl
+++ b/extensions/cstrike/svn_version.tpl
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/cstrike/timeleft.cpp b/extensions/cstrike/timeleft.cpp
index c465ca76..2637c05c 100644
--- a/extensions/cstrike/timeleft.cpp
+++ b/extensions/cstrike/timeleft.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/cstrike/timeleft.h b/extensions/cstrike/timeleft.h
index 0b7c4799..bb44b91b 100644
--- a/extensions/cstrike/timeleft.h
+++ b/extensions/cstrike/timeleft.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/cstrike/version.rc b/extensions/cstrike/version.rc
index 37d14dad..2abaa001 100644
--- a/extensions/cstrike/version.rc
+++ b/extensions/cstrike/version.rc
@@ -49,7 +49,7 @@ BEGIN
             VALUE "FileDescription", "SourceMod CS:S Extension"
             VALUE "FileVersion", SVN_FULL_VERSION
             VALUE "InternalName", "SourceMod CS:S Extension"
-            VALUE "LegalCopyright", "Copyright (c) 2004-2007, AlliedModders LLC"
+            VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC"
             VALUE "OriginalFilename", "game.cstrike.ext.dll"
             VALUE "ProductName", "SourceMod CS:S Extension"
             VALUE "ProductVersion", SVN_FULL_VERSION
diff --git a/extensions/geoip/Makefile b/extensions/geoip/Makefile
index 29e872f7..db4062f6 100644
--- a/extensions/geoip/Makefile
+++ b/extensions/geoip/Makefile
@@ -1,4 +1,4 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 SMSDK = ../..
diff --git a/extensions/geoip/extension.cpp b/extensions/geoip/extension.cpp
index 191470b0..e65485a7 100644
--- a/extensions/geoip/extension.cpp
+++ b/extensions/geoip/extension.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod GeoIP Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/geoip/extension.h b/extensions/geoip/extension.h
index 48a03117..ff978e53 100644
--- a/extensions/geoip/extension.h
+++ b/extensions/geoip/extension.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod GeoIP Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/geoip/sdk/smsdk_config.h b/extensions/geoip/sdk/smsdk_config.h
index 7faf7f58..dbe2ad2c 100644
--- a/extensions/geoip/sdk/smsdk_config.h
+++ b/extensions/geoip/sdk/smsdk_config.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod GeoIP Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/geoip/sdk/smsdk_ext.cpp b/extensions/geoip/sdk/smsdk_ext.cpp
index a4b80a10..db14af69 100644
--- a/extensions/geoip/sdk/smsdk_ext.cpp
+++ b/extensions/geoip/sdk/smsdk_ext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/geoip/sdk/smsdk_ext.h b/extensions/geoip/sdk/smsdk_ext.h
index 4324a11b..d77d84db 100644
--- a/extensions/geoip/sdk/smsdk_ext.h
+++ b/extensions/geoip/sdk/smsdk_ext.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/geoip/svn_version.h b/extensions/geoip/svn_version.h
index be31e51c..3bd07604 100644
--- a/extensions/geoip/svn_version.h
+++ b/extensions/geoip/svn_version.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod GeoIP Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/geoip/svn_version.tpl b/extensions/geoip/svn_version.tpl
index df71de4f..5edca91f 100644
--- a/extensions/geoip/svn_version.tpl
+++ b/extensions/geoip/svn_version.tpl
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod GeoIP Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/geoip/version.rc b/extensions/geoip/version.rc
index d89d3701..f047d0e0 100644
--- a/extensions/geoip/version.rc
+++ b/extensions/geoip/version.rc
@@ -49,7 +49,7 @@ BEGIN
             VALUE "FileDescription", "SourceMod GeoIP Extension"
             VALUE "FileVersion", SVN_FULL_VERSION
             VALUE "InternalName", "SourceMod GeoIP Extension"
-            VALUE "LegalCopyright", "Copyright (c) 2004-2007, AlliedModders LLC"
+            VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC"
             VALUE "OriginalFilename", "geoip.ext.dll"
             VALUE "ProductName", "SourceMod GeoIP Extension"
             VALUE "ProductVersion", SVN_FULL_VERSION
diff --git a/extensions/mysql/Makefile b/extensions/mysql/Makefile
index 3fb9a0c3..be18bc06 100644
--- a/extensions/mysql/Makefile
+++ b/extensions/mysql/Makefile
@@ -1,4 +1,4 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 SMSDK = ../..
diff --git a/extensions/mysql/extension.cpp b/extensions/mysql/extension.cpp
index f6238abb..5607ef12 100644
--- a/extensions/mysql/extension.cpp
+++ b/extensions/mysql/extension.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/extension.h b/extensions/mysql/extension.h
index b75849b2..489c5f68 100644
--- a/extensions/mysql/extension.h
+++ b/extensions/mysql/extension.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/mysql/MyBasicResults.cpp b/extensions/mysql/mysql/MyBasicResults.cpp
index 85a7aedc..edd03f1b 100644
--- a/extensions/mysql/mysql/MyBasicResults.cpp
+++ b/extensions/mysql/mysql/MyBasicResults.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/mysql/MyBasicResults.h b/extensions/mysql/mysql/MyBasicResults.h
index 80650163..a5173ade 100644
--- a/extensions/mysql/mysql/MyBasicResults.h
+++ b/extensions/mysql/mysql/MyBasicResults.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/mysql/MyBoundResults.cpp b/extensions/mysql/mysql/MyBoundResults.cpp
index 2c7b4db1..5252f169 100644
--- a/extensions/mysql/mysql/MyBoundResults.cpp
+++ b/extensions/mysql/mysql/MyBoundResults.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/mysql/MyBoundResults.h b/extensions/mysql/mysql/MyBoundResults.h
index 068dd797..fede5ac9 100644
--- a/extensions/mysql/mysql/MyBoundResults.h
+++ b/extensions/mysql/mysql/MyBoundResults.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/mysql/MyDatabase.cpp b/extensions/mysql/mysql/MyDatabase.cpp
index b9f797a0..5b15d89d 100644
--- a/extensions/mysql/mysql/MyDatabase.cpp
+++ b/extensions/mysql/mysql/MyDatabase.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/mysql/MyDatabase.h b/extensions/mysql/mysql/MyDatabase.h
index 14ba739e..48b71647 100644
--- a/extensions/mysql/mysql/MyDatabase.h
+++ b/extensions/mysql/mysql/MyDatabase.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/mysql/MyDriver.cpp b/extensions/mysql/mysql/MyDriver.cpp
index a39e12ec..54e67c0a 100644
--- a/extensions/mysql/mysql/MyDriver.cpp
+++ b/extensions/mysql/mysql/MyDriver.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/mysql/MyDriver.h b/extensions/mysql/mysql/MyDriver.h
index 17dc04aa..fd78ff33 100644
--- a/extensions/mysql/mysql/MyDriver.h
+++ b/extensions/mysql/mysql/MyDriver.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/mysql/MyStatement.cpp b/extensions/mysql/mysql/MyStatement.cpp
index 60aee85e..c643af32 100644
--- a/extensions/mysql/mysql/MyStatement.cpp
+++ b/extensions/mysql/mysql/MyStatement.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/mysql/MyStatement.h b/extensions/mysql/mysql/MyStatement.h
index 6323f333..5cad0af6 100644
--- a/extensions/mysql/mysql/MyStatement.h
+++ b/extensions/mysql/mysql/MyStatement.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/sdk/smsdk_config.h b/extensions/mysql/sdk/smsdk_config.h
index e6603b41..d5bb8c44 100644
--- a/extensions/mysql/sdk/smsdk_config.h
+++ b/extensions/mysql/sdk/smsdk_config.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/sdk/smsdk_ext.cpp b/extensions/mysql/sdk/smsdk_ext.cpp
index a4b80a10..db14af69 100644
--- a/extensions/mysql/sdk/smsdk_ext.cpp
+++ b/extensions/mysql/sdk/smsdk_ext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/sdk/smsdk_ext.h b/extensions/mysql/sdk/smsdk_ext.h
index 4324a11b..d77d84db 100644
--- a/extensions/mysql/sdk/smsdk_ext.h
+++ b/extensions/mysql/sdk/smsdk_ext.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/svn_version.h b/extensions/mysql/svn_version.h
index 9cb9b6ea..1cf9eecc 100644
--- a/extensions/mysql/svn_version.h
+++ b/extensions/mysql/svn_version.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/svn_version.tpl b/extensions/mysql/svn_version.tpl
index ae804164..0f989691 100644
--- a/extensions/mysql/svn_version.tpl
+++ b/extensions/mysql/svn_version.tpl
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod MySQL Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/mysql/version.rc b/extensions/mysql/version.rc
index 370f1757..500c847f 100644
--- a/extensions/mysql/version.rc
+++ b/extensions/mysql/version.rc
@@ -49,7 +49,7 @@ BEGIN
             VALUE "FileDescription", "SourceMod MySQL Extension"
             VALUE "FileVersion", SVN_FULL_VERSION
             VALUE "InternalName", "SourceMod MySQL Extension"
-            VALUE "LegalCopyright", "Copyright (c) 2004-2007, AlliedModders LLC"
+            VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC"
             VALUE "OriginalFilename", "dbi.mysql.ext.dll"
             VALUE "ProductName", "SourceMod MySQL Extension"
             VALUE "ProductVersion", SVN_FULL_VERSION
diff --git a/extensions/regex/Makefile.ep1 b/extensions/regex/Makefile.ep1
index 989ee7d4..f580ca04 100644
--- a/extensions/regex/Makefile.ep1
+++ b/extensions/regex/Makefile.ep1
@@ -1,4 +1,4 @@
-#(C)2004-2007 AlliedModders LLC
+#(C)2004-2008 AlliedModders LLC
 #
 # This sample Makefile is designed for SourceMod extensions that 
 # are built against Metamod:Source 1.4.2, Episode 1 of the HL2SDK.
diff --git a/extensions/regex/Makefile.ep2 b/extensions/regex/Makefile.ep2
index 3582838c..4bd0adf5 100644
--- a/extensions/regex/Makefile.ep2
+++ b/extensions/regex/Makefile.ep2
@@ -1,4 +1,4 @@
-#(C)2004-2007 AlliedModders LLC
+#(C)2004-2008 AlliedModders LLC
 #
 # This sample Makefile is designed for SourceMod extensions that 
 # are built against Metamod:Source 1.6.0, Episode 2 of the HL2SDK.
diff --git a/extensions/regex/Makefile.orig b/extensions/regex/Makefile.orig
index 3dc19ef8..e6c8b5e8 100644
--- a/extensions/regex/Makefile.orig
+++ b/extensions/regex/Makefile.orig
@@ -1,4 +1,4 @@
-#(C)2004-2007 AlliedModders LLC
+#(C)2004-2008 AlliedModders LLC
 #
 # This sample Makefile is designed for SourceMod extensions that 
 # are built against Metamod:Source 1.6.0, Episode 1 of the HL2SDK.
diff --git a/extensions/regex/extension.cpp b/extensions/regex/extension.cpp
index e3519172..5f86d564 100644
--- a/extensions/regex/extension.cpp
+++ b/extensions/regex/extension.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/regex/extension.h b/extensions/regex/extension.h
index 0c4beff2..25b0785a 100644
--- a/extensions/regex/extension.h
+++ b/extensions/regex/extension.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/regex/sdk/smsdk_config.h b/extensions/regex/sdk/smsdk_config.h
index 0889a8f5..b9aaab0c 100644
--- a/extensions/regex/sdk/smsdk_config.h
+++ b/extensions/regex/sdk/smsdk_config.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/regex/sdk/smsdk_ext.cpp b/extensions/regex/sdk/smsdk_ext.cpp
index 0c728f00..bf027ac5 100644
--- a/extensions/regex/sdk/smsdk_ext.cpp
+++ b/extensions/regex/sdk/smsdk_ext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/regex/sdk/smsdk_ext.h b/extensions/regex/sdk/smsdk_ext.h
index 4702f2a2..0ee0dfa2 100644
--- a/extensions/regex/sdk/smsdk_ext.h
+++ b/extensions/regex/sdk/smsdk_ext.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/CellRecipientFilter.h b/extensions/sdktools/CellRecipientFilter.h
index 68c2e333..e48ed7d1 100644
--- a/extensions/sdktools/CellRecipientFilter.h
+++ b/extensions/sdktools/CellRecipientFilter.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/Makefile b/extensions/sdktools/Makefile
index d02951cf..1988e1e8 100644
--- a/extensions/sdktools/Makefile
+++ b/extensions/sdktools/Makefile
@@ -1,4 +1,4 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 HL2SDK_ORIG = ../../../hl2sdk
diff --git a/extensions/sdktools/extension.cpp b/extensions/sdktools/extension.cpp
index c01ff74a..865cd8ae 100644
--- a/extensions/sdktools/extension.cpp
+++ b/extensions/sdktools/extension.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/extension.h b/extensions/sdktools/extension.h
index c13343a9..700b73f3 100644
--- a/extensions/sdktools/extension.h
+++ b/extensions/sdktools/extension.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/inputnatives.cpp b/extensions/sdktools/inputnatives.cpp
index 86435fd1..b8b56620 100644
--- a/extensions/sdktools/inputnatives.cpp
+++ b/extensions/sdktools/inputnatives.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/sdk/smsdk_config.h b/extensions/sdktools/sdk/smsdk_config.h
index d9a07d6b..3f41c1fe 100644
--- a/extensions/sdktools/sdk/smsdk_config.h
+++ b/extensions/sdktools/sdk/smsdk_config.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/sdk/smsdk_ext.cpp b/extensions/sdktools/sdk/smsdk_ext.cpp
index 40bdc775..a823d1b2 100644
--- a/extensions/sdktools/sdk/smsdk_ext.cpp
+++ b/extensions/sdktools/sdk/smsdk_ext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/sdk/smsdk_ext.h b/extensions/sdktools/sdk/smsdk_ext.h
index fdda6ad3..aec87f98 100644
--- a/extensions/sdktools/sdk/smsdk_ext.h
+++ b/extensions/sdktools/sdk/smsdk_ext.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/svn_version.h b/extensions/sdktools/svn_version.h
index 2f1f44c0..b39a767b 100644
--- a/extensions/sdktools/svn_version.h
+++ b/extensions/sdktools/svn_version.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/svn_version.tpl b/extensions/sdktools/svn_version.tpl
index ad458193..08a4c47d 100644
--- a/extensions/sdktools/svn_version.tpl
+++ b/extensions/sdktools/svn_version.tpl
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/teamnatives.cpp b/extensions/sdktools/teamnatives.cpp
index 3eac3c68..6ebb67d8 100644
--- a/extensions/sdktools/teamnatives.cpp
+++ b/extensions/sdktools/teamnatives.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/tempents.cpp b/extensions/sdktools/tempents.cpp
index 9660affa..407f709a 100644
--- a/extensions/sdktools/tempents.cpp
+++ b/extensions/sdktools/tempents.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/tempents.h b/extensions/sdktools/tempents.h
index 9e3ff97a..366ccc6a 100644
--- a/extensions/sdktools/tempents.h
+++ b/extensions/sdktools/tempents.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/tenatives.cpp b/extensions/sdktools/tenatives.cpp
index 7ab784a4..4d0b69f3 100644
--- a/extensions/sdktools/tenatives.cpp
+++ b/extensions/sdktools/tenatives.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/trnatives.cpp b/extensions/sdktools/trnatives.cpp
index 5f19a72a..f748ec72 100644
--- a/extensions/sdktools/trnatives.cpp
+++ b/extensions/sdktools/trnatives.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/util.h b/extensions/sdktools/util.h
index 2aa42160..b304923a 100644
--- a/extensions/sdktools/util.h
+++ b/extensions/sdktools/util.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vcallbuilder.cpp b/extensions/sdktools/vcallbuilder.cpp
index 54b6cb05..b6eca41d 100644
--- a/extensions/sdktools/vcallbuilder.cpp
+++ b/extensions/sdktools/vcallbuilder.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vcallbuilder.h b/extensions/sdktools/vcallbuilder.h
index ccd8816f..3237fe5d 100644
--- a/extensions/sdktools/vcallbuilder.h
+++ b/extensions/sdktools/vcallbuilder.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vcaller.cpp b/extensions/sdktools/vcaller.cpp
index 75b89b82..6ea1f131 100644
--- a/extensions/sdktools/vcaller.cpp
+++ b/extensions/sdktools/vcaller.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vdecoder.cpp b/extensions/sdktools/vdecoder.cpp
index 12bfaabb..03f0dcff 100644
--- a/extensions/sdktools/vdecoder.cpp
+++ b/extensions/sdktools/vdecoder.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vdecoder.h b/extensions/sdktools/vdecoder.h
index b8f37955..f397d7bb 100644
--- a/extensions/sdktools/vdecoder.h
+++ b/extensions/sdktools/vdecoder.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/version.rc b/extensions/sdktools/version.rc
index 0ec90dc4..546028f6 100644
--- a/extensions/sdktools/version.rc
+++ b/extensions/sdktools/version.rc
@@ -49,7 +49,7 @@ BEGIN
             VALUE "FileDescription", "SourceMod SDKTools Extension"
             VALUE "FileVersion", SVN_FULL_VERSION
             VALUE "InternalName", "SourceMod SDKTools Extension"
-            VALUE "LegalCopyright", "Copyright (c) 2004-2007, AlliedModders LLC"
+            VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC"
             VALUE "OriginalFilename", "sdktools.ext.dll"
             VALUE "ProductName", "SourceMod SDKTools Extension"
             VALUE "ProductVersion", SVN_FULL_VERSION
diff --git a/extensions/sdktools/vglobals.cpp b/extensions/sdktools/vglobals.cpp
index 0925dbec..ea569c20 100644
--- a/extensions/sdktools/vglobals.cpp
+++ b/extensions/sdktools/vglobals.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vglobals.h b/extensions/sdktools/vglobals.h
index 5e9a65ee..d3783089 100644
--- a/extensions/sdktools/vglobals.h
+++ b/extensions/sdktools/vglobals.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vhelpers.cpp b/extensions/sdktools/vhelpers.cpp
index 49a83b3d..adf24043 100644
--- a/extensions/sdktools/vhelpers.cpp
+++ b/extensions/sdktools/vhelpers.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vhelpers.h b/extensions/sdktools/vhelpers.h
index 3ba1b116..46cbdb81 100644
--- a/extensions/sdktools/vhelpers.h
+++ b/extensions/sdktools/vhelpers.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vnatives.cpp b/extensions/sdktools/vnatives.cpp
index d905fadd..d04aaacf 100644
--- a/extensions/sdktools/vnatives.cpp
+++ b/extensions/sdktools/vnatives.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vnatives.h b/extensions/sdktools/vnatives.h
index 0dd2375a..74612360 100644
--- a/extensions/sdktools/vnatives.h
+++ b/extensions/sdktools/vnatives.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/voice.cpp b/extensions/sdktools/voice.cpp
index 196745bc..d9b179f4 100644
--- a/extensions/sdktools/voice.cpp
+++ b/extensions/sdktools/voice.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vsound.cpp b/extensions/sdktools/vsound.cpp
index 75fcb166..078f39fb 100644
--- a/extensions/sdktools/vsound.cpp
+++ b/extensions/sdktools/vsound.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vsound.h b/extensions/sdktools/vsound.h
index 040cbbe6..0536b558 100644
--- a/extensions/sdktools/vsound.h
+++ b/extensions/sdktools/vsound.h
@@ -2,7 +2,7 @@
 * vim: set ts=4 :
 * =============================================================================
 * SourceMod SDKTools Extension
-* Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+* Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
 * =============================================================================
 *
 * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sdktools/vstringtable.cpp b/extensions/sdktools/vstringtable.cpp
index 22561340..522e4e47 100644
--- a/extensions/sdktools/vstringtable.cpp
+++ b/extensions/sdktools/vstringtable.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/Makefile b/extensions/sqlite/Makefile
index ff7ed908..453d49bd 100644
--- a/extensions/sqlite/Makefile
+++ b/extensions/sqlite/Makefile
@@ -1,4 +1,4 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 SMSDK = ../..
diff --git a/extensions/sqlite/driver/SqDatabase.cpp b/extensions/sqlite/driver/SqDatabase.cpp
index a008aca1..07724238 100644
--- a/extensions/sqlite/driver/SqDatabase.cpp
+++ b/extensions/sqlite/driver/SqDatabase.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/driver/SqDatabase.h b/extensions/sqlite/driver/SqDatabase.h
index 6044a3f0..591bdd9d 100644
--- a/extensions/sqlite/driver/SqDatabase.h
+++ b/extensions/sqlite/driver/SqDatabase.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/driver/SqDriver.cpp b/extensions/sqlite/driver/SqDriver.cpp
index 67b6fa6d..397fed5b 100644
--- a/extensions/sqlite/driver/SqDriver.cpp
+++ b/extensions/sqlite/driver/SqDriver.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/driver/SqDriver.h b/extensions/sqlite/driver/SqDriver.h
index 2cd429e6..f73d1092 100644
--- a/extensions/sqlite/driver/SqDriver.h
+++ b/extensions/sqlite/driver/SqDriver.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/driver/SqQuery.cpp b/extensions/sqlite/driver/SqQuery.cpp
index fce5ae07..b1753e81 100644
--- a/extensions/sqlite/driver/SqQuery.cpp
+++ b/extensions/sqlite/driver/SqQuery.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/driver/SqQuery.h b/extensions/sqlite/driver/SqQuery.h
index 92392319..16bef53f 100644
--- a/extensions/sqlite/driver/SqQuery.h
+++ b/extensions/sqlite/driver/SqQuery.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/driver/SqResults.cpp b/extensions/sqlite/driver/SqResults.cpp
index 8dae5470..0809ab6a 100644
--- a/extensions/sqlite/driver/SqResults.cpp
+++ b/extensions/sqlite/driver/SqResults.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/driver/SqResults.h b/extensions/sqlite/driver/SqResults.h
index 2a28c382..afc366a2 100644
--- a/extensions/sqlite/driver/SqResults.h
+++ b/extensions/sqlite/driver/SqResults.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/extension.cpp b/extensions/sqlite/extension.cpp
index 8f31c951..960f86bf 100644
--- a/extensions/sqlite/extension.cpp
+++ b/extensions/sqlite/extension.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/extension.h b/extensions/sqlite/extension.h
index 053cf737..c6f89db9 100644
--- a/extensions/sqlite/extension.h
+++ b/extensions/sqlite/extension.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/sdk/smsdk_config.h b/extensions/sqlite/sdk/smsdk_config.h
index 955f7c57..a8823b81 100644
--- a/extensions/sqlite/sdk/smsdk_config.h
+++ b/extensions/sqlite/sdk/smsdk_config.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/sdk/smsdk_ext.cpp b/extensions/sqlite/sdk/smsdk_ext.cpp
index 8d55b217..c504da48 100644
--- a/extensions/sqlite/sdk/smsdk_ext.cpp
+++ b/extensions/sqlite/sdk/smsdk_ext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/sdk/smsdk_ext.h b/extensions/sqlite/sdk/smsdk_ext.h
index 4324a11b..d77d84db 100644
--- a/extensions/sqlite/sdk/smsdk_ext.h
+++ b/extensions/sqlite/sdk/smsdk_ext.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/sm_memtable.cpp b/extensions/sqlite/sm_memtable.cpp
index 95cdebda..8f18b136 100644
--- a/extensions/sqlite/sm_memtable.cpp
+++ b/extensions/sqlite/sm_memtable.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/sm_memtable.h b/extensions/sqlite/sm_memtable.h
index 744eb4b6..53ba5ff8 100644
--- a/extensions/sqlite/sm_memtable.h
+++ b/extensions/sqlite/sm_memtable.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/svn_version.h b/extensions/sqlite/svn_version.h
index dd2fefef..4df967d2 100644
--- a/extensions/sqlite/svn_version.h
+++ b/extensions/sqlite/svn_version.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/svn_version.tpl b/extensions/sqlite/svn_version.tpl
index 133fbb9a..2473a102 100644
--- a/extensions/sqlite/svn_version.tpl
+++ b/extensions/sqlite/svn_version.tpl
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/sqlite/version.rc b/extensions/sqlite/version.rc
index 718aa476..5fc38de7 100644
--- a/extensions/sqlite/version.rc
+++ b/extensions/sqlite/version.rc
@@ -49,7 +49,7 @@ BEGIN
             VALUE "FileDescription", "SourceMod SQLite Extension"
             VALUE "FileVersion", SVN_FULL_VERSION
             VALUE "InternalName", "SourceMod SQLite Extension"
-            VALUE "LegalCopyright", "Copyright (c) 2004-2007, AlliedModders LLC"
+            VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC"
             VALUE "OriginalFilename", "dbi.sqlite.ext.dll"
             VALUE "ProductName", "SourceMod SQLite Extension"
             VALUE "ProductVersion", SVN_FULL_VERSION
diff --git a/extensions/tf2/Makefile.ep1 b/extensions/tf2/Makefile.ep1
index 87f0423f..ab43177b 100644
--- a/extensions/tf2/Makefile.ep1
+++ b/extensions/tf2/Makefile.ep1
@@ -1,4 +1,4 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 SMSDK = ../smsdk
diff --git a/extensions/tf2/Makefile.ep2 b/extensions/tf2/Makefile.ep2
index ff407f70..7146c611 100644
--- a/extensions/tf2/Makefile.ep2
+++ b/extensions/tf2/Makefile.ep2
@@ -1,4 +1,4 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 SMSDK = ../smsdk
diff --git a/extensions/tf2/Makefile.orig b/extensions/tf2/Makefile.orig
index f31cf6f2..fcb92145 100644
--- a/extensions/tf2/Makefile.orig
+++ b/extensions/tf2/Makefile.orig
@@ -1,4 +1,4 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 SMSDK = ../smsdk
diff --git a/extensions/tf2/RegNatives.cpp b/extensions/tf2/RegNatives.cpp
index 2f001b78..e663a186 100644
--- a/extensions/tf2/RegNatives.cpp
+++ b/extensions/tf2/RegNatives.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/tf2/RegNatives.h b/extensions/tf2/RegNatives.h
index 1913530f..9ffe0669 100644
--- a/extensions/tf2/RegNatives.h
+++ b/extensions/tf2/RegNatives.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/tf2/extension.cpp b/extensions/tf2/extension.cpp
index ae67d077..c739a8f2 100644
--- a/extensions/tf2/extension.cpp
+++ b/extensions/tf2/extension.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/tf2/extension.h b/extensions/tf2/extension.h
index 91090fd9..6435cf38 100644
--- a/extensions/tf2/extension.h
+++ b/extensions/tf2/extension.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/tf2/natives.cpp b/extensions/tf2/natives.cpp
index 7d6887f0..7161c820 100644
--- a/extensions/tf2/natives.cpp
+++ b/extensions/tf2/natives.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/tf2/sdk/smsdk_config.h b/extensions/tf2/sdk/smsdk_config.h
index 09397393..b503ca4b 100644
--- a/extensions/tf2/sdk/smsdk_config.h
+++ b/extensions/tf2/sdk/smsdk_config.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Counter-Strike:Source Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/tf2/sdk/smsdk_ext.cpp b/extensions/tf2/sdk/smsdk_ext.cpp
index f5e6f3fc..37733333 100644
--- a/extensions/tf2/sdk/smsdk_ext.cpp
+++ b/extensions/tf2/sdk/smsdk_ext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/tf2/sdk/smsdk_ext.h b/extensions/tf2/sdk/smsdk_ext.h
index c137616b..3d5a229d 100644
--- a/extensions/tf2/sdk/smsdk_ext.h
+++ b/extensions/tf2/sdk/smsdk_ext.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/tf2/svn_version.h b/extensions/tf2/svn_version.h
index 8873263e..5d888fd0 100644
--- a/extensions/tf2/svn_version.h
+++ b/extensions/tf2/svn_version.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/tf2/svn_version.tpl b/extensions/tf2/svn_version.tpl
index ad458193..08a4c47d 100644
--- a/extensions/tf2/svn_version.tpl
+++ b/extensions/tf2/svn_version.tpl
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/tf2/version.rc b/extensions/tf2/version.rc
index 37d14dad..2abaa001 100644
--- a/extensions/tf2/version.rc
+++ b/extensions/tf2/version.rc
@@ -49,7 +49,7 @@ BEGIN
             VALUE "FileDescription", "SourceMod CS:S Extension"
             VALUE "FileVersion", SVN_FULL_VERSION
             VALUE "InternalName", "SourceMod CS:S Extension"
-            VALUE "LegalCopyright", "Copyright (c) 2004-2007, AlliedModders LLC"
+            VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC"
             VALUE "OriginalFilename", "game.cstrike.ext.dll"
             VALUE "ProductName", "SourceMod CS:S Extension"
             VALUE "ProductVersion", SVN_FULL_VERSION
diff --git a/extensions/topmenus/Makefile b/extensions/topmenus/Makefile
index 1fe7e23f..702700e5 100644
--- a/extensions/topmenus/Makefile
+++ b/extensions/topmenus/Makefile
@@ -1,4 +1,4 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 SMSDK = ../..
diff --git a/extensions/topmenus/TopMenu.cpp b/extensions/topmenus/TopMenu.cpp
index 61b14620..a342e870 100644
--- a/extensions/topmenus/TopMenu.cpp
+++ b/extensions/topmenus/TopMenu.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/TopMenu.h b/extensions/topmenus/TopMenu.h
index 2747c778..13631c74 100644
--- a/extensions/topmenus/TopMenu.h
+++ b/extensions/topmenus/TopMenu.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/TopMenuManager.cpp b/extensions/topmenus/TopMenuManager.cpp
index 4652f781..0cec8baf 100644
--- a/extensions/topmenus/TopMenuManager.cpp
+++ b/extensions/topmenus/TopMenuManager.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/TopMenuManager.h b/extensions/topmenus/TopMenuManager.h
index dc1efed6..18a2c2c4 100644
--- a/extensions/topmenus/TopMenuManager.h
+++ b/extensions/topmenus/TopMenuManager.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/extension.cpp b/extensions/topmenus/extension.cpp
index c7761293..8741dbf9 100644
--- a/extensions/topmenus/extension.cpp
+++ b/extensions/topmenus/extension.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/extension.h b/extensions/topmenus/extension.h
index 11730719..7efb0419 100644
--- a/extensions/topmenus/extension.h
+++ b/extensions/topmenus/extension.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/sdk/sm_memtable.cpp b/extensions/topmenus/sdk/sm_memtable.cpp
index 95cdebda..8f18b136 100644
--- a/extensions/topmenus/sdk/sm_memtable.cpp
+++ b/extensions/topmenus/sdk/sm_memtable.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/sdk/sm_memtable.h b/extensions/topmenus/sdk/sm_memtable.h
index 7c7f00a2..e4a42fd3 100644
--- a/extensions/topmenus/sdk/sm_memtable.h
+++ b/extensions/topmenus/sdk/sm_memtable.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/sdk/smsdk_config.h b/extensions/topmenus/sdk/smsdk_config.h
index 3da0e133..029e786f 100644
--- a/extensions/topmenus/sdk/smsdk_config.h
+++ b/extensions/topmenus/sdk/smsdk_config.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/sdk/smsdk_ext.cpp b/extensions/topmenus/sdk/smsdk_ext.cpp
index 618ce3b8..852361b1 100644
--- a/extensions/topmenus/sdk/smsdk_ext.cpp
+++ b/extensions/topmenus/sdk/smsdk_ext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/sdk/smsdk_ext.h b/extensions/topmenus/sdk/smsdk_ext.h
index b37ce03f..81e182d2 100644
--- a/extensions/topmenus/sdk/smsdk_ext.h
+++ b/extensions/topmenus/sdk/smsdk_ext.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/smn_topmenus.cpp b/extensions/topmenus/smn_topmenus.cpp
index cb68c592..0457afdc 100644
--- a/extensions/topmenus/smn_topmenus.cpp
+++ b/extensions/topmenus/smn_topmenus.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/smn_topmenus.h b/extensions/topmenus/smn_topmenus.h
index cda80fc6..dd216b3c 100644
--- a/extensions/topmenus/smn_topmenus.h
+++ b/extensions/topmenus/smn_topmenus.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/svn_version.h b/extensions/topmenus/svn_version.h
index 8b5468a4..6dba6a55 100644
--- a/extensions/topmenus/svn_version.h
+++ b/extensions/topmenus/svn_version.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/svn_version.tpl b/extensions/topmenus/svn_version.tpl
index 133fbb9a..2473a102 100644
--- a/extensions/topmenus/svn_version.tpl
+++ b/extensions/topmenus/svn_version.tpl
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod SQLite Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/extensions/topmenus/version.rc b/extensions/topmenus/version.rc
index 03c7c970..897ab627 100644
--- a/extensions/topmenus/version.rc
+++ b/extensions/topmenus/version.rc
@@ -49,7 +49,7 @@ BEGIN
             VALUE "FileDescription", "SourceMod TopMenus Extension"
             VALUE "FileVersion", SVN_FULL_VERSION
             VALUE "InternalName", "SourceMod TopMenus Extension"
-            VALUE "LegalCopyright", "Copyright (c) 2004-2007, AlliedModders LLC"
+            VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC"
             VALUE "OriginalFilename", "topmenus.ext.dll"
             VALUE "ProductName", "SourceMod TopMenus Extension"
             VALUE "ProductVersion", SVN_FULL_VERSION
diff --git a/loader/Makefile b/loader/Makefile
index a1fe7f02..06645536 100644
--- a/loader/Makefile
+++ b/loader/Makefile
@@ -1,4 +1,4 @@
-#(C)2004-2007 AlliedModders LLC
+#(C)2004-2008 AlliedModders LLC
 #
 # This sample Makefile is designed for SourceMod extensions that
 # do not need to be built against HL2SDK, and do not require 
diff --git a/loader/loader.cpp b/loader/loader.cpp
index 043e7d22..bb5f5ee9 100644
--- a/loader/loader.cpp
+++ b/loader/loader.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/loader/svn_version.h b/loader/svn_version.h
index 58fdccc2..91f34709 100644
--- a/loader/svn_version.h
+++ b/loader/svn_version.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/loader/svn_version.tpl b/loader/svn_version.tpl
index 611663dc..c9d0c6a3 100644
--- a/loader/svn_version.tpl
+++ b/loader/svn_version.tpl
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/loader/version.rc b/loader/version.rc
index 946552e0..ebd54169 100644
--- a/loader/version.rc
+++ b/loader/version.rc
@@ -49,7 +49,7 @@ BEGIN
             VALUE "FileDescription", "SourceMod Loader"
             VALUE "FileVersion", SVN_FULL_VERSION
             VALUE "InternalName", "sourcemod"
-            VALUE "LegalCopyright", "Copyright (c) 2004-2007, AlliedModders LLC"
+            VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC"
             VALUE "OriginalFilename", "sourcemod_mm.dll"
             VALUE "ProductName", "SourceMod Loader"
             VALUE "ProductVersion", SVN_FULL_VERSION
diff --git a/plugins/admin-flatfile/admin-flatfile.sp b/plugins/admin-flatfile/admin-flatfile.sp
index 2cc9bc0d..250ebb24 100644
--- a/plugins/admin-flatfile/admin-flatfile.sp
+++ b/plugins/admin-flatfile/admin-flatfile.sp
@@ -4,7 +4,7 @@
  * SourceMod Admin File Reader Plugin
  * Manages the standard flat files for admins.  This is the file to compile.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/admin-flatfile/admin-groups.sp b/plugins/admin-flatfile/admin-groups.sp
index 4824774e..3ed5343f 100644
--- a/plugins/admin-flatfile/admin-groups.sp
+++ b/plugins/admin-flatfile/admin-groups.sp
@@ -4,7 +4,7 @@
  * SourceMod Admin File Reader Plugin
  * Reads the admin_groups.cfg file.  Do not compile this directly.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/admin-flatfile/admin-overrides.sp b/plugins/admin-flatfile/admin-overrides.sp
index 3ff926d5..a8adbdc1 100644
--- a/plugins/admin-flatfile/admin-overrides.sp
+++ b/plugins/admin-flatfile/admin-overrides.sp
@@ -5,7 +5,7 @@
  * Reads overrides from the admin_levels.cfg file.  Do not compile
  * this directly.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/admin-flatfile/admin-simple.sp b/plugins/admin-flatfile/admin-simple.sp
index 58b94858..9e8c8500 100644
--- a/plugins/admin-flatfile/admin-simple.sp
+++ b/plugins/admin-flatfile/admin-simple.sp
@@ -4,7 +4,7 @@
  * SourceMod Admin File Reader Plugin
  * Reads the admins.cfg file.  Do not compile this directly.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/admin-flatfile/admin-users.sp b/plugins/admin-flatfile/admin-users.sp
index 1549b3ef..d0d090aa 100644
--- a/plugins/admin-flatfile/admin-users.sp
+++ b/plugins/admin-flatfile/admin-users.sp
@@ -4,7 +4,7 @@
  * SourceMod Admin File Reader Plugin
  * Reads the admins.cfg file.  Do not compile this directly.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/admin-sql-prefetch.sp b/plugins/admin-sql-prefetch.sp
index 502112ac..d22e45a8 100644
--- a/plugins/admin-sql-prefetch.sp
+++ b/plugins/admin-sql-prefetch.sp
@@ -4,7 +4,7 @@
  * SourceMod SQL Admins Plugin (Prefetch)
  * Prefetches admins from an SQL database without threading.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/admin-sql-threaded.sp b/plugins/admin-sql-threaded.sp
index 601acd18..d27ab348 100644
--- a/plugins/admin-sql-threaded.sp
+++ b/plugins/admin-sql-threaded.sp
@@ -4,7 +4,7 @@
  * SourceMod SQL Admins Plugin (Threaded)
  * Fetches admins from an SQL database dynamically.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/adminhelp.sp b/plugins/adminhelp.sp
index d322f52b..a13269f1 100644
--- a/plugins/adminhelp.sp
+++ b/plugins/adminhelp.sp
@@ -4,7 +4,7 @@
  * SourceMod Admin Help Plugin
  * Displays and searches SourceMod commands and descriptions.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/adminmenu.sp b/plugins/adminmenu.sp
index d3985ed5..8e719613 100644
--- a/plugins/adminmenu.sp
+++ b/plugins/adminmenu.sp
@@ -4,7 +4,7 @@
  * SourceMod Admin Menu Plugin
  * Creates the base admin menu, for plugins to add items to.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/antiflood.sp b/plugins/antiflood.sp
index ae39c1e6..7fe73eba 100644
--- a/plugins/antiflood.sp
+++ b/plugins/antiflood.sp
@@ -4,7 +4,7 @@
  * SourceMod Anti-Flood Plugin
  * Protects against chat flooding.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basebans.sp b/plugins/basebans.sp
index 4fed0f80..1254c9f8 100644
--- a/plugins/basebans.sp
+++ b/plugins/basebans.sp
@@ -4,7 +4,7 @@
  * SourceMod Basic Commands Plugin
  * Implements basic admin commands.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basebans/ban.sp b/plugins/basebans/ban.sp
index 40c698da..9efdb4db 100644
--- a/plugins/basebans/ban.sp
+++ b/plugins/basebans/ban.sp
@@ -4,7 +4,7 @@
  * SourceMod Basecommands
  * Functionality related to banning.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basechat.sp b/plugins/basechat.sp
index a8ed25f9..a8aabc1d 100644
--- a/plugins/basechat.sp
+++ b/plugins/basechat.sp
@@ -4,7 +4,7 @@
  * SourceMod Basic Chat Plugin
  * Implements basic communication commands.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basecomm.sp b/plugins/basecomm.sp
index 5636dbc3..c2a6612f 100644
--- a/plugins/basecomm.sp
+++ b/plugins/basecomm.sp
@@ -4,7 +4,7 @@
  * SourceMod Communication Plugin
  * Provides fucntionality for controlling communication on the server
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basecomm/gag.sp b/plugins/basecomm/gag.sp
index fc14b32b..f29753db 100644
--- a/plugins/basecomm/gag.sp
+++ b/plugins/basecomm/gag.sp
@@ -4,7 +4,7 @@
  * SourceMod Basecomm
  * Part of Basecomm plugin, menu and other functionality.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basecommands.sp b/plugins/basecommands.sp
index f3222982..ec6e7abb 100644
--- a/plugins/basecommands.sp
+++ b/plugins/basecommands.sp
@@ -4,7 +4,7 @@
  * SourceMod Basic Commands Plugin
  * Implements basic admin commands.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basecommands/cancelvote.sp b/plugins/basecommands/cancelvote.sp
index 1fb36689..106e3dc4 100644
--- a/plugins/basecommands/cancelvote.sp
+++ b/plugins/basecommands/cancelvote.sp
@@ -4,7 +4,7 @@
  * SourceMod Basecommands Plugin
  * Provides cancelvote functionality.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basecommands/execcfg.sp b/plugins/basecommands/execcfg.sp
index b4cebf6b..9b1af7f1 100644
--- a/plugins/basecommands/execcfg.sp
+++ b/plugins/basecommands/execcfg.sp
@@ -4,7 +4,7 @@
  * SourceMod Basecommands Plugin
  * Provides exec cfg functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basecommands/kick.sp b/plugins/basecommands/kick.sp
index 13f580a9..0871ffc0 100644
--- a/plugins/basecommands/kick.sp
+++ b/plugins/basecommands/kick.sp
@@ -4,7 +4,7 @@
  * SourceMod Basecommands Plugin
  * Provides kick functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basecommands/map.sp b/plugins/basecommands/map.sp
index cea38b31..3779c11c 100644
--- a/plugins/basecommands/map.sp
+++ b/plugins/basecommands/map.sp
@@ -4,7 +4,7 @@
  * SourceMod Basecommands Plugin
  * Provides map functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basecommands/reloadadmins.sp b/plugins/basecommands/reloadadmins.sp
index 82ce4d2e..be9ca36f 100644
--- a/plugins/basecommands/reloadadmins.sp
+++ b/plugins/basecommands/reloadadmins.sp
@@ -4,7 +4,7 @@
  * SourceMod Basecommands Plugin
  * Provides reloadadmins functionality.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basecommands/who.sp b/plugins/basecommands/who.sp
index 699528e1..a9e64b5a 100644
--- a/plugins/basecommands/who.sp
+++ b/plugins/basecommands/who.sp
@@ -4,7 +4,7 @@
  * SourceMod Basecommands Plugin
  * Provides sm_who functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basetriggers.sp b/plugins/basetriggers.sp
index d24d7f2a..d141fdc1 100644
--- a/plugins/basetriggers.sp
+++ b/plugins/basetriggers.sp
@@ -4,7 +4,7 @@
  * SourceMod Basic Info Triggers Plugin
  * Implements basic information chat triggers like ff and timeleft.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basevotes.sp b/plugins/basevotes.sp
index c6c53df7..cc2e3462 100644
--- a/plugins/basevotes.sp
+++ b/plugins/basevotes.sp
@@ -4,7 +4,7 @@
  * SourceMod Basic Votes Plugin
  * Implements basic vote commands.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basevotes/voteban.sp b/plugins/basevotes/voteban.sp
index 1827c0c6..10cc11fb 100644
--- a/plugins/basevotes/voteban.sp
+++ b/plugins/basevotes/voteban.sp
@@ -4,7 +4,7 @@
  * SourceMod Basevotes Plugin
  * Provides ban functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basevotes/votekick.sp b/plugins/basevotes/votekick.sp
index ca5122ca..e3213b47 100644
--- a/plugins/basevotes/votekick.sp
+++ b/plugins/basevotes/votekick.sp
@@ -4,7 +4,7 @@
  * SourceMod Basevotes Plugin
  * Provides kick functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/basevotes/votemap.sp b/plugins/basevotes/votemap.sp
index 843b78d1..968d7074 100644
--- a/plugins/basevotes/votemap.sp
+++ b/plugins/basevotes/votemap.sp
@@ -4,7 +4,7 @@
  * SourceMod Basevotes Plugin
  * Provides map functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/compile.exe b/plugins/compile.exe
new file mode 100644
index 0000000000000000000000000000000000000000..5cfa71745a0f2c074e28f28bfd3da9f0678ed30d
GIT binary patch
literal 113664
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

literal 0
HcmV?d00001

diff --git a/plugins/funcommands.sp b/plugins/funcommands.sp
index aa5bd467..8042b3b0 100644
--- a/plugins/funcommands.sp
+++ b/plugins/funcommands.sp
@@ -4,7 +4,7 @@
  * SourceMod Basic Fun Commands Plugin
  * Implements basic punishment commands.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funcommands/beacon.sp b/plugins/funcommands/beacon.sp
index b178a032..f80bebd3 100644
--- a/plugins/funcommands/beacon.sp
+++ b/plugins/funcommands/beacon.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefuncommands Plugin
  * Provides beacon functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funcommands/blind.sp b/plugins/funcommands/blind.sp
index 3f90aa06..b4aceaaf 100644
--- a/plugins/funcommands/blind.sp
+++ b/plugins/funcommands/blind.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefuncommands Plugin
  * Provides blind functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funcommands/drug.sp b/plugins/funcommands/drug.sp
index f6572dc9..1b9ba51d 100644
--- a/plugins/funcommands/drug.sp
+++ b/plugins/funcommands/drug.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefuncommands Plugin
  * Provides drug functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funcommands/fire.sp b/plugins/funcommands/fire.sp
index 9f0b4c31..d561a035 100644
--- a/plugins/funcommands/fire.sp
+++ b/plugins/funcommands/fire.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefuncommands Plugin
  * Provides FireBomb functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funcommands/gravity.sp b/plugins/funcommands/gravity.sp
index dfb7ece8..12349bf5 100644
--- a/plugins/funcommands/gravity.sp
+++ b/plugins/funcommands/gravity.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefuncommands Plugin
  * Provides gravity functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funcommands/ice.sp b/plugins/funcommands/ice.sp
index fcd06084..21a451f0 100644
--- a/plugins/funcommands/ice.sp
+++ b/plugins/funcommands/ice.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefuncommands Plugin
  * Provides freeze and freezebomb functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funcommands/noclip.sp b/plugins/funcommands/noclip.sp
index d4732faa..e7f2536a 100644
--- a/plugins/funcommands/noclip.sp
+++ b/plugins/funcommands/noclip.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefuncommands Plugin
  * Provides noclip functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funcommands/timebomb.sp b/plugins/funcommands/timebomb.sp
index be6731e0..f9f6501a 100644
--- a/plugins/funcommands/timebomb.sp
+++ b/plugins/funcommands/timebomb.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefuncommands Plugin
  * Provides TimeBomb functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funvotes.sp b/plugins/funvotes.sp
index 231765ae..d461f2ab 100644
--- a/plugins/funvotes.sp
+++ b/plugins/funvotes.sp
@@ -4,7 +4,7 @@
  * SourceMod Fun Votes Plugin
  * Implements extra fun vote commands.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funvotes/votealltalk.sp b/plugins/funvotes/votealltalk.sp
index 01731e71..43bd15c3 100644
--- a/plugins/funvotes/votealltalk.sp
+++ b/plugins/funvotes/votealltalk.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefunvotes Plugin
  * Provides votealltalk functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funvotes/voteburn.sp b/plugins/funvotes/voteburn.sp
index c3ea24bd..403da2e5 100644
--- a/plugins/funvotes/voteburn.sp
+++ b/plugins/funvotes/voteburn.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefunvotes Plugin
  * Provides voteburn functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funvotes/voteff.sp b/plugins/funvotes/voteff.sp
index 399a3ea4..c4766b78 100644
--- a/plugins/funvotes/voteff.sp
+++ b/plugins/funvotes/voteff.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefunvotes Plugin
  * Provides vote ff functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funvotes/votegravity.sp b/plugins/funvotes/votegravity.sp
index 74a30ffd..63086da6 100644
--- a/plugins/funvotes/votegravity.sp
+++ b/plugins/funvotes/votegravity.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefunvotes Plugin
  * Provides votegravity functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/funvotes/voteslay.sp b/plugins/funvotes/voteslay.sp
index db705fa7..e0637cea 100644
--- a/plugins/funvotes/voteslay.sp
+++ b/plugins/funvotes/voteslay.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefunvotes Plugin
  * Provides voteslay functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/include/admin.inc b/plugins/include/admin.inc
index 14b337ca..20ba921a 100644
--- a/plugins/include/admin.inc
+++ b/plugins/include/admin.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/adminmenu.inc b/plugins/include/adminmenu.inc
index dcac5c4f..ebadb81e 100644
--- a/plugins/include/adminmenu.inc
+++ b/plugins/include/adminmenu.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/adt.inc b/plugins/include/adt.inc
index 5fb58bf0..62097783 100644
--- a/plugins/include/adt.inc
+++ b/plugins/include/adt.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/adt_array.inc b/plugins/include/adt_array.inc
index d92a8cf4..97e55ca4 100644
--- a/plugins/include/adt_array.inc
+++ b/plugins/include/adt_array.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/adt_trie.inc b/plugins/include/adt_trie.inc
index b777d41d..3c9c4cfa 100644
--- a/plugins/include/adt_trie.inc
+++ b/plugins/include/adt_trie.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/banning.inc b/plugins/include/banning.inc
index 1b350482..07611565 100644
--- a/plugins/include/banning.inc
+++ b/plugins/include/banning.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/bitbuffer.inc b/plugins/include/bitbuffer.inc
index 87de566c..fd1c18ec 100644
--- a/plugins/include/bitbuffer.inc
+++ b/plugins/include/bitbuffer.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/clients.inc b/plugins/include/clients.inc
index 29d6ac5b..6a946133 100644
--- a/plugins/include/clients.inc
+++ b/plugins/include/clients.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/commandfilters.inc b/plugins/include/commandfilters.inc
index 914982a8..bc432a85 100644
--- a/plugins/include/commandfilters.inc
+++ b/plugins/include/commandfilters.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/console.inc b/plugins/include/console.inc
index 84d04cd5..76c0d3bf 100644
--- a/plugins/include/console.inc
+++ b/plugins/include/console.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/core.inc b/plugins/include/core.inc
index ca226e09..b64de197 100644
--- a/plugins/include/core.inc
+++ b/plugins/include/core.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/cstrike.inc b/plugins/include/cstrike.inc
index 7f8ae436..b7568c45 100644
--- a/plugins/include/cstrike.inc
+++ b/plugins/include/cstrike.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/datapack.inc b/plugins/include/datapack.inc
index 0a80f943..263af798 100644
--- a/plugins/include/datapack.inc
+++ b/plugins/include/datapack.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/dbi.inc b/plugins/include/dbi.inc
index 084b6d4e..361afc64 100644
--- a/plugins/include/dbi.inc
+++ b/plugins/include/dbi.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/entity.inc b/plugins/include/entity.inc
index fefc76f5..9046af24 100644
--- a/plugins/include/entity.inc
+++ b/plugins/include/entity.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/entity_prop_stocks.inc b/plugins/include/entity_prop_stocks.inc
index b4b5cd64..897d97ad 100644
--- a/plugins/include/entity_prop_stocks.inc
+++ b/plugins/include/entity_prop_stocks.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/events.inc b/plugins/include/events.inc
index 300703bd..07630794 100644
--- a/plugins/include/events.inc
+++ b/plugins/include/events.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/files.inc b/plugins/include/files.inc
index 20f3424c..d01c1492 100644
--- a/plugins/include/files.inc
+++ b/plugins/include/files.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/float.inc b/plugins/include/float.inc
index 280e22c1..3f789be4 100644
--- a/plugins/include/float.inc
+++ b/plugins/include/float.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/functions.inc b/plugins/include/functions.inc
index 1a77f7f1..eba2d9dc 100644
--- a/plugins/include/functions.inc
+++ b/plugins/include/functions.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/geoip.inc b/plugins/include/geoip.inc
index 07fbb0fb..10f1fe5d 100644
--- a/plugins/include/geoip.inc
+++ b/plugins/include/geoip.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/halflife.inc b/plugins/include/halflife.inc
index 35fd7f74..a58adabc 100644
--- a/plugins/include/halflife.inc
+++ b/plugins/include/halflife.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/handles.inc b/plugins/include/handles.inc
index 68e437a1..b09703d0 100644
--- a/plugins/include/handles.inc
+++ b/plugins/include/handles.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/helpers.inc b/plugins/include/helpers.inc
index 40338059..106f0b64 100644
--- a/plugins/include/helpers.inc
+++ b/plugins/include/helpers.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/keyvalues.inc b/plugins/include/keyvalues.inc
index c14b15fa..e053f591 100644
--- a/plugins/include/keyvalues.inc
+++ b/plugins/include/keyvalues.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/lang.inc b/plugins/include/lang.inc
index 9aba0be9..1301b8a1 100644
--- a/plugins/include/lang.inc
+++ b/plugins/include/lang.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/logging.inc b/plugins/include/logging.inc
index 14b0e906..aa4c0c84 100644
--- a/plugins/include/logging.inc
+++ b/plugins/include/logging.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/menus.inc b/plugins/include/menus.inc
index 825209dc..b338808a 100644
--- a/plugins/include/menus.inc
+++ b/plugins/include/menus.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/profiler.inc b/plugins/include/profiler.inc
index cfc16a5a..3c49b308 100644
--- a/plugins/include/profiler.inc
+++ b/plugins/include/profiler.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sdktools.inc b/plugins/include/sdktools.inc
index ac0360ca..e3e8a38a 100644
--- a/plugins/include/sdktools.inc
+++ b/plugins/include/sdktools.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sdktools_engine.inc b/plugins/include/sdktools_engine.inc
index 3971be9a..6e39b157 100644
--- a/plugins/include/sdktools_engine.inc
+++ b/plugins/include/sdktools_engine.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sdktools_entinput.inc b/plugins/include/sdktools_entinput.inc
index fb161c35..1af2ec70 100644
--- a/plugins/include/sdktools_entinput.inc
+++ b/plugins/include/sdktools_entinput.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sdktools_functions.inc b/plugins/include/sdktools_functions.inc
index 1765878c..d4e6a892 100644
--- a/plugins/include/sdktools_functions.inc
+++ b/plugins/include/sdktools_functions.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sdktools_sound.inc b/plugins/include/sdktools_sound.inc
index aa51cfa2..2005a965 100644
--- a/plugins/include/sdktools_sound.inc
+++ b/plugins/include/sdktools_sound.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sdktools_stocks.inc b/plugins/include/sdktools_stocks.inc
index 186dc231..c9befa39 100644
--- a/plugins/include/sdktools_stocks.inc
+++ b/plugins/include/sdktools_stocks.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sdktools_stringtables.inc b/plugins/include/sdktools_stringtables.inc
index 4ca903b8..eb628c72 100644
--- a/plugins/include/sdktools_stringtables.inc
+++ b/plugins/include/sdktools_stringtables.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sdktools_tempents.inc b/plugins/include/sdktools_tempents.inc
index 3963beaf..fc895304 100644
--- a/plugins/include/sdktools_tempents.inc
+++ b/plugins/include/sdktools_tempents.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sdktools_tempents_stocks.inc b/plugins/include/sdktools_tempents_stocks.inc
index e809e3eb..9be534a8 100644
--- a/plugins/include/sdktools_tempents_stocks.inc
+++ b/plugins/include/sdktools_tempents_stocks.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sdktools_trace.inc b/plugins/include/sdktools_trace.inc
index 32d9face..f27b062c 100644
--- a/plugins/include/sdktools_trace.inc
+++ b/plugins/include/sdktools_trace.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sdktools_voice.inc b/plugins/include/sdktools_voice.inc
index 74e0659c..730f5ca3 100644
--- a/plugins/include/sdktools_voice.inc
+++ b/plugins/include/sdktools_voice.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sorting.inc b/plugins/include/sorting.inc
index 7fd59687..2d36be3b 100644
--- a/plugins/include/sorting.inc
+++ b/plugins/include/sorting.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc
index 9fdd0985..f6669498 100644
--- a/plugins/include/sourcemod.inc
+++ b/plugins/include/sourcemod.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/string.inc b/plugins/include/string.inc
index b0c19cee..85c9a468 100644
--- a/plugins/include/string.inc
+++ b/plugins/include/string.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/textparse.inc b/plugins/include/textparse.inc
index 1835aad2..408c931c 100644
--- a/plugins/include/textparse.inc
+++ b/plugins/include/textparse.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/timers.inc b/plugins/include/timers.inc
index f7b5d402..e03d580b 100644
--- a/plugins/include/timers.inc
+++ b/plugins/include/timers.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/topmenus.inc b/plugins/include/topmenus.inc
index a59f2fa0..f2b0f950 100644
--- a/plugins/include/topmenus.inc
+++ b/plugins/include/topmenus.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/usermessages.inc b/plugins/include/usermessages.inc
index 79e0e229..e90fa81f 100644
--- a/plugins/include/usermessages.inc
+++ b/plugins/include/usermessages.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/vector.inc b/plugins/include/vector.inc
index 6dc0f447..ae1ede62 100644
--- a/plugins/include/vector.inc
+++ b/plugins/include/vector.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/version.inc b/plugins/include/version.inc
index 9adbf8bc..ba26c448 100644
--- a/plugins/include/version.inc
+++ b/plugins/include/version.inc
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/include/version.tpl b/plugins/include/version.tpl
index 6bc2c04a..28e8d0e0 100644
--- a/plugins/include/version.tpl
+++ b/plugins/include/version.tpl
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * =============================================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is part of the SourceMod/SourcePawn SDK.
diff --git a/plugins/mapchooser.sp b/plugins/mapchooser.sp
index bf978f05..ee8d23f2 100644
--- a/plugins/mapchooser.sp
+++ b/plugins/mapchooser.sp
@@ -5,7 +5,7 @@
  * Creates a map vote at appropriate times, setting sm_nextmap to the winning
  * vote
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/mapmanager.sp b/plugins/mapmanager.sp
index dbf3ec39..9e6e065d 100644
--- a/plugins/mapmanager.sp
+++ b/plugins/mapmanager.sp
@@ -5,7 +5,7 @@
  * Provides all map related functionality, including map changing, map voting,
  * and nextmap.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/mapmanager/commands.sp b/plugins/mapmanager/commands.sp
index bba25765..30199406 100644
--- a/plugins/mapmanager/commands.sp
+++ b/plugins/mapmanager/commands.sp
@@ -4,7 +4,7 @@
  * SourceMod Map Manager Plugin
  * Contains callbacks for commands
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/mapmanager/events.sp b/plugins/mapmanager/events.sp
index be57776b..0d868310 100644
--- a/plugins/mapmanager/events.sp
+++ b/plugins/mapmanager/events.sp
@@ -4,7 +4,7 @@
  * SourceMod Map Manager Plugin
  * Contains event callbacks
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/mapmanager/functions.sp b/plugins/mapmanager/functions.sp
index 963dcafc..365c004e 100644
--- a/plugins/mapmanager/functions.sp
+++ b/plugins/mapmanager/functions.sp
@@ -4,7 +4,7 @@
  * SourceMod Map Management Plugin
  * Contains misc functions.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/mapmanager/functions_menu.sp b/plugins/mapmanager/functions_menu.sp
index 51f78f57..709f7764 100644
--- a/plugins/mapmanager/functions_menu.sp
+++ b/plugins/mapmanager/functions_menu.sp
@@ -4,7 +4,7 @@
  * SourceMod Map Management Plugin
  * Contains misc functions.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/mapmanager/globals.sp b/plugins/mapmanager/globals.sp
index 171c3a16..db917957 100644
--- a/plugins/mapmanager/globals.sp
+++ b/plugins/mapmanager/globals.sp
@@ -4,7 +4,7 @@
  * SourceMod Map Manager Plugin
  * Contains globals and defines
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/mapmanager/menus.sp b/plugins/mapmanager/menus.sp
index c47e76be..3157f16c 100644
--- a/plugins/mapmanager/menus.sp
+++ b/plugins/mapmanager/menus.sp
@@ -4,7 +4,7 @@
  * SourceMod Map Manager Plugin
  * Contains menu callbacks
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/mapmanager/timers.sp b/plugins/mapmanager/timers.sp
index c0d5a3e3..bfef0f27 100644
--- a/plugins/mapmanager/timers.sp
+++ b/plugins/mapmanager/timers.sp
@@ -4,7 +4,7 @@
  * SourceMod Map Manager Plugin
  * Contains timer callbacks
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/mapmanager/votes.sp b/plugins/mapmanager/votes.sp
index c8a1d6f7..4f7a9849 100644
--- a/plugins/mapmanager/votes.sp
+++ b/plugins/mapmanager/votes.sp
@@ -4,7 +4,7 @@
  * SourceMod Map Manager Plugin
  * Contains vote callbacks
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/nextmap.sp b/plugins/nextmap.sp
index 16150086..c3767276 100644
--- a/plugins/nextmap.sp
+++ b/plugins/nextmap.sp
@@ -4,7 +4,7 @@
  * SourceMod Nextmap Plugin
  * Adds sm_nextmap cvar for changing map and nextmap chat trigger.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/playercommands.sp b/plugins/playercommands.sp
index 5709333b..0318dca1 100644
--- a/plugins/playercommands.sp
+++ b/plugins/playercommands.sp
@@ -4,7 +4,7 @@
  * SourceMod SlapSlay Commands Plugin
  * Implements slap and slay commands
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/playercommands/slap.sp b/plugins/playercommands/slap.sp
index 891bb463..7c99c417 100644
--- a/plugins/playercommands/slap.sp
+++ b/plugins/playercommands/slap.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefuncommands Plugin
  * Provides slap functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/playercommands/slay.sp b/plugins/playercommands/slay.sp
index daa00232..e182b580 100644
--- a/plugins/playercommands/slay.sp
+++ b/plugins/playercommands/slay.sp
@@ -4,7 +4,7 @@
  * SourceMod Basefuncommands Plugin
  * Provides slay functionality
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/randomcycle.sp b/plugins/randomcycle.sp
index e8708b9f..fc2de27a 100644
--- a/plugins/randomcycle.sp
+++ b/plugins/randomcycle.sp
@@ -4,7 +4,7 @@
  * SourceMod Random Map Cycle Plugin
  * Randomly picks a map from the mapcycle.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/reservedslots.sp b/plugins/reservedslots.sp
index defdb900..efdf1e98 100644
--- a/plugins/reservedslots.sp
+++ b/plugins/reservedslots.sp
@@ -4,7 +4,7 @@
  * SourceMod Reserved Slots Plugin
  * Provides basic reserved slots.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/rockthevote.sp b/plugins/rockthevote.sp
index 7d50b1c0..3d3a0287 100644
--- a/plugins/rockthevote.sp
+++ b/plugins/rockthevote.sp
@@ -4,7 +4,7 @@
  * SourceMod Rock The Vote Plugin
  * Creates a map vote when the required number of players have requested one.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/plugins/spcomp.exe b/plugins/spcomp.exe
new file mode 100644
index 0000000000000000000000000000000000000000..bd3a7118228c50550ca431ee74bfde5b537ad314
GIT binary patch
literal 315392
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
D(_s}o

literal 0
HcmV?d00001

diff --git a/plugins/sql-admin-manager.sp b/plugins/sql-admin-manager.sp
index 058ef74c..1926985f 100644
--- a/plugins/sql-admin-manager.sp
+++ b/plugins/sql-admin-manager.sp
@@ -4,7 +4,7 @@
  * SourceMod SQL Admin Manager Plugin
  * Adds/managers admins and groups in an SQL database.
  *
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IADTFactory.h b/public/IADTFactory.h
index 5159642a..347eba3f 100644
--- a/public/IADTFactory.h
+++ b/public/IADTFactory.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IAdminSystem.h b/public/IAdminSystem.h
index 0d887ea8..8aa8961e 100644
--- a/public/IAdminSystem.h
+++ b/public/IAdminSystem.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IDBDriver.h b/public/IDBDriver.h
index 71d9fe2d..47ae9467 100644
--- a/public/IDBDriver.h
+++ b/public/IDBDriver.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IDataPack.h b/public/IDataPack.h
index 2f1fceca..a84a4416 100644
--- a/public/IDataPack.h
+++ b/public/IDataPack.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IExtensionSys.h b/public/IExtensionSys.h
index 3f4989a2..f4367603 100644
--- a/public/IExtensionSys.h
+++ b/public/IExtensionSys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IForwardSys.h b/public/IForwardSys.h
index 99149b64..61e4ff5b 100644
--- a/public/IForwardSys.h
+++ b/public/IForwardSys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IGameConfigs.h b/public/IGameConfigs.h
index 0994a183..6e555cc3 100644
--- a/public/IGameConfigs.h
+++ b/public/IGameConfigs.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IGameHelpers.h b/public/IGameHelpers.h
index 1467ed6c..9bc373bc 100644
--- a/public/IGameHelpers.h
+++ b/public/IGameHelpers.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IHandleSys.h b/public/IHandleSys.h
index b92cf828..4c9c16c6 100644
--- a/public/IHandleSys.h
+++ b/public/IHandleSys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/ILibrarySys.h b/public/ILibrarySys.h
index da6d4711..b4cc05b4 100644
--- a/public/ILibrarySys.h
+++ b/public/ILibrarySys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IMemoryUtils.h b/public/IMemoryUtils.h
index 1d6ba093..3334bf88 100644
--- a/public/IMemoryUtils.h
+++ b/public/IMemoryUtils.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IMenuManager.h b/public/IMenuManager.h
index 16099f23..dfacf2cd 100644
--- a/public/IMenuManager.h
+++ b/public/IMenuManager.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IPlayerHelpers.h b/public/IPlayerHelpers.h
index 18efba8b..344206f0 100644
--- a/public/IPlayerHelpers.h
+++ b/public/IPlayerHelpers.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IPluginSys.h b/public/IPluginSys.h
index 9c8d4aa9..c6dd0313 100644
--- a/public/IPluginSys.h
+++ b/public/IPluginSys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IRootConsoleMenu.h b/public/IRootConsoleMenu.h
index dd0da8c9..4adfc3ae 100644
--- a/public/IRootConsoleMenu.h
+++ b/public/IRootConsoleMenu.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IShareSys.h b/public/IShareSys.h
index 84363bbf..8c73ab46 100644
--- a/public/IShareSys.h
+++ b/public/IShareSys.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/ISourceMod.h b/public/ISourceMod.h
index 06f1650b..3fb97263 100644
--- a/public/ISourceMod.h
+++ b/public/ISourceMod.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/ITextParsers.h b/public/ITextParsers.h
index 6cbdac95..c0ccf6d5 100644
--- a/public/ITextParsers.h
+++ b/public/ITextParsers.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IThreader.h b/public/IThreader.h
index 5fce071e..69821c69 100644
--- a/public/IThreader.h
+++ b/public/IThreader.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/ITimerSystem.h b/public/ITimerSystem.h
index 41119b7a..28a0cf6e 100644
--- a/public/ITimerSystem.h
+++ b/public/ITimerSystem.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/IUserMessages.h b/public/IUserMessages.h
index c5524b1d..b63d45d8 100644
--- a/public/IUserMessages.h
+++ b/public/IUserMessages.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/compat_wrappers.h b/public/compat_wrappers.h
index 7ad7e484..c5fd14d4 100644
--- a/public/compat_wrappers.h
+++ b/public/compat_wrappers.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/extensions/IBinTools.h b/public/extensions/IBinTools.h
index beda6ee6..f8334de3 100644
--- a/public/extensions/IBinTools.h
+++ b/public/extensions/IBinTools.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod BinTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/extensions/ITopMenus.h b/public/extensions/ITopMenus.h
index ef063e2d..791ec9ed 100644
--- a/public/extensions/ITopMenus.h
+++ b/public/extensions/ITopMenus.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/jit/jit_helpers.h b/public/jit/jit_helpers.h
index 6bb825eb..01d97763 100644
--- a/public/jit/jit_helpers.h
+++ b/public/jit/jit_helpers.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT SDK
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/jit/x86/x86_macros.h b/public/jit/x86/x86_macros.h
index cc21970a..1cea3502 100644
--- a/public/jit/x86/x86_macros.h
+++ b/public/jit/x86/x86_macros.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT SDK
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/metamod_wrappers.h b/public/metamod_wrappers.h
index de686cfd..9ab73f38 100644
--- a/public/metamod_wrappers.h
+++ b/public/metamod_wrappers.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/mms_sample_ext/Makefile.ep2 b/public/mms_sample_ext/Makefile.ep2
index 17adc6df..18893901 100644
--- a/public/mms_sample_ext/Makefile.ep2
+++ b/public/mms_sample_ext/Makefile.ep2
@@ -1,4 +1,4 @@
-#(C)2004-2007 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 HL2SDK = ../../../hl2sdk-ob
diff --git a/public/mms_sample_ext/Makefile.orig b/public/mms_sample_ext/Makefile.orig
index c4b59b5a..62b17db7 100644
--- a/public/mms_sample_ext/Makefile.orig
+++ b/public/mms_sample_ext/Makefile.orig
@@ -1,4 +1,4 @@
-#(C)2004-2007 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 HL2SDK = ../../../hl2sdk
diff --git a/public/sample_ext/Makefile b/public/sample_ext/Makefile
index 06b91671..14e9ae3d 100644
--- a/public/sample_ext/Makefile
+++ b/public/sample_ext/Makefile
@@ -1,4 +1,4 @@
-#(C)2004-2007 AlliedModders LLC
+#(C)2004-2008 AlliedModders LLC
 #
 # This sample Makefile is designed for SourceMod extensions that
 # do not need to be built against HL2SDK, and do not require 
diff --git a/public/sample_ext/Makefile.ep1 b/public/sample_ext/Makefile.ep1
index 4453f66d..dac5921d 100644
--- a/public/sample_ext/Makefile.ep1
+++ b/public/sample_ext/Makefile.ep1
@@ -1,4 +1,4 @@
-#(C)2004-2007 AlliedModders LLC
+#(C)2004-2008 AlliedModders LLC
 #
 # This sample Makefile is designed for SourceMod extensions that 
 # are built against Metamod:Source 1.4.2, Episode 1 of the HL2SDK.
diff --git a/public/sample_ext/Makefile.ep2 b/public/sample_ext/Makefile.ep2
index a5eab11b..ae87c584 100644
--- a/public/sample_ext/Makefile.ep2
+++ b/public/sample_ext/Makefile.ep2
@@ -1,4 +1,4 @@
-#(C)2004-2007 AlliedModders LLC
+#(C)2004-2008 AlliedModders LLC
 #
 # This sample Makefile is designed for SourceMod extensions that 
 # are built against Metamod:Source 1.6.0, Episode 2 of the HL2SDK.
diff --git a/public/sample_ext/Makefile.orig b/public/sample_ext/Makefile.orig
index a838022c..61348368 100644
--- a/public/sample_ext/Makefile.orig
+++ b/public/sample_ext/Makefile.orig
@@ -1,4 +1,4 @@
-#(C)2004-2007 AlliedModders LLC
+#(C)2004-2008 AlliedModders LLC
 #
 # This sample Makefile is designed for SourceMod extensions that 
 # are built against Metamod:Source 1.6.0, Episode 1 of the HL2SDK.
diff --git a/public/sample_ext/extension.cpp b/public/sample_ext/extension.cpp
index d05a6c56..be2bfb71 100644
--- a/public/sample_ext/extension.cpp
+++ b/public/sample_ext/extension.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/sample_ext/extension.h b/public/sample_ext/extension.h
index d8f445a4..719d36c2 100644
--- a/public/sample_ext/extension.h
+++ b/public/sample_ext/extension.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/sample_ext/sdk/smsdk_config.h b/public/sample_ext/sdk/smsdk_config.h
index 59fb0874..8a46207c 100644
--- a/public/sample_ext/sdk/smsdk_config.h
+++ b/public/sample_ext/sdk/smsdk_config.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Sample Extension
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/sample_ext/sdk/smsdk_ext.cpp b/public/sample_ext/sdk/smsdk_ext.cpp
index 0c728f00..bf027ac5 100644
--- a/public/sample_ext/sdk/smsdk_ext.cpp
+++ b/public/sample_ext/sdk/smsdk_ext.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/sample_ext/sdk/smsdk_ext.h b/public/sample_ext/sdk/smsdk_ext.h
index 4702f2a2..0ee0dfa2 100644
--- a/public/sample_ext/sdk/smsdk_ext.h
+++ b/public/sample_ext/sdk/smsdk_ext.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod Base Extension Code
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/sm_platform.h b/public/sm_platform.h
index 2cc0e29f..50928e61 100644
--- a/public/sm_platform.h
+++ b/public/sm_platform.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/sm_trie_tpl.h b/public/sm_trie_tpl.h
index 5018c8a2..dce77f46 100644
--- a/public/sm_trie_tpl.h
+++ b/public/sm_trie_tpl.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/sourcepawn/sp_file_headers.h b/public/sourcepawn/sp_file_headers.h
index 5445f2f3..0ee3572f 100644
--- a/public/sourcepawn/sp_file_headers.h
+++ b/public/sourcepawn/sp_file_headers.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/sourcepawn/sp_typeutil.h b/public/sourcepawn/sp_typeutil.h
index 3796c5a5..78eb0f5a 100644
--- a/public/sourcepawn/sp_typeutil.h
+++ b/public/sourcepawn/sp_typeutil.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/sourcepawn/sp_vm_api.h b/public/sourcepawn/sp_vm_api.h
index 100dcaaa..8c780c43 100644
--- a/public/sourcepawn/sp_vm_api.h
+++ b/public/sourcepawn/sp_vm_api.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/sourcepawn/sp_vm_base.h b/public/sourcepawn/sp_vm_base.h
index 18ed778a..e94b18cb 100644
--- a/public/sourcepawn/sp_vm_base.h
+++ b/public/sourcepawn/sp_vm_base.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/public/sourcepawn/sp_vm_types.h b/public/sourcepawn/sp_vm_types.h
index 4b348a86..165fbcb4 100644
--- a/public/sourcepawn/sp_vm_types.h
+++ b/public/sourcepawn/sp_vm_types.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn
- * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This program is free software; you can redistribute it and/or modify it under
diff --git a/sourcepawn/compiler/Makefile b/sourcepawn/compiler/Makefile
index c7b7c1dd..8363fdfe 100644
--- a/sourcepawn/compiler/Makefile
+++ b/sourcepawn/compiler/Makefile
@@ -1,4 +1,4 @@
-#(C)2004-2007 SourceMod Development Team
+#(C)2004-2008 SourceMod Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 SMSDK = ../..
diff --git a/sourcepawn/compiler/sc1.c b/sourcepawn/compiler/sc1.c
index 75828758..f6e5bb26 100644
--- a/sourcepawn/compiler/sc1.c
+++ b/sourcepawn/compiler/sc1.c
@@ -1191,7 +1191,7 @@ static void setconfig(char *root)
 static void setcaption(void)
 {
   pc_printf("SourcePawn Compiler " SVN_FULL_VERSION "\n");
-  pc_printf("Copyright (c) 1997-2006, ITB CompuPhase, (C)2004-2007 AlliedModders, LLC\n\n");
+  pc_printf("Copyright (c) 1997-2006, ITB CompuPhase, (C)2004-2008 AlliedModders, LLC\n\n");
 }
 
 static void about(void)
diff --git a/sourcepawn/compiler/svn_version.h b/sourcepawn/compiler/svn_version.h
index bd964324..b14e45ce 100644
--- a/sourcepawn/compiler/svn_version.h
+++ b/sourcepawn/compiler/svn_version.h
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * ===============================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * ===============================================================
  *
  * This file is not open source and may not be copied without explicit
diff --git a/sourcepawn/compiler/svn_version.tpl b/sourcepawn/compiler/svn_version.tpl
index a0947f6d..fab83d15 100644
--- a/sourcepawn/compiler/svn_version.tpl
+++ b/sourcepawn/compiler/svn_version.tpl
@@ -1,7 +1,7 @@
 /**
  * vim: set ts=4 :
  * ===============================================================
- * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * ===============================================================
  *
  * This file is not open source and may not be copied without explicit
diff --git a/sourcepawn/jit/x86/Makefile b/sourcepawn/jit/x86/Makefile
index d6bd4873..9ba72d91 100644
--- a/sourcepawn/jit/x86/Makefile
+++ b/sourcepawn/jit/x86/Makefile
@@ -1,4 +1,4 @@
-#(C)2004-2006 SourceMM Development Team
+#(C)2004-2008 Metamod:Source Development Team
 # Makefile written by David "BAILOPAN" Anderson
 
 SRCDS = ~/srcds
diff --git a/sourcepawn/jit/x86/dll_exports.cpp b/sourcepawn/jit/x86/dll_exports.cpp
index c69666c1..01462553 100644
--- a/sourcepawn/jit/x86/dll_exports.cpp
+++ b/sourcepawn/jit/x86/dll_exports.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT
- * Copyright (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is not open source and may not be copied without explicit wriiten
diff --git a/sourcepawn/jit/x86/dll_exports.h b/sourcepawn/jit/x86/dll_exports.h
index 61475988..f72cbe33 100644
--- a/sourcepawn/jit/x86/dll_exports.h
+++ b/sourcepawn/jit/x86/dll_exports.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT
- * Copyright (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is not open source and may not be copied without explicit wriiten
diff --git a/sourcepawn/jit/x86/jit_version.h b/sourcepawn/jit/x86/jit_version.h
index 525849a2..f71e054c 100644
--- a/sourcepawn/jit/x86/jit_version.h
+++ b/sourcepawn/jit/x86/jit_version.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT
- * Copyright (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is not open source and may not be copied without explicit wriiten
diff --git a/sourcepawn/jit/x86/jit_version.tpl b/sourcepawn/jit/x86/jit_version.tpl
index 8f087fb3..ec873f89 100644
--- a/sourcepawn/jit/x86/jit_version.tpl
+++ b/sourcepawn/jit/x86/jit_version.tpl
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT
- * Copyright (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is not open source and may not be copied without explicit wriiten
diff --git a/sourcepawn/jit/x86/jit_x86.cpp b/sourcepawn/jit/x86/jit_x86.cpp
index 23e9a22c..9b2f24cb 100644
--- a/sourcepawn/jit/x86/jit_x86.cpp
+++ b/sourcepawn/jit/x86/jit_x86.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT
- * Copyright (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is not open source and may not be copied without explicit wriiten
diff --git a/sourcepawn/jit/x86/jit_x86.h b/sourcepawn/jit/x86/jit_x86.h
index a1d9dc0b..aade883d 100644
--- a/sourcepawn/jit/x86/jit_x86.h
+++ b/sourcepawn/jit/x86/jit_x86.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT
- * Copyright (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is not open source and may not be copied without explicit wriiten
diff --git a/sourcepawn/jit/x86/opcode_helpers.cpp b/sourcepawn/jit/x86/opcode_helpers.cpp
index 55cbfe0a..079e23aa 100644
--- a/sourcepawn/jit/x86/opcode_helpers.cpp
+++ b/sourcepawn/jit/x86/opcode_helpers.cpp
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT
- * Copyright (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is not open source and may not be copied without explicit wriiten
diff --git a/sourcepawn/jit/x86/opcode_helpers.h b/sourcepawn/jit/x86/opcode_helpers.h
index c7bb2c75..a3d48148 100644
--- a/sourcepawn/jit/x86/opcode_helpers.h
+++ b/sourcepawn/jit/x86/opcode_helpers.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT
- * Copyright (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is not open source and may not be copied without explicit wriiten
diff --git a/sourcepawn/jit/x86/opcode_switch.inc b/sourcepawn/jit/x86/opcode_switch.inc
index e62c5791..eda57a91 100644
--- a/sourcepawn/jit/x86/opcode_switch.inc
+++ b/sourcepawn/jit/x86/opcode_switch.inc
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT
- * Copyright (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is not open source and may not be copied without explicit wriiten
diff --git a/sourcepawn/jit/x86/ungen_opcode_switch.inc b/sourcepawn/jit/x86/ungen_opcode_switch.inc
index 4e9c8102..b6f11b68 100644
--- a/sourcepawn/jit/x86/ungen_opcode_switch.inc
+++ b/sourcepawn/jit/x86/ungen_opcode_switch.inc
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT
- * Copyright (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is not open source and may not be copied without explicit wriiten
diff --git a/sourcepawn/jit/x86/ungen_opcodes.h b/sourcepawn/jit/x86/ungen_opcodes.h
index 7cb0181d..20810474 100644
--- a/sourcepawn/jit/x86/ungen_opcodes.h
+++ b/sourcepawn/jit/x86/ungen_opcodes.h
@@ -2,7 +2,7 @@
  * vim: set ts=4 :
  * =============================================================================
  * SourcePawn JIT
- * Copyright (C)2004-2007 AlliedModders LLC.  All rights reserved.
+ * Copyright (C)2004-2008 AlliedModders LLC.  All rights reserved.
  * =============================================================================
  *
  * This file is not open source and may not be copied without explicit wriiten
diff --git a/sourcepawn/jit/x86/version.rc b/sourcepawn/jit/x86/version.rc
index 60a7087f..5aa4d331 100644
--- a/sourcepawn/jit/x86/version.rc
+++ b/sourcepawn/jit/x86/version.rc
@@ -48,7 +48,7 @@ BEGIN
             VALUE "FileDescription", "SourcePawn JIT/Virtual Machine"
             VALUE "FileVersion", SVN_FULL_VERSION
             VALUE "InternalName", "sourcemod"
-            VALUE "LegalCopyright", "Copyright (c) 2004-2007, AlliedModders LLC"
+            VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC"
             VALUE "OriginalFilename", "sourcepawn.jit.x86.dll"
             VALUE "ProductName", "SourcePawn JIT"
             VALUE "ProductVersion", SVN_FULL_VERSION

From a3d5a0151d8f44e9708128075fcd17a0197dda4c Mon Sep 17 00:00:00 2001
From: Scott Ehlert <ds@alliedmods.net>
Date: Thu, 27 Mar 2008 05:02:00 +0000
Subject: [PATCH 261/263] Err, these got added accidentally apparently. Thanks
 a lot TSVN.

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401965
---
 plugins/compile.exe | Bin 113664 -> 0 bytes
 plugins/spcomp.exe  | Bin 315392 -> 0 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 plugins/compile.exe
 delete mode 100644 plugins/spcomp.exe

diff --git a/plugins/compile.exe b/plugins/compile.exe
deleted file mode 100644
index 5cfa71745a0f2c074e28f28bfd3da9f0678ed30d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 113664
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

diff --git a/plugins/spcomp.exe b/plugins/spcomp.exe
deleted file mode 100644
index bd3a7118228c50550ca431ee74bfde5b537ad314..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 315392
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
D(_s}o


From 33b2847ec311222136df9b513ede2d067974033e Mon Sep 17 00:00:00 2001
From: Scott Ehlert <ds@alliedmods.net>
Date: Fri, 28 Mar 2008 04:51:53 +0000
Subject: [PATCH 262/263] Added scripting/adminmenu directory to build tool

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401968
---
 tools/builder/PkgCore.cs | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/builder/PkgCore.cs b/tools/builder/PkgCore.cs
index e0d3a9c3..e0f5439b 100644
--- a/tools/builder/PkgCore.cs
+++ b/tools/builder/PkgCore.cs
@@ -51,6 +51,7 @@ namespace builder
 			folders.Add("addons/sourcemod/data");
 			folders.Add("addons/sourcemod/scripting/include");
 			folders.Add("addons/sourcemod/scripting/admin-flatfile");
+			folders.Add("addons/sourcemod/scripting/adminmenu");
 			folders.Add("addons/sourcemod/scripting/testsuite");
 			folders.Add("cfg/sourcemod");
 			folders.Add("addons/sourcemod/configs/sql-init-scripts");
@@ -114,6 +115,7 @@ namespace builder
 			builder.CopyFolder(this, "translations", "addons/sourcemod/translations", null);
 			builder.CopyFolder(this, "public/licenses", "addons/sourcemod", null);
 			builder.CopyFolder(this, "plugins/admin-flatfile", "addons/sourcemod/scripting/admin-flatfile", null);
+			builder.CopyFolder(this, "plugins/adminmenu", "addons/sourcemod/scripting/adminmenu", null);
 			builder.CopyFolder(this, "plugins/testsuite", "addons/sourcemod/scripting/testsuite", null);
 			builder.CopyFolder(this, "plugins/basecommands", "addons/sourcemod/scripting/basecommands", null);
 			builder.CopyFolder(this, "plugins/basecomm", "addons/sourcemod/scripting/basecomm", null);

From 3a14544385f3a87189d3a44e86746effb83f3b64 Mon Sep 17 00:00:00 2001
From: Scott Ehlert <ds@alliedmods.net>
Date: Fri, 28 Mar 2008 06:18:26 +0000
Subject: [PATCH 263/263] Changed env var used in include paths: SOURCEMM ->
 SORCEMM16 Changed env var used in include paths: SOURCEMM142 -> SORCEMM14
 Removed some unneccessary build configuartations in some project files

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401969
---
 extensions/cstrike/msvc8/cstrike.vcproj   | 160 -------
 extensions/mysql/msvc8/sm_mysql.vcproj    |   4 +-
 extensions/sdktools/msvc8/sdktools.vcproj | 210 ++--------
 extensions/sqlite/msvc8/sm_sqlite.vcproj  |   4 +-
 extensions/tf2/msvc8/tf2.sln              |  12 -
 extensions/tf2/msvc8/tf2.vcproj           | 490 +---------------------
 extensions/topmenus/msvc8/topmenus.vcproj |   4 +-
 7 files changed, 34 insertions(+), 850 deletions(-)

diff --git a/extensions/cstrike/msvc8/cstrike.vcproj b/extensions/cstrike/msvc8/cstrike.vcproj
index 8821c1ee..6aa76a40 100644
--- a/extensions/cstrike/msvc8/cstrike.vcproj
+++ b/extensions/cstrike/msvc8/cstrike.vcproj
@@ -15,166 +15,6 @@
 	<ToolFiles>
 	</ToolFiles>
 	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				EnableEnhancedInstructionSet="1"
-				RuntimeTypeInfo="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tier0.lib"
-				OutputFile="$(OutDir)\game.cstrike.ext.dll"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
-				RuntimeLibrary="0"
-				EnableEnhancedInstructionSet="1"
-				RuntimeTypeInfo="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\game.cstrike.ext.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
 		<Configuration
 			Name="Debug - Episode1|Win32"
 			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
diff --git a/extensions/mysql/msvc8/sm_mysql.vcproj b/extensions/mysql/msvc8/sm_mysql.vcproj
index 67a32d4a..dac43eaf 100644
--- a/extensions/mysql/msvc8/sm_mysql.vcproj
+++ b/extensions/mysql/msvc8/sm_mysql.vcproj
@@ -40,7 +40,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -123,7 +123,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				RuntimeLibrary="0"
 				StructMemberAlignment="3"
diff --git a/extensions/sdktools/msvc8/sdktools.vcproj b/extensions/sdktools/msvc8/sdktools.vcproj
index bc11f13a..630e9895 100644
--- a/extensions/sdktools/msvc8/sdktools.vcproj
+++ b/extensions/sdktools/msvc8/sdktools.vcproj
@@ -15,168 +15,6 @@
 	<ToolFiles>
 	</ToolFiles>
 	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\extensions;..\..\..\public\sourcepawn"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				EnableEnhancedInstructionSet="1"
-				RuntimeTypeInfo="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="vstdlib.lib tier0.lib tier1.lib mathlib.lib"
-				OutputFile="$(OutDir)\sdktools.ext.dll"
-				LinkIncremental="2"
-				IgnoreDefaultLibraryNames="LIBCMT"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\extensions;..\..\..\public\sourcepawn"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
-				RuntimeLibrary="0"
-				EnableEnhancedInstructionSet="1"
-				RuntimeTypeInfo="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="vstdlib.lib tier0.lib tier1.lib mathlib.lib"
-				OutputFile="$(OutDir)\sdktools.ext.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
 		<Configuration
 			Name="Debug - Orange Box|Win32"
 			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
@@ -202,7 +40,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\dlls&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\common&quot;"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\extensions;..\..\..\public\sourcepawn;&quot;$(HL2SDKOB)\common&quot;;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;ORANGEBOX_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -283,7 +121,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\extensions;..\..\..\public\sourcepawn;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -364,7 +202,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM14)&quot;;&quot;$(SOURCEMM14)\sourcemm&quot;;&quot;$(SOURCEMM14)\sourcehook&quot;"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\extensions;..\..\..\public\sourcepawn;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM14)&quot;;&quot;$(SOURCEMM14)\sourcemm&quot;;&quot;$(SOURCEMM14)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -446,7 +284,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\dlls&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(HL2SDKOB)\public\vstdlib&quot;;&quot;$(HL2SDKOB)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\common&quot;"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\extensions;..\..\..\public\sourcepawn;&quot;$(HL2SDKOB)\common&quot;;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;ORANGEBOX_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"
@@ -527,7 +365,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\extensions;..\..\..\public\sourcepawn;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"
@@ -608,7 +446,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\public\vstdlib&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM14)&quot;;&quot;$(SOURCEMM14)\sourcemm&quot;;&quot;$(SOURCEMM14)\sourcehook&quot;"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\extensions;..\..\..\public\sourcepawn;&quot;$(HL2SDK)\public&quot;;&quot;$(HL2SDK)\public\dlls&quot;;&quot;$(HL2SDK)\public\engine&quot;;&quot;$(HL2SDK)\public\tier0&quot;;&quot;$(HL2SDK)\public\tier1&quot;;&quot;$(HL2SDK)\tier1&quot;;&quot;$(SOURCEMM14)&quot;;&quot;$(SOURCEMM14)\sourcemm&quot;;&quot;$(SOURCEMM14)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"
@@ -796,24 +634,6 @@
 			<File
 				RelativePath="..\sdk\smsdk_ext.cpp"
 				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\$(InputName)1.obj"
-						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\$(InputName)1.obj"
-						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
-					/>
-				</FileConfiguration>
 				<FileConfiguration
 					Name="Debug - Orange Box|Win32"
 					>
@@ -868,6 +688,24 @@
 						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
 					/>
 				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						ObjectFile="$(IntDir)\$(InputName)1.obj"
+						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						ObjectFile="$(IntDir)\$(InputName)1.obj"
+						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+					/>
+				</FileConfiguration>
 			</File>
 			<File
 				RelativePath="..\sdk\smsdk_ext.h"
diff --git a/extensions/sqlite/msvc8/sm_sqlite.vcproj b/extensions/sqlite/msvc8/sm_sqlite.vcproj
index 8d9eb24f..f399dbc4 100644
--- a/extensions/sqlite/msvc8/sm_sqlite.vcproj
+++ b/extensions/sqlite/msvc8/sm_sqlite.vcproj
@@ -40,7 +40,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;THREADSAFE;SQLITE_OMIT_LOAD_EXTENSION"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -120,7 +120,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD;SQLITE_THREADSAFE;SQLITE_OMIT_LOAD_EXTENSION;_WIN32_WINNT=0x0400"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"
diff --git a/extensions/tf2/msvc8/tf2.sln b/extensions/tf2/msvc8/tf2.sln
index 5aa5277e..02dbd658 100644
--- a/extensions/tf2/msvc8/tf2.sln
+++ b/extensions/tf2/msvc8/tf2.sln
@@ -5,24 +5,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tf2", "tf2.vcproj", "{B3E79
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug - Episode1|Win32 = Debug - Episode1|Win32
-		Debug - Old Metamod|Win32 = Debug - Old Metamod|Win32
 		Debug - Orange Box|Win32 = Debug - Orange Box|Win32
-		Release - Episode 1|Win32 = Release - Episode 1|Win32
-		Release - Old Metamod|Win32 = Release - Old Metamod|Win32
 		Release - Orange Box|Win32 = Release - Orange Box|Win32
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Episode1|Win32.ActiveCfg = Debug - Episode1|Win32
-		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Episode1|Win32.Build.0 = Debug - Episode1|Win32
-		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Old Metamod|Win32.ActiveCfg = Debug - Old Metamod|Win32
-		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Old Metamod|Win32.Build.0 = Debug - Old Metamod|Win32
 		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Orange Box|Win32.ActiveCfg = Debug - Orange Box|Win32
 		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Debug - Orange Box|Win32.Build.0 = Debug - Orange Box|Win32
-		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Episode 1|Win32.ActiveCfg = Release - Episode 1|Win32
-		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Episode 1|Win32.Build.0 = Release - Episode 1|Win32
-		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Old Metamod|Win32.ActiveCfg = Release - Old Metamod|Win32
-		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Old Metamod|Win32.Build.0 = Release - Old Metamod|Win32
 		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Orange Box|Win32.ActiveCfg = Release - Orange Box|Win32
 		{B3E797CF-4E77-4C9D-B8A8-7589B6902206}.Release - Orange Box|Win32.Build.0 = Release - Orange Box|Win32
 	EndGlobalSection
diff --git a/extensions/tf2/msvc8/tf2.vcproj b/extensions/tf2/msvc8/tf2.vcproj
index 67172d95..3f28568f 100644
--- a/extensions/tf2/msvc8/tf2.vcproj
+++ b/extensions/tf2/msvc8/tf2.vcproj
@@ -15,246 +15,6 @@
 	<ToolFiles>
 	</ToolFiles>
 	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				EnableEnhancedInstructionSet="1"
-				RuntimeTypeInfo="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tier0.lib"
-				OutputFile="$(OutDir)\game.tf2.ext.dll"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
-				RuntimeLibrary="0"
-				EnableEnhancedInstructionSet="1"
-				RuntimeTypeInfo="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\game.tf2.ext.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug - Episode1|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				EnableEnhancedInstructionSet="1"
-				RuntimeTypeInfo="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
-				OutputFile="$(OutDir)\game.tf2.ext.dll"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
 		<Configuration
 			Name="Debug - Orange Box|Win32"
 			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
@@ -280,7 +40,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\extensions;..\..\..\public\sourcepawn;&quot;$(HL2SDKOB)\common&quot;;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -303,7 +63,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDKOB)\lib\public\tier0.lib $(HL2SDKOB)\lib\public\tier1.lib $(HL2SDKOB)\lib\public\vstdlib.lib $(HL2SDKOB)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDKOB)\lib\public\tier0.lib&quot; &quot;$(HL2SDKOB)\lib\public\tier1.lib&quot; &quot;$(HL2SDKOB)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDKOB)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\game.tf2.ext.dll"
 				LinkIncremental="2"
 				GenerateDebugInformation="true"
@@ -335,167 +95,6 @@
 				Name="VCPostBuildEventTool"
 			/>
 		</Configuration>
-		<Configuration
-			Name="Debug - Old Metamod|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				EnableEnhancedInstructionSet="1"
-				RuntimeTypeInfo="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
-				OutputFile="$(OutDir)\game.tf2.ext.dll"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release - Old Metamod|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM142);$(SOURCEMM142)\sourcemm;$(SOURCEMM142)\sourcehook"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
-				RuntimeLibrary="0"
-				EnableEnhancedInstructionSet="1"
-				RuntimeTypeInfo="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
-				OutputFile="$(OutDir)\game.tf2.ext.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
 		<Configuration
 			Name="Release - Orange Box|Win32"
 			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
@@ -522,7 +121,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDKOB)\public;$(HL2SDKOB)\public\dlls;$(HL2SDKOB)\public\engine;$(HL2SDKOB)\public\tier0;$(HL2SDKOB)\public\tier1;$(HL2SDKOB)\public\vstdlib;$(HL2SDKOB)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\extensions;..\..\..\public\sourcepawn;&quot;$(HL2SDKOB)\common&quot;;&quot;$(HL2SDKOB)\public&quot;;&quot;$(HL2SDKOB)\public\engine&quot;;&quot;$(HL2SDKOB)\public\game\server&quot;;&quot;$(HL2SDKOB)\public\tier0&quot;;&quot;$(HL2SDKOB)\public\tier1&quot;;&quot;$(SOURCEMM16)&quot;;&quot;$(SOURCEMM16)\sourcemm&quot;;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				RuntimeLibrary="0"
 				EnableEnhancedInstructionSet="1"
@@ -543,88 +142,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDKOB)\lib\public\tier0.lib $(HL2SDKOB)\lib\public\tier1.lib $(HL2SDKOB)\lib\public\vstdlib.lib $(HL2SDKOB)\lib\public\mathlib.lib"
-				OutputFile="$(OutDir)\game.tf2.ext.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release - Episode 1|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(HL2SDK)\public;$(HL2SDK)\public\dlls;$(HL2SDK)\public\engine;$(HL2SDK)\public\tier0;$(HL2SDK)\public\tier1;$(HL2SDK)\public\vstdlib;$(HL2SDK)\tier1;$(SOURCEMM);$(SOURCEMM)\sourcemm;$(SOURCEMM)\sourcehook"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CSTRIKE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
-				RuntimeLibrary="0"
-				EnableEnhancedInstructionSet="1"
-				RuntimeTypeInfo="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="$(HL2SDK)\lib\public\tier0.lib $(HL2SDK)\lib\public\tier1.lib $(HL2SDK)\lib\public\vstdlib.lib $(HL2SDK)\lib\public\mathlib.lib"
+				AdditionalDependencies="&quot;$(HL2SDKOB)\lib\public\tier0.lib&quot; &quot;$(HL2SDKOB)\lib\public\tier1.lib&quot; &quot;$(HL2SDKOB)\lib\public\vstdlib.lib&quot; &quot;$(HL2SDKOB)\lib\public\mathlib.lib&quot;"
 				OutputFile="$(OutDir)\game.tf2.ext.dll"
 				LinkIncremental="1"
 				GenerateDebugInformation="true"
diff --git a/extensions/topmenus/msvc8/topmenus.vcproj b/extensions/topmenus/msvc8/topmenus.vcproj
index a585fa55..459b5675 100644
--- a/extensions/topmenus/msvc8/topmenus.vcproj
+++ b/extensions/topmenus/msvc8/topmenus.vcproj
@@ -40,7 +40,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\extensions;..\..\..\public\sourcepawn;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -118,7 +118,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\sourcepawn;..\..\..\public\extensions;$(SOURCEMM)\sourcehook"
+				AdditionalIncludeDirectories="..;..\sdk;..\..\..\public;..\..\..\public\extensions;..\..\..\public\sourcepawn;&quot;$(SOURCEMM16)\sourcehook&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SDK_EXPORTS;_CRT_SECURE_NO_DEPRECATE;SOURCEMOD_BUILD"
 				RuntimeLibrary="0"
 				RuntimeTypeInfo="false"