Ah, it looks like you’re using the global “enemySprite” variable in your events. When coding overlap events, you want to drag out the local variable from the event like so:

The reason this was causing a bug was that every time a new enemy is created, the enemySprite variable is being updated to point to the new enemy. So every time you tried to destroy the enemy it would destroy whatever the most recently created one was instead of the one that was actually in the overlap event.