home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 January
/
usenetsourcesnewsgroupsinfomagicjanuary1994.iso
/
sources
/
games
/
volume16
/
nethack31
/
part100
< prev
next >
Wrap
Internet Message Format
|
1993-02-06
|
60KB
Path: uunet!news.tek.com!master!saab!billr
From: billr@saab.CNA.TEK.COM (Bill Randle)
Newsgroups: comp.sources.games
Subject: v16i108: nethack31 - display oriented dungeons & dragons (Ver. 3.1), Part100/108
Message-ID: <4473@master.CNA.TEK.COM>
Date: 5 Feb 93 22:03:29 GMT
Sender: news@master.CNA.TEK.COM
Lines: 1573
Approved: billr@saab.CNA.TEK.COM
Xref: uunet comp.sources.games:1659
Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
Posting-number: Volume 16, Issue 108
Archive-name: nethack31/Part100
Supersedes: nethack3p9: Volume 10, Issue 46-108
Environment: Amiga, Atari, Mac, MS-DOS, OS2, Unix, VMS, X11
#! /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 100 (of 108)."
# Contents: dat/opthelp doc/nethack.6 include/mondata.h include/you.h
# sys/amiga/NewGame.uu sys/amiga/colorwin.c sys/unix/Makefile.utl
# sys/vms/install.com win/X11/Install.X11
# Wrapped by billr@saab on Wed Jan 27 16:09:29 1993
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'dat/opthelp' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'dat/opthelp'\"
else
echo shar: Extracting \"'dat/opthelp'\" \(6596 characters\)
sed "s/^X//" >'dat/opthelp' <<'END_OF_FILE'
XBoolean options available in all versions (with default values in []):
X
Xconfirm ask before hitting tame or peaceful monsters [TRUE]
XDECgraphics use DEC/VT line-drawing characters for the dungeon [FALSE]
Xdisclose offer information at the end of the game [TRUE]
X(fe)male sex of the player (may only be set on startup) [MALE]
Xfixinv try to retain the same letter for the same object [TRUE]
Xhelp print all available info when using the / command [TRUE]
XIBMgraphics use IBM extended characters for the dungeon [FALSE]
Xignintr ignore interrupt signal, including breaks [FALSE]
Xlegacy print introductory message [TRUE]
Xlit_corridor show a dark corridor as lit if in sight [FALSE]
Xnull allow nulls to be sent to your terminal [TRUE]
X try turning this option off (forcing NetHack to use its own
X delay code) if moving objects seem to teleport across rooms
Xnumber_pad use the number keys to move instead of yuhjklbn [FALSE]
Xpickup automatically pick up objects you move over [TRUE]
Xrest_on_space count the space bar as a rest character [FALSE]
Xsafe_pet prevent you from (knowingly) attacking your pet(s) [TRUE]
Xsilent don't use your terminal's bell sound [TRUE]
Xsortpack group similar kinds of objects in inventory [TRUE]
Xstandout use standout mode for --More-- on messages [FALSE]
Xtime display elapsed game time, in moves [FALSE]
Xtombstone print tombstone when you die [TRUE]
Xverbose print more commentary during the game [TRUE]
X
X
XThere are further boolean options that exist in some versions of NetHack
X3.1. (You can learn which options exist in your version by checking your
Xcurrent option setting, which is reached via the 'O' cmd.)
X
XBoolean option if INSURANCE was set at compile time:
Xcheckpoint save game state after each level change, for possible [TRUE]
X recovery after program crash
X
XBoolean option if NEWS was set at compile time:
Xnews print any news from game administrator on startup [TRUE]
X
XBoolean options if DGK was set at compile time:
XBIOS allow the use of IBM ROM BIOS calls [FALSE]
Xrawio allow the use of raw I/O (may only be set on startup) [FALSE]
X
XBoolean option if EXP_ON_BOTL was set at compile time:
Xshowexp display your accumulated experience points [FALSE]
X
XBoolean option if SCORE_ON_BOTL was set at compile time:
Xshowscore display your approximate accumulated score [FALSE]
X
XBoolean options if TEXTCOLOR was set at compile time:
Xcolor use different colors for objects on screen [TRUE for micros]
Xhilite_pet if color is FALSE, display pets in a highlighted way [FALSE]
X
XAny Boolean option can be negated by prefixing it with a '!' or 'no'.
X
X
XCompound options are written as option_name:option_value.
X
XCompound options which can be set during the game are:
X
Xfruit the name of a fruit you enjoy eating [slime mold]
X (basically a whimsy which NetHack uses from time to time).
Xpackorder a list of default symbols for kinds of objects that gives the
X order in which your pack will be displayed [")[%?+!=/(*`0_]
X (If you specify only some kinds of items, the others from the
X default order will be appended to the end.)
Xscores the parts of the score list you wish to see when the game ends
X You choose a combination of top scores, scores around the top
X scores, and all of your own scores. [!own/3 top/2 around]
X
XCompound options which may be set only on startup are:
X
Xcatname the name of your first cat [NONE]
Xdogname the name of your first dog [NONE]
Xgraphics a list of symbols to be used in place of the default ones for
X drawing the dungeon.
X The symbols are subjected to a fair amount of processing, so
X that you can use C-style escapes such as \n or \081 as well as
X indicate control characters by ^x or meta characters by \Mx.
X As usual, \ can force the next character to be taken literally.
X Since many of the default symbols are overloaded, they are
X given here by name instead of symbol, with some added notes:
X stone (solid rock, normally ' ')
X vwall hwall tlcorn trcorn blcorn brcorn (room boundaries)
X crwall tuwall tdwall tlwall trwall (wallified maze characters)
X nodoor vodoor hodoor (no, vertical, horizontal open door)
X vcdoor hcdoor (vertical, horizontal closed door)
X room darkcorr litcorr upstair dnstair upladder dnladder
X trap web altar throne sink fountain pool ice lava
X vodbridge hodbridge (vertical, horizontal open drawbridge)
X vcdbridge hcdbridge (vertical, horizontal closed drawbridge)
X air cloud water
X vbeam hbeam lslant rslant (generic zap beams)
X digbeam flashbeam (special beams for digging and cameras)
X boomleft boomright (boomerangs)
X ss1 ss2 ss3 ss4 (shielding sequence)
X sw_topl, sw_topm, sw_topr, (swallow, top row)
X sw_midl, sw_midr, (swallow, middle row [no center])
X sw_botl, sw_botm, sw_botr (swallow, bottom row)
X extl extm extr (explosion matrix top row)
X exml exmm exmr (explosion matrix middle row)
X exbl exbm exbr (explosion matrix bottom row)
Xmonsters like graphics, but for monster symbols
X default: abcdefghijklmnopqrstuvwxyz
X ABCDEFGHIJKLMNOPQRSTUVWXYZ@\ \\&;:~]
Xmsghistory number of top line messages to save [20]
Xname the name of your character [obtained by asking the system or
X the player]
Xobjects like graphics, but for object symbols
X default: ])[="(%!?+/$*`0_.
Xpettype your preferred type of pet (cat or dog), if your character
X class uses both types [RANDOM]
Xwindowtype windowing system to be used [depends on operating system]
X
X
XSome sample options lists are:
X!pickup,!tombstone,name:Gandalf,scores:own/3 top/2 around
Xfemale,nonews,dogname:Rover,graphics: |--------|||-\\/+.#.<><>\^\"_\\#{}
Xrest_on_space,!verbose
END_OF_FILE
if test 6596 -ne `wc -c <'dat/opthelp'`; then
echo shar: \"'dat/opthelp'\" unpacked with wrong size!
fi
# end of 'dat/opthelp'
fi
if test -f 'doc/nethack.6' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'doc/nethack.6'\"
else
echo shar: Extracting \"'doc/nethack.6'\" \(5923 characters\)
sed "s/^X//" >'doc/nethack.6' <<'END_OF_FILE'
X.TH NETHACK 6 "28 March 1989"
X.UC 4
X.SH NAME
Xnethack \- Exploring The Mazes of Menace
X.SH SYNOPSIS
X.B nethack
X[
X.B \-d
X.I directory
X]
X[
X.B \-n
X]
X[
X.B \-[ABCEHKPRSTVW]
X]
X[
X.B \-[DX]
X]
X[
X.B \-u
X.I playername
X]
X[
X.B \-dec
X]
X[
X.B \-ibm
X]
X.br
X.B nethack
X[
X.B \-d
X.I directory
X]
X.B \-s
X[
X.B \-[ABCEHKPRSTVW]
X]
X[
X.I playernames
X]
X.SH DESCRIPTION
X.PP
X.I NetHack
Xis a display oriented Dungeons & Dragons(tm) - like game.
XBoth display and command structure resemble rogue.
X.PP
XTo get started you really only need to know two commands. The command
X.B ?
Xwill give you a list of the available commands (as well as other information)
Xand the command
X.B /
Xwill identify the things you see on the screen.
X.PP
XTo win the game (as opposed to merely playing to beat other people's high
Xscores) you must locate the Amulet of Yendor which is somewhere below
Xthe 20th level of the dungeon and get it out.
XNobody has achieved this yet; anybody who does will probably go down
Xin history as a hero among heros.
X.PP
XWhen the game ends, whether by your dying, quitting, or escaping
Xfrom the caves,
X.I NetHack
Xwill give you (a fragment of) the list of top scorers.
XThe scoring is based on many aspects of your behavior, but a rough estimate
Xis obtained by taking the amount of gold you've found in the cave plus four
Xtimes your (real) experience.
XPrecious stones may be worth a lot of gold when brought to the exit.
XThere is a 10% penalty for getting yourself killed.
X.PP
XThe environment variable NETHACKOPTIONS can be used to initialize many
Xrun-time options.
XThe ? command provides a description of these options and syntax.
X(The
X.B \-dec
Xand
X.B \-ibm
Xcommand line options are equivalent to the
X.B decgraphics
Xand
X.B ibmgraphics
Xrun-time options described there,
Xand are provided purely for convenience on systems
Xsupporting multiple types of terminals.)
X.PP
XThe
X.B \-u
X.I playername
Xoption supplies the answer to the question "Who are you?".
XIt overrides any name from NETHACKOPTIONS, HACKOPTIONS, USER, LOGNAME,
Xor getlogin(), which will otherwise be tried in order.
XIf none of these provides a useful name, the player will be asked for one.
XPlayer names (in conjunction with uids) are used to identify save files,
Xso you can have several saved games under different names.
XConversely, you must use the appropriate player name to restore a saved game.
X.PP
XA
X.I playername
Xsuffix or a separate option consisting of one of
X.B "\-A \-B \-C \-E \-H \-K \-P \-R \-S \-T \-V \-W"
Xcan be used to determine the character role.
X.PP
XThe
X.B \-s
Xoption alone will print out the list of your scores.
XIt may be followed by arguments
X.B "\-A \-B \-C \-E \-H \-K \-P \-R \-S \-T \-V \-W"
Xto print the
Xscores of Archeologists, Barbarians, Cave(wo)men, Elves, Healers, Knights,
XPriest(esse)s, Rogues, Samurai, Tourists, Valkyries, or Wizards.
XIt may also be followed by one or more player names to print the scores of the
Xplayers mentioned, or by 'all' to print out all scores.
X.PP
XThe
X.B \-n
Xoption suppresses printing of any news from the game administrator.
X.PP
XThe
X.B \-D
Xor
X.B \-X
Xoption will start the game in a special non-scoring discovery mode.
X.B \-D
Xwill, if the player is the game administrator, start in debugging (wizard)
Xmode instead.
X.PP
XThe
X.B \-d
Xoption, which must be the first argument if it appears,
Xsupplies a directory which is to serve as the playground.
XIt overrides the value from NETHACKDIR, HACKDIR,
Xor the directory specified by the game administrator during compilation
X(usually /usr/games/lib/nethackdir).
XThis option is usually only useful to the game administrator.
XThe playground must contain several auxiliary files such as help files,
Xthe list of top scorers, and a subdirectory
X.I save
Xwhere games are saved.
X.SH AUTHORS
X.PP
XJay Fenlason (+ Kenny Woodland, Mike Thome and Jon Payne) wrote the
Xoriginal hack, very much like rogue (but full of bugs).
X.PP
XAndries Brouwer continuously deformed their sources into an entirely
Xdifferent game.
X.PP
XMike Stephenson has continued the perversion of sources, adding various
Xwarped character classes and sadistic traps with the help of many strange
Xpeople who reside in that place between the worlds, the Usenet Zone.
XA number of these miscreants are immortalized in the historical
Xroll of dishonor and various other places.
X.PP
XThe resulting mess is now called NetHack, to denote its
Xdevelopment by the Usenet. Andries Brouwer has made this request for the
Xdistinction, as he may eventually release a new version of his own.
X.SH FILES
X.PP
XAll files are in the playground, normally /usr/games/lib/nethackdir.
X.br
X.DT
X.ta \w'cmdhelp, opthelp, wizhelp\ \ \ 'u
Xnethack The program itself.
X.br
Xdata, oracles, rumors Data files used by NetHack.
X.br
Xoptions, quest.dat More data files.
X.br
Xhelp, hh Help data files.
X.br
Xcmdhelp, opthelp, wizhelp More help data files.
X.br
X*.lev Predefined special levels.
X.br
Xdungeon Control file for special levels.
X.br
Xhistory A short history of NetHack.
X.br
Xlicense Rules governing redistribution.
X.br
Xrecord The list of top scorers.
X.br
Xlogfile An extended list of games
X.br
X played.
X.br
Xxlock.nnn Description of a dungeon level.
X.br
Xperm Lock file for xlock.dd.
X.br
XbonesDD.nn Descriptions of the ghost and
X.br
X belongings of a deceased
X.br
X adventurer.
X.br
Xsave A subdirectory containing the
X.br
X saved games.
X.SH ENVIRONMENT
X.DT
X.ta \w'HACKPAGER or PAGER\ \ \ 'u
XUSER or LOGNAME Your login name.
X.br
XHOME Your home directory.
X.br
XSHELL Your shell.
X.br
XTERM The type of your terminal.
X.br
XHACKPAGER or PAGER Replacement for default pager.
X.br
XMAIL Mailbox file.
X.br
XMAILREADER Replacement for default reader
X.br
X (probably /bin/mail or /usr/ucb/mail).
X.br
XNETHACKDIR Playground.
X.br
XNETHACKOPTIONS String predefining several NetHack
X.br
X options.
X.br
X
XIn addition, SHOPTYPE is used in debugging (wizard) mode.
X.SH "SEE ALSO"
X.PP
Xdgn_comp(6), lev_comp(6), recover(6)
X.SH BUGS
X.PP
XProbably infinite.
X
X
X.PP
XDungeons & Dragons is a Trademark of TSR Inc.
END_OF_FILE
if test 5923 -ne `wc -c <'doc/nethack.6'`; then
echo shar: \"'doc/nethack.6'\" unpacked with wrong size!
fi
# end of 'doc/nethack.6'
fi
if test -f 'include/mondata.h' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'include/mondata.h'\"
else
echo shar: Extracting \"'include/mondata.h'\" \(5910 characters\)
sed "s/^X//" >'include/mondata.h' <<'END_OF_FILE'
X/* SCCS Id: @(#)mondata.h 3.1 92/11/26 */
X/* Copyright (c) 1989 Mike Threepoint */
X/* NetHack may be freely redistributed. See license for details. */
X
X#ifndef MONDATA_H
X#define MONDATA_H
X
X#ifndef ALIGN_H
X#include "align.h"
X#endif
X
X#define verysmall(ptr) ((ptr)->msize < MZ_SMALL)
X#define bigmonst(ptr) ((ptr)->msize >= MZ_LARGE)
X
X#define resists_fire(ptr) (((ptr)->mresists & MR_FIRE) != 0)
X#define resists_cold(ptr) (((ptr)->mresists & MR_COLD) != 0)
X#define resists_sleep(ptr) (((ptr)->mresists & MR_SLEEP) != 0)
X#define resists_disint(ptr) (((ptr)->mresists & MR_DISINT) != 0)
X#define resists_elec(ptr) (((ptr)->mresists & MR_ELEC) != 0)
X#define resists_poison(ptr) (((ptr)->mresists & MR_POISON) != 0)
X#define resists_acid(ptr) (((ptr)->mresists & MR_ACID) != 0)
X#define resists_ston(ptr) (((ptr)->mresists & MR_STONE) != 0)
X
X#define is_flyer(ptr) (((ptr)->mflags1 & M1_FLY) != 0L)
X#define is_floater(ptr) ((ptr)->mlet == S_EYE)
X#define is_clinger(ptr) (((ptr)->mflags1 & M1_CLING) != 0L)
X#define is_swimmer(ptr) (((ptr)->mflags1 & M1_SWIM) != 0L)
X#define magic_breathing(ptr) (((ptr)->mflags1 & M1_AMPHIBIOUS) != 0L)
X#define passes_walls(ptr) (((ptr)->mflags1 & M1_WALLWALK) != 0L)
X#define amorphous(ptr) (((ptr)->mflags1 & M1_AMORPHOUS) != 0L)
X#define noncorporeal(ptr) ((ptr)->mlet == S_GHOST)
X#define tunnels(ptr) (((ptr)->mflags1 & M1_TUNNEL) != 0L)
X#define needspick(ptr) (((ptr)->mflags1 & M1_NEEDPICK) != 0L)
X#define hides_under(ptr) (((ptr)->mflags1 & M1_CONCEAL) != 0L)
X#define is_hider(ptr) (((ptr)->mflags1 & M1_HIDE) != 0L)
X#define haseyes(ptr) (((ptr)->mflags1 & M1_NOEYES) == 0L)
X#define nohands(ptr) (((ptr)->mflags1 & M1_NOHANDS) != 0L)
X#define nolimbs(ptr) (((ptr)->mflags1 & M1_NOLIMBS) == M1_NOLIMBS)
X#define has_head(ptr) (((ptr)->mflags1 & M1_NOHEAD) == 0L)
X#define is_whirly(ptr) ((ptr)->mlet == S_VORTEX || \
X (ptr) == &mons[PM_AIR_ELEMENTAL])
X#define mindless(ptr) (((ptr)->mflags1 & M1_MINDLESS) != 0L)
X#define humanoid(ptr) (((ptr)->mflags1 & M1_HUMANOID) != 0L)
X#define is_animal(ptr) (((ptr)->mflags1 & M1_ANIMAL) != 0L)
X#define slithy(ptr) (((ptr)->mflags1 & M1_SLITHY) != 0L)
X#define is_meaty(ptr) (!amorphous(ptr) && \
X (ptr)->mlet != S_BLOB && \
X (ptr)->mlet != S_JELLY && \
X (ptr)->mlet != S_FUNGUS)
X#define is_wooden(ptr) ((ptr) == &mons[PM_WOOD_GOLEM])
X#define thick_skinned(ptr) (((ptr)->mflags1 & M1_THICK_HIDE) != 0L)
X#define lays_eggs(ptr) (((ptr)->mflags1 & M1_OVIPAROUS) != 0L)
X#define regenerates(ptr) (((ptr)->mflags1 & M1_REGEN) != 0L)
X#define perceives(ptr) (((ptr)->mflags1 & M1_SEE_INVIS) != 0L)
X#define can_teleport(ptr) (((ptr)->mflags1 & M1_TPORT) != 0L)
X#define control_teleport(ptr) (((ptr)->mflags1 & M1_TPORT_CNTRL) != 0L)
X#define telepathic(ptr) ((ptr) == &mons[PM_FLOATING_EYE] || \
X (ptr) == &mons[PM_MIND_FLAYER])
X#define is_armed(ptr) attacktype(ptr, AT_WEAP)
X#define acidic(ptr) (((ptr)->mflags1 & M1_ACID) != 0L)
X#define poisonous(ptr) (((ptr)->mflags1 & M1_POIS) != 0L)
X#define carnivorous(ptr) (((ptr)->mflags1 & M1_CARNIVORE) != 0L)
X#define herbivorous(ptr) (((ptr)->mflags1 & M1_HERBIVORE) != 0L)
X#define metallivorous(ptr) (((ptr)->mflags1 & M1_METALLIVORE) != 0L)
X#define polyok(ptr) (((ptr)->mflags2 & M2_NOPOLY) == 0L)
X#define is_undead(ptr) (((ptr)->mflags2 & M2_UNDEAD) != 0L)
X#define is_were(ptr) (((ptr)->mflags2 & M2_WERE) != 0L)
X#define is_elf(ptr) (((ptr)->mflags2 & M2_ELF) != 0L)
X#define is_dwarf(ptr) (((ptr)->mflags2 & M2_DWARF) != 0L)
X#define is_giant(ptr) (((ptr)->mflags2 & M2_GIANT) != 0L)
X#define is_golem(ptr) ((ptr)->mlet == S_GOLEM)
X#define is_domestic(ptr) (((ptr)->mflags2 & M2_DOMESTIC) != 0L)
X#define is_orc(ptr) (((ptr)->mflags2 & M2_ORC) != 0L)
X#define is_human(ptr) (((ptr)->mflags2 & M2_HUMAN) != 0L)
X#define is_demon(ptr) (((ptr)->mflags2 & M2_DEMON) != 0L)
X#define is_mercenary(ptr) (((ptr)->mflags2 & M2_MERC) != 0L)
X#define is_male(ptr) (((ptr)->mflags2 & M2_MALE) != 0L)
X#define is_female(ptr) (((ptr)->mflags2 & M2_FEMALE) != 0L)
X#define is_neuter(ptr) (((ptr)->mflags2 & M2_NEUTER) != 0L)
X#define is_wanderer(ptr) (((ptr)->mflags2 & M2_WANDER) != 0L)
X#define always_hostile(ptr) (((ptr)->mflags2 & M2_HOSTILE) != 0L)
X#define always_peaceful(ptr) (((ptr)->mflags2 & M2_PEACEFUL) != 0L)
X#define extra_nasty(ptr) (((ptr)->mflags2 & M2_NASTY) != 0L)
X#define strongmonst(ptr) (((ptr)->mflags2 & M2_STRONG) != 0L)
X# ifdef POLYSELF
X#define can_breathe(ptr) attacktype(ptr, AT_BREA)
X#define cantwield(ptr) (nohands(ptr) || verysmall(ptr))
X#define cantweararm(ptr) (breakarm(ptr) || sliparm(ptr))
X# endif /* POLYSELF */
X#define throws_rocks(ptr) (((ptr)->mflags2 & M2_ROCKTHROW) != 0L)
X#define type_is_pname(ptr) (((ptr)->mflags2 & M2_PNAME) != 0L)
X#define is_lord(ptr) (((ptr)->mflags2 & M2_LORD) != 0L)
X#define is_prince(ptr) (((ptr)->mflags2 & M2_PRINCE) != 0L)
X#define is_ndemon(ptr) (is_demon(ptr) && \
X (((ptr)->mflags2 & (M2_LORD|M2_PRINCE)) == 0L))
X#define is_dlord(ptr) (is_demon(ptr) && is_lord(ptr))
X#define is_dprince(ptr) (is_demon(ptr) && is_prince(ptr))
X#define is_minion(ptr) ((ptr)->mflags2 & M2_MINION)
X#define is_lminion(ptr) (is_minion(ptr) && \
X (ptr)->maligntyp >= A_COALIGNED)
X#define likes_gold(ptr) (((ptr)->mflags2 & M2_GREEDY) != 0L)
X#define likes_gems(ptr) (((ptr)->mflags2 & M2_JEWELS) != 0L)
X#define likes_objs(ptr) (((ptr)->mflags2 & M2_COLLECT) != 0L || \
X is_armed(ptr))
X#define likes_magic(ptr) (((ptr)->mflags2 & M2_MAGIC) != 0L)
X#define is_longworm(ptr) (((ptr) == &mons[PM_BABY_LONG_WORM]) || \
X ((ptr) == &mons[PM_LONG_WORM]) || \
X ((ptr) == &mons[PM_LONG_WORM_TAIL]))
X#define is_covetous(ptr) ((ptr->mflags3 & M3_COVETOUS))
X#define is_mplayer(ptr) (((ptr) >= &mons[PM_ARCHEOLOGIST]) && \
X ((ptr) <= &mons[PM_WIZARD]))
X#define is_rider(ptr) ((ptr) == &mons[PM_DEATH] || \
X (ptr) == &mons[PM_FAMINE] || \
X (ptr) == &mons[PM_PESTILENCE])
X#endif /* MONDATA_H */
END_OF_FILE
if test 5910 -ne `wc -c <'include/mondata.h'`; then
echo shar: \"'include/mondata.h'\" unpacked with wrong size!
fi
# end of 'include/mondata.h'
fi
if test -f 'include/you.h' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'include/you.h'\"
else
echo shar: Extracting \"'include/you.h'\" \(6900 characters\)
sed "s/^X//" >'include/you.h' <<'END_OF_FILE'
X/* SCCS Id: @(#)you.h 3.1 92/11/29 */
X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X/* NetHack may be freely redistributed. See license for details. */
X
X#ifndef YOU_H
X#define YOU_H
X
X#ifndef ALIGN_H
X#include "align.h"
X#endif
X#ifndef ATTRIB_H
X#include "attrib.h"
X#endif
X#ifndef MONST_H
X#include "monst.h"
X#endif
X#ifndef YOUPROP_H
X#include "youprop.h"
X#endif
X
Xstruct prop {
X
X#define TIMEOUT 007777 /* mask */
X
X#define LEFT_RING W_RINGL /* 010000L */
X#define RIGHT_RING W_RINGR /* 020000L */
X#define LEFT_SIDE LEFT_RING
X#define RIGHT_SIDE RIGHT_RING
X#define BOTH_SIDES (LEFT_SIDE | RIGHT_SIDE)
X
X#define WORN_ARMOR W_ARM /* 040000L */
X#define WORN_CLOAK W_ARMC /* 0100000L */
X#define WORN_HELMET W_ARMH /* 0200000L */
X#define WORN_SHIELD W_ARMS /* 0400000L */
X#define WORN_GLOVES W_ARMG /* 01000000L */
X#define WORN_BOOTS W_ARMF /* 02000000L */
X#define WORN_AMUL W_AMUL /* 04000000L */
X#define WORN_BLINDF W_TOOL /* 010000000L */
X#ifdef TOURIST
X#define WORN_SHIRT W_ARMU /* 01000L */
X#endif
X
X/*
X * FROMEXPER is for a property gained by virtue of your experience level,
X * which will be lost if you lose that level; FROMOUTSIDE is one that is
X * gained in some other way (e.g., a throne, a prayer, or a corpse).
X * INTRINSIC is either FROMEXPER or FROMOUTSIDE
X */
X#define FROMOUTSIDE 0200000000L
X#define FROMEXPER 0400000000L
X#define INTRINSIC (FROMOUTSIDE|FROMEXPER)
X
X long p_flgs;
X int NDECL((*p_tofn)); /* called after timeout */
X};
X
Xstruct u_have {
X Bitfield(amulet,1); /* carrying Amulet */
X Bitfield(bell,1); /* carrying Bell */
X Bitfield(book,1); /* carrying Book */
X Bitfield(menorah,1); /* carrying Candelabrum */
X#ifdef MULDGN
X Bitfield(questart,1); /* carrying the Quest Artifact */
X Bitfield(unused,3);
X#else
X Bitfield(unused,4);
X#endif
X};
X
Xstruct u_event {
X Bitfield(minor_oracle,1); /* received at least 1 cheap oracle */
X Bitfield(major_oracle,1); /* " expensive oracle */
X#ifdef MULDGN
X Bitfield(qexpelled,1); /* expelled from the Quest dungeon */
X Bitfield(qcompleted,1); /* successfully completed the Quest task */
X#endif
X Bitfield(uheard_tune,2); /* if you heard the passtune */
X Bitfield(uopened_dbridge,1); /* if you open the drawbridge */
X Bitfield(invoked,1); /* invoked the gate to the Sanctum level */
X
X Bitfield(gehennom_entered,1); /* entered Gehennom via Valley */
X#ifdef ELBERETH
X Bitfield(uhand_of_elbereth,1); /* if you become Hand of Elbereth */
X#endif
X Bitfield(udemigod,1); /* once you kill the wiz */
X};
X
X
Xstruct you {
X xchar ux, uy;
X schar dx, dy, dz; /* direction of move (or zap or ... ) */
X schar di; /* direction of FF */
X xchar ux0, uy0; /* initial position FF */
X d_level uz, uz0; /* your level on this and the previous turn */
X d_level utolev; /* level monster teleported you to, or uz */
X char utotype; /* bitmask of goto_level() flags for utolev */
X char usym; /* usually '@' */
X boolean umoved; /* changed map location (post-move) */
X int last_str_turn; /* 0: none, 1: half turn, 2: full turn */
X /* +: turn right, -: turn left */
X unsigned ulevel; /* 1 - MAXULEV */
X unsigned utrap; /* trap timeout */
X unsigned utraptype; /* defined if utrap nonzero */
X#define TT_BEARTRAP 0
X#define TT_PIT 1
X#define TT_WEB 2
X#define TT_LAVA 3
X#define TT_INFLOOR 4
X char urooms[5]; /* rooms (roomno + 3) occupied now */
X char urooms0[5]; /* ditto, for previous position */
X char uentered[5]; /* rooms (roomno + 3) entered this turn */
X char ushops[5]; /* shop rooms (roomno + 3) occupied now */
X char ushops0[5]; /* ditto, for previous position */
X char ushops_entered[5]; /* ditto, shops entered this turn */
X char ushops_left[5]; /* ditto, shops exited this turn */
X
X int uhunger; /* refd only in eat.c and shk.c */
X unsigned uhs; /* hunger state - see eat.c */
X
X struct prop uprops[LAST_PROP+1];
X
X unsigned umconf;
X const char *usick_cause;
X/* For messages referring to hands, eyes, feet, etc... when polymorphed */
X#define ARM 0
X#define EYE 1
X#define FACE 2
X#define FINGER 3
X#define FINGERTIP 4
X#define FOOT 5
X#define HAND 6
X#define HANDED 7
X#define HEAD 8
X#define LEG 9
X#define LIGHT_HEADED 10
X#define NECK 11
X#define SPINE 12
X#define TOE 13
X
X /* These ranges can never be more than MAX_RANGE (vision.h). */
X int nv_range; /* current night vision range */
X int xray_range; /* current xray vision range */
X
X /*
X * These variables are valid globally only when punished and blind.
X */
X#define BC_BALL 0x01 /* bit mask for ball in 'bc_felt' below */
X#define BC_CHAIN 0x02 /* bit mask for chain in 'bc_felt' below */
X int bglyph; /* glyph under the ball */
X int cglyph; /* glyph under the chain */
X int bc_order; /* ball & chain order [see bc_order() in trap.c] */
X int bc_felt; /* mask for ball/chain being felt */
X
X
X /*
X * Player type monster (e.g. PM_VALKYRIE). This is set in u_init
X * and never changed afterward.
X */
X int umonster;
X#ifdef POLYSELF
X int umonnum; /* monster number or -1 */
X int mh, mhmax, mtimedone; /* for polymorph-self */
X struct attribs macurr, /* for monster attribs */
X mamax; /* for monster attribs */
X int ulycn; /* lycanthrope type */
X#endif
X unsigned ucreamed;
X unsigned uswldtim; /* time you have been swallowed */
X
X Bitfield (uswallow,1); /* true if swallowed */
X Bitfield(uinwater,1); /* if you're currently in water (only
X underwater possible currently) */
X#ifdef POLYSELF
X Bitfield(uundetected,1); /* if you're a hiding monster/piercer */
X Bitfield(mfemale,1); /* saved human value of flags.female */
X#endif
X Bitfield(uinvulnerable,1); /* you're invulnerable (praying) */
X Bitfield(usleep,1); /* you're sleeping */
X
X unsigned udg_cnt; /* how long you have been demigod */
X struct u_event uevent; /* certain events have happened */
X struct u_have uhave; /* you're carrying special objects */
X struct attribs acurr, /* your current attributes (eg. str)*/
X aexe, /* for gain/loss via "exercise" */
X abon, /* your bonus attributes (eg. str) */
X amax, /* your max attributes (eg. str) */
X atemp, /* used for temporary loss/gain */
X atime; /* used for loss/gain countdown */
X align ualign; /* character alignment */
X#define CONVERT 2
X aligntyp ualignbase[CONVERT]; /* for ualign conversion record */
X schar uluck, moreluck; /* luck and luck bonus */
X#define LUCKADD 3 /* added value when carrying luck stone */
X#define Luck (u.uluck + u.moreluck)
X#define LUCKMAX 10 /* on moonlit nights 11 */
X#define LUCKMIN (-10)
X schar udaminc;
X schar uac;
X int uhp,uhpmax;
X int uen, uenmax; /* magical energy - M. Stephenson */
X int ugangr; /* if the gods are angry at you */
X int ublessed, ublesscnt; /* blessing/duration from #pray */
X long ugold, ugold0;
X long uexp, urexp;
X long ucleansed; /* to record moves when player was cleansed */
X int uinvault;
X struct monst *ustuck;
X int ugrave_arise; /* you die and become something aside from a ghost */
X int nr_killed[NUMMONS]; /* used for experience bookkeeping */
X};
X
X#endif /* YOU_H */
END_OF_FILE
if test 6900 -ne `wc -c <'include/you.h'`; then
echo shar: \"'include/you.h'\" unpacked with wrong size!
fi
# end of 'include/you.h'
fi
if test -f 'sys/amiga/NewGame.uu' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'sys/amiga/NewGame.uu'\"
else
echo shar: Extracting \"'sys/amiga/NewGame.uu'\" \(2167 characters\)
sed "s/^X//" >'sys/amiga/NewGame.uu' <<'END_OF_FILE'
Xbegin 777 NewGame.info
XMXQ```0``````=@`^`%``(@`&`0L``0`DT>``)4KX``````````````````0`
XM```!!!@`)-O@`"69&(````"``````````````````)Q```````!0`"$``@`"
XM_0@#```````````````````!`````````````P````````````,`````````
XM```#`````````````P````````````,``!__@``````#``!U57```````P`!
XMJJJH``````,``5557``````#``:JJJH``````P`%??WU``````,`!OJ[^P``
XM```#``5O_=4``````P`&JJJK`````/L`!575U0'_[/_[``:OOJO_____XP`%
XM5554>^```!L#_JZJJT%4F*=3'\5UWO7224```S`&N^^K!EPE]TL"M55556K6
XMHL`#)6?___\#4Z^``SJG____X@`*E-,<D?____H#5*W3("L?___XR`<`<RO]
XM[___Z.ZGW#,H(8#___.`>H(#%"$#?__`+`!-BP!!&/@/0`,D0!,V"`P,<WQX
XM``9+*`%F`X!CG#F`ZW_________________________^P````````````,0!
XM\$`(`````$#`#X`$``0`@!``P#\``$`@`@"``,!^`$``((``@(#$?A__L```
XM`0``Q'_U57`!P````,(_JJJH8`@``0#`'5557`!`1```P`:JJJH!```"`,`5
XM`0`%`````0#$1H**"R$#!@``Q@4!`%4``"```,`6JJJK`>@.LP#$%455%1``
XM$P``P`:JHHH``````,$E5554``````#(!*JJJP``````P`4U`!4``````,`&
XMJ`BK``````#`!5555```````P`?___\``````,````````````#`````````
XM````P````````````,````````````#`````````````P````````````,``
XM``````````#`````````````P````````````(```````````````````%``
XM(0`"``1:T`,``````/_____________`````````````P````````````,``
XM``````````#`````````````P````````````,````````````#`````````
XM````P````````````,````````````#```/G@```````P`!^_>```````,``
XM]SOX``````#``:_]W```````P`>JJJX`````^,`%5=74`?_L__C`!J^^JW__
XM___@P`55551[X```&,-^KJJK0528IU#>!77>]=))0```\8:[[ZL&3"6W2,+5
XM5555:M8BP`#D1____P-`#H``^V?____"``J4T-U!____Z@,4K=#@*Q___\B(
XM!@!PZ]WH_\P([B?<,.@A@,$$<X!R``#4(`-$*T`D`$V(P$$8^`%``R1`$/8(
XM#`QS;'@`!DCH`68#@&.<.8#H@```````````````````````````````````
XM```#!`?X0`@`````0P`?_@0`!`"`$`,`/_\`0"`"`(`#`'__@``@@`"`@P1_
XM_X`````!``,$?_^```'````#`C__``!@"``!`P`?_@```$!$``,`!_/G@`$`
XM``(#`!!^_&`````!`P1`]PHX(0,&``,&`8$`7```(``#`!>JJJX!Z`ZS`P05
XM1544$``3``,`!JJBB@`````#`255550``````P@$JJJK````"`,`!34`%0``
XM```#``:H"*L```!``P`%5554`````(,`!____P`(`$`#````````$````P`0
XM``````!```,````````!```#`"```````````P```````````@,``P````!"
XM"``#`````````````P````````````,````````````#?____________P``
XM`!!(86-K17AE.DYE=$AA8VL`````%````!%(04-+1$E2/4YE=$AA8VLZ````
XM`!9,159%3%,]3F5T:&%C:SIL979E;',`````$E-!5D4]3F5T:&%C:SIS879E
X3``````Y0051(/4YE=$AA8VLZ`'9E
X`
Xend
END_OF_FILE
if test 2167 -ne `wc -c <'sys/amiga/NewGame.uu'`; then
echo shar: \"'sys/amiga/NewGame.uu'\" unpacked with wrong size!
fi
# end of 'sys/amiga/NewGame.uu'
fi
if test -f 'sys/amiga/colorwin.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'sys/amiga/colorwin.c'\"
else
echo shar: Extracting \"'sys/amiga/colorwin.c'\" \(6366 characters\)
sed "s/^X//" >'sys/amiga/colorwin.c' <<'END_OF_FILE'
X
XSHORT Col_BorderVectors1[] = {
X 0,0,
X 59,0,
X 59,12,
X 0,12,
X 0,0
X};
Xstruct Border Col_Border1 = {
X -1,-1, /* XY origin relative to container TopLeft */
X 3,0,JAM1, /* front pen, back pen and drawmode */
X 5, /* number of XY vectors */
X Col_BorderVectors1, /* pointer to XY vectors */
X NULL /* next border in list */
X};
X
Xstruct IntuiText Col_IText1 = {
X 3,0,JAM2, /* front and back text pens, drawmode and fill byte */
X 13,1, /* XY origin relative to container TopLeft */
X NULL, /* font pointer or NULL for default */
X "Okay", /* pointer to text */
X NULL /* next IntuiText structure */
X};
X
Xstruct Gadget Col_Okay = {
X NULL, /* next gadget */
X 8,65, /* origin XY of hit box relative to window TopLeft */
X 58,11, /* hit box width and height */
X NULL, /* gadget flags */
X RELVERIFY, /* activation flags */
X BOOLGADGET, /* gadget type flags */
X (APTR)&Col_Border1, /* gadget border or image to be rendered */
X NULL, /* alternate imagery for selection */
X &Col_IText1, /* first IntuiText structure */
X NULL, /* gadget mutual-exclude long word */
X NULL, /* SpecialInfo structure */
X GADCOLOKAY, /* user-definable data */
X NULL /* pointer to user-definable data */
X};
X
XSHORT Col_BorderVectors2[] = {
X 0,0,
X 59,0,
X 59,12,
X 0,12,
X 0,0
X};
Xstruct Border Col_Border2 = {
X -1,-1, /* XY origin relative to container TopLeft */
X 3,0,JAM1, /* front pen, back pen and drawmode */
X 5, /* number of XY vectors */
X Col_BorderVectors2, /* pointer to XY vectors */
X NULL /* next border in list */
X};
X
Xstruct IntuiText Col_IText2 = {
X 3,0,JAM2, /* front and back text pens, drawmode and fill byte */
X 6,1, /* XY origin relative to container TopLeft */
X NULL, /* font pointer or NULL for default */
X "Cancel", /* pointer to text */
X NULL /* next IntuiText structure */
X};
X
Xstruct Gadget Col_Cancel = {
X &Col_Okay, /* next gadget */
X 218,65, /* origin XY of hit box relative to window TopLeft */
X 58,11, /* hit box width and height */
X NULL, /* gadget flags */
X RELVERIFY, /* activation flags */
X BOOLGADGET, /* gadget type flags */
X (APTR)&Col_Border2, /* gadget border or image to be rendered */
X NULL, /* alternate imagery for selection */
X &Col_IText2, /* first IntuiText structure */
X NULL, /* gadget mutual-exclude long word */
X NULL, /* SpecialInfo structure */
X GADCOLCANCEL, /* user-definable data */
X NULL /* pointer to user-definable data */
X};
X
Xstruct PropInfo Col_Col_RedPenSInfo = {
X AUTOKNOB+FREEHORIZ, /* PropInfo flags */
X 0,0, /* horizontal and vertical pot values */
X -1,-1, /* horizontal and vertical body values */
X};
X
Xstruct Image Col_Image1 = {
X 0,0, /* XY origin relative to container TopLeft */
X 263,7, /* Image width and height in pixels */
X 0, /* number of bitplanes in Image */
X NULL, /* pointer to ImageData */
X 0x0000,0x0000, /* PlanePick and PlaneOnOff */
X NULL /* next Image structure */
X};
X
Xstruct Gadget Col_RedPen = {
X &Col_Cancel, /* next gadget */
X 7,12, /* origin XY of hit box relative to window TopLeft */
X 271,11, /* hit box width and height */
X NULL, /* gadget flags */
X RELVERIFY+GADGIMMEDIATE+FOLLOWMOUSE, /* activation flags */
X PROPGADGET, /* gadget type flags */
X (APTR)&Col_Image1, /* gadget border or image to be rendered */
X NULL, /* alternate imagery for selection */
X NULL, /* first IntuiText structure */
X NULL, /* gadget mutual-exclude long word */
X (APTR)&Col_Col_RedPenSInfo, /* SpecialInfo structure */
X GADREDPEN, /* user-definable data */
X NULL /* pointer to user-definable data */
X};
X
Xstruct PropInfo Col_Col_GreenPenSInfo = {
X AUTOKNOB+FREEHORIZ, /* PropInfo flags */
X 0,0, /* horizontal and vertical pot values */
X -1,-1, /* horizontal and vertical body values */
X};
X
Xstruct Image Col_Image2 = {
X 0,0, /* XY origin relative to container TopLeft */
X 263,7, /* Image width and height in pixels */
X 0, /* number of bitplanes in Image */
X NULL, /* pointer to ImageData */
X 0x0000,0x0000, /* PlanePick and PlaneOnOff */
X NULL /* next Image structure */
X};
X
Xstruct Gadget Col_GreenPen = {
X &Col_RedPen, /* next gadget */
X 7,24, /* origin XY of hit box relative to window TopLeft */
X 271,11, /* hit box width and height */
X NULL, /* gadget flags */
X RELVERIFY+GADGIMMEDIATE+FOLLOWMOUSE, /* activation flags */
X PROPGADGET, /* gadget type flags */
X (APTR)&Col_Image2, /* gadget border or image to be rendered */
X NULL, /* alternate imagery for selection */
X NULL, /* first IntuiText structure */
X NULL, /* gadget mutual-exclude long word */
X (APTR)&Col_Col_GreenPenSInfo, /* SpecialInfo structure */
X GADGREENPEN, /* user-definable data */
X NULL /* pointer to user-definable data */
X};
X
Xstruct PropInfo Col_Col_BluePenSInfo = {
X AUTOKNOB+FREEHORIZ, /* PropInfo flags */
X 0,0, /* horizontal and vertical pot values */
X -1,-1, /* horizontal and vertical body values */
X};
X
Xstruct Image Col_Image3 = {
X 0,0, /* XY origin relative to container TopLeft */
X 263,7, /* Image width and height in pixels */
X 0, /* number of bitplanes in Image */
X NULL, /* pointer to ImageData */
X 0x0000,0x0000, /* PlanePick and PlaneOnOff */
X NULL /* next Image structure */
X};
X
Xstruct Gadget Col_BluePen = {
X &Col_GreenPen, /* next gadget */
X 7,36, /* origin XY of hit box relative to window TopLeft */
X 271,11, /* hit box width and height */
X NULL, /* gadget flags */
X RELVERIFY+GADGIMMEDIATE+FOLLOWMOUSE, /* activation flags */
X PROPGADGET, /* gadget type flags */
X (APTR)&Col_Image3, /* gadget border or image to be rendered */
X NULL, /* alternate imagery for selection */
X NULL, /* first IntuiText structure */
X NULL, /* gadget mutual-exclude long word */
X (APTR)&Col_Col_BluePenSInfo, /* SpecialInfo structure */
X GADBLUEPEN, /* user-definable data */
X NULL /* pointer to user-definable data */
X};
X
X#define Col_GadgetList1 Col_BluePen
X
Xstruct NewWindow Col_NewWindowStructure1 = {
X 175,45, /* window XY origin relative to TopLeft of screen */
X 285,80, /* window width and height */
X 0,1, /* detail and block pens */
X MOUSEBUTTONS+MOUSEMOVE+GADGETDOWN+GADGETUP+CLOSEWINDOW+VANILLAKEY+INTUITICKS, /* IDCMP flags */
X WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH, /* other window flags */
X &Col_BluePen, /* first gadget in gadget list */
X NULL, /* custom CHECKMARK imagery */
X "Edit Screen Colors", /* window title */
X NULL, /* custom screen pointer */
X NULL, /* custom bitmap */
X 5,5, /* minimum width and height */
X -1,-1, /* maximum width and height */
X CUSTOMSCREEN /* destination screen type */
X};
X
X
X/* end of PowerWindows source generation */
END_OF_FILE
if test 6366 -ne `wc -c <'sys/amiga/colorwin.c'`; then
echo shar: \"'sys/amiga/colorwin.c'\" unpacked with wrong size!
fi
# end of 'sys/amiga/colorwin.c'
fi
if test -f 'sys/unix/Makefile.utl' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'sys/unix/Makefile.utl'\"
else
echo shar: Extracting \"'sys/unix/Makefile.utl'\" \(6899 characters\)
sed "s/^X//" >'sys/unix/Makefile.utl' <<'END_OF_FILE'
X# Makefile for NetHack's utility programs.
X# SCCS Id: @(#)Makefile.utl 3.1 92/11/01
X
X# if you are using gcc as your compiler,
X# uncomment the CC definition below if it's not in your environment
X# CC = gcc
X#
X# For Bull DPX/2 systems at B.O.S. 2.0 or higher use the following:
X#
X# CC = gcc -ansi -D_BULL_SOURCE -D_XOPEN_SOURCE -D_POSIX_SOURCE
X#
X# If you are using GCC 2.2.2 or higher on a DPX/2, just use:
X#
X# CC = gcc -ansi
X#
X# if your make doesn't define a default SHELL properly, you may need
X# the line below (Atari users will need a bourne work-alike)
X# SHELL = /bin/sh
X
X# flags may have to be changed as required
X# flags for 286 Xenix:
X# CFLAGS = -Ml2t16 -O -LARGE -I../include
X# LFLAGS = -Ml -F 4000 -SEG 512
X
X# flags for 286 Microport SysV-AT
X# CFLAGS = -DDUMB -Ml -I../include
X# LFLAGS = -Ml
X
X# flags for Atari GCC
X# CFLAGS = -O -I../include
X# LFLAGS = -s
X
X# flags for Apollos using their native cc
X# (as long as it claims to be __STDC__ but isn't)
X# CFLAGS = -DAPOLLO -O -I../include
X
X# flags for AIX 3.1 cc on IBM RS/6000 to define
X# a suitable subset of standard libraries
X# (note that there is more info regarding the "-qchars=signed"
X# switch in file Install.unx note 8)
X# CFLAGS = -D_NO_PROTO -D_XOPEN_SOURCE -O -I../include -qchars=signed
X
X# flags for A/UX 2.01 using native cc or c89
X# gcc predefines AUX so that's not needed there
X# CFLAGS = -ZS -D_POSIX_SOURCE -O -I../include -DAUX
X
X# flags for debugging:
X# CFLAGS = -g -I../include
X
XCFLAGS = -g -I../include
XLFLAGS =
X
X
X# yacc/lex programs to use to generate *_comp.h, *_lex.c, and *_yacc.c.
X# if, instead of yacc/lex you have bison/flex, comment/uncomment the following.
XYACC = yacc
XLEX = lex
X# YACC = bison -y
X# LEX = flex
X
X# these are the names of the output files from YACC/LEX. Under MS-DOS
X# and similar systems, they may differ
XYTABC = y.tab.c
XYTABH = y.tab.h
XLEXYYC = lex.yy.c
X# YTABC = y_tab.c
X# YTABH = y_tab.h
X# LEXYYC = lexyy.c
X
X# Nothing below this line should have to be changed.
X
X# utility .c files
XMAKESRC = makedefs.c
XSPLEVSRC = lev_yacc.c lev_lex.c lev_main.c panic.c
XDGNCOMPSRC = dgn_yacc.c dgn_lex.c dgn_main.c
XUTILSRCS = $(MAKESRC) $(SPLEVSRC) $(DGNCOMPSRC)
X
X# object files for makedefs
XMAKEOBJS = makedefs.o ../src/monst.o ../src/objects.o
X
X# object files for special levels compiler
XSPLEVOBJS = lev_yacc.o lev_lex.o lev_main.o panic.o \
X ../src/alloc.o ../src/drawing.o ../src/decl.o \
X ../src/monst.o ../src/objects.o
X
X# object files for dungeon compiler
XDGNCOMPOBJS = dgn_yacc.o dgn_lex.o dgn_main.o panic.o ../src/alloc.o
X
X# object files for recovery utility
XRECOVOBJS = recover.o
X
X
X# dependencies for makedefs
X#
Xmakedefs: $(MAKEOBJS)
X $(CC) $(LFLAGS) -o makedefs $(MAKEOBJS)
X
Xmakedefs.o: ../include/config.h ../include/permonst.h ../include/objclass.h \
X ../include/monsym.h ../include/artilist.h ../include/qtext.h
X
X../include/onames.h: makedefs
X ./makedefs -o
X../include/pm.h: makedefs
X ./makedefs -p
X../src/monstr.c: makedefs
X ./makedefs -m
X../include/vis_tab.h: makedefs
X ./makedefs -z
X../src/vis_tab.c: makedefs
X ./makedefs -z
X
Xlintdefs:
X @lint -axbh -I../include -DLINT $(MAKESRC) ../src/monst.c ../src/objects.c | sed '/_flsbuf/d'
X
X
X# the src Makefile is responsible for knowing when to call this, since
X# it knows all about the main src and include files
X../include/date.h::
X ./makedefs -v
X
X
X# dependencies for lev_comp
X#
Xlev_comp: $(SPLEVOBJS)
X $(CC) $(LFLAGS) -o lev_comp $(SPLEVOBJS)
X
Xlev_yacc.o: ../include/hack.h ../include/sp_lev.h
Xlev_main.o: ../include/hack.h ../include/sp_lev.h ../include/termcap.h
Xpanic.o: ../include/config.h
X
X# see lev_comp.l for WEIRD_LEX discussion
X# egrep returns failure if it doesn't find anything, so we have to go to
X# some trouble to check for $(CC) failures
Xlev_lex.o: ../include/hack.h ../include/lev_comp.h ../include/sp_lev.h
X -@rm lev_lex.o 2>/dev/null
X @echo $(CC) -c $(CFLAGS) lev_lex.c
X -@$(CC) -c $(CFLAGS) -DWEIRD_LEX=`egrep -c _cplusplus lev_lex.c` lev_lex.c
X @test -r lev_lex.o
X
X../include/lev_comp.h: lev_yacc.c
X
Xlev_yacc.c: lev_comp.y
X $(YACC) -d lev_comp.y
X mv $(YTABC) lev_yacc.c
X mv $(YTABH) ../include/lev_comp.h
X
Xlev_lex.c: lev_comp.l
X $(LEX) lev_comp.l
X mv $(LEXYYC) lev_lex.c
X
X# with all of extern.h's functions to complain about, we drown in
X# 'defined but not used' without -u
Xlintlev:
X @lint -axhu -I../include -DLINT $(SPLEVSRC) ../src/alloc.c ../src/monst.c ../src/objects.c | sed '/_flsbuf/d'
X
X
X# dependencies for dgn_comp
X#
Xdgn_comp: $(DGNCOMPOBJS)
X $(CC) $(LFLAGS) -o dgn_comp $(DGNCOMPOBJS)
X
Xdgn_yacc.o: ../include/config.h ../include/dgn_file.h
Xdgn_main.o: ../include/config.h
X
X# see dgn_comp.l for WEIRD_LEX discussion
X# egrep returns failure if it doesn't find anything, so we have to go to
X# some trouble to check for $(CC) failures
Xdgn_lex.o: ../include/config.h ../include/dgn_comp.h ../include/dgn_file.h
X -@rm dgn_lex.o 2>/dev/null
X @echo $(CC) -c $(CFLAGS) dgn_lex.c
X -@$(CC) -c $(CFLAGS) -DWEIRD_LEX=`egrep -c _cplusplus dgn_lex.c` dgn_lex.c
X @test -r dgn_lex.o
X
X
X../include/dgn_comp.h: dgn_yacc.c
X
Xdgn_yacc.c: dgn_comp.y
X $(YACC) -d dgn_comp.y
X mv $(YTABC) dgn_yacc.c
X mv $(YTABH) ../include/dgn_comp.h
X
Xdgn_lex.c: dgn_comp.l
X $(LEX) dgn_comp.l
X mv $(LEXYYC) dgn_lex.c
X
X# with all of extern.h's functions to complain about, we drown in
X# 'defined but not used' without -u
Xlintdgn:
X @lint -axhu -I../include -DLINT $(DGNCOMPSRC) panic.c ../src/alloc.c | sed '/_flsbuf/d'
X
X
X# dependencies for recover
X#
Xrecover: $(RECOVOBJS)
X $(CC) $(LFLAGS) -o recover $(RECOVOBJS)
X
Xrecover.o: ../include/config.h
X
X
X
X# using dependencies like
X# ../src/foo::
X# @( cd ../src ; $(MAKE) foo )
X# would always force foo to be up-to-date according to the src Makefile
X# when it's needed here. unfortunately, some makes believe this syntax
X# means foo always changes, instead of foo should always be checked.
X# therefore, approximate via config.h dependencies, and hope that anybody
X# changing anything other than basic configuration also knows when not
X# to improvise things not in the instructions, like 'make makedefs' here
X# in util...
X
X# make sure object files from src are available when needed
X#
X../src/alloc.o: ../src/alloc.c ../include/config.h
X @( cd ../src ; $(MAKE) alloc.o )
X../src/drawing.o: ../src/drawing.c ../include/config.h
X @( cd ../src ; $(MAKE) drawing.o )
X../src/decl.o: ../src/decl.c ../include/config.h
X @( cd ../src ; $(MAKE) decl.o )
X../src/monst.o: ../src/monst.c ../include/config.h
X @( cd ../src ; $(MAKE) monst.o )
X../src/objects.o: ../src/objects.c ../include/config.h
X @( cd ../src ; $(MAKE) objects.o )
X
X# make sure hack.h dependencies get transitive information
X../include/hack.h: ../include/config.h
X @( cd ../src ; $(MAKE) ../include/hack.h )
X
Xtags: $(UTILSRCS)
X @ctags -tw $(UTILSRCS)
X
Xclean:
X rm -f *.o
X
Xspotless: clean
X rm -f lev_lex.c lev_yacc.c dgn_lex.c dgn_yacc.c
X rm -f ../include/lev_comp.h ../include/dgn_comp.h
X rm -f makedefs lev_comp dgn_comp recover
END_OF_FILE
if test 6899 -ne `wc -c <'sys/unix/Makefile.utl'`; then
echo shar: \"'sys/unix/Makefile.utl'\" unpacked with wrong size!
fi
# end of 'sys/unix/Makefile.utl'
fi
if test -f 'sys/vms/install.com' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'sys/vms/install.com'\"
else
echo shar: Extracting \"'sys/vms/install.com'\" \(6535 characters\)
sed "s/^X//" >'sys/vms/install.com' <<'END_OF_FILE'
X$ ! vms/install.com -- set up nethack 'playground'
X$ !
X$ ! Use vmsbuild.com to create nethack.exe, makedefs, and lev_comp *first*.
X$ !
X$ ! Edit this file to define gamedir & gameuic, or else invoke it with two
X$ ! command line parameters, as in:
X$ ! @[.sys.vms]install "disk$users:[games.nethack]" "games"
X$ ! or @[.sys.vms]install "[-.play]" "[40,1]"
X$ !
X$ ! default location is old playground, default owner is installer
X$ gamedir = f$trnlnm("HACKDIR") !location of playground
X$ gameuic = f$user() !owner of playground
X$ ! --- nothing below this line should need to be changed ---
X$ if p1.nes."" then gamedir := 'p1'
X$ if p2.nes."" then gameuic := 'p2'
X$
X$ ! note: all filespecs contain some punctuation,
X$ ! to avoid inadvertent logical name interaction
X$ play_files = "PERM.,RECORD.,LOGFILE."
X$ help_files = "HELP.,HH.,CMDHELP.,WIZHELP.,OPTHELP.,HISTORY.,LICENSE."
X$ data_files = "DATA.,RUMORS.,ORACLES.,OPTIONS.,QUEST.DAT"
X$ guidebook = "[.doc]Guidebook.txt"
X$ invoc_proc = "[.sys.vms]nethack.com"
X$ trmcp_file = "[.sys.share]termcap"
X$ spec_files = "AIR.LEV,ASMODEUS.LEV,ASTRAL.LEV,BAALZ.LEV,BIGROOM.LEV," -
X + "CASTLE.LEV,EARTH.LEV,FAKEWIZ%.LEV,FIRE.LEV," -
X + "JUIBLEX.LEV,KNOX.LEV,MEDUSA-%.LEV,MINEFILL.LEV," -
X + "MINETOWN.LEV,MINE_END.LEV,ORACLE.LEV,ORCUS.LEV," -
X + "SANCTUM.LEV,TOWER%.LEV,VALLEY.LEV,WATER.LEV,WIZARD%.LEV"
X$ spec_input = "bigroom.des castle.des endgame.des " -
X + "gehennom.des knox.des medusa.des mines.des " -
X + "oracle.des tower.des yendor.des"
X$ qstl_files = "%-GOAL.LEV,%-FILL%.LEV,%-LOCATE.LEV,%-START.LEV"
X$ qstl_input = "Arch.des Barb.des Caveman.des Elf.des " -
X + "Healer.des Knight.des Priest.des Rogue.des " -
X + "Samurai.des Tourist.des Wizard.des Valkyrie.des"
X$ dngn_files = "DUNGEON."
X$ dngn_input = "dungeon.pdf"
X$ makedefs := $sys$disk:[-.util]makedefs
X$ lev_comp := $sys$disk:[-.util]lev_comp
X$ dgn_comp := $sys$disk:[-.util]dgn_comp
X$ milestone = "write sys$output f$fao("" !5%T "",0),"
X$ if p3.nes."" then milestone = "!"
X$!
X$! make sure we've got a playground location
X$ gamedir := 'gamedir'
X$ if gamedir.eqs."" then gamedir = "[.play]" !last ditch default
X$ gamedir = f$parse(gamedir,,,,"SYNTAX_ONLY") - ".;"
X$ if gamedir.eqs."" then write sys$error "% must specify playground directory"
X$ if gamedir.eqs."" then exit %x1000002C !ss$_abort
X$
X$!
X$! ['p3' is used in Makefile.top]
X$ if p3.nes."" then goto make_'p3'
X$
X$ milestone "<installation...>"
X$!
X$make_data:
X$ ! start from a known location -- [.sys.vms]
X$ set default 'f$parse(f$environment("PROCEDURE"),,,"DIRECTORY")'
X$! generate miscellaneous data files
X$ set default [-.-.dat] !move to data directory
X$ milestone "(data)"
X$ makedefs -d !data.base -> data
X$ milestone "(rumors)"
X$ makedefs -r !rumors.tru + rumors.fal -> rumors
X$ milestone "(oracles)"
X$ makedefs -h !oracles.txt -> oracles
X$ milestone "(dungeon preprocess)"
X$ makedefs -e !dungeon.def -> dungeon.pdf
X$ milestone "(quest text)"
X$ makedefs -q !quest.txt -> quest.dat
X$ milestone "(special levels)"
X$ lev_comp 'spec_input' !special levels
X$ milestone "(quest levels)"
X$ lev_comp 'qstl_input' !quest levels
X$ milestone "(dungeon compile)"
X$ dgn_comp 'dngn_input' !dungeon database
X$ set default [-] !move up
X$ if p3.nes."" then exit
X$
X$!
X$! set up the playground and save directories
X$ milestone "(directories)"
X$make_directories:
X$ srctree = f$environment("DEFAULT")
X$ set default 'gamedir'
X$ if f$parse("[-]").eqs."" then create/dir/log [-] !default owner & protection
X$ if f$parse("[]" ).eqs."" then - !needs to be world writable
X create/directory/owner='gameuic'/prot=(s:rwe,o:rwe,g:rwe,w:rwe)/log []
X$ if f$search("SAVE.DIR;1").eqs."" then -
X create/directory/owner='gameuic'/prot=(s:rwe,o:rwe,g:rwe,w:rwe)/log -
X [.SAVE]/version_limit=2
X$ set default 'srctree'
X$ if p3.nes."" then exit
X$!
X$! create empty writeable files -- logfile, scoreboard, multi-user access lock
X$ milestone "(writeable files)"
X$make_writeable_files:
X!-!$ create/owner='gameuic'/prot=(s:rwed,o:rwed,g:rwed,w:rwed) -
X!-! 'gamedir''play_files'
X$ i = 0
X$ploop: f = f$element(i,",",play_files)
X$ if f.eqs."," then goto pdone
X$ i = i + 1
X$ f = gamedir + f
X$ if f$search(f).nes."" !file already exists
X$ then if f$file_attrib(f,"RFM").eqs."STMLF" then goto ploop
X$ rename/new_vers 'f' *.old !needs to be stream_lf
X$ endif
X$ create/fdl=sys$input:/owner='gameuic' 'f'/log
Xfile
X organization sequential
X protection (system:rwd,owner:rwd,group:rw,world:rw)
Xrecord
X format stream_lf
X$ goto ploop
X$pdone:
X$ if p3.nes."" then exit
X$!
X$! copy over the remaining game files, then make them readonly
X$ milestone "(readonly files)"
X$make_readonly_files:
X$ copy/prot=(s:rwed,o:rwed,g:re,w:re) -
X [.dat]'help_files','data_files','spec_files','qstl_files','dngn_files' -
X 'gamedir'*.*
X$ set file/owner='gameuic'/prot=(s:re,o:re) -
X 'gamedir''help_files','data_files','spec_files','qstl_files','dngn_files'
X$ if p3.nes."" then exit
X$!
X$ milestone "(nethack.exe)"
X$make_executable:
X$ copy/prot=(s:rwed,o:rwed,g:re,w:re) [.src]nethack.exe 'gamedir'*.*
X$ set file/owner='gameuic'/prot=(s:re,o:re) 'gamedir'nethack.exe
X$ if p3.nes."" then exit
X$!
X$! provide invocation procedure (if available)
X$make_procedure:
X$ if f$search(invoc_proc).eqs."" then goto skip_dcl
X$ if f$search("''gamedir'nethack.com").nes."" then -
X if f$cvtime(f$file_attr("''gamedir'nethack.com","RDT")) -
X .ges. f$cvtime(f$file_attr(invoc_proc,"RDT")) then goto skip_dcl
X$ milestone "(nethack.com)"
X$ copy/prot=(s:rwed,o:rwed,g:re,w:re) 'invoc_proc' 'gamedir'nethack.com
X$ set file/owner='gameuic'/prot=(s:re,o:re) 'gamedir'nethack.com
X$skip_dcl:
X$ if p3.nes."" then exit
X$!
X$! provide plain-text Guidebook doc file (if available)
X$make_documentation:
X$ if f$search(guidebook).eqs."" then goto skip_doc
X$ milestone "(Guidebook)"
X$ copy/prot=(s:rwed,o:rwed,g:re,w:re) 'guidebook' 'gamedir'Guidebook.doc
X$ set file/owner='gameuic'/prot=(s:re,o:re) 'gamedir'Guidebook.doc
X$skip_doc:
X$ if p3.nes."" then exit
X$!
X$! provide last-resort termcap file (if available)
X$make_termcap:
X$ if f$search(trmcp_file).eqs."" then goto skip_termcap
X$ if f$search("''gamedir'termcap").nes."" then goto skip_termcap
X$ milestone "(termcap)"
X$ copy/prot=(s:rwed,o:rwed,g:re,w:re) 'trmcp_file' 'gamedir'termcap
X$ set file/owner='gameuic'/prot=(s:re,o:re) 'gamedir'termcap
X$skip_termcap:
X$ if p3.nes."" then exit
X$!
X$! done
X$ milestone "<done>"
X$ define/nolog hackdir 'gamedir'
X$ write sys$output -
X f$fao("!/ Nethack installation complete. !/ Playground is !AS !/",gamedir)
X$ exit
END_OF_FILE
if test 6535 -ne `wc -c <'sys/vms/install.com'`; then
echo shar: \"'sys/vms/install.com'\" unpacked with wrong size!
fi
# end of 'sys/vms/install.com'
fi
if test -f 'win/X11/Install.X11' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'win/X11/Install.X11'\"
else
echo shar: Extracting \"'win/X11/Install.X11'\" \(5873 characters\)
sed "s/^X//" >'win/X11/Install.X11' <<'END_OF_FILE'
X
XThis is a first cut at an X11 window port for NetHack. X11 offers enormous
Xpotential for NetHack, little of which is realized here. If you have ideas
Xand extra time, feel free to send in improvements!
X
XThere are no explicit UNIX dependencies in this code, but it is only
Xknown to work under UNIX, using X11R4 or X11R5. Other X11R4+ platforms
Xmay work as well, with some tweaking likely. Follow WIN* in
Xsys/unix/Makefile.src for compilation hints.
X
XThe reason this uses the Athena widget set is that the Athena widgets come
Xfree from MIT (like X11). Unfortunately, the companies that resell X11
X(value subtracted er, added software; yea, yea, that's the ticket) usually
Xdiscourage its use by either omitting the set or putting it on the
X"unsupported" portion of their tape. If you do not have the Athena
Xwidgets, you may obtain them via anonymous ftp from export.lcs.mit.edu.
X
XTo use this code, define X11_GRAPHICS in include/config.h. Add $(WINX11SRC),
X$(WINX11OBJ), and $(WINX11LIB) to WINSRC, WINOBJ, and WINLIB respectively
Xin src/Makefile. This will give you an executable supporting both X11 and
Xtty windowing.
X
XIf you want special graphics symbols, you will also need to install one
Xor both of the included X11 fonts and use the symbol mappings found in
Xnethack.rc. The fonts are found in nh10.bdf and ibm.bdf. You first need
Xto convert the bdf files to whatever form your X11 server recognizes
X(usually using a command called bdftosnf, or on Ultrix systems, bdftopcf).
XThen run mkfontdir on the directory containing your font files (you might
Xwant to copy them to GAMEDIR, from the top Makefile, after you've done
X"make install"). If these commands aren't familiar, talk to your local
XX11 guru and read the man pages. Finally, add that directory to your
Xfont search path (e.g. xset fp+ GAMEDIR, setting GAMEDIR to the value of
XGAMEDIR in the top Makefile). Alternatively, you (assuming you are a
Xsystem administrator) can install the fonts in your standard X11 font
Xdirectory. If you do not install the fonts in the standard X11 font
Xdirectory, all persons playing nethack must add that "xset fp+" command
Xto their .xinitrc file, or whatever file they execute when starting X11.
XAdding the "xset" command to the nethack.sh is also an alternative, though
Xit may clutter your X11 font search path after playing several games, so
Xthis method is not recommended. See the note below for the alternative
Xinstallation procedure for Sun's OpenWindows.
X
XIf your X11 include files and libraries are not installed in a standard
Xplace (i.e. /usr/include/X11 and /usr/lib respectively) you will need to
Xprepend an appropriate -I<idirectory> parameter to CFLAGS and a
X-L<ldirectory> parameter to LFLAGS, setting <?directory> to the place to
Xfind the include and library files for X11.
X
XFinally, you should also install the NetHack.ad file in the normal X11
Xapplications defaults directory. Alternatively, each person may append
Xthe contents of this file to their .Xdefaults file. A second
Xalternative is copy NetHack.ad to GAMEDIR (from the top Makefile) and
Xadd a line to nethack.sh specifying this additional applications
Xdefaults directory:
X XAPPLRESDIR=$HACKDIR; export XAPPLRESDIR
X
XTwo icon suggestions to the window manager are supported: nh72 and nh56.
XData for them comes from source files nh72icon and nh56icon and they are
Xcompiled into the program via #include in winX.c. Selection between them
Xis controlled by the "icon" resource in NetHack.ad; the default is nh72.
X
XSorry, an Imakefile is not included. Unlike many X11 programs, X11
Xsupport is only a small, optional, part of nethack, and the Makefile is
Xneeded for systems that don't use X11.
X
XNotes for Sun's OpenWindows 3.x (2.x will not work):
X 1. Define OPENWINBUG in include/unixconf.h. Add -I/usr/openwin/include
X to CFLAGS, -L/usr/openwin/lib to LFLAGS, and -lm to WINX11LIB in
X src/Makefile. (Naturally, if your OpenWindows is installed
X elsewhere, adapt the two openwin paths.) This will allow you
X to create a game executable.
X
X 2. Run the fonts through convertfont and run bldfamily on the directory.
X The environment variable FONTPATH must include the directory the fonts
X are in when NetHack is run. For a personal installation, setting the
X variable in your .profile or .login is the simplest thing. For a
X multi-user installation, add the lines
X FONTPATH=$FONTPATH:$HACKDIR/fonts
X export FONTPATH
X near the top of sys/unix/nethack.sh (before installation), and put
X the fonts and associated files in the "fonts" subdirectory of your
X GAMEDIR from the top Makefile (after installation via 'make install').
X
X 3. Something must still be done with the NetHack.ad file. All three
X of the possibilities mentioned for standard X11 should work, but
X it may be simplest to use the second or third, paralleling your
X FONTPATH choice.
X
X
XFile Description
X--------- ---------------------------------------------------------------
Xnethack.rc - A sample configuration file for fonts nh10 and ibm.
Xnh10.bdf - A modified version of the 10x20 standard font.
Xibm.bdf - A modified version of one of the ibm (8x14) nethack font.
X Must be used in conjunction with NetHack.ad or nethack.rc.
Xnh32icon - A 32x32 icon bitmap for use with window managers.
Xnh56icon - A 56x56 icon bitmap for use with window managers.
Xnh72icon - A 72x72 icon bitmap for use with window managers.
XNetHack.ad - A sample .Xdefaults for a color screen.
X../../include/Window.h
X../../include/WindowP.h
XWindow.c - A bare-bones widget that has 16 colors and a drawing canvas.
X../../include/winX.h
X - Defines for the X window-port.
Xwin*.c - Code for the X window-port
Xdialogs.c - A better dialog widget. Original code (modified slightly
X by Dean Luick) distributed under the X copyright by Tim
X Theisen. This is from his Ghostview program (which is under
X the GNU public license, v2 or higher).
END_OF_FILE
if test 5873 -ne `wc -c <'win/X11/Install.X11'`; then
echo shar: \"'win/X11/Install.X11'\" unpacked with wrong size!
fi
# end of 'win/X11/Install.X11'
fi
echo shar: End of archive 100 \(of 108\).
cp /dev/null ark100isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 \
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 \
101 102 103 104 105 106 107 108 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 108 archives.
echo "Now execute 'rebuild.sh'"
rm -f ark10[0-8]isdone 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