I woud recommend reworking the Weapon - Ability System
you shoud seperate Weapons and Abilitys
it woud be better if you coud create an Weapons like that:
Weapon Minigun = new Weapon(name, Value, SOMEMORE PARAMETERS HERE, SHOOTEVENTHANDLER)
and the same for abilitys (just with an Ability Event handler)
I woud recommend reworking the Weapon - Ability System