anchor.diff:      Result := (gHands[fOwner].BuildList.FieldworksList.HasField(aPoint) = aField)
                 OR (gTerrain.Land[aPoint.Y, aPoint.X].TileLock = aLock);
     end;
  -  function IsRoad(aPoint: TKMPoint): Boolean; inline;
  -  begin
  -    Result := gTerrain.TileIsWalkableRoad(aPoint) OR IsPlan(aPoint, tlRoadWork, ft_Road);
  +  function IsRoad(aAvoidBuilding: Byte; aPoint: TKMPoint): Boolean; inline;
  +  begin
  +    Result := (aAvoidBuilding = AVOID_BUILDING_NODE_LOCK_ROAD)
  +              OR gTerrain.TileIsWalkableRoad(aPoint)
  +              OR IsPlan(aPoint, tlRoadWork, ft_Road);
     end;
     function IsCornField(aPoint: TKMPoint): Boolean; inline;
     begin
  
positive.code:   IsRoad: Boolean;
    AvoidBuilding: Byte;
  begin
    Result := 0;
    AvoidBuilding := gAIFields.Influences.AvoidBuilding[aToY, aToX];
    IsRoad := (AvoidBuilding = AVOID_BUILDING_NODE_LOCK_ROAD)                                      // Reserved road plan
              OR (tpWalkRoad in gTerrain.Land[aToY, aToX].Passability)                             // Completed road
  
negative.code:     end;
    end;
    // Check if are existing houses completed / destroyed
    fConstructedHouses := 0;
    for HT := Low(fPlannedHouses) to High(fPlannedHouses) do
    begin
      SumCalculated := fPlannedHouses[HT].Count;
  