aboutsummaryrefslogtreecommitdiff
path: root/engines/saga
diff options
context:
space:
mode:
authorFilippos Karapetis2007-06-12 01:30:15 +0000
committerFilippos Karapetis2007-06-12 01:30:15 +0000
commit9c07235a938e668cf3b4728a11ec8161d7d67c6b (patch)
tree7cb006826febda2995294f4992d30b3e68898baa /engines/saga
parent138d4335d7a8e5d69beaa6fe77b6ddfdfc4252d5 (diff)
downloadscummvm-rg350-9c07235a938e668cf3b4728a11ec8161d7d67c6b.tar.gz
scummvm-rg350-9c07235a938e668cf3b4728a11ec8161d7d67c6b.tar.bz2
scummvm-rg350-9c07235a938e668cf3b4728a11ec8161d7d67c6b.zip
Auto-use no-walk hitzones in IHNM, like the original. This fixes the pathfinding problems in Benny's chapter
svn-id: r27370
Diffstat (limited to 'engines/saga')
-rw-r--r--engines/saga/script.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/engines/saga/script.cpp b/engines/saga/script.cpp
index 7641aea6c0..262d63c51f 100644
--- a/engines/saga/script.cpp
+++ b/engines/saga/script.cpp
@@ -647,7 +647,7 @@ void Script::playfieldClick(const Point& mousePoint, bool leftButton) {
}
} else {
if (_vm->getGameType() == GType_IHNM) {
- if ((hitZone->getFlags() & kHitZoneNoWalk) && (_pendingVerb == getVerbType(kVerbWalkTo))) {
+ if ((hitZone->getFlags() & kHitZoneNoWalk) && (_pendingVerb != getVerbType(kVerbWalkTo))) {
doVerb();
return;
}
@@ -703,9 +703,19 @@ void Script::playfieldClick(const Point& mousePoint, bool leftButton) {
(_pendingVerb == getVerbType(kVerbClose)) ||
(_pendingVerb == getVerbType(kVerbUse))) {
_vm->_actor->actorWalkTo(ID_PROTAG, pickLocation);
+
+ // Auto-use no-walk hitzones in IHNM, needed for Benny's chapter
+ if (_pendingVerb == getVerbType(kVerbWalkTo) &&
+ hitZone != NULL && (hitZone->getFlags() & kHitZoneNoWalk)) {
+ _pendingVerb = getVerbType(kVerbUse);
+ if (objectTypeId(_pendingObject[0]) == kGameObjectActor) {
+ _vm->_actor->actorFaceTowardsObject(ID_PROTAG, _pendingObject[0]);
+ doVerb();
+ }
+ }
} else {
if (_pendingVerb == getVerbType(kVerbLookAt)) {
- if (objectTypeId(_pendingObject[0]) != kGameObjectActor ) {
+ if (objectTypeId(_pendingObject[0]) != kGameObjectActor) {
_vm->_actor->actorWalkTo(ID_PROTAG, pickLocation);
} else {
_vm->_actor->actorFaceTowardsObject(ID_PROTAG, _pendingObject[0]);