Thought of some really cool ways to rewrite the code and make it more reliable. Unfortunately, this involves combing through all of the code, because I'm making fundamental changes that I can't see how to make "half-way". It would be nice if I'd had tests first, but there's no obvious API to test yet, so nyeah. Once I've updated everything, I'm going to try to add type annotations to all of this junk; the changes I'm making should make that all work much better than it did the way I was doing it before.
Once I've got this current rewrite, of the entity stuff, done, then I think I should work on breaking out the core loop into its own class. I've also got vague ideas about refactoring the room generation, but nothing concrete there yet. (Also, at some point I need to audit my usage of colors. It's really ad-hoc and hard-to-read.)
It is way too late already, I guess I'm done. Good night.