I only found one solution
don't worry, most things in construct are easier to do than any other game making package
this is just one of those things
but anyway, the solution is here:
look at the cap first, before reading, or this will seem even more confusing
make a global variable to track whether any asteroid has been destroyed by the current click
you can make a global variable by making an action to Set a global variable (under system) or a condition to check a global variables value (also under system), when it asks you which variable you want, just click "add new"
then "on left mouse button clicked"
set the global value to zero. Zero will mean "no", because this is a new click, and no asteroids have been destroyed yet
then a subevent, "for each object ordered"
- this will do all your actions, once per object, and put the objects in the order you tell it
make it FOR EACH "asteroid" ordered by asteroid.zindex - descending -
this makes it so the object with the highest z index (in front of other objects) goes first
then another subevent "is global variable" zero
so if your global variable still equals zero, it will run the actions
the actions will be to destroy the Asteroid, and then set the global variable to 1, so when the loop goes to the next asteroid, it won't won't get past the "is global variable" zero condition, and it won't get destroyed