]> granicus.if.org Git - nethack/commitdiff
fix H4101: can hear pets while deaf
authornhmall <mjnh@persona.ca>
Fri, 18 Dec 2015 17:50:25 +0000 (12:50 -0500)
committernhmall <mjnh@persona.ca>
Fri, 18 Dec 2015 17:50:25 +0000 (12:50 -0500)
This is a fix for H4101, bz192.

add non-audio (felt) outcome to yelp()

This also add #wizintrinsic command because testing this was a pain
without a simple, straightforward way to go deaf that didn't time-out
before the situation being tested recurred.

doc/fixes36.1
src/cmd.c
src/sounds.c
src/trap.c

index bedec898646945936a41c5afe947da3440d5388a..b307e0b744fe59e042aac5a99c9cefaab3a059ad 100644 (file)
@@ -40,6 +40,7 @@ don't show the old level when you die going down the stairs because of an
         iron ball
 new high score with ", while helpless" attribute appended would erroneously
        result in ", while helpless" being appended to all scores
+avoid hearing yelps when you are deaf
 
 
 Platform- and/or Interface-Specific Fixes
@@ -62,7 +63,7 @@ General New Features
 --------------------
 naming Sting or Orcrist now breaks illiterate conduct
 different feedback for reading a scroll of mail created by writing with marker
-
+wizard mode #wizintrinsic
 
 Platform- and/or Interface-Specific New Features
 ------------------------------------------------
index 156cf82fa48e4e23e87ef525a2f5ab009944975e..7e992560f722fb12c46badf8a45804c447ab4b96 100644 (file)
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -1,4 +1,4 @@
-/* NetHack 3.6 cmd.c   $NHDT-Date: 1450178549 2015/12/15 11:22:29 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.209 $ */
+/* NetHack 3.6 cmd.c   $NHDT-Date: 1450460999 2015/12/18 17:49:59 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.210 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -122,6 +122,7 @@ STATIC_PTR int NDECL(dotravel);
 STATIC_PTR int NDECL(doterrain);
 STATIC_PTR int NDECL(wiz_wish);
 STATIC_PTR int NDECL(wiz_identify);
+STATIC_PTR int NDECL(wiz_intrinsic);
 STATIC_PTR int NDECL(wiz_map);
 STATIC_PTR int NDECL(wiz_genesis);
 STATIC_PTR int NDECL(wiz_where);
@@ -1102,6 +1103,48 @@ wiz_smell(VOID_ARGS)
     return 0;
 }
 
+/* #wizinstrinsic command to set some intrinsics for testing */
+STATIC_PTR int
+wiz_intrinsic(VOID_ARGS)
+{
+    if (wizard) {
+        winid win;
+        anything any;
+        int i, n, accelerator;
+        menu_item *pick_list = (menu_item *) 0;
+
+        static const char *const intrinsics[] = {
+            "deafness",
+        };
+
+        win = create_nhwindow(NHW_MENU);
+        start_menu(win);
+        accelerator = 0;
+
+        for (i = 0; i < SIZE(intrinsics); ++i) {
+            accelerator = intrinsics[i][0];
+            any.a_int = i + 1;
+            add_menu(win, NO_GLYPH, &any, accelerator, 0, ATR_NONE, intrinsics[i], FALSE);
+        }
+        end_menu(win, "Which intrinsic?");
+        n = select_menu(win, PICK_ONE, &pick_list);
+        destroy_nhwindow(win);
+
+        if (n >= 1) {
+            i = pick_list[0].item.a_int-1;
+            free((genericptr_t) pick_list);
+        }
+
+        if (!strcmp(intrinsics[i],"deafness")) {
+            You("go deaf.");
+            incr_itimeout(&HDeaf, 30);
+        }
+    } else
+        pline("Unavailable command '%s'.",
+              visctrl((int) cmd_from_func(wiz_intrinsic)));
+    return 0;
+}
+
 /* #wizrumorcheck command - verify each rumor access */
 STATIC_PTR int
 wiz_rumor_check(VOID_ARGS)
