diff options
author | worktycho <work.tycho@gmail.com> | 2015-05-27 18:46:11 +0200 |
---|---|---|
committer | worktycho <work.tycho@gmail.com> | 2015-05-27 18:46:11 +0200 |
commit | 7c028b87bc7dd478855dfc320f874102bc427f58 (patch) | |
tree | 3417483bdb001ae17f935408c154a5376e64d958 /src/Mobs | |
parent | Merge pull request #2061 from mc-server/fixes (diff) | |
parent | AI - Saner Livestock (diff) | |
download | cuberite-7c028b87bc7dd478855dfc320f874102bc427f58.tar cuberite-7c028b87bc7dd478855dfc320f874102bc427f58.tar.gz cuberite-7c028b87bc7dd478855dfc320f874102bc427f58.tar.bz2 cuberite-7c028b87bc7dd478855dfc320f874102bc427f58.tar.lz cuberite-7c028b87bc7dd478855dfc320f874102bc427f58.tar.xz cuberite-7c028b87bc7dd478855dfc320f874102bc427f58.tar.zst cuberite-7c028b87bc7dd478855dfc320f874102bc427f58.zip |
Diffstat (limited to 'src/Mobs')
-rw-r--r-- | src/Mobs/Monster.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/Mobs/Monster.cpp b/src/Mobs/Monster.cpp index 1da4124ed..3fbee9a65 100644 --- a/src/Mobs/Monster.cpp +++ b/src/Mobs/Monster.cpp @@ -196,7 +196,15 @@ bool cMonster::TickPathFinding(cChunk & a_Chunk) { if (m_NoMoreWayPoints || (--m_GiveUpCounter == 0)) { - ResetPathFinding(); // Try to calculate a path again. + if (m_EMState == ATTACKING) + { + ResetPathFinding(); // Try to calculate a path again. + // This results in mobs hanging around an unreachable target (player). + } + else + { + StopMovingToPosition(); // Find a different place to go to. + } return false; } else if (!m_Path->IsLastPoint()) // Have we arrived at the next cell, as denoted by m_NextWayPointPosition? @@ -391,6 +399,7 @@ void cMonster::MoveToPosition(const Vector3d & a_Position) void cMonster::StopMovingToPosition() { m_IsFollowingPath = false; + ResetPathFinding(); } @@ -520,7 +529,7 @@ void cMonster::SetPitchAndYawFromDestination() double HeadRotation, HeadPitch; Distance.Normalize(); VectorToEuler(Distance.x, Distance.y, Distance.z, HeadRotation, HeadPitch); - if (std::abs(BodyRotation - HeadRotation) < 120) + if (std::abs(BodyRotation - HeadRotation) < 90) { SetHeadYaw(HeadRotation); SetPitch(-HeadPitch); |