diff options
Diffstat (limited to '')
-rw-r--r-- | src/Mobs/AggressiveMonster.cpp | 10 | ||||
-rw-r--r-- | src/Mobs/Monster.cpp | 16 |
2 files changed, 15 insertions, 11 deletions
diff --git a/src/Mobs/AggressiveMonster.cpp b/src/Mobs/AggressiveMonster.cpp index a7a1eeef5..309f6d985 100644 --- a/src/Mobs/AggressiveMonster.cpp +++ b/src/Mobs/AggressiveMonster.cpp @@ -28,14 +28,6 @@ void cAggressiveMonster::InStateChasing(std::chrono::milliseconds a_Dt) if (m_Target != nullptr) { - if (m_Target->IsPlayer()) - { - if (static_cast<cPlayer *>(m_Target)->IsGameModeCreative()) - { - m_EMState = IDLE; - return; - } - } MoveToPosition(m_Target->GetPosition()); } } @@ -103,6 +95,6 @@ bool cAggressiveMonster::Attack(std::chrono::milliseconds a_Dt) // Setting this higher gives us more wiggle room for attackrate m_AttackInterval = 0.0; m_Target->TakeDamage(dtMobAttack, this, m_AttackDamage, 0); - + return true; } diff --git a/src/Mobs/Monster.cpp b/src/Mobs/Monster.cpp index 3f7153fb3..38bec857c 100644 --- a/src/Mobs/Monster.cpp +++ b/src/Mobs/Monster.cpp @@ -231,9 +231,21 @@ void cMonster::Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) { ++m_TicksSinceLastDamaged; } - if ((m_Target != nullptr) && m_Target->IsDestroyed()) + if ((m_Target != nullptr)) { - m_Target = nullptr; + if (m_Target->IsDestroyed()) + { + m_Target = nullptr; + } + else if (m_Target->IsPlayer()) + { + if (static_cast<cPlayer *>(m_Target)->IsGameModeCreative()) + { + m_Target = nullptr; + m_EMState = IDLE; + return; + } + } } // Process the undead burning in daylight. |