mike@genpyr.UUCP (Mike Stephenson) (04/29/88)
The following is a reposting of Part 11 of 12 (actually 13 due to an error on my part) of the NetHack 2.3 Update Kit. I will also be postint the final two parts today. -------------------------------cut here--------------------------------------- #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # Update.2.3.f # This archive created: Mon Apr 4 08:52:38 1988 export PATH; PATH=/bin:$PATH echo shar: extracting "'Update.2.3.f'" '(35693 characters)' if test -f 'Update.2.3.f' then echo shar: will not over-write existing file "'Update.2.3.f'" else cat << \SHAR_EOF > 'Update.2.3.f' *** ./shk.c.orig Mon Feb 22 08:40:15 1988 --- ./shk.c Thu Mar 31 09:08:51 1988 *************** *** 1,4 ! /* SCCS Id: @(#)shk.c 2.1 87/08/23 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" --- 1,4 ----- ! /* SCCS Id: @(#)shk.c 2.3 88/01/24 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" *************** *** 4,10 #include "hack.h" #ifdef QUEST int shlevel = 0; ! struct monst *shopkeeper = 0; struct obj *billobjs = 0; obfree(obj,merge) register struct obj *obj, *merge; { free((char *) obj); --- 4,10 ----- #include "hack.h" #ifdef QUEST int shlevel = 0; ! struct monst *mkmon_at(), *shopkeeper = 0; struct obj *billobjs = 0; obfree(obj,merge) register struct obj *obj, *merge; { free((char *) obj); *************** *** 223,230 if(!ESHK(shopkeeper)->following) { boolean box, pick; ! pline("Hello %s! Welcome%s to %s's %s!", ! plname, ESHK(shopkeeper)->visitct++ ? " again" : "", shkname(shopkeeper), shtypes[rt - SHOPBASE].name); --- 223,230 ----- if(!ESHK(shopkeeper)->following) { boolean box, pick; ! pline("Hello %s%s! Welcome%s to %s's %s!", ! (Badged) ? "Officer " : "", plname, ESHK(shopkeeper)->visitct++ ? " again" : "", shkname(shopkeeper), shtypes[rt - SHOPBASE].name); *************** *** 547,552 addtobill(obj) register struct obj *obj; { register struct bill_x *bp; char buf[40]; if(!inshop() || (u.ux == ESHK(shopkeeper)->shk.x && u.uy == ESHK(shopkeeper)->shk.y) || (u.ux == ESHK(shopkeeper)->shd.x && u.uy == ESHK(shopkeeper)->shd.y) || --- 547,553 ----- addtobill(obj) register struct obj *obj; { register struct bill_x *bp; char buf[40]; + extern char *typename(); if(!inshop() || (u.ux == ESHK(shopkeeper)->shk.x && u.uy == ESHK(shopkeeper)->shk.y) || (u.ux == ESHK(shopkeeper)->shd.x && u.uy == ESHK(shopkeeper)->shd.y) || *************** *** 572,578 strcpy(buf, "For you, "); if (ANGRY(shopkeeper)) strcat(buf, "scum "); else { ! switch(rnd(4) + u.udemigod) { case 1: strcat(buf, "good"); break; case 2: strcat(buf, "honored"); --- 573,583 ----- strcpy(buf, "For you, "); if (ANGRY(shopkeeper)) strcat(buf, "scum "); else { ! switch(rnd(4) ! #ifdef HARD ! + u.udemigod ! #endif ! ) { case 1: strcat(buf, "good"); break; case 2: strcat(buf, "honored"); *************** *** 589,595 } pline("%s; only %d %s %s.", buf, bp->price, (bp->bquan > 1) ? "per" : "for this", ! typename(obj->otyp)); ESHK(shopkeeper)->billct++; obj->unpaid = 1; --- 594,600 ----- } pline("%s; only %d %s %s.", buf, bp->price, (bp->bquan > 1) ? "per" : "for this", ! typename((int)obj->otyp)); ESHK(shopkeeper)->billct++; obj->unpaid = 1; *************** *** 915,922 } if(ESHK(shkp)->following) { if(strncmp(ESHK(shkp)->customer, plname, PL_NSIZ)){ ! pline("Hello %s! I was looking for %s.", ! plname, ESHK(shkp)->customer); ESHK(shkp)->following = 0; return(0); } --- 920,928 ----- } if(ESHK(shkp)->following) { if(strncmp(ESHK(shkp)->customer, plname, PL_NSIZ)){ ! pline("Hello %s%s! I was looking for %s.", ! (Badged) ? "Officer " : "", ! plname, ESHK(shkp)->customer); ESHK(shkp)->following = 0; return(0); } *************** *** 925,932 return(0); } if(moves > followmsg+4) { ! pline("Hello %s! Didn't you forget to pay?", ! plname); followmsg = moves; #ifdef HARD if (!rn2(5)) { --- 931,938 ----- return(0); } if(moves > followmsg+4) { ! pline("Hello %s%s! Didn't you forget to pay?", ! (Badged) ? "Officer " : "", plname); followmsg = moves; if (Badged) pline ("You should be upholding the law!"); *************** *** 928,933 pline("Hello %s! Didn't you forget to pay?", plname); followmsg = moves; #ifdef HARD if (!rn2(5)) { pline ("%s doesn't like customers who don't pay.", Monnam(shkp)); --- 934,941 ----- pline("Hello %s%s! Didn't you forget to pay?", (Badged) ? "Officer " : "", plname); followmsg = moves; + if (Badged) + pline ("You should be upholding the law!"); #ifdef HARD if (!rn2((Badged) ? 3 : 5)) { pline ("%s doesn't like customers who don't pay.", Monnam(shkp)); *************** *** 929,935 plname); followmsg = moves; #ifdef HARD ! if (!rn2(5)) { pline ("%s doesn't like customers who don't pay.", Monnam(shkp)); NOTANGRY(shkp) = 0; } --- 937,943 ----- if (Badged) pline ("You should be upholding the law!"); #ifdef HARD ! if (!rn2((Badged) ? 3 : 5)) { pline ("%s doesn't like customers who don't pay.", Monnam(shkp)); NOTANGRY(shkp) = 0; } *************** *** 971,978 u.uy == ESHK(shkp)->shd.y); if(uondoor) { if(ESHK(shkp)->billct) ! pline("Hello %s! Will you please pay before leaving?", ! plname); badinv = (carrying(PICK_AXE) || carrying(ICE_BOX)); if(satdoor && badinv) return(0); --- 979,986 ----- u.uy == ESHK(shkp)->shd.y); if(uondoor) { if(ESHK(shkp)->billct) ! pline("Hello %s%s! Will you please pay before leaving?", ! (Badged) ? "Officer " : "", plname); badinv = (carrying(PICK_AXE) || carrying(ICE_BOX)); if(satdoor && badinv) return(0); *** ./shknam.c.orig Mon Feb 22 08:40:16 1988 --- ./shknam.c Thu Mar 31 08:49:56 1988 *************** *** 1,4 ! /* SCCS Id: @(#)shknam.c 2.1 87/09/23 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* shknam.c -- initialize a shop */ --- 1,4 ----- ! /* SCCS Id: @(#)shknam.c 2.3 87/12/18 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* shknam.c -- initialize a shop */ *************** *** 8,13 #include "eshk.h" extern struct monst *makemon(); static char *shkliquors[] = { /* Ukraine */ --- 8,14 ----- #include "eshk.h" extern struct monst *makemon(); + extern struct obj *mkobj_at(), *mksobj_at(); static char *shkliquors[] = { /* Ukraine */ *************** *** 155,161 {"jewelers", RING_SYM, 3, D_SHOP, {{90, RING_SYM}, {10, GEM_SYM}, {0, 0}}, shkrings}, {"quality apparel and accessories", WAND_SYM, 3, D_SHOP, ! {{90, WAND_SYM}, {5, -PAIR_OF_GLOVES}, {5, -ELVEN_CLOAK}}, shkwands}, #ifdef SPELLS {"rare books", SPBOOK_SYM, 3, D_SHOP, --- 156,162 ----- {"jewelers", RING_SYM, 3, D_SHOP, {{90, RING_SYM}, {10, GEM_SYM}, {0, 0}}, shkrings}, {"quality apparel and accessories", WAND_SYM, 3, D_SHOP, ! {{90, WAND_SYM}, {5, -PAIR_OF_GLOVES}, {5, -ELVEN_CLOAK}, {0, 0}}, shkwands}, #ifdef SPELLS {"rare books", SPBOOK_SYM, 3, D_SHOP, *************** *** 175,181 int atype; /* select an appropriate artifact type at random */ ! for(j = rn2(100), i = 0; j -= shp->iprobs[i].iprob; i++) if (j < 0) break; --- 176,182 ----- int atype; /* select an appropriate artifact type at random */ ! for(j = rnd(100), i = 0; j -= shp->iprobs[i].iprob; i++) if (j < 0) break; *************** *** 323,329 if(shtypes[nshop].symb == RANDOM_SYM) return(1); else { for(i = 0; shtypes[nshop].iprobs[i].iprob; i++) ! if(shtypes[nshop].iprobs[i].itype == obj->olet) return(1); } return(0); } --- 324,333 ----- if(shtypes[nshop].symb == RANDOM_SYM) return(1); else { for(i = 0; shtypes[nshop].iprobs[i].iprob; i++) ! if(shtypes[nshop].iprobs[i].itype < 0) { ! if(shtypes[nshop].iprobs[i].itype == - obj->otyp) return(1); ! } ! else if(shtypes[nshop].iprobs[i].itype == obj->olet) return(1); } return(0); } *** ./sit.c.orig Mon Feb 22 08:40:16 1988 --- ./sit.c Thu Feb 11 13:59:21 1988 *************** *** 1,4 ! /* SCCS Id: @(#)sit.c 2.1 87/11/09 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" --- 1,4 ----- ! /* SCCS Id: @(#)sit.c 2.3 88/02/02 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" *************** *** 40,47 gainstr(0); break; case 3: ! pline("A massive charge of electricity shoots through your body!"); ! losehp(rnd(30), "electric chair"); break; case 4: pline("you feel much, much better!"); --- 40,50 ----- gainstr(0); break; case 3: ! pline("A%s charge of electricity shoots through your body!", ! (Shock_resistance) ? "" : " massive"); ! if(Shock_resistance) ! losehp(rnd(6), "electric chair"); ! else losehp(rnd(30), "electric chair"); break; case 4: pline("you feel much, much better!"); *************** *** 66,72 if(u.uluck + rn2(5) < 0) { pline("you feel your luck is changing."); ! u.uluck++; } else makewish(); break; case 7: --- 69,75 ----- if(u.uluck + rn2(5) < 0) { pline("you feel your luck is changing."); ! change_luck(1); } else makewish(); break; case 7: *************** *** 160,162 } } #endif --- 163,225 ----- } } #endif + + attrcurse() { /* remove a random INTRINSIC ability */ + switch(rnd(10)) { + case 1 : if (HFire_resistance & INTRINSIC) { + HFire_resistance &= ~INTRINSIC; + if (Inhell && !Fire_resistance) { + pline("You burn to a crisp."); + killer = "gremlin curse"; + done("died"); + } else pline("You feel warmer!"); + break; + } + case 2 : if (HTeleportation & INTRINSIC) { + HTeleportation &= ~INTRINSIC; + pline("You don't feel jumpy!"); + break; + } + case 3 : if (HPoison_resistance & INTRINSIC) { + HPoison_resistance &= ~INTRINSIC; + pline("You feel a little sick!"); + break; + } + case 4 : if (HTelepat & INTRINSIC) { + HTelepat &= ~INTRINSIC; + pline("Your senses fail!"); + break; + } + case 5 : if (HCold_resistance & INTRINSIC) { + HCold_resistance &= ~INTRINSIC; + pline("You feel colder!"); + break; + } + case 6 : if (HInvis & INTRINSIC) { + HInvis &= ~INTRINSIC; + pline("You feel paranoid!"); + break; + } + case 7 : if (HSee_invisible & INTRINSIC) { + HSee_invisible &= ~INTRINSIC; + pline("You think you see something!"); + break; + } + case 8 : if (Fast & INTRINSIC) { + Fast &= ~INTRINSIC; + pline("You feel slower!"); + break; + } + case 9 : if (Stealth & INTRINSIC) { + Stealth &= ~INTRINSIC; + pline("You feel clumsy!"); + break; + } + case 10: if (Protection & INTRINSIC) { + Protection &= ~INTRINSIC; + pline("You feel vulnerable!"); + break; + } + default: break; + } + } *** ./spell.c.orig Mon Feb 22 08:40:16 1988 --- ./spell.c Thu Mar 31 11:19:13 1988 *************** *** 1,4 ! /* SCCS Id: @(#)spell.c 2.1 87/10/07 */ #include "hack.h" --- 1,4 ----- ! /* SCCS Id: @(#)spell.c 2.3 87/12/12 */ #include "hack.h" *************** *** 304,313 mtmp = makedog(); if(mtmp) { ! /* make it into something else */ ! (void) newcham(mtmp, &mons[dlevel+14+rn2(CMNUM-14-dlevel)]); ! if(confused) ! mtmp->mtame = mtmp->mpeaceful = 0; } } break; --- 304,318 ----- mtmp = makedog(); if(mtmp) { ! /* make it into something else */ ! (void) newcham(mtmp, ! #ifndef RPH ! &mons[dlevel+14+rn2(CMNUM-14-dlevel)]); ! #else ! (struct pemonst *)0); ! #endif ! if(confused) ! mtmp->mtame = mtmp->mpeaceful = 0; } } break; *************** *** 376,381 dovspell() { register int max, i, side; char buf[BUFSZ], *spellname(); --- 381,387 ----- dovspell() { register int max, i, side; + extern char morc; char buf[BUFSZ], any[BUFSZ], *spellname(); *************** *** 377,382 register int max, i, side; char buf[BUFSZ], *spellname(); if (spl_book[0].sp_id == NO_SPELL) { --- 383,389 ----- register int max, i, side; extern char morc; char buf[BUFSZ], + any[BUFSZ], *spellname(); if (spl_book[0].sp_id == NO_SPELL) { *************** *** 383,389 pline("You don't know any spells right now."); return(0); ! } else { for(max = 1; (max < MAXSPELL) && (spl_book[max].sp_id != NO_SPELL); max++); if (max >= MAXSPELL) { --- 390,396 ----- pline("You don't know any spells right now."); return(0); ! } for(max = 1; (max < MAXSPELL) && (spl_book[max].sp_id != NO_SPELL); max++); if (max >= MAXSPELL) { *************** *** 385,392 return(0); } else { ! for(max = 1; (max < MAXSPELL) && (spl_book[max].sp_id != NO_SPELL); max++); ! if (max >= MAXSPELL) { impossible("Too many spells memorized."); return(0); --- 392,399 ----- return(0); } ! for(max = 1; (max < MAXSPELL) && (spl_book[max].sp_id != NO_SPELL); max++); ! if (max >= MAXSPELL) { impossible("Too many spells memorized."); return(0); *************** *** 390,396 impossible("Too many spells memorized."); return(0); - } } set_pager(0); side = (max + 1) / 2; --- 397,402 ----- impossible("Too many spells memorized."); return(0); } morc = 0; /* just to be sure */ cornline(0, "Currently known spells:"); *************** *** 392,400 return(0); } } ! set_pager(0); ! side = (max + 1) / 2; ! if(page_line("Currently known spells:") || page_line("")) goto quit; for(i = 1; i <= side; i++) { --- 398,405 ----- impossible("Too many spells memorized."); return(0); } ! morc = 0; /* just to be sure */ ! cornline(0, "Currently known spells:"); for(i = 1; i <= max; i++) { *************** *** 396,402 side = (max + 1) / 2; if(page_line("Currently known spells:") || page_line("")) goto quit; ! for(i = 1; i <= side; i++) { if((i < side) || !(max % 2)) { --- 401,407 ----- morc = 0; /* just to be sure */ cornline(0, "Currently known spells:"); ! for(i = 1; i <= max; i++) { (void) sprintf(buf, "%c - %s (%d)", spellet(i),spellname(i),spellev(i)); *************** *** 398,404 for(i = 1; i <= side; i++) { ! if((i < side) || !(max % 2)) { (void) sprintf(buf, "%c - (%d) %22s %c - (%d) %22s", spellet(i), spellev(i), spellname(i), --- 403,415 ----- for(i = 1; i <= max; i++) { ! (void) sprintf(buf, "%c - %s (%d)", ! spellet(i),spellname(i),spellev(i)); ! cornline(1, buf); ! any[i-1] = spellet(i); ! } ! any[i-1] = 0; ! cornline(2, any); return(0); } *************** *** 400,419 if((i < side) || !(max % 2)) { - (void) sprintf(buf, "%c - (%d) %22s %c - (%d) %22s", - spellet(i), spellev(i), spellname(i), - spellet(i + side), spellev(i + side), spellname(i + side)); - } else { - - (void) sprintf(buf, "%c - (%d) %22s", spellet(i), spellev(i), spellname(i)); - } - if(page_line(buf)) goto quit; - } - - set_pager(1); - return(0); - quit: - set_pager(2); return(0); } --- 411,416 ----- any[i-1] = 0; cornline(2, any); return(0); } *** ./steal.c.orig Mon Feb 22 08:40:17 1988 --- ./steal.c Thu Jan 21 12:58:37 1988 *************** *** 1,4 ! /* SCCS Id: @(#)steal.c 1.4 87/08/08 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* steal.c - version 1.0.3 */ --- 1,4 ----- ! /* SCCS Id: @(#)steal.c 2.3 88/01/21 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" *************** *** 1,6 /* SCCS Id: @(#)steal.c 1.4 87/08/08 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ - /* steal.c - version 1.0.3 */ #include "hack.h" --- 1,5 ----- /* SCCS Id: @(#)steal.c 2.3 88/01/21 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" *************** *** 103,110 otmp->cursed = 0; stop_occupation(); if(flags.female) ! pline("%s charms you. You gladly hand over your humble garments.", ! Monnam(mtmp)); else pline("%s seduces you and %s off your %s.", Amonnam(mtmp, Blind ? "gentle" : "beautiful"), --- 102,116 ----- otmp->cursed = 0; stop_occupation(); if(flags.female) ! pline("%s charms you. You gladly %s your %s.", ! Monnam(mtmp), ! curssv ? "hand over" ! : "let her take", ! #ifdef SHIRT ! (otmp == uarmu) ? "shirt" : ! #endif ! (otmp == uarmg) ? "gloves" : ! (otmp == uarmh) ? "helmet" : "armor"); else pline("%s seduces you and %s off your %s.", Amonnam(mtmp, Blind ? "gentle" : "beautiful"), *************** *** 108,115 else pline("%s seduces you and %s off your %s.", Amonnam(mtmp, Blind ? "gentle" : "beautiful"), ! otmp->cursed ? "helps you to take" ! : "you start taking", (otmp == uarmg) ? "gloves" : (otmp == uarmh) ? "helmet" : "armor"); named++; --- 114,124 ----- else pline("%s seduces you and %s off your %s.", Amonnam(mtmp, Blind ? "gentle" : "beautiful"), ! curssv ? "helps you to take" ! : "you start taking", ! #ifdef SHIRT ! (otmp == uarmu) ? "shirt" : ! #endif (otmp == uarmg) ? "gloves" : (otmp == uarmh) ? "helmet" : "armor"); named++; *** ./trap.c.orig Mon Feb 22 08:40:18 1988 --- ./trap.c Thu Mar 31 08:39:10 1988 *************** *** 1,4 ! /* SCCS Id: @(#)trap.c 2.1 87/10/18 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include <stdio.h> --- 1,4 ----- ! /* SCCS Id: @(#)trap.c 2.3 87/12/16 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include <stdio.h> *************** *** 5,10 #include "hack.h" extern struct monst *makemon(); #ifdef KAA extern char *Xmonnam(); extern char *nomovemsg; --- 5,12 ----- #include "hack.h" extern struct monst *makemon(); + extern struct obj *mksobj_at(); + #ifdef KAA extern char *Xmonnam(); extern char *nomovemsg; *************** *** 40,46 #ifdef KAA ," rust trap" # ifdef RPH ! ,"polymorph trap" # endif #endif }; --- 42,48 ----- #ifdef KAA ," rust trap" # ifdef RPH ! ," polymorph trap" # endif #endif #ifdef SAC *************** *** 43,48 ,"polymorph trap" # endif #endif }; struct trap * --- 45,53 ----- ," polymorph trap" # endif #endif + #ifdef SAC + ," land mine" + #endif }; struct trap * *************** *** 301,306 } break; #endif default: impossible("You hit a trap of type %u", trap->ttyp); } --- 306,329 ----- } break; #endif + #ifdef SAC + case LANDMINE: { + register struct monst *mtmp = fmon; + + pline("KAABLAMM!!! You stepped on a land mine!"); + losehp(rnd(16), "land mine"); + set_wounded_legs(LEFT_SIDE, 40 + rnd(35)); + set_wounded_legs(RIGHT_SIDE, 40 + rnd(35)); + /* wake everything on the level */ + while(mtmp) { + if(mtmp->msleep) + mtmp->msleep = 0; + mtmp = mtmp->nmon; + } + deltrap(t_at(u.ux, u.uy)); /* mines only explode once */ + break; + } + #endif /* SAC */ default: impossible("You hit a trap of type %u", trap->ttyp); } *************** *** 450,455 #ifdef SPELLS case ANTI_MAGIC: break; #endif default: impossible("Some monster encountered a strange trap of type %d.",tt); } --- 473,500 ----- #ifdef SPELLS case ANTI_MAGIC: break; #endif + #ifdef SAC + case LANDMINE: { + register struct monst *mntmp = fmon; + + if(rn2(3)) + break; /* monsters usually don't set it off */ + if(in_sight) + pline("KAABLAMM!!! %s steps on a land mine!", + Monnam(mtmp)); + else + pline("Kaablamm! You hear an explosion in the distance!"); + mtmp->mhp -= rn2(16); + deltrap(t_at(mtmp->mx, mtmp->my)); + /* wake everything on the level */ + while(mntmp) { + if(mntmp->msleep) + mntmp->msleep = 0; + mntmp = mntmp->nmon; + } + break; + } + #endif default: impossible("Some monster encountered a strange trap of type %d.",tt); } *************** *** 684,690 newlevel = atoi(buf); } else { #ifdef DGKMOD ! newlevel = rn2(5) | !Fire_resistance ? rnz(dlevel + 3) : 30; #else newlevel = rnz(dlevel + 3); /* 5 - 24 */ #endif --- 729,735 ----- newlevel = atoi(buf); } else { #ifdef DGKMOD ! newlevel = rn2(5) | !Fire_resistance ? rnd(dlevel + 3) : 30; #else newlevel = rnd(dlevel + 3); /* 5 - 24 */ #endif *************** *** 686,692 #ifdef DGKMOD newlevel = rn2(5) | !Fire_resistance ? rnz(dlevel + 3) : 30; #else ! newlevel = rnz(dlevel + 3); /* 5 - 24 */ #endif if(dlevel == newlevel) if(!xdnstair) newlevel--; else newlevel++; --- 731,737 ----- #ifdef DGKMOD newlevel = rn2(5) | !Fire_resistance ? rnd(dlevel + 3) : 30; #else ! newlevel = rnd(dlevel + 3); /* 5 - 24 */ #endif if(dlevel == newlevel) if(!xdnstair) newlevel--; else newlevel++; *** ./u_init.c.orig Mon Feb 22 08:40:18 1988 --- ./u_init.c Thu Feb 11 11:09:40 1988 *************** *** 1,4 ! /* SCCS Id: @(#)u_init.c 2.0 87/09/15 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include <stdio.h> --- 1,4 ----- ! /* SCCS Id: @(#)u_init.c 2.3 88/01/21 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include <stdio.h> *************** *** 123,128 }; #endif #ifdef WALKIES struct trobj Leash[] = { { LEASH, 0, TOOL_SYM, 1, 0 }, --- 123,133 ----- }; #endif + struct trobj Lamp[] = { + { LAMP, 5, TOOL_SYM, 1, 0 }, + { 0, 0, 0, 0, 0 } + }; + #ifdef WALKIES struct trobj Leash[] = { { LEASH, 0, TOOL_SYM, 1, 0 }, *************** *** 141,146 { POT_EXTRA_HEALING, 0, POTION_SYM, 2, 0 }, { EXPENSIVE_CAMERA, 0, TOOL_SYM, 1, 1 }, { DART, 2, WEAPON_SYM, 25, 1 }, /* quan is variable */ { 0, 0, 0, 0, 0 } }; --- 146,154 ----- { POT_EXTRA_HEALING, 0, POTION_SYM, 2, 0 }, { EXPENSIVE_CAMERA, 0, TOOL_SYM, 1, 1 }, { DART, 2, WEAPON_SYM, 25, 1 }, /* quan is variable */ + #ifdef SHIRT + { HAWAIIAN_SHIRT, 0, ARMOR_SYM, 1, 1 }, + #endif { 0, 0, 0, 0, 0 } }; *************** *** 281,286 u = zerou; u.usym = '@'; u.ulevel = 1; init_uhunger(); uarm = uarm2 = uarmh = uarms = uarmg = uwep = uball = uchain = uleft = uright = 0; --- 289,295 ----- u = zerou; u.usym = '@'; u.ulevel = 1; + u.uluck = 0; init_uhunger(); uarm = uarm2 = uarmh = uarms = uarmg = uwep = #ifdef SHIRT *************** *** 283,288 u.ulevel = 1; init_uhunger(); uarm = uarm2 = uarmh = uarms = uarmg = uwep = uball = uchain = uleft = uright = 0; #ifdef SPELLS --- 292,300 ----- u.uluck = 0; init_uhunger(); uarm = uarm2 = uarmh = uarms = uarmg = uwep = + #ifdef SHIRT + uarmu = + #endif uball = uchain = uleft = uright = 0; #ifdef SPELLS *************** *** 322,327 u.ustr = u.ustrmax = 8; ini_inv(Tourist); if(!rn2(25)) ini_inv(Tinopener); #ifdef MARKER else if(!rn2(25)) ini_inv(Magicmarker); #endif --- 334,340 ----- u.ustr = u.ustrmax = 8; ini_inv(Tourist); if(!rn2(25)) ini_inv(Tinopener); + else if(!rn2(4)) ini_inv(Lamp); #ifdef MARKER else if(!rn2(25)) ini_inv(Magicmarker); #endif *************** *** 368,373 u.ustr = u.ustrmax = 16; ini_inv(Elf); if(!rn2(5)) ini_inv(Blindfold); break; case 'v': case 'V': --- 381,387 ----- u.ustr = u.ustrmax = 16; ini_inv(Elf); if(!rn2(5)) ini_inv(Blindfold); + else if(!rn2(6)) ini_inv(Lamp); break; case 'v': case 'V': *************** *** 377,382 u.uhp = u.uhpmax = 16; u.ustr = u.ustrmax = 17; ini_inv(Valkyrie); break; case 'h': case 'H': --- 391,397 ----- u.uhp = u.uhpmax = 16; u.ustr = u.ustrmax = 17; ini_inv(Valkyrie); + if(!rn2(6)) ini_inv(Lamp); break; case 'h': case 'H': *************** *** 386,391 u.uhp = u.uhpmax = 16; u.ustr = u.ustrmax = 15; ini_inv(Healer); break; #endif case 'k': --- 401,407 ----- u.uhp = u.uhpmax = 16; u.ustr = u.ustrmax = 15; ini_inv(Healer); + if(!rn2(25)) ini_inv(Lamp); break; #endif case 'k': *************** *** 399,404 u.uhp = u.uhpmax = 14; u.ustr = u.ustrmax = 17; ini_inv(Barbarian); break; #ifdef NEWCLASS case 's': --- 415,421 ----- u.uhp = u.uhpmax = 14; u.ustr = u.ustrmax = 17; ini_inv(Barbarian); + if(!rn2(6)) ini_inv(Lamp); break; #ifdef NEWCLASS case 's': *************** *** 433,438 # ifdef MARKER if(!rn2(10)) ini_inv(Magicmarker); # endif objects[POT_HOLY_WATER].oc_name_known = 1; break; #endif /* NEWCLASS /**/ --- 450,456 ----- # ifdef MARKER if(!rn2(10)) ini_inv(Magicmarker); # endif + else if(!rn2(10)) ini_inv(Lamp); objects[POT_HOLY_WATER].oc_name_known = 1; break; #endif /* NEWCLASS /**/ *************** *** 494,499 case PAIR_OF_GLOVES: if(!uarmg) setworn(obj, W_ARMG); break; case ELVEN_CLOAK: if(!uarm2) setworn(obj, W_ARM); --- 512,522 ----- case PAIR_OF_GLOVES: if(!uarmg) setworn(obj, W_ARMG); break; + #ifdef SHIRT + case HAWAIIAN_SHIRT: + if(!uarmu) setworn(obj, W_ARMU); + break; + #endif case ELVEN_CLOAK: if(!uarm2) setworn(obj, W_ARM); *** ./unixmain.c.orig Mon Feb 22 08:40:18 1988 --- ./unixmain.c Thu Mar 31 11:19:13 1988 *************** *** 1,4 ! /* SCCS Id: @(#)unixmain.c 2.1 87/10/18 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* main.c - (Unix) version */ --- 1,4 ----- ! /* SCCS Id: @(#)unixmain.c 2.3 88/01/21 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* main.c - (Unix) version */ *************** *** 232,238 (void) fflush(stdout); if(!dorecover(fd)) goto not_recovered; ! pline("Hello %s, welcome to %s!", plname, gamename); flags.move = 0; } else { not_recovered: --- 232,239 ----- (void) fflush(stdout); if(!dorecover(fd)) goto not_recovered; ! pline("Hello %s%s, welcome to %s!", ! (Badged) ? "Officer " : "", plname, gamename); flags.move = 0; } else { not_recovered: *************** *** 239,245 newgame(); /* give welcome message before pickup messages */ pline("Hello %s, welcome to %s!", plname, gamename); ! pickup(1); read_engr_at(u.ux,u.uy); flags.move = 1; --- 240,255 ----- newgame(); /* give welcome message before pickup messages */ pline("Hello %s, welcome to %s!", plname, gamename); ! #ifdef WIZARD ! if (wizard && dlevel == 1) ! # ifdef STOOGES ! pline ("The wiz is at %d, the medusa is at %d, and the stooges are at %d", ! u.wiz_level, u.medusa_level, u.stooge_level); ! # else ! pline ("The wiz is at %d, and the medusa at %d", ! u.wiz_level, u.medusa_level); ! # endif ! #endif pickup(1); read_engr_at(u.ux,u.uy); flags.move = 1; *************** *** 248,254 flags.moonphase = phase_of_the_moon(); if(flags.moonphase == FULL_MOON) { pline("You are lucky! Full moon tonight."); ! if(!u.uluck) u.uluck++; } else if(flags.moonphase == NEW_MOON) { pline("Be careful! New moon tonight."); } --- 258,264 ----- flags.moonphase = phase_of_the_moon(); if(flags.moonphase == FULL_MOON) { pline("You are lucky! Full moon tonight."); ! if(!u.uluck) change_luck(1); } else if(flags.moonphase == NEW_MOON) { pline("Be careful! New moon tonight."); } *************** *** 512,517 stop_occupation() { if(occupation) { pline("You stop %s.", occtxt); occupation = 0; --- 522,529 ----- stop_occupation() { + extern void pushch(); + if(occupation) { pline("You stop %s.", occtxt); occupation = 0; *************** *** 548,553 } newgame() { fobj = fcobj = invent = 0; fmon = fallen_down = 0; ftrap = 0; --- 560,567 ----- } newgame() { + extern struct monst *makedog(); + fobj = fcobj = invent = 0; fmon = fallen_down = 0; ftrap = 0; *** ./unixtty.c.orig Thu Mar 31 08:57:18 1988 --- ./unixtty.c Thu Mar 31 08:58:06 1988 *************** *** 1,4 ! /* SCCS Id: @(#)unixtty.c 2.1 87/11/09 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* tty.c - (Unix) version */ --- 1,4 ----- ! /* SCCS Id: @(#)unixtty.c 2.3 88/03/31 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* tty.c - (Unix) version */ *************** *** 10,15 #include "extern.h" #include "hack.h" #include "func_tab.h" #define ON 1 #define OFF 0 --- 10,17 ----- #include "extern.h" #include "hack.h" #include "func_tab.h" + + extern void savech(); #define ON 1 #define OFF 0 *** ./unixunix.c.orig Mon Feb 22 08:40:19 1988 --- ./unixunix.c Fri Feb 12 11:06:03 1988 *************** *** 1,4 ! /* SCCS Id: @(#)unixunix.c 1.4 87/08/08 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* hack.unix.c - version 1.0.3 */ --- 1,4 ----- ! /* SCCS Id: @(#)unixunix.c 2.3 87/12/12 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* This file collects some Unix dependencies; pager.c contains some more */ *************** *** 1,6 /* SCCS Id: @(#)unixunix.c 1.4 87/08/08 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ - /* hack.unix.c - version 1.0.3 */ /* This file collects some Unix dependencies; pager.c contains some more */ --- 1,5 ----- /* SCCS Id: @(#)unixunix.c 2.3 87/12/12 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* This file collects some Unix dependencies; pager.c contains some more */ *************** *** 165,171 /* From: Rick Adams <seismo!rick> /* This will work on 4.1cbsd, 4.2bsd and system 3? & 5. /* It will do nothing on V7 or 4.1bsd. */ ! if(!(kill(lockedpid, 0) == -1 && errno == ESRCH)) return(0); } (void) close(fd); --- 164,174 ----- /* From: Rick Adams <seismo!rick> /* This will work on 4.1cbsd, 4.2bsd and system 3? & 5. /* It will do nothing on V7 or 4.1bsd. */ ! #ifndef NETWORK ! /* It will do a VERY BAD THING if the playground is shared ! by more than one machine! -pem */ ! if(!(kill(lockedpid, 0) == -1 && errno == ESRCH)) ! #endif return(0); } (void) close(fd); *************** *** 333,339 if(md = makemon(&pm_mail_daemon, u.ux, u.uy)) /* always succeeds */ mdrush(md,0); ! pline("\"Hello, %s! I have some mail for you.\"", plname); if(md) { if(dist(md->mx,md->my) > 2) pline("\"Catch!\""); --- 336,343 ----- if(md = makemon(&pm_mail_daemon, u.ux, u.uy)) /* always succeeds */ mdrush(md,0); ! pline("\"Hello, %s%s! I have some mail for you.\"", ! (Badged) ? "Officer " : "", plname); if(md) { if(dist(md->mx,md->my) > 2) pline("\"Catch!\""); *** ./version.c.orig Mon Feb 22 08:40:19 1988 --- ./version.c Fri Feb 12 11:18:05 1988 *************** *** 1,4 ! /* SCCS Id: @(#)version.c 2.1 87/11/09 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" --- 1,4 ----- ! /* SCCS Id: @(#)version.c 2.3 88/02/11 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" *************** *** 72,77 pg_line(" Gil Neiger Ralf Brown Eric S. Raymond"); pg_line(" Eric Backus Roland McGrath Greg Laskin"); pg_line(" Bruce Holloway Richard P. Hughey Kevin Sweet"); set_pager(1); return(0); quit: --- 72,79 ----- pg_line(" Gil Neiger Ralf Brown Eric S. Raymond"); pg_line(" Eric Backus Roland McGrath Greg Laskin"); pg_line(" Bruce Holloway Richard P. Hughey Kevin Sweet"); + pg_line(" Steve Linhart Bruce Mewborne Janet Walz"); + pg_line(" and... The Unknown Hacker"); set_pager(1); return(0); quit: *** ./wizard.c.orig Mon Feb 22 08:40:19 1988 --- ./wizard.c Thu Mar 31 08:39:44 1988 *************** *** 1,4 ! /* SCCS Id: @(#)wizard.c 2.2 87/11/29 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* wizard code - inspired by rogue code from Merlyn Leroy (digi-g!brian) */ --- 1,4 ----- ! /* SCCS Id: @(#)wizard.c 2.3 88/02/11 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* wizard code - inspired by rogue code from Merlyn Leroy (digi-g!brian) */ *************** *** 7,13 #include "hack.h" extern struct permonst pm_wizard; extern struct monst *makemon(); ! extern struct obj *carrying(); #if defined(HARD) || defined(DGKMOD) # ifdef SAC --- 7,13 ----- #include "hack.h" extern struct permonst pm_wizard; extern struct monst *makemon(); ! extern struct obj *carrying(), *mksobj_at(); #if defined(HARD) || defined(DGKMOD) # ifdef SAC *************** *** 237,242 range = 0; } tmp_at(bhitpos.x, bhitpos.y); } tmp_at(-1, -1); } --- 237,246 ----- range = 0; } tmp_at(bhitpos.x, bhitpos.y); + #ifdef SINKS + if(IS_SINK(levl[bhitpos.x][bhitpos.y].typ)) + break; /* thrown objects fall on sink */ + #endif } tmp_at(-1, -1); } *************** *** 317,323 #endif case 'D': /* spit fire in the direction of @ (not nec. hitting) */ ! buzz(-1,mtmp->mx,mtmp->my,sgn(tx),sgn(ty)); break; #ifdef HARD case '&': --- 321,328 ----- #endif case 'D': /* spit fire in the direction of @ (not nec. hitting) */ ! buzz((int) - 10 - (mtmp->dragon), ! mtmp->mx,mtmp->my,sgn(tx),sgn(ty)); break; #ifdef HARD case '&': *************** *** 387,393 /* Only if not Invisible */ pline("You hear a clap of thunder!"); /* shoot a bolt of fire or cold, or a sleep ray */ ! buzz(-rnd(3),mtmp->mx,mtmp->my,sgn(tx),sgn(ty)); break; } } --- 392,399 ----- /* Only if not Invisible */ pline("You hear a clap of thunder!"); /* shoot a bolt of fire or cold, or a sleep ray */ ! /* or death, or lightning, but not magic missile */ ! buzz(-rnd(5),mtmp->mx,mtmp->my,sgn(tx),sgn(ty)); break; } } *** ./worn.c.orig Mon Feb 22 08:40:19 1988 --- ./worn.c Thu Jan 21 13:03:24 1988 *************** *** 1,4 ! /* SCCS Id: @(#)worn.c 1.4 87/08/08 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* worn.c - version 1.0.2 */ --- 1,4 ----- ! /* SCCS Id: @(#)worn.c 2.3 88/01/21 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" *************** *** 1,6 /* SCCS Id: @(#)worn.c 1.4 87/08/08 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ - /* worn.c - version 1.0.2 */ #include "hack.h" --- 1,5 ----- /* SCCS Id: @(#)worn.c 2.3 88/01/21 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" *************** *** 13,18 { W_ARMH, &uarmh }, { W_ARMS, &uarms }, { W_ARMG, &uarmg }, { W_RINGL, &uleft }, { W_RINGR, &uright }, { W_WEP, &uwep }, --- 12,18 ----- { W_ARMH, &uarmh }, { W_ARMS, &uarms }, { W_ARMG, &uarmg }, + { W_ARMU, &uarmu }, { W_RINGL, &uleft }, { W_RINGR, &uright }, { W_WEP, &uwep }, SHAR_EOF if test 35693 -ne "`wc -c < 'Update.2.3.f'`" then echo shar: error transmitting "'Update.2.3.f'" '(should have been 35693 characters)' fi fi # end of overwriting check # End of shell archive exit 0 -- Mike Stephenson Mail: Genamation Inc. Phone: (416) 475-9434 351 Steelcase Rd. W Markham, Ontario. UUCP: uunet!{mnetor,utzoo}!genat!genpyr!mike Canada L3R 3W1 uunet!{mnetor,utzoo}!genat!mike