With a state machine you can jump to any portion of the sate machine you want.
Using my dirty-example above all you need to do is have a couple of extra conditions on the state change like;
[On Touch]
[Room1State=0]
--- Activate room
[On Touch]
[Room1State=1]
[Touch is on power-up object]
--- Collect Power-up
--- Set Room1State to 0
[ELSE]
--- Set Room1State to 0
I guess my pseudo code isn't exactly accurate to your specific circumstance, but it would be the method that I would use if I were trying to achieve what you're trying to build.
Basically by having a state machine - and comparing the touch position (is it within X distance to the powerup) you can control which "thing" the player is actually touching on. You may also find this can be solved by making the bounding collision box of your power-ups larger - because from memory, it shouldn't "click through" anyway - but it's been a million years since I've made anything for a touch device (so I wouldn't go by my terrible memory of things).
Think of the state/gate system as a fail-safe. If the power-up exists in a room then the state is 1... but if the player presses on the room and the power-up coordinates are far away from the touch position, then set state to 0 and the player is activating the room itself, otherwise it stays as 1 and collects the power-up then goes to 0.
I hope this makes it a little clearer.
~Sol