diff options
| -rw-r--r-- | engines/saga/objectmap.cpp | 11 | ||||
| -rw-r--r-- | engines/saga/objectmap.h | 2 | 
2 files changed, 10 insertions, 3 deletions
diff --git a/engines/saga/objectmap.cpp b/engines/saga/objectmap.cpp index d0a302b0d7..5bfdade011 100644 --- a/engines/saga/objectmap.cpp +++ b/engines/saga/objectmap.cpp @@ -41,7 +41,7 @@  namespace Saga { -HitZone::HitZone(MemoryReadStreamEndian *readStream, int index): _index(index) { +HitZone::HitZone(MemoryReadStreamEndian *readStream, int index, int sceneNumber): _index(index) {  	int i, j;  	HitZone::ClickArea *clickArea;  	Point *point; @@ -74,6 +74,13 @@ HitZone::HitZone(MemoryReadStreamEndian *readStream, int index): _index(index) {  			point = &clickArea->points[j];  			point->x = readStream->readSint16();  			point->y = readStream->readSint16(); + +			// WORKAROUND: bug #1259608: "ITE: Riff ignores command in Ferret merchant center" +			// Apparently ITE Mac version has bug in game data. Both ObjectMap and ActionMap +			// for exit area are little taller (y = 123) and thus Riff goes to exit  +			// when clicked on barrel of nails. +			if (sceneNumber == 18 && index == 0 && i == 0 && j == 0 && point->y == 123) +				point->y = 129;  		}  	}  } @@ -198,7 +205,7 @@ void ObjectMap::load(const byte *resourcePointer, size_t resourceLength) {  	}  	for (i = 0; i < _hitZoneListCount; i++) { -		_hitZoneList[i] = new HitZone(&readS, i); +		_hitZoneList[i] = new HitZone(&readS, i, _vm->_scene->currentSceneNumber());  	}  } diff --git a/engines/saga/objectmap.h b/engines/saga/objectmap.h index 43356d3579..117d5180ae 100644 --- a/engines/saga/objectmap.h +++ b/engines/saga/objectmap.h @@ -40,7 +40,7 @@ private:  	};  public: -	HitZone(MemoryReadStreamEndian *readStream, int index); +	HitZone(MemoryReadStreamEndian *readStream, int index, int sceneNumber);  	~HitZone();  	int getNameIndex() const {  | 
