-+-+-+-+-+-+-+-+ START OF PART 50 -+-+-+-+-+-+-+-+
X                        status := uor(%X'00000003',status);
X                        msg_print('You are getting weak from hunger.');
X                        if (find_flag) then
X                          BEGIN
X                            find_flag := false;
X                            move_char(5);
X                          END;
X                      END;
X                    if (food < player_food_faint) then
X                      if (randint(8) = 1) then
X                        BEGIN
X                          paralysis := paralysis + randint(5);
X                          msg_print('You faint from the lack of food.');
X                          if (find_flag) then
X                            BEGIN
X                              find_flag := false;
X                              move_char(5);
X                            END;
X                        END;
X                  END
X                else
X                  BEGIN
X                    if (uand(%X'00000001',status) = 0) then
X                      BEGIN
X                        status := uor(%X'00000001',status);
X                        msg_print('You are getting hungry.');
X                        if (find_flag) then
X                          BEGIN
X                            find_flag := false;
X                            move_char(5);
X                          END;
X                      END;
X                  END;
X              END;
X            prt_hunger;
X`7B Food consumtion
X  Note: Speeded up characters really burn up the food!`7D
X            if (speed < 0) then
X              food := food + (speed*food_digested) `7B used to be harsher th
Van `7D
X            else                                   `7B this.             --j
Veb `7D
X              food := food - food_digested;
X`7B Regenerate `7D
X            with py.misc do
X              BEGIN
X                if (regenerate) then regen_amount := regen_amount*2;
X                if (rest > 0)   then regen_amount := regen_amount*2;
X                if (py.flags.poisoned < 1) then
X                  if (chp < mhp) then
X                    regenhp(regen_amount);
X                if (cmana < mana) then
X                    regenmana(regen_amount);
X              END;
X
X`7B petrification     `7D
X`09    if (petrified > 0) then`20
X`09      petrified := petrified - 1;
X
X`7B Special Abilities `7D
X`09    if (special > 0) then
X`09      special := special - 1;
X
X`7B Blindness `7D
X            if (blind > 0) then
X              BEGIN
X                if (uand(%X'00000004',status) = 0) then
X                  BEGIN
X                    status := uor(%X'00000004',status);
X                    prt_map;
X                    prt_blind;
X                    if (search_flag) then
X                      search_off;
X                  END;
X                blind := blind - 1;
X                if (blind = 0) then
X                  BEGIN
X                    status := uand(%X'FFFFFFFB',status);
X                    prt_blind;
X`09`09    draw_cave;
X                    msg_print('Your eyes once again function normally.');
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                  END;
X              END;
X`7B Confusion `7D
X            if (confused > 0) then
X              BEGIN
X                if (uand(%X'00000008',status) = 0) then
X                  BEGIN
X                    status := uor(%X'00000008',status);
X                    prt_confused;
X                  END;
X                confused := confused - 1;
X                if (confused = 0) then
X                  BEGIN
X                    status := uand(%X'FFFFFFF7',status);
X                    prt_confused;
X                    msg_print('You once again know what''s going on.');
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                  END;
X              END;
X`7B Afraid `7D
X            if (afraid > 0) then
X              BEGIN
X                if (uand(%X'00000010',status) = 0) then
X                  BEGIN
X                    if ((shero+hero) > 0) then
X                      afraid := 0
X                    else
X                      BEGIN
X                        status := uor(%X'00000010',status);
X                        prt_afraid;
X                      END;
X                  END
X                else if ((shero+hero) > 0) then
X                  afraid := 1;
X                afraid := afraid - 1;
X                if (afraid = 0) then
X                  BEGIN
X                    status := uand(%X'FFFFFFEF',status);
X                    prt_afraid;
X                    msg_print('You''re not such a coward anymore.');
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                  END;
X              END;
X`7B Poisoned `7D
X            if (poisoned > 0) then
X              BEGIN
X                if (uand(%X'00000020',status) = 0) then
X                  BEGIN
X                    status := uor(%X'00000020',status);
X                    prt_poisoned;
X                  END;
X                poisoned := poisoned - 1;
X                if (poisoned = 0) then
X                  BEGIN
X                    status := uand(%X'FFFFFFDF',status);
X                    prt_poisoned;
X                    msg_print('You feel better.');
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                  END
X                else
X                  BEGIN
X                    CASE con_adj of
X                        -4: take_hit(4,'poison.');
X                        -3,-2: take_hit(3,'poison.');
X                        -1: take_hit(2,'poison.');
X                        0 : take_hit(1,'poison.');
X                        1,2,3: if ((turn mod 2) = 0) then
X                                    take_hit(1,'poison.');
X                        4,5  : if ((turn mod 3) = 0) then
X                                    take_hit(1,'poison.');
X                        6 : if ((turn mod 4) = 0) then
X                                    take_hit(1,'poison.');
X                    END;
X                  END;
X              END;
X`7B Fast `7D
X            if (fast > 0) then
X              BEGIN
X                if (uand(%X'00000040',status) = 0) then
X                  BEGIN
X                    status := uor(%X'00000040',status);
X                    msg_print('You feel yourself speed up.');
X                    change_speed(-1);
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                  END;
X                fast := fast - 1;
X                if (fast = 0) then
X              END;
X`7B Afraid `7D
X            if (afraid > 0) then
X              BEGIN
X                if (uand(%X'00000010',status) = 0) then
X                  BEGIN
X                    if ((shero+hero) > 0) then
X                      afraid := 0
X                    else
X                      BEGIN
X                        status := uor(%X'00000010',status);
X                        prt_afraid;
X                      END;
X                  END
X                else if ((shero+hero) > 0) then
X                  afraid := 1;
X                afraid := afraid - 1;
X                if (afraid = 0) then
X                  BEGIN
X                    status := uand(%X'FFFFFFEF',status);
X                    prt_afraid;
X                    msg_print('You''re not such a coward anymore.');
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                  END;
X              END;
X`7B Poisoned `7D
X            if (poisoned > 0) then
X              BEGIN
X                if (uand(%X'00000020',status) = 0) then
X                  BEGIN
X                    status := uor(%X'00000020',status);
X                    prt_poisoned;
X                  END;
X                poisoned := poisoned - 1;
X                if (poisoned = 0) then
X                  BEGIN
X                    status := uand(%X'FFFFFFDF',status);
X                    prt_poisoned;
X                    msg_print('You feel better.');
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                  END
X                else
X                  BEGIN
X                    CASE con_adj of
X                        -4: take_hit(4,'poison.');
X                        -3,-2: take_hit(3,'poison.');
X                        -1: take_hit(2,'poison.');
X                        0 : take_hit(1,'poison.');
X                        1,2,3: if ((turn mod 2) = 0) then
X                                    take_hit(1,'poison.');
X                        4,5  : if ((turn mod 3) = 0) then
X                                    take_hit(1,'poison.');
X                        6 : if ((turn mod 4) = 0) then
X                                    take_hit(1,'poison.');
X                    END;
X                  END;
X              END;
X`7B Fast `7D
X            if (fast > 0) then
X              BEGIN
X                if (uand(%X'00000040',status) = 0) then
X                  BEGIN
X                    status := uor(%X'00000040',status);
X                    msg_print('You feel yourself speed up.');
X                    change_speed(-1);
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                  END;
X                fast := fast - 1;
X                if (fast = 0) then
X                  BEGIN
X                    status := uand(%X'FFFFFFBF',status);
X                    msg_print('Your fastness slows down.');
X                    change_speed(+1);
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                  END;
X              END;
X`7B Slow `7D    if (slow > 0) then
X              BEGIN
X                if (uand(%X'00000080',status) = 0) then
X                  BEGIN
X                    status := uor(%X'00000080',status);
X                    msg_print('You feel like molassas in January.');
X                    change_speed(+1);
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                  END;
X                slow := slow - 1;
X                if (slow = 0) then
X                  BEGIN
X                    status := uand(%X'FFFFFF7F',status);
X                    msg_print('You feel yourself speed up.');
X                    change_speed(-1);
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                  END;
X              END;
X`7B Resting is over? `7D
X            if (rest > 0) then
X              BEGIN
X`7B Hibernate every 20 iterations so that process does not eat up system.
X  NOTE: Remove comments for VMS version 4.0 or greater
X        INKEY_DELAY takes care of hibernation for VMS 3.7 or less `7D
X                if ((rest mod 20) = 1) then tiny_sleep(20);
X                rest := rest - 1;
X`7B Test for any key being hit to abort rest.  Also,
X  this will do a PUT_QIO which updates the screen.
X  One more side benifit; since inkey_delay hibernates
X  small amount before executing, this makes resting less CPU intensive. `7D
X                inkey_delay(command,0);
X                if (rest = 0) then  `7B Resting over `7D
X                  rest_off
X                else if (command <> null) then  `7B Resting aborted `7D
X                  rest_off;
X              END;
X`7B Hallucinating?  (Random characters appear!)`7D
X            if (image > 0) then
X              BEGIN
X                image := image - 1;
X                if (image = 0) then
X                  draw_cave;
X              END;
X`7B Paralysis `7D
X            if (paralysis > 0) then
X              BEGIN
X                paralysis := paralysis - 1;
X                if (rest > 0) then
X                  rest_off;
X                if (search_flag) then
X                  search_off;
X              END;
X`7B Protection from evil counter`7D
X            if (protevil > 0) then protevil := protevil - 1;
X`7B Inulnerability `7D
X            if (invuln > 0) then
X              BEGIN
X                if (uand(%X'00001000',status) = 0) then
X                  BEGIN
X                    status := uor(%X'00001000',status);
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                  END;
X                invuln := invuln - 1;
X                py.misc.pac := py.misc.pac - 2;
X                py.misc.dis_ac := py.misc.dis_ac -2;
X                prt_pac;
X                if (invuln = 0) then
X                  BEGIN
X                    status := uand(%X'FFFFEFFF',status);
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
X                        move_char(5);
X                      END;
X                    msg_print('The polymerized laminate material flakes off.
V');
X                  END;
X              END;
X`7B Heroism `7D
X            if (hero > 0) then
X              BEGIN
X                if (uand(%X'00002000',status) = 0) then
X                  BEGIN
X                    status := uor(%X'00002000',status);
X                    if (find_flag) then
X                      BEGIN
X                        find_flag := false;
+-+-+-+-+-+-+-+-  END  OF PART 50 +-+-+-+-+-+-+-+-
