games-request@tekred.TEK.COM (05/11/87)
Submitted by: Tim Stoehr <tims@zues.TEK.COM>
Comp.sources.games: Volume 1, Issue 15
Archive-name: rogue/Part05
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of archive 5 (of 5)."
# Contents: Makefile init.c play.c random.c trap.c
# Wrapped by billr@tekred on Mon May 11 12:19:23 1987
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f Makefile -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"Makefile\"
else
echo shar: Extracting \"Makefile\" \(1769 characters\)
sed "s/^X//" >Makefile <<'END_OF_Makefile'
XROGUE_OBJS = curses.o hit.o init.o inventory.o level.o machdep.o main.o \
X message.o monster.o move.o object.o pack.o play.o random.o ring.o \
X room.o save.o score.o spec_hit.o throw.o trap.o use.o zap.o
X
XCC = cc
X
X# Remember to remove the "-lcurses -ltermlib" if compiling with -DCURSES.
X# Put into CFLAGS those UNIX "defines" which apply to your system. Their
X# should be at least two.
X# -DCURSES enables a self-contained curses emulation package. See notes
X# in curses.c for more info.
X
XCFLAGS = -c -DUNIX -DUNIX_BSD4_2
X
Xrogue: $(ROGUE_OBJS)
X $(CC) $(ROGUE_OBJS) -lcurses -ltermlib -o rogue
X
Xcurses.o: curses.c rogue.h
X $(CC) $(CFLAGS) curses.c
X
Xhit.o: hit.c rogue.h
X $(CC) $(CFLAGS) hit.c
X
Xinit.o: init.c rogue.h
X $(CC) $(CFLAGS) init.c
X
Xinventory.o: inventory.c rogue.h
X $(CC) $(CFLAGS) inventory.c
X
Xlevel.o: level.c rogue.h
X $(CC) $(CFLAGS) level.c
X
Xmachdep.o: machdep.c rogue.h
X $(CC) $(CFLAGS) machdep.c
X
Xmain.o: main.c rogue.h
X $(CC) $(CFLAGS) main.c
X
Xmessage.o: message.c rogue.h
X $(CC) $(CFLAGS) message.c
X
Xmonster.o: monster.c rogue.h
X $(CC) $(CFLAGS) monster.c
X
Xmove.o: move.c rogue.h
X $(CC) $(CFLAGS) move.c
X
Xobject.o: object.c rogue.h
X $(CC) $(CFLAGS) object.c
X
Xpack.o: pack.c rogue.h
X $(CC) $(CFLAGS) pack.c
X
Xplay.o: play.c rogue.h
X $(CC) $(CFLAGS) play.c
X
Xrandom.o: random.c
X $(CC) $(CFLAGS) random.c
X
Xring.o: ring.c rogue.h
X $(CC) $(CFLAGS) ring.c
X
Xroom.o: room.c rogue.h
X $(CC) $(CFLAGS) room.c
X
Xsave.o: save.c rogue.h
X $(CC) $(CFLAGS) save.c
X
Xscore.o: score.c rogue.h
X $(CC) $(CFLAGS) score.c
X
Xspec_hit.o: spec_hit.c rogue.h
X $(CC) $(CFLAGS) spec_hit.c
X
Xthrow.o: throw.c rogue.h
X $(CC) $(CFLAGS) throw.c
X
Xtrap.o: trap.c rogue.h
X $(CC) $(CFLAGS) trap.c
X
Xuse.o: use.c rogue.h
X $(CC) $(CFLAGS) use.c
X
Xzap.o: zap.c rogue.h
X $(CC) $(CFLAGS) zap.c
END_OF_Makefile
if test 1769 -ne `wc -c <Makefile`; then
echo shar: \"Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f init.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"init.c\"
else
echo shar: Extracting \"init.c\" \(4987 characters\)
sed "s/^X//" >init.c <<'END_OF_init.c'
X/*
X * init.c
X *
X * This source herein may be modified and/or distributed by anybody who
X * so desires, with the following restrictions:
X * 1.) No portion of this notice shall be removed.
X * 2.) Credit shall not be taken for the creation of this source.
X * 3.) This code is not to be traded, sold, or used for personal
X * gain or profit.
X *
X */
X
X#ifndef CURSES
X#include <curses.h>
X#endif CURSES
X#include <stdio.h>
X#include "rogue.h"
X
Xchar login_name[30];
Xchar *nick_name = "";
Xchar *restore_file = 0;
Xboolean cant_int = 0, did_int = 0, score_only, init_curses = 0;
Xboolean save_is_interactive = 1;
Xboolean ask_quit = 1, show_skull = 1;
Xchar *error_file = "rogue.esave";
Xchar *byebye_string = "Okay, bye bye!";
X
Xextern char *fruit;
Xextern char *save_file;
Xextern short party_room, party_counter;
Xextern boolean jump;
X
Xinit(argc, argv)
Xint argc;
Xchar *argv[];
X{
X char *pn;
X int seed;
X
X do_args(argc, argv);
X do_opts();
X
X pn = md_gln();
X if ((!pn) || (strlen(pn) >= 30)) {
X clean_up("Hey! Who are you?");
X }
X (void) strcpy(login_name, pn);
X
X if (!score_only && !restore_file) {
X printf("Hello %s, just a moment while I dig the dungeon...",
X ((nick_name[0]) ? nick_name : login_name));
X fflush(stdout);
X }
X
X initscr();
X if ((LINES < DROWS) || (COLS < DCOLS)) {
X clean_up("must be played on 24 x 80 screen");
X }
X start_window();
X init_curses = 1;
X
X md_heed_signals();
X
X if (score_only) {
X put_scores((object *) 0, 0);
X }
X seed = md_gseed();
X (void) srrandom(seed);
X if (restore_file) {
X restore(restore_file);
X return(1);
X }
X mix_colors();
X get_wand_and_ring_materials();
X make_scroll_titles();
X
X level_objects.next_object = 0;
X level_monsters.next_monster = 0;
X player_init();
X party_counter = get_rand(1, PARTY_TIME);
X ring_stats(0);
X return(0);
X}
X
Xplayer_init()
X{
X object *obj;
X
X rogue.pack.next_object = 0;
X
X obj = alloc_object();
X get_food(obj, 1);
X (void) add_to_pack(obj, &rogue.pack, 1);
X
X obj = alloc_object(); /* initial armor */
X obj->what_is = ARMOR;
X obj->which_kind = RINGMAIL;
X obj->class = RINGMAIL+2;
X obj->is_protected = 0;
X obj->d_enchant = 1;
X (void) add_to_pack(obj, &rogue.pack, 1);
X do_wear(obj);
X
X obj = alloc_object(); /* initial weapons */
X obj->what_is = WEAPON;
X obj->which_kind = MACE;
X obj->damage = "2d3";
X obj->hit_enchant = obj->d_enchant = 1;
X obj->identified = 1;
X (void) add_to_pack(obj, &rogue.pack, 1);
X do_wield(obj);
X
X obj = alloc_object();
X obj->what_is = WEAPON;
X obj->which_kind = BOW;
X obj->damage = "1d2";
X obj->hit_enchant = 1;
X obj->d_enchant = 0;
X obj->identified = 1;
X (void) add_to_pack(obj, &rogue.pack, 1);
X
X obj = alloc_object();
X obj->what_is = WEAPON;
X obj->which_kind = ARROW;
X obj->quantity = get_rand(25, 35);
X obj->damage = "1d2";
X obj->hit_enchant = 0;
X obj->d_enchant = 0;
X obj->identified = 1;
X (void) add_to_pack(obj, &rogue.pack, 1);
X}
X
Xclean_up(estr)
Xchar *estr;
X{
X if (save_is_interactive) {
X if (init_curses) {
X move(DROWS-1, 0);
X refresh();
X stop_window();
X }
X printf("\n%s\n", estr);
X }
X md_exit(0);
X}
X
Xstart_window()
X{
X crmode();
X noecho();
X nonl();
X md_control_keybord(0);
X}
X
Xstop_window()
X{
X endwin();
X md_control_keybord(1);
X}
X
Xbyebye()
X{
X md_ignore_signals();
X if (ask_quit) {
X quit(1);
X } else {
X clean_up(byebye_string);
X }
X md_heed_signals();
X}
X
Xonintr()
X{
X md_ignore_signals();
X if (cant_int) {
X did_int = 1;
X } else {
X check_message();
X message("interrupt", 1);
X }
X md_heed_signals();
X}
X
Xerror_save()
X{
X save_is_interactive = 0;
X save_into_file(error_file);
X clean_up("");
X}
X
Xdo_args(argc, argv)
Xint argc;
Xchar *argv[];
X{
X short i, j;
X
X for (i = 1; i < argc; i++) {
X if (argv[i][0] == '-') {
X for (j = 1; argv[i][j]; j++) {
X switch(argv[i][j]) {
X case 's':
X score_only = 1;
X break;
X }
X }
X } else {
X restore_file = argv[i];
X }
X }
X}
X
Xdo_opts()
X{
X char *eptr;
X
X if (eptr = md_getenv("ROGUEOPTS")) {
X for (;;) {
X while ((*eptr) == ' ') {
X eptr++;
X }
X if (!(*eptr)) {
X break;
X }
X if (!strncmp(eptr, "fruit=", 6)) {
X eptr += 6;
X env_get_value(&fruit, eptr, 1);
X } else if (!strncmp(eptr, "file=", 5)) {
X eptr += 5;
X env_get_value(&save_file, eptr, 0);
X } else if (!strncmp(eptr, "nojump", 6)) {
X jump = 0;
X } else if (!strncmp(eptr, "name=", 5)) {
X eptr += 5;
X env_get_value(&nick_name, eptr, 0);
X } else if (!strncmp(eptr, "noaskquit", 9)) {
X ask_quit = 0;
X } else if (!strncmp(eptr, "noskull", 5) ||
X !strncmp(eptr,"notomb", 6)) {
X show_skull = 0;
X }
X while ((*eptr) && (*eptr != ',')) {
X eptr++;
X }
X if (!(*(eptr++))) {
X break;
X }
X }
X }
X}
X
Xenv_get_value(s, e, add_blank)
Xchar **s, *e;
Xboolean add_blank;
X{
X short i = 0;
X char *t;
X
X t = e;
X
X while ((*e) && (*e != ',')) {
X if (*e == ':') {
X *e = ';'; /* ':' reserved for score file purposes */
X }
X e++;
X if (++i >= 30) {
X break;
X }
X }
X if (!(*s = md_malloc(i + (add_blank ? 2 : 1)))) {
X clean_up("cannot alloc() memory");
X }
X (void) strncpy(*s, t, i);
X if (add_blank) {
X (*s)[i++] = ' ';
X }
X (*s)[i] = '\0';
X}
END_OF_init.c
if test 4987 -ne `wc -c <init.c`; then
echo shar: \"init.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f play.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"play.c\"
else
echo shar: Extracting \"play.c\" \(3756 characters\)
sed "s/^X//" >play.c <<'END_OF_play.c'
X/*
X * play.c
X *
X * This source herein may be modified and/or distributed by anybody who
X * so desires, with the following restrictions:
X * 1.) No portion of this notice shall be removed.
X * 2.) Credit shall not be taken for the creation of this source.
X * 3.) This code is not to be traded, sold, or used for personal
X * gain or profit.
X *
X */
X
X#ifndef CURSES
X#include <curses.h>
X#endif CURSES
X#include "rogue.h"
X
Xboolean interrupted = 0;
Xchar *unknown_command = "unknown command";
X
Xextern short party_room, bear_trap;
Xextern char hit_message[];
Xextern boolean wizard, trap_door;
X
Xplay_level()
X{
X short ch;
X int count;
X
X for (;;) {
X interrupted = 0;
X if (hit_message[0]) {
X message(hit_message, 1);
X hit_message[0] = 0;
X }
X if (trap_door) {
X trap_door = 0;
X return;
X }
X move(rogue.row, rogue.col);
X refresh();
X
X ch = rgetchar();
X check_message();
X count = 0;
XCH:
X switch(ch) {
X case '.':
X rest((count > 0) ? count : 1);
X break;
X case 's':
X search(((count > 0) ? count : 1), 0);
X break;
X case 'i':
X inventory(&rogue.pack, ALL_OBJECTS);
X break;
X case 'f':
X fight(0);
X break;
X case 'F':
X fight(1);
X break;
X case 'h':
X case 'j':
X case 'k':
X case 'l':
X case 'y':
X case 'u':
X case 'n':
X case 'b':
X (void) one_move_rogue(ch, 1);
X break;
X case 'H':
X case 'J':
X case 'K':
X case 'L':
X case 'B':
X case 'Y':
X case 'U':
X case 'N':
X case '\010':
X case '\012':
X case '\013':
X case '\014':
X case '\031':
X case '\025':
X case '\016':
X case '\002':
X multiple_move_rogue(ch);
X break;
X case 'e':
X eat();
X break;
X case 'q':
X quaff();
X break;
X case 'r':
X read_scroll();
X break;
X case 'm':
X move_onto();
X break;
X case 'd':
X drop();
X break;
X case 'P':
X put_on_ring();
X break;
X case 'R':
X remove_ring();
X break;
X case '\020':
X remessage();
X break;
X case '\027':
X wizardize();
X break;
X case '>':
X if (drop_check()) {
X return;
X }
X break;
X case '<':
X if (check_up()) {
X return;
X }
X break;
X case ')':
X case ']':
X inv_armor_weapon(ch == ')');
X break;
X case '=':
X inv_rings();
X break;
X case '^':
X id_trap();
X break;
X case 'I':
X single_inv(0);
X break;
X case 'T':
X take_off();
X break;
X case 'W':
X wear();
X break;
X case 'w':
X wield();
X break;
X case 'c':
X call_it();
X break;
X case 'z':
X zapp();
X break;
X case 't':
X throw();
X break;
X case 'v':
X message("rogue-clone: Version II. (Tim Stoehr was here), tektronix!zeus!tims", 0);
X break;
X case 'Q':
X quit(0);
X case '0':
X case '1':
X case '2':
X case '3':
X case '4':
X case '5':
X case '6':
X case '7':
X case '8':
X case '9':
X move(rogue.row, rogue.col);
X refresh();
X do {
X if (count < 100) {
X count = (10 * count) + (ch - '0');
X }
X ch = rgetchar();
X } while (is_digit(ch));
X if (ch != CANCEL) {
X goto CH;
X }
X break;
X case ' ':
X break;
X case '\011':
X if (wizard) {
X inventory(&level_objects, ALL_OBJECTS);
X } else {
X message(unknown_command, 0);
X }
X break;
X case '\023':
X if (wizard) {
X draw_magic_map();
X } else {
X message(unknown_command, 0);
X }
X break;
X case '\024':
X if (wizard) {
X show_traps();
X } else {
X message(unknown_command, 0);
X }
X break;
X case '\017':
X if (wizard) {
X show_objects();
X } else {
X message(unknown_command, 0);
X }
X break;
X case '\001':
X show_average_hp();
X break;
X case '\003':
X if (wizard) {
X new_object_for_wizard();
X } else {
X message(unknown_command, 0);
X }
X break;
X case '\015':
X if (wizard) {
X show_monsters();
X } else {
X message(unknown_command, 0);
X }
X break;
X case 'S':
X save_game();
X break;
X default:
X message(unknown_command, 0);
X break;
X }
X }
X}
END_OF_play.c
if test 3756 -ne `wc -c <play.c`; then
echo shar: \"play.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f random.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"random.c\"
else
echo shar: Extracting \"random.c\" \(1555 characters\)
sed "s/^X//" >random.c <<'END_OF_random.c'
Xstatic long rntb[32] = {
X 3, 0x9a319039, 0x32d9c024, 0x9b663182, 0x5da1f342,
X 0xde3b81e0, 0xdf0a6fb5, 0xf103bc02, 0x48f340fb, 0x7449e56b,
X 0xbeb1dbb0, 0xab5c5918, 0x946554fd, 0x8c2e680f, 0xeb3d799f,
X 0xb11ee0b7, 0x2d436b86, 0xda672e2a, 0x1588ca88, 0xe369735d,
X 0x904f35f7, 0xd7158fd6, 0x6fa6f051, 0x616e6b96, 0xac94efdc,
X 0x36413f93, 0xc622c298, 0xf5a42ab8, 0x8a88d77b, 0xf5ad9d0e,
X 0x8999220b, 0x27fb47b9
X};
X
Xstatic long *fptr = &rntb[4];
Xstatic long *rptr = &rntb[1];
Xstatic long *state = &rntb[1];
Xstatic int rand_type = 3;
Xstatic int rand_deg = 31;
Xstatic int rand_sep = 3;
Xstatic long *end_ptr = &rntb[32];
X
Xsrrandom(x)
Xint x;
X{
X register int i;
X long rrandom();
X
X state[0] = (long) x;
X if (rand_type != 0) {
X for (i = 1; i < rand_deg; i++) {
X state[i] = 1103515245 * state[i - 1] + 12345;
X }
X fptr = &state[rand_sep];
X rptr = &state[0];
X for (i = 0; i < 10*rand_deg; i++) {
X (void) rrandom();
X }
X }
X}
X
Xlong
Xrrandom()
X{
X long i;
X
X if (rand_type == 0) {
X i = state[0] = (state[0]*1103515245 + 12345) & 0x7fffffff;
X } else {
X *fptr += *rptr;
X i = (*fptr >> 1) & 0x7fffffff;
X if (++fptr >= end_ptr) {
X fptr = state;
X ++rptr;
X } else {
X if (++rptr >= end_ptr) {
X rptr = state;
X }
X }
X }
X return(i);
X}
X
Xget_rand(x, y)
Xregister int x, y;
X{
X register int r, t;
X
X if (x > y) {
X t = y;
X y = x;
X x = t;
X }
X r = (int) rrandom();
X r = (r % ((y-x)+1)) + x;
X return(r);
X}
X
Xrand_percent(percentage)
Xregister int percentage;
X{
X return(get_rand(1, 100) <= percentage);
X}
X
Xcoin_toss()
X{
X
X return(((rrandom() & 01) ? 1 : 0));
X}
END_OF_random.c
if test 1555 -ne `wc -c <random.c`; then
echo shar: \"random.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f trap.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"trap.c\"
else
echo shar: Extracting \"trap.c\" \(5280 characters\)
sed "s/^X//" >trap.c <<'END_OF_trap.c'
X/*
X * trap.c
X *
X * This source herein may be modified and/or distributed by anybody who
X * so desires, with the following restrictions:
X * 1.) No portion of this notice shall be removed.
X * 2.) Credit shall not be taken for the creation of this source.
X * 3.) This code is not to be traded, sold, or used for personal
X * gain or profit.
X *
X */
X
X#ifndef CURSES
X#include <curses.h>
X#endif CURSES
X#include "rogue.h"
X
Xtrap traps[MAX_TRAPS];
Xboolean trap_door = 0;
Xshort bear_trap = 0;
X
Xchar *trap_strings[TRAPS * 2] = {
X "trap door",
X "you fell down a trap",
X "bear trap",
X "you are caught in a bear trap",
X "teleport trap",
X "teleport",
X "poison dart trap",
X "a small dart just hit you in the shoulder",
X "sleeping gas trap",
X "a strange white mist envelops you and you fall asleep",
X "rust trap",
X "a gush of water hits you on the head"
X};
X
Xextern short cur_level, party_room;
Xextern char *new_level_message;
Xextern boolean interrupted;
Xextern short ring_exp;
Xextern boolean sustain_strength;
Xextern short blind;
X
Xtrap_at(row, col)
Xregister row, col;
X{
X short i;
X
X for (i = 0; ((i < MAX_TRAPS) && (traps[i].trap_type != NO_TRAP)); i++) {
X if ((traps[i].trap_row == row) && (traps[i].trap_col == col)) {
X return(traps[i].trap_type);
X }
X }
X return(NO_TRAP);
X}
X
Xtrap_player(row, col)
Xshort row, col;
X{
X short t;
X
X if ((t = trap_at(row, col)) == NO_TRAP) {
X return;
X }
X dungeon[row][col] &= (~HIDDEN);
X if (rand_percent(rogue.exp + ring_exp)) {
X message("the trap failed", 1);
X return;
X }
X switch(t) {
X case TRAP_DOOR:
X trap_door = 1;
X new_level_message = trap_strings[(t*2)+1];
X break;
X case BEAR_TRAP:
X message(trap_strings[(t*2)+1], 1);
X bear_trap = get_rand(4, 7);
X break;
X case TELE_TRAP:
X mvaddch(rogue.row, rogue.col, '^');
X tele();
X break;
X case DART_TRAP:
X message(trap_strings[(t*2)+1], 1);
X rogue.hp_current -= get_damage("1d6", 1);
X if (rogue.hp_current <= 0) {
X rogue.hp_current = 0;
X }
X if ((!sustain_strength) && rand_percent(40) &&
X (rogue.str_current >= 3)) {
X rogue.str_current--;
X }
X print_stats(STAT_HP | STAT_STRENGTH);
X if (rogue.hp_current <= 0) {
X killed_by((object *) 0, POISON_DART);
X }
X break;
X case SLEEPING_GAS_TRAP:
X message(trap_strings[(t*2)+1], 1);
X take_a_nap();
X break;
X case RUST_TRAP:
X message(trap_strings[(t*2)+1], 1);
X rust((object *) 0);
X break;
X }
X}
X
Xadd_traps()
X{
X short i, n, tries = 0;
X short row, col;
X
X if (cur_level <= 2) {
X n = 0;
X } else if (cur_level <= 7) {
X n = get_rand(0, 2);
X } else if (cur_level <= 11) {
X n = get_rand(1, 2);
X } else if (cur_level <= 16) {
X n = get_rand(2, 3);
X } else if (cur_level <= 21) {
X n = get_rand(2, 4);
X } else if (cur_level <= (AMULET_LEVEL + 2)) {
X n = get_rand(3, 5);
X } else {
X n = get_rand(5, MAX_TRAPS);
X }
X for (i = 0; i < n; i++) {
X traps[i].trap_type = get_rand(0, (TRAPS - 1));
X
X if ((i == 0) && (party_room != NO_ROOM)) {
X do {
X row = get_rand((rooms[party_room].top_row+1),
X (rooms[party_room].bottom_row-1));
X col = get_rand((rooms[party_room].left_col+1),
X (rooms[party_room].right_col-1));
X tries++;
X } while (((dungeon[row][col] & (OBJECT|STAIRS|TRAP|TUNNEL)) ||
X (dungeon[row][col] == NOTHING)) && (tries < 15));
X if (tries >= 15) {
X gr_row_col(&row, &col, (FLOOR | MONSTER));
X }
X } else {
X gr_row_col(&row, &col, (FLOOR | MONSTER));
X }
X traps[i].trap_row = row;
X traps[i].trap_col = col;
X dungeon[row][col] |= (TRAP | HIDDEN);
X }
X}
X
Xid_trap()
X{
X short dir, row, col;
X short t;
X
X message("direction? ", 0);
X
X while (!is_direction(dir = rgetchar())) {
X sound_bell();
X }
X check_message();
X
X if (dir == CANCEL) {
X return;
X }
X row = rogue.row;
X col = rogue.col;
X
X get_dir_rc(dir, &row, &col, 0);
X
X if ((dungeon[row][col] & TRAP) && (!(dungeon[row][col] & HIDDEN))) {
X t = trap_at(row, col);
X message(trap_strings[t*2], 0);
X } else {
X message("no trap there", 0);
X }
X}
X
Xshow_traps()
X{
X short i, j;
X
X for (i = 0; i < DROWS; i++) {
X for (j = 0; j < DCOLS; j++) {
X if (dungeon[i][j] & TRAP) {
X mvaddch(i, j, '^');
X }
X }
X }
X}
X
Xsearch(n, is_auto)
Xshort n;
Xboolean is_auto;
X{
X short s, i, j, row, col, t;
X short shown = 0, found = 0;
X static boolean reg_search;
X
X for (i = -1; i <= 1; i++) {
X for (j = -1; j <= 1; j++) {
X row = rogue.row + i;
X col = rogue.col + j;
X if ((row < MIN_ROW) || (row >= (DROWS-1)) ||
X (col < 0) || (col >= DCOLS)) {
X continue;
X }
X if (dungeon[row][col] & HIDDEN) {
X found++;
X }
X }
X }
X for (s = 0; s < n; s++) {
X for (i = -1; i <= 1; i++) {
X for (j = -1; j <= 1; j++) {
X row = rogue.row + i;
X col = rogue.col + j ;
X if ((row < MIN_ROW) || (row >= (DROWS-1)) ||
X (col < 0) || (col >= DCOLS)) {
X continue;
X }
X if (dungeon[row][col] & HIDDEN) {
X if (rand_percent(17 + (rogue.exp + ring_exp))) {
X dungeon[row][col] &= (~HIDDEN);
X if ((!blind) && ((row != rogue.row) ||
X (col != rogue.col))) {
X mvaddch(row, col, get_dungeon_char(row, col));
X }
X shown++;
X if (dungeon[row][col] & TRAP) {
X t = trap_at(row, col);
X message(trap_strings[t*2], 1);
X }
X }
X }
X if (((shown == found) && (found > 0)) || interrupted) {
X return;
X }
X }
X }
X if ((!is_auto) && (reg_search = !reg_search)) {
X (void) reg_move();
X }
X }
X}
END_OF_trap.c
if test 5280 -ne `wc -c <trap.c`; then
echo shar: \"trap.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 5 \(of 5\).
cp /dev/null ark5isdone
MISSING=""
for I in 1 2 3 4 5 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 5 archives.
rm -f ark[1-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0