[BACK]Return to eat.c CVS log [TXT][DIR] Up to [contributed] / early-roguelike / xrogue

Annotation of early-roguelike/xrogue/eat.c, Revision 1.1

1.1     ! rubenllo    1: /*
        !             2:     eat.c  -  Functions for dealing with digestion
        !             3:
        !             4:     XRogue: Expeditions into the Dungeons of Doom
        !             5:     Copyright (C) 1991 Robert Pietkivitch
        !             6:     All rights reserved.
        !             7:
        !             8:     Based on "Advanced Rogue"
        !             9:     Copyright (C) 1984, 1985 Michael Morgan, Ken Dalka and AT&T
        !            10:     All rights reserved.
        !            11:
        !            12:     Based on "Rogue: Exploring the Dungeons of Doom"
        !            13:     Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman
        !            14:     All rights reserved.
        !            15:
        !            16:     See the file LICENSE.TXT for full copyright and licensing information.
        !            17: */
        !            18:
        !            19: #include <curses.h>
        !            20: #include "rogue.h"
        !            21:
        !            22: /*
        !            23:  * eat:
        !            24:  *      He wants to eat something, so let him try
        !            25:  */
        !            26:
        !            27: void
        !            28: eat(void)
        !            29: {
        !            30:     register struct linked_list *item;
        !            31:     int which;
        !            32:     unsigned long temp;
        !            33:
        !            34:     if (player.t_action != C_EAT) {
        !            35:         if ((item = get_item(pack, "eat", FOOD, FALSE, FALSE)) == NULL)
        !            36:             return;
        !            37:
        !            38:         player.t_using = item;  /* Remember what it is */
        !            39:         player.t_action = C_EAT;        /* We are eating */
        !            40:         which = (OBJPTR(item))->o_which;
        !            41:         player.t_no_move = max(foods[which].mi_food/100, 1) * movement(&player);
        !            42:         return;
        !            43:     }
        !            44:
        !            45:     /* We have waited our time, let's eat the food */
        !            46:     item = player.t_using;
        !            47:     player.t_using = NULL;
        !            48:     player.t_action = A_NIL;
        !            49:
        !            50:     which = (OBJPTR(item))->o_which;
        !            51:     if ((food_left += foods[which].mi_food) > STOMACHSIZE)
        !            52:         food_left = STOMACHSIZE;
        !            53:     del_pack(item);
        !            54:     if (hungry_state == F_SATIATED && food_left == STOMACHSIZE && rnd(4) == 1) {
        !            55:         pstats.s_hpt = -1;
        !            56:         msg ("Cough!  Ack!  You choke on all that food and die!  --More--");
        !            57:         wait_for(' ');
        !            58:         death(D_FOOD_CHOKE);
        !            59:     }
        !            60:     if (food_left >= STOMACHSIZE-MORETIME) {
        !            61:         hungry_state = F_SATIATED;
        !            62:         msg ("You have trouble getting that food down!");
        !            63:         msg ("Your stomach feels like it's about to burst!");
        !            64:     }
        !            65:     else if (which != E_SLIMEMOLD) {
        !            66:         hungry_state = F_OKAY;
        !            67:         switch (rnd(10)) {
        !            68:         case 0: msg("Yuck, what a foul tasting %s! ", foods[which].mi_name);
        !            69:         when 1: msg("Mmmm, what a tasty %s. ", foods[which].mi_name);
        !            70:         when 2: msg("Wow, what a scrumptious %s! ", foods[which].mi_name);
        !            71:         when 3: msg("Hmmm, %s heaven! ", foods[which].mi_name);
        !            72:         when 4: msg("You've eaten better %s. ", foods[which].mi_name);
        !            73:         when 5: msg("You smack your lips ");
        !            74:         when 6: msg("Yum-yum-yum ");
        !            75:         when 7: msg("Gulp! ");
        !            76:         when 8: msg("Your tongue flips out! ");
        !            77:         when 9: msg("You lick your chin ");
        !            78:         }
        !            79:     }
        !            80:     updpack(TRUE, &player);
        !            81:     switch(which) {
        !            82:     case E_WHORTLEBERRY:    /* add 1 to intelligence */
        !            83:         (*add_abil[A_INTELLIGENCE])(1);
        !            84:     when E_SWEETSOP:    /* add 1 to strength */
        !            85:     case E_SOURSOP: /* add 1 to strength */
        !            86:         (*add_abil[A_STRENGTH])(1);
        !            87:     when E_SAPODILLA:   /* add 1 to wisdom */
        !            88:         (*add_abil[A_WISDOM])(1);
        !            89:     when E_APPLE:   /* add 1 to dexterity */
        !            90:         (*add_abil[A_DEXTERITY])(1);
        !            91:     when E_PRICKLEY:    /* add 1 to constitution */
        !            92:         (*add_abil[A_CONSTITUTION])(1);
        !            93:     when E_PEACH:   /* add 1 to charisma */
        !            94:         (*add_abil[A_CHARISMA])(1);
        !            95:     when E_PITANGA: /* add 1 hit point */
        !            96:         max_stats.s_hpt++;
        !            97:         pstats.s_hpt = max_stats.s_hpt;
        !            98:         msg("You feel a bit tougher now. ");
        !            99:     when E_HAGBERRY:    /* armor class */
        !           100:     case E_JABOTICABA:  /* armor class */
        !           101:         pstats.s_arm--;
        !           102:         msg("Your skin feels more resilient now. ");
        !           103:     when E_STRAWBERRY:  /* add 10% experience points */
        !           104:     case E_RAMBUTAN:    /* add 10% experience points */
        !           105:         temp = pstats.s_exp/100 + 10;
        !           106:         pstats.s_exp += temp;
        !           107:         msg("You feel slightly more experienced now. ");
        !           108:         check_level();
        !           109:     when E_DEWBERRY:    /* encourage him to do more magic */
        !           110:         if (chant_time > 0) {
        !           111:             chant_time -= 80;
        !           112:             if (chant_time < 0)
        !           113:                 chant_time = 0;
        !           114:             msg("You feel you have more chant ability. ");
        !           115:         }
        !           116:         if (pray_time > 0) {
        !           117:             pray_time -= 80;
        !           118:             if (pray_time < 0)
        !           119:                 pray_time = 0;
        !           120:             msg("You feel you have more prayer ability. ");
        !           121:         }
        !           122:         if (spell_power > 0) {
        !           123:             spell_power -= 80;
        !           124:             if (spell_power < 0)
        !           125:                 spell_power = 0;
        !           126:             msg("You feel you have more spell casting ability. ");
        !           127:         }
        !           128:     when E_CANDLEBERRY: /* cure him */
        !           129:         if (on(player, HASINFEST) ||
        !           130:             on(player, HASDISEASE)||
        !           131:             on(player, DOROT)) {
        !           132:             if (on(player, HASDISEASE)) {
        !           133:                 extinguish(cure_disease);
        !           134:                 cure_disease();
        !           135:             }
        !           136:             if (on(player, HASINFEST)) {
        !           137:                 msg("You feel yourself improving. ");
        !           138:                 turn_off(player, HASINFEST);
        !           139:                 infest_dam = 0;
        !           140:             }
        !           141:             if (on(player, DOROT)) {
        !           142:                 msg("You feel your skin returning to normal. ");
        !           143:                 turn_off(player, DOROT);
        !           144:             }
        !           145:         }
        !           146:     when E_SLIMEMOLD: /* monster food */
        !           147:     msg("The slime-mold quivers around in your mouth. ");
        !           148:         player.t_no_move = 3*movement(&player);
        !           149:         if (off(player, HASDISEASE)) {
        !           150:             if (ISWEARING(R_HEALTH) || player.t_ctype == C_PALADIN ||
        !           151:                 player.t_ctype == C_RANGER) {
        !           152:         msg("You feel lousy. ");
        !           153:             }
        !           154:             else {
        !           155:                 turn_on(player, HASDISEASE);
        !           156:                 fuse(cure_disease, NULL, roll(HEALTIME,SICKTIME),AFTER);
        !           157:                 msg("You become ill. ");
        !           158:             }
        !           159:     }
        !           160:         pstats.s_const -= rnd(2)+1;
        !           161:     if (pstats.s_const <= 3) pstats.s_const = 3;
        !           162:
        !           163:     otherwise: /* not all the foods have to do something */
        !           164:         break;
        !           165:     }
        !           166: }
        !           167:

CVSweb