[comp.sources.games] v09i024: NetHack3 - display oriented dungeons & dragons

billr@saab.CNA.TEK.COM (Bill Randle) (02/24/90)

Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
Posting-number: Volume 9, Issue 24
Archive-name: NetHack3/Patch7x
Patch-To: NetHack3: Volume 7, Issue 56-93



#! /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 24 (of 30)."
# Contents:  include/extern.h others/Makefile.os2
# Wrapped by billr@saab on Wed Feb 21 10:04:46 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'include/extern.h' -a "${1}" != "-c" ; then 
  echo shar: Renaming existing file \"'include/extern.h'\" to \"'include/extern.h.orig'\"
  mv -f 'include/extern.h' 'include/extern.h.orig'
fi
echo shar: Extracting \"'include/extern.h'\" \(42056 characters\)
sed "s/^X//" >'include/extern.h' <<'END_OF_FILE'
X/*	SCCS Id: @(#)extern.h	3.0	89/11/22
X/* 	Copyright (c)   Steve Creps, 1988. 		 */
X/* NetHack may be freely redistributed.  See license for details. */
X
X#ifndef EXTERN_H
X#define EXTERN_H
X
X#if defined(MSDOS) && defined(MSC)
X/* MSC include files do not contain "extern" keyword */
X#define E
X#else
X#define E extern
X#endif
X
X/* ### allmain.c ### */
X
XE int NDECL((*occupation));
XE int NDECL((*afternmv));
XE void NDECL(moveloop);
XE void NDECL(stop_occupation);
XE void NDECL(newgame);
X
X/* ### alloc.c ### */
X
X#ifndef __TURBOC__
XE long *FDECL(alloc, (unsigned int));
X#endif
X
X#if !defined(MAKEDEFS_C) && !defined(LEV_LEX_C)
X
X/* ### amiwbench.c ### */
X
X#ifdef AMIGA_WBENCH
XE void FDECL(ami_wbench_init,(int,char *[]));	
XE void NDECL(ami_wbench_args);
XE int FDECL(ami_wbench_getsave,(int));
XE void FDECL(ami_wbench_unlink,(char *));
XE int FDECL(ami_wbench_iconsize,(char *));
XE void FDECL(ami_wbench_iconwrite,(char *));
XE int FDECL(ami_wbench_badopt,(char *));
XE void NDECL(ami_wbench_cleanup);
X#endif /* AMIGA_WBENCH */
X
X/* ### apply.c ### */
X
X#ifdef OVERLAY
XE int NDECL(dig);
X#endif
XE int NDECL(doapply);
XE int NDECL(holetime);
XE void NDECL(dighole);
XE int NDECL(dorub);
XE int NDECL(dojump);
X#ifdef WALKIES
XE int NDECL(number_leashed);
XE void FDECL(o_unleash, (struct obj *));
XE void FDECL(m_unleash, (struct monst *));
XE void NDECL(unleash_all);
XE boolean NDECL(next_to_u);
XE struct obj *FDECL(get_mleash, (struct monst *));
XE void FDECL(check_leash, (XCHAR_P,XCHAR_P));
X#endif
XE boolean FDECL(um_dist, (XCHAR_P,XCHAR_P,XCHAR_P));
XE int FDECL(use_unicorn_horn, (struct obj *));
X
X/* ### artifact.c ### */
X
X#ifdef NAMED_ITEMS
XE void NDECL(init_exists);
XE void FDECL(mkartifact, (struct obj **));
XE boolean FDECL(is_artifact, (struct obj *));
XE boolean FDECL(exist_artifact, (struct obj *,const char *));
XE void FDECL(artifact_exists, (struct obj *,const char *,BOOLEAN_P));
XE boolean FDECL(spec_ability, (struct obj *,unsigned));
XE int FDECL(restr_name, (struct obj *,char *));
X# if defined(THEOLOGY) && defined(ALTARS)
XE struct obj *FDECL(mk_aligned_artifact, (unsigned));
X# endif
XE int FDECL(defends, (int,struct obj *));
XE int FDECL(spec_abon, (struct obj *,struct permonst *));
XE int FDECL(spec_dbon, (struct obj *,struct permonst *,int));
X#endif
X
X/* ### attrib.c ### */
X
XE void FDECL(adjattrib, (int,int,BOOLEAN_P));
XE void FDECL(change_luck, (SCHAR_P));
XE int FDECL(stone_luck, (BOOLEAN_P));
XE void FDECL(gainstr, (struct obj *,int));
XE void FDECL(losestr, (int));
XE void NDECL(restore_attrib);
XE void FDECL(init_attr, (int));
XE void NDECL(redist_attr);
XE void FDECL(adjabil, (int,int));
XE int NDECL(newhp);
XE schar FDECL(acurr, (int));
XE void FDECL(adjalign, (int));
X
X/* ### bones.c ### */
X
XE void NDECL(savebones);
XE int NDECL(getbones);
XE void FDECL(name_file, (char *,int));
X
X/* ### cmd.c ### */
X
X#ifdef OVERLAY
XE int NDECL(doextcmd);
X#ifdef POLYSELF
XE int NDECL(domonability);
X#endif /* POLYSELF */
XE int NDECL(timed_occupation);
X#if defined(WIZARD) || defined(EXPLORE_MODE)
XE int NDECL(wiz_attributes);
X#endif /* WIZARD */
X# ifdef EXPLORE_MODE
XE int NDECL(enter_explore_mode);
X# endif	/* EXPLORE_MODE */
X#ifdef WIZARD
XE int NDECL(wiz_detect);
XE int NDECL(wiz_genesis);
XE int NDECL(wiz_identify);
XE int NDECL(wiz_level_tele);
XE int NDECL(wiz_map);
XE int NDECL(wiz_where);
XE int NDECL(wiz_wish);
X#endif /* WIZARD */
X#endif /* OVERLAY */
XE void NDECL(reset_occupations);
XE void FDECL(set_occupation, (int NDECL((*)),const char *,int));
X#ifdef REDO
XE char NDECL(pgetchar);
XE void FDECL(pushch, (CHAR_P));
XE void FDECL(savech, (CHAR_P));
X#endif
XE void FDECL(rhack, (char *));
XE char FDECL(lowc, (CHAR_P));
XE void NDECL(enlightenment);
XE int FDECL(xytod, (SCHAR_P,SCHAR_P));
XE void FDECL(dtoxy, (coord *,int));
XE int FDECL(movecmd, (CHAR_P));
XE int FDECL(getdir, (BOOLEAN_P));
XE void NDECL(confdir);
XE int FDECL(isok, (int,int));
XE int NDECL(doextlist);
X
X/* ### dbridge.c ### */
X
XE boolean FDECL(is_pool, (int,int));
X#ifdef STRONGHOLD
XE void FDECL(initsym, (int,int));
XE int FDECL(is_drawbridge_wall, (int, int));
XE boolean FDECL(is_db_wall, (int, int));
XE boolean FDECL(find_drawbridge, (int *, int*));
XE boolean FDECL(create_drawbridge, (int, int, int, BOOLEAN_P));
XE void FDECL(open_drawbridge, (int, int));
XE void FDECL(close_drawbridge, (int, int));
XE void FDECL(destroy_drawbridge, (int, int));
X#endif	/* STRONGHOLD /**/
X
X/* ### decl.c ### */
X
X/* ### demon.c ### */
X
XE void FDECL(dsummon, (struct permonst *));
XE int FDECL(demon_talk, (struct monst *));
XE long FDECL(bribe, (struct monst *));
XE int NDECL(dprince);
XE int NDECL(dlord);
XE int NDECL(ndemon);
X
X/* ### do.c ### */
X
X#ifdef OVERLAY
XE int FDECL(drop, (struct obj *));
XE int NDECL(wipeoff);
X#endif
XE int NDECL(dodrop);
XE boolean FDECL(flooreffects, (struct obj *,int,int));
XE void FDECL(doaltarobj, (struct obj *));
XE boolean FDECL(canletgo, (struct obj *,const char *));
XE void FDECL(dropx, (struct obj *));
XE void FDECL(dropy, (struct obj *));
XE int NDECL(doddrop);
XE int NDECL(dodown);
XE int NDECL(doup);
XE void FDECL(goto_level, (int,BOOLEAN_P,BOOLEAN_P));
XE int NDECL(donull);
XE int NDECL(dowipe);
XE struct obj *FDECL(splitobj, (struct obj *,int));
XE void FDECL(set_wounded_legs, (long,int));
XE void NDECL(heal_legs);
X
X/* ### do_name.c ### */
X
XE void FDECL(getpos, (coord *,int,const char *));
XE struct monst *FDECL(christen_monst, (struct monst *,const char *));
XE int NDECL(do_mname);
XE struct obj *FDECL(oname, (struct obj *,const char *,int));
XE int NDECL(ddocall);
XE void FDECL(docall, (struct obj *));
XE char *FDECL(x_monnam, (struct monst *,int));
XE char *FDECL(lmonnam, (struct monst *));
XE char *FDECL(mon_nam, (struct monst *));
XE char *FDECL(Monnam, (struct monst *));
XE char *FDECL(a_monnam, (struct monst *,const char *));
XE char *FDECL(a2_monnam, (struct monst *,const char *));
XE char *FDECL(Amonnam, (struct monst *,const char *));
XE char *FDECL(Xmonnam, (struct monst *));
XE char *FDECL(defmonnam, (struct monst *));
XE const char *NDECL(rndmonnam);
XE char *FDECL(self_pronoun, (const char *,const char *));
X#ifdef REINCARNATION
XE const char *NDECL(roguename);
X#endif
X
X/* ### do_wear.c ### */
X
X#ifdef OVERLAY
XE int NDECL(Armor_on);
XE int NDECL(Boots_on);
XE int NDECL(Gloves_on);
XE int NDECL(Helmet_on);
XE int FDECL(select_off, (struct obj *otmp));
XE int NDECL(take_off);
X#endif
XE void FDECL(off_msg, (struct obj *));
XE boolean FDECL(is_helmet, (struct obj *));
XE boolean FDECL(is_gloves, (struct obj *));
XE boolean FDECL(is_boots, (struct obj *));
XE boolean FDECL(is_cloak, (struct obj *));
XE boolean FDECL(is_shield, (struct obj *));
XE void NDECL(set_wear);
XE boolean FDECL(donning, (struct obj *));
XE void NDECL(cancel_don);
XE int NDECL(Armor_off);
XE int NDECL(Armor_gone);
XE int NDECL(Helmet_off);
XE int NDECL(Gloves_off);
XE int NDECL(Boots_off);
XE int NDECL(Cloak_off);
XE int NDECL(Shield_off);
XE void NDECL(Amulet_off);
XE void FDECL(Ring_on, (struct obj *));
XE void FDECL(Ring_off, (struct obj *));
XE void FDECL(Ring_gone, (struct obj *));
XE void FDECL(Blindf_on, (struct obj *));
XE void FDECL(Blindf_off, (struct obj *));
XE int NDECL(dotakeoff);
XE int NDECL(doremring);
XE int FDECL(cursed, (struct obj *));
XE int FDECL(armoroff, (struct obj *));
XE int NDECL(dowear);
XE int NDECL(doputon);
XE void NDECL(find_ac);
XE void NDECL(glibr);
XE struct obj *NDECL(some_armor);
XE void NDECL(corrode_armor);
XE void NDECL(reset_remarm);
XE int NDECL(doddoremarm);
XE int FDECL(destroy_arm, (struct obj *));
XE void FDECL(adj_abon, (struct obj *,SCHAR_P));
X
X/* ### dog.c ### */
X
XE void FDECL(initedog, (struct monst *));
XE void FDECL(make_familiar, (struct obj *));
XE struct monst *NDECL(makedog);
XE void NDECL(losedogs);
XE void NDECL(keepdogs);
XE void FDECL(fall_down, (struct monst *,int));
XE int FDECL(dogfood, (struct monst *,struct obj *));
XE int FDECL(inroom, (XCHAR_P,XCHAR_P));
XE int FDECL(tamedog, (struct monst *,struct obj *));
X
X/* ### dogmove.c ### */
X
XE int FDECL(dog_move, (struct monst *,int));
X
X/* ### dokick.c ### */
X
XE boolean FDECL(ghitm, (struct monst *,long));
XE boolean FDECL(bad_kick_throw_pos, (XCHAR_P,XCHAR_P));
XE struct monst *FDECL(ghit, (int,int,int));
XE int NDECL(dokick);
X
X/* ### dothrow.c ### */
X
XE int NDECL(dothrow);
XE int FDECL(throwit, (struct obj *));
XE int FDECL(thitmonst, (struct monst *,struct obj *));
XE int FDECL(breaks, (struct obj *,BOOLEAN_P));
X
X/* ### eat.c ### */
X
X#ifdef OVERLAY
XE int NDECL(Meatdone);
XE int NDECL(eatfood);
XE int NDECL(opentin);
XE int NDECL(unfaint);
X#endif
XE boolean FDECL(is_edible, (struct obj *));
XE void NDECL(init_uhunger);
XE int NDECL(Hear_again);
XE void NDECL(reset_eat);
XE int NDECL(doeat);
XE void NDECL(gethungry);
XE void FDECL(morehungry, (int));
XE void FDECL(lesshungry, (int));
XE boolean NDECL(is_fainted);
XE void NDECL(reset_faint);
XE void NDECL(sync_hunger);
XE void FDECL(newuhs, (BOOLEAN_P));
XE struct obj *FDECL(floorfood, (const char *,BOOLEAN_P));
XE void NDECL(vomit);
XE int FDECL(eaten_stat, (int, struct obj *));
XE void FDECL(food_disappears, (struct obj *));
X
X/* ### end.c ### */
X
XE int NDECL(done1);
XE int NDECL(done2);
XE void FDECL(done_in_by, (struct monst *));
XE void VDECL(panic, (const char *,...));
XE void FDECL(done, (int));
XE void NDECL(clearlocks);
X#ifdef NOSAVEONHANGUP
XE void NDECL(hangup);
X#endif
X
X/* ### engrave.c ### */
X
X#ifdef ELBERETH
XE int FDECL(sengr_at, (const char *,XCHAR_P,XCHAR_P));
X#endif
XE void FDECL(u_wipe_engr, (int));
XE void FDECL(wipe_engr_at, (XCHAR_P,XCHAR_P,XCHAR_P));
XE void FDECL(read_engr_at, (int,int));
XE void FDECL(make_engr_at, (int,int,const char *));
XE int NDECL(freehand);
XE int NDECL(doengrave);
XE void FDECL(save_engravings, (int));
XE void FDECL(rest_engravings, (int));
X
X/* ### exper.c ### */
X
XE long FDECL(newuexp, (unsigned));
XE int FDECL(experience, (struct monst *,int));
XE void FDECL(more_experienced, (int,int));
XE void NDECL(losexp);
XE void NDECL(newexplevel);
XE void NDECL(pluslvl);
XE long NDECL(rndexp);
X
X/* ### extralev.c ### */
X
X#ifdef REINCARNATION
XE void NDECL(makeroguerooms);
XE void FDECL(corr, (int,int));
XE void NDECL(makerogueghost);
X#endif
X
X/* ### fountain.c ### */
X
X#ifdef FOUNTAINS
XE void NDECL(dryup);
XE void NDECL(drinkfountain);
XE void FDECL(dipfountain, (struct obj *));
X#endif /* FOUNTAINS */
X#ifdef SINKS
XE void NDECL(drinksink);
X#endif
X
X/* ### getline.c ### */
X
XE void FDECL(getlin, (char *));
XE void NDECL(getret);
XE void FDECL(cgetret, (const char *));
XE void FDECL(xwaitforspace, (const char *));
XE char *NDECL(parse);
XE char NDECL(readchar);
X#ifdef COM_COMPL
XE void FDECL(get_ext_cmd, (char *));
X#endif /* COM_COMPL */
X
X/* ### hack.c ### */
X
XE void NDECL(unsee);
XE void FDECL(seeoff, (int));
XE void FDECL(movobj, (struct obj *,XCHAR_P,XCHAR_P));
XE boolean FDECL(may_dig, (XCHAR_P,XCHAR_P));
XE void NDECL(domove);
XE void NDECL(spoteffects);
XE int NDECL(dopickup);
XE void NDECL(lookaround);
XE int NDECL(monster_nearby);
XE int FDECL(cansee, (XCHAR_P,XCHAR_P));
XE int FDECL(sgn, (int));
XE void FDECL(getcorners, (xchar *,xchar *,xchar *,xchar *,xchar *,xchar *,xchar *,xchar *));
XE void NDECL(setsee);
XE void FDECL(nomul, (int));
XE void FDECL(losehp, (int,const char *,BOOLEAN_P));
XE int NDECL(weight_cap);
XE int NDECL(inv_weight);
XE int NDECL(inv_cnt);
XE int FDECL(identify, (struct obj *));
X#ifdef STUPID_CPP	/* otherwise these functions are macros in hack.h */
XE char NDECL(yn);
XE char NDECL(ynq);
XE char NDECL(ynaq);
XE char NDECL(nyaq);
XE char *FDECL(plur, (long));
XE void FDECL(makeknown, (unsigned));
X#endif
X
X/* ### invent.c ### */
X
X#ifdef OVERLAY
XE int FDECL(ckunpaid, (struct obj *));
X#endif
XE struct obj *FDECL(addinv, (struct obj *));
XE void FDECL(useup, (struct obj *));
XE void FDECL(freeinv, (struct obj *));
XE void FDECL(delobj, (struct obj *));
XE void FDECL(freeobj, (struct obj *));
XE void FDECL(freegold, (struct gold *));
XE struct obj *FDECL(sobj_at, (int,int,int));
XE int FDECL(carried, (struct obj *));
XE struct obj *FDECL(carrying, (int));
XE boolean NDECL(have_lizard);
XE struct obj *FDECL(o_on, (unsigned int,struct obj *));
XE boolean FDECL(obj_here, (struct obj *,int,int));
XE struct gold *FDECL(g_at, (int,int));
XE struct obj *FDECL(getobj, (const char *,const char *));
XE int FDECL(ggetobj, (const char *,int FDECL((*),(struct obj *)),int));
XE int FDECL(askchain, (struct obj *,int,const char *,int,int FDECL((*),(struct obj *)),int FDECL((*),(struct obj *)),int,const char *));
XE void FDECL(prinv, (struct obj *));
XE int NDECL(ddoinv);
XE void FDECL(doinv, (const char *));
XE int NDECL(dotypeinv);
XE int NDECL(dolook);
XE void FDECL(stackobj, (struct obj *));
XE int NDECL(doprgold);
XE int NDECL(doprwep);
XE int NDECL(doprarm);
XE int NDECL(doprring);
XE int NDECL(dopramulet);
XE int NDECL(doprtool);
XE int FDECL(digit, (CHAR_P));
XE void FDECL(useupf, (struct obj *));
XE char *FDECL(let_to_name, (CHAR_P));
XE void NDECL(reassign);
X
X/* ### ioctl.c ### */
X
X#ifdef UNIX
XE void NDECL(getioctls);
XE void NDECL(setioctls);
X# ifdef SUSPEND
XE int NDECL(dosuspend);
X# endif /* SUSPEND */
X#endif /* UNIX */
X
X/* ### lock.c ### */
X
X#ifdef OVERLAY
XE int NDECL(forcelock);
XE int NDECL(picklock);
X#endif
XE void NDECL(reset_pick);
XE int FDECL(pick_lock, (struct obj *));
XE int NDECL(doforce);
XE int FDECL(boxlock, (struct obj *,struct obj *));
XE int FDECL(doorlock, (struct obj *,int,int));
XE int NDECL(doopen);
XE int NDECL(doclose);
X
X/* ### mac.c ### */
X/* All of these Mac-specific declarations LOOK like they should take the
X   NDECL() form, but don't be fooled: it's just that (at the time of
X   writing) the Mac C compilers are all pre-ANSI and the prototype
X   information isn't recorded here anyway. sps 89dec14
X*/
X#ifdef MACOS
XE int tgetch();
XE void gethdate();
XE int uptodate();
X# ifndef THINKC4
XE char *getenv();
XE int memcmp();
X# else
XE int kbhit();
X# endif
XE int mcurs();
XE int mputc();
XE int mputs();
XE int mprintf();
XE DialogTHndl centreDlgBox();
XE int about();
X#endif  /* MACOS */
X
X/* ### macfile.c ### */
X#ifdef MACOS
XE short findNamedFile();
XE FILE *openFile();
X#endif	/* MACOS */
X
X/* ### macinit.c ### */
X#ifdef MACOS
XE int initterm();
XE int freeterm();
XE int read_config_file();
XE int write_opts();
X#endif
X#ifdef SMALLDATA
XE void init_decl();
XE void free_decl();
X#endif  /* SMALLDATA */
X
X/* ### mail.c ### */
X
X#ifdef MAIL
X# ifdef UNIX
XE void NDECL(getmailstatus);
X# endif
XE void NDECL(ckmailstatus);
XE void NDECL(readmail);
X#endif /* MAIL */
X
X/* ### makemon.c ### */
X
XE struct monst *FDECL(makemon, (struct permonst *,int,int));
XE void FDECL(enexto, (coord *,XCHAR_P,XCHAR_P,struct permonst *));
XE int FDECL(goodpos, (int,int, struct permonst *));
XE void FDECL(rloc, (struct monst *));
XE void FDECL(vloc, (struct monst *));
XE void NDECL(init_monstr);
XE struct permonst *NDECL(rndmonst);
XE struct permonst *FDECL(mkclass, (CHAR_P));
XE int FDECL(adj_lev, (struct permonst *));
XE struct permonst *FDECL(grow_up, (struct monst *));
XE int FDECL(mongets, (struct monst *,int));
X#ifdef GOLEMS
XE int FDECL(golemhp, (int));
X#endif /* GOLEMS */
XE boolean FDECL(peace_minded, (struct permonst *));
XE void FDECL(set_malign, (struct monst *));
XE void FDECL(set_mimic_sym, (struct monst *));
X
X/* ### mcastu.c ### */
X
XE int FDECL(castmu, (struct monst *,struct attack *));
XE int FDECL(buzzmu, (struct monst *,struct attack *));
X
X/* ### mhitm.c ### */
X
XE int FDECL(fightm, (struct monst *));
XE int FDECL(mattackm, (struct monst *,struct monst *));
XE int FDECL(noattacks, (struct permonst *));
X
X/* ### mhitu.c ### */
X
X#ifdef POLYSELF
XE struct monst *NDECL(cloneu);
X#endif
XE void FDECL(expels, (struct monst *,struct permonst *,BOOLEAN_P));
XE int FDECL(mattacku, (struct monst *));
XE void FDECL(mdamageu, (struct monst *,int));
XE int FDECL(could_seduce, (struct monst *,struct monst *,struct attack *));
X#ifdef SEDUCE
XE int FDECL(doseduce, (struct monst *));
X#endif
X
X/* ### mklev.c ### */
X
XE int FDECL(somex, (struct mkroom *));
XE int FDECL(somey, (struct mkroom *));
X#ifdef ORACLE
XE boolean FDECL(place_oracle, (struct mkroom *,int *,int *,int *));
X#endif
XE void NDECL(mklev);
XE int FDECL(okdoor, (XCHAR_P,XCHAR_P));
XE void FDECL(dodoor, (int,int,struct mkroom *));
XE void FDECL(mktrap, (int,int,struct mkroom *));
XE void FDECL(mkfount, (int,struct mkroom *));
X
X/* ### mkmaze.c ### */
X
X#if defined(WALLIFIED_MAZE) || defined(STRONGHOLD)
XE void FDECL(wallification, (int,int,int,int,BOOLEAN_P));
X#endif
XE void FDECL(walkfrom, (int,int));
XE void NDECL(makemaz);
XE void FDECL(move, (int *,int *,int));
XE void FDECL(mazexy, (coord *));
XE void NDECL(bound_digging);
X
X/* ### mkobj.c ### */
X
XE struct obj *FDECL(mkobj_at, (CHAR_P,int,int));
XE struct obj *FDECL(mksobj_at, (int,int,int));
XE struct obj *FDECL(mkobj, (CHAR_P,BOOLEAN_P));
XE int NDECL(rndmonnum);
XE struct obj *FDECL(mksobj, (int,BOOLEAN_P));
XE int FDECL(letter, (int));
XE int FDECL(weight, (struct obj *));
XE void FDECL(mkgold, (long,int,int));
XE struct obj *FDECL(mkcorpstat, (int,struct permonst *,int,int));
XE struct obj *FDECL(mk_tt_object, (int,int,int));
XE struct obj *FDECL(mk_named_object, (int,struct permonst *,int,int,char *,int));
XE void FDECL(bless, (struct obj *));
XE void FDECL(curse, (struct obj *));
XE void FDECL(blessorcurse, (struct obj *,int));
XE boolean FDECL(is_flammable, (struct obj *));
X#ifdef STUPID_CPP
XE boolean FDECL(is_rustprone, (struct obj *));
XE boolean FDECL(is_corrodeable, (struct obj *));
XE boolean FDECL(OBJ_AT, (int, int));
X#endif
XE void FDECL(place_object, (struct obj *,int,int));
XE void FDECL(move_object, (struct obj *,int,int));
XE void FDECL(remove_object, (struct obj *));
XE int FDECL(bcsign, (struct obj *));
X
X/* ### mkroom.c ### */
X
XE void FDECL(mkroom, (int));
XE void FDECL(shrine_pos, (int *, int*, struct mkroom *));
XE boolean FDECL(nexttodoor, (int,int));
XE boolean FDECL(has_dnstairs, (struct mkroom *));
XE boolean FDECL(has_upstairs, (struct mkroom *));
XE int FDECL(dist2, (int,int,int,int));
XE struct permonst *NDECL(courtmon);
X
X/* ### mon.c ### */
X
XE void NDECL(movemon);
XE void FDECL(meatgold, (struct monst *));
XE void FDECL(meatobj, (struct monst *));
XE void FDECL(mpickgold, (struct monst *));
XE void FDECL(mpickgems, (struct monst *));
XE int FDECL(curr_mon_load, (struct monst *));
XE int FDECL(max_mon_load, (struct monst *));
XE boolean FDECL(can_carry, (struct monst *,struct obj *));
XE void FDECL(mpickstuff, (struct monst *,const char *));
XE int FDECL(mfndpos, (struct monst *,coord *,long *,long));
XE int FDECL(dist, (int,int));
XE boolean FDECL(monnear, (struct monst *,int,int));
XE void FDECL(poisontell, (int));
XE void FDECL(poisoned, (const char *,int,const char *,int));
XE void FDECL(mondead, (struct monst *));
XE void FDECL(replmon, (struct monst *,struct monst *));
XE void FDECL(relmon, (struct monst *));
XE void FDECL(monfree, (struct monst *));
XE void FDECL(unstuck, (struct monst *));
XE void FDECL(killed, (struct monst *));
XE void FDECL(xkilled, (struct monst *,int));
XE void NDECL(rescham);
XE void NDECL(restartcham);
XE int FDECL(newcham, (struct monst *,struct permonst *));
XE void FDECL(mnexto, (struct monst *));
XE void FDECL(mnearto, (struct monst *, XCHAR_P, XCHAR_P, BOOLEAN_P));
XE void FDECL(setmangry, (struct monst *));
XE int FDECL(disturb, (struct monst *));
XE void FDECL(mondied, (struct monst *));
XE void FDECL(mongone, (struct monst *));
XE void FDECL(monstone, (struct monst *));
X#ifdef GOLEMS
XE void FDECL(golemeffects, (struct monst *, int, int));
X#endif /* GOLEMS */
X
X/* ### mondata.c ### */
X
XE boolean FDECL(attacktype, (struct permonst *,int));
XE boolean FDECL(resists_ston, (struct permonst *));
XE boolean FDECL(resists_drli, (struct permonst *));
XE boolean FDECL(ranged_attk, (struct permonst *));
XE boolean FDECL(can_track, (struct permonst *));
X#ifdef POLYSELF
XE boolean FDECL(breakarm, (struct permonst *));
XE boolean FDECL(sliparm, (struct permonst *));
X#endif
XE boolean FDECL(sticks, (struct permonst *));
XE boolean FDECL(canseemon, (struct monst *));
XE boolean FDECL(dmgtype, (struct permonst *,int));
XE int FDECL(monsndx, (struct permonst *));
XE int FDECL(name_to_mon, (char *));
X#ifdef POLYSELF
XE boolean FDECL(webmaker, (struct permonst *));
X#endif
XE boolean FDECL(is_female, (struct monst *));
XE int FDECL(gender, (struct monst *));
XE boolean FDECL(levl_follower, (struct monst *));
XE struct permonst *NDECL(player_mon);
XE int FDECL(little_to_big, (int));
XE int FDECL(big_to_little, (int));     
XE const char *FDECL(locomotion, (const struct permonst *,const char *));
X
X/* ### monmove.c ### */
X
XE boolean FDECL(mb_trapped, (struct monst *));
XE int FDECL(dochugw, (struct monst *));
XE boolean FDECL(onscary, (int,int,struct monst *));
XE int FDECL(dochug, (struct monst *));
XE int FDECL(m_move, (struct monst *,int));
XE boolean FDECL(closed_door, (int, int));
XE boolean FDECL(accessible, (int, int));
XE void FDECL(set_apparxy, (struct monst *));
XE boolean FDECL(mdig_tunnel, (struct monst *));
X#ifdef STUPID_CPP
XE boolean FDECL(MON_AT, (int, int));
XE void FDECL(place_monster, (struct monst *, int, int));
XE void FDECL(place_worm_seg, (struct monst *, int, int));
XE void FDECL(remove_monster, (int, int));
XE struct monst *FDECL(m_at, (int, int));
X#endif
X
X/* ### monst.c ### */
X
X/* ### msdos.c ### */
X
X#ifdef MSDOS
XE void NDECL(flushout);
XE int NDECL(tgetch);
XE int NDECL(dosh);
X# ifdef DGK
XE long FDECL(freediskspace, (char *));
XE long FDECL(filesize, (char *));
XE void FDECL(eraseall, (const char *,const char *));
XE void FDECL(copybones, (int));
XE void NDECL(playwoRAMdisk);
XE int FDECL(saveDiskPrompt, (int));
XE void NDECL(gameDiskPrompt);
X# endif
XE void NDECL(read_config_file);
XE void NDECL(set_lock_and_bones);
XE void FDECL(append_slash, (char *));
XE void FDECL(getreturn, (const char *));
XE void VDECL(msmsg, (const char *,...));
XE void FDECL(chdrive, (char *));
X# ifndef TOS
XE void NDECL(disable_ctrlP);
XE void NDECL(enable_ctrlP);
X# endif
X# ifdef DGK
XE FILE *FDECL(fopenp, (const char *,const char *));
X# endif
XE void FDECL(msexit, (int));
X# ifdef DGK
XE void NDECL(get_scr_size);
X#  ifndef TOS
XE void FDECL(gotoxy, (int,int));
X#  endif
X# endif
X#endif /* MSDOS */
X#ifdef TOS
XE int FDECL(_copyfile, (char *, char *));
XE int NDECL(kbhit);
XE void NDECL(restore_colors);
XE void NDECL(set_colors);
X#endif /* TOS */
X
X/* ### mthrowu.c ### */
X
XE int FDECL(thitu, (int,int,struct obj *,const char *));
XE int FDECL(thrwmu, (struct monst *));
XE int FDECL(spitmu, (struct monst *,struct attack *));
XE int FDECL(breamu, (struct monst *,struct attack *));
XE boolean FDECL(linedup, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
XE boolean FDECL(lined_up, (struct monst *));
XE struct obj *FDECL(m_carrying, (struct monst *,int));
XE void FDECL(m_useup, (struct monst *,struct obj *));
X
X/* ### music.c ### */
X
X#ifdef MUSIC
XE int FDECL(do_play_instrument, (struct obj *));
X#endif /* MUSIC /**/
X
X/* ### o_init.c ### */
X
XE int FDECL(letindex, (CHAR_P));
XE void NDECL(init_objects);
XE void NDECL(oinit);
XE void FDECL(savenames, (int));
XE void FDECL(restnames, (int));
XE int NDECL(dodiscovered);
X
X/* ### objnam.c ### */
X
XE char *FDECL(typename, (int));
XE char *FDECL(distant_name, (struct obj *, char *(*)(struct obj *)));
XE char *FDECL(xname, (struct obj *));
XE char *FDECL(doname, (struct obj *));
XE char *FDECL(singular, (struct obj *, char *(*)(struct obj *)));
XE char *FDECL(an, (const char *));
XE char *FDECL(An, (const char *));
XE char *FDECL(aobjnam, (struct obj *,const char *));
XE char *FDECL(Doname2, (struct obj *));
XE void FDECL(lcase, (char *));
XE char *FDECL(makeplural, (const char *));
XE char *FDECL(makesingular, (const char *));
XE struct obj *FDECL(readobjnam, (char *));
X
X/* ### options.c ### */
X
XE void NDECL(initoptions);
XE void FDECL(assign_graphics, (unsigned int *, int));
XE void FDECL(parseoptions, (char *,BOOLEAN_P));
XE int NDECL(doset);
XE int NDECL(dotogglepickup);
XE void NDECL(option_help);
XE int FDECL(next_opt, (const char *));
X#ifdef TUTTI_FRUTTI
XE int FDECL(fruitadd, (char *));
X#endif
X
X/* ### pager.c ### */
X
XE int NDECL(dowhatis);
XE int NDECL(dowhatdoes);
XE void NDECL(set_whole_screen);
X#ifdef NEWS
XE int NDECL(readnews);
X#endif /* NEWS */
XE void FDECL(set_pager, (int));
XE int FDECL(page_line, (const char *));
XE void FDECL(cornline, (int,const char *));
XE int NDECL(dohelp);
XE int NDECL(dohistory);
XE int FDECL(page_file, (const char *,BOOLEAN_P));
X#ifdef UNIX
X# ifdef SHELL
XE int NDECL(dosh);
X# endif /* SHELL */
X# if defined(SHELL) || defined(DEF_PAGER) || defined(DEF_MAILREADER)
XE int FDECL(child, (int));
X# endif
X#endif /* UNIX */
X
X/* ### pcmain.c ### */
X
X#if defined(MSDOS) || defined(MACOS)
XE void NDECL(askname);
X# ifdef CHDIR
XE void FDECL(chdirx, (char *,BOOLEAN_P));
X# endif /* CHDIR */
X#endif /* MSDOS || MACOS */
X
X/* ### pctty.c ### */
X
X#if defined(MSDOS) || defined(MACOS)
XE void NDECL(gettty);
XE void FDECL(settty, (const char *));
XE void VDECL(error, (const char *,...));
X#endif /* MSDOS || MACOS  */
X
X/* ### pcunix.c ### */
X
X#if defined(MSDOS) || defined(MACOS)
X# ifndef OLD_TOS
XE void NDECL(setrandom);
XE int NDECL(getyear);
XE char *NDECL(getdate);
XE int NDECL(phase_of_the_moon);
XE int NDECL(night);
XE int NDECL(midnight);
XE void FDECL(gethdate, (char *));
XE int FDECL(uptodate, (int));
X# endif /* TOS */
XE void FDECL(regularize, (char *));
X#endif /* MSDOS */
X
X/* ### pickup.c ### */
X
X#ifdef OVERLAY
XE int FDECL(ck_bag, (struct obj *));
XE int FDECL(ck_container, (struct obj *));
XE int FDECL(in_container, (struct obj *));
XE int FDECL(out_container, (struct obj *));
X#endif
XE void FDECL(pickup, (int));
XE struct obj *FDECL(pick_obj, (struct obj *));
XE int NDECL(doloot);
XE void NDECL(get_all_from_box);
XE void FDECL(use_container, (struct obj *, int));
XE void FDECL(inc_cwt, (struct obj *, struct obj *));
XE void FDECL(delete_contents, (struct obj *));
XE void FDECL(dec_cwt, (struct obj *, struct obj *));
X
X/* ### polyself.c ### */
X
XE void NDECL(newman);
X#ifdef POLYSELF
XE void NDECL(polyself);
XE int FDECL(polymon, (int));
XE void NDECL(rehumanize);
XE int NDECL(dobreathe);
XE int NDECL(dospit);
XE int NDECL(doremove);
XE int NDECL(dospinweb);
XE int NDECL(dosummon);
XE int NDECL(doconfuse);
XE int NDECL(dohide);
X#endif
XE const char *FDECL(body_part, (int));
XE int NDECL(poly_gender);
X#ifdef POLYSELF
X# ifdef GOLEMS
XE void FDECL(ugolemeffects, (int, int));
X# endif /* GOLEMS */
X#endif
X
X/* ### potion.c ### */
X
XE void FDECL(make_confused, (long,BOOLEAN_P));
XE void FDECL(make_stunned, (long,BOOLEAN_P));
XE void FDECL(make_blinded, (long,BOOLEAN_P));
XE void FDECL(make_sick, (long,BOOLEAN_P));
XE void FDECL(make_vomiting, (long,BOOLEAN_P));
XE void FDECL(make_hallucinated, (long,BOOLEAN_P));
XE int NDECL(dodrink);
XE int FDECL(dopotion, (struct obj *));
XE int FDECL(peffects, (struct obj *));
XE void FDECL(healup, (int,int,BOOLEAN_P,BOOLEAN_P));
XE void FDECL(strange_feeling, (struct obj *,const char *));
XE void FDECL(potionhit, (struct monst *,struct obj *));
XE void FDECL(potionbreathe, (struct obj *));
XE boolean FDECL(get_wet, (struct obj *));
XE int NDECL(dodip);
XE void FDECL(djinni_from_bottle, (struct obj *));
XE int FDECL(monster_detect, (struct obj *));
XE int FDECL(object_detect, (struct obj *));
XE int FDECL(trap_detect, (struct obj *));
X
X/* ### pray.c ### */
X
X# ifdef THEOLOGY
XE int NDECL(dosacrifice);
XE int NDECL(dopray);
XE const char *NDECL(u_gname);
X#endif /* THEOLOGY */
XE int NDECL(doturn);
X#ifdef ALTARS
XE const char *NDECL(a_gname);
XE const char *FDECL(a_gname_at, (XCHAR_P,XCHAR_P));
X# ifdef THEOLOGY
XE void FDECL(altar_wrath, (int,int));
X# endif
X#endif
X
X/* ### pri.c ### */
X
XE char *FDECL(eos, (char *));
XE void FDECL(swallowed, (int));
XE void NDECL(setclipped);
X#ifdef CLIPPING
XE void FDECL(cliparound, (int, int));
X#endif
XE boolean FDECL(showmon, (struct monst *));
XE void FDECL(at, (XCHAR_P,XCHAR_P,UCHAR_P,UCHAR_P));
XE void NDECL(prme);
XE void FDECL(shieldeff, (XCHAR_P,XCHAR_P));
XE int NDECL(doredraw);
XE void NDECL(docrt);
XE void FDECL(docorner, (int,int));
XE void NDECL(seeglds);
XE void NDECL(seeobjs);
XE void NDECL(seemons);
XE void FDECL(pmon, (struct monst *));
XE void FDECL(unpmon, (struct monst *));
XE void NDECL(nscr);
XE void NDECL(bot);
XE void FDECL(mstatusline, (struct monst *));
XE void NDECL(ustatusline);
XE void NDECL(cls);
XE void NDECL(max_rank_sz);
XE char NDECL(rndmonsym);
XE char NDECL(rndobjsym);
XE const char *NDECL(hcolor);
XE uchar FDECL(mimic_appearance, (struct monst *));
X
X/* ### priest.c ### */
X
XE int FDECL(move_special, (struct monst *,SCHAR_P,SCHAR_P,BOOLEAN_P,BOOLEAN_P,
X			XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
X#if defined(ALTARS) && defined(THEOLOGY)
XE struct mkroom *FDECL(in_temple, (int,int));
XE int FDECL(pri_move, (struct monst *));
XE void FDECL(priestini, (int,int,int,int));
XE char *FDECL(priestname, (struct monst *));
XE boolean FDECL(p_coaligned, (struct monst *));
XE void NDECL(intemple);
XE void FDECL(priest_talk, (struct monst *));
XE boolean FDECL(u_in_sanctuary, (struct mkroom *));
XE void NDECL(ghod_hitsu);
XE void NDECL(angry_priest);
X#endif
X
X/* ### prisym.c ### */
X
XE void FDECL(atl, (int,int,CHAR_P));
XE void FDECL(on_scr, (int,int));
XE void FDECL(tmp_at, (int,int));
XE void FDECL(Tmp_at2, (int,int));
XE void NDECL(curs_on_u);
XE void NDECL(pru);
XE void FDECL(prl, (int,int));
XE uchar FDECL(news0, (XCHAR_P,XCHAR_P));
XE void FDECL(newsym, (int,int));
XE void FDECL(mnewsym, (int,int));
XE void FDECL(nosee, (int,int));
XE void FDECL(prl1, (int,int));
XE void FDECL(nose1, (int,int));
XE int FDECL(vism_at, (int,int));
X#ifdef NEWSCR
XE void FDECL(pobj, (struct obj *));
X#endif /* NEWSCR */
XE void FDECL(unpobj, (struct obj *));
X#ifdef STUPID_CPP	/* otherwise these functions are macros in rm.h */
XE boolean FDECL(IS_WALL, (unsigned));
XE boolean FDECL(IS_STWALL, (unsigned));
XE boolean FDECL(IS_ROCK, (unsigned));
XE boolean FDECL(IS_DOOR, (unsigned));
XE boolean FDECL(ACCESSIBLE, (unsigned));
XE boolean FDECL(IS_ROOM, (unsigned));
XE boolean FDECL(ZAP_POS, (unsigned));
XE boolean FDECL(SPACE_POS, (unsigned));
XE boolean FDECL(IS_POOL, (unsigned));
XE boolean FDECL(IS_THRONE, (unsigned));
XE boolean FDECL(IS_FOUNTAIN, (unsigned));
XE boolean FDECL(IS_SINK, (unsigned));
XE boolean FDECL(IS_ALTAR, (unsigned));
XE boolean FDECL(IS_DRAWBRIDGE, (unsigned));
XE boolean FDECL(IS_FURNITURE, (unsigned));
X#endif /* STUPID_CPP */
X
X/* ### read.c ### */
X
XE int NDECL(doread);
XE int FDECL(seffects, (struct obj *));
XE void FDECL(litroom, (BOOLEAN_P));
XE void FDECL(do_genocide, (int));
XE void NDECL(do_mapping);
XE void NDECL(do_vicinity_map);
XE int FDECL(gold_detect, (struct obj *));
XE int FDECL(food_detect, (struct obj *));
XE void FDECL(punish, (struct obj *));
XE void NDECL(unpunish);
XE boolean FDECL(cant_create, (int *));
X#if defined(WIZARD) || defined(EXPLORE_MODE)
XE boolean NDECL(create_particular);
X#endif
X
X/* ### restore.c ### */
X
XE int FDECL(dorecover, (int));
XE void FDECL(getlev, (int,int,XCHAR_P,BOOLEAN_P));
X#ifdef ZEROCOMP
XE void NDECL(minit);
XE int FDECL(mread, (int,genericptr_t,unsigned int));
X#else
XE void FDECL(mread, (int,genericptr_t,unsigned int));
X#endif
X
X/* ### rip.c ### */
X
XE void NDECL(outrip);
X
X/* ### rnd.c ### */
X
XE int FDECL(rn1, (int,int));
XE int FDECL(rn2, (int));
XE int FDECL(rnl, (int));
XE int FDECL(rnd, (int));
XE int FDECL(d, (int,int));
XE int FDECL(rne, (int));
X#ifdef THEOLOGY
XE int FDECL(rnz, (int));
X#endif
X
X/* ### rumors.c ### */
X
XE void FDECL(outrumor, (int,BOOLEAN_P));
X#ifdef ORACLE
XE int FDECL(doconsult, (struct monst *));
X#endif
X
X/* ### save.c ### */
X
XE int NDECL(dosave);
X#ifndef NOSAVEONHANGUP
XE int NDECL(hangup);
X#endif /* NOSAVEONHANGUP */
XE int NDECL(dosave0);
X#if defined(DGK) && !defined(OLD_TOS)
XE boolean FDECL(savelev, (int,XCHAR_P,int));
XE boolean FDECL(swapin_file, (int));
X#else /* DGK && !OLD_TOS */
XE void FDECL(savelev, (int, XCHAR_P));
X#endif /* DGK && !OLD_TOS */
X#ifdef ZEROCOMP
XE void FDECL(bflush, (int));
X#endif
XE void FDECL(bwrite, (int,genericptr_t,unsigned int));
X#ifdef TUTTI_FRUTTI
XE void FDECL(savefruitchn, (int));
X#endif
X
X/* ### search.c ### */
X
XE int NDECL(findit);
XE int NDECL(dosearch);
XE int FDECL(dosearch0, (int));
XE int NDECL(doidtrap);
XE void FDECL(wakeup, (struct monst *));
XE void FDECL(seemimic, (struct monst *));
X
X/* ### shk.c ### */
X
XE char *FDECL(shkname, (struct monst *));
XE void FDECL(shkdead, (struct monst *));
XE void FDECL(replshk, (struct monst *,struct monst *));
XE int NDECL(inshop);
XE int FDECL(inhishop, (struct monst *));
XE boolean FDECL(tended_shop, (struct mkroom *));
XE void FDECL(obfree, (struct obj *,struct obj *));
XE int NDECL(dopay);
XE void FDECL(home_shk, (struct monst *));
XE void FDECL(make_happy_shk, (struct monst *));
XE boolean NDECL(paybill);
XE void FDECL(pay_for_door, (int,int,const char *));
XE void FDECL(addtobill, (struct obj *,BOOLEAN_P));
XE void FDECL(splitbill, (struct obj *,struct obj *));
XE void FDECL(sellobj, (struct obj *));
XE int FDECL(doinvbill, (int));
XE int FDECL(shkcatch, (struct obj *));
XE int FDECL(shk_move, (struct monst *));
XE int FDECL(online, (XCHAR_P,XCHAR_P));
XE boolean FDECL(is_fshk, (struct monst *));
XE void FDECL(shopdig, (int));
XE boolean FDECL(in_shop, (int,int));
XE boolean FDECL(costly_spot, (int,int));
XE void FDECL(check_unpaid, (struct obj *));
XE boolean FDECL(block_door, (int,int));
XE boolean FDECL(block_entry, (int,int));
X
X/* ### shknam.c ### */
X
XE void FDECL(stock_room, (const struct shclass *,struct mkroom *));
XE int FDECL(saleable, (int,struct obj *));
XE int FDECL(get_shop_item, (int));
X
X/* ### sit.c ### */
X
X#if defined(THRONES) || defined(SPELLS)
XE void NDECL(take_gold);
X#endif
XE int NDECL(dosit);
XE void NDECL(rndcurse);
XE void NDECL(attrcurse);
X
X/* ### sounds.c ### */
X
XE void FDECL(verbalize, (const char *));
X#ifdef SOUNDS
XE void NDECL(dosounds);
XE void FDECL(growl, (struct monst *));
XE void FDECL(yelp, (struct monst *));
XE void FDECL(whimper, (struct monst *));
X#endif
XE struct monst *FDECL(qname, (struct monst *));
XE int NDECL(dotalk);
X
X/* ### sp_lev.c ### */
X
X#ifdef STRONGHOLD
XE boolean FDECL(load_special, (const char *));
X#endif /* STRONGHOLD /**/
X
X/* ### spell.c ### */
X#ifdef SPELLS
X#ifdef OVERLAY
XE int NDECL(learn);
X#endif
XE int FDECL(study_book, (struct obj *));
XE int NDECL(docast);
XE int FDECL(spelleffects, (int, BOOLEAN_P));
XE void NDECL(losespells);
XE int NDECL(dovspell);
X#endif /* SPELLS */
X
X/* ### steal.c ### */
X
X#ifdef OVERLAY
XE int NDECL(stealarm);
X#endif
XE long NDECL(somegold);
XE void FDECL(stealgold, (struct monst *));
XE int FDECL(steal, (struct monst *));
XE void FDECL(mpickobj, (struct monst *,struct obj *));
XE void FDECL(stealamulet, (struct monst *));
XE void FDECL(relobj, (struct monst *,int));
X
X/* ### termcap.c ### */
X
XE void NDECL(startup);
XE void NDECL(start_screen);
XE void NDECL(end_screen);
X#ifdef CLIPPING
XE boolean FDECL(win_curs, (int,int));
X#endif
XE void FDECL(curs, (int,int));
XE void FDECL(cmov, (int,int));
XE void FDECL(xputc, (CHAR_P));
XE void FDECL(xputs, (const char *));
XE void NDECL(cl_end);
XE void NDECL(clear_screen);
XE void NDECL(home);
XE void NDECL(standoutbeg);
XE void NDECL(standoutend);
XE void NDECL(revbeg);
X#if 0
XE void NDECL(boldbeg);
XE void NDECL(blinkbeg);
XE void NDECL(dimbeg);
X#endif
XE void NDECL(m_end);
XE void NDECL(backsp);
XE void NDECL(bell);
XE void NDECL(graph_on);
XE void NDECL(graph_off);
XE void NDECL(delay_output);
XE void NDECL(cl_eos);
X
X/* ### timeout.c ### */
X
XE void NDECL(timeout);
XE void NDECL(hatch_eggs);
X
X/* ### topl.c ### */
X
XE int NDECL(doredotopl);
XE void NDECL(remember_topl);
XE void FDECL(addtopl, (const char *));
XE void NDECL(more);
XE void FDECL(cmore, (const char *));
XE void NDECL(clrlin);
X#ifdef NEED_VARARGS
X# if defined(USE_STDARG) || defined(USE_VARARGS)
XE void FDECL(vpline, (const char *, va_list));
X# endif
X#endif
XE void VDECL(pline, (const char *,...));
XE void VDECL(Norep, (const char *,...));
XE void VDECL(You, (const char *,...));
XE void VDECL(Your, (const char *,...));
XE void VDECL(kludge, (const char *,const char *,...));
XE void FDECL(putsym, (CHAR_P));
XE void FDECL(putstr, (const char *));
XE char FDECL(yn_function, (const char *,CHAR_P));
XE void VDECL(impossible, (const char *,...));
X
X/* ### topten.c ### */
X
XE void FDECL(topten, (int));
XE void FDECL(prscore, (int,char **));
XE struct obj *FDECL(tt_oname, (struct obj *));
X
X/* ### track.c ### */
X
XE void NDECL(initrack);
XE void NDECL(settrack);
XE coord *FDECL(gettrack, (int,int));
X
X/* ### trap.c ### */
X
XE boolean FDECL(rust_dmg, (struct obj *,const char *,int,BOOLEAN_P));
XE struct trap *FDECL(maketrap, (int,int,int));
XE int FDECL(teleok, (int,int));
XE void FDECL(dotrap, (struct trap *));
XE int FDECL(mintrap, (struct monst *));
XE void FDECL(selftouch, (const char *));
XE void NDECL(float_up);
XE int NDECL(float_down);
XE void NDECL(tele);
XE void FDECL(teleds, (int,int));
XE int NDECL(dotele);
XE void FDECL(placebc, (int));
XE void NDECL(unplacebc);
XE void NDECL(level_tele);
XE void NDECL(drown);
X#ifdef SPELLS
XE void FDECL(drain_en, (int));
X#endif
XE int NDECL(dountrap);
XE void FDECL(chest_trap, (struct obj *,int));
XE void NDECL(wake_nearby);
XE void FDECL(deltrap, (struct trap *));
XE struct trap *FDECL(t_at, (int,int));
XE void FDECL(b_trapped, (const char *));
XE boolean NDECL(unconscious);
X
X/* ### u_init.c ### */
X
XE void NDECL(u_init);
XE void NDECL(plnamesuffix);
X
X/* ### uhitm.c ### */
X
XE struct monst *FDECL(clone_mon, (struct monst *));
XE boolean FDECL(special_case, (struct monst *));
XE schar FDECL(find_roll_to_hit, (struct monst *));
XE boolean FDECL(attack, (struct monst *));
XE boolean FDECL(hmon, (struct monst *,struct obj *,int));
XE int FDECL(damageum, (struct monst *, struct attack *));
XE void FDECL(missum, (struct monst *, struct attack *));
XE int FDECL(passive, (struct monst *,BOOLEAN_P,int,BOOLEAN_P));
XE void FDECL(stumble_onto_mimic, (struct monst *));
X
X/* ### unixmain.c ### */
X
X#ifdef UNIX
XE void FDECL(glo, (int));
XE void NDECL(askname);
X#endif /* UNIX */
X
X/* ### unixtty.c ### */
X
X#ifdef UNIX
XE void NDECL(gettty);
XE void FDECL(settty, (const char *));
XE void NDECL(setftty);
XE void NDECL(intron);
XE void NDECL(introff);
XE void VDECL(error, (const char *,...));
X#endif /* UNIX */
X
X/* ### unixunix.c ### */
X
X#ifdef UNIX
XE void NDECL(setrandom);
XE int NDECL(getyear);
XE char *NDECL(getdate);
XE int NDECL(phase_of_the_moon);
XE int NDECL(night);
XE int NDECL(midnight);
XE void FDECL(gethdate, (char *));
XE int FDECL(uptodate, (int));
XE void NDECL(getlock);
XE void FDECL(regularize, (char *));
X#endif /* UNIX */
X
X/* ### vault.c ### */
X
XE void NDECL(invault);
XE int FDECL(gd_move, (struct monst *));
XE void NDECL(paygd);
XE boolean NDECL(gd_sound);
X
X/* ### version.c ### */
X
XE int NDECL(doversion);
XE int NDECL(doextversion);
X#ifdef MSDOS
XE int FDECL(comp_times,(long));
X#endif
X
X/* ### vmsmain.c ### */
X
X#ifdef VMS
X# ifdef CHDIR
XE void FDECL(chdirx, (char *,BOOLEAN_P));
X# endif /* CHDIR */
XE void FDECL(glo, (int));
XE void NDECL(askname);
X#endif /* VMS */
X
X/* ### vmsmisc.c ### */
X
X#ifdef VMS
XE void NDECL(vms_abort);
XE void FDECL(vms_exit, (int));
X#endif /* VMS */
X
X/* ### vmstty.c ### */
X
X#ifdef VMS
XE void NDECL(gettty);
XE void FDECL(settty, (char *));
XE void NDECL(setftty);
XE void NDECL(intron);
XE void NDECL(introff);
XE void VDECL(error, (char *,...));
X#endif /* VMS */
X
X/* ### vmsunix.c ### */
X
X#ifdef VMS
XE void NDECL(setrandom);
XE int NDECL(getyear);
XE char *NDECL(getdate);
XE int NDECL(phase_of_the_moon);
XE int NDECL(night);
XE int NDECL(midnight);
XE void FDECL(gethdate, (char *));
XE int FDECL(uptodate, (int));
XE void NDECL(getlock);
XE void FDECL(regularize, (char *));
XE int FDECL(vms_creat, (char *,unsigned int));
XE int NDECL(vms_getuid);
XE void NDECL(privoff);
XE void NDECL(privon);
X# ifdef SHELL
XE int NDECL(dosh);
X# endif
X#endif /* VMS */
X
X/* ### weapon.c ### */
X
XE int FDECL(hitval, (struct obj *,struct permonst *));
XE int FDECL(dmgval, (struct obj *,struct permonst *));
XE void NDECL(set_uasmon);
XE struct obj *FDECL(select_rwep, (struct monst *));
XE struct obj *FDECL(select_hwep, (struct monst *));
XE int NDECL(abon);
XE int NDECL(dbon);
X
X/* ### were.c ### */
X
XE void FDECL(were_change, (struct monst *));
XE void FDECL(new_were, (struct monst *));
XE boolean FDECL(were_summon, (struct permonst *,BOOLEAN_P));
X#ifdef POLYSELF
XE void NDECL(you_were);
X#endif /* POLYSELF */
X
X/* ### wield.c ### */
X
XE void FDECL(setuwep, (struct obj *));
XE void NDECL(uwepgone);
XE int NDECL(dowield);
XE void NDECL(corrode_weapon);
XE int FDECL(chwepon, (struct obj *,int));
XE int FDECL(welded, (struct obj *));
XE void FDECL(weldmsg, (struct obj *,BOOLEAN_P));
X
X/* ### wizard.c ### */
X
XE void NDECL(amulet);
XE int FDECL(mon_has_amulet, (struct monst *));
XE int FDECL(wiz_get_amulet, (struct monst *));
XE void NDECL(aggravate);
XE void NDECL(clonewiz);
X#ifdef HARD
XE void NDECL(nasty);
XE void NDECL(resurrect);
XE void NDECL(intervene);
XE void FDECL(wizdead, (struct monst *));
X#endif /* HARD */
XE void FDECL(cuss, (struct monst *));
X
X/* ### worm.c ### */
X
X#ifdef WORM
XE int FDECL(getwn, (struct monst *));
XE void FDECL(initworm, (struct monst *));
XE void FDECL(worm_move, (struct monst *));
XE void FDECL(worm_nomove, (struct monst *));
XE void FDECL(wormdead, (struct monst *));
XE void FDECL(wormhit, (struct monst *));
XE void FDECL(wormsee, (unsigned int));
XE void FDECL(cutworm, (struct monst *,XCHAR_P,XCHAR_P,unsigned));
X#endif /* WORM */
X
X/* ### worn.c ### */
X
XE void FDECL(setworn, (struct obj *,long));
XE void FDECL(setnotworn, (struct obj *));
X
X/* ### write.c ### */
X
XE void FDECL(dowrite, (struct obj *));
X
X/* ### zap.c ### */
X
X#ifdef OVERLAY
XE int FDECL(bhito, (struct obj *, struct obj *));
XE int FDECL(bhitm, (struct monst *, struct obj *));
X#endif
XE struct monst *FDECL(revive, (struct obj *,BOOLEAN_P));
XE int FDECL(zappable, (struct obj *));
XE void FDECL(zapnodir, (struct obj *));
XE int NDECL(dozap);
XE int FDECL(zapyourself, (struct obj *));
XE void FDECL(weffects, (struct obj *));
XE const char *FDECL(exclam, (int));
XE void FDECL(hit, (const char *,struct monst *,const char *));
XE void FDECL(miss, (const char *,struct monst *));
XE struct monst *FDECL(bhit, (int,int,int,CHAR_P,int FDECL((*), (struct monst *, struct obj *)),
X  int FDECL((*), (struct obj *, struct obj *)),struct obj *));
XE struct monst *FDECL(boomhit, (int,int));
XE void FDECL(buzz, (int,int,XCHAR_P,XCHAR_P,int,int));
XE void FDECL(rlocgold, (struct gold *));
XE void FDECL(rloco, (struct obj *));
XE void FDECL(fracture_rock, (struct obj *));
XE boolean FDECL(break_statue, (struct obj *));
XE void FDECL(destroy_item, (int,int));
XE int FDECL(destroy_mitem, (struct monst *,int,int));
XE int FDECL(resist, (struct monst *,CHAR_P,int,int));
XE void NDECL(makewish);
X
X#endif /* !MAKEDEFS_C && !LEV_LEX_C */
X
X#undef E
X
X#endif /* EXTERN_H /**/
END_OF_FILE
if test 42056 -ne `wc -c <'include/extern.h'`; then
    echo shar: \"'include/extern.h'\" unpacked with wrong size!
fi
# end of 'include/extern.h'
if test -f 'others/Makefile.os2' -a "${1}" != "-c" ; then 
  echo shar: Renaming existing file \"'others/Makefile.os2'\" to \"'others/Makefile.os2.orig'\"
  mv -f 'others/Makefile.os2' 'others/Makefile.os2.orig'
fi
echo shar: Extracting \"'others/Makefile.os2'\" \(12677 characters\)
sed "s/^X//" >'others/Makefile.os2' <<'END_OF_FILE'
X#	SCCS Id: @(#)Makefile.os2	3.0	90/01/20
X#	OS/2 NetHack 3.0 Makefile for Microsoft(tm) C 5.1 -- Timo Hakulinen
X#
X#	NDMAKE ver 4.5 is required, MS-MAKE will not work. MS-NMAKE
X#	may work but requires probably modifications to some targets.
X#
X#	Copy pctty.c, pcunix.c, pcmain.c, msdos.c and this file
X#	(+ termcap sources if used) into $(SRC) directory, rename
X#	this file to "makefile" (important, some targets rely on it),
X#	compile and link in real mode inside $(SRC).
X#
X#	When using CodeView versions earlier than ver. 2.3, define
X#	OS2_CODEVIEW in pcconf.h and set HACKDIR (+ TERM and TERMCAP
X#	if used) in OS/2 config.sys. Otherwise path searches may fail.
X#
X#	Note that $(GAMEDIR) must exist prior to compilation.
X#
X# Large memory model
XCC	= cl
XLINK	= link
XMODEL	= L
X
X# $(MAKE) macro is often predefined, so we use $(MAKEBIN) instead.
XMAKEBIN	= make
X
X# For those of us who have these on PC.
X#YACC	= yacc
X#LEX	= lex
XYACC	= bison -y
XLEX	= flex
X# Standard file names may vary in PC installations.
XYTABC	= y_tab.c
XYTABH	= y_tab.h
XLEXYYC	= lexyy.c
X
X# Directories (makedefs hardcodes these, don't change them).
XINCL	= ..\include
XAUX	= ..\auxil
XSRC	= ..\src
XOBJ	= $(SRC)\o2
X
X# The game name and description.
XGAME	= nethack
XGAMEDES = NetHack 3.0
X
X# The game directory.
XGAMEDIR = \games\$(GAME)
X
X# Memory model, compile only, disable optimization, remove stack probes,
X# 80286 instruction set, dedicated datasegment for items >= 5 bytes,
X# pack structures on 1 byte boundaries, generate code for 8087
X# coprocessor, compiler warning level, include file path.
XCFLAGS	= /A$(MODEL) /c /Od /Gs /G2 /Gt5 /Zp1 /FPi87 /W1 /I$(INCL) $(CDFLAGS)
X
X# + prepare for CodeView symbolic debugger.
XCDFLAGS =
X#CDFLAGS = /Zi
X
X# Don't ignore case in symbols, no default lib search, stack 4096 bytes.
X# (actually a bit of overkill), allow max 1024 segments in program.
XLFLAGS	= /noig /nod /stack:4096 /seg:1024 $(LDFLAGS)
X
X# + prepare for CodeView symbolic debugger.
XLDFLAGS =
X#LDFLAGS = /CO
X
X# Real mode C libraries for 8087 coprocessor (change if necessary).
XRLIBS	= $(MODEL)libc7r
X
X# Protected mode C libraries for 8087 (change if necessary),
X# OS/2 API entry points.
XPLIBS	= $(MODEL)libc7p doscalls
X
X# Module definition file for OS/2.
XOS2DEFS	= $(GAME).def
X
X# Target system.
XTARG	= pc
X
X# The default make target (so just typing 'make' is useful).
Xdefault: $(GAME)
X
X# If you have yacc and lex programs and make any changes, comment out the
X# upper two lines and uncomment the lower two.
Xdo_yacc: yacc_msg
Xdo_lex:  lex_msg
X#do_yacc: yacc_act
X#do_lex:  lex_act
X
X# Optional high-quality BSD random number generation routines (see pcconf.h).
X# Set to nothing if not used.
XRANDOM	= $(OBJ)\random.o
X#RANDOM	=
X
X# Termcap routines.
XTERMCAPS = termlib.lib
X
X# If TERMLIB defined in pcconf.h, comment out the upper line and
X# uncomment the lower.
XTERMLIB =
X#TERMLIB = $(TERMCAPS)
X
X######################################################################
X#
X# Nothing below this line should have to be changed.
X#
X# Other things that have to be reconfigured are in config.h,
X# {unixconf.h, pcconf.h, tosconf.h}, and possibly system.h.
X#
X
X# The game filename.
XGAMEFILE = $(GAMEDIR)\$(GAME).exe
X
X# For NDMAKE, to handle the .o suffix.
X.SUFFIXES: .exe .o .c .y .l
X
X.c.o:
X	$(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $*.c
X
X# Termcap objects.
XTERMOBJS = $(OBJ)\tgetent.o $(OBJ)\tgetflag.o $(OBJ)\tgetnum.o \
X	   $(OBJ)\tgetstr.o $(OBJ)\tgoto.o $(OBJ)\tputs.o $(OBJ)\isdigit.o \
X	   $(OBJ)\fgetlr.o
X
X# Object files for makedefs.
XMAKEOBJS = $(OBJ)\makedefs.o $(OBJ)\alloc.o $(OBJ)\monst.o $(OBJ)\objects.o \
X	   $(OBJ)\panic.o
X
X# Object files for special levels compiler.
XSPLEVOBJS = $(OBJ)\lev_comp.o $(OBJ)\lev_lex.o $(OBJ)\lev_main.o \
X	    $(OBJ)\alloc.o $(OBJ)\monst.o $(OBJ)\objects.o $(OBJ)\panic.o
X
XVOBJ =	$(OBJ)\allmain.o $(OBJ)\alloc.o    $(OBJ)\apply.o    $(OBJ)\artifact.o \
X	$(OBJ)\attrib.o  $(OBJ)\bones.o    $(OBJ)\cmd.o      $(OBJ)\dbridge.o \
X	$(OBJ)\decl.o    $(OBJ)\demon.o    $(OBJ)\do.o       $(OBJ)\do_name.o \
X	$(OBJ)\do_wear.o $(OBJ)\dog.o      $(OBJ)\dogmove.o  $(OBJ)\dokick.o \
X	$(OBJ)\dothrow.o $(OBJ)\eat.o      $(OBJ)\end.o      $(OBJ)\engrave.o \
X	$(OBJ)\exper.o   $(OBJ)\extralev.o $(OBJ)\fountain.o $(OBJ)\getline.o \
X	$(OBJ)\hack.o    $(OBJ)\invent.o   $(OBJ)\lock.o     $(OBJ)\mail.o \
X	$(OBJ)\main.o    $(OBJ)\makemon.o  $(OBJ)\mcastu.o   $(OBJ)\mhitm.o \
X	$(OBJ)\mhitu.o   $(OBJ)\mklev.o    $(OBJ)\mkmaze.o   $(OBJ)\mkobj.o \
X	$(OBJ)\mkroom.o  $(OBJ)\mon.o      $(OBJ)\mondata.o  $(OBJ)\msdos.o \
X	$(OBJ)\monmove.o $(OBJ)\monst.o    $(OBJ)\mthrowu.o  $(OBJ)\music.o \
X 	$(OBJ)\o_init.o  $(OBJ)\objects.o  $(OBJ)\objnam.o   $(OBJ)\options.o \
X	$(OBJ)\pager.o   $(OBJ)\pickup.o   $(OBJ)\polyself.o $(OBJ)\potion.o \
X	$(OBJ)\pray.o    $(OBJ)\pri.o      $(OBJ)\priest.o   $(OBJ)\prisym.o \
X	$(RANDOM)        $(OBJ)\read.o     $(OBJ)\restore.o  $(OBJ)\rip.o \
X	$(OBJ)\rnd.o     $(OBJ)\rumors.o   $(OBJ)\save.o     $(OBJ)\search.o \
X	$(OBJ)\shk.o     $(OBJ)\shknam.o   $(OBJ)\sit.o      $(OBJ)\sounds.o \
X	$(OBJ)\sp_lev.o  $(OBJ)\spell.o    $(OBJ)\steal.o    $(OBJ)\termcap.o \
X	$(OBJ)\timeout.o $(OBJ)\topl.o     $(OBJ)\topten.o   $(OBJ)\track.o \
X	$(OBJ)\trap.o    $(OBJ)\tty.o      $(OBJ)\u_init.o   $(OBJ)\uhitm.o \
X	$(OBJ)\unix.o    $(OBJ)\vault.o    $(OBJ)\weapon.o   $(OBJ)\were.o \
X	$(OBJ)\wield.o   $(OBJ)\wizard.o   $(OBJ)\worm.o     $(OBJ)\worn.o \
X	$(OBJ)\write.o   $(OBJ)\zap.o
XHOBJ =	$(VOBJ) $(OBJ)\version.o
X
XPCCONF_H   = $(INCL)\$(TARG)conf.h $(INCL)\msdos.h $(INCL)\system.h \
X	     $(INCL)\extern.h $(INCL)\def_os2.h 
XGLOBAL_H   = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H)
XCONFIG_H   = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H)
XTRAP_H	   = $(INCL)\trap.h
XPERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h
XYOU_H	   = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \
X	     $(INCL)\monst.h $(INCL)\youprop.h
XDECL_H	   = $(INCL)\decl.h $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \
X	     $(INCL)\onames.h $(INCL)\pm.h
XHACK_H	   = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \
X	     $(INCL)\objclass.h $(INCL)\gold.h $(INCL)\trap.h $(INCL)\flag.h \
X	     $(INCL)\rm.h
X
X# The main target
X$(GAMEDIR)\$(GAME).exe: $(OBJ) $(HOBJ) $(OS2DEFS) $(TERMLIB)
X	$(LINK) $(HOBJ),$(GAMEDIR)\$(GAME),$(GAME),$(PLIBS) $(TERMLIB),$(OS2DEFS) $(LFLAGS) ;
X
X# NDMAKE automatically generates LINK and LIB response files.
X
X$(GAME): $(GAMEDIR)\$(GAME).exe
X$(GAME).exe: $(GAMEDIR)\$(GAME).exe
X
Xall:	$(OBJ) makedefs lev_comp $(GAME) auxil
X	@echo Done.
X
X$(OBJ):
X	mkdir $(OBJ)
X
X# Target for termcap routines.
X
X$(TERMCAPS): $(TERMOBJS)
X	lib $(TERMCAPS) -+ $(TERMOBJS) ;
X
X# Targets for makedefs.
X
Xmakedefs: makedefs.exe
Xmakedefs.exe: $(MAKEOBJS)
X	$(LINK) $(MAKEOBJS),,,$(RLIBS) $(LFLAGS) ;
X
X$(OBJ)\makedefs.o: $(INCL)\config.h $(INCL)\permonst.h $(INCL)\objclass.h
X
X# Targets for the special levels compiler.
X
Xlev_comp: lev_comp.exe
Xlev_comp.exe: $(SPLEVOBJS)
X	$(LINK) $(SPLEVOBJS),,,$(RLIBS) $(LFLAGS) ;
X
X$(OBJ)\lev_comp.o: $(HACK_H) $(INCL)\sp_lev.h lev_comp.c
X	$(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $*.c
X$(OBJ)\lev_lex.o:  $(HACK_H) $(INCL)\sp_lev.h $(INCL)\lev_comp.h lev_lex.c
X	$(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $*.c
X$(OBJ)\lev_main.o: $(HACK_H) $(INCL)\sp_lev.h
X
Xlev_comp.c: lev_comp.y
X	$(MAKEBIN) do_yacc
X
Xlev_lex.c:  lev_comp.l
X	$(MAKEBIN) do_lex
X
Xyacc_msg:
X	@echo lev_comp.y has changed. To update lev_comp.c and lev_comp.h run YACC.
X
Xyacc_act:
X	$(YACC) -d lev_comp.y
X	copy $(YTABC) lev_comp.c
X	copy $(YTABH) $(INCL)\lev_comp.h
X	del $(YTABC)
X	del $(YTABH)
X
Xlex_msg:
X	@echo lev_comp.l has changed. To update lev_lex.c run LEX.
X
Xlex_act:
X	$(LEX) lev_comp.l
X	copy $(LEXYYC) lev_lex.c
X	del $(LEXYYC)
X
X#
X#	The following include files depend on makedefs to be created.
X#
X#	date.h should be remade any time any of the source or include code
X#	is modified.
X#
X$(INCL)\date.h: $(VOBJ) makedefs.exe
X	.\makedefs -v
X
X$(INCL)\trap.h:	makedefs.exe
X	.\makedefs -t
X
X$(INCL)\onames.h: makedefs.exe
X	.\makedefs -o
X
X$(INCL)\pm.h: makedefs.exe
X	.\makedefs -p
X
Xdata:	$(AUX)\data.base makedefs.exe
X	.\makedefs -d
X
Xrumors: $(AUX)\rumors.tru $(AUX)\rumors.fal makedefs.exe
X	.\makedefs -r
X
X#
X#	The following programs vary depending on what OS you are using.
X#
X$(OBJ)\main.o: $(HACK_H) $(TARG)main.c
X	$(CC) $(CFLAGS) /Fo$(OBJ)\main.o $(TARG)main.c
X
X$(OBJ)\tty.o:  $(HACK_H) $(INCL)\func_tab.h $(TARG)tty.c
X	$(CC) $(CFLAGS) /Fo$(OBJ)\tty.o $(TARG)tty.c
X
X$(OBJ)\unix.o: $(HACK_H) $(TARG)unix.c
X	$(CC) $(CFLAGS) /Fo$(OBJ)\unix.o $(TARG)unix.c
X
X#
X# Secondary targets
X#
X
Xauxil:	spec_levs data rumors
X	xcopy $(AUX)\*. $(GAMEDIR)
X
Xspec_levs: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des
X	lev_comp $(AUX)\castle.des
X	lev_comp $(AUX)\endgame.des
X	lev_comp $(AUX)\tower.des
X	xcopy castle $(GAMEDIR)
X	del castle
X	xcopy endgame $(GAMEDIR)
X	del endgame
X	xcopy tower? $(GAMEDIR)
X	del tower?
X
X$(OS2DEFS):
X	echo NAME $(GAME) WINDOWCOMPAT> $(OS2DEFS)
X	echo DESCRIPTION '$(GAMEDES)'>> $(OS2DEFS)
X	echo PROTMODE>> $(OS2DEFS)
X	echo EXETYPE OS2>> $(OS2DEFS)
X
Xclean:
X	del $(OBJ)\*.o
X	rmdir $(OBJ)
X
Xspotless: clean
X	del $(INCL)\date.h
X	del $(INCL)\onames.h
X	del $(INCL)\pm.h
X	del makedefs.exe
X	del lev_comp.exe
X	del $(TERMCAPS)
X	del *.def
X	del *.map
X	del $(AUX)\data
X	del $(AUX)\rumors
X	del castle
X	del endgame
X	del tower?
X
X#
X# Other dependencies
X#
X
X# GO AHEAD, DELETE THIS LINE
X
X$(OBJ)\allmain.o:  $(HACK_H)
X$(OBJ)\alloc.o:    $(CONFIG_H)
X$(OBJ)\apply.o:    $(HACK_H) $(INCL)\edog.h
X$(OBJ)\artifact.o: $(HACK_H) $(INCL)\artifact.h
X$(OBJ)\attrib.o:   $(HACK_H)
X$(OBJ)\bones.o:    $(HACK_H)
X$(OBJ)\cmd.o:      $(HACK_H) $(INCL)\func_tab.h
X$(OBJ)\dbridge.o:  $(HACK_H)
X$(OBJ)\decl.o:     $(HACK_H)
X$(OBJ)\demon.o:    $(HACK_H)
X$(OBJ)\do.o:       $(HACK_H)
X$(OBJ)\do_name.o:  $(HACK_H)
X$(OBJ)\do_wear.o:  $(HACK_H)
X$(OBJ)\dog.o:      $(HACK_H) $(INCL)\edog.h
X$(OBJ)\dogmove.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
X$(OBJ)\dokick.o:   $(HACK_H)
X$(OBJ)\dothrow.o:  $(HACK_H)
X$(OBJ)\eat.o:      $(HACK_H)
X$(OBJ)\end.o:      $(HACK_H) $(INCL)\eshk.h
X$(OBJ)\engrave.o:  $(HACK_H)
X$(OBJ)\exper.o:    $(HACK_H)
X$(OBJ)\extralev.o: $(HACK_H)
X$(OBJ)\fountain.o: $(HACK_H)
X$(OBJ)\getline.o:  $(HACK_H) $(INCL)\func_tab.h
X$(OBJ)\hack.o:     $(HACK_H)
X$(OBJ)\invent.o:   $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
X$(OBJ)\ioctl.o:    $(HACK_H)
X$(OBJ)\lev_comp.o: $(HACK_H) $(INCL)\sp_lev.h
X$(OBJ)\lock.o:     $(HACK_H)
X$(OBJ)\makemon.o:  $(HACK_H)
X$(OBJ)\mail.o:     $(HACK_H)
X$(OBJ)\mcastu.o:   $(HACK_H)
X$(OBJ)\mhitm.o:    $(HACK_H) $(INCL)\artifact.h
X$(OBJ)\mhitu.o:    $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
X$(OBJ)\mklev.o:    $(HACK_H)
X$(OBJ)\mkmaze.o:   $(HACK_H)
X$(OBJ)\mkobj.o:    $(HACK_H)
X$(OBJ)\mkroom.o:   $(HACK_H)
X$(OBJ)\mon.o:      $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
X$(OBJ)\mondata.o:  $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h
X$(OBJ)\monmove.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
X$(OBJ)\monst.o:    $(CONFIG_H) $(PERMONST_H) $(INCL)\eshk.h $(INCL)\vault.h \
X		   $(INCL)\epri.h
X$(OBJ)\msdos.o:    $(HACK_H)
X$(OBJ)\mthrowu.o:  $(HACK_H)
X$(OBJ)\music.o:    $(HACK_H)
X$(OBJ)\o_init.o:   $(HACK_H) $(INCL)\onames.h
X$(OBJ)\objects.o:  $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h
X$(OBJ)\objnam.o:   $(HACK_H)
X$(OBJ)\options.o:  $(HACK_H)
X$(OBJ)\pager.o:    $(HACK_H)
X$(OBJ)\panic.o:    $(CONFIG_H)
X$(OBJ)\pickup.o:   $(HACK_H)
X$(OBJ)\polyself.o: $(HACK_H)
X$(OBJ)\potion.o:   $(HACK_H)
X$(OBJ)\pray.o:     $(HACK_H)
X$(OBJ)\pri.o:      $(HACK_H) $(INCL)\termcap.h
X$(OBJ)\priest.o:   $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h
X$(OBJ)\prisym.o:   $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
X$(OBJ)\random.o:
X$(OBJ)\read.o:     $(HACK_H)
X$(OBJ)\restore.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
X$(OBJ)\rip.o:      $(HACK_H)
X$(OBJ)\rnd.o:      $(HACK_H)
X$(OBJ)\rumors.o:   $(HACK_H)
X$(OBJ)\save.o:     $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
X$(OBJ)\search.o:   $(HACK_H) $(INCL)\artifact.h
X$(OBJ)\shk.o:      $(HACK_H) $(INCL)\eshk.h
X$(OBJ)\shknam.o:   $(HACK_H) $(INCL)\eshk.h
X$(OBJ)\sit.o:      $(HACK_H)
X$(OBJ)\sounds.o:   $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h
X$(OBJ)\sp_lev.o:   $(HACK_H) $(INCL)\sp_lev.h
X$(OBJ)\spell.o:    $(HACK_H)
X$(OBJ)\steal.o:    $(HACK_H)
X$(OBJ)\termcap.o:  $(HACK_H) $(INCL)\termcap.h
X$(OBJ)\timeout.o:  $(HACK_H)
X$(OBJ)\topl.o:     $(HACK_H)
X$(OBJ)\topten.o:   $(HACK_H)
X$(OBJ)\track.o:    $(HACK_H)
X$(OBJ)\trap.o:     $(HACK_H) $(INCL)\edog.h
X$(OBJ)\u_init.o:   $(HACK_H)
X$(OBJ)\uhitm.o:    $(HACK_H) $(INCL)\artifact.h
X$(OBJ)\vault.o:    $(HACK_H) $(INCL)\vault.h
X$(OBJ)\version.o:  $(HACK_H) $(INCL)\date.h
X$(OBJ)\weapon.o:   $(HACK_H)
X$(OBJ)\were.o:     $(HACK_H)
X$(OBJ)\wield.o:    $(HACK_H)
X$(OBJ)\wizard.o:   $(HACK_H)
X$(OBJ)\worm.o:     $(HACK_H) $(INCL)\wseg.h
X$(OBJ)\worn.o:     $(HACK_H)
X$(OBJ)\write.o:    $(HACK_H)
X$(OBJ)\zap.o:      $(HACK_H)
END_OF_FILE
if test 12677 -ne `wc -c <'others/Makefile.os2'`; then
    echo shar: \"'others/Makefile.os2'\" unpacked with wrong size!
fi
# end of 'others/Makefile.os2'
echo shar: End of archive 24 \(of 30\).
cp /dev/null ark24isdone
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 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 30 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