]> granicus.if.org Git - nethack/commitdiff
Make #wizmakemap handle unpaid items and punishment
authorPasi Kallinen <paxed@alt.org>
Tue, 27 Jun 2017 21:16:11 +0000 (00:16 +0300)
committerPasi Kallinen <paxed@alt.org>
Tue, 27 Jun 2017 21:40:00 +0000 (00:40 +0300)
include/extern.h
src/cmd.c
src/shk.c

index 2ccbf3240e61fb02af553827240019a980a2c4c5..705b19cdc447cccafe9e4bbaf522b0a0d96d20c7 100644 (file)
@@ -2127,6 +2127,7 @@ E void FDECL(store_savefileinfo, (int));
 
 /* ### shk.c ### */
 
+E void FDECL(setpaid, (struct monst *));
 E long FDECL(money2mon, (struct monst *, long));
 E void FDECL(money2u, (struct monst *, long));
 E void FDECL(shkgone, (struct monst *));
index de5645d2d9ae8f344dcdcedaccede7808075f236..2ec304a8a7b09fbeec428b548baf9edc7e120b84 100644 (file)
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -621,13 +621,29 @@ wiz_identify(VOID_ARGS)
 STATIC_PTR int
 wiz_makemap(VOID_ARGS)
 {
+    /* FIXME: doesn't handle riding */
     if (wizard) {
+        struct monst *mtmp;
+
+        for (mtmp = fmon; mtmp; mtmp = mtmp->nmon)
+            if (mtmp->isshk)
+                setpaid(mtmp);
+        if (Punished) {
+            ballrelease(FALSE);
+            unplacebc();
+        }
+        check_special_room(TRUE);
+        dmonsfree();
         savelev(-1, ledger_no(&u.uz), FREE_SAVE);
         mklev();
-        reglyph_darkroom();
         vision_reset();
         vision_full_recalc = 1;
+        cls();
         (void) safe_teleds(TRUE);
+        if (Punished) {
+            unplacebc();
+            placebc();
+        }
         docrt();
         flush_screen(1);
     }
index abd9a33b088bdfca4e229257c8c6f7cc55f2adff..62052fbe759329e57524082a93ac2346433fe806 100644 (file)
--- a/src/shk.c
+++ b/src/shk.c
@@ -29,7 +29,6 @@ STATIC_VAR const char and_its_contents[] = " and its contents";
 STATIC_VAR const char the_contents_of[] = "the contents of ";
 
 STATIC_DCL void FDECL(append_honorific, (char *));
-STATIC_DCL void FDECL(setpaid, (struct monst *));
 STATIC_DCL long FDECL(addupbill, (struct monst *));
 STATIC_DCL void FDECL(pacify_shk, (struct monst *));
 STATIC_DCL struct bill_x *FDECL(onbill, (struct obj *, struct monst *,
@@ -286,7 +285,7 @@ struct obj *list;
 }
 
 /* either you paid or left the shop or the shopkeeper died */
-STATIC_OVL void
+void
 setpaid(shkp)
 register struct monst *shkp;
 {