Index: data/qcsrc/client/sbar.qc
===================================================================
--- data/qcsrc/client/sbar.qc	(revision 8149)
+++ data/qcsrc/client/sbar.qc	(working copy)
@@ -13,14 +13,9 @@
 float sbar_color_bg_team;
 float sbar_border_thickness;
 float sbar_scoreboard_alpha_bg;
-float sbar_scoreboard_alpha_fg;
 float sbar_scoreboard_highlight;
-float sbar_scoreboard_highlight_alpha;
-float sbar_scoreboard_highlight_alpha_self;
 float sbar_hudselector;
 float sbar_hud_accuracy;
-float sbar_scoreboard_alpha_name;
-float sbar_scoreboard_alpha_name_self;
 
 float ps_primary, ps_secondary;
 float ts_primary, ts_secondary;
@@ -28,12 +23,10 @@
 vector color;
 float SCOREBOARD_OFFSET = 50;
 
-void CSQC_kh_hudreset();
 void CSQC_kh_hud();
-void CSQC_ctf_hudreset();
 void CSQC_ctf_hud();
 void CSQC_nb_hud();
-void CSQC_race_hud();
+void CSQC_ka_hud();
 void MapVote_Draw();
 void Sbar_FinaleOverlay()
 {
@@ -84,12 +77,12 @@
 	color_x = color_y = color_z = value;
 
 	// width = 300, height = 100
-	const float w_width = 24, w_height = 12, w_space = 2, font_size = 8;
+	const float w_width = 25, w_height = 12, w_space = 2, font_size = 8;
 
 	sp = weaponspace[idx] + 1;
 	weaponspace[idx] = sp;
 
-	pos_x = (vid_conwidth + 6 - w_width * 9) * 0.5 + w_width * idx;
+	pos_x = (vid_conwidth + 10 - w_width * 9) * 0.5 + w_width * idx;
 	pos_y = (vid_conheight - w_height * sp) - 38; // move 38 pixels up
 	pos_z = 0;
 	vsize_x = w_width;
@@ -465,12 +458,12 @@
 {
 	return strcat( // fteqcc sucks
 		"ping pl name | ",
-		"-teams,race,lms/kills -teams,lms/deaths -teams,lms,race/suicides -race,dm,tdm/frags ", // tdm already has this in "score"
+		"-teams,race,lms/kills -teams,lms/deaths -teams,lms,race,keepaway/suicides -race,dm,tdm,keepaway/frags ", // tdm already has this in "score"
 		"+ctf/caps +ctf/pickups +ctf/fckills +ctf/returns ",
 		"+lms/lives +lms/rank ",
 		"+kh/caps +kh/pushes +kh/destroyed ",
 		"?+race/laps ?+race/time ?+race/fastest ",
-		"+as/objectives +nexball/faults +nexball/goals ",
+		"+as/objectives +nexball/faults +nexball/goals +keepaway/drops +keepaway/pickups +keepaway/bckills ",
 		"-lms,race,nexball/score");
 }
 
@@ -839,28 +832,26 @@
 
 void Sbar_PrintScoreboardItem(vector pos, entity pl, float is_self, float pl_number)
 {
-	vector tmp, rgb;
-	rgb = GetTeamRGB(pl.team);
+	vector tmp;
 	string str;
 	float i, field;
 	float is_spec;
 	is_spec = (GetPlayerColor(pl.sv_entnum) == COLOR_SPECTATOR);
-	
-	if((rgb == '1 1 1') && (!is_spec)) {
-		rgb_x = cvar("sbar_color_bg_r") + 0.5;
-		rgb_y = cvar("sbar_color_bg_g") + 0.5;
-		rgb_z = cvar("sbar_color_bg_b") + 0.5; }
-		
+
 	// Layout:
 	tmp_x = sbwidth;
 	tmp_y = sbar_fontsize_y * 1.25;
 	tmp_z = 0;
 
 	// alternated rows highlighting
-	if(is_self)
-		drawfill(pos - '1 1 0', tmp + '2 0 0', rgb, sbar_scoreboard_highlight_alpha_self, DRAWFLAG_NORMAL);
-	else if((sbar_scoreboard_highlight) && (!mod(pl_number,2)))
-		drawfill(pos - '1 1 0', tmp + '2 0 0', rgb, sbar_scoreboard_highlight_alpha, DRAWFLAG_NORMAL);
+	if (is_self)
+		drawfill(pos - '1 1 0', tmp + '2 0 0', '1 1 1', 0.25, DRAWFLAG_NORMAL);
+	else
+	{
+		if (sbar_scoreboard_highlight)
+			if(!mod(pl_number,2))
+				drawfill(pos - '1 1 0', tmp + '2 0 0', '1 1 1', 0.09, DRAWFLAG_NORMAL);
+	}
 
 	tmp_y = 0;
 
@@ -881,34 +872,19 @@
 
 		if(field == SP_NAME) {
 			tmp_x = sbar_fontsize_x*(sbar_size[i] - sbar_fixscoreboardcolumnwidth_iconlen - sbar_fixscoreboardcolumnwidth_marginlen) + sbar_fontsize_x;
-			if (is_self)
-				drawcolorcodedstring(pos - tmp, str, sbar_fontsize, sbar_scoreboard_alpha_name_self, DRAWFLAG_NORMAL);
-			else
-				drawcolorcodedstring(pos - tmp, str, sbar_fontsize, sbar_scoreboard_alpha_name, DRAWFLAG_NORMAL);
+			drawcolorcodedstring(pos - tmp, str, sbar_fontsize, 1, DRAWFLAG_NORMAL);
 		} else {
 			tmp_x = sbar_fixscoreboardcolumnwidth_len*sbar_fontsize_x + sbar_fontsize_x;
-			if (is_self)
-				drawstring(pos - tmp, str, sbar_fontsize, sbar_field_rgb, sbar_scoreboard_alpha_name_self, DRAWFLAG_NORMAL);
-			else
-				drawstring(pos - tmp, str, sbar_fontsize, sbar_field_rgb, sbar_scoreboard_alpha_name, DRAWFLAG_NORMAL);
+			drawstring(pos - tmp, str, sbar_fontsize, sbar_field_rgb, 1, DRAWFLAG_NORMAL);
 		}
 
 		tmp_x = sbar_fontsize_x*sbar_size[i] + sbar_fontsize_x;
 		if(sbar_field_icon0 != "")
-			if (is_self)
-				drawpic(pos - tmp, sbar_field_icon0, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon1_rgb, sbar_field_icon0_alpha * sbar_scoreboard_alpha_name_self, DRAWFLAG_NORMAL);
-			else
-				drawpic(pos - tmp, sbar_field_icon0, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon1_rgb, sbar_field_icon0_alpha * sbar_scoreboard_alpha_name, DRAWFLAG_NORMAL);
+			drawpic(pos - tmp, sbar_field_icon0, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon1_rgb, sbar_field_icon0_alpha, DRAWFLAG_NORMAL);
 		if(sbar_field_icon1 != "")
-			if (is_self)
-				drawpic(pos - tmp, sbar_field_icon1, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon1_rgb, sbar_field_icon1_alpha * sbar_scoreboard_alpha_name_self, DRAWFLAG_NORMAL);
-			else
-				drawpic(pos - tmp, sbar_field_icon1, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon1_rgb, sbar_field_icon1_alpha * sbar_scoreboard_alpha_name, DRAWFLAG_NORMAL);
+			drawpic(pos - tmp, sbar_field_icon1, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon1_rgb, sbar_field_icon1_alpha, DRAWFLAG_NORMAL);
 		if(sbar_field_icon2 != "")
-			if (is_self)
-				drawpic(pos - tmp, sbar_field_icon2, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon2_rgb, sbar_field_icon2_alpha * sbar_scoreboard_alpha_name_self, DRAWFLAG_NORMAL);
-			else
-				drawpic(pos - tmp, sbar_field_icon2, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon2_rgb, sbar_field_icon2_alpha * sbar_scoreboard_alpha_name, DRAWFLAG_NORMAL);
+			drawpic(pos - tmp, sbar_field_icon2, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon2_rgb, sbar_field_icon2_alpha, DRAWFLAG_NORMAL);
 	}
 
 	if(sbar_field[i] == SP_SEPARATOR)
@@ -930,34 +906,20 @@
 
 			if(field == SP_NAME) {
 				tmp_x = sbar_fontsize_x*sbar_fixscoreboardcolumnwidth_len; // left or right aligned? let's put it right...
-				if(is_self)
-					drawcolorcodedstring(pos - tmp, str, sbar_fontsize, sbar_scoreboard_alpha_name_self, DRAWFLAG_NORMAL);
-				else
-					drawcolorcodedstring(pos - tmp, str, sbar_fontsize, sbar_scoreboard_alpha_name, DRAWFLAG_NORMAL);
+				drawcolorcodedstring(pos - tmp, str, sbar_fontsize, 1, DRAWFLAG_NORMAL);
 			} else {
 				tmp_x = sbar_fontsize_x*sbar_fixscoreboardcolumnwidth_len;
-				if(is_self)
-					drawstring(pos - tmp, str, sbar_fontsize, sbar_field_rgb, sbar_scoreboard_alpha_name_self, DRAWFLAG_NORMAL);
-				else
-					drawstring(pos - tmp, str, sbar_fontsize, sbar_field_rgb, sbar_scoreboard_alpha_name, DRAWFLAG_NORMAL);
+				drawstring(pos - tmp, str, sbar_fontsize, sbar_field_rgb, 1, DRAWFLAG_NORMAL);
 			}
 
 			tmp_x = sbar_fontsize_x*sbar_size[i];
 			if(sbar_field_icon0 != "")
-				if (is_self)
-					drawpic(pos - tmp, sbar_field_icon0, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon1_rgb, sbar_field_icon0_alpha * sbar_scoreboard_alpha_name_self, DRAWFLAG_NORMAL);
-				else
-					drawpic(pos - tmp, sbar_field_icon0, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon1_rgb, sbar_field_icon0_alpha * sbar_scoreboard_alpha_name, DRAWFLAG_NORMAL);
+				drawpic(pos - tmp, sbar_field_icon0, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon1_rgb, sbar_field_icon0_alpha, DRAWFLAG_NORMAL);
 			if(sbar_field_icon1 != "")
-				if (is_self)
-					drawpic(pos - tmp, sbar_field_icon1, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon1_rgb, sbar_field_icon1_alpha * sbar_scoreboard_alpha_name_self, DRAWFLAG_NORMAL);
-				else
-					drawpic(pos - tmp, sbar_field_icon1, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon1_rgb, sbar_field_icon1_alpha * sbar_scoreboard_alpha_name, DRAWFLAG_NORMAL);
+				drawpic(pos - tmp, sbar_field_icon1, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon1_rgb, sbar_field_icon1_alpha, DRAWFLAG_NORMAL);
 			if(sbar_field_icon2 != "")
-				if (is_self)
-					drawpic(pos - tmp, sbar_field_icon2, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon2_rgb, sbar_field_icon2_alpha * sbar_scoreboard_alpha_name_self, DRAWFLAG_NORMAL);
-				else
-					drawpic(pos - tmp, sbar_field_icon2, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon2_rgb, sbar_field_icon2_alpha * sbar_scoreboard_alpha_name, DRAWFLAG_NORMAL);
+				drawpic(pos - tmp, sbar_field_icon2, '0 1 0' * sbar_fontsize_y + '1 0 0' * sbar_fontsize_x * sbar_fixscoreboardcolumnwidth_iconlen, sbar_field_icon2_rgb, sbar_field_icon2_alpha, DRAWFLAG_NORMAL);
+
 			pos_x -= sbar_fontsize_x*sbar_size[i] + sbar_fontsize_x;
 		}
 	}
