Refactors most of the weapon code