address #H4247 & #4248 - theft of quest artifact

Two different reports complaining that having the Wizard steal the
hero's quest artifact is a bad thing.  This doesn't change that,
but it does make all quest artifacts become equal targets so that
wishing for other roles' artifacts doesn't offer such a safe way to
have whichever special attributes they provide.

Quest artifacts are actually higher priority targets for theft than
the Amulet.  I suspect that probably wasn't originally intended,
but I left things that way.  Taking quest artifacts leaves the hero
more vulnerable to future thefts, and once they're gone the Amulet
has priority over the invocation tools.
This commit is contained in:
PatR
2016-02-27 16:23:24 -08:00
parent f92f43a526
commit 850ed0cba6
5 changed files with 82 additions and 44 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 wizard.c $NHDT-Date: 1456185030 2016/02/22 23:50:30 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.47 $ */
/* NetHack 3.6 wizard.c $NHDT-Date: 1456618999 2016/02/28 00:23:19 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.48 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -119,7 +119,8 @@ register struct monst *mtmp;
register struct obj *otmp;
for (otmp = mtmp->minvent; otmp; otmp = otmp->nobj)
if (otmp->otyp == AMULET_OF_YENDOR || is_quest_artifact(otmp)
if (otmp->otyp == AMULET_OF_YENDOR
|| any_quest_artifact(otmp)
|| otmp->otyp == BELL_OF_OPENING
|| otmp->otyp == CANDELABRUM_OF_INVOCATION
|| otmp->otyp == SPE_BOOK_OF_THE_DEAD)
@@ -175,7 +176,7 @@ register short otyp;
if (otyp) {
if (otmp->otyp == otyp)
return 1;
} else if (is_quest_artifact(otmp))
} else if (any_quest_artifact(otmp))
return 1;
}
return 0;
@@ -207,7 +208,7 @@ register short otyp;
if (otyp) {
if (otmp->otyp == otyp)
return otmp;
} else if (is_quest_artifact(otmp))
} else if (any_quest_artifact(otmp))
return otmp;
return (struct obj *) 0;
}