diff options
author | andrew <xdotftw@gmail.com> | 2014-05-12 20:38:52 +0200 |
---|---|---|
committer | andrew <xdotftw@gmail.com> | 2014-05-12 20:38:52 +0200 |
commit | aea866f5b10d5ab0226260b4d25c70b1cfd31d2a (patch) | |
tree | a9d6352a70c41f3b32eb093fb18f8171971738c5 /src/Entities/Entity.cpp | |
parent | cEntity::Killed(cEntity *) Handler; Achievement triggers; cPlayer::AwardAchievement() (diff) | |
download | cuberite-aea866f5b10d5ab0226260b4d25c70b1cfd31d2a.tar cuberite-aea866f5b10d5ab0226260b4d25c70b1cfd31d2a.tar.gz cuberite-aea866f5b10d5ab0226260b4d25c70b1cfd31d2a.tar.bz2 cuberite-aea866f5b10d5ab0226260b4d25c70b1cfd31d2a.tar.lz cuberite-aea866f5b10d5ab0226260b4d25c70b1cfd31d2a.tar.xz cuberite-aea866f5b10d5ab0226260b4d25c70b1cfd31d2a.tar.zst cuberite-aea866f5b10d5ab0226260b4d25c70b1cfd31d2a.zip |
Diffstat (limited to 'src/Entities/Entity.cpp')
-rw-r--r-- | src/Entities/Entity.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp index 9eb03acde..c393f89fd 100644 --- a/src/Entities/Entity.cpp +++ b/src/Entities/Entity.cpp @@ -312,12 +312,16 @@ bool cEntity::DoTakeDamage(TakeDamageInfo & a_TDI) if ((a_TDI.Attacker != NULL) && (a_TDI.Attacker->IsPlayer())) { + cPlayer * Player = (cPlayer *)a_TDI.Attacker; + // IsOnGround() only is false if the player is moving downwards - if (!((cPlayer *)a_TDI.Attacker)->IsOnGround()) // TODO: Better damage increase, and check for enchantments (and use magic critical instead of plain) + if (!Player->IsOnGround()) // TODO: Better damage increase, and check for enchantments (and use magic critical instead of plain) { a_TDI.FinalDamage += 2; m_World->BroadcastEntityAnimation(*this, 4); // Critical hit } + + Player->GetStatManager().AddValue(statDamageDealt, round(a_TDI.FinalDamage * 10)); } m_Health -= (short)a_TDI.FinalDamage; @@ -580,9 +584,16 @@ void cEntity::Tick(float a_Dt, cChunk & a_Chunk) if (m_AttachedTo != NULL) { - if ((m_Pos - m_AttachedTo->GetPosition()).Length() > 0.5) + Vector3d DeltaPos = m_Pos - m_AttachedTo->GetPosition(); + if (DeltaPos.Length() > 0.5) { SetPosition(m_AttachedTo->GetPosition()); + + if (IsPlayer()) + { + cPlayer * Player = (cPlayer *)this; + Player->UpdateMovementStats(DeltaPos); + } } } else |