diff options
author | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2015-05-03 14:23:04 +0200 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2015-05-03 14:23:04 +0200 |
commit | f96f9dae66f4559d7f510fe8a66e77ac4025b2fd (patch) | |
tree | fcfac77045f78f429926386038659b3023fe79a1 /src/Mobs/Monster.cpp | |
parent | Merge pull request #1932 from SafwatHalaby/F_AssertFix (diff) | |
parent | AI - Improved Mob Jumping (diff) | |
download | cuberite-f96f9dae66f4559d7f510fe8a66e77ac4025b2fd.tar cuberite-f96f9dae66f4559d7f510fe8a66e77ac4025b2fd.tar.gz cuberite-f96f9dae66f4559d7f510fe8a66e77ac4025b2fd.tar.bz2 cuberite-f96f9dae66f4559d7f510fe8a66e77ac4025b2fd.tar.lz cuberite-f96f9dae66f4559d7f510fe8a66e77ac4025b2fd.tar.xz cuberite-f96f9dae66f4559d7f510fe8a66e77ac4025b2fd.tar.zst cuberite-f96f9dae66f4559d7f510fe8a66e77ac4025b2fd.zip |
Diffstat (limited to 'src/Mobs/Monster.cpp')
-rw-r--r-- | src/Mobs/Monster.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/Mobs/Monster.cpp b/src/Mobs/Monster.cpp index bce8467ba..70c3b096b 100644 --- a/src/Mobs/Monster.cpp +++ b/src/Mobs/Monster.cpp @@ -80,6 +80,7 @@ cMonster::cMonster(const AString & a_ConfigName, eMonsterType a_MobType, const A , m_GiveUpCounter(0) , m_bMovingToDestination(false) , m_LastGroundHeight(POSY_TOINT) + , m_JumpCoolDown(0) , m_IdleInterval(0) , m_DestroyTimer(0) , m_MobType(a_MobType) @@ -286,12 +287,21 @@ void cMonster::Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) { if (m_bOnGround) { - if (DoesPosYRequireJump((int)floor(m_Destination.y))) + if (m_JumpCoolDown == 0) { - m_bOnGround = false; - - // TODO: Change to AddSpeedY once collision detection is fixed - currently, mobs will go into blocks attempting to jump without a teleport - AddPosY(1.2); // Jump!! + if (DoesPosYRequireJump(static_cast<int>(floor(m_Destination.y)))) + { + m_bOnGround = false; + m_JumpCoolDown = 20; + // TODO: Change to AddSpeedY once collision detection is fixed - currently, mobs will go into blocks attempting to jump without a teleport + AddPosY(1.6); // Jump!! + SetSpeedX(3.2 * (m_Destination.x - GetPosition().x)); // Move forward in a preset speed. + SetSpeedZ(3.2 * (m_Destination.z - GetPosition().z)); // The numbers were picked based on trial and error and 1.6 and 3.2 are perfect. + } + } + else + { + --m_JumpCoolDown; } } |