XKnight wrote:Actually, this is very logical, because only using this behaviour you can calculate sum of different items using decider combinator (input: A,B,C,D output sum of every signal which satisfies given condition).
The only logical behaviour is to use each signal's value and calculate sum.
Couple of points:
First of all, it's not "logical" to have one way and not the other. When you say "logical", what you actually mean is "this is what I expect, and makes the most sense to me".
There's no "logical" behaviour, there's only CORRECT behaviour and INCORRECT behaviour. The correct behaviour is the SPECIFIED behaviour. If the actual behaviour is different from the specified behaviour, then either the specification needs to be changed or the implementation needs to be fixed.
The specification says: "Copy the value of the specified output signal from the input." This is not what the decider combinator does if you use the "Each" virtual signal on the input.
(Of course, the behaviour of these virtual signals is not even specified AT ALL anywhere in the game, which would be bad enough even if it wasn't quirky as
fuck [excuse my French]).
From the other side what behaviour would you expect?
As said above, I expect the specified behaviour.
Input: A=100,B=200,C=300,Blue=20
"Each > Blue, output Blue" => Blue + Blue + Blue = 60 ? this is ridiculous.
Why is it "ridiculous"? It gives you the number of signals over the threshold, times the threshold. It is what it is.
The actual implementation gives you the sum of all signals over the threshold, mapped to the signal color of the threshold. How is this any more, or less, "ridiculous" than the other?
Maybe I happen to have an application for the first case. I have a reference input signal, and I want to output it once for every other signal that is less than/equals/greater than the reference. Then the specified behaviour would be what I'd need.
Also, the current behaviour is not consistent: "Blue > A; Output A"
should be a special case of "Each > A; Output A" if the only inputs are "Blue" and "A". (Much like, for an example, an endless loop in a programming language can be made as a special case of a WHILE loop with a constant TRUE condition.) Alas, the game does not behave in that way, and it violates the Principle of Least Surprise.
It's like having a loop construct in a programming language that behaves differently if you only loop once. Nobody designing a programming language would have that.
"Each > Blue, output Blue" => Blue = 20 ? what is the difference with "Any > Blue, output Blue"
There would be no difference, but it would not be the specified (tool tip) behaviour either. So it's beyond the point.