Maybe give each gun/bullet a proc to handle bullet spread, recoil, and other such effects. Shotguns can just have a custom version that spreads buckshot.