diff options
Diffstat (limited to 'engines/gob/goblin_v4.cpp')
-rw-r--r-- | engines/gob/goblin_v4.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/engines/gob/goblin_v4.cpp b/engines/gob/goblin_v4.cpp index 7758170332..f4b0ecdd20 100644 --- a/engines/gob/goblin_v4.cpp +++ b/engines/gob/goblin_v4.cpp @@ -77,8 +77,12 @@ void Goblin_v4::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16 if ((gobX == destX) && (gobY == destY)) { if (obj->nearestWayPoint > obj->nearestDest) { _vm->_map->optimizePoints(obj, gobX, gobY); - destX = _vm->_map->_wayPoints[obj->nearestWayPoint].x; - destY = _vm->_map->_wayPoints[obj->nearestWayPoint].y; + + const WayPoint &wayPoint = _vm->_map->getWayPoint(obj->nearestWayPoint); + + destX = wayPoint.x; + destY = wayPoint.y; + if (_vm->_map->checkDirectPath(obj, gobX, gobY, destX, destY) == 3) { WRITE_VAR(56, 1); animData->pathExistence = 0; @@ -87,8 +91,12 @@ void Goblin_v4::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16 obj->nearestWayPoint--; } else if (obj->nearestWayPoint < obj->nearestDest) { _vm->_map->optimizePoints(obj, gobX, gobY); - destX = _vm->_map->_wayPoints[obj->nearestWayPoint].x; - destY = _vm->_map->_wayPoints[obj->nearestWayPoint].y; + + const WayPoint &wayPoint = _vm->_map->getWayPoint(obj->nearestWayPoint); + + destX = wayPoint.x; + destY = wayPoint.y; + if (_vm->_map->checkDirectPath(obj, gobX, gobY, destX, destY) == 3) { WRITE_VAR(56, 1); animData->pathExistence = 0; @@ -98,8 +106,12 @@ void Goblin_v4::movePathFind(Mult::Mult_Object *obj, Gob_Object *gobDesc, int16 } else { if ((_vm->_map->checkDirectPath(obj, gobX, gobY, gobDestX, gobDestY) == 3) && (_vm->_map->getPass(gobDestX, gobDestY) != 0)) { - destX = _vm->_map->_wayPoints[obj->nearestWayPoint].x; - destY = _vm->_map->_wayPoints[obj->nearestWayPoint].y; + + const WayPoint &wayPoint = _vm->_map->getWayPoint(obj->nearestWayPoint); + + destX = wayPoint.x; + destY = wayPoint.y; + WRITE_VAR(56, 1); } else { animData->pathExistence = 1; |