Accurately track which items have been discovered, even if not #named

This fixes a couple of bugs: a long-standing bug in which writing a
scroll by label could fail even if you've already seen a scroll with
that label (due to the game not tracking whether or not you've seen a
scroll if it doesn't have a name); and a somewhat newer bug in which
spellbooks auto-identified by Wizard knowledge were marked as having
been encountered (rather than as known but not encountered).

Breaks save file compatibility, but not bones files.
This commit is contained in:
Alex Smith
2025-11-25 22:42:38 +00:00
parent 10a5e67478
commit 8c29b20010
38 changed files with 155 additions and 122 deletions

View File

@@ -54,8 +54,8 @@ struct objclass {
* otherwise, obj->dknown and obj->bknown
* tell all, and obj->known should always
* be set for proper merging behavior. */
Bitfield(oc_pre_discovered, 1); /* already known at start of game; flagged
* as such when discoveries are listed */
Bitfield(oc_encountered, 1); /* hero has observed such an item at least
once (perhaps without naming it) */
Bitfield(oc_magic, 1); /* inherently magical object */
Bitfield(oc_charged, 1); /* may have +n or (n) charges */
Bitfield(oc_unique, 1); /* special one-of-a-kind object */