Smoke particles on blocked pipe pistons - #1381
Conversation
A blocked pipe system is invisible from the outside: pulses arrive, nothing moves, and finding the stuck piston means watching every one of them at the moment a pulse happens. A pull that is refused everywhere now marks the piston blocked and a repeating task keeps it smoking, so a stuck system can be found by looking at it. The next pull that delivers clears the flag, and the flag is dropped when the piston or its source container is removed. Gated by 'full-pipe-smoke' (default on).
|
How does this interact with the round robin PR? My assumption is that doing this round-robin would alleviate "stuck" pipes for the most part – so what "defines" stuck in those cases? |
|
They compose pretty well. Blocked here means a pull happened and every item came back, and any delivering pull clears it. With round robin an unroutable stack only causes one refused pulse per rotation, so at most you get a short puff before the next delivery clears it. Steady smoke only happens when nothing in the container can go anywhere, outputs full or everything filtered out, which is exactly the case round robin can't help with. If both land I can gate the persistent smoke on a full unproductive rotation instead of a single refused pull, so the one-slot case doesn't puff at all. |
Emptying the container by hand left the piston smoking forever, since the flag only cleared on a delivering pull. A pulse that finds nothing to pull now clears it too, a pipe with nothing to move is not stuck.
A blocked pipe system is invisible from the outside: pulses arrive, nothing moves, and finding the stuck piston means watching every piston at the exact moment a pulse happens.
A pull that is refused everywhere now marks the piston blocked, and a repeating task (every 12 ticks) keeps it visibly smoking. The next pull that delivers anything clears the flag, and the flag is also dropped when the piston or its source container is removed. The pulse-time puff is throttled per piston so fast clocks read as a steady chimney rather than a particle storm.
Gated by 'full-pipe-smoke' (default on). Same pull-loop area as #1376/#1378/#1380, happy to rebase whichever lands last.