mwp@mulga.oz (Michael Paddon) (05/24/88)
Patch #1
========
There is a serious bug in NetHack which allows players to get almost
infinite scores (billions of points) with ease. Credit for finding
this goes to one of our local NetHack devotees -- Stuart McCormack.
It seems that when demons try to blackmail you, a negative amount of
gold can be specified as a peace offering. The demon gets mad and
the player gets rich. To do this properly, one must then teleport to
level 0 -- billions of gold pieces will cause even the strongest
player to collapse.
This fix (to mhitu.c) will make this tatic obsolete.
Patch #2
========
The second fix in this posting (to zap.c) addresses a "feature"
which many people here found annoying. Dragons which breathe death
rays can appear around level 8 upwards, and are inevitably deadly at
that stage. In the interests of game playability this fix implements
a saving throw versus experience level and luck when the player
is hit by a death ray (any death ray due the the method of implementing
breath weapons).
Request
=======
It is extremely annoying to die whilw reading a spell book.
Would it not be better to allow the player to react and have
the transcribe fail? Has anyone implemented this?
Michael Paddon
==============
*** mhitu.c.orig Mon May 23 19:30:57 1988
--- mhitu.c Tue May 24 11:55:16 1988
***************
*** 552,558
getlin(buf);
sscanf(buf, "%d", &offer);
! if(offer >= u.ugold) {
pline("You give %s all your gold.", xmonnam(mtmp, 0));
offer = u.ugold;
} else pline("You give %s %d Zorkmids.", xmonnam(mtmp, 0), offer);
--- 552,562 -----
getlin(buf);
sscanf(buf, "%d", &offer);
! if(offer < 0) {
! pline("You try to short change %s, but fumble.", xmonnam(mtmp, 0));
! offer = 0;
! }
! else if(offer >= u.ugold) {
pline("You give %s all your gold.", xmonnam(mtmp, 0));
offer = u.ugold;
} else pline("You give %s %d Zorkmids.", xmonnam(mtmp, 0), offer);
*** zap.c.orig Tue May 24 11:56:42 1988
--- zap.c Tue May 24 11:56:55 1988
***************
*** 862,868
freeze_potions();
break;
case 4: /* death */
! u.uhp = -1;
break;
case 5: /* lightning */
if(Shock_resistance)
--- 862,871 -----
freeze_potions();
break;
case 4: /* death */
! if (u.ulevel+u.uluck > rn2(2*LUCKMAX))
! dam = (u.uhp*2)/3;
! else
! u.uhp = -1;
break;
case 5: /* lightning */
if(Shock_resistance)