diff --git a/CHANGELOG.md b/CHANGELOG.md index 82624d1203..671fa68bc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Bug #5057: Weapon swing sound plays at same pitch whether it hits or misses Bug #5129: Stuttering animation on Centurion Archer Bug #5714: Touch spells cast using ExplodeSpell don't always explode + Bug #5849: Paralysis breaks landing Bug #5977: Fatigueless NPCs' corpse underwater changes animation on game load Bug #6427: Enemy health bar disappears before damaging effect ends Bug #6645: Enemy block sounds align with animation instead of blocked hits diff --git a/apps/openmw/mwmechanics/character.cpp b/apps/openmw/mwmechanics/character.cpp index ba178c77d5..fe88ec2dba 100644 --- a/apps/openmw/mwmechanics/character.cpp +++ b/apps/openmw/mwmechanics/character.cpp @@ -2077,13 +2077,14 @@ namespace MWMechanics } } - bool inJump = false; + bool wasInJump = mInJump; + mInJump = false; if (!inwater && !flying && solid) { // In the air (either getting up —ascending part of jump— or falling). if (!onground) { - inJump = true; + mInJump = true; jumpstate = JumpState_InAir; static const float fJumpMoveBase = gmst.find("fJumpMoveBase")->mValue.getFloat(); @@ -2101,7 +2102,7 @@ namespace MWMechanics float z = cls.getJump(mPtr); if (z > 0.f) { - inJump = true; + mInJump = true; if (vec.x() == 0 && vec.y() == 0) vec.z() = z; else @@ -2114,9 +2115,9 @@ namespace MWMechanics } } - if (!inJump) + if (!mInJump) { - if (mJumpState == JumpState_InAir && !flying && solid) + if (mJumpState == JumpState_InAir && !flying && solid && wasInJump) { float height = cls.getCreatureStats(mPtr).land(isPlayer); float healthLost = 0.f; @@ -2278,7 +2279,7 @@ namespace MWMechanics { if (inwater) idlestate = CharState_IdleSwim; - else if (sneak && !inJump) + else if (sneak && !mInJump) idlestate = CharState_IdleSneak; else idlestate = CharState_Idle; @@ -2292,7 +2293,7 @@ namespace MWMechanics updateIdleStormState(inwater); } - if (inJump) + if (mInJump) mMovementAnimationControlled = false; if (isTurning()) diff --git a/apps/openmw/mwmechanics/character.hpp b/apps/openmw/mwmechanics/character.hpp index b397d788ea..a375b8b8cf 100644 --- a/apps/openmw/mwmechanics/character.hpp +++ b/apps/openmw/mwmechanics/character.hpp @@ -160,6 +160,7 @@ namespace MWMechanics JumpingState mJumpState{ JumpState_None }; std::string mCurrentJump; + bool mInJump{ false }; int mWeaponType{ ESM::Weapon::None }; std::string mCurrentWeapon;