anchor.diff:      fState := ws_Walking;
     end;
   
  -  if (fOrder=wo_Walk) and GetUnitAction.StepDone and CheckCanAbandon then
  +  if (fOrder=wo_Walk) and GetUnitAction.StepDone and CanInterruptAction then
     begin
       if GetUnitTask <> nil then FreeAndNil(fUnitTask);
       //If we are not the commander then walk to near
  
positive.code: end;
  
  
  function TKMUnitWarrior.UpdateState():boolean;
    function CheckCanAbandon: boolean;
    begin
      if GetUnitAction is TUnitActionWalkTo      then Result := TUnitActionWalkTo(GetUnitAction).CanAbandon else
      if GetUnitAction is TUnitActionStay        then Result := not TUnitActionStay(GetUnitAction).Locked else //Initial pause before leaving barracks is locked
      if GetUnitAction is TUnitActionAbandonWalk then Result := false else //Abandon walk should never be abandoned, it will exit within 1 step anyway
      if GetUnitAction is TUnitActionGoInOut     then Result := false else //Never interupt leaving barracks
      if GetUnitAction is TUnitActionFight       then Result := false //Never interupt a fight
      else Result := true;
    end;
  var
    i: integer;
    PositioningDone, FoundFight: boolean;
  
negative.code:     function CheckForEnemy:boolean;
      function CheckForEnemyAround: TKMUnit;
  
      function CanInterruptAction:boolean;
  
      procedure Save(SaveStream:TKMemoryStream); override;
      function UpdateState():boolean; override;
      procedure Paint(); override;
  