SoundMaster = SoundMaster or {}
soundtable = {}
function soundtable.Random(data)
	math.randomseed(math.random(0,255)*5)
	return table.Random(data)
end
/*
stepgravel		= "0xFAF102","0xFAF103","0xFAF104","0xFAF105","0xFAF106"
stepsnow		= "0xFAF107","0xFAF108","0xFAF109","0xFAF10A","0xFAF10B"
*/
//TODO: Unter-Wasser Sound ["rustsurvival/underwater_lp.wav"]
function SoundMaster.EntityEmitSound(t)
	--MsgN(t.SoundName)
	--MsgN(t.Entity)
	/*if CLIENT and CleanDeathCam.Active then
		return 
	end*/
	if t.SoundName == "plats/elevator_move_loop1.wav" then t.SoundName = "common/null.wav" return true end
	if t.SoundName == "ambient/water/underwater.wav" then
		return false
	end
	--[[if t.SoundName == "vcmod/surface_grind.wav" then
		return false
	end--]]
	if t.SoundName == "npc/scanner/scanner_photo1.wav" then
		t.SoundName = "soundmaster/camera_ac/"..soundtable.Random({
			"0x0C4E9EBF","0x1B33E508",
			"0x1F6744EF","0x06DAFC36",
			"0x08D657CA","0x11AD297B",
			"0x098D81BF","0x1114D0AA",
		})..".mp3"
		return true 
	end
	if string.find(t.SoundName,"physics/") and CLIENT then
		if string.find(t.SoundName,"physics/wood/wood_box_footstep") then
			t.SoundName = "soundmaster/step_ac/"..soundtable.Random({"0xFAF118","0xFAF119","0xFAF120","0xFAF121","0xFAF122","0xFAF123"})..".mp3"
			return true
		end
	end
	if string.find(t.SoundName,"player/footsteps/") and CLIENT then
		if LocalPlayer():WaterLevel() > 1 then return false end --Unter-Wasser schritte deaktivieren
		local stub = string.sub(t.SoundName,18,-5)
		stub = string.sub(stub,0,string.len(stub)-1)
		if stub == "grass" then
			t.SoundName = "player/newfootsteps/grass"..math.random(1,4)..".wav"
			return true
		end
		if stub == "metal" then
			t.SoundName = "player/newfootsteps/metal"..math.random(1,5)..".wav"
			return true
		end
		if stub == "sand" then
			t.SoundName = "player/newfootsteps/sand"..math.random(1,5)..".wav"
			return true
		end
		if stub == "wood" then
			t.SoundName = "soundmaster/step_ac/"..soundtable.Random({"0xFAF118","0xFAF119","0xFAF120","0xFAF121","0xFAF122","0xFAF123"})..".mp3"
			return true
		end
		if stub == "gravel" then
			t.SoundName = "soundmaster/step_ac/"..soundtable.Random({"0xFAF102","0xFAF103","0xFAF104","0xFAF105","0xFAF106"})..".mp3"
			return true
		end
		if stub == "dirt" then
			t.SoundName = "soundmaster/step_ac/"..soundtable.Random({"0xFAF0E6","0xFAF0E7","0xFAF0E8","0xFAF0E9","0xFAF101"})..".mp3"
			return true
		end
		if stub == "stone" or stub == "concrete" or stub == "tile" then
			t.SoundName = "soundmaster/step_ac/"..soundtable.Random({"0xFAF10C","0xFAF10D","0xFAF10E","0xFAF110","0xFAF111","0xFAF112"})..".mp3"
			return true
		end
		if stub == "slosh" or stub == "wade" then
			t.SoundName = "soundmaster/step_ac/"..soundtable.Random({"0xFAF113","0xFAF114","0xFAF115","0xFAF116","0xFAF117"})..".mp3"
			return true
		end
	end
	if t.SoundName == "items/flashlight1.wav" then t.SoundName = "rustsurvival/flashlight_toggle.mp3" return true end
	if IsValid(t.Entity) then
		if t.Entity:IsVehicle() then 
			local replacements = {
				["physics/metal/*"] = {
					"0x00CED401","0x0DF65CA9",
					"0x0F481DDD","0x1AF0B69D",
					"0x1F56FF6A","0x03E4DA2C",
					"0x15E86B1D","0x18B930BF",
					"0x0450C95F","0x16387ED3",
				}
			}
			for i,k in pairs(replacements) do
				if string.find(t.SoundName,i) then
					t.SoundName = "soundmaster/carcrash_ac/"..table.Random(k)..".mp3"
					return true
				end
			end
		end
		if t.Entity == Entity(0) and string.find(t.SoundName,"explode") then 
			t.SoundName = "rustsurvival/ambient/a_explosion.mp3"
			return true
		end
		if t.Entity == Entity(0) and string.find(t.SoundName,"ambient") then t.SoundName = "common/null.wav" return true end
		if t.Entity:IsVehicle() and string.find(t.SoundName,"explode") then 
			t.SoundName = "soundmaster/carexplosion_ac/"..soundtable.Random({"0x1D0B27DF","0x0FEDCD9C"})..".mp3"
			return true
		end
	end
end
hook.Add("EntityEmitSound","SoundMaster.EntityEmitSound",SoundMaster.EntityEmitSound)