diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 5443c831e..d9db05039 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.159 $ $NHDT-Date: 1572892926 2019/11/04 18:42:06 $ +$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.162 $ $NHDT-Date: 1573066356 2019/11/06 18:52:36 $ This fixes36.3 file is here to capture information about updates in the 3.6.x lineage following the release of 3.6.2 in May 2019. Please note, however, @@ -217,6 +217,7 @@ some other deafness-related message corrections when dipping into holy/unholy water while blind (where the glow message is suppressed), clear dipped item's bknown flag unless water potion's bless/curse state is known +playing music while hallucinating: message misspelled "butterflies" Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository @@ -268,6 +269,7 @@ EDIT_GETLIN: using 'O' to set message types or menu colors was overloading the during repeat prompting EDIT_GETLIN: for paranoid confirmation, if answer was neither "yes" nor "no", don't supply the rejected answer as the default when retrying +USE_FCNTL: nethack wasn't closing lock file 'perm' curses: very tall menus tried to use selector characters a-z, A-Z, and 0-9, but 0-9 should be reserved for counts and if the display was tall enough for more than 62 entries, arbitrary ASCII punctuation got used diff --git a/src/files.c b/src/files.c index f89e5e061..c8bdb8ce1 100644 --- a/src/files.c +++ b/src/files.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 files.c $NHDT-Date: 1571347976 2019/10/17 21:32:56 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.254 $ */ +/* NetHack 3.6 files.c $NHDT-Date: 1573066357 2019/11/06 18:52:37 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.260 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Derek S. Ray, 2015. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1644,7 +1644,7 @@ boolean uncomp; static int nesting = 0; #if defined(NO_FILE_LINKS) || defined(USE_FCNTL) /* implies UNIX */ -static int lockfd; /* for lock_file() to pass to unlock_file() */ +static int lockfd = -1; /* for lock_file() to pass to unlock_file() */ #endif #ifdef USE_FCNTL struct flock sflock; /* for unlocking, same as above */ @@ -1756,7 +1756,7 @@ int retryct; return FALSE; } #else - register int errnosv = errno; + int errnosv = errno; switch (errnosv) { /* George Barbanis */ case EEXIST: @@ -1867,9 +1867,10 @@ const char *filename; if (nesting == 1) { #ifdef USE_FCNTL sflock.l_type = F_UNLCK; - if (fcntl(lockfd, F_SETLK, &sflock) == -1) { - HUP raw_printf("Can't remove fcntl lock on %s.", filename); - (void) close(lockfd); + if (lockfd >= 0) { + if (fcntl(lockfd, F_SETLK, &sflock) == -1) + HUP raw_printf("Can't remove fcntl lock on %s.", filename); + (void) close(lockfd), lockfd = -1; } #else lockname = make_lockname(filename, locknambuf); @@ -1881,7 +1882,7 @@ const char *filename; if (unlink(lockname) < 0) HUP raw_printf("Can't unlink %s.", lockname); #ifdef NO_FILE_LINKS - (void) nhclose(lockfd); + (void) nhclose(lockfd), lockfd = -1; #endif #endif /* UNIX || VMS */ diff --git a/src/music.c b/src/music.c index 53baeb42e..4f125793b 100644 --- a/src/music.c +++ b/src/music.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 music.c $NHDT-Date: 1572833563 2019/11/04 02:12:43 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.58 $ */ +/* NetHack 3.6 music.c $NHDT-Date: 1573063606 2019/11/06 18:06:46 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.60 $ */ /* Copyright (c) 1989 by Jean-Christophe Collet */ /* NetHack may be freely redistributed. See license for details. */ @@ -511,24 +511,41 @@ struct obj *instr; if (Hallucination) mode |= PLAY_HALLU; + if (!rn2(2)) { + /* + * TEMPORARY? for multiple impairments, don't always + * give the generic "it's far from music" message. + */ + /* remove if STUNNED+CONFUSED ever gets its own message below */ + if (mode == (PLAY_STUNNED | PLAY_CONFUSED)) + mode = !rn2(2) ? PLAY_STUNNED : PLAY_CONFUSED; + /* likewise for stunned and/or confused combined with hallucination */ + if (mode & PLAY_HALLU) + mode = PLAY_HALLU; + } + + /* 3.6.3: most of these gave "You produce " and then many of + the instrument-specific messages below which immediately follow + also gave "You produce ." That looked strange so we + now use a different verb here */ switch (mode) { case PLAY_NORMAL: You("start playing %s.", yname(instr)); break; case PLAY_STUNNED: if (!Deaf) - You("produce an obnoxious droning sound."); + You("radiate an obnoxious droning sound."); else You_feel("a monotonous vibration."); break; case PLAY_CONFUSED: if (!Deaf) - You("produce a raucous noise."); + You("generate a raucous noise."); else You_feel("a jarring vibration."); break; case PLAY_HALLU: - You("produce a kaleidoscopic display of floating butterfiles."); + You("disseminate a kaleidoscopic display of floating butterflies."); break; /* TODO? give some or all of these combinations their own feedback; hallucination ones should reference senses other than hearing... */ @@ -537,7 +554,7 @@ struct obj *instr; case PLAY_CONFUSED | PLAY_HALLU: case PLAY_STUNNED | PLAY_CONFUSED | PLAY_HALLU: default: - pline("What you produce is quite far from music..."); + pline("What you perform is quite far from music..."); break; } #undef PLAY_NORMAL