From bc93ee5d04f28001829c28bec09f6eedd9d8c637 Mon Sep 17 00:00:00 2001 From: PatR Date: Wed, 30 Aug 2023 13:38:08 -0700 Subject: [PATCH] pet petrified by eating Medusa's corpse From a reddit thread: a tame mind flayer ate Medusa's corpse and was turned to stone. Pets won't eat cockatrice corpses unless stoning resistant but would eat Medusa's corpse if merely poison resistant. Mind flayers aren't normally poison resistant but could be if wearing green dragon scales/mail. Augment the touch_petrifies() test when classifying food for pets. --- doc/fixes3-7-0.txt | 4 +++- src/dog.c | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index 5aabb2fe3..ce25693dc 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1233 $ $NHDT-Date: 1693292518 2023/08/29 07:01:58 $ +$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1235 $ $NHDT-Date: 1693427872 2023/08/30 20:37:52 $ General Fixes and Modified Features ----------------------------------- @@ -1231,6 +1231,8 @@ unhide an unseen water monster using a polymorph trap on land allow defining random-teleport exclusion zones in lua if Magicbane cancelled a shapeshifter, forcing it to 'unshift', subsequent messages continued to refer to the shifted form +a pet that was poison resistant but not stoning resistant would eat Medusa's + corpse and be turned to stone Fixes to 3.7.0-x General Problems Exposed Via git Repository diff --git a/src/dog.c b/src/dog.c index 0794be3d8..934d88aef 100644 --- a/src/dog.c +++ b/src/dog.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 dog.c $NHDT-Date: 1652689621 2022/05/16 08:27:01 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.121 $ */ +/* NetHack 3.7 dog.c $NHDT-Date: 1693427872 2023/08/30 20:37:52 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.146 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2011. */ /* NetHack may be freely redistributed. See license for details. */ @@ -936,7 +936,10 @@ dogfood(struct monst *mon, struct obj *obj) if (obj->otyp == CORPSE && is_rider(fptr)) return TABU; if ((obj->otyp == CORPSE || obj->otyp == EGG) - && touch_petrifies(fptr) && !resists_ston(mon)) + /* Medusa's corpse doesn't pass the touch_petrifies() test + but does cause petrification if eaten */ + && (touch_petrifies(fptr) || obj->corpsenm == PM_MEDUSA) + && !resists_ston(mon)) return POISON; if (obj->otyp == LUMP_OF_ROYAL_JELLY && mon->data == &mons[PM_KILLER_BEE]) {