diff options
author | Filippos Karapetis | 2007-06-12 01:30:15 +0000 |
---|---|---|
committer | Filippos Karapetis | 2007-06-12 01:30:15 +0000 |
commit | 9c07235a938e668cf3b4728a11ec8161d7d67c6b (patch) | |
tree | 7cb006826febda2995294f4992d30b3e68898baa | |
parent | 138d4335d7a8e5d69beaa6fe77b6ddfdfc4252d5 (diff) | |
download | scummvm-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
-rw-r--r-- | engines/saga/script.cpp | 14 |
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]); |