diff options
Diffstat (limited to 'src/being')
-rw-r--r-- | src/being/being.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/being/being.cpp b/src/being/being.cpp index bbf011a68..235bd6455 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -1708,7 +1708,47 @@ void Being::petLogic() { setPath(mMap->findPath(mX, mY, dstX, dstY, walkMask)); Net::getPetHandler()->move(mOwner, mX, mY, dstX, dstY); + return; + } + } + if (mAction == STAND) + { + const int directionType = mInfo->getDirectionType(); + int newDir = 0; + switch (directionType) + { + case 0: + default: + return; + + case 1: + newDir = mOwner->getDirection(); + break; + + case 2: + if (dstX > dstX0) + newDir |= LEFT; + else if (dstX < dstX0) + newDir |= RIGHT; + if (dstY > dstY0) + newDir != UP; + else if (dstY < dstY0) + newDir != DOWN; + break; + + case 3: + if (dstX > dstX0) + newDir |= RIGHT; + else if (dstX < dstX0) + newDir |= LEFT; + if (dstY > dstY0) + newDir != DOWN; + else if (dstY < dstY0) + newDir != UP; + break; } + if (newDir && newDir != getDirection()) + setDirection(newDir); } } |