These conditions are:
- Be able to set the desired items to be made easily, via a logistic group from my inventory.
- The assembler to make the exact number of requested items and not more, similarly the requester chest to request just the needed amount of items (mk01 bots are so slow..)
- The inserter to input the exact amount of required items, not buffering anything so no time is wasted and no items would have to be emptied when the recipe changes.
- The ability to make any required intermediate items missing from logistical storage (in my case that's mainly other buildings, which so far don't seem to need any fluid, so that’s off scope atm).
The basic setup: Beginning with a constant combinator with the logistic group I use to set the required items. Then the signal has to be split because of complications setting the recipe in the case of multiple requested items so I put it through a number of different selector combinators with increasing indexes, corresponding to each chain of assemblers. Now that each assembler has only one signal to be assigned to it, that signal first gets compared via a decider combinator with the amount of items in the output chest, as well as the logistic network, so the recipe clears when the desired amount is crafted. Two different combinators are needed to set the recipe to both the producing and the dummy assembler. Since you can't multiply each*each when they are different signals, I found out I have to first convert the signal to another virtual one, so an arithmetic combinator does that to get the number of requested items, and then to set the number of items for the requester chest a decider is multiplying the ingredients – which it gets from the dummy assembler – with that number. Independently, an arithmetic combinator subtracts the number of items in the crafting assembler (set to read contents+in crafting) from the required ingredients (which it gets from the dummy assembler) and sends it to a selector combinator that passes along just one of those signals both to the input inserter to set the filters and to an arithmetic combinator that converts that signal to the virtual S that the inserter needs to set the stack size. Another decider checks for missing intermediates, outputting to another selector followed by another setup like the previous one, repeated x times. Blueprint for a single, main part (I changed the inserter already, only the roboport should need to be replaced for vanilla):
A full setup capable of handling 5 simultaneous requests each with 5 simultaneous intermediates (that are shared among themselves) would probably look something like this: Issues that I would like to amend:
- Distribution of signals to assemblers, is there a better way than the selector combinators, accounting for the fact that requested items could be added to the group before the previous ones are completed (and I’ve found that sometimes changes the order the selector picks the signals, resulting in flushed crafts)?
- Adding on to that, it is even more problematic for the next, missing intermediate stage, the signals sometimes flicker frequently, especially if the requested item and its missing intermediate share a missing ingredient, making some crafts impossible to complete. It's probably contamination from an assembler but can't figure out a fix. That's the most pressing issue atm.
- When more than one of each item is requested, what would be a good way to reduce the requested ingredients as items are crafted so as to save pointless bot back and forths? How would that look like in the intermediate stage as well, considering the finished items would immediately be transferred to the requester chest of the main item?
- The input inserter so far in testing is working great, but are there any unforeseen cases that could make it get stuck holding an item?
- On the other hand the inserter atm is assigned one filter at a time, changing only when it has inserted the full amount of an ingredient, that however wastes time (very apparent if the bots bring the items the current filter has last). Putting the preceding combinator in random input mode technically works but has some weird behaviour with constant changing filters, the stack sizes set seem to always be low. What could a fix look like?
- Currently I have the logistic group in my inventory disabled, and pick up the items when they are completed while removing them from the group. Would it be too much of a hassle to make it so I can have it on so bots deliver them to me or make ghosts so that they can place them themselves, without the auto-mall making more because they are no longer in the chest/logistic network?
- Not that important because it would fundamentally change the setup too much, but any reason/way to reduce the overall number of assemblers/the footprint in general? Note that it is actually positive that separate assemblers make the requested item and the missing intermediates, since bots get time to transfer the required items to the chest.