From: PatR Date: Fri, 17 Jun 2016 05:01:27 +0000 (-0700) Subject: fix #H4388 - wishing conduct inconsistency X-Git-Tag: NetHack-3.6.1_RC01~668 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1af081edc5b8891369393fadddac345a0ff252c4;p=nethack fix #H4388 - wishing conduct inconsistency Make wishing for an artifact and not getting it because it already exists break never-wished-for-artifact conduct. The wish was made even if the result wasn't what the player wanted. --- diff --git a/doc/fixes36.1 b/doc/fixes36.1 index 37ea2262c..6affc4c59 100644 --- a/doc/fixes36.1 +++ b/doc/fixes36.1 @@ -296,6 +296,9 @@ don't give "you cannot pass through the bars" when travel is testing possible if blind and no gloves, using 'm' to move and then 'e' could be used to locate cockatrice corpse without fatal touching (by declining to eat) it's cannabilism for a were to eat a corpse +conduct: wishing for an artifact and not getting it because it already exists + counts as wishing for an artifact, just like when not getting it + becuase of quest restrictions or too many artifacts in play does Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository diff --git a/src/cmd.c b/src/cmd.c index aaecc80f6..4feb9bf94 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -2634,6 +2634,26 @@ int final; } else { Sprintf(buf, "used %ld wish%s", u.uconduct.wishes, (u.uconduct.wishes > 1L) ? "es" : ""); + if (u.uconduct.wisharti) { + /* if wisharti == wishes + * 1 wish (for an artifact) + * 2 wishes (both for artifacts) + * N wishes (all for artifacts) + * else (N is at least 2 in order to get here; M < N) + * N wishes (1 for an artifact) + * N wishes (M for artifacts) + */ + if (u.uconduct.wisharti == u.uconduct.wishes) + Sprintf(eos(buf), " (%s", + (u.uconduct.wisharti > 2L) ? "all " + : (u.uconduct.wisharti == 2L) ? "both " : ""); + else + Sprintf(eos(buf), " (%ld ", u.uconduct.wisharti); + + Sprintf(eos(buf), "for %s)", + (u.uconduct.wisharti == 1L) ? "an artifact" + : "artifacts"); + } you_have_X(buf); if (!u.uconduct.wisharti) diff --git a/src/objnam.c b/src/objnam.c index 2d07b6ab4..6caa583b7 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -3570,7 +3570,8 @@ typfnd: } otmp = oname(otmp, name); - if (otmp->oartifact) { + /* name==aname => wished for artifact (otmp->oartifact => got it) */ + if (otmp->oartifact || name == aname) { otmp->quan = 1L; u.uconduct.wisharti++; /* KMH, conduct */ }