disallow assigning type name to Amulet of Yendor

Something I noticed when testing the item-action handling for name and
call; applies to the C/#name command too.  You were allowed to call the
real Amulet something and allowed to call fake ones something [else].
If you did that, xname/doname didn't show it but the discoveries list
did, giving away information when the player had access to more than
one unID'd Amulet of Yendor.  Rather than messing about with discovery
handling, make real and fake Amulet be ineligible from being given a
type name.  (They can still be given individual names.)
This commit is contained in:
PatR
2022-04-19 14:19:48 -07:00
parent 5489b3ebd9
commit 49b046f2e5
3 changed files with 19 additions and 1 deletions

View File

@@ -1834,6 +1834,13 @@ silly_thing(const char *word,
!(is_plural(otmp) || pair_of(otmp)) ? "that" : "those", s3);
else
#endif
/* see comment about Amulet of Yendor in objtyp_is_callable(do_name.c);
known fakes yield the silly thing feedback */
if (!strcmp(word, "call")
&& (otmp->otyp == AMULET_OF_YENDOR
|| (otmp->otyp == FAKE_AMULET_OF_YENDOR && !otmp->known)))
pline_The("Amulet doesn't like being called names.");
else
pline(silly_thing_to, word);
}