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

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