I've also refactored the rooms slightly.
From now on, ideally any function with "get" in the name should always return a valid value. A function with "find" in the name, however, does the same thing, but may also return an invalid result such as an error code.
Triggers now have handles for simple understanding, but there's nothing preventing multiple triggers from sharing the same name.