home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
games
/
volume7
/
nethack3
/
patch6a
< prev
next >
Wrap
Internet Message Format
|
1989-11-27
|
61KB
Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
From: billr@saab.CNA.TEK.COM (Bill Randle)
Newsgroups: comp.sources.games
Subject: v08i054: NetHack3 - display oriented dungeons & dragons (Ver. 3.0), Patch6a
Message-ID: <4843@tekred.CNA.TEK.COM>
Date: 22 Nov 89 19:45:05 GMT
Sender: nobody@tekred.CNA.TEK.COM
Lines: 1905
Approved: billr@saab.CNA.TEK.COM
Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
Posting-number: Volume 8, Issue 54
Archive-name: NetHack3/Patch6a
Patch-To: NetHack3: Volume 7, Issue 56-93
[As before, unpack this in your top level NetHack3 directory.
This set of patches will overwrite several existing files
whose diffs were larger than the source itself and create
several patches06? files to be feed to patch. Use the
do_patch6.sh script to do this automatically. Note that
monst.c is split into two parts. The do_patch6.sh script
cats them together. When I get a chance I will put a copy
of NetHack3 will all 6 patches applied in the archives on
saab and uunet. There are 15 parts (a-o) in this patch (#6).
-br]
[[And now a word from the development team...
This patch contains two major improvements:
First, thanks to Ari Huttunen, different door states show up as different
(configurable) characters on the screen.
Second, doors can now be entered/exited diagonally both for player and
monster.
Third, a gaggle of people credited in the appropriate files developed an
overlay manager for MS-DOS and MSC such that all the options of NetHack can
be supported. See Install.dos and ovlmgr.* for further details.
In more minor news:
You no longer have to pick up food to eat it, and you no longer necessarily
resume eating your interrupted meal.
You can no longer get properties from wielding a non-weapon.
There is a new option, CLIPPING, which allows playing on small screens or
windows.
The multiple demon types portion of HARD has been split off into the new
INFERNO option.
The Macintosh port has been further refined.
The / command now takes configurable characters into account when identifying
items.
Leprechauns and lichs and nymphs and nagas had their letters switched so that
the more formidable monsters get capital letters. Several new low-level
monsters were added.
Drawbridge interactions are much smarter, thanks to Kevin Darcy.
And a large number of minor bug fixes and efficiency enhancements.]]
#! /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 1 (of 15)."
# Contents: MANIFEST.P6 do_patch6.sh patches06b
# Wrapped by billr@saab on Wed Nov 22 11:10:02 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'MANIFEST.P6' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'MANIFEST.P6'\"
else
echo shar: Extracting \"'MANIFEST.P6'\" \(796 characters\)
sed "s/^X//" >'MANIFEST.P6' <<'END_OF_FILE'
X File Name Archive # Description
X-----------------------------------------------------------
X Install.dos 13
X MANIFEST.P6 1 This shipping list
X UPDATE6 3
X do_patch6.sh 1
X include/extern.h 15
X include/system.h 10
X others/Makefile.tcc 14
X patches06a 10
X patches06b 1
X patches06c 5
X patches06d 2
X patches06e 8
X patches06f 3
X patches06g 6
X patches06h 7
X patches06i 9
X patches06j 4
X patches06k 11
X patches06l 12
X src/dbridge.c 15
X src/monst.c1 14
X src/monst.c2 13
END_OF_FILE
if test 796 -ne `wc -c <'MANIFEST.P6'`; then
echo shar: \"'MANIFEST.P6'\" unpacked with wrong size!
fi
# end of 'MANIFEST.P6'
fi
if test -f 'do_patch6.sh' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'do_patch6.sh'\"
else
echo shar: Extracting \"'do_patch6.sh'\" \(830 characters\)
sed "s/^X//" >'do_patch6.sh' <<'END_OF_FILE'
X#! /bin/sh
X# script to call patch to apply diff files
X# make sure all of the patch files (and this file) are in your top level
X# NetHack directory
X#
Xecho "creating monst.c from monst.c1 and monst.c2"
Xcat src/monst.c1 src/monst.c2 > src/monst.c
Xecho "applying patch6a"
Xpatch -p <patches06a
Xecho "applying patch6b"
Xpatch -p <patches06b
Xecho "applying patch6c"
Xpatch -p <patches06c
Xecho "applying patch6d"
Xpatch -p <patches06d
Xecho "applying patch6e"
Xpatch -p <patches06e
Xecho "applying patch6f"
Xpatch -p <patches06f
Xecho "applying patch6g"
Xpatch -p <patches06g
Xecho "applying patch6h"
Xpatch -p <patches06h
Xecho "applying patch6i"
Xpatch -p <patches06i
Xecho "applying patch6j"
Xpatch -p <patches06j
Xecho "applying patch6k"
Xpatch -p <patches06k
Xecho "applying patch6l"
Xpatch -p <patches06l
Xecho "all patches applied, check for rejects"
END_OF_FILE
if test 830 -ne `wc -c <'do_patch6.sh'`; then
echo shar: \"'do_patch6.sh'\" unpacked with wrong size!
fi
chmod +x 'do_patch6.sh'
# end of 'do_patch6.sh'
fi
if test -f 'patches06b' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'patches06b'\"
else
echo shar: Extracting \"'patches06b'\" \(53394 characters\)
sed "s/^X//" >'patches06b' <<'END_OF_FILE'
X*** amiga/Old/NetHack.cnf Sun Nov 19 12:14:58 1989
X--- amiga/NetHack.cnf Fri Oct 20 13:29:58 1989
X***************
X*** 42,48 ****
X # stone, vertical wall, horizontal wall, top left corner, top right corner,
X # bottom left corner, bottom right corner, crosswall, up T wall, down T wall,
X # left T wall, right T wall, vertical beam, horizontal beam, left slant, right
X! # slant, door, floor, corridor, up stairs, down stairs, trap, web, pool,
X # fountain, sink, throne, altar, up ladder, down ladder, vertical drawbridge
X # wall, horizontal drawbridge wall
X #
X--- 42,49 ----
X # stone, vertical wall, horizontal wall, top left corner, top right corner,
X # bottom left corner, bottom right corner, crosswall, up T wall, down T wall,
X # left T wall, right T wall, vertical beam, horizontal beam, left slant, right
X! # slant, no door, vertical open door, horizontal open door, closed door,
X! # floor, corridor, up stairs, down stairs, trap, web, pool,
X # fountain, sink, throne, altar, up ladder, down ladder, vertical drawbridge
X # wall, horizontal drawbridge wall
X #
X***************
X*** 52,56 ****
X # Note that the hack.font has special graphics characters from 192 on.
X
X # An example using the hack.font graphics character set:
X! # ' ' | - . . ` ' - - - - - | - \ / + . # < > ^ " } { # \ _ < > # #
X! GRAPHICS = 032 192 193 194 195 196 197 198 216 214 215 213 192 193 092 047 198 046 035 060 062 094 034 125 123 035 092 095 060 062 035 035
X--- 53,57 ----
X # Note that the hack.font has special graphics characters from 192 on.
X
X # An example using the hack.font graphics character set:
X! # ' ' | - . . ` ' - - - - - | - \ / . - | + . # < > ^ " } { # \ _ < > # #
X! GRAPHICS = 032 192 193 194 195 196 197 198 216 214 215 213 192 193 092 047 046 193 192 198 046 035 060 062 094 034 125 123 035 092 095 060 062 035 035
X*** amiga/Old/amidos.c Sun Nov 19 12:15:36 1989
X--- amiga/amidos.c Fri Oct 20 13:29:41 1989
X***************
X*** 478,484 ****
X int lth;
X
X if ((lth = sscanf(bufp,
X! "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",
X &translate[0], &translate[1], &translate[2],
X &translate[3], &translate[4], &translate[5],
X &translate[6], &translate[7], &translate[8],
X--- 478,484 ----
X int lth;
X
X if ((lth = sscanf(bufp,
X! "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",
X &translate[0], &translate[1], &translate[2],
X &translate[3], &translate[4], &translate[5],
X &translate[6], &translate[7], &translate[8],
X***************
X*** 489,495 ****
X &translate[21], &translate[22], &translate[23],
X &translate[24], &translate[25], &translate[26],
X &translate[27], &translate[28], &translate[29],
X! &translate[30], &translate[31])) < 0) {
X msmsg ("Syntax error in GRAPHICS\n");
X getreturn("to continue");
X } /* Yuck! Worked only with low-byte first!!! */
X--- 489,496 ----
X &translate[21], &translate[22], &translate[23],
X &translate[24], &translate[25], &translate[26],
X &translate[27], &translate[28], &translate[29],
X! &translate[30], &translate[31], &translate[32],
X! &translate[33], &translate[34])) < 0) {
X msmsg ("Syntax error in GRAPHICS\n");
X getreturn("to continue");
X } /* Yuck! Worked only with low-byte first!!! */
X*** include/Old/amiconf.h Sun Nov 19 15:12:11 1989
X--- include/amiconf.h Fri Nov 17 20:51:36 1989
X***************
X*** 20,29 ****
X #include "pcconf.h" /* remainder of stuff is almost same as the PC */
X #endif
X
X- #undef index
X- #undef rindex
X- extern char *index P((const char *,int));
X- extern char *rindex P((const char *,int));
X #define memcpy(dest, source, size) movmem(source, dest, size)
X
X /*
X--- 20,25 ----
X*** include/Old/config.h Sun Nov 19 15:12:56 1989
X--- include/config.h Fri Nov 17 20:51:38 1989
X***************
X*** 42,54 ****
X #define LSC 1 /* for the Lighspeed 3.01p4 C compiler on the Mac */
X /* #define AZTEC 1 /* for the Manx Aztec C 3.6c compiler */
X /* #define THINKC4 /* for the Think C 4 compiler */
X!
X #define SMALLDATA 1 /* for Mac compilers with 32K global data limit */
X
X # ifdef KR1ED
X #define defined(x) (x<<1) /* Lightspeed & Aztec can't handle defined() yet */
X # endif
X-
X #endif
X
X
X--- 42,53 ----
X #define LSC 1 /* for the Lighspeed 3.01p4 C compiler on the Mac */
X /* #define AZTEC 1 /* for the Manx Aztec C 3.6c compiler */
X /* #define THINKC4 /* for the Think C 4 compiler */
X! #define NEED_VARARGS /* if you're using precompiled headers */
X #define SMALLDATA 1 /* for Mac compilers with 32K global data limit */
X
X # ifdef KR1ED
X #define defined(x) (x<<1) /* Lightspeed & Aztec can't handle defined() yet */
X # endif
X #endif
X
X
X***************
X*** 79,86 ****
X * smaller bones/level/save files, but require additional code and time.
X */
X
X! #define COMPRESS "/usr/local/compress"
X! /* #define ZEROCOMP /* Use only if COMPRESS is not used -- Olaf Seibert */
X
X
X #define CHDIR /* delete if no chdir() available */
X--- 78,87 ----
X * smaller bones/level/save files, but require additional code and time.
X */
X
X! #define COMPRESS "/usr/local/compress" /* path name for 'compress' */
X! #ifndef COMPRESS
X! #define ZEROCOMP /* Use only if COMPRESS is not used -- Olaf Seibert */
X! #endif
X
X
X #define CHDIR /* delete if no chdir() available */
X***************
X*** 90,96 ****
X * If you define HACKDIR, then this will be the default playground;
X * otherwise it will be the current directory.
X */
X! #define HACKDIR "/usr/games/lib/nethackdir"
X
X /*
X * Some system administrators are stupid enough to make Hack suid root
X--- 91,97 ----
X * If you define HACKDIR, then this will be the default playground;
X * otherwise it will be the current directory.
X */
X! #define HACKDIR "/usr/games/lib/nethackdir" /* nethack directory */
X
X /*
X * Some system administrators are stupid enough to make Hack suid root
X***************
X*** 99,105 ****
X * since the user might create files in a directory of his choice.
X * Of course SECURE is meaningful only if HACKDIR is defined.
X */
X! /* #define SECURE /* do setuid(getuid()) after chdir() */
X
X /*
X * If it is desirable to limit the number of people that can play Hack
X--- 100,106 ----
X * since the user might create files in a directory of his choice.
X * Of course SECURE is meaningful only if HACKDIR is defined.
X */
X! /* #define SECURE /* do setuid(getuid()) after chdir() */
X
X /*
X * If it is desirable to limit the number of people that can play Hack
X***************
X*** 171,209 ****
X * complexity of the game but also to the size of the load module.
X */
X
X! #define SPELLS 1 /* Spell casting by M. Stephenson */
X #define POLYSELF 1 /* Polymorph self code by Ken Arromdee */
X #define THRONES 1 /* Thrones and Courts by M. Stephenson */
X- #define PROBING 1 /* Wand of probing code by Gil Neiger */
X- #define REDO 1 /* support for redoing last command - DGK */
X- #define HARD 1 /* Enhanced wizard code by M. Stephenson */
X- #define WALKIES 1 /* Leash code by M. Stephenson */
X #define FOUNTAINS 1 /* Fountain code by SRT (+ GAN + EB) */
X- #define KOPS 1 /* Keystone Kops by Scott R. Turner */
X- #define COM_COMPL 1 /* Command line completion by John S. Bien */
X- #define MEDUSA 1 /* Mirrors and the Medusa by Richard P. Hughey */
X- #define NAMED_ITEMS 1 /* Special named items handling */
X- #define ARMY 1 /* Soldiers, barracks by Steve Creps */
X- #define SHIRT 1 /* Hawaiian shirt code by Steve Linhart */
X- #define THEOLOGY 1 /* Smarter gods - The Unknown Hacker */
X #define SINKS 1 /* Kitchen sinks - Janet Walz */
X- #define SOUNDS 1 /* Add more life to the dungeon */
X- #define REINCARNATION 1 /* Rogue-like levels */
X- #define ELBERETH 1 /* Allow for disabling the E word - Mike 3point */
X- #define WORM 1 /* Long worms */
X- #define ORACLE 1 /* Include another source of information */
X- #define EXPLORE_MODE 1 /* Allow non-scoring play with additional powers */
X #define ALTARS 1 /* Sacrifice sites - Jean-Christophe Collet */
X #define WALLIFIED_MAZE 1 /* Fancy mazes - Jean-Christophe Collet */
X! #ifdef HARD
X! #define SEDUCE 1 /* Succubi/incubi additions, by KAA, suggested by IM */
X! #endif
X #define STRONGHOLD 1 /* Challenging special levels - Jean-Christophe Collet*/
X! #define MUSIC 1 /* Musical instruments - Jean-Christophe Collet */
X #define GOLEMS 1 /* Golems, by KAA */
X #define TOLKIEN 1 /* More varieties of objects and monsters */
X! #define KICK 1 /* Allow kicking things besides doors -Izchak Miller */
X #define TUTTI_FRUTTI 1 /* Fruits as in Rogue, but which work... -KAA */
X
X #ifdef REDO
X #define DOAGAIN '\001' /* The "redo" key used in tty.c and cmd.c */
X--- 172,218 ----
X * complexity of the game but also to the size of the load module.
X */
X
X! /* game features */
X #define POLYSELF 1 /* Polymorph self code by Ken Arromdee */
X+ #define THEOLOGY 1 /* Smarter gods - The Unknown Hacker */
X+ #define SOUNDS 1 /* Add more life to the dungeon */
X+ #define KICK 1 /* Allow kicking things besides doors -Izchak Miller */
X+ /* dungeon features */
X #define THRONES 1 /* Thrones and Courts by M. Stephenson */
X #define FOUNTAINS 1 /* Fountain code by SRT (+ GAN + EB) */
X #define SINKS 1 /* Kitchen sinks - Janet Walz */
X #define ALTARS 1 /* Sacrifice sites - Jean-Christophe Collet */
X+ /* dungeon levels */
X #define WALLIFIED_MAZE 1 /* Fancy mazes - Jean-Christophe Collet */
X! #define REINCARNATION 1 /* Rogue-like levels */
X #define STRONGHOLD 1 /* Challenging special levels - Jean-Christophe Collet*/
X! /* monsters & objects */
X! #define ORACLE 1 /* Include another source of information */
X! #define MEDUSA 1 /* Mirrors and the Medusa by Richard P. Hughey */
X! #define KOPS 1 /* Keystone Kops by Scott R. Turner */
X! #define ARMY 1 /* Soldiers, barracks by Steve Creps */
X! #define WORM 1 /* Long worms */
X #define GOLEMS 1 /* Golems, by KAA */
X+ #define INFERNO 1 /* Demons & Demonlords */
X+ #ifdef INFERNO
X+ #define SEDUCE 1 /* Succubi/incubi additions, by KAA, suggested by IM */
X+ #endif
X #define TOLKIEN 1 /* More varieties of objects and monsters */
X! #define PROBING 1 /* Wand of probing code by Gil Neiger */
X! #define WALKIES 1 /* Leash code by M. Stephenson */
X! #define SHIRT 1 /* Hawaiian shirt code by Steve Linhart */
X! #define MUSIC 1 /* Musical instruments - Jean-Christophe Collet */
X #define TUTTI_FRUTTI 1 /* Fruits as in Rogue, but which work... -KAA */
X+ #define SPELLS 1 /* Spell casting by M. Stephenson */
X+ #define NAMED_ITEMS 1 /* Special named items handling */
X+ /* difficulty */
X+ #define ELBERETH 1 /* Allow for disabling the E word - Mike 3point */
X+ #define EXPLORE_MODE 1 /* Allow non-scoring play with additional powers */
X+ #define HARD 1 /* Enhanced wizard code by M. Stephenson */
X+ /* I/O */
X+ #define REDO 1 /* support for redoing last command - DGK */
X+ #define COM_COMPL 1 /* Command line completion by John S. Bien */
X+ #define CLIPPING 1 /* allow smaller screens -- ERS */
X
X #ifdef REDO
X #define DOAGAIN '\001' /* The "redo" key used in tty.c and cmd.c */
X*** include/Old/decl.h Sun Nov 19 15:13:23 1989
X--- include/decl.h Sun Nov 19 09:24:33 1989
X***************
X*** 51,56 ****
X--- 51,57 ----
X E xchar fountsound, sinksound; /* numbers of noisy things */
X
X E char pl_character[PL_CSIZ];
X+ E const char *pl_classes;
X #ifdef TUTTI_FRUTTI
X E char pl_fruit[PL_FSIZ];
X E int current_fruit;
X***************
X*** 118,123 ****
X--- 119,129 ----
X
X #ifdef REDO
X E int in_doagain;
X+ #endif
X+
X+ #ifdef CLIPPING
X+ E boolean clipping;
X+ E int clipx, clipy, clipxmax, clipymax;
X #endif
X
X #ifdef TEXTCOLOR
X*** include/Old/flag.h Sun Nov 19 15:15:17 1989
X--- include/flag.h Sat Nov 18 09:25:28 1989
X***************
X*** 52,58 ****
X boolean pickup; /* whether you pickup or move and look */
X boolean num_pad; /* use numbers for movement commands */
X #ifdef TEXTCOLOR
X! boolean use_color; /* use color grapics */
X #endif
X #ifdef DGK
X boolean IBMBIOS; /* whether we can use a BIOS call for
X--- 52,58 ----
X boolean pickup; /* whether you pickup or move and look */
X boolean num_pad; /* use numbers for movement commands */
X #ifdef TEXTCOLOR
X! boolean use_color; /* use color graphics */
X #endif
X #ifdef DGK
X boolean IBMBIOS; /* whether we can use a BIOS call for
X*** include/Old/global.h Sun Nov 19 15:15:38 1989
X--- include/global.h Fri Nov 17 20:51:37 1989
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)global.h 3.0 89/07/12
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: @(#)global.h 3.0 89/11/08
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 9,15 ****
X
X
X /* #define BETA /* if a beta-test copy [MRS] */
X! #define VERSION "3.0g" /* version number. */
X
X /*
X * Files expected to exist in the playground directory.
X--- 9,15 ----
X
X
X /* #define BETA /* if a beta-test copy [MRS] */
X! #define VERSION "3.0h" /* version number. */
X
X /*
X * Files expected to exist in the playground directory.
X*** include/Old/hack.h Sun Nov 19 15:15:59 1989
X--- include/hack.h Sun Nov 19 09:24:34 1989
X***************
X*** 79,84 ****
X--- 79,94 ----
X #include "extern.h"
X #endif
X
X+ #ifdef OVERLAY
X+ #ifndef TRAMPOLI_H
X+ #include "trampoli.h"
X+ #endif
X+
X+ #undef EXTERN_H
X+ #include "extern.h"
X+ #endif /* OVERLAY */
X+
X+
X #ifdef STRONGHOLD
X # define Inhell (dlevel > stronghold_level && dlevel <= MAXLEVEL)
X #else
X***************
X*** 103,109 ****
X #define makeknown(x) objects[x].oc_name_known = 1
X # endif /* STUPID_CPP */
X
X! #ifdef MSDOS
X #define getuid() 1
X #define getlogin() ((char *) NULL)
X #endif /* MSDOS */
X--- 113,119 ----
X #define makeknown(x) objects[x].oc_name_known = 1
X # endif /* STUPID_CPP */
X
X! #if defined(MSDOS) || defined(MACOS)
X #define getuid() 1
X #define getlogin() ((char *) NULL)
X #endif /* MSDOS */
X*** include/Old/macconf.h Sun Nov 19 15:16:31 1989
X--- include/macconf.h Fri Nov 17 20:51:36 1989
X***************
X*** 62,68 ****
X #include <Stdlib.h>
X #include <String.h>
X #undef getuid
X! #ifndef MAKEDEFS_C
X #ifdef stdout
X #undef stdout
X #define stdout (FILE *)NULL
X--- 62,68 ----
X #include <Stdlib.h>
X #include <String.h>
X #undef getuid
X! #if !defined(MAKEDEFS_C) && !defined(LEV_LEX_C)
X #ifdef stdout
X #undef stdout
X #define stdout (FILE *)NULL
X***************
X*** 190,195 ****
X--- 190,196 ----
X #define LEVEL_TYPE 'LEVL'
X #define HACK_DATA 'HDTA'
X #define MONST_DATA 101
X+ #define OBJECT_DATA 104
X #define DEFAULT_DATA 100
X
X #include "extern.h"
X*** include/Old/mondata.h Sun Nov 19 15:17:13 1989
X--- include/mondata.h Fri Nov 10 17:01:04 1989
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)mondata.h 3.0 89/03/06
X /* NetHack may be freely redistributed. See license for details. */
X /* Copyright (c) 1989 Mike Threepoint */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)mondata.h 3.0 89/11/08
X /* NetHack may be freely redistributed. See license for details. */
X /* Copyright (c) 1989 Mike Threepoint */
X
X***************
X*** 7,14 ****
X
X # ifndef STUPID_CPP /* otherwise these macros are functions in mondata.c */
X
X! #define bigmonst(ptr) (((ptr)->mflags1 & M1_BIG) != 0L)
X! #define verysmall(ptr) (((ptr)->mflags1 & M1_VSMALL) != 0L)
X #define is_flyer(ptr) (((ptr)->mflags1 & M1_FLY) != 0L)
X #define is_floater(ptr) ((ptr)->mlet == S_EYE)
X #define is_swimmer(ptr) (((ptr)->mflags1 & M1_SWIM) != 0L)
X--- 7,15 ----
X
X # ifndef STUPID_CPP /* otherwise these macros are functions in mondata.c */
X
X! #define verysmall(ptr) ((ptr)->msize < MZ_SMALL)
X! #define bigmonst(ptr) ((ptr)->msize >= MZ_LARGE)
X!
X #define is_flyer(ptr) (((ptr)->mflags1 & M1_FLY) != 0L)
X #define is_floater(ptr) ((ptr)->mlet == S_EYE)
X #define is_swimmer(ptr) (((ptr)->mflags1 & M1_SWIM) != 0L)
X***************
X*** 60,71 ****
X #define is_wanderer(ptr) (((ptr)->mflags2 & M2_WANDER) != 0L)
X #define is_lord(ptr) (((ptr)->mflags1 & M1_LORD) != 0L)
X #define is_prince(ptr) (((ptr)->mflags1 & M1_PRINCE) != 0L)
X! #ifdef HARD
X #define is_ndemon(ptr) (is_demon(ptr) && \
X (((ptr)->mflags1 & (M1_LORD | M1_PRINCE)) == 0L))
X! #else /* HARD */
X #define is_ndemon(ptr) (ptr == &mons[PM_DEMON])
X! #endif /* HARD */
X #define is_dlord(ptr) (is_demon(ptr) && is_lord(ptr))
X #define is_dprince(ptr) (is_demon(ptr) && is_prince(ptr))
X #define type_is_pname(ptr) (((ptr)->mflags2 & M2_PNAME) != 0L)
X--- 61,72 ----
X #define is_wanderer(ptr) (((ptr)->mflags2 & M2_WANDER) != 0L)
X #define is_lord(ptr) (((ptr)->mflags1 & M1_LORD) != 0L)
X #define is_prince(ptr) (((ptr)->mflags1 & M1_PRINCE) != 0L)
X! #ifdef INFERNO
X #define is_ndemon(ptr) (is_demon(ptr) && \
X (((ptr)->mflags1 & (M1_LORD | M1_PRINCE)) == 0L))
X! #else
X #define is_ndemon(ptr) (ptr == &mons[PM_DEMON])
X! #endif
X #define is_dlord(ptr) (is_demon(ptr) && is_lord(ptr))
X #define is_dprince(ptr) (is_demon(ptr) && is_prince(ptr))
X #define type_is_pname(ptr) (((ptr)->mflags2 & M2_PNAME) != 0L)
X*** include/Old/monflag.h Sun Nov 19 15:17:26 1989
X--- include/monflag.h Fri Nov 10 17:01:08 1989
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)monflag.h 3.0 89/06/23
X /* NetHack may be freely redistributed. See license for details. */
X /* Copyright (c) 1989 Mike Threepoint */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)monflag.h 3.0 89/11/09
X /* NetHack may be freely redistributed. See license for details. */
X /* Copyright (c) 1989 Mike Threepoint */
X
X***************
X*** 18,55 ****
X #define MS_NEIGH 10 /* neighs, as an equine */
X #define MS_WAIL 11 /* wails, as a tortured soul */
X #define MS_GURGLE 12 /* gurgles, as liquid or through saliva */
X #define MS_SHRIEK 15 /* wakes up others */
X! #define MS_IMITATE 18 /* imitates others (leocrotta) */
X! #define MS_MUMBLE 19 /* says something or other */
X #define MS_SEDUCE 20 /* "Hello, sailor." (Nymphs) */
X! #ifdef KOPS
X! #define MS_ARREST 21 /* "Stop in the name of the law!" (Kops) */
X! #endif
X! #define MS_LAUGH 22 /* grins, smiles, giggles, and laughs */
X! #define MS_JEER 23 /* berates you */
X! #ifdef HARD
X! #define MS_BRIBE 24 /* asks for money, or berates you */
X #endif
X! #define MS_CUSS 25 /* really berates you (the Wiz) */
X #ifdef ORACLE
X! #define MS_ORACLE 26 /* do a consultation */
X #endif
X #ifdef ALTARS
X! #define MS_PRIEST 27 /* ask for contribution; do cleansing */
X #endif
X- #define MS_GUARD 28 /* "Please drop that gold and follow me." */
X- #define MS_NURSE 29 /* "Take off your shirt, please." */
X- #define MS_SELL 30 /* demand payment, complain about shoplifters */
X- #define MS_DJINNI 31 /* "Thank you for freeing me!" */
X #ifdef ARMY
X! #define MS_SOLDIER 32 /* army expressions */
X #endif
X- #define MS_VAMPIRE 33 /* vampiric seduction, Vlad's exclamations */
X- #define MS_HUMANOID 34 /* generic traveling companion */
X- #define MS_ORC MS_GRUNT /* other intelligent brutes */
X
X- #define M1_BIG 0x00000001L
X- #define M1_VSMALL 0x00000002L
X #define M1_FLY 0x00000004L
X #define M1_SWIM 0x00000008L
X #define M1_WALLWALK 0x00000010L
X--- 18,54 ----
X #define MS_NEIGH 10 /* neighs, as an equine */
X #define MS_WAIL 11 /* wails, as a tortured soul */
X #define MS_GURGLE 12 /* gurgles, as liquid or through saliva */
X+ #define MS_BURBLE 13 /* burbles (jabberwock) */
X #define MS_SHRIEK 15 /* wakes up others */
X! #define MS_LAUGH 17 /* grins, smiles, giggles, and laughs */
X! #define MS_MUMBLE 18 /* says something or other */
X! #define MS_IMITATE 19 /* imitates others (leocrotta) */
X #define MS_SEDUCE 20 /* "Hello, sailor." (Nymphs) */
X! #define MS_VAMPIRE 21 /* vampiric seduction, Vlad's exclamations */
X! #define MS_ORC MS_GRUNT /* intelligent brutes */
X! #define MS_JEER 24 /* berates you */
X! #ifdef INFERNO
X! #define MS_BRIBE 25 /* asks for money, or berates you */
X #endif
X! #define MS_CUSS 26 /* really berates you (the Wiz) */
X! #define MS_NURSE 27 /* "Take off your shirt, please." */
X! #define MS_DJINNI 28 /* "Thank you for freeing me!" */
X! #define MS_HUMANOID 29 /* generic traveling companion */
X! #define MS_GUARD 30 /* "Please drop that gold and follow me." */
X! #define MS_SELL 31 /* demand payment, complain about shoplifters */
X #ifdef ORACLE
X! #define MS_ORACLE 32 /* do a consultation */
X #endif
X #ifdef ALTARS
X! #define MS_PRIEST 33 /* ask for contribution; do cleansing */
X! #endif
X! #ifdef KOPS
X! #define MS_ARREST 34 /* "Stop in the name of the law!" (Kops) */
X #endif
X #ifdef ARMY
X! #define MS_SOLDIER 35 /* army expressions */
X #endif
X
X #define M1_FLY 0x00000004L
X #define M1_SWIM 0x00000008L
X #define M1_WALLWALK 0x00000010L
X***************
X*** 105,109 ****
X--- 104,116 ----
X #define M2_OMNIVORE 0x00300000L /* eats both */
X #define M2_THICK_HIDE 0x01000000L /* has thick hide or scales */
X #define M2_AMORPHOUS 0x02000000L /* fluid; can slide under doors */
X+
X+ #define MZ_TINY 0 /* < 2' */
X+ #define MZ_SMALL 1 /* 2-4' */
X+ #define MZ_MEDIUM 2 /* 4-7' */
X+ #define MZ_HUMAN MZ_MEDIUM /* human-sized */
X+ #define MZ_LARGE 3 /* 7-12' */
X+ #define MZ_HUGE 4 /* 12-25' */
X+ #define MZ_GIGANTIC 7 /* off the scale */
X
X #endif /* MONFLAG_H */
X*** include/Old/monsym.h Sun Nov 19 15:17:50 1989
X--- include/monsym.h Fri Nov 17 19:33:10 1989
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)makemon.c 3.0 88/04/11
X /* Monster symbols and creation information rev 1.0 */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)monsym.h 3.0 89/11/08
X /* Monster symbols and creation information rev 1.0 */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 10,24 ****
X #define S_COCKATRICE 'c'
X #define S_DOG 'd'
X #define S_EYE 'e'
X! #define S_FELINE 'f'
X #define S_GREMLIN 'g'
X #define S_HUMANOID 'h'
X #define S_IMP 'i'
X #define S_JELLY 'j'
X #define S_KOBOLD 'k'
X! #define S_LICH 'l'
X #define S_MIMIC 'm'
X! #define S_NAGA 'n'
X #define S_ORC 'o'
X #define S_PIERCER 'p'
X #define S_QUADRUPED 'q'
X--- 10,24 ----
X #define S_COCKATRICE 'c'
X #define S_DOG 'd'
X #define S_EYE 'e'
X! #define S_FELINE 'f'
X #define S_GREMLIN 'g'
X #define S_HUMANOID 'h'
X #define S_IMP 'i'
X #define S_JELLY 'j'
X #define S_KOBOLD 'k'
X! #define S_LEPRECHAUN 'l'
X #define S_MIMIC 'm'
X! #define S_NYMPH 'n'
X #define S_ORC 'o'
X #define S_PIERCER 'p'
X #define S_QUADRUPED 'q'
X***************
X*** 29,35 ****
X #define S_VORTEX 'v'
X #define S_WORM 'w'
X #define S_XAN 'x'
X! #define S_YLIGHT 'y'
X #define S_ZRUTY 'z'
X #define S_APE 'A'
X #define S_BAT 'B'
X--- 29,35 ----
X #define S_VORTEX 'v'
X #define S_WORM 'w'
X #define S_XAN 'x'
X! #define S_YLIGHT 'y'
X #define S_ZRUTY 'z'
X #define S_APE 'A'
X #define S_BAT 'B'
X***************
X*** 42,50 ****
X #define S_STALKER 'I'
X #define S_JABBERWOCK 'J'
X #define S_KOP 'K'
X! #define S_LEPRECHAUN 'L'
X #define S_MUMMY 'M'
X! #define S_NYMPH 'N'
X #define S_OGRE 'O'
X #define S_PUDDING 'P'
X #define S_QUANTMECH 'Q'
X--- 42,50 ----
X #define S_STALKER 'I'
X #define S_JABBERWOCK 'J'
X #define S_KOP 'K'
X! #define S_LICH 'L'
X #define S_MUMMY 'M'
X! #define S_NAGA 'N'
X #define S_OGRE 'O'
X #define S_PUDDING 'P'
X #define S_QUANTMECH 'Q'
X***************
X*** 59,68 ****
X #define S_ZOMBIE 'Z'
X #define S_HUMAN '@'
X #define S_GHOST ' '
X! #define S_GOLEM '\''
X #define S_DEMON '&'
X #define S_EEL ';'
X! #define S_CHAMELEON ':'
X
X #define S_WORM_TAIL '~'
X #define S_MIMIC_DEF ']'
X--- 59,68 ----
X #define S_ZOMBIE 'Z'
X #define S_HUMAN '@'
X #define S_GHOST ' '
X! #define S_GOLEM '\''
X #define S_DEMON '&'
X #define S_EEL ';'
X! #define S_LIZARD ':'
X
X #define S_WORM_TAIL '~'
X #define S_MIMIC_DEF ']'
X*** include/Old/obj.h Sun Nov 19 15:18:14 1989
X--- include/obj.h Sun Nov 12 10:39:23 1989
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)obj.h 3.0 88/04/12
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: @(#)obj.h 3.0 89/11/10
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 22,27 ****
X--- 22,28 ----
X marks your eggs, spinach tins, key shapes
X indicates statues have spellbooks inside
X tells which fruit a fruit is
X+ marks diluted potions
X special for uball and amulet %% BAH */
X #define N_LOX 10 /* # of key/lock shapes */
X char olet;
X***************
X*** 31,39 ****
X Bitfield(oinvis,1); /* not yet implemented */
X Bitfield(olocked,1); /* object is locked */
X #define recharged olocked /* recharged once */
X! #define oeaten olocked /* partially eaten food */
X Bitfield(otrapped,1); /* container is trapped */
X! #define opoisoned otrapped /* weapon has been coated with poison */
X Bitfield(odispl,1);
X Bitfield(known,1); /* exact nature known */
X Bitfield(dknown,1); /* color or text known */
X--- 32,40 ----
X Bitfield(oinvis,1); /* not yet implemented */
X Bitfield(olocked,1); /* object is locked */
X #define recharged olocked /* recharged once */
X! #define orotten olocked /* rotten food */
X Bitfield(otrapped,1); /* container is trapped */
X! #define opoisoned otrapped /* object (weapon) is coated with poison */
X Bitfield(odispl,1);
X Bitfield(known,1); /* exact nature known */
X Bitfield(dknown,1); /* color or text known */
X***************
X*** 42,51 ****
X Bitfield(blessed,1);
X Bitfield(unpaid,1); /* on some bill */
X Bitfield(rustfree,1);
X! #define flameproof rustfree/* for non-metal armor items */
X! #define in_use rustfree/* for magic items before useup items */
X Bitfield(no_charge,1); /* if shk shouldn't charge for this */
X Bitfield(onamelth,6);
X long age; /* creation date */
X long owornmask;
X
X--- 43,54 ----
X Bitfield(blessed,1);
X Bitfield(unpaid,1); /* on some bill */
X Bitfield(rustfree,1);
X! #ifndef NO_SIGNAL
X! # define in_use rustfree /* for magic items before useup items */
X! #endif
X Bitfield(no_charge,1); /* if shk shouldn't charge for this */
X Bitfield(onamelth,6);
X+ unsigned oeaten; /* nutrition left in food, if partly eaten */
X long age; /* creation date */
X long owornmask;
X
X*** include/Old/objclass.h Sun Nov 19 15:18:27 1989
X--- include/objclass.h Tue Nov 7 14:25:54 1989
X***************
X*** 47,54 ****
X #define WP_BOW 1
X #define WP_SLING 2
X #define WP_CROSSBOW 3
X! #define a_ac oc_oc1 /* for armors - only used in ARM_BONUS */
X! #define ARM_BONUS(obj) ((10 - objects[obj->otyp].a_ac) + obj->spe)
X #define a_can oc_oc2 /* for armors */
X #define bits oc_oc1 /* for wands */
X /* wands */
X--- 47,53 ----
X #define WP_BOW 1
X #define WP_SLING 2
X #define WP_CROSSBOW 3
X! #define a_ac oc_oc1 /* for armors - used in ARM_BONUS in do.c */
X #define a_can oc_oc2 /* for armors */
X #define bits oc_oc1 /* for wands */
X /* wands */
X***************
X*** 66,72 ****
X--- 65,80 ----
X #endif
X };
X
X+ #if defined(MACOS) && !defined(MAKEDEFS_C)
X+ struct small_objclass{
X+ char *oc_name; /* actual name */
X+ char *oc_descr; /* description when name unknown */
X+ };
X+ extern struct small_objclass sm_obj[];
X+ extern struct objclass *objects;
X+ #else
X extern struct objclass objects[];
X+ #endif /* MACOS && !MAKEDEFS_C */
X
X /* definitions of all object-symbols */
X
X***************
X*** 90,98 ****
X #ifdef SPELLS
X #define SPBOOK_SYM '+' /* actually SPELL-book */
X #endif
X- /* Other places with explicit knowledge of object symbols:
X- * pager.c: if(q == '%') pline("%% a piece of food");
X- */
X
X #ifdef TUTTI_FRUTTI
X struct fruit {
X--- 98,103 ----
X*** include/Old/patchlevel.h Sun Nov 19 15:18:44 1989
X--- include/patchlevel.h Sun Nov 19 15:11:38 1989
X***************
X*** 48,55 ****
X * add support for Macintosh OS (courtesy Johnny Lee)
X * fix annoying dependency loop via new color.h file
X * allow interruption while eating -- general handling of partially eaten food
X! * smarter treatment of iron balls
X * a handful of other bug fixes
X */
X
X! #define PATCHLEVEL 5
X--- 48,69 ----
X * add support for Macintosh OS (courtesy Johnny Lee)
X * fix annoying dependency loop via new color.h file
X * allow interruption while eating -- general handling of partially eaten food
X! * smarter treatment of iron balls (courtesy Kevin Darcy)
X * a handful of other bug fixes
X */
X
X! /*
X! * Patch 6, November 19, 1989
X! * add overlay support for MS-DOS (courtesy Pierre Martineau, Stephen
X! * Spackman, and Norm Meluch)
X! * refine Macintosh port
X! * different door states show as different symbols (courtesy Ari Huttunen)
X! * smarter drawbridges (courtesy Kevin Darcy)
X! * add CLIPPING and split INFERNO off HARD
X! * further refine eating code wrt picking up and resumption
X! * make first few levels easier, by adding :x monsters and increasing initial
X! * attribute points and hitting probability
X! * teach '/' about configurable symbols
X! */
X!
X! #define PATCHLEVEL 6
X*** include/Old/pcconf.h Sun Nov 19 15:18:57 1989
X--- include/pcconf.h Fri Nov 17 20:51:35 1989
X***************
X*** 10,22 ****
X /* #define OS2_CODEVIEW /* define for OS/2 CodeView debugger,
X otherwise path searches may fail (TH) */
X
X /*
X * The following options are configurable:
X */
X
X #define DGK /* MS DOS specific enhancements by dgk */
X
X! /* #define TERMLIB /* enable use of termcap file /etc/termcap */
X /* or ./termcap for MSDOS (SAC) */
X /* compile and link in Fred Fish's termcap library, */
X /* enclosed in TERMCAP.ARC, to use this */
X--- 10,25 ----
X /* #define OS2_CODEVIEW /* define for OS/2 CodeView debugger,
X otherwise path searches may fail (TH) */
X
X+ #ifndef TOS
X /*
X * The following options are configurable:
X */
X
X+ #define OVERLAY /* MS DOS overlay manager - PGM */
X+
X #define DGK /* MS DOS specific enhancements by dgk */
X
X! #define TERMLIB /* enable use of termcap file /etc/termcap */
X /* or ./termcap for MSDOS (SAC) */
X /* compile and link in Fred Fish's termcap library, */
X /* enclosed in TERMCAP.ARC, to use this */
X***************
X*** 24,37 ****
X
X #define RANDOM /* have Berkeley random(3) */
X
X! #define PATHLEN 64 /* maximum pathlength */
X #define FILENAME 80 /* maximum filename length (conservative) */
X #ifndef MSDOS_H
X! #include "msdos.h" /* contains necessary externs for [os_name].c */
X #endif
X! #define glo(x) name_file(lock, (int)x) /* name_file used for bones */
X extern const char *configfile;
X- /*#define SHELL /* via exec of COMMAND.COM */
X
X #ifdef DGK
X /* Selectable DGK options:
X--- 27,43 ----
X
X #define RANDOM /* have Berkeley random(3) */
X
X! #define SHELL /* via exec of COMMAND.COM */
X!
X! #endif /* TOS */
X!
X! #define PATHLEN 64 /* maximum pathlength */
X #define FILENAME 80 /* maximum filename length (conservative) */
X #ifndef MSDOS_H
X! #include "msdos.h" /* contains necessary externs for [os_name].c */
X #endif
X! #define glo(x) name_file(lock, (int)x) /* name_file used for bones */
X extern const char *configfile;
X
X #ifdef DGK
X /* Selectable DGK options:
X***************
X*** 41,47 ****
X /* Non-Selectable DGK options:
X */
X # define FROMPERM 1 /* for ramdisk use */
X! # define TOPERM 2 /* for ramdisk use */
X
X #endif /* DGK /**/
X
X--- 47,53 ----
X /* Non-Selectable DGK options:
X */
X # define FROMPERM 1 /* for ramdisk use */
X! # define TOPERM 2 /* for ramdisk use */
X
X #endif /* DGK /**/
X
X***************
X*** 67,75 ****
X #endif /* RANDOM */
X
X #ifdef __TURBOC__
X! #define alloc malloc
X # if __TURBOC__ < 0x0200 /* version 2.0 has signal() */
X! #define signal ssignal
X # endif
X /* rename the next two functions - they clash with the Turbo C library */
X #define getdate getdate_
X--- 73,81 ----
X #endif /* RANDOM */
X
X #ifdef __TURBOC__
X! #define alloc malloc
X # if __TURBOC__ < 0x0200 /* version 2.0 has signal() */
X! #define signal ssignal
X # endif
X /* rename the next two functions - they clash with the Turbo C library */
X #define getdate getdate_
X***************
X*** 77,88 ****
X #endif
X
X #ifndef TOS
X! #define FCMASK 0660 /* file creation mask */
X #endif
X
X #include <fcntl.h>
X
X! #define exit msexit /* do chdir first */
X
X #ifndef REDO
X #undef Getchar
X--- 83,94 ----
X #endif
X
X #ifndef TOS
X! #define FCMASK 0660 /* file creation mask */
X #endif
X
X #include <fcntl.h>
X
X! #define exit msexit /* do chdir first */
X
X #ifndef REDO
X #undef Getchar
X*** include/Old/permonst.h Sun Nov 19 15:19:11 1989
X--- include/permonst.h Fri Nov 10 17:01:27 1989
X***************
X*** 47,53 ****
X unsigned cwt, /* weight of corpse */
X cnutrit; /* its nutritional value */
X short pxlth; /* length of extension */
X! uchar msound; /* noise it makes */
X long mflags1, /* boolean bitflags */
X mflags2; /* more boolean bitflags */
X # ifdef TEXTCOLOR
X--- 47,54 ----
X unsigned cwt, /* weight of corpse */
X cnutrit; /* its nutritional value */
X short pxlth; /* length of extension */
X! uchar msound; /* noise it makes (6 bits) */
X! uchar msize; /* physical size (3 bits) */
X long mflags1, /* boolean bitflags */
X mflags2; /* more boolean bitflags */
X # ifdef TEXTCOLOR
X*** include/Old/rm.h Sun Nov 19 15:19:32 1989
X--- include/rm.h Sun Nov 5 16:52:50 1989
X***************
X*** 10,17 ****
X--- 10,34 ----
X * and generalized for NetHack's release 2 by Eric S. Raymond (eric@snark)
X * building on Don G. Kneller's MS-DOS implementation. See options.c for
X * the code that permits the user to set the contents of the symbol structure.
X+ *
X+ * The door representation was changed by Ari Huttunen(ahuttune@niksula.hut.fi)
X */
X
X+ /*
X+ * TLCORNER TDWALL TRCORNER
X+ * +- -+- -+
X+ * | | |
X+ *
X+ * TRWALL CROSSWALL TLWALL HWALL
X+ * | | |
X+ * +- -+- -+ ---
X+ * | | |
X+ *
X+ * BLCORNER TUWALL BRCORNER VWALL
X+ * | | | |
X+ * +- -+- -+ |
X+ */
X+
X /* Level location types */
X #define STONE 0
X #define HWALL 1
X***************
X*** 46,61 ****
X * these types are subject to change.
X * Instead, use one of the macros below.
X */
X #define IS_WALL(typ) ((typ) && (typ) <= TRWALL)
X #define IS_STWALL(typ) ((typ) <= TRWALL) /* STONE <= (typ) <= TRWALL */
X #define IS_ROCK(typ) ((typ) < POOL) /* absolutely nonaccessible */
X #define IS_DOOR(typ) ((typ) == DOOR)
X #define ACCESSIBLE(typ) ((typ) >= DOOR) /* good position */
X #define IS_ROOM(typ) ((typ) >= ROOM) /* ROOM, STAIRS, furniture.. */
X #define ZAP_POS(typ) ((typ) >= POOL)
X #define SPACE_POS(typ) ((typ) > DOOR)
X- #define IS_CORNER(typ) ((typ) >= TLCORNER && (typ) <= BRCORNER)
X- #define IS_T(typ) ((typ) >= CRWALL && (typ) <= TRWALL)
X #define IS_POOL(typ) ((typ) >= POOL && (typ) <= DRAWBRIDGE_UP)
X #define IS_THRONE(typ) ((typ) == THRONE)
X #define IS_FOUNTAIN(typ) ((typ) == FOUNTAIN)
X--- 63,78 ----
X * these types are subject to change.
X * Instead, use one of the macros below.
X */
X+ #ifndef STUPID_CPP /* otherwise these macros are functions in prisym.c */
X #define IS_WALL(typ) ((typ) && (typ) <= TRWALL)
X #define IS_STWALL(typ) ((typ) <= TRWALL) /* STONE <= (typ) <= TRWALL */
X #define IS_ROCK(typ) ((typ) < POOL) /* absolutely nonaccessible */
X #define IS_DOOR(typ) ((typ) == DOOR)
X+ #define IS_FLOOR(typ) ((typ) == ROOM)
X #define ACCESSIBLE(typ) ((typ) >= DOOR) /* good position */
X #define IS_ROOM(typ) ((typ) >= ROOM) /* ROOM, STAIRS, furniture.. */
X #define ZAP_POS(typ) ((typ) >= POOL)
X #define SPACE_POS(typ) ((typ) > DOOR)
X #define IS_POOL(typ) ((typ) >= POOL && (typ) <= DRAWBRIDGE_UP)
X #define IS_THRONE(typ) ((typ) == THRONE)
X #define IS_FOUNTAIN(typ) ((typ) == FOUNTAIN)
X***************
X*** 63,68 ****
X--- 80,86 ----
X #define IS_ALTAR(typ) ((typ) == ALTAR)
X #define IS_DRAWBRIDGE(typ) ((typ) == DRAWBRIDGE_UP || (typ) == DRAWBRIDGE_DOWN)
X #define IS_FURNITURE(typ) ((typ) >= STAIRS && (typ) <= ALTAR)
X+ #endif
X
X /*
X * The level-map symbols may be compiled in or defined at initialization time
X***************
X*** 69,129 ****
X */
X
X /* screen symbols for using character graphics. */
X! struct symbols {
X! unsigned char stone, vwall, hwall, tlcorn, trcorn, blcorn, brcorn;
X! unsigned char crwall, tuwall, tdwall, tlwall, trwall;
X! unsigned char vbeam, hbeam, lslant, rslant;
X! unsigned char door, room, corr, upstair, dnstair, trap, web;
X! unsigned char pool;
X! unsigned char fountain;
X! unsigned char sink;
X! unsigned char throne;
X! unsigned char altar;
X! unsigned char upladder, dnladder, dbvwall, dbhwall;
X! };
X! extern struct symbols showsyms;
X #ifdef REINCARNATION
X! extern struct symbols savesyms;
X #endif
X! extern const struct symbols defsyms;
X
X! #define STONE_SYM showsyms.stone
X! #define VWALL_SYM showsyms.vwall
X! #define HWALL_SYM showsyms.hwall
X! #define TLCORN_SYM showsyms.tlcorn
X! #define TRCORN_SYM showsyms.trcorn
X! #define BLCORN_SYM showsyms.blcorn
X! #define BRCORN_SYM showsyms.brcorn
X! #define CRWALL_SYM showsyms.crwall
X! #define TUWALL_SYM showsyms.tuwall
X! #define TDWALL_SYM showsyms.tdwall
X! #define TLWALL_SYM showsyms.tlwall
X! #define TRWALL_SYM showsyms.trwall
X! #define VBEAM_SYM showsyms.vbeam
X! #define HBEAM_SYM showsyms.hbeam
X! #define LSLANT_SYM showsyms.lslant
X! #define RSLANT_SYM showsyms.rslant
X! #define DOOR_SYM showsyms.door
X! #define ROOM_SYM showsyms.room
X! #define CORR_SYM showsyms.corr
X! #define UP_SYM showsyms.upstair
X! #define DN_SYM showsyms.dnstair
X! #define TRAP_SYM showsyms.trap
X! #define WEB_SYM showsyms.web
X! #define POOL_SYM showsyms.pool
X! #define FOUNTAIN_SYM showsyms.fountain
X! #define SINK_SYM showsyms.sink
X! #define THRONE_SYM showsyms.throne
X! #define ALTAR_SYM showsyms.altar
X! #define UPLADDER_SYM showsyms.upladder
X! #define DNLADDER_SYM showsyms.dnladder
X! #define DB_VWALL_SYM showsyms.dbvwall
X! #define DB_HWALL_SYM showsyms.dbhwall
X
X #define ERRCHAR ']'
X
X- #define MAXPCHARS 32 /* maximum number of mapped characters */
X-
X /*
X * The 5 possible states of doors
X */
X--- 87,177 ----
X */
X
X /* screen symbols for using character graphics. */
X! #define S_stone 0
X! #define S_vwall 1
X! #define S_hwall 2
X! #define S_tlcorn 3
X! #define S_trcorn 4
X! #define S_blcorn 5
X! #define S_brcorn 6
X! #define S_crwall 7
X! #define S_tuwall 8
X! #define S_tdwall 9
X! #define S_tlwall 10
X! #define S_trwall 11
X! #define S_vbeam 12
X! #define S_hbeam 13
X! #define S_lslant 14
X! #define S_rslant 15
X! #define S_ndoor 16
X! #define S_vodoor 17
X! #define S_hodoor 18
X! #define S_cdoor 19
X! #define S_room 20
X! #define S_corr 21
X! #define S_upstair 22
X! #define S_dnstair 23
X! #define S_trap 24
X! #define S_web 25
X! #define S_pool 26
X! #define S_fountain 27
X! #define S_sink 28
X! #define S_throne 29
X! #define S_altar 30
X! #define S_upladder 31
X! #define S_dnladder 32
X! #define S_dbvwall 33
X! #define S_dbhwall 34
X!
X! #define MAXPCHARS 35 /* maximum number of mapped characters */
X!
X! typedef uchar symbol_array[MAXPCHARS];
X!
X! extern symbol_array showsyms;
X! extern char *explainsyms[MAXPCHARS]; /* tells what the characters are */
X #ifdef REINCARNATION
X! extern symbol_array savesyms;
X #endif
X! extern symbol_array defsyms;
X
X! #define STONE_SYM showsyms[S_stone]
X! #define VWALL_SYM showsyms[S_vwall]
X! #define HWALL_SYM showsyms[S_hwall]
X! #define TLCORN_SYM showsyms[S_tlcorn]
X! #define TRCORN_SYM showsyms[S_trcorn]
X! #define BLCORN_SYM showsyms[S_blcorn]
X! #define BRCORN_SYM showsyms[S_brcorn]
X! #define CRWALL_SYM showsyms[S_crwall]
X! #define TUWALL_SYM showsyms[S_tuwall]
X! #define TDWALL_SYM showsyms[S_tdwall]
X! #define TLWALL_SYM showsyms[S_tlwall]
X! #define TRWALL_SYM showsyms[S_trwall]
X! #define VBEAM_SYM showsyms[S_vbeam]
X! #define HBEAM_SYM showsyms[S_hbeam]
X! #define LSLANT_SYM showsyms[S_lslant]
X! #define RSLANT_SYM showsyms[S_rslant]
X! #define NO_DOOR_SYM showsyms[S_ndoor]
X! #define H_OPEN_DOOR_SYM showsyms[S_hodoor]
X! #define V_OPEN_DOOR_SYM showsyms[S_vodoor]
X! #define CLOSED_DOOR_SYM showsyms[S_cdoor]
X! #define ROOM_SYM showsyms[S_room]
X! #define CORR_SYM showsyms[S_corr]
X! #define UP_SYM showsyms[S_upstair]
X! #define DN_SYM showsyms[S_dnstair]
X! #define TRAP_SYM showsyms[S_trap]
X! #define WEB_SYM showsyms[S_web]
X! #define POOL_SYM showsyms[S_pool]
X! #define FOUNTAIN_SYM showsyms[S_fountain]
X! #define SINK_SYM showsyms[S_sink]
X! #define THRONE_SYM showsyms[S_throne]
X! #define ALTAR_SYM showsyms[S_altar]
X! #define UPLADDER_SYM showsyms[S_upladder]
X! #define DNLADDER_SYM showsyms[S_dnladder]
X! #define DB_VWALL_SYM showsyms[S_dbvwall]
X! #define DB_HWALL_SYM showsyms[S_dbhwall]
X
X #define ERRCHAR ']'
X
X /*
X * The 5 possible states of doors
X */
X***************
X*** 166,172 ****
X */
X #define DB_MOAT 0
X #define DB_FLOOR 8
X! #define DB_UNDER 8 /* mask for underneath */
X
X /*
X * Some walls may be non diggable.
X--- 214,221 ----
X */
X #define DB_MOAT 0
X #define DB_FLOOR 8
X! #define DB_ICE 16
X! #define DB_UNDER 24 /* mask for underneath */
X
X /*
X * Some walls may be non diggable.
X***************
X*** 182,198 ****
X #define LA_DOWN 2
X
X /*
X * at() display character types, in order of precedence.
X */
X #define AT_APP (uchar)0
X! /* 1-7 are specific overrides, see decl.h */
X /* non-specific */
X! #define AT_ZAP (uchar)8
X! #define AT_MON (uchar)9
X #define AT_U AT_MON
X! #define AT_OBJ (uchar)10
X #define AT_GLD AT_OBJ
X! #define AT_MAP (uchar)11
X
X /*
X * The structure describing a coordinate position.
X--- 231,258 ----
X #define LA_DOWN 2
X
X /*
X+ * Room areas may be iced pools,
X+ */
X+ #define ICED_POOL 8
X+ #define ICED_MOAT 16
X+
X+
X+ /*
X * at() display character types, in order of precedence.
X */
X+ #ifndef MAXCOLORS
X+ #define MAXCOLORS 1
X+ #endif
X+
X #define AT_APP (uchar)0
X! /* 1-MAXCOLORS are specific overrides, see color.h */
X /* non-specific */
X! #define AT_ZAP (uchar)(MAXCOLORS+1)
X! #define AT_MON (uchar)(MAXCOLORS+2)
X #define AT_U AT_MON
X! #define AT_OBJ (uchar)(MAXCOLORS+3)
X #define AT_GLD AT_OBJ
X! #define AT_MAP (uchar)(MAXCOLORS+4)
X
X /*
X * The structure describing a coordinate position.
X***************
X*** 213,218 ****
X--- 273,280 ----
X #define diggable doormask
X #define ladder doormask
X #define drawbridgemask doormask
X+ #define looted doormask
X+ #define icedpool doormask
X
X #ifdef MACOS
X typedef struct
X*** include/Old/sp_lev.h Sun Nov 19 15:19:49 1989
X--- include/sp_lev.h Tue Nov 14 20:33:13 1989
X***************
X*** 43,49 ****
X
X typedef struct {
X xchar x1, y1, x2, y2;
X! } dig;
X
X typedef struct {
X xchar x, y, up;
X--- 43,49 ----
X
X typedef struct {
X xchar x1, y1, x2, y2;
X! } digpos;
X
X typedef struct {
X xchar x, y, up;
X***************
X*** 80,86 ****
X char nwalk;
X walk **walks;
X char ndig;
X! dig **digs;
X char nlad;
X lad **lads;
X #ifdef ALTARS
X--- 80,86 ----
X char nwalk;
X walk **walks;
X char ndig;
X! digpos **digs;
X char nlad;
X lad **lads;
X #ifdef ALTARS
X*** /dev/null Sun Nov 19 15:20:27 1989
X--- include/termcap.h Fri Oct 27 18:13:49 1989
X***************
X*** 0 ****
X--- 1,19 ----
X+ /* SCCS Id: @(#)termcap.h 3.0 89/10/27
X+ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1989. */
X+ /* NetHack may be freely redistributed. See license for details. */
X+
X+ /* common #defines for pri.c and termcap.c */
X+
X+ #ifndef MSDOS
X+ # ifndef MACOS
X+ # define TERMLIB /* include termcap code */
X+ # endif
X+ #endif
X+
X+ /* might display need graphics code? */
X+ #if !defined(AMIGA) && !defined(TOS) && !defined(MACOS)
X+ # if defined(TERMLIB) || defined(DECRAINBOW) || defined(OS2)
X+ # define ASCIIGRAPH
X+ extern boolean IBMgraphics; /* does terminal use IBM extended ASCII? */
X+ # endif
X+ #endif
X*** include/Old/tosconf.h Sun Nov 19 15:20:38 1989
X--- include/tosconf.h Fri Nov 17 20:51:35 1989
X***************
X*** 13,20 ****
X tweaking); otherwise (e.g. GCC) don't do it. OLD_TOS corresponds
X most closely to LATTICE C, I think */
X
X! /* #define OLD_TOS */
X! /* #define NO_SIGNAL */
X
X #ifdef __GNUC__
X #define FCMASK 0666
X--- 13,20 ----
X tweaking); otherwise (e.g. GCC) don't do it. OLD_TOS corresponds
X most closely to LATTICE C, I think */
X
X! /* #define OLD_TOS /* primitive C library */
X! /* #define NO_SIGNAL /* compiler doesn't support signals */
X
X #ifdef __GNUC__
X #define FCMASK 0666
X***************
X*** 34,45 ****
X #endif
X
X /* configurable options */
X! #define DGK
X! #define RANDOM
X! #define SHELL
X! #define TEXTCOLOR
X! #define TERMLIB
X
X #ifndef MSDOS_H
X #include "msdos.h"
X #endif
X--- 34,49 ----
X #endif
X
X /* configurable options */
X! #define DGK /* lots of enhancements */
X! #define RANDOM /* improved random numbers */
X! #define SHELL /* allow spawning of shell */
X! #define TEXTCOLOR /* allow color */
X! #define TERMLIB /* use termcap */
X
X+ #ifndef TERMLIB
X+ #define ANSI_DEFAULT /* use vt52 by default */
X+ #endif
X+
X #ifndef MSDOS_H
X #include "msdos.h"
X #endif
X***************
X*** 46,53 ****
X #ifndef PCCONF_H
X #include "pcconf.h" /* remainder of stuff is same as the PC */
X #endif
X! #ifdef TERMLIB
X! #undef ANSI_DEFAULT
X! #endif
X #endif /* TOSCONF_H /* */
X #endif /* TOS /* */
X--- 50,55 ----
X #ifndef PCCONF_H
X #include "pcconf.h" /* remainder of stuff is same as the PC */
X #endif
X!
X #endif /* TOSCONF_H /* */
X #endif /* TOS /* */
X*** include/Old/tradstdc.h Sun Nov 19 15:20:50 1989
X--- include/tradstdc.h Fri Nov 17 20:51:18 1989
X***************
X*** 71,92 ****
X #endif
X #endif /* NEED_VARARGS */
X
X! #if (defined(__STDC__) || defined(MSDOS)) && !defined(AMIGA)
X
X /* Used for robust ANSI parameter forward declarations:
X! * int sprintf P((char *, const char *, ...));
X *
X! * P() is used to surround parameter list for functions with a fixed number
X! * of arguments; V() is used for varying numbers of arguments. Separate
X! * macros are needed because ANSI will mix old-style declarations with
X! * prototypes, except in the case of varargs.
X */
X
X! # define P(s) s
X # if defined(MSDOS) || defined(USE_STDARG)
X! # define V(s) s
X # else
X! # define V(s) ()
X # endif
X
X # ifdef __TURBOC__ /* Cover for stupid Turbo C */
X--- 71,92 ----
X #endif
X #endif /* NEED_VARARGS */
X
X! #if (defined(__STDC__) || defined(MSDOS) || defined(THINKC4)) && !defined(AMIGA)
X
X /* Used for robust ANSI parameter forward declarations:
X! * int VDECL(sprintf, (char *, const char *, ...));
X *
X! * FDECL() is used for functions with a fixed number of arguments;
X! * VDECL() is used for functions with a variable number of arguments.
X! * Separate macros are needed because ANSI will mix old-style declarations
X! * with prototypes, except in the case of varargs.
X */
X
X! # define FDECL(f,p) f p
X # if defined(MSDOS) || defined(USE_STDARG)
X! # define VDECL(f,p) f p
X # else
X! # define VDECL(f,p) f()
X # endif
X
X # ifdef __TURBOC__ /* Cover for stupid Turbo C */
X***************
X*** 102,109 ****
X
X #else /* __STDC__ */ /* a "traditional" C compiler */
X
X! # define P(s) ()
X! # define V(s) ()
X
X # ifndef genericptr_t
X # ifdef AMIGA
X--- 102,109 ----
X
X #else /* __STDC__ */ /* a "traditional" C compiler */
X
X! # define FDECL(f,p) f()
X! # define VDECL(f,p) f()
X
X # ifndef genericptr_t
X # ifdef AMIGA
X*** /dev/null Sun Nov 19 15:21:01 1989
X--- include/trampoli.h Fri Nov 17 20:45:01 1989
X***************
X*** 0 ****
X--- 1,241 ----
X+ /* SCCS Id: @(#)trampoli.h 3.0 89/11/15 */
X+ /* Copyright (c) 1989, by Norm Meluch and Stephen Spackman */
X+ /* NetHack may be freely redistributed. See license for details. */
X+
X+ #ifndef TRAMPOLI_H
X+ #define TRAMPOLI_H
X+
X+ #ifdef OVERLAY
X+
X+ /* ### apply.c ### */
X+ #define dig() dig_()
X+ #define doapply() doapply_()
X+ #define dojump() dojump_()
X+ #define dorub() dorub_()
X+
X+
X+ /* ### cmd.c ### */
X+ #define doextcmd() doextcmd_()
X+ #define doextlist() doextlist_()
X+ #ifdef POLYSELF
X+ #define domonability() domonability_()
X+ #endif /* POLYSELF */
X+ #define timed_occupation() timed_occupation_()
X+ #if defined(WIZARD) || defined(EXPLORE_MODE)
X+ #define wiz_attributes() wiz_attributes_()
X+ #endif
X+ #ifdef WIZARD
X+ #define wiz_detect() wiz_detect_()
X+ #define wiz_genesis() wiz_genesis_()
X+ #define wiz_identify() wiz_identify_()
X+ #define wiz_level_tele() wiz_level_tele_()
X+ #define wiz_map() wiz_map_()
X+ #define wiz_where() wiz_where_()
X+ #define wiz_wish() wiz_wish_()
X+ #endif
X+
X+
X+ /* ### do.c ### */
X+ #define doddrop() doddrop_()
X+ #define dodown() dodown_()
X+ #define dodrop() dodrop_()
X+ #define donull() donull_()
X+ #define doup() doup_()
X+ #define dowipe() dowipe_()
X+ #define drop(x) drop_(x)
X+ #define wipeoff() wipeoff_()
X+
X+
X+ /* ### do_name.c ### */
X+ #define ddocall() ddocall_()
X+ #define do_mname() do_mname_()
X+
X+
X+ /* ### do_wear.c ### */
X+ #define Armor_off() Armor_off_()
X+ #define Boots_off() Boots_off_()
X+ #define Gloves_off() Gloves_off_()
X+ #define Helmet_off() Helmet_off_()
X+ #define Armor_on() Armor_on_()
X+ #define Boots_on() Boots_on_()
X+ #define Gloves_on() Gloves_on_()
X+ #define Helmet_on() Helmet_on_()
X+ #define doddoremarm() doddoremarm_()
X+ #define doputon() doputon_()
X+ #define doremring() doremring_()
X+ #define dotakeoff() dotakeoff_()
X+ #define dowear() dowear_()
X+ #define select_off(x) select_off_(x)
X+ #define take_off() take_off_()
X+
X+
X+ /* ### dokick.c ### */
X+ #define dokick() dokick_()
X+
X+
X+ /* ### dothrow.c ### */
X+ #define dothrow() dothrow_()
X+
X+
X+ /* ### eat.c ### */
X+ #define Hear_again() Hear_again_()
X+ #define Meatdone() Meatdone_()
X+ #define doeat() doeat_()
X+ #define eatfood() eatfood_()
X+ #define opentin() opentin_()
X+ #define unfaint() unfaint_()
X+
X+
X+ /* ### end.c ### */
X+ #define done2() done2_()
X+
X+
X+ /* ### engrave.c ### */
X+ #define doengrave() doengrave_()
X+
X+
X+ /* ### hack.c ### */
X+ #define dopickup() dopickup_()
X+ #define identify(x) identify_(x)
X+
X+
X+ /* ### invent.c ### */
X+ #define ckunpaid(x) ckunpaid_(x)
X+ #define ddoinv() ddoinv_()
X+ #define dolook() dolook_()
X+ #define dopramulet() dopramulet_()
X+ #define doprarm() doprarm_()
X+ #define doprgold() doprgold_()
X+ #define doprring() doprring_()
X+ #define doprtool() doprtool_()
X+ #define doprwep() doprwep_()
X+ #define dotypeinv() dotypeinv_()
X+
X+
X+ /* ### ioctl.c ### */
X+ /*
X+ #ifdef UNIX
X+ #ifdef SUSPEND
X+ #define dosuspend() dosuspend_()
X+ #endif
X+ #endif
X+ */
X+
X+
X+ /* ### lock.c ### */
X+ #define doclose() doclose_()
X+ #define doforce() doforce_()
X+ #define doopen() doopen_()
X+ #define forcelock() forcelock_()
X+ #define picklock() picklock_()
X+
X+
X+ /* ### o_init.c ### */
X+ #define dodiscovered() dodiscovered_()
X+
X+
X+ /* ### objnam.c ### */
X+ #define doname(x) doname_(x)
X+ #define xname(x) xname_(x)
X+
X+ /* ### options.c ### */
X+ #define doset() doset_()
X+ #define dotogglepickup() dotogglepickup_()
X+
X+
X+ /* ### pager.c ### */
X+ #define dohelp() dohelp_()
X+ #define dohistory() dohistory_()
X+ #ifdef UNIX
X+ #ifdef SHELL
X+ #define dosh() dosh_()
X+ #endif
X+ #endif
X+ #define dowhatdoes() dowhatdoes_()
X+ #define dowhatis() dowhatis_()
X+
X+
X+ /* ### pickup.c ### */
X+ #define ck_bag() ck_bag_()
X+ #define ck_container(x) ck_container_(x)
X+ #define doloot() doloot_()
X+ #define in_container(x) in_container_(x)
X+ #define out_container(x) out_container_(x)
X+
X+
X+ /* ### potion.c ### */
X+ #define dodrink() dodrink_()
X+ #define dodip() dodip_()
X+
X+
X+ /* ### pray.c ### */
X+ #ifdef THEOLOGY
X+ #define dopray() dopray_()
X+ #define dosacrifice() dosacrifice_()
X+ #endif /* THEOLOGY */
X+ #define doturn() doturn_()
X+
X+
X+ /* ### pri.c ### */
X+ #define doredraw() doredraw_()
X+
X+
X+ /* ### read.c ### */
X+ #define doread() doread_()
X+
X+
X+ /* ### save.c ### */
X+ #define dosave() dosave_()
X+
X+
X+ /* ### search.c ### */
X+ #define doidtrap() doidtrap_()
X+ #define dosearch() dosearch_()
X+
X+
X+ /* ### shk.c ### */
X+ #define dopay() dopay_()
X+
X+
X+ /* ### sit.c ### */
X+ #define dosit() dosit_()
X+
X+
X+ /* ### sounds.c ### */
X+ #define dotalk() dotalk_()
X+
X+
X+ /* ### spell.c ### */
X+ #ifdef SPELLS
X+ #define learn() learn_()
X+ #define docast() docast_()
X+ #define dovspell() dovspell_()
X+ #endif
X+
X+
X+ /* ### steal.c ### */
X+ #define stealarm() stealarm_()
X+
X+
X+ /* ### topl.c ### */
X+ #define doredotopl() doredotopl_()
X+
X+ /* ### trap.c ### */
X+ #define dotele() dotele_()
X+ #define dountrap() dountrap_()
X+ #define float_down() float_down_()
X+
X+ /* ### version.c ### */
X+ #define doversion() doversion_()
X+
X+ /* ### wield.c ### */
X+ #define dowield() dowield_()
X+
X+ /* ### zap.c ### */
X+ #define bhitm(x, y) bhitm_(x, y)
X+ #define bhito(x, y) bhito_(x, y)
X+ #define dozap() dozap_()
X+
X+ #endif /* OVERLAY */
X+
X+ #endif /* TRAMPOLI_H */
END_OF_FILE
if test 53394 -ne `wc -c <'patches06b'`; then
echo shar: \"'patches06b'\" unpacked with wrong size!
fi
# end of 'patches06b'
fi
echo shar: End of archive 1 \(of 15\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 15 archives.
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