Opened 3 years ago

Closed 3 years ago

#1487 closed bug (fixed (in master))

Randart base kinds appearing in object knowledge menu

Reported by: magnate Owned by: magnate
Milestone: 3.3.1 Keywords: items recall
Cc:

Change History (5)

comment:1 Changed 3 years ago by magnate

Ok, the first of these is specific to randarts and does not occur with standarts. I have no idea why.

The second occurs with both randarts and standarts, and I think is WAD. After all, a Phial is not an everyday object, it doesn't exist except as an artifact - so it *should* disappear from the object knowledge menu after you ID it (at which point it appears in the artifact knowledge menu instead).

The third is hideous. My suggestion would be to add D: lines for all ego templates and simply print those in the ego knowledge menu, and not attempt to create a fake ego item and list its properties ...

comment:2 Changed 3 years ago by magnate

  • Milestone changed from 3.3.0 to 3.4.0
  • Owner set to magnate
  • Status changed from new to assigned
  • Summary changed from Knowledge menu bugs to Randart base kinds appearing in object knowledge menu

Actually the third turned out to be easy enough with judicious application of the OINFO_EGO mode flag and a call to ego_apply_magic on the dummy item. Fixed in [r4cecb62]. So this ticket is about the weird bug of randart base items appearing in the object knowledge menu before they're everseen. I assume the mere act of randart generation is having them tagged as everseen, somehow.

comment:3 Changed 3 years ago by magnate

  • Milestone changed from 3.4.0 to 3.3.1

comment:4 Changed 3 years ago by magnate

I can confirm that object kinds are somehow getting the everseen flag. To appear on the object knowledge menu, one or more of these must be true (line 1751 in src/ui-knowledge.c):

kind->everseen
kind->flavor
OPT(cheat_xtra)

To reproduce:

  1. Start up with a new savefile (angband -uNeverUsedBefore)
  2. Leave randarts off and create a warrior
  3. Go straight to object knowledge menu: the only everseen wearables are your torch and your longsword
  4. Suicide and restart, but toggle randarts on
  5. Go straight to object knowledge menu: lots and lots of wearables are there - all those with randarts
  6. Suicide and restart, turning randarts back off
  7. Go straight to object knowledge menu: all the previously known objects are still known, i.e. everseen

comment:5 Changed 3 years ago by magnate

  • Resolution set to fixed
  • Status changed from assigned to closed

Easy. It's because we made the randart.log file more human-readable by calling object_desc during generation. This sets o_ptr->kind->everseen because the "spoil" flag makes "aware" true. There's actually no reason for spoilers to mess with everseen, since by definition everseen is a non-spoily concept. Fixed in [r63cca45] in master and [r52ab663] in 3.3-release.

Note: See TracTickets for help on using tickets.