From: Pasi Kallinen Date: Fri, 3 Apr 2020 18:05:45 +0000 (+0300) Subject: Make hezrous stink X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e34f123698e252e2e2545568035d347c21d0cf38;p=nethack Make hezrous stink --- diff --git a/dat/data.base b/dat/data.base index 6baf9df7b..ef78c26b4 100644 --- a/dat/data.base +++ b/dat/data.base @@ -2207,7 +2207,8 @@ hermes numbers, the alphabet, weights and measures, and sacrificing. hezrou "Hezrou" is the common name for the type II demon. It is - among the weaker of demons, but still quite formidable. + among the weaker of demons, but still quite formidable, + mostly due to the stench. hippocrates Greek physician, recognized as the father of medicine. He is believed to have been born on the island of Cos, to have diff --git a/doc/fixes37.0 b/doc/fixes37.0 index 51981ad04..f968cfb0c 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -100,6 +100,7 @@ fix attached ball getting deallocated if swallowed, going down into a pit, level compiler creates correct novel with supplied name for farlook, describe water in the castle moat and in Juiblex's swamp as moat and as swamp, respectively, rather than just as "water" +make hezrous emit poison clouds when they move Fixes to 3.7.0-x Problems that Were Exposed Via git Repository diff --git a/include/mondata.h b/include/mondata.h index 65ad58eca..3e12c2e70 100644 --- a/include/mondata.h +++ b/include/mondata.h @@ -27,6 +27,8 @@ #define resists_ston(mon) \ ((((mon)->data->mresists | (mon)->mextrinsics) & MR_STONE) != 0) +#define immune_poisongas(ptr) ((ptr) == &mons[PM_HEZROU]) + #define is_lminion(mon) \ (is_minion((mon)->data) && mon_aligntyp(mon) == A_LAWFUL) #define is_flyer(ptr) (((ptr)->mflags1 & M1_FLY) != 0L) diff --git a/src/mon.c b/src/mon.c index 63d56db9f..22fae52f4 100644 --- a/src/mon.c +++ b/src/mon.c @@ -145,9 +145,9 @@ struct monst *mtmp; int px, py; boolean is_you = (mtmp == &g.youmonst); - /* Non living and non breathing monsters are not concerned */ + /* Non living, non breathing, immune monsters are not concerned */ if (nonliving(mtmp->data) || is_vampshifter(mtmp) - || breathless(mtmp->data)) + || breathless(mtmp->data) || immune_poisongas(mtmp->data)) return M_POISONGAS_OK; /* not is_swimmer(); assume that non-fish are swimming on the surface and breathing the air above it periodically diff --git a/src/monmove.c b/src/monmove.c index 923e373ec..04e5ee9f4 100644 --- a/src/monmove.c +++ b/src/monmove.c @@ -623,6 +623,9 @@ register struct monst *mtmp; /* Now the actual movement phase */ + if (mtmp->data == &mons[PM_HEZROU]) /* stench */ + create_gas_cloud(mtmp->mx, mtmp->my, 1, 8); + if (mdat == &mons[PM_KILLER_BEE] /* could be smarter and deliberately move to royal jelly, but then we'd need to scan the level for queen bee in advance;