You could create some "gates" using variables... essentially a simple state machine.
For a dirty example, lets declare a global variable and call it "Room1State"
If a power-up is not overlapping a room -> set Room1State to 0
If a powerup is overlapping a room -> set Room1State to 1
Then just compare the Room1State as part of your conditions when tapping on the object (room or powerup)
[On Touch]
[Room1State=0]
--- Activate room
[On Touch]
[Room1State=1]
--- Collect Power-up
--- Set Room1State to 0
So when the powerup spawns over a room, just set that variable to 1, or whatever substitute.
This would perhaps work best as an instance variable for your room object, but it depends how you're defining what a "room" is.
~Sol