diff --git a/src/engine/gameManager/CombatManager.java b/src/engine/gameManager/CombatManager.java
index 66700ecd..7d554a18 100644
--- a/src/engine/gameManager/CombatManager.java
+++ b/src/engine/gameManager/CombatManager.java
@@ -432,7 +432,10 @@ public enum CombatManager {
 
             //Source can attack.
             //NOTE Don't 'return;' beyond this point until timer created
-
+            if(abstractCharacter.getObjectType().equals(GameObjectType.PlayerCharacter)){
+                PlayerCharacter pc = (PlayerCharacter)abstractCharacter;
+                pc.updateMovementState();
+            }
             boolean attackFailure = (wb != null) && (wb.getRange() > 35f) && abstractCharacter.isMoving();
 
             //Target can't attack on move with ranged weapons.
diff --git a/src/engine/objects/AbstractCharacter.java b/src/engine/objects/AbstractCharacter.java
index a44faf44..e7a1a4c9 100644
--- a/src/engine/objects/AbstractCharacter.java
+++ b/src/engine/objects/AbstractCharacter.java
@@ -24,6 +24,7 @@ import engine.jobs.TrackJob;
 import engine.math.AtomicFloat;
 import engine.math.Bounds;
 import engine.math.Vector3fImmutable;
+import engine.mobileAI.utilities.CombatUtilities;
 import engine.net.ByteBufferWriter;
 import engine.net.DispatchMessage;
 import engine.net.client.msg.UpdateStateMsg;
@@ -819,7 +820,8 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
         //TODO who the fuck wrote changeHeightJob. FIX THIS.
 
 
-        if (this.endLoc.equals(Vector3fImmutable.ZERO) || this.endLoc.equals(this.bindLoc))
+        float distance = this.loc.distance2D(this.endLoc);
+        if (this.endLoc.equals(Vector3fImmutable.ZERO) || this.endLoc.equals(this.bindLoc) || distance < 1)
             return false;
 
         if (this.takeOffTime != 0)