diff options
author | Julian Laubstein <julianlaubstein@yahoo.de> | 2015-07-14 23:16:36 +0200 |
---|---|---|
committer | Julian Laubstein <julianlaubstein@yahoo.de> | 2015-07-14 23:16:36 +0200 |
commit | d7b10607d42daebcd817e9d44723224b6527e850 (patch) | |
tree | 0fd5207e1c315fe3f5bbeb0622121091e964aa1f /src/Entities/Player.cpp | |
parent | Merge pull request #2352 from mmdk95/master (diff) | |
parent | Fix food drain on movement. (diff) | |
download | cuberite-d7b10607d42daebcd817e9d44723224b6527e850.tar cuberite-d7b10607d42daebcd817e9d44723224b6527e850.tar.gz cuberite-d7b10607d42daebcd817e9d44723224b6527e850.tar.bz2 cuberite-d7b10607d42daebcd817e9d44723224b6527e850.tar.lz cuberite-d7b10607d42daebcd817e9d44723224b6527e850.tar.xz cuberite-d7b10607d42daebcd817e9d44723224b6527e850.tar.zst cuberite-d7b10607d42daebcd817e9d44723224b6527e850.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Entities/Player.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp index 97e2eca3a..3e1e2b7ea 100644 --- a/src/Entities/Player.cpp +++ b/src/Entities/Player.cpp @@ -16,6 +16,7 @@ #include "../Items/ItemHandler.h" #include "../Vector3.h" #include "../FastRandom.h" +#include <cmath> #include "../WorldStorage/StatSerializer.h" #include "../CompositeChat.h" @@ -2178,20 +2179,18 @@ void cPlayer::ApplyFoodExhaustionFromMovement() return; } - // Process exhaustion every two ticks as that is how frequently m_LastPos is updated - // Otherwise, we apply exhaustion for a 'movement' every tick, one of which is an already processed value - if (GetWorld()->GetWorldAge() % 2 != 0) - { - return; - } - // Calculate the distance travelled, update the last pos: - Vector3d Movement(GetPosition() - m_LastPos); - Movement.y = 0; // Only take XZ movement into account + double SpeedX = m_Speed.x; + double SpeedZ = m_Speed.z; + double BaseExhaustion(sqrt((SpeedX * SpeedX) + (SpeedZ * SpeedZ))); // Apply the exhaustion based on distance travelled: - double BaseExhaustion = Movement.Length(); - if (IsSprinting()) + if (IsFlying() || IsClimbing()) + { + // Apply no exhaustion when flying or climbing. + BaseExhaustion = 0; + } + else if (IsSprinting()) { // 0.1 pt per meter sprinted BaseExhaustion = BaseExhaustion * 0.1; |