Annotation of early-roguelike/rogue3/daemons.c, Revision 1.1
1.1 ! rubenllo 1: /*
! 2: * All the daemon and fuse functions are in here
! 3: *
! 4: * @(#)daemons.c 3.7 (Berkeley) 6/15/81
! 5: *
! 6: * Rogue: Exploring the Dungeons of Doom
! 7: * Copyright (C) 1980, 1981 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: /*
! 17: * doctor:
! 18: * A healing daemon that restors hit points after rest
! 19: */
! 20:
! 21: void
! 22: doctor()
! 23: {
! 24: register int lv, ohp;
! 25:
! 26: lv = pstats.s_lvl;
! 27: ohp = pstats.s_hpt;
! 28: quiet++;
! 29: if (lv < 8)
! 30: {
! 31: if (quiet > 20 - lv*2)
! 32: pstats.s_hpt++;
! 33: }
! 34: else
! 35: if (quiet >= 3)
! 36: pstats.s_hpt += rnd(lv - 7)+1;
! 37: if (ISRING(LEFT, R_REGEN))
! 38: pstats.s_hpt++;
! 39: if (ISRING(RIGHT, R_REGEN))
! 40: pstats.s_hpt++;
! 41: if (ohp != pstats.s_hpt)
! 42: {
! 43: if (pstats.s_hpt > max_hp)
! 44: pstats.s_hpt = max_hp;
! 45: quiet = 0;
! 46: }
! 47: }
! 48:
! 49: /*
! 50: * Swander:
! 51: * Called when it is time to start rolling for wandering monsters
! 52: */
! 53:
! 54: void
! 55: swander()
! 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:
! 65: int between = 0;
! 66:
! 67: void
! 68: rollwand()
! 69: {
! 70: if (++between >= 4)
! 71: {
! 72: if (roll(1, 6) == 4)
! 73: {
! 74: wanderer();
! 75: kill_daemon(rollwand);
! 76: fuse(swander, 0, WANDERTIME, BEFORE);
! 77: }
! 78: between = 0;
! 79: }
! 80: }
! 81:
! 82: /*
! 83: * unconfuse:
! 84: * Release the poor player from his confusion
! 85: */
! 86:
! 87: void
! 88: unconfuse()
! 89: {
! 90: player.t_flags &= ~ISHUH;
! 91: msg("You feel less confused now");
! 92: }
! 93:
! 94:
! 95: /*
! 96: * unsee:
! 97: * He lost his see invisible power
! 98: */
! 99:
! 100: void
! 101: unsee()
! 102: {
! 103: player.t_flags &= ~CANSEE;
! 104: }
! 105:
! 106: /*
! 107: * sight:
! 108: * He gets his sight back
! 109: */
! 110:
! 111: void
! 112: sight()
! 113: {
! 114: if (on(player, ISBLIND))
! 115: {
! 116: extinguish(sight);
! 117: player.t_flags &= ~ISBLIND;
! 118: light(&hero);
! 119: msg("The veil of darkness lifts");
! 120: }
! 121: }
! 122:
! 123: /*
! 124: * nohaste:
! 125: * End the hasting
! 126: */
! 127:
! 128: void
! 129: nohaste()
! 130: {
! 131: player.t_flags &= ~ISHASTE;
! 132: msg("You feel yourself slowing down.");
! 133: }
! 134:
! 135: /*
! 136: * digest the hero's food
! 137: */
! 138: void
! 139: stomach()
! 140: {
! 141: register int oldfood;
! 142:
! 143: if (food_left <= 0)
! 144: {
! 145: /*
! 146: * the hero is fainting
! 147: */
! 148: if (no_command || rnd(100) > 20)
! 149: return;
! 150: no_command = rnd(8)+4;
! 151: if (!terse)
! 152: addmsg("You feel too weak from lack of food. ");
! 153: msg("You faint");
! 154: running = FALSE;
! 155: count = 0;
! 156: hungry_state = 3;
! 157: }
! 158: else
! 159: {
! 160: oldfood = food_left;
! 161: food_left -= ring_eat(LEFT) + ring_eat(RIGHT) + 1 - amulet;
! 162:
! 163: if (food_left < MORETIME && oldfood >= MORETIME)
! 164: {
! 165: msg("You are starting to feel weak");
! 166: hungry_state = 2;
! 167: }
! 168: else if (food_left < 2 * MORETIME && oldfood >= 2 * MORETIME)
! 169: {
! 170: if (!terse)
! 171: msg("You are starting to get hungry");
! 172: else
! 173: msg("Getting hungry");
! 174: hungry_state = 1;
! 175: }
! 176: }
! 177: }
CVSweb