I've been banging around in this code for about 11 hours now and I've reached burnout. At least I (mostly) understand what the heek was the original intent of the code and I've doubled the script size with DEBUG prints.
I've narrowed it down to the event responders... I kick a rock off plate 2 and I get an event from both plate 1 and 7 which immediately breaks the game. Since no one else was there but me and I was on the other side of the room, something else triggered this anomaly.
When my eyes uncross and I can sit up straight in the chair again, I'll focus on that part of the code.
(And once I figure out this little problem, I still have to test multiplayer mode)
EDIT: Ack! It wasn't the responders. Digging a little deeper showed the two events I was concerned about were the for the plate I stepped on and and one for setting the state of the secret door. The path is leading me to find if the AgeSDL's are being reset properly. The code is written to bail on the first occurrence of a plate lever mismatch. Thinking it might be in there if the code is ignoring checking every plate/lever setting.
EDIT2: Everything works just like it's supposed to... but the response to throwing a switch works exactly once. When you get the inner doors open and walk to the switch panel, throwing a switch causes the outer doors to open. For some reason thereafter, tldnSlavePrisonDoors.IEvalPlateAndPaddles() fails to react to any other switch change. The tldnSlavePrisonDoors.OnNotify faithfully intercepts the change in the lever state and passes it to IEvalPlateAndPaddles but something goes wrong after the first time. Too tired to see it tonight... need mo' debug statements.