Opened 5 years ago

Last modified 5 years ago

#1573 confirmed bug

Tidy up ID and everseen layers

Reported by: magnate Owned by: noz
Milestone: v4 Keywords: id
Cc:

Description

Everseen status of affixes and themes is set in the _is_known functions, which are checked repeatedly from obj_desc. This isn't right, really. We should store o_ptr->affix_known[] and o_ptr->theme_known, and use those in obj_desc without calling ID functions. We should then completely tidy up ID, getting rid of all remaining references to o_ptr->ego, and sorting out the impact of rune-based ID on pseudo. (Stuff which pseudos from runes needs to be marked "sensed" at the very least, so the timed sensing doesn't trigger later.)

We can then remove the o_ptr->ego structure element and tidy up savefiles. This should be done at the same time as #1569, as they both mean a new version of rd_item.

Change History (3)

comment:1 Changed 5 years ago by magnate

  • Status changed from new to confirmed

comment:2 Changed 5 years ago by magnate

Actually there's no need to store o_ptr->theme_known, as this can be added to o_ptr->ident as IDENT_THEME. We can't store known affixes that way though, unless there is a way to specify MAX_AFFIXES in terms of enumerated bitflags for o_ptr->ident. That might be possible, but it's beyond my skills.

comment:3 Changed 5 years ago by magnate

Nomad suggests that affix levels could be used to replace the upper pseudo-ID bands, which is an excellent idea. Loop over affixes and sum the affix levels (starting at -1 with bad, 0 for average, etc.). Check for theme separately - in fact theme should be "splendid" and anything else merely "good" or "excellent". Gets rid of lots of special-casing in identify.c.

Note: See TracTickets for help on using tickets.