From f2a958e7e8e6acfdbf397057a5a6144b445a39fd Mon Sep 17 00:00:00 2001 From: Alex Smith Date: Sat, 10 Jan 2026 18:56:56 +0000 Subject: [PATCH] Make dragonhide affectable by rotting attacks Dragon corpses are capable of rotting, so it's plausible that the skin of a dead dragon might also be possible to rot. This is unlikely to come up in actual play at present (unless wishing for rotten DSM, it can only end up rotting as a consequence of brown pudding attacks): the primary motivation is to open up new possibilities for armor-damaging attacks, which in current NetHack aren't very relevant in the late game because everyone is wearing dragon scale mail. --- doc/fixes3-7-0.txt | 1 + src/mkobj.c | 5 +++-- src/objnam.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index d2d6b8195..db980003c 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -1563,6 +1563,7 @@ lycanthrope instincts keep hero from changing shape while next to hostiles scroll of enchant armor formula has changed (in particular, magical armor now gains less enchantment when enchanted than nonmagical armor and uncursed scrolls can sometimes enchant by more than one point) +dragonhide can rot Fixes to 3.7.0-x General Problems Exposed Via git Repository diff --git a/src/mkobj.c b/src/mkobj.c index 31fe3c89a..f2adf2185 100644 --- a/src/mkobj.c +++ b/src/mkobj.c @@ -2286,8 +2286,9 @@ is_rottable(struct obj *otmp) { int otyp = otmp->otyp; - return (boolean) (objects[otyp].oc_material <= WOOD - && objects[otyp].oc_material != LIQUID); + return (boolean) ((objects[otyp].oc_material <= WOOD + && objects[otyp].oc_material != LIQUID) + || objects[otyp].oc_material == DRAGON_HIDE); } /* diff --git a/src/objnam.c b/src/objnam.c index ee9a29836..762b9c25d 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -1186,7 +1186,8 @@ add_erosion_words(struct obj *obj, char *prefix) : is_corrodeable(obj) ? "corrodeproof " : is_flammable(obj) ? "fireproof " : is_crackable(obj) ? "tempered " /* hardened */ - : ""); + : is_rottable(obj) ? "rotproof " + : ""); } /* used to prevent rust on items where rust makes no difference */