fix github issue 223 - rubbing ring on touchstone
Fixes #223 The touchstone code treated all rings as if they had gemstones, but quite a few don't and feedback could be unexpected. Cited case was an iron ring yielding a cyan (hi_metal) streak instead of the normal iron result ("scritch, scritch"). A gold ring yielded a yellow streak rather than a golden scratch. I didn't test silver ring but suspect it yielded a silver streak rather than a silvery scratch. This changes touchstones to treat non-gemstone rings like other classes of objects instead of like gems. I made mineral rings keep acting like gemstone rings--I'm not sure whether that's right.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.113 $ $NHDT-Date: 1568831820 2019/09/18 18:37:00 $
|
$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,
|
||||||
@@ -141,6 +141,10 @@ 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"
|
feedback from blessed potion of restore ability never reported "you feel great"
|
||||||
due to bad logic for not-unihorn case in unfixable_trouble_count()
|
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
|
||||||
|
|||||||
18
src/apply.c
18
src/apply.c
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 apply.c $NHDT-Date: 1568831822 2019/09/18 18:37:02 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.276 $ */
|
/* 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. */
|
||||||
@@ -2317,13 +2317,14 @@ STATIC_OVL 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)
|
||||||
@@ -2368,7 +2369,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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user