CloveltOc -
First, I think in some cases the timer behavior is better to use & easier to make. But in this case, the Every(X) seconds condition is good for this situation.
Second, Wait() in a "for each loop" seems wrong, this definitely needs a timer / Every(X) seconds condition.
Third, The way you made the events with the shooting boolean is a bit inefficient. Why?
"It's because a loop runs in every tick... that means the boolean (shooting) will keep changing to true/false in every (1/2 * tick). That's inefficient for me. But again since
today's devices are too fast as Ashley said, it won't matter. But then again, since it's a loop then it will matter. "
I recommend you change it to this instead using the Every(X)Seconds condition.
*For Each (Ship)
*Every(ship.fireRate)
------>Function Call "shoot (ship.UID, 0, ship.spread)
Hope that clears it up.