diff --git a/Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp b/Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp index 91c3bec2bf2..0c69aaeca2e 100644 --- a/Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp @@ -1848,7 +1848,9 @@ void InGameUI::update() // frame // UnsignedInt currLogicFrame = TheGameLogic->getFrame(); - const int messageTimeout = m_messageDelayMS / LOGICFRAMES_PER_SECOND / 1000; + // TheSuperHackers @bugfix bobtista 13/08/2026 Convert milliseconds to logic frames. Dividing by + // both evaluated to floor(m_messageDelayMS / 30000), so MessageDelayMS had no effect below 30s + 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-- ) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp index e323d96d34d..9abfe7603d0 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp @@ -1882,7 +1882,9 @@ void InGameUI::update() // frame // UnsignedInt currLogicFrame = TheGameLogic->getFrame(); - const int messageTimeout = m_messageDelayMS / LOGICFRAMES_PER_SECOND / 1000; + // TheSuperHackers @bugfix bobtista 13/08/2026 Convert milliseconds to logic frames. Dividing by + // both evaluated to floor(m_messageDelayMS / 30000), so MessageDelayMS had no effect below 30s + 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-- )