Also, i think doing this is actually a very good exercise and lets you improve at construct by miles, to do this you have to understand picking and instance variables and self references and generally better understand what you're doing, which is very good !!!
also about the part about it complicating your code in kinda false, if you're able to cram together multiple conditions and actions, you end up with a much smaller event count (maybe you don'T want people to do this because the event counting takes into account conditions and not actions so you can put huge amounts of events in the free version ?)
Also, as an important note, it works here because every sprite is moving on every tick, but if you were to have some sprites not move, it would become inefficient because it forces those to do the action anyways. I recommend you give the "pick by evaluate" condition a shot with the ternary (?:) operator for "short circuiting" out of "or" blocks for picking objects, or if something simply has a velocity and you need to move it, the eval can be simply sprite.velocity <> 0 since it will return true for every sprite that has a non zero velocity and pick them and then the action can move them and that'S pretty cool !!
(also if you want to short circuit, you should put the most likely condition FIRST, and when either true or false, whichever if the most likely, end by setting the variable, and put more conditions in the other branch, but in your example, you put it last so it kinda defeats the point)