Mechanic · resources & economy · roguelike
Item identification
Hiding what an item does behind an appearance assigned at random for each game, so the player has to learn it again.
On this page
Item identification hides an item’s effect behind an appearance that changes from game to game. Rogue 5.4 gives its 14 potion kinds different colors drawn from 27, and builds its 18 scroll titles from random syllables1. NetHack 3.6.7 shuffles the descriptions within seven classes and four armor groups2.
Games
| Game | Year | How | Note |
|---|---|---|---|
| Rogue | 1980 | Shuffled appearances | 14 potions get 14 different colors out of 27 |
| NetHack | 1987 | Shuffled appearances | descriptions shuffled within seven classes and four armor groups |
| Rogue | 1980 | Generated names | 18 scroll titles strung from random syllables each game |
Every claim about this mechanic, by game (2)
References
- ^ abcAt the start of each game, Rogue 5.4 gives each of its 14 kinds of potion a different color, drawn at random from a list of 27 (amber to yellow), and each of its 18 kinds of scroll a title of 2 to 4 random words, each word 1 to 3 syllables from a fixed list, up to about 40 characters.CodeRogue 5.4.4 source
How we know
119 init_colors(); /* Set up colors of potions */main.c lines 118–119 at cf9bd26 · upstream ↗ 111#define NCOLORS (sizeof rainbow / sizeof (char *))init.c lines 81–111 at cf9bd26 · upstream ↗ 250 until (!used[j]);init.c lines 240–253 at cf9bd26 · upstream ↗ 272 nwords = rnd(3) + 2;init.c lines 260–289 at cf9bd26 · upstream ↗ 219#define MAXPOTIONS 14rogue.h line 219 at cf9bd26 · upstream ↗ 242#define MAXSCROLLS 18rogue.h line 242 at cf9bd26 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
- ^ abWhen a NetHack 3.6.7 game starts, it shuffles the descriptions of amulets, potions, rings, scrolls, spellbooks, wands, and venoms within each class, and of helmets, gloves, cloaks, and boots within each of those groups. Water keeps a fixed description, and scrolls, spellbooks, and amulets keep the unique or non-magic ones fixed; a type whose name is already known keeps its description.CodeNetHack 3.6.7 source
How we know
179 shuffle_all();src/o_init.c lines 178–179 at ed600d9 · upstream ↗ 247 AMULET_CLASS, POTION_CLASS, RING_CLASS, SCROLL_CLASS,src/o_init.c lines 243–266 at ed600d9 · upstream ↗ 88 if (objects[j].oc_name_known)src/o_init.c lines 81–95 at ed600d9 · upstream ↗ 208 case POTION_CLASS: ⋮ 211 *hi_p = POT_WATER - 1; 212 break; ⋮ 219 if (objects[i].oc_unique || !objects[i].oc_magic) 220 break; 221 *hi_p = i - 1;
src/o_init.c lines 208–221 at ed600d9 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-25.
Checked by a second AI model, 2026-10-21.
Checked by a second AI model, 2026-10-25.
Sources
Code
- Toy, Michael, Ken Arnold, and Glenn Wichman. 2016. “Rogue 5.4.4 source code.” Commit cf9bd26. Davidslv/rogue @ cf9bd26 · licence, all uses
- NetHack DevTeam. 2023. “NetHack 3.6.7 source code.” Commit ed600d9. NetHack/NetHack @ ed600d9 · licence, all uses