[Scummvm-cvs-logs] SF.net SVN: scummvm: [29264] scummvm/trunk/engines/saga

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Sat Oct 27 13:42:18 CEST 2007


Revision: 29264
          http://scummvm.svn.sourceforge.net/scummvm/?rev=29264&view=rev
Author:   thebluegr
Date:     2007-10-27 04:42:17 -0700 (Sat, 27 Oct 2007)

Log Message:
-----------
Added a workaround for an incorrect hitzone in IHNM,  (Gorrister's chapter). Now, the graffiti to the left in the toilet screen can be examined correctly. Also, performed some clean-up

Modified Paths:
--------------
    scummvm/trunk/engines/saga/actor_walk.cpp
    scummvm/trunk/engines/saga/script.cpp

Modified: scummvm/trunk/engines/saga/actor_walk.cpp
===================================================================
--- scummvm/trunk/engines/saga/actor_walk.cpp	2007-10-26 20:35:06 UTC (rev 29263)
+++ scummvm/trunk/engines/saga/actor_walk.cpp	2007-10-27 11:42:17 UTC (rev 29264)
@@ -749,6 +749,18 @@
 				hitZone = _vm->_scene->_actionMap->getHitZone(hitZoneIndex);
 			}
 
+			// WORKAROUND for an incorrect hitzone which exists in IHNM
+			// In Gorrister's chapter, in the toilet screen, the hitzone of the exit is
+			// placed over the place where Gorrister sits to examine the graffiti on the wall
+			// to the left, which makes him exit the screen when the graffiti is examined.
+			// We effectively change the left side of the hitzone here so that it starts from
+			// pixel 301 onwards. The same workaround is applied in Script::whichObject
+			if (_vm->getGameType() == GType_IHNM) {
+				if (_vm->_scene->currentChapterNumber() == 1 && _vm->_scene->currentSceneNumber() == 22)
+					if (hitPoint.x <= 300)
+						hitZone = NULL;
+			}
+
 			if (hitZone != actor->_lastZone) {
 				if (actor->_lastZone)
 					stepZoneAction(actor, actor->_lastZone, true, false);
@@ -757,9 +769,10 @@
 				// (room 51) for hitzone 24577 (the door with the copy protection) to avoid the glitch. This glitch
 				// happens because the copy protection is supposed to kick in at this point, but it's bypassed
 				// (with permission from Wyrmkeep Entertainment)
-				if (hitZone && 
-					!(_vm->getGameType() == GType_ITE && _vm->_scene->currentSceneNumber() == 51 && hitZone->getHitZoneId() == 24577))
-					stepZoneAction(actor, hitZone, false, false);
+				if (!(_vm->getGameType() == GType_ITE && _vm->_scene->currentSceneNumber() == 51 && hitZone->getHitZoneId() == 24577)) {
+					if (hitZone)
+						stepZoneAction(actor, hitZone, false, false);
+				}
 			}
 		}
 	}

Modified: scummvm/trunk/engines/saga/script.cpp
===================================================================
--- scummvm/trunk/engines/saga/script.cpp	2007-10-26 20:35:06 UTC (rev 29263)
+++ scummvm/trunk/engines/saga/script.cpp	2007-10-27 11:42:17 UTC (rev 29264)
@@ -827,6 +827,18 @@
 
 				hitZoneIndex = _vm->_scene->_objectMap->hitTest(pickPoint);
 
+				// WORKAROUND for an incorrect hitzone which exists in IHNM
+				// In Gorrister's chapter, in the toilet screen, the hitzone of the exit is
+				// placed over the place where Gorrister sits to examine the graffiti on the wall
+				// to the left, which makes him exit the screen when the graffiti is examined.
+				// We effectively change the left side of the hitzone here so that it starts from
+				// pixel 301 onwards. The same workaround is applied in Actor::handleActions
+				if (_vm->getGameType() == GType_IHNM) {
+					if (_vm->_scene->currentChapterNumber() == 1 && _vm->_scene->currentSceneNumber() == 22)
+						if (hitZoneIndex == 8 && pickPoint.x <= 300)
+							hitZoneIndex = -1;
+				}
+
 				if ((hitZoneIndex != -1)) {
 					hitZone = _vm->_scene->_objectMap->getHitZone(hitZoneIndex);
 					objectId = hitZone->getHitZoneId();


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list