anchor.diff:          Exit(ocNoObstacle)
         else
         begin
  -
  +        U := fUnit; //Local copy since Self will get freed if TrySetActionWalk succeeds
           if fUnit.TrySetActionWalk(fWalkTo, fType, fDistance, fTargetUnit, fTargetHouse, False) then
           begin
  +          //Now Self = nil since the walk action was replaced! Don't access members and exit ASAP
             //Restore direction, cause it usually looks unpleasant,
  -        //when warrior turns to locked Loc and then immidiately (in 1 tick) turns away when on new route
  -          fUnit.Direction := aDir;
  -          Result := ocReRouteMade;
  +          //when warrior turns to locked Loc and then immidiately (in 1 tick) turns away when on new route
  +          U.Direction := aDir;
  +          Exit(ocReRouteMade);
           end else
             Exit(ocNoObstacle); //Same as when AllTilesAroundLocked
         end;
  
positive.code:   T: TKMPoint;
    DistNext: Single;
    AllTilesAroundLocked: Boolean;
  begin
    Result := ocNoObstacle;
  
  
negative.code:     if CanWalkToTarget(fUnit.CurrPosition, GetEffectivePassability) then
      begin
        fUnit.SetActionWalk(fWalkTo, fType, fDistance, fTargetUnit, fTargetHouse);
        //Now Self = nil since the walk action was replaced! Don't access members and exit ASAP
        Exit(ocReRouteMade);
      end else
        Result := ocNoRoute;
  end;
  