summaryrefslogtreecommitdiffstats
path: root/src/Mobs/Monster.cpp
diff options
context:
space:
mode:
authortycho <work.tycho@gmail.com>2015-05-28 12:05:41 +0200
committertycho <work.tycho@gmail.com>2015-05-28 12:05:41 +0200
commite19693e529bf26e62a54f60c167d1b4870d7d44a (patch)
tree0b2cb131fa2f009723dd0ecd739ff911a369c763 /src/Mobs/Monster.cpp
parentFix warnings in cPath (diff)
parentMerge pull request #2151 from SafwatHalaby/wolf (diff)
downloadcuberite-e19693e529bf26e62a54f60c167d1b4870d7d44a.tar
cuberite-e19693e529bf26e62a54f60c167d1b4870d7d44a.tar.gz
cuberite-e19693e529bf26e62a54f60c167d1b4870d7d44a.tar.bz2
cuberite-e19693e529bf26e62a54f60c167d1b4870d7d44a.tar.lz
cuberite-e19693e529bf26e62a54f60c167d1b4870d7d44a.tar.xz
cuberite-e19693e529bf26e62a54f60c167d1b4870d7d44a.tar.zst
cuberite-e19693e529bf26e62a54f60c167d1b4870d7d44a.zip
Diffstat (limited to 'src/Mobs/Monster.cpp')
-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 e2906efa6..44a037805 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);