Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

NetHack 2.3 Update Pt. 11 of 12

12 views
Skip to first unread message

Mike Stephenson

unread,
Apr 15, 1988, 7:35:09 AM4/15/88
to

I'm posting the last three parts today. I seem to have posted
one of the kits twice (Update.2.3.d) was posted as part 8 and 9 I think.
Don't worry when you get a "won't overwrite" message when you unshar it.

There is a small set of instructions on top of the last kit.
Please read it before installing.

-------------------------------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

0 new messages