Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss
Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

NetHack 2.3 Update Pt. 10 of 12

9 views
Skip to first unread message

Mike Stephenson

unread,
Apr 14, 1988, 7:51:19 AM4/14/88
to
-------------------------------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.e
# This archive created: Mon Apr 4 08:52:36 1988
export PATH; PATH=/bin:$PATH
echo shar: extracting "'Update.2.3.e'" '(37968 characters)'
if test -f 'Update.2.3.e'
then
echo shar: will not over-write existing file "'Update.2.3.e'"
else
cat << \SHAR_EOF > 'Update.2.3.e'
*** ./pcmain.c.orig Mon Feb 22 08:40:11 1988
--- ./pcmain.c Thu Mar 31 11:19:13 1988
***************
*** 1,4
! /* SCCS Id: @(#)pcmain.c 2.1 87/10/18
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* main.c - (PC) version */

--- 1,4 -----
! /* SCCS Id: @(#)pcmain.c 2.3 87/12/12
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* main.c - (PC) version */

***************
*** 35,40
{
register int fd;
register char *dir;
#ifdef MSDOS
static void moveloop(); /* a helper function for MSC optimizer */

--- 35,41 -----
{
register int fd;
register char *dir;
+ extern struct monst *makedog();
#ifdef MSDOS
static void moveloop(); /* a helper function for MSC optimizer */

***************
*** 44,50
int (*funcp)();

if (getcwd(orgdir, sizeof orgdir) == NULL) {
! xputs("hack: current directory path too long\n");
_exit(1);
}
funcp = exit; /* Kludge to get around LINT_ARGS of signal.

--- 45,51 -----
int (*funcp)();

if (getcwd(orgdir, sizeof orgdir) == NULL) {
! xputs("NetHack: current directory path too long\n");
_exit(1);
}
funcp = exit; /* Kludge to get around LINT_ARGS of signal.
***************
*** 131,136
clearlocks();
exit(0);
}
break;
#endif
case 'u':

--- 132,138 -----
clearlocks();
exit(0);
}
+ # endif
break;
#endif
case 'u':
***************
*** 222,228
(void) fflush(stdout);
if(!dorecover(fd))
goto not_recovered;
! pline("Hello %s, welcome to %s!", plname, hname);
flags.move = 0;
} else {
not_recovered:

--- 224,241 -----
(void) fflush(stdout);
if(!dorecover(fd))
goto not_recovered;
! pline("Hello %s%s, welcome to %s!",
! (Badged) ? "Officer " : "", plname, hname);
! #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
flags.move = 0;
} else {
not_recovered:
***************
*** 270,276
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.");
}

--- 283,289 -----
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.");
}
***************
*** 566,571

stop_occupation()
{
if(occupation) {
pline("You stop %s.", occtxt);
occupation = 0;

--- 579,586 -----

stop_occupation()
{
+ extern void pushch();
+
if(occupation) {
pline("You stop %s.", occtxt);
occupation = 0;
*** ./pctty.c.orig Mon Feb 22 08:40:12 1988
--- ./pctty.c Thu Mar 31 08:58:38 1988
***************
*** 1,4
! /* SCCS Id: @(#)pctty.c 2.1 87/11/09
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* tty.c - (PC) version */

--- 1,4 -----
! /* SCCS Id: @(#)pctty.c 2.3 87/12/12
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* tty.c - (PC) version */

***************
*** 10,15
#include "hack.h"
#include "func_tab.h"

static char erase_char, kill_char;

/*

--- 10,17 -----
#include "hack.h"
#include "func_tab.h"

+ extern void savech();
+
static char erase_char, kill_char;

/*
***************
*** 288,291
}

}
! #endif COM_COMPL

--- 290,293 -----
}

}
! #endif /* COM_COMPL /* */
*** ./polyself.c.orig Mon Feb 22 08:40:12 1988
--- ./polyself.c Thu Feb 18 13:29:42 1988
***************
*** 1,4
! /* SCCS Id: @(#)polyself.c 2.2 87/11/29
/* Polymorph self routine. Called in zap.c. Copyright 1987 by Ken Arromdee */

#include "hack.h"

--- 1,4 -----
! /* SCCS Id: @(#)polyself.c 2.3 88/01/21
/* Polymorph self routine. Called in zap.c. Copyright 1987 by Ken Arromdee */

#include "hack.h"
***************
*** 122,128
u.mtimedone = 500 + rn2(500);
flags.botl = 1;
if (u.usym == 'D')
! pline("Use the command #breathe to breathe.");
if (u.usym == 'N')
pline("Use the command #remove if you have to remove an iron ball.");
find_ac();

--- 122,128 -----
u.mtimedone = 500 + rn2(500);
flags.botl = 1;
if (u.usym == 'D')
! pline("Use the command #breathe to breathe fire.");
if (u.usym == 'N')
pline("Use the command #remove if you have to remove an iron ball.");
find_ac();
***************
*** 139,151
{
struct obj *otmp;
if (uarm) {
! if (index("CDMPRUXYdejlouz,'9", turninto)) {
! pline("The transformation causes you to break out of your armor!");
! if (uarm2) useup(uarm2);
! useup(uarm);
! } else if (index("abcfghikpqrstvxyABEFJQS", turninto)) {
! pline("Your armor falls around you!");
! if (otmp = uarm2) {
setworn((struct obj *)0,otmp->owornmask & W_ARM2);
dropx(otmp);
}

--- 139,155 -----
{
struct obj *otmp;
if (uarm) {
! if (index("CDMPRUXYdejlouz,'9", turninto)) {
! pline("The transformation causes you to %s out of your armor!",
! (uarm2 || uarm->otyp != ELVEN_CLOAK) ? "break" : "tear");
! #ifdef SHIRT
! if (uarmu) useup(uarmu);
! #endif
! if (uarm2) useup(uarm2);
! useup(uarm);
! } else if (index("abcfghikpqrstvxyABEFJQS", turninto)) {
! pline("Your armor falls around you!");
! if (otmp = uarm2) {
setworn((struct obj *)0,otmp->owornmask & W_ARM2);
dropx(otmp);
}
***************
*** 148,158
if (otmp = uarm2) {
setworn((struct obj *)0,otmp->owornmask & W_ARM2);
dropx(otmp);
! }
! otmp = uarm;
! setworn((struct obj *)0, otmp->owornmask & W_ARM);
! dropx(otmp);
! }
}
if (!index("enozCGHIKLNOTUVWXYZ&',", turninto)) {
if (otmp = uarmg) {

--- 152,162 -----
if (otmp = uarm2) {
setworn((struct obj *)0,otmp->owornmask & W_ARM2);
dropx(otmp);
! }
! otmp = uarm;
! setworn((struct obj *)0, otmp->owornmask & W_ARM);
! dropx(otmp);
! }
}
#ifdef SHIRT
else if (uarmu) {
***************
*** 154,159
dropx(otmp);
}
}
if (!index("enozCGHIKLNOTUVWXYZ&',", turninto)) {
if (otmp = uarmg) {
pline("You drop your gloves!");

--- 158,169 -----
dropx(otmp);
}
}
+ #ifdef SHIRT
+ else if (uarmu) {
+ pline("The transformation causes you to tear out of your shirt!");
+ if (uarmu) useup(uarmu);
+ }
+ #endif
if (!index("enozCGHIKLNOTUVWXYZ&',", turninto)) {
if (otmp = uarmg) {
pline("You drop your gloves!");
***************
*** 199,204
return(!index("@nGHIKLNOTVWZ&',",c));
}

rehumanize()
{
u.mh = u.mhmax = u.mtimedone = 0;

--- 209,220 -----
return(!index("@nGHIKLNOTVWZ&',",c));
}

+ humanoid(c) /* creature type c has hands */
+ char c;
+ {
+ return(!!index("@ehintCGHIKLMNOQTVWZ&",c));
+ }
+
rehumanize()
{
u.mh = u.mhmax = u.mtimedone = 0;
***************
*** 224,230
if(!getdir(1)) return(0);
if (rn2(4))
pline("You exhale a bit of smoke.");
! else buzz(10, u.ux, u.uy, u.dx, u.dy);
/* Changes must be made in zap.c to accommodate this. */
} else pline("You do not have the ability to breathe fire!");
return(1);

--- 240,246 -----
if(!getdir(1)) return(0);
if (rn2(4))
pline("You exhale a bit of smoke.");
! else buzz(20, u.ux, u.uy, u.dx, u.dy);
/* Changes must be made in zap.c to accommodate this. */
} else pline("You do not have the ability to breathe fire!");
return(1);
*** ./potion.c.orig Mon Feb 22 08:40:13 1988
--- ./potion.c Thu Mar 31 17:16:47 1988
***************
*** 1,4
! /* SCCS Id: @(#)potion.c 2.1 87/09/29
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include "hack.h"

--- 1,4 -----
! /* SCCS Id: @(#)potion.c 2.3 88/02/11
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include "hack.h"
***************
*** 42,47
ghost_from_bottle();
goto use_it;
}
if((retval = peffects(otmp)) >= 0) return(retval);

if(nothing) {

--- 42,51 -----
ghost_from_bottle();
goto use_it;
}
+ if(!strcmp(objects[otmp->otyp].oc_descr, "glowing") && !rn2(13)) {
+ djinni_from_bottle();
+ goto use_it;
+ }
if((retval = peffects(otmp)) >= 0) return(retval);

if(nothing) {
***************
*** 582,587
pline("As you open the bottle, an enormous ghost emerges!");
pline("You are frightened to death, and unable to move.");
nomul(-3);
}

gainstr(inc)

--- 586,630 -----
pline("As you open the bottle, an enormous ghost emerges!");
pline("You are frightened to death, and unable to move.");
nomul(-3);
+ }
+
+ djinni_from_bottle(){
+ extern struct permonst pm_djinni;
+ register struct monst *mtmp;
+
+ if(!(mtmp = makemon(PM_DJINNI,u.ux,u.uy))){
+ pline("It turns out to be empty.");
+ return;
+ }
+
+ mtmp->isdjinni = 1;
+ mnexto(mtmp);
+ if (!Blind) {
+ pline("In a cloud of smoke, a djinni emerges!");
+ pline("%s speaks.", Monnam(mtmp));
+ } else {
+ pline("You smell fumes!");
+ pline("Something speaks.");
+ }
+
+ switch (rn2(5)) {
+ case 0 : pline("'I am in your debt. I will grant one wish!'");
+ makewish();
+ mondied(mtmp);
+ break;
+ case 1 : pline("'Thank you for freeing me!'");
+ tamedog(mtmp, (struct obj *) 0);
+ break;
+ case 2 : pline("'You freed me!'");
+ mtmp->mpeaceful = 1;
+ break;
+ case 3 : pline("'It is about time!'");
+ pline("The djinni vanishes!");
+ mondied(mtmp);
+ break;
+ default: pline("You disturbed me fool!");
+ break;
+ }
}

gainstr(inc)
*** ./pray.c.orig Mon Feb 22 08:40:13 1988
--- ./pray.c Fri Feb 12 11:18:05 1988
***************
*** 1,4
! /* SCCS Id: @(#)pray.c 2.1 87/10/07
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include "hack.h"

--- 1,4 -----
! /* SCCS Id: @(#)pray.c 2.3 87/12/12
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include "hack.h"
***************
*** 7,13
extern struct monst *mkmon_at();
extern struct obj *mkobj_at();

- dopray() { /* M. Stephenson (1.0.3b) */
#ifdef PRAYERS
if (u.ublesscnt > 0) { /* disturbing the gods too much */

--- 7,12 -----
extern struct monst *mkmon_at();
extern struct obj *mkobj_at();

#ifdef PRAYERS
#ifdef THEOLOGY

***************
*** 9,15

dopray() { /* M. Stephenson (1.0.3b) */
#ifdef PRAYERS
! if (u.ublesscnt > 0) { /* disturbing the gods too much */

u.ublesscnt += 200;
u.uluck -= 3;

--- 8,14 -----
extern struct obj *mkobj_at();

#ifdef PRAYERS
! #ifdef THEOLOGY

#define TROUBLE_STONED 1
#define TROUBLE_STARVING 2
***************
*** 11,19
#ifdef PRAYERS
if (u.ublesscnt > 0) { /* disturbing the gods too much */

! u.ublesscnt += 200;
! u.uluck -= 3;
! if (u.uluck < LUCKMIN) u.uluck = LUCKMIN;
#ifdef HARD
u.ugangr++;
angrygods();

--- 10,209 -----
#ifdef PRAYERS
#ifdef THEOLOGY

! #define TROUBLE_STONED 1
! #define TROUBLE_STARVING 2
! #define TROUBLE_SICK 3
! #define TROUBLE_HIT 4
!
! #define TROUBLE_PUNISHED (-1)
! #define TROUBLE_CURSED_ITEMS (-2)
! #define TROUBLE_HUNGRY (-3)
! #define TROUBLE_HALLUCINATION (-4)
! #define TROUBLE_BLIND (-5)
! #define TROUBLE_POISONED (-6)
! #define TROUBLE_WOUNDED_LEGS (-7)
! #define TROUBLE_CONFUSED (-8)
!
! /* We could force rehumanize of polyselfed people, but we can't tell
! unintentional shape changes from the other kind. Oh well. */
!
! /* Return 0 if nothing particular seems wrong, positive numbers for
! serious trouble, and negative numbers for comparative annoyances. This
! returns the worst problem. There may be others, and the gods may fix
! more than one.
!
! This could get as bizarre as noting surrounding opponents, (or hostile dogs),
! but that's really hard.
! */
!
!
! in_trouble () {
!
! /* Borrowed from eat.c */
!
! #define SATIATED 0
! #define NOT_HUNGRY 1
! #define HUNGRY 2
! #define WEAK 3
! #define FAINTING 4
! #define FAINTED 5
! #define STARVED 6
!
! if (Stoned) return (TROUBLE_STONED);
! if (u.uhs >= WEAK) return (TROUBLE_STARVING);
! if (Sick) return (TROUBLE_SICK);
! if (u.uhp < 5) return (TROUBLE_HIT);
! if (Punished) return (TROUBLE_PUNISHED);
! if (
! (uarmh && uarmh->cursed) /* helmet */
! ||
! (uarms && uarms->cursed) /* shield */
! ||
! (uarmg && uarmg->cursed) /* gloves */
! ||
! (uarm && uarm->cursed) /* armor */
! ||
! (uarm2 && uarm2->cursed) /* cloak */
! ||
! (uwep && (uwep->olet == WEAPON_SYM) && (uwep->cursed))
! ||
! (uleft && uleft->cursed)
! ||
! (uright && uright->cursed))
! return (TROUBLE_CURSED_ITEMS);
!
! if (u.uhs >= HUNGRY) return (TROUBLE_HUNGRY);
! if (Hallucination) return (TROUBLE_HALLUCINATION);
! if (Blinded > 1) return (TROUBLE_BLIND); /* don't loop when fixing sets to 1 */
! if (u.ustr < u.ustrmax) return (TROUBLE_POISONED);
! if (Wounded_legs) return (TROUBLE_WOUNDED_LEGS);
! if (Confusion) return (TROUBLE_CONFUSED);
! return (0);
! }
!
! fix_worst_trouble ()
! {
! char *tmp, *hcolor();
!
! switch (in_trouble ()) {
! case TROUBLE_STONED: pline ("You feel more limber."); Stoned = 0; break;
! case TROUBLE_HUNGRY:
! case TROUBLE_STARVING: pline ("Your stomach feels content."); init_uhunger (); break;
! case TROUBLE_SICK: pline ("You feel better."); Sick = 0; break;
! case TROUBLE_HIT:
! pline("A %s glow surrounds you",
! Hallucination ? hcolor () : "golden");
! u.uhp = u.uhpmax += 5;
! break;
!
! case TROUBLE_PUNISHED:
! Punished = 0;
! freeobj(uchain);
! unpobj(uchain);
! free((char *) uchain);
! uball->spe = 0;
! uball->owornmask &= ~W_BALL;
! uchain = uball = (struct obj *) 0;
! break;
!
! case TROUBLE_CURSED_ITEMS:
! { struct obj *otmp;
! char * what;
! otmp = (struct obj *) 0;
! what = (char *) 0;
! if (uarmh && uarmh->cursed) /* helmet */
! otmp = uarmh;
! else if (uarms && uarms->cursed) /* shield */
! otmp = uarms;
! else if (uarmg && uarmg->cursed) /* gloves */
! otmp = uarmg;
! else if (uarm && uarm->cursed) /* armor */
! otmp = uarm;
! else if (uarm2 && uarm2->cursed) /* cloak, probably */
! otmp = uarm2;
! else if (uleft && uleft->cursed) {
! otmp = uleft;
! what = "left hand";
! }
! else if (uright && uright->cursed) {
! otmp = uright;
! what = "right hand";
! }
! else if(uwep && (uwep->olet == WEAPON_SYM) && (uwep->cursed))
! otmp = uwep;
!
! otmp->cursed = 0;
! pline ("Your %s %s.", what ? what : aobjnam (otmp, "softly glow"),
! Hallucination ? hcolor() : "amber");
! break;
! }
!
! case TROUBLE_HALLUCINATION:
! pline ("Looks like you are back in kansas."); Hallucination = 0; break;
! case TROUBLE_BLIND:
! pline ("Your eyes feel better."); Blinded = 1; break;
! case TROUBLE_POISONED:
! pline("There's a tiger in your tank.");
! if(u.ustr < u.ustrmax) {
! u.ustr = u.ustrmax;
! flags.botl = 1;
! }
! break;
! case TROUBLE_WOUNDED_LEGS:
! heal_legs ();
! break;
! case TROUBLE_CONFUSED:
! HConfusion = 0;
! break;
! }
! }
!
! #define CORPSE_I_TO_C(otyp) (char) ((otyp >= DEAD_ACID_BLOB)\
! ? 'a' + (otyp - DEAD_ACID_BLOB)\
! : '@' + (otyp - DEAD_HUMAN))
!
! extern char POISONOUS[];
!
! dosacrifice () {
! register struct obj *otmp;
! register struct objclass *ftmp;
! int value;
! char let;
! char *hcolor ();
!
! otmp = getobj("%", "sacrifice");
! if(!otmp) return(0);
!
! ftmp = &objects[otmp->otyp];
! #ifdef KAA
! if(otmp->otyp == DEAD_DEMON) let='&';
! else if (otmp->otyp == DEAD_GIANT) let='9';
! else let = CORPSE_I_TO_C(otmp->otyp);
! #else
! let = CORPSE_I_TO_C(otmp->otyp);
! #endif
!
! /* judge the food value by the nutrition, as well as some aging behavior */
!
! value = ftmp->nutrition;
!
! if (otmp->otyp >= CORPSE)
! {
! if (let != 'a' && (moves > otmp->age + 50))
! value = 0; /* old stuff */
! }
! else if(index(POISONOUS, let)) {
! value = -10; /* gods get annoyed */
! }
!
!
! if (value == 0)
! {
! pline ("Nothing happens.");
! return (1);
! }
! if (value < 0) /* Gods don't like poision as an offering. */
! {
#ifdef HARD
u.ugangr++;
angrygods();
***************
*** 15,20
u.uluck -= 3;
if (u.uluck < LUCKMIN) u.uluck = LUCKMIN;
#ifdef HARD
u.ugangr++;
angrygods();
#else

--- 205,292 -----
if (value < 0) /* Gods don't like poision as an offering. */
{
#ifdef HARD
+ u.ugangr++;
+ angrygods();
+ #else
+ if (u.ugangr++) angrygods();
+ else { /* exactly one warning */
+ pline("A voice booms out: You have angered us,");
+ pline("Disturb us again at your own risk!");
+ }
+ #endif
+ }
+ if (value > 0)
+ {
+ int saved_anger = u.ugangr;
+ int saved_cnt = u.ublesscnt;
+ int saved_luck = u.uluck;
+ /* OK, you get brownie points. */
+ if (Hallucination)
+ pline("Your sacrifice sprouts wings and a propeller and roars away!");
+ else pline("Your sacrifice is consumed in a burst of flame!");
+ if(u.ugangr)
+ {
+ u.ugangr -= ((value / 800) * 4);
+ if(u.ugangr < 0) u.ugangr = 0;
+ if(u.ugangr != saved_anger)
+ if (u.ugangr)
+ {
+ if (Hallucination) pline ("The gods seem %s.", hcolor ());
+ else pline("The gods seem slightly molified.");
+ }
+ else {
+ if (Hallucination) pline ("The gods seem cosmic (not a new fact).");
+ else pline ("The gods seem mollified.");
+ }
+ if ((int)u.uluck < 0) u.uluck = 0;
+ }
+ else if (u.ublesscnt > 0)
+ {
+ u.ublesscnt -= ((value / 800 /* a food ration */) * 300);
+ if(u.ublesscnt < 0) u.ublesscnt = 0;
+ if(u.ublesscnt != saved_cnt)
+ {
+ if ((int)u.uluck < 0) u.uluck = 0;
+ if (u.ublesscnt) {
+ if (Hallucination) pline ("You realize that the gods are not like you and I.");
+ else pline ("You have a hopeful feeling.");
+ }
+ else {
+ if (Hallucination) pline ("Overall, there is a smell of fried onions.");
+ else pline ("You have a feeling of reconciliation.");
+ }
+ }
+ }
+ else /* you were already in pretty good standing */
+ {
+ change_luck((value / 800) * LUCKMAX);
+ if (u.uluck != saved_luck)
+ {
+ if (Hallucination) pline ("You see crabgrass at your feet. A funny thing in a dungeon.");
+ else pline ("You see a four-leaf clover at your feet.");
+ }
+ }
+ }
+ useup(otmp);
+ return(1);
+ }
+ #endif
+ #endif
+
+ dopray() { /* M. Stephenson (1.0.3b) */
+ #ifdef PRAYERS
+ #ifdef THEOLOGY
+ int trouble = in_trouble ();
+ if ((!trouble && (u.ublesscnt > 0)) ||
+ ((trouble < 0) && (u.ublesscnt > 100)) /* minor difficulties */ ||
+ ((trouble > 0) && (u.ublesscnt > 200)) /* big trouble */
+ ) {
+ #else
+ if (u.ublesscnt > 0) { /* disturbing the gods too much */
+ #endif
+ u.ublesscnt += rnz(250);
+ change_luck(-3);
+ #ifdef HARD
u.ugangr++;
angrygods();
#else
***************
*** 24,31
pline("Disturb us again at your own risk!");
}
#endif
! } else if (u.uluck < 0) angrygods(); /* a bad boy/girl */
! else pleased(); /* or a good boy/girl */
#endif
nomovemsg = "You finished your prayer.";
nomul(-3);

--- 296,303 -----
pline("Disturb us again at your own risk!");
}
#endif
! } else if ((int)u.uluck < 0) angrygods(); /* a bad player */
! else pleased(); /* or a good player */
#endif
nomovemsg = "You finished your prayer.";
nomul(-3);
***************
*** 71,77
done("died");
break;
}
! u.ublesscnt = 250;
return(0);
}

--- 343,349 -----
done("died");
break;
}
! u.ublesscnt = rnz(300);
return(0);
}

***************
*** 75,80
return(0);
}

pleased() {

char *tmp, *hcolor();

--- 347,354 -----
return(0);
}

+
+
pleased() {

char *tmp, *hcolor();
***************
*** 78,84
pleased() {

char *tmp, *hcolor();
!
u.ugangr--;
if (u.ugangr < 0) u.ugangr = 0;
pline("You feel the gods are pleased.");

--- 352,361 -----
pleased() {

char *tmp, *hcolor();
! #ifdef THEOLOGY
! int trouble = in_trouble (); /* what's your worst difficulty? */
! int pat_on_head = 0;
! #endif
u.ugangr--;
if (u.ugangr < 0) u.ugangr = 0;
pline("You feel the gods are pleased.");
***************
*** 83,88
if (u.ugangr < 0) u.ugangr = 0;
pline("You feel the gods are pleased.");

switch(rn2((u.uluck + 6)/2)) {

case 0: pline("but nothing seems to happen.");

--- 360,393 -----
if (u.ugangr < 0) u.ugangr = 0;
pline("You feel the gods are pleased.");

+ #ifdef THEOLOGY
+ /* depending on your luck, the gods will :
+ - fix your worst problem if its major.
+ - fix all your major problems.
+ - fix your worst problem if its minor.
+ - fix all of your problems.
+ - do you a gratuitous favor.
+
+ if you make it to the the last category, you roll randomly again
+ to see what they do for you.
+
+ If your luck is at least 0, then you are guaranteed rescued
+ from your worst major problem. */
+
+ if (!trouble) pat_on_head = 1;
+ else
+ { int action = rn1(5,u.uluck+1);
+ if (action>=5) pat_on_head = 1;
+ if (action>=4) while (in_trouble ()) fix_worst_trouble ();
+ if (action<4 && action>=3) fix_worst_trouble ();
+ if (action<4 && action>=2) while (in_trouble () > 0) fix_worst_trouble ();
+ if (action==1 && trouble > 0) fix_worst_trouble ();
+ if (action==0) pline("but nothing seems to happen.");
+ };
+ if (pat_on_head)pline("The gods seem especially pleased ...");
+
+ if (pat_on_head)
+ #endif
switch(rn2((u.uluck + 6)/2)) {

case 0: pline("but nothing seems to happen.");
***************
*** 99,105
break;
}
#ifdef KAA
! if(uwep->olet == WEAPON_SYM) {
if (uwep->cursed) {
uwep->cursed=0;
pline("Your %s %s.", aobjnam(uwep,"softly glow"),

--- 404,410 -----
break;
}
#ifdef KAA
! if(uwep && (uwep->olet == WEAPON_SYM)) {
if (uwep->cursed) {
uwep->cursed=0;
pline("Your %s %s.", aobjnam(uwep,"softly glow"),
***************
*** 171,177
default: impossible("Confused deity!");
break;
}
! u.ublesscnt = 300;
#ifdef HARD
u.ublesscnt += (u.udemigod * 1000);
#endif

--- 476,482 -----
default: impossible("Confused deity!");
break;
}
! u.ublesscnt = rnz(350);
#ifdef HARD
u.ublesscnt += (u.udemigod * rnz(1000));
#endif
***************
*** 173,179
}
u.ublesscnt = 300;
#ifdef HARD
! u.ublesscnt += (u.udemigod * 1000);
#endif
return(0);
}

--- 478,484 -----
}
u.ublesscnt = rnz(350);
#ifdef HARD
! u.ublesscnt += (u.udemigod * rnz(1000));
#endif
return(0);
}
***************
*** 226,229
return(1);
}
#endif /* NEWCLASS /**/
-

--- 531,533 -----
return(1);
}
#endif /* NEWCLASS /**/
*** ./pri.c.orig Mon Feb 22 08:40:13 1988
--- ./pri.c Thu Feb 11 10:43:13 1988
***************
*** 1,4
! /* SCCS Id: @(#)pri.c 2.1 87/11/09
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include <stdio.h>

--- 1,4 -----
! /* SCCS Id: @(#)pri.c 2.3 87/12/12
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include <stdio.h>
***************
*** 436,441
(void) strcat(newbot, hu_stat[u.uhs]);
if(flags.time)
(void) sprintf(eos(newbot), " %ld", moves);
if(strlen(newbot) >= COLNO) {
register char *bp0, *bp1;
bp0 = bp1 = newbot;

--- 436,447 -----
(void) strcat(newbot, hu_stat[u.uhs]);
if(flags.time)
(void) sprintf(eos(newbot), " %ld", moves);
+ #ifdef SCORE_ON_BOTL
+ (void) sprintf(eos(newbot)," S:%lu "
+ ,(u.ugold - u.ugold0 > 0 ? u.ugold - u.ugold0 : 0)
+ + u.urexp + (50 * maxdlevel)
+ + (maxdlevel > 20? 1000*((maxdlevel > 30) ? 10 : maxdlevel - 20) :0));
+ #endif
if(strlen(newbot) >= COLNO) {
register char *bp0, *bp1;
bp0 = bp1 = newbot;
***************
*** 468,474

extern char plname[];
ustatusline() {
! pline("Status of %s ", plname);
pline("Level %d, gold %lu, hit points %d(%d), AC %d.",
# ifdef KAA
u.ulevel, u.ugold, u.mtimedone ? u.mh : u.uhp,

--- 474,480 -----

extern char plname[];
ustatusline() {
! pline("Status of %s%s ", (Badged) ? "Officer " : "", plname);
pline("Level %d, gold %lu, hit points %d(%d), AC %d.",
# ifdef KAA
u.ulevel, u.ugold, u.mtimedone ? u.mh : u.uhp,
*** ./prisym.c.orig Tue Mar 29 08:43:30 1988
--- ./prisym.c Tue Mar 29 08:44:42 1988
***************
*** 1,4
! /* SCCS Id: @(#)prisym.c 2.0 87/09/14
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include <stdio.h>

--- 1,4 -----
! /* SCCS Id: @(#)prisym.c 2.3 88/03/29
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include <stdio.h>
***************
*** 233,238
#ifdef NEWCLASS
case THRONE:
tmp = THRONE_SYM;
break;
#endif
/*

--- 233,243 -----
#ifdef NEWCLASS
case THRONE:
tmp = THRONE_SYM;
+ break;
+ #endif
+ #ifdef SINKS
+ case SINK:
+ tmp = SINK_SYM;
break;
#endif
/*
*** ./read.c.orig Mon Feb 22 08:40:14 1988
--- ./read.c Thu Jan 21 12:53:45 1988
***************
*** 1,4
! /* SCCS Id: @(#)read.c 2.2 87/11/29
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include "hack.h"

--- 1,4 -----
! /* SCCS Id: @(#)read.c 2.3 88/01/21
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include "hack.h"
***************
*** 679,684
if(uarm) {
pline("Your armor turns to dust and falls to the floor!");
useup(uarm);
} else if(uarmh) {
pline("Your helmet turns to dust and is blown away!");
useup(uarmh);

--- 679,689 -----
if(uarm) {
pline("Your armor turns to dust and falls to the floor!");
useup(uarm);
+ #ifdef SHIRT
+ } else if(uarmu) {
+ pline("Your shirt crumbles into tiny threads and falls apart!");
+ useup(uarmu);
+ #endif
} else if(uarmh) {
pline("Your helmet turns to dust and is blown away!");
useup(uarmh);
*** ./rip.c.orig Mon Feb 22 08:40:14 1988
--- ./rip.c Thu Feb 11 10:47:35 1988
***************
*** 1,4
! /* SCCS Id: @(#)rip.c 1.4 87/08/08
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* hack.rip.c - version 1.0.2 */

--- 1,4 -----
! /* SCCS Id: @(#)rip.c 2.3 88/02/11
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include <stdio.h>
***************
*** 1,6
/* SCCS Id: @(#)rip.c 1.4 87/08/08
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- /* hack.rip.c - version 1.0.2 */

#include <stdio.h>
#include "hack.h"

--- 1,5 -----
/* SCCS Id: @(#)rip.c 2.3 88/02/11
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include <stdio.h>
#include "hack.h"
***************
*** 35,41
register x,y;

cls();
! (void) strcpy(buf, plname);
buf[16] = 0;
center(6, buf);
(void) sprintf(buf, "%ld AU", u.ugold);

--- 34,40 -----
register x,y;

cls();
! (void) sprintf(buf,"%s%s", (Badged) ? "Officer " : "", plname);
buf[16] = 0;
center(6, buf);
(void) sprintf(buf, "%ld AU", u.ugold);
***************
*** 43,48
(void) sprintf(buf, "killed by%s",
!strncmp(killer, "the ", 4) ? "" :
!strcmp(killer, "starvation") ? "" :
index(vowels, *killer) ? " an" : " a");
center(8, buf);
(void) strcpy(buf, killer);

--- 42,54 -----
(void) sprintf(buf, "killed by%s",
!strncmp(killer, "the ", 4) ? "" :
!strcmp(killer, "starvation") ? "" :
+ !strncmp(killer, "Mr.") ? "" :
+ !strncmp(killer, "Ms.") ? "" :
+ #ifdef STOOGES
+ !strcmp(killer, "Larry") ? "" :
+ !strcmp(killer, "Curly") ? "" :
+ !strcmp(killer, "Moe") ? "" :
+ #endif
index(vowels, *killer) ? " an" : " a");
center(8, buf);
(void) strcpy(buf, killer);
*** ./rm.h.orig Tue Mar 29 08:28:57 1988
--- ./rm.h Tue Mar 29 08:47:43 1988
***************
*** 1,4
! /* SCCS Id: @(#)rm.h 2.1 87/10/17
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

/*

--- 1,4 -----
! /* SCCS Id: @(#)rm.h 2.3 88/03/29
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

/*
***************
*** 16,25
#define LDOOR 5
#define POOL 6 /* not yet fully implemented */
/* this should in fact be a bit like lit */
! #define DOOR 7
! #define CORR 8
! #define ROOM 9
! #define STAIRS 10
#define FOUNTAIN 11
#define THRONE 12

--- 16,25 -----
#define LDOOR 5
#define POOL 6 /* not yet fully implemented */
/* this should in fact be a bit like lit */
! #define DOOR 7
! #define CORR 8
! #define ROOM 9
! #define STAIRS 10
#define FOUNTAIN 11
#define THRONE 12
#define SINK 13
***************
*** 21,27
#define ROOM 9
#define STAIRS 10
#define FOUNTAIN 11
! #define THRONE 12

/*
* Avoid using the level types in inequalities:

--- 21,28 -----
#define ROOM 9
#define STAIRS 10
#define FOUNTAIN 11
! #define THRONE 12
! #define SINK 13

/*
* Avoid using the level types in inequalities:
***************
*** 42,47
#define IS_POOL(typ) ((typ) == POOL)
#define IS_THRONE(typ) ((typ) == THRONE)
#define IS_FOUNTAIN(typ) ((typ) == FOUNTAIN)

/*
* The level-map symbols may be compiled in or defined at initialization time

--- 43,49 -----
#define IS_POOL(typ) ((typ) == POOL)
#define IS_THRONE(typ) ((typ) == THRONE)
#define IS_FOUNTAIN(typ) ((typ) == FOUNTAIN)
+ #define IS_SINK(typ) ((typ) == SINK)

/*
* The level-map symbols may be compiled in or defined at initialization time
***************
*** 69,74
#define FOUNTAIN_SYM '{'
#define THRONE_SYM '\\'
#define WEB_SYM '"'
#else /* GRAPHICS */

/* screen symbols for using character graphics. */

--- 71,77 -----
#define FOUNTAIN_SYM '{'
#define THRONE_SYM '\\'
#define WEB_SYM '"'
+ #define SINK_SYM '#'
#else /* GRAPHICS */

/* screen symbols for using character graphics. */
***************
*** 84,89
#ifdef SPIDERS
unsigned char web;
#endif
};
extern struct symbols showsyms, defsyms;

--- 87,95 -----
#ifdef SPIDERS
unsigned char web;
#endif
+ #ifdef SINKS
+ unsigned char sink;
+ #endif
};
extern struct symbols showsyms, defsyms;

***************
*** 104,109
#define FOUNTAIN_SYM showsyms.fountain
#define THRONE_SYM showsyms.throne
#define WEB_SYM showsyms.web
#endif

#define ERRCHAR ']'

--- 110,116 -----
#define FOUNTAIN_SYM showsyms.fountain
#define THRONE_SYM showsyms.throne
#define WEB_SYM showsyms.web
+ #define SINK_SYM showsyms.sink
#endif

#define ERRCHAR ']'
*** ./save.c.orig Mon Feb 22 08:40:15 1988
--- ./save.c Tue Feb 2 11:10:36 1988
***************
*** 1,4
! /* SCCS Id: @(#)save.c 2.1 87/10/07
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include <signal.h>

--- 1,4 -----
! /* SCCS Id: @(#)save.c 2.3 88/01/24
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */

#include <signal.h>
***************
*** 4,10
#include <signal.h>
#include <stdio.h>
#include "hack.h"
! extern char genocided[60]; /* defined in Decl.c */
extern char fut_geno[60]; /* idem */
extern struct permonst pm_wizard; /* since the wizard evolves */

--- 4,11 -----
#include <signal.h>
#include <stdio.h>
#include "hack.h"
!
! extern char genocided[60]; /* defined in decl.c */
extern char fut_geno[60]; /* idem */
extern struct permonst pm_wizard; /* since the wizard evolves */

***************
*** 61,67
return(0);
}
if(flags.moonphase == FULL_MOON) /* ut-sally!fletcher */
! u.uluck--; /* and unido!ab */
#ifdef DGKMOD
home();
cl_end();

--- 62,68 -----
return(0);
}
if(flags.moonphase == FULL_MOON) /* ut-sally!fletcher */
! change_luck(-1); /* and unido!ab */
#ifdef DGKMOD
home();
cl_end();
***************
*** 211,216
mread(fd, (char *) genocided, sizeof genocided);
mread(fd, (char *) fut_geno, sizeof fut_geno);
#ifdef HARD
mread(fd, (char *) &pm_wizard, sizeof(struct permonst));
#endif
restnames(fd);

