From 293a0f768c38d2ff816d29236b253a95c7e43f01 Mon Sep 17 00:00:00 2001
From: mrcheko <cheko@sevas.ua>
Date: Wed, 27 Jul 2016 23:43:32 +0300
Subject: [PATCH] use real distance to target to determinate 'ready to attack'
 state

---
 apps/openmw/mwmechanics/aicombat.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/apps/openmw/mwmechanics/aicombat.cpp b/apps/openmw/mwmechanics/aicombat.cpp
index 130c146b6..9cba7f2b9 100644
--- a/apps/openmw/mwmechanics/aicombat.cpp
+++ b/apps/openmw/mwmechanics/aicombat.cpp
@@ -162,7 +162,8 @@ namespace MWMechanics
         if (storage.mCurrentAction.get()) // need to wait to init action with it's attack range
         {
             //Update every frame
-            storage.mReadyToAttack = pathTo(actor, target.getRefData().getPosition().pos, duration, storage.mAttackRange);
+            bool is_target_reached = pathTo(actor, target.getRefData().getPosition().pos, duration, storage.mAttackRange);
+            if (is_target_reached) storage.mReadyToAttack = true;
         }
 
         storage.updateCombatMove(duration);
@@ -229,9 +230,11 @@ namespace MWMechanics
 
         osg::Vec3f vAimDir = MWBase::Environment::get().getWorld()->aimToTarget(actor, target);
         float distToTarget = MWBase::Environment::get().getWorld()->getHitDistance(actor, target);
+
+        storage.mReadyToAttack = (distToTarget <= rangeAttack);
         
         // can't fight if attacker can't go where target is.  E.g. A fish can't attack person on land.
-        if (distToTarget >= rangeAttack
+        if (distToTarget > rangeAttack
                 && !actorClass.isNpc() && !MWMechanics::isEnvironmentCompatible(actor, target))
         {
             // TODO: start fleeing?