From 04963ecf81ac7ff7f4786f3934b429ee208d57fb Mon Sep 17 00:00:00 2001 From: nhmall Date: Fri, 19 Jun 2026 10:08:42 -0400 Subject: [PATCH] follow-up: add a general catch for "says" --- include/extern.h | 1 + src/minion.c | 3 ++- src/rumors.c | 5 +++-- src/shk.c | 6 ++++++ src/wield.c | 4 ++-- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/include/extern.h b/include/extern.h index 194547d2b..5da653c38 100644 --- a/include/extern.h +++ b/include/extern.h @@ -2996,6 +2996,7 @@ extern void credit_report(struct monst *shkp, int idx, boolean silent) NONNULLARG1; extern void use_unpaid_trapobj(struct obj *, coordxy, coordxy) NONNULLARG1; extern void noisy_shop(struct mkroom *); +extern const char *says(void); /* ### shknam.c ### */ diff --git a/src/minion.c b/src/minion.c index 03a782727..86a976908 100644 --- a/src/minion.c +++ b/src/minion.c @@ -299,7 +299,8 @@ demon_talk(struct monst *mtmp) pline("%s says, \"Good hunting, %s.\"", Amonnam(mtmp), flags.female ? "Sister" : "Brother"); else if (canseemon(mtmp)) - pline("%s says something.", Amonnam(mtmp)); + pline("%s %s something.", Amonnam(mtmp), + says()); if (!tele_restrict(mtmp)) (void) rloc(mtmp, RLOC_MSG); return 1; diff --git a/src/rumors.c b/src/rumors.c index 22d3e3077..b78bd2403 100644 --- a/src/rumors.c +++ b/src/rumors.c @@ -554,10 +554,11 @@ outrumor( switch (mechanism) { case BY_ORACLE: /* Oracle delivers the rumor */ - pline("True to her word, the Oracle %ssays: ", + pline("True to her word, the Oracle %s%s: ", (!rn2(4) ? "offhandedly " : (!rn2(3) ? "casually " - : (rn2(2) ? "nonchalantly " : "")))); + : (rn2(2) ? "nonchalantly " : ""))), + says()); SetVoice((struct monst *) 0, 0, 80, voice_oracle); verbalize1(line); /* [WIS exercised by getrumor()] */ diff --git a/src/shk.c b/src/shk.c index 749df40ae..117003f46 100644 --- a/src/shk.c +++ b/src/shk.c @@ -2049,6 +2049,12 @@ dopay(void) return paid ? ECMD_TIME : ECMD_OK; } +const char * +says(void) +{ + return Deaf ? "signs" : "says"; +} + /* for menustyle=Traditional, choose between paying for everything (by declining to itemize), asking item-by-item (by accepting itemization), or switch to selecting via menu (special 'm' answer at "Itemize? [ynq m]" diff --git a/src/wield.c b/src/wield.c index 51920b7d4..515caa938 100644 --- a/src/wield.c +++ b/src/wield.c @@ -264,8 +264,8 @@ ready_weapon(struct obj *wep) != (struct monst *) 0) { /* check msound because we don't have access to muteshk() */ if (!Deaf && this_shkp->data->msound > MS_ANIMAL) - pline("%s says \"You be careful with my %s!\"", - shkname(this_shkp), xname(wep)); + pline("%s %s \"You be careful with my %s!\"", + shkname(this_shkp), says(), xname(wep)); else pline("%s looks apprehensive about your wielding %s %s.", shkname(this_shkp), mhis(this_shkp), xname(wep));