From: Pasi Kallinen Date: Fri, 15 Sep 2017 11:45:51 +0000 (+0300) Subject: Remove overview for wizmode regenerated map X-Git-Tag: NetHack-3.6.1_RC01~359 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=52ed881b2c4176d2f38b23cbca0212b6d84c52f7;p=nethack Remove overview for wizmode regenerated map The wizmakemap command throws away the current level, so don't keep the overview data for it around. --- diff --git a/include/extern.h b/include/extern.h index 50bb49618..11ac0e4c1 100644 --- a/include/extern.h +++ b/include/extern.h @@ -607,6 +607,7 @@ E int NDECL(donamelevel); 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 *)); diff --git a/src/cmd.c b/src/cmd.c index a6f4a3fcb..9ea689844 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -626,6 +626,7 @@ wiz_makemap(VOID_ARGS) if (wizard) { struct monst *mtmp; + rm_mapseen(ledger_no(&u.uz)); for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) if (mtmp->isshk) setpaid(mtmp); diff --git a/src/dungeon.c b/src/dungeon.c index e9b6245b7..a501afb8f 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -2109,6 +2109,39 @@ int ledger_num; } } +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;