Well, I think it probably will be even simpler than you make it out to be as game is a text adventure (lookup Zork for example of one). So all rooms are largely "imaginary" and exits (north, south, east and west) are perfectly aligned - it's just case of whether or not two rooms have exits on the opposite sides (e.g. room that is connecting to one with exit at west MUST have exit on the east).

Also instead of "room types" (though those are still used e.g. so dragon won't spawn in middle of house or somewhere as much insane) I've devised system that I think is more flexible.

I've call it disposition system for some reason (dunno why anymore it is called that way, don't ask me at the time it made sense now it doesn't). The room can connect to other room when difference between disposition values of those is smaller than 3. The rooms that you spawn in at the beginning of the game always have disposition of 0 and aren't considered for spawning when going to another room (i.e. in whole playthrough you'll see only one room with disposition of 0, at the very beginning).