If a map sells several weapons at one price, they ought to be worth the same. Matching the damage number does not achieve that: the cooldown differs, the blast differs, the reach differs.
value = damage x blast x range / cooldown
Range belongs in the formula because a weapon only fires while a target is inside it. Longer reach means more of each round spent shooting, which is as real a gain as damage. Leave it out and the long ranged weapon looks weaker than it plays, and you will not be able to explain why it wins.
Blast is harder. How many bodies one shot covers depends on how tightly the wave packs, which is a property of your map. Do not guess it, count it in game. Once you have the number, write it down as a constant and record in a comment where it came from.
The most common accident is drift. Define table A against table B, then change B alone, and A is quietly wrong. Triple a turret price and leave the unit prices alone and a unit is worth a third of what it should be, with nothing to report it.
So instead of writing the ratio down as a number, compute it at build time. Read the live tables, derive the ratio, and refuse the build when it leaves its band. Then changing one side stops the build and makes you fix the other.
Upgrade steps need the same yardstick. Even if the bases are equal, a per level increase that is not proportional to the base makes them diverge as the ladder is bought. Three weapons identical at level 0 and sitting at 1.4x and 0.9x by level 300 is a real outcome.
