Can't save because graph is linked to external object?

This suddenly started happening and I have no clue why. As soon as I started getting these unreal started shutting down when I attempted certain inputs and I’m pretty sure these are related?

It says the object is transient but I can’t find any references for “transient”

That happens when you link to an asset directly instead of loading an instance of it.
Sometimes engine itself causes this problem, if you are not coding anything native and happens in your blueprint anyways, check that blueprint’s references; if there’s nothing wrong there then try a bug report.

I’m not entirely sure I’d know what to look for.
EDIT: So its a a custom spell launching component I made that seems to cause this
Everything works when I remove it and then add it again but I have to keep doing that and I can’t rely on that to work when its finalized. How do I get around this?

Anyone have anything on this?

Recompile your spell component?

One of your blueprints has corrupted reference. Create backup now, before you change anything. And in future do daily backups. When you have backup you need to find culprit blueprint (or actor).

Fastest finding method for such stuff is bisection. Ie. you delete half of actors in scene and see if unreal still crashes. Thenb you know in which half of actors corrupted one is. And you continue until you find that one crashing everything. Yes restoring from backups is slow, so consider getting SSD for unreal (backups are cheaper).

If you rule out corrupted actors, you may have corrupted blueprint class. So almost same procedure, but this time delete blueprints one by one. You do not need working code, all you need to see where is that corrupted reference. When you found exact actor or blueprint that crashes your project, restore everything from backup and delete just that one crashing.

Then you need to recreate it manually, do not copy paste it may recreate crash. I have powerfull enough PC that i can open 2 unreal projects (in 2 editor instances) and just copy over stuff.

And remember to make backups either manual or use version control.

I’m not entirely sure but the problem actor is the spell component. I’m not sure at what point it got corrupted but for some reason removing it from the base character and adding it again works but only until I close out and re open again.

So I just have to recreate the component from scratch and replace the references with the new one?

I had a problem like this that turned out to be my custom C++ code creating a NewObject in an ActorComponent constructor. Since such constructors are called at edit time, my code was attempting to add custom data to a Blueprint which it then didn’t know what to do with. I moved my NewObject call into BeginPlay and it resolved the issue.

I did find a solution on my own after fiddleing a bit back and forth.
Just in case this is helpful for anyone else…

It was complaining that I was naming the pointer variable for the components something different from the supplied names.
So what I had was this:

RootComp = CreateDefaultSubobject<USceneComponent>(TEXT("Root"));

And I had to change it to this:

Root = CreateDefaultSubobject<USceneComponent>(TEXT("Root"));

After this was done and compiled, I had to restart the engine also I believe for it to unload the previously linked private variables.