@@ -983,7 +945,7 @@
 	tmp_y = 1.25 * sbar_fontsize_y;
 
 	// rounded header
-	drawpic(pos, "gfx/hud/sb_scoreboard_tableheader", tmp, (rgb * sbar_color_bg_team) + '0.5 0.5 0.5', sbar_scoreboard_alpha_bg, DRAWFLAG_NORMAL);
+	drawpic(pos, "gfx/hud/sb_scoreboard_tableheader", tmp, '0.5 0.5 0.5', sbar_scoreboard_alpha_bg, DRAWFLAG_NORMAL);
 
 	// table border
 	tmp_y += sbar_border_thickness;
@@ -1028,7 +990,7 @@
 			if (mod(i,2))
 				drawfill(pos - '0 1 0' - sbar_fontsize_x / 2 * '1 0 0', column_dim, '0 0 0', sbar_scoreboard_alpha_bg * 0.2, DRAWFLAG_NORMAL);
 		}
-		drawstring(pos, sbar_title[i], sbar_fontsize, rgb, sbar_scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+		drawstring(pos, sbar_title[i], sbar_fontsize, rgb, 1, DRAWFLAG_NORMAL);
 		pos_x += column_dim_x;
 	}
 	if(sbar_field[i] == SP_SEPARATOR)