--- 212,220 -----
mread(fd, (char *) genocided, sizeof genocided);
mread(fd, (char *) fut_geno, sizeof fut_geno);
#ifdef HARD
+ {
+ /* Save name pointer from being munged -- tom@uw-warp */
+ char *name = pm_wizard.mname;
mread(fd, (char *) &pm_wizard, sizeof(struct permonst));
pm_wizard.mname = name;
}
***************
*** 212,217
mread(fd, (char *) fut_geno, sizeof fut_geno);
#ifdef HARD
mread(fd, (char *) &pm_wizard, sizeof(struct permonst));
#endif
restnames(fd);
#ifdef DGK

--- 216,223 -----
/* Save name pointer from being munged -- tom@uw-warp */
char *name = pm_wizard.mname;
mread(fd, (char *) &pm_wizard, sizeof(struct permonst));
+ pm_wizard.mname = name;
+ }
#endif
restnames(fd);
#ifdef DGK
***************
*** 335,359
}
return(first);
}
- #ifdef MSDOS
- struct monst *
- restmonchn(fd)
- register fd;
- {
- register struct monst *mtmp, *mtmp2;
- register struct monst *first = 0;
- int xl;
- int monsindex, mi;
- extern struct permonst li_dog, dog, la_dog;
- #ifdef KAA
- extern struct permonst hell_hound;
- # ifdef HARD
- extern struct permonst d_lord, d_prince;
- # endif
- # ifdef KJSMODS
- extern struct permonst pm_guard, pm_ghost, pm_eel;
- # endif
- #endif

#ifdef lint
/* suppress "used before set" warning from lint */

--- 341,346 -----
}
return(first);
}

