#! /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 3 (of 18)."
# Contents: UPDATE3 patches03b sys/share/lev_comp.h
# Wrapped by billr@saab on Tue Jul 20 14:57:18 1993
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'UPDATE3' -a "${1}" != "-c" ; then
echo shar: Renaming existing file \"'UPDATE3'\" to \"'UPDATE3.orig'\"
mv -f 'UPDATE3' 'UPDATE3.orig'
fi
echo shar: Extracting \"'UPDATE3'\" \(658 characters\)
sed "s/^X//" >'UPDATE3' <<'END_OF_FILE'
XMac windowing was further revised, and the Macintosh code was ported to
XThink C by Barton House. Amiga windowing was also touched up.
X
XThe MSDOS black/gray/white intensities were changed again to avoid
Xconfusing displays on some PC hardware. New video options were added
Xto allow configuration around any other oddities.
X
XBugs were fixed. In particular, an elusive bug dealing with horns of
Xplenty was finally found, along with a couple VMS-specific ones such as
Xfetching some bones files. A number of messages were revised and updated
Xas well.
X
XBones files and saved NetHack 3.1.2 games will not work with NetHack 3.1.3.
XDelete them, to avoid problems.
END_OF_FILE
if test 658 -ne `wc -c <'UPDATE3'`; then
echo shar: \"'UPDATE3'\" unpacked with wrong size!
fi
# end of 'UPDATE3'
if test -f 'patches03b' -a "${1}" != "-c" ; then
echo shar: Renaming existing file \"'patches03b'\" to \"'patches03b.orig'\"
mv -f 'patches03b' 'patches03b.orig'
fi
echo shar: Extracting \"'patches03b'\" \(54812 characters\)
sed "s/^X//" >'patches03b' <<'END_OF_FILE'
X*** /tmp/da21027 Mon Jul 12 17:32:31 1993
X--- src/engrave.c Fri Jul 2 15:24:48 1993
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)engrave.c 3.1 92/05/18 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)engrave.c 3.1 92/06/16 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 61,66 ****
X--- 61,68 ----
X return "ice";
X else if (is_lava(x,y))
X return "lava";
X+ else if (lev->typ == DRAWBRIDGE_DOWN)
X+ return "bridge";
X else if ((IS_ROOM(lev->typ) && !Is_earthlevel(&u.uz)) ||
X IS_WALL(lev->typ) || IS_DOOR(lev->typ) || lev->typ == SDOOR)
X return "floor";
X***************
X*** 441,447 ****
X case FOOD_CLASS:
X case SCROLL_CLASS:
X case SPBOOK_CLASS:
X! Your("%s would get too dirty.", xname(otmp));
X ptext = FALSE;
X break;
X
X--- 443,450 ----
X case FOOD_CLASS:
X case SCROLL_CLASS:
X case SPBOOK_CLASS:
X! Your("%s would get %s.", xname(otmp),
X! is_ice(u.ux,u.uy) ? "all frosty" : "too dirty");
X ptext = FALSE;
X break;
X
X***************
X*** 647,659 ****
X if (!Blind)
X You("wipe out the message here.");
X else
X! Your("%s gets dusty.", xname(otmp));
X dengr = TRUE;
X } else
X Your("%s can't wipe out this engraving.",
X xname(otmp));
X else
X! Your("%s gets dusty.", xname(otmp));
X break;
X default:
X break;
X--- 650,665 ----
X if (!Blind)
X You("wipe out the message here.");
X else
X! Your("%s gets %s.", xname(otmp),
X! is_ice(u.ux,u.uy) ?
X! "frosty" : "dusty");
X dengr = TRUE;
X } else
X Your("%s can't wipe out this engraving.",
X xname(otmp));
X else
X! Your("%s gets %s.", xname(otmp),
X! is_ice(u.ux,u.uy) ? "frosty" : "dusty");
X break;
X default:
X break;
X*** /tmp/da21035 Mon Jul 12 17:32:35 1993
X--- src/exper.c Wed Jul 7 16:24:25 1993
X***************
X*** 16,22 ****
X #else
X if(lev < 10) return (10L*(1L << lev));
X if(lev < 20) return (10000L*(1L << (lev-10)));
X! return (10000000L*(lev-19));
X #endif
X }
X
X--- 16,22 ----
X #else
X if(lev < 10) return (10L*(1L << lev));
X if(lev < 20) return (10000L*(1L << (lev-10)));
X! return((long)(10000000L*(lev-19)));
X #endif
X }
X
X*** /tmp/da21059 Mon Jul 12 17:32:40 1993
X--- src/files.c Wed Jul 7 16:24:27 1993
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)files.c 3.1 93/02/20 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)files.c 3.1 93/06/27 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 927,936 ****
X /* monsyms[0] is unused */
X (void) get_uchars(fp, buf, bufp, &(monsyms[1]),
X MAXMCLASSES-1, "MONSTERS");
X #ifdef AMIGA
X } else if (!strncmpi(buf, "FONT", 4)) {
X char *t;
X- int size;
X extern void amii_set_text_font( char *, int );
X
X if( t = strchr( buf+5, ':' ) )
X--- 927,949 ----
X /* monsyms[0] is unused */
X (void) get_uchars(fp, buf, bufp, &(monsyms[1]),
X MAXMCLASSES-1, "MONSTERS");
X+ #ifdef VIDEOSHADES
X+ } else if (!strncmpi(buf, "VIDEOCOLORS", 6)) {
X+ uchar transcolors[MAXCOLORS];
X+ int len;
X+
X+ len = get_uchars(fp, buf, bufp, transcolors,
X+ MAXCOLORS, "VIDEOCOLORS");
X+ assign_videocolors(transcolors, len);
X+ } else if (!strncmpi(buf, "VIDEOSHADES", 6)) {
X+ int len;
X+
X+ len = strlen(bufp);
X+ assign_videoshades(bufp, len);
X+ #endif
X #ifdef AMIGA
X } else if (!strncmpi(buf, "FONT", 4)) {
X char *t;
X extern void amii_set_text_font( char *, int );
X
X if( t = strchr( buf+5, ':' ) )
X***************
X*** 941,946 ****
X--- 954,961 ----
X }
X } else if (!strncmpi(buf, "PATH", 4)) {
X (void) strncpy(PATH, bufp, PATHLEN);
X+ #endif
X+ #ifdef AMIGA
X } else if (!strncmpi(buf, "PENS", 3)) {
X # ifdef AMII_GRAPHICS
X int i;
X*** /tmp/da21067 Mon Jul 12 17:32:43 1993
X--- src/fountain.c Mon Jul 12 13:45:10 1993
X***************
X*** 206,212 ****
X if (++i >= A_MAX) i = 0;
X }
X display_nhwindow(WIN_MESSAGE, FALSE);
X! pline("A wisp of vapor escapes the fountain....");
X exercise(A_WIS, TRUE);
X levl[u.ux][u.uy].blessedftn = 0;
X return;
X--- 206,212 ----
X if (++i >= A_MAX) i = 0;
X }
X display_nhwindow(WIN_MESSAGE, FALSE);
X! pline("A wisp of vapor escapes the fountain...");
X exercise(A_WIS, TRUE);
X levl[u.ux][u.uy].blessedftn = 0;
X return;
X***************
X*** 222,228 ****
X
X case 19: /* Self-knowledge */
X
X! You("feel self-knowledgeable....");
X display_nhwindow(WIN_MESSAGE, FALSE);
X enlightenment(FALSE);
X exercise(A_WIS, TRUE);
X--- 222,228 ----
X
X case 19: /* Self-knowledge */
X
X! You("feel self-knowledgeable...");
X display_nhwindow(WIN_MESSAGE, FALSE);
X enlightenment(FALSE);
X exercise(A_WIS, TRUE);
X***************
X*** 521,529 ****
X #endif
X break;
X /* more odd messages --JJB */
X! case 11: You("hear clanking from the pipes....");
X break;
X! case 12: You("hear snatches of song from among the sewers....");
X break;
X case 19: if (Hallucination) {
X pline("From the murky drain, a hand reaches up... --oops--");
X--- 521,529 ----
X #endif
X break;
X /* more odd messages --JJB */
X! case 11: You("hear clanking from the pipes...");
X break;
X! case 12: You("hear snatches of song from among the sewers...");
X break;
X case 19: if (Hallucination) {
X pline("From the murky drain, a hand reaches up... --oops--");
X*** /tmp/da21075 Mon Jul 12 17:32:45 1993
X--- src/hack.c Wed Jul 7 16:24:29 1993
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)hack.c 3.1 93/05/18 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)hack.c 3.1 93/06/15 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 126,133 ****
X }
X continue;
X case TRAPDOOR:
X! pline("%s falls into and plugs a hole in the ground!",
X! The(xname(otmp)));
X deltrap(ttmp);
X delobj(otmp);
X bury_objs(rx, ry);
X--- 126,133 ----
X }
X continue;
X case TRAPDOOR:
X! pline("%s falls into and plugs a hole in the %s!",
X! The(xname(otmp)), surface(rx, ry));
X deltrap(ttmp);
X delobj(otmp);
X bury_objs(rx, ry);
X***************
X*** 394,400 ****
X register xchar x,y;
X /* intended to be called only on ROCKs */
X {
X! return (!(IS_STWALL(levl[x][y].typ) && (levl[x][y].diggable & W_NONDIGGABLE)));
X }
X
X boolean
X--- 394,400 ----
X register xchar x,y;
X /* intended to be called only on ROCKs */
X {
X! return((boolean)(!(IS_STWALL(levl[x][y].typ) && (levl[x][y].diggable & W_NONDIGGABLE))));
X }
X
X boolean
X***************
X*** 401,407 ****
X may_passwall(x,y)
X register xchar x,y;
X {
X! return (!(IS_STWALL(levl[x][y].typ) && (levl[x][y].diggable & W_NONPASSWALL)));
X }
X
X #endif /* OVLB */
X--- 401,407 ----
X may_passwall(x,y)
X register xchar x,y;
X {
X! return((boolean)(!(IS_STWALL(levl[x][y].typ) && (levl[x][y].diggable & W_NONPASSWALL))));
X }
X
X #endif /* OVLB */
X***************
X*** 411,422 ****
X bad_rock(x,y)
X register xchar x,y;
X {
X! return(IS_ROCK(levl[x][y].typ)
X #ifdef POLYSELF
X && !(passes_walls(uasmon) && may_passwall(x,y))
X && (!tunnels(uasmon) || needspick(uasmon) || !may_dig(x,y))
X #endif
X! );
X }
X
X boolean
X--- 411,422 ----
X bad_rock(x,y)
X register xchar x,y;
X {
X! return((boolean)(IS_ROCK(levl[x][y].typ)
X #ifdef POLYSELF
X && !(passes_walls(uasmon) && may_passwall(x,y))
X && (!tunnels(uasmon) || needspick(uasmon) || !may_dig(x,y))
X #endif
X! ));
X }
X
X boolean
X***************
X*** 423,429 ****
X invocation_pos(x, y)
X xchar x, y;
X {
X! return(Invocation_lev(&u.uz) && x == inv_pos.x && y == inv_pos.y);
X }
X
X #endif /* OVL1 */
X--- 423,429 ----
X invocation_pos(x, y)
X xchar x, y;
X {
X! return((boolean)(Invocation_lev(&u.uz) && x == inv_pos.x && y == inv_pos.y));
X }
X
X #endif /* OVL1 */
X***************
X*** 954,961 ****
X if (!is_pool(u.ux,u.uy)) {
X if (Is_waterlevel(&u.uz))
X You("pop into an air bubble.");
X else
X! You("are on solid ground again.");
X }
X else if (Is_waterlevel(&u.uz))
X goto stillinwater;
X--- 954,964 ----
X if (!is_pool(u.ux,u.uy)) {
X if (Is_waterlevel(&u.uz))
X You("pop into an air bubble.");
X+ else if (is_lava(u.ux, u.uy))
X+ You("leave the water..."); /* oops! */
X else
X! You("are on solid %s again.",
X! is_ice(u.ux, u.uy) ? "ice" : "land");
X }
X else if (Is_waterlevel(&u.uz))
X goto stillinwater;
X***************
X*** 1081,1087 ****
X
X min_x = x - 1;
X max_x = x + 1;
X! if (x < 0)
X min_x += step;
X else
X if (x >= COLNO)
X--- 1084,1090 ----
X
X min_x = x - 1;
X max_x = x + 1;
X! if (x < 1)
X min_x += step;
X else
X if (x >= COLNO)
X*** /tmp/da21083 Mon Jul 12 17:32:49 1993
X--- src/hacklib.c Wed Jul 7 16:24:32 1993
X***************
X*** 50,56 ****
X digit(c) /* is 'c' a digit? */
X char c;
X {
X! return '0' <= c && c <= '9';
X }
X
X boolean
X--- 50,56 ----
X digit(c) /* is 'c' a digit? */
X char c;
X {
X! return((boolean)('0' <= c && c <= '9'));
X }
X
X boolean
X***************
X*** 57,63 ****
X letter(c) /* is 'c' a letter? note: '@' classed as letter */
X char c;
X {
X! return ('@' <= c && c <= 'Z') || ('a' <= c && c <= 'z');
X }
X #endif /* OVLB */
X
X--- 57,63 ----
X letter(c) /* is 'c' a letter? note: '@' classed as letter */
X char c;
X {
X! return((boolean)(('@' <= c && c <= 'Z') || ('a' <= c && c <= 'z')));
X }
X #endif /* OVLB */
X
X***************
X*** 66,72 ****
X highc(c) /* force 'c' into uppercase */
X char c;
X {
X! return ('a' <= c && c <= 'z') ? (c & ~040) : c;
X }
X
X char
X--- 66,72 ----
X highc(c) /* force 'c' into uppercase */
X char c;
X {
X! return((char)(('a' <= c && c <= 'z') ? (c & ~040) : c));
X }
X
X char
X***************
X*** 73,79 ****
X lowc(c) /* force 'c' into lowercase */
X char c;
X {
X! return ('A' <= c && c <= 'Z') ? (c | 040) : c;
X }
X #endif /* OVL1 */
X
X--- 73,79 ----
X lowc(c) /* force 'c' into lowercase */
X char c;
X {
X! return((char)(('A' <= c && c <= 'Z') ? (c | 040) : c));
X }
X #endif /* OVL1 */
X
X***************
X*** 277,283 ****
X /* If either delta is zero then they're on an orthogonal line,
X : else if the deltas are equal (signs ignored) they're on a diagonal.
X */
X! return !dy || !dx || (dy == dx) || (dy + dx == 0); /* (dy == -dx) */
X }
X
X #endif /* OVL0 */
X--- 277,283 ----
X /* If either delta is zero then they're on an orthogonal line,
X : else if the deltas are equal (signs ignored) they're on a diagonal.
X */
X! return((boolean)(!dy || !dx || (dy == dx) || (dy + dx == 0))); /* (dy == -dx) */
X }
X
X #endif /* OVL0 */
X***************
X*** 295,304 ****
X pmatch_top:
X s = *strng++; p = *patrn++; /* get next chars and pre-advance */
X if (!p) /* end of pattern */
X! return (s == '\0'); /* matches iff end of string too */
X else if (p == '*') /* wildcard reached */
X! return (!*patrn || pmatch(patrn, strng-1)) ? TRUE :
X! s ? pmatch(patrn-1, strng) : FALSE;
X else if (p != s && (p != '?' || !s)) /* check single character */
X return FALSE; /* doesn't match */
X else /* return pmatch(patrn, strng); */
X--- 295,304 ----
X pmatch_top:
X s = *strng++; p = *patrn++; /* get next chars and pre-advance */
X if (!p) /* end of pattern */
X! return((boolean)(s == '\0')); /* matches iff end of string too */
X else if (p == '*') /* wildcard reached */
X! return((boolean)((!*patrn || pmatch(patrn, strng-1)) ? TRUE :
X! s ? pmatch(patrn-1, strng) : FALSE));
X else if (p != s && (p != '?' || !s)) /* check single character */
X return FALSE; /* doesn't match */
X else /* return pmatch(patrn, strng); */
X***************
X*** 498,504 ****
X {
X register struct tm *lt = getlt();
X
X! return (lt->tm_wday == 5 /* friday */ && lt->tm_mday == 13);
X }
X
X int
X--- 498,504 ----
X {
X register struct tm *lt = getlt();
X
X! return((boolean)(lt->tm_wday == 5 /* friday */ && lt->tm_mday == 13));
X }
X
X int
X*** /tmp/da21091 Mon Jul 12 17:32:51 1993
X--- src/invent.c Wed Jul 7 16:24:34 1993
X***************
X*** 701,707 ****
X (otmp->oclass == TOOL_CLASS &&
X otmp->otyp != MAGIC_MARKER && otmp->otyp != TOWEL))
X || (!strcmp(word, "tin") &&
X! (otmp->otyp != CORPSE))
X || (!strcmp(word, "rub") &&
X (otmp->oclass == TOOL_CLASS &&
X otmp->otyp != OIL_LAMP && otmp->otyp != MAGIC_LAMP &&
X--- 701,707 ----
X (otmp->oclass == TOOL_CLASS &&
X otmp->otyp != MAGIC_MARKER && otmp->otyp != TOWEL))
X || (!strcmp(word, "tin") &&
X! (otmp->otyp != CORPSE || !tinnable(otmp)))
X || (!strcmp(word, "rub") &&
X (otmp->oclass == TOOL_CLASS &&
X otmp->otyp != OIL_LAMP && otmp->otyp != MAGIC_LAMP &&
X***************
X*** 870,880 ****
X
X static boolean
X wearing_armor() {
X! return(uarm || uarmc || uarmf || uarmg || uarmh || uarms
X #ifdef TOURIST
X || uarmu
X #endif
X! );
X }
X
X static boolean
X--- 870,880 ----
X
X static boolean
X wearing_armor() {
X! return((boolean)(uarm || uarmc || uarmf || uarmg || uarmh || uarms
X #ifdef TOURIST
X || uarmu
X #endif
X! ));
X }
X
X static boolean
X***************
X*** 881,887 ****
X is_worn(otmp)
X register struct obj *otmp;
X {
X! return(!!(otmp->owornmask & (W_ARMOR | W_RING | W_AMUL | W_TOOL | W_WEP)));
X }
X
X static boolean
X--- 881,887 ----
X is_worn(otmp)
X register struct obj *otmp;
X {
X! return((boolean)(!!(otmp->owornmask & (W_ARMOR | W_RING | W_AMUL | W_TOOL | W_WEP))));
X }
X
X static boolean
X***************
X*** 888,895 ****
X is_fully_identified(otmp)
X register struct obj *otmp;
X {
X! return(otmp->known && otmp->dknown && otmp->bknown && otmp->rknown
X! && objects[otmp->otyp].oc_name_known);
X }
X
X static NEARDATA const char removeables[] =
X--- 888,895 ----
X is_fully_identified(otmp)
X register struct obj *otmp;
X {
X! return((boolean)(otmp->known && otmp->dknown && otmp->bknown && otmp->rknown
X! && objects[otmp->otyp].oc_name_known));
X }
X
X static NEARDATA const char removeables[] =
X***************
X*** 1127,1133 ****
X ilet = 'a';
X for(otmp = invent; otmp && otmp != obj; otmp = otmp->nobj)
X if(++ilet > 'z') ilet = 'A';
X! return(otmp ? ilet : NOINVSYM);
X }
X
X /*
X--- 1127,1133 ----
X ilet = 'a';
X for(otmp = invent; otmp && otmp != obj; otmp = otmp->nobj)
X if(++ilet > 'z') ilet = 'A';
X! return((char)(otmp ? ilet : NOINVSYM));
X }
X
X /*
X***************
X*** 1675,1681 ****
X
X if(obj->known == otmp->known ||
X !objects[otmp->otyp].oc_uses_known) {
X! return(objects[obj->otyp].oc_merge);
X } else return(FALSE);
X }
X
X--- 1675,1681 ----
X
X if(obj->known == otmp->known ||
X !objects[otmp->otyp].oc_uses_known) {
X! return((boolean)(objects[obj->otyp].oc_merge));
X } else return(FALSE);
X }
X
X*** /tmp/da21099 Mon Jul 12 17:32:54 1993
X--- src/lock.c Wed Jul 7 16:24:37 1993
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)lock.c 3.1 93/05/28 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)lock.c 3.1 93/06/12 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 38,45 ****
X picking_at(x, y)
X int x, y;
X {
X! return((occupation == picklock) &&
X! xlock.door_or_box && (xlock.door == &levl[x][y]));
X }
X
X /* produce an occupation string appropriate for the current activity */
X--- 38,45 ----
X picking_at(x, y)
X int x, y;
X {
X! return((boolean)((occupation == picklock) &&
X! xlock.door_or_box && (xlock.door == &levl[x][y])));
X }
X
X /* produce an occupation string appropriate for the current activity */
X***************
X*** 154,160 ****
X if(xlock.picktyp) { /* blade */
X
X if(rn2(1000-(int)uwep->spe) > (992-(int)uwep->oeroded*10) &&
X! !uwep->cursed) {
X /* for a +0 weapon, probability that it survives an unsuccessful
X * attempt to force the lock is (.992)^50 = .67
X */
X--- 154,160 ----
X if(xlock.picktyp) { /* blade */
X
X if(rn2(1000-(int)uwep->spe) > (992-(int)uwep->oeroded*10) &&
X! !uwep->cursed && !obj_resists(uwep, 0, 99)) {
X /* for a +0 weapon, probability that it survives an unsuccessful
X * attempt to force the lock is (.992)^50 = .67
X */
X*** /tmp/da21115 Mon Jul 12 17:32:59 1993
X--- src/makemon.c Wed Jul 7 16:24:40 1993
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)makemon.c 3.1 93/05/10 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)makemon.c 3.1 93/06/26 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 19,25 ****
X static boolean NDECL(cmavail);
X static int FDECL(align_shift, (struct permonst *));
X #endif /* OVL0 */
X- STATIC_DCL boolean FDECL(is_home_elemental,(struct permonst *));
X STATIC_DCL boolean FDECL(wrong_elem_type, (struct permonst *));
X STATIC_DCL void FDECL(m_initgrp,(struct monst *,int,int,int));
X STATIC_DCL void FDECL(m_initthrow,(struct monst *,int,int));
X--- 19,24 ----
X***************
X*** 36,54 ****
X #define tooweak(monindx, lev) (monstr[monindx] < lev)
X
X #ifdef OVLB
X! STATIC_OVL boolean
X is_home_elemental(ptr)
X register struct permonst *ptr;
X {
X! if (ptr->mlet != S_ELEMENTAL) return FALSE;
X! if (!In_endgame(&u.uz)) return FALSE;
X! switch(monsndx(ptr)) {
X case PM_AIR_ELEMENTAL: return Is_airlevel(&u.uz);
X case PM_FIRE_ELEMENTAL: return Is_firelevel(&u.uz);
X case PM_EARTH_ELEMENTAL: return Is_earthlevel(&u.uz);
X case PM_WATER_ELEMENTAL: return Is_waterlevel(&u.uz);
X! }
X! return FALSE; /* shouldn't be reached */
X }
X
X /*
X--- 35,52 ----
X #define tooweak(monindx, lev) (monstr[monindx] < lev)
X
X #ifdef OVLB
X! boolean
X is_home_elemental(ptr)
X register struct permonst *ptr;
X {
X! if (ptr->mlet == S_ELEMENTAL)
X! switch (monsndx(ptr)) {
X case PM_AIR_ELEMENTAL: return Is_airlevel(&u.uz);
X case PM_FIRE_ELEMENTAL: return Is_firelevel(&u.uz);
X case PM_EARTH_ELEMENTAL: return Is_earthlevel(&u.uz);
X case PM_WATER_ELEMENTAL: return Is_waterlevel(&u.uz);
X! }
X! return FALSE;
X }
X
X /*
X***************
X*** 58,64 ****
X wrong_elem_type(ptr)
X register struct permonst *ptr;
X {
X! if (Is_earthlevel(&u.uz)) {
X /* no restrictions? */
X } else if (Is_waterlevel(&u.uz)) {
X /* just monsters that can swim */
X--- 56,64 ----
X wrong_elem_type(ptr)
X register struct permonst *ptr;
X {
X! if (ptr->mlet == S_ELEMENTAL) {
X! return((boolean)(!is_home_elemental(ptr)));
X! } else if (Is_earthlevel(&u.uz)) {
X /* no restrictions? */
X } else if (Is_waterlevel(&u.uz)) {
X /* just monsters that can swim */
X***************
X*** 1303,1314 ****
X--- 1303,1321 ----
X otmp->oerodeproof = TRUE;
X } else if(is_mplayer(mtmp->data) && is_sword(otmp))
X otmp->spe = (3 + rn2(4));
X+
X if(otmp->otyp == CANDELABRUM_OF_INVOCATION) {
X otmp->spe = 0;
X otmp->age = 0L;
X otmp->lamplit = FALSE;
X otmp->blessed = otmp->cursed = FALSE;
X+ } else if (otmp->otyp == BELL_OF_OPENING) {
X+ otmp->blessed = otmp->cursed = FALSE;
X+ } else if (otmp->otyp == SPE_BOOK_OF_THE_DEAD) {
X+ otmp->blessed = FALSE;
X+ otmp->cursed = TRUE;
X }
X+
X mpickobj(mtmp, otmp);
X return(otmp->spe);
X } else return(0);
X***************
X*** 1363,1376 ****
X if (mal < A_NEUTRAL && u.uhave.amulet) return FALSE;
X
X /* minions are hostile to players that have strayed at all */
X! if (is_minion(ptr)) return(u.ualign.record >= 0);
X
X /* Last case: a chance of a co-aligned monster being
X * hostile. This chance is greater if the player has strayed
X * (u.ualign.record negative) or the monster is not strongly aligned.
X */
X! return !!rn2(16 + (u.ualign.record < -15 ? -15 : u.ualign.record)) &&
X! !!rn2(2 + abs(mal));
X }
X
X /* Set malign to have the proper effect on player alignment if monster is
X--- 1370,1383 ----
X if (mal < A_NEUTRAL && u.uhave.amulet) return FALSE;
X
X /* minions are hostile to players that have strayed at all */
X! if (is_minion(ptr)) return((boolean)(u.ualign.record >= 0));
X
X /* Last case: a chance of a co-aligned monster being
X * hostile. This chance is greater if the player has strayed
X * (u.ualign.record negative) or the monster is not strongly aligned.
X */
X! return((boolean)(!!rn2(16 + (u.ualign.record < -15 ? -15 : u.ualign.record)) &&
X! !!rn2(2 + abs(mal))));
X }
X
X /* Set malign to have the proper effect on player alignment if monster is
X***************
X*** 1414,1433 ****
X else
X mtmp->malign = 20; /* really hostile */
X } else if (always_peaceful(mtmp->data)) {
X if (mtmp->mpeaceful)
X! mtmp->malign = -3*max(5,abs(mal));
X else
X! mtmp->malign = 3*max(5,abs(mal)); /* renegade */
X } else if (always_hostile(mtmp->data)) {
X if (coaligned)
X mtmp->malign = 0;
X else
X! mtmp->malign = max(5,abs(mal));
X } else if (coaligned) {
X if (mtmp->mpeaceful)
X! mtmp->malign = -3*max(3,abs(mal));
X else /* renegade */
X! mtmp->malign = max(3,abs(mal));
X } else /* not coaligned and therefore hostile */
X mtmp->malign = abs(mal);
X }
X--- 1421,1443 ----
X else
X mtmp->malign = 20; /* really hostile */
X } else if (always_peaceful(mtmp->data)) {
X+ int absmal = abs(mal);
X if (mtmp->mpeaceful)
X! mtmp->malign = -3*max(5,absmal);
X else
X! mtmp->malign = 3*max(5,absmal); /* renegade */
X } else if (always_hostile(mtmp->data)) {
X+ int absmal = abs(mal);
X if (coaligned)
X mtmp->malign = 0;
X else
X! mtmp->malign = max(5,absmal);
X } else if (coaligned) {
X+ int absmal = abs(mal);
X if (mtmp->mpeaceful)
X! mtmp->malign = -3*max(3,absmal);
X else /* renegade */
X! mtmp->malign = max(3,absmal);
X } else /* not coaligned and therefore hostile */
X mtmp->malign = abs(mal);
X }
X*** /tmp/da21123 Mon Jul 12 17:33:02 1993
X--- src/mcastu.c Mon Jul 12 13:45:12 1993
X***************
X*** 196,202 ****
X if (Stunned)
X You("struggle to keep your balance.");
X else
X! You("reel....");
X dmg = d(ACURR(A_DEX) < 12 ? 6 : 4, 4);
X if(Half_spell_damage) dmg = (dmg+1) / 2;
X make_stunned(HStun + dmg, FALSE);
X--- 196,202 ----
X if (Stunned)
X You("struggle to keep your balance.");
X else
X! You("reel...");
X dmg = d(ACURR(A_DEX) < 12 ? 6 : 4, 4);
X if(Half_spell_damage) dmg = (dmg+1) / 2;
X make_stunned(HStun + dmg, FALSE);
X*** /tmp/da21132 Mon Jul 12 17:33:05 1993
X--- src/mhitm.c Mon Jul 12 13:45:15 1993
X***************
X*** 1030,1036 ****
X if (!magr->mstun) {
X magr->mstun = 1;
X if (canseemon(magr))
X! pline("%s staggers....", Monnam(magr));
X }
X tmp = 0;
X break;
X--- 1030,1036 ----
X if (!magr->mstun) {
X magr->mstun = 1;
X if (canseemon(magr))
X! pline("%s staggers...", Monnam(magr));
X }
X tmp = 0;
X break;
X*** /tmp/da21141 Mon Jul 12 17:33:08 1993
X--- src/mhitu.c Mon Jul 12 13:45:20 1993
X***************
X*** 1065,1071 ****
X !Is_medusa_level(&u.uz) &&
X !Is_waterlevel(&u.uz);
X
X! pline("%s drowns you....", Monnam(mtmp));
X killer_format = KILLED_BY_AN;
X Sprintf(buf, "%s by %s",
X moat ? "moat" : "pool of water",
X--- 1065,1071 ----
X !Is_medusa_level(&u.uz) &&
X !Is_waterlevel(&u.uz);
X
X! pline("%s drowns you...", Monnam(mtmp));
X killer_format = KILLED_BY_AN;
X Sprintf(buf, "%s by %s",
X moat ? "moat" : "pool of water",
X*** /tmp/da21157 Mon Jul 12 17:33:14 1993
X--- src/mklev.c Wed Jul 7 16:24:42 1993
X***************
X*** 439,447 ****
X }
X *xx = dd.x;
X *yy = dd.y;
X! return((isok(*xx,*yy+*dy) && levl[*xx][*yy+*dy].typ == STONE)
X && (isok(*xx,*yy-*dy) && !IS_POOL(levl[*xx][*yy-*dy].typ)
X! && !IS_FURNITURE(levl[*xx][*yy-*dy].typ)));
X }
X
X /* there should be one of these per trap, in the same order as trap.h */
X--- 439,447 ----
X }
X *xx = dd.x;
X *yy = dd.y;
X! return((boolean)((isok(*xx,*yy+*dy) && levl[*xx][*yy+*dy].typ == STONE)
X && (isok(*xx,*yy-*dy) && !IS_POOL(levl[*xx][*yy-*dy].typ)
X! && !IS_FURNITURE(levl[*xx][*yy-*dy].typ))));
X }
X
X /* there should be one of these per trap, in the same order as trap.h */
X***************
X*** 1057,1063 ****
X occupied(x, y)
X register xchar x, y;
X {
X! return(t_at(x, y) || levl[x][y].typ == STAIRS
X || IS_FOUNTAIN(levl[x][y].typ)
X || IS_THRONE(levl[x][y].typ)
X #ifdef SINKS
X--- 1057,1063 ----
X occupied(x, y)
X register xchar x, y;
X {
X! return((boolean)(t_at(x, y) || levl[x][y].typ == STAIRS
X || IS_FOUNTAIN(levl[x][y].typ)
X || IS_THRONE(levl[x][y].typ)
X #ifdef SINKS
X***************
X*** 1067,1073 ****
X || is_lava(x,y)
X || is_pool(x,y)
X || invocation_pos(x,y)
X! );
X }
X
X /* make a trap somewhere (in croom if mazeflag = 0 && !tm) */
X--- 1067,1073 ----
X || is_lava(x,y)
X || is_pool(x,y)
X || invocation_pos(x,y)
X! ));
X }
X
X /* make a trap somewhere (in croom if mazeflag = 0 && !tm) */
X*** /tmp/da21173 Mon Jul 12 17:33:19 1993
X--- src/mkmaze.c Wed Jul 7 16:24:45 1993
X***************
X*** 129,138 ****
X xchar x, y;
X xchar lx, ly, hx, hy;
X {
X! return(occupied(x, y) ||
X ((x >= lx) && (x <= hx) && (y >= ly) && (y <= hy)) ||
X !((levl[x][y].typ == CORR && level.flags.is_maze_lev) ||
X! levl[x][y].typ == ROOM || levl[x][y].typ == AIR));
X }
X
X /* pick a location in area (lx, ly, hx, hy) but not in (nlx, nly, nhx, nhy) */
X--- 129,138 ----
X xchar x, y;
X xchar lx, ly, hx, hy;
X {
X! return((boolean)(occupied(x, y) ||
X ((x >= lx) && (x <= hx) && (y >= ly) && (y <= hy)) ||
X !((levl[x][y].typ == CORR && level.flags.is_maze_lev) ||
X! levl[x][y].typ == ROOM || levl[x][y].typ == AIR)));
X }
X
X /* pick a location in area (lx, ly, hx, hy) but not in (nlx, nly, nhx, nhy) */
X*** /tmp/da21181 Mon Jul 12 17:33:21 1993
X--- src/mkobj.c Wed Jul 7 16:24:48 1993
X***************
X*** 591,597 ****
X else if (obj->otyp == GOLD_PIECE)
X return (int)((obj->quan + 50L) / 100L);
X else if (obj->otyp == HEAVY_IRON_BALL && obj->owt != 0)
X! return obj->owt; /* kludge for "very" heavy iron ball */
X return(wt ? wt*(int)obj->quan : ((int)obj->quan + 1)>>1);
X }
X
X--- 591,597 ----
X else if (obj->otyp == GOLD_PIECE)
X return (int)((obj->quan + 50L) / 100L);
X else if (obj->otyp == HEAVY_IRON_BALL && obj->owt != 0)
X! return((int)(obj->owt)); /* kludge for "very" heavy iron ball */
X return(wt ? wt*(int)obj->quan : ((int)obj->quan + 1)>>1);
X }
X
X***************
X*** 681,687 ****
X
X if (objects[otyp].oc_oprop == FIRE_RES) return FALSE;
X
X! return((objects[otyp].oc_material <= WOOD &&
X objects[otyp].oc_material != LIQUID));
X }
X
X--- 681,687 ----
X
X if (objects[otyp].oc_oprop == FIRE_RES) return FALSE;
X
X! return((boolean)(objects[otyp].oc_material <= WOOD &&
X objects[otyp].oc_material != LIQUID));
X }
X
X*** /tmp/da21189 Mon Jul 12 17:33:24 1993
X--- src/mkroom.c Wed Jul 7 16:24:50 1993
X***************
X*** 41,47 ****
X {
X register int area = (sroom->hx - sroom->lx + 1)
X * (sroom->hy - sroom->ly + 1);
X! return( area > 20 );
X }
X
X void
X--- 41,47 ----
X {
X register int area = (sroom->hx - sroom->lx + 1)
X * (sroom->hy - sroom->ly + 1);
X! return((boolean)( area > 20 ));
X }
X
X void
X***************
X*** 110,116 ****
X return;
X }
X for(i=0; shtypes[i].name; i++)
X! if(*ep == def_oc_syms[shtypes[i].symb])
X goto gottype;
X if(*ep == 'g' || *ep == 'G')
X i = 0;
X--- 110,116 ----
X return;
X }
X for(i=0; shtypes[i].name; i++)
X! if(*ep == def_oc_syms[(int)shtypes[i].symb])
X goto gottype;
X if(*ep == 'g' || *ep == 'G')
X i = 0;
X***************
X*** 296,302 ****
X switch(type) {
X case ZOO:
X if(sroom->doorct)
X! i = sq(dist2(sx,sy,doors[sh].x,doors[sh].y));
X else
X i = goldlim;
X if(i >= goldlim) i = 5*level_difficulty();
X--- 296,305 ----
X switch(type) {
X case ZOO:
X if(sroom->doorct)
X! {
X! int distval = dist2(sx,sy,doors[sh].x,doors[sh].y);
X! i = sq(distval);
X! }
X else
X i = goldlim;
X if(i >= goldlim) i = 5*level_difficulty();
X***************
X*** 474,480 ****
X if (sroom == dnstairs_room)
X return TRUE;
X if (sstairs.sx && !sstairs.up)
X! return sroom == sstairs_room;
X return FALSE;
X }
X
X--- 477,483 ----
X if (sroom == dnstairs_room)
X return TRUE;
X if (sstairs.sx && !sstairs.up)
X! return((boolean)(sroom == sstairs_room));
X return FALSE;
X }
X
X***************
X*** 485,491 ****
X if (sroom == upstairs_room)
X return TRUE;
X if (sstairs.sx && sstairs.up)
X! return sroom == sstairs_room;
X return FALSE;
X }
X
X--- 488,494 ----
X if (sroom == upstairs_room)
X return TRUE;
X if (sstairs.sx && sstairs.up)
X! return((boolean)(sroom == sstairs_room));
X return FALSE;
X }
X
X***************
X*** 511,518 ****
X struct mkroom *croom;
X xchar x, y;
X {
X! return (x >= croom->lx-1 && x <= croom->hx+1 &&
X! y >= croom->ly-1 && y <= croom->hy+1);
X }
X
X boolean
X--- 514,521 ----
X struct mkroom *croom;
X xchar x, y;
X {
X! return((boolean)(x >= croom->lx-1 && x <= croom->hx+1 &&
X! y >= croom->ly-1 && y <= croom->hy+1));
X }
X
X boolean
X*** /tmp/da21197 Mon Jul 12 17:33:26 1993
X--- src/mon.c Mon Jul 12 13:45:22 1993
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)mon.c 3.1 93/05/26 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)mon.c 3.1 93/06/12 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 215,221 ****
X break;
X default:
X if (Hallucination)
X! Your("spider-sense is tingling....");
X else
X You("feel apprehensive as you sense a %s flash.",
X warnings[warnlevel]);
X--- 215,221 ----
X break;
X default:
X if (Hallucination)
X! Your("spider-sense is tingling...");
X else
X You("feel apprehensive as you sense a %s flash.",
X warnings[warnlevel]);
X***************
X*** 379,385 ****
X /* Eats topmost metal object if it is there */
X for (otmp = level.objects[mtmp->mx][mtmp->my];
X otmp; otmp = otmp->nexthere)
X! if (is_metallic(otmp) && touch_artifact(otmp,mtmp)) {
X if (cansee(mtmp->mx,mtmp->my) && flags.verbose)
X pline("%s eats %s!", Monnam(mtmp),
X distant_name(otmp,doname));
X--- 379,386 ----
X /* Eats topmost metal object if it is there */
X for (otmp = level.objects[mtmp->mx][mtmp->my];
X otmp; otmp = otmp->nexthere)
X! if (is_metallic(otmp) && !obj_resists(otmp, 5, 95) &&
X! touch_artifact(otmp,mtmp)) {
X if (cansee(mtmp->mx,mtmp->my) && flags.verbose)
X pline("%s eats %s!", Monnam(mtmp),
X distant_name(otmp,doname));
X***************
X*** 418,424 ****
X /* Engulfs others, except huge rocks and metal attached to player */
X for (otmp = level.objects[mtmp->mx][mtmp->my]; otmp; otmp = otmp2) {
X otmp2 = otmp->nexthere;
X! if(is_organic(otmp) && touch_artifact(otmp,mtmp)) {
X if (otmp->otyp == CORPSE && otmp->corpsenm == PM_COCKATRICE
X && !resists_ston(mtmp->data))
X continue;
X--- 419,426 ----
X /* Engulfs others, except huge rocks and metal attached to player */
X for (otmp = level.objects[mtmp->mx][mtmp->my]; otmp; otmp = otmp2) {
X otmp2 = otmp->nexthere;
X! if (is_organic(otmp) && !obj_resists(otmp, 5, 95) &&
X! touch_artifact(otmp,mtmp)) {
X if (otmp->otyp == CORPSE && otmp->corpsenm == PM_COCKATRICE
X && !resists_ston(mtmp->data))
X continue;
X***************
X*** 603,609 ****
X
X /* nymphs deal in stolen merchandise, but not boulders or statues */
X if (mtmp->data->mlet == S_NYMPH)
X! return !(otmp->oclass == ROCK_CLASS);
X
X if(curr_mon_load(mtmp) + newload > max_mon_load(mtmp)) return(FALSE);
X
X--- 605,611 ----
X
X /* nymphs deal in stolen merchandise, but not boulders or statues */
X if (mtmp->data->mlet == S_NYMPH)
X! return((boolean)(!(otmp->oclass == ROCK_CLASS)));
X
X if(curr_mon_load(mtmp) + newload > max_mon_load(mtmp)) return(FALSE);
X
X***************
X*** 778,784 ****
X {
X register int distance = dist2(mon->mx, mon->my, x, y);
X if (distance==2 && mon->data==&mons[PM_GRID_BUG]) return 0;
X! return (distance < 3);
X }
X
X #endif /* OVL1 */
X--- 780,786 ----
X {
X register int distance = dist2(mon->mx, mon->my, x, y);
X if (distance==2 && mon->data==&mons[PM_GRID_BUG]) return 0;
X! return((boolean)(distance < 3));
X }
X
X #endif /* OVL1 */
X***************
X*** 983,988 ****
X--- 985,993 ----
X register struct monst *mdef;
X {
X mondead(mdef);
X+ #ifdef MUSE
X+ if(mdef->mhp > 0) return; /* lifesaved */
X+ #endif
X if(rn2(3)
X #ifdef REINCARNATION
X && !Is_rogue_level(&u.uz)
X***************
X*** 1137,1143 ****
X boolean wasinside = u.uswallow && (u.ustuck == mtmp);
X
X if (dest & 1) {
X! if(!canseemon(mtmp) && !sensemon(mtmp)) You("destroy it!");
X else {
X You("destroy %s!",
X mtmp->mtame ? x_monnam(mtmp, 0, "poor", 0)
X--- 1142,1149 ----
X boolean wasinside = u.uswallow && (u.ustuck == mtmp);
X
X if (dest & 1) {
X! if(!wasinside && !canseemon(mtmp) && !sensemon(mtmp))
X! You("destroy it!");
X else {
X You("destroy %s!",
X mtmp->mtame ? x_monnam(mtmp, 0, "poor", 0)
X*** /tmp/da21205 Mon Jul 12 17:33:29 1993
X--- src/mondata.c Wed Jul 7 16:24:55 1993
X***************
X*** 30,37 ****
X poly_when_stoned(ptr)
X struct permonst *ptr;
X {
X! return (is_golem(ptr) && ptr != &mons[PM_STONE_GOLEM] &&
X! !(mons[PM_STONE_GOLEM].geno & G_GENOD)); /* allow G_EXTINCT */
X }
X
X boolean
X--- 30,37 ----
X poly_when_stoned(ptr)
X struct permonst *ptr;
X {
X! return((boolean)(is_golem(ptr) && ptr != &mons[PM_STONE_GOLEM] &&
X! !(mons[PM_STONE_GOLEM].geno & G_GENOD))); /* allow G_EXTINCT */
X }
X
X boolean
X***************
X*** 39,45 ****
X
X register struct permonst *ptr;
X {
X! return(is_undead(ptr) || is_demon(ptr) || is_were(ptr));
X }
X
X #endif /* OVLB */
X--- 39,45 ----
X
X register struct permonst *ptr;
X {
X! return((boolean)(is_undead(ptr) || is_demon(ptr) || is_were(ptr)));
X }
X
X #endif /* OVLB */
X***************
X*** 70,78 ****
X register struct permonst *ptr;
X /* returns TRUE if monster is especially affected by silver weapons */
X {
X! return (is_were(ptr) || ptr->mlet==S_VAMPIRE || is_demon(ptr) ||
X ptr == &mons[PM_SHADE] ||
X! (ptr->mlet==S_IMP && ptr != &mons[PM_TENGU]));
X }
X
X #endif /* OVL0 */
X--- 70,78 ----
X register struct permonst *ptr;
X /* returns TRUE if monster is especially affected by silver weapons */
X {
X! return((boolean)(is_were(ptr) || ptr->mlet==S_VAMPIRE || is_demon(ptr) ||
X ptr == &mons[PM_SHADE] ||
X! (ptr->mlet==S_IMP && ptr != &mons[PM_TENGU])));
X }
X
X #endif /* OVL0 */
X***************
X*** 85,91 ****
X if (uwep && uwep->oartifact == ART_EXCALIBUR)
X return TRUE;
X else
X! return(haseyes(ptr));
X }
X
X #endif /* OVL1 */
X--- 85,91 ----
X if (uwep && uwep->oartifact == ART_EXCALIBUR)
X return TRUE;
X else
X! return((boolean)haseyes(ptr));
X }
X
X #endif /* OVL1 */
X***************
X*** 96,103 ****
X sliparm(ptr) /* creature will slide out of armor */
X register struct permonst *ptr;
X {
X! return is_whirly(ptr) || ptr->msize <= MZ_SMALL ||
X! ptr == &mons[PM_GHOST];
X }
X
X boolean
X--- 96,103 ----
X sliparm(ptr) /* creature will slide out of armor */
X register struct permonst *ptr;
X {
X! return((boolean)(is_whirly(ptr) || ptr->msize <= MZ_SMALL ||
X! ptr == &mons[PM_GHOST]));
X }
X
X boolean
X***************
X*** 104,111 ****
X breakarm(ptr) /* creature will break out of armor */
X register struct permonst *ptr;
X {
X! return((bigmonst(ptr) || (ptr->msize > MZ_SMALL && !humanoid(ptr))
X! || ptr == &mons[PM_MARILITH]) && !sliparm(ptr));
X /* Marilith is about the only case of a monster which is otherwise
X * humanoid but cannot wear armor (too many arms). Centaurs would
X * be another except that they are already accounted for by
X--- 104,111 ----
X breakarm(ptr) /* creature will break out of armor */
X register struct permonst *ptr;
X {
X! return((boolean)((bigmonst(ptr) || (ptr->msize > MZ_SMALL && !humanoid(ptr))
X! || ptr == &mons[PM_MARILITH]) && !sliparm(ptr)));
X /* Marilith is about the only case of a monster which is otherwise
X * humanoid but cannot wear armor (too many arms). Centaurs would
X * be another except that they are already accounted for by
X***************
X*** 120,127 ****
X sticks(ptr) /* creature sticks other creatures it hits */
X register struct permonst *ptr;
X {
X! return(dmgtype(ptr,AD_STCK) || dmgtype(ptr,AD_WRAP) ||
X! attacktype(ptr,AT_HUGS));
X }
X
X boolean
X--- 120,127 ----
X sticks(ptr) /* creature sticks other creatures it hits */
X register struct permonst *ptr;
X {
X! return((boolean)(dmgtype(ptr,AD_STCK) || dmgtype(ptr,AD_WRAP) ||
X! attacktype(ptr,AT_HUGS)));
X }
X
X boolean
X***************
X*** 270,276 ****
X webmaker(ptr) /* creature can spin a web */
X register struct permonst *ptr;
X {
X! return (ptr->mlet == S_SPIDER && ptr != &mons[PM_SCORPION]);
X }
X #endif
X
X--- 270,276 ----
X webmaker(ptr) /* creature can spin a web */
X register struct permonst *ptr;
X {
X! return((boolean)(ptr->mlet == S_SPIDER && ptr != &mons[PM_SCORPION]));
X }
X #endif
X
X***************
X*** 302,309 ****
X levl_follower(mtmp)
X register struct monst *mtmp;
X {
X! return (mtmp->mtame || (mtmp->data->mflags2 & M2_STALK) || is_fshk(mtmp)
X! || (mtmp->iswiz && !mon_has_amulet(mtmp)));
X }
X
X struct permonst *
X--- 302,309 ----
X levl_follower(mtmp)
X register struct monst *mtmp;
X {
X! return((boolean)(mtmp->mtame || (mtmp->data->mflags2 & M2_STALK) || is_fshk(mtmp)
X! || (mtmp->iswiz && !mon_has_amulet(mtmp))));
X }
X
X struct permonst *
X*** /tmp/da21213 Mon Jul 12 17:33:31 1993
X--- src/monmove.c Wed Jul 7 16:24:58 1993
X***************
X*** 186,196 ****
X mtmp->data->mlet == S_HUMAN || mtmp->mpeaceful ||
X mtmp->data == &mons[PM_MINOTAUR])
X return(FALSE);
X! return(
X #ifdef ELBERETH
X sengr_at("Elbereth", x, y) ||
X #endif
X! sobj_at(SCR_SCARE_MONSTER, x, y) != (struct obj *)0);
X }
X
X #endif /* OVL2 */
X--- 186,196 ----
X mtmp->data->mlet == S_HUMAN || mtmp->mpeaceful ||
X mtmp->data == &mons[PM_MINOTAUR])
X return(FALSE);
X! return((boolean)(
X #ifdef ELBERETH
X sengr_at("Elbereth", x, y) ||
X #endif
X! sobj_at(SCR_SCARE_MONSTER, x, y) != (struct obj *)0));
X }
X
X #endif /* OVL2 */
X***************
X*** 1069,1076 ****
X closed_door(x, y)
X register int x, y;
X {
X! return(IS_DOOR(levl[x][y].typ) &&
X! (levl[x][y].doormask & (D_LOCKED | D_CLOSED)));
X }
X
X boolean
X--- 1069,1076 ----
X closed_door(x, y)
X register int x, y;
X {
X! return((boolean)(IS_DOOR(levl[x][y].typ) &&
X! (levl[x][y].doormask & (D_LOCKED | D_CLOSED))));
X }
X
X boolean
X***************
X*** 1077,1083 ****
X accessible(x, y)
X register int x, y;
X {
X! return(ACCESSIBLE(levl[x][y].typ) && !closed_door(x, y));
X }
X
X #endif /* OVL2 */
X--- 1077,1083 ----
X accessible(x, y)
X register int x, y;
X {
X! return((boolean)(ACCESSIBLE(levl[x][y].typ) && !closed_door(x, y)));
X }
X
X #endif /* OVL2 */
X*** /tmp/da21229 Mon Jul 12 17:33:39 1993
X--- src/mplayer.c Fri Jul 9 15:36:18 1993
X***************
X*** 24,30 ****
X /* Amiga team */
X "Greg", "Gregg", "Keni", "Mike", "Olaf", "Richard",
X /* Mac team */
X! "David", "Johnny", "Jon", "Jonathan", "Michael", "Rob",
X "Tim", "Wang",
X /* Atari team */
X "Eric",
X--- 24,30 ----
X /* Amiga team */
X "Greg", "Gregg", "Keni", "Mike", "Olaf", "Richard",
X /* Mac team */
X! "Barton", "David", "Johnny", "Jon", "Jonathan", "Michael", "Rob",
X "Tim", "Wang",
X /* Atari team */
X "Eric",
X*** /tmp/da21237 Mon Jul 12 17:33:41 1993
X--- src/mthrowu.c Mon Jul 12 14:14:07 1993
X***************
X*** 148,159 ****
X #ifdef MUSE
X /* not possibly_unwield, which checks the object's */
X /* location, not its existence */
X! if (MON_WEP(mon) == obj)
X MON_NOWEP(mon);
X #endif
X m_useup(mon, obj);
X }
X }
X
X if (singleobj->cursed && (dx || dy) && !rn2(7)) {
X if(canseemon(mon) && flags.verbose) {
X--- 148,164 ----
X #ifdef MUSE
X /* not possibly_unwield, which checks the object's */
X /* location, not its existence */
X! if (MON_WEP(mon) == obj) {
X! obj->owornmask &= ~W_WEP;
X MON_NOWEP(mon);
X+ }
X #endif
X m_useup(mon, obj);
X }
X }
X+ #ifdef MUSE
X+ singleobj->owornmask = 0; /* threw one of multiple weapons in hand? */
X+ #endif
X
X if (singleobj->cursed && (dx || dy) && !rn2(7)) {
X if(canseemon(mon) && flags.verbose) {
X***************
X*** 550,556 ****
X if((!tbx || !tby || abs(tbx) == abs(tby)) /* straight line or diagonal */
X && distmin(tbx, tby, 0, 0) < BOLT_LIM) {
X
X! if(ax == u.ux && ay == u.uy) return couldsee(bx,by);
X else if(clear_path(ax,ay,bx,by)) return TRUE;
X }
X return FALSE;
X--- 555,561 ----
X if((!tbx || !tby || abs(tbx) == abs(tby)) /* straight line or diagonal */
X && distmin(tbx, tby, 0, 0) < BOLT_LIM) {
X
X! if(ax == u.ux && ay == u.uy) return((boolean)(couldsee(bx,by)));
X else if(clear_path(ax,ay,bx,by)) return TRUE;
X }
X return FALSE;
X*** /tmp/da21245 Mon Jul 12 17:33:44 1993
X--- src/muse.c Wed Jul 7 16:25:05 1993
X***************
X*** 379,385 ****
X m.has_defense = MUSE_SCR_CREATE_MONSTER;
X }
X }
X! botm: return !!m.has_defense;
X #undef nomore
X }
X
X--- 379,385 ----
X m.has_defense = MUSE_SCR_CREATE_MONSTER;
X }
X }
X! botm: return((boolean)(!!m.has_defense));
X #undef nomore
X }
X
X***************
X*** 452,458 ****
X }
X if (Is_botlevel(&u.uz)) goto mon_tele;
X else {
X! int nlev = max(depth(&u.uz), 0);
X d_level flev;
X
X if (rn2(5)) nlev = rnd(nlev + 3);
X--- 452,459 ----
X }
X if (Is_botlevel(&u.uz)) goto mon_tele;
X else {
X! int dpth = depth(&u.uz);
X! int nlev = max(dpth, 0);
X d_level flev;
X
X if (rn2(5)) nlev = rnd(nlev + 3);
X***************
X*** 784,790 ****
X }
X #endif
X }
X! return !!m.has_offense;
X #undef nomore
X }
X
X--- 785,791 ----
X }
X #endif
X }
X! return((boolean)(!!m.has_offense));
X #undef nomore
X }
X
X***************
X*** 1161,1167 ****
X m.has_misc = MUSE_WAN_POLYMORPH;
X }
X }
X! return !!m.has_misc;
X #undef nomore
X }
X
X--- 1162,1168 ----
X m.has_misc = MUSE_WAN_POLYMORPH;
X }
X }
X! return((boolean)(!!m.has_misc));
X #undef nomore
X }
X
X***************
X*** 1346,1352 ****
X int typ = obj->otyp;
X
X if (is_animal(mon->data) || mindless(mon->data)) return FALSE;
X! return((obj->oclass == WAND_CLASS && objects[typ].oc_dir == RAY)
X || typ == WAN_STRIKING
X || (!mon->minvis &&
X (typ == WAN_MAKE_INVISIBLE || typ == POT_INVISIBILITY))
X--- 1347,1353 ----
X int typ = obj->otyp;
X
X if (is_animal(mon->data) || mindless(mon->data)) return FALSE;
X! return((boolean)((obj->oclass == WAND_CLASS && objects[typ].oc_dir == RAY)
X || typ == WAN_STRIKING
X || (!mon->minvis &&
X (typ == WAN_MAKE_INVISIBLE || typ == POT_INVISIBILITY))
X***************
X*** 1369,1375 ****
X || typ == AMULET_OF_LIFE_SAVING
X || ((mon->misc_worn_check & W_ARMG) && typ == CORPSE
X && obj->corpsenm == PM_COCKATRICE)
X! );
X }
X
X boolean
X--- 1370,1376 ----
X || typ == AMULET_OF_LIFE_SAVING
X || ((mon->misc_worn_check & W_ARMG) && typ == CORPSE
X && obj->corpsenm == PM_COCKATRICE)
X! ));
X }
X
X boolean
X*** /tmp/da21253 Mon Jul 12 17:33:47 1993
X--- src/music.c Wed Jul 7 16:25:07 1993
X***************
X*** 47,52 ****
X--- 47,56 ----
X static void FDECL(speaker,(struct obj *,char *));
X #endif
X
X+ #ifdef AMIGA
X+ void FDECL( amii_speaker, ( struct obj *, char *, int ) );
X+ #endif
X+
X /*
X * Wake every monster in range...
X */
X***************
X*** 433,439 ****
X do_play_instrument(instr)
X struct obj *instr;
X {
X! char buf[BUFSZ], *s, c = 'y';
X int x,y;
X boolean ok;
X
X--- 437,446 ----
X do_play_instrument(instr)
X struct obj *instr;
X {
X! char buf[BUFSZ], c = 'y';
X! #ifndef AMIGA
X! char *s;
X! #endif
X int x,y;
X boolean ok;
X
X*** /tmp/da21261 Mon Jul 12 17:33:49 1993
X--- src/o_init.c Wed Jul 7 16:25:10 1993
X***************
X*** 309,316 ****
X interesting_to_discover(i)
X register int i;
X {
X! return objects[i].oc_uname != NULL ||
X! (objects[i].oc_name_known && OBJ_DESCR(objects[i]) != NULL);
X }
X
X int
X--- 309,316 ----
X interesting_to_discover(i)
X register int i;
X {
X! return((boolean)(objects[i].oc_uname != NULL ||
X! (objects[i].oc_name_known && OBJ_DESCR(objects[i]) != NULL)));
X }
X
X int
X*** /tmp/da21277 Mon Jul 12 17:33:54 1993
X--- src/objnam.c Thu Jul 8 13:49:50 1993
X***************
X*** 142,149 ****
X obj_is_pname(obj)
X register struct obj *obj;
X {
X! return (obj->dknown && obj->known && obj->onamelth && obj->oartifact &&
X! !objects[obj->otyp].oc_unique);
X }
X
X /* Give the name of an object seen at a distance. Unlike xname/doname,
X--- 142,149 ----
X obj_is_pname(obj)
X register struct obj *obj;
X {
X! return((boolean)(obj->dknown && obj->known && obj->onamelth && obj->oartifact &&
X! !objects[obj->otyp].oc_unique));
X }
X
X /* Give the name of an object seen at a distance. Unlike xname/doname,
X***************
X*** 441,446 ****
X--- 441,447 ----
X Strcpy(prefix, "a ");
X
X if (obj->bknown &&
X+ obj->oclass != GOLD_CLASS &&
X (obj->otyp != POT_WATER || !objects[POT_WATER].oc_name_known
X || (!obj->cursed && !obj->blessed))) {
X /* allow 'blessed clear potion' if we don't know it's holy water;
X***************
X*** 993,1000 ****
X
X /* Japanese words: plurals are the same as singlar */
X if ((len == 2 && !strcmp(str, "ya")) ||
X! (len > 2 && !strcmp(spot-2, " ya")))
X! goto bottom;
X
X /* Default: append an 's' */
X Strcpy(spot+1, "s");
X--- 994,1007 ----
X
X /* Japanese words: plurals are the same as singlar */
X if ((len == 2 && !strcmp(str, "ya")) ||
X! (len > 2 && !strcmp(spot-2, " ya")) ||
X! (len >= 5 && (!strcmp(spot-4, "ninja") ||
X! !strcmp(spot-4, "ronin") ||
X! !strcmp(spot-4, "shito") ||
X! !strcmp(spot-4, "tengu"))) ||
X! (len >= 7 && (!strcmp(spot-6, "samurai") ||
X! !strcmp(spot-6, "gunyoki"))))
X! goto bottom;
X
X /* Default: append an 's' */
X Strcpy(spot+1, "s");
X*** /tmp/da21285 Mon Jul 12 17:33:58 1993
X--- src/options.c Fri Jul 2 14:16:55 1993
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)options.c 3.1 93/05/29 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)options.c 3.1 93/06/27 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 159,164 ****
X--- 159,168 ----
X { "pettype", "your preferred initial pet type," },
X { "pickup_types", "types of objects to pick up automatically," },
X { "scores", "the parts of the score list you wish to see," },
X+ #ifdef VIDEOSHADES
X+ { "videocolors", "color mappings for internal screen routines," },
X+ { "videoshades", "gray shades to map to black/gray/white," },
X+ #endif
X { "windowtype", "windowing system to use." },
X { NULL, NULL }
X };
X***************
X*** 171,176 ****
X--- 175,185 ----
X extern boolean colors_changed; /* in tos.c */
X #endif
X
X+ #ifdef VIDEOSHADES
X+ extern char *shade[3]; /* in sys/msdos/video.c */
X+ extern char ttycolors[MAXCOLORS]; /* in sys/msdos/video.c */
X+ #endif
X+
X extern const char *roles[]; /* from u_init.c */
X
X static char def_inv_order[MAXOCLASSES] = {
X***************
X*** 838,843 ****
X--- 847,875 ----
X return;
X }
X
X+ #ifdef VIDEOSHADES
X+ /* videocolors:string */
X+ if (!strncmpi(opts, "videocolors", 6)) {
X+ int length;
X+
X+ if (!(opts = string_for_env_opt("videocolors", opts, FALSE))) {
X+ return;
X+ }
X+ badoption(opts);
X+ return;
X+ }
X+ /* videoshades:string */
X+ if (!strncmpi(opts, "videoshades", 6)) {
X+ int length;
X+
X+ if (!(opts = string_for_env_opt("videoshades", opts, FALSE))) {
X+ return;
X+ }
X+ badoption(opts);
X+ return;
X+ }
X+ #endif /* VIDEOSHADES */
X+
X if (!strncmpi(opts, "windowtype", 3)) {
X if ((op = string_for_env_opt("windowtype", opts, FALSE)) != 0) {
X char buf[16];
X***************
X*** 1057,1066 ****
X oc_to_str(flags.pickup_types, ocl);
X Sprintf(buf, " pickup_types: %s", (ocl[0]) ? ocl : "all");
X putstr(tmpwin, 0, buf);
X! Sprintf(buf, " scores: %utop/%uaround%s",
X flags.end_top, flags.end_around,
X (flags.end_own ? "/own" : ""));
X putstr(tmpwin, 0, buf);
X Sprintf(buf, " windowtype: %s", windowprocs.name);
X putstr(tmpwin, 0, buf);
X display_nhwindow(tmpwin, TRUE);
X--- 1089,1110 ----
X oc_to_str(flags.pickup_types, ocl);
X Sprintf(buf, " pickup_types: %s", (ocl[0]) ? ocl : "all");
X putstr(tmpwin, 0, buf);
X! Sprintf(buf, " scores: %u top/%u around%s",
X flags.end_top, flags.end_around,
X (flags.end_own ? "/own" : ""));
X putstr(tmpwin, 0, buf);
X+ #ifdef VIDEOSHADES
X+ Sprintf(buf, " videoshades: %s %s %s",
X+ shade[0],shade[1],shade[2]);
X+ putstr(tmpwin, 0, buf);
X+ Sprintf(buf, " videocolors: %d %d %d %d %d %d %d %d %d %d %d %d",
X+ ttycolors[RED],ttycolors[GREEN],ttycolors[BROWN],
X+ ttycolors[BLUE],ttycolors[MAGENTA],ttycolors[CYAN],
X+ ttycolors[ORANGE_COLORED],ttycolors[BRIGHT_GREEN],
X+ ttycolors[YELLOW],ttycolors[BRIGHT_BLUE],
X+ ttycolors[BRIGHT_MAGENTA],ttycolors[BRIGHT_CYAN]);
X+ putstr(tmpwin, 0, buf);
X+ #endif /* VIDEOSHADES */
X Sprintf(buf, " windowtype: %s", windowprocs.name);
X putstr(tmpwin, 0, buf);
X display_nhwindow(tmpwin, TRUE);
X*** /tmp/da21317 Mon Jul 12 17:34:07 1993
X--- src/polyself.c Mon Jul 12 13:14:29 1993
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)polyself.c 3.1 93/05/15 */
X /* Copyright (C) 1987, 1988, 1989 by Ken Arromdee */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)polyself.c 3.1 93/06/24 */
X /* Copyright (C) 1987, 1988, 1989 by Ken Arromdee */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 118,124 ****
X #ifdef POLYSELF
X polyman();
X #endif
X! You("feel like a new %sman!", flags.female ? "wo" : "");
X flags.botl = 1;
X (void) encumber_msg();
X }
X--- 118,125 ----
X #ifdef POLYSELF
X polyman();
X #endif
X! You("feel like a new %s!",
X! pl_character[0] == 'E' ? "elf" : flags.female ? "woman" : "man");
X flags.botl = 1;
X (void) encumber_msg();
X }
X***************
X*** 345,351 ****
X if (u.usym == S_UNICORN)
X pline(use_thec,monsterc,"use your horn");
X if (u.umonnum == PM_MIND_FLAYER)
X! pline(use_thec,monsterc,"for a mental blast");
X if (uasmon->msound == MS_SHRIEK) /* worthless, actually */
X pline(use_thec,monsterc,"shriek");
X if ((lays_eggs(uasmon) || u.umonnum==PM_QUEEN_BEE) && flags.female)
X--- 346,352 ----
X if (u.usym == S_UNICORN)
X pline(use_thec,monsterc,"use your horn");
X if (u.umonnum == PM_MIND_FLAYER)
X! pline(use_thec,monsterc,"emit a mental blast");
X if (uasmon->msound == MS_SHRIEK) /* worthless, actually */
X pline(use_thec,monsterc,"shriek");
X if ((lays_eggs(uasmon) || u.umonnum==PM_QUEEN_BEE) && flags.female)
X***************
X*** 442,448 ****
X }
X if ((otmp = uarmh) != 0) {
X if (donning(otmp)) cancel_don();
X! Your("helmet falls to the floor!");
X (void) Helmet_off();
X dropx(otmp);
X }
X--- 443,449 ----
X }
X if ((otmp = uarmh) != 0) {
X if (donning(otmp)) cancel_don();
X! Your("helmet falls to the %s!", surface(u.ux, u.uy));
X (void) Helmet_off();
X dropx(otmp);
X }
X*** /tmp/da21325 Mon Jul 12 17:34:11 1993
X--- src/potion.c Mon Jul 12 13:45:25 1993
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)potion.c 3.1 93/05/15 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)potion.c 3.1 93/07/07 */
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 55,61 ****
X }
X if (xtime && !old) {
X if (talk)
X! You("stagger....");
X flags.botl = 1;
X }
X HStun = xtime;
X--- 55,61 ----
X }
X if (xtime && !old) {
X if (talk)
X! You("stagger...");
X flags.botl = 1;
X }
X HStun = xtime;
X***************
X*** 458,468 ****
X newsym(u.ux,u.uy); /* see yourself! */
X break;
X case POT_PARALYSIS:
X! if(Levitation || Is_waterlevel(&u.uz))
X! You("are motionlessly suspended.");
X else
X! Your("%s are frozen to the floor!",
X! makeplural(body_part(FOOT)));
X nomul(-(rn1(10, 25 - 12*bcsign(otmp))));
X exercise(A_DEX, FALSE);
X break;
X--- 458,468 ----
X newsym(u.ux,u.uy); /* see yourself! */
X break;
X case POT_PARALYSIS:
X! if (Levitation || Is_airlevel(&u.uz) || Is_waterlevel(&u.uz))
X! You("are motionlessly suspended.");
X else
X! Your("%s are frozen to the %s!",
X! makeplural(body_part(FOOT)), surface(u.ux, u.uy));
X nomul(-(rn1(10, 25 - 12*bcsign(otmp))));
X exercise(A_DEX, FALSE);
X break;
X***************
X*** 643,649 ****
X } while (lmoves < 1 || lmoves > 300);
X HLevitation += lmoves;
X } else HLevitation += rnd(150);
X- u.uprops[LEVITATION].p_tofn = float_down;
X break;
X case POT_GAIN_ENERGY: /* M. Stephenson */
X { register int num;
X--- 643,648 ----
END_OF_FILE
if test 54812 -ne `wc -c <'patches03b'`; then
echo shar: \"'patches03b'\" unpacked with wrong size!
fi
# end of 'patches03b'
if test -f 'sys/share/lev_comp.h' -a "${1}" != "-c" ; then
echo shar: Renaming existing file \"'sys/share/lev_comp.h'\" to \"'sys/share/lev_comp.h.orig'\"
mv -f 'sys/share/lev_comp.h' 'sys/share/lev_comp.h.orig'
fi
echo shar: Extracting \"'sys/share/lev_comp.h'\" \(1610 characters\)
sed "s/^X//" >'sys/share/lev_comp.h' <<'END_OF_FILE'
X#define CHAR 257
X#define INTEGER 258
X#define BOOLEAN 259
X#define MESSAGE_ID 260
X#define MAZE_ID 261
X#define LEVEL_ID 262
X#define LEV_INIT_ID 263
X#define GEOMETRY_ID 264
X#define NOMAP_ID 265
X#define OBJECT_ID 266
X#define MONSTER_ID 267
X#define TRAP_ID 268
X#define DOOR_ID 269
X#define DRAWBRIDGE_ID 270
X#define MAZEWALK_ID 271
X#define WALLIFY_ID 272
X#define REGION_ID 273
X#define FILLING 274
X#define RANDOM_OBJECTS_ID 275
X#define RANDOM_MONSTERS_ID 276
X#define RANDOM_PLACES_ID 277
X#define ALTAR_ID 278
X#define LADDER_ID 279
X#define STAIR_ID 280
X#define NON_DIGGABLE_ID 281
X#define NON_PASSWALL_ID 282
X#define ROOM_ID 283
X#define PORTAL_ID 284
X#define TELEPRT_ID 285
X#define BRANCH_ID 286
X#define LEV 287
X#define CHANCE_ID 288
X#define CORRIDOR_ID 289
X#define GOLD_ID 290
X#define ENGRAVING_ID 291
X#define FOUNTAIN_ID 292
X#define POOL_ID 293
X#define SINK_ID 294
X#define NONE 295
X#define RAND_CORRIDOR_ID 296
X#define DOOR_STATE 297
X#define LIGHT_STATE 298
X#define CURSE_TYPE 299
X#define ENGRAVING_TYPE 300
X#define DIRECTION 301
X#define RANDOM_TYPE 302
X#define O_REGISTER 303
X#define M_REGISTER 304
X#define P_REGISTER 305
X#define A_REGISTER 306
X#define ALIGNMENT 307
X#define LEFT_OR_RIGHT 308
X#define CENTER 309
X#define TOP_OR_BOT 310
X#define ALTAR_TYPE 311
X#define UP_OR_DOWN 312
X#define SUBROOM_ID 313
X#define NAME_ID 314
X#define FLAGS_ID 315
X#define FLAG_TYPE 316
X#define MON_ATTITUDE 317
X#define MON_ALERTNESS 318
X#define MON_APPEARANCE 319
X#define STRING 320
X#define MAP_ID 321
Xtypedef union
X{
X int i;
X char* map;
X struct {
X xchar room;
X xchar wall;
X xchar door;
X } corpos;
X} YYSTYPE;
Xextern YYSTYPE yylval;
END_OF_FILE
if test 1610 -ne `wc -c <'sys/share/lev_comp.h'`; then
echo shar: \"'sys/share/lev_comp.h'\" unpacked with wrong size!
fi
# end of 'sys/share/lev_comp.h'
echo shar: End of archive 3 \(of 18\).
cp /dev/null ark3isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 18 archives.
echo "Now execute ./patchit3.sh"
rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0