diff --git a/src/doomdef.h b/src/doomdef.h
index 60e7dc2031ba6b6d5b100410d5cc8c410de8c241..1b0e76314b13d080fc18c8f3463c066616c4b8c8 100644
--- a/src/doomdef.h
+++ b/src/doomdef.h
@@ -82,6 +82,7 @@
 #include "version.h"
 #include "doomtype.h"
 
+#include <assert.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -648,6 +649,7 @@ UINT32 quickncasehash (const char *p, size_t n)
 #else
 #define I_Assert(e) ((void)0)
 #endif
+#define I_StaticAssert(e) static_assert(e, "Static assertion failed: " #e)
 
 // The character that separates pathnames. Forward slash on
 // most systems, but reverse solidus (\) on Windows.
diff --git a/src/lua_hudlib.c b/src/lua_hudlib.c
index d665212636530ee8e5610d2175510a2bc7d97444..08e0367f9e2cd5a6c71eb0dcfaf57948194b0bea 100644
--- a/src/lua_hudlib.c
+++ b/src/lua_hudlib.c
@@ -47,6 +47,7 @@ static const char *const hud_disable_options[] = {
 	"time",
 	"rings",
 	"lives",
+	"input",
 
 	"weaponrings",
 	"powerstones",
@@ -70,6 +71,10 @@ static const char *const hud_disable_options[] = {
 	"intermissionemeralds",
 	NULL};
 
+// you know, let's actually make sure that the table is synced.
+// because fuck knows how many times this has happened at this point. :v
+I_StaticAssert(sizeof(hud_disable_options) / sizeof(*hud_disable_options) == hud_MAX+1);
+
 enum hudinfo {
 	hudinfo_x = 0,
 	hudinfo_y,