@@ -1056,7 +1018,7 @@
 
 			tmp_x = stringwidth(sbar_title[i], FALSE);
 			tmp_x = (sbar_size[i] - tmp_x) * sbar_fontsize_x;
-			drawstring(pos + tmp, sbar_title[i], sbar_fontsize, rgb, sbar_scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+			drawstring(pos + tmp, sbar_title[i], sbar_fontsize, rgb, 1, DRAWFLAG_NORMAL);
 			pos_x -= sbar_fontsize_x;
 		}
 	}
@@ -1093,63 +1055,15 @@
 	return pos;
 }
 
-float Sbar_WouldDrawScoreboard() {
-	if (sb_showscores)
-		return 1;
-	else if (intermission == 1)
-		return 1;
-	else if (intermission == 2)
-		return 1;
-	else if (getstati(STAT_HEALTH) <= 0 && cvar("cl_deathscoreboard"))
-		return 1;
-	else if(sb_showscores_force)
-		return 1;
-	return 0;
-}
-
 float lastpingstime;
 float scoreboard_bottom;
-float sbar_scoreboard_fade_alpha;
-float sbar_woulddrawscoreboard_prev;
-float sbar_woulddrawscoreboard_change; // "time" at which Sbar_WouldDrawScoreboard() changed
 void Sbar_DrawScoreboard()
 {
-	float sbar_woulddrawscoreboard; 
-	sbar_woulddrawscoreboard = Sbar_WouldDrawScoreboard();
-	if(sbar_woulddrawscoreboard != sbar_woulddrawscoreboard_prev) {
-		sbar_woulddrawscoreboard_change = time;
-		sbar_woulddrawscoreboard_prev = sbar_woulddrawscoreboard;
-	}
-
-	float scoreboard_fadeinspeed = cvar_or("sbar_scoreboard_fadeinspeed", 10);
-	float scoreboard_fadeoutspeed = cvar_or("sbar_scoreboard_fadeoutspeed", 5);
-	if(sbar_woulddrawscoreboard) {
-		if (scoreboard_fadeinspeed)
-			sbar_scoreboard_fade_alpha = bound (0, (time - sbar_woulddrawscoreboard_change) * scoreboard_fadeinspeed, 1);
-		else
-			sbar_scoreboard_fade_alpha = 1;
-	}
-	else
-		if (scoreboard_fadeoutspeed)
-			sbar_scoreboard_fade_alpha = bound (0, (1/scoreboard_fadeoutspeed - (time - sbar_woulddrawscoreboard_change)) * scoreboard_fadeoutspeed, 1);
-		else
-			sbar_scoreboard_fade_alpha = 0;
-
-	if not(sbar_scoreboard_fade_alpha)
-		return;
-		
-	sbar_scoreboard_alpha_bg = cvar("sbar_scoreboard_alpha_bg") * sbar_scoreboard_fade_alpha;
-	sbar_scoreboard_alpha_fg = cvar_or("sbar_scoreboard_alpha_fg", 1.0) * sbar_scoreboard_fade_alpha;
-	sbar_scoreboard_highlight = cvar("sbar_scoreboard_highlight");
-	sbar_scoreboard_highlight_alpha = cvar_or("sbar_scoreboard_highlight_alpha", 0.10) * sbar_scoreboard_alpha_fg;
-	sbar_scoreboard_highlight_alpha_self = cvar_or("sbar_scoreboard_highlight_alpha_self", 0.25) * sbar_scoreboard_alpha_fg;
-	sbar_scoreboard_alpha_name = cvar_or("sbar_scoreboard_alpha_name", 0.9) * sbar_scoreboard_alpha_fg;
-	sbar_scoreboard_alpha_name_self = cvar_or("sbar_scoreboard_alpha_name_self", 1) * sbar_scoreboard_alpha_fg;
-	
 	vector rgb, pos, tmp;
 	entity pl, tm;
 
-	if(time > lastpingstime + bound(1, cvar_or("sbar_pingrefreshinterval", 10), 60)) {
+	if(time > lastpingstime + 10)
+	{
 		localcmd("pings\n");
 		lastpingstime = time;
 	}
@@ -1169,7 +1083,7 @@
 
 	// Heading
 	drawfont = sbar_bigfont;
-	drawstringcenter('0 1 0' * ymin, "Scoreboard", '24 24 0', '1 1 1', sbar_scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+	drawstringcenter('0 1 0' * ymin, "Scoreboard", '24 24 0', '1 1 1', 1, DRAWFLAG_NORMAL);
 
 	pos_y += 24 + 4;
 	pos_y += sbar_fontsize_y;
@@ -1188,10 +1102,11 @@
 				continue;
 
 			rgb = GetTeamRGB(tm.team);
-			Sbar_DrawXNum(pos - '6.5 0 0' * sbar_fontsize_y + '0 1 0' * sbar_fontsize_y, tm.(teamscores[ts_primary]), 4, 0, sbar_fontsize_y * 1.5, rgb, 0, 1, sbar_scoreboard_alpha_fg, DRAWFLAG_NORMAL);
-				
+
+			Sbar_DrawXNum(pos - '6.5 0 0' * sbar_fontsize_y + '0 1 0' * sbar_fontsize_y, tm.(teamscores[ts_primary]), 4, 0, sbar_fontsize_y * 1.5, rgb, 0, 1, 1, DRAWFLAG_NORMAL);
+
 			if(ts_primary != ts_secondary)
-				Sbar_DrawXNum(pos - '4.5 0 0' * sbar_fontsize_y + '0 2.5 0' * sbar_fontsize_y, tm.(teamscores[ts_secondary]), 4, 0, sbar_fontsize_y * 1, rgb, 0, 1, sbar_scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+				Sbar_DrawXNum(pos - '4.5 0 0' * sbar_fontsize_y + '0 2.5 0' * sbar_fontsize_y, tm.(teamscores[ts_secondary]), 4, 0, sbar_fontsize_y * 1, rgb, 0, 1, 1, DRAWFLAG_NORMAL);
 
 			pos = Sbar_Scoreboard_MakeTable(pos, tm, rgb, bg_size);
 		}
@@ -1211,20 +1126,9 @@
 		}
 	}
 
-	if(gametype == GAME_CTS || gametype == GAME_RACE) {
-		if(race_speedaward) {
-			drawcolorcodedstring(pos, strcat("Speed award: ", ftos(race_speedaward), " (", race_speedaward_holder, ")"), sbar_fontsize, sbar_scoreboard_alpha_fg, DRAWFLAG_NORMAL);
-			pos_y += 1.25 * sbar_fontsize_y;
-		}
-		if(race_speedaward_alltimebest) {
-			drawcolorcodedstring(pos, strcat("All-time fastest: ", ftos(race_speedaward_alltimebest), " (", race_speedaward_alltimebest_holder, ")"), sbar_fontsize, sbar_scoreboard_alpha_fg, DRAWFLAG_NORMAL);
-			pos_y += 1.25 * sbar_fontsize_y;
-		}
-	}
-
 	tmp = pos + '0 1.5 0' * sbar_fontsize_y;
 	pos_y += 3 * sbar_fontsize_y;
-
+	
 	// List spectators
 	float specs;
 	specs = 0;
@@ -1238,7 +1142,7 @@
 	}
 
 	if(specs)
