… | |
… | |
718 | /* do_skill_ident() - workhorse for skill_ident() -b.t. |
718 | /* do_skill_ident() - workhorse for skill_ident() -b.t. |
719 | */ |
719 | */ |
720 | static int |
720 | static int |
721 | do_skill_ident (object *pl, int obj_class, object *skill) |
721 | do_skill_ident (object *pl, int obj_class, object *skill) |
722 | { |
722 | { |
723 | object *tmp; |
|
|
724 | int success = 0; |
723 | int success = 0; |
725 | |
724 | |
726 | for (tmp = pl->inv; tmp; tmp = tmp->below) |
725 | for (object *tmp = pl->inv; tmp; tmp = tmp->below) |
727 | success += do_skill_ident2 (tmp, pl, obj_class, skill); |
726 | success += do_skill_ident2 (tmp, pl, obj_class, skill); |
728 | /* check the ground */ |
727 | /* check the ground */ |
729 | |
728 | |
730 | for (tmp = GET_MAP_OB (pl->map, pl->x, pl->y); tmp; tmp = tmp->above) |
729 | for (object *tmp = pl->ms ().bot; tmp; tmp = tmp->above) |
731 | success += do_skill_ident2 (tmp, pl, obj_class, skill); |
730 | success += do_skill_ident2 (tmp, pl, obj_class, skill); |
732 | |
731 | |
733 | return success; |
732 | return success; |
734 | } |
733 | } |
735 | |
734 | |
… | |
… | |
743 | |
742 | |
744 | new_draw_info (NDI_UNIQUE, 0, pl, "You look at the objects nearby..."); |
743 | new_draw_info (NDI_UNIQUE, 0, pl, "You look at the objects nearby..."); |
745 | |
744 | |
746 | switch (skill->subtype) |
745 | switch (skill->subtype) |
747 | { |
746 | { |
748 | case SK_SMITHERY: |
747 | case SK_SMITHERY: |
749 | success += do_skill_ident (pl, WEAPON, skill) + do_skill_ident (pl, ARMOUR, skill) |
748 | success += do_skill_ident (pl, WEAPON, skill) + do_skill_ident (pl, ARMOUR, skill) |
750 | + do_skill_ident (pl, BRACERS, skill) + do_skill_ident (pl, CLOAK, skill) |
749 | + do_skill_ident (pl, BRACERS, skill) + do_skill_ident (pl, CLOAK, skill) |
751 | + do_skill_ident (pl, BOOTS, skill) + do_skill_ident (pl, SHIELD, skill) |
750 | + do_skill_ident (pl, BOOTS, skill) + do_skill_ident (pl, SHIELD, skill) |
752 | + do_skill_ident (pl, GIRDLE, skill) + do_skill_ident (pl, HELMET, skill) + do_skill_ident (pl, GLOVES, skill); |
751 | + do_skill_ident (pl, GIRDLE, skill) + do_skill_ident (pl, HELMET, skill) + do_skill_ident (pl, GLOVES, skill); |
753 | break; |
752 | break; |
754 | |
753 | |
755 | case SK_BOWYER: |
754 | case SK_BOWYER: |
756 | success += do_skill_ident (pl, BOW, skill) + do_skill_ident (pl, ARROW, skill); |
755 | success += do_skill_ident (pl, BOW, skill) + do_skill_ident (pl, ARROW, skill); |
757 | break; |
756 | break; |
758 | |
757 | |
759 | case SK_ALCHEMY: |
758 | case SK_ALCHEMY: |
760 | success += do_skill_ident (pl, POTION, skill) + do_skill_ident (pl, POISON, skill) |
759 | success += do_skill_ident (pl, POTION, skill) + do_skill_ident (pl, POISON, skill) |
761 | + do_skill_ident (pl, CONTAINER, skill) + do_skill_ident (pl, DRINK, skill) + do_skill_ident (pl, INORGANIC, skill); |
760 | + do_skill_ident (pl, CONTAINER, skill) + do_skill_ident (pl, DRINK, skill) + do_skill_ident (pl, INORGANIC, skill); |
762 | break; |
761 | break; |
763 | |
762 | |
764 | case SK_WOODSMAN: |
763 | case SK_WOODSMAN: |
765 | success += do_skill_ident (pl, FOOD, skill) + do_skill_ident (pl, DRINK, skill) + do_skill_ident (pl, FLESH, skill); |
764 | success += do_skill_ident (pl, FOOD, skill) + do_skill_ident (pl, DRINK, skill) + do_skill_ident (pl, FLESH, skill); |
766 | break; |
765 | break; |
767 | |
766 | |
768 | case SK_JEWELER: |
767 | case SK_JEWELER: |
769 | success += do_skill_ident (pl, GEM, skill) + do_skill_ident (pl, RING, skill) + do_skill_ident (pl, AMULET, skill); |
768 | success += do_skill_ident (pl, GEM, skill) + do_skill_ident (pl, RING, skill) + do_skill_ident (pl, AMULET, skill); |
770 | break; |
769 | break; |
771 | |
770 | |
772 | case SK_LITERACY: |
771 | case SK_LITERACY: |
773 | success += do_skill_ident (pl, SPELLBOOK, skill) + do_skill_ident (pl, SCROLL, skill) + do_skill_ident (pl, BOOK, skill); |
772 | success += do_skill_ident (pl, SPELLBOOK, skill) + do_skill_ident (pl, SCROLL, skill) + do_skill_ident (pl, BOOK, skill); |
774 | break; |
773 | break; |
775 | |
774 | |
776 | case SK_THAUMATURGY: |
775 | case SK_THAUMATURGY: |
777 | success += do_skill_ident (pl, WAND, skill) + do_skill_ident (pl, ROD, skill) + do_skill_ident (pl, HORN, skill); |
776 | success += do_skill_ident (pl, WAND, skill) + do_skill_ident (pl, ROD, skill) + do_skill_ident (pl, HORN, skill); |
778 | break; |
777 | break; |
779 | |
778 | |
780 | case SK_DET_CURSE: |
779 | case SK_DET_CURSE: |
781 | success = do_skill_detect_curse (pl, skill); |
780 | success = do_skill_detect_curse (pl, skill); |
782 | if (success) |
781 | if (success) |
783 | new_draw_info (NDI_UNIQUE, 0, pl, "...and discover cursed items!"); |
782 | new_draw_info (NDI_UNIQUE, 0, pl, "...and discover cursed items!"); |
784 | break; |
783 | break; |
785 | |
784 | |
786 | case SK_DET_MAGIC: |
785 | case SK_DET_MAGIC: |
787 | success = do_skill_detect_magic (pl, skill); |
786 | success = do_skill_detect_magic (pl, skill); |
788 | if (success) |
787 | if (success) |
789 | new_draw_info (NDI_UNIQUE, 0, pl, "...and discover items imbued with mystic forces!"); |
788 | new_draw_info (NDI_UNIQUE, 0, pl, "...and discover items imbued with mystic forces!"); |
790 | break; |
789 | break; |
791 | |
790 | |
792 | default: |
791 | default: |
793 | LOG (llevError, "Error: bad call to skill_ident()\n"); |
792 | LOG (llevError, "Error: bad call to skill_ident()\n"); |
794 | return 0; |
793 | return 0; |
795 | break; |
794 | break; |
796 | } |
795 | } |
|
|
796 | |
797 | if (!success) |
797 | if (!success) |
798 | { |
|
|
799 | new_draw_info (NDI_UNIQUE, 0, pl, "...and learn nothing more."); |
798 | new_draw_info (NDI_UNIQUE, 0, pl, "...and learn nothing more."); |
800 | } |
799 | |
801 | return success; |
800 | return success; |
802 | } |
801 | } |
803 | |
802 | |
804 | /* players using this skill can 'charm' a monster -- |
803 | /* players using this skill can 'charm' a monster -- |
805 | * into working for them. It can only be used on |
804 | * into working for them. It can only be used on |