Initial revision

git-svn-id: file:///srv/svn/joey/bsdgames-trunk@5194 a4a2c43b-8ac3-0310-8836-e0e880c912e2
This commit is contained in:
joey
2003-03-28 10:51:53 +00:00
parent 73a97ae8e6
commit 4303fb4517
6 changed files with 1007 additions and 0 deletions

60
hack/Makefile.bsd Normal file
View File

@@ -0,0 +1,60 @@
# $NetBSD: Makefile,v 1.33 2002/03/05 21:29:56 thorpej Exp $
# @(#)Makefile 8.2 (Berkeley) 4/27/95
.include <bsd.own.mk>
PROG= hack
CPPFLAGS+=-I.
SRCS+= hack.onames.h
SRCS+= alloc.c hack.Decl.c hack.apply.c hack.bones.c hack.c hack.cmd.c \
hack.do.c hack.do_name.c hack.do_wear.c hack.dog.c hack.eat.c \
hack.end.c hack.engrave.c hack.fight.c hack.invent.c hack.ioctl.c \
hack.lev.c hack.main.c hack.makemon.c hack.mhitu.c hack.mklev.c \
hack.mkmaze.c hack.mkobj.c hack.mkshop.c hack.mon.c hack.monst.c \
hack.o_init.c hack.objnam.c hack.options.c hack.pager.c hack.potion.c \
hack.pri.c hack.read.c hack.rip.c hack.rumors.c hack.save.c \
hack.search.c hack.shk.c hack.shknam.c hack.steal.c hack.termcap.c \
hack.timeout.c hack.topl.c hack.track.c hack.trap.c hack.tty.c \
hack.u_init.c hack.unix.c hack.vault.c hack.version.c hack.wield.c \
hack.wizard.c hack.worm.c hack.worn.c hack.zap.c rnd.c
MAN= hack.6
DPADD+= ${LIBTERM} ${LIBCOMPAT}
LDADD+= -ltermcap
HIDEGAME=hidegame
SETGIDGAME=yes
CLEANFILES+=hack.onames.h makedefs
FILES=help hh data
FILESDIR=/var/games/hackdir
hack.onames.h: makedefs def.objects.h
./makedefs ${.CURDIR}/def.objects.h > hack.onames.h
makedefs: makedefs.c
${HOST_LINK.c} -o makedefs ${.CURDIR}/makedefs.c
hack.h: hack.onames.h
alloc.o hack.Decl.o hack.apply.o hack.bones.o hack.o hack.cmd.o hack.do.o \
hack.do_name.o hack.do_wear.o hack.dog.o hack.eat.o hack.end.o \
hack.engrave.o hack.fight.o hack.invent.o hack.ioctl.o hack.lev.o \
hack.main.o hack.makemon.o hack.mhitu.o hack.mklev.o hack.mkmaze.o \
hack.mkobj.o hack.mkshop.o hack.mon.o hack.monst.o hack.o_init.o \
hack.objnam.o hack.options.o hack.pager.o hack.potion.o hack.pri.o \
hack.read.o hack.rip.o hack.rumors.o hack.save.o hack.search.o hack.shk.o \
hack.shknam.o hack.steal.o hack.termcap.o hack.timeout.o hack.topl.o \
hack.track.o hack.trap.o hack.tty.o hack.u_init.o hack.unix.o hack.vault.o \
hack.version.o hack.wield.o hack.wizard.o hack.worm.o hack.worn.o \
hack.zap.o rnd.o: hack.h
.if !exists(${DESTDIR}${FILESDIR}/perm)
afterinstall: clobber
.endif
clobber:
${INSTALL_FILE} -o games -g games -m 660 /dev/null \
${DESTDIR}/var/games/hackdir/perm
${INSTALL_FILE} -o games -g games -m 660 /dev/null \
${DESTDIR}/var/games/hackdir/record
rm -f ${DESTDIR}/var/games/hackdir/bones*
.include <bsd.prog.mk>

668
hack/extern.h Normal file
View File

