From 075425a9ac1abeb5712862e814d18032f776d9c5 Mon Sep 17 00:00:00 2001 From: "nethack.rankin" Date: Wed, 2 Oct 2002 21:33:08 +0000 Subject: [PATCH] unicorn horn dipping Implement 's suggestion for addressing 's complaint about the inadequate feedback given when dipping a unicorn horn into a potion to convert it into water. (Mainly, if the potion has already been given a name, you won't be prompted to give it one when dipping transforms it; if that was the last one you had, getting "The potion clears." isn't sufficient to let you keep track of what type of potion was cleared. You still have to keep track of such stuff yourself, but now you'll get "The swirly potion clears." so you at least don't have to start remembering or recording the type prior to dipping.) The hallucination handling isn't very useful; the description is given will full accuracy by the immediately following inventory update. --- doc/fixes34.1 | 1 + src/potion.c | 38 ++++++++++++++++++++------------------ 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/doc/fixes34.1 b/doc/fixes34.1 index 1cf3156d7..c7f2079ac 100644 --- a/doc/fixes34.1 +++ b/doc/fixes34.1 @@ -264,6 +264,7 @@ only include unknown gems as likely choices when applying known touchstone prevent mbodypart() from returning animal parts for lights removing a ring might relearn what it is after amnesia sleeping shopkeeper shouldn't talk to digging player +give more specific feedback when dipping unicorn horns into potions Platform- and/or Interface-Specific Fixes diff --git a/src/potion.c b/src/potion.c index a657cb776..fcff6d02f 100644 --- a/src/potion.c +++ b/src/potion.c @@ -1,4 +1,4 @@ -/* SCCS Id: @(#)potion.c 3.4 2002/09/08 */ +/* SCCS Id: @(#)potion.c 3.4 2002/10/02 */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1857,7 +1857,13 @@ dodip() potion->in_use = FALSE; /* didn't go poof */ if ((obj->otyp == UNICORN_HORN || obj->otyp == AMETHYST) && (mixture = mixtype(obj, potion)) != 0) { + char oldbuf[BUFSZ], newbuf[BUFSZ]; boolean more_than_one = potion->quan > 1; + + oldbuf[0] = '\0'; + if (potion->dknown) + Sprintf(oldbuf, "%s ", + hcolor(OBJ_DESCR(objects[potion->otyp]))); /* with multiple merged potions, split off one and just clear it */ if (potion->quan > 1L) { @@ -1875,24 +1881,20 @@ dodip() else singlepotion->cursed = obj->cursed; /* odiluted left as-is */ singlepotion->bknown = FALSE; - if (Blind) - singlepotion->dknown = FALSE; - else { - if (mixture == POT_WATER && -#ifdef DCC30_BUG - (singlepotion->dknown = !Hallucination, - singlepotion->dknown != 0)) -#else - (singlepotion->dknown = !Hallucination) != 0) -#endif - pline_The("potion%s clears.", - more_than_one ? " that you dipped into" : ""); - else - pline_The("potion%s turns %s.", - more_than_one ? " that you dipped into" : "", - hcolor(OBJ_DESCR(objects[mixture]))); + if (Blind) { + singlepotion->dknown = FALSE; + } else { + singlepotion->dknown = !Hallucination; + if (mixture == POT_WATER && singlepotion->dknown) + Sprintf(newbuf, "clears"); + else + Sprintf(newbuf, "turns %s", + hcolor(OBJ_DESCR(objects[mixture]))); + pline_The("%spotion%s %s.", oldbuf, + more_than_one ? " that you dipped into" : "", + newbuf); } - obj_extract_self(singlepotion); + obj_extract_self(singlepotion); singlepotion = hold_another_object(singlepotion, "You juggle and drop %s!", doname(singlepotion), (const char *)0); -- 2.40.0