The point of having a generic fire function is that each weapon could have an event sheet where it has it's own fire function, which says which projectiles to fire for itself. The player just needs to call CurrentWeapon.Fire() and the weapon handles the rest. No checks necessary.
Well, perhaps this is just going way over my head but it seems to me like you'd need to run a weapon check at one point or another in the event sheet to know what projectiles to shoot.
I suppose you can make the shoot sequence something more generic like "On shoot -> set boolean to true" where the boolean is a family variable found in all weapons (in the same family), then code every each weapon to respond differently when their boolean is toggled, if that's what you're after.
That might be able to work. How would you suggest I keep a reference to the current Weapon family member equipped in order to set the boolean?
So if you want each weapon to have different actions upon firing, why would you need to call a generic fire function?
You could ofcourse call a fire function and add the current weapon as a parameter and add the specific actions for that weapon in the function by comparing the parameter..
I'm not really sure what the question is..
For that solution, what would I be passing? A string with the name of the weapon? Some number that represents the weapon?