-		drawstring(tmp, "Spectators", sbar_fontsize, '1 1 1', sbar_scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+		drawstring(tmp, "Spectators", sbar_fontsize, '1 1 1', 1, DRAWFLAG_NORMAL);
 
 	// Print info string
 	string str;
@@ -1310,7 +1214,7 @@
 
 
 	pos_y += 1.2 * sbar_fontsize_y;
-	drawcolorcodedstring(pos + '0.5 0 0' * (sbwidth - sbar_fontsize_x * stringwidth(str, TRUE)), str, sbar_fontsize, sbar_scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+	drawcolorcodedstring(pos + '0.5 0 0' * (sbwidth - sbar_fontsize_x * stringwidth(str, TRUE)), str, sbar_fontsize, 0.8, DRAWFLAG_NORMAL);
 
 	scoreboard_bottom = pos_y + 2 * sbar_fontsize_y;
 }
@@ -1681,6 +1585,20 @@
 	Sbar_DrawXNum(topright - '36 0 0' - '3 0 0' + '0 2 0', seconds, -2, 0, 18, timer_color, 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
 }
 
+float Sbar_WouldDrawScoreboard() {
+	if (sb_showscores)
+		return 1;
+	else if (intermission == 1)
+		return 1;
+	else if (intermission == 2)
+		return 1;
+	else if (getstati(STAT_HEALTH) <= 0 && cvar("cl_deathscoreboard"))
+		return 1;
+	else if(sb_showscores_force)
+		return 1;
+	return 0;
+}
+
 void CSQC_Strength_Timer() {
 	vector pos;
 	vector bottom;
@@ -2290,18 +2208,10 @@
 	}
 }
 