@@ -0,0 +1,668 @@
/* $NetBSD: extern.h,v 1.5 2002/05/26 00:12:12 wiz Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Christos Zoulas.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the NetBSD
* Foundation, Inc. and its contributors.
* 4. Neither the name of The NetBSD Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _EXTERN_H_
#define _EXTERN_H_
#include <stdarg.h>
#include <stdio.h>
/* alloc.c */
long *alloc __P((unsigned));
long *enlarge __P((char *, unsigned));
/* hack.apply.c */
int doapply __P((void));
int holetime __P((void));
void dighole __P((void));
/* hack.bones.c */
void savebones __P((void));
int getbones __P((void));
/* hack.c */
void unsee __P((void));
void seeoff __P((int));
void domove __P((void));
void movobj __P((struct obj *, int, int));
int dopickup __P((void));
void pickup __P((int));
void lookaround __P((void));
int monster_nearby __P((void));
int rroom __P((int, int));
int cansee __P((xchar, xchar));
int sgn __P((int));
void setsee __P((void));
void nomul __P((int));
int abon __P((void));
int dbon __P((void));
void losestr __P((int));
void losehp __P((int, const char *));
void losehp_m __P((int, struct monst *));
void losexp __P((void));
int inv_weight __P((void));
int inv_cnt __P((void));
long newuexp __P((void));
/* hack.cmd.c */
void rhack __P((const char *));
int doextcmd __P((void));
char lowc __P((int));
char unctrl __P((int));
int movecmd __P((int));
int getdir __P((boolean));
void confdir __P((void));
int finddir __P((void));
int isroom __P((int, int));
int isok __P((int, int));
/* hack.do.c */
int dodrop __P((void));
void dropx __P((struct obj *));
void dropy __P((struct obj *));
int doddrop __P((void));
int dodown __P((void));
int doup __P((void));
void goto_level __P((int, boolean));
int donull __P((void));
int dopray __P((void));
int dothrow __P((void));
struct obj *splitobj __P((struct obj *, int));
void more_experienced __P((int, int));
void set_wounded_legs __P((long, int));
void heal_legs __P((void));
/* hack.do_name.c */
coord getpos __P((int, const char *));
int do_mname __P((void));
void do_oname __P((struct obj *));
int ddocall __P((void));
void docall __P((struct obj *));
char *xmonnam __P((struct monst *, int));
char *lmonnam __P((struct monst *));
char *monnam __P((struct monst *));
char *Monnam __P((struct monst *));
char *amonnam __P((struct monst *, const char *));
char *Amonnam __P((struct monst *, const char *));
char *Xmonnam __P((struct monst *));
char *visctrl __P((int));
/* hack.do_wear.c */
void off_msg __P((struct obj *));
int doremarm __P((void));
int doremring __P((void));
int dorr __P((struct obj *));
int cursed __P((struct obj *));
int armoroff __P((struct obj *));
int doweararm __P((void));
int dowearring __P((void));
void ringoff __P((struct obj *));
void find_ac __P((void));
void glibr __P((void));
struct obj *some_armor __P((void));
void corrode_armor __P((void));
/* hack.dog.c */
void makedog __P((void));
void initedog __P((struct monst *));
void losedogs __P((void));
void keepdogs __P((void));
void fall_down __P((struct monst *));
int dogfood __P((struct obj *));
int dog_move __P((struct monst *, int));
int inroom __P((xchar, xchar));
int tamedog __P((struct monst *, struct obj *));
/* hack.eat.c */
void init_uhunger __P((void));
int opentin __P((void));
int Meatdone __P((void));
int doeat __P((void));
void gethungry __P((void));
void morehungry __P((int));
void lesshungry __P((int));
int unfaint __P((void));
void newuhs __P((boolean));
int poisonous __P((struct obj *));
int eatcorpse __P((struct obj *));
/* hack.end.c */
int dodone __P((void));
void done1 __P((int));
void done_intr __P((int));
void done_hangup __P((int));
void done_in_by __P((struct monst *));
void done __P((const char *));
void topten __P((void));
void outheader __P((void));
struct toptenentry;
int outentry __P((int, struct toptenentry *, int));
char *itoa __P((int));
const char *ordin __P((int));
void clearlocks __P((void));
void hangup __P((int)) __attribute__((__noreturn__));
char *eos __P((char *));
void charcat __P((char *, int));
void prscore __P((int, char **));
/* hack.engrave.c */
struct engr *engr_at __P((xchar, xchar));
int sengr_at __P((const char *, xchar, xchar));
void u_wipe_engr __P((int));
void wipe_engr_at __P((xchar, xchar, xchar));
void read_engr_at __P((int, int));
void make_engr_at __P((int, int, const char *));
int doengrave __P((void));
void save_engravings __P((int));
void rest_engravings __P((int));
void del_engr __P((struct engr *));
/* hack.fight.c */
int hitmm __P((struct monst *, struct monst *));
void mondied __P((struct monst *));
void monstone __P((struct monst *));
int fightm __P((struct monst *));
int thitu __P((int, int, const char *));
boolean hmon __P((struct monst *, struct obj *, int));
int attack __P((struct monst *));
/* hack.invent.c */
struct obj *addinv __P((struct obj *));
void useup __P((struct obj *));
void freeinv __P((struct obj *));
void delobj __P((struct obj *));
void freeobj __P((struct obj *));
void freegold __P((struct gold *));
void deltrap __P((struct trap *));
struct monst *m_at __P((int, int));
struct obj *o_at __P((int, int));
struct obj *sobj_at __P((int, int, int));
int carried __P((struct obj *));
int carrying __P((int));
struct obj *o_on __P((unsigned int, struct obj *));
struct trap *t_at __P((int, int));
struct gold *g_at __P((int, int));
struct obj *mkgoldobj __P((long));
struct obj *getobj __P((const char *, const char *));
int ckunpaid __P((struct obj *));
int ggetobj __P((const char *, int (*fn)(struct obj *), int));
int askchain __P((struct obj *, char *, int, int (*)(struct obj *),
int (*)(struct obj *), int));
char obj_to_let __P((struct obj *));
void prinv __P((struct obj *));
int ddoinv __P((void));
void doinv __P((char *));
int dotypeinv __P((void));
int dolook __P((void));
void stackobj __P((struct obj *));
int merged __P((struct obj *, struct obj *, int));
int countgold __P((void));
int doprgold __P((void));
int doprwep __P((void));
int doprarm __P((void));
int doprring __P((void));
int digit __P((int));
/* hack.ioctl.c */
void getioctls __P((void));
void setioctls __P((void));
int dosuspend __P((void));
/* hack.lev.c */
void savelev __P((int, xchar));
void bwrite __P((int, const void *, unsigned));
void saveobjchn __P((int, struct obj *));
void savemonchn __P((int, struct monst *));
void savegoldchn __P((int, struct gold *));
void savetrapchn __P((int, struct trap *));
void getlev __P((int, int, xchar));
void mread __P((int, char *, unsigned));
void mklev __P((void));
/* hack.main.c */
void glo __P((int));
void askname __P((void));
void impossible __P((const char *, ...))
__attribute__((__format__(__printf__, 1, 2)));
void stop_occupation __P((void));
/* hack.makemon.c */
struct monst *makemon __P((const struct permonst *, int, int));
coord enexto __P((xchar, xchar));
int goodpos __P((int, int));
void rloc __P((struct monst *));
struct monst *mkmon_at __P((int, int, int));
/* hack.mhitu.c */
int mhitu __P((struct monst *));
int hitu __P((struct monst *, int));
/* hack.mklev.c */
void makelevel __P((void));
int makerooms __P((void));
void addrs __P((int, int, int, int));
void addrsx __P((int, int, int, int, boolean));
struct mkroom;
int comp __P((const void *, const void *));
coord finddpos __P((int, int, int, int));
int okdoor __P((int, int));
void dodoor __P((int, int, struct mkroom *));
void dosdoor __P((int, int, struct mkroom *, int));
int maker __P((schar, schar, schar, schar));
void makecorridors __P((void));
void join __P((int, int));
void make_niches __P((void));
void makevtele __P((void));
void makeniche __P((boolean));
void mktrap __P((int, int, struct mkroom *));
/* hack.mkmaze.c */
void makemaz __P((void));
void walkfrom __P((int, int));
void move __P((int *, int *, int));
int okay __P((int, int, int));
coord mazexy __P((void));
/* hack.mkobj.c */
struct obj *mkobj_at __P((int, int, int));
void mksobj_at __P((int, int, int));
struct obj *mkobj __P((int));
struct obj *mksobj __P((int));
int letter __P((int));
int weight __P((struct obj *));
void mkgold __P((long, int, int));
/* hack.mkshop.c */
void mkshop __P((void));
void mkzoo __P((int));
const struct permonst *morguemon __P((void));
void mkswamp __P((void));
int nexttodoor __P((int, int));
int has_dnstairs __P((struct mkroom *));
int has_upstairs __P((struct mkroom *));
int isbig __P((struct mkroom *));
int dist2 __P((int, int, int, int));
int sq __P((int));
/* hack.mon.c */
void movemon __P((void));
void justswld __P((struct monst *, const char *));
void youswld __P((struct monst *, int, int, const char *));
int dochugw __P((struct monst *));
int dochug __P((struct monst *));
int m_move __P((struct monst *, int));
void mpickgold __P((struct monst *));
void mpickgems __P((struct monst *));
int mfndpos __P((struct monst *, coord[9 ], int[9 ], int));
int dist __P((int, int));
void poisoned __P((const char *, const char *));
void mondead __P((struct monst *));
void replmon __P((struct monst *, struct monst *));
void relmon __P((struct monst *));
void monfree __P((struct monst *));
void dmonsfree __P((void));
void unstuck __P((struct monst *));
void killed __P((struct monst *));
void kludge __P((const char *, const char *));
void rescham __P((void));
int newcham __P((struct monst *, const struct permonst *));
void mnexto __P((struct monst *));
int ishuman __P((struct monst *));
void setmangry __P((struct monst *));
int canseemon __P((struct monst *));
/* hack.monst.c */
/* hack.o_init.c */
int letindex __P((int));
void init_objects __P((void));
int probtype __P((int));
void setgemprobs __P((void));
void oinit __P((void));
void savenames __P((int));
void restnames __P((int));
int dodiscovered __P((void));
int interesting_to_discover __P((int));
/* hack.objnam.c */
char *strprepend __P((char *, char *));
char *sitoa __P((int));
char *typename __P((int));
char *xname __P((struct obj *));
char *doname __P((struct obj *));
void setan __P((const char *, char *));
char *aobjnam __P((struct obj *, const char *));
char *Doname __P((struct obj *));
struct obj *readobjnam __P((char *));
/* hack.options.c */
void initoptions __P((void));
void parseoptions __P((char *, boolean));
int doset __P((void));
/* hack.pager.c */
int dowhatis __P((void));
void intruph __P((int));
void page_more __P((FILE *, int));
void set_whole_screen __P((void));
int readnews __P((void));
void set_pager __P((int));
int page_line __P((const char *));
void cornline __P((int, const char *));
int dohelp __P((void));
int page_file __P((const char *, boolean));
int dosh __P((void));
int child __P((int));
/* hack.potion.c */
int dodrink __P((void));
void pluslvl __P((void));
void strange_feeling __P((struct obj *, const char *));
void potionhit __P((struct monst *, struct obj *));
void potionbreathe __P((struct obj *));
int dodip __P((void));
void ghost_from_bottle __P((void));
/* hack.pri.c */
void swallowed __P((void));
void panic __P((const char *, ...))
__attribute__((__format__(__printf__, 1, 2)));
void atl __P((int, int, int));
void on_scr __P((int, int));
void tmp_at __P((schar, schar));
void Tmp_at __P((schar, schar));
void setclipped __P((void)) __attribute__((__noreturn__));
void at __P((xchar, xchar, int));
void prme __P((void));
int doredraw __P((void));
void docrt __P((void));
void docorner __P((int, int));
void curs_on_u __P((void));
void pru __P((void));
void prl __P((int, int));
char news0 __P((xchar, xchar));
void newsym __P((int, int));
void mnewsym __P((int, int));
void nosee __P((int, int));
void prl1 __P((int, int));
void nose1 __P((int, int));
int vism_at __P((int, int));
void pobj __P((struct obj *));
void unpobj __P((struct obj *));
void seeobjs __P((void));
void seemons __P((void));
void pmon __P((struct monst *));
void unpmon __P((struct monst *));
void nscr __P((void));
void cornbot __P((int));
void bot __P((void));
void mstatusline __P((struct monst *));
void cls __P((void));
/* hack.read.c */
int doread __P((void));
int identify __P((struct obj *));
void litroom __P((boolean));
int monstersym __P((int));
/* hack.rip.c */
void outrip __P((void));
void center __P((int, char *));
/* hack.rumors.c */
void init_rumors __P((FILE *));
int skipline __P((FILE *));
void outline __P((FILE *));
void outrumor __P((void));
int used __P((int));
/* hack.save.c */
int dosave __P((void));
int dosave0 __P((int));
int dorecover __P((int));
struct obj *restobjchn __P((int));
struct monst *restmonchn __P((int));
/* hack.search.c */
int findit __P((void));
int dosearch __P((void));
int doidtrap __P((void));
void wakeup __P((struct monst *));
void seemimic __P((struct monst *));
/* hack.shk.c */
void obfree __P((struct obj *, struct obj *));
void paybill __P((void));
char *shkname __P((struct monst *));
void shkdead __P((struct monst *));
void replshk __P((struct monst *, struct monst *));
int inshop __P((void));
int dopay __P((void));
struct bill_x;
struct obj *bp_to_obj __P((struct bill_x *));
void addtobill __P((struct obj *));
void splitbill __P((struct obj *, struct obj *));
void subfrombill __P((struct obj *));
int doinvbill __P((int));
int shkcatch __P((struct obj *));
int shk_move __P((struct monst *));
void shopdig __P((int));
int online __P((int, int));
int follower __P((struct monst *));
/* hack.shknam.c */
void findname __P((char *, int));
/* hack.steal.c */
long somegold __P((void));
void stealgold __P((struct monst *));
int stealarm __P((void));
int steal __P((struct monst *));
void mpickobj __P((struct monst *, struct obj *));
int stealamulet __P((struct monst *));
void relobj __P((struct monst *, int));
/* hack.termcap.c */
void startup __P((void));
void start_screen __P((void));
void end_screen __P((void));
void curs __P((int, int));
void nocmov __P((int, int));
void cmov __P((int, int));
int xputc __P((int));
void xputs __P((char *));
void cl_end __P((void));
void clear_screen __P((void));
void home __P((void));
void standoutbeg __P((void));
void standoutend __P((void));
void backsp __P((void));
void bell __P((void));
void delay_output __P((void));
void cl_eos __P((void));
/* hack.timeout.c */
void timeout __P((void));
void stoned_dialogue __P((void));
/* hack.topl.c */
int doredotopl __P((void));
void redotoplin __P((void));
void remember_topl __P((void));
void addtopl __P((const char *));
void xmore __P((const char *));
void more __P((void));
void cmore __P((const char *));
void clrlin __P((void));
void pline __P((const char *, ...))
__attribute__((__format__(__printf__, 1, 2)));
void vpline __P((const char *, va_list))
__attribute__((__format__(__printf__, 1, 0)));
void putsym __P((int));
void putstr __P((const char *));
/* hack.track.c */
void initrack __P((void));
void settrack __P((void));
coord *gettrack __P((int, int));
/* hack.trap.c */
struct trap *maketrap __P((int, int, int));
void dotrap __P((struct trap *));
int mintrap __P((struct monst *));
void selftouch __P((const char *));
void float_up __P((void));
void float_down __P((void));
void vtele __P((void));
void tele __P((void));
void teleds __P((int, int));
int teleok __P((int, int));
int dotele __P((void));
void placebc __P((int));
void unplacebc __P((void));
void level_tele __P((void));
void drown __P((void));
/* hack.tty.c */
void gettty __P((void));
void settty __P((const char *));
void setctty __P((void));
void setftty __P((void));
void error __P((const char *, ...))
__attribute__((__format__(__printf__, 1, 2),__noreturn__));
void getlin __P((char *));
void getret __P((void));
void cgetret __P((const char *));
void xwaitforspace __P((const char *));
char *parse __P((void));
char readchar __P((void));
void end_of_input __P((void)) __attribute__((__noreturn__));
/* hack.u_init.c */
void u_init __P((void));
struct trobj;
void ini_inv __P((struct trobj *));
void wiz_inv __P((void));
void plnamesuffix __P((void));
int role_index __P((int));
/* hack.unix.c */
void setrandom __P((void));
struct tm *getlt __P((void));
int getyear __P((void));
char *getdate __P((void));
int phase_of_the_moon __P((void));
int night __P((void));
int midnight __P((void));
void gethdate __P((char *));
int uptodate __P((int));
int veryold __P((int));
void getlock __P((void));
void getmailstatus __P((void));
void ckmailstatus __P((void));
void newmail __P((void));
void mdrush __P((struct monst *, boolean));
void readmail __P((void));
void regularize __P((char *));
/* hack.vault.c */
void setgd __P((void));
int gd_move __P((void));
void gddead __P((void));
void replgd __P((struct monst *, struct monst *));
void invault __P((void));
/* hack.version.c */
int doversion __P((void));
/* hack.wield.c */
void setuwep __P((struct obj *));
int dowield __P((void));
void corrode_weapon __P((void));
int chwepon __P((struct obj *, int));
/* hack.wizard.c */
void amulet __P((void));
int wiz_hit __P((struct monst *));
void inrange __P((struct monst *));
void aggravate __P((void));
void clonewiz __P((struct monst *));
/* hack.worm.c */
#ifndef NOWORM
int getwn __P((struct monst *));
void initworm __P((struct monst *));
void worm_move __P((struct monst *));
void worm_nomove __P((struct monst *));
void wormdead __P((struct monst *));
void wormhit __P((struct monst *));
void wormsee __P((unsigned));
struct wseg;
void pwseg __P((struct wseg *));
void cutworm __P((struct monst *, xchar, xchar, uchar));
void remseg __P((struct wseg *));
#endif
/* hack.worn.c */
void setworn __P((struct obj *, long));
void setnotworn __P((struct obj *));
/* hack.zap.c */
void bhitm __P((struct monst *, struct obj *));
int bhito __P((struct obj *, struct obj *));
int dozap __P((void));
const char *exclam __P((int));
void hit __P((const char *, struct monst *, const char *));
void miss __P((const char *, struct monst *));
struct monst *bhit __P((int, int, int, int,
void (*)(struct monst *, struct obj *),
int (*)(struct obj *, struct obj *),
struct obj *));
struct monst *boomhit __P((int, int));
char dirlet __P((int, int));
void buzz __P((int, xchar, xchar, int, int));
int zhit __P((struct monst *, int));
int revive __P((struct obj *));
void rloco __P((struct obj *));
void fracture_rock __P((struct obj *));
void burn_scrolls __P((void));
/* rnd.c */
int rn1 __P((int, int));
int rn2 __P((int));
int rnd __P((int));
int d __P((int, int));
#endif /* _EXTERN_H_ */

