Index: code/hud/hud.cpp
===================================================================
--- code/hud/hud.cpp	(revision 11274)
+++ code/hud/hud.cpp	(working copy)
@@ -151,49 +151,6 @@
 	}
 };
 
-// used to draw the kills gauge
-hud_frames Kills_gauge;
-int Kills_gauge_loaded = 0;
-int Kills_gauge_coords[GR_NUM_RESOLUTIONS][2] = {
-	{ // GR_640
-		497, 361
-	},
-	{ // GR_1024
-		880, 624
-	}
-};
-int Kills_text_coords[GR_NUM_RESOLUTIONS][2] = {
-	{ // GR_640
-		503, 365
-	},
-	{ // GR_1024
-		886, 628
-	}
-};
-
-int Kills_text_val_coords_gr[GR_NUM_RESOLUTIONS][2] = {
-	{ // GR_640
-		615, 365
-	},
-	{ // GR_1024
-		984, 628
-	}
-};
-
-int Kills_text_val_coords[GR_NUM_RESOLUTIONS][2] = {
-	{ // GR_640
-		571, 365
-	},
-	{ // GR_1024
-		954, 628
-	}
-};
-
-char Kills_fname[GR_NUM_RESOLUTIONS][MAX_FILENAME_LEN] = {
-	"kills1",
-	"kills1"
-};
-
 // used to draw the hud support view
 static int Hud_support_view_active;
 static int Hud_support_view_abort;		// active when we need to display abort message
@@ -237,7 +194,6 @@
 int hud_objective_notify_active();
 void hud_subspace_notify_abort();
 void hud_maybe_display_subspace_notify();
-void hud_init_kills_gauge();
 int hud_maybe_render_emp_icon();
 void hud_init_emp_icon();
 
@@ -1223,7 +1179,6 @@
 	hud_init_wingman_status_gauge();
 	hud_init_target_static();
 	hud_init_text_flash_gauge();
-	hud_init_kills_gauge();
 	hud_stop_subspace_notify();
 	hud_stop_objective_notify();
 	hud_target_last_transmit_level_init();
@@ -2423,6 +2378,44 @@
 	renderString(fl2i((float)position[0] - ((float)w / 2.0f)), position[1], Hud_text_flash);
 }
 
+HudGaugeDummy::HudGaugeDummy():
+HudGauge(HUD_OBJECT_DUMMY, HUD_DUMMY_GAUGE, false, false, (VM_EXTERNAL | VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY | VM_OTHER_SHIP), 255, 255, 255)
+{
+}
+
+void HudGaugeDummy::initBitmaps(const char *fname)
+{
+	Dummy_gauge.first_frame = bm_load_animation(fname, &Dummy_gauge.num_frames);
+	if ( Dummy_gauge.first_frame == -1 ) {
+		Warning(LOCATION, "Could not load in the ani: %s\n", fname);
+	}
+}
+
+void HudGaugeDummy::initTextOffsets(int x, int y)
+{
+	text_offsets[0] = x;
+	text_offsets[1] = y;
+}
+
+void HudGaugeDummy::initTextValueOffsets(int x, int y)
+{
+	text_value_offsets[0] = x;
+	text_value_offsets[1] = y;
+}
+
+void HudGaugeDummy::pageIn()
+{
+	bm_page_in_aabitmap(Dummy_gauge.first_frame, Dummy_gauge.num_frames);
+}
+
+/**
+ * @brief Display absolutely nothing.
+ */
+void HudGaugeDummy::render(float frametime)
+{
+	return;
+}
+
 HudGaugeKills::HudGaugeKills():
 HudGauge(HUD_OBJECT_KILLS, HUD_KILLS_GAUGE, false, false, (VM_EXTERNAL | VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY | VM_OTHER_SHIP), 255, 255, 255)
 {
@@ -2572,14 +2565,6 @@
 }
 
 /**
- * @brief Obsolete initializer for the kills gauge. Now superseded by the new HUD code.
- */
-void hud_init_kills_gauge()
-{
-	Kills_gauge_loaded = 1;
-}
-
-/**
  * @brief Called at mission start to init data, and load support view bitmap if required
  */
 void hud_support_view_init()
Index: code/hud/hud.h
===================================================================
--- code/hud/hud.h	(revision 11274)
+++ code/hud/hud.h	(working copy)
@@ -352,6 +352,21 @@
 	int maybeTextFlash();
 };
 