-void Sbar_Reset (void)
-{
-	// reset gametype specific icons
-	if(gametype == GAME_KEYHUNT)
-		CSQC_kh_hudreset();
-	else if(gametype == GAME_CTF)
-		CSQC_ctf_hudreset();
-}
-
 void Sbar_Draw (void)
 {
 	// vectors for top right, bottom right, bottom and bottom left corners
+
 	vector topright;
 	vector bottom;
 	vector bottomright;
@@ -2326,6 +2236,8 @@
 	sbar_alpha_bg = cvar("sbar_alpha_bg") * (1 - cvar("_menu_alpha"));
 	sbar_border_thickness = bound(0, cvar("sbar_border_thickness"), 5);
 	sbar_color_bg_team = cvar("sbar_color_bg_team");
+	sbar_scoreboard_alpha_bg = cvar("sbar_scoreboard_alpha_bg");
+	sbar_scoreboard_highlight = cvar("sbar_scoreboard_highlight");
 
 	float i;
 	float weapon_stats;
@@ -2446,7 +2358,7 @@
 	}
 	if(vote_waiting)
 	{
-		s = strcat("^2A vote has been called for ^1",  textShortenToWidth(vote_called_vote, vid_conwidth/2/sbar_fontsize_x, stringwidth_colors));
+		s = strcat("^2A vote has been called for ^1", vote_called_vote);
 		o = Sbar_DrawNoteLine(o, s);
 
 		if(vote_waiting_for_me)
@@ -2497,22 +2409,21 @@
 	}
 
 	Sbar_UpdatePlayerTeams();
