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

Annotation of early-roguelike/rogue4/daemons.c, Revision 1.1

1.1     ! rubenllo    1: /*
        !             2:  * All the daemon and fuse functions are in here
        !             3:  *
        !             4:  * @(#)daemons.c       4.10 (Berkeley) 4/6/82
        !             5:  *
        !             6:  * Rogue: Exploring the Dungeons of Doom
        !             7:  * Copyright (C) 1980, 1981, 1982 Michael Toy, Ken Arnold and Glenn Wichman
        !             8:  * All rights reserved.
        !             9:  *
        !            10:  * See the file LICENSE.TXT for full copyright and licensing information.
        !            11:  */
        !            12:
        !            13: #include <curses.h>
        !            14: #include "rogue.h"
        !            15:
        !            16: int between = 0;
        !            17:
        !            18: /*
        !            19:  * doctor:
        !            20:  *     A healing daemon that restors hit points after rest
        !            21:  */
        !            22: void
        !            23: doctor(void)
        !            24: {
        !            25:     register int lv, ohp;
        !            26:
        !            27:     lv = pstats.s_lvl;
        !            28:     ohp = pstats.s_hpt;
        !            29:     quiet++;
        !            30:     if (lv < 8)
        !            31:     {
        !            32:        if (quiet + (lv << 1) > 20)
        !            33:            pstats.s_hpt++;
        !            34:     }
        !            35:     else
        !            36:        if (quiet >= 3)
        !            37:            pstats.s_hpt += rnd(lv - 7) + 1;
        !            38:     if (ISRING(LEFT, R_REGEN))
        !            39:        pstats.s_hpt++;
        !            40:     if (ISRING(RIGHT, R_REGEN))
        !            41:        pstats.s_hpt++;
        !            42:     if (ohp != pstats.s_hpt)
        !            43:     {
        !            44:        if (pstats.s_hpt > max_hp)
        !            45:            pstats.s_hpt = max_hp;
        !            46:        quiet = 0;
        !            47:     }
        !            48: }
        !            49:
        !            50: /*
        !            51:  * Swander:
        !            52:  *     Called when it is time to start rolling for wandering monsters
        !            53:  */
        !            54: void
        !            55: swander(void)
        !            56: {
        !            57:     start_daemon(rollwand, 0, BEFORE);
        !            58: }
        !            59:
        !            60: /*
        !            61:  * rollwand:
        !            62:  *     Called to roll to see if a wandering monster starts up
        !            63:  */
        !            64: void
        !            65: rollwand(void)
        !            66: {
        !            67:     if (++between >= 4)
        !            68:     {
        !            69:        if (roll(1, 6) == 4)
        !            70:        {
        !            71:            wanderer();
        !            72:            kill_daemon(rollwand);
        !            73:            fuse(swander, 0, WANDERTIME, BEFORE);
        !            74:        }
        !            75:        between = 0;
        !            76:     }
        !            77: }
        !            78:
        !            79: /*
        !            80:  * unconfuse:
        !            81:  *     Release the poor player from his confusion
        !            82:  */
        !            83: void
        !            84: unconfuse(void)
        !            85: {
        !            86:     player.t_flags &= ~ISHUH;
        !            87:     msg("you feel less confused now");
        !            88: }
        !            89:
        !            90: /*
        !            91:  * unsee:
        !            92:  *     Turn off the ability to see invisible
        !            93:  */
        !            94: void
        !            95: unsee(void)
        !            96: {
        !            97:     register THING *th;
        !            98:
        !            99:     for (th = mlist; th != NULL; th = next(th))
        !           100:        if (on(*th, ISINVIS) && see_monst(th))
        !           101:        {
        !           102:            move(th->t_pos.y, th->t_pos.x);
        !           103:            addch(th->t_oldch);
        !           104:        }
        !           105:     player.t_flags &= ~CANSEE;
        !           106: }
        !           107:
        !           108: /*
        !           109:  * sight:
        !           110:  *     He gets his sight back
        !           111:  */
        !           112: void
        !           113: sight(void)
        !           114: {
        !           115:     if (on(player, ISBLIND))
        !           116:     {
        !           117:        extinguish(sight);
        !           118:        player.t_flags &= ~ISBLIND;
        !           119:        if (!(proom->r_flags & ISGONE))
        !           120:            enter_room(&hero);
        !           121:        msg("the veil of darkness lifts");
        !           122:     }
        !           123: }
        !           124:
        !           125: /*
        !           126:  * nohaste:
        !           127:  *     End the hasting
        !           128:  */
        !           129: void
        !           130: nohaste(void)
        !           131: {
        !           132:     player.t_flags &= ~ISHASTE;
        !           133:     msg("you feel yourself slowing down");
        !           134: }
        !           135:
        !           136: /*
        !           137:  * stomach:
        !           138:  *     Digest the hero's food
        !           139:  */
        !           140: void
        !           141: stomach(void)
        !           142: {
        !           143:     register int oldfood;
        !           144:
        !           145:     if (food_left <= 0)
        !           146:     {
        !           147:        if (food_left-- < -STARVETIME)
        !           148:            death('s');
        !           149:        /*
        !           150:         * the hero is fainting
        !           151:         */
        !           152:        if (no_command || rnd(5) != 0)
        !           153:            return;
        !           154:        no_command += rnd(8) + 4;
        !           155:        player.t_flags &= ~ISRUN;
        !           156:        running = FALSE;
        !           157:        count = 0;
        !           158:        hungry_state = 3;
        !           159:        if (!terse)
        !           160:            addmsg("you feel too weak from lack of food.  ");
        !           161:        msg("You faint");
        !           162:     }
        !           163:     else
        !           164:     {
        !           165:        oldfood = food_left;
        !           166:        food_left -= ring_eat(LEFT) + ring_eat(RIGHT) + 1 - amulet;
        !           167:
        !           168:        if (food_left < MORETIME && oldfood >= MORETIME)
        !           169:        {
        !           170:            hungry_state = 2;
        !           171:            msg("you are starting to feel weak");
        !           172:        }
        !           173:        else if (food_left < 2 * MORETIME && oldfood >= 2 * MORETIME)
        !           174:        {
        !           175:            hungry_state = 1;
        !           176:            if (!terse)
        !           177:                msg("you are starting to get hungry");
        !           178:            else
        !           179:                msg("getting hungry");
        !           180:        }
        !           181:     }
        !           182: }

CVSweb