| 777 | | /* Rods are tough */ |
|---|
| 778 | | if (o_ptr->tval == TV_ROD) chance = (chance / 4); |
|---|
| | 778 | damage = FALSE; |
|---|
| | 779 | |
|---|
| | 780 | /* Analyze the type to see if we just damage it */ |
|---|
| | 781 | switch (o_ptr->tval) |
|---|
| | 782 | { |
|---|
| | 783 | /* Weapons */ |
|---|
| | 784 | case TV_BOW: |
|---|
| | 785 | case TV_SWORD: |
|---|
| | 786 | case TV_HAFTED: |
|---|
| | 787 | case TV_POLEARM: |
|---|
| | 788 | case TV_DIGGING: |
|---|
| | 789 | { |
|---|
| | 790 | /* Chance to damage it */ |
|---|
| | 791 | if (rand_int(100) < perc) |
|---|
| | 792 | { |
|---|
| | 793 | /* Damage the item */ |
|---|
| | 794 | o_ptr->to_h--; |
|---|
| | 795 | o_ptr->to_d--; |
|---|
| | 796 | |
|---|
| | 797 | /* Damaged! */ |
|---|
| | 798 | damage = TRUE; |
|---|
| | 799 | } |
|---|
| | 800 | else continue; |
|---|
| | 801 | |
|---|
| | 802 | break; |
|---|
| | 803 | } |
|---|
| | 804 | |
|---|
| | 805 | /* Wearable items */ |
|---|
| | 806 | case TV_HELM: |
|---|
| | 807 | case TV_CROWN: |
|---|
| | 808 | case TV_SHIELD: |
|---|
| | 809 | case TV_BOOTS: |
|---|
| | 810 | case TV_GLOVES: |
|---|
| | 811 | case TV_CLOAK: |
|---|
| | 812 | case TV_SOFT_ARMOR: |
|---|
| | 813 | case TV_HARD_ARMOR: |
|---|
| | 814 | case TV_DRAG_ARMOR: |
|---|
| | 815 | { |
|---|
| | 816 | /* Chance to damage it */ |
|---|
| | 817 | if (rand_int(100) < perc) |
|---|
| | 818 | { |
|---|
| | 819 | /* Damage the item */ |
|---|
| | 820 | o_ptr->to_a--; |
|---|
| | 821 | |
|---|
| | 822 | /* Damaged! */ |
|---|
| | 823 | damage = TRUE; |
|---|
| | 824 | } |
|---|
| | 825 | else continue; |
|---|
| | 826 | |
|---|
| | 827 | break; |
|---|
| | 828 | } |
|---|
| | 829 | |
|---|
| | 830 | /* Rods are tough */ |
|---|
| | 831 | case TV_ROD: |
|---|
| | 832 | { |
|---|
| | 833 | chance = (chance / 4); |
|---|
| | 834 | |
|---|
| | 835 | break; |
|---|
| | 836 | } |
|---|
| | 837 | } |
|---|
| | 838 | |
|---|
| | 839 | /* Damage instead of destroy */ |
|---|
| | 840 | if (damage) |
|---|
| | 841 | { |
|---|
| | 842 | /* Calculate bonuses */ |
|---|
| | 843 | p_ptr->update |= (PU_BONUS); |
|---|
| | 844 | |
|---|
| | 845 | /* Window stuff */ |
|---|
| | 846 | p_ptr->window |= (PW_EQUIP | PW_PLAYER_0 | PW_PLAYER_1); |
|---|
| | 847 | |
|---|
| | 848 | /* Casualty count */ |
|---|
| | 849 | amt = o_ptr->number; |
|---|
| | 850 | } |
|---|