[2.0.67] Splitter gives one side priority when both circuit conditions are true

Bugs that are actually features.
sushi_eater
Inserter
Inserter
Posts: 41
Joined: Thu Feb 13, 2020 2:22 pm
Contact:

[2.0.67] Splitter gives one side priority when both circuit conditions are true

Post by sushi_eater »

The filter splitter input/output circuit control behavior is strange. When both sides evaluate to false, there is no priority. When both evaluate to true, one side wins out and gets priority. IMO, the expected behavior is that both sides get priority, meaning there is no priority.
User avatar
boskid
Factorio Staff
Factorio Staff
Posts: 4190
Joined: Thu Dec 14, 2017 6:56 pm
Contact:

Re: [2.0.67] Filter splitter circuit I/O control

Post by boskid »

Since splitter priority has a 3-way switch, having a way to get a no-priority is reasonable from my point of view. When both conditions are true then splitter keeps previous setting. If you want to get rid of the no-priority outcome you can set both conditions in a way that they are opposite of each other, that way there will be always exactly one condition that is true, for example Left="input-I < 0" and Right = "input-I >= 0" (in that case a value of 0 would select Right due to equality).

I am not seeing any bugs in your report and as such moving to Not a bug.
robot256
Smart Inserter
Smart Inserter
Posts: 1274
Joined: Sun Mar 17, 2019 1:52 am
Contact:

Re: [2.0.67] Filter splitter circuit I/O control

Post by robot256 »

boskid wrote: Mon Sep 22, 2025 5:19 pm Since splitter priority has a 3-way switch, having a way to get a no-priority is reasonable from my point of view. When both conditions are true then splitter keeps previous setting. If you want to get rid of the no-priority outcome you can set both conditions in a way that they are opposite of each other, that way there will be always exactly one condition that is true, for example Left="input-I < 0" and Right = "input-I >= 0" (in that case a value of 0 would select Right due to equality).

I am not seeing any bugs in your report and as such moving to Not a bug.
So the truth table is:

Left false, Right false = Equal priority
Left true, Right false = Left priority
Left false, Right true = Right priority
Left true, Right goes from false to true = Left priority
Right true, Left goes from false to true = Right priority

This is an interesting behavior, and I can't comment on what it might be used for in game yet. But it introduces a new internal state variable to the splitter -- which condition became true first -- in a way that is not currently obvious to the player or readable by the circuit network.
My mods: Multiple Unit Train Control, RGB Pipes, Shipping Containers, Rocket Log, Smart Artillery Wagons.
Maintainer of Auto Deconstruct, Cargo Ships, Vehicle Wagon, Honk, Shortwave.
User avatar
boskid
Factorio Staff
Factorio Staff
Posts: 4190
Joined: Thu Dec 14, 2017 6:56 pm
Contact:

Re: [2.0.67] Filter splitter circuit I/O control

Post by boskid »

robot256 wrote: Mon Sep 22, 2025 8:53 pm So the truth table is:
If you want a truth table for the "set input side", it is as follows:
09-22-2025, 23-03-21.png
09-22-2025, 23-03-21.png (8.83 KiB) Viewed 362 times
robot256
Smart Inserter
Smart Inserter
Posts: 1274
Joined: Sun Mar 17, 2019 1:52 am
Contact:

Re: [2.0.67] Splitter gives one side priority when both circuit conditions are true

Post by robot256 »

Thanks. So if you do happen to want the splitter to give equal priority when both sides are "requesting" it with a true condition, you will need to duplicate both conditions in combinators and, if they are both true, negate both of them before sending to the splitter.
My mods: Multiple Unit Train Control, RGB Pipes, Shipping Containers, Rocket Log, Smart Artillery Wagons.
Maintainer of Auto Deconstruct, Cargo Ships, Vehicle Wagon, Honk, Shortwave.
Loewchen
Global Moderator
Global Moderator
Posts: 10394
Joined: Wed Jan 07, 2015 5:53 pm
Contact:

Re: [2.0.67] Splitter gives one side priority when both circuit conditions are true

Post by Loewchen »

If you want to discuss this further, make a feature request.
Locked

Return to “Not a bug”