Remove "trigger once" from all events and never ever use it inside of triggers, loops, and especially with objects that have multiple instances! It's the cause of all your bugs.
Instead of "trigger once" use additional conditions, or Timer behavior. For example, in the last event on your first screenshot you can add another condition: Tween "Idle" is not playing.
Timer is a very useful behavior for such games. For example:
Enemy has LineOfSight to Player
Enemy timer "attack" is not running : Enemy start timer "attack" for 1 second
Enemy On timer "attack" : Enemy spawn a bullet
This is a proper alternative to "trigger once" and "wait 1 second" (which won't work correctly for multiple instances).