I think then most balance-dependent variable for the towers is the cooldown between throws. It dictates how the player has to move: if slow, the player will bait out the throw and then sprint across the sight-line; if fast, the player will have to use quick reaction time to successfully get across the sight-line; and if medium speed, the player will likely only have to dodge the bottle two or three times. Making the projectile use OnComponentHit made it more realistic and fair, stopping on walls and not passing through the player like the sweeper sometimes would. The explosion VFX mostly helps with immersion, as well as telling the player that a thrown bottle is now no longer a threat. If it hits the player, the effects tell the player what killed them.