diff options
| -rw-r--r-- | saga/actor.cpp | 8 | ||||
| -rw-r--r-- | saga/actor.h | 4 | ||||
| -rw-r--r-- | saga/saveload.cpp | 9 | 
3 files changed, 18 insertions, 3 deletions
| diff --git a/saga/actor.cpp b/saga/actor.cpp index b8e84ec979..3dd1d7e5cc 100644 --- a/saga/actor.cpp +++ b/saga/actor.cpp @@ -2870,6 +2870,14 @@ void Actor::loadState(Common::InSaveFile *in) {  	for (i = 0; i < _actorsCount; i++) {  		ActorData *a = _actors[i];  		a->loadState(_vm->getCurrentLoadVersion(), in); + +		// Fix bug #1258633 "ITE: Second Rif appears in wall of dog castle prison" +		// For some reason in some cases actor position is all wrong, so Rif +		// crawls to his original poition +		if (i == 122 && _vm->getGameType() == GType_ITE) { +			a->_location.x = 130; +			a->_location.y = 55; +		}  	}  	for (i = 0; i < _objsCount; i++) { diff --git a/saga/actor.h b/saga/actor.h index 37cad77936..0728816593 100644 --- a/saga/actor.h +++ b/saga/actor.h @@ -234,6 +234,10 @@ struct Location {  		y = stream.readUint16LE();  		z = stream.readUint16LE();  	} + +	void debugPrint(int debuglevel = 0, const char *loc = "Loc:") const { +		debug(debuglevel, "%s %d, %d, %d", loc, x, y, z); +	}  };  class CommonObjectData { diff --git a/saga/saveload.cpp b/saga/saveload.cpp index 5bfe583ff5..a2c07fdde2 100644 --- a/saga/saveload.cpp +++ b/saga/saveload.cpp @@ -167,8 +167,8 @@ void SagaEngine::save(const char *fileName, const char *saveName) {  	_saveHeader.type = MKID('SAGA');  	_saveHeader.size = 0; -	_saveHeader.version = CURRENT_SAGA_VER; -	strcpy(_saveHeader.name, saveName); +	_saveHeader.version = TO_LE_32(CURRENT_SAGA_VER); +	strncpy(_saveHeader.name, saveName, SAVE_TITLE_SIZE);  	out->write(&_saveHeader, sizeof(_saveHeader)); @@ -204,6 +204,9 @@ void SagaEngine::load(const char *fileName) {  	in->read(&_saveHeader, sizeof(_saveHeader)); +	_saveHeader.size = FROM_LE_32(_saveHeader.size); +	_saveHeader.version = FROM_LE_32(_saveHeader.version); +  	if (_saveHeader.type != MKID('SAGA')) {  		error("SagaEngine::load wrong format");  	} @@ -235,7 +238,7 @@ void SagaEngine::load(const char *fileName) {  	_scene->clearSceneQueue();  	_scene->changeScene(sceneNumber, ACTOR_NO_ENTRANCE, kTransitionNoFade); -	_events->handleEvents(0); //dissolve back grounds +	_events->handleEvents(0); //dissolve backgrounds  	if (insetSceneNumber != sceneNumber) {  		_render->setFlag(RF_DISABLE_ACTORS); | 
