summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Mobs/AggressiveMonster.cpp10
-rw-r--r--src/Mobs/Monster.cpp16
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.