I have been tinkering with a Modular weapon system myself creating a base blueprint that contains all of the Weapon information itself, which pulls data from various structs. The structs themselves house the format for the data, but can be edited in the weapon blueprint to be customized to the individual weapon. From the base blueprint which houses the mechanics of the weapon I can extend off into child blueprints and just create different weapons based on that.
By various structs I mean a WeaponAnim Struct for example that houses the Weapon animations format that can be changed in the blueprints. My Animations that are looping are not montages as of yet, but I might attempt to convert them to be such down the road. But I use an enum to declare a weapons state such as Idling, firing, Aiming, Reloading which then fires off a series of either animations or montages depending on the action needed. As of right now, I use montages for things such as firing, reloading, and going into and out of iron sights which then move to a looping idle animation.
The system is really rough right now as I work out the kinks, but being able to cast to another blueprint allows me to change which animations are being played on the first person arms that are attached to the character and not the weapon. My goal is to make the blueprints as clean as possible and easily extendable so that I could update my project down the road with more weapons instead of having to modify a single blueprint that houses ALL of the weapons.
To detail a little more the structs work like categories in Archetypes from UE3. I have a struct for anims, one for weapon stats such as min/maxdamage, Rate of Fire and fire mode, one that handles recoil stats, one that handles an attachment for fire mode projectiles and (within the projectile struct I can modify velocity, and ranges) then 1 last struct that handles inventory data such as Name, Description, Weight, item level, rarity level and the inventory slot that it will sit in when equipped. I have also been experimenting with a weapon mods struct that will allow me to expose a series of Socket that can be modified that I can set per blueprint that will allow me to add things such as lasers, scopes, silencers and what have you.