Priests recognize B/U/C status on items in container menus

<email deleted>
> 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?
>
This commit is contained in:
nethack.allison
2002-04-06 18:06:59 +00:00
parent 268b70e4e3
commit b940ca0ee7
3 changed files with 14 additions and 8 deletions

View File

@@ -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

View File

@@ -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:

View File

@@ -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;