From 8140a369a9aa7568dc0a092f0c64c658a4159113 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Thu, 13 Aug 2026 01:52:51 -0400 Subject: [PATCH 1/2] bugfix(gui): Convert MessageDelayMS to logic frames so the setting takes effect --- GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp index 4866e23087b..bb6f869a875 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp @@ -1882,7 +1882,10 @@ void InGameUI::update() // frame // UnsignedInt currLogicFrame = TheGameLogic->getFrame(); - const int messageTimeout = m_messageDelayMS / LOGICFRAMES_PER_SECOND / 1000; + // TheSuperHackers @bugfix bobtista 13/08/2026 Convert the message delay from milliseconds to logic frames + // instead of dividing by both, which evaluated to floor(m_messageDelayMS / 30000) and was therefore 0 for + // every delay below 30 seconds, making MessageDelayMS have no effect. + const int messageTimeout = REAL_TO_INT_CEIL( ConvertDurationFromMsecsToFrames( (Real)m_messageDelayMS ) ); UnsignedByte r, g, b, a; Int amount; for( i = MAX_UI_MESSAGES - 1; i >= 0; i-- ) From 3fa2f704e99a884c5030a101a8e4ef5fb7f9591c Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Thu, 13 Aug 2026 18:35:50 -0400 Subject: [PATCH 2/2] bugfix(gui): Convert MessageDelayMS to logic frames so the setting takes effect in Generals --- Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp b/Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp index a381449cc9b..2fc403569e6 100644 --- a/Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp @@ -1848,7 +1848,10 @@ void InGameUI::update() // frame // UnsignedInt currLogicFrame = TheGameLogic->getFrame(); - const int messageTimeout = m_messageDelayMS / LOGICFRAMES_PER_SECOND / 1000; + // TheSuperHackers @bugfix bobtista 13/08/2026 Convert the message delay from milliseconds to logic frames + // instead of dividing by both, which evaluated to floor(m_messageDelayMS / 30000) and was therefore 0 for + // every delay below 30 seconds, making MessageDelayMS have no effect. + const int messageTimeout = REAL_TO_INT_CEIL( ConvertDurationFromMsecsToFrames( (Real)m_messageDelayMS ) ); UnsignedByte r, g, b, a; Int amount; for( i = MAX_UI_MESSAGES - 1; i >= 0; i-- )