From 569a53182ca78af957aca8c6f07cd0e3170f8126 Mon Sep 17 00:00:00 2001
From: Ross Bemrose <rbemrose@gmail.com>
Date: Mon, 24 Aug 2015 17:03:47 -0400
Subject: [PATCH] Allow sm_SetConVarString, sm_SetConVarFloat, and
 sm_SetConVarNum treat notify and replicate as non-existent. Remove special
 functions for BoolValue, IntValue, and FloatValue.

---
 core/smn_console.cpp | 57 +++++++-------------------------------------
 1 file changed, 9 insertions(+), 48 deletions(-)

diff --git a/core/smn_console.cpp b/core/smn_console.cpp
index f5467e57..bded8575 100644
--- a/core/smn_console.cpp
+++ b/core/smn_console.cpp
@@ -361,13 +361,13 @@ static cell_t sm_SetConVarNum(IPluginContext *pContext, const cell_t *params)
 
 #if SOURCE_ENGINE < SE_ORANGEBOX
 	/* Should we replicate it? */
-	if (params[3] && IsFlagSet(pConVar, FCVAR_REPLICATED))
+	if (params[0] >= 3 && params[3] && IsFlagSet(pConVar, FCVAR_REPLICATED))
 	{
 		ReplicateConVar(pConVar);
 	}
 
 	/* Should we notify clients? */
-	if (params[4] && IsFlagSet(pConVar, FCVAR_NOTIFY))
+	if (params[0] >= 4 && params[4] && IsFlagSet(pConVar, FCVAR_NOTIFY))
 	{
 		NotifyConVar(pConVar);
 	}
@@ -410,13 +410,13 @@ static cell_t sm_SetConVarFloat(IPluginContext *pContext, const cell_t *params)
 
 #if SOURCE_ENGINE < SE_ORANGEBOX
 	/* Should we replicate it? */
-	if (params[3] && IsFlagSet(pConVar, FCVAR_REPLICATED))
+	if (params[0] >= 3 && params[3] && IsFlagSet(pConVar, FCVAR_REPLICATED))
 	{
 		ReplicateConVar(pConVar);
 	}
 
 	/* Should we notify clients? */
-	if (params[4] && IsFlagSet(pConVar, FCVAR_NOTIFY))
+	if (params[0] >= 4 && params[4] && IsFlagSet(pConVar, FCVAR_NOTIFY))
 	{
 		NotifyConVar(pConVar);
 	}
@@ -461,13 +461,13 @@ static cell_t sm_SetConVarString(IPluginContext *pContext, const cell_t *params)
 
 #if SOURCE_ENGINE < SE_ORANGEBOX
 	/* Should we replicate it? */
-	if (params[3] && IsFlagSet(pConVar, FCVAR_REPLICATED))
+	if (params[0] >= 3 && params[3] && IsFlagSet(pConVar, FCVAR_REPLICATED))
 	{
 		ReplicateConVar(pConVar);
 	}
 
 	/* Should we notify clients? */
-	if (params[4] && IsFlagSet(pConVar, FCVAR_NOTIFY))
+	if (params[0] >= 4 && params[4] && IsFlagSet(pConVar, FCVAR_NOTIFY))
 	{
 		NotifyConVar(pConVar);
 	}
@@ -1240,45 +1240,6 @@ static cell_t RemoveCommandListener(IPluginContext *pContext, const cell_t *para
 	return 1;
 }
 
-static cell_t ConVar_BoolValue_set(IPluginContext *pContext, const cell_t *params)
-{
-	static cell_t new_params[5] = {
-		4,
-		params[1],
-		params[2],
-		0, /* Default replicate setting. */
-		0, /* Default replicate setting. */
-	};
-
-	return sm_SetConVarNum(pContext, new_params);
-}
-
-static cell_t ConVar_IntValue_set(IPluginContext *pContext, const cell_t *params)
-{
-	static cell_t new_params[5] = {
-		4,
-		params[1],
-		params[2],
-		0, /* Default replicate setting. */
-		0, /* Default replicate setting. */
-	};
-
-	return sm_SetConVarNum(pContext, new_params);
-}
-
-static cell_t ConVar_FloatValue_set(IPluginContext *pContext, const cell_t *params)
-{
-	static cell_t new_params[5] = {
-		4,
-		params[1],
-		params[2],
-		0, /* Default replicate setting. */
-		0, /* Default replicate setting. */
-	};
-
-	return sm_SetConVarFloat(pContext, new_params);
-}
-
 static cell_t ConVar_ReplicateToClient(IPluginContext *pContext, const cell_t *params)
 {
 	// Old version is (client, handle, value).
@@ -1381,11 +1342,11 @@ REGISTER_NATIVES(consoleNatives)
 
 	// Transitional syntax support.
 	{"ConVar.BoolValue.get",	sm_GetConVarBool},
-	{"ConVar.BoolValue.set",	ConVar_BoolValue_set},
+	{"ConVar.BoolValue.set",	sm_SetConVarNum},
 	{"ConVar.FloatValue.get",	sm_GetConVarFloat},
-	{"ConVar.FloatValue.set",	ConVar_FloatValue_set},
+	{"ConVar.FloatValue.set",	sm_SetConVarFloat},
 	{"ConVar.IntValue.get",		sm_GetConVarInt},
-	{"ConVar.IntValue.set",		ConVar_IntValue_set},
+	{"ConVar.IntValue.set",		sm_SetConVarNum},
 	{"ConVar.Flags.get",		sm_GetConVarFlags},
 	{"ConVar.Flags.set",		sm_SetConVarFlags},
 	{"ConVar.SetBool",			sm_SetConVarNum},