I managed to solve my problem.
Step 1)
Up and including engine version 4.13.0 - Delete and remake any BP classes after any significant change to the underlying C++ class!
I was seeing some immense differences in BP component hierarchy even though I was toying around with different Attaching in C++ constructors. Deleting and re-making the BP class solved the issue immediately.
Step 2)
My Weapon class is now UActorChildComponent class. This seems to provide all functionality I need and plays nicely to being attached (and having stuff attached).
*Step 3) *
To solve some of the BP variables not saving, or editor crashes when editing BP variables in Blueprint editor, use the following workaround:
- Drag a BP from Content browser into scene.
- Make any BP changes on the actual instance of BP class there
- Go to Edit Blueprint (big blue button right above your properties) and select -> Make Instance Changes to parent BP class (or something named as such, you get the point)
- Remove BP instance from scene
If you go into actual BP editor now, you will see your changes properly set up there.
Step 4)
Attaching my code files if anybody needs the correct Constructor stuff (order of attachment and how to create subclasses and subobjects etc).
Big thanks to game-dev Slack chat, you guys are very helpful!