[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

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