132
hack/help Normal file
View File

@@ -0,0 +1,132 @@
Welcome to HACK! ( description of version 1.0.3 )
Hack is a Dungeons and Dragons like game where you (the adventurer)
descend into the depths of the dungeon in search of the Amulet of Yendor
(reputed to be hidden on the twentieth level). You are accompanied by a
little dog that can help you in many ways and can be trained to do all
sorts of things. On the way you will find useful (or useless) items, (quite
possibly with magic properties) and assorted monsters. You attack a monster
by trying to move into the space a monster is in (but often it is much
wiser to leave it alone).
Unlike most adventure games, which give you a verbal description of
your location, hack gives you a visual image of the dungeon level you are on.
Hack uses the following symbols:
A to Z and a to z: monsters. You can find out what a letter
represents by saying "/ (letter)", as in "/A", which will tell you that 'A'
is a giant ant.
- and | These form the walls of a room (or maze).
. this is the floor of a room.
# this is a corridor.
> this is the staircase to the next level.
< the staircase to the previous level.
` A large boulder.
@ You (usually).
^ A trap.
) A weapon of some sort.
( Some other useful object (key, rope, dynamite, camera, ...)
[ A suit of armor.
% A piece of food (not necessarily healthy ...).
/ A wand.
= A ring.
? A scroll.
! A magic potion.
$ A pile or pot of gold.
Commands:
Hack knows the following commands:
? help: print this list.
Q Quit the game.
S Save the game.
! Escape to a shell.
^Z Suspend the game.
< up: go up the staircase (if you are standing on it).
> down: go down (just like up).
kjhlyubn - go one step in the direction indicated.
k: north (i.e., to the top of the screen),
j: south, h: west, l: east, y: nw, u: ne, b: sw, n: se.
KJHLYUBN - Go in that direction until you hit a wall or run
into something.
m (followed by one of kjhlyubn): move without picking up
any objects.
M (followed by one of KJHLYUBN): Move far, no pickup.
f (followed by one of kjhlyubn): move until something
interesting is found.
F (followed by one of KJHLYUBN): as previous, but forking
of corridors is not considered interesting.
i print your inventory.
I print selected parts of your inventory, like in
I* - print all gems in inventory;
IU - print all unpaid items;
IX - print all used up items that are on your shopping bill;
I$ - count your money.
s search for secret doors and traps around you.
^ ask for the type of a trap you found earlier.
) ask for current wielded weapon.
[ ask for current armor.
= ask for current rings.
$ count how many gold pieces you are carrying.
. rest, do nothing.
, pick up some things.
: look at what is here.
^T teleport.
^R redraw the screen.
^P repeat last message
(subsequent ^P's repeat earlier messages).
/ (followed by any symbol): tell what this symbol represents.
\ tell what has been discovered.
e eat food.
w wield weapon. w- means: wield nothing, use bare hands.
q drink (quaff) a potion.
r read a scroll.
T Takeoff armor.
R Remove Ring.
W Wear armor.
P Put on a ring.
z zap a wand.
t throw an object or shoot an arrow.
p pay your shopping bill.
d drop something. d7a: drop seven items of object a.
D Drop several things.
In answer to the question "What kinds of things do you
want to drop? [!%= au]" you should give zero or more
object symbols possibly followed by 'a' and/or 'u'.
'a' means: drop all such objects, without asking for
confirmation.
'u' means: drop only unpaid objects (when in a shop).
a use, apply - Generic command for using a key to lock
or unlock a door, using a camera, using a rope, etc.
c call: name a certain object or class of objects.
C Call: Name an individual monster.
E Engrave: Write a message in the dust on the floor.
E- means: use fingers for writing.
O Set options. You will be asked to enter an option line.
If this is empty, the current options are reported.
Otherwise it should be a list of options separated by commas.
Possible boolean options are: oneline, time, news, tombstone,
rest_on_space, fixinvlet, beginner, male, female.
They can be negated by prefixing them with '!' or "no".
A string option is name; it supplies the answer to the question
"Who are you?"; it may have a suffix.
A compound option is endgame; it is followed by a description
of what parts of the list of topscorers should be printed
when the game is finished.
Usually one will not want to use the 'O' command, but instead
put a HACKOPTIONS="...." line in one's environment.
v print version number.
You can put a number before a command to repeat it that many times,
as in "20s" or "40.".
At present, some information is displayed on the bottom line.
(It is expected that this information will go away in future versions.)
You see on what dungeon level you are, how many hit points you have
now (and will have when fully recovered), what your armor class is
(the lower the better), your strength, experience level and the
state of your stomach.
Have Fun, and Good Hacking!