To do it way I described initially, which is more efficient and more secure, your ABaseBolt would exist in level or be spawned by Server. It would be owned by Server. Client Character would ask Server to spawn projectiles using an RoS RPC, as you would normally. It really is as simple as two images I posted for that solution.
You mention needing lots of custom information for each player, and that being reason behind wanting a Client owned ABaseBolt. Instead, you can collect information for Client’s spells on a Client-owned class, such as Character or Player State, and then pass that information to ABaseBolt through RPC that calls spawn event. That way anything spawned by ABaseBolt on Server will have get all information it needs to make it unique to player. This is similar to how you used GetSpawnProjectileTransform information and passed that to spawn projectile functionality. It’s going to be unique to your game, so I’m not really able to come up with exact answer you need, but that’s basis of it.