It's done! The ending sequence, an abomination and affront to all things good and fluffy:
(I do feel like this is not what coroutines were meant for. I don't know if that's true, but it feels that way.)
In English terms, it's making some stuff invisible, turning off the player's movement ability, moving the player to a set location, and then making some other stuff visible. It's funny because most every other script in the project is generic enough to apply to any situation - all of the interactables function essentially the same way, with a couple of minor exceptions - except for this one giant monstrosity of a coroutine. I'm sure there's some way to make it generic as well, but it's a bit beyond me as things are.