I want to address the event bug shown
here. Looking at the event code for the ceiling drop, it's set to an invisible timer that expires after a couple of seconds and calls an event subroutine upon expiry that makes the ceiling fall. Looking at the assembly code, the subroutine is called at the bottom of the event stack, and the event stack pointer is set there. That tells me that we might have a threading issue here; the event code that is supposed to run when the player steps on the exit tile either gets ignored because the ceiling fall routine is called first, or is interrupted by the timer thread and its place in the event stack is overwritten by the ceiling fall event.
One idea I have to address this is, instead of calling a timer-expiry routine at the bottom event stack, push it to the top and run it before finishing the currently running event. If that were the case, then I would expect the same scenario as shown in the video to still show the ceiling falling, but then the player moves to the other room as expected (by the event trigger that is placed there; it's not an exit tile, I already tried replacing the event trigger with an exit and it didn't fix the problem). The only problem that might cause is, some events are probably meant to be interrupted by a timer-trigger event and it might break the game if they are not (e.g. the Opera House). I can't think of any that are definitely contingent upon this, but I want to get some input from my peers about this.