anchor.diff:  
   function TKMEye.GetMineLocs(aHT: TKMHouseType): TKMPointTagList;
   var
  -  I: Integer;
  +  Ownership: Byte;
  +  I,X,Y: Integer;
     Mines: TKMPointList;
     Output: TKMPointTagList;
   begin
  
positive.code:     begin
        // Save tile as a potential point for quarry
        Ownership := gAIFields.Influences.Ownership[fOwner, Y+1, X];
        if (aOnlyMainOwnership AND (gAIFields.Influences.GetBestOwner(X, Y+1) = fOwner))
           OR (not aOnlyMainOwnership AND (Ownership > 0)) then
        begin
          fStoneMiningTiles.Items[I] := KMPoint(X,Y);
          Output.Add(fStoneMiningTiles.Items[I], Ownership);
        end;
      end
      else
        // Else remove point
        fStoneMiningTiles.Delete(I);
    end;
    Result := Output;
  end;
  
  
  function TKMEye.GetCoalMineLocs(aOnlyMainOwnership: Boolean = False): TKMPointTagList;
  var
    Count: Word;
    CoalPolygons, PolygonEvaluation: TKMWordArray;
  
negative.code:   fBuildFF.UpdateState(); // Mark walkable area in owner's city
    Count := 0;
    for Idx := 0 to Length(fCoalPolygons) - 1 do
      if (fCoalPolygons[Idx] > 0) AND gAIFields.Influences.CanPlaceHouseByInfluence(fOwner, Idx) then
      begin
        Loc := gAIFields.NavMesh.Polygons[Idx].CenterPoint;
        if (fBuildFF.VisitIdx <> fBuildFF.Visited[ Loc.Y, Loc.X ]) then
          continue;
  