From: PatR Date: Sat, 9 Jan 2016 21:57:15 +0000 (-0800) Subject: fix #H4187 - doppelgangers posing as Riders... X-Git-Tag: NetHack-3.6.1_RC01~1051 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7e3f82ed3ca07ec8a2d56068eb01b330ca9b857f;p=nethack fix #H4187 - doppelgangers posing as Riders... ... never transform and can leave Rider corpses Riders can't be polymorphed, and the code to prevent that was also preventing doppelgangers in Rider form from changing shape. Using ring of protection from shape changers effectively turned such doppelgangers into actual Riders which would leave self-reviving corpses. That didn't prevent Riders from appearing on the Astral Plane though. --- diff --git a/doc/fixes36.1 b/doc/fixes36.1 index 9149325ef..49dc28c48 100644 --- a/doc/fixes36.1 +++ b/doc/fixes36.1 @@ -101,6 +101,9 @@ fix possible segfault in lev_comp when map was too tall fix "the ice is bridged with ice" when freezing castle's moat or Medusa's sea make monsters and pets avoid poison gas clouds if it would damage them covetous monsters may choose to teleport to downstairs or ladders +doppelganger posing as Rider would never change shape +since doppelganger posing as Rider could never revert to innate form, + protection from shape changers turned it into genuine Rider Platform- and/or Interface-Specific Fixes diff --git a/src/mon.c b/src/mon.c index 5978f1c20..802d20bff 100644 --- a/src/mon.c +++ b/src/mon.c @@ -3157,8 +3157,9 @@ boolean msg; /* "The oldmon turns into a newmon!" */ struct permonst *olddata = mtmp->data; char oldname[BUFSZ], l_oldname[BUFSZ], newname[BUFSZ]; - /* Riders are immune to polymorph and green slime */ - if (is_rider(mtmp->data)) + /* Riders are immune to polymorph and green slime + (but apparent Rider might actually be a doppelganger) */ + if (is_rider(mtmp->data) && mtmp->cham == NON_PM) return 0; if (msg) {