diff options
author | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2014-02-11 23:09:56 +0100 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2014-02-11 23:09:56 +0100 |
commit | 06239c8336a340459a62b45b6d633a55058e4677 (patch) | |
tree | 18228a83e863488209da2f9cd18df9352cc1a29d /src/Mobs/AggressiveMonster.cpp | |
parent | Fixed #612 (diff) | |
download | cuberite-06239c8336a340459a62b45b6d633a55058e4677.tar cuberite-06239c8336a340459a62b45b6d633a55058e4677.tar.gz cuberite-06239c8336a340459a62b45b6d633a55058e4677.tar.bz2 cuberite-06239c8336a340459a62b45b6d633a55058e4677.tar.lz cuberite-06239c8336a340459a62b45b6d633a55058e4677.tar.xz cuberite-06239c8336a340459a62b45b6d633a55058e4677.tar.zst cuberite-06239c8336a340459a62b45b6d633a55058e4677.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Mobs/AggressiveMonster.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/Mobs/AggressiveMonster.cpp b/src/Mobs/AggressiveMonster.cpp index f2f0c404c..7da9f4fc2 100644 --- a/src/Mobs/AggressiveMonster.cpp +++ b/src/Mobs/AggressiveMonster.cpp @@ -5,7 +5,7 @@ #include "../World.h" #include "../Entities/Player.h" -#include "../MersenneTwister.h" +#include "../Tracer.h" @@ -73,6 +73,13 @@ void cAggressiveMonster::Tick(float a_Dt, cChunk & a_Chunk) { CheckEventSeePlayer(); } + + cTracer LineOfSight(GetWorld()); + if (ReachedFinalDestination() && (m_Target != NULL) && !LineOfSight.Trace(GetPosition(), (m_Target->GetPosition() - GetPosition()), (int)(m_Target->GetPosition() - GetPosition()).Length())) + { + // Attack if reached destination, target isn't null, and have a clear line of sight to target (so won't attack through walls) + Attack(a_Dt / 1000); + } } @@ -81,7 +88,7 @@ void cAggressiveMonster::Tick(float a_Dt, cChunk & a_Chunk) void cAggressiveMonster::Attack(float a_Dt) { - super::Attack(a_Dt); + m_AttackInterval += a_Dt * m_AttackRate; if ((m_Target != NULL) && (m_AttackInterval > 3.0)) { |