@@ -2771,6 +2814,7 @@ struct ext_func_tab extcmdlist[] = {
     { (char *) 0, (char *) 0, donull, TRUE }, /* vanquished */
     { (char *) 0, (char *) 0, donull, TRUE }, /* vision */
     { (char *) 0, (char *) 0, donull, TRUE }, /* wizsmell */
+    { (char *) 0, (char *) 0, donull, TRUE }, /* wizintrinsic */
 #ifdef DEBUG
     { (char *) 0, (char *) 0, donull, TRUE }, /* wizdebug_traveldisplay */
     { (char *) 0, (char *) 0, donull, TRUE }, /* wizdebug_bury */
@@ -2800,6 +2844,7 @@ static const struct ext_func_tab debug_extcmdlist[] = {
     { "vanquished", "list vanquished monsters", dovanquished, TRUE },
     { "vision", "show vision array", wiz_show_vision, TRUE },
     { "wizsmell", "smell monster", wiz_smell, TRUE },
+    { "wizintrinsic", "set intrinsic", wiz_intrinsic, TRUE },
 #ifdef DEBUG
     { "wizdebug_traveldisplay", "wizard debug: toggle travel display",
       wiz_debug_cmd_traveldisplay, TRUE },
index 5f5595018a31d63f20e79cea8b27f5e4e8d3dcb3..a57f30e8812313226dab8ebeb3047d50c44e2769 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 sounds.c        $NHDT-Date: 1450306219 2015/12/16 22:50:19 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.75 $ */
+/* NetHack 3.6 sounds.c        $NHDT-Date: 1450461007 2015/12/18 17:50:07 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.76 $ */
 /*      Copyright (c) 1989 Janet Walz, Mike Threepoint */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -387,23 +387,23 @@ register struct monst *mtmp;
     else
         switch (mtmp->data->msound) {
         case MS_MEW:
-            yelp_verb = "yowl";
+            yelp_verb = (!Deaf) ? "yowl" : "arch";
             break;
         case MS_BARK:
         case MS_GROWL:
-            yelp_verb = "yelp";
+            yelp_verb = (!Deaf) ? "yelp" : "recoil";
             break;
         case MS_ROAR:
-            yelp_verb = "snarl";
+            yelp_verb = (!Deaf) ? "snarl" : "bluff";
             break;
         case MS_SQEEK:
-            yelp_verb = "squeal";
+            yelp_verb = (!Deaf) ? "squeal" : "quivers";
             break;
         case MS_SQAWK:
-            yelp_verb = "screak";
+            yelp_verb = (!Deaf) ? "screak" : "thrash";
             break;
         case MS_WAIL:
-            yelp_verb = "wail";
+            yelp_verb = (!Deaf) ? "wail" : "cringe";
             break;
         }
     if (yelp_verb) {
index 747f626e6bf8083bf41bb3b576f93d8a6f1a23ca..7770d418817dcbb1f77a8ba3630934853cc65163 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 trap.c  $NHDT-Date: 1449977947 2015/12/13 03:39:07 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.250 $ */
+/* NetHack 3.6 trap.c  $NHDT-Date: 1450461008 2015/12/18 17:50:08 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.251 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -3048,6 +3048,7 @@ domagictrap()
         /* Most of the time, it creates some monsters. */
         register int cnt = rnd(4);
 
+        /* blindness effects */
         if (!resists_blnd(&youmonst)) {
             You("are momentarily blinded by a flash of light!");
             make_blinded((long) rn1(5, 10), FALSE);
@@ -3055,9 +3056,17 @@ domagictrap()
                 Your1(vision_clears);
         } else if (!Blind) {
             You_see("a flash of light!");
-        } else
+        }
+
+        /* deafness effects */
+        if (!Deaf) {
             You_hear("a deafening roar!");
-        incr_itimeout(&HDeaf, rn1(20, 30));
+            incr_itimeout(&HDeaf, rn1(20, 30));
+        } else {
+            /* magic vibrations still hit you */
+            You_feel("rankled.");
+            incr_itimeout(&HDeaf, rn1(5, 15));
+        }
         while (cnt--)
             (void) makemon((struct permonst *) 0, u.ux, u.uy, NO_MM_FLAGS);
     } else