| | 602 | /* |
|---|
| | 603 | * Helper for process_world -- decrement p_ptr->timed[] fields. |
|---|
| | 604 | */ |
|---|
| | 605 | static void decrease_timeouts(void) |
|---|
| | 606 | { |
|---|
| | 607 | int i; |
|---|
| | 608 | int timed_list[] = |
|---|
| | 609 | { |
|---|
| | 610 | TMD_IMAGE, TMD_BLIND, TMD_SINVIS, TMD_SINFRA, TMD_PARALYZED, |
|---|
| | 611 | TMD_CONFUSED, TMD_AFRAID, TMD_FAST, TMD_SLOW, TMD_PROTEVIL, |
|---|
| | 612 | TMD_INVULN, TMD_HERO, TMD_SHERO, TMD_BLESSED, TMD_SHIELD, |
|---|
| | 613 | TMD_OPP_ACID, TMD_OPP_ELEC, TMD_OPP_FIRE, TMD_OPP_COLD, TMD_OPP_POIS |
|---|
| | 614 | }; |
|---|
| | 615 | |
|---|
| | 616 | /* Decrement all effects that can be done simply */ |
|---|
| | 617 | for (i = 0; i < (int)N_ELEMENTS(timed_list); i++) |
|---|
| | 618 | { |
|---|
| | 619 | int effect = timed_list[i]; |
|---|
| | 620 | |
|---|
| | 621 | /* Decrement the effect */ |
|---|
| | 622 | if (p_ptr->timed[effect]) |
|---|
| | 623 | dec_timed(effect, 1); |
|---|
| | 624 | } |
|---|
| | 625 | |
|---|
| | 626 | |
|---|
| | 627 | /*** Deal with the rest ***/ |
|---|
| | 628 | |
|---|
| | 629 | /* Poison */ |
|---|
| | 630 | if (p_ptr->timed[TMD_POISONED]) |
|---|
| | 631 | { |
|---|
| | 632 | int adjust = (adj_con_fix[p_ptr->stat_ind[A_CON]] + 1); |
|---|
| | 633 | |
|---|
| | 634 | /* Apply some healing */ |
|---|
| | 635 | dec_timed(TMD_POISONED, adjust); |
|---|
| | 636 | } |
|---|
| | 637 | |
|---|
| | 638 | /* Stun */ |
|---|
| | 639 | if (p_ptr->timed[TMD_STUN]) |
|---|
| | 640 | { |
|---|
| | 641 | int adjust = (adj_con_fix[p_ptr->stat_ind[A_CON]] + 1); |
|---|
| | 642 | |
|---|
| | 643 | /* Apply some healing */ |
|---|
| | 644 | dec_timed(TMD_STUN, adjust); |
|---|
| | 645 | } |
|---|
| | 646 | |
|---|
| | 647 | /* Cut */ |
|---|
| | 648 | if (p_ptr->timed[TMD_CUT]) |
|---|
| | 649 | { |
|---|
| | 650 | int adjust = (adj_con_fix[p_ptr->stat_ind[A_CON]] + 1); |
|---|
| | 651 | |
|---|
| | 652 | /* Hack -- Truly "mortal" wound */ |
|---|
| | 653 | if (p_ptr->timed[TMD_CUT] > 1000) adjust = 0; |
|---|
| | 654 | |
|---|
| | 655 | /* Apply some healing */ |
|---|
| | 656 | dec_timed(TMD_CUT, adjust); |
|---|
| | 657 | } |
|---|
| | 658 | |
|---|
| | 659 | return; |
|---|
| | 660 | } |
|---|
| | 661 | |
|---|
| 864 | | /* Hack -- Hallucinating */ |
|---|
| 865 | | if (p_ptr->timed[TMD_IMAGE]) |
|---|
| 866 | | { |
|---|
| 867 | | (void)dec_timed(TMD_IMAGE, 1); |
|---|
| 868 | | } |
|---|
| 869 | | |
|---|
| 870 | | /* Blindness */ |
|---|
| 871 | | if (p_ptr->timed[TMD_BLIND]) |
|---|
| 872 | | { |
|---|
| 873 | | (void)dec_timed(TMD_BLIND, 1); |
|---|
| 874 | | } |
|---|
| 875 | | |
|---|
| 876 | | /* Times see-invisible */ |
|---|
| 877 | | if (p_ptr->timed[TMD_SINVIS]) |
|---|
| 878 | | { |
|---|
| 879 | | (void)dec_timed(TMD_SINVIS, 1); |
|---|
| 880 | | } |
|---|
| 881 | | |
|---|
| 882 | | /* Timed infra-vision */ |
|---|
| 883 | | if (p_ptr->timed[TMD_SINFRA]) |
|---|
| 884 | | { |
|---|
| 885 | | (void)dec_timed(TMD_SINFRA, 1); |
|---|
| 886 | | } |
|---|
| 887 | | |
|---|
| 888 | | /* Paralysis */ |
|---|
| 889 | | if (p_ptr->timed[TMD_PARALYZED]) |
|---|
| 890 | | { |
|---|
| 891 | | (void)dec_timed(TMD_PARALYZED, 1); |
|---|
| 892 | | } |
|---|
| 893 | | |
|---|
| 894 | | /* Confusion */ |
|---|
| 895 | | if (p_ptr->timed[TMD_CONFUSED]) |
|---|
| 896 | | { |
|---|
| 897 | | (void)dec_timed(TMD_CONFUSED, 1); |
|---|
| 898 | | } |
|---|
| 899 | | |
|---|
| 900 | | /* Afraid */ |
|---|
| 901 | | if (p_ptr->timed[TMD_AFRAID]) |
|---|
| 902 | | { |
|---|
| 903 | | (void)dec_timed(TMD_AFRAID, 1); |
|---|
| 904 | | } |
|---|
| 905 | | |
|---|
| 906 | | /* Fast */ |
|---|
| 907 | | if (p_ptr->timed[TMD_FAST]) |
|---|
| 908 | | { |
|---|
| 909 | | (void)dec_timed(TMD_FAST, 1); |
|---|
| 910 | | } |
|---|
| 911 | | |
|---|
| 912 | | /* Slow */ |
|---|
| 913 | | if (p_ptr->timed[TMD_SLOW]) |
|---|
| 914 | | { |
|---|
| 915 | | (void)dec_timed(TMD_SLOW, 1); |
|---|
| 916 | | } |
|---|
| 917 | | |
|---|
| 918 | | /* Protection from evil */ |
|---|
| 919 | | if (p_ptr->timed[TMD_PROTEVIL]) |
|---|
| 920 | | { |
|---|
| 921 | | (void)dec_timed(TMD_PROTEVIL, 1); |
|---|
| 922 | | } |
|---|
| 923 | | |
|---|
| 924 | | /* Invulnerability */ |
|---|
| 925 | | if (p_ptr->timed[TMD_INVULN]) |
|---|
| 926 | | { |
|---|
| 927 | | (void)dec_timed(TMD_INVULN, 1); |
|---|
| 928 | | } |
|---|
| 929 | | |
|---|
| 930 | | /* Heroism */ |
|---|
| 931 | | if (p_ptr->timed[TMD_HERO]) |
|---|
| 932 | | { |
|---|
| 933 | | (void)dec_timed(TMD_HERO, 1); |
|---|
| 934 | | } |
|---|
| 935 | | |
|---|
| 936 | | /* Super Heroism */ |
|---|
| 937 | | if (p_ptr->timed[TMD_SHERO]) |
|---|
| 938 | | { |
|---|
| 939 | | (void)dec_timed(TMD_SHERO, 1); |
|---|
| 940 | | } |
|---|
| 941 | | |
|---|
| 942 | | /* Blessed */ |
|---|
| 943 | | if (p_ptr->timed[TMD_BLESSED]) |
|---|
| 944 | | { |
|---|
| 945 | | (void)dec_timed(TMD_BLESSED, 1); |
|---|
| 946 | | } |
|---|
| 947 | | |
|---|
| 948 | | /* Shield */ |
|---|
| 949 | | if (p_ptr->timed[TMD_SHIELD]) |
|---|
| 950 | | { |
|---|
| 951 | | (void)dec_timed(TMD_SHIELD, 1); |
|---|
| 952 | | } |
|---|
| 953 | | |
|---|
| 954 | | /* Oppose Acid */ |
|---|
| 955 | | if (p_ptr->timed[TMD_OPP_ACID]) |
|---|
| 956 | | { |
|---|
| 957 | | (void)dec_timed(TMD_OPP_ACID, 1); |
|---|
| 958 | | } |
|---|
| 959 | | |
|---|
| 960 | | /* Oppose Lightning */ |
|---|
| 961 | | if (p_ptr->timed[TMD_OPP_ELEC]) |
|---|
| 962 | | { |
|---|
| 963 | | (void)dec_timed(TMD_OPP_ELEC, 1); |
|---|
| 964 | | } |
|---|
| 965 | | |
|---|
| 966 | | /* Oppose Fire */ |
|---|
| 967 | | if (p_ptr->timed[TMD_OPP_FIRE]) |
|---|
| 968 | | { |
|---|
| 969 | | (void)dec_timed(TMD_OPP_FIRE, 1); |
|---|
| 970 | | } |
|---|
| 971 | | |
|---|
| 972 | | /* Oppose Cold */ |
|---|
| 973 | | if (p_ptr->timed[TMD_OPP_COLD]) |
|---|
| 974 | | { |
|---|
| 975 | | (void)dec_timed(TMD_OPP_COLD, 1); |
|---|
| 976 | | } |
|---|
| 977 | | |
|---|
| 978 | | /* Oppose Poison */ |
|---|
| 979 | | if (p_ptr->timed[TMD_OPP_POIS]) |
|---|
| 980 | | { |
|---|
| 981 | | (void)dec_timed(TMD_OPP_POIS, 1); |
|---|
| 982 | | } |
|---|
| 983 | | |
|---|
| 984 | | |
|---|
| 985 | | /*** Poison and Stun and Cut ***/ |
|---|
| 986 | | |
|---|
| 987 | | /* Poison */ |
|---|
| 988 | | if (p_ptr->timed[TMD_POISONED]) |
|---|
| 989 | | { |
|---|
| 990 | | int adjust = (adj_con_fix[p_ptr->stat_ind[A_CON]] + 1); |
|---|
| 991 | | |
|---|
| 992 | | /* Apply some healing */ |
|---|
| 993 | | (void)dec_timed(TMD_POISONED, adjust); |
|---|
| 994 | | } |
|---|
| 995 | | |
|---|
| 996 | | /* Stun */ |
|---|
| 997 | | if (p_ptr->timed[TMD_STUN]) |
|---|
| 998 | | { |
|---|
| 999 | | int adjust = (adj_con_fix[p_ptr->stat_ind[A_CON]] + 1); |
|---|
| 1000 | | |
|---|
| 1001 | | /* Apply some healing */ |
|---|
| 1002 | | (void)dec_timed(TMD_STUN, adjust); |
|---|
| 1003 | | } |
|---|
| 1004 | | |
|---|
| 1005 | | /* Cut */ |
|---|
| 1006 | | if (p_ptr->timed[TMD_CUT]) |
|---|
| 1007 | | { |
|---|
| 1008 | | int adjust = (adj_con_fix[p_ptr->stat_ind[A_CON]] + 1); |
|---|
| 1009 | | |
|---|
| 1010 | | /* Hack -- Truly "mortal" wound */ |
|---|
| 1011 | | if (p_ptr->timed[TMD_CUT] > 1000) adjust = 0; |
|---|
| 1012 | | |
|---|
| 1013 | | /* Apply some healing */ |
|---|
| 1014 | | (void)dec_timed(TMD_CUT, adjust); |
|---|
| 1015 | | } |
|---|
| | 912 | decrease_timeouts(); |
|---|