home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 January
/
usenetsourcesnewsgroupsinfomagicjanuary1994.iso
/
sources
/
games
/
volume16
/
nethack31
/
patch1h
/
patches01i
Wrap
Text File
|
1993-03-05
|
54KB
|
1,886 lines
*** /tmp/da08606 Thu Feb 25 10:25:21 1993
--- src/sounds.c Thu Feb 18 10:59:37 1993
***************
*** 1,4 ****
! /* SCCS Id: @(#)sounds.c 3.1 92/07/07
/* Copyright (c) 1989 Janet Walz, Mike Threepoint */
/* NetHack may be freely redistributed. See license for details. */
--- 1,4 ----
! /* SCCS Id: @(#)sounds.c 3.1 93/02/09
/* Copyright (c) 1989 Janet Walz, Mike Threepoint */
/* NetHack may be freely redistributed. See license for details. */
***************
*** 64,74 ****
You("hear the tones of courtly conversation.");
break;
case 1:
! You("hear a sceptre being pounded in judgment.");
break;
case 2:
! pline("Someone just shouted \"Off with %s head!\"",
! flags.female ? "her" : "his");
break;
case 3:
You("hear Queen Beruthiel's cats!");
--- 64,74 ----
You("hear the tones of courtly conversation.");
break;
case 1:
! You("hear a sceptre pounded in judgment.");
break;
case 2:
! pline("Someone shouts \"Off with %s head!\"",
! his[flags.female]);
break;
case 3:
You("hear Queen Beruthiel's cats!");
***************
*** 186,195 ****
if (level.flags.has_zoo && !rn2(200)) {
switch (rn2(2)+hallu) {
case 0:
! You("hear a sound reminding you of an elephant stepping on a peanut.");
break;
case 1:
! You("hear a sound reminding you of a trained seal.");
break;
case 2:
You("hear Doctor Doolittle!");
--- 186,195 ----
if (level.flags.has_zoo && !rn2(200)) {
switch (rn2(2)+hallu) {
case 0:
! You("hear a sound reminiscent of an elephant stepping on a peanut.");
break;
case 1:
! You("hear a sound reminiscent of a seal barking.");
break;
case 2:
You("hear Doctor Doolittle!");
***************
*** 421,427 ****
#endif
case MS_BONES:
pline("%s rattles noisily.", Monnam(mtmp));
! You("freeze momentarily.");
nomul(-2);
break;
case MS_HUMANOID:
--- 421,427 ----
#endif
case MS_BONES:
pline("%s rattles noisily.", Monnam(mtmp));
! You("freeze for a moment.");
nomul(-2);
break;
case MS_HUMANOID:
***************
*** 449,455 ****
else if (likes_magic(mtmp->data))
pline("%s talks about spellcraft.", Monnam(mtmp));
else if (carnivorous(mtmp->data))
! pline("%s discusses what kinds of meat are safe to eat.", Monnam(mtmp));
else switch (monsndx(mtmp->data)){
case PM_HOBBIT:
if (mtmp->mhpmax - mtmp->mhp >= 10)
--- 449,455 ----
else if (likes_magic(mtmp->data))
pline("%s talks about spellcraft.", Monnam(mtmp));
else if (carnivorous(mtmp->data))
! pline("%s discusses hunting.", Monnam(mtmp));
else switch (monsndx(mtmp->data)){
case PM_HOBBIT:
if (mtmp->mhpmax - mtmp->mhp >= 10)
***************
*** 460,468 ****
--- 460,470 ----
case PM_ARCHEOLOGIST:
pline("%s describes a recent article in \"Spelunker Today\" magazine.", Monnam(mtmp));
break;
+ # ifdef TOURIST
case PM_TOURIST:
verbalize("Aloha.");
break;
+ # endif
default:
pline("%s discusses dungeon exploration.", Monnam(mtmp));
}
***************
*** 632,638 ****
#ifdef POLYSELF
if (uasmon->msound == MS_SILENT) {
! Your("current form seems unable to speak.");
return(0);
}
#endif
--- 634,640 ----
#ifdef POLYSELF
if (uasmon->msound == MS_SILENT) {
! pline("As %s, you cannot speak.", an(uasmon->mname));
return(0);
}
#endif
***************
*** 645,651 ****
return(0);
}
if (Underwater) {
! pline("All you can utter is a mouthful of air bubbles.");
return(0);
}
--- 647,653 ----
return(0);
}
if (Underwater) {
! pline("Your speech is unintelligible underwater.");
return(0);
}
*** /tmp/da08614 Thu Feb 25 10:25:23 1993
--- src/sp_lev.c Wed Feb 24 22:34:59 1993
***************
*** 67,82 ****
#define NewTab(type, size) (type **) alloc(sizeof(type *) * size)
#define Free(ptr) if(ptr) free((genericptr_t) (ptr))
! static walk NEARDATA walklist[50];
extern int min_rx, max_rx, min_ry, max_ry; /* from mkmap.c */
static char Map[COLNO][ROWNO];
static char robjects[10], rloc_x[10], rloc_y[10], rmonst[10];
static aligntyp ralign[3] = { AM_CHAOTIC, AM_NEUTRAL, AM_LAWFUL };
! static xchar NEARDATA xstart, NEARDATA ystart;
! static char NEARDATA xsize, NEARDATA ysize;
! static void FDECL(make_walls_nondiggable, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
static int NDECL(rnddoor);
static int NDECL(rndtrap);
static void FDECL(get_location, (schar *,schar *,int));
--- 67,82 ----
#define NewTab(type, size) (type **) alloc(sizeof(type *) * size)
#define Free(ptr) if(ptr) free((genericptr_t) (ptr))
! static NEARDATA walk walklist[50];
extern int min_rx, max_rx, min_ry, max_ry; /* from mkmap.c */
static char Map[COLNO][ROWNO];
static char robjects[10], rloc_x[10], rloc_y[10], rmonst[10];
static aligntyp ralign[3] = { AM_CHAOTIC, AM_NEUTRAL, AM_LAWFUL };
! static NEARDATA xchar xstart, ystart;
! static NEARDATA char xsize, ysize;
! static void FDECL(set_wall_property, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P,int));
static int NDECL(rnddoor);
static int NDECL(rndtrap);
static void FDECL(get_location, (schar *,schar *,int));
***************
*** 96,107 ****
lev_init init_lev;
/*
! * Make walls of the area (x1, y1, x2, y2) non diggable
*/
static void
! make_walls_nondiggable(x1,y1,x2,y2)
xchar x1, y1, x2, y2;
{
register xchar x, y;
--- 96,108 ----
lev_init init_lev;
/*
! * Make walls of the area (x1, y1, x2, y2) non diggable/non passwall-able
*/
static void
! set_wall_property(x1,y1,x2,y2, prop)
xchar x1, y1, x2, y2;
+ int prop;
{
register xchar x, y;
***************
*** 108,114 ****
for(y = y1; y <= y2; y++)
for(x = x1; x <= x2; x++)
if(IS_STWALL(levl[x][y].typ))
! levl[x][y].diggable |= W_NONDIGGABLE;
}
/*
--- 109,115 ----
for(y = y1; y <= y2; y++)
for(x = x1; x <= x2; x++)
if(IS_STWALL(levl[x][y].typ))
! levl[x][y].diggable |= prop;
}
/*
***************
*** 843,849 ****
/* changed mpeaceful again; have to reset malign */
set_malign(mtmp);
}
! if (m->asleep >= 0) mtmp->msleep = m->asleep;
}
}
--- 844,860 ----
/* changed mpeaceful again; have to reset malign */
set_malign(mtmp);
}
! if (m->asleep >= 0) {
! #ifdef UNIXPC
! /* optimizer bug strikes again */
! if (m->asleep)
! mtmp->msleep = TRUE;
! else
! mtmp->msleep = FALSE;
! #else
! mtmp->msleep = m->asleep;
! #endif
! }
}
}
***************
*** 1035,1040 ****
--- 1046,1055 ----
get_location(&x, &y, DRY);
}
levl[x][y].typ = typ;
+ if (typ == FOUNTAIN)
+ level.flags.nfountains++;
+ else if (typ == SINK)
+ level.flags.nsinks++;
}
/*
***************
*** 1294,1349 ****
if (!croom || croom->rtype == OROOM)
return;
! if(prefilled) {
! switch(croom->rtype) {
case COURT:
! level.flags.has_court = 1;
break;
#ifdef ARMY
case BARRACKS:
! level.flags.has_barracks = 1;
break;
#endif
! case ZOO:
! level.flags.has_zoo = 1;
break;
- case MORGUE:
- level.flags.has_morgue = 1;
- break;
case SWAMP:
! level.flags.has_swamp = 1;
break;
- case BEEHIVE:
- level.flags.has_beehive = 1;
- break;
- }
- return;
}
- /* Vault ? */
- if (croom->rtype == VAULT) {
- int x,y;
- for (x=croom->lx;x<=croom->hx;x++)
- for (y=croom->ly;y<=croom->hy;y++)
- mkgold((long)rn1(depth(&u.uz)*100, 51), x, y);
- return;
- }
-
- /* Shop ? */
- if (croom->rtype >= SHOPBASE) {
- stock_room(croom->rtype - SHOPBASE, croom);
- return;
- }
-
- /* Zoo ? */
- switch (croom->rtype) {
- case COURT:
- case ZOO:
- case BEEHIVE:
- case MORGUE:
- case BARRACKS:
- fill_zoo(croom);
- break;
- }
}
static void
--- 1309,1367 ----
if (!croom || croom->rtype == OROOM)
return;
! if (!prefilled) {
! int x,y;
!
! /* Shop ? */
! if (croom->rtype >= SHOPBASE) {
! stock_room(croom->rtype - SHOPBASE, croom);
! level.flags.has_shop = TRUE;
! return;
! }
!
! switch (croom->rtype) {
! case VAULT:
! for (x=croom->lx;x<=croom->hx;x++)
! for (y=croom->ly;y<=croom->hy;y++)
! mkgold((long)rn1(abs(depth(&u.uz))*100, 51), x, y);
! break;
! case COURT:
! case ZOO:
! case BEEHIVE:
! case MORGUE:
! case BARRACKS:
! fill_zoo(croom);
! break;
! }
! }
! switch (croom->rtype) {
! case VAULT:
! level.flags.has_vault = TRUE;
! break;
! case ZOO:
! level.flags.has_zoo = TRUE;
! break;
case COURT:
! level.flags.has_court = TRUE;
break;
+ case MORGUE:
+ level.flags.has_morgue = TRUE;
+ break;
+ case BEEHIVE:
+ level.flags.has_beehive = TRUE;
+ break;
#ifdef ARMY
case BARRACKS:
! level.flags.has_barracks = TRUE;
break;
#endif
! case TEMPLE:
! level.flags.has_temple = TRUE;
break;
case SWAMP:
! level.flags.has_swamp = TRUE;
break;
}
}
static void
***************
*** 2263,2270 ****
get_location(&tmpdig.x1, &tmpdig.y1, DRY|WET);
get_location(&tmpdig.x2, &tmpdig.y2, DRY|WET);
! make_walls_nondiggable(tmpdig.x1, tmpdig.y1,
! tmpdig.x2, tmpdig.y2);
}
Fread((genericptr_t) &n, 1, sizeof(n), fd);
--- 2281,2300 ----
get_location(&tmpdig.x1, &tmpdig.y1, DRY|WET);
get_location(&tmpdig.x2, &tmpdig.y2, DRY|WET);
! set_wall_property(tmpdig.x1, tmpdig.y1,
! tmpdig.x2, tmpdig.y2, W_NONDIGGABLE);
! }
!
! Fread((genericptr_t) &n, 1, sizeof(n), fd);
! /* Number of non_passables */
! while(n--) {
! Fread((genericptr_t)&tmpdig, 1, sizeof(tmpdig), fd);
!
! get_location(&tmpdig.x1, &tmpdig.y1, DRY|WET);
! get_location(&tmpdig.x2, &tmpdig.y2, DRY|WET);
!
! set_wall_property(tmpdig.x1, tmpdig.y1,
! tmpdig.x2, tmpdig.y2, W_NONPASSWALL);
}
Fread((genericptr_t) &n, 1, sizeof(n), fd);
*** /tmp/da08638 Thu Feb 25 10:25:32 1993
--- src/timeout.c Fri Feb 12 10:25:41 1993
***************
*** 14,20 ****
#ifdef OVLB
/* He is being petrified - dialogue by inmet!tower */
! static const char NEARDATA *stoned_texts[] = {
"You are slowing down.", /* 5 */
"Your limbs are stiffening.", /* 4 */
"Your limbs have turned to stone.", /* 3 */
--- 14,20 ----
#ifdef OVLB
/* He is being petrified - dialogue by inmet!tower */
! static NEARDATA const char *stoned_texts[] = {
"You are slowing down.", /* 5 */
"Your limbs are stiffening.", /* 4 */
"Your limbs have turned to stone.", /* 3 */
***************
*** 36,42 ****
}
/* He is getting sicker and sicker prior to vomiting */
! static const char NEARDATA *vomiting_texts[] = {
"You are feeling mildly nauseous.", /* 14 */
"You feel slightly confused.", /* 11 */
"You can't seem to think straight.", /* 8 */
--- 36,42 ----
}
/* He is getting sicker and sicker prior to vomiting */
! static NEARDATA const char *vomiting_texts[] = {
"You are feeling mildly nauseous.", /* 14 */
"You feel slightly confused.", /* 11 */
"You can't seem to think straight.", /* 8 */
***************
*** 67,73 ****
exercise(A_CON, FALSE);
}
! static const char NEARDATA *choke_texts[] = {
"You find it hard to breathe.",
"You're gasping for air.",
"You can no longer breathe.",
--- 67,73 ----
exercise(A_CON, FALSE);
}
! static NEARDATA const char *choke_texts[] = {
"You find it hard to breathe.",
"You're gasping for air.",
"You can no longer breathe.",
***************
*** 334,343 ****
void
burn_lamps()
{
! register struct obj *obj;
/* Note: magic lamps never go out as long as the genie's inside */
! for(obj=invent; obj; obj=obj->nobj) {
if ((obj->otyp == OIL_LAMP || obj->otyp == BRASS_LANTERN)
&& obj->lamplit) {
obj->age--;
--- 334,344 ----
void
burn_lamps()
{
! register struct obj *obj, *obj2;
/* Note: magic lamps never go out as long as the genie's inside */
! for (obj=invent; obj; obj=obj2) {
! obj2 = obj->nobj;
if ((obj->otyp == OIL_LAMP || obj->otyp == BRASS_LANTERN)
&& obj->lamplit) {
obj->age--;
***************
*** 376,382 ****
}
if ((obj->otyp == CANDELABRUM_OF_INVOCATION || Is_candle(obj)) &&
obj->lamplit)
! age_candle(obj);
}
}
--- 377,383 ----
}
if ((obj->otyp == CANDELABRUM_OF_INVOCATION || Is_candle(obj)) &&
obj->lamplit)
! age_candle(obj); /* candles may vanish */
}
}
*** /tmp/da08646 Thu Feb 25 10:25:35 1993
--- src/topten.c Fri Feb 12 13:01:02 1993
***************
*** 62,68 ****
static int FDECL(classmon, (CHAR_P,BOOLEAN_P));
/* must fit with end.c */
! const char NEARDATA *killed_by_prefix[] = {
"killed by ", "choked on ", "poisoned by ", "", "drowned in ",
"", "crushed to death by ", "petrified by ", "",
"", "",
--- 62,68 ----
static int FDECL(classmon, (CHAR_P,BOOLEAN_P));
/* must fit with end.c */
! NEARDATA const char *killed_by_prefix[] = {
"killed by ", "choked on ", "poisoned by ", "", "drowned in ",
"", "crushed to death by ", "petrified by ", "",
"", "",
***************
*** 148,153 ****
--- 148,157 ----
#else
#define HUP if(!done_hup)
#endif
+
+ #ifdef TOS
+ restore_colors(); /* make sure the screen is black on white */
+ #endif
/* create a new 'topten' entry */
t0 = newttentry();
/* deepest_lev_reached() is in terms of depth(), and reporting the
***************
*** 172,182 ****
default: impossible("bad killer format?");
case KILLED_BY_AN:
Strcat(t0->death, killed_by_prefix[how]);
! (void) strncat(t0->death, an(killer), DTHSZ);
break;
case KILLED_BY:
Strcat(t0->death, killed_by_prefix[how]);
! (void) strncat(t0->death, killer, DTHSZ);
break;
case NO_KILLER_PREFIX:
(void) strncat(t0->death, killer, DTHSZ);
--- 176,188 ----
default: impossible("bad killer format?");
case KILLED_BY_AN:
Strcat(t0->death, killed_by_prefix[how]);
! (void) strncat(t0->death, an(killer),
! DTHSZ-strlen(t0->death));
break;
case KILLED_BY:
Strcat(t0->death, killed_by_prefix[how]);
! (void) strncat(t0->death, killer,
! DTHSZ-strlen(t0->death));
break;
case NO_KILLER_PREFIX:
(void) strncat(t0->death, killer, DTHSZ);
*** /tmp/da08654 Thu Feb 25 10:25:37 1993
--- src/track.c Thu Feb 11 13:28:07 1993
***************
*** 7,14 ****
#define UTSZ 50
! STATIC_VAR int NEARDATA utcnt, NEARDATA utpnt;
! STATIC_VAR coord NEARDATA utrack[UTSZ];
#ifdef OVLB
void
--- 7,14 ----
#define UTSZ 50
! STATIC_VAR NEARDATA int utcnt, utpnt;
! STATIC_VAR NEARDATA coord utrack[UTSZ];
#ifdef OVLB
void
*** /tmp/da08662 Thu Feb 25 10:25:39 1993
--- src/trap.c Tue Feb 23 09:38:07 1993
***************
*** 1,4 ****
! /* SCCS Id: @(#)trap.c 3.1 92/12/10 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
--- 1,4 ----
! /* SCCS Id: @(#)trap.c 3.1 93/02/13 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
***************
*** 57,64 ****
int type;
boolean print;
{
! static const char NEARDATA *action[] = { "smoulder", "rust", "rot", "corrode" };
! static const char NEARDATA *msg[] = { "burnt", "rusted", "rotten", "corroded" };
boolean vulnerable = FALSE;
boolean plural;
boolean grprot = FALSE;
--- 57,64 ----
int type;
boolean print;
{
! static NEARDATA const char *action[] = { "smoulder", "rust", "rot", "corrode" };
! static NEARDATA const char *msg[] = { "burnt", "rusted", "rotten", "corroded" };
boolean vulnerable = FALSE;
boolean plural;
boolean grprot = FALSE;
***************
*** 76,88 ****
plural = is_gloves(otmp) || is_boots(otmp);
! if (!vulnerable)
if (flags.verbose)
Your("%s %s not affected.", ostr, plural ? "are" : "is");
! else if (otmp->oeroded < MAX_ERODE) {
! if (grprot && otmp->greased)
grease_protect(otmp,ostr,plural);
! else if (otmp->oerodeproof || (otmp->blessed && !rnl(4))) {
if (flags.verbose)
pline("Somehow, your %s %s not affected.",
ostr, plural ? "are" : "is");
--- 76,88 ----
plural = is_gloves(otmp) || is_boots(otmp);
! if (!vulnerable) {
if (flags.verbose)
Your("%s %s not affected.", ostr, plural ? "are" : "is");
! } else if (otmp->oeroded < MAX_ERODE) {
! if (grprot && otmp->greased) {
grease_protect(otmp,ostr,plural);
! } else if (otmp->oerodeproof || (otmp->blessed && !rnl(4))) {
if (flags.verbose)
pline("Somehow, your %s %s not affected.",
ostr, plural ? "are" : "is");
***************
*** 93,103 ****
otmp->oeroded ? " further" : "");
otmp->oeroded++;
}
! } else
if (flags.verbose)
Your("%s %s%s completely %s.", ostr,
Blind ? "feel" : "look",
plural ? "" : "s", msg[type]);
return(TRUE);
}
--- 93,104 ----
otmp->oeroded ? " further" : "");
otmp->oeroded++;
}
! } else {
if (flags.verbose)
Your("%s %s%s completely %s.", ostr,
Blind ? "feel" : "look",
plural ? "" : "s", msg[type]);
+ }
return(TRUE);
}
***************
*** 126,132 ****
register struct trap *ttmp;
register boolean oldplace;
! if (ttmp = t_at(x,y)) {
oldplace = TRUE;
if (u.utrap && (x == u.ux) && (y == u.uy) &&
((u.utraptype == TT_BEARTRAP && typ != BEAR_TRAP) ||
--- 127,133 ----
register struct trap *ttmp;
register boolean oldplace;
! if ((ttmp = t_at(x,y)) != 0) {
oldplace = TRUE;
if (u.utrap && (x == u.ux) && (y == u.uy) &&
((u.utraptype == TT_BEARTRAP && typ != BEAR_TRAP) ||
***************
*** 174,180 ****
boolean tmp1, tmp2, tmp3, tmp4;
# ifdef POLYSELF
tmp1 = isok(x,y) && (!IS_ROCK(levl[x][y].typ) ||
! passes_walls(uasmon)) && !MON_AT(x, y);
# else
tmp1 = isok(x,y) && !IS_ROCK(levl[x][y].typ) && !MON_AT(x, y);
# endif
--- 175,181 ----
boolean tmp1, tmp2, tmp3, tmp4;
# ifdef POLYSELF
tmp1 = isok(x,y) && (!IS_ROCK(levl[x][y].typ) ||
! (passes_walls(uasmon) && may_passwall(x,y))) && !MON_AT(x, y);
# else
tmp1 = isok(x,y) && !IS_ROCK(levl[x][y].typ) && !MON_AT(x, y);
# endif
***************
*** 191,197 ****
#else
return( isok(x,y) &&
# ifdef POLYSELF
! (!IS_ROCK(levl[x][y].typ) || passes_walls(uasmon)) &&
# else
!IS_ROCK(levl[x][y].typ) &&
# endif
--- 192,199 ----
#else
return( isok(x,y) &&
# ifdef POLYSELF
! (!IS_ROCK(levl[x][y].typ) ||
! (passes_walls(uasmon) && may_passwall(x,y))) &&
# else
!IS_ROCK(levl[x][y].typ) &&
# endif
***************
*** 317,325 ****
#else
!(ttype == PIT || ttype == SPIKED_PIT) &&
#endif
! !(ttype == MAGIC_PORTAL || ttype == ANTI_MAGIC) && !rn2(5))
You("escape a%s.", traps[ttype]);
! else {
seetrap(trap);
switch(ttype) {
case ARROW_TRAP:
--- 319,327 ----
#else
!(ttype == PIT || ttype == SPIKED_PIT) &&
#endif
! !(ttype == MAGIC_PORTAL || ttype == ANTI_MAGIC) && !rn2(5)) {
You("escape a%s.", traps[ttype]);
! } else {
seetrap(trap);
switch(ttype) {
case ARROW_TRAP:
***************
*** 327,335 ****
otmp = mksobj(ARROW, TRUE, FALSE);
otmp->quan = 1L;
otmp->owt = weight(otmp);
! if(thitu(8,dmgval(otmp,uasmon),otmp,"arrow"))
obfree(otmp, (struct obj *)0);
! else {
place_object(otmp, u.ux, u.uy);
otmp->nobj = fobj;
fobj = otmp;
--- 329,337 ----
otmp = mksobj(ARROW, TRUE, FALSE);
otmp->quan = 1L;
otmp->owt = weight(otmp);
! if(thitu(8,dmgval(otmp,uasmon),otmp,"arrow")) {
obfree(otmp, (struct obj *)0);
! } else {
place_object(otmp, u.ux, u.uy);
otmp->nobj = fobj;
fobj = otmp;
***************
*** 366,377 ****
pline("A trap door in the ceiling opens and a rock falls on your %s!",
body_part(HEAD));
! if (uarmh)
if(is_metallic(uarmh)) {
pline("Fortunately, you are wearing a hard helmet.");
dmg = 2;
! } else if (flags.verbose)
Your("%s does not protect you.", xname(uarmh));
stackobj(otmp);
newsym(u.ux,u.uy); /* map the rock */
--- 368,381 ----
pline("A trap door in the ceiling opens and a rock falls on your %s!",
body_part(HEAD));
! if (uarmh) {
if(is_metallic(uarmh)) {
pline("Fortunately, you are wearing a hard helmet.");
dmg = 2;
! } else if (flags.verbose) {
Your("%s does not protect you.", xname(uarmh));
+ }
+ }
stackobj(otmp);
newsym(u.ux,u.uy); /* map the rock */
***************
*** 447,453 ****
} else
if (u.umonnum == PM_GREMLIN && rn2(3)) {
pline("A gush of water hits you!");
! if(mtmp = cloneu()) {
mtmp->mhpmax = (u.mhmax /= 2);
You("multiply.");
}
--- 451,457 ----
} else
if (u.umonnum == PM_GREMLIN && rn2(3)) {
pline("A gush of water hits you!");
! if ((mtmp = cloneu()) != 0) {
mtmp->mhpmax = (u.mhmax /= 2);
You("multiply.");
}
***************
*** 505,513 ****
#endif
) {
if(Blind) break;
! if(trap->tseen)
You("see a pit below you.");
! else {
pline("A pit opens up under you!");
You("don't fall in!");
}
--- 509,517 ----
#endif
) {
if(Blind) break;
! if(trap->tseen) {
You("see a pit below you.");
! } else {
pline("A pit opens up under you!");
You("don't fall in!");
}
***************
*** 657,666 ****
case STATUE_TRAP:
deltrap(trap);
newsym(u.ux,u.uy); /* get rid of trap symbol */
! for(otmp=level.objects[u.ux][u.uy];
otmp; otmp = otmp->nexthere)
! if(otmp->otyp == STATUE)
! if(mtmp=makemon(&mons[otmp->corpsenm],u.ux,u.uy)) {
pline("The statue comes to life!");
/* mimic statues become seen mimics */
if(mtmp->m_ap_type) seemimic(mtmp);
--- 661,671 ----
case STATUE_TRAP:
deltrap(trap);
newsym(u.ux,u.uy); /* get rid of trap symbol */
! for (otmp = level.objects[u.ux][u.uy];
otmp; otmp = otmp->nexthere)
! if (otmp->otyp == STATUE)
! if ((mtmp = makemon(&mons[otmp->corpsenm],
! u.ux, u.uy)) != 0) {
pline("The statue comes to life!");
/* mimic statues become seen mimics */
if(mtmp->m_ap_type) seemimic(mtmp);
***************
*** 715,720 ****
--- 720,726 ----
pline("KAABLAMM!!! You triggered a land mine!");
set_wounded_legs(LEFT_SIDE, rn1(35, 41));
set_wounded_legs(RIGHT_SIDE, rn1(35, 41));
+ exercise(A_DEX, FALSE);
}
losehp(rnd(16), "land mine", KILLED_BY_AN);
/* wake everything on the level */
***************
*** 804,810 ****
if(!trap) {
mtmp->mtrapped = 0; /* perhaps teleported? */
} else if (mtmp->mtrapped) { /* was in trap */
! if(!rn2(40))
if (sobj_at(BOULDER, mtmp->mx, mtmp->my) &&
((trap->ttyp == PIT) ||
(trap->ttyp == SPIKED_PIT))) {
--- 810,816 ----
if(!trap) {
mtmp->mtrapped = 0; /* perhaps teleported? */
} else if (mtmp->mtrapped) { /* was in trap */
! if(!rn2(40)) {
if (sobj_at(BOULDER, mtmp->mx, mtmp->my) &&
((trap->ttyp == PIT) ||
(trap->ttyp == SPIKED_PIT))) {
***************
*** 814,819 ****
--- 820,826 ----
}
} else
mtmp->mtrapped = 0;
+ }
} else {
register int tt = trap->ttyp;
***************
*** 874,889 ****
case BEAR_TRAP:
if(mptr->msize > MZ_SMALL &&
!amorphous(mptr) && !is_flyer(mptr)) {
! mtmp->mtrapped = 1;
! if(in_sight) {
! pline("%s is caught in a bear trap!",
! Monnam(mtmp));
! seetrap(trap);
! } else
! if((mptr == &mons[PM_OWLBEAR]
! || mptr == &mons[PM_BUGBEAR])
! && flags.soundok)
! You("hear the roaring of an angry bear!");
}
break;
--- 881,897 ----
case BEAR_TRAP:
if(mptr->msize > MZ_SMALL &&
!amorphous(mptr) && !is_flyer(mptr)) {
! mtmp->mtrapped = 1;
! if(in_sight) {
! pline("%s is caught in a bear trap!",
! Monnam(mtmp));
! seetrap(trap);
! } else {
! if((mptr == &mons[PM_OWLBEAR]
! || mptr == &mons[PM_BUGBEAR])
! && flags.soundok)
! You("hear the roaring of an angry bear!");
! }
}
break;
***************
*** 912,918 ****
pline("May %s rust in peace.",
mon_nam(mtmp));
mondied(mtmp);
! trapkilled = TRUE;
} else if (mptr == &mons[PM_GREMLIN] && rn2(3)) {
struct monst *mtmp2 = clone_mon(mtmp);
--- 920,929 ----
pline("May %s rust in peace.",
mon_nam(mtmp));
mondied(mtmp);
! #ifdef MUSE
! if (mtmp->mhp <= 0)
! #endif
! trapkilled = TRUE;
} else if (mptr == &mons[PM_GREMLIN] && rn2(3)) {
struct monst *mtmp2 = clone_mon(mtmp);
***************
*** 957,964 ****
--- 968,982 ----
pline("%s falls into a pit!", Monnam(mtmp));
seetrap(trap);
}
+ #ifdef MUSE
+ mselftouch(mtmp, "Falling, ", FALSE);
+ if(mtmp->mhp <= 0 ||
+ thitm(0, mtmp, (struct obj *)0,
+ rnd((tt==PIT) ? 6 : 10)))
+ #else
if(thitm(0, mtmp, (struct obj *)0,
rnd((tt==PIT) ? 6 : 10)))
+ #endif
trapkilled = TRUE;
}
break;
***************
*** 1166,1172 ****
selftouch(arg)
const char *arg;
{
! if(uwep && (uwep->otyp == CORPSE && uwep->corpsenm == PM_COCKATRICE)
#ifdef POLYSELF
&& !resists_ston(uasmon)
#endif
--- 1184,1190 ----
selftouch(arg)
const char *arg;
{
! if(uwep && uwep->otyp == CORPSE && uwep->corpsenm == PM_COCKATRICE
#ifdef POLYSELF
&& !resists_ston(uasmon)
#endif
***************
*** 1183,1189 ****
--- 1201,1235 ----
}
}
+ #ifdef MUSE
void
+ mselftouch(mon,arg,byplayer)
+ struct monst *mon;
+ const char *arg;
+ boolean byplayer;
+ {
+ struct obj *mwep = MON_WEP(mon);
+
+ if (mwep && mwep->otyp == CORPSE && mwep->corpsenm == PM_COCKATRICE
+ && !resists_ston(mon->data)) {
+ if (cansee(mon->mx, mon->my)) {
+ pline("%s%s touches the cockatrice corpse.",
+ arg ? arg : "", arg ? mon_nam(mon) : Monnam(mon));
+ pline("%s turns to stone.", Monnam(mon));
+ }
+ if (poly_when_stoned(mon->data)) {
+ mon_to_stone(mon);
+ return;
+ }
+ if (byplayer) {
+ stoned = TRUE;
+ xkilled(mon,0);
+ } else monstone(mon);
+ }
+ }
+ #endif
+
+ void
float_up()
{
if(u.utrap) {
***************
*** 1279,1285 ****
else if (!u.uinwater && !no_msg) {
if (Hallucination)
pline("Bummer! You've %s.",
! is_pool(u.ux,u.uy) ?
"splashed down" : "hit the ground");
else
You("float gently to the %s.",
--- 1325,1331 ----
else if (!u.uinwater && !no_msg) {
if (Hallucination)
pline("Bummer! You've %s.",
! is_pool(u.ux,u.uy) ?
"splashed down" : "hit the ground");
else
You("float gently to the %s.",
***************
*** 1337,1345 ****
|| wizard
#endif
) {
! if (unconscious())
pline("Being unconscious, you cannot control your teleport.");
! else {
pline("To what position do you want to be teleported?");
cc.x = u.ux;
cc.y = u.uy;
--- 1383,1391 ----
|| wizard
#endif
) {
! if (unconscious()) {
pline("Being unconscious, you cannot control your teleport.");
! } else {
pline("To what position do you want to be teleported?");
cc.x = u.ux;
cc.y = u.uy;
***************
*** 1516,1523 ****
char buf[BUFSZ];
do {
! getlin("To what level do you want to teleport? [type a number]",
buf);
} while(!digit(buf[0]) && (buf[0] != '-' || !digit(buf[1])));
newlev = atoi(buf);
--- 1562,1571 ----
char buf[BUFSZ];
do {
! getlin("To what level do you want to teleport? [type a number]",
buf);
+ if (!strcmp(buf,"\033")) /* cancelled */
+ return;
} while(!digit(buf[0]) && (buf[0] != '-' || !digit(buf[1])));
newlev = atoi(buf);
***************
*** 1597,1603 ****
} else
You("are now high above the clouds...");
! if(Levitation || is_floater(uasmon)) {
You("float gently down to earth.");
u.uz.dnum = 0; /* he might have been in another dgn */
newlev = 1;
--- 1645,1655 ----
} else
You("are now high above the clouds...");
! if(Levitation
! #ifdef POLYSELF
! || is_floater(uasmon)
! #endif
! ) {
You("float gently down to earth.");
u.uz.dnum = 0; /* he might have been in another dgn */
newlev = 1;
***************
*** 1802,1814 ****
}
void
! water_damage(obj,force)
register struct obj *obj;
! register boolean force;
{
/* Scrolls, spellbooks, potions, weapons and
pieces of armor may get affected by the water */
! for(; obj; obj = obj->nobj) {
(void) snuff_lit(obj);
--- 1854,1866 ----
}
void
! water_damage(obj, force, here)
register struct obj *obj;
! register boolean force, here;
{
/* Scrolls, spellbooks, potions, weapons and
pieces of armor may get affected by the water */
! for (; obj; obj = (here ? obj->nexthere : obj->nobj)) {
(void) snuff_lit(obj);
***************
*** 1816,1822 ****
if (force || !rn2(2)) obj->greased = 0;
} else if(Is_container(obj) && !Is_box(obj) &&
(obj->otyp != OILSKIN_SACK || (obj->cursed && !rn2(3)))) {
! water_damage(obj->cobj,force);
} else if(obj->oclass == SCROLL_CLASS && (force || rn2(12) > Luck)
#ifdef MAIL
&& obj->otyp != SCR_MAIL
--- 1868,1874 ----
if (force || !rn2(2)) obj->greased = 0;
} else if(Is_container(obj) && !Is_box(obj) &&
(obj->otyp != OILSKIN_SACK || (obj->cursed && !rn2(3)))) {
! water_damage(obj->cobj, force, FALSE);
} else if(obj->oclass == SCROLL_CLASS && (force || rn2(12) > Luck)
#ifdef MAIL
&& obj->otyp != SCR_MAIL
***************
*** 1909,1915 ****
/* happily wading in the same contiguous pool */
if (u.uinwater && is_pool(u.ux-u.dx,u.uy-u.dy) &&
! Magical_breathing) {
/* water effects on objects every now and then */
if (!rn2(5)) inpool_ok = TRUE;
else return(FALSE);
--- 1961,1971 ----
/* happily wading in the same contiguous pool */
if (u.uinwater && is_pool(u.ux-u.dx,u.uy-u.dy) &&
! (
! #ifdef POLYSELF
! is_swimmer(uasmon) ||
! #endif
! Magical_breathing)) {
/* water effects on objects every now and then */
if (!rn2(5)) inpool_ok = TRUE;
else return(FALSE);
***************
*** 1926,1943 ****
Hallucination ? "the Titanic" : "a rock");
}
! water_damage(invent,FALSE);
#ifdef POLYSELF
if(u.umonnum == PM_GREMLIN && rn2(3)) {
struct monst *mtmp;
! if(mtmp = cloneu()) {
mtmp->mhpmax = (u.mhmax /= 2);
You("multiply.");
}
}
! if(is_swimmer(uasmon)) return(FALSE);
#endif
if (inpool_ok) return(FALSE);
#ifdef WALKIES
--- 1982,2005 ----
Hallucination ? "the Titanic" : "a rock");
}
! water_damage(invent, FALSE, FALSE);
#ifdef POLYSELF
if(u.umonnum == PM_GREMLIN && rn2(3)) {
struct monst *mtmp;
! if ((mtmp = cloneu()) != 0) {
mtmp->mhpmax = (u.mhmax /= 2);
You("multiply.");
}
}
! if(is_swimmer(uasmon) && !inpool_ok) {
! if (Punished) placebc();
! u.uinwater = 1;
! under_water(1);
! vision_full_recalc = 1;
! return(FALSE);
! }
#endif
if (inpool_ok) return(FALSE);
#ifdef WALKIES
***************
*** 1956,1961 ****
--- 2018,2024 ----
if (Punished) placebc();
u.uinwater = 1;
under_water(1);
+ vision_full_recalc = 1;
return(FALSE);
}
if((Teleportation || can_teleport(uasmon)) &&
***************
*** 2305,2315 ****
case 0:
pline("A cloud of %s gas billows from %s",
hcolor(), the(xname(obj)));
! if(!Stunned)
if (Hallucination)
pline("What a groovy feeling!");
else
You("stagger and your vision blurs...");
make_stunned(HStun + rn1(7, 16),FALSE);
make_hallucinated(HHallucination + rn1(5, 16),FALSE,0L);
break;
--- 2368,2381 ----
case 0:
pline("A cloud of %s gas billows from %s",
hcolor(), the(xname(obj)));
! if(!Stunned) {
if (Hallucination)
pline("What a groovy feeling!");
+ else if (Blind)
+ You("stagger and get dizzy...");
else
You("stagger and your vision blurs...");
+ }
make_stunned(HStun + rn1(7, 16),FALSE);
make_hallucinated(HHallucination + rn1(5, 16),FALSE,0L);
break;
***************
*** 2410,2417 ****
int yy = mon->my;
monkilled(mon, "", AD_PHYS);
! newsym(xx, yy);
! trapkilled = TRUE;
}
}
if (obj && (!strike || d_override)) {
--- 2476,2489 ----
int yy = mon->my;
monkilled(mon, "", AD_PHYS);
! #ifdef MUSE
! if (mon->mhp <= 0) {
! #endif
! newsym(xx, yy);
! trapkilled = TRUE;
! #ifdef MUSE
! }
! #endif
}
}
if (obj && (!strike || d_override)) {
*** /tmp/da08670 Thu Feb 25 10:25:43 1993
--- src/u_init.c Mon Feb 22 12:24:29 1993
***************
*** 1,4 ****
! /* SCCS Id: @(#)u_init.c 3.1 92/11/13 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
--- 1,4 ----
! /* SCCS Id: @(#)u_init.c 3.1 93/02/21 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
***************
*** 22,27 ****
--- 22,29 ----
#define UNDEF_SPE '\177'
#define UNDEF_BLESS 2
+ static boolean random_role = FALSE;
+
/* all roles must all have distinct first letter */
const char *roles[] = { /* also used in options.c and winxxx.c */
/* roles[2] and [6] are changed for females */
***************
*** 260,265 ****
--- 262,271 ----
terminate(0);
}
i = role_index(pc);
+ if (random_role) {
+ pline("This game you will be %s.", an(roles[i]));
+ display_nhwindow(WIN_MESSAGE, TRUE);
+ }
(void) strncpy(pl_character, roles[i], PL_CSIZ-1);
pl_character[PL_CSIZ-1] = 0;
***************
*** 475,480 ****
--- 481,488 ----
if (discover)
ini_inv(Wishing);
#endif
+ u.ugold0 += hidden_gold(); /* in case sack has gold in it */
+
find_ac(); /* get initial ac value */
init_attr(75); /* init attribute values */
max_rank_sz(); /* set max str size for class ranks */
***************
*** 518,527 ****
*/
if (undefined) {
#ifdef POLYSELF
! static unsigned NEARDATA nocreate = STRANGE_OBJECT;
! static unsigned NEARDATA nocreate2 = STRANGE_OBJECT;
#endif
! static unsigned NEARDATA nocreate3 = STRANGE_OBJECT;
while(obj->otyp == WAN_WISHING
#ifdef POLYSELF
--- 526,535 ----
*/
if (undefined) {
#ifdef POLYSELF
! static NEARDATA unsigned nocreate = STRANGE_OBJECT;
! static NEARDATA unsigned nocreate2 = STRANGE_OBJECT;
#endif
! static NEARDATA unsigned nocreate3 = STRANGE_OBJECT;
while(obj->otyp == WAN_WISHING
#ifdef POLYSELF
***************
*** 649,664 ****
}
void
! plnamesuffix() {
register char *p;
if ((p = rindex(plname, '-')) != 0) {
! *p = 0;
pl_character[0] = p[1];
! pl_character[1] = 0;
if(!plname[0]) {
askname();
plnamesuffix();
}
}
}
--- 657,680 ----
}
void
! plnamesuffix()
! {
register char *p;
if ((p = rindex(plname, '-')) != 0) {
! *p = '\0';
pl_character[0] = p[1];
! pl_character[1] = '\0';
! random_role = FALSE;
if(!plname[0]) {
askname();
plnamesuffix();
}
+ }
+ if (pl_character[0] == '@') { /* explicit request for random class */
+ int i = rn2((int)strlen(pl_classes));
+ pl_character[0] = pl_classes[i];
+ pl_character[1] = '\0';
+ random_role = TRUE;
}
}
*** /tmp/da08678 Thu Feb 25 10:25:45 1993
--- src/uhitm.c Tue Feb 23 16:35:40 1993
***************
*** 1,4 ****
! /* SCCS Id: @(#)uhitm.c 3.1 92/12/10 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
--- 1,4 ----
! /* SCCS Id: @(#)uhitm.c 3.1 93/02/18 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
***************
*** 102,108 ****
else if ((obj = level.objects[mtmp->mx][mtmp->my]) != 0)
pline("Wait! There's %s hiding under %s!",
an(l_monnam(mtmp)), doname(obj));
! wakeup(mtmp);
mtmp->data->mflags3 &= ~M3_WAITMASK;
return(TRUE);
}
--- 102,108 ----
else if ((obj = level.objects[mtmp->mx][mtmp->my]) != 0)
pline("Wait! There's %s hiding under %s!",
an(l_monnam(mtmp)), doname(obj));
! mtmp->msleep = 0;
mtmp->data->mflags3 &= ~M3_WAITMASK;
return(TRUE);
}
***************
*** 350,356 ****
struct monst *mon;
int tmp;
{
! static int NEARDATA malive;
boolean mhit = (tmp > (dieroll = rnd(20)) || u.uswallow);
if(tmp > dieroll) exercise(A_DEX, TRUE);
--- 350,356 ----
struct monst *mon;
int tmp;
{
! static NEARDATA int malive;
boolean mhit = (tmp > (dieroll = rnd(20)) || u.uswallow);
if(tmp > dieroll) exercise(A_DEX, TRUE);
***************
*** 426,438 ****
obj->otyp == UNICORN_HORN || obj->oclass == ROCK_CLASS) {
/* If not a melee weapon, and either not thrown, or thrown */
! /* and a bow (bows are >BOOMERANG), or thrown and a missile */
! /* without a propellor (missiles are <DART), do 1-2 points */
! if((obj->otyp >= BOW || obj->otyp < DART)
&& obj->otyp != PICK_AXE && obj->otyp != UNICORN_HORN
&& (!thrown ||
(obj->oclass != ROCK_CLASS &&
! (obj->otyp > BOOMERANG ||
(obj->otyp < DART &&
(!uwep ||
objects[obj->otyp].w_propellor !=
--- 426,438 ----
obj->otyp == UNICORN_HORN || obj->oclass == ROCK_CLASS) {
/* If not a melee weapon, and either not thrown, or thrown */
! /* and a bow (bows are >= BOW), or thrown and a missile */
! /* without a propellor (which means <DART), do 1-2 points */
! if((obj->otyp >= BOW || obj->otyp < BOOMERANG)
&& obj->otyp != PICK_AXE && obj->otyp != UNICORN_HORN
&& (!thrown ||
(obj->oclass != ROCK_CLASS &&
! (obj->otyp >= BOW ||
(obj->otyp < DART &&
(!uwep ||
objects[obj->otyp].w_propellor !=
***************
*** 448,453 ****
--- 448,454 ----
artifact_hit(&youmonst, mon, obj, &tmp, dieroll)) {
if(mon->mhp <= 0) /* artifact killed monster */
return FALSE;
+ if (tmp == 0) return TRUE;
hittxt = TRUE;
}
if (objects[obj->otyp].oc_material == SILVER
***************
*** 662,673 ****
if(mon->mhp < 1)
destroyed = TRUE;
if(mon->mtame && (!mon->mflee || mon->mfleetim)) {
! #ifdef SOUNDS
! if (rn2(8)) yelp(mon);
! else growl(mon); /* give them a moment's worry */
! #endif
! mon->mtame--;
! if(!mon->mtame) newsym(mon->mx, mon->my);
mon->mflee = TRUE; /* Rick Richardson */
mon->mfleetim += 10*rnd(tmp);
}
--- 663,669 ----
if(mon->mhp < 1)
destroyed = TRUE;
if(mon->mtame && (!mon->mflee || mon->mfleetim)) {
! abuse_dog(mon);
mon->mflee = TRUE; /* Rick Richardson */
mon->mfleetim += 10*rnd(tmp);
}
***************
*** 758,764 ****
&& u.umonnum != PM_BALROG) {
struct monst *dtmp;
pline("Some hell-p has arrived!");
! if((dtmp = makemon(!rn2(6) ? &mons[ndemon()] : uasmon, u.ux, u.uy)))
(void)tamedog(dtmp, (struct obj *)0);
exercise(A_WIS, TRUE);
return(0);
--- 754,761 ----
&& u.umonnum != PM_BALROG) {
struct monst *dtmp;
pline("Some hell-p has arrived!");
! if((dtmp = makemon(!rn2(6) ? &mons[ndemon(u.ualign.type)] :
! uasmon, u.ux, u.uy)))
(void)tamedog(dtmp, (struct obj *)0);
exercise(A_WIS, TRUE);
return(0);
***************
*** 859,873 ****
}
if (stealoid) {
boolean stolen = FALSE;
- /* Is "he"/"his" always correct? */
if (gender(mdef) == u.mfemale &&
uasmon->mlet == S_NYMPH)
You("charm %s. She gladly hands over her possessions.", mon_nam(mdef));
else
! You("seduce %s and %s starts to take off %s clothes.",
! mon_nam(mdef),
! gender(mdef) ? "she" : "he",
! gender(mdef) ? "her" : "his");
while(mdef->minvent) {
otmp = mdef->minvent;
mdef->minvent = otmp->nobj;
--- 856,868 ----
}
if (stealoid) {
boolean stolen = FALSE;
if (gender(mdef) == u.mfemale &&
uasmon->mlet == S_NYMPH)
You("charm %s. She gladly hands over her possessions.", mon_nam(mdef));
else
! You("seduce %s and %s starts to take off %s clothes.",
! mon_nam(mdef), he[pronoun_gender(mdef)],
! his[pronoun_gender(mdef)]);
while(mdef->minvent) {
otmp = mdef->minvent;
mdef->minvent = otmp->nobj;
***************
*** 892,898 ****
impossible("Player steal fails!");
else {
pline("%s finishes taking off %s suit.",
! Monnam(mdef), gender(mdef) ? "her" : "his");
You("steal %s!", doname(stealoid));
# if defined(ARMY) && !defined(MUSE)
mdef->data = &mons[PM_UNARMORED_SOLDIER];
--- 887,893 ----
impossible("Player steal fails!");
else {
pline("%s finishes taking off %s suit.",
! Monnam(mdef), his[pronoun_gender(mdef)]);
You("steal %s!", doname(stealoid));
# if defined(ARMY) && !defined(MUSE)
mdef->data = &mons[PM_UNARMORED_SOLDIER];
***************
*** 910,915 ****
--- 905,915 ----
#ifdef MUSE
possibly_unwield(mdef);
otmp->owornmask = 0L;
+ mselftouch(mdef, (const char *)0, TRUE);
+ if (mdef->mhp <= 0) {
+ tmp = 1; /* avoid early return from damageum */
+ break;
+ }
#endif
}
}
***************
*** 959,969 ****
int xtmp = d(2,6);
pline("%s suddenly seems weaker!", Monnam(mdef));
mdef->mhpmax -= xtmp;
! if ((mdef->mhp -= xtmp) <= 0 || !mdef->m_lev--) {
pline("%s dies!", Monnam(mdef));
xkilled(mdef,0);
return(2);
}
}
tmp = 0;
break;
--- 959,970 ----
int xtmp = d(2,6);
pline("%s suddenly seems weaker!", Monnam(mdef));
mdef->mhpmax -= xtmp;
! if ((mdef->mhp -= xtmp) <= 0 || !mdef->m_lev) {
pline("%s dies!", Monnam(mdef));
xkilled(mdef,0);
return(2);
}
+ mdef->m_lev--;
}
tmp = 0;
break;
***************
*** 1008,1016 ****
#ifdef MUSE
if ((mdef->misc_worn_check & W_ARMH) && rn2(8)) {
pline("%s helmet blocks your attack to %s head.",
! s_suffix(Monnam(mdef)),
! (Blind || !humanoid(mdef->data)) ? "its" :
! (mdef->female ? "her" : "his"));
break;
}
#endif
--- 1009,1015 ----
#ifdef MUSE
if ((mdef->misc_worn_check & W_ARMH) && rn2(8)) {
pline("%s helmet blocks your attack to %s head.",
! s_suffix(Monnam(mdef)), his[pronoun_gender(mdef)]);
break;
}
#endif
*** /tmp/da08686 Thu Feb 25 10:25:48 1993
--- src/vault.c Tue Feb 9 15:55:34 1993
***************
*** 253,259 ****
mongone(guard);
return;
}
- clear_nhwindow(WIN_MESSAGE);
verbalize("I don't know you.");
if (!u.ugold && !hidden_gold())
verbalize("Please follow me.");
--- 253,258 ----
***************
*** 330,341 ****
for(x = lowx-1; x <= hix+1; x++)
for(y = lowy-1; y <= hiy+1; y += (hiy-lowy+2)) {
if(!IS_WALL(levl[x][y].typ) && !in_fcorridor(grd, x, y)) {
! struct monst *mon;
!
! if((mon = m_at(x, y)) && grd->mx != x && grd->my != y) {
if (mon->data->msound != MS_SILENT)
! You("hear a scream.");
! rloc(m_at(x,y));
}
if ((gold = g_at(x, y)) != 0) {
move_gold(gold, EGD(grd)->vroom);
--- 329,339 ----
for(x = lowx-1; x <= hix+1; x++)
for(y = lowy-1; y <= hiy+1; y += (hiy-lowy+2)) {
if(!IS_WALL(levl[x][y].typ) && !in_fcorridor(grd, x, y)) {
! if(MON_AT(x, y) && grd->mx != x && grd->my != y) {
! struct monst *mon = m_at(x,y);
if (mon->data->msound != MS_SILENT)
! yelp(mon);
! rloc(mon);
}
if ((gold = g_at(x, y)) != 0) {
move_gold(gold, EGD(grd)->vroom);
***************
*** 368,375 ****
for(y = lowy; y <= hiy; y++) {
if(!IS_WALL(levl[x][y].typ) && !in_fcorridor(grd, x, y)) {
if(MON_AT(x, y) && grd->mx != x && grd->my != y) {
! You("hear a scream.");
! rloc(m_at(x,y));
}
if ((gold = g_at(x, y)) != 0) {
move_gold(gold, EGD(grd)->vroom);
--- 366,375 ----
for(y = lowy; y <= hiy; y++) {
if(!IS_WALL(levl[x][y].typ) && !in_fcorridor(grd, x, y)) {
if(MON_AT(x, y) && grd->mx != x && grd->my != y) {
! struct monst *mon = m_at(x,y);
! if (mon->data->msound != MS_SILENT)
! yelp(mon);
! rloc(mon);
}
if ((gold = g_at(x, y)) != 0) {
move_gold(gold, EGD(grd)->vroom);
***************
*** 483,489 ****
l_monnam(grd));
return(-1);
} else {
! verbalize("Well, be gone your way.");
wallify_vault(grd);
egrd->gddone = 1;
goto cleanup;
--- 483,489 ----
l_monnam(grd));
return(-1);
} else {
! verbalize("Well, begone.");
wallify_vault(grd);
egrd->gddone = 1;
goto cleanup;
***************
*** 708,715 ****
gx = rooms[EGD(grd)->vroom].lx + rn2(2);
gy = rooms[EGD(grd)->vroom].ly + rn2(2);
Sprintf(buf,
! "To Croesus: here's the gold recovered from the %s %s...",
! player_mon()->mname, plname);
make_engr_at(gx, gy, buf, 0L, ENGRAVE);
}
place_object(gold = mkgoldobj(u.ugold), gx, gy);
--- 708,715 ----
gx = rooms[EGD(grd)->vroom].lx + rn2(2);
gy = rooms[EGD(grd)->vroom].ly + rn2(2);
Sprintf(buf,
! "To Croesus: here's the gold recovered from %s the %s.",
! plname, player_mon()->mname);
make_engr_at(gx, gy, buf, 0L, ENGRAVE);
}
place_object(gold = mkgoldobj(u.ugold), gx, gy);
*** /tmp/da08694 Thu Feb 25 10:25:51 1993
--- src/version.c Fri Feb 5 11:20:43 1993
***************
*** 5,11 ****
#include "hack.h"
#include "date.h"
#ifndef BETA
! # if defined(MICRO) && !defined(AMIGA) && !defined(TOS)
# include "patchlev.h"
# else
# include "patchlevel.h"
--- 5,11 ----
#include "hack.h"
#include "date.h"
#ifndef BETA
! # if defined(MICRO) && !defined(AMIGA) && !defined(TOS) && !defined(OS2_HPFS)
# include "patchlev.h"
# else
# include "patchlevel.h"
*** /tmp/da08702 Thu Feb 25 10:25:53 1993
--- src/vision.c Wed Feb 3 16:37:18 1993
***************
*** 484,490 ****
next_rmax[row] = max(next_rmax[row], col);
next_array[row][col] = IN_SIGHT;
}
! }
/* if in a pit, just update for immediate locations */
else if (u.utrap && u.utraptype == TT_PIT) {
--- 484,490 ----
next_rmax[row] = max(next_rmax[row], col);
next_array[row][col] = IN_SIGHT;
}
! }
/* if in a pit, just update for immediate locations */
else if (u.utrap && u.utraptype == TT_PIT) {
*** /tmp/da07333 Thu Feb 25 10:19:14 1993
--- dat/oracles.txt Sun Feb 21 16:16:26 1993
***************
*** 9,14 ****
--- 9,16 ----
If thou hast had trouble with rust on thy armor or weapons, thou shouldst
know that thou canst prevent this by, while in a confused state, reading the
magical parchments which normally are used to cause their enchantment.
+ Unguents of lubrication may provide similar protection, albeit of a
+ transitory nature.
-----
Behold the cockatrice, whose diminutive stature belies its hidden might. The
cockatrice can petrify any ordinary being it contacts--save those wise
***************
*** 15,37 ****
adventurers who eat a dead lizard or blob of acid when they feel themselves
slowly turning to stone.
-----
! While some wayfarers rely on finding finished armour in the dungeon, the
! resourceful consider dragon scales as truly enchanting raw material and
! realize that dragon scale mail is an excellent investment.
-----
! It is well known among travelers that extra-healing draughts may clear thy
! senses when thou art addled by hallucinations. But never forget, the lowly
! potion which makes one sick may be used for the same purpose.
-----
! While the consumption of lizard flesh or water beloved of the gods may
! straighten thy head after confusion, the application of the horn of a
! creature of utmost purity can alleviate many other afflictions as well.
-----
! If thou wishest to travel quickly between distant levels, thou must be
! able to control thy teleports, and be confused, and read the scroll
! which usually teleports thyself around on the level. Daring adventurers
! have also performed the same feat sans need for scrolls or potions by
! stepping on the correct type of trap.
-----
Almost all adventurers who come this way hope to pass the dread Medusa. To
do this, the best advice is to keep thine eyes blindfolded and to cause the
--- 17,39 ----
adventurers who eat a dead lizard or blob of acid when they feel themselves
slowly turning to stone.
-----
! While some wayfarers rely on scrounging finished armour in the dungeon, the
! resourceful know the mystical means by which mail may be fashioned out of
! scales from a dragon's hide.
-----
! It is customarily known among travelers that extra-healing draughts may clear
! thy senses when thou art addled by delusory visions. But never forget, the
! lowly potion which makes one sick may be used for the same purpose.
-----
! While the consumption of lizard flesh or water beloved of the gods may clear
! the muddled head, the application of the horn of a creature of utmost purity
! can alleviate many other afflictions as well.
-----
! If thou wouldst travel quickly between distant locations, thou must be
! able to control thy teleports, and in a confused state misread the scroll
! which usually teleports thyself locally. Daring adventurers have also
! performed the same feat sans need for scrolls or potions by stepping into
! a particular ambuscade.
-----
Almost all adventurers who come this way hope to pass the dread Medusa. To
do this, the best advice is to keep thine eyes blindfolded and to cause the
***************
*** 52,58 ****
even so, few hath developed the skill to identify enchanted rings by the
transfigurations effected upon the voracious device's frame.
-----
! The meat of enchanted creatures will ofttimes convey magical properties
unto the consumer. A fresh corpse of floating eye doth fetch a high
price among wizards for its utility in conferring Telepathy, by which
the sightless may locate surrounding minds.
--- 54,60 ----
even so, few hath developed the skill to identify enchanted rings by the
transfigurations effected upon the voracious device's frame.
-----
! The meat of enchanted creatures ofttimes conveyeth magical properties
unto the consumer. A fresh corpse of floating eye doth fetch a high
price among wizards for its utility in conferring Telepathy, by which
the sightless may locate surrounding minds.
***************
*** 66,77 ****
powers echo throughout legend. Learned wayfarers can reproduce blades of
elven lineage, hated of the orcs, without the need for such intervention.
-----
- Adventurers searching for Medusa or the Wizard of Yendor needst not wait until
- their dungeon level corresponds with their enemies' to know their location.
- Eat a floating eye, blind thyself, and use a mirror in thine own direction,
- and provided thou art lucky, thou shalt know the approximate locations of
- thine enemies.
- -----
There are many stories of a mighty amulet, the origins of which are said
to be ancient Yendor. This amulet doth have awesome power, and the gods
desireth it greatly. Mortals mayst tap only portions of its terrible
--- 68,73 ----
***************
*** 88,100 ****
read from Moloch's book, shall cause the earth to tremble mightily. The
light of an enchanted candelabrum shall show thee the way.
-----
! In the nethermost recesses of the dungeon, there standeth a castle, wherein
! layeth a wand of wishes. If thou wouldst gain entry, bear with thee an
! instrument of music, for the drawbridge may be charmed down with the proper
! melody. What notes comprise it only the gods know, but a musical mastermind
! may yet succeed by witful improvization. However, the less perspicacious are
! not without recourse, should they be prepared to circumambulate the castle to
! the postern.
----- ELBERETH
The name of Elbereth may strike fear into the hearts of thine enemies, if
thou doest write it upon the ground at thy feet. If thou maintain the utmost
--- 84,96 ----
read from Moloch's book, shall cause the earth to tremble mightily. The
light of an enchanted candelabrum shall show thee the way.
-----
! In the deepest recesses of the Dungeons of Doom, guarding access to the
! nether regions, there standeth a castle, wherein layeth a wand of wishes.
! If thou wouldst gain entry, bear with thee an instrument of music, for the
! pontlevis may be charmed down with the proper melody. What notes comprise
! it only the gods know, but a musical mastermind may yet succeed by witful
! improvization. However, the less perspicacious are not without recourse,
! should they be prepared to circumambulate the castle to the postern.
----- ELBERETH
The name of Elbereth may strike fear into the hearts of thine enemies, if
thou doest write it upon the ground at thy feet. If thou maintain the utmost