anchor.diff:        end;
   
       //Walk complete
  -    if ((NodePos=NodeList.Count) or ((not fWalkToSpot) and (KMLength(fWalker.GetPosition,fWalkTo) < 1.5)) or
  +    if CanAbandon and ((NodePos=NodeList.Count) or ((not fWalkToSpot) and (KMLength(fWalker.GetPosition,fWalkTo) < 1.5)) or
         ((fTargetUnit <> nil) and (KMLength(fWalker.GetPosition,fTargetUnit.GetPosition) < 1.5)) or //If we are walking to a unit check to see if we've met the unit early
         ((fWalker.GetUnitTask <> nil) and fWalker.GetUnitTask.WalkShouldAbandon)) then //See if task wants us to abandon
       begin
  
positive.code:     end;
  
      //See if we have a request to change our route from ChangeWalkTo
      if not KMSamePoint(fNewWalkTo,KMPoint(0,0)) then
      begin
        fWalkTo := fNewWalkTo;
        fWalkFrom := NodeList.List[NodePos];
  
negative.code:       if not fRouteBuilt then exit; //Next execute will report error to user
      end;
  
  
  
      //Check for units nearby to fight
      if CanAbandon and (fWalker is TKMUnitWarrior) then
        if TKMUnitWarrior(fWalker).CheckForEnemy then
        begin
          //If we've picked a fight it means this action no longer exists, so we must exit out (don't set DoEnd as that will now apply to fight action)
  