diff options
-rw-r--r-- | engines/sci/detection.cpp | 1 | ||||
-rw-r--r-- | engines/sci/engine/guest_additions.cpp | 15 |
2 files changed, 11 insertions, 5 deletions
diff --git a/engines/sci/detection.cpp b/engines/sci/detection.cpp index fa89aad404..6799c3521f 100644 --- a/engines/sci/detection.cpp +++ b/engines/sci/detection.cpp @@ -887,7 +887,6 @@ bool SciEngine::canLoadGameStateCurrently() { const Common::String &guiOptions = ConfMan.get("guioptions"); if (getSciVersion() >= SCI_VERSION_2) { if (ConfMan.getBool("originalsaveload") || - !Common::checkGameGUIOption(GAMEOPTION_ORIGINAL_SAVELOAD, guiOptions) || Common::checkGameGUIOption(GUIO_NOLAUNCHLOAD, guiOptions)) { return false; diff --git a/engines/sci/engine/guest_additions.cpp b/engines/sci/engine/guest_additions.cpp index 0ef6d99eaa..be6955fb21 100644 --- a/engines/sci/engine/guest_additions.cpp +++ b/engines/sci/engine/guest_additions.cpp @@ -513,10 +513,17 @@ void GuestAdditions::restoreFromLauncher() const { return; } - // When `Game::restore` is invoked, it will call to `Restore::doit` - // which will automatically return the `_delayedRestoreGameId` instead - // of prompting the user for a save game - invokeSelector(g_sci->getGameObject(), SELECTOR(restore)); + if (g_sci->getGameId() == GID_SHIVERS) { + // Shivers accepts the save game number as a parameter to + // `SHIVERS::restore` + reg_t args[] = { make_reg(0, _state->_delayedRestoreGameId - kSaveIdShift) }; + invokeSelector(g_sci->getGameObject(), SELECTOR(restore), 1, args); + } else { + // When `Game::restore` is invoked, it will call to `Restore::doit` + // which will automatically return the `_delayedRestoreGameId` instead + // of prompting the user for a save game + invokeSelector(g_sci->getGameObject(), SELECTOR(restore)); + } } else { #else { |