summaryrefslogtreecommitdiffstats
path: root/src/Mobs
diff options
context:
space:
mode:
authorworktycho <work.tycho@gmail.com>2015-05-27 18:46:11 +0200
committerworktycho <work.tycho@gmail.com>2015-05-27 18:46:11 +0200
commit7c028b87bc7dd478855dfc320f874102bc427f58 (patch)
tree3417483bdb001ae17f935408c154a5376e64d958 /src/Mobs
parentMerge pull request #2061 from mc-server/fixes (diff)
parentAI - Saner Livestock (diff)
downloadcuberite-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.cpp13
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);