Move funcommands material and sound defs to gamedata (bug 6085, r=asherkin).
authorNicholas Hastings <skamonkey@gmail.com>
Sat Mar 29 15:07:07 2014 -0400 (2014-03-29)
changeset 4310896868764315
parent 4309 1808879e4e73
child 4311 4a8a6eba08f8
Move funcommands material and sound defs to gamedata (bug 6085, r=asherkin).
gamedata/funcommands.games.txt
plugins/funcommands.sp
plugins/funcommands/beacon.sp
plugins/funcommands/fire.sp
plugins/funcommands/ice.sp
plugins/funcommands/timebomb.sp
tools/buildbot/PackageScript
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/gamedata/funcommands.games.txt	Sat Mar 29 15:07:07 2014 -0400
     1.3 @@ -0,0 +1,74 @@
     1.4 +"Games"
     1.5 +{
     1.6 +	"#default"
     1.7 +	{
     1.8 +		"Keys"
     1.9 +		{
    1.10 +			"SpriteBeam"		"sprites/laser.vmt"
    1.11 +			"SpriteBeam2"		"sprites/bluelight1.vmt"
    1.12 +			"SpriteExplosion"	"sprites/sprite_fire01.vmt"
    1.13 +			"SpriteGlow"		"sprites/blueglow2.vmt"
    1.14 +			"SpriteHalo"		"sprites/halo01.vmt"
    1.15 +			
    1.16 +			"SoundBlip"		"buttons/blip1.wav"
    1.17 +			"SoundBeep"		"buttons/button17.wav"
    1.18 +			"SoundFinal"	"weapons/cguard/charging.wav"
    1.19 +			"SoundBoom"		"weapons/explode3.wav"
    1.20 +			"SoundFreeze"	"physics/glass/glass_impact_bullet4.wav"
    1.21 +		}
    1.22 +	}
    1.23 +	
    1.24 +	"csgo"
    1.25 +	{
    1.26 +		"Keys"
    1.27 +		{
    1.28 +			"SpriteBeam"		"sprites/laserbeam.vmt"
    1.29 +			"SpriteBeam2"		"sprites/physbeam.vmt"
    1.30 +			"SpriteExplosion"	""
    1.31 +			"SpriteGlow"		"sprites/blueflare1.vmt"
    1.32 +			"SpriteHalo"		"sprites/glow01.vmt"
    1.33 +		}
    1.34 +	}
    1.35 +	
    1.36 +	"$INSURGENCY" // Standalone game
    1.37 +	{
    1.38 +		"Keys"
    1.39 +		{
    1.40 +			"SpriteBeam"		"sprites/laserbeam.vmt"
    1.41 +			"SpriteBeam2"		""
    1.42 +			"SpriteExplosion"	"sprites/sprite_fire01.vmt"
    1.43 +			"SpriteGlow"		""
    1.44 +			"SpriteHalo"		"sprites/glow01.vmt"
    1.45 +		}
    1.46 +	}
    1.47 +	
    1.48 +	"swarm"
    1.49 +	{
    1.50 +		"Keys"
    1.51 +		{
    1.52 +			"SpriteBeam"		"sprites/laserbeam.vmt"
    1.53 +			"SpriteBeam2"		""
    1.54 +			"SpriteExplosion"	"sprites/flamelet1.vmt"
    1.55 +			"SpriteGlow"		"sprites/blueflare1.vmt"
    1.56 +			"SpriteHalo"		"sprites/glow01.vmt"
    1.57 +		}
    1.58 +	}
    1.59 +	
    1.60 +	"#default"
    1.61 +	{
    1.62 +		"#supported"
    1.63 +		{
    1.64 +			"game"	"left4dead"
    1.65 +			"game"	"left4dead2"
    1.66 +		}
    1.67 +		
    1.68 +		"Keys"
    1.69 +		{
    1.70 +			"SpriteBeam"		"sprites/laserbeam.vmt"
    1.71 +			"SpriteBeam2"		"sprites/physbeam.vmt"
    1.72 +			"SpriteExplosion"	"sprites/floorfire4_.vmt"
    1.73 +			"SpriteGlow"		"sprites/blueflare1.vmt"
    1.74 +			"SpriteHalo"		"sprites/glow01.vmt"
    1.75 +		}
    1.76 +	}
    1.77 +}
    1.78 \ No newline at end of file
     2.1 --- a/plugins/funcommands.sp	Sun Mar 30 14:07:14 2014 -0400
     2.2 +++ b/plugins/funcommands.sp	Sat Mar 29 15:07:07 2014 -0400
     2.3 @@ -51,11 +51,11 @@
     2.4  new Handle:hTopMenu = INVALID_HANDLE;
     2.5  
     2.6  // Sounds
     2.7 -#define SOUND_BLIP		"buttons/blip1.wav"
     2.8 -#define SOUND_BEEP		"buttons/button17.wav"
     2.9 -#define SOUND_FINAL		"weapons/cguard/charging.wav"
    2.10 -#define SOUND_BOOM		"weapons/explode3.wav"
    2.11 -#define SOUND_FREEZE	"physics/glass/glass_impact_bullet4.wav"
    2.12 +new String:g_BlipSound[PLATFORM_MAX_PATH];
    2.13 +new String:g_BeepSound[PLATFORM_MAX_PATH];
    2.14 +new String:g_FinalSound[PLATFORM_MAX_PATH];
    2.15 +new String:g_BoomSound[PLATFORM_MAX_PATH];
    2.16 +new String:g_FreezeSound[PLATFORM_MAX_PATH];
    2.17  
    2.18  // Following are model indexes for temp entities
    2.19  new g_BeamSprite        = -1;
    2.20 @@ -179,45 +179,65 @@
    2.21  
    2.22  public OnMapStart()
    2.23  {
    2.24 -	PrecacheSound(SOUND_BLIP, true);
    2.25 -	PrecacheSound(SOUND_BEEP, true);
    2.26 -	PrecacheSound(SOUND_FINAL, true);
    2.27 -	PrecacheSound(SOUND_BOOM, true);
    2.28 -	PrecacheSound(SOUND_FREEZE, true);
    2.29 -
    2.30 -	new EngineVersion:sdkversion = GetEngineVersion();
    2.31 -	if (sdkversion == Engine_Left4Dead || sdkversion == Engine_Left4Dead2
    2.32 -		 || sdkversion == Engine_AlienSwarm || sdkversion == Engine_CSGO)
    2.33 +	new Handle:gameConfig = LoadGameConfigFile("funcommands.games");
    2.34 +	if (gameConfig == INVALID_HANDLE)
    2.35 +	{
    2.36 +		SetFailState("Unable to load game config funcommands.games");
    2.37 +		return;
    2.38 +	}
    2.39 +	
    2.40 +	if (GameConfGetKeyValue(gameConfig, "SoundBlip", g_BlipSound, sizeof(g_BlipSound)) && g_BlipSound[0])
    2.41  	{
    2.42 -		g_BeamSprite = PrecacheModel("materials/sprites/laserbeam.vmt");
    2.43 -		g_HaloSprite = PrecacheModel("materials/sprites/glow01.vmt");
    2.44 -		
    2.45 -		// l4d, l4d2, and csgo have this. swarm does not.
    2.46 -		if (sdkversion != Engine_AlienSwarm)
    2.47 -		{
    2.48 -			g_BeamSprite2 = PrecacheModel("materials/sprites/physbeam.vmt");
    2.49 -		}
    2.50 -		
    2.51 -		g_GlowSprite = PrecacheModel("materials/sprites/blueflare1.vmt");
    2.52 -		
    2.53 -		if (sdkversion == Engine_Left4Dead || sdkversion == Engine_Left4Dead2)
    2.54 -		{
    2.55 -			g_ExplosionSprite = PrecacheModel("sprites/floorfire4_.vmt");
    2.56 -		}
    2.57 -		else if (sdkversion == Engine_AlienSwarm)
    2.58 -		{
    2.59 -			g_ExplosionSprite = PrecacheModel("sprites/flamelet1.vmt");
    2.60 -		}
    2.61 +		PrecacheSound(g_BlipSound, true);
    2.62 +	}
    2.63 +	
    2.64 +	if (GameConfGetKeyValue(gameConfig, "SoundBeep", g_BeepSound, sizeof(g_BeepSound)) && g_BeepSound[0])
    2.65 +	{
    2.66 +		PrecacheSound(g_BeepSound, true);
    2.67  	}
    2.68 -	else
    2.69 +	
    2.70 +	if (GameConfGetKeyValue(gameConfig, "SoundFinal", g_FinalSound, sizeof(g_FinalSound)) && g_FinalSound[0])
    2.71  	{
    2.72 -		g_BeamSprite = PrecacheModel("materials/sprites/laser.vmt");
    2.73 -		g_HaloSprite = PrecacheModel("materials/sprites/halo01.vmt");
    2.74 -		g_BeamSprite2 = PrecacheModel("sprites/bluelight1.vmt");
    2.75 -		g_GlowSprite = PrecacheModel("sprites/blueglow2.vmt");
    2.76 -		g_ExplosionSprite = PrecacheModel("sprites/sprite_fire01.vmt");
    2.77 +		PrecacheSound(g_FinalSound, true);
    2.78 +	}
    2.79 +	
    2.80 +	if (GameConfGetKeyValue(gameConfig, "SoundBoom", g_BoomSound, sizeof(g_BoomSound)) && g_BoomSound[0])
    2.81 +	{
    2.82 +		PrecacheSound(g_BoomSound, true);
    2.83  	}
    2.84  	
    2.85 +	if (GameConfGetKeyValue(gameConfig, "SoundFreeze", g_FreezeSound, sizeof(g_FreezeSound)) && g_FreezeSound[0])
    2.86 +	{
    2.87 +		PrecacheSound(g_FreezeSound, true);
    2.88 +	}
    2.89 +	
    2.90 +	new String:buffer[PLATFORM_MAX_PATH];
    2.91 +	if (GameConfGetKeyValue(gameConfig, "SpriteBeam", buffer, sizeof(buffer)) && buffer[0])
    2.92 +	{
    2.93 +		g_BeamSprite = PrecacheModel(buffer);
    2.94 +	}
    2.95 +	
    2.96 +	if (GameConfGetKeyValue(gameConfig, "SpriteBeam2", buffer, sizeof(buffer)) && buffer[0])
    2.97 +	{
    2.98 +		g_BeamSprite2 = PrecacheModel(buffer);
    2.99 +	}
   2.100 +	
   2.101 +	if (GameConfGetKeyValue(gameConfig, "SpriteExplosion", buffer, sizeof(buffer)) && buffer[0])
   2.102 +	{
   2.103 +		g_ExplosionSprite = PrecacheModel(buffer);
   2.104 +	}
   2.105 +	
   2.106 +	if (GameConfGetKeyValue(gameConfig, "SpriteGlow", buffer, sizeof(buffer)) && buffer[0])
   2.107 +	{
   2.108 +		g_GlowSprite = PrecacheModel(buffer);
   2.109 +	}
   2.110 +	
   2.111 +	if (GameConfGetKeyValue(gameConfig, "SpriteHalo", buffer, sizeof(buffer)) && buffer[0])
   2.112 +	{
   2.113 +		g_HaloSprite = PrecacheModel(buffer);
   2.114 +	}
   2.115 +	
   2.116 +	CloseHandle(gameConfig);
   2.117  }
   2.118  
   2.119  public OnMapEnd()
     3.1 --- a/plugins/funcommands/beacon.sp	Sun Mar 30 14:07:14 2014 -0400
     3.2 +++ b/plugins/funcommands/beacon.sp	Sat Mar 29 15:07:07 2014 -0400
     3.3 @@ -91,27 +91,33 @@
     3.4  	new Float:vec[3];
     3.5  	GetClientAbsOrigin(client, vec);
     3.6  	vec[2] += 10;
     3.7 -
     3.8 -	TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_BeaconRadius), g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, greyColor, 10, 0);
     3.9 -	TE_SendToAll();
    3.10  	
    3.11 -	if (team == 2)
    3.12 +	if (g_BeamSprite > -1 && g_HaloSprite > -1)
    3.13  	{
    3.14 -		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_BeaconRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, redColor, 10, 0);
    3.15 -	}
    3.16 -	else if (team == 3)
    3.17 -	{
    3.18 -		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_BeaconRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, blueColor, 10, 0);
    3.19 -	}
    3.20 -	else
    3.21 -	{
    3.22 -		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_BeaconRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, greenColor, 10, 0);
    3.23 +		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_BeaconRadius), g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, greyColor, 10, 0);
    3.24 +		TE_SendToAll();
    3.25 +		
    3.26 +		if (team == 2)
    3.27 +		{
    3.28 +			TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_BeaconRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, redColor, 10, 0);
    3.29 +		}
    3.30 +		else if (team == 3)
    3.31 +		{
    3.32 +			TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_BeaconRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, blueColor, 10, 0);
    3.33 +		}
    3.34 +		else
    3.35 +		{
    3.36 +			TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_BeaconRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, greenColor, 10, 0);
    3.37 +		}
    3.38 +		
    3.39 +		TE_SendToAll();
    3.40  	}
    3.41  	
    3.42 -	TE_SendToAll();
    3.43 -		
    3.44 -	GetClientEyePosition(client, vec);
    3.45 -	EmitAmbientSound(SOUND_BLIP, vec, client, SNDLEVEL_RAIDSIREN);	
    3.46 +	if (g_BlipSound[0])
    3.47 +	{
    3.48 +		GetClientEyePosition(client, vec);
    3.49 +		EmitAmbientSound(g_BlipSound, vec, client, SNDLEVEL_RAIDSIREN);	
    3.50 +	}
    3.51  		
    3.52  	return Plugin_Continue;
    3.53  }
     4.1 --- a/plugins/funcommands/fire.sp	Sun Mar 30 14:07:14 2014 -0400
     4.2 +++ b/plugins/funcommands/fire.sp	Sat Mar 29 15:07:07 2014 -0400
     4.3 @@ -109,12 +109,18 @@
     4.4  		if (g_FireBombTime[client] > 1)
     4.5  		{
     4.6  			color = RoundToFloor(g_FireBombTime[client] * (255.0 / GetConVarFloat(g_Cvar_FireBombTicks)));
     4.7 -			EmitAmbientSound(SOUND_BEEP, vec, client, SNDLEVEL_RAIDSIREN);	
     4.8 +			if (g_BeepSound[0])
     4.9 +			{
    4.10 +				EmitAmbientSound(g_BeepSound, vec, client, SNDLEVEL_RAIDSIREN);	
    4.11 +			}
    4.12  		}
    4.13  		else
    4.14  		{
    4.15  			color = 0;
    4.16 -			EmitAmbientSound(SOUND_FINAL, vec, client, SNDLEVEL_RAIDSIREN);
    4.17 +			if (g_FinalSound[0])
    4.18 +			{
    4.19 +				EmitAmbientSound(g_FinalSound, vec, client, SNDLEVEL_RAIDSIREN);
    4.20 +			}
    4.21  		}
    4.22  		
    4.23  		SetEntityRenderColor(client, 255, color, color, 255);
    4.24 @@ -123,13 +129,16 @@
    4.25  		GetClientName(client, name, sizeof(name));
    4.26  		PrintCenterTextAll("%t", "Till Explodes", name, g_FireBombTime[client]);		
    4.27  		
    4.28 -		GetClientAbsOrigin(client, vec);
    4.29 -		vec[2] += 10;
    4.30 +		if (g_BeamSprite > -1 && g_HaloSprite > -1)
    4.31 +		{
    4.32 +			GetClientAbsOrigin(client, vec);
    4.33 +			vec[2] += 10;
    4.34  
    4.35 -		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_FireBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, greyColor, 10, 0);
    4.36 -		TE_SendToAll();
    4.37 -		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_FireBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, whiteColor, 10, 0);
    4.38 -		TE_SendToAll();
    4.39 +			TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_FireBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, greyColor, 10, 0);
    4.40 +			TE_SendToAll();
    4.41 +			TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_FireBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, whiteColor, 10, 0);
    4.42 +			TE_SendToAll();
    4.43 +		}
    4.44  		return Plugin_Continue;
    4.45  	}
    4.46  	else
    4.47 @@ -140,21 +149,27 @@
    4.48  			TE_SendToAll();
    4.49  		}
    4.50  		
    4.51 -		GetClientAbsOrigin(client, vec);
    4.52 -		vec[2] += 10;
    4.53 -		TE_SetupBeamRingPoint(vec, 50.0, GetConVarFloat(g_Cvar_FireBombRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.5, 30.0, 1.5, orangeColor, 5, 0);
    4.54 -		TE_SendToAll();
    4.55 -		vec[2] += 15;
    4.56 -		TE_SetupBeamRingPoint(vec, 40.0, GetConVarFloat(g_Cvar_FireBombRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 30.0, 1.5, orangeColor, 5, 0);
    4.57 -		TE_SendToAll();	
    4.58 -		vec[2] += 15;
    4.59 -		TE_SetupBeamRingPoint(vec, 30.0, GetConVarFloat(g_Cvar_FireBombRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.7, 30.0, 1.5, orangeColor, 5, 0);
    4.60 -		TE_SendToAll();
    4.61 -		vec[2] += 15;
    4.62 -		TE_SetupBeamRingPoint(vec, 20.0, GetConVarFloat(g_Cvar_FireBombRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.8, 30.0, 1.5, orangeColor, 5, 0);
    4.63 -		TE_SendToAll();		
    4.64 +		if (g_BeamSprite > -1 && g_HaloSprite > -1)
    4.65 +		{
    4.66 +			GetClientAbsOrigin(client, vec);
    4.67 +			vec[2] += 10;
    4.68 +			TE_SetupBeamRingPoint(vec, 50.0, GetConVarFloat(g_Cvar_FireBombRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.5, 30.0, 1.5, orangeColor, 5, 0);
    4.69 +			TE_SendToAll();
    4.70 +			vec[2] += 15;
    4.71 +			TE_SetupBeamRingPoint(vec, 40.0, GetConVarFloat(g_Cvar_FireBombRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 30.0, 1.5, orangeColor, 5, 0);
    4.72 +			TE_SendToAll();	
    4.73 +			vec[2] += 15;
    4.74 +			TE_SetupBeamRingPoint(vec, 30.0, GetConVarFloat(g_Cvar_FireBombRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.7, 30.0, 1.5, orangeColor, 5, 0);
    4.75 +			TE_SendToAll();
    4.76 +			vec[2] += 15;
    4.77 +			TE_SetupBeamRingPoint(vec, 20.0, GetConVarFloat(g_Cvar_FireBombRadius), g_BeamSprite, g_HaloSprite, 0, 10, 0.8, 30.0, 1.5, orangeColor, 5, 0);
    4.78 +			TE_SendToAll();		
    4.79 +		}
    4.80  		
    4.81 -		EmitAmbientSound(SOUND_BOOM, vec, client, SNDLEVEL_RAIDSIREN);
    4.82 +		if (g_BoomSound[0])
    4.83 +		{
    4.84 +			EmitAmbientSound(g_BoomSound, vec, client, SNDLEVEL_RAIDSIREN);
    4.85 +		}
    4.86  
    4.87  		IgniteEntity(client, GetConVarFloat(g_Cvar_BurnDuration));
    4.88  		KillFireBomb(client);
     5.1 --- a/plugins/funcommands/ice.sp	Sun Mar 30 14:07:14 2014 -0400
     5.2 +++ b/plugins/funcommands/ice.sp	Sat Mar 29 15:07:07 2014 -0400
     5.3 @@ -51,9 +51,12 @@
     5.4  	SetEntityMoveType(client, MOVETYPE_NONE);
     5.5  	SetEntityRenderColor(client, 0, 128, 255, 192);
     5.6  
     5.7 -	new Float:vec[3];
     5.8 -	GetClientEyePosition(client, vec);
     5.9 -	EmitAmbientSound(SOUND_FREEZE, vec, client, SNDLEVEL_RAIDSIREN);
    5.10 +	if (g_FreezeSound[0])
    5.11 +	{
    5.12 +		new Float:vec[3];
    5.13 +		GetClientEyePosition(client, vec);
    5.14 +		EmitAmbientSound(g_FreezeSound, vec, client, SNDLEVEL_RAIDSIREN);
    5.15 +	}
    5.16  
    5.17  	g_FreezeTime[client] = time;
    5.18  	g_FreezeSerial[client] = ++ g_Serial_Gen;
    5.19 @@ -67,12 +70,15 @@
    5.20  
    5.21  	if (IsClientInGame(client))
    5.22  	{
    5.23 -		new Float:vec[3];
    5.24 -		GetClientAbsOrigin(client, vec);
    5.25 -		vec[2] += 10;	
    5.26 -		
    5.27 -		GetClientEyePosition(client, vec);
    5.28 -		EmitAmbientSound(SOUND_FREEZE, vec, client, SNDLEVEL_RAIDSIREN);
    5.29 +		if (g_FreezeSound[0])
    5.30 +		{
    5.31 +			new Float:vec[3];
    5.32 +			GetClientAbsOrigin(client, vec);
    5.33 +			vec[2] += 10;	
    5.34 +			
    5.35 +			GetClientEyePosition(client, vec);
    5.36 +			EmitAmbientSound(g_FreezeSound, vec, client, SNDLEVEL_RAIDSIREN);
    5.37 +		}
    5.38  
    5.39  		SetEntityMoveType(client, MOVETYPE_WALK);
    5.40  		
    5.41 @@ -189,13 +195,13 @@
    5.42  	if (g_GlowSprite > -1)
    5.43  	{
    5.44  		TE_SetupGlowSprite(vec, g_GlowSprite, 0.95, 1.5, 50);
    5.45 +		TE_SendToAll();
    5.46  	}
    5.47 -	else
    5.48 +	else if (g_HaloSprite > -1)
    5.49  	{
    5.50  		TE_SetupGlowSprite(vec, g_HaloSprite, 0.95, 1.5, 50);
    5.51 +		TE_SendToAll();
    5.52  	}
    5.53 -	
    5.54 -	TE_SendToAll();
    5.55  
    5.56  	return Plugin_Continue;
    5.57  }
    5.58 @@ -224,12 +230,18 @@
    5.59  		if (g_FreezeBombTime[client] > 1)
    5.60  		{
    5.61  			color = RoundToFloor(g_FreezeBombTime[client] * (255.0 / GetConVarFloat(g_Cvar_FreezeBombTicks)));
    5.62 -			EmitAmbientSound(SOUND_BEEP, vec, client, SNDLEVEL_RAIDSIREN);	
    5.63 +			if (g_BeepSound[0])
    5.64 +			{
    5.65 +				EmitAmbientSound(g_BeepSound, vec, client, SNDLEVEL_RAIDSIREN);
    5.66 +			}
    5.67  		}
    5.68  		else
    5.69  		{
    5.70  			color = 0;
    5.71 -			EmitAmbientSound(SOUND_FINAL, vec, client, SNDLEVEL_RAIDSIREN);
    5.72 +			if (g_FinalSound[0])
    5.73 +			{
    5.74 +				EmitAmbientSound(g_FinalSound, vec, client, SNDLEVEL_RAIDSIREN);
    5.75 +			}
    5.76  		}
    5.77  		
    5.78  		SetEntityRenderColor(client, color, color, 255, 255);
    5.79 @@ -238,13 +250,16 @@
    5.80  		GetClientName(client, name, sizeof(name));
    5.81  		PrintCenterTextAll("%t", "Till Explodes", name, g_FreezeBombTime[client]);
    5.82  
    5.83 -		GetClientAbsOrigin(client, vec);
    5.84 -		vec[2] += 10;
    5.85 +		if (g_BeamSprite > -1 && g_HaloSprite > -1)
    5.86 +		{
    5.87 +			GetClientAbsOrigin(client, vec);
    5.88 +			vec[2] += 10;
    5.89  
    5.90 -		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_FreezeBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, greyColor, 10, 0);
    5.91 -		TE_SendToAll();
    5.92 -		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_FreezeBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, whiteColor, 10, 0);
    5.93 -		TE_SendToAll();
    5.94 +			TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_FreezeBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, greyColor, 10, 0);
    5.95 +			TE_SendToAll();
    5.96 +			TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_FreezeBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, whiteColor, 10, 0);
    5.97 +			TE_SendToAll();
    5.98 +		}
    5.99  		return Plugin_Continue;
   5.100  	}
   5.101  	else
   5.102 @@ -255,7 +270,10 @@
   5.103  			TE_SendToAll();
   5.104  		}
   5.105  
   5.106 -		EmitAmbientSound(SOUND_BOOM, vec, client, SNDLEVEL_RAIDSIREN);
   5.107 +		if (g_BoomSound[0])
   5.108 +		{
   5.109 +			EmitAmbientSound(g_BoomSound, vec, client, SNDLEVEL_RAIDSIREN);
   5.110 +		}
   5.111  
   5.112  		KillFreezeBomb(client);
   5.113  		FreezeClient(client, GetConVarInt(g_Cvar_FreezeDuration));
   5.114 @@ -286,15 +304,19 @@
   5.115  					continue;
   5.116  				}
   5.117  				
   5.118 -				if (g_BeamSprite2 > -1)
   5.119 +				if (g_HaloSprite > -1)
   5.120  				{
   5.121 -					TE_SetupBeamPoints(vec, pos, g_BeamSprite2, g_HaloSprite, 0, 1, 0.7, 20.0, 50.0, 1, 1.5, blueColor, 10);
   5.122 +					if (g_BeamSprite2 > -1)
   5.123 +					{
   5.124 +						TE_SetupBeamPoints(vec, pos, g_BeamSprite2, g_HaloSprite, 0, 1, 0.7, 20.0, 50.0, 1, 1.5, blueColor, 10);
   5.125 +						TE_SendToAll();
   5.126 +					}
   5.127 +					else if (g_BeamSprite > -1)
   5.128 +					{
   5.129 +						TE_SetupBeamPoints(vec, pos, g_BeamSprite, g_HaloSprite, 0, 1, 0.7, 20.0, 50.0, 1, 1.5, blueColor, 10);
   5.130 +						TE_SendToAll();
   5.131 +					}
   5.132  				}
   5.133 -				else
   5.134 -				{
   5.135 -					TE_SetupBeamPoints(vec, pos, g_BeamSprite, g_HaloSprite, 0, 1, 0.7, 20.0, 50.0, 1, 1.5, blueColor, 10);
   5.136 -				}
   5.137 -				TE_SendToAll();
   5.138  				
   5.139  				FreezeClient(i, GetConVarInt(g_Cvar_FreezeDuration));
   5.140  			}		
     6.1 --- a/plugins/funcommands/timebomb.sp	Sun Mar 30 14:07:14 2014 -0400
     6.2 +++ b/plugins/funcommands/timebomb.sp	Sat Mar 29 15:07:07 2014 -0400
     6.3 @@ -102,12 +102,18 @@
     6.4  		if (g_TimeBombTime[client] > 1)
     6.5  		{
     6.6  			color = RoundToFloor(g_TimeBombTime[client] * (128.0 / GetConVarFloat(g_Cvar_TimeBombTicks)));
     6.7 -			EmitAmbientSound(SOUND_BEEP, vec, client, SNDLEVEL_RAIDSIREN);	
     6.8 +			if (g_BeepSound[0])
     6.9 +			{
    6.10 +				EmitAmbientSound(g_BeepSound, vec, client, SNDLEVEL_RAIDSIREN);	
    6.11 +			}
    6.12  		}
    6.13  		else
    6.14  		{
    6.15  			color = 0;
    6.16 -			EmitAmbientSound(SOUND_FINAL, vec, client, SNDLEVEL_RAIDSIREN);
    6.17 +			if (g_FinalSound[0])
    6.18 +			{
    6.19 +				EmitAmbientSound(g_FinalSound, vec, client, SNDLEVEL_RAIDSIREN);
    6.20 +			}
    6.21  		}
    6.22  		
    6.23  		SetEntityRenderColor(client, 255, 128, color, 255);
    6.24 @@ -116,13 +122,16 @@
    6.25  		GetClientName(client, name, sizeof(name));
    6.26  		PrintCenterTextAll("%t", "Till Explodes", name, g_TimeBombTime[client]);
    6.27  		
    6.28 -		GetClientAbsOrigin(client, vec);
    6.29 -		vec[2] += 10;
    6.30 +		if (g_BeamSprite > -1 && g_HaloSprite > -1)
    6.31 +		{
    6.32 +			GetClientAbsOrigin(client, vec);
    6.33 +			vec[2] += 10;
    6.34  
    6.35 -		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_TimeBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, greyColor, 10, 0);
    6.36 -		TE_SendToAll();
    6.37 -		TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_TimeBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, whiteColor, 10, 0);
    6.38 -		TE_SendToAll();
    6.39 +			TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_TimeBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, greyColor, 10, 0);
    6.40 +			TE_SendToAll();
    6.41 +			TE_SetupBeamRingPoint(vec, 10.0, GetConVarFloat(g_Cvar_TimeBombRadius) / 3.0, g_BeamSprite, g_HaloSprite, 0, 10, 0.6, 10.0, 0.5, whiteColor, 10, 0);
    6.42 +			TE_SendToAll();
    6.43 +		}
    6.44  		return Plugin_Continue;
    6.45  	}
    6.46  	else
    6.47 @@ -133,7 +142,10 @@
    6.48  			TE_SendToAll();
    6.49  		}
    6.50  
    6.51 -		EmitAmbientSound(SOUND_BOOM, vec, client, SNDLEVEL_RAIDSIREN);
    6.52 +		if (g_BoomSound[0])
    6.53 +		{
    6.54 +			EmitAmbientSound(g_BoomSound, vec, client, SNDLEVEL_RAIDSIREN);
    6.55 +		}
    6.56  
    6.57  		ForcePlayerSuicide(client);
    6.58  		KillTimeBomb(client);
     7.1 --- a/tools/buildbot/PackageScript	Sun Mar 30 14:07:14 2014 -0400
     7.2 +++ b/tools/buildbot/PackageScript	Sat Mar 29 15:07:07 2014 -0400
     7.3 @@ -137,7 +137,11 @@
     7.4      'update_admins-r1409.sql',
     7.5    ]
     7.6  )
     7.7 -CopyFiles('gamedata', 'addons/sourcemod/gamedata', ['sm-tf2.games.txt'])
     7.8 +CopyFiles('gamedata', 'addons/sourcemod/gamedata',
     7.9 +  [ 'funcommands.games.txt',
    7.10 +    'sm-tf2.games.txt',
    7.11 +  ]
    7.12 +)
    7.13  CopyFiles('gamedata/sdkhooks.games', 'addons/sourcemod/gamedata/sdkhooks.games',
    7.14    [ 'common.games.txt',
    7.15      'engine.blade.txt',