Well, I guess if people are offering to help, I'll throw it up then.
Mediafire LinkSo here's the whole process map, to find what's going wrong.
1) MainBodyMethod in Program.cs establishes a new MapObject.
2) The MapObject constructor calls the placeholder method GenerateMap(), which calls the MakeDefaultUnderground() method from its established generator (MapGenerator.cs). The argument determines how many cells (in the x-dimension) the map should have (and should only by 3 or 4).
3) MakeDefaultUnderground (in MapGenerator.cs) randomly determines which cells should have rooms in them, and counts through the map, calling the MakeDefaultUndergroundPattern class (no really) with arguments for whether the room should be long, tall, or square.
4) MakeDefaultUndergroundPattern randomly determines what size room to make (and seems to work fine), and feeds that data to make a new RoomObject. Later when the RoomObject comes back, it calls the ReconcileRooms function to draw the RoomObject's data into the MapObject's overall array (this also seems to work fine).
5) The RoomObject constructor (in its .cs) passes that data to DrawDefaultUndergroundRoom (don't judge me) which fills in a properly sized array of MapTiles with the walls and floors for a room, then calls the AddDoors function to edit itself.
6) AddDoors is supposed to generate and shuffle an array to tell it which side to put a door on, then count down that side a random distance and place a door. I currently have it set up so the Room-drawing class feeds a random number of doors to the AddDoors method, but I originally had it inside AddDoors. This appears to be where everything is going wrong for no good reason, because I'm getting this cockamamie result no matter which way I set things up.
So yeah, good luck and godspeed guys. I am completely and totally stumped, and I really don't want to be stumped, both because I'd really like Rooms to be objects now and not revert back to my original design, and also because as I said before, it was exactly this sort of seemingly-unsolvable "error" that scared me out of programming the first time around.