To instantiate an object: if the object class is inherit from actor class you have to spawn, if not you have to construct (the actor class is an object that can spawn in the scene). The node has a ref pin: that’s you reference to the instantiated actor.
If you call an overrided method from a parent ref but if the object is actually a child you’ll call the child method:
ex: I’ve in my scene 3 actors: “banana”, “apple”, “orange”, inherit from “fruit”. I use get all actor of class node to get an array with 3 references to fruit object (I don’t know which fruits are). If I get element 0 (banana) and I call the method “peel” I’ll call the overrided method of the banana class (use your hands), if instead I call the same method for element 1 (apple) that haven’t an overrided peel method I’ll call peel method in fruit (usa a knife).
Now, when you create your GunMod don’t create a GunMod object, create directly a child class (you can get the class from you savegame), then save the child ref in the GunMod variable.