struct monst *
restmonchn(fd)
***************
*** 355,414
# endif
#endif

- #ifdef lint
- /* suppress "used before set" warning from lint */
- mtmp2 = 0;
- #endif /* lint /**/
- while(1) {
- mread(fd, (char *) &xl, sizeof(xl));
- if(xl == -1) break;
- mtmp = newmonst(xl);
- if(!first) first = mtmp;
- else mtmp2->nmon = mtmp;
- mread(fd, (char *) mtmp, (unsigned) xl + sizeof(struct monst));
- if(!mtmp->m_id)
- mtmp->m_id = flags.ident++;
- monsindex = *((int *)&mtmp->data);
- if (monsindex == (mi = -1)) /* Special fake index */
- mtmp->data = &li_dog;
- else if (monsindex == --mi) /* Special fake index */
- mtmp->data = &dog;
- else if (monsindex == --mi) /* Special fake index */
- mtmp->data = &la_dog;
- #ifdef KAA
- else if (monsindex == --mi)
- mtmp->data = &hell_hound;
- # ifdef HARD
- else if (monsindex == --mi)
- mtmp->data = &d_lord;
-
- else if (monsindex == --mi)
- mtmp->data = &d_prince;
- # endif
- # ifdef KJSMODS
- else if (monsindex == --mi)
- mtmp->data = &pm_guard;
-
- else if (monsindex == --mi)
- mtmp->data = &pm_ghost;
-
- else if (monsindex == --mi)
- mtmp->data = &pm_eel;
- # endif
- #endif
- else
- mtmp->data = &mons[monsindex];
- if(mtmp->minvent)
- mtmp->minvent = restobjchn(fd);
- mtmp2 = mtmp;
- }
- if(first && mtmp2->nmon){
- impossible("Restmonchn: error reading monchn.");
- mtmp2->nmon = 0;
- }
- return(first);
- }
- #else
struct monst *
restmonchn(fd)
register fd;

