Calling a parent function has broken for all of its children

I have a blueprint called “Ability” with a whole bunch of children. There’s one child for each ability in our game, of which there will eventually be hundreds. If we save (without making any changes, just open, save, close) our Game Mode blueprint, and then close and reopen the editor, they all break. So far the only way we’ve been able to figure out to solve this is either:

  1. Never making any changes to our Game Mode blueprint again, or
  2. Recreating every single ability child blueprint that we’ve created so far.

Obviously #1 isn’t going to work, and we don’t want to do #2, especially considering this could happen again. We’d rather find a solution that doesn’t involve redoing work. Here’s what has happened:

The parent blueprint has functions called “Spawn Effect” which the children call on themselves. It takes an input class variable of type “Effect”. If I save my Game Mode blueprint and close and reopen the editor, the class that I try to pass through gets reset (and it just says “Select Class”, and it stops compiling. If I check the function on the parent blueprint, it is still set to “Effect.” If I mouse over it on the function call, it now says it’s expecting a class of type “Class.” If I select any class from the class dropdown, it doesn’t select it. Just stays at Select Class.

Working:

20329-ue4editorproblem2.jpg

Broken after saving (with no changes made) Game Mode blueprint:

20328-ue4editorproblem.jpg

I have tried compiling everything, refreshing nodes, etc. If I just create a new node for the function call, it works until I close the editor and reopen it, and then it breaks in the exact same way.

To anyone else having this problem, we fixed it by changing the class type being passed from our own custom class type to “Actor.” Now it seems to have stopped breaking and we’re back to actual development.