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.
This commit is contained in:
@@ -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<dir>' 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<foo> to eat a <foo> 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
|
||||
|
||||
20
src/cmd.c
20
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)
|
||||
|
||||
@@ -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 */
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user