The first event on your screenshot will repeat on every tick if any soldier has a line of sight, and it will create lots and lots of delayed threads because of the Wait action. This is a common and very serious mistake.
You need to use Timer behavior instead of "waits". Something like this:
Soldier has LOS to target
Soldier timer "attack" is NOT running: Soldier start a timer "attack" for random (0.5, 3) seconds
Soldier on timer "attack" : Soldier stop
.. Soldier has LOS to target: Soldier fire a bullet at target
.. Else: Soldier find path to another target