| 1 | diff --git a/engines/saga/actor_path.cpp b/engines/saga/actor_path.cpp
|
|---|
| 2 | index 3e10aba..60f35c7 100644
|
|---|
| 3 | --- a/engines/saga/actor_path.cpp
|
|---|
| 4 | +++ b/engines/saga/actor_path.cpp
|
|---|
| 5 | @@ -23,6 +23,7 @@
|
|---|
| 6 | #include "saga/saga.h"
|
|---|
| 7 |
|
|---|
| 8 | #include "saga/actor.h"
|
|---|
| 9 | +#include "saga/objectmap.h"
|
|---|
| 10 | #include "saga/scene.h"
|
|---|
| 11 |
|
|---|
| 12 | namespace Saga {
|
|---|
| 13 | @@ -99,6 +100,18 @@ void Actor::findActorPath(ActorData *actor, const Point &fromPoint, const Point
|
|---|
| 14 | _debugPointsCount = 0;
|
|---|
| 15 | #endif
|
|---|
| 16 |
|
|---|
| 17 | + int hitZoneIndex;
|
|---|
| 18 | + const HitZone *hitZone;
|
|---|
| 19 | + bool walkToExit = false;
|
|---|
| 20 | +
|
|---|
| 21 | + hitZoneIndex = _vm->_scene->_actionMap->hitTest(toPoint);
|
|---|
| 22 | + if (hitZoneIndex != -1) {
|
|---|
| 23 | + hitZone = _vm->_scene->_actionMap->getHitZone(hitZoneIndex);
|
|---|
| 24 | + if (hitZone->getFlags() & kHitZoneExit) {
|
|---|
| 25 | + walkToExit = true;
|
|---|
| 26 | + }
|
|---|
| 27 | + }
|
|---|
| 28 | +
|
|---|
| 29 | actor->_walkStepsCount = 0;
|
|---|
| 30 | if (fromPoint == toPoint) {
|
|---|
| 31 | actor->addWalkStepPoint(toPoint);
|
|---|
| 32 | @@ -110,6 +123,15 @@ void Actor::findActorPath(ActorData *actor, const Point &fromPoint, const Point
|
|---|
| 33 | if (_vm->_scene->validBGMaskPoint(iteratorPoint)) {
|
|---|
| 34 | maskType = _vm->_scene->getBGMaskType(iteratorPoint);
|
|---|
| 35 | setPathCell(iteratorPoint, _vm->_scene->getDoorState(maskType) ? kPathCellBarrier : kPathCellEmpty);
|
|---|
| 36 | + if (!walkToExit) {
|
|---|
| 37 | + hitZoneIndex = _vm->_scene->_actionMap->hitTest(iteratorPoint);
|
|---|
| 38 | + if (hitZoneIndex != -1) {
|
|---|
| 39 | + hitZone = _vm->_scene->_actionMap->getHitZone(hitZoneIndex);
|
|---|
| 40 | + if (hitZone->getFlags() & kHitZoneExit) {
|
|---|
| 41 | + setPathCell(iteratorPoint, kPathCellBarrier);
|
|---|
| 42 | + }
|
|---|
| 43 | + }
|
|---|
| 44 | + }
|
|---|
| 45 | } else {
|
|---|
| 46 | setPathCell(iteratorPoint, kPathCellBarrier);
|
|---|
| 47 | }
|
|---|