billr@saab.CNA.TEK.COM (Bill Randle) (11/23/89)
Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
Posting-number: Volume 8, Issue 61
Archive-name: NetHack3/Patch6h
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 8 (of 15)."
# Contents: patches06e
# Wrapped by billr@saab on Wed Nov 22 10:50:14 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patches06e' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'patches06e'\"
else
echo shar: Extracting \"'patches06e'\" \(53756 characters\)
sed "s/^X//" >'patches06e' <<'END_OF_FILE'
X*** src/Old/Makefile.src Sun Nov 19 12:30:37 1989
X--- src/Makefile.src Thu Nov 9 18:09:45 1989
X***************
X*** 47,58 ****
X CFLAGS = -O -I../include
X LFLAGS =
X
X- # object files for makedefs
X- MAKEOBJS = makedefs.o monst.o objects.o panic.o
X-
X- # object files for special levels compiler
X- SPLEVOBJS = lev_comp.o lev_lex.o lev_main.o alloc.o monst.o objects.o panic.o
X-
X # on some systems the termcap library is in -ltermcap or -lcurses
X # on 386 Xenix, the -ltermlib tputs() seems not to work; use -lcurses instead
X # Sysatt uses shared library in lieu of this option
X--- 47,52 ----
X***************
X*** 105,115 ****
X
X HACKINCL = amiconf.h artifact.h attrib.h color.h config.h coord.h decl.h\
X def_os2.h edog.h epri.h eshk.h extern.h flag.h func_tab.h global.h\
X! gold.h hack.h lev.h mfndpos.h mkroom.h monattk.h mondata.h monflag.h\
X! monst.h monsym.h msdos.h obj.h objclass.h patchlevel.h pcconf.h\
X! permonst.h prop.h rm.h sp_lev.h spell.h system.h tosconf.h\
X! tradstdc.h trapname.h unixconf.h vault.h vmsconf.h wseg.h you.h\
X! youprop.h
X
X # all .h files except date.h, onames.h, pm.h & trap.h which would cause
X # dependency loops if run through "make depend".
X--- 99,109 ----
X
X HACKINCL = amiconf.h artifact.h attrib.h color.h config.h coord.h decl.h\
X def_os2.h edog.h epri.h eshk.h extern.h flag.h func_tab.h global.h\
X! gold.h hack.h lev.h macconf.h mfndpos.h mkroom.h monattk.h mondata.h\
X! monflag.h monst.h monsym.h msdos.h obj.h objclass.h patchlevel.h\
X! pcconf.h permonst.h prop.h rm.h sp_lev.h spell.h system.h termcap.h\
X! tosconf.h tradstdc.h trapname.h unixconf.h vault.h vmsconf.h wseg.h\
X! you.h youprop.h
X
X # all .h files except date.h, onames.h, pm.h & trap.h which would cause
X # dependency loops if run through "make depend".
X***************
X*** 119,124 ****
X--- 113,124 ----
X
X SOURCES = $(CSOURCES) $(HSOURCES)
X
X+ # object files for makedefs
X+ MAKEOBJS = makedefs.o monst.o objects.o panic.o
X+
X+ # object files for special levels compiler
X+ SPLEVOBJS = lev_comp.o lev_lex.o lev_main.o alloc.o monst.o objects.o panic.o
X+
X HOBJ = allmain.o alloc.o apply.o artifact.o attrib.o bones.o cmd.o dbridge.o\
X decl.o demon.o do.o do_name.o do_wear.o dog.o dogmove.o dokick.o\
X dothrow.o eat.o end.o engrave.o exper.o extralev.o fountain.o getline.o\
X***************
X*** 387,393 ****
X polyself.o: ../include/hack.h
X potion.o: ../include/hack.h
X pray.o: ../include/hack.h
X! pri.o: ../include/hack.h ../include/epri.h
X priest.o: ../include/hack.h ../include/mfndpos.h ../include/eshk.h ../include/epri.h
X prisym.o: ../include/hack.h ../include/wseg.h ../include/lev.h
X read.o: ../include/hack.h
X--- 387,393 ----
X polyself.o: ../include/hack.h
X potion.o: ../include/hack.h
X pray.o: ../include/hack.h
X! pri.o: ../include/hack.h ../include/epri.h ../include/termcap.h
X priest.o: ../include/hack.h ../include/mfndpos.h ../include/eshk.h ../include/epri.h
X prisym.o: ../include/hack.h ../include/wseg.h ../include/lev.h
X read.o: ../include/hack.h
X***************
X*** 404,410 ****
X sp_lev.o: ../include/hack.h ../include/sp_lev.h
X spell.o: ../include/hack.h
X steal.o: ../include/hack.h
X! termcap.o: ../include/hack.h
X timeout.o: ../include/hack.h
X topl.o: ../include/hack.h
X topten.o: ../include/hack.h
X--- 404,410 ----
X sp_lev.o: ../include/hack.h ../include/sp_lev.h
X spell.o: ../include/hack.h
X steal.o: ../include/hack.h
X! termcap.o: ../include/hack.h ../include/termcap.h
X timeout.o: ../include/hack.h
X topl.o: ../include/hack.h
X topten.o: ../include/hack.h
X***************
X*** 428,437 ****
X touch ../include/config.h
X ../include/decl.h: ../include/spell.h ../include/color.h ../include/obj.h ../include/you.h ../include/onames.h ../include/pm.h
X touch ../include/decl.h
X! ../include/global.h: ../include/coord.h ../include/vmsconf.h ../include/unixconf.h ../include/pcconf.h ../include/tosconf.h ../include/amiconf.h
X touch ../include/global.h
X ../include/hack.h: ../include/config.h ../include/decl.h ../include/monsym.h ../include/mkroom.h ../include/objclass.h ../include/gold.h ../include/trap.h ../include/flag.h ../include/rm.h
X touch ../include/hack.h
X ../include/pcconf.h: ../include/msdos.h ../include/system.h
X touch ../include/pcconf.h
X ../include/permonst.h: ../include/monattk.h ../include/monflag.h
X--- 428,439 ----
X touch ../include/config.h
X ../include/decl.h: ../include/spell.h ../include/color.h ../include/obj.h ../include/you.h ../include/onames.h ../include/pm.h
X touch ../include/decl.h
X! ../include/global.h: ../include/coord.h ../include/vmsconf.h ../include/unixconf.h ../include/pcconf.h ../include/tosconf.h ../include/amiconf.h ../include/macconf.h
X touch ../include/global.h
X ../include/hack.h: ../include/config.h ../include/decl.h ../include/monsym.h ../include/mkroom.h ../include/objclass.h ../include/gold.h ../include/trap.h ../include/flag.h ../include/rm.h
X touch ../include/hack.h
X+ ../include/macconf.h: ../include/msdos.h ../include/system.h
X+ touch ../include/macconf.h
X ../include/pcconf.h: ../include/msdos.h ../include/system.h
X touch ../include/pcconf.h
X ../include/permonst.h: ../include/monattk.h ../include/monflag.h
X*** src/Old/allmain.c Sun Nov 19 12:31:13 1989
X--- src/allmain.c Sat Nov 4 13:40:17 1989
X***************
X*** 42,47 ****
X--- 42,50 ----
X UnloadSeg(savebones);
X }
X #endif
X+ #ifdef CLIPPING
X+ cliparound(u.ux, u.uy);
X+ #endif
X if(flags.move) { /* actual time passed */
X
X #ifdef SOUNDS
X***************
X*** 262,267 ****
X--- 265,273 ----
X */
X if(MON_AT(u.ux, u.uy)) mnexto(m_at(u.ux, u.uy));
X
X+ #ifdef CLIPPING
X+ cliparound(u.ux, u.uy);
X+ #endif
X (void) makedog();
X seemons();
X #ifdef NEWS
X*** src/Old/alloc.c Sun Nov 19 12:31:27 1989
X--- src/alloc.c Fri Nov 17 19:31:23 1989
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)alloc.c 3.0 88/07/21
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)alloc.c 3.0 89/11/15
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 23,29 ****
X
X #else
X #ifndef __TURBOC__
X! extern void panic P((char *,...));
X
X long *
X alloc(lth)
X--- 23,29 ----
X
X #else
X #ifndef __TURBOC__
X! extern void VDECL(panic, (char *,...));
X
X long *
X alloc(lth)
X*** src/Old/apply.c Sun Nov 19 12:31:42 1989
X--- src/apply.c Sat Nov 18 21:17:21 1989
X***************
X*** 95,102 ****
X mtmp->mflee = 1;
X if(rn2(4)) mtmp->mfleetim = rnd(100);
X }
X! if(tmp < 3) mtmp->mcansee = mtmp->mblinded = 0;
X! else {
X tmp2 = mtmp->mblinded;
X tmp2 += rnd(1 + 50/tmp);
X if(tmp2 > 127) tmp2 = 127;
X--- 95,104 ----
X mtmp->mflee = 1;
X if(rn2(4)) mtmp->mfleetim = rnd(100);
X }
X! if(tmp < 3) {
X! mtmp->mcansee = 0;
X! mtmp->mblinded = 0;
X! } else {
X tmp2 = mtmp->mblinded;
X tmp2 += rnd(1 + 50/tmp);
X if(tmp2 > 127) tmp2 = 127;
X***************
X*** 415,422 ****
X }
X #endif /* WALKIES */
X
X!
X! static int
X dig() {
X register struct rm *lev;
X register int dpx = dig_pos.x, dpy = dig_pos.y;
X--- 417,426 ----
X }
X #endif /* WALKIES */
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X dig() {
X register struct rm *lev;
X register int dpx = dig_pos.x, dpy = dig_pos.y;
X***************
X*** 524,529 ****
X--- 528,535 ----
X if(IS_DOOR(lev->typ) && (lev->doormask & D_TRAPPED)) {
X b_trapped("door");
X lev->doormask = D_NODOOR;
X+ mnewsym(dpx, dpy);
X+ prl(dpx, dpy);
X }
X dig_level = -1;
X return(0);
X***************
X*** 642,648 ****
X struct obj *obj;
X {
X char dirsyms[12];
X! register char *dsp = dirsyms, *sdp = flags.num_pad ? ndir : sdir;
X register struct rm *lev;
X register int rx, ry, res = 0;
X register boolean isclosedoor = FALSE;
X--- 648,655 ----
X struct obj *obj;
X {
X char dirsyms[12];
X! register char *dsp = dirsyms;
X! register const char *sdp = flags.num_pad ? ndir : sdir;
X register struct rm *lev;
X register int rx, ry, res = 0;
X register boolean isclosedoor = FALSE;
X***************
X*** 779,795 ****
X #endif
X if (Hallucination) You("look %s.", hcolor());
X else if (Sick)
X! You("look peakish.");
X else if (u.uhs >= WEAK)
X You("look undernourished.");
X #ifdef POLYSELF
X else if (u.usym == S_NYMPH
X! #ifdef HARD
X || u.umonnum==PM_SUCCUBUS
X #endif
X )
X You("look beautiful in the mirror.");
X! #ifdef HARD
X else if (u.umonnum == PM_INCUBUS)
X You("look handsome in the mirror.");
X #endif
X--- 786,802 ----
X #endif
X if (Hallucination) You("look %s.", hcolor());
X else if (Sick)
X! You("look peaked.");
X else if (u.uhs >= WEAK)
X You("look undernourished.");
X #ifdef POLYSELF
X else if (u.usym == S_NYMPH
X! #ifdef INFERNO
X || u.umonnum==PM_SUCCUBUS
X #endif
X )
X You("look beautiful in the mirror.");
X! #ifdef INFERNO
X else if (u.umonnum == PM_INCUBUS)
X You("look handsome in the mirror.");
X #endif
X***************
X*** 883,889 ****
X pline ("%s has confused itself!", Monnam(mtmp));
X mtmp->mconf = 1;
X } else if(!mtmp->mcan && !mtmp->minvis && (mlet == S_NYMPH
X! #ifdef HARD
X || mtmp->data==&mons[PM_SUCCUBUS]
X #endif
X )) {
X--- 890,896 ----
X pline ("%s has confused itself!", Monnam(mtmp));
X mtmp->mconf = 1;
X } else if(!mtmp->mcan && !mtmp->minvis && (mlet == S_NYMPH
X! #ifdef INFERNO
X || mtmp->data==&mons[PM_SUCCUBUS]
X #endif
X )) {
X***************
X*** 1135,1141 ****
X can->blessed = obj->blessed;
X can = addinv(can);
X You("now have %s.", doname(can));
X! useup(corpse);
X }
X
X int
X--- 1142,1223 ----
X can->blessed = obj->blessed;
X can = addinv(can);
X You("now have %s.", doname(can));
X! if (carried(corpse)) useup(corpse);
X! else useupf(corpse);
X! }
X!
X! int
X! use_unicorn_horn(obj)
X! struct obj *obj;
X! {
X! boolean cursed = (obj && obj->cursed);
X! boolean blessed = (obj && obj->blessed);
X! boolean did_something = FALSE;
X!
X! if (cursed) {
X! switch (rn2(6)) {
X! static char buf[BUFSZ];
X! case 0: make_sick(Sick ? 1L : (long)(20 + rn2(20)), TRUE);
X! Strcpy(buf, xname(obj));
X! u.usick_cause = buf;
X! break;
X! case 1: make_blinded(Blinded + (long) rnd(100), TRUE);
X! break;
X! case 2: if (!Confusion)
X! You("suddenly feel %s.",
X! Hallucination ? "trippy" : "confused");
X! make_confused(HConfusion + (long) rnd(100), TRUE);
X! break;
X! case 3: make_stunned(HStun + (long) rnd(100), TRUE);
X! break;
X! case 4: adjattrib(rn2(6), -1, FALSE);
X! break;
X! case 5: make_hallucinated(Hallucination + (long) rnd(100),
X! TRUE);
X! break;
X! }
X! return 1;
X! }
X!
X! if (Sick) {
X! make_sick(0L, TRUE);
X! did_something++;
X! }
X! if (Blinded && (!did_something || blessed)) {
X! make_blinded(0L, TRUE);
X! did_something++;
X! }
X! if (Hallucination && (!did_something || blessed)) {
X! make_hallucinated(0L, TRUE);
X! did_something++;
X! }
X! if (HConfusion && (!did_something || blessed)) {
X! make_confused(0L, TRUE);
X! did_something++;
X! }
X! if (HStun && (!did_something || blessed)) {
X! make_stunned(0L, TRUE);
X! did_something++;
X! }
X! if (!did_something || blessed) {
X! register int j;
X! int did_stat = 0;
X! int i = rn2(A_MAX);
X! for(j=0; j<A_MAX; j++) {
X! if ((blessed || j==i) && ABASE(i) < AMAX(i)) {
X! did_something++;
X! /* They may have to use it several times... */
X! if (!did_stat) {
X! did_stat++;
X! pline("This makes you feel good!");
X! }
X! ABASE(i)++;
X! flags.botl = 1;
X! }
X! }
X! }
X! if (!did_something) pline(nothing_happens);
X! return !!did_something;
X }
X
X int
X***************
X*** 1244,1249 ****
X--- 1326,1334 ----
X }
X else if (!ublindf) Blindf_on(obj);
X else You("are already wearing a blindfold!");
X+ break;
X+ case UNICORN_HORN:
X+ res = use_unicorn_horn(obj);
X break;
X default:
X pline("Sorry, I don't know how to use that.");
X*** src/Old/artifact.c Sun Nov 19 12:32:35 1989
X--- src/artifact.c Sun Oct 22 11:45:42 1989
X***************
X*** 101,107 ****
X mkartifact(otmp1)
X struct obj **otmp1;
X {
X! register struct artifact *artif;
X register struct obj *otmp = *otmp1;
X register int n = 0;
X
X--- 101,107 ----
X mkartifact(otmp1)
X struct obj **otmp1;
X {
X! register const struct artifact *artif;
X register struct obj *otmp = *otmp1;
X register int n = 0;
X
X***************
X*** 123,135 ****
X get_artifact(otmp)
X struct obj *otmp;
X {
X! register struct artifact *artif;
X
X if(otmp)
X if(strlen(ONAME(otmp)))
X for(artif = artilist; artif->otyp; artif++)
X if(artif->otyp == otmp->otyp &&
X! !strcmp(ONAME(otmp), artif->name)) return(artif);
X return((struct artifact *)0);
X }
X
X--- 123,136 ----
X get_artifact(otmp)
X struct obj *otmp;
X {
X! register const struct artifact *artif;
X
X if(otmp)
X if(strlen(ONAME(otmp)))
X for(artif = artilist; artif->otyp; artif++)
X if(artif->otyp == otmp->otyp &&
X! !strcmp(ONAME(otmp), artif->name))
X! return((struct artifact *)artif);
X return((struct artifact *)0);
X }
X
X***************
X*** 155,161 ****
X register struct obj *otmp;
X register char *name;
X {
X! register struct artifact *artif;
X
X if(!strlen(name)) return(0);
X
X--- 156,162 ----
X register struct obj *otmp;
X register char *name;
X {
X! register const struct artifact *artif;
X
X if(!strlen(name)) return(0);
X
X***************
X*** 172,178 ****
X mk_aligned_artifact(align)
X unsigned align;
X {
X! register struct artifact *artif;
X register struct obj *otmp;
X register int n = 0;
X
X--- 173,179 ----
X mk_aligned_artifact(align)
X unsigned align;
X {
X! register const struct artifact *artif;
X register struct obj *otmp;
X register int n = 0;
X
X*** src/Old/attrib.c Sun Nov 19 12:32:55 1989
X--- src/attrib.c Wed Nov 8 21:19:20 1989
X***************
X*** 95,110 ****
X * a minimum strength of 6 since without one you can't teleport or cast
X * spells. --KAA
X */
X! struct innate *abil;
X! } a_attr = { { 6, 9, 9, 6, 6, 6 }, /* Archeologist */
X { 20, 20, 20, 10, 20, 10 },
X 10, 1, 13, 10, 14, 2, a_abil },
X
X! b_attr = { { 15, 6, 6, 14, 15, 5 }, /* Barbarian */
X { 30, 6, 7, 20, 30, 7 },
X 10, -1, 16, 12, 10, 3, b_abil },
X
X! c_attr = { { 9, 6, 6, 6, 7, 5 }, /* Caveman (fighter) */
X { 30, 6, 7, 20, 30, 7 },
X 0, 1, 16, 10, 10, 3, c_abil },
X
X--- 95,110 ----
X * a minimum strength of 6 since without one you can't teleport or cast
X * spells. --KAA
X */
X! const struct innate *abil;
X! } a_attr = { { 7, 10, 10, 7, 7, 7 }, /* Archeologist */
X { 20, 20, 20, 10, 20, 10 },
X 10, 1, 13, 10, 14, 2, a_abil },
X
X! b_attr = { { 16, 7, 7, 15, 16, 6 }, /* Barbarian */
X { 30, 6, 7, 20, 30, 7 },
X 10, -1, 16, 12, 10, 3, b_abil },
X
X! c_attr = { { 10, 7, 7, 7, 8, 6 }, /* Caveman (fighter) */
X { 30, 6, 7, 20, 30, 7 },
X 0, 1, 16, 10, 10, 3, c_abil },
X
X***************
X*** 111,149 ****
X /*
X e_attr = { { 13, 13, 14, 6, 14, 6 },
X */
X! e_attr = { { 12, 12, 12, 8, 12, 6 }, /* Elf (ranger) */
X { 30, 10, 10, 20, 20, 10 },
X 10, 1, 15, 10, 11, 2, e_abil },
X
X! h_attr = { { 6, 6, 12, 6, 10, 15 }, /* Healer (druid) */
X { 15, 20, 20, 15, 25, 10 },
X 10, 1, 13, 10, 20, 2, h_abil },
X
X! k_attr = { { 12, 6, 13, 6, 9, 17 }, /* Knight (paladin) */
X { 20, 15, 15, 10, 20, 10 },
X 10, 1, 16, 10, 10, 3, k_abil },
X
X! p_attr = { { 6, 6, 9, 6, 6, 6 }, /* Priest (cleric) */
X { 15, 10, 30, 15, 20, 10 },
X 0, 0, 14, 10, 10, 2, p_abil },
X
X! r_attr = { { 6, 6, 6, 9, 6, 5 }, /* Rogue (thief) */
X { 20, 10, 10, 30, 20, 10 },
X 10, -1, 12, 10, 11, 2, r_abil },
X
X! s_attr = { { 9, 6, 6, 9, 17, 5 }, /* Samurai (fighter/thief) */
X { 30, 10, 10, 30, 14, 10 },
X 10, 1, 15, 10, 11, 2, s_abil },
X
X! t_attr = { { 6, 9, 5, 6, 6, 9 }, /* Tourist */
X { 15, 10, 10, 15, 30, 20 },
X 0, 0, 10, 10, 14, 1, t_abil },
X
X! v_attr = { { 9, 6, 6, 6, 9, 6 }, /* Valkyrie (fighter) */
X { 30, 6, 7, 20, 30, 7 },
X 0, -1, 16, 10, 10, 3, v_abil },
X
X! w_attr = { { 6, 9, 6, 6, 6, 6 }, /* Wizard (magic-user) */
X { 10, 30, 10, 20, 20, 10 },
X 0, 0, 12, 10, 12, 1, w_abil },
X
X--- 111,149 ----
X /*
X e_attr = { { 13, 13, 14, 6, 14, 6 },
X */
X! e_attr = { { 13, 13, 13, 9, 13, 7 }, /* Elf (ranger) */
X { 30, 10, 10, 20, 20, 10 },
X 10, 1, 15, 10, 11, 2, e_abil },
X
X! h_attr = { { 7, 7, 13, 7, 11, 16 }, /* Healer (druid) */
X { 15, 20, 20, 15, 25, 10 },
X 10, 1, 13, 10, 20, 2, h_abil },
X
X! k_attr = { { 13, 7, 14, 8, 10, 17 }, /* Knight (paladin) */
X { 20, 15, 15, 10, 20, 10 },
X 10, 1, 16, 10, 10, 3, k_abil },
X
X! p_attr = { { 7, 7, 10, 7, 7, 7 }, /* Priest (cleric) */
X { 15, 10, 30, 15, 20, 10 },
X 0, 0, 14, 10, 10, 2, p_abil },
X
X! r_attr = { { 7, 7, 7, 10, 7, 6 }, /* Rogue (thief) */
X { 20, 10, 10, 30, 20, 10 },
X 10, -1, 12, 10, 11, 2, r_abil },
X
X! s_attr = { { 10, 8, 7, 10, 17, 6 }, /* Samurai (fighter/thief) */
X { 30, 10, 10, 30, 14, 10 },
X 10, 1, 15, 10, 11, 2, s_abil },
X
X! t_attr = { { 7, 10, 6, 7, 7, 10 }, /* Tourist */
X { 15, 10, 10, 15, 30, 20 },
X 0, 0, 10, 10, 14, 1, t_abil },
X
X! v_attr = { { 10, 7, 7, 7, 10, 7 }, /* Valkyrie (fighter) */
X { 30, 6, 7, 20, 30, 7 },
X 0, -1, 16, 10, 10, 3, v_abil },
X
X! w_attr = { { 7, 10, 7, 7, 7, 7 }, /* Wizard (magic-user) */
X { 10, 30, 10, 20, 20, 10 },
X 0, 0, 12, 10, 12, 1, w_abil },
X
X***************
X*** 277,286 ****
X }
X }
X
X! static struct clattr *
X clx() {
X
X! register struct clattr *attr;
X
X switch (pl_character[0]) {
X
X--- 277,286 ----
X }
X }
X
X! static const struct clattr *
X clx() {
X
X! register const struct clattr *attr;
X
X switch (pl_character[0]) {
X
X***************
X*** 318,324 ****
X static void
X init_align() { /* called from newhp if u.ulevel is 0 */
X
X! register struct clattr *attr = clx();
X
X u.ualign = (int)attr->align;
X u.ualigntyp = attr->aligntyp;
X--- 318,324 ----
X static void
X init_align() { /* called from newhp if u.ulevel is 0 */
X
X! register const struct clattr *attr = clx();
X
X u.ualign = (int)attr->align;
X u.ualigntyp = attr->aligntyp;
X***************
X*** 329,335 ****
X register int np;
X {
X register int i, x, tryct;
X! register struct clattr *attr = clx();
X
X for(i = 0; i < A_MAX; i++) {
X
X--- 329,335 ----
X register int np;
X {
X register int i, x, tryct;
X! register const struct clattr *attr = clx();
X
X for(i = 0; i < A_MAX; i++) {
X
X***************
X*** 398,405 ****
X
X int flag; /* +ve/-ve = gain/lose */
X {
X! register struct clattr *attr = clx();
X! register struct innate *abil = attr->abil;
X
X if(abil) {
X
X--- 398,405 ----
X
X int flag; /* +ve/-ve = gain/lose */
X {
X! register const struct clattr *attr = clx();
X! register const struct innate *abil = attr->abil;
X
X if(abil) {
X
X***************
X*** 428,434 ****
X
X int
X newhp() {
X! register struct clattr *attr = clx();
X int hp, conplus;
X
X if(u.ulevel == 0) {
X--- 428,434 ----
X
X int
X newhp() {
X! register const struct clattr *attr = clx();
X int hp, conplus;
X
X if(u.ulevel == 0) {
X*** src/Old/bones.c Sun Nov 19 12:33:21 1989
X--- src/bones.c Tue Oct 31 11:04:23 1989
X***************
X*** 71,76 ****
X--- 71,112 ----
X }
X #endif
X
X+ void
X+ resetobjs(ochain)
X+ struct obj *ochain;
X+ {
X+ struct obj *otmp;
X+
X+ for (otmp = ochain; otmp; otmp = otmp->nobj) {
X+ otmp->o_id = 0;
X+ if (((otmp->otyp != CORPSE && otmp->otyp != STATUE)
X+ || otmp->corpsenm < PM_ARCHEOLOGIST)
X+ #ifdef NAMED_ITEMS
X+ && !is_artifact(otmp)
X+ #endif
X+ )
X+ otmp->onamelth = 0;
X+ if(objects[otmp->otyp].oc_uses_known) otmp->known = 0;
X+ #ifdef TUTTI_FRUTTI
X+ if(otmp->otyp == SLIME_MOLD) goodfruit(otmp->spe);
X+ #endif
X+ otmp->dknown = otmp->bknown = 0;
X+ otmp->invlet = 0;
X+ #ifdef MAIL
X+ if (otmp->otyp == SCR_MAIL)
X+ otmp->spe = 1;
X+ #endif
X+ #ifdef POLYSELF
X+ if (otmp->otyp == EGG)
X+ otmp->spe = 0;
X+ #endif
X+ if(otmp->otyp == AMULET_OF_YENDOR && !otmp->spe) {
X+ otmp->spe = -1; /* no longer the actual amulet */
X+ curse(otmp);
X+ }
X+ }
X+ }
X+
X /* save bones and possessions of a deceased adventurer */
X void
X savebones(){
X***************
X*** 166,174 ****
X Strcpy(NAME(mtmp), plname);
X mtmp->mnamelth = strlen(plname);
X atl(u.ux, u.uy, mtmp->data->mlet);
X! Your("body rises from the dead as a%s %s...",
X! index(vowels, *(mons[u.ugrave_arise].mname)) ? "n" : "",
X! mons[u.ugrave_arise].mname);
X }
X mtmp->m_lev = (u.ulevel ? u.ulevel : 1);
X mtmp->mhp = mtmp->mhpmax = u.uhpmax;
X--- 202,209 ----
X Strcpy(NAME(mtmp), plname);
X mtmp->mnamelth = strlen(plname);
X atl(u.ux, u.uy, mtmp->data->mlet);
X! Your("body rises from the dead as %s...",
X! an(mons[u.ugrave_arise].mname));
X }
X mtmp->m_lev = (u.ulevel ? u.ulevel : 1);
X mtmp->mhp = mtmp->mhpmax = u.uhpmax;
X***************
X*** 175,191 ****
X mtmp->msleep = 1;
X if(u.ugold) mkgold(u.ugold, u.ux, u.uy);
X for(mtmp = fmon; mtmp; mtmp = mtmp->nmon){
X! for(otmp = mtmp->minvent; otmp; otmp = otmp->nobj) {
X! otmp->dknown = otmp->bknown = 0;
X! #ifdef TUTTI_FRUTTI
X! if(otmp->otyp == SLIME_MOLD) goodfruit(otmp->spe);
X! #endif
X! if(objects[otmp->otyp].oc_uses_known) otmp->known = 0;
X! if(otmp->otyp == AMULET_OF_YENDOR && !otmp->spe) {
X! otmp->spe = -1; /* no longer the actual amulet */
X! curse(otmp);
X! }
X! }
X mtmp->m_id = 0;
X mtmp->mlstmv = 0L;
X if(mtmp->mtame) mtmp->mtame = mtmp->mpeaceful = 0;
X--- 210,216 ----
X mtmp->msleep = 1;
X if(u.ugold) mkgold(u.ugold, u.ux, u.uy);
X for(mtmp = fmon; mtmp; mtmp = mtmp->nmon){
X! resetobjs(mtmp->minvent);
X mtmp->m_id = 0;
X mtmp->mlstmv = 0L;
X if(mtmp->mtame) mtmp->mtame = mtmp->mpeaceful = 0;
X***************
X*** 194,228 ****
X for(ttmp = ftrap; ttmp; ttmp = ttmp->ntrap)
X ttmp->tseen = 0;
X
X! for(otmp = fobj; otmp; otmp = otmp->nobj) {
X!
X! otmp->o_id = 0;
X! if (((otmp->otyp != CORPSE && otmp->otyp != STATUE)
X! || otmp->corpsenm < PM_ARCHEOLOGIST)
X! #ifdef NAMED_ITEMS
X! && !is_artifact(otmp)
X! #endif
X! )
X! otmp->onamelth = 0;
X! if(objects[otmp->otyp].oc_uses_known) otmp->known = 0;
X! #ifdef TUTTI_FRUTTI
X! if(otmp->otyp == SLIME_MOLD) goodfruit(otmp->spe);
X! #endif
X! otmp->dknown = otmp->bknown = 0;
X! otmp->invlet = 0;
X! #ifdef MAIL
X! if (otmp->otyp == SCR_MAIL)
X! otmp->spe = 1;
X! #endif
X! #ifdef POLYSELF
X! if (otmp->otyp == EGG)
X! otmp->spe = 0;
X! #endif
X! if(otmp->otyp == AMULET_OF_YENDOR && !otmp->spe) {
X! otmp->spe = -1; /* no longer the actual amulet */
X! curse(otmp);
X! }
X! }
X
X for(x=0; x<COLNO; x++) for(y=0; y<ROWNO; y++)
X levl[x][y].seen = levl[x][y].new = levl[x][y].scrsym = 0;
X--- 219,226 ----
X for(ttmp = ftrap; ttmp; ttmp = ttmp->ntrap)
X ttmp->tseen = 0;
X
X! resetobjs(fobj);
X! resetobjs(fcobj); /* let's (not) forget about these - KCD, 10/21/89 */
X
X for(x=0; x<COLNO; x++) for(y=0; y<ROWNO; y++)
X levl[x][y].seen = levl[x][y].new = levl[x][y].scrsym = 0;
X***************
X*** 242,248 ****
X (void)GetVol(&fileName,&oldvolume);
X (void)SetVol(0L, t->system.sysVRefNum);
X fileName[0] = (uchar)strlen(bones);
X! (void)strcpy((char *)&fileName[1],bones);
X
X if (er = Create(&fileName,0,CREATOR,BONES_TYPE))
X SysBeep(1);
X--- 240,246 ----
X (void)GetVol(&fileName,&oldvolume);
X (void)SetVol(0L, t->system.sysVRefNum);
X fileName[0] = (uchar)strlen(bones);
X! Strcpy((char *)&fileName[1],bones);
X
X if (er = Create(&fileName,0,CREATOR,BONES_TYPE))
X SysBeep(1);
X*** src/Old/cmd.c Sun Nov 19 12:33:50 1989
X--- src/cmd.c Fri Nov 17 19:31:26 1989
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)cmd.c 3.0 88/10/24
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)cmd.c 3.0 89/11/15
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 61,67 ****
X extern int dosave(); /**/
X extern int dosave0(); /**/
X extern int dosearch(); /**/
X! extern int dosearch0 P((int)); /**/
X extern int doidtrap(); /**/
X extern int dopay(); /**/
X extern int dosit(); /**/
X--- 61,67 ----
X extern int dosave(); /**/
X extern int dosave0(); /**/
X extern int dosearch(); /**/
X! extern int FDECL(dosearch0, (int)); /**/
X extern int doidtrap(); /**/
X extern int dopay(); /**/
X extern int dosit(); /**/
X***************
X*** 76,88 ****
X extern int dozap(); /**/
X #endif /* DUMB */
X
X! static int (*timed_occ_fn)();
X #ifdef POLYSELF
X! static int domonability();
X #endif
X
X /* Count down by decrementing multi */
X! static int
X timed_occupation() {
X (*timed_occ_fn)();
X if (multi > 0)
X--- 76,97 ----
X extern int dozap(); /**/
X #endif /* DUMB */
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int (*timed_occ_fn)();
X #ifdef POLYSELF
X! #ifndef OVERLAY
X! static
X! #endif
X! int domonability();
X #endif
X
X /* Count down by decrementing multi */
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X timed_occupation() {
X (*timed_occ_fn)();
X if (multi > 0)
X***************
X*** 173,179 ****
X return;
X }
X
X! /* A ch == 0 resets the saveq. Only save keystrokes when not
X * replaying a previous command.
X */
X void
X--- 182,188 ----
X return;
X }
X
X! /* A ch == 0 resets the saveq. Only save keystrokes when not
X * replaying a previous command.
X */
X void
X***************
X*** 190,200 ****
X }
X #endif /* REDO */
X
X! static int
X doextcmd() /* here after # - now read a full-word command */
X {
X char buf[BUFSZ];
X! register struct ext_func_tab *efp = extcmdlist;
X again:
X pline("# ");
X #ifdef COM_COMPL
X--- 199,212 ----
X }
X #endif /* REDO */
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X doextcmd() /* here after # - now read a full-word command */
X {
X char buf[BUFSZ];
X! register const struct ext_func_tab *efp = extcmdlist;
X again:
X pline("# ");
X #ifdef COM_COMPL
X***************
X*** 221,228 ****
X int
X doextlist() /* here after #? - now list all full-word commands */
X {
X! register struct ext_func_tab *efp = extcmdlist;
X! char buf[BUFSZ];
X
X set_pager(0);
X if(page_line("") ||
X--- 233,240 ----
X int
X doextlist() /* here after #? - now list all full-word commands */
X {
X! register const struct ext_func_tab *efp = extcmdlist;
X! char buf[BUFSZ];
X
X set_pager(0);
X if(page_line("") ||
X***************
X*** 229,235 ****
X page_line(" Extended Commands List") ||
X page_line("") ||
X page_line(" Press '#', then type (first letter only):") ||
X! page_line("")) goto quit;
X
X while(efp->ef_txt) {
X
X--- 241,247 ----
X page_line(" Extended Commands List") ||
X page_line("") ||
X page_line(" Press '#', then type (first letter only):") ||
X! page_line("")) goto quit;
X
X while(efp->ef_txt) {
X
X***************
X*** 245,251 ****
X }
X
X #ifdef POLYSELF
X! static int
X domonability()
X {
X if (can_breathe(uasmon)) return dobreathe();
X--- 257,266 ----
X }
X
X #ifdef POLYSELF
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X domonability()
X {
X if (can_breathe(uasmon)) return dobreathe();
X***************
X*** 255,260 ****
X--- 270,276 ----
X else if (is_were(uasmon)) return dosummon();
X else if (webmaker(uasmon)) return dospinweb();
X else if (is_hider(uasmon)) return dohide();
X+ else if (u.usym == S_UNICORN) return use_unicorn_horn((struct obj *)0);
X else if (u.umonnum >= 0)
X pline("Any special ability you may have is purely reflexive.");
X else You("don't have a special ability!");
X***************
X*** 263,269 ****
X #endif
X
X #ifdef WIZARD
X! static int
X wiz_wish() /* Unlimited wishes for wizard mode by Paul Polderman */
X {
X if (wizard) makewish();
X--- 279,288 ----
X #endif
X
X #ifdef WIZARD
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X wiz_wish() /* Unlimited wishes for wizard mode by Paul Polderman */
X {
X if (wizard) makewish();
X***************
X*** 271,277 ****
X return 0;
X }
X
X! static int
X wiz_identify()
X {
X struct obj *obj;
X--- 290,299 ----
X return 0;
X }
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X wiz_identify()
X {
X struct obj *obj;
X***************
X*** 287,293 ****
X return 0;
X }
X
X! static int
X wiz_map()
X {
X if (wizard) do_mapping();
X--- 309,318 ----
X return 0;
X }
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X wiz_map()
X {
X if (wizard) do_mapping();
X***************
X*** 295,301 ****
X return 0;
X }
X
X! static int
X wiz_genesis()
X {
X if (wizard) (void) create_particular();
X--- 320,329 ----
X return 0;
X }
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X wiz_genesis()
X {
X if (wizard) (void) create_particular();
X***************
X*** 303,309 ****
X return 0;
X }
X
X! static int
X wiz_where()
X {
X if (wizard) {
X--- 331,340 ----
X return 0;
X }
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X wiz_where()
X {
X if (wizard) {
X***************
X*** 310,316 ****
X pline("Medusa:%d Wiz:%d Big:%d", medusa_level, wiz_level, bigroom_level);
X #ifdef STRONGHOLD
X # ifdef MUSIC
X! pline("Castle:%d (tune %s) Tower:%d-%d",
X stronghold_level, tune, tower_level, tower_level+2);
X # else
X pline("Castle:%d Tower:%d-%d",
X--- 341,347 ----
X pline("Medusa:%d Wiz:%d Big:%d", medusa_level, wiz_level, bigroom_level);
X #ifdef STRONGHOLD
X # ifdef MUSIC
X! pline("Castle:%d (tune %s) Tower:%d-%d",
X stronghold_level, tune, tower_level, tower_level+2);
X # else
X pline("Castle:%d Tower:%d-%d",
X***************
X*** 328,334 ****
X return 0;
X }
X
X! static int
X wiz_detect()
X {
X if(wizard) (void) findit();
X--- 359,368 ----
X return 0;
X }
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X wiz_detect()
X {
X if(wizard) (void) findit();
X***************
X*** 336,342 ****
X return 0;
X }
X
X! static int
X wiz_level_tele()
X {
X if (wizard) level_tele();
X--- 370,379 ----
X return 0;
X }
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X wiz_level_tele()
X {
X if (wizard) level_tele();
X***************
X*** 435,441 ****
X }
X
X #if defined(WIZARD) || defined(EXPLORE_MODE)
X! static int
X wiz_attributes()
X {
X if (wizard || discover)
X--- 472,481 ----
X }
X
X #if defined(WIZARD) || defined(EXPLORE_MODE)
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X wiz_attributes()
X {
X if (wizard || discover)
X***************
X*** 446,453 ****
X--- 486,497 ----
X }
X #endif /* WIZARD || EXPLORE_MODE */
X
X+ #ifndef M
X #define M(c) (0x80 | (c))
X+ #endif
X+ #ifndef C
X #define C(c) (0x1f & (c))
X+ #endif
X const struct func_tab cmdlist[]={
X {C('d'), dokick}, /* "D" is for door!...? */
X #ifdef WIZARD
X***************
X*** 616,622 ****
X rhack(cmd)
X register char *cmd;
X {
X! register struct func_tab *tlist = cmdlist;
X boolean firsttime = FALSE;
X register int res;
X
X--- 660,666 ----
X rhack(cmd)
X register char *cmd;
X {
X! register const struct func_tab *tlist = cmdlist;
X boolean firsttime = FALSE;
X register int res;
X
X***************
X*** 766,772 ****
X movecmd(sym) /* also sets u.dz, but returns false for <> */
X char sym;
X {
X! register char *dp, *sdp = flags.num_pad ? ndir : sdir;
X
X u.dz = 0;
X if(!(dp = index(sdp, sym))) return 0;
X--- 810,817 ----
X movecmd(sym) /* also sets u.dz, but returns false for <> */
X char sym;
X {
X! register char *dp;
X! register const char *sdp = flags.num_pad ? ndir : sdir;
X
X u.dz = 0;
X if(!(dp = index(sdp, sym))) return 0;
X***************
X*** 773,778 ****
X--- 818,829 ----
X u.dx = xdir[dp-sdp];
X u.dy = ydir[dp-sdp];
X u.dz = zdir[dp-sdp];
X+ #ifdef POLYSELF
X+ if (u.dx && u.dy && u.umonnum == PM_GRID_BUG) {
X+ u.dx = u.dy = 0;
X+ return 0;
X+ }
X+ #endif
X return !u.dz;
X }
X
X***************
X*** 804,810 ****
X void
X confdir()
X {
X! register int x = rn2(8);
X u.dx = xdir[x];
X u.dy = ydir[x];
X return;
X--- 855,865 ----
X void
X confdir()
X {
X! register int x =
X! #ifdef POLYSELF
X! (u.umonnum == PM_GRID_BUG) ? 2*rn2(4) :
X! #endif
X! rn2(8);
X u.dx = xdir[x];
X u.dy = ydir[x];
X return;
X*** src/Old/decl.c Sun Nov 19 12:35:05 1989
X--- src/decl.c Sat Nov 4 13:40:18 1989
X***************
X*** 81,86 ****
X--- 81,91 ----
X #endif
X int CO = 0, LI = 0; /* set up in termcap.c: usually COLNO and ROWNO+3 */
X
X+ #ifdef CLIPPING
X+ boolean clipping; /* clipping on? */
X+ int clipx, clipy, clipxmax, clipymax;
X+ #endif
X+
X #ifdef TEXTCOLOR
X char *hilites[MAXCOLORS]; /* terminal escapes for the various colors */
X #endif
X***************
X*** 155,161 ****
X *uarmc = 0, *uarmh = 0, *uarms = 0, *uarmg = 0, *uarmf = 0, *uamul = 0,
X *uright = 0, *uleft = 0, *ublindf = 0, *uchain = 0, *uball = 0;
X
X! const struct symbols defsyms = {
X ' ', /* stone */
X '|', /* vwall */
X '-', /* hwall */
X--- 160,166 ----
X *uarmc = 0, *uarmh = 0, *uarms = 0, *uarmg = 0, *uarmf = 0, *uamul = 0,
X *uright = 0, *uleft = 0, *ublindf = 0, *uchain = 0, *uball = 0;
X
X! symbol_array defsyms = {
X ' ', /* stone */
X '|', /* vwall */
X '-', /* hwall */
X***************
X*** 172,178 ****
X '-', /* hbeam */
X '\\', /* lslant */
X '/', /* rslant */
X! '+', /* door */
X '.', /* room */
X '#', /* corr */
X '<', /* upstair */
X--- 177,186 ----
X '-', /* hbeam */
X '\\', /* lslant */
X '/', /* rslant */
X! '.', /* ndoor */
X! '-', /* vodoor */
X! '|', /* hodoor */
X! '+', /* cdoor */
X '.', /* room */
X '#', /* corr */
X '<', /* upstair */
X***************
X*** 189,198 ****
X '#', /* dbvwall */ /* used ifdef STRONGHOLD */
X '#', /* dbhwall */ /* used ifdef STRONGHOLD */
X };
X! struct symbols showsyms = DUMMY; /* will contain the symbols actually used */
X #ifdef REINCARNATION
X! struct symbols savesyms = DUMMY;
X #endif
X
X #ifdef SPELLS
X struct spell spl_book[MAXSPELL + 1] = DUMMY;
X--- 197,243 ----
X '#', /* dbvwall */ /* used ifdef STRONGHOLD */
X '#', /* dbhwall */ /* used ifdef STRONGHOLD */
X };
X! symbol_array showsyms = DUMMY; /* will contain the symbols actually used */
X #ifdef REINCARNATION
X! symbol_array savesyms = DUMMY;
X! #endif
X!
X! char *explainsyms[MAXPCHARS] = {
X! "a dark part of a room", "a wall", "a wall",
X! "a wall", "a wall", "a wall",
X! "a wall", "a wall", "a wall",
X! "a wall", "a wall", "a wall",
X! "a wall", "a wall", "a wall",
X! "a wall", "a doorway", "an open door",
X! "an open door", "a closed door", "the floor of a room",
X! "a corridor", "a staircase up", "a staircase down",
X! "a trap", "a web", "a water filled area",
X! #ifdef FOUNTAINS
X! "a fountain",
X! #else
X! "",
X! #endif
X! #ifdef SINKS
X! "a sink",
X! #else
X! "",
X! #endif
X! #ifdef THRONES
X! "an opulent throne",
X! #else
X! "",
X! #endif
X! #ifdef ALTARS
X! "an altar",
X! #else
X! "",
X! #endif
X! #ifdef STRONGHOLD
X! "a ladder up", "a ladder down", "a drawbridge", "a drawbridge"
X! #else
X! "", "", "", ""
X #endif
X+ };
X
X #ifdef SPELLS
X struct spell spl_book[MAXSPELL + 1] = DUMMY;
X*** src/Old/demon.c Sun Nov 19 12:35:29 1989
X--- src/demon.c Tue Oct 31 19:26:49 1989
X***************
X*** 8,16 ****
X dsummon(ptr) /* summon demon */
X register struct permonst *ptr;
X {
X register int dtype, cnt = 0;
X
X- #ifdef HARD
X if(is_dprince(ptr) || (ptr == &mons[PM_WIZARD_OF_YENDOR])) {
X
X dtype = (!rn2(20)) ? dprince() : (!rn2(4)) ? dlord() : ndemon();
X--- 8,16 ----
X dsummon(ptr) /* summon demon */
X register struct permonst *ptr;
X {
X+ #ifdef INFERNO
X register int dtype, cnt = 0;
X
X if(is_dprince(ptr) || (ptr == &mons[PM_WIZARD_OF_YENDOR])) {
X
X dtype = (!rn2(20)) ? dprince() : (!rn2(4)) ? dlord() : ndemon();
X***************
X*** 23,37 ****
X
X } else if(is_ndemon(ptr)) {
X
X! dtype = (!rn2(20)) ? dlord() : ndemon();
X cnt = 1;
X }
X
X if(!dtype) return;
X- #else
X- dtype = PM_DEMON;
X- cnt = 1;
X- #endif
X
X while(cnt > 0) {
X
X--- 23,33 ----
X
X } else if(is_ndemon(ptr)) {
X
X! dtype = (!rn2(20)) ? dlord() : (!rn2(6)) ? ndemon() : monsndx(ptr);
X cnt = 1;
X }
X
X if(!dtype) return;
X
X while(cnt > 0) {
X
X***************
X*** 38,47 ****
X (void)makemon(&mons[dtype], u.ux, u.uy);
X cnt--;
X }
X return;
X }
X
X! #ifdef HARD
X #define Athome (Inhell && !mtmp->cham)
X
X int
X--- 34,46 ----
X (void)makemon(&mons[dtype], u.ux, u.uy);
X cnt--;
X }
X+ #else
X+ (void)makemon(&mons[PM_DEMON], u.ux, u.uy);
X+ #endif
X return;
X }
X
X! #ifdef INFERNO
X #define Athome (Inhell && !mtmp->cham)
X
X int
X***************
X*** 105,111 ****
X }
X #endif
X
X! #if defined(HARD) || (defined(ALTARS) && defined(THEOLOGY))
X long
X bribe(mtmp)
X struct monst *mtmp;
X--- 104,110 ----
X }
X #endif
X
X! #if defined(INFERNO) || (defined(ALTARS) && defined(THEOLOGY))
X long
X bribe(mtmp)
X struct monst *mtmp;
X***************
X*** 137,143 ****
X
X int
X dprince() {
X! #ifdef HARD
X int tryct, pm;
X
X for(tryct = 0; tryct < 20; tryct++) {
X--- 136,142 ----
X
X int
X dprince() {
X! #ifdef INFERNO
X int tryct, pm;
X
X for(tryct = 0; tryct < 20; tryct++) {
X***************
X*** 153,159 ****
X
X int
X dlord() {
X! #ifdef HARD
X int tryct, pm;
X
X for(tryct = 0; tryct < 20; tryct++) {
X--- 152,158 ----
X
X int
X dlord() {
X! #ifdef INFERNO
X int tryct, pm;
X
X for(tryct = 0; tryct < 20; tryct++) {
X***************
X*** 169,175 ****
X
X int
X ndemon() {
X! #ifdef HARD
X int tryct;
X struct permonst *ptr;
X
X--- 168,174 ----
X
X int
X ndemon() {
X! #ifdef INFERNO
X int tryct;
X struct permonst *ptr;
X
X*** src/Old/do.c Sun Nov 19 12:35:45 1989
X--- src/do.c Fri Nov 17 19:31:29 1989
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)do.c 3.0 89/06/12
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)do.c 3.0 89/11/15
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 12,18 ****
X extern boolean level_exists[];
X #endif
X
X! static int drop P((struct obj *));
X
X static const char drop_types[] = { '0', GOLD_SYM, '#', 0 };
X
X--- 12,20 ----
X extern boolean level_exists[];
X #endif
X
X! #ifndef OVERLAY
X! static int FDECL(drop, (struct obj *));
X! #endif
X
X static const char drop_types[] = { '0', GOLD_SYM, '#', 0 };
X
X***************
X*** 31,37 ****
X int x,y;
X {
X struct trap *t = t_at(x,y);
X! boolean pool = IS_POOL(levl[x][y].typ);
X
X if(obj->otyp == BOULDER && (pool ||
X (t && (t->ttyp==PIT || t->ttyp==SPIKED_PIT || t->ttyp==TRAPDOOR)))) {
X--- 33,39 ----
X int x,y;
X {
X struct trap *t = t_at(x,y);
X! boolean pool = is_pool(x,y);
X
X if(obj->otyp == BOULDER && (pool ||
X (t && (t->ttyp==PIT || t->ttyp==SPIKED_PIT || t->ttyp==TRAPDOOR)))) {
X***************
X*** 86,97 ****
X {
X if (Blind) return;
X if (obj->blessed || obj->cursed) {
X! register const char *fcolor = Hallucination ? hcolor() :
X! obj->blessed ? amber : black;
X!
X! pline("There is %s %s flash as %s hit%s the altar.",
X! index(vowels, *fcolor) ? "an" : "a",
X! fcolor,
X doname(obj),
X (obj->quan==1) ? "s" : "");
X if (!Hallucination) obj->bknown = 1;
X--- 88,96 ----
X {
X if (Blind) return;
X if (obj->blessed || obj->cursed) {
X! pline("There is %s flash as %s hit%s the altar.",
X! an(Hallucination ? hcolor() :
X! obj->blessed ? amber : black),
X doname(obj),
X (obj->quan==1) ? "s" : "");
X if (!Hallucination) obj->bknown = 1;
X***************
X*** 125,131 ****
X You("drop %s down the drain.", doname(obj));
X switch(obj->otyp) { /* effects that can be noticed without eyes */
X case RIN_SEARCHING:
X! You("thought your %s got lost in the sink, but there it is!",
X xname(obj));
X dropx(obj);
X trycall(obj);
X--- 124,130 ----
X You("drop %s down the drain.", doname(obj));
X switch(obj->otyp) { /* effects that can be noticed without eyes */
X case RIN_SEARCHING:
X! You("thought your %s got lost in the sink, but there it is!",
X xname(obj));
X dropx(obj);
X trycall(obj);
X***************
X*** 181,192 ****
X break;
X case RIN_HUNGER:
X ideed = FALSE;
X! for(otmp=fobj; otmp; otmp=otmp2) {
X! otmp2 = otmp->nobj;
X! if(otmp->ox == u.ux && otmp->oy == u.uy)
X! if(otmp != uball && otmp != uchain) {
X! pline("Suddenly, %s vanishes from the sink!",
X! doname(otmp));
X delobj(otmp);
X ideed = TRUE;
X }
X--- 180,190 ----
X break;
X case RIN_HUNGER:
X ideed = FALSE;
X! for(otmp = level.objects[u.ux][u.uy]; otmp; otmp = otmp2) {
X! otmp2 = otmp->nexthere;
X! if(otmp != uball && otmp != uchain) {
X! pline("Suddenly, %s vanishes from the sink!",
X! doname(otmp));
X delobj(otmp);
X ideed = TRUE;
X }
X***************
X*** 269,275 ****
X return(TRUE);
X }
X
X! static int
X drop(obj) register struct obj *obj; {
X if(!obj) return(0);
X if(obj->olet == GOLD_SYM) { /* pseudo object */
X--- 267,276 ----
X return(TRUE);
X }
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X drop(obj) register struct obj *obj; {
X if(!obj) return(0);
X if(obj->olet == GOLD_SYM) { /* pseudo object */
X***************
X*** 501,508 ****
X if (otmp == uwep)
X setuwep((struct obj *)0);
X if ((otmp != uwep) && (canletgo(otmp, ""))) {
X! Your("%s left behind on the stairs.",
X! aobjnam(otmp, "get"));
X dropx(otmp);
X }
X }
X--- 502,509 ----
X if (otmp == uwep)
X setuwep((struct obj *)0);
X if ((otmp != uwep) && (canletgo(otmp, ""))) {
X! Your("%s you down the stairs.",
X! aobjnam(otmp, "follow"));
X dropx(otmp);
X }
X }
X***************
X*** 561,569 ****
X {
X register int fd;
X register boolean up = (newlevel < dlevel);
X- boolean stair_fall = (at_stairs && !up && ((inv_weight() + 5 > 0) ||
X- Punished || Fumbling));
X- boolean stair_drag = FALSE;
X
X #ifdef ENDGAME
X if(dlevel == ENDLEVEL) return; /* To be on the safe side.. */
X--- 562,567 ----
X***************
X*** 689,702 ****
X }
X #endif
X if(Punished) unplacebc();
X- if (stair_fall) {
X- #ifdef STRONGHOLD
X- You("fall down the %s.",
X- !at_ladder ? "stairs" : "ladder");
X- #else
X- You("fall down the stairs.");
X- #endif
X- }
X u.utrap = 0; /* needed in level_tele */
X u.ustuck = 0; /* idem */
X keepdogs();
X--- 687,692 ----
X***************
X*** 723,733 ****
X if (newlevel == rogue_level || dlevel == rogue_level) {
X /* No graphics characters on Rogue levels */
X if (dlevel != rogue_level) {
X! savesyms = showsyms;
X! showsyms = defsyms;
X }
X if (newlevel != rogue_level)
X! showsyms = savesyms;
X }
X #endif
X dlevel = newlevel;
X--- 713,728 ----
X if (newlevel == rogue_level || dlevel == rogue_level) {
X /* No graphics characters on Rogue levels */
X if (dlevel != rogue_level) {
X! (void) memcpy((genericptr_t)savesyms,
X! (genericptr_t)showsyms, sizeof savesyms);
X! (void) memcpy((genericptr_t)showsyms,
X! (genericptr_t)defsyms, sizeof showsyms);
X! showsyms[S_vodoor] = showsyms[S_hodoor] =
X! showsyms[S_ndoor] = '+';
X }
X if (newlevel != rogue_level)
X! (void) memcpy((genericptr_t)showsyms,
X! (genericptr_t)savesyms, sizeof showsyms);
X }
X #endif
X dlevel = newlevel;
X***************
X*** 806,814 ****
X u.uy = yupladder;
X }
X #endif
X! if(stair_fall) {
X if (Punished) {
X! if (stair_drag)
X litter();
X if (carried(uball)) {
X if (uwep == uball)
X--- 801,816 ----
X u.uy = yupladder;
X }
X #endif
X! if(at_stairs && !up && ((inv_weight() + 5 > 0) ||
X! Punished || Fumbling)) {
X! #ifdef STRONGHOLD
X! You("fall down the %s.",
X! !at_ladder ? "stairs" : "ladder");
X! #else
X! You("fall down the stairs.");
X! #endif
X if (Punished) {
X! if (drag_down())
X litter();
X if (carried(uball)) {
X if (uwep == uball)
X***************
X*** 904,910 ****
X--- 906,914 ----
X return(1); /* Do nothing, but let other things happen */
X }
X
X+ #ifndef OVERLAY
X static
X+ #endif
X int
X wipeoff() {
X if(u.ucreamed < 4) u.ucreamed = 0;
X*** src/Old/do_name.c Sun Nov 19 12:36:26 1989
X--- src/do_name.c Wed Nov 8 22:56:28 1989
X***************
X*** 1,4 ****
X! /* SCCS Id: @(#)do_name.c 3.0 88/11/24
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X--- 1,4 ----
X! /* SCCS Id: @(#)do_name.c 3.0 89/11/08
X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X /* NetHack may be freely redistributed. See license for details. */
X
X***************
X*** 32,42 ****
X int force; char *goal;
X {
X register int cx, cy, i, c;
X! char *sdp = flags.num_pad ? ndir : sdir;
X if(flags.verbose) pline("(For instructions type a ?)");
X cx = cc->x;
X cy = cc->y;
X curs(cx,cy+2);
X while((c = readchar()) != '.'){
X for(i=0; i<8; i++) if(sdp[i] == c){
X if(1 <= cx + xdir[i] && cx + xdir[i] <= COLNO)
X--- 32,47 ----
X int force; char *goal;
X {
X register int cx, cy, i, c;
X! const char *sdp = flags.num_pad ? ndir : sdir;
X if(flags.verbose) pline("(For instructions type a ?)");
X cx = cc->x;
X cy = cc->y;
X+ #ifdef CLIPPING
X+ cliparound(cx, cy);
X+ (void) win_curs(cx, cy);
X+ #else
X curs(cx,cy+2);
X+ #endif
X while((c = readchar()) != '.'){
X for(i=0; i<8; i++) if(sdp[i] == c){
X if(1 <= cx + xdir[i] && cx + xdir[i] <= COLNO)
X***************
X*** 63,69 ****
X--- 68,79 ----
X return;
X }
X nxtc: ;
X+ #ifdef CLIPPING
X+ cliparound(cx, cy);
X+ (void) win_curs(cx, cy);
X+ #else
X curs(cx,cy+2);
X+ #endif
X }
X cc->x = cx;
X cc->y = cy;
X***************
X*** 112,118 ****
X if(!mtmp->mtame) {
X pline("%s gets %sangry!", Monnam(mtmp),
X mtmp->mpeaceful ? "" : "very ");
X! mtmp->mpeaceful = mtmp->msleep = 0;
X }
X return(0);
X }
X--- 122,129 ----
X if(!mtmp->mtame) {
X pline("%s gets %sangry!", Monnam(mtmp),
X mtmp->mpeaceful ? "" : "very ");
X! mtmp->mpeaceful = 0;
X! mtmp->msleep = 0;
X }
X return(0);
X }
X***************
X*** 132,140 ****
X }
X
X /*
X! * This routine changes the address of obj . Be careful not to call it
X * when there might be pointers around in unknown places. For now: only
X! * when obj is in the inventory.
X */
X static
X void
X--- 143,151 ----
X }
X
X /*
X! * This routine changes the address of obj. Be careful not to call it
X * when there might be pointers around in unknown places. For now: only
X! * when obj is in the inventory.
X */
X static
X void
X***************
X*** 168,174 ****
X char *buf;
X register int ininv;
X {
X! register struct obj *otmp, *otmp2;
X register int lth;
X
X lth = *buf ? strlen(buf)+1 : 0;
X--- 179,185 ----
X char *buf;
X register int ininv;
X {
X! register struct obj *otmp, *otmp2, *contents;
X register int lth;
X
X lth = *buf ? strlen(buf)+1 : 0;
X***************
X*** 210,215 ****
X--- 221,230 ----
X }
X }
X }
X+ if (Is_container(obj)) {
X+ for(contents=fcobj; contents; contents=contents->nobj)
X+ if(contents->cobj==obj) contents->cobj = otmp2;
X+ }
X /* obfree(obj, otmp2); /* now unnecessary: no pointers on bill */
X free((genericptr_t) obj); /* let us hope nobody else saved a pointer */
X return otmp2;
X***************
X*** 272,281 ****
X if (otemp.corpsenm) { /* kludge, meaning it's sink water */
X pline("Call a stream of %s fluid: ",
X objects[otemp.otyp].oc_descr);
X! } else {
X! str = xname(&otemp);
X! pline("Call %s %s: ", index(vowels,*str) ? "an" : "a", str);
X! }
X getlin(buf);
X clrlin();
X if(!*buf || *buf == '\033')
X--- 287,294 ----
X if (otemp.corpsenm) { /* kludge, meaning it's sink water */
X pline("Call a stream of %s fluid: ",
X objects[otemp.otyp].oc_descr);
X! } else
X! pline("Call %s: ", an(xname(&otemp)));
X getlin(buf);
X clrlin();
X if(!*buf || *buf == '\033')
X***************
X*** 345,356 ****
X
X switch(mtmp->data->mlet) {
X case S_GHOST:
X! { register char *gn = (char *) mtmp->mextra;
X if(!*gn) { /* might also look in scorefile */
X gn = ghostnames[rn2(SIZE(ghostnames))];
X Strcpy((char *) mtmp->mextra, !rn2(5) ? plname : gn);
X }
X! Sprintf(buf, "%s's ghost", gn);
X }
X break;
X default:
X--- 358,369 ----
X
X switch(mtmp->data->mlet) {
X case S_GHOST:
X! { register const char *gn = (const char *) mtmp->mextra;
X if(!*gn) { /* might also look in scorefile */
X gn = ghostnames[rn2(SIZE(ghostnames))];
X Strcpy((char *) mtmp->mextra, !rn2(5) ? plname : gn);
X }
X! Sprintf(buf, "%s's ghost", (char *) mtmp->mextra);
X }
X break;
X default:
X***************
X*** 472,479 ****
X int name;
X
X do {
X! name = rn2(PM_CHAMELEON);
X! /* chameleon: last monster before player classes */
X } while(type_is_pname(&mons[name]) || (mons[name].geno & G_NOGEN));
X return(mons[name].mname);
X }
X--- 485,492 ----
X int name;
X
X do {
X! name = rn2(PM_ARCHEOLOGIST);
X! /* archeologist: first player class */
X } while(type_is_pname(&mons[name]) || (mons[name].geno & G_NOGEN));
X return(mons[name].mname);
X }
X*** src/Old/do_wear.c Sun Nov 19 12:36:52 1989
X--- src/do_wear.c Sat Nov 11 17:29:31 1989
X***************
X*** 24,35 ****
X /* for items that involve no delay */
X static void
X on_msg(otmp) register struct obj *otmp; {
X- register char *bp = xname(otmp);
X- char buf[BUFSZ];
X-
X- setan(bp, buf);
X if(flags.verbose)
X! You("are now wearing %s.", buf);
X }
X
X boolean
X--- 24,31 ----
X /* for items that involve no delay */
X static void
X on_msg(otmp) register struct obj *otmp; {
X if(flags.verbose)
X! You("are now wearing %s.", an(xname(otmp)));
X }
X
X boolean
X***************
X*** 72,78 ****
X * The Type_off() functions call setworn() themselves.
X */
X
X! static int
X Boots_on() {
X long oldprop =
X u.uprops[objects[uarmf->otyp].oc_oprop].p_flgs & ~(WORN_BOOTS | TIMEOUT);
X--- 68,77 ----
X * The Type_off() functions call setworn() themselves.
X */
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X Boots_on() {
X long oldprop =
X u.uprops[objects[uarmf->otyp].oc_oprop].p_flgs & ~(WORN_BOOTS | TIMEOUT);
X***************
X*** 220,226 ****
X return 0;
X }
X
X! static int
X Helmet_on() {
X switch(uarmh->otyp) {
X case FEDORA:
X--- 219,228 ----
X return 0;
X }
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X Helmet_on() {
X switch(uarmh->otyp) {
X case FEDORA:
X***************
X*** 288,294 ****
X return 0;
X }
X
X! static int
X Gloves_on() {
X long oldprop =
X u.uprops[objects[uarmg->otyp].oc_oprop].p_flgs & ~(WORN_GLOVES | TIMEOUT);
X--- 290,299 ----
X return 0;
X }
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X Gloves_on() {
X long oldprop =
X u.uprops[objects[uarmg->otyp].oc_oprop].p_flgs & ~(WORN_GLOVES | TIMEOUT);
X***************
X*** 338,343 ****
X--- 343,356 ----
X default: impossible("Unknown type of gloves (%d)", uarmg->otyp);
X }
X setworn((struct obj *)0, W_ARMG);
X+ if (uwep && uwep->otyp == CORPSE && uwep->corpsenm == PM_COCKATRICE) {
X+ /* Prevent wielding cockatrice when not wearing gloves */
X+ You("wield the cockatrice corpse in your bare %s.",
X+ makeplural(body_part(HAND)));
X+ You("turn to stone...");
X+ killer = "cockatrice corpse";
X+ done(STONING);
X+ }
X return 0;
X }
X
X***************
X*** 385,391 ****
X /* This must be done in worn.c, because one of the possible intrinsics conferred
X * is fire resistance, and we have to immediately set HFire_resistance in worn.c
X * since worn.c will check it before returning.
X! static int
X Armor_on()
X {
X return 0;
X--- 398,407 ----
X /* This must be done in worn.c, because one of the possible intrinsics conferred
X * is fire resistance, and we have to immediately set HFire_resistance in worn.c
X * since worn.c will check it before returning.
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X Armor_on()
X {
X return 0;
X***************
X*** 691,696 ****
X--- 707,722 ----
X /* if (uarms) (void) Shield_on(); */
X }
X
X+ boolean
X+ donning(otmp)
X+ register struct obj *otmp;
X+ {
X+ return (otmp == uarmf && afternmv == Boots_on)
X+ || (otmp == uarmh && afternmv == Helmet_on)
X+ || (otmp == uarmg && afternmv == Gloves_on)
X+ /* || (otmp == uarm && afternmv == Armor_on)*/;
X+ }
X+
X static const char clothes[] = {ARMOR_SYM, 0};
X static const char accessories[] = {RING_SYM, AMULET_SYM, TOOL_SYM, 0};
X
X***************
X*** 1118,1123 ****
X--- 1144,1151 ----
X return(1);
X }
X
X+ #define ARM_BONUS(obj) ((10 - objects[obj->otyp].a_ac) + obj->spe)
X+
X void
X find_ac() {
X register int uac = 10;
X***************
X*** 1227,1233 ****
X }
X }
X
X! static int
X select_off(otmp)
X register struct obj *otmp;
X {
X--- 1255,1264 ----
X }
X }
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X select_off(otmp)
X register struct obj *otmp;
X {
X***************
X*** 1332,1338 ****
X return(otmp);
X }
X
X! static int
X take_off() {
X
X register int i;
X--- 1363,1372 ----
X return(otmp);
X }
X
X! #ifndef OVERLAY
X! static
X! #endif
X! int
X take_off() {
X
X register int i;
END_OF_FILE
if test 53756 -ne `wc -c <'patches06e'`; then
echo shar: \"'patches06e'\" unpacked with wrong size!
fi
# end of 'patches06e'
fi
echo shar: End of archive 8 \(of 15\).
cp /dev/null ark8isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 15 archives.
rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0