summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwiseoldman95 <softwatt@gmx.com>2015-05-06 05:46:10 +0200
committerwiseoldman95 <softwatt@gmx.com>2015-05-06 06:31:02 +0200
commit020e9286859925c2fe4c18565a70b1b1fce82558 (patch)
tree03b2ca1b8dd3877990c780b8e3f657e383f2527a
parentMerge pull request #1939 from SafwatHalaby/Polising (diff)
downloadcuberite-020e9286859925c2fe4c18565a70b1b1fce82558.tar
cuberite-020e9286859925c2fe4c18565a70b1b1fce82558.tar.gz
cuberite-020e9286859925c2fe4c18565a70b1b1fce82558.tar.bz2
cuberite-020e9286859925c2fe4c18565a70b1b1fce82558.tar.lz
cuberite-020e9286859925c2fe4c18565a70b1b1fce82558.tar.xz
cuberite-020e9286859925c2fe4c18565a70b1b1fce82558.tar.zst
cuberite-020e9286859925c2fe4c18565a70b1b1fce82558.zip
-rw-r--r--src/Mobs/Monster.cpp5
-rw-r--r--src/Mobs/Path.cpp8
2 files changed, 10 insertions, 3 deletions
diff --git a/src/Mobs/Monster.cpp b/src/Mobs/Monster.cpp
index 7ced89e45..37774b08f 100644
--- a/src/Mobs/Monster.cpp
+++ b/src/Mobs/Monster.cpp
@@ -143,10 +143,11 @@ bool cMonster::TickPathFinding(cChunk & a_Chunk)
{
/* If we reached the last path waypoint,
Or if we haven't re-calculated for too long.
- Interval is proportional to distance squared. (Recalculate lots when close, calculate rarely when far) */
+ Interval is proportional to distance squared, and its minimum is 10.
+ (Recalculate lots when close, calculate rarely when far) */
if (
((GetPosition() - m_PathFinderDestination).Length() < 0.25) ||
- m_TicksSinceLastPathReset > (0.15 * (m_FinalDestination - GetPosition()).SqrLength())
+ ((m_TicksSinceLastPathReset > 10) && (m_TicksSinceLastPathReset > (0.15 * (m_FinalDestination - GetPosition()).SqrLength())))
)
{
ResetPathFinding();
diff --git a/src/Mobs/Path.cpp b/src/Mobs/Path.cpp
index 8701dad10..a0b83f593 100644
--- a/src/Mobs/Path.cpp
+++ b/src/Mobs/Path.cpp
@@ -182,7 +182,13 @@ bool cPath::Step_Internal()
}
// Path found.
- if (CurrentCell->m_Location == m_Destination)
+ if (
+ (CurrentCell->m_Location == m_Destination + Vector3i(0, 0, 1)) ||
+ (CurrentCell->m_Location == m_Destination + Vector3i(1, 0, 0)) ||
+ (CurrentCell->m_Location == m_Destination + Vector3i(-1, 0, 0)) ||
+ (CurrentCell->m_Location == m_Destination + Vector3i(0, 0, -1)) ||
+ (CurrentCell->m_Location == m_Destination + Vector3i(0, -1, 0))
+ )
{
do
{