From d5b7a57536065f05e606bf7a3974905d9151f190 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Mon, 13 Aug 2007 15:57:04 +0000 Subject: [PATCH] Fix for some cases where the protagonist from some savegames in IHNM was not loaded correctly svn-id: r28596 --- engines/saga/saveload.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/engines/saga/saveload.cpp b/engines/saga/saveload.cpp index 6f27e1b19b6..d04b72f7a80 100644 --- a/engines/saga/saveload.cpp +++ b/engines/saga/saveload.cpp @@ -305,11 +305,14 @@ void SagaEngine::load(const char *fileName) { if (getGameType() != GType_ITE) { if (_scene->currentProtag() != 0 && _scene->currentChapterNumber() != 6) { ActorData *actor1 = _actor->getFirstActor(); - // Original stores the current protagonist ID from sfSwapActors: - //ActorData *actor2 = _actor->getActor(_scene->currentProtag()); - // However, we already store the protagonist, so merely getting the saved - // protagonist is easier and safer, and works without glitches - ActorData *actor2 = _actor->_protagonist; + ActorData *actor2; + // The original gets actor2 from the current protagonist ID, but this is sometimes wrong + // If the current protagonist ID is not correct, use the stored protagonist + if (!_actor->validActorId(_scene->currentProtag())) { + actor2 = _actor->_protagonist; + } else { + actor2 = _actor->getActor(_scene->currentProtag()); + } SWAP(actor1->_location, actor2->_location);