From: Pasi Kallinen Date: Wed, 27 Apr 2022 10:31:28 +0000 (+0300) Subject: When setting user sounds, allow also setting a MSGTYPE X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c3c60b0b2cc2f67bb751ea7553a2725d44603a0a;p=nethack When setting user sounds, allow also setting a MSGTYPE The SOUND lines now have an optional msgtype parameter: SOUND=MESG hide "^You miss the " "swing.wav" 75 Fixes #571 --- diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index deae6351e..89b45f982 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -5053,6 +5053,8 @@ Each SOUND entry is broken down into the following parts: .PS "sound index" .PL MESG message window mapping (the only one supported in 3.7); +.PL msgtype +optional; message type to use, see \(lqConfiguring Message Types\(rq .PL pattern the pattern to match; .PL "sound file" @@ -5065,6 +5067,15 @@ optional; the index corresponding to a sound file. .lp "" The pattern should be a POSIX extended regular expression. .pg +For example: +.sd +.si +SOUNDDIR=C:\\nethack\\sounds +SOUND=MESG "This door is locked" "lock.wav" 100 +SOUND=MESG hide "^You miss the " "swing.wav" 75 +.ei +.ed +.pg .hn 2 Configuring Status Hilites .pg diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index 896c8913c..f1a0d24e6 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -5589,6 +5589,7 @@ Each SOUND entry is broken down into the following parts: %.sd %.si {\tt MESG } --- message window mapping (the only one supported in 3.7);\\ +{\tt msgtype } --- optional; message type to use, see ``Configuring User Sounds''\\ {\tt pattern } --- the pattern to match;\\ {\tt sound file } --- the sound file to play;\\ {\tt volume } --- the volume to be set while playing the sound file;\\ @@ -5600,6 +5601,15 @@ Each SOUND entry is broken down into the following parts: %.lp "" The pattern should be a POSIX extended regular expression. +For example: + +\begin{verbatim} + SOUNDDIR=C:\\nethack\\sounds + SOUND=MESG "This door is locked" "lock.wav" 100 + SOUND=MESG hide "^You miss the " "swing.wav" 75 +\end{verbatim} +%.pg + %.lp %.hn 2 \subsection*{Configuring Status Hilites} diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index 37f595f3e..32ef66e48 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -1595,6 +1595,8 @@ context sensitive item usage menu from inventory, aka "item actions" pets are more likely to follow you closely if you are carrying something they really like to eat; behave as if you are carrying such whenever you are standing on stairs so that pets will try harder to come to you +allow setting msgtype in SOUND line + Platform- and/or Interface-Specific New Features ------------------------------------------------ diff --git a/src/sounds.c b/src/sounds.c index be921f91d..e0f2252f9 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -1422,12 +1422,18 @@ add_sound_mapping(const char* mapping) char text[256]; char filename[256]; char filespec[256]; + char msgtyp[11]; int volume, idx = -1; - if (sscanf(mapping, "MESG \"%255[^\"]\"%*[\t ]\"%255[^\"]\" %d %d", text, - filename, &volume, &idx) == 4 - || sscanf(mapping, "MESG \"%255[^\"]\"%*[\t ]\"%255[^\"]\" %d", text, - filename, &volume) == 3) { + msgtyp[0] = '\0'; + if (sscanf(mapping, "MESG \"%255[^\"]\"%*[\t ]\"%255[^\"]\" %d %d", + text, filename, &volume, &idx) == 4 + || sscanf(mapping, "MESG %10[^\"] \"%255[^\"]\"%*[\t ]\"%255[^\"]\" %d %d", + msgtyp, text, filename, &volume, &idx) == 5 + || sscanf(mapping, "MESG %10[^\"] \"%255[^\"]\"%*[\t ]\"%255[^\"]\" %d", + msgtyp, text, filename, &volume) == 4 + || sscanf(mapping, "MESG \"%255[^\"]\"%*[\t ]\"%255[^\"]\" %d", + text, filename, &volume) == 3) { audio_mapping *new_map; if (!sounddir) @@ -1455,6 +1461,12 @@ add_sound_mapping(const char* mapping) raw_print(re_error_desc); return 0; } else { + if (*msgtyp) { + char tmpbuf[BUFSZ]; + + Sprintf(tmpbuf, "%.10s \"%.230s\"", msgtyp, text); + (void) msgtype_parse_add(tmpbuf); + } soundmap = new_map; } } else {