diff --git a/apps/openmw/mwmechanics/character.cpp b/apps/openmw/mwmechanics/character.cpp index eb49a346d2..8025384147 100644 --- a/apps/openmw/mwmechanics/character.cpp +++ b/apps/openmw/mwmechanics/character.cpp @@ -583,23 +583,25 @@ void CharacterController::refreshMovementAnims(CharacterState movement, bool for MWRender::Animation::BlendMask movemask = MWRender::Animation::BlendMask_All; - if(isRealWeapon(mWeaponType) || mPtr.getClass().isBipedal(mPtr)) + std::string weapShortGroup = getWeaponShortGroup(mWeaponType); + + // Non-biped creatures don't use spellcasting-specific movement animations. + if(!isRealWeapon(mWeaponType) && !mPtr.getClass().isBipedal(mPtr)) + weapShortGroup.clear(); + + if (swimpos == std::string::npos && !weapShortGroup.empty()) { - std::string weapShortGroup = getWeaponShortGroup(mWeaponType); - if (swimpos == std::string::npos && !weapShortGroup.empty()) - { - std::string weapMovementAnimName; - // Spellcasting stance turning is a special case - if (mWeaponType == ESM::Weapon::Spell && isTurning()) - weapMovementAnimName = weapShortGroup + movementAnimName; - else - weapMovementAnimName = movementAnimName + weapShortGroup; + std::string weapMovementAnimName; + // Spellcasting stance turning is a special case + if (mWeaponType == ESM::Weapon::Spell && isTurning()) + weapMovementAnimName = weapShortGroup + movementAnimName; + else + weapMovementAnimName = movementAnimName + weapShortGroup; - if (!mAnimation->hasAnimation(weapMovementAnimName)) - weapMovementAnimName = fallbackShortWeaponGroup(movementAnimName, &movemask); + if (!mAnimation->hasAnimation(weapMovementAnimName)) + weapMovementAnimName = fallbackShortWeaponGroup(movementAnimName, &movemask); - movementAnimName = weapMovementAnimName; - } + movementAnimName = weapMovementAnimName; } if (!mAnimation->hasAnimation(movementAnimName))