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