Hi is this close to what you're after?
Edit: slight change to capx
[attachment=1:2tb70m1r][/attachment:2tb70m1r]
without for loop
[attachment=0:2tb70m1r][/attachment:2tb70m1r]
Edit: Comments.. Any reason the block wasn't in the 'heavy' family? And also why weren't you using the family instead of individual objects in a big 'or' block? The comment about 'each door's starting state' is a bit misleading because those events are continually evaluated, not just at the start.
Basically I started from scratch as the code looked way too complicated. I also used a boolean 'state' variable instead of the text one (personal preference, less error prone).
I keep coming back to one general design principal: when a change of state occurs, toggle a variable, then 'do all the state change stuff elsewhere'; i.e. in an event that checks for the state variable's value. Don't do things at the point where the state changes. It keeps things simple, clean and readable.