aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/guest_additions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/engine/guest_additions.cpp')
-rw-r--r--engines/sci/engine/guest_additions.cpp15
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
{