As far as I can tell, everything is working correctly. The project is a bit obfuscated though which makes it harder to understand. You could do the same with much simpler events.
Click on the right green box (trigger2) first. Notice the change of the two blue circles to frame 1. This trigger also tries to display the name of the sprite via Browser console. However, the console only displays the first Sprite's name.
All three sprites meet the "trigger = trigger2" condition, so the event runs with them all picked. You log the name, and C2 arbitrarily picks the first one. Then you test which are to the right of X=50, two of them are, so those two change frame. Everything has worked correctly.
[quote:2wchklem]This time click on the left blue box (trigger1). Nothing happens. What trigger1 is trying to do is use System actions to and expressions to query the Sprite.X, and set the animation frame based on it. But this isn't happening.
Again, all three sprites meet the "trigger = trigger1" condition, so the event runs with them all picked. You log the name and the same thing happens as before, it just chooses the first one. Then in a sub-event you evaluate "Sprite.X > 100". Since Sprite.X must evaluate to a single number, C2 again arbitrarily picks the first one, which has an X of 50. Therefore it evalutes "50 > 100" and returns 0 for false. The next condition tests if the result was 1, which it isn't, so the event doesn't run.
None of this has anything to do with "Trigger once". I think you're just confused about what that condition does. A more accurate name for it might be "did this event not run last tick". That is pretty much all it does.