diff --git a/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp b/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp index 85aed555542..13bb7f5f630 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp @@ -1681,7 +1681,11 @@ const Image *ControlBar::getStarImage() return nullptr; } - if(TheGameLogic->getFrame()% LOGICFRAMES_PER_SECOND > LOGICFRAMES_PER_SECOND/2) + // TheSuperHackers @tweak bobtista 27/06/2026 Blink the general-promotion star on a + // wall-clock cycle so the blink rate is independent of the render frame rate and the + // logic time scale, and freezes while the game is paused. + const UnsignedInt blinkPeriodMs = 1000; + if( !TheGameLogic->isGamePaused() && timeGetTime() % blinkPeriodMs >= blinkPeriodMs / 2 ) { GadgetButtonSetEnabledImage(win, m_generalButtonHighlight); return nullptr; diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp index 2b4aca1e0d1..04227a1dad4 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp @@ -1681,7 +1681,11 @@ const Image *ControlBar::getStarImage() return nullptr; } - if(TheGameLogic->getFrame()% LOGICFRAMES_PER_SECOND > LOGICFRAMES_PER_SECOND/2) + // TheSuperHackers @tweak bobtista 27/06/2026 Blink the general-promotion star on a + // wall-clock cycle so the blink rate is independent of the render frame rate and the + // logic time scale, and freezes while the game is paused. + const UnsignedInt blinkPeriodMs = 1000; + if( !TheGameLogic->isGamePaused() && timeGetTime() % blinkPeriodMs >= blinkPeriodMs / 2 ) { GadgetButtonSetEnabledImage(win, m_generalButtonHighlight); return nullptr;