From 0b95104f0e4d983bb6f4afa27ed04aa23f99f294 Mon Sep 17 00:00:00 2001 From: "nethack.rankin" Date: Sun, 11 Feb 2007 03:59:08 +0000 Subject: [PATCH] fix #Q417 - gelatinous cubes can engulf Rider corpses From a bug report: gelatinous cubes could engulf Rider corpses, allowing g.cube and cargo to be teleported away without triggering corpse revival, or to be hit with theft attack by poly'd hero to get the corpse into inventory so it could then be put into a container in order to prevent revival (or to be destroyed via bag of holding explosion or cursed access). --- doc/fixes34.4 | 1 + src/mon.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/doc/fixes34.4 b/doc/fixes34.4 index 0e92c370e..3d0eade16 100644 --- a/doc/fixes34.4 +++ b/doc/fixes34.4 @@ -272,6 +272,7 @@ prevent very large number of objects in # inventory slot from causing !fixinv config was using arbitrary characters instead of # for invent overflow don't report death by petrification if cockatrice kills hero via HP loss Riders are immune to green slime +Rider corpses can't be engulfed by gelatinous cubes wielding a cloak of magic resistance or gray dragon scales, or carrying one in alternate weapon or quiver inventory slot, conferred magic resistance to polymorphed hero diff --git a/src/mon.c b/src/mon.c index ff02a58fa..42f037102 100644 --- a/src/mon.c +++ b/src/mon.c @@ -814,6 +814,12 @@ meatobj(mtmp) /* for gelatinous cubes */ /* in case it polymorphed or died */ if (ptr != &mons[PM_GELATINOUS_CUBE]) return !ptr ? 2 : 1; + } else if (otmp->otyp == CORPSE && + is_rider(&mons[otmp->corpsenm])) { + /* Rider corpse will always pass the obj_resists() test above + and not be eaten; we don't want it to be engulfed either */ + (void)revive_corpse(otmp); + /* continue; -- regardless of whether it revived */ } else if (otmp->oclass != ROCK_CLASS && otmp != uball && otmp != uchain) { ++ecount;