Congratulations on the release, OP.
Again, I'll voice my only gripe with CE/CR; it uses the same damage, armor pen and bullet speed for every single weapon, making it difficult to code different firearms with the same caliber and differ them accordingly. Example: 5.56mm. In a nutshell: 5.56mm out of a 5' barrel has 1900 fps velocity; out of a 12' barrel, 2900 fps. That is 50% difference in muzzle velocity that most certainly account into all the three stats I've laid out earlier.

This can be solved by simply making the shooting verb of the specific firearm inherit the stats, instead of the bullet type. This way we have more customization and can assign different armor pen for different weapons. Possibilities suddenly become endless; you could make thirty 9mm guns and each would operate differently under not only those three, but all the rest of the stats.
It also does not cover fall-off armor penetration according to the range of the guns, but that is very passable.
EDIT: Disregard what I said; it can be done by making multiple <CombatExtended.AmmoSetDef> with different projectiles based on the same ammo set.
Again, I'll voice my only gripe with CE/CR; it uses the same damage, armor pen and bullet speed for every single weapon, making it difficult to code different firearms with the same caliber and differ them accordingly. Example: 5.56mm. In a nutshell: 5.56mm out of a 5' barrel has 1900 fps velocity; out of a 12' barrel, 2900 fps. That is 50% difference in muzzle velocity that most certainly account into all the three stats I've laid out earlier.

This can be solved by simply making the shooting verb of the specific firearm inherit the stats, instead of the bullet type. This way we have more customization and can assign different armor pen for different weapons. Possibilities suddenly become endless; you could make thirty 9mm guns and each would operate differently under not only those three, but all the rest of the stats.
It also does not cover fall-off armor penetration according to the range of the guns, but that is very passable.
EDIT: Disregard what I said; it can be done by making multiple <CombatExtended.AmmoSetDef> with different projectiles based on the same ammo set.