billr@saab.CNA.TEK.COM (Bill Randle) (11/28/89)
Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu> Posting-number: Volume 8, Issue 62 Archive-name: NetHack3/Patch6i 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 9 (of 15)." # Contents: patches06i # Wrapped by billr@saab on Wed Nov 22 11:10:41 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'patches06i' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'patches06i'\" else echo shar: Extracting \"'patches06i'\" \(57020 characters\) sed "s/^X//" >'patches06i' <<'END_OF_FILE' X*** src/Old/mondata.c Sun Nov 19 13:46:38 1989 X--- src/mondata.c Sun Nov 19 09:25:29 1989 X*************** X*** 1,4 **** X! /* SCCS Id: @(#)mondata.c 3.0 89/01/10 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: @(#)mondata.c 3.0 89/11/19 X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ X /* NetHack may be freely redistributed. See license for details. */ X X*************** X*** 61,68 **** X breakarm(ptr) /* creature will break out of armor */ X register struct permonst *ptr; X { X! return(bigmonst(ptr) || (!verysmall(ptr) && !humanoid(ptr)) X! #ifdef HARD X || ptr == &mons[PM_MARILITH] X #endif X ); X--- 61,68 ---- X breakarm(ptr) /* creature will break out of armor */ X register struct permonst *ptr; X { X! return(bigmonst(ptr) || (ptr->msize > MZ_SMALL && !humanoid(ptr)) X! #ifdef INFERNO X || ptr == &mons[PM_MARILITH] X #endif X ); X*************** X*** 77,83 **** X sliparm(ptr) /* creature will slide out of armor */ X register struct permonst *ptr; X { X! return(!bigmonst(ptr) && (verysmall(ptr) || ptr == &mons[PM_GHOST])); X } X #endif X X--- 77,84 ---- X sliparm(ptr) /* creature will slide out of armor */ X register struct permonst *ptr; X { X! return(ptr->msize < MZ_LARGE && X! (ptr->msize <= MZ_SMALL || ptr == &mons[PM_GHOST])); X } X #endif X X*************** X*** 162,168 **** X else if (!strncmp(str, "an ", 3)) str += 3; X X /* Some irregular plurals */ X! #ifdef HARD X if (!strncmp(str, "incubi", 6)) return PM_INCUBUS; X if (!strncmp(str, "succubi", 7)) return PM_SUCCUBUS; X #endif X--- 163,169 ---- X else if (!strncmp(str, "an ", 3)) str += 3; X X /* Some irregular plurals */ X! #ifdef INFERNO X if (!strncmp(str, "incubi", 6)) return PM_INCUBUS; X if (!strncmp(str, "succubi", 7)) return PM_SUCCUBUS; X #endif X*************** X*** 234,240 **** X if (mtmp->data->mflags1 & M1_FEM) return 1; X if (mtmp->data == &mons[PM_CAVEMAN] X || mtmp->data == &mons[PM_PRIEST] X! #ifdef HARD X || mtmp->data == &mons[PM_INCUBUS] X #endif X ) return 0; X--- 235,241 ---- X if (mtmp->data->mflags1 & M1_FEM) return 1; X if (mtmp->data == &mons[PM_CAVEMAN] X || mtmp->data == &mons[PM_PRIEST] X! #ifdef INFERNO X || mtmp->data == &mons[PM_INCUBUS] X #endif X ) return 0; X*************** X*** 327,338 **** X X int X bigmonst(ptr) struct permonst *ptr; { X! return((ptr->mflags1 & M1_BIG) != 0L); X } X X int X verysmall(ptr) struct permonst *ptr; { X! return((ptr->mflags1 & M1_VSMALL) != 0L); X } X X int X--- 328,339 ---- X X int X bigmonst(ptr) struct permonst *ptr; { X! return(ptr->msize >= MZ_LARGE); X } X X int X verysmall(ptr) struct permonst *ptr; { X! return(ptr->msize < MZ_SMALL); X } X X int X*************** X*** 569,586 **** X return((ptr->mflags1 & M1_PRINCE) != 0L); X } X X! # ifdef HARD X int X is_ndemon(ptr) struct permonst *ptr; { X return(is_demon(ptr) && X (ptr->mflags1 & (M1_LORD | M1_PRINCE)) == 0L); X } X! # else /* HARD */ X int X is_ndemon(ptr) struct permonst *ptr; { X return(ptr == &mons[PM_DEMON]); X } X! # endif /* HARD */ X X int X is_dlord(ptr) struct permonst *ptr; { X--- 570,587 ---- X return((ptr->mflags1 & M1_PRINCE) != 0L); X } X X! # ifdef INFERNO X int X is_ndemon(ptr) struct permonst *ptr; { X return(is_demon(ptr) && X (ptr->mflags1 & (M1_LORD | M1_PRINCE)) == 0L); X } X! # else X int X is_ndemon(ptr) struct permonst *ptr; { X return(ptr == &mons[PM_DEMON]); X } X! # endif X X int X is_dlord(ptr) struct permonst *ptr; { X*** src/Old/monmove.c Sun Nov 19 13:47:18 1989 X--- src/monmove.c Wed Nov 8 22:56:55 1989 X*************** X*** 43,50 **** X !(here->diggable & W_NONDIGGABLE)) { X if(flags.soundok && flags.verbose && !rn2(5)) X You("hear the sound of crashing rock."); X! here->typ = DOOR; X! here->doormask = D_NODOOR; X } X } X /* Eats away door if present & closed or locked */ X--- 43,55 ---- X !(here->diggable & W_NONDIGGABLE)) { X if(flags.soundok && flags.verbose && !rn2(5)) X You("hear the sound of crashing rock."); X! if(!is_maze_lev) { X! here->typ = DOOR; X! here->doormask = D_NODOOR; X! } X! else X! here->typ = ROOM; X! mnewsym(mtmp->mx, mtmp->my); X } X } X /* Eats away door if present & closed or locked */ X*************** X*** 52,62 **** X--- 57,69 ---- X (here->doormask & (D_LOCKED | D_CLOSED))) { X if(here->doormask & D_TRAPPED) { X here->doormask = D_NODOOR; X+ mnewsym(mtmp->mx, mtmp->my); X if(mb_trapped(mtmp)) return(FALSE); X } else { X if(!rn2(3) && flags.verbose) /* not too often.. */ X You("feel an unexpected draft of air."); X here->doormask = D_BROKEN; X+ mnewsym(mtmp->mx, mtmp->my); X } X } X else return TRUE; /* it doesn't leave rocks if it didn't dig */ X*************** X*** 132,138 **** X X *inrange = (dist2(mtmp->mx, mtmp->my, mtmp->mux, mtmp->muy) <= X (BOLT_LIM * BOLT_LIM)); X! *nearby = (dist2(mtmp->mx, mtmp->my, mtmp->mux, mtmp->muy) < 3); X X /* Note: if your image is displaced, the monster sees the Elbereth X * at your displaced position, thus never attacking your displaced X--- 139,145 ---- X X *inrange = (dist2(mtmp->mx, mtmp->my, mtmp->mux, mtmp->muy) <= X (BOLT_LIM * BOLT_LIM)); X! *nearby = monnear(mtmp, mtmp->mux, mtmp->muy); X X /* Note: if your image is displaced, the monster sees the Elbereth X * at your displaced position, thus never attacking your displaced X*************** X*** 232,238 **** X /* check distance and scariness of attacks */ X distfleeck(mtmp,&inrange,&nearby,&scared); X X! #ifdef HARD /* Demonic Blackmail!!! */ X if(nearby && is_demon(mdat) && mtmp->mpeaceful && !mtmp->mtame) { X if (mtmp->mux != u.ux || mtmp->muy != u.uy) { X pline("%s whispers something to thin air.", X--- 239,245 ---- X /* check distance and scariness of attacks */ X distfleeck(mtmp,&inrange,&nearby,&scared); X X! #ifdef INFERNO /* Demonic Blackmail!!! */ X if(nearby && is_demon(mdat) && mtmp->mpeaceful && !mtmp->mtame) { X if (mtmp->mux != u.ux || mtmp->muy != u.uy) { X pline("%s whispers something to thin air.", X*************** X*** 619,638 **** X /* can't lock out shk */ X if(btrapped) { X here->doormask = D_NODOOR; X if(mb_trapped(mtmp)) return(2); X } else { X if (flags.verbose) { X if (canseeit) X! You("see a door being unlocked and opened."); X else if (flags.soundok) X You("hear a door being unlocked and opened."); X } X here->doormask = D_ISOPEN; X } X } else if (here->doormask == D_CLOSED && X !nohands(mtmp->data)) { X if(btrapped) { X here->doormask = D_NODOOR; X if(mb_trapped(mtmp)) return(2); X } else { X if (flags.verbose) { X--- 626,651 ---- X /* can't lock out shk */ X if(btrapped) { X here->doormask = D_NODOOR; X+ mnewsym(mtmp->mx, mtmp->my); X+ if (canseeit) prl(mtmp->mx,mtmp->my); X if(mb_trapped(mtmp)) return(2); X } else { X if (flags.verbose) { X if (canseeit) X! You("see a door being unlocked and opened."); X else if (flags.soundok) X You("hear a door being unlocked and opened."); X } X here->doormask = D_ISOPEN; X+ mnewsym(mtmp->mx, mtmp->my); X+ if (canseeit) prl(mtmp->mx,mtmp->my); X } X } else if (here->doormask == D_CLOSED && X !nohands(mtmp->data)) { X if(btrapped) { X here->doormask = D_NODOOR; X+ mnewsym(mtmp->mx, mtmp->my); X+ if (canseeit) prl(mtmp->mx,mtmp->my); X if(mb_trapped(mtmp)) return(2); X } else { X if (flags.verbose) { X*************** X*** 642,652 **** X--- 655,669 ---- X You("hear the sound of a door opening."); X } X here->doormask = D_ISOPEN; X+ mnewsym(mtmp->mx, mtmp->my); X+ if (canseeit) prl(mtmp->mx,mtmp->my); X } X } else if(here->doormask & (D_LOCKED | D_CLOSED)) { X /* mfndpos guarantees monster is a giant */ X if(btrapped) { X here->doormask = D_NODOOR; X+ mnewsym(mtmp->mx, mtmp->my); X+ if (canseeit) prl(mtmp->mx,mtmp->my); X if(mb_trapped(mtmp)) return(2); X } else { X if (flags.verbose) { X*************** X*** 658,666 **** X if (here->doormask & D_LOCKED && !rn2(2)) X here->doormask = D_NODOOR; X else here->doormask = D_BROKEN; X } X } X! } X /* Maybe a rock mole just ate something? */ X if(can_tunnel) if(!mdig_tunnel(mtmp)) return(2); /* died? */ X X--- 675,685 ---- X if (here->doormask & D_LOCKED && !rn2(2)) X here->doormask = D_NODOOR; X else here->doormask = D_BROKEN; X+ mnewsym(mtmp->mx, mtmp->my); X+ if (canseeit) prl(mtmp->mx,mtmp->my); X } X } X! } X /* Maybe a rock mole just ate something? */ X if(can_tunnel) if(!mdig_tunnel(mtmp)) return(2); /* died? */ X X*** src/Old/mthrowu.c Sun Nov 19 13:50:51 1989 X--- src/mthrowu.c Tue Oct 31 11:04:38 1989 X*************** X*** 28,50 **** X struct obj *obj; X register char *name; X { X! char buf[BUFSZ]; X boolean acidic = (obj && obj->otyp == ACID_VENOM); X X- setan(name, buf); X if(u.uac + tlev <= rnd(20)) { X if(Blind || !flags.verbose) pline("It misses."); X! else You("are almost hit by %s!", buf); X return(0); X } else { X if(Blind || !flags.verbose) You("are hit!"); X! else You("are hit by %s!", buf); X #ifdef POLYSELF X if (obj && obj->otyp == SILVER_ARROW && (u.ulycn != -1 || X is_demon(uasmon) || u.usym == S_VAMPIRE || X (u.usym == S_IMP && u.umonnum != PM_TENGU))) { X dam += rnd(20); X! pline("You feel the %sarrow sear your flesh!", X Blind ? "" : "silver "); X } X if (acidic && resists_acid(uasmon)) X--- 28,49 ---- X struct obj *obj; X register char *name; X { X! char *oname = an(name); X boolean acidic = (obj && obj->otyp == ACID_VENOM); X X if(u.uac + tlev <= rnd(20)) { X if(Blind || !flags.verbose) pline("It misses."); X! else You("are almost hit by %s!", oname); X return(0); X } else { X if(Blind || !flags.verbose) You("are hit!"); X! else You("are hit by %s!", oname); X #ifdef POLYSELF X if (obj && obj->otyp == SILVER_ARROW && (u.ulycn != -1 || X is_demon(uasmon) || u.usym == S_VAMPIRE || X (u.usym == S_IMP && u.umonnum != PM_TENGU))) { X dam += rnd(20); X! pline("The %sarrow sears your flesh!", X Blind ? "" : "silver "); X } X if (acidic && resists_acid(uasmon)) X*************** X*** 268,273 **** X--- 267,276 ---- X { X struct obj *otmp, *prev; X X+ if (obj->quan > 1) { X+ obj->quan--; X+ return; X+ } X prev = ((struct obj *) 0); X for (otmp = mon->minvent; otmp; otmp = otmp->nobj) { X if (otmp == obj) { X*************** X*** 315,323 **** X || otmp->otyp == CROSSBOW_BOLT) verb = "shoots"; X otmp->quan = 1; X if (canseemon(mtmp)) X! pline("%s %s a%s %s!", Monnam(mtmp), verb, X! index(vowels,*(xname(otmp))) ? "n" : "", X! xname(otmp)); X otmp->quan = savequan; X m_throw(mtmp->mx, mtmp->my, sgn(tbx), sgn(tby), X movedist(mtmp->mx,mtmp->mux,mtmp->my,mtmp->muy), otmp); X--- 318,324 ---- X || otmp->otyp == CROSSBOW_BOLT) verb = "shoots"; X otmp->quan = 1; X if (canseemon(mtmp)) X! pline("%s %s %s!", Monnam(mtmp), verb, an(xname(otmp))); X otmp->quan = savequan; X m_throw(mtmp->mx, mtmp->my, sgn(tbx), sgn(tby), X movedist(mtmp->mx,mtmp->mux,mtmp->my,mtmp->muy), otmp); X*** src/Old/music.c Sun Nov 19 13:51:12 1989 X--- src/music.c Fri Nov 10 11:01:03 1989 X*************** X*** 253,260 **** X--- 253,262 ---- X if (cansee(x,y)) X pline("The door collapses."); X levl[x][y].doormask = D_NODOOR; X+ mnewsym(x,y); X if (!MON_AT(x, y) && !(x == u.ux && y == u.uy)) X newsym(x,y); X+ if (cansee(x,y)) prl(x,y); X break; X } X } X*************** X*** 280,287 **** X charm_snakes((int)u.ulevel*3); X break; X case MAGIC_FLUTE: /* Make monster fall asleep */ X! You("produce soft music."); X! put_monsters_to_sleep((int)u.ulevel*5); X break; X case HORN: /* Awaken monsters or scare monsters */ X You("produce a frightful, grave sound."); X--- 282,292 ---- X charm_snakes((int)u.ulevel*3); X break; X case MAGIC_FLUTE: /* Make monster fall asleep */ X! if (instr->spe > 0) { X! instr->spe--; X! You("produce soft music."); X! put_monsters_to_sleep((int)u.ulevel*5); X! } X break; X case HORN: /* Awaken monsters or scare monsters */ X You("produce a frightful, grave sound."); X*************** X*** 317,323 **** X break; X case MAGIC_HARP: /* Charm monsters */ X if (instr->spe > 0) { X! pline("The %s produces very attractive music.",xname(instr)); X instr->spe--; X charm_monsters(((int)u.ulevel - 1) / 3 + 1); X } X--- 322,328 ---- X break; X case MAGIC_HARP: /* Charm monsters */ X if (instr->spe > 0) { X! pline("The %s produces very attractive music.", xname(instr)); X instr->spe--; X charm_monsters(((int)u.ulevel - 1) / 3 + 1); X } X*************** X*** 330,337 **** X if (instr->spe > 0) { X You("produce a heavy, thunderous rolling!"); X pline("The entire dungeon is shaking around you!"); X- do_earthquake(((int)u.ulevel - 1) / 3 + 1); X instr->spe--; X makeknown(DRUM_OF_EARTHQUAKE); X } X break; X--- 335,342 ---- X if (instr->spe > 0) { X You("produce a heavy, thunderous rolling!"); X pline("The entire dungeon is shaking around you!"); X instr->spe--; X+ do_earthquake(((int)u.ulevel - 1) / 3 + 1); X makeknown(DRUM_OF_EARTHQUAKE); X } X break; X*** src/Old/objects.c Sun Nov 19 13:51:52 1989 X--- src/objects.c Tue Nov 14 20:31:49 1989 X*************** X*** 6,11 **** X--- 6,12 ---- X * function declarations for all of nethack X */ X #define EXTERN_H X+ /* #define MAKEDEFS_C 1 /* for Mac compilers with 32K data limit */ X #include "config.h" X #include "obj.h" X #include "objclass.h" X*************** X*** 24,37 **** X--- 25,52 ---- X #define C(n) X #endif X X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ struct objclass *objects; X+ struct small_objclass sm_obj[] = { X+ #else X struct objclass objects[] = { X+ #endif X X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ { "strange object", NULL}, X+ #else X { "strange object", NULL, NULL, 1,0,0,0,0, 0, X ILLOBJ_SYM, 0, 0, 0, 0, 0, 0, 0, C(0) }, X+ #endif X /* amulets ... - THE Amulet comes last because it is special */ X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X #define AMULET(name,desc,power,prob,weight) { \ X+ name, desc} X+ #else X+ #define AMULET(name,desc,power,prob,weight) { \ X name, desc, NULL, 0,0,0,0,METAL, power, AMULET_SYM, prob, 0, weight, \ X 150, 0, 0, 0, C(HI_METAL) } X+ #endif X X AMULET("amulet of esp", "circular", TELEPAT, 190, 2), X AMULET("amulet of life saving", "spherical", LIFESAVED, 90, 2), X*************** X*** 41,53 **** X--- 56,78 ---- X AMULET("amulet of change", "square", 0, 150, 2), X /* POLYMORPH */ X AMULET("amulet of reflection", "hexagonal", REFLECTING, 90, 2), X+ X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ { "Amulet of Yendor", NULL}, X+ #else X { "Amulet of Yendor", NULL, NULL, 1,0,1,0,METAL, 0, X AMULET_SYM, 0, 0, 2, 3500, 0, 0, 0, C(HI_METAL) }, X+ #endif X #undef AMULET X X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ #define FOOD(name,prob,delay,wt,uk,tin,nutrition,color) { \ X+ name, NULL} X+ #else X #define FOOD(name,prob,delay,wt,uk,tin,nutrition,color) { \ X name, NULL, NULL, 1,1,uk,0,tin, 0, FOOD_SYM, prob, delay, wt, \ X nutrition/20 + 5, 0, 0, nutrition, C(color) } X+ #endif X X /* all types of food (except tins & corpses) must have a delay of at least 1. */ X /* delay on corpses is computed and is weight dependant */ X*************** X*** 64,80 **** X #else X FOOD("tripe ration", 150, 2, 2, 0, 0, 200, BROWN), X #endif X- FOOD("dead lizard", 35, 1, 1, 0, 0, 40, GREEN), X FOOD("corpse", 0, 1, 0, 0, 0, 0, BROWN), X! FOOD("egg", 75, 1, 1, 1, 0, 80, WHITE), X /* fruits & veggies */ X! FOOD("apple", 10, 1, 1, 0, 0, 50, RED), X! FOOD("orange", 7, 1, 1, 0, 0, 80, ORANGE_COLORED), X! FOOD("pear", 7, 1, 1, 0, 0, 50, GREEN+BRIGHT), X! FOOD("melon", 7, 1, 1, 0, 0, 100, GREEN+BRIGHT), X! FOOD("banana", 7, 1, 1, 0, 0, 80, YELLOW), X FOOD("carrot", 15, 1, 1, 0, 0, 50, ORANGE_COLORED), X! FOOD("clove of garlic", 5, 1, 1, 0, 0, 40, WHITE), X #ifdef TUTTI_FRUTTI X FOOD("slime mold", 75, 1, 1, 0, 0, 250, BROWN), X #else X--- 89,104 ---- X #else X FOOD("tripe ration", 150, 2, 2, 0, 0, 200, BROWN), X #endif X FOOD("corpse", 0, 1, 0, 0, 0, 0, BROWN), X! FOOD("egg", 85, 1, 1, 1, 0, 80, WHITE), X /* fruits & veggies */ X! FOOD("apple", 15, 1, 1, 0, 0, 50, RED), X! FOOD("orange", 10, 1, 1, 0, 0, 80, ORANGE_COLORED), X! FOOD("pear", 10, 1, 1, 0, 0, 50, GREEN|BRIGHT), X! FOOD("melon", 10, 1, 1, 0, 0, 100, GREEN|BRIGHT), X! FOOD("banana", 10, 1, 1, 0, 0, 80, YELLOW), X FOOD("carrot", 15, 1, 1, 0, 0, 50, ORANGE_COLORED), X! FOOD("clove of garlic", 7, 1, 1, 0, 0, 40, WHITE), X #ifdef TUTTI_FRUTTI X FOOD("slime mold", 75, 1, 1, 0, 0, 250, BROWN), X #else X*************** X*** 83,93 **** X /* human food */ X FOOD("lump of royal jelly", 0, 1, 1, 0, 0, 200, YELLOW), X FOOD("cream pie", 25, 1, 1, 0, 0, 100, WHITE), X! FOOD("candy bar", 7, 1, 1, 0, 0, 100, BROWN), X FOOD("fortune cookie", 55, 1, 1, 0, 0, 40, BROWN), X #ifdef TOLKIEN X FOOD("pancake", 25, 2, 1, 0, 0, 200, BROWN), X! FOOD("lembas wafer", 20, 2, 1, 0, 0, 800, WHITE+BRIGHT), X FOOD("cram ration", 20, 3, 3, 0, 0, 600, HI_ORGANIC), X FOOD("food ration", 385, 5, 4, 0, 0, 800, HI_ORGANIC), X #else X--- 107,117 ---- X /* human food */ X FOOD("lump of royal jelly", 0, 1, 1, 0, 0, 200, YELLOW), X FOOD("cream pie", 25, 1, 1, 0, 0, 100, WHITE), X! FOOD("candy bar", 13, 1, 1, 0, 0, 100, BROWN), X FOOD("fortune cookie", 55, 1, 1, 0, 0, 40, BROWN), X #ifdef TOLKIEN X FOOD("pancake", 25, 2, 1, 0, 0, 200, BROWN), X! FOOD("lembas wafer", 20, 2, 1, 0, 0, 800, WHITE|BRIGHT), X FOOD("cram ration", 20, 3, 3, 0, 0, 600, HI_ORGANIC), X FOOD("food ration", 385, 5, 4, 0, 0, 800, HI_ORGANIC), X #else X*************** X*** 101,115 **** X--- 125,154 ---- X FOOD("tin", 75, 0, 1, 1, METAL, 0, HI_METAL), X #undef FOOD X X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ #define WEAPON(name,app,kn,mg,bi,prob,wt,cost,sdam,ldam,metal,color) { \ X+ name, app} X+ #else X #define WEAPON(name,app,kn,mg,bi,prob,wt,cost,sdam,ldam,metal,color) { \ X name, app, NULL, kn,mg,1,bi,metal, 0, WEAPON_SYM, prob, 0, wt, \ X cost, sdam, ldam, 0, C(color) } X+ #endif X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ #define PROJECTILE(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop,color) { \ X+ name, app} X+ #else X #define PROJECTILE(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop,color) { \ X name, app, NULL, kn,1,1,bi,metal, 0, WEAPON_SYM, prob, 0, wt, \ X cost, sdam, ldam, prop, C(color) } X+ #endif X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ #define BOW(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop,color) { \ X+ name, app} X+ #else X #define BOW(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop,color) { \ X name, app, NULL, kn,0,1,bi,metal, 0, WEAPON_SYM, prob, 0, wt, \ X cost, sdam, ldam, -(prop), C(color) } X+ #endif X X /* Note: for weapons that don't do an even die of damage (ex. 2-7 or 3-18) X * the extra damage is added on in weapon.c, not here! */ X*************** X*** 263,271 **** X--- 302,315 ---- X #undef BOW X X /* tools ... - PICK AXE comes last because it has special characteristics */ X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ #define TOOL(name,desc,kn,chg,prob,weight,cost,material,color) {\ X+ name, desc} X+ #else X #define TOOL(name,desc,kn,chg,prob,weight,cost,material,color) {\ X name, desc, NULL, kn,0,chg,chg,material, 0, TOOL_SYM, prob, 0, \ X weight, cost, 0, 0, 0, C(color)} X+ #endif X X #ifdef WALKIES X TOOL("leash", NULL, 1, 0, 70, 3, 20, 0, HI_LEATHER), X*************** X*** 321,328 **** X--- 365,383 ---- X TOOL("drum of earthquake", "drum", 0, 1, 2, 4, 25, 0, BROWN), X #endif X #undef TOOL X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ { "pick-axe", NULL}, X+ { "unicorn horn", NULL}, X+ { "blinding venom", "splash of venom"}, X+ { "acid venom", "splash of venom"}, X+ /* +d6 small or large */ X+ { "heavy iron ball", NULL}, X+ { "iron chain", NULL}, X+ #else X { "pick-axe", NULL, NULL, 1,0,1,1,METAL, 0, TOOL_SYM, 20, X 0, 10, 50, 6, 3, 0, C(HI_METAL)}, X+ { "unicorn horn", NULL, NULL, 1,0,1,0,0, 0, TOOL_SYM, 0, X+ 0, 4, 100, 12, 12, 0, C(WHITE)}, X { "blinding venom", "splash of venom", NULL, X 0,1,0,0,0, 0, VENOM_SYM, 500, 0, 0, 0, 0, 0, 0, C(HI_ORGANIC)}, X { "acid venom", "splash of venom", NULL, X*************** X*** 332,349 **** X--- 387,415 ---- X BALL_SYM, 1000, 0, 20, 10, 0, 0, 0, C(HI_METAL)}, X { "iron chain", NULL, NULL, 1,0,0,0,METAL, 0, X CHAIN_SYM, 1000, 0, 20, 0, 0, 0, 0, C(HI_METAL)}, X+ #endif X X /* Note: boulders and rocks normally do not appear at random; the X * probabilities only come into effect when you try to polymorph them. X */ X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ { "boulder", NULL}, X+ { "statue", NULL}, X+ #else X { "boulder", NULL, NULL, 1,0,0,0,MINERAL, 0, ROCK_SYM, 100, 0, X 200 /* > MAX_CARR_CAP */, 0, 20, 20, 0, C(HI_MINERAL)}, X { "statue", NULL, NULL, 1,0,0,0,MINERAL, 0, ROCK_SYM, 900, 0, X 250, 0, 20, 20, 0, C(HI_MINERAL)}, X+ #endif X X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ #define ARMOR(name,desc,kn,blk,power,prob,delay,weight,cost,ac,can,metal,c) \ X+ {name, desc} X+ #else X #define ARMOR(name,desc,kn,blk,power,prob,delay,weight,cost,ac,can,metal,c) \ X {name, desc, NULL, kn,0,1,blk,metal, power, ARMOR_SYM, prob,\ X delay, weight, cost, ac, can, 0, C(c)} X+ #endif X #ifdef TOLKIEN X ARMOR("elven leather helm", "leather hat", X 0, 0, 0, 6, 1, 2, 8, 9, 0, 0, HI_LEATHER), X*************** X*** 371,377 **** X ARMOR("plate mail", NULL, X 1, 1, 0, 44, 5, 9, 600, 3, 2, METAL, HI_METAL), X ARMOR("crystal plate mail", NULL, X! 1, 1, 0, 10, 5, 9, 820, 3, 2, 0, WHITE+BRIGHT), X #ifdef SHIRT X ARMOR("bronze plate mail", NULL, X 1, 1, 0, 25, 5, 9, 400, 4, 0, COPPER, HI_COPPER), X--- 437,443 ---- X ARMOR("plate mail", NULL, X 1, 1, 0, 44, 5, 9, 600, 3, 2, METAL, HI_METAL), X ARMOR("crystal plate mail", NULL, X! 1, 1, 0, 10, 5, 9, 820, 3, 2, 0, WHITE|BRIGHT), X #ifdef SHIRT X ARMOR("bronze plate mail", NULL, X 1, 1, 0, 25, 5, 9, 400, 4, 0, COPPER, HI_COPPER), X*************** X*** 483,491 **** X--- 549,562 ---- X 0, 0, LEVITATION, 12, 2, 4, 30, 9, 0, 0, BROWN), X #undef ARMOR X X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ #define POTION(name,desc,power,prob,cost,color) \ X+ { name, desc} X+ #else X #define POTION(name,desc,power,prob,cost,color) \ X { name, desc, NULL, 0,1,0,0,0, power,\ X POTION_SYM, prob, 0, 2, cost, 0, 0, 0, C(color)} X+ #endif X X #ifdef SPELLS X POTION("fruit juice", "smoky", 0, 45, 50, WHITE), X*************** X*** 496,522 **** X POTION("booze", "bubbly", 0, 65, 50, WHITE), X #endif X POTION("gain ability", "swirly", 0, 45,300, WHITE), X! POTION("restore ability", "pink", 0, 45,100, MAGENTA+BRIGHT), X! POTION("sickness", "ruby", SICK, 45, 50, RED), X POTION("confusion", "orange", CONFUSION, 45, 100, ORANGE_COLORED), X POTION("blindness", "yellow", BLINDED, 45,150, YELLOW), X! POTION("paralysis", "emerald", 0, 45,300, GREEN+BRIGHT), X POTION("speed", "dark green", FAST, 45,200, GREEN), X POTION("levitation", "cyan", LEVITATION, 45,200, CYAN), X! POTION("hallucination", "brilliant blue", HALLUC, 45,100, BLUE+BRIGHT), X POTION("invisibility", "sky blue", INVIS, 45,150, CYAN), X POTION("see invisible", "magenta", SEE_INVIS, 45,50, MAGENTA), X POTION("healing", "purple", 0, 65,100, MAGENTA), X POTION("extra healing", "purple-red", 0, 50,100, MAGENTA), X! POTION("gain level", "puce", 0, 20,300, MAGENTA+BRIGHT), X POTION("enlightenment", "brown", 0, 20,200, BROWN), X POTION("monster detection", "white", 0, 45,150, WHITE), X! POTION("object detection", "glowing", 0, 45,150, WHITE+BRIGHT), X POTION("water", "clear", 0, 125,100,CYAN), X #undef POTION X X! #define SCROLL(name,text,prob,cost) { name, text, NULL, 0,1,0,0,0, 0,\ X SCROLL_SYM, prob, 0, 3, cost, 0, 0, 0, C(HI_PAPER)} X #ifdef MAIL X SCROLL("mail", "KIRJE", 0, 0), X #endif X--- 567,599 ---- X POTION("booze", "bubbly", 0, 65, 50, WHITE), X #endif X POTION("gain ability", "swirly", 0, 45,300, WHITE), X! POTION("restore ability", "pink", 0, 45,100, MAGENTA|BRIGHT), X! POTION("sickness", "ruby", 0, 45, 50, RED), X POTION("confusion", "orange", CONFUSION, 45, 100, ORANGE_COLORED), X POTION("blindness", "yellow", BLINDED, 45,150, YELLOW), X! POTION("paralysis", "emerald", 0, 45,300, GREEN|BRIGHT), X POTION("speed", "dark green", FAST, 45,200, GREEN), X POTION("levitation", "cyan", LEVITATION, 45,200, CYAN), X! POTION("hallucination", "brilliant blue", HALLUC, 45,100, BLUE|BRIGHT), X POTION("invisibility", "sky blue", INVIS, 45,150, CYAN), X POTION("see invisible", "magenta", SEE_INVIS, 45,50, MAGENTA), X POTION("healing", "purple", 0, 65,100, MAGENTA), X POTION("extra healing", "purple-red", 0, 50,100, MAGENTA), X! POTION("gain level", "puce", 0, 20,300, MAGENTA|BRIGHT), X POTION("enlightenment", "brown", 0, 20,200, BROWN), X POTION("monster detection", "white", 0, 45,150, WHITE), X! POTION("object detection", "glowing", 0, 45,150, WHITE|BRIGHT), X POTION("water", "clear", 0, 125,100,CYAN), X #undef POTION X X! #if defined(MACOS) && !defined(MAKEDEFS_C) X! #define SCROLL(name,text,prob,cost) \ X! { name, text} X! #else X! #define SCROLL(name,text,prob,cost) \ X! { name, text, NULL, 0,1,0,0,0, 0,\ X SCROLL_SYM, prob, 0, 3, cost, 0, 0, 0, C(HI_PAPER)} X+ #endif X #ifdef MAIL X SCROLL("mail", "KIRJE", 0, 0), X #endif X*************** X*** 546,554 **** X--- 623,636 ---- X SCROLL(NULL, "GARVEN DEH", 0, 100), X #undef SCROLL X X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X #define WAND(name,typ,prob,cost,flags,metal,c) { \ X+ name, typ} X+ #else X+ #define WAND(name,typ,prob,cost,flags,metal,c) { \ X name, typ, NULL, 0,0,1,0,metal, 0, WAND_SYM, \ X prob, 0, 3, cost, flags, 0, 0, C(c) } X+ #endif X X WAND("light", "glass", 95, 100, NODIR, GLASS,HI_GLASS), X WAND("secret door detection", "balsa", 50, 150, NODIR, WOOD,HI_WOOD), X*************** X*** 585,593 **** X--- 667,680 ---- X X #ifdef SPELLS X /* books */ X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X #define SPELL(name,desc,prob,delay,level,flags,color) \ X+ { name, desc} X+ #else X+ #define SPELL(name,desc,prob,delay,level,flags,color) \ X { name, desc, NULL, 0,1,0,0,0, 0, SPBOOK_SYM, prob, delay, \ X 5, level*100, flags, 0, level, C(color)} X+ #endif X X SPELL("magic missile", "parchment", 45, 3, 2, RAY, HI_PAPER), X SPELL("fireball", "vellum", 20, 6, 4, RAY, HI_PAPER), X*************** X*** 597,611 **** X SPELL("light", "cloth", 45, 1, 1, NODIR, HI_CLOTH), X SPELL("detect monsters", "leather", 45, 1, 1, NODIR, HI_LEATHER), X SPELL("healing", "white", 40, 2, 1, NODIR, WHITE), X! SPELL("knock", "pink", 40, 1, 1, IMMEDIATE, MAGENTA+BRIGHT), X SPELL("force bolt", "red", 40, 2, 1, IMMEDIATE, RED), X SPELL("confuse monster", "orange", 37, 2, 2, IMMEDIATE, ORANGE_COLORED), X SPELL("cure blindness", "yellow", 27, 2, 2, IMMEDIATE, YELLOW), X! SPELL("slow monster", "light green", 37, 2, 2, IMMEDIATE, GREEN+BRIGHT), X SPELL("wizard lock", "dark green", 35, 3, 2, IMMEDIATE, GREEN), X! SPELL("create monster", "turquoise", 37, 3, 2, NODIR, CYAN+BRIGHT), X SPELL("detect food", "cyan", 37, 3, 2, NODIR, CYAN), X! SPELL("cause fear", "light blue", 25, 3, 3, NODIR, BLUE+BRIGHT), X SPELL("clairvoyance", "dark blue", 15, 3, 3, NODIR, BLUE), X SPELL("cure sickness", "indigo", 32, 3, 3, NODIR, BLUE), X SPELL("charm monster", "magenta", 20, 3, 3, IMMEDIATE, MAGENTA), X--- 684,698 ---- X SPELL("light", "cloth", 45, 1, 1, NODIR, HI_CLOTH), X SPELL("detect monsters", "leather", 45, 1, 1, NODIR, HI_LEATHER), X SPELL("healing", "white", 40, 2, 1, NODIR, WHITE), X! SPELL("knock", "pink", 40, 1, 1, IMMEDIATE, MAGENTA|BRIGHT), X SPELL("force bolt", "red", 40, 2, 1, IMMEDIATE, RED), X SPELL("confuse monster", "orange", 37, 2, 2, IMMEDIATE, ORANGE_COLORED), X SPELL("cure blindness", "yellow", 27, 2, 2, IMMEDIATE, YELLOW), X! SPELL("slow monster", "light green", 37, 2, 2, IMMEDIATE, GREEN|BRIGHT), X SPELL("wizard lock", "dark green", 35, 3, 2, IMMEDIATE, GREEN), X! SPELL("create monster", "turquoise", 37, 3, 2, NODIR, CYAN|BRIGHT), X SPELL("detect food", "cyan", 37, 3, 2, NODIR, CYAN), X! SPELL("cause fear", "light blue", 25, 3, 3, NODIR, BLUE|BRIGHT), X SPELL("clairvoyance", "dark blue", 15, 3, 3, NODIR, BLUE), X SPELL("cure sickness", "indigo", 32, 3, 3, NODIR, BLUE), X SPELL("charm monster", "magenta", 20, 3, 3, IMMEDIATE, MAGENTA), X*************** X*** 623,631 **** X SPELL("turn undead", "copper", 17, 8, 6, IMMEDIATE, HI_COPPER), X SPELL("polymorph", "silver", 12, 8, 6, IMMEDIATE, HI_SILVER), X SPELL("teleport away", "gold", 15, 6, 6, IMMEDIATE, HI_GOLD), X! SPELL("create familiar", "glittering", 10, 7, 6, NODIR, WHITE+BRIGHT), X! SPELL("cancellation", "shining", 12, 8, 7, IMMEDIATE, WHITE+BRIGHT), X! SPELL("genocide", "glowing", 5, 10, 7, NODIR, WHITE+BRIGHT), X SPELL(NULL, "dull", 0, 0, 0, 0, HI_PAPER), X SPELL(NULL, "thin", 0, 0, 0, 0, HI_PAPER), X SPELL(NULL, "thick", 0, 0, 0, 0, HI_PAPER), X--- 710,718 ---- X SPELL("turn undead", "copper", 17, 8, 6, IMMEDIATE, HI_COPPER), X SPELL("polymorph", "silver", 12, 8, 6, IMMEDIATE, HI_SILVER), X SPELL("teleport away", "gold", 15, 6, 6, IMMEDIATE, HI_GOLD), X! SPELL("create familiar", "glittering", 10, 7, 6, NODIR, WHITE|BRIGHT), X! SPELL("cancellation", "shining", 12, 8, 7, IMMEDIATE, WHITE|BRIGHT), X! SPELL("genocide", "glowing", 5, 10, 7, NODIR, WHITE|BRIGHT), X SPELL(NULL, "dull", 0, 0, 0, 0, HI_PAPER), X SPELL(NULL, "thin", 0, 0, 0, 0, HI_PAPER), X SPELL(NULL, "thick", 0, 0, 0, 0, HI_PAPER), X*************** X*** 632,644 **** X #undef SPELL X #endif /* SPELLS /**/ X X #define RING(name,stone,power,cost,spec,metal,color) \ X { name, stone, NULL, 0,0,spec,spec,metal, \ X power, RING_SYM, 0, 0, 1, cost, 0, 0, 0, C(color)} X X RING("adornment", "wooden", ADORNED, 100, 1, WOOD, HI_WOOD), X RING("gain strength", "granite", 0, 150, 1, MINERAL, HI_MINERAL), X! RING("increase damage", "coral", 0, 150, 1, MINERAL, RED+BRIGHT), X RING("protection", "black onyx", PROTECTION, 100, 1, MINERAL, BLACK), X RING("regeneration", "moonstone", REGENERATION, 200, 0, MINERAL, HI_MINERAL), X RING("searching", "tiger eye", SEARCHING, 200, 0, MINERAL, BROWN), X--- 719,736 ---- X #undef SPELL X #endif /* SPELLS /**/ X X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ #define RING(name,stone,power,cost,spec,metal,color) \ X+ { name, stone} X+ #else X #define RING(name,stone,power,cost,spec,metal,color) \ X { name, stone, NULL, 0,0,spec,spec,metal, \ X power, RING_SYM, 0, 0, 1, cost, 0, 0, 0, C(color)} X+ #endif X X RING("adornment", "wooden", ADORNED, 100, 1, WOOD, HI_WOOD), X RING("gain strength", "granite", 0, 150, 1, MINERAL, HI_MINERAL), X! RING("increase damage", "coral", 0, 150, 1, MINERAL, RED|BRIGHT), X RING("protection", "black onyx", PROTECTION, 100, 1, MINERAL, BLACK), X RING("regeneration", "moonstone", REGENERATION, 200, 0, MINERAL, HI_MINERAL), X RING("searching", "tiger eye", SEARCHING, 200, 0, MINERAL, BROWN), X*************** X*** 647,653 **** X RING("hunger", "topaz", HUNGER, 100, 0, MINERAL, CYAN), X RING("aggravate monster", "sapphire", AGGRAVATE_MONSTER, 150, 0, METAL, BLUE), X RING("conflict", "ruby", CONFLICT, 300, 0, METAL, RED), X! RING("warning", "diamond", WARNING, 100, 0, METAL, WHITE+BRIGHT), X RING("poison resistance", "pearl", POISON_RES, 150, 0, METAL, WHITE), X RING("fire resistance", "iron", FIRE_RES, 200, 0, METAL, HI_METAL), X RING("cold resistance", "brass", COLD_RES, 150, 0, COPPER, HI_COPPER), X--- 739,745 ---- X RING("hunger", "topaz", HUNGER, 100, 0, MINERAL, CYAN), X RING("aggravate monster", "sapphire", AGGRAVATE_MONSTER, 150, 0, METAL, BLUE), X RING("conflict", "ruby", CONFLICT, 300, 0, METAL, RED), X! RING("warning", "diamond", WARNING, 100, 0, METAL, WHITE|BRIGHT), X RING("poison resistance", "pearl", POISON_RES, 150, 0, METAL, WHITE), X RING("fire resistance", "iron", FIRE_RES, 200, 0, METAL, HI_METAL), X RING("cold resistance", "brass", COLD_RES, 150, 0, COPPER, HI_COPPER), X*************** X*** 658,664 **** X #ifdef POLYSELF X RING("polymorph", "ivory", POLYMORPH, 300, 0, 0, WHITE), X RING("polymorph control","emerald", POLYMORPH_CONTROL, X! 300, 0, METAL, GREEN+BRIGHT), X #endif X RING("invisibility", "wire", INVIS, 150, 0, METAL, HI_METAL), X RING("see invisible", "engagement", SEE_INVIS, 150, 0, METAL, HI_METAL), X--- 750,756 ---- X #ifdef POLYSELF X RING("polymorph", "ivory", POLYMORPH, 300, 0, 0, WHITE), X RING("polymorph control","emerald", POLYMORPH_CONTROL, X! 300, 0, METAL, GREEN|BRIGHT), X #endif X RING("invisibility", "wire", INVIS, 150, 0, METAL, HI_METAL), X RING("see invisible", "engagement", SEE_INVIS, 150, 0, METAL, HI_METAL), X*************** X*** 667,675 **** X--- 759,772 ---- X #undef RING X X /* gems ************************************************************/ X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ #define GEM(name,desc,prob,wt,gval,glass, color) \ X+ { name, desc} X+ #else X #define GEM(name,desc,prob,wt,gval,glass, color) \ X { name, desc, NULL, 0,1,0,0,glass, 0,\ X GEM_SYM, prob, 0, wt, gval, 3, 3, WP_SLING, C(color)} X+ #endif X GEM("dilithium crystal", "white", 3, 1, 4500, MINERAL, WHITE), X GEM("diamond", "white", 4, 1, 4000, MINERAL, WHITE), X GEM("ruby", "red", 5, 1, 3500, MINERAL, RED), X*************** X*** 694,704 **** X--- 791,809 ---- X GEM("worthless piece of violet glass", "violet",131, 1, 0, GLASS, MAGENTA), X GEM("luckstone", "gray", 10, 1, 60, MINERAL, GRAY), X GEM("loadstone", "gray", 10, 50, 1, MINERAL, GRAY), X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ { "rock", NULL}, X+ #else X { "rock", NULL, NULL, 1,1,0,0,MINERAL, 0, X GEM_SYM, 10, 0, 1, 0, 3, 3, WP_SLING, C(HI_MINERAL)}, X+ #endif X #undef GEM X X+ #if defined(MACOS) && !defined(MAKEDEFS_C) X+ { NULL, NULL} X+ #else X { NULL, NULL, NULL, 0,0,0,0,0, 0, ILLOBJ_SYM, 0, 0, 0, 0, 0, 0, 0, C(0) } X+ #endif X }; X X #undef C X*** src/Old/objnam.c Sun Nov 19 13:52:54 1989 X--- src/objnam.c Fri Nov 17 19:31:57 1989 X*************** X*** 1,4 **** X! /* SCCS Id: @(#)objnam.c 3.0 88/11/30 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: @(#)objnam.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*** 17,23 **** X "octagonal", "hexagonal", "wide", X "notched", "large round", "large square" }; X X! static int rnd_class P((int,int)); X X static int X named_key(s) register char *s; { X--- 17,23 ---- X "octagonal", "hexagonal", "wide", X "notched", "large round", "large square" }; X X! static int FDECL(rnd_class, (int,int)); X X static int X named_key(s) register char *s; { X*************** X*** 80,86 **** X static char buf[BUFSZ]; X #endif X register struct objclass *ocl = &objects[otyp]; X! register char *an = ocl->oc_name; X register char *dn = ocl->oc_descr; X register char *un = ocl->oc_uname; X register int nn = ocl->oc_name_known; X--- 80,86 ---- X static char buf[BUFSZ]; X #endif X register struct objclass *ocl = &objects[otyp]; X! register char *actualn = ocl->oc_name; X register char *dn = ocl->oc_descr; X register char *un = ocl->oc_uname; X register int nn = ocl->oc_name_known; X*************** X*** 104,110 **** X break; X case AMULET_SYM: X if(nn) X! Strcpy(buf,an); X else X Strcpy(buf,"amulet"); X if(un) X--- 104,110 ---- X break; X case AMULET_SYM: X if(nn) X! Strcpy(buf,actualn); X else X Strcpy(buf,"amulet"); X if(un) X*************** X*** 114,120 **** X return(buf); X default: X if(nn) { X! Strcpy(buf, an); X if(otyp >= TURQUOISE && otyp <= JADE) X Strcat(buf, " stone"); X if(un) X--- 114,120 ---- X return(buf); X default: X if(nn) { X! Strcpy(buf, actualn); X if(otyp >= TURQUOISE && otyp <= JADE) X Strcat(buf, " stone"); X if(un) X*************** X*** 122,128 **** X if(dn) X Sprintf(eos(buf), " (%s)", dn); X } else { X! Strcpy(buf, dn ? dn : an); X if(ocl->oc_olet == GEM_SYM) { X if (otyp == LOADSTONE || otyp == LUCKSTONE) X Strcat(buf, " stone"); X--- 122,128 ---- X if(dn) X Sprintf(eos(buf), " (%s)", dn); X } else { X! Strcpy(buf, dn ? dn : actualn); X if(ocl->oc_olet == GEM_SYM) { X if (otyp == LOADSTONE || otyp == LUCKSTONE) X Strcat(buf, " stone"); X*************** X*** 136,142 **** X } X /* here for ring/scroll/potion/wand */ X if(nn) X! Sprintf(eos(buf), " of %s", an); X if(un) X Sprintf(eos(buf), " called %s", un); X if(dn) X--- 136,142 ---- X } X /* here for ring/scroll/potion/wand */ X if(nn) X! Sprintf(eos(buf), " of %s", actualn); X if(un) X Sprintf(eos(buf), " called %s", un); X if(dn) X*************** X*** 154,160 **** X char * X distant_name(obj, func) X register struct obj *obj; X! char *(*func) P((struct obj *)); X { X char *str; X X--- 154,160 ---- X char * X distant_name(obj, func) X register struct obj *obj; X! char *FDECL((*func), (struct obj *)); X { X char *str; X X*************** X*** 176,182 **** X #endif X register char *buf = &(bufr[PREFIX]); /* leave room for "17 -3 " */ X register int nn = objects[obj->otyp].oc_name_known; X! register char *an = objects[obj->otyp].oc_name; X register char *dn = objects[obj->otyp].oc_descr; X register char *un = objects[obj->otyp].oc_uname; X X--- 176,182 ---- X #endif X register char *buf = &(bufr[PREFIX]); /* leave room for "17 -3 " */ X register int nn = objects[obj->otyp].oc_name_known; X! register char *actualn = objects[obj->otyp].oc_name; X register char *dn = objects[obj->otyp].oc_descr; X register char *un = objects[obj->otyp].oc_uname; X X*************** X*** 187,197 **** X if(obj->otyp == AMULET_OF_YENDOR) { X Strcpy(buf, (obj->spe < 0 && obj->known) ? X "cheap plastic imitation of the " : ""); X! Strcat(buf, an); X } else if (!obj->dknown) X Strcpy(buf, "amulet"); X else if (nn) X! Strcpy(buf, an); X else if (un) X Sprintf(buf,"amulet called %s", un); X else X--- 187,197 ---- X if(obj->otyp == AMULET_OF_YENDOR) { X Strcpy(buf, (obj->spe < 0 && obj->known) ? X "cheap plastic imitation of the " : ""); X! Strcat(buf, actualn); X } else if (!obj->dknown) X Strcpy(buf, "amulet"); X else if (nn) X! Strcpy(buf, actualn); X else if (un) X Sprintf(buf,"amulet called %s", un); X else X*************** X*** 202,216 **** X Strcpy(buf, "poisoned "); X case VENOM_SYM: X case TOOL_SYM: X! if(nn) Strcat(buf, an); X else Strcat(buf, dn); X! if(obj->otyp == FIGURINE) { X! Sprintf(eos(buf), " of a%s %s", X! index(vowels, *mons[obj->corpsenm].mname) X! ? "n" : "", X! mons[obj->corpsenm].mname); X! break; X! } X break; X case ARMOR_SYM: X if(obj->otyp==DRAGON_SCALE_MAIL) { X--- 202,212 ---- X Strcpy(buf, "poisoned "); X case VENOM_SYM: X case TOOL_SYM: X! if(nn) Strcat(buf, actualn); X else Strcat(buf, dn); X! if(obj->otyp == FIGURINE) X! Sprintf(eos(buf), " of %s", X! an(mons[obj->corpsenm].mname)); X break; X case ARMOR_SYM: X if(obj->otyp==DRAGON_SCALE_MAIL) { X*************** X*** 221,227 **** X X if(is_boots(obj) || is_gloves(obj)) Strcpy(buf,"pair of "); X X! if(nn) Strcat(buf, an); X else if(un) { X if(is_boots(obj)) X Strcat(buf,"boots"); X--- 217,223 ---- X X if(is_boots(obj) || is_gloves(obj)) Strcpy(buf,"pair of "); X X! if(nn) Strcat(buf, actualn); X else if(un) { X if(is_boots(obj)) X Strcat(buf,"boots"); X*************** X*** 254,260 **** X break; X } X #endif X! Strcpy(buf, an); X if(obj->otyp == TIN && obj->known) { X if(obj->spe > 0) X Strcat(buf, " of spinach"); X--- 250,256 ---- X break; X } X #endif X! Strcpy(buf, actualn); X if(obj->otyp == TIN && obj->known) { X if(obj->spe > 0) X Strcat(buf, " of spinach"); X*************** X*** 266,279 **** X } X break; X case CHAIN_SYM: X! Strcpy(buf, an); X break; X case ROCK_SYM: X if(obj->otyp == STATUE) X! Sprintf(buf, "%s of a%s %s", an, X! (index(vowels, *(mons[obj->corpsenm].mname))) ? "n" : "", X! mons[obj->corpsenm].mname); X! else Strcpy(buf, an); X break; X case BALL_SYM: X Sprintf(buf, "%sheavy iron ball", X--- 262,273 ---- X } X break; X case CHAIN_SYM: X! Strcpy(buf, actualn); X break; X case ROCK_SYM: X if(obj->otyp == STATUE) X! Sprintf(buf, "%s of %s", actualn, an(mons[obj->corpsenm].mname)); X! else Strcpy(buf, actualn); X break; X case BALL_SYM: X Sprintf(buf, "%sheavy iron ball", X*************** X*** 291,297 **** X (obj->blessed || obj->cursed)) { X Strcat(buf, obj->blessed ? "holy " : "unholy "); X } X! Strcat(buf, an); X } else { X Strcat(buf, " called "); X Strcat(buf, un); X--- 285,291 ---- X (obj->blessed || obj->cursed)) { X Strcat(buf, obj->blessed ? "holy " : "unholy "); X } X! Strcat(buf, actualn); X } else { X Strcat(buf, " called "); X Strcat(buf, un); X*************** X*** 306,312 **** X if(!obj->dknown) break; X if(nn) { X Strcat(buf, " of "); X! Strcat(buf, an); X } else if(un) { X Strcat(buf, " called "); X Strcat(buf, un); X--- 300,306 ---- X if(!obj->dknown) break; X if(nn) { X Strcat(buf, " of "); X! Strcat(buf, actualn); X } else if(un) { X Strcat(buf, " called "); X Strcat(buf, un); X*************** X*** 319,325 **** X if(!obj->dknown) X Sprintf(buf, "wand"); X else if(nn) X! Sprintf(buf, "wand of %s", an); X else if(un) X Sprintf(buf, "wand called %s", un); X else X--- 313,319 ---- X if(!obj->dknown) X Sprintf(buf, "wand"); X else if(nn) X! Sprintf(buf, "wand of %s", actualn); X else if(un) X Sprintf(buf, "wand called %s", un); X else X*************** X*** 330,336 **** X if(!obj->dknown) X Sprintf(buf, "spellbook"); X else if(nn) X! Sprintf(buf, "spellbook of %s", an); X else if(un) X Sprintf(buf, "spellbook called %s", un); X else X--- 324,330 ---- X if(!obj->dknown) X Sprintf(buf, "spellbook"); X else if(nn) X! Sprintf(buf, "spellbook of %s", actualn); X else if(un) X Sprintf(buf, "spellbook called %s", un); X else X*************** X*** 341,347 **** X if(!obj->dknown) X Sprintf(buf, "ring"); X else if(nn) X! Sprintf(buf, "ring of %s", an); X else if(un) X Sprintf(buf, "ring called %s", un); X else X--- 335,341 ---- X if(!obj->dknown) X Sprintf(buf, "ring"); X else if(nn) X! Sprintf(buf, "ring of %s", actualn); X else if(un) X Sprintf(buf, "ring called %s", un); X else X*************** X*** 363,369 **** X else Sprintf(buf, "%s %s", dn, rock); X break; X } X! Strcpy(buf, an); X if(obj->otyp >= TURQUOISE && obj->otyp <= JADE) X Strcat(buf, " stone"); X break; X--- 357,363 ---- X else Sprintf(buf, "%s %s", dn, rock); X break; X } X! Strcpy(buf, actualn); X if(obj->otyp >= TURQUOISE && obj->otyp <= JADE) X Strcat(buf, " stone"); X break; X*************** X*** 484,490 **** X Sprintf(eos(bp), " (%s keyhole)", lockstr[obj->spe]); X break; X } X! if(obj->otyp == PICK_AXE) goto plus; X if(!objects[obj->otyp].oc_charged) break; X /* if special tool, fall through to show charges */ X case WAND_SYM: X--- 478,485 ---- X Sprintf(eos(bp), " (%s keyhole)", lockstr[obj->spe]); X break; X } X! if(obj->otyp == PICK_AXE || obj->otyp == UNICORN_HORN) X! goto plus; X if(!objects[obj->otyp].oc_charged) break; X /* if special tool, fall through to show charges */ X case WAND_SYM: X*************** X*** 539,545 **** X Strcat(bp, " (unpaid)"); X if (!strncmp(prefix, "a ", 2) && X index(vowels, *(prefix+2) ? *(prefix+2) : *bp) X! && (*(prefix+2) || strncmp(bp, "uranium", 7))) { X Strcpy(tmpbuf, prefix); X Strcpy(prefix, "an "); X Strcpy(prefix+3, tmpbuf+2); X--- 534,541 ---- X Strcat(bp, " (unpaid)"); X if (!strncmp(prefix, "a ", 2) && X index(vowels, *(prefix+2) ? *(prefix+2) : *bp) X! && (*(prefix+2) || (strncmp(bp, "uranium", 7) X! && strncmp(bp, "unicorn", 7)))) { X Strcpy(tmpbuf, prefix); X Strcpy(prefix, "an "); X Strcpy(prefix+3, tmpbuf+2); X*************** X*** 553,587 **** X */ X X char * X! singular(otmp) X register struct obj *otmp; X { X int savequan; X char *nam; X X /* Note: using xname for corpses will not give the monster type */ X! if (otmp->otyp == CORPSE) { X static char buf[31]; X X! sprintf(buf, "%s corpse", mons[otmp->corpsenm].mname); X return buf; X } X savequan = otmp->quan; X otmp->quan = 1; X! nam = xname(otmp); X otmp->quan = savequan; X return nam; X } X X! /* used only in mthrowu.c (thitu) */ X! void X! setan(str,buf) X! register char *str,*buf; X { X! if(index(vowels,*str)) X! Sprintf(buf, "an %s", str); X! else X! Sprintf(buf, "a %s", str); X } X X char * X--- 549,602 ---- X */ X X char * X! singular(otmp, func) X register struct obj *otmp; X+ char *FDECL((*func), (struct obj *)); X { X int savequan; X char *nam; X X /* Note: using xname for corpses will not give the monster type */ X! if (otmp->otyp == CORPSE && func == xname) { X static char buf[31]; X X! Sprintf(buf, "%s corpse", mons[otmp->corpsenm].mname); X return buf; X } X savequan = otmp->quan; X otmp->quan = 1; X! nam = (*func)(otmp); X otmp->quan = savequan; X return nam; X } X X! char * X! an(str) X! register char *str; X { X! static char buf[BUFSZ]; X! X! buf[0] = '\0'; X! X! if (strncmp(str, "the ", 4)) X! if (index(vowels, *str) && X! strncmp(str, "unicorn", 7) && X! strncmp(str, "uranium", 7)) X! Strcpy(buf, "an "); X! else X! Strcpy(buf, "a "); X! X! Strcat(buf, str); X! return buf; X! } X! X! char * X! An(str) X! register char *str; X! { X! str = an(str); X! if (*str == 'a') *str = 'A'; X! return str; X } X X char * X*************** X*** 752,758 **** X } X X /* fungus/fungi, homunculus/homunculi, but wumpuses */ X! if (!strcmp(spot-1, "us") && strcmp(spot-6, "wumpus")) { X *(spot--) = (char)0; X *spot = 'i'; X goto bottom; X--- 767,773 ---- X } X X /* fungus/fungi, homunculus/homunculi, but wumpuses */ X! if (!strcmp(spot-1, "us") && strcmp(spot-5, "wumpus")) { X *(spot--) = (char)0; X *spot = 'i'; X goto bottom; X*************** X*** 838,851 **** X return str; X } X X! static const char *armor_classes[] = { X! /* "shield called reflection" gives a specific type of shield. X! * "shield" gives a random type of shield--but not of all armor. X! */ X! "gloves", "boots", "cloak", "shield", "helmet" X }; X! #define ARMOR_CLASSES 5 X X /* Return something wished for. If not an object, return &zeroobj; if an error X * (no matching object), return (struct obj *)0. Giving readobjnam() a null X * pointer skips the error return and creates a random object instead. X--- 853,944 ---- X return str; X } X X! /* wishable subranges of objects */ X! static const struct o_range { X! char *name, osym; X! int f_o_range, l_o_range; X! } o_ranges[] = { X! { "bag", TOOL_SYM, SACK, BAG_OF_TRICKS }, X! { "gloves", ARMOR_SYM, LEATHER_GLOVES, GAUNTLETS_OF_DEXTERITY }, X! { "gauntlets", ARMOR_SYM, LEATHER_GLOVES, GAUNTLETS_OF_DEXTERITY }, X! { "boots", ARMOR_SYM, LOW_BOOTS, LEVITATION_BOOTS }, X! { "shoes", ARMOR_SYM, LOW_BOOTS, IRON_SHOES }, X! { "cloak", ARMOR_SYM, MUMMY_WRAPPING, CLOAK_OF_DISPLACEMENT }, X! { "shield", ARMOR_SYM, SMALL_SHIELD, SHIELD_OF_REFLECTION }, X! #ifdef TOLKIEN /* note: "helmet" is a specific item */ X! { "helm", ARMOR_SYM, ELVEN_LEATHER_HELM, HELM_OF_TELEPATHY }, X! #else X! { "helm", ARMOR_SYM, ORCISH_HELM, HELM_OF_TELEPATHY }, X! #endif X! { "sword", WEAPON_SYM, SHORT_SWORD, KATANA } X }; X! X! X! /* X! * Singularize a string the user typed in; this helps reduce the complexity X! * of readobjnam. X! */ X! X! static X! void X! singularize(bp) X! char *bp; X! { X! char *p; X X+ /* find "cloves of garlic", "worthless pieces of blue glass" */ X+ for(p = bp; *p; p++) X+ if(!strncmp(p, "s of ", 5)){ X+ /* but don't singularize "gauntlets" */ X+ if(strncmp(p-8, "gauntlet", 8)) X+ while(*p = p[1]) p++; X+ return; X+ } X+ X+ /* remove -s or -es (boxes) or -ies (rubies) */ X+ p = eos(bp); X+ if(p[-1] == 's') { X+ if(p[-2] == 'e') { X+ if(p[-3] == 'i') { X+ if(!strcmp(p-7, "cookies") || X+ !strcmp(p-4, "pies")) X+ goto mins; X+ Strcpy(p-3, "y"); X+ return; X+ } X+ X+ /* note: cloves / knives from clove / knife */ X+ if(!strcmp(p-6, "knives")) { X+ Strcpy(p-3, "fe"); X+ return; X+ } X+ X+ if(!strcmp(p-6, "staves")) { X+ Strcpy(p-3, "ff"); X+ return; X+ } X+ X+ /* note: nurses, axes but boxes */ X+ if(!strcmp(p-5, "boxes")) { X+ p[-2] = 0; X+ return; X+ } X+ } X+ /* but don't singularize boots or gloves */ X+ else if(!strcmp(p-5, "boots") || X+ !strcmp(p-6, "gloves")) X+ return; X+ mins: X+ p[-1] = 0; X+ } else { X+ if(!strcmp(p-5, "teeth")) { X+ Strcpy(p-5, "tooth"); X+ return; X+ } X+ /* here we cannot find the plural suffix */ X+ } X+ } X+ X /* Return something wished for. If not an object, return &zeroobj; if an error X * (no matching object), return (struct obj *)0. Giving readobjnam() a null X * pointer skips the error return and creates a random object instead. X*************** X*** 994,1002 **** X /* "helmet called telepathy" is not "helmet" (a specific type) X * "shield called reflection" is not "shield" (a general type) X */ X! for(i=0; i<ARMOR_CLASSES; i++) X! if(!strncmp(bp,armor_classes[i], strlen(armor_classes[i]))){ X! let = ARMOR_SYM; X goto srch; X } X } X--- 1087,1095 ---- X /* "helmet called telepathy" is not "helmet" (a specific type) X * "shield called reflection" is not "shield" (a general type) X */ X! for(i = 0; i < SIZE(o_ranges); i++) X! if(!strcmp(bp, o_ranges[i].name)) { X! let = o_ranges[i].osym; X goto srch; X } X } X*************** X*** 1042,1100 **** X } X X /* first change to singular if necessary */ X! if(cnt != 1) { X! /* find "cloves of garlic", "worthless pieces of blue glass" */ X! for(p = bp; *p; p++) X! if(!strncmp(p, "s of ", 5)){ X! /* but don't singularize "gauntlets" */ X! if(strncmp(p-8, "gauntlet", 8)) X! while(*p = p[1]) p++; X! goto sing; X! } X! /* remove -s or -es (boxes) or -ies (rubies) */ X! p = eos(bp); X! if(p[-1] == 's') { X! if(p[-2] == 'e') { X! if(p[-3] == 'i') { X! X! if(!strcmp(p-7, "cookies") || X! !strcmp(p-4, "pies")) X! goto mins; X! Strcpy(p-3, "y"); X! goto sing; X! } X! X! /* note: cloves / knives from clove / knife */ X! if(!strcmp(p-6, "knives")) { X! Strcpy(p-3, "fe"); X! goto sing; X! } X! X! if(!strcmp(p-6, "staves")) { X! Strcpy(p-3, "ff"); X! goto sing; X! } X X- /* note: nurses, axes but boxes */ X- if(!strcmp(p-5, "boxes")) { X- p[-2] = 0; X- goto sing; X- } X- } X- /* but don't singularize boots or gloves */ X- else if(!strcmp(p-5, "boots") || X- !strcmp(p-6, "gloves")) X- goto sing; X- mins: X- p[-1] = 0; X- } else { X- if(!strcmp(p-5, "teeth")) { X- Strcpy(p-5, "tooth"); X- goto sing; X- } X- /* here we cannot find the plural suffix */ X- } X- } X sing: X /* Maybe we need a special strcmp() which ignores capitalization and X * dashes/spaces/underscores, so the below 3 special cases would be X--- 1135,1143 ---- X } X X /* first change to singular if necessary */ X! if(cnt != 1) X! singularize(bp); X X sing: X /* Maybe we need a special strcmp() which ignores capitalization and X * dashes/spaces/underscores, so the below 3 special cases would be X*************** X*** 1229,1255 **** X typ = HEAVY_IRON_BALL; X goto typfnd; X } X! if(!strcmp(bp, "bag")) { X! typ = rnd_class(SACK, BAG_OF_TRICKS); X! goto typfnd; X! } X! if(!strcmp(bp, armor_classes[0])){ /* pair of gloves */ X! typ = rnd_class(LEATHER_GLOVES, GAUNTLETS_OF_DEXTERITY); X! goto typfnd; X! } X! if(!strcmp(bp, armor_classes[1])){ /* pair of boots */ X! typ = rnd_class(LOW_BOOTS, LEVITATION_BOOTS); X! goto typfnd; X! } X! if(!strcmp(bp, armor_classes[2])){ /* cloak */ X! typ = rnd_class(MUMMY_WRAPPING, CLOAK_OF_DISPLACEMENT); X! goto typfnd; X! } X! if(!strcmp(bp, armor_classes[3])){ /* shield */ X! typ = rnd_class(SMALL_SHIELD, SHIELD_OF_REFLECTION); X goto typfnd; X! } X! /* helmet is not generic */ X X an = bp; X if (!dn) dn = an; /* ex. "black cap" */ X--- 1272,1282 ---- X typ = HEAVY_IRON_BALL; X goto typfnd; X } X! for (i = 0; i < SIZE(o_ranges); i++) X! if(!strcmp(bp, o_ranges[i].name)) { X! typ = rnd_class(o_ranges[i].f_o_range, o_ranges[i].l_o_range); X goto typfnd; X! } X X an = bp; X if (!dn) dn = an; /* ex. "black cap" */ X*************** X*** 1332,1337 **** X--- 1359,1365 ---- X else if (wizard) /* no alteration to spe */ ; X #endif X else if (let == ARMOR_SYM || let == WEAPON_SYM || typ == PICK_AXE || X+ typ == UNICORN_HORN || X (let==RING_SYM && objects[typ].oc_charged)) { X if(spe > rnd(5) && spe > otmp->spe) spe = 0; X if(spe > 2 && u.uluck < 0) spesgn = -1; X*************** X*** 1461,1467 **** X if (name) otmp = oname(otmp, name, 0); X otmp->owt = weight(otmp); X if (heavy) otmp->owt += 15; X! if (halfeaten && otmp->olet == FOOD_SYM) otmp->oeaten = TRUE; X return(otmp); X } X X--- 1489,1503 ---- X if (name) otmp = oname(otmp, name, 0); X otmp->owt = weight(otmp); X if (heavy) otmp->owt += 15; X! if (halfeaten && otmp->olet == FOOD_SYM) { X! if (otmp->otyp == CORPSE) X! otmp->oeaten = mons[otmp->corpsenm].cnutrit; X! else otmp->oeaten = objects[otmp->otyp].nutrition; X! otmp->owt /= 2; X! otmp->oeaten /= 2; X! if (!otmp->owt) otmp->owt = 1; X! if (!otmp->oeaten) otmp->oeaten = 1; X! } X return(otmp); X } X X*** src/Old/options.c Sun Nov 19 13:53:46 1989 X--- src/options.c Fri Nov 17 19:31:59 1989 X*************** X*** 1,4 **** X! /* SCCS Id: @(#)options.c 3.0 88/11/09 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: @(#)options.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*** 5,12 **** X #include "hack.h" X static boolean set_order; X X! static void nmcpy P((char *, char *, int)); X! static int next_opt P((char *)); X X void X initoptions() X--- 5,12 ---- X #include "hack.h" X static boolean set_order; X X! static void FDECL(nmcpy, (char *, char *, int)); X! static int FDECL(next_opt, (char *)); X X void X initoptions() X*************** X*** 143,192 **** X register unsigned int *graph_ints; X register int glth; X { X! #define SETPCHAR(f, n) showsyms.f = (glth > n) ? graph_ints[n] : defsyms.f X! SETPCHAR(stone, 0); X! SETPCHAR(vwall, 1); X! SETPCHAR(hwall, 2); X! SETPCHAR(tlcorn, 3); X! SETPCHAR(trcorn, 4); X! SETPCHAR(blcorn, 5); X! SETPCHAR(brcorn, 6); X! SETPCHAR(crwall, 7); X! SETPCHAR(tuwall, 8); X! SETPCHAR(tdwall, 9); X! SETPCHAR(tlwall, 10); X! SETPCHAR(trwall, 11); X! SETPCHAR(vbeam, 12); X! SETPCHAR(hbeam, 13); X! SETPCHAR(lslant, 14); X! SETPCHAR(rslant, 15); X! SETPCHAR(door, 16); X! SETPCHAR(room, 17); X! SETPCHAR(corr, 18); X! SETPCHAR(upstair, 19); X! SETPCHAR(dnstair, 20); X! SETPCHAR(trap, 21); X! SETPCHAR(web, 22); X! SETPCHAR(pool, 23); X! #ifdef FOUNTAINS X! SETPCHAR(fountain, 24); X! #endif X! #ifdef SINKS X! SETPCHAR(sink, 25); X! #endif X! #ifdef THRONES X! SETPCHAR(throne, 26); X! #endif X! #ifdef ALTARS X! SETPCHAR(altar, 27); X! #endif X! #ifdef STRONGHOLD X! SETPCHAR(upladder, 28); X! SETPCHAR(dnladder, 29); X! SETPCHAR(dbvwall, 30); X! SETPCHAR(dbhwall, 31); X! #endif X! #undef SETPCHAR X } X X void X--- 143,155 ---- X register unsigned int *graph_ints; X register int glth; X { X! register int i; X! X! if (glth > MAXPCHARS) glth = MAXPCHARS; /* sanity check */ X! for (i = 0; i < glth; i++) X! showsyms[i] = graph_ints[i]; X! for (i = glth; i < MAXPCHARS; i++) X! showsyms[i] = defsyms[i]; X } X X void END_OF_FILE if test 57020 -ne `wc -c <'patches06i'`; then echo shar: \"'patches06i'\" unpacked with wrong size! fi # end of 'patches06i' fi echo shar: End of archive 9 \(of 15\). cp /dev/null ark9isdone 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