diff -r 9812bb753ce7 src/network.cpp
--- a/src/network.cpp	Sun Jan 04 17:25:51 2015 +0100
+++ b/src/network.cpp	Mon Jan 05 13:04:31 2015 +0100
@@ -84,6 +84,7 @@
 #include "g_level.h"
 #include "p_lnspec.h"
 #include "cmdlib.h"
+#include "templates.h"
 
 #include "md5.h"
 #include "network/sv_auth.h"
@@ -1145,44 +1146,30 @@
 
 //*****************************************************************************
 //
-int NETWORK_AttenuationFloatToInt ( const float fAttenuation )
+int NETWORK_AttenuationFloatToInt ( const float Attenuation )
 {
-	if ( fAttenuation == ATTN_NONE )
-		return ATTN_INT_NONE;
-	else if ( fAttenuation == ATTN_NORM )
-		return ATTN_INT_NORM;
-	else if ( fAttenuation == ATTN_IDLE )
-		return ATTN_INT_IDLE;
-	else if ( fAttenuation == ATTN_STATIC )
-		return ATTN_INT_STATIC;
-	else
-	{
-		Printf ( "NETWORK_AttenuationFloatToInt: Warning unknown attenuation value\n" );
-		return ATTN_INT_NORM;
+	if (Attenuation < 0.f) {
+		Printf ( "NETWORK_AttenuationFloatToByte: Warning negative attenuation value\n" );
+		return 0;
 	}
+	if (Attenuation < 1.f) //pack the [0..1) floats into [0,127]
+		return clamp((int)(Attenuation*128), 0, 127);
+	else //pack the [1+..) floats into [128,255]
+		return 128+clamp((int)((Attenuation-1)*19), 0, 127);
 }
 
 //*****************************************************************************
 //
-float NETWORK_AttenuationIntToFloat ( const int iAttenuation )
+float NETWORK_AttenuationIntToFloat ( const int PackedAttenuation )
 {
-	switch (iAttenuation)
-	{
-	case ATTN_INT_NONE:
-		return ATTN_NONE;
-
-	case ATTN_INT_NORM:
-		return ATTN_NORM;
-
-	case ATTN_INT_IDLE:
-		return ATTN_IDLE;
-
-	case ATTN_INT_STATIC:
-		return ATTN_STATIC;
-	default:
-		Printf ( "NETWORK_AttenuationIntToFloat: Warning unknown attenuation value\n" );
-		return ATTN_NORM;
+	if (PackedAttenuation < 0 || PackedAttenuation > 255) {
+		Printf ( "NETWORK_AttenuationIntToFloat: Warning wrong attenuation range\n" );
+		return (PackedAttenuation < 0) ? 0 : 255;
 	}
+	if (PackedAttenuation < 128)
+		return ((float)PackedAttenuation)/128.f;
+	else
+		return (((float)PackedAttenuation)/19.f)+1;
 }
 
 //*****************************************************************************
