I just keep running into situations where I need to rewrite/refactor sections of my base weapon classes, at which point I have to go through and fix every single one of them. This is becoming more of a problem as I implement more weapons that are less similar.
Here's what I'm working with already. The Weapon constructor just contains some variables that ANY weapon in my game would need to have to work with the UI and such. The SMG constructor is my base gun class. The Shotgun constructor is an example of a weapon implemented from the base SMG class. I feel like this constructor setup is a little unwieldy and just wrong, but the more important issue is just adopting a system that will let me make all kinds of wacky weapons while abstracting as much code as possible.
I'm curious if anyone has any suggestions since I'm entering the content-development phase of my project and it would be good to not need to rewrite all my weapons later.