]> granicus.if.org Git - nethack/commitdiff
Remove overview for wizmode regenerated map
authorPasi Kallinen <paxed@alt.org>
Fri, 15 Sep 2017 11:45:51 +0000 (14:45 +0300)
committerPasi Kallinen <paxed@alt.org>
Fri, 15 Sep 2017 11:45:51 +0000 (14:45 +0300)
The wizmakemap command throws away the current level, so don't keep
the overview data for it around.

include/extern.h
src/cmd.c
src/dungeon.c

index 50bb496188246b13c9b621de8b5bb997292651b4..11ac0e4c18e42e8b98494408b41a24648e1bad64 100644 (file)
@@ -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 *));
index a6f4a3fcb23cc2e9cf7252eb529bc5065a04beef..9ea6898444a219c97278f3d07f1d473bcf4f8293 100644 (file)
--- 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);
index e9b6245b7b86c2f5a6268b93af03eaf7fe9fe25f..a501afb8fd9ee84b613fb11c02df1a3f063d0f75 100644 (file)
@@ -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;