anchor.diff:  end;
   
   
  -function TKMTerrain.TileHasParameter(X,Y: Word; aCheckTileFunc: TBooleanWordFunc; aAllow2CornerTiles: Boolean = False): Boolean;
  +function TKMTerrain.TileHasParameter(X,Y: Word; aCheckTileFunc: TBooleanWordFunc; aAllow2CornerTiles: Boolean = False;
  +                                     aStrictCheck: Boolean = False): Boolean;
   const
     PROHIBIT_TERKINDS: array[0..1] of TKMTerrainKind = (tkLava, tkAbyss);
  +  //Strict check (for roadable)
  +  STRICT_TERKINDS: array[0..4] of TKMTerrainKind = (tkGrassyWater, tkSwamp, tkIce, tkWater, tkFastWater);
   var
     I, K, Cnt: Integer;
     Corners: TKMTerrainKindsArray;
  
positive.code:       for I := 0 to High(PROHIBIT_TERKINDS) do
          if Corners[K] = PROHIBIT_TERKINDS[I] then
            Exit(False);
  
        if aCheckTileFunc(BASE_TERRAIN[Corners[K]]) then
          Inc(Cnt);
  
negative.code: 
      fBoundsWC: TKMRect; //WC rebuild bounds used in FlattenTerrain (put outside to fight with recursion SO error in FlattenTerrain EnsureWalkable)
  
      function TileHasParameter(X,Y: Word; aCheckTileFunc: TBooleanWordFunc; aAllow2CornerTiles: Boolean = False;
                                aStrictCheck: Boolean = False): Boolean;
  
      function GetMiningRect(aRes: TKMWareType): TKMRect;
  
  