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.
This commit is contained in:
PatR
2016-01-09 13:57:15 -08:00
parent 1e1557ed46
commit 7e3f82ed3c
2 changed files with 6 additions and 2 deletions

View File

@@ -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

View File

@@ -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) {