mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-01 00:15:34 +00:00
Merge branch 'landofwindandshade' into 'master'
Handle landing in the frame the jump is over (bug #5849) Closes #5849 See merge request OpenMW/openmw!2499
This commit is contained in:
commit
3ca17e5183
3 changed files with 10 additions and 7 deletions
|
@ -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
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -160,6 +160,7 @@ namespace MWMechanics
|
|||
|
||||
JumpingState mJumpState{ JumpState_None };
|
||||
std::string mCurrentJump;
|
||||
bool mInJump{ false };
|
||||
|
||||
int mWeaponType{ ESM::Weapon::None };
|
||||
std::string mCurrentWeapon;
|
||||
|
|
Loading…
Reference in a new issue