anchor.diff:      if GetHouseToUnlock(UnlockProcedure, aHT, FollowingHouse) then
       begin
         MaterialShortage := not aIgnoreWareReserves AND (WoodShortage OR TrunkShortage OR StoneShortage OR GoldShortage);
  -      //MaterialShortage := False;
  -      Output := BuildHouse(UnlockProcedure OR (aHT = ht_Farm) OR MaterialShortage, MaterialShortage, MaterialShortage, aHT); // Farm must be placed outside of forest
  +      //MaterialShortage := False; // Enable / disable pre-building (building without placing house plans when we are out of materials)
  +      Output := BuildHouse(UnlockProcedure OR (aHT = ht_Farm) OR MaterialShortage, MaterialShortage, MaterialShortage, aHT); // Farm should be placed outside of forest
       end
       else if (FollowingHouse <> ht_none) AND (gHands[fOwner].Stats.GetHouseQty(ht_School) > 0) then // Activate house reservation (only when is first school completed)
       begin
  
positive.code:         Exit;
        end;
  
    if (gAIFields.Influences.AvoidBuilding[aPoint.Y, aPoint.X] = AVOID_BUILDING_NODE_LOCK_ROAD) then // Only roads are unlocked
      gAIFields.Influences.AvoidBuilding[aPoint.Y, aPoint.X] := AVOID_BUILDING_UNLOCK;
  end;
  
  
negative.code:               FieldList.Delete(I);
            end;
          end
          // Tree was destroyed while worker is going to do it -> remove wine or corn plan and remove point from build node
          else if (gHands[fOwner].BuildList.FieldworksList.HasField(FieldList.Items[I]) <> ft_None) then // ft_None is fine, road was checked before
          begin
            gHands[fOwner].BuildList.FieldworksList.RemFieldPlan(FieldList.Items[I]);
            FieldList.Delete(I);
          end
          // There is digged wine / field
          else if (gTerrain.Land[FieldList.Items[I].Y, FieldList.Items[I].X].TileLock = tlFieldWork) then
          begin
            // do nothing (wait till worker finish tile and place road
          end
          // Tree was destroyed for example by script
          else
          begin
            FieldList.Delete(I);
  