Merge branch 'NetHack-3.6'

This commit is contained in:
nhmall
2019-09-21 10:52:13 -04:00
3 changed files with 41 additions and 18 deletions

View File

@@ -1,4 +1,4 @@
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.112 $ $NHDT-Date: 1568509226 2019/09/15 01:00:26 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.114 $ $NHDT-Date: 1568922510 2019/09/19 19:48:30 $
This fixes36.3 file is here to capture information about updates in the 3.6.x This fixes36.3 file is here to capture information about updates in the 3.6.x
lineage following the release of 3.6.2 in May 2019. Please note, however, lineage following the release of 3.6.2 in May 2019. Please note, however,
@@ -139,6 +139,12 @@ when spellcasting monster aimed at wrong spot due to not being able to see
prevent impossible when guard tries to relocate a monster on a full level prevent impossible when guard tries to relocate a monster on a full level
hallucination provides partial protection from passive gaze counterattack hallucination provides partial protection from passive gaze counterattack
against hero's attack; check for that before checking for free action against hero's attack; check for that before checking for free action
feedback from blessed potion of restore ability never reported "you feel great"
due to bad logic for not-unihorn case in unfixable_trouble_count()
when rubbing a ring on a touchstone, all types of rings were treated as if
they were gems; an iron ring made a cyan streak instead of yielding
"scritch, scritch" and a gold ring made a yellow streak rather than
a golden scratch
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 youprop.h $NHDT-Date: 1433291407 2015/06/03 00:30:07 $ $NHDT-Branch: master $:$NHDT-Revision: 1.23 $ */ /* NetHack 3.6 youprop.h $NHDT-Date: 1568831820 2019/09/18 18:37:00 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.27 $ */
/* Copyright (c) 1989 Mike Threepoint */ /* Copyright (c) 1989 Mike Threepoint */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -75,8 +75,8 @@
/* Pseudo-property */ /* Pseudo-property */
#define Punished (uball != 0) #define Punished (uball != 0)
/* Those implemented solely as timeouts (we use just intrinsic) */ /* Many are implemented solely as timeouts (we use just intrinsic) */
#define HStun u.uprops[STUNNED].intrinsic #define HStun u.uprops[STUNNED].intrinsic /* timed or FROMFORM */
#define Stunned HStun #define Stunned HStun
#define HConfusion u.uprops[CONFUSION].intrinsic #define HConfusion u.uprops[CONFUSION].intrinsic

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 apply.c $NHDT-Date: 1559670602 2019/06/04 17:50:02 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.274 $ */ /* NetHack 3.6 apply.c $NHDT-Date: 1568922511 2019/09/19 19:48:31 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.277 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -2301,13 +2301,14 @@ static void
use_stone(tstone) use_stone(tstone)
struct obj *tstone; struct obj *tstone;
{ {
static const char scritch[] = "\"scritch, scritch\"";
static const char allowall[3] = { COIN_CLASS, ALL_CLASSES, 0 };
static const char coins_gems[3] = { COIN_CLASS, GEM_CLASS, 0 };
struct obj *obj; struct obj *obj;
boolean do_scratch; boolean do_scratch;
const char *streak_color, *choices; const char *streak_color, *choices;
char stonebuf[QBUFSZ]; char stonebuf[QBUFSZ];
static const char scritch[] = "\"scritch, scritch\""; int oclass;
static const char allowall[3] = { COIN_CLASS, ALL_CLASSES, 0 };
static const char coins_gems[3] = { COIN_CLASS, GEM_CLASS, 0 };
/* in case it was acquired while blinded */ /* in case it was acquired while blinded */
if (!Blind) if (!Blind)
@@ -2352,7 +2353,14 @@ struct obj *tstone;
do_scratch = FALSE; do_scratch = FALSE;
streak_color = 0; streak_color = 0;
switch (obj->oclass) { oclass = obj->oclass;
/* prevent non-gemstone rings from being treated like gems */
if (oclass == RING_CLASS
&& objects[obj->otyp].oc_material != GEMSTONE
&& objects[obj->otyp].oc_material != MINERAL)
oclass = RANDOM_CLASS; /* something that's neither gem nor ring */
switch (oclass) {
case GEM_CLASS: /* these have class-specific handling below */ case GEM_CLASS: /* these have class-specific handling below */
case RING_CLASS: case RING_CLASS:
if (tstone->otyp != TOUCHSTONE) { if (tstone->otyp != TOUCHSTONE) {
@@ -3712,25 +3720,34 @@ boolean is_horn;
if (Stoned) if (Stoned)
unfixable_trbl++; unfixable_trbl++;
if (Slimed)
unfixable_trbl++;
if (Strangled) if (Strangled)
unfixable_trbl++; unfixable_trbl++;
if (Wounded_legs && !u.usteed) if (Wounded_legs && !u.usteed)
unfixable_trbl++; unfixable_trbl++;
if (Slimed) /* lycanthropy is undesirable, but it doesn't actually make you feel bad
unfixable_trbl++; so don't count it as a trouble which can't be fixed */
/* lycanthropy is undesirable, but it doesn't actually make you feel bad */
if (!is_horn || (Confusion & ~TIMEOUT)) /*
* Unicorn horn can fix these when they're timed but not when
* they aren't. Potion of restore ability doesn't touch them,
* so they're always unfixable for the not-unihorn case.
* [Most of these are timed only, so always curable via horn.
* An exception is Stunned, which can be forced On by certain
* polymorph forms (stalker, bats).]
*/
if (Sick && (!is_horn || (Sick & ~TIMEOUT) != 0L))
unfixable_trbl++; unfixable_trbl++;
if (!is_horn || (Sick & ~TIMEOUT)) if (Stunned && (!is_horn || (HStun & ~TIMEOUT) != 0L))
unfixable_trbl++; unfixable_trbl++;
if (!is_horn || (HHallucination & ~TIMEOUT)) if (Confusion && (!is_horn || (HConfusion & ~TIMEOUT) != 0L))
unfixable_trbl++; unfixable_trbl++;
if (!is_horn || (Vomiting & ~TIMEOUT)) if (Hallucination && (!is_horn || (HHallucination & ~TIMEOUT) != 0L))
unfixable_trbl++; unfixable_trbl++;
if (!is_horn || (HStun & ~TIMEOUT)) if (Vomiting && (!is_horn || (Vomiting & ~TIMEOUT) != 0L))
unfixable_trbl++; unfixable_trbl++;
if (!is_horn || (HDeaf & ~TIMEOUT)) if (Deaf && (!is_horn || (HDeaf & ~TIMEOUT) != 0L))
unfixable_trbl++; unfixable_trbl++;
return unfixable_trbl; return unfixable_trbl;