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