The wizmakemap command throws away the current level, so don't keep
the overview data for it around.
E int NDECL(dooverview);
E void FDECL(show_overview, (int, int));
E void FDECL(forget_mapseen, (int));
+E void FDECL(rm_mapseen, (int));
E void FDECL(init_mapseen, (d_level *));
E void NDECL(recalc_mapseen);
E void FDECL(mapseen_temple, (struct monst *));
if (wizard) {
struct monst *mtmp;
+ rm_mapseen(ledger_no(&u.uz));
for (mtmp = fmon; mtmp; mtmp = mtmp->nmon)
if (mtmp->isshk)
setpaid(mtmp);
}
}
+void
+rm_mapseen(ledger_num)
+int ledger_num;
+{
+ mapseen *mptr, *mprev = (mapseen *)0;
+ struct cemetery *bp, *bpnext;
+
+ for (mptr = mapseenchn; mptr; mprev = mptr, mptr = mptr->next)
+ if (dungeons[mptr->lev.dnum].ledger_start + mptr->lev.dlevel == ledger_num)
+ break;
+
+ if (!mptr)
+ return;
+
+ if (mptr->custom)
+ free((genericptr_t) mptr->custom);
+
+ bp = mptr->final_resting_place;
+ while (bp) {
+ bpnext = bp->next;
+ free(bp);
+ bp = bpnext;
+ }
+
+ if (mprev) {
+ mprev->next = mptr->next;
+ free(mptr);
+ } else {
+ mapseenchn = mptr->next;
+ free(mptr);
+ }
+}
+
STATIC_OVL void
save_mapseen(fd, mptr)
int fd;