Hmm it was a bit trickier than I remember, haven't used shadows in a while
Here's a cap file https://dl.dropboxusercontent.com/u/4714446/ShadowCasting.cap
Edit: To hide ones from other rooms, I would add this:
Private variable to each GameWall called "RoomNumber", and an invisible sprite over each room with the same private variable.
When player overlaps the room identifier (room check) object, set player private variable "CurrentRoom" to the objects' "RoomNumber"
Then, add events to say "if GameWall.Value('RoomNumber') = Player.Value('RoomNumber') then GameWall set visible" and otherwise set the GameWall to invisible
Hope that helps!