Update 11
Sorry for no update yesterday - a lot of real life things kept me busy, but I managed to fit in more gamedev.
I mostly fixed the door sounds! I don't like the solution, because it involves toggling variables to stop the game playing the sounds every turn and I had no idea where to put the variables. The code looks even messier now. I did my best to comment what I was doing in detail, but I can't help but feel that if I update this game past the jam, there's going to be some horrible audio bug in a year's time that has its roots here which I absolutely will not be able to track down. There's still a think where pressure plate door opening/closing sounds play when a state is loaded, which isn't consistent with other types of doors, but whatever, it's FINE.
I added a few more sound effects, including a jingle for the game end screen, a key collecting sound, and a little chirp for the Hungry when they chase you. I don't like this last one because it sounds very farty, so I may change it. Also I've stopped liking the name The Hungry, but that's how it's referred to throughout the code and it's too late to change it now.
I tweaked the player death state, so now it reloads the last saved state instead of restarting the room (and potentially undoing player progress). This should effectively restart the room if the player hasn't saved a state yet, since the Control object automatically reads the state of all objects to build itself. I also now have the enemy sprite on top of the player sprite during death, which I think looks better.
With all this, I think the game engine is done! There's nothing else I absolutely need to add or change. Now I can focus on puzzles. Looks like there'll be 17 levels in total.
This will probably be the last update until I finish and submit the game. Good luck as we enter the last few days, all!
Some last screenshots: