Ok cool so from what I gather, I may be able to help in one direction here.
If you utilize enemy UIDs or IIDs, you may be able to have more control over who shoots. So, for example,
If enemy with IID is colliding with the range collision, then if have them shoot. You could loop through UIDs I think naturally with the system events. Hope that makes sense. If ids dont work, check if you can loop an object with multiple instances using a variable. I think you can change a variable independently that way so not all of them will have to shoot. I can help you check that if you like, I can make a simple test.
As far as bullet behavior, you might need to utilize atan2 (or if not available, angle() or distance()) formulas might work since its iso. Id have to see what its doing now to figure out how to make that work. Q: Is the bullet limited to up, down, left, right for you at the moment?
For movement, you might want to utilize angles instead of 8 direction
Hope that is a little helpful so far! I get confused easily so Ill try to keep each post simple. Ill stop here for now :P
We got this!