+
 	if (intermission == 2) // map voting screen
 	{
-		if(sb_showaccuracy) {
+		if(sb_showscores) {
+			Sbar_DrawScoreboard();
+			Sbar_Score();
+			Sbar_Timer();
+		}
+		else if(sb_showaccuracy) {
 			Sbar_DrawAccuracyStats();
 			Sbar_Score();
 			Sbar_Timer();
 		}
-		else if(sb_showscores) {
-              		Sbar_DrawScoreboard();
-                        Sbar_Score();
-                        Sbar_Timer();
-                }
-		else
+  		else
 			Sbar_FinaleOverlay();
-
-		Sbar_Reset();
 	}
 	else if (sb_showscores_force || getstati(STAT_HEALTH) <= 0 || intermission == 1)
 	{
@@ -2522,15 +2433,14 @@
 			Sbar_DrawScoreboard();
 		Sbar_Score();
 		Sbar_Timer();
-
-		Sbar_Reset();
   	}
 	else
 	{
-		if(sb_showaccuracy)
-			Sbar_DrawAccuracyStats();
-		else
+		if (sb_showscores)
 			Sbar_DrawScoreboard();
+		else if(sb_showaccuracy)
+			Sbar_DrawAccuracyStats();
+
 		float armor, health;
 		armor = getstati(STAT_ARMOR);
 		health = getstati(STAT_HEALTH);
@@ -2604,7 +2514,7 @@
 				}
 				else {
 					drawpic(armor_pos + '78 -4.5 0', "gfx/hud/sb_armor", '32 32 0', '1 1 1', (x+10)/55 * sbar_alpha_fg, DRAWFLAG_NORMAL);
-					Sbar_DrawXNum_Colored(armor_pos, x, 24, sbar_alpha_fg);
+					Sbar_DrawXNum_Colored(armor_pos, x, 24, (x+10)/55 * sbar_alpha_fg);
 				}
 			}
 
