aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/drascula/drascula.cpp4
-rw-r--r--engines/drascula/saveload.cpp18
2 files changed, 18 insertions, 4 deletions
diff --git a/engines/drascula/drascula.cpp b/engines/drascula/drascula.cpp
index 358aecc295..9ac9031fb7 100644
--- a/engines/drascula/drascula.cpp
+++ b/engines/drascula/drascula.cpp
@@ -534,10 +534,6 @@ bool DrasculaEngine::runCurrentChapter() {
if (!loadGame(_currentSaveSlot)) {
return true;
}
- // When loading room 102 while being attached below the pendulum we
- // need to call activatePendulum() to properly initialized the scene.
- if (_roomNumber == 102 && flags[1] == 2)
- activatePendulum();
loadPic("auxdr.alg", drawSurface2);
}
}
diff --git a/engines/drascula/saveload.cpp b/engines/drascula/saveload.cpp
index d0f16aa941..e67ada50fa 100644
--- a/engines/drascula/saveload.cpp
+++ b/engines/drascula/saveload.cpp
@@ -255,6 +255,19 @@ bool DrasculaEngine::loadGame(int slot) {
if (!(in = _saveFileMan->openForLoading(saveFileName))) {
error("missing savegame file %s", saveFileName.c_str());
}
+
+ // If we currently are in room 102 while being attached below the pendulum
+ // the character is invisible and some surface are temporarily used for other
+ // things. Reset those before loading the savegame otherwise we may have some
+ // issues such as the protagonist being invisible after reloading a savegame.
+ if (_roomNumber == 102 && flags[1] == 2) {
+ hare_se_ve = 1;
+ loadPic(96, frontSurface);
+ loadPic(97, frontSurface);
+ loadPic(97, extraSurface);
+ loadPic(99, backSurface);
+ }
+
loadMetaData(in, slot, true);
Graphics::skipThumbnail(*in);
@@ -289,6 +302,11 @@ bool DrasculaEngine::loadGame(int slot) {
}
enterRoom(roomNum);
selectVerb(kVerbNone);
+
+ // When loading room 102 while being attached below the pendulum we
+ // need to call activatePendulum() to properly initialized the scene.
+ if (_roomNumber == 102 && flags[1] == 2)
+ activatePendulum();
return true;
}