diff --git a/doc/fixes37.0 b/doc/fixes37.0 index e991745d2..0fa488c33 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.247 $ $NHDT-Date: 1594727746 2020/07/14 11:55:46 $ +$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.248 $ $NHDT-Date: 1594730609 2020/07/14 12:43:29 $ General Fixes and Modified Features ----------------------------------- @@ -405,6 +405,9 @@ give feedback for '#chat' directed at walls add 'Sokoban' conduct, tracking the number of times the special Sokoban rules which incur luck penalties have been violated; don't report it unless/until Sokoban branch has been entered +reduce verbosity when a mind flayer attacks a headless monster; when a + tentacle-to-head attack hits but fails to accomplish anything skip + remaining attacks (mind flayer has 3, master mind flayer has 5) Platform- and/or Interface-Specific New Features diff --git a/include/decl.h b/include/decl.h index 94e4581d0..a626a76e0 100644 --- a/include/decl.h +++ b/include/decl.h @@ -1,4 +1,4 @@ -/* NetHack 3.6 decl.h $NHDT-Date: 1593953331 2020/07/05 12:48:51 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.238 $ */ +/* NetHack 3.6 decl.h $NHDT-Date: 1594730609 2020/07/14 12:43:29 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.239 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Michael Allison, 2007. */ /* NetHack may be freely redistributed. See license for details. */ @@ -932,9 +932,10 @@ struct instance_globals { /* makemon.c */ /* mhitm.c */ - boolean vis; - boolean far_noise; long noisetime; + boolean far_noise; + boolean vis; + boolean skipdrin; /* mind flayer against headless target */ /* mhitu.c */ int mhitu_dieroll; diff --git a/src/decl.c b/src/decl.c index d390a2dbd..b57b7ba7f 100644 --- a/src/decl.c +++ b/src/decl.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 decl.c $NHDT-Date: 1593953345 2020/07/05 12:49:05 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.214 $ */ +/* NetHack 3.6 decl.c $NHDT-Date: 1594730611 2020/07/14 12:43:31 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.215 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Michael Allison, 2009. */ /* NetHack may be freely redistributed. See license for details. */ @@ -461,9 +461,10 @@ const struct instance_globals g_init = { /* makemon.c */ /* mhitm.c */ - UNDEFINED_VALUE, /* vis */ - UNDEFINED_VALUE, /* far_noise */ - UNDEFINED_VALUE, /* noisetime */ + 0L, /* noisetime */ + FALSE, /* far_noise */ + FALSE, /* vis */ + FALSE, /* skipdrin */ /* mhitu.c */ UNDEFINED_VALUE, /* mhitu_dieroll */ diff --git a/src/mhitm.c b/src/mhitm.c index 00628cc9a..50db4ba43 100644 --- a/src/mhitm.c +++ b/src/mhitm.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 mhitm.c $NHDT-Date: 1593614973 2020/07/01 14:49:33 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.138 $ */ +/* NetHack 3.6 mhitm.c $NHDT-Date: 1594730614 2020/07/14 12:43:34 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.139 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2011. */ /* NetHack may be freely redistributed. See license for details. */ @@ -345,12 +345,24 @@ register struct monst *magr, *mdef; */ magr->mlstmv = g.monstermoves; + /* controls whether a mind flayer uses all of its tentacle-for-DRIN + attacks; when fighting a headless monster, stop after the first + one because repeating the same failing hit (or even an ordinary + tentacle miss) is very verbose and makes the flayer look stupid */ + g.skipdrin = FALSE; + /* Now perform all attacks for the monster. */ for (i = 0; i < NATTK; i++) { res[i] = MM_MISS; mattk = getmattk(magr, mdef, i, res, &alt_attk); mwep = (struct obj *) 0; attk = 1; + /* reduce verbosity for mind flayer attacking creature without a + head (or worm's tail); this is similar to monster with multiple + attacks after a wildmiss against displaced or invisible hero */ + if (g.skipdrin && mattk->aatyp == AT_TENT && mattk->adtyp == AD_DRIN) + continue; + switch (mattk->aatyp) { case AT_WEAP: /* "hand to hand" attacks */ if (distmin(magr->mx, magr->my, mdef->mx, mdef->my) > 1) { @@ -1404,6 +1416,9 @@ int dieroll; pline("%s doesn't seem harmed.", Monnam(mdef)); /* Not clear what to do for green slimes */ tmp = 0; + /* don't bother with additional DRIN attacks since they wouldn't + be able to hit target on head either */ + g.skipdrin = TRUE; /* affects mattackm()'s attack loop */ break; } if ((mdef->misc_worn_check & W_ARMH) && rn2(8)) {