From 6dffe52a27adf9659e830667e868e34d992754fd Mon Sep 17 00:00:00 2001 From: PatR Date: Tue, 30 Jul 2019 17:24:33 -0700 Subject: [PATCH] Glory of Arioch vs spellbook From the newsgroup (reported for slash'em but applies to nethack too): a chaotic monk was crowned and told he or she had been "chosen to steal souls for My Glory!" while being given a spellbook of restore ability which has nothing whatever to do with soul stealing. There's alternate wording for when Stormbringer can't be given because it already exists; also use that for when it's not going to be given because the character is discouraged against wielding weapons. --- doc/fixes36.3 | 5 ++++- src/pray.c | 35 +++++++++++++++++++---------------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/doc/fixes36.3 b/doc/fixes36.3 index a20fc650e..1eeb0de1b 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.95 $ $NHDT-Date: 1564269131 2019/07/27 23:12:11 $ +$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.96 $ $NHDT-Date: 1564532667 2019/07/31 00:24:27 $ This fixes36.3 file is here to capture information about updates in the 3.6.x lineage following the release of 3.6.2 in May 2019. Please note, however, @@ -107,6 +107,9 @@ hero poly'd into nymph would steal gold along with other items change wizard mode #panic to require "yes" if 'paranoid_confirm:quit' is set add some additional validation checks when setting up a new timer (triggered by an ancient source comment rather than by any observed problems) +if a chaotic monk or wizard gets crowned and is given a spellbook rather than + Stormbringer as the crowning gift, don't describe the hero as having + been "chosen to steal souls for [Arioch's] glory" Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository diff --git a/src/pray.c b/src/pray.c index d40bb933c..42e5f8be8 100644 --- a/src/pray.c +++ b/src/pray.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 pray.c $NHDT-Date: 1562462064 2019/07/07 01:14:24 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.116 $ */ +/* NetHack 3.6 pray.c $NHDT-Date: 1564532667 2019/07/31 00:24:27 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.117 $ */ /* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */ /* NetHack may be freely redistributed. See license for details. */ @@ -771,6 +771,20 @@ gcrownu() HPoison_resistance |= FROMOUTSIDE; godvoice(u.ualign.type, (char *) 0); + class_gift = STRANGE_OBJECT; + /* 3.3.[01] had this in the A_NEUTRAL case, + preventing chaotic wizards from receiving a spellbook */ + if (Role_if(PM_WIZARD) + && (!uwep || (uwep->oartifact != ART_VORPAL_BLADE + && uwep->oartifact != ART_STORMBRINGER)) + && !carrying(SPE_FINGER_OF_DEATH)) { + class_gift = SPE_FINGER_OF_DEATH; + } else if (Role_if(PM_MONK) && (!uwep || !uwep->oartifact) + && !carrying(SPE_RESTORE_ABILITY)) { + /* monks rarely wield a weapon */ + class_gift = SPE_RESTORE_ABILITY; + } + obj = ok_wep(uwep) ? uwep : 0; already_exists = in_hand = FALSE; /* lint suppression */ switch (u.ualign.type) { @@ -791,19 +805,13 @@ gcrownu() already_exists = exist_artifact(RUNESWORD, artiname(ART_STORMBRINGER)); verbalize("Thou art chosen to %s for My Glory!", - already_exists && !in_hand ? "take lives" : "steal souls"); + ((already_exists && !in_hand) + || class_gift != STRANGE_OBJECT) ? "take lives" + : "steal souls"); break; } - class_gift = STRANGE_OBJECT; - /* 3.3.[01] had this in the A_NEUTRAL case below, - preventing chaotic wizards from receiving a spellbook */ - if (Role_if(PM_WIZARD) - && (!uwep || (uwep->oartifact != ART_VORPAL_BLADE - && uwep->oartifact != ART_STORMBRINGER)) - && !carrying(SPE_FINGER_OF_DEATH)) { - class_gift = SPE_FINGER_OF_DEATH; - make_splbk: + if (objects[class_gift].oc_class == SPBOOK_CLASS) { obj = mksobj(class_gift, TRUE, FALSE); bless(obj); obj->bknown = 1; /* ok to skip set_bknown() */ @@ -818,11 +826,6 @@ gcrownu() obj = uwep; /* to be blessed,&c */ break; } - } else if (Role_if(PM_MONK) && (!uwep || !uwep->oartifact) - && !carrying(SPE_RESTORE_ABILITY)) { - /* monks rarely wield a weapon */ - class_gift = SPE_RESTORE_ABILITY; - goto make_splbk; } switch (u.ualign.type) {