From 8fd8d1defae8371a6e9af01adf3799f107d0e8f8 Mon Sep 17 00:00:00 2001 From: PatR Date: Sat, 17 Jun 2023 13:27:40 -0700 Subject: [PATCH] Mitre of Holiness If the priest quest artifact Mitre of Holiness (a helm of brilliance, so crystal helmet) is acquired via the quest (rather than by wishing) make it start out tempered (aka crackproof|erodeproof). --- dat/Pri-goal.lua | 7 ++++--- src/trap.c | 18 ++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/dat/Pri-goal.lua b/dat/Pri-goal.lua index 2b4c5b5ca..1e29d9713 100644 --- a/dat/Pri-goal.lua +++ b/dat/Pri-goal.lua @@ -1,4 +1,4 @@ --- NetHack Priest Pri-goal.lua $NHDT-Date: 1652196008 2022/05/10 15:20:08 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $ +-- NetHack Priest Pri-goal.lua $NHDT-Date: 1687033651 2023/06/17 20:27:31 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $ -- Copyright (c) 1989 by Jean-Christophe Collet -- Copyright (c) 1991-2 by M. Stephenson -- NetHack may be freely redistributed. See license for details. @@ -29,8 +29,9 @@ local placeidx = math.random(1, #place); des.region(selection.area(00,00,25,10), "unlit") -- Stairs des.stair("up", 20,05) --- Objects -des.object({ id = "helm of brilliance", coord = place[placeidx], buc="blessed", spe=0, name="The Mitre of Holiness" }) +-- Objects [note: eroded=-1 => obj->oerodeproof=1] +des.object({ id = "helm of brilliance", coord = place[placeidx], + buc="blessed", spe=0, eroded=-1, name="The Mitre of Holiness" }) des.object() des.object() des.object() diff --git a/src/trap.c b/src/trap.c index 6d671dd36..b640fe0a6 100644 --- a/src/trap.c +++ b/src/trap.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 trap.c $NHDT-Date: 1684140131 2023/05/15 08:42:11 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.536 $ */ +/* NetHack 3.7 trap.c $NHDT-Date: 1687033655 2023/06/17 20:27:35 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.540 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2013. */ /* NetHack may be freely redistributed. See license for details. */ @@ -178,6 +178,7 @@ erode_obj( boolean vulnerable = FALSE, is_primary = TRUE, check_grease = (ef_flags & EF_GREASE) ? TRUE : FALSE, print = (ef_flags & EF_VERBOSE) ? TRUE : FALSE, + crackers = FALSE, /* True: different feedback if otmp destroyed */ uvictim, vismon, visobj; int erosion, cost_type; struct monst *victim; @@ -223,6 +224,7 @@ erode_obj( case ERODE_CRACK: /* crystal armor */ vulnerable = is_crackable(otmp); is_primary = TRUE; + crackers = TRUE; cost_type = COST_CRACK; break; default: @@ -253,8 +255,8 @@ erode_obj( && (uvictim || vismon || visobj)) pline("Somehow, %s %s %s not affected by the %s.", uvictim ? "your" - : !vismon ? "the" /* visobj */ - : s_suffix(mon_nam(victim)), + : !vismon ? "the" /* visobj */ + : s_suffix(mon_nam(victim)), ostr, vtense(ostr, "are"), bythe[type]); /* We assume here that if the object is protected because it * is blessed, it still shows some minor signs of wear, and @@ -276,8 +278,8 @@ erode_obj( if (uvictim || vismon || visobj) pline("%s %s %s%s!", uvictim ? "Your" - : !vismon ? "The" /* visobj */ - : s_suffix(Monnam(victim)), + : !vismon ? "The" /* visobj */ + : s_suffix(Monnam(victim)), ostr, vtense(ostr, action[type]), adverb); if (ef_flags & EF_PAY) @@ -297,14 +299,14 @@ erode_obj( if (uvictim || vismon || visobj) { char actbuf[BUFSZ]; - if (cost_type != COST_CRACK) + if (!crackers) Sprintf(actbuf, "%s away", vtense(ostr, action[type])); else Sprintf(actbuf, "shatters"); pline("%s %s %s!", uvictim ? "Your" - : !vismon ? "The" /* visobj */ - : s_suffix(Monnam(victim)), + : !vismon ? "The" /* visobj */ + : s_suffix(Monnam(victim)), ostr, actbuf); } if (ef_flags & EF_PAY)