Object detection

From NetHackWiki
Jump to navigation Jump to search

Object detection is an item effect in NetHack that allows a hero to see all items on the current dungeon level.

Description

Object detection can occur in multiple forms, depending on the source:

  • Quaffing a potion of object detection reveals all items on the current level (including buried and submerged objects) and exercises wisdom, with the details and breadth of the detected objects dependent on the potion's beatitude.[1][2][3][4]
    • A blessed potion will display detected items that are not in the inventory of a monster as though the hero has seen them up close when navigating the resulting screen, and will have the appearances of all items in their inventory revealed if applicable (e.g. they are currently blind)[5][6][7][8][9]—otherwise, the potion will give a generalized description of the item type for each object if they are not known to the hero. Cursed potions will treat cloaked mimics as actual items, with the class of the "item" selected randomly per mimic.[10][11][12]
  • Casting the spell of detect treasure replicates the effects of quaffing the non-cursed potion as detailed above, dependent on the caster's skill level.[1]
  • There are also some items that can detect specific object types:

Most forms of object detection, if not all of them, will exercise wisdom when performed.

Detection maps

Detection of specific object types or all objects will mark the locations of the discovered objects against a black map, and stale object markings of the applicable type are always cleared when mapping item locations from this effect.[44][45][46][47][48][49][50] Floor items are mapped over buried items, items on the top of piles are mapped over the rest of the pile, and the first item in a monster's inventory is mapped over any items they are standing on.[51][52][53][54][55][56] The hero can navigate the resulting screen from quaffing the potion by moving their cursor to highlight particular objects, and any other key that does not perform a navigation action will exit this screen[57][58]—the locations of those objects are recorded when returning to normal play.

Clairvoyance that detects submerged objects nearby will display the map of the immediate area it covers around the hero, with the locations of detected items displayed temporarily.

If item location markers disappear once they are in the hero's line of sight, the object in question is either buried, submerged or else has been moved.

History

Object detection is introduced with the potion of object detection in Hack 1.21, Hack for PDP-11 and PC/IX Hack, which are all based on Jay Fenlason's Hack—the scroll of gold detection is also present in Hack 1.21 and Hack for PDP-11. Both items are included in the initial item list for Hack 1.0, along with the then-new scroll of food detection—the spell equivalents for object detection and food detection are introduced in NetHack 1.3d.

Variants

Some variants of NetHack may add either new forms of object detection or alternate sources of the effect.

GruntHack

GruntHack adds the scroll of detect magic, which can detect all magical items on the current level including any items that have object properties.

UnNetHack

In UnNetHack, reading the blessed scroll of magic mapping reveals the location of objects similar to an uncursed potion of object detection.

dNetHack

In dNetHack, notdNetHack and notnotdNetHack, invoking The Marauder's Map detects objects identically to a potion of the same beatitude as the artifact, and then detects other artifacts on the level, mapping them over existing marked objects if necessary.

xNetHack

In xNetHack, reading a blessed scroll of gold detection detects gems as well as gold pieces and gold items.

One of Itlachiayaque's invocation effects allows the holder to gaze into it for the same effect as a crystal ball of the same beatitude, akin to the Orb of Detection (which it replaces as the Archeologist quest artifact).

EvilHack

EvilHack adds the scroll of magic detection, which is renamed from the GruntHack item and functions as it does in that variant.

Sokoban is retooled so that the hero must choose between a prize tool (a bag of holding or a magic marker), a prize armor (a helm of speed or a pair of gauntlets of protection), or a prize amulet (an amulet of reflection or magic resistance) as their reward from one of the three closets: the other doors will seal as soon as one of the doors is opened, and once an item is picked up by the hero, the others will disappear—this necessitates some form of object detection beforehand for players desiring a specific possible reward.

SlashTHEM

In SlashTHEM, zapping a wand of wonder has a 121 chance of performing object detection and exercising wisdom.

