Just thinking out loud..
You are talking about what if 5 guns or ten, but in actuality there are still only two objects.
An object lying on the ground and an object that the character is holding.
Visually these might be different all the time, but the actions are very much the same.
Wouldn't using a function to create the switch between the two be enough?
If the guns have different ways of working, which I assume they do, calling a function with the parameter for the type of gun should do the trick when for example firing.