Cleanup weapon code and fix weapon exhaustion