rewrote weapon code to be more modular