anchor.diff:        Land[Y,X].BaseLayer.Rotation := RotID[Bits];
       end;
       UpdatePassability(KMPoint(X,Y));
  +    AddToVisited(X,Y);
  +
  +    //Floodfill through around tiles
  +    UpdateTransition(X,  Y-1, aTransitionType, aStep + 1); //  x x x
  +    UpdateTransition(X+1,Y,   aTransitionType, aStep + 1); //  x   x
  +    UpdateTransition(X,  Y+1, aTransitionType, aStep + 1); //  x x x
  +    UpdateTransition(X-1,Y,   aTransitionType, aStep + 1);
  +    UpdateTransition(X-1,Y-1, aTransitionType, aStep + 1);
  +    UpdateTransition(X+1,Y-1, aTransitionType, aStep + 1);
  +    UpdateTransition(X+1,Y+1, aTransitionType, aStep + 1);
  +    UpdateTransition(X-1,Y+1, aTransitionType, aStep + 1);
     end;
   
   var
  
positive.code: end;
  
  
  //Check if requested tile is soil suitable for fields and trees
  function TKMTerrain.TileIsSoil(X,Y: Word): Boolean;
  begin
  
negative.code:   var
      Bits, BitsDiag: Byte;
    begin
      Result := False;
      if not TileInMapCoords(X,Y) //Skip for tiles not in map coords
        or (aStep > MAX_STEPS)    //Limit for steps (no limit for now)
        or TileHasStone(X,Y)      //If tile has stone no need to change it
        or ArrayContains(KMPoint(X,Y), Visited, fVisitedCnt) //If we already changed this tile
        or ((aStep <> 0) and not TileHasStonePart(X,Y)) then //If tile has no stone parts (except initial step)
        Exit;
  
      Bits := GetBits(X  ,Y-1)*1 +
              GetBits(X+1,Y  )*2 +
  