Clear all room data

Restoring a level cleared residence pointer from those subrooms
which were in the restored level, but if the previous level had
more subrooms, those pointers weren't cleared.
This caused weird problems when a shopkeeper data was looked
up based on the subroom number.

Just to be safe, clear all the room data when freeing the level.
This commit is contained in:
Pasi Kallinen
2021-06-26 15:10:38 +03:00
parent b5dd0f8986
commit c019968997

View File

@@ -523,6 +523,9 @@ savelev(NHFILE* nhfp, xchar lev)
g.level.buriedobjlist = 0;
g.billobjs = 0;
stairway_free_all();
(void) memset(g.rooms, 0, sizeof(g.rooms));
g.nroom = g.nsubroom = 0;
g.rooms[0].hx = g.subrooms[0].hx = -1;
/* level.bonesinfo = 0; -- handled by savecemetery() */
}
save_engravings(nhfp);