anchor.diff:      begin
         if (WareOrder[I] = wt_None) then
           break;
  -      if (RequiredHouses[  PRODUCTION[ WareOrder[I] ]  ] <= 0) then // wt_Leather and wt_Pig require the same building so avoid to place 2 houses at once
  +      HT := PRODUCTION[ WareOrder[I] ];
  +      if (RequiredHouses[HT] <= 0) then // wt_Leather and wt_Pig require the same building so avoid to place 2 houses at once
           continue;
  -      case AddToConstruction(PRODUCTION[ WareOrder[I] ], False, False) of
  +      // Farms and wineyards should be placed ASAP because fields may change evaluation of terrain and change tpBuild status of surrouding tiles!
  +      case AddToConstruction(HT, HT in [htFarm, htWineyard], False) of
           cs_NoNodeAvailable: break;
           cs_HouseReservation, cs_RemoveTreeProcedure: Output := True;
           cs_HousePlaced:
  
positive.code:         begin
          end;
        end;
        RequiredHouses[  PRODUCTION[ WareOrder[I] ]  ] := 0; // Make sure that next node will not scan this house in this tick
      end;
      Result := Output;
    end;
  
negative.code:     begin
        MaterialShortage := not aIgnoreWareReserves AND (fWoodShortage OR fTrunkShortage OR fStoneShortage OR fGoldShortage);
        MaterialShortage := MaterialShortage OR (MaxPlace <= 0);
        UnlockProcedure := UnlockProcedure OR MaterialShortage;
        HouseReservation := MaterialShortage;
        IgnoreExistingPlans := MaterialShortage AND not (aHT in [htWoodcutters, htGoldMine, htIronMine, htCoalMine]);
        //MaterialShortage := False; // Enable / disable pre-building (building without placing house plans when we are out of materials)
  