diff --git a/CHANGELOG.md b/CHANGELOG.md index c491cb83c0..548351acc0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ Bug #1751: Birthsign abilities increase modified attribute values instead of base ones Bug #3246: ESSImporter: Most NPCs are dead on save load + Bug #3488: AI combat aiming is too slow Bug #3514: Editing a reference's position after loading an esp file makes the reference disappear Bug #3737: Scripts from The Underground 2 .esp do not play (all patched versions) Bug #3792: 1 frame late magicka recalc breaks early scripted magicka reactions to Intelligence change diff --git a/apps/openmw/mwmechanics/aicombat.cpp b/apps/openmw/mwmechanics/aicombat.cpp index 91a9b15b6f..9eb8a00763 100644 --- a/apps/openmw/mwmechanics/aicombat.cpp +++ b/apps/openmw/mwmechanics/aicombat.cpp @@ -137,7 +137,10 @@ namespace MWMechanics } storage.updateCombatMove(duration); + storage.mRotateMove = false; if (storage.mReadyToAttack) updateActorsMovement(actor, duration, storage); + if (storage.mRotateMove) + return false; storage.updateAttack(characterController); } else @@ -442,7 +445,7 @@ namespace MWMechanics storage.mCurrentAction->getCombatRange(isRangedCombat); float eps = isRangedCombat ? osg::DegreesToRadians(0.5) : osg::DegreesToRadians(3.f); float targetAngleRadians = storage.mMovement.mRotation[axis]; - smoothTurn(actor, targetAngleRadians, axis, eps); + storage.mRotateMove = !smoothTurn(actor, targetAngleRadians, axis, eps); } MWWorld::Ptr AiCombat::getTarget() const diff --git a/apps/openmw/mwmechanics/aicombat.hpp b/apps/openmw/mwmechanics/aicombat.hpp index 5425f1af0b..34e726412c 100644 --- a/apps/openmw/mwmechanics/aicombat.hpp +++ b/apps/openmw/mwmechanics/aicombat.hpp @@ -33,6 +33,7 @@ namespace MWMechanics bool mAttack; float mAttackRange; bool mCombatMove; + bool mRotateMove; osg::Vec3f mLastTargetPos; const MWWorld::CellStore* mCell; std::shared_ptr mCurrentAction; @@ -65,6 +66,7 @@ namespace MWMechanics mAttack(false), mAttackRange(0.0f), mCombatMove(false), + mRotateMove(false), mLastTargetPos(0,0,0), mCell(nullptr), mCurrentAction(),