References

  1. 1.0 1.1 src/potion.c in NetHack 3.6.7, line 849: both potion and spell use the same code
  2. src/potion.c in NetHack 3.6.7, line 853
  3. src/potion.c in NetHack 3.6.7, line 851: calls object_detect() in detect.c
  4. src/detect.c in NetHack 3.6.7, line 582: object_detect() function
  5. src/detect.c in NetHack 3.6.7, line 589
  6. src/detect.c in NetHack 3.6.7, line 619
  7. src/detect.c in NetHack 3.6.7, line 630
  8. src/detect.c in NetHack 3.6.7, line 641
  9. src/detect.c in NetHack 3.6.7, line 655
  10. src/detect.c in NetHack 3.6.7, line 588
  11. src/detect.c in NetHack 3.6.7, line 658
  12. src/detect.c in NetHack 3.6.7, line 733
  13. 13.0 13.1 src/read.c in NetHack 3.6.7, line 1477: both the spell and scroll call food_detect in detect.c
  14. src/detect.c in NetHack 3.6.7, line 455: food_detect function
  15. src/detect.c in NetHack 3.6.7, line 469
  16. src/detect.c in NetHack 3.6.7, line 476
  17. src/detect.c in NetHack 3.6.7, line 563-L570
  18. src/detect.c in NetHack 3.6.7, line 461-L463
  19. src/read.c in NetHack 3.6.7, line 1473: call gold_detect() or trap_detect() in detect.c depending on beatitude and status
  20. src/detect.c in NetHack 3.6.7, line 303: gold_detect() function
  21. src/detect.c in NetHack 3.6.7, line 316
  22. src/detect.c in NetHack 3.6.7, line 319
  23. src/detect.c in NetHack 3.6.7, line 326
  24. src/detect.c in NetHack 3.6.7, line 341
  25. src/detect.c in NetHack 3.6.7, line 328
  26. src/detect.c in NetHack 3.6.7, line 342
  27. src/detect.c in NetHack 3.6.7, line 932: trap_detect() function
  28. src/detect.c in NetHack 3.6.7, line 899: detect_obj_traps() function
  29. src/detect.c in NetHack 3.6.7, line 942
  30. src/detect.c in NetHack 3.6.7, line 946
  31. src/detect.c in NetHack 3.6.7, line 953
  32. src/detect.c in NetHack 3.6.7, line 959
  33. src/detect.c in NetHack 3.6.7, line 965
  34. src/detect.c in NetHack 3.6.7, line 975
  35. src/detect.c in NetHack 3.6.7, line 978
  36. src/detect.c in NetHack 3.6.7, line 998
  37. src/detect.c in NetHack 3.6.7, line 1095: use_crystal_ball() function
  38. src/detect.c in NetHack 3.6.7, line 1102
  39. src/detect.c in NetHack 3.6.7, line 1179
  40. src/detect.c in NetHack 3.6.7, line 1204-L1213: calls monster_detect() or object_detect() as needed
  41. src/spell.c in NetHack 3.6.7, line 1186-L1190
  42. src/detect.c in NetHack 3.6.7, line 1306
  43. src/detect.c in NetHack 3.6.7, line 1316-L1320
  44. src/detect.c in NetHack 3.6.7, line 284: clear_stale_map()
  45. src/detect.c in NetHack 3.6.7, line 312: call from gold_detect()
  46. src/detect.c in NetHack 3.6.7, line 465: call from food_detect()
  47. src/detect.c in NetHack 3.6.7, line 666: call from object_detect() if there were no stale markings to clear
  48. src/detect.c in NetHack 3.6.7, line 1325
  49. src/detect.c in NetHack 3.6.7, line 1363-L1365
  50. src/detect.c in NetHack 3.6.7, line 1396
  51. src/detect.c in NetHack 3.6.7, line 608
  52. src/detect.c in NetHack 3.6.7, line 648
  53. src/detect.c in NetHack 3.6.7, line 683
  54. src/detect.c in NetHack 3.6.7, line 702
  55. src/detect.c in NetHack 3.6.7, line 719
  56. src/detect.c in NetHack 3.6.7, line 744
  57. src/detect.c in NetHack 3.6.7, line 679
  58. src/detect.c in NetHack 3.6.7, line 762: temporary map navigation