TMap FindChecked assertion with valid data

It looks like Chain is a BP derived from USkill. In that case you need to create an instance of Chain to use. FObjectFinder doesn’t instantiate a new object for you, it’s just returning the class of the BP at the path you provided.

Unless USkill is derived from UClass, I don’t see how what you’re doing now could be right. But I could be assuming something that isn’t true or not getting something on some level. If that’s the case, hopefully someone else can help.

That said, here’s what I’d do:

Add a member variable to the Gameinstance that is TSubclassOf<USkill>. Call it “ChainClass”. Open your Gameinstance blueprint and set that variable to the Chain BP class. Then in C++, use ChainClass to create the Chain object.