Oops, too much programming in Java and PHP for me

As for putting it on its own layer, how would that affect the shooting function? How exactly do you "shoot" using the targeting reticle? Does it create a sprite relative to the position of the "aim" sprite? Is there a sprite collision between the "aim" sprite and enemy sprites? If either of these is true, then the "aim" sprite has to be on the same layer as the other sprites, otherwise no collision is detected.
Also, If you just change the last two subs to this:
Sub Player_OnFrameStart(gameActive)
FindAim()
End Sub
Then it will refind the targeting reticle every frame, which shouldn't cause a significant slow-down. However, it's just cleaner only to update the index when required. When you restart the level, does that use a special function? Because that should run FindAim, but apparently not. Also, some refinement could be made to the code, like not re-finding the sprite if it hasn't changed, but that wouldn't cause any improvement as far as the bugs are concerned, there's not a necessity to do so (but it would make it cleaner and possibly run faster on low-end systems).