+class HudGaugeDummy: public HudGauge
+{
+	hud_frames Dummy_gauge;
+
+	int text_offsets[2];
+	int text_value_offsets[2];
+public:
+	HudGaugeDummy();
+	void initBitmaps(const char *fname);
+	void initTextOffsets(int x, int y);
+	void initTextValueOffsets(int x, int y);
+	void render(float frametime);
+	void pageIn();
+};
+
 class HudGaugeKills: public HudGauge
 {
 	hud_frames Kills_gauge;
Index: code/hud/hudconfig.cpp
===================================================================
--- code/hud/hudconfig.cpp	(revision 11274)
+++ code/hud/hudconfig.cpp	(working copy)
@@ -87,7 +87,8 @@
 	"warning flash",
 	"comm menu",
 	"support gauge",
-	"lag gauge"
+	"lag gauge",
+	"dummy gauge"
 };
 
 // specify the max distance that the radar should detect objects
@@ -302,6 +303,7 @@
 		HC_gauge_region("HCB_52",	465,	8,		52,	0,	0,	-1, 0,	0),			// comm menu
 		HC_gauge_region("HCB_46",	324,	264,	46,	0,	0,	-1, 0,	0),			// support view gauge
 		HC_gauge_region("HCB_47",	418,	262,	47,	0,	0,	-1, 0,	0),			// netlag icon gauge
+		HC_gauge_region("none",		1,		1,		-1,	0,	0,	-1,	0,	0),			// dummy gauge
 	//XSTR:ON
 	},
 	{ // GR_1024
@@ -345,6 +347,7 @@
 		HC_gauge_region("2_HCB_52",	744,	14,	52,	0,	0,	-1, 0,	0),			// comm menu
 		HC_gauge_region("2_HCB_46",	520,	422,	46,	0,	0,	-1, 0,	0),			// support view gauge
 		HC_gauge_region("2_HCB_47",	670,	419,	47,	0,	0,	-1, 0,	0),			// netlag icon gauge
+		HC_gauge_region("none",		1,		1,		-1,	0,	0,	-1,	0,	0),			// dummy gauge
 	//XSTR:ON
 	}
 };
@@ -440,6 +443,8 @@
 		return XSTR("support gauge", 1461);
 	case 38:
 		return XSTR("lag gauge", 1462);
+	case 39:
+		return XSTR("dummy gauge", -1);
 	}
 	return NULL;
 }
Index: code/hud/hudgauges.h
===================================================================
--- code/hud/hudgauges.h	(revision 11274)
+++ code/hud/hudgauges.h	(working copy)
@@ -13,7 +13,7 @@
 #define __HUD_COMMON_H__
 
 // HUD gauge types
-#define NUM_HUD_GAUGES							39
+#define NUM_HUD_GAUGES							40
 
 #define HUD_LEAD_INDICATOR						0
 #define HUD_ORIENTATION_TEE					1
@@ -54,6 +54,7 @@
 #define HUD_MESSAGE_BOX							36
 #define HUD_SUPPORT_GAUGE						37
 #define HUD_LAG_GAUGE							38
+#define HUD_DUMMY_GAUGE							39
 
 extern char *HUD_gauge_text[NUM_HUD_GAUGES];					// defined in sexp.cpp!!!!
 
Index: code/hud/hudparse.cpp
===================================================================
--- code/hud/hudparse.cpp	(revision 11274)
+++ code/hud/hudparse.cpp	(working copy)
@@ -50,7 +50,7 @@
 int Hud_font = -1;
 
 //WARNING: If you add gauges to this array, make sure to bump num_default_gauges!
-int num_default_gauges = 42;
+int num_default_gauges = 43;
 static int retail_gauges[] = {
 	HUD_OBJECT_MESSAGES,
 	HUD_OBJECT_TRAINING_MESSAGES,
@@ -91,6 +91,7 @@
 	HUD_OBJECT_HOSTILE_TRI,
 	HUD_OBJECT_TARGET_TRI,
 	HUD_OBJECT_MISSILE_TRI,
+	HUD_OBJECT_DUMMY,
 	HUD_OBJECT_KILLS,
 	HUD_OBJECT_FIXED_MESSAGES,
 	HUD_OBJECT_ETS_RETAIL
@@ -144,6 +145,7 @@
 	{ "Hostile direction",	HUD_OBJECT_HOSTILE_TRI,			0},
 	{ "Target direction",	HUD_OBJECT_TARGET_TRI,			0},
 	{ "Missile indicator",	HUD_OBJECT_MISSILE_TRI,			0},
+	{ "Dummy",				HUD_OBJECT_DUMMY,				0},
 	{ "Kills",				HUD_OBJECT_KILLS,				0},
 	{ "Fixed messages",		HUD_OBJECT_FIXED_MESSAGES,		0},
 	{ "Ets retail",			HUD_OBJECT_ETS_RETAIL,			0}
@@ -840,6 +842,9 @@
 	if(optional_string("+Missile Triangles:"))
 		return HUD_OBJECT_MISSILE_TRI;
 
+	if(optional_string("+Dummy:"))
+		return HUD_OBJECT_DUMMY;
+
 	if(optional_string("+Kills:"))
 		return HUD_OBJECT_KILLS;
 
@@ -1021,6 +1026,9 @@
 	case HUD_OBJECT_MISSILE_TRI:
 		load_gauge_missile_tri(base_w, base_h, hud_font, scale_gauge, ship_idx, use_clr);
 		break;
+	case HUD_OBJECT_DUMMY:
+		load_gauge_dummy(base_w, base_h, hud_font, scale_gauge, ship_idx, use_clr);
+		break;
 	case HUD_OBJECT_KILLS:
 		load_gauge_kills(base_w, base_h, hud_font, scale_gauge, ship_idx, use_clr);
 		break;
@@ -5088,6 +5096,60 @@
 	}
 }
 
