diff options
| -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]);  | 