@@ -2614,6 +2524,19 @@
 			Sbar_DrawXNum_Colored(health_pos, x, 24, sbar_alpha_fg);
 		}
 
+		// weapon icons
+		x = 1.0;
+		Sbar_DrawWeapon_Clear();
+		for(i = 1; i <= 24; ++i)
+		{
+			if(weaponimpulse[i-1] >= 0)
+			if(stat_weapons & x)
+			{
+				Sbar_DrawWeapon(i-1, fade, (i == activeweapon), i);
+			}
+			x *= 2;
+		}
+
 		// ammo
 		float a; // i will be the ammo type (already declared), a will contain how much ammo there is of type i
 
@@ -2701,20 +2624,7 @@
 
 		// draw strength/invincibility icon and timer
 		CSQC_Strength_Timer();
-
-		// weapon icons
-                if(cvar("sbar_showweaponicons")) {
-			x = 1.0;
-               		Sbar_DrawWeapon_Clear();
-                	for(i = 1; i <= 24; ++i)
-                	{
-                        	if(weaponimpulse[i-1] >= 0)
-                       		if(stat_weapons & x)
-					Sbar_DrawWeapon(i-1, fade, (i == activeweapon), i);
-                	        x *= 2;
-                	}
-		}
-
+		
 		// draw gametype specific icons
 		if(gametype == GAME_KEYHUNT)
 			CSQC_kh_hud();
@@ -2722,10 +2632,9 @@
 			CSQC_ctf_hud();
 		else if(gametype == GAME_NEXBALL)
 			CSQC_nb_hud();
-		else if(gametype == GAME_CTS || gametype == GAME_RACE)
-			CSQC_race_hud();
+  		else if(gametype == GAME_KEEPAWAY)
+			CSQC_ka_hud();
 	}
-	return;
 }
 
 // CTF HUD
@@ -3098,3 +3007,18 @@
 	}
 	drawfont = sbar_font;
 }
+// Keep Away HUD
+void CSQC_ka_hud(void)
+{
+	vector pos;
+	float stat_items;
+	
+	stat_items = getstati(STAT_ITEMS);
+	
+	pos_x = 4;
+	pos_y = vid_conheight - 42;
+	pos_z = 0;
+	
+	if (stat_items & IT_KEY1)
+		drawpic(pos, "gfx/hud/sb_nexball_carrying", '80 34 0', '1 1 1', 1, DRAWFLAG_NORMAL);
+}
