anchor.diff:      if (aHT in [htGoldMine, htIronMine]) then
         continue;
       // Make sure we can add road below house;
  -    if (Dir = dirS) AND not CheckRoad(X,Y) then // Direction south
  +    if (Dir = dirS) AND not CanBeRoad(X,Y) then // Direction south
         Exit;
       // Quarry / Woodcutters / CoalMine / Towers may take place for mine so its arena must be scaned completely
       if aIgnoreAvoidBuilding then
  
positive.code:   for Dir := Low(fHousesMapping[aHT].Surroundings[I]) to High(fHousesMapping[aHT].Surroundings[I]) do
    for K := Low(fHousesMapping[aHT].Surroundings[I,Dir]) to High(fHousesMapping[aHT].Surroundings[I,Dir]) do
    begin
      Y := aLoc.Y + fHousesMapping[aHT].Surroundings[I,Dir,K].Y;
      X := aLoc.X + fHousesMapping[aHT].Surroundings[I,Dir,K].X;
      Point := KMPoint(X,Y);
      // Surrounding tiles must not be a house
      for PL := 0 to gHands.Count - 1 do
  
negative.code: // aIgnoreTrees = ignore trees inside of house plan
  // aIgnoreLocks = ignore existing house plans inside of house plan tiles
  function TKMEye.CanAddHousePlan(aLoc: TKMPoint; aHT: TKMHouseType; aIgnoreAvoidBuilding: Boolean = False; aIgnoreTrees: Boolean = False; aIgnoreLocks: Boolean = True): Boolean;
    function CanBeRoad(X,Y: Integer): Boolean;
    begin
      Result := (gTerrain.Land[Y, X].Passability * [tpMakeRoads, tpWalkRoad] <> [])
                OR (gHands[fOwner].BuildList.FieldworksList.HasField(KMPoint(X,Y)) <> ftNone) // We dont need strictly road just make sure that it is possible to place something here (and replace it by road later)
                OR (gTerrain.Land[Y, X].TileLock in [tlFieldWork, tlRoadWork]);
    end;
  var
    LeftSideFree, RightSideFree: Boolean;
  