]> granicus.if.org Git - nethack/commitdiff
Priests recognize B/U/C status on items in container menus
authornethack.allison <nethack.allison>
Sat, 6 Apr 2002 18:06:59 +0000 (18:06 +0000)
committernethack.allison <nethack.allison>
Sat, 6 Apr 2002 18:06:59 +0000 (18:06 +0000)
<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?
>

doc/fixes34.1
src/invent.c
src/pickup.c

index 07a8110d2496a1796719f09a9fbb49ade980f024..1353c2b3b6c1d8fd218065721856dd717458c2b6 100644 (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
index 27ceffd0fc4eecbfb96c34aaf6721f0c8ff69e8b..baa5242c979523720f393d353abaa85fefd9d618 100644 (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:
index 31265091e1e94f88f570a804fd7fe400a5d7fb34..08a2e37f49e5ae159952cd677d4a1902b58cf550 100644 (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;