diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/QuitMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/QuitMenu.cpp index 5273e4e6387..14f808a67b7 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/QuitMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/QuitMenu.cpp @@ -53,7 +53,7 @@ #include "GameClient/GameWindowTransitions.h" #include "GameClient/DisconnectMenu.h" #include "GameLogic/ScriptEngine.h" - +#include "GameLogic/LogicRandomValue.h" // PRIVATE DATA /////////////////////////////////////////////////////////////////////////////////// @@ -244,7 +244,13 @@ static void restartMissionMenu() rankPointsStartedWith) ); - InitRandom(seed); + // TheSuperHackers @bugfix ViTeXFTW 26/02/26 Generate a new seed value if we are in a singleplayer match + // to avoid the same random events happening in the same order as previous match. + if (gameMode == GAME_SINGLE_PLAYER) { + InitRandom(GameLogicRandomValue(0, INT_MAX - 1)); + } else { + InitRandom(seed); + } } //TheTransitionHandler->remove("QuitFull"); //KRISMORNESS ADD //quitMenuLayout = nullptr; //KRISMORNESS ADD diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/Shell/Shell.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/Shell/Shell.cpp index ee599b48146..f7568def47e 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/Shell/Shell.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/Shell/Shell.cpp @@ -542,7 +542,7 @@ void Shell::showShellMap(Bool useShellMap ) TheGameLogic->exitGame(); TheWritableGlobalData->m_pendingFile = TheGlobalData->m_shellMapName; - InitGameLogicRandom(0); + InitGameLogicRandom(GameClientRandomValue(0, INT_MAX - 1)); GameMessage *msg = TheMessageStream->appendMessage( GameMessage::MSG_NEW_GAME ); msg->appendIntegerArgument(GAME_SHELL); m_shellMapOn = TRUE;