From b940ca0ee7cf61eaf237b98e38bd4cd3f77a5937 Mon Sep 17 00:00:00 2001 From: "nethack.allison" Date: Sat, 6 Apr 2002 18:06:59 +0000 Subject: [PATCH] Priests recognize B/U/C status on items in container menus > Since Priests' knowledge of the buc-status of an object only > kicks in when the name is being looked at for the first time, > they get an "X" option when taking items out of a newly-looted > container, but B, U, and C thereafter; could their ability be > pre-applied to the container's contents when constructing the > menu, to avoid this anomaly? > --- doc/fixes34.1 | 1 + src/invent.c | 10 ++++++---- src/pickup.c | 11 +++++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/doc/fixes34.1 b/doc/fixes34.1 index 07a8110d2..1353c2b3b 100644 --- a/doc/fixes34.1 +++ b/doc/fixes34.1 @@ -54,6 +54,7 @@ don't credit player's wisdom when makelevel creates random Elbereth engravings reduce insect/monster creation from monster spells avoid "couldn't place lregion type 5" warning when arriving at Plane of Fire avoid crash due to delayed poly or were change no longer being valid +ensure that Priest's ability to recognize B/U/C is considered in B/U/C menus Platform- and/or Interface-Specific Fixes diff --git a/src/invent.c b/src/invent.c index 27ceffd0f..baa5242c9 100644 --- a/src/invent.c +++ b/src/invent.c @@ -1763,20 +1763,22 @@ count_buc(list, type) while (list) { switch(type) { case BUC_BLESSED: - if (list->oclass != GOLD_CLASS && list->bknown && list->blessed) + if (list->oclass != GOLD_CLASS && + (list->bknown || Role_if(PM_PRIEST)) && list->blessed) count++; break; case BUC_CURSED: - if (list->oclass != GOLD_CLASS && list->bknown && list->cursed) + if (list->oclass != GOLD_CLASS && + (list->bknown || Role_if(PM_PRIEST)) && list->cursed) count++; break; case BUC_UNCURSED: if (list->oclass != GOLD_CLASS && - list->bknown && !list->blessed && !list->cursed) + (list->bknown || Role_if(PM_PRIEST)) && !list->blessed && !list->cursed) count++; break; case BUC_UNKNOWN: - if (list->oclass != GOLD_CLASS && !list->bknown) + if (list->oclass != GOLD_CLASS && !(list->bknown || Role_if(PM_PRIEST))) count++; break; default: diff --git a/src/pickup.c b/src/pickup.c index 31265091e..08a2e37f4 100644 --- a/src/pickup.c +++ b/src/pickup.c @@ -316,16 +316,19 @@ struct obj *obj; (index(valid_menu_classes, obj->oclass) != (char *)0)) return TRUE; else if (((index(valid_menu_classes,'U') != (char *)0) && - (obj->oclass != GOLD_CLASS && obj->bknown && !obj->blessed && !obj->cursed))) + (obj->oclass != GOLD_CLASS && (obj->bknown || Role_if(PM_PRIEST)) && + !obj->blessed && !obj->cursed))) return TRUE; else if (((index(valid_menu_classes,'B') != (char *)0) && - (obj->oclass != GOLD_CLASS && obj->bknown && obj->blessed))) + (obj->oclass != GOLD_CLASS && + (obj->bknown || Role_if(PM_PRIEST)) && obj->blessed))) return TRUE; else if (((index(valid_menu_classes,'C') != (char *)0) && - (obj->oclass != GOLD_CLASS && obj->bknown && obj->cursed))) + (obj->oclass != GOLD_CLASS && + (obj->bknown || Role_if(PM_PRIEST)) && obj->cursed))) return TRUE; else if (((index(valid_menu_classes,'X') != (char *)0) && - (obj->oclass != GOLD_CLASS && !obj->bknown))) + (obj->oclass != GOLD_CLASS && !(obj->bknown || Role_if(PM_PRIEST))))) return TRUE; else return FALSE; -- 2.40.0