diff --git a/src/dehacked.c b/src/dehacked.c
index d0f582385a78a01768c343f0cc84a39268ec4960..0aa577e3d4dc74e9f2a00d1616c3d38fcaf54f60 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -1628,9 +1628,9 @@ static actionpointer_t actionpointers[] =
 	{{A_Pain},                 "A_PAIN"},
 	{{A_Fall},                 "A_FALL"},
 	{{A_MonitorPop},           "A_MONITORPOP"},
-	{{A_BigMonitorPop},        "A_BIGMONITORPOP"},
-	{{A_BigMonitorRestore},    "A_BIGMONITORRESTORE"},
-	{{A_BigMonitorSparkle},    "A_BIGMONITORSPARKLE"},
+	{{A_GoldMonitorPop},       "A_GOLDMONITORPOP"},
+	{{A_GoldMonitorRestore},   "A_GOLDMONITORRESTORE"},
+	{{A_GoldMonitorSparkle},   "A_GOLDMONITORSPARKLE"},
 	{{A_Look},                 "A_LOOK"},
 	{{A_Chase},                "A_CHASE"},
 	{{A_FaceStabChase},        "A_FACESTABCHASE"},
@@ -4867,14 +4867,14 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
 	"S_BOX_POP1",
 	"S_BOX_POP2",
 
-	"S_BIGBOX_FLICKER",
-	"S_BIGBOX_OFF1",
-	"S_BIGBOX_OFF2",
-	"S_BIGBOX_OFF3",
-	"S_BIGBOX_OFF4",
-	"S_BIGBOX_OFF5",
-	"S_BIGBOX_OFF6",
-	"S_BIGBOX_OFF7",
+	"S_GOLDBOX_FLICKER",
+	"S_GOLDBOX_OFF1",
+	"S_GOLDBOX_OFF2",
+	"S_GOLDBOX_OFF3",
+	"S_GOLDBOX_OFF4",
+	"S_GOLDBOX_OFF5",
+	"S_GOLDBOX_OFF6",
+	"S_GOLDBOX_OFF7",
 
 	// Monitor States (one per box)
 	"S_MYSTERY_BOX",
@@ -4895,24 +4895,16 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
 	"S_SCORE1K_BOX",
 	"S_SCORE10K_BOX",
 
-	// Repeat Monitor States (one per box)
-	"S_MYSTERY_BIGBOX",
-	"S_RING_BIGBOX",
-	"S_PITY_BIGBOX",
-	"S_ATTRACT_BIGBOX",
-	"S_FORCE_BIGBOX",
-	"S_ARMAGEDDON_BIGBOX",
-	"S_WHIRLWIND_BIGBOX",
-	"S_ELEMENTAL_BIGBOX",
-	"S_SNEAKERS_BIGBOX",
-	"S_INVULN_BIGBOX",
-	"S_1UP_BIGBOX",
-	"S_EGGMAN_BIGBOX",
-	"S_MIXUP_BIGBOX",
-	"S_GRAVITY_BIGBOX",
-	"S_RECYCLER_BIGBOX",
-	"S_SCORE1K_BIGBOX",
-	"S_SCORE10K_BIGBOX",
+	// Gold Repeat Monitor States (one per box)
+	"S_PITY_GOLDBOX",
+	"S_ATTRACT_GOLDBOX",
+	"S_FORCE_GOLDBOX",
+	"S_ARMAGEDDON_GOLDBOX",
+	"S_WHIRLWIND_GOLDBOX",
+	"S_ELEMENTAL_GOLDBOX",
+	"S_SNEAKERS_GOLDBOX",
+	"S_INVULN_GOLDBOX",
+	"S_GRAVITY_GOLDBOX",
 
 	// Team Ring Boxes (these are special)
 	"S_RING_REDBOX1",
