| 714 | #undef altprop |
| 715 | |
| 716 | int |
| 717 | find_mac(struct monst *mon) |
| 718 | { |
| 719 | struct obj *obj; |
| 720 | int base = mon->data->ac; |
| 721 | long mwflags = mon->misc_worn_check; |
| 722 | |
| 723 | for (obj = mon->minvent; obj; obj = obj->nobj) { |
| 724 | if (obj->owornmask & mwflags) { |
| 725 | if (obj->otyp == AMULET_OF_GUARDING) |
| 726 | base -= 2; /* fixed amount, not impacted by erosion */ |
| 727 | else |
| 728 | base -= ARM_BONUS(obj); |
| 729 | /* since ARM_BONUS is positive, subtracting it increases AC */ |
| 730 | } |
| 731 | } |
| 732 | /* same cap as for hero [find_ac(do_wear.c)] */ |
| 733 | if (abs(base) > AC_MAX) |
| 734 | base = sgn(base) * AC_MAX; |
| 735 | return base; |
| 736 | } |
| 737 | |
| 738 | /* |
| 739 | * weapons are handled separately; |
no test coverage detected