diff --git a/src/dehacked.c b/src/dehacked.c
index d861613907f770018075bdce77b7bb6c15ca47ae..f851f4963a93a7404e26f130b1b140d44cdc4ca4 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -7167,6 +7167,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
 	"S_ROCKCRUMBLEN",
 	"S_ROCKCRUMBLEO",
 	"S_ROCKCRUMBLEP",
+	"S_BRICKDEBRIS",
 
 #ifdef SEENAMES
 	"S_NAMECHECK",
@@ -7881,6 +7882,7 @@ static const char *const MOBJTYPE_LIST[] = {  // array length left dynamic for s
 	"MT_ROCKCRUMBLE14",
 	"MT_ROCKCRUMBLE15",
 	"MT_ROCKCRUMBLE16",
+	"MT_BRICKDEBRIS",
 
 #ifdef SEENAMES
 	"MT_NAMECHECK",
diff --git a/src/hardware/hw_light.c b/src/hardware/hw_light.c
index 949f38064aa2c4b1ef2520dac68304900e219c9f..2feda1f1f29e31538edb82b5c0cb442eed4e5231 100644
--- a/src/hardware/hw_light.c
+++ b/src/hardware/hw_light.c
@@ -580,6 +580,9 @@ light_t *t_lspr[NUMSPRITES] =
 	&lspr[NOLIGHT],     // SPR_ROIO
 	&lspr[NOLIGHT],     // SPR_ROIP
 
+	// Bricks
+	&lspr[NOLIGHT], // SPR_BRIC
+
 	// Gravity Well Objects
 	&lspr[NOLIGHT],     // SPR_GWLG
 	&lspr[NOLIGHT],     // SPR_GWLR
diff --git a/src/info.c b/src/info.c
index 074e31ba2eb044476607796a58ab05f0d6c90c1e..49f6d4c8f5b271e08249b5795b96b8be9c3aed60 100644
--- a/src/info.c
+++ b/src/info.c
@@ -475,6 +475,9 @@ char sprnames[NUMSPRITES + 1][5] =
 	"ROIO",
 	"ROIP",
 
+	// Bricks
+	"BRIC",
+
 	// Gravity Well Objects
 	"GWLG",
 	"GWLR",
@@ -3861,6 +3864,8 @@ state_t states[NUMSTATES] =
 	{SPR_ROIO, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL}, // S_ROCKCRUMBLEO
 	{SPR_ROIP, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL}, // S_ROCKCRUMBLEP
 
+	{SPR_BRIC, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL}, // S_BRICKDEBRIS
+
 #ifdef SEENAMES
 	{SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK
 #endif
@@ -19970,6 +19975,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		S_NULL          // raisestate
 	},
 
+	{           // MT_BRICKDEBRIS
+		-1,             // doomednum
+		S_BRICKDEBRIS, // spawnstate
+		1,           // spawnhealth
+		S_NULL,         // seestate
+		sfx_None,     // seesound
+		0,              // reactiontime
+		sfx_None,       // attacksound
+		S_NULL,         // painstate
+		0,            // painchance
+		sfx_None,       // painsound
+		S_NULL,         // meleestate
+		S_NULL,         // missilestate
+		S_NULL,         // deathstate
+		S_NULL,         // xdeathstate
+		sfx_None,       // deathsound
+		0,              // speed
+		16*FRACUNIT,     // radius
+		16*FRACUNIT,    // height
+		0,              // display offset
+		100,           // mass
+		0,              // damage
+		sfx_None,     // activesound
+		MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_RUNSPAWNFUNC|MF_NOCLIPHEIGHT|MF_SCENERY,  // flags
+		S_NULL          // raisestate
+	},
+
 #ifdef SEENAMES
 	{           // MT_NAMECHECK
 		-1,             // doomednum
diff --git a/src/info.h b/src/info.h
index 13abfa5f60249d91afd05bc0fba7b35376f41a44..4af76907fc628c4bd17b0c0a9f49a511297e3453 100644
--- a/src/info.h
+++ b/src/info.h
@@ -720,6 +720,9 @@ typedef enum sprite
 	SPR_ROIO,
 	SPR_ROIP,
 
+	// Bricks
+	SPR_BRIC,
+
 	// Gravity Well Objects
 	SPR_GWLG,
 	SPR_GWLR,
@@ -3923,6 +3926,9 @@ typedef enum state
 	S_ROCKCRUMBLEO,
 	S_ROCKCRUMBLEP,
 
+	// Bricks
+	S_BRICKDEBRIS,
+
 #ifdef SEENAMES
 	S_NAMECHECK,
 #endif
@@ -4657,6 +4663,9 @@ typedef enum mobj_type
 	MT_ROCKCRUMBLE15,
 	MT_ROCKCRUMBLE16,
 
+	// Bricks
+	MT_BRICKDEBRIS,
+
 #ifdef SEENAMES
 	MT_NAMECHECK,
 #endif
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 69550fa73186036c9a36b6da846a028ba813800d..46f3ef49f2819d926b298677b4b07f603577ce97 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -7309,6 +7309,7 @@ void P_MobjThinker(mobj_t *mobj)
 			case MT_ROCKCRUMBLE15:
 			case MT_ROCKCRUMBLE16:
 			case MT_WOODDEBRIS:
+			case MT_BRICKDEBRIS:
 				if (mobj->z <= P_FloorzAtPos(mobj->x, mobj->y, mobj->z, mobj->height)
 					&& mobj->state != &states[mobj->info->deathstate])
 				{