ok. if you dont mind please post the piston green snapshots here so others can find it if they are searching for it.
it should be possible. i wouldnt save all rooms in one variable. i would have 2 global variables per room one for the room lights and the other for the saved values for the lights in the room. then call these save and restore pistons as needed for each room and save the resulting value to the room specific global variable.
there might
be a challenge here in that global variables scope is local while a piston is running. so need to test that a bit to make sure the saved values are right.
if thats not clear and you share the 2 pistons i will try and modify them to give an example.