+void load_gauge_dummy(int base_w, int base_h, int hud_font, bool scale_gauge, SCP_vector<int>* ship_idx, color *use_clr)
+{
+	float origin[2] = {1.0, 1.0};
+	int offset[2];
+	int text_offsets[2] = {6, 4};
+	int text_value_offsets[2] = {74, 4};
+	char fname[MAX_FILENAME_LEN] = "kills1";
+
+	if(gr_screen.res == GR_640) {
+		offset[0] = -143;
+		offset[1] = -119;
+		
+		if(Lcl_gr) {
+			text_value_offsets[0] = 118;
+			text_value_offsets[1] = 4;
+		}
+	} else {
+		offset[0] = -144;
+		offset[1] = -144;
+
+		if(Lcl_gr) {
+			text_value_offsets[0] = 104;
+			text_value_offsets[1] = 4;
+		}
+	}
+
+	HudGaugeDummy* hud_gauge = gauge_load_common<HudGaugeDummy>(base_w, base_h, hud_font, scale_gauge, ship_idx, use_clr, origin[0], origin[1], offset[0], offset[1]);
+
+	if(optional_string("Filename:")) {
+		stuff_string(fname, F_NAME, MAX_FILENAME_LEN);
+	}
+	if(optional_string("Text Offsets:")) {
+		stuff_int_list(text_offsets, 2);
+	}
+	if(optional_string("Value Offsets:")) {
+		stuff_int_list(text_value_offsets, 2);
+	}
+
+	hud_gauge->initBitmaps(fname);
+	hud_gauge->initTextOffsets(text_offsets[0], text_offsets[1]);
+	hud_gauge->initTextValueOffsets(text_value_offsets[0], text_value_offsets[1]);
+
+	if(ship_idx->at(0) >= 0) {
+		for (SCP_vector<int>::iterator ship_index = ship_idx->begin(); ship_index != ship_idx->end(); ++ship_index) {
+			HudGaugeDummy* instance = new HudGaugeDummy();
+			*instance = *hud_gauge;
+			Ship_info[*ship_index].hud_gauges.push_back(instance);
+		}
+		delete hud_gauge;
+	} else {
+		default_hud_gauges.push_back(hud_gauge);
+	}
+}
+
 void load_gauge_kills(int base_w, int base_h, int hud_font, bool scale_gauge, SCP_vector<int>* ship_idx, color *use_clr)
 {
 	float origin[2] = {1.0, 1.0};
Index: code/hud/hudparse.h
===================================================================
--- code/hud/hudparse.h	(revision 11274)
+++ code/hud/hudparse.h	(working copy)
@@ -29,7 +29,7 @@
 void load_missing_retail_gauges();
 void check_color(int *colorp);
 
-#define NUM_HUD_OBJECT_ENTRIES			56		// not used anywhere?
+#define NUM_HUD_OBJECT_ENTRIES			57		// not used anywhere?
 int parse_gauge_type();
 void load_gauge(int gauge, int base_w = -1, int base_h = -1, int font = -1, bool scale_gauge = true, SCP_vector<int>* ship_idx = NULL, color *use_clr = NULL);
 
@@ -201,4 +201,7 @@
 #define HUD_OBJECT_SECONDARY_WEAPONS	55
 void load_gauge_secondary_weapons(int base_w, int base_h, int font, bool scale_gauge = true, SCP_vector<int>* ship_idx = NULL, color *use_clr = NULL);
 
+#define HUD_OBJECT_DUMMY				56
+void load_gauge_dummy(int base_w, int base_h, int font, bool scale_gauge = true, SCP_vector<int>* ship_idx = NULL, color *use_clr = NULL);
+
 #endif // _HUDPARSE_H
