Map variable not saving correctly?

I’m trying to set up a system where I save the salient details of every NPC in a streaming level before it unloads, so that the next time that I open the level, all of the NPCs are where they were, have the same HP, etc.

I have a variable set up in the Game Instance that is basically a map with a Name (the level) keyed to a struct. That struct contains only one variable, another map with another Name (the NPC ID) keyed to another struct. That struct, in turn, contains all of the details I want to save about the NPC.

Inside of the Door class, I have some logic that is fired when you interact with the door.

What I’m trying to do is collect all that data and save it to the lower-level map. As far as I can tell, this should work.

In order to test it, I am going through a door that has an NPC next to it, then returning through the door. If it worked, there would be two copies of the NPC: the one that is placed there in the editor and the one that is spawned upon loading the level from the variable in the Game Instance. There is only one, however.

I had this set up differently before where I was using the Make Struct node, but when I was doing it that way, I ended up with an additional copy of the NPC every time I came back through the door.

Any ideas?