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:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user