diff options
| -rw-r--r-- | engines/drascula/drascula.cpp | 4 | ||||
| -rw-r--r-- | engines/drascula/saveload.cpp | 18 | 
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;  }  | 
