diff options
author | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-12-21 13:52:14 +0100 |
---|---|---|
committer | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-12-21 13:52:14 +0100 |
commit | afaf104b4086dbc5245f92a209cb68a088780ebb (patch) | |
tree | 82bdb4f173cda642566206066f8fdd27b9f725b5 /source/Mobs/AggressiveMonster.cpp | |
parent | Added "Latest version" to the PrimaryServerVersion in webadmin settings (patch contributed by STR_Warrior) (diff) | |
download | cuberite-afaf104b4086dbc5245f92a209cb68a088780ebb.tar cuberite-afaf104b4086dbc5245f92a209cb68a088780ebb.tar.gz cuberite-afaf104b4086dbc5245f92a209cb68a088780ebb.tar.bz2 cuberite-afaf104b4086dbc5245f92a209cb68a088780ebb.tar.lz cuberite-afaf104b4086dbc5245f92a209cb68a088780ebb.tar.xz cuberite-afaf104b4086dbc5245f92a209cb68a088780ebb.tar.zst cuberite-afaf104b4086dbc5245f92a209cb68a088780ebb.zip |
Diffstat (limited to '')
-rw-r--r-- | source/Mobs/AggressiveMonster.cpp | 62 |
1 files changed, 41 insertions, 21 deletions
diff --git a/source/Mobs/AggressiveMonster.cpp b/source/Mobs/AggressiveMonster.cpp index d178ce8f8..eabfb6669 100644 --- a/source/Mobs/AggressiveMonster.cpp +++ b/source/Mobs/AggressiveMonster.cpp @@ -8,26 +8,30 @@ #include "../MersenneTwister.h" + + + cAggressiveMonster::cAggressiveMonster() : m_ChaseTime(999999) { m_EMPersonality = AGGRESSIVE; } -cAggressiveMonster::~cAggressiveMonster() -{ -} -//What to do if in Chasing State -void cAggressiveMonster::InStateChasing(float a_Dt) { - cMonster::InStateChasing(a_Dt); + + + +// What to do if in Chasing State +void cAggressiveMonster::InStateChasing(float a_Dt) +{ + super::InStateChasing(a_Dt); m_ChaseTime += a_Dt; - if( m_Target ) + if (m_Target != NULL) { - if(m_Target->GetEntityType() == cEntity::eEntityType_Player) + if (m_Target->IsPlayer()) { cPlayer * Player = (cPlayer *) m_Target; - if(Player->GetGameMode() == 1) + if (Player->GetGameMode() == 1) { m_EMState = IDLE; return; @@ -36,11 +40,14 @@ void cAggressiveMonster::InStateChasing(float a_Dt) { Vector3f Pos = Vector3f( m_Pos ); Vector3f Their = Vector3f( m_Target->GetPosition() ); - if( (Their - Pos).Length() <= m_AttackRange) { + if ((Their - Pos).Length() <= m_AttackRange) + { cMonster::Attack(a_Dt); } - MoveToPosition( Their + Vector3f(0, 0.65f, 0) ); - } else if( m_ChaseTime > 5.f ) { + MoveToPosition(Their + Vector3f(0, 0.65f, 0)); + } + else if (m_ChaseTime > 5.f) + { m_ChaseTime = 0; m_EMState = IDLE; } @@ -48,31 +55,44 @@ void cAggressiveMonster::InStateChasing(float a_Dt) { -void cAggressiveMonster::EventSeePlayer(cEntity *a_Entity) + + +void cAggressiveMonster::EventSeePlayer(cEntity * a_Entity) { - cMonster::EventSeePlayer(a_Entity); + super::EventSeePlayer(a_Entity); m_EMState = CHASING; } + + + + void cAggressiveMonster::Tick(float a_Dt) { - cMonster::Tick(a_Dt); + super::Tick(a_Dt); m_SeePlayerInterval += a_Dt; - if(m_SeePlayerInterval > 1) + if (m_SeePlayerInterval > 1) { MTRand r1; - int rem = r1.randInt() % 3 + 1; //check most of the time but miss occasionally + int rem = r1.randInt() % 3 + 1; // Check most of the time but miss occasionally m_SeePlayerInterval = 0.0; - if(rem >= 2) + if (rem >= 2) { - if(m_EMState == CHASING){ + if (m_EMState == CHASING) + { CheckEventLostPlayer(); - } else { + } + else + { CheckEventSeePlayer(); } } } -}
\ No newline at end of file +} + + + + |