--- 342,347 -----
return(first);
}

struct monst *
restmonchn(fd)
register fd;
***************
*** 421,426
long differ;

mread(fd, (char *)&monbegin, sizeof(monbegin));
differ = (char *)(&mons[0]) - (char *)(monbegin);

#ifdef LINT

--- 354,360 -----
long differ;

mread(fd, (char *)&monbegin, sizeof(monbegin));
+ #ifndef MSDOS
differ = (char *)(&mons[0]) - (char *)(monbegin);
#else
differ = (long)(&mons[0]) - (long)(monbegin);
***************
*** 422,427

mread(fd, (char *)&monbegin, sizeof(monbegin));
differ = (char *)(&mons[0]) - (char *)(monbegin);

#ifdef LINT
/* suppress "used before set" warning from lint */

--- 356,364 -----
mread(fd, (char *)&monbegin, sizeof(monbegin));
#ifndef MSDOS
differ = (char *)(&mons[0]) - (char *)(monbegin);
+ #else
+ differ = (long)(&mons[0]) - (long)(monbegin);
+ #endif

#ifdef LINT
/* suppress "used before set" warning from lint */
***************
*** 436,441
mread(fd, (char *) mtmp, (unsigned) xl + sizeof(struct monst));
if(!mtmp->m_id)
mtmp->m_id = flags.ident++;
mtmp->data = (struct permonst *)
((char *) mtmp->data + differ);
if(mtmp->minvent)

--- 373,379 -----
mread(fd, (char *) mtmp, (unsigned) xl + sizeof(struct monst));
if(!mtmp->m_id)
mtmp->m_id = flags.ident++;
+ #ifndef MSDOS
mtmp->data = (struct permonst *)
((char *) mtmp->data + differ);
#else
***************
*** 438,443
mtmp->m_id = flags.ident++;
mtmp->data = (struct permonst *)
((char *) mtmp->data + differ);
if(mtmp->minvent)
mtmp->minvent = restobjchn(fd);
mtmp2 = mtmp;

--- 376,385 -----
#ifndef MSDOS
mtmp->data = (struct permonst *)
((char *) mtmp->data + differ);
+ #else
+ mtmp->data = (struct permonst *)
+ ((long) mtmp->data + differ);
+ #endif
if(mtmp->minvent)
mtmp->minvent = restobjchn(fd);
mtmp2 = mtmp;
***************
*** 448,451
}
return(first);
}
- #endif

--- 390,392 -----
}
return(first);
}
SHAR_EOF
if test 37968 -ne "`wc -c < 'Update.2.3.e'`"
then
echo shar: error transmitting "'Update.2.3.e'" '(should have been 37968 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