aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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]);