For the if with the key, you could probably place it inside the function that gets called, set it so that it doesn't auto remove and then in the if add
RemoveEntityCollideCallback(string& asParentName, string& asChildName);
And that would probably allow for it to be triggered without having to leave the map and only start when you want it to.
As for the floor... What kind of floor are you using? And though it's unlikely, did you accidentally forget to save adding the floors, or accidentally undo them or anything troublesome like that?
Edit: For the credits, if it's being used as a door interact, it would probably work if it were
void StartCredits(string &in asEntity)
{
if(GetSwingDoorLocked(asEntity) == false)
{
FadeOut(2.0f);
StartCredits("01_Vicarious.ogg", false, "Ending", "MainCredits", 1);
}
}
If it's not attached to the door that it's checking to be unlocked, asEntity could be changed to the name of the door, if it is on the door you want to check to see if it's unlocked, asEntity should work fine.