diff --git a/src/dehacked.c b/src/dehacked.c
index 12aa8f970a3cc0aa108f873deeb540c9b4c5133e..18c4077beb6a7e53e1692f63aa1becc26496efef 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -8899,6 +8899,7 @@ static const char *const GAMETYPERULE_LIST[] = {
 	"ALLOWEXIT",
 	"NOTITLECARD",
 	"OVERTIME",
+	"HURTMESSAGES",
 	NULL
 };
 
diff --git a/src/doomstat.h b/src/doomstat.h
index 940d2d60c2abfe00e1432fd5cf57e680781b4dc3..6a708dc9bad5c6f0c8f31544ecdf17299ffc0cf6 100644
--- a/src/doomstat.h
+++ b/src/doomstat.h
@@ -416,6 +416,7 @@ enum GameTypeRules
 	GTR_ALLOWEXIT        = 1<<24, // Allow exit sectors
 	GTR_NOTITLECARD      = 1<<25, // Don't show the title card
 	GTR_OVERTIME         = 1<<26, // Allow overtime
+	GTR_HURTMESSAGES     = 1<<27, // Hit and death messages
 };
 
 // String names for gametypes
diff --git a/src/p_inter.c b/src/p_inter.c
index 08e8a62a125c34a30fce0a225a5abf32dfcd25d9..8643b4275b264121fc21619d7661be5ceefdca03 100644
--- a/src/p_inter.c
+++ b/src/p_inter.c
@@ -1888,7 +1888,7 @@ static void P_HitDeathMessages(player_t *player, mobj_t *inflictor, mobj_t *sour
 	char targetname[MAXPLAYERNAME+4];
 	char sourcename[MAXPLAYERNAME+4];
 
-	if (G_PlatformGametype())
+	if (!(gametyperules & (GTR_RINGSLINGER|GTR_HURTMESSAGES)))
 		return; // Not in coop, etc.
 
 	if (!player)