diff options
Diffstat (limited to 'engines/sci/engine/guest_additions.cpp')
-rw-r--r-- | engines/sci/engine/guest_additions.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
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 { |