Difference between revisions of "Naming artifacts"

From NetHackWiki
Jump to navigation Jump to search
(Explain that 3.6.X still has an artifact naming exploit)
m (Explain a bit further about 3.6.X exploit)
Line 22: Line 22:
 
Although this exploit never appeared on the official bug list, it was fixed in [[NetHack 3.6.0]]; naming any item in the the appropriate category, if you haven't identified its type, with the appropriate name, will mis-engrave whether or not the item's type is the artifact's base. Thus, attempting to name an unidentified gray stone "The Heart of Ahriman" will fail, regardless of whether it's a luckstone or touchstone, but if you've formally identified it as a touchstone you can name it successfully (and ineffectively).
 
Although this exploit never appeared on the official bug list, it was fixed in [[NetHack 3.6.0]]; naming any item in the the appropriate category, if you haven't identified its type, with the appropriate name, will mis-engrave whether or not the item's type is the artifact's base. Thus, attempting to name an unidentified gray stone "The Heart of Ahriman" will fail, regardless of whether it's a luckstone or touchstone, but if you've formally identified it as a touchstone you can name it successfully (and ineffectively).
  
The original fix in 3.6.0 still allowed a slightly different exploit with the same results, relying on the fact capitalization is corrected only for the actual type.  [https://github.com/NetHack/NetHack/commit/d886b43107d57235ca0d7d464ab2a9f8660b855b This will be fixed in NetHack 3.7.0].
+
The original fix in 3.6.0 still allowed a slightly different exploit with the same results, relying on the fact capitalization is corrected only for the actual type -- if naming the item in all lowercase, the exploit still works.  [https://github.com/NetHack/NetHack/commit/d886b43107d57235ca0d7d464ab2a9f8660b855b This will be fixed in NetHack 3.7.0].
  
 
==History==
 
==History==

Revision as of 18:11, 23 September 2022

For the method for creating artifacts, see Sting or Orcrist (and in SLASH'EM also Elfrist).

The naming artifacts trick was a bug exploit in NetHack 3.4.3 and earlier versions of NetHack that let you identify certain item types.

Early versions of NetHack, such as NetHack 3.0.0, kept track of which items are artifacts through their names, allowing a flexible artifact set (i.e., multiple artifacts can be of the same item type) without needing separate fields in the object structure to track artifact status. As a consequence of this mechanic, the game needed to prevent non-artifacts being turned into artifacts via naming them (e.g. naming a long sword "Excalibur" to turn it into Excalibur). So if you tried to name a non-artifact with the name of an artifact of the same base type, the game would prevent you and you will mis-engrave. ("Your hand slips...")

In more recent versions of NetHack, such as NetHack 3.4.3, items used a separate "artifact flag" to identify whether they were artifacts (and which artifact they were), meaning that this mechanic was no longer necessary to prevent inadvertent creation of artifacts, but it remained in the codebase. This made it possible to identify items; for example, naming a helmet "The Mitre of Holiness" would fail if and only if the helmet is a helm of brilliance.

By this exploit, you could identify (or rule out) the following items:

Appearance Item type Artifact name
amulet amulet of ESP The Eye of the Aethiopica
gray stone luckstone The Heart of Ahriman
magic helmet* helm of brilliance The Mitre of Holiness

*: The appearances of magic helmets are randomized - plumed helmet, etched helmet, crested helmet, and visored helmet.

Although this exploit never appeared on the official bug list, it was fixed in NetHack 3.6.0; naming any item in the the appropriate category, if you haven't identified its type, with the appropriate name, will mis-engrave whether or not the item's type is the artifact's base. Thus, attempting to name an unidentified gray stone "The Heart of Ahriman" will fail, regardless of whether it's a luckstone or touchstone, but if you've formally identified it as a touchstone you can name it successfully (and ineffectively).

The original fix in 3.6.0 still allowed a slightly different exploit with the same results, relying on the fact capitalization is corrected only for the actual type -- if naming the item in all lowercase, the exploit still works. This will be fixed in NetHack 3.7.0.

History

NetHack 3.0.0 lacked an artifact marker on items, but instead checked the name and object base type of an item to determine whether it is an artifact; this allowed naming Sting or Orcrist to work, but the game had to forbid naming attempts that would create other artifacts. In the code:

SLASH'EM

In SLASH'EM, the artifact naming trick is even more effective due to the many new artifacts.

Appearance Item type Artifact name
bag bag of holding Wallet of Perseus[1]
candle magic candle The Candle of Eternal Flame[2]
amulet amulet of ESP The Eye of the Aethiopica
gray stone luckstone The Heart of Ahriman
magic boots speed boots Whisperfeet
magic cloak cloak of displacement Deluder
magic gloves gauntlets of dexterity Gauntlets of Defense
magic helmet helm of brilliance The Mitre of Holiness
magic helmet helm of telepathy The Crown of Saint Edward
whistle magic whistle The Storm Whistle[3]
amulet amulet of ESP The Medallion of Shifters (defunct Doppelganger quest artifact)
white gem diamond The Arkenstone (defunct Dwarf quest artifact)
ring ring of invisibility The One Ring (defunct Hobbit quest artifact)

References

  1. Trivially identifiable in SLASH'EM with the showweight option enabled.
  2. Trivially identifiable by having a light radius of 3, vs. 2 for normal candles.
  3. Easily identified by applying it.