anchor.diff:  
     TKMTerrainTileBrief = record
       X,Y: Byte;
  -    Terrain: Byte;
  -    Rotation: Byte;
  -    Height: Byte;
  -    Obj: Byte;
  -    ChangeSet: TKMTileChangeTypeSet;
  -  end;
  -
  -  TKMTerrainTileChangeError = packed record
  -    X, Y: Byte;
  -    ErrorsIn: TKMTileChangeTypeSet;
  -  end;
  -
  -  TKMTerrainTileChangeErrorArray = array of TKMTerrainTileChangeError;
  -
  +    Terrain: Byte;
  +    Rotation: Byte;
  +    Height: Byte;
  +    Obj: Byte;
  +    ChangeSet: TKMTileChangeTypeSet;
  +  end;
  +
  +  TKMTerrainTileChangeError = packed record
  +    X, Y: Byte;
  +    ErrorsIn: TKMTileChangeTypeSet;
  +  end;
  +
  +  TKMTerrainTileChangeErrorArray = array of TKMTerrainTileChangeError;
  +
     TKMTerrainTile = record
       Terrain: Byte;
       Height: Byte;
  
positive.code:     function TileIsGold(X, Y: Word): Byte;
      function TileIsCornField(Loc: TKMPoint): Boolean;
      function TileIsWineField(Loc: TKMPoint): Boolean;
      function TileIsLocked(aLoc: TKMPoint): Boolean;
      function UnitsHitTest(X, Y: Word): Pointer;
      function UnitsHitTestF(aLoc: TKMPointF): Pointer;
  
negative.code:   else
      Result := (Land[Loc.Y,Loc.X].CornOrWine = 2);
  end;
  
  
  //Check if the tile is a walkable road
  function TKMTerrain.TileIsWalkableRoad(Loc: TKMPoint): Boolean;
  begin
    Result := False;
    if not TileInMapCoords(Loc.X,Loc.Y) then
      Exit;
    // Is map editor OK with this?
    Result := (tpWalkRoad in Land[Loc.Y,Loc.X].Passability);
  end;   
  
  
  //Check if this tile can be factored
  