|
|
|
@ -537,15 +537,14 @@ namespace MWClass
|
|
|
|
|
const MWBase::World *world = MWBase::Environment::get().getWorld();
|
|
|
|
|
const MWMechanics::MagicEffects &mageffects = stats.getMagicEffects();
|
|
|
|
|
|
|
|
|
|
const float normalizedEncumbrance = getNormalizedEncumbrance(ptr);
|
|
|
|
|
|
|
|
|
|
bool running = ptr.getClass().getCreatureStats(ptr).getStance(MWMechanics::CreatureStats::Stance_Run);
|
|
|
|
|
|
|
|
|
|
// The Run speed difference for creatures comes from the animation speed difference (see runStateToWalkState in character.cpp)
|
|
|
|
|
float runSpeed = walkSpeed;
|
|
|
|
|
|
|
|
|
|
float moveSpeed;
|
|
|
|
|
if(normalizedEncumbrance >= 1.0f)
|
|
|
|
|
|
|
|
|
|
if(getEncumbrance(ptr) > getCapacity(ptr))
|
|
|
|
|
moveSpeed = 0.0f;
|
|
|
|
|
else if(canFly(ptr) || (mageffects.get(ESM::MagicEffect::Levitate).getMagnitude() > 0 &&
|
|
|
|
|
world->isLevitationEnabled()))
|
|
|
|
@ -553,6 +552,7 @@ namespace MWClass
|
|
|
|
|
float flySpeed = 0.01f*(stats.getAttribute(ESM::Attribute::Speed).getModified() +
|
|
|
|
|
mageffects.get(ESM::MagicEffect::Levitate).getMagnitude());
|
|
|
|
|
flySpeed = gmst.fMinFlySpeed->getFloat() + flySpeed*(gmst.fMaxFlySpeed->getFloat() - gmst.fMinFlySpeed->getFloat());
|
|
|
|
|
const float normalizedEncumbrance = getNormalizedEncumbrance(ptr);
|
|
|
|
|
flySpeed *= 1.0f - gmst.fEncumberedMoveEffect->getFloat() * normalizedEncumbrance;
|
|
|
|
|
flySpeed = std::max(0.0f, flySpeed);
|
|
|
|
|
moveSpeed = flySpeed;
|
|
|
|
|