Sorry not at my computer so can’t post code but I’ll talk you through the way I went about it in my project .
I would just make a master weapon actor with all the necessary data inside, then for each specific type of weapon make a child copy of this master weapon actor and set the variables accordingly. Now you then need two enums and one bool variable. 1 enum weapon type, 2 enum ammo type, and the bool isPrimaryWeaponFire.
So let’s say I have my master weapon actor I then want to make the pistol from you’re first post I create a child copy of the master weapon actor and call it pistol . Inside I change all the relevant variables so name = pistol , for the weapon type enum set the type to pistol, for the ammo type do a check if isPrimaryWeaponFire is true then set the ammo type enum to be normal bullets, if the bool is false and we are in secondary fire mode set the enum to equal electricity bullets.
When you fire you first check the bool to find out if the weapon is firing its primary or secondary weapon fire mode. So let’s say I’m firing the pistol from you’re first example and it’s fire mode bool returns true for isPrimaryWeapon fire . This will mean that the if check we asked about earlier will return that the ammo enum must be normal bullets if the bool returns false the enum would return electric bullets.