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:43 +03:00
parent b5dd0f8986
commit c019968997
+3
View File
@@ -523,6 +523,9 @@ savelev(NHFILE* nhfp, xchar lev)
g.level.buriedobjlist = 0; g.level.buriedobjlist = 0;
g.billobjs = 0; g.billobjs = 0;
stairway_free_all(); 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() */ /* level.bonesinfo = 0; -- handled by savecemetery() */
} }
save_engravings(nhfp); save_engravings(nhfp);