From 91aec448eb275ff03ec23524a8a710538046d0bb Mon Sep 17 00:00:00 2001 From: Safwat Halaby Date: Sun, 13 Dec 2015 07:51:13 +0200 Subject: Fixed mobs attacking Creative Mode players --- src/Mobs/AggressiveMonster.cpp | 10 +--------- 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(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(m_Target)->IsGameModeCreative()) + { + m_Target = nullptr; + m_EMState = IDLE; + return; + } + } } // Process the undead burning in daylight. -- cgit v1.2.3