@@ -6785,23 +6777,15 @@ static const char *const MOBJTYPE_LIST[] = {  // array length left dynamic for s
 	"MT_SCORE10K_BOX",
 
 	// Monitor boxes -- repeating (big) boxes
-	"MT_RING_BIGBOX",
-	"MT_PITY_BIGBOX",
-	"MT_ATTRACT_BIGBOX",
-	"MT_FORCE_BIGBOX",
-	"MT_ARMAGEDDON_BIGBOX",
-	"MT_WHIRLWIND_BIGBOX",
-	"MT_ELEMENTAL_BIGBOX",
-	"MT_SNEAKERS_BIGBOX",
-	"MT_INVULN_BIGBOX",
-	"MT_1UP_BIGBOX",
-	"MT_EGGMAN_BIGBOX",
-	"MT_MIXUP_BIGBOX",
-	"MT_MYSTERY_BIGBOX",
-	"MT_GRAVITY_BIGBOX",
-	"MT_RECYCLER_BIGBOX",
-	"MT_SCORE1K_BIGBOX",
-	"MT_SCORE10K_BIGBOX",
+	"MT_PITY_GOLDBOX",
+	"MT_ATTRACT_GOLDBOX",
+	"MT_FORCE_GOLDBOX",
+	"MT_ARMAGEDDON_GOLDBOX",
+	"MT_WHIRLWIND_GOLDBOX",
+	"MT_ELEMENTAL_GOLDBOX",
+	"MT_SNEAKERS_GOLDBOX",
+	"MT_INVULN_GOLDBOX",
+	"MT_GRAVITY_GOLDBOX",
 
 	// Monitor boxes -- special
 	"MT_RING_REDBOX",
diff --git a/src/info.c b/src/info.c
index d00ecc5dca341cba3bcd8e1b31c18bdbd723e1da..af5126f3a8b48d703965e5197d2cad271bbdd00b 100644
--- a/src/info.c
+++ b/src/info.c
@@ -1248,14 +1248,14 @@ state_t states[NUMSTATES] =
 	{SPR_MSTV, 0,  4, {A_MonitorPop}, 0, 0, S_BOX_POP2}, // S_BOX_POP1
 	{SPR_MSTV, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BOX_POP2
 
-	{SPR_XLTV, 0,  1, {NULL}, 0, 0, S_SPAWNSTATE},  // S_BIGBOX_FLICKER
-	{SPR_XLTV, 1, 89, {A_BigMonitorPop}, 0, 0, S_BIGBOX_OFF2}, // S_BIGBOX_OFF1
-	{SPR_XLTV, 2,  4, {A_PlayAttackSound}, 0, 0, S_BIGBOX_OFF3}, // S_BIGBOX_OFF2
-	{SPR_XLTV, 3,  4, {NULL}, 0, 0, S_BIGBOX_OFF4}, // S_BIGBOX_OFF3
-	{SPR_XLTV, 4,  4, {NULL}, 0, 0, S_BIGBOX_OFF5}, // S_BIGBOX_OFF4
-	{SPR_XLTV, 5,  2, {NULL}, 0, 0, S_BIGBOX_OFF6}, // S_BIGBOX_OFF5
-	{SPR_XLTV, 6,  2, {NULL}, 0, 0, S_BIGBOX_OFF7}, // S_BIGBOX_OFF6
-	{SPR_XLTV, 6,  0, {A_BigMonitorRestore}, 0, 0, S_SPAWNSTATE}, // S_BIGBOX_OFF7
+	{SPR_XLTV, 0,  1, {NULL}, 0, 0, S_SPAWNSTATE},  // S_GOLDBOX_FLICKER
+	{SPR_XLTV, 1, 89, {A_GoldMonitorPop}, 0, 0, S_GOLDBOX_OFF2}, // S_GOLDBOX_OFF1
+	{SPR_XLTV, 2,  4, {A_PlayAttackSound}, 0, 0, S_GOLDBOX_OFF3}, // S_GOLDBOX_OFF2
+	{SPR_XLTV, 3,  4, {NULL}, 0, 0, S_GOLDBOX_OFF4}, // S_GOLDBOX_OFF3
+	{SPR_XLTV, 4,  4, {NULL}, 0, 0, S_GOLDBOX_OFF5}, // S_GOLDBOX_OFF4
+	{SPR_XLTV, 5,  2, {NULL}, 0, 0, S_GOLDBOX_OFF6}, // S_GOLDBOX_OFF5
+	{SPR_XLTV, 6,  2, {NULL}, 0, 0, S_GOLDBOX_OFF7}, // S_GOLDBOX_OFF6
+	{SPR_XLTV, 6,  0, {A_GoldMonitorRestore}, 0, 0, S_SPAWNSTATE}, // S_GOLDBOX_OFF7
 
 	// Monitor States (one per box)
 	{SPR_TVMY, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_MYSTERY_BOX
@@ -1276,24 +1276,16 @@ state_t states[NUMSTATES] =
 	{SPR_TV1K, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_SCORE1K_BOX
 	{SPR_TVTK, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_SCORE10K_BOX
 
-	// Repeat Monitor States (one per box)
-	{SPR_TVMY, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_MYSTERY_BIGBOX
-	{SPR_TVRI, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_RING_BIGBOX
-	{SPR_TVPI, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_PITY_BIGBOX
-	{SPR_TVAT, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_ATTRACT_BIGBOX
-	{SPR_TVFO, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_FORCE_BIGBOX
-	{SPR_TVAR, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_ARMAGEDDON_BIGBOX
-	{SPR_TVWW, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_WHIRLWIND_BIGBOX
-	{SPR_TVEL, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_ELEMENTAL_BIGBOX
-	{SPR_TVSS, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_SNEAKERS_BIGBOX
-	{SPR_TVIV, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_INVULN_BIGBOX
-	{SPR_TV1P, 1, 2, {A_DualAction}, S_MYSTERY_BIGBOX, S_1UP_BOX, S_BIGBOX_FLICKER}, // S_1UP_BIGBOX
-	{SPR_TVEG, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_EGGMAN_BIGBOX
-	{SPR_TVMX, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_MIXUP_BIGBOX
-	{SPR_TVGV, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_GRAVITY_BIGBOX
-	{SPR_TVRC, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_RECYCLER_BIGBOX
-	{SPR_TV1K, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_SCORE1K_BIGBOX
-	{SPR_TVTK, 1, 2, {A_BigMonitorSparkle}, 0, 0, S_BIGBOX_FLICKER}, // S_SCORE10K_BIGBOX
+	// Gold Repeat Monitor States (one per box)
+	{SPR_TVPI, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_PITY_GOLDBOX
+	{SPR_TVAT, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_ATTRACT_GOLDBOX
+	{SPR_TVFO, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_FORCE_GOLDBOX
+	{SPR_TVAR, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_ARMAGEDDON_GOLDBOX
+	{SPR_TVWW, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_WHIRLWIND_GOLDBOX
+	{SPR_TVEL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_ELEMENTAL_GOLDBOX
+	{SPR_TVSS, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_SNEAKERS_GOLDBOX
+	{SPR_TVIV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_INVULN_GOLDBOX
+	{SPR_TVGV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_GRAVITY_GOLDBOX
 
 	// Team Ring Boxes (these are special)
 	{SPR_TRRI, 0, 2, {NULL}, 0, 0, S_RING_REDBOX2}, // S_RING_REDBOX1
@@ -6568,47 +6560,20 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		S_NULL          // raisestate
 	},
 
-	{           // MT_RING_BIGBOX
-		430,            // doomednum
-		S_RING_BIGBOX,  // spawnstate
-		1,              // spawnhealth
-		S_NULL,         // seestate
-		sfx_None,       // seesound
-		8,              // reactiontime
-		sfx_monton,     // attacksound
-		S_RING_BIGBOX,  // painstate
-		0,              // painchance
-		sfx_None,       // painsound
-		S_NULL,         // meleestate
-		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
-		S_NULL,         // xdeathstate
-		sfx_pop,        // deathsound
-		0,              // speed
-		16*FRACUNIT,    // radius
-		32*FRACUNIT,    // height
-		0,              // display offset
-		100,            // mass
-		MT_RING_ICON,   // damage
-		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
-		S_NULL          // raisestate
-	},
-
-	{           // MT_PITY_BIGBOX
+	{           // MT_PITY_GOLDBOX
 		431,            // doomednum
-		S_PITY_BIGBOX,  // spawnstate
+		S_PITY_GOLDBOX, // spawnstate
 		1,              // spawnhealth
 		S_NULL,         // seestate
 		sfx_None,       // seesound
 		8,              // reactiontime
 		sfx_monton,     // attacksound
-		S_PITY_BIGBOX,  // painstate
+		S_PITY_GOLDBOX, // painstate
 		0,              // painchance
 		sfx_None,       // painsound
 		S_NULL,         // meleestate
 		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
+		S_GOLDBOX_OFF1, // deathstate
 		S_NULL,         // xdeathstate
 		sfx_pop,        // deathsound
 		0,              // speed
@@ -6618,24 +6583,24 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		100,            // mass
 		MT_PITY_ICON,   // damage
 		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
+		MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
 		S_NULL          // raisestate
 	},
 
-	{           // MT_ATTRACT_BIGBOX
+	{           // MT_ATTRACT_GOLDBOX
 		432,            // doomednum
-		S_ATTRACT_BIGBOX, // spawnstate
+		S_ATTRACT_GOLDBOX, // spawnstate
 		1,              // spawnhealth
 		S_NULL,         // seestate
 		sfx_None,       // seesound
 		8,              // reactiontime
 		sfx_monton,     // attacksound
-		S_ATTRACT_BIGBOX, // painstate
+		S_ATTRACT_GOLDBOX, // painstate
 		0,              // painchance
 		sfx_None,       // painsound
 		S_NULL,         // meleestate
 		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
+		S_GOLDBOX_OFF1, // deathstate
 		S_NULL,         // xdeathstate
 		sfx_pop,        // deathsound
 		0,              // speed
@@ -6645,24 +6610,24 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		100,            // mass
 		MT_ATTRACT_ICON,// damage
 		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
+		MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
 		S_NULL          // raisestate
 	},
 
-	{           // MT_FORCE_BIGBOX
+	{           // MT_FORCE_GOLDBOX
 		433,            // doomednum
-		S_FORCE_BIGBOX, // spawnstate
+		S_FORCE_GOLDBOX, // spawnstate
 		1,              // spawnhealth
 		S_NULL,         // seestate
 		sfx_None,       // seesound
 		8,              // reactiontime
 		sfx_monton,     // attacksound
-		S_FORCE_BIGBOX, // painstate
+		S_FORCE_GOLDBOX, // painstate
 		0,              // painchance
 		sfx_None,       // painsound
 		S_NULL,         // meleestate
 		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
+		S_GOLDBOX_OFF1, // deathstate
 		S_NULL,         // xdeathstate
 		sfx_pop,        // deathsound
 		0,              // speed
@@ -6672,24 +6637,24 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		100,            // mass
 		MT_FORCE_ICON,  // damage
 		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
+		MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
 		S_NULL          // raisestate
 	},
 
-	{           // MT_ARMAGEDDON_BIGBOX
+	{           // MT_ARMAGEDDON_GOLDBOX
 		434,            // doomednum
-		S_ARMAGEDDON_BIGBOX, // spawnstate
+		S_ARMAGEDDON_GOLDBOX, // spawnstate
 		1,              // spawnhealth
 		S_NULL,         // seestate
 		sfx_None,       // seesound
 		8,              // reactiontime
 		sfx_monton,     // attacksound
-		S_ARMAGEDDON_BIGBOX, // painstate
+		S_ARMAGEDDON_GOLDBOX, // painstate
 		0,              // painchance
 		sfx_None,       // painsound
 		S_NULL,         // meleestate
 		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
+		S_GOLDBOX_OFF1, // deathstate
 		S_NULL,         // xdeathstate
 		sfx_pop,        // deathsound
 		0,              // speed
@@ -6699,24 +6664,24 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		100,            // mass
 		MT_ARMAGEDDON_ICON, // damage
 		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
+		MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
 		S_NULL          // raisestate
 	},
 
-	{           // MT_WHIRLWIND_BIGBOX
+	{           // MT_WHIRLWIND_GOLDBOX
 		435,            // doomednum
-		S_WHIRLWIND_BIGBOX, // spawnstate
+		S_WHIRLWIND_GOLDBOX, // spawnstate
 		1,              // spawnhealth
 		S_NULL,         // seestate
 		sfx_None,       // seesound
 		8,              // reactiontime
 		sfx_monton,     // attacksound
-		S_WHIRLWIND_BIGBOX, // painstate
+		S_WHIRLWIND_GOLDBOX, // painstate
 		0,              // painchance
 		sfx_None,       // painsound
 		S_NULL,         // meleestate
 		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
+		S_GOLDBOX_OFF1, // deathstate
 		S_NULL,         // xdeathstate
 		sfx_pop,        // deathsound
 		0,              // speed
@@ -6726,24 +6691,24 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		100,            // mass
 		MT_WHIRLWIND_ICON, // damage
 		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
+		MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
 		S_NULL          // raisestate
 	},
 
-	{           // MT_ELEMENTAL_BIGBOX
+	{           // MT_ELEMENTAL_GOLDBOX
 		436,            // doomednum
-		S_ELEMENTAL_BIGBOX, // spawnstate
+		S_ELEMENTAL_GOLDBOX, // spawnstate
 		1,              // spawnhealth
 		S_NULL,         // seestate
 		sfx_None,       // seesound
 		8,              // reactiontime
 		sfx_monton,     // attacksound
-		S_ELEMENTAL_BIGBOX, // painstate
+		S_ELEMENTAL_GOLDBOX, // painstate
 		0,              // painchance
 		sfx_None,       // painsound
 		S_NULL,         // meleestate
 		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
+		S_GOLDBOX_OFF1, // deathstate
 		S_NULL,         // xdeathstate
 		sfx_pop,        // deathsound
 		0,              // speed
@@ -6753,24 +6718,24 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		100,            // mass
 		MT_ELEMENTAL_ICON, // damage
 		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
+		MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
 		S_NULL          // raisestate
 	},
 
-	{           // MT_SNEAKERS_BIGBOX
+	{           // MT_SNEAKERS_GOLDBOX
 		437,            // doomednum
-		S_SNEAKERS_BIGBOX, // spawnstate
+		S_SNEAKERS_GOLDBOX, // spawnstate
 		1,              // spawnhealth
 		S_NULL,         // seestate
 		sfx_None,       // seesound
 		8,              // reactiontime
 		sfx_monton,     // attacksound
-		S_SNEAKERS_BIGBOX, // painstate
+		S_SNEAKERS_GOLDBOX, // painstate
 		0,              // painchance
 		sfx_None,       // painsound
 		S_NULL,         // meleestate
 		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
+		S_GOLDBOX_OFF1, // deathstate
 		S_NULL,         // xdeathstate
 		sfx_pop,        // deathsound
 		0,              // speed
@@ -6780,24 +6745,24 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		100,            // mass
 		MT_SNEAKERS_ICON, // damage
 		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
+		MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
 		S_NULL          // raisestate
 	},
 
-	{           // MT_INVULN_BIGBOX
+	{           // MT_INVULN_GOLDBOX
 		438,            // doomednum
-		S_INVULN_BIGBOX, // spawnstate
+		S_INVULN_GOLDBOX, // spawnstate
 		1,              // spawnhealth
 		S_NULL,         // seestate
 		sfx_None,       // seesound
 		8,              // reactiontime
 		sfx_monton,     // attacksound
-		S_INVULN_BIGBOX, // painstate
+		S_INVULN_GOLDBOX, // painstate
 		0,              // painchance
 		sfx_None,       // painsound
 		S_NULL,         // meleestate
 		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
+		S_GOLDBOX_OFF1, // deathstate
 		S_NULL,         // xdeathstate
 		sfx_pop,        // deathsound
 		0,              // speed
@@ -6807,132 +6772,24 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		100,            // mass
 		MT_INVULN_ICON, // damage
 		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
+		MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
 		S_NULL          // raisestate
 	},
 
-	{           // MT_1UP_BIGBOX
-		439,            // doomednum
-		S_1UP_BIGBOX,   // spawnstate
-		1,              // spawnhealth
-		S_PLAY_BOX1,    // seestate
-		sfx_None,       // seesound
-		8,              // reactiontime
-		sfx_monton,     // attacksound
-		S_1UP_BIGBOX,   // painstate
-		0,              // painchance
-		sfx_None,       // painsound
-		S_NULL,         // meleestate
-		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
-		S_NULL,         // xdeathstate
-		sfx_pop,        // deathsound
-		0,              // speed
-		16*FRACUNIT,    // radius
-		32*FRACUNIT,    // height
-		0,              // display offset
-		100,            // mass
-		MT_1UP_ICON,    // damage
-		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
-		S_NULL          // raisestate
-	},
-
-	{           // MT_EGGMAN_BIGBOX
-		440,            // doomednum
-		S_EGGMAN_BIGBOX, // spawnstate
-		1,              // spawnhealth
-		S_NULL,         // seestate
-		sfx_None,       // seesound
-		8,              // reactiontime
-		sfx_monton,     // attacksound
-		S_EGGMAN_BIGBOX, // painstate
-		0,              // painchance
-		sfx_None,       // painsound
-		S_NULL,         // meleestate
-		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
-		S_NULL,         // xdeathstate
-		sfx_pop,        // deathsound
-		0,              // speed
-		16*FRACUNIT,    // radius
-		32*FRACUNIT,    // height
-		0,              // display offset
-		100,            // mass
-		MT_EGGMAN_ICON, // damage
-		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
-		S_NULL          // raisestate
-	},
-
-	{           // MT_MIXUP_BIGBOX
-		441,            // doomednum
-		S_MIXUP_BIGBOX, // spawnstate
-		1,              // spawnhealth
-		S_NULL,         // seestate
-		sfx_None,       // seesound
-		8,              // reactiontime
-		sfx_monton,     // attacksound
-		S_MIXUP_BIGBOX, // painstate
-		0,              // painchance
-		sfx_None,       // painsound
-		S_NULL,         // meleestate
-		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
-		S_NULL,         // xdeathstate
-		sfx_pop,        // deathsound
-		0,              // speed
-		16*FRACUNIT,    // radius
-		32*FRACUNIT,    // height
-		0,              // display offset
-		100,            // mass
-		MT_MIXUP_ICON,  // damage
-		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
-		S_NULL          // raisestate
-	},
-
-	{           // MT_MYSTERY_BIGBOX
-		442,            // doomednum
-		S_MYSTERY_BIGBOX, // spawnstate
-		1,              // spawnhealth
-		S_NULL,         // seestate
-		sfx_None,       // seesound
-		8,              // reactiontime
-		sfx_monton,     // attacksound
-		S_MYSTERY_BIGBOX, // painstate
-		0,              // painchance
-		sfx_None,       // painsound
-		S_NULL,         // meleestate
-		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
-		S_NULL,         // xdeathstate
-		sfx_pop,        // deathsound
-		0,              // speed
-		16*FRACUNIT,    // radius
-		32*FRACUNIT,    // height
-		0,              // display offset
-		100,            // mass
-		MT_UNKNOWN,     // damage
-		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
-		S_NULL          // raisestate
-	},
-
-	{           // MT_GRAVITY_BIGBOX
+	{           // MT_GRAVITY_GOLDBOX
 		443,            // doomednum
-		S_GRAVITY_BIGBOX, // spawnstate
+		S_GRAVITY_GOLDBOX, // spawnstate
 		1,              // spawnhealth
 		S_NULL,         // seestate
 		sfx_None,       // seesound
 		8,              // reactiontime
 		sfx_monton,     // attacksound
-		S_GRAVITY_BIGBOX, // painstate
+		S_GRAVITY_GOLDBOX, // painstate
 		0,              // painchance
 		sfx_None,       // painsound
 		S_NULL,         // meleestate
 		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
+		S_GOLDBOX_OFF1, // deathstate
 		S_NULL,         // xdeathstate
 		sfx_pop,        // deathsound
 		0,              // speed
@@ -6942,88 +6799,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		100,            // mass
 		MT_GRAVITY_ICON, // damage
 		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
-		S_NULL          // raisestate
-	},
-
-	{           // MT_RECYCLER_BIGBOX
-		446,            // doomednum
-		S_RECYCLER_BIGBOX, // spawnstate
-		1,              // spawnhealth
-		S_NULL,         // seestate
-		sfx_None,       // seesound
-		8,              // reactiontime
-		sfx_monton,     // attacksound
-		S_RECYCLER_BIGBOX, // painstate
-		0,              // painchance
-		sfx_None,       // painsound
-		S_NULL,         // meleestate
-		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
-		S_NULL,         // xdeathstate
-		sfx_pop,        // deathsound
-		0,              // speed
-		16*FRACUNIT,    // radius
-		32*FRACUNIT,    // height
-		0,              // display offset
-		100,            // mass
-		MT_RECYCLER_ICON, // damage
-		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
-		S_NULL          // raisestate
-	},
-
-	{           // MT_SCORE1K_BIGBOX
-		448,            // doomednum
-		S_SCORE1K_BIGBOX, // spawnstate
-		1,              // spawnhealth
-		S_NULL,         // seestate
-		sfx_None,       // seesound
-		8,              // reactiontime
-		sfx_monton,     // attacksound
-		S_SCORE1K_BIGBOX, // painstate
-		0,              // painchance
-		sfx_None,       // painsound
-		S_NULL,         // meleestate
-		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
-		S_NULL,         // xdeathstate
-		sfx_pop,        // deathsound
-		0,              // speed
-		16*FRACUNIT,    // radius
-		32*FRACUNIT,    // height
-		0,              // display offset
-		100,            // mass
-		MT_SCORE1K_ICON, // damage
-		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
-		S_NULL          // raisestate
-	},
-
-	{           // MT_SCORE10K_BIGBOX
-		449,            // doomednum
-		S_SCORE10K_BIGBOX, // spawnstate
-		1,              // spawnhealth
-		S_NULL,         // seestate
-		sfx_None,       // seesound
-		8,              // reactiontime
-		sfx_monton,     // attacksound
-		S_SCORE10K_BIGBOX, // painstate
-		0,              // painchance
-		sfx_None,       // painsound
-		S_NULL,         // meleestate
-		S_NULL,         // missilestate
-		S_BIGBOX_OFF1,  // deathstate
-		S_NULL,         // xdeathstate
-		sfx_pop,        // deathsound
-		0,              // speed
-		16*FRACUNIT,    // radius
-		32*FRACUNIT,    // height
-		0,              // display offset
-		100,            // mass
-		MT_SCORE10K_ICON, // damage
-		sfx_None,       // activesound
-		MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
+		MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
 		S_NULL          // raisestate
 	},
 
diff --git a/src/info.h b/src/info.h
index d031addf53a5c46eb77a13e1bb6920923730d43f..d68bf5abbfcd11b3eac5b6a3fae3bdccd518a470 100644
--- a/src/info.h
+++ b/src/info.h
@@ -28,9 +28,9 @@ void A_Explode();
 void A_Pain();
 void A_Fall();
 void A_MonitorPop();
-void A_BigMonitorPop();
-void A_BigMonitorRestore();
-void A_BigMonitorSparkle();
+void A_GoldMonitorPop();
+void A_GoldMonitorRestore();
+void A_GoldMonitorSparkle();
 void A_Look();
 void A_Chase();
 void A_FaceStabChase();
@@ -1765,14 +1765,14 @@ typedef enum state
 	S_BOX_POP1,
 	S_BOX_POP2,
 
-	S_BIGBOX_FLICKER,
-	S_BIGBOX_OFF1,
-	S_BIGBOX_OFF2,
-	S_BIGBOX_OFF3,
-	S_BIGBOX_OFF4,
-	S_BIGBOX_OFF5,
-	S_BIGBOX_OFF6,
-	S_BIGBOX_OFF7,
+	S_GOLDBOX_FLICKER,
+	S_GOLDBOX_OFF1,
+	S_GOLDBOX_OFF2,
+	S_GOLDBOX_OFF3,
+	S_GOLDBOX_OFF4,
+	S_GOLDBOX_OFF5,
+	S_GOLDBOX_OFF6,
+	S_GOLDBOX_OFF7,
 
 	// Monitor States (one per box)
 	S_MYSTERY_BOX,
@@ -1793,24 +1793,16 @@ typedef enum state
 	S_SCORE1K_BOX,
 	S_SCORE10K_BOX,
 
-	// Repeat Monitor States (one per box)
-	S_MYSTERY_BIGBOX,
-	S_RING_BIGBOX,
-	S_PITY_BIGBOX,
-	S_ATTRACT_BIGBOX,
-	S_FORCE_BIGBOX,
-	S_ARMAGEDDON_BIGBOX,
-	S_WHIRLWIND_BIGBOX,
-	S_ELEMENTAL_BIGBOX,
-	S_SNEAKERS_BIGBOX,
-	S_INVULN_BIGBOX,
-	S_1UP_BIGBOX,
-	S_EGGMAN_BIGBOX,
-	S_MIXUP_BIGBOX,
-	S_GRAVITY_BIGBOX,
-	S_RECYCLER_BIGBOX,
-	S_SCORE1K_BIGBOX,
-	S_SCORE10K_BIGBOX,
+	// Gold Repeat Monitor States (one per box)
+	S_PITY_GOLDBOX,
+	S_ATTRACT_GOLDBOX,
+	S_FORCE_GOLDBOX,
+	S_ARMAGEDDON_GOLDBOX,
+	S_WHIRLWIND_GOLDBOX,
+	S_ELEMENTAL_GOLDBOX,
+	S_SNEAKERS_GOLDBOX,
+	S_INVULN_GOLDBOX,
+	S_GRAVITY_GOLDBOX,
 
 	// Team Ring Boxes (these are special)
 	S_RING_REDBOX1,
@@ -3703,23 +3695,15 @@ typedef enum mobj_type
 	MT_SCORE10K_BOX,
 
 	// Monitor boxes -- repeating (big) boxes
-	MT_RING_BIGBOX,
-	MT_PITY_BIGBOX,
-	MT_ATTRACT_BIGBOX,
-	MT_FORCE_BIGBOX,
-	MT_ARMAGEDDON_BIGBOX,
-	MT_WHIRLWIND_BIGBOX,
-	MT_ELEMENTAL_BIGBOX,
-	MT_SNEAKERS_BIGBOX,
-	MT_INVULN_BIGBOX,
-	MT_1UP_BIGBOX,
-	MT_EGGMAN_BIGBOX,
-	MT_MIXUP_BIGBOX,
-	MT_MYSTERY_BIGBOX,
-	MT_GRAVITY_BIGBOX,
-	MT_RECYCLER_BIGBOX,
-	MT_SCORE1K_BIGBOX,
-	MT_SCORE10K_BIGBOX,
+	MT_PITY_GOLDBOX,
+	MT_ATTRACT_GOLDBOX,
+	MT_FORCE_GOLDBOX,
+	MT_ARMAGEDDON_GOLDBOX,
+	MT_WHIRLWIND_GOLDBOX,
+	MT_ELEMENTAL_GOLDBOX,
+	MT_SNEAKERS_GOLDBOX,
+	MT_INVULN_GOLDBOX,
+	MT_GRAVITY_GOLDBOX,
 
 	// Monitor boxes -- special
 	MT_RING_REDBOX,
diff --git a/src/p_enemy.c b/src/p_enemy.c
index d050972db1cc888acb2c4dbae1d7910037da2083..4555695c992bed7679d31d8f5f0fa5b0c6fc7256 100644
--- a/src/p_enemy.c
+++ b/src/p_enemy.c
@@ -2635,20 +2635,20 @@ void A_MonitorPop(mobj_t *actor)
 	}
 }
 
-// Function: A_BigMonitorPop
+// Function: A_GoldMonitorPop
 //
 // Description: Used by repeating monitors when they turn off. They don't really pop, but, you know...
 //
 // var1 = unused
 // var2 = unused
 //
-void A_BigMonitorPop(mobj_t *actor)
+void A_GoldMonitorPop(mobj_t *actor)
 {
 	mobjtype_t item = 0;
 	mobj_t *newmobj;
 
 #ifdef HAVE_BLUA
-	if (LUA_CallAction("A_BigMonitorPop", actor))
+	if (LUA_CallAction("A_GoldMonitorPop", actor))
 		return;
 #endif
 
@@ -2685,7 +2685,7 @@ void A_BigMonitorPop(mobj_t *actor)
 
 	if (item == 0)
 	{
-		CONS_Debug(DBG_GAMELOGIC, "Powerup item not defined in 'damage' field for A_BigMonitorPop\n");
+		CONS_Debug(DBG_GAMELOGIC, "Powerup item not defined in 'damage' field for A_GoldMonitorPop\n");
 		return;
 	}
 
@@ -2716,17 +2716,17 @@ void A_BigMonitorPop(mobj_t *actor)
 	}
 }
 
-// Function: A_BigMonitorRestore
+// Function: A_GoldMonitorRestore
 //
 // Description: A repeating monitor is coming back to life. Reset monitor flags, etc.
 //
 // var1 = unused
 // var2 = unused
 //
-void A_BigMonitorRestore(mobj_t *actor)
+void A_GoldMonitorRestore(mobj_t *actor)
 {
 #ifdef HAVE_BLUA
-	if (LUA_CallAction("A_BigMonitorRestore", actor))
+	if (LUA_CallAction("A_GoldMonitorRestore", actor))
 		return;
 #endif
 
@@ -2735,19 +2735,19 @@ void A_BigMonitorRestore(mobj_t *actor)
 	actor->health = 1; // Just in case.
 }
 
-// Function: A_BigMonitorSparkle
+// Function: A_GoldMonitorSparkle
 //
 // Description: Spawns the little sparkly effect around big monitors. Looks pretty, doesn't it?
 //
 // var1 = unused
 // var2 = unused
 //
-void A_BigMonitorSparkle(mobj_t *actor)
+void A_GoldMonitorSparkle(mobj_t *actor)
 {
 	fixed_t i, ngangle, xofs, yofs;
 
 #ifdef HAVE_BLUA
-	if (LUA_CallAction("A_BigMonitorSparkle", actor))
+	if (LUA_CallAction("A_GoldMonitorSparkle", actor))
 		return;
 #endif
 
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 86ddee029a49845cb4cdcc9c0e586d05c7a2dce1..f5d5ecf56f2da2b4f44b0c110c9ead7c7f00be8d 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -8789,36 +8789,37 @@ void P_SpawnMapThing(mapthing_t *mthing)
 		if ((mobjinfo[i].flags & MF_ENEMY) || (mobjinfo[i].flags & MF_BOSS))
 			return;
 
-	// Set powerup boxes to user settings for competition.
-	if (gametype == GT_COMPETITION)
+	// Altering monitor spawns via cvars
+	// If MF_GRENADEBOUNCE is set in the monitor's info,
+	// skip this step. (Used for gold monitors)
+	// Yeah, this is a dirty hack.
+	if ((mobjinfo[i].flags & (MF_MONITOR|MF_GRENADEBOUNCE)) == MF_MONITOR)
 	{
-		if ((mobjinfo[i].flags & MF_MONITOR) && cv_competitionboxes.value) // not Normal
+		if (gametype == GT_COMPETITION)
 		{
+			// Set powerup boxes to user settings for competition.
 			if (cv_competitionboxes.value == 1) // Random
 				i = MT_MYSTERY_BOX;
 			else if (cv_competitionboxes.value == 2) // Teleports
 				i = MT_MIXUP_BOX;
 			else if (cv_competitionboxes.value == 3) // None
 				return; // Don't spawn!
+			// default case: normal
 		}
-	}
-
-	// Set powerup boxes to user settings for other netplay modes
-	else if (gametype != GT_COOP)
-	{
-		if ((mobjinfo[i].flags & MF_MONITOR) && cv_matchboxes.value) // not Normal
+		// Set powerup boxes to user settings for other netplay modes
+		else if (gametype != GT_COOP)
 		{
 			if (cv_matchboxes.value == 1) // Random
 				i = MT_MYSTERY_BOX;
-			else if (cv_matchboxes.value == 3) // Don't spawn
-				return;
-			else // cv_matchboxes.value == 2, Non-Random
+			else if (cv_matchboxes.value == 2) // Non-Random
 			{
 				if (i == MT_MYSTERY_BOX)
 					return; // don't spawn in Non-Random
-
 				mthing->options &= ~(MTF_AMBUSH|MTF_OBJECTSPECIAL); // no random respawning!
 			}
+			else if (cv_matchboxes.value == 3) // Don't spawn
+				return;
+			// default case: normal
 		}
 	}
 
@@ -8873,7 +8874,7 @@ void P_SpawnMapThing(mapthing_t *mthing)
 		if (i == MT_RING_BOX && !G_IsSpecialStage(gamemap))
 			return; // No rings in Ultimate mode (except special stages)
 
-		// Don't include the BIGBOXes (repeating monitors) here please.
+		// Don't include the gold repeating boxes here please.
 		// They're likely facets of the level's design and therefore required to progress.
 	}
 
@@ -9302,8 +9303,6 @@ ML_NOCLIMB : Direction not controllable
 	//count 10 ring boxes into the number of rings equation too.
 	if (i == MT_RING_BOX)
 		nummaprings += 10;
-	if (i == MT_RING_BIGBOX) // Theoretically infinite
-		nummaprings += 10000;
 
 	if (i == MT_BIGTUMBLEWEED || i == MT_LITTLETUMBLEWEED)
 	{