diff --git a/src/gamedata/gi.cpp b/src/gamedata/gi.cpp index a09035f5ae8..d21f33b0c69 100644 --- a/src/gamedata/gi.cpp +++ b/src/gamedata/gi.cpp @@ -440,6 +440,7 @@ void FMapInfoParser::ParseGameInfo() GAMEINFOKEY_STRING(statusscreen_dm, "statscreen_dm") GAMEINFOKEY_TWODOUBLES(normforwardmove, "normforwardmove") GAMEINFOKEY_TWODOUBLES(normsidemove, "normsidemove") + GAMEINFOKEY_BOOL(nomergepickupmsg, "nomergepickupmsg") else { diff --git a/src/gamedata/gi.h b/src/gamedata/gi.h index 6118aa6209a..124b6742e95 100644 --- a/src/gamedata/gi.h +++ b/src/gamedata/gi.h @@ -206,6 +206,7 @@ struct gameinfo_t double normforwardmove[2]; double normsidemove[2]; int fullscreenautoaspect = 0; + bool nomergepickupmsg; const char *GetFinalePage(unsigned int num) const; }; diff --git a/src/playsim/a_pickups.cpp b/src/playsim/a_pickups.cpp index 98347df84a4..f4c72b5f975 100644 --- a/src/playsim/a_pickups.cpp +++ b/src/playsim/a_pickups.cpp @@ -41,6 +41,7 @@ #include "d_player.h" #include "vm.h" #include "g_levellocals.h" +#include "gi.h" EXTERN_CVAR(Bool, sv_unlimited_pickup) @@ -55,7 +56,8 @@ static FString StaticLastMessage; void PrintPickupMessage(bool localview, const FString &str) { - if (str.IsNotEmpty() && localview && (StaticLastMessageTic != gametic || StaticLastMessage.Compare(str))) + // [MK] merge identical messages on same tic unless disabled in gameinfo + if (str.IsNotEmpty() && localview && (gameinfo.nomergepickupmsg || StaticLastMessageTic != gametic || StaticLastMessage.Compare(str))) { StaticLastMessageTic = gametic; StaticLastMessage = str;