险境迷宫指南 (NetHack说明手册) 原版 - Eric S. Raymond (由Mike Stephenson等人进行修订和扩充) 特别鸣谢:w4ngzhen/NetHack_GuideBook_CN(这里没法打链接) 1. 介绍 最近,你开始发现自己在日常工作中感到无所适从、心不在焉。探矿,偷窃,十字军和战斗等奇异梦境困扰了你数月,然而你却不知这是为何。你不禁怀疑,这些是否本是真实的记忆,只是直到此刻才重新浮现。有些夜晚,你从梦中惊醒,泪水涟涟,回想起那些在梦境中奇异而强大的生物,你不禁感到恐惧,这些生物似乎潜伏在梦境中地牢的每个角落。这些萦绕不去的梦境,究竟是真实的吗?每当夜幕降临,一种想要踏入远郊废墟深处那座神秘洞穴的冲动便愈发强烈。然而到了清晨,那些关于“有去无回的探险者”的惨痛传说,又会让你将这疯狂的念头强压下去。最终,你抑制住了寻找那个在梦境中的神秘之地的想法。毕竟,那些在洞中待了一段时日、循原路返回的探险者,往往比初入时更显从容。谁能说那些没有回来的人不是在继续探索着呢? 经过四处打听,你得知一个叫做岩德护身符(Amulet of Yendor)的宝物。如果你能找到它,它能为你带来巨大的财富。还有传说称“寻得此符者,将蒙诸神赐予永生”。有传言说护身符位于地狱(Gehennom)之外,在险境迷宫(Mazes of Menace)内的深处。听到这些传说后,你立即意识到有一些深远而隐秘的原因,你要下到洞穴里去寻找他们所说的护身符。即使关于护身符力量的谣言是不真实的,你还是决定至少应该能够将冒险经历的故事以可观的价格卖给当地的吟游诗人,特别是在一路上遭遇到的任何恐怖或者神奇的生物。你在当地酒馆度过了最后一夜,望着墙上愈发低落的成功率数字,心中不免沉重。 早晨你醒来,收拾好你的东西,动身前往地牢。数日平淡无奇的跋涉后,你看到了古老的遗迹,它们标志着险境迷宫的入口。夜深了,你就在门口扎营,在空旷的天空下过夜。早上,你再次收拾好你的装备,在洞外用了也许是最后一顿的早餐,然后你进入了地牢…… 2. 这里发生了什么? 你刚刚开启了一段NetHack的游戏旅程。你的目标就是尽可能多的获取财宝,寻回岩德的护身符,并且活着逃离险境迷宫。 你应对这场危险冒险所展现的能力与力量因随着你的背景和训练的不同而不同: 考古学家(Archeologist)非常了解地牢,这使得他们移动速度非常快,同时可以偷偷接近那些地牢中险恶的事物。他们开始游戏时装备着适合于科学探险的工具,而且能够解读古代语言。 野蛮人(Barbarian)是内陆的勇士,对战争冷血无情。他们踏上征程时,除了一身非凡的力气、一件可靠的锁子甲和一把巨大的双手剑外一无所有。 穴居人(Caveman/Cavewoman)拥有卓越的力量,但不幸的是他们只有新石器时代的武器。 医生(Healer)在医学和药水学方面十分博学。他们熟知可以恢复体力、减轻疼痛、麻醉以及中和毒药的草药。借助他们的器械,他们可以推断生物的健康或生病状态。他们在医学方面的经验为他们挣得的金钱相当可观,他们便把这笔钱带入了地牢。 骑士(Knight)不同于一般的游击兵,以他们卓越的盔甲和对骑士精神典范的虔诚。 武僧(Monk)是苦行者,他们通过严格的身心修习,已能不依赖武器却能像使用武器一样有效地战斗。他们不穿盔甲,但凭借更强的机动性弥补了这一不足。 祭司(Priest/Priestess)是好战的牧师和十字军战士,通过武器、护甲和法术推进正义事业。他们通过祈祷与神交流的能力有时可以将他们从危险中解决出来,但有时也会使他们陷入其中。 游侠(Ranger)十分熟悉森林的环境,有人认为他们在地牢中有些不合适。不过他们精通射箭,在追踪和暗中移动上也是如此。 盗贼(Rogue)是敏捷和悄无声息的小偷,精通开锁、设陷和毒药。他们的优势在于行动出其不意,并能将这一优势发挥得淋漓尽致。 武士(Samurai)是日本封建时代的精英战士。 他们轻装上阵、迅捷,带着“大小”(だいしょう,大刀和小刀),——两把有着最致命的刀锋的刀。 游客(Tourist)携带着大量金币(可以用来买东西)、一张信用卡、大量食物、一些地图以及一架昂贵的相机开始旅程。大部分怪物不喜欢被拍照。 女武神(Valkyrie)是强壮的女战士。她们在严酷的北国中被养育成人,这些经历使她们身强体壮,能够忍受极寒,并使她们练就了隐蔽行动和狡黠的本领。 巫师(Wizard)初始便掌握魔法知识,拥有若干魔法物品,并对魔法术法有着特殊的亲和力。尽管看上去似乎实力薄弱,很容易被打败,但经验丰富的巫师却是致命的敌人。 你同样可以选择你的种族(有一定的限制,大多数角色都限制了哪些种族适合他们): 矮人(Dwarf)比人类以及精灵更矮小一点,矮人最显著的特征是他们在采矿和金属加工方面拥有高超的技艺。矮人的护甲质量据说仅次于精灵族的秘银护甲。 精灵(Elf)具备敏捷、迅速的特质和敏锐的洞察力。极少会有什么发生的事情逃过精灵的眼睛。精灵在武器和护甲上优良的建造技艺通常会给他们带来很巨大的优势。 侏儒(Gnome)比起矮人要矮小一点不过除此之外通常和矮人很接近。侏儒以采矿专家著称,据传在险境迷宫中存在一座由该种族建造的秘密矿井,那里既充满财富,也暗藏危险。 人类(Human)是目前为止地表世界上最常见的种族。因而经常作为基准与其他的种族进行比较。尽管他们没有什么特别的能力,但是他们可以胜任任何的角色。 兽人(Orc)是残忍和野蛮的种族,他们憎恨所有的生物(包括其他的兽人)。兽人对于精灵族的憎恨尤为深重,他们会不惜一切代价,抓住任何机会杀死精灵。兽人打造的盔甲和武器通常质量低劣。 3. 屏幕上的东西都是什么意思? 在屏幕上维持着一个地图,上面显示了你在地牢当前层已经到过的位置以及已经见过的东西;随着你继续探索这一层,剩余的部分将会逐渐展示在你的屏幕上。 当NetHack的鼻祖Rogue(一款同样类型的游戏)首次出现的时候,它的屏幕样式在各种电脑幻想游戏中几乎都是独一无二的。从那以后,这类游戏屏幕样式已经成为常态而非例外;NetHack保持了这一优良的传统。不同于接收以伪英文构成的命令,然后用文字解释结果的文字冒险类游戏,NetHack的命令全都有一个或两个按键构成,并且结果会以图形展示在屏幕上。对于这个游戏,推荐最小的屏幕尺寸为24x80;如果游玩的屏幕比这更大,只有21x80的区域会被用于展示地图。 NetHack甚至可以让盲人玩家在盲人阅读器或者是语音合成器的帮助下进行游玩,关于如何配置适用于盲人游玩的介绍放在本文档的后面。 每当你进行一场游戏的时候,NetHack会生成新的地牢;即使是在作者已经通关了几次NetHack之后,仍然觉得它是一个有趣且充满刺激的游戏。 NetHack提供各种各样的现实选项。这些选项对于你的获取来说,会随着不同的移植而不同,这取决于你的硬件和软件的的能力,以及当你的可执行文件生成时,各种编译时候的选项是否开启。三种可能的显示选项为:一种单色的字符界面、一种彩色的字符界面以及使用一种叫做tiles的小图象的图形界面。两种字符界面允许替换为其他字符的字体,不过默认的配置是使用的标准ASCII字符集去呈现一切的东西。从游戏的角度来讲,各种的显示选项相互之间没有任何的区别。因为我们在本篇指南中无法呈现以使用的tiles或者是彩色的界面,并且默认的单色ASCII字符界面对于所有的移植都是共通的,所以我们将在提及你在游戏中可能在屏幕上看到的东西的时候,使用默认的单色ASCII字符。 为了搞清楚在游戏中发生了什么,你首先需要明白NetHack对屏幕上的内容都做了什么。 NetHack的屏幕代替了文字冒险类游戏中的“You See...”之类的描述。 图1是NetHack中的屏幕可能看到的内容的事例。 你的屏幕所呈现的样式取决于你的平台。 +--------------------------------------------------------------+ |The bat bites! | | | |------ | ||....| ---------- | ||.<..|####...@...$.| | ||....-# |...B....+ | ||....| |.d......| | |------ -------|-- | | | | | | | |Player the Rambler St:12 Dx:7 Co:18 In:11 Wi:9 Ch:15 Neutral| |Dlvl:1 $:993 HP:9(12) Pw:3(3) AC:10 Exp:1/19 T:752 Hungry Conf| +-----------------------------图1------------------------------+ +------------------------------------------------------+ |Player the Rambler St:12 Dx:7 Co:18 In:11 Wi:9 Ch:15| |Neutral $:993 HP:9(12) Pw:3(3) AC:10 Exp:1/19 Hungry | |Dlvl:1 T:752 Conf | +-------------------------图2--------------------------+ 3.1. 状态行(底部) 屏幕底部的两行(或三行)包含若干晦涩难懂的信息,用于描述您的当前状态。 图1展示了地图下方传统的两行状态区域。 图2仅展示了状态区域,此时已设置了statuslines:3选项(并非所有接口都支持此选项)。 如果任何状态行的宽度超过屏幕宽度,您可能无法看到其全部内容,因为内容会被截断。 当数字变大且存在多个条件时, 两行格式会在第二行空间不足,但statuslines:2是默认设置,因为基本的24行终端高度不足以显示第三行。 以下是对各种状态项含义的解释: 头衔 你角色的名字和职业等级(基于你的职业和经验等级,见下方。 力量(St,Strength) 关于你角色的力量的衡量;它是你6个基础属性的其中一项。一个人类角色的关于力量的属性的范围值为3到18(包含3和18);非人类角色的力量值能够超过(exceed)这个限制(有时你可能会获得超级力量形如18/xx,另外模范也能够使得属性值超过正常的范围)。你的力量值越高,你就越强壮。力量值会影响你关于进行物理行动的成功率、你在战斗中造成的伤害以及你能携带多少的战利品。 敏捷(Dx,Dexterity) 敏捷影响你在战斗中命中的几率、避开陷阱的几率以及进行其他需要灵活性或处理物品的任务的几率。 体质(Co,Constitution) 体质影响你从受伤中恢复或者其他对体力损害中恢复的能力。 智力(In,Intelligence) 智力影响你关于施放咒语和阅读魔法书的能力。 智慧(Wi,Wisdom) 只会来源于你的时间经验(特别是处理魔法时)。它影响你的魔法能量。 魅力(Ch,Charisma) 魅力值影响有些生物对于你的反应。特别的它可以影响黑店老板给你的商品报价。 阵营 秩序、中立和混沌。通常,守序都被认为是好的一方,而混乱都被认为是邪恶的。但是法律和道德并不总是一致的。你所在的阵营影响其他怪物对于你的反应。相同阵营的怪物更可能没有攻击性,而对立阵营的怪物在面对你的出现时候可能感到被严重地冒犯(而更具有攻击性)。 地牢层数(Dlvl,Dungeon Level) 表明你在地牢里面有多深。你开始时处于第一层,随着你越来越深入,层数会相应的增加。有些特殊的层会使用名称而非数字进行表示标识。岩德护身符被认为是在处于地下20层之下的某处。 金币($) 你敞开携带的金币的数目。那些你藏在容器中的金币没有被计算在内。 生命值(HP) 你当前的和最大的生命值。生命值显示在你死亡之前能够承受多大的伤害。在一场对战中,你受到的伤害越多,你的生命值就会越低。你可以通过休息或者使用某些魔法物品或咒语来恢复你的生命值。在括号中的值是你能够通过恢复达到的最大值生命值。 能量(Pw,Power) 与咒语相关的值。它向你显示了你当前有多少的魔法能量能够用作用来施放咒语。同样,休息可以恢复可用的量。 护甲等级(AC,Armor Class) 你的护甲能够用来抵挡来自非友善生物打击的值。这项数值越低,护甲越有效;出现护甲等级为负值也是十分有可能的。 经验等级(Exp,Experience) 你当前的经验等级。如果启用了showexp选项,该数值后将跟随一个斜杠和经验值。 在冒险过程中,你会获得经验值。 当经验值累积到一定数值时,你就会提升一个经验等级。 经验越丰富,你的战斗能力就越强,抵御魔法攻击的能力也越强。 (当你的等级达到两位数时,显示等级所对应的经验值的意义会大幅降低。你可以使用‘O’命令关闭showexp,以避免占用有限的状态栏空间。) 时间(Time) 到目前为止已经流逝的回合数,如果你设置了time选项就会显示。 状态 饥饿程度(Hunger): 你当前的饥饿程度。对应值有饱腹(Satiated)、正常、饥饿(Hungry)、虚弱(Weak)以及晕厥(Fainting)。 如果你当前的状态是正常的,这里将不会有任何显示。 负载: 显示你当前所携带的物品会如何影响你的行动能力。对应值有无负重(Unencumbered)、负重(Burdened)、吃力(Stressed)、受压(Strained)、高压(Overtaxed)和超载(Overloaded)。 如果你当前无负重(Unencumbered),这里将不会有任何显示。 致命情形: 石化(Stone,又叫Petrifying)、黏液化(Slime)、窒息(Strngl,即strangulation)、食物中毒(FoodPois,即food poisoning)、不治之症(TermIll,即terminal illness)。 非致命情形: 失明(Blind)、失聪(Deaf)、眩晕(Stun)、混乱(Conf)、幻觉(Hallu)。 特殊移动方式: 飘浮(Lev)、飞行(Fly)、骑乘(Ride)。 对于还存在一些其他的情形和标识,但是在状态区域没有足够的空间去展示它们的情况,可以使使用‘^X’(Ctrl+X)来展示所有相关的状态情况。 .nr @p \n(pi \" Save mn's paragraph indentation. .nr pi 0 #attributes命令(默认键位为\(^X) 将显示所有当前状态信息,且不使用缩写形式。 此外,它还会显示其他信息——如果状态行有更多空间,这些信息本可能包含在其中。 .nr pi \n(@p \" Restore mn's paragraph indentation. 3.2. 消息行(顶部) 在屏幕顶部一行是预留用来展示那些无法使用图像来描述的信息的。如果你在顶部看到一行“--More--”(更多),这意味着NetHack还有另外的消息需要在屏幕上显示,不过NetHack想要确认你已经阅读了第一条信息。想要阅读下一条消息,你只需要按下空格键。 要改变消息行的显示方式以及显示内容,请查看“配置消息类型”以及verbose选项。 3.3. 地图(屏幕的余下部分,符号含义) 屏幕的余下部分是目前为止你在当前地牢层已经探索过的地图。 在屏幕上呈现的每一个符号都表示了某些东西。你可以设置各种各样的图形选项来改变这些符号在游戏中用途。否则,游戏将使用默认的符号。 这里将列举这些符号默认的含义: - 房间的横向墙壁或转角墙,或者朝东/朝西的打开的门。 | 房间的纵向墙壁,或者朝南/朝北的打开的门,或者坟墓。 . 房间的地板,或者冰面,或者没有门的门洞,或者一座敞开的吊桥的桥面。 注:走廊中的铭文也显示为#,但显示颜色与普通走廊位置不同。 # 走廊,或者铁栅栏,或者一棵树,或者一具厨房的水槽(如果地牢有水槽),或者吊桥。 > 通往下一层的楼梯。 < 通往上一层的楼梯。 + 关上的门,或者一本魔法书,你或许能学习它。 @ 你的角色,或者一个人类/精灵。 $ 一些金币。 ^ 一个陷阱(如果你能探测到它)。 ) 武器。 [ 一套或者一件护甲。 % 可食用的东西(不一定是健康的)。 ? 卷轴。 / 魔杖。 = 戒指。 ! 药水。 ( 有用的东西(鹤嘴锄,钥匙,提灯……)。 护身符,或者蜘蛛网。 * 石头或宝石(可能贵重,也可能毫无价值)。 巨石或雕像,或房间地板上的一处雕刻。 注意:雕像显示出来的字符和其所描绘的怪物一样,因此不会显示为钝音符(又叫“反引号”)。 0 铁球。 _ 祭坛,或者铁链。 { 喷泉。 } 水池,或者护城河,或者熔岩池,或者水墙,或者熔岩墙。 \ 华丽的王座。 a-z/A-Z和其他符号 字母和其他一些符号标识险境迷宫下各种各样的居民。当心,它们可能险恶且凶残。当然,有时它们也可以提供帮助。 I 这并非指某种特定的怪物,而是指已知最后出现过一头隐形或无法被肉眼看见的怪物的位置。‘s’、‘F’和‘m’命令可能在这里会有帮助。也可能会显示数字1到5,用于标记通过警觉属性感知到的未看见的怪物。 数字越小表示怪物越不危险,数字越大则表示怪物越危险。 你不需要记下这些所有的字符;你可以使用‘/’命令(来向NetHack查询任何的字符所代表的含义(更多的信息见下一节)。 4. 命令 命令可以由键入该命令所绑定的一个或两个字符发起,或者通过扩展的命令入口键入命令名称。 一些命令,例如search(查询),NetHack不需要任何更多的信息即可执行。还有一些其他的命令可能需要额外的信息,例如一个方向,或者需要用到的物品。 对于这些需要额外信息的命令,NetHack将会向你呈现一个供你选择的菜单或者一个命令行提示以要求更多的信息。向你呈现哪一种形式主要取决于你如何设置menustyle选项。 举个例子,一个形式为“What do you want to use?\ [a-zA-Z\ ?*]”的常见问题,让你选择一个你当前携带的物品。在这里,“a-zA-Z”指示在你的物品清单中的你可能选择的物品的字母。键入‘?’会为你展示物品清单中的这些物品,因此你可以看到每个字母所指代的物品。 在这个例子中,这里有个‘*’指示了如果你想要使用一些意料之外的物品,你可能会选择一个不在列表里面的物品。键入‘*’会列出你的整个物品清单,因此你可以看到在物品清单里面你所携带的所有物品以及对应的指代字母。最后,如果你改变了你的想法决定不想继续执行这个命令,你可以按下ESC键来中止这条命令。 你可以在一些命令前加上一个数字来重复执行它们数次;例如,“10s”将会搜索10次。如果你启用了number_pad选项,你必须在次数前加上‘n’作为前缀,所以对于上面的例子你应该输入“n10s”来实现其效果。 那些对于次数没有意义的命令,这些命令将会忽略这些数字。 此外,移动命令可以添加前缀来进行更好的控制(见下方)。按下ESC键以取消次数或者前缀。下方这些命令列表将会特别长,但是可以通过‘?’命令在游戏中的任何时候阅读它们,‘?’命令会访问一个有帮助文本信息的菜单。下面是以默认按键绑定的供你参考的命令: ? 帮助菜单:显示数个可用的帮助文本信息的其中一个。 / “whatis”命令,用来告诉你某个符号所代表的含义。你可能会选择指定一个位置或者键入一个字符(或者甚至是一整个词)以获得其解释。指定一个位置进行查询解释的命令,需要你通过移动光标到地图上的某个地点后,键入‘.’、‘,’、‘;’或‘:’来完成。‘.’将会解释所选择的位置的符号的含义,接着将会取决于help选项是否开启而有条件地向你确认“More info?”,然后让你选择下一个位置; ‘,’会解释符号但会跳过任何额外的信息,然后让你选择下一个位置; ‘;’将会跳过额外的信息并且也会跳过询问你让你选择下个地点; ‘:’将会不经过 “More Info?” 确认就显示额外的信息,如果有的话。当正在选择一个位置的时候,按下ESC键将会中止这个命令,或者按下‘?’将会给出它如何工作的简明提示。 如果autodescribe选项启用,当你光标移动的时候,光标所在位置的会显示一个简短的描述。 当选择位置的时候键入‘#’将会对于autodescribe选项进行动态开启或关闭。whatis_coord选项会控制简短描述信息是否包含该位置在地图上的坐标。 指定名称而非位置总会提供关于该名称的所有可用附加信息。 您还可以请求获取附近怪物的描述、当前显示的所有怪物、附近物体的描述,或所有物体的描述。whatis_coord选项用于控制在描述中包含哪种格式的地图坐标。 & 显示一个命令是干什么的。 < 向上前往前一层(如果你站在楼梯或梯子上的话)。 > 向下前往下一层(如果你站在楼梯或梯子上的话)。 [yuhjklbn] 朝指示的方向前进一步(见图3)。 如果你感觉到或记得那里有怪物,你将转而与该怪物战斗。 只有这些一步移动命令会让你与怪物战斗;其余的(如下)都是“安全的”。 +-------------------------------------+ | y k u 7 8 9 | | \ | / \ | / | | h-.-l 4-.-6 | | / | \ / | \ | | b j n 1 2 3 | | 关闭number_pad 开启number_pad | +-----------------图3-----------------+ [YUHJKLBN] 沿指定方向移动,直到撞到墙或者遇到突发事件。 m[yuhjklbn] 前缀:不拾取物品或者进行战斗的移动(即使你记得这里有一个怪物)。 一些非移动命令使用‘m’前缀来通过菜单进行行动(可以暂时覆盖menustyle:Traditional)。在当这里显示只有一种物品时,它主要用于‘,’(捡起)(这将不会出现“What kinds of objects?”的提示,因此没有机会对那个问题回答‘m’。 还有一些其他的命令(进食,进行献祭,使用开罐器)使用‘m’前缀来跳过检查在地上的合适的物品而是直接去检查物品清单,或者(使用“#loot”,掠夺命令,卸下马鞍),将会跳过容器直接朝怪物。这个前缀将会使“#travel”命令展示一个列有当前视野中的感兴趣目标的菜单。在调试模式(巫师模式)下,‘m’ 前缀可用于“#teleport”(传送)和“#wizlevelport”命令。 F[yuhjklbn] 前缀:攻击一个怪物(即使你只是猜想这里有个怪物)。 M[yuhjklbn] 前缀:移动,但移动过程中不捡起物品。 g[yuhjklbn] 前缀:移动,直到你发现一些让你感兴趣的事情。 G[yuhjklbn]或[yuhjklbn] 前缀:类似前缀‘g’,但走廊的分叉路口不会作为感兴趣的事情触发。 注意:+指的是打字时按下一样按下或者,然后再按下,松开,再松开。说明手册里的^意思是一样的。Control加的字母是大小写无关的,所以^x和^X一样的。 M[yuhjklbn] 旧版本支持‘M’作为一个移动前缀,结合了‘m’和+。 这个前缀已经不再支持,但是可以用‘m’和G组合实现类似的效果。 m也可以和g+或者+组合起来。 _ 使用最短路径算法移动到地图上的某个位置。 该最短路径由英雄已知的地图位置计算得出(例如看到的或先前走过的)。 如果这里无法计算出一个最短路径,那么会使用一个猜测的路径来替代。 其停止条件大多数情况和‘G’前缀类似,但是不会捡起物品,因此隐式地强制使用‘m’前缀。 对于支持鼠标的移植,当在非当前位置鼠标点击发生时,同样会被调用。 . 停下,什么都不做。 如果safe_wait打开的话,在前面加上‘m’前缀,即使身边有敌对怪物也能等待一回合。 a 激活(使用)工具(鹤嘴锄,钥匙,提灯……)。 如果选择一把魔杖,该魔杖将会被破坏,并在这个过程中施放它的魔法。操作前会要求确认。 A 脱下所有防具。 使用‘T’来卸下一件护甲或者‘R’来卸下一件配饰。 ^A 重复上一次的命令。 c 关门。 C 命名一个怪物,特定物品,或者一类物品。 同拓展命令“#name”。 ^C 老板键,应急按钮。退出游戏。 d 丢下物品。 例如“d7a”意味着丢掉7件a物品。 D 丢下特定种类的物品。 为了回答问题 “What kinds of things do you want to drop? [!%= BUCXPaium]” 你需要键入零个或者多个物品字符,紧接着按下‘a’和/或‘i’和/或‘u’和/或‘m’键。此外,可以键入一个或者多个被祝福的/被受诅咒的/被诅咒的分组。 .PS D%u .PL DB 丢弃所有已知是被祝福的物品。 .PL DU 丢弃所有已知是未被诅咒的物品。 .PL DC 丢弃所有已知是被诅咒的物品。 .PL DX 丢弃所有未知是B/U/C状态的物品。 .PL DP 丢弃你刚捡起的物品。 .PL Da 丢弃所有的物品,不会要求确认。 .PL Di 在丢弃任意物品前都检查你的物品清单。 .PL Du 只丢弃未付款的物品(当在商店购物时)。 .PL Dm 使用菜单来决定将要丢弃哪个物品。 .PL D%u 只丢弃未付款的食物 .PE 最后一个例子展示了一个组合。这里有个四种类别物品过滤:类别((‘!’,用于毒药;‘?’,用于卷轴,等等),商店状态(‘u’用于未付款,换句话说,仅用于购物),祝福/诅咒状态(如上所示的‘B’、‘U’、‘C’以及‘X’),还有新版的‘P’,最近捡起的物品;通过捡起或放下物品来控制,而非受时间因素影响)。 如果你在一项类别上,指定了不止一个值(例如“!?”对于毒药和卷轴或者是“BU”对于被祝福的和未被诅咒的),一项物品如果它匹配了指定值的任意一个将会满足条件(因此“!?”意味着‘!’或者‘?’)。 如果你指定了多个类别,物品将会匹配每个类别的条件(因此“%u”意味着种类‘%’和未付款‘u’)。 最后,你可能会在多个类别中指定多个值:“!?BU”将会选择所有被祝福或未被诅咒的毒药和卷轴。(在3.6之前,过滤组合的行为是不一样的。) ^D 踢某些东西(通常是门)。 e 吃东西。 通常优先检查在地上的可食用物品,如果找不到可选择的,就检查在物品清单中的。 在‘e’之前使用‘m’前缀将会直接忽视去吃地上的食物。 如果你试图在已经处于饱腹状态的时候进食,你可能会因为噎住窒息而死。如果你冒这个险,那么如果你在第一口活了下来,你将会被询问“continue eating?”。你可以设置paranoid_confirmation:eating选项:要求在回应时输入yes来替代y。 .hw Elbereth E 在地板上刻字。 E- - 在地板上用你的手指写字。 刻下“Elbereth”将会造成大多数的怪物在接近你的时候不会攻击你(但是一旦你进行了攻击,你将破坏你的刻字);这个方法通常有助于给你自己争取喘息的机会。 f 从箭袋中发射发射物。你或许可以使用‘Q’命令来选择弹药,或者autoquiver为true的时候,让电脑选择一个合适的。 如果当前持有的武器具有“投掷并返回”属性,且你的箭袋为空,并且autoquiver为false,则会投掷该武器,而非将箭袋填满。 如果装备了长柄武器,系统也会自动使用该武器。 如果fireassist为true,射击时系统会自动尝试装备与箭袋中弹药匹配的发射器(例如,弓或投石器);此过程可能需要多个回合,并可能被怪物打断。 请记住,事后请切换回你的主要近战武器。 查阅‘t’(throw)以获取更多关于一般投射或者开火。 i 显示你的物品栏。 I 显示物品栏中某特定类别的物品。 .PS IX .PL I* 列出物品清单中的宝石; .PL Iu 列出未付款的物品; .PL Ix 列出在你购物账单上用掉的东西; .PL IB 列出所有已知是被祝福的物品; .PL IU 列出所有已知是未被诅咒的物品; .PL IC 列出所有已知是被诅咒的物品; .PL IX 列出所有是否是被祝福或被诅咒未知状态的物品; .PL IP 列出你刚捡起的物品; .PL I$ 计算你的金钱。 .PE o 开门。 O 显示和修改选项设置。 一个展示当前选项值的菜单将会被显示出来。对于大多数的值你可以通过选择所给出的项的菜单入口进行方便地修改。(通过键入对应项的字母或者点击该选项,这取决于你的界面)。 对于非布尔值,一旦你在选择后关闭了菜单,将会进入一步出现额外的菜单或者提示。那些可用的选项将会在指南的后面列出来。 选项通常在游戏前被设置而不是使用‘O’命令;参见关于选项的部分。 在‘O’前面添加‘m’前缀以显示高级选项。 ^O 显示已探索地牢的摘要。 “#overview”简单来说就是:显示已经探索过的值得注意的地牢层。 (在3.6.0之前,‘^O’曾是调试模式命令,该命令展示所有特殊的地牢层的位置。使用“#wizwhere”去执行那个命令。) p 付款。 P 戴上一件配饰(戒指,护身符等)。 这个命令也可能被用于穿护甲。询问想要使用哪一件物品的提示只会列出饰品,但是选择一个未被列出的护甲物品也将会尝试穿上它。 (查看下面的‘W’命令。它会列出护甲作为物品清单选项,但是也会接受一件饰品并且尝试穿上。) ^P 查看最近的游戏消息。 在之前消息后的‘^P’将会重复之前的消息。对于某些用户界面来说,这个行为将会随着msg_window选项而有所不同。 q 喝东西。 当出现喷泉或水槽时,系统会询问是否要从那里喝水。 如果拒绝,则会提供从背包中选择一瓶药水的机会。 在‘q’前面加上‘m’前缀,即可跳过关于是否从喷泉或水槽喝水的询问。 Q 选择准备弹药。你可以在那之后使用‘f’命令进行投射。 (在3.3之前,这个命令用于退出游戏,现在已经迁移至“#quit”命令。) r 读卷轴或者书。 R 摘下配饰(戒指,护身符等)。 如果你正戴着不止一件,你会被提示需要移除哪一件。当你只戴着一件,默认情况下你将被不会询问而是直接移除,但是你可以设置paranoid_confirmation:Remove选项来提示。 这个命令也可能被用于脱下护甲。 提示希望哪一件物品被移除只会列出正戴着的饰品,但是正穿着的护甲也能选择。(见下方‘T’命令。该命令列出物品清单中的护甲,但是也可选择饰品且会试图移除它。) ^R 重绘整个界面。 s 搜索陷阱和暗门。 通常会尝试不止一次才能找到一些东西。 如果safe_wait打开的话,在前面加上‘m’前缀,即使身边有敌对怪物也能等待一回合。 该命令也能用于了解是否这里临近还有怪物。 S 保存并退出。 保存的游戏将在下一次你使用同一个角色名的时候被自动加载。 对于一般的游玩,一旦保存的游戏被重新加载后,用于存放游戏进展的文件将被删除。在探索模式中,一旦重新加载完成,你将被询问删除还是继续保存游戏文件。 保存游戏文件可以让你在游玩一阵子后在不保存游戏进度的情况下退出游戏,也能重新加载它。 这里不存在“保存当前游戏并继续游玩”的命令,即使是在探索模式下保存的游戏文件能够持久化并被再次读取使用的情况。 t 扔东西。 这里没有一个单独的叫做“shoot”的命令。 如果你手持弓来投出一只箭时,你则是在射箭,并且任何对于武器技巧的增益或者减益都会被应用起来。如果你在抛出一只箭时并没有手持弓,那么你就是使用手来抛出它,并且这样通常比起使用弓射出有更少的效果。 另见使用‘f’来在使用‘Q’之前选择一个物品,然后在额外辅助下将其投掷或射出。 T 脱下一件防具。 如果你正穿着不止一件护甲,你将被提示到底要脱下哪件护甲。(注意如果你在T恤外面穿了护甲,或者在护甲外面穿了斗篷,系统会将底下的物品视为不存在。) 当你只穿着一件护甲的时候,默认的情况下不会进行确认而是直接脱下,但是你可以设置paranoid_confirmation:Remove选项来要求给出确认提示。 这个命令也可以被用于移除饰品。哪一件物品需要被移除的提示只会列出穿着的护甲,但是一件被戴着的饰品也可以被选择。(查看上面的‘R’命令。它会列出物品清单中的饰品作为选项,但是也会接收一件护甲物品并试图脱下它。) ^T 进行传送,如果你拥有这样的能力。 v 显示当前游戏中的重要事件列表,该列表也可以通过通过“#chronicle”显示: ‘v’曾用于显示游戏版本号。 现在请改用‘V’来实现此功能。 V 显示当前的版本。 “V”曾用于显示游戏历史。 现在可以用“#history”。 w 装备(使用)武器。 w- - 什么也不拿,使用的空手。 有的角色可以一次性手持两把武器;使用‘X’命令(或者“#twoweapon”扩展命令)来实现。 W 穿上一件防具。 这个命令也可以被用于戴上一件饰品(戒指,护身符,或者眼罩)。提示哪一件物品要被穿上的物品清单中只会列出护甲,但是选择一个未被列出的饰品也会尝试戴上它。 (查阅上方的‘P’命令。它列出所有物品中的饰品但是也会接受一件护甲并且试图穿上它。) x 切换主武器和副武器。 当你正在进行双持武器进行战斗的时候,后者将会成为你的副武器。需要注意的是如果主要或者副武器槽是空的,交换依然会进行。 X 开关双持战斗。这个命令也可以通过“#twoweapon”扩展命令来实现。 (在3.6版本之前,这个键位曾用于开启“探索模式”,也被称作“发现模式”,现在被迁移至“#exploremode”和M-X。) ^X 显示你的属性。 展示名称,角色,种族,性别(除非角色名称已经能够指明,例如穴居人(Caveman)或者牧师(Preiestess),和阵营,连同你的神和他或她的敌人。 该命令也显示来自于状态行的各种各样的信息在一个简洁的表格里,包括一系列额外的因为显示空间有限而没有出现在正常状态显示栏的东西。 在正常的游戏中,‘^X’会显示所有的东西。 在探索模式中,角色与状态的反馈信息通过被启蒙魔法提供的信息而被增强显示。 z 挥舞魔杖。 z. - 将你自己作为目标,使用‘.’来选择方向。 Z 施放魔法。 Z. - 朝你自己施放咒语,使用‘.’来选择方向。 ^Z 挂起游戏(仅限于有作业控制的UNIX(R)版本) 查阅下方的“#suspend”以获取更多信息。 : 查看这里的物品。 ; 显示地图符号对应的事物。 , 捡起在你附近的地板上的物品。 可以在命令前加一个`m`来强制出现一个选择菜单。 @ 开启/关闭autopickup选项。 ^ 显示附近一个陷阱的类型。 ) 显示正在装备的武器。 [ 显示正在穿着的防具。 = 显示正在戴着的戒指。 显示正在戴着的护身符。 ( 显示正在使用的工具。 * 显示所有正在使用的装备。 该命令组合了先前的五个命令。 $ 查看随身携带的金币,如有商店信用和/或债务,也会一并查看。 + 列出你所知道的咒语。 使用这个命令,你也可以对所列出来的已知咒语进行重排序,既可以对整个列表进行重排序也可以选择菜单中其中的一个咒语然后选择另外的一个咒语将它们进行位置交换。 交换一对咒语也会改变施放它们时候按下的对应的字母,因此这个改变将会在当前‘+’命令完成后一直持续。 对整个列表进行排序只是临时的。 为了让排序后的列表在当前的‘+’命令之外永久有效,需要再次选择排序选项,然后选择“reassign casting letters(重新分配施法字母)。 (任何的法术咒语在学习后将会被添加到咒语列表的最后,而不是插入到已经排序完成的列表中。) \ 显示已发现的物品类型。 前面添加‘m’以选择显示顺序。 ` 显示某类物品的已发现类型。 前面添加‘m’以选择显示顺序。 | 如果支持并启用了持久性物品栏显示(通过perm_invent选项),则与之交互,而非与地图交互。 允许使用menu_first_page、menu_previous_page、menu_next_page和menu_last_page键(默认键位分别为 ‘^’、‘<’、‘>’、‘|’)。 某些界面还支持menu_shift_left和menu_shift_right键(默认键位分别为 ‘{’ 和 ‘}’)。 使用Return(即 Enter)或 Escape 键来恢复游戏。 ! 退出游戏以进入子终端。 更多详情请参见下文的“#shell”。 Del 显示无障碍物地图。 您可以查看当前关卡地图中已探索的部分,并可选择不显示怪物;不显示怪物和物体;或不显示怪物、物体和陷阱。 “” 键在某些键盘上显示为,在其他键盘上则显示为。 有时它会被显示为^?,尽管这并不是一个真正的 控制字符。 许多终端都有一个选项可以交换键的功能, 因此按下键可能无法执行此命令。 如果发生这种情况,您可以改用扩展命令“#terrain”。 # 执行一个扩展命令。 正如你所看到,NetHack的作者用尽了所有的字符,因此这是一种方式(扩展命令)来使用低频使用的命令。什么样的扩展命令可以使用取决于当前游戏所编译版本拥有的特性。 #adjust 调整物品清单中物品对应的字母(大多数情况下当fixinv命令为“on”)的时候有用) 自动完成。 默认按键为“M-a”。 这个命令允许你将一个物品项从一个指定的槽移动到另一个槽以至于让该物品对应的字母对于你来说更有意义或事在物品清单展示的时候让该物品出现在指定的位置。 你可以将物品移动到当前一个空白的槽,或者目标位置已经被占用了(不会被合并),对应位置的物品将和当前物品进行交换。 “#adjust”也可被用于分离一堆的物品;当选择要被调整的一堆物品时,需要在对应字母前输入一个数量来进行分离。 在移动到目标位置的时候,不输入任何的数量将会收集所有匹配的物品堆合并到一起。这个行为已经改变了;为了收集所有匹配的物品堆,“#adjust”调整一个物品堆到它当前自己的槽就能够实现上述的匹配收集效果。如果它已经被分配了一个名称,其他拥有相同名称或者没有名称但是属性匹配的物品堆将会被合并。 如果这个物品堆本身没有名字,那么只有那些没有名称的物品堆会被选中。 在上述任何一种情况下可以进行合并,然而相互匹配的物品堆但是是不同的名称是不会被合并到一起。 这种用法和使用“#adjust”来调整一个物品移动到另一个物品槽的用法有所差别。在后者的情况下,如果一堆有名称而另一堆没有名称,移动(不设置数量)一组相匹配的物品堆将会合并并且赋予另一堆相同的名称,而分离一堆物品(设置数量)当决定是否合并到目标物品堆的时候,将会忽略源物品堆的名称。 #annotate 命名当前层。所有地牢层的注释将会通过“#overview”命令进行展示 自动完成。认的按键是“M-A”,如果number_pad选项启用的时候,也可以使用按键‘^N’。 在#annotate前加上‘m’前缀和等同于加上‘m’前缀的#overview。 #apply 激活(使用)工具(鹤嘴锄,钥匙,提灯……)。 默认按键为‘a’。 如果这个工具作用于在地上的物品,使用‘m’前缀来跳过这个物品。 如果选择一把魔杖,该魔杖将会被破坏,并在这个过程中施放它的魔法。操作前会要求确认。 #attributes 显示你的属性。 默认按键为‘^X’。 #autopickup 打开autopickup或关闭。 默认按键为‘@’。 #bugreport 打开一个浏览器窗口,向 NetHack 开发团队提交报告。 该功能可在程序编译时禁用;若启用,则必须在系统配置文件中设置CRASHREPORTURL。 #call 命名一个怪物,或者一件在物品清单的,或者在地上的,或者在发现列表中的物品,或者为当前的地牢层添加一个注释(和“#annotate”一样)。 默认按键为‘C’。 #cast 施放魔法。 默认按键为‘Z’。 #chat 谈话。 默认按键为“M-c”。 #close 关门。 默认按键为‘c’。 #conduct 列举你坚持下来的自愿挑战。 自动完成。 默认按键为“M-C”。 #chronicle Show a list of important game events. Default key is ‘v’. 查看下文标题为“Conduct”的部分获取详细信息。 #debugfuzzer Start the fuzz tester. Debug mode only. #dip 将某物浸入某物中。 默认按键为“M-d”。 ‘m’前缀会可跳过关于是否浸入喷泉或水池的水的询问。 则无需下水。 #down 下楼梯。 默认按键为‘>’。 #drop 丢下物品。 默认按键为‘d’。 #droptype 丢下特定种类的物品。 默认按键为‘D’。 #eat 吃东西。 默认按键为‘e’。添加‘m’前缀将会跳过地板上的物品。 #engrave 在地板上刻字。 默认按键为‘E’。 #enhance 提升或检查武器和魔法技能。 自动完成。 默认按键为“M-e”。 #exploremode 从普通游戏模式切换到不计分的探索模式。 默认按键为‘M-X’. 会进行确认;默认的回应是n(no)。 想要真正的切换到探索模式,需要回答y。你可以通过设置paranoid_confirmation:quit选项来要求输入yes而不是y来回答。 #fight 在按键前加上前缀键,强制向某个方向战斗,即使你认为该方向上没有敌人。 默认按键为‘F’,如果是number_pad则是‘-’。 #fire 从箭袋中发射发射物。可能自动挥动发射器,或被挥动的长柄武器击中。 默认按键为‘f’。 #force 暴力开锁。 自动完成。 默认按键为“M-f”。 #genocided 列举已灭绝的生物。 在探索模式和调试模式中也会显示已绝迹的生物。 显示顺序同#vanquished. ‘m’前缀会弹出一个包含可用排序方式的菜单,而无论对#genocided还是#vanquished执行此操作,都会同时更改两者的排列顺序。 如果排序顺序是“从高到低”或者“从低到高”(适用于#vanquished),#genocided会忽略它们,转而使用字母排序。 当用于#genocided时,菜单中会省略这两个选项。 自动完成。 默认按键‘M-g’. #glance 显示地图符号对应的事物。 默认按键为‘;’。 #help 获取帮助信息。 默认按键为 默认按键为‘?’,如果number_pad选项启用的情况下也可以使用‘h’。 #herecmdmenu 显示此处可执行的命令菜单。 该菜单仅包含最可能的操作子集,而非所有可能操作的穷举。 自动完成。 如果允许了鼠标,而且herecmd_menu选项为On,点击英雄(或者你骑上的坐骑)会执行这个命令。 #history 显示游戏开发历史的概述。 #inventory 显示你的物品栏。 默认按键为‘i’。 #inventtype 显示物品栏中某特定类别的物品。 默认按键为‘I’。 #invoke 激活物品的特殊能力。 自动完成。 默认按键为“M-i”。 #jump 跳到另一处。 自动完成。 默认按键为“M-j”,如果number_pad启用也可以使用‘j’。 #kick 用脚踢。 默认按键为‘^D’,如果number_pad选项启用也可以使用‘k’。 #known 显示已发现的物品类型。 默认按键为‘\’。 ‘m’前缀可用于为sortdiscoveries选项赋予新值,以控制发现结果的显示顺序。 #knownclass 显示某类物品的已发现类型。 默认按键为‘`’。 ‘m’前缀和“#known”效果相同. #levelchange 修改经验等级。 自动完成。调试模式专属。 #lightsources 显示移动光源。 自动完成。调试模式专属。 #look 查看这里的物品。 默认按键为‘:’。 #lookaround 描述你能看见的,或者记住的,或者你身边的东西。 #loot 搜刮地上的箱子。 自动完成。加上”m“前缀来跳过在你位置上的容器并直接移除马鞍。 默认按键为“M-l”,如果number_pad选项启用也可以使用‘l’。 #monster 使用怪物的特殊能力。 自动完成。 默认按键为“M-m”。 #name 同\#call;命名一个怪物,特定物品,或者一类物品。和“#call”一样。 自动完成。 默认按键为‘N’、“M-n”和“M-N”。 #offer 向神提供一个祭品。 自动完成。 默认按键为“M-o”。 你需要找到一个祭坛才能够有机会进入下一步。你最近杀死的怪物的尸体是这个祭坛的敲门砖。 ‘m’作为命令的前缀将会跳过提供任何在祭坛上的物品。 #open 开门。 默认按键为‘o’。 #options 显示和修改选项设置。 默认按键为‘O’。 加上‘m’前缀可以显示高级设置。 #optionsfull 显示所有设置选项。 没有默认按键。 加上‘m’前缀执行更简单的设置命令。 (主要适用于使用BINDING=O:optionsfull导致‘O’从简单选项切换回传统高级选项的情况。) #overview 显示你发现的关于地牢的信息。任何到过的有注释的层也会被包括在内,以及许多的事物(祭坛,王座,喷泉等等;额外的通向另一个地牢分支的楼梯)。 如果地牢概观在游戏结束展示期间被选择,一切到过的层不管是否有注释都将被包括在内进行显示。 在#overview前面添加‘m’前缀,即可将地下城概览以菜单形式显示,您可以在其中选择任何已访问的层,从而添加或删除注释,而无需返回该层。 此操作还将强制显示所有已访问的层,而不仅仅是“interesting”子集。 自动完成。 默认按键为‘^O’,and “M-O”。 ." DON'T PANIC! #panic 测试常规的恐慌按键。终止当前的游戏。 自动完成。调试模式专属。 会被要求进行确认;默认是n(no);继续游戏。为了真正的恐慌,需要回答y。你可以设置选项paranoid_confirmation:quit来要求用yes替代y进行回答。 #pay 付款。 默认按键为‘p’。 #perminv 如果有永久物品栏支持而且通过perm_invent选项启用,与它而非地图互动。 系统会提示您输入菜单滚动快捷键,例如‘>’和‘<’。 按下Return或Escape回到正常游戏。 默认按键为‘|’. #pickup 捡起在当前位置的物品。 默认按键为‘,’。加上‘m’前缀将强制使用一个菜单。 #polyself 变形自己。 自动完成。调试模式专属。 #pray 向神祈祷以获取帮助, 自动完成。 默认按键为“M-p”。 在先前获得帮助后立马再次进行祈祷不是一个好主意。 (注意:活着进入地牢被认为已经获得了帮助。你不应该在开启新一轮游戏后立马进行祈祷。) 偶然的使用这个命令会造成麻烦,因此这里有个选项可以让你确认你想要进行祈祷的意图。 该选项默认开启,你可以重置paranoid_confirmation选项来禁用它。 #prevmsg 查看最近的游戏消息。 默认按键为‘^P’。 #puton 戴上一件配饰(戒指,护身符等)。 默认按键为‘P’。 #quaff 喝东西。 默认按键为‘q’。 ‘m’前缀会跳过喝你的位置的喷泉或者水槽里的水。 #quit 不保存直接退出。 自动完成。 默认按键为“M-q”。 一旦偶然使用了这个命令游戏将会直接退出,你将会被询问你是否需要退出。 默认的回应是n(no);游戏继续。想要真正退出,回答y。 你可以设置paranoid_confirmation:quit选项来要求回答yes。 #quiver 选择准备弹药。 默认按键为‘Q’。 #read 读卷轴或者书。 默认按键为‘r’。 #redraw 刷新屏幕。 默认按键为‘^R’,如果number_pad选项启用也可以使用‘^L’。 #remove 摘下配饰(戒指,护身符等)。 默认按键为‘R’。 #repeat 重复上一个动作。 默认按键为‘^A’。 #reqmenu 在某些命令前添加该键,可修改其行为或调出菜单。 与移动命令配合使用时,可防止自动拾取。 默认按键为‘m’。 #retravel 旅行到上一个选择的旅行目的地。 默认键位为‘C-_’. 另见#travel。 #ride 上坐骑或下坐骑。 自动完成。 默认按键为“M-R”。 #rub 摩擦一盏灯或一块石头。 自动完成。 默认按键为“M-r”。 #run 按键前缀,用于朝某个方向奔跑。 如果number_pad关闭,按键是‘G’;如果number_pad是1或3,‘5’;如果是2或4则是‘M-5’。 #rush 按键前缀,用于朝某个方向冲刺。 如果number_pad关闭,默认按键为‘g’,number_pad是1或3,‘M-5’;如果是2或4则是‘5’。 #save 保存并退出。 默认按键为‘S’。 #saveoptions 将配置选项保存到配置文件中。 这将覆盖该文件并删除所有注释,因此,如果您曾手动编辑过配置文件,请勿使用此操作。 #search 搜索陷阱和暗门。 默认按键为‘s’。 #seeall 显示所有正在使用的装备。 默认按键为‘*’。 即使菜单中只有一个正在使用的物品,也会将其显示出来。 #seeamulet 显示正在戴着的护身符。 默认按键为‘"’。 使用前缀‘m’将强制在菜单中显示已佩戴的护身符,而不是仅显示一条消息。 #seearmor 显示正在穿着的防具。 默认按键为‘[’。 即使菜单中只有一个正在穿着的防具,也会将其显示出来。 #seerings 显示正在戴着的戒指。 默认按键为‘=’。 如果佩戴了两个戒指(或者只有一个,且是肉戒指而非“真正的” 戒指),则会在菜单中显示这些戒指。 使用‘m’前缀可强制为单个戒指显示菜单。 #seetools 显示正在使用的工具。 默认按键为‘(’。 如果正在使用一个工具(佩戴眼罩、毛巾或隐形眼镜,点燃的灯和/或蜡烛,以及/或系在宠物身上的牵引绳),则会在消息中显示结果。 如果正在使用多个工具,或者该命令前带有 ‘m’ 前缀,则会显示一个菜单。 #seeweapon 显示正在装备的武器。 默认按键为‘)’。 如果进行双持,系统会显示一条关于副武器的单独提示。 使用‘m’前缀将强制弹出菜单,该菜单将包含主武器、备用武器(即使未进行双持时也是如此),以及当前分配给箭袋槽位的任何物品。 #shell 执行终端逃逸,从NetHack切换到子进程。 可在程序编译时禁用此功能。 启用后,可通过系统配置文件控制特定用户的访问权限。 使用终端命令‘exit’返回游戏。默认按键为‘!’。 “#showgold” 显示背包中的金币数量,包括你已知的、存放在你所携带的容器中的金币。如果你身处商店内,还会显示你在该商店的信用或欠款。 默认按键为‘$’。 #showspells 列举并重新排序已知法术。 默认按键为‘+’。 #showtrap 描述一个相邻的陷阱,该陷阱可能被物品或怪物遮挡。 要符合条件,该陷阱必须已被发现。 (使用 “#terrain” 命令可暂时移除地图上的所有物品和怪物,从而能够看到所有已被发现的陷阱。) 默认按键为‘^’。 #sit 坐下。 自动完成。 默认按键为“M-s”。 #stats 显示记忆统计数据。 自动完成。调试模式专属。 #suspend 暂停游戏,从NetHack切换回最初启动游戏的终端,且不执行“保存并退出”操作。 可在程序编译时禁用此功能。 启用后,主要适用于UNIX系统上的tty和curses界面。 使用终端命令‘fg’返回游戏。 默认按键为‘^Z’。 #swap 切换主武器和副武器。 默认按键为‘x’。 #takeoff 脱下一件防具。 默认按键为‘T’。 #takeoffall 脱下所有防具。 默认按键为‘A’。 #teleport 层内传送。 默认按键为‘^T’。 #terrain 显示没有挡住的地图。 在正常游戏中,您可以查看当前关卡中已探索部分的地图,其中可选择显示:仅显示怪物;仅显示怪物和物体;或仅显示怪物、物体和陷阱。 如果视野中可见气体云,在决定是显示气体云还是其下方的地面时,会将其视为陷阱。 在探索模式下,你可以选择查看完整地图,而不仅仅是其已探索的部分。 在调试模式下,还有其他选项。 自动完成。 默认按键是‘’或者‘’(见上方的Del)。 #therecmdmenu 在此处对相邻位置可执行的命令菜单。 Show a menu of possible actions directed at a location next to you. The menu is limited to a subset of the likeliest actions, not an exhaustive set of all possibilities. Autocompletes. #throw 扔东西。 默认按键为‘t’。 #timeout 查看倒计时和英雄的定时内置函数。调试模式专属。 #tip 倒空容器。 当地面上有容器时,游戏会提示选择其中一个或“倒空其中的物品”。 如果选择后者,系统会再次提示从背包中选择倒出来哪个物品。 前缀‘m’会使该命令跳过地面上的容器,并从库存中选择一个,但menustyle :traditional这种特殊情况除外;当存在两个或更多容器时,该情况将从地面容器菜单开始。 自动完成。 默认按键为“M-T”。 #toggle 开关布尔选项. 需要在括号中指定一个参数,即要切换的选项名称。 该选项必须可在游戏中设置。 例如: BIND=':toggle(price_quotes) BIND=@:toggle(autopickup) #travel 自动旅行到地图上的特定位置。 默认按键为‘_’。使用“request menu”前缀来显示一个在视野中感兴趣的不要求移动光标到指定位置的目标的菜单。 当用光标选择一个目标并且autodescribe选项启用的时候,屏幕顶部文本行将会显示“(no travel path,没有行进路线)”如果你的角色不知道如何到达那个位置。 See also #retravel. #turn 驱赶亡灵。 自动完成。 默认按键为“M-t”。 #twoweapon 开关双持战斗。 自动完成。 默认按键为‘X’。如果number_pad选项关闭也可以使用“M-2”。 需要注意的是你必须要使用合适的武器来进行这种类型的战斗,否则双持武器模式将会自动关闭。 #untrap 解除陷阱。 默认按键为“M-u”,如果number_pad选项启用也可以使用‘u’。 在某些情形下(circumstance)该命令也可以用于解救被陷阱困住的怪物。 #up 上楼梯。 默认按键为‘<’。 #vanquished 列举击败的怪物的种类和数量. 请注意,被击败的怪物列表中包含所有被陷阱、其他怪物以及你本人击杀的怪物,但排除了那些在未被击杀的情况下被移出游戏(例如因种族灭绝,或因被安抚后的商人驱散了召唤出的警卫)的怪物,以及在放置到地图上时已是尸体的怪物。 在#vanquished命令前使用“request menu”前缀,将弹出一个可用的排序顺序菜单(前提是被击败的怪物列表中至少包含两种类型的怪物)。 无论选择哪种排序顺序,都会被分配给sortvanquished选项,因此会在后续的#vanquished请求中被记住。 “#genocided”命令也使用相同的排序顺序。 在游戏结束信息显示阶段,当被问及是否显示已击败的 怪物时,输入‘a’将允许你从排序菜单中进行选择。 自动完成。调试模式专属。 默认按键为‘M-V’. #version 显示此版本NetHack的编译时选项。 自动完成。 第二段列出了包含的用户界面。 如果有多个用户界面,您可以在运行时配置文件中使用windowtype选项来选择所需的用户界面。 默认按键为“M-v”。 #versionshort 显示程序的版本号,以及当前运行的副本从源代码编译而成的日期和时间(而非该版本的发布日期)。 默认按键为‘V’。 #vision 显示视觉阵列。 自动完成。调试模式专属。 #wait 停下,什么都不做。 默认按键为‘.’,如果rest_on_space选项开启也可以使用‘ ’(空格)。 #wear 穿上一件防具。 默认按键为‘W’。 #whatdoes 说明命令的作用。 默认按键为‘&’。 #whatis 说明符号对应的事物。 默认按键为‘/’。 #wield 装备(使用)武器。 默认按键为‘w’。 #wipe 擦脸。 自动完成。 默认按键为“M-w”。 #wizborn 显示怪物的出生、死亡、灭绝和绝迹统计数据。 调试模式专属。 #wizbury 将物品埋在你身下和周围。 自动完成。调试模式专属。 #wizcast Cast any spell. Debug mode only. #wizdetect 揭示小范围内隐藏的事物。 No time elapses. 自动完成。调试模式专属。 默认按键为‘^E’。 #wizgenesis 创造怪物。可以通过加上一个数字前缀来创建对应数量的怪物。 自动完成。调试模式专属。 默认按键为‘^G’。 #wizidentify 识别物品栏中的所有物品。 自动完成。调试模式专属。 默认按键为‘^I’。 #wizintrinsic 设定内在属性。 自动完成。调试模式专属。 #wizkill 只需指向怪物,即可将其从游戏中移除。 默认情况下,击杀目标将会算作英雄本人。 在前面加上‘m’前缀以覆盖。 自动完成。调试模式专属。 #wizlevelport 传送到另一层。 自动完成。调试模式专属。 默认按键为‘^V’。 #wizmap 为该层画出地图。 自动完成。调试模式专属。 默认按键为‘^F’。 #wizrumorcheck 通过显示第一个和最后一个真实的谣言以及第一个和最后一个虚假的谣言,来验证谣言的边界。 此外还展示了第一、第二和最后的随机的刻字、墓志铭,以及令人恍惚的怪兽。 自动完成。调试模式专属。 #wizseenv 显示地图位置的“已查看”向量。 自动完成。调试模式专属。 #wizsmell 嗅探怪物。 自动完成。调试模式专属。 #wizwhere 显示特殊关卡的位置。 自动完成。调试模式专属。 #wizwish 许愿。 自动完成。调试模式专属。 默认按键为‘^W’。 在命令前加上‘m’前缀以显示愿望历史记录菜单。 #wmode 显示墙模式。 自动完成。调试模式专属。 #zap 挥舞魔杖。 默认按键为‘z’。 #? 列举所有扩展命令。 如果你的键盘拥有一个meta键(当与其他的键一同作为组合键按下的时候,会设置另一个键的“meta”【第8,或“更高位”】比特),你可以通过给字母前加上meta键来调用任何的扩展命令。 在Windows和MS-DOS中,可以用“Alt”键实现这个特性。 在其他系统中“Alt”加另一个键 发送一个由转义符和随后另一个键组成的两个字符序列,你可以设置altmeta选项以让NetHack结合成meta+. (这种组合操作仅在NetHack等待执行某条命令时才会发生,而在接受命名或许愿的输入时则不会发生。) 与控制字符不同,控制字符中^x\)和^X\)表示相同的内容,而meta字符则区分大小写:M-x和M-X表示不同的内容。 某些可通过元字符执行的命令要求该字母必须大写,因为小写形式已被用于另一个命令,因此需要使用meta+Shift+这三个键的组合。 M-? #? (并非所有平台都支持) M-2 #twoweapon (如果number_pad禁用) M-a #adjust M-A #annotate M-c #chat M-C #conduct M-d #dip M-e #enhance M-f #force M-g #genocided M-i #invoke M-j #jump M-l #loot M-m #monster M-n #name M-o #offer M-O #overview M-p #pray M-r #rub M-R #ride M-s #sit M-t #turn M-T #tip M-u #untrap M-v #version M-V #vanquished M-w #wipe M-X #exploremode 如果启用了number_pad选项,还有一些额外的字母命令可用: h #help j #jump k #kick l #loot N #name u #untrap 5. 房间与走廊 房间和走廊在地牢里面都是有明有暗的。任何在你的视线所照亮的区域都将显示出来;黑暗的区域只会在距离你一格的地方被显示。当你探索到墙和走廊,它们会一直保持在地图上。 暗道正常情况下是看不见的,显示和坚硬的岩石一样。 当你位于它们附近时,可以使用 ‘s’(搜索)命令找到它们。 可能需要多次尝试搜索。 搜索成功后,暗道会变成普通的开放走廊。 魔法地图会揭示暗道,因此会将其转换为普通走廊,并以普通走廊的形式显示出来。 5.1. 门口 默认情况下,autoopen选项处于启用状态,因此只需尝试走到关闭的门所在的位置,系统就会尝试将其打开,无需输入‘o’。 如果你处于混乱(Conf)或眩晕(Stun)状态,或者具有笨拙(fumbling)属性,则通过autoopen打开门的功能将无法生效。 门口连接了房间和走廊。 当然有一些门口是没有门的;你可以直接走过去。 另外一些门口会有门存在,门可以打开,关上,或者锁上。 使用‘o’命令开门;使用‘c’命令关门。 你可以使用一些工具然后使用‘a’命令来打开锁上的门,或者使用‘^D’命令来直接踢开它。 在打开门后无法斜着进入门;你必须要有接近它们然后垂直或水平地直着走进去。 没有门的门口不受这个限制,除了一个特殊关卡。 解锁魔法确实存在,但通常在游戏初期无法使用。 你无需魔法也能打开上锁的门:先使用‘a’(应用)命令使用解锁工具,然后打开门。 默认情况下,autounlock选项也处于启用状态,因此如果你在携带开锁工具时尝试通过‘o’或autoopen打开一扇上锁的门,系统会询问你是否要将开锁工具用于该门的锁上。 此外,你还可以通过执行 ‘^D’(踢)命令,用脚踢开一扇关闭的门(无论是否上锁)。 踢开一扇门会将其破坏,并产生巨大噪音,这可能会惊醒正在睡觉的怪物。 某些关闭的门设有机关陷阱,若尝试打开(当门未上锁时)、解锁(当门已上锁时)或踹开,门将会爆炸。 与踹门一样,爆炸会摧毁门并产生巨大噪音。 可使用 “#untrap” 命令检查门上是否设有陷阱,但可能需要多次尝试才能发现。 一旦发现陷阱,系统会询问你是否尝试拆除。 若你同意,成功将消除该陷阱,但失败则会触发陷阱爆炸。 (若你拒绝,你实际上会忘记该处曾发现过陷阱。) 关闭的门有助于阻挡怪物。 大多数怪物无法打开关闭的门,尽管少数怪物无需如此,(例如,幽灵可以穿过门,雾云可以从门下流过)。 一些能打开门的怪物还可以使用开锁工具。 还有一些(如巨人)可以砸开门。 密门是隐藏的,从房间内部看,它看起来像是一面普通墙壁,从外部看则像是一块坚实的岩石。 你可以使用 ‘s’(搜索)命令来找到它们,但可能需要多次尝试(如果运气不佳,可能需要多次尝试)。 一旦找到,它们在各方面都与普通门完全相同。 绘图魔法无法揭示密门。 5.2. 陷阱(‘^’) 在地牢中自始至终都存在陷阱,惩罚粗心的闯入者。 例如你可能会突然掉进一个坑里被陷住然后耗费数回合后才能爬上来(见下方)。 (如果运气不佳,可能需要多次尝试)。暗门探测魔杖(wand of secret door detection)和“探测隐形”(detect unseen)咒语\f也能在一定半径范围内揭示陷阱,但前提是该陷阱也必须位于视线范围内(无论当时你是否能看到)。\f 此外还有其他魔法可以揭示陷阱。 怪物也可以因为陷阱被捕获,这是一种很有用的防御策略。不幸的是,陷阱也可能对你的宠物造成伤害。 怪物(包括宠物)如果之前曾遇到过地图上显示的某种陷阱,通常会避免踏入该陷阱。 陷阱不会显示在你的地图上,直到你移动到该陷阱上面触发后,或看到一些东西是掉入到里面,或者你使用‘s’命令发现它。 有些陷阱,比如坑洞、熊陷阱和蜘蛛网,会将你困在原地。 只需尝试移动到相邻的位置,并根据需要重复此操作,最终你就能脱身。 其他陷阱可能会将你传送到不同的位置。 传送门会将你传送到同一地牢层内的其他位置。 层间传送装置会将你传送到一个随机的地牢层,目的地从比当前层低几个层一直到顶层中随机选择。 这些陷阱每次触发时都会选择一个新的目的地。 陷阱门和洞穴也会将你传送到另一个层,但该层总是位于当前层下方。 通常是下一层,但也可能更深。与传送门不同,特定陷阱门或洞的目的地层是固定的,因此每次掉入其中都会将你传送到同一层,尽管未必是该层上的同一位置。 魔法传送门的行为类似,但存在一些额外变化。 有些传送门是双向的,其远端目的地始终相同:另一个能将你送回的传送门。 另一些则是单向的,会将你传送到特定的目标层,但未必会将你传送到该层上的特定位置。 地牢中有一个特殊的多层分支,其各层布局已预先绘制好,其设计灵感源自经典电脑游戏“推箱子”(Sokoban)。 它的目标是将巨石推入坑洞中。经过思考后,你能够通过传统的推箱子方式来完成所有的地牢层。如果玩家被困住,也有一些补救的措施;不过那样做会降低你的幸运值。在这款游戏中,你将扮演一名仓库工人(日语:倉庫番(そうこばん)),负责推动货箱绕过障碍物,并将它们放置在指定位置。 在NetHack中,目标是将巨石推入坑洞或深坑,直到这些陷阱全部被消除,从而通往陷阱后方的区域。 在推箱子游戏中,你只能沿四个基本方向移动,而到达最终位置的箱子会阻挡你进一步进入该位置。 在NetHack的推箱子关卡中,你可以进行对角线移动(除非这会让你穿过两块相邻的巨石之间),但你只能将巨石推向四个正方向;当一块巨石填满坑洞时,巨石和陷阱都会被移除,从而打开通往该位置的正常通道。 5.3. 楼梯和梯子(‘<’,‘>’) 通常,地牢每一层都会有一个往上(‘<’)通往上一层和一个往下(‘<’)通往下一层的楼梯。 这里也有一些例外。 例如,在地牢探索的早期,你将会发现一层会有两个往下的楼梯,其中一个依然是直接通往下一层,另一个则是进入一个被称为“侏儒矿坑”的区域。 这些矿区最终会导致死亡结局,所以在完成对这些矿区的探索后(如果你选择这样做),你需要爬回到主地牢层。 当你穿越了一些楼梯,或者触发一个陷阱导致将你送往其他一层,你离开的地牢层将会失效并将数据保存为一个文件存放到硬盘上。 如果你移动到先前你曾访问过的地牢层,该层的数据将从硬盘上的文件中加载到游戏中并再次生效。如果你移动到你从未访问过的地牢层,该层将被生成(大多数地牢层是随机生成的地牢层,有些特殊层从模板中生成,遗骨层会从先前游戏所留下的东西中加载出来。稍后会详细描述)。 怪物只会在当前层激活;在其他层的怪物事实上是停滞不动的。 通常当你爬上楼梯后,你将会到达你目的地的楼梯口。然而,宠物(见下文)和一些其他的怪物在当你上楼或下楼时如果离你足够的近的话将会一直跟随你,并有时在你爬楼梯时和你换位。当这样的情况发生时,宠物或者其他的怪物将会到达楼梯口而你则会在附近停下。 梯子提供和楼梯一样的效果,并且这两种用于地牢层间连接的东西在游戏中几乎没有区别。 5.4. 商店与购物 有时你将会进入一个房间,房间里面会有一位商店主以及很多摆放在地上的物品。 你可以通过捡起它们然后使用‘p’命令来购买。你可以在捡起它们之前使用“#chat”命令打听物品的价格。 在付款前就使用该物品会招来商店主的指责,并且商店主在你付款之前是不会让你离开商店的。 你可以丢掉一些东西在商店的地上来向商店主出售它们。商店主会给出一个价格并且询问你是否愿意以该价格卖掉它们,或者是告诉你他对这件东西不感兴趣(通常,你的东西需要和商店售卖的东西的类型相符)。 如果你不小心把一些东西丢到了地上,商店主会直接宣布该物品的所有权而不会提供任何的报价。如果想要重新再获得这个物品,你必须付款购买它。 商店主有时候会花光他的钱。 当这种情况出现时,当你想要试图售卖一些东西你会得到一定信用而不是金币。 信用可以用于付款,但是信用只能在获得信用的那个的商店用;其他的商店主不会承认。 (如果你在地牢里面偶然发现了一张信用卡,不要试图用它来进行付款;店主不会承认它。) ‘$’命令会显示你当前携带的金币的数量,该命令也会显示在商店里的欠款或者信用值。 “Iu”命令会列出所有未付款的物品(这些物品还属于商店)当你拿着它们。 “Ix”命令会以清单风格显示未付款但是用掉的物品,以及其他商店的费用,如果有的话。 5.4.1. 商店的特性 有些商店会有出乎意料的行为。 * 2 商店物品的价格会因为各种各样的因素而不同。 * 2 商店主会将紧挨着门的一格视为商店外。 * 2 当商店主像鹰一样盯着你的时候,ta通常会忽略其他的顾客。 * 2 如果一家商店门口写着“closed for inventory”(因为清点库存而关门),那么它通常不会自己打开。 * 2 商店无论如何也不会因为物品耗尽而补货。 5.5. 移动反馈 在地图上移动时,通常不会收到任何反馈,—除了将英雄绘制到新位置之外,或者你踩到一个或多个物体,或者踩到陷阱,或者试图移动到有怪物驻守的位置。 有几种选项可以用来增强常规反馈。 选项pile_limit控制一个堆中可以包含多少个物品,这些物品位于同一地图位置,以便游戏显示“此处有物品”而非列出具体物品。 默认值为5。 将其设置为1时,系统将始终显示该提示,而非列出任何物品。 将其设置为0属于特殊情况,无论堆栈规模多大,系统都会始终列出所有物品。 请注意,该数字指的是当前存在的独立物品堆栈的数量,而非这些堆栈中物品数量的总和(因此,7支箭或25金币各自都将计为1,而非分别计为7和25,当两者位于同一位置时,总计为2)。 命令前缀“nopickup”(默认‘m’)可置于移动方向之前,用于踩过物体,同时不尝试自动拾取,也不显示相关反馈。 选项mention_walls控制当你试图撞向墙壁、实心石块或地图边缘时,是否会收到反馈。 通常情况下不会发生任何反应(除非英雄处于失明状态且墙壁未显示,此时被撞到的墙壁会在地图上显示出来)。 当冲刺或奔跑因某些不明显的原因停止时,该选项也会提供反馈。 选项mention_decor选项控制在踏上“家具”时是否会收到反馈。 通常情况下,踏上楼梯、喷泉、祭坛或其他各种物体时,除非这些物体被一个或多个其他物体覆盖——即在地图上被遮挡——否则不会触发任何反馈。 将此选项设为true后,即使这些物体未被遮挡,系统也会进行描述。 没有门的门洞和敞开的门不被视为值得提及; 而关闭的门(如果你能移动到其位置上)和破损的门则会被提及。 假设你能够做到这一点,移动到水、熔岩或冰上时,如果当前尚未处于该类型地形,系统会给出提示;但当你从水域移动到另一个水域、从熔岩移动到熔岩,或从冰面移动到冰面时,系统不会重复提示, (除非期间有其他消息插入)。 从上述任何地形移回“正常”地形时也会显示一条提示信息,除非此时正有关于一个或多个物体的反馈,在这种情况下,“回到陆地”的情况将被默认。 选项confirm和safe_pet这些控制当你试图移动到和平怪物或驯服怪物的位置时会发生什么。 “nopickup” 命令前缀(默认 ‘m’)也是“移动而不攻击”的前缀,可用于尝试踏入可见怪物的位置,而该移动不会被视为攻击(参见下文怪物中的战斗 小节)。 “fight” 命令前缀(默认 ‘F’;若number_pad已启用,则为‘-’)可用于强制发动攻击,例如在猜测未被发现的怪物位置时,或故意攻击和平或驯服的生物时。run_mode选项控制在单条命令中移动超过一步时(例如冲刺、奔跑或旅行)地图重绘的频率。 5.6. Rogue层 主地牢的中后期,大约第15至19层有一个向其前身游戏hack的灵感来源rogue致敬的地牢层。 该层通常与其他层显示方式不同:可能以文字形式显示而非图块,或者如果已以文字形式显示则不带线条符号;此外,金币显示为*而不是$,楼梯显示为%而不是< 和>。 实际游戏玩法上也存在一些细微差异:门洞没有门;在房间内使用卷轴、魔杖或照明法术时,会照亮整个房间,而非仅照亮角色周围的半径范围。 此外,在Rogue层中,由小写字母表示的怪物不会随机生成。 这一关卡中那种微妙的怪异感是一种特色,而非缺陷…… 6. 怪物 怪物不会在屏幕上显示因此你无法看到它们。当心!你可能忽然进入到一个黑暗的地方。某些魔法物品可以帮助你在你被它们定位到你之前定位到它们(某些怪物定位能力很强)。 命令‘/’和‘;’能够帮助你的获取关于显示在屏幕上的怪物的信息。命令“#name”(默认按键为‘C’)允许你给一个怪物命名,这个命令或许可以帮你在很多怪物同时出现时区分你指定的其中一个怪物。命名一个空白的名称会移除先前的名字。 扩展命令“#chat”能够用于和你临近的怪物进行交互。这将不会有实际的对话框(换句话说,你无法获得你要对话的选项),但是和某些怪物(?)例如商店主,或神谕者会得到有用的结果。 6.1. 战斗 若你看见一个怪物并希望和它进行战斗,你可以直接试着走向它。 大多数你发现的怪物只会自顾自除非你发攻击它。其中的一些怪物在生气的时候会非常危险。 记住:退让是勇气的体现。 在大多数的情况下,若你试图通过移动到一个和平的怪物的位置来攻击它,你会被询问以确认你的意图。通过默认的回答‘y’来确认,然而‘y’可能会因为移动命令而误用。你可以设置paranoid_confirmation:attack选项来要求回答“yes”来确认。 如果你无法看见一个怪物(若该怪物是不可见的,或者你是眼盲的),符号‘I’将会在当你感知到它的存在时显示。 若你试图走入它,你就会试着把它视为一个可以看见的怪物一样攻击它; 当然,如果怪物离开了,你就会试着攻击空气。若你猜到怪物已经离开了并且你不希望进行攻击,你可以使用‘m’命令来移动而不是攻击; 同样的,你若忘记了怪物位置仅仅是想进行攻击,你可以使用‘F’命令。 6.2. 你的宠物 你开始游戏的时候会带着一只小狗(‘d’),一只小猫(‘f’),或者一匹小马(‘u’)。 你的宠物会在地牢里一直跟着你并且和你一起与怪物战斗。 和你一样,你的宠物也需要食物以存活。 小狗或者小猫通常喂给它们新鲜的腐肉或者一些其他的肉;小马需要的则是难以得到的素食。如果你担心你的宠物(饥饿)或者想要训练它,你可以给它喂食,也可以直接把食物扔给它。 一只训练有素的宠物能够在某些环境下很有用。 你的宠物也会在杀死怪物后获取经验值,同时成长,获取更多的生命值,并造成更多的伤害。在一开始,你的宠物甚至比起你更容易杀死一些东西,这使得宠物对于低等级的角色很有帮助。 你的宠物如果在当你移动时比较靠近你时会和你一同上下楼梯。否则你的宠物可能停滞并且或许变得狂野。同样的,当你触发某个类型的陷阱改变你的位置(例如,一个会将你丢到更下一层的陷阱门)任何临近的宠物会陪你一起,任何非临近的宠物将会被丢下。你的宠物也可能触发这样的陷阱;在这样的情况下,即使你就在旁边也不会被一同带走。 6.3. 坐骑 在地牢中有些生物可以被驾驭如果你有适当的装备和技巧。退一步讲,说服一个野兽来让你驾驭它是一件十分困难的事情。许多地牢的成员都需要凭借魔法和巫术来促成这一结盟。一旦你真正控制了一只野兽,你就可以十分容易的使用“#ride”命令来爬上或者离开载具。 当在乘骑时引导野兽在地牢里走动就如同你自己移动一样。 当乘骑时,在你屏幕上显示的是野兽。 乘骑的技能可以通过“#enhance”命令来进行管理。 请查看“武器熟练度”部分来获取更多的信息。 使用‘a’命令并选择你物品清单中的一个鞍来尝试将一个鞍放到临近的一个生物上。如果成功了,这个生物将会放到你的物品清单中。 当对一个临近的上了鞍的怪物使用“#loot”命令会试着移除该生物的鞍。如果成功了,这个鞍会放入你的物品清单中。 6.4. 遗骨层 你可能会遇到其他冒险者的鬼魂和尸体(甚至是你自己之前的身体)和他们个人的财产。幽灵很难杀死,但却很容易避开,因为它们行动缓慢伤害很低。你可以夺取这死去的冒险者的财产;然而,它们可能被诅咒了。当心这些先前被杀死的玩家,它们可能仍然潜伏在附近,为他们上一次的胜利沾沾自喜。 6.5. 怪物的保持显示 怪物(这通常包括了人类和宠物)只会在能够被看到或者被感知到的情况下才会显示出来。 移动到一个你不再能够看到或者感知到怪物的地方将会让怪物消失在你的地图上,这样的规则同样适用于其他的生物。 然而,如果你遇到一个你无法看见或者感知到的怪物——或许它无法被看见并且刚刚轻轻碰了你一下——一个特殊的“记住的,未被看见的怪物(remembered,unseen monster)”标记将会显示在一个你认为该出现的地方。 那个标记将会一直持续直到你证明该处没有怪物,即使未被看见的怪物移动到其他的位置或者你移动到一个标记无法被看到的地方。 7. 物品 当你在地牢里面发现了一些东西,通常都会捡起它们。在NetHack中,这是通过‘,’命令来实现的。在NetHack中,如果你打开了autopickup选项,你就会自动捡起来,除非使用‘m’前缀进行移动。 如果你携带了太多的东西,NetHack将会告诉你并且你无法在携带更多的东西。否则,这个东西将会被添加到你的背包并且告诉你你刚刚捡起了什么东西。 当你添加物品到你的物品清单时,你也同时增加了你的负载。你能够携带的负重取决于你的力量和你当时的情况。你越强壮(sturdy),额外的负载对你的影响对你就越小。需要注意一点,你携带的全部的物品的重量在你通过地牢时会拖累你。你的行动将会越来越慢并且你消耗品你的卡路里会越来越快,你会越来越频繁地需要食物来应对这种情况。最终,你会变得超负荷因此你需要丢弃一些你正携带的东西或被这些重量压垮。 NetHack将会告诉你你现在的负载状况有多糟糕。 如果你现在处于负载状态,下方的状态行会显示“负重”(Burdened),“吃力”(Stressed),“受压”(Strained),“高压”(Overtaxed)或“超载”(Overloaded)。 当你捡起一个物品的时候,该物品会被分配一个物品清单中的字母。许多操作物品的命令都会询问你哪一个物品你想要使用。当NetHack询问你来选择一个你当前携带的指定的物品,通常会显示一个你的物品清单组成的字母列表供你选择(查看先前的命令部分)。 一些物品,比如武器,非常容易区分。其他的,比如卷轴和药水,会因为各种各样的类型而提供描述。在同一局游戏中,任何两个拥有相同描述的物品都是同一类的。然而,不同局游戏中的物品描述是不一样的。 当你使用物品的时候,如果它的效果是显而易见的,NetHack将会为你记住它的效果。 如果它的效果不明显,你将会被询问你想要给这类物品命名什么以便之后能够识别它。你也可以使用“#name”命令来来对一类指定的物品或者单个的物品进行命名以达到实现相同的效果。当你对一个已经命名的物品进行命名的时候,指定空白的值将会移除先前的名字而不是命名一个新的。 7.1. 诅咒与祝福 任何你发现的物品可能会被诅咒,即使这个物品是有用的。诅咒通常的效果就是你会和它们牢牢绑定在一起。被诅咒的武器会将它和你的手绑定在一起,因此你无法卸下它。任何你穿着的被诅咒的物品都无法在一般意义上被移除。此外,被诅咒的武器和护甲通常,但不总是,拥有负效应的魔法使得它们在战斗中有弱的效果。其他被诅咒的物品呈现低效的或者有害的效果。 物品也可以被祝福。 被祝福的物品效果的更好或者比起被诅咒的物品更有益。 例如,一件被祝福的武器在对抗恶魔的时候将会造成更多的伤害。 一件既没有被诅咒也没有被祝福的物品被认为是未被诅咒的(uncursed)。它同样也可被称作未被祝福的(unblessed),不过你在游戏中只会看到未被诅咒的名称。“这个杯子是半满的还是半空的”这种情况;你自己决定吧。 这里存在给物品附上或移除诅咒的魔法,因此即使你和被诅咒的物品绑定在一起,你依然可以消除诅咒来移除它。 牧师拥有对这一属性先天的感知力,因此他们比起其他的角色能够更加容易地避免被诅咒的物品。 一件在你物品清单的未知状态的物品将不会有任何的前缀。 一件在你物品清单的已知状态的物品将会以“被诅咒的”(cursed)。“未被诅咒的”(uncursed)或“被祝福的”(blessed)描述来区分。在某些情况下,“未被诅咒的”将会因为其他足够多的信息被忽略。implicit_uncursed选项可以用于控制这个情况;关闭这个选项使得即使该属性能被其他属性推断出也依然显示该描述。 有时,物体的被祝福或被诅咒状态被称为其“BUC”属性(分别代表“被祝福”、“未被诅咒”或“被诅咒”状态),或“BUCX”(分别代表“被祝福”、“未被诅咒”、“被诅咒”或“未知”状态)。 (偶尔也会用“beatitude”。) 7.2. 神器 有些物品被赋予了特殊力量,被称为神器(Artifact)。 它们有特定的类型(例如长剑(long sword)或兽人匕首(orcish dagger)),并拥有独特的名称,比如Giantslayer、Grimtooth。 神器武器通常比普通武器造成的伤害更高。 有些对所有怪物都能造成额外伤害,有些则仅对特定类型的怪物有效,因此面对其他类型的怪物时,其效果并不优于普通武器。 有些在挥舞时能提供防御能力,或具备其他未在此列出的能力。 你可能会发现它们就这么散落在地上,包括但不限于商店内部,或者作为向你的守护神在祭坛上通过“#offer”献祭的奖励获得。 少数武器可能由怪物掉落,也可能通过为同类普通物品赋予正确名称而转化而来。 或者,如果你恰好获得了一个许愿机会,也可以许愿获得这些武器,但此类愿望可能会失败。 有些神器具有特定的阵营属性,有些则没有。 你无法通过献祭获得与自身阵营不同的神器,若试图对这类神器许愿,或发现后尝试使用,可能会受到电击。 每个职业都有一件独特的神器,位于任务分支中。 这些通常被称为任务神器。 它们均具有明确的阵营属性,且大多数为非武器类物品。 这些神器不会随机出现。 ‘\’和‘a’命令将列出你已完全鉴定过的神器(仅知晓名称和物品类型是不够的)。 7.3. 圣物 有三件独特的物品,它们各有名称且拥有有限的特殊能力,但并不被归类为神器。 每件物品都由特定的怪物守护,你需要收集全部三件,才能在游戏后期使用。 这些遗物的排列顺序与神谕中关于它们的描述顺序一致, 而非进行召唤时所需使用的顺序。 它们分别是开启之铃(Bell of Opening)、死亡之书(Book of the Dead),以及呼唤烛台(Candelabrum of Invocation)。 在尚未被鉴定时,它们的描述分别为:“银铃”、“纸莎草魔法书”和“烛台”。 7.4. 武器(‘)’) 假如有机会,在险境迷宫中大多数的怪物都无条件想要杀死你。 你需要一件武器自保(首先是要杀死他们)。 没有武器的话,你每次只能造成1到2点伤害(加上加成,如果有的话)。武僧是个例外;比起使用武器,他们使用拳头(或拳套)会造成更多的伤害。 这里面有手持的武器,例如狼牙棒(mace)和剑(sword),也有可投掷的武器例如弓箭(arrow)和矛(spear)。想要使用武器来攻击怪物,你需要手持武器然后来攻击它们,或者朝它们投掷。你可以简单的选择投掷一只矛。为了射出一只箭,你需要首先手持一把弓(bow),之后投掷箭。弩(crossbow)会发射弩箭(crossbow bolt)。投石器可以抛投大石块和石头。 施加魔法后的武器拥有一个附加值(或者攻击增强,可以是增强或者削弱)会增加你击中的的概率或者对怪物的伤害。 唯一确定一把武器的魔法能力就是通过某种魔法鉴定。 大多数的武器会受到某种类型的损害,例如生锈。 “腐蚀”等损害是可以修复的。 攻击一个怪物命中的成功率,和命中后造成的伤害值,取决于很多因素: 武器的类型,武器的质量(附魔和/或腐蚀程度),经验等级,力量,敏捷,负重,以及熟练度(见下文)。怪物的护甲等级——通常的防御等级,并不一定真的穿了护甲——也是一个因素;此外,一些怪物也会因为某些特定类型的武器而受影响。 许多的武器都能够被单手持有;有一些需要双手。当手持一把双手武器的时候,你无法装备一个盾牌,反之亦然。当手持一把单手武器的时候,你可以使用‘x’命令来让另一把武器待命,该命令可以交换你的主武器和准备好的武器。如果你熟练掌握“双持战斗”(two-weapon combat)技巧,你可以同时装备主手和副手武器;使用‘X’命令来使用或解除。只有某些角色(例如野蛮人)拥有这个必备的技能。即使拥有这个技能,双持武器战斗比起单持会在攻击你的目标的时候收到一定的惩罚(削弱)。 会存在某些情况下你不想要手持任何的武器。想要实现那样的效果,使用‘-’,也可以使用‘A’命令来让你卸下当前的武器,此外也可以卸下其他穿着的装备。 那些AD&D(专家级龙与地下城)的读者玩家,请注意每一件存在于AD&D的武器在NetHack中都会造成相似的伤害。 一些更加费解的武器(例如链棒(aklys),苜蓿锤(lucern hammer),以及鸦啄战锤(bec-de-corbin))被定义在AD&D的附录《Unearthed Arcana》(被发掘的奥秘)中。 有的界面支持weaponstatus选项。 该选项启用后,将显示一个额外的状态提示,描述当前装备的武器。 使用武器的命令有‘w’(手持),‘t’(投掷),‘f’(发射),‘Q’(装配箭袋),‘x’(交换武器),‘X’(双持),以及“#enhance”(增强)(见下方)。 7.4.1. 投掷与射击 你可以通过‘t’命令来投掷任何的东西。该动作将会给出提示要投掷的物品;按下‘?’将会列出在你物品清单中被认为可以投掷的物品,或者按下‘*’来显示你整个物品清单。在你选择好想要投掷的物品后,你将会被提示选择一个方向而不是一个目标。物品能够被人出去的距离主要取决于物品的种类和你的力量。箭可以直接用手投掷,但是通过手持一把弓来射出能够让它射的更远也更有可能集中目标。 某些武器在投掷后会飞回。 回力镖(boomerang)(前提是它未击中任何目标)便是显而易见的例子。 如果在挥舞链棒时将其投掷,它仍会飞回,即使击中了目标也是如此。 力量足够强大的英雄可以投掷战锤Mjollnir; 当由女武神 投掷时,它也会返回。 然而,链棒和Mjollnir偶尔会无法返回。 返回的投掷物有时无法被接住,有时甚至会击中投掷者,但一旦接住,它们就会被重新握在手中。 你可以通过‘Q’命令选择你想要抛出的投掷物,然后使用‘f’命令投掷它来简化投掷操作。你会像上面一样被提示选择一个方向,但是在使用‘f’时候你无需指定一个物品来抛出。 这里也同样有一个autoquiver,选项该选项会让NetHack游戏在你使用‘Q’然后抛出物品后自动的装填你的箭袋。 如果你的箭袋是空的,autoquiver为false,且你正在持有一把投掷后会返回的武器,你将投掷该武器,而不是填充箭袋。 “fire”命令还提供额外辅助:如果fireassist处于开启状态,它会尝试持有一把与箭袋中弹药匹配的发射器。 某些角色能够一次同时发射/投掷多个物品。 掌握如何一次性装填一些火药——或者一手持有多枚子弹——并且依然能够击中目标绝非易事。 游侠则对于这些非常擅长,同样对于相关的武器熟练度有着高的技能等级(如果你手持弓去射箭那么你会用到弓的技巧,如果你手持十字弩去射出弩箭那么你会用到十字弩的技巧,或者如果你在使用投石器投射石块那么你会用到投石器的使用技巧)。 角色有机会发射的物品的数量取决于不同的回合。你可以通过使用一个数字作为‘t’或者‘f’命令的前缀来显示地限制投射的数量。例如,“2f”(如果使用了number_pad模式则是“n2f”)将会确保你只会最多射出2只箭即使你能够发射3只。 如果你的指定了一个更大的数字来射击(例如“4f”),你将只会最终射出和未限制时射出的数量(这里就是3只)。如果第一个已经发射,所有发射物都会朝同一方向发射;如果第一只箭射死了怪物,那么其他剩余的箭将会继续飞出超过那个目标点。 7.4.2. 武器熟练度 你会在可用武器中有着不同的技能程度。武器熟练度,或者说武器技巧,影响着你有多擅长使用某种武器,并且随着游戏的进行,你将能够逐渐提升你的技巧,当然这取决于你的角色,你的经验等级,和武器的使用程度。 为了熟练度,武器被分为了不同的分组例如匕首(dagger),阔剑(broadsword),以及长柄武器(polearm)。每个角色对于每个武器组能达到的熟练度都有限制。例如,巫师在匕首或者魔杖方面的熟练度能够达到很高的技能等级但是在剑或者弓方面却达不到很高。 “#enhance”(增强)扩展命令用来查看当前武器熟练度以及去选择一项或多项当你使用的足够多后能够进行提升的技能。技能等级有‘无’(none)(有时候也叫做“受限”(restricted),因为你无法进行提升),“无技能”(unskilled),基本”(basic),“熟练”(skilled),和“专家”(expert)。受限的技能不会显示在通过“#enhance”打开的菜单。 (在神的干预下某些特殊的技能能够取消受限,在这种情况下该技能起始于无技能但上限于基本。)某些角色能够增强他们的无武器战斗或者武艺技能突破专家级达到“master(大师)”或者“grand master(宗师)”。 使用一些你受限的或者无技能的武器将会导致一定的惩罚,该惩罚主要影响击中怪物的几率和集中怪物的伤害;在“基本”等级下,不会有惩罚和加成;在“熟练”等级下,你将在命中率和攻击伤害中得到少许的提升;在“专家”等级会得到更多的提升。一次成功的命中将有机会促进你的技能等级进入下一等级(除非该技能已经达到了上限)。一旦这样的训练让技能达到进入下一等级,你将会被告诉你对于你的技能更加有信心。在那个时刻你可以使用“#enhance”来提升你的一个或多个技能。技能不会自动地提升因为对于你所有的技能会有一个总共的上限,因此你需要主动的选择提升某些技能以及忽略另外的技能。 7.4.3. 双持战斗 某些角色能够一次使用两把武器。 这样做似乎很麻烦,但是一旦使用起来就会成为你的第二天性。为了手持两把,你需要使用“#twoweapon”命令。但是首先你需要在双手都持有武器。 (需要注意你的两把武器并不一样;在你常用的手中持有的一把被认为是主武器而另一把则认为是副武器。 最值得注意的不同点是当你停下来时——或者在你开始之前——会立刻进行武器双持。 主武器是你手持的武器,副武器仅仅是一件在你物品清单的被指定的替代武器。 如果你手持了主武器但是你的副手是空的或者拿的是错误的武器,使用‘x’,‘w’,‘x’的按键顺序来首先交换你的主武器到你的副手上,手持一个你想使用的武器作为副武器,然后交换他们到期望的手上。 如果你的副武器或者替代位置的武器是正确的但是你的主武器不是,只需要简单地使用‘w’来手持主武器。最后,如果两只手都不是正确的武器,使用‘w’,‘x’,‘w’来首先手持一个武器作为副武器,然后交换它到副手,最后手持一把武器作为主武器。 上述整个过程可以通过使用pushweapon选项来简化。当它启用时,使用‘w’来手持武器可以让当前手持的武器变为你的副武器。因此序列‘w’,‘w’能够用首先手持你打算作为次要的武器,然后使用你想要作为主武器的武器,这将会让第一个武器推到次要位置。 当处于双武器战斗(two-weapon)模式的时候,使用‘X’命令切换回单武器(single-weapon)模式。扔出或者丢掉任意一把武器或者其中一把武器被偷走或者毁掉都将使你切回单武器模式。 7.5. 护甲(‘[’) 有很多不友善的生物潜伏着;你需要护甲来保护你自己免受它们的攻击。有些类型的护甲比起其他的更加具有保护作用。你的护甲等级用于计量这种保护能力。护甲等级(AC)和专家级龙与地下城(AD&D)一样用于计量防御力,值为10等同于没有护甲,越低的数值意味着越强的护甲。每一件存在于AD&D中的护甲都在NetHack中有,并且有同样的防御力。 这里是一份(不完整)列表显示不同护甲套装以及它们提供的护甲等级: center; a n. 龙鳞甲(Dragon Scale Mail) 1 板甲(Plate Mail),水晶板甲(Crystal Plate Mail) 3 黄铜板甲(Bronze Plate Mail),板条甲(Splint Mail),带链甲(Banded Mail) 4 矮人秘银胶衣(Dwarvish Mithril-Coat) 4 锁子甲(Chain Mail),精灵秘银胶衣(Elven Mithril-Coat) 5 鳞甲(Scale Mail),兽人锁子甲(Orcish Chain Mail) 6 龙鳞片(Dragon Scales) 7 嵌皮甲(Studded Leather Armor) 7 锁环甲(Ring Mail) 7 皮甲(Leather Armor),兽人锁环甲(Orcish Ring Mail) 8 皮夹克(Leather Jacket) 9 无护甲(No Armor) 10 你还可以穿戴其他护甲部件(如披风盖在盔甲外、衬衫穿在盔甲内、头盔、手套、靴子、盾牌),从而进一步降低你的护甲值。 其中大多数装备能使AC提高1或2点(从而使总值变小,最终甚至变为负值),但也可以进行附魔。 衬衫是个例外;除非经过附魔,否则它不会提供任何防护。 有些斗篷在未附魔时也不会提高AC,但所有斗篷都能为内层穿戴的盔甲提供一定的防锈或防腐蚀保护,并能抵御某些怪物的\f触摸攻击。 如果一件护甲被附魔,那么这个护甲的防御力比起普通的护甲更加强(或弱),同时它们的‘加’(或‘减’)的值会从你的护甲等级中减去。例如,一件+1的锁子甲比起一般的锁子甲会提供更强的防御力,是你的AC进一步减少一个单位达到4。当你穿上一件护甲的时候,你会立刻了解你的护甲等级和护甲提供的加成。被诅咒的护甲通常带有负的减少值并且通常无法移除。 许多类型的护甲都会受限于某种损坏比如生锈。这样的损坏可以被修复。某些类型的护甲会限制咒语的施放。 选项nudist可以在游戏开始前设置该,尝试在整个游戏过程中不穿任何护甲(这是一项自我设定的挑战,但要完成起来极其困难)。 某些界面支持armorstatus选项。 启用该选项后,将显示一个额外的状态条,汇总显示当前穿戴的护甲。 使用护甲的命令有‘W’(穿上)和‘T’(脱下)。 ‘A’命令也可以用于像其他穿着的物品一样对护甲进行脱下。 同时,通常用于配饰的‘P’(戴上)‘R’(移除)也可以用于护甲,但护甲部件不会在选择穿上或脱下什么的提示中显示为可能的选项。 7.6. 食物(‘%’) 食物对于生存来说是十分重要的。 如果你长时间行动而没有进食你将会变得头晕目眩,最终因为饥饿而死亡。 某些食物会因为没有保护而变质,吃下后会不利于健康。食物保存在冰盒或者罐头里面能够保持新鲜,但是冰盒很重,罐头打开需要时间。 当你杀死怪物后,它们通常会留下尸体,这些尸体也是“食物”。 这些尸体大多数,但不是全部是可食用的;某些尸体在你食用后会给你特殊的力量。 一个经验法则是“吃什么补什么”。 一些角色和一些怪物是素食主义者(vegetarian)。素食主义的怪物完全不会吃任何动物的尸体,然而素食主义的玩家可能会,但是会伴随一些不好的副作用、。 你可以给你喜欢吃的食物使用fruit选项来命名。 进食的命令是‘e’。 7.7. 卷轴(‘?’) 卷轴上标有各种标题,这些标题很可能是古代巫师们为了好玩而选的(例如“READ ME”,或者反过来的“THANX MAUD”)。卷轴将会在你阅读完后消失(除非是一个没有魔法在上面的空白卷轴)。 卷轴中最有用的就是鉴定卷轴(scroll of identify),这种卷轴可以用于确定某个物品具体的一些内容:是否被诅咒或者被祝福,还有多少次能够使用。 一些物品难以察觉的附魔在没有这种卷轴的帮助下将难以被鉴定。 如果卷轴的名称已知,即使英雄失明也能读取它。 如果发现了一卷卷轴,它会在物品栏中按类型而非名称列出,但在这种情况下,即使名称未显示,其名称也是已知的。 许多卷轴在受到祝福或诅咒时,或者在英雄处于混乱状态下被读取时,会产生与平时不同的效果。 在某些编译时选择了这个选项的版本中传信小鬼(Mail Daemon)可能会出现然后送达一份邮件卷轴。 要想使用有这个NetHack邮件送达由电子邮件出现在你的系统邮箱时触发邮件送达的特性的版本,你必须要设置“MAIL”环境变量指明你的邮箱文件夹名(译者:这个涉及到本地邮箱系统的知识)来让NetHack知道需要在哪里寻找新的邮件。你可能也想设置“MAILREADER”环境变量来指明你喜欢的阅读器,从而能够在你阅读邮件卷轴时让NetHack能脱离到shell环境中调用该阅读器来进行阅读。 在某些游戏中随机生成邮件的NetHack的版本中,这些环境变量将会忽略。你可以通过关闭mail选项来禁用传信小鬼。 阅读卷轴的命令是‘r’。 7.8. 药水(‘!’) 药水通过在药水瓶中的液体颜色来进行区分。在你喝掉它们后,它们就会消失。 透明的药水(clear potion)就是水(potions of water)。有时候药水会被祝福或者被诅咒,这样的药水会成为圣水(holy water)或者邪水(unholy water)。圣水是不死族(undead)的灾难,因此圣水是扔向不死族的不错的投掷物。有时候将一个物品浸入(“#dip”)药水中也是有用的。 喝药水的命令是‘q’。 7.9. 魔杖(‘/’) 魔杖通常有许多次魔法能量。某些类型的魔杖需要提供一个攻击方向来挥舞它。你也可以朝着你自己挥舞魔杖(只需要提供‘.’或者是‘s’作为方向)。需要注意的是这样做是不明智的。还有一些其他类型的魔杖不需要提供方向来使用。一根魔杖的能量值是随机的并且随着你使用它,它的能量值会慢慢减少。 当魔杖里的能量值为零的时候,尝试使用该魔杖通常不会产生任何的效果。有时,或许可以使用这个魔杖时挤出这个魔杖中仅剩的最后一点魔力值,然后这个魔杖就会被毁坏。一根魔杖或许可以通过使用一个适当的魔法来重新充能,但是这样做可能会有爆炸的风险。爆炸的风险几率一开始会很低,但是随着每一次的重新充能几率会逐渐增加。 在一些十分危急的情况时,当你到了穷途末路,你可能会不顾一切地选择折断你的魔杖。这不是给胆小的人尝试的。这样做会无疑会造成魔杖能量的灾难性的释放。 当你完全鉴定了一个魔杖的时候,你的物品清单中该魔杖的显示将会在一个括号中包括额外的信息:该魔杖被充能的次数,随后是一个冒号,最后是当前的能量。当前能量值为-1是一个特殊的情况,它表明该魔杖已经被取消了。 使用一根魔杖的命令是‘z’。想要折断一根魔杖,可以使用命令‘z’。 7.10. 戒指(‘=’) 戒指是一个非常有用的物品,因为它们相对拥有永久的魔力,不像药水,卷轴或者魔杖等只拥有短暂的效果。 wands. 当戴上一个戒指后,就会激活它的魔力。 你只能戴两个戒指,每一个戒指分别戴在每根无名指上。 大多数戴上的戒指也会加快你变饥饿的速度。不同类型的戒指有不同的速率。 戴手套时,戒指需戴在手套内。 如果手套被诅咒了,就无法戴上戒指,且已戴上的戒指也无法取下。 如果戴在手上的手套未被诅咒,你无需在戴上或取下戒指前手动脱下手套,也无需在之后再重新戴上。 这些操作会自动完成,以避免不必要的繁琐。 使用戒指的命令是‘P’(戴上)和‘R’(移除)。 也可以使用‘A’)、‘W’和‘T’;参见护身符。 7.11. 魔法书(‘+’) 魔法书是一本厚重的有魔法的书。 当使用命令‘r’来学习的时候,它们会给读者传输咒语知识(然后最终变为不可读状态)——除非这一操作没有成功。阅读一本被诅咒的魔法书或者一本有着超出你阅读能力的神秘铭文的魔法书将会对你的健康有害! 施放法术时,即使你已经学会了也可能适得其反。 如果你尝试施放一个在你经验等级之上的咒语,或者如果你相应类型的咒语只有少量的技巧,又或者当你施放一个咒语的时候你的幸运值相当的差,你可能会浪费掉施放时需要的能量和时间。 施放一个咒语会产生魔法能量以及你会用你的意念来聚集它们。 某些魔法能量的施放来源于你的内在。施放咒语会暂时用掉你的魔法值(你的魔法值会慢慢回答),让你需要额外的食物。施放咒语也需要练习。 通过不断地练习,你的每一类施放咒语的技巧将会提升。随着时间的流逝,你的关于每一个咒语的记忆会变得模糊,因此你需要重新学习它们。 某些咒语需要你提供一个方向以便施放它们,和使用魔杖类似。想要朝你自己施放,只需要在方向上使用‘.’或者‘s’。 少部分的咒语需要你选取一个目标点而不仅仅是指定一个方向。 还有一些咒语则既不需要方向也不需要目标。 正如武器会被分为不同的组类,角色对于不同组的武器有不同的熟练度一样(达到不同的程度),咒语也类似。成功施放一个咒语将会锻炼这一咒语对应组类;使用“#enhance”命令来提升一个已经经过足够锻炼的技能将会影响在这个组中的所有咒语。提升后的咒语技能可能会提升咒语的威力,降低施放失败的风险,并且提升对于这些咒语在你的记忆中停留时间。咒语技能和武器技能共享技能槽。(查阅“武器熟练度”一节。) 施放咒语也需要灵活的移动,穿着各种各样的护甲将会影响到移动。 阅读魔法书的命令和阅读卷轴的一样,‘r’。‘+’命令会列出每一个你已知的咒语和它的等级,技能分类,施放时的失败率,以及对它的记忆程度。使用‘Z’命令来施放咒语。 7.12. 工具(‘(’) 工具就是有着各种各样功能目标的的东西。某些工具类似于魔杖能量有着使用的次数。例如,灯燃烧一会儿就会灭掉。另外还有一类工具是容器,可以用来装东西或者从里面拿取东西。 某些工具(例如眼罩(blindfold))可以佩戴,其穿戴和摘除方式与其他饰品(戒指、护身符)相同;参见护身符。 其他工具(例如镐(pick-axe))除了用于其常规用途外,还可以作为武器挥舞,而在某些情况下(同样以镐为例),即使在进行常规操作时,也会被视为武器来挥舞。 选项blind可在游戏开始前设置,尝试在整个游戏过程中不看屏幕进行游戏(这是一项自我设定的挑战,但要完成起来非常困难)。 使用工具的命令是‘a’。 7.12.1. 容器 你或许会在旅程中遇到包(bag),盒子(box),以及箱子(chest)。像是这一系列的工具你可以站在它们上面(在同一个位置点)使用扩展命令“#loot”来打开,或者当你携带它们的时候使用‘a’命令来打开。 然而,宝箱通常被锁着的,且它无论如何都是笨重的不可手持的物品。你必须首先将它放在地上,然后使用钥匙或者是开锁工具结合命令‘a’来打开,或者使用‘^D’命令来踢开它,或者使用武器结合“#force”命令来强行打开它。 某些箱子其实是陷阱,在你打开它们的时候会造成不好的事情发生。 你可以检查并试着用“#untrap”扩展命令解除它们。 当容器的内容已知时,该容器将被描述为类似于“装有3件物品的袋子”(a sack containing 3 items)的形式。 在此示例中,数字3指的是相容物品的stacks数量,而非单个物品的总数。 因此,一个装有2个天蓝色药水、7支箭和350金币的麻袋,其描述应为包含3件物品,而非10件或359件。 而且,你需要预留3个未使用的背包格子,才能将所有物品取出(前提是取出后的物品不会与你已携带的物品合并成更大的堆栈)。 如果一个箱子或大盒子被描述为“坏锁的”(broken),这意味着它无法上锁,而非其作为容器的功能已失效。 #apply和#loot命令允许你在单次操作中取出和/或放入任意数量的物品。 如果你想将容器中的所有物品取出,可以使用“#tip”命令将内容物倾倒在地面上。 如果你的双手被诅咒的双持武器卡住,这可能是你取出物品的唯一方法。 当双手未被占用时,你可以将内容物倾倒至另一个容器中。 (截至本文撰写之时,另一个容器必须是正在携带的,而非置于地面上的。) 7.13. 护身符(‘"’) 护身符和戒指非常类似,且经常更加强大。和戒指一样,护身符有着各种各样的魔法属性,有些戒指有增益效果,有些戒指则有减益效果。当戴上它们的时候,它们的属性效果就会立刻激活。 你的脖子上只能戴一个护符。 使用护符的命令和使用戒指一样,‘P’(戴上)和‘R’(移除)。 7.14. 宝石(‘*’) 某些宝石是有价值的,能够买很多的金子。 它们也是你携带大量财富的有效(efficient)方式。 当你在携带有价值的宝石结束游戏的时候,会增加你的分数。 还有一些其他的小石头也宝石一样进行分类,但是它们就没有那么有价值了。 然而,所有的石头都能够被作为投掷武器(当你有投石器的时候)。 在一些紧急的情况下,你可以用手来投掷它们。 7.15. 巨石(‘`’) 雕像和巨石不是特别有用,并且通常很重。 有传言说一些雕像并非它们看上去的那样。 巨石偶尔会挡住你的去路。 当其路径上没有任何障碍物时,你可以将其向前推(尝试走到其所在位置),或者你可以使用破坏性魔法或镐将其砸成一堆碎石。 在满足特定条件的情况下,你可以移动到巨石所在的位置;通常其中一个条件是,将其再推得更远会受到阻碍。 在移动方向前使用“移动而不拾取”前缀(默认按键为‘m’))将尝试移动到巨石的位置,同时不将其推开,此外该前缀还会执行其常规操作——即在目的地防止自动拾取。 非常巨大的类人生物(巨人和他们的近亲)会捡起巨石,并用作投掷武器。 与巨石不同,雕像无法被推开,但也没有必要推开,因为它们不会阻碍移动。 不过,它们可以被砸成碎石。 对于一些这个程序的配置,雕像不是用‘`’显示而是显示某些怪物的符号。 7.16. 金币(‘$’) 金币会添加到你的分数中,同时你可以在商店里面用它们来买东西。在地牢里面有许多的怪物都受到你携带的金币数的影响(商店主除外)。 金币是唯一一种不受祝福/诅咒状态影响的物品。 它们始终处于未受诅咒状态,但即使你关闭了implicit_uncursed选项,也不会被描述为“未受诅咒”。 如果你希望金币被视为具有祝福/诅咒状态,而非被明确标记为“无诅咒”,可以设置goldX选项。 unknown仅在使用能够按“BUCX”状态进行筛选的物品选择提示时才起作用。 7.17. 物品的保持显示 通常,如果你已经在某个地图上的位置看到了某个东西,然后你移动到另外的你不再能够看到那个东西的地方,那个物品会一直显示在你的地图上。 这种情况将会持续即使该物品实际上已经不在那个位置了——或许一个怪物捡起了它,又或者它已经腐烂消失了——直到你再次看到那个位置。 一个需要提醒的额外情形时如果这个东西被“记住的,未被看见的怪物”标记覆盖了。当那个标记在稍后被移除了,你确认了那个位置没有怪物了,你将会忘记那个位置还有东西,不管那个东西是被未被看见的怪物已经拿走了还是没有。 如果那个东西还在那儿,一旦你看见或者感觉到了那个地点你将会再次发现那个物品并且再次记住它。 这样的情况同样适用于一堆物品,只有这堆东西顶上的才会被显示。可以启用hilite_pile选项,以便当某个东西位于一堆东西的顶部的时候以不同的方式显示该物品。 8. 挑战(Conduct) 似乎要在NetHack中取得胜利并不难,于是某些玩家会通过在游戏的方式上施加一些限制来作为挑战。这个游戏会自动的追踪一些挑战,这些挑战可以在游戏中使用“#conduct”扩展命令或者在游戏结束时查看。 当你在进行某些行动的时候违反了某些挑战,它将不在被列出来(在查看的列表中)。带着这些挑战而赢得了游戏将给玩家带来额外的“炫耀的资本”。 需要注意的是在赢得这场游戏而不带有挑战是完全可以接受的,并且玩家第一次赢得这个游戏就带有这个挑战是不常见的。 有一系列的挑战是和进食行为相关的。其中最难的挑战就是无食物挑战。尽管生物能够在在不进食的情况下存活相当长的一段时间,但是仍然在生理上有对水的需要;因此对于引用是没有限制的,即使水能够提供很少量的食物方面给的好处。在你饥饿的时候召唤你的神来获得帮助同样不会违反任何的挑战。 一个严格的素食主义者(vegan)总是会避免食用任何由动物产生的食物。主要的营养来源于水果和蔬菜。液滴(blob,‘b’)、凝胶(jelly,‘j’)和真菌(fungus,‘F’)的尸体和罐头同样算作素食。 某些人类食物是未使用动物产品而制成的;即兰巴斯片(lembas wafers)、压缩口粮(cram ration)、口粮/兵粮丸(food ration/gunyoki)、K-口粮(K-ration)和C-口粮(C-ration)。 金属或者其他通常不能吃的材料在使用变形药水变为一种可以消化它的生物的时候仍然是为素食。 不过需要注意的是,吃这类的东西仍被视为违反无食物(foodless)挑战。 素食主义者(vegetarian)不会吃动物; 然而,他们对于动物的副产品的选择比起素食更少。除上面列出的素食之外,他们可能会吃除了黑色布丁团(black pudding)之外的其他布丁团(‘P’),蛋(egg)和用蛋制成的食物(幸运饼干(fortune cookie)和煎饼(pancake)),用牛奶制作的食物(奶油派(cream pie)和糖果(candy bar)),皇家果冻(royal jelly)。武僧和素食者的饮食习惯一样。 吃任何的肉类将会违反素食主义(vegetarian),严格素食主义(vegan)以及无食物(foodless)挑战。这些肉类包括牛肚(tripe ration),任何怪物的尸体或者做成的罐头等上面没有提到的在地牢的东西。当处于变身的时候吞下然后消化一个怪物会算作是你吃掉了生物的尸体。当变身为一个可以消化皮革,龙皮,或者骨头时的怪物吃掉它们,或变身为夺心魔(mind flayer)时吃掉一个怪物的大脑,都被算作吃掉一个动物,尽管蜡油被认为是动物的副产品。 即使不考虑行为,仍然有一些东西是不可以吃的,而另外一些吃下的话会很危险。 使用吞下——消化来攻击一个怪物等同于吃怪物的尸体。需要注意的是“严格素食”(vegan)一词仅仅用于饮食语境中。 你依然可以自由地不选择使用或穿来自于动物的(例如皮革,龙皮,骨头,角,珊瑚等)东西,但是游戏将不会追踪这一行为。 另外也要注意的是,“乳白色药水”(milky potion)或许是一种略微透明的白色,但是它们并不包含牛奶,因此它们同样适用于素食主义者的饮食。 黏菌(slime mold)或者玩家定义的“水果”,尽管它们可以是从“樱桃”到“猪排”的任意词汇,仍被算作是严格素食的。 无神论者(atheist)是反对宗教信仰的。这意味着你无法使用“#pray”祈祷,使用“#offer”来向任何神献祭,使用“#turn”来驱赶不死族,使用“#chat”来和神父对话。特别挑剔的读者可能会主张玩武僧或者牧师,这样则会违反这个挑战(无神论);当然,这个留给玩家自己去选择。将岩德的护身符献祭给你的神是赢得这个游戏的关键,所以这样做不会打破无神论挑战。你当然也不会因为生气的神,祭司或者其他宗教人士主动向你说话而受到惩罚;一个真正的无神论者只会听他们的话但是不会附加这些话语其他的意义。 贫民(pauper)在游戏开始时一无所有,既没有法术,也没有武器或法术技能(如果扮演骑士,你的小马也不会配有马鞍)。 只能通过在运行时配置文件中设置OPTIONS=pauper或通过NETHACKOPTIONS环境变量来启动新游戏。 一旦游戏开始,你就可以像往常一样获取和使用物品、法术和技能。 大多数的玩家手持武器(或者手持但是作为武器的工具)来进行战斗。另一个挑战就是在不手持任何武器(weaponless)的情况下赢得游戏。你依然被允许利用投掷类武器,发射或者踢武器;使用魔杖,咒语,或者其他类型的;或者用你的拳头或者脚来战斗。 在NetHack中,和平主义者(pacifist)拒绝造成任何其他怪物的死亡(换言之,你会从该死亡中获取经验)。这是一个相当困难的挑战,尽管你依然有可能从其他的方式中获取经验。 文盲(illiterate)不能阅读或者书写文字。这包括了阅读卷轴,魔法书,幸运饼干的消息和T恤(T-shirt);写卷轴;或者标记一个除了一个简单的‘X’(文盲角色进行标记的传统符号)以外的铭文。阅读一个铭文,或者一个对于这个游戏至关重要的东西,不算在违反这一行为。卷轴的标识和魔法书的标识(和咒语知识)在你初始的物品清单中被假定为是在游戏开始前从你老师那里学习而来的。 主地牢中有一条支线,名为“推箱子”(Sokoban),在前文关于陷阱的章节中曾简要提及。 如前所述,目标是将巨石推入坑洞中,以填塞这些坑洞,从而既能清除障碍,又能绕过陷阱。 在该地牢分支中,会生效一些特殊的 “规则”。 其中一些规则无法规避,例如无法对巨石进行对角线推动。 而其他规则则可以规避,例如不使用魔法或工具击碎巨石,但若违反此规则,会导致你受到运气惩罚。 当时不会显示相关提示,但这会被记录为一种行为。 #conduct命令和游戏结束时的披露信息会报告你是否遵守了推箱子的特殊规则,若未遵守,则会显示你违反了多少次,这为你提供了一种发现哪些行为会导致厄运的方式,从而让你能更好地判断是否应避免在未来重复这些行为。 (注:只有当你在当前游戏中进入地牢的“推箱子”分支时,才会显示“推箱子”行为记录。一旦进入该分支,即使你在此处未进行任何值得注意的操作,该行为记录也会被纳入最终披露的行为记录中。 若你在游戏结束时显示“从未违反推箱子规则” 这一行为,且同时成功达成 “获得推箱子奖品”成就,则该行为最具意义(参见下文成就)。) 还有一些其他的挑战被游戏所追踪。有可能通过灭绝(genocide)的方式来消除一个或多个怪物;不使用这样的特性(genocideless)来游玩游戏被视为一项挑战。 当游戏给你提供一个机会来灭绝怪物的时候,如果你想要拒绝,你可以使用“none”。 通过魔杖,咒语或者变形药水,你可以把一个物品变形成另一个同类型的物品(polypiling)或者把自己变形成另一种生物(polyself);避免进行这样的操作(polyless)将会被视为一项挑战。将怪物进行变形,包括宠物,不会被认为是破坏这样的挑战。 最后,你或许会有机会许愿;在游戏中不尝试进行许愿任何的东西(即使这个东西会立刻消失)(wishless)被视为一项挑战。 当游戏中提供你一个可以许愿的机会的时候,你可以选择“nothing”来进行拒绝。 8.1. 成就 游戏结束时的信息披露环节还将显示各种成就,这些成就代表着通往最终升天的进度(如有达成)。 它们虽与行为表现无直接关联,但因同属“炫耀的资本”这一类别,且为减少披露环节中的提问数量,故将其归入此处。此处列出的成就大致按难度排序,但不一定是你实际达成它们的顺序。 .sp center; L Lz2 L. Rank - 获得了头衔Rank。 Shop - 进入了一个商店。 Temple - 进入了一个神庙。 Mines - 进入了侏儒矿坑。 Town - 进入了矿洞镇。 Oracle - 询问了德尔斐的神谕者。 Novel - 读了一本碟形世界小说。 Sokoban - 进入了推箱子关卡。 Big Room - 进入了大房间。 Soko-Prize - 探索到了推箱子关卡的顶层,并在那里发现了一个特殊道具。 Mines' End - 探索到了侏儒矿坑的最深处,并在那里发现了一件特殊物品。 Medusa - 击败了美杜莎。 Tune - 发现了可以开关城堡吊桥的旋律。 Bell - 获得了开启之铃。 Gehennom - 进入了地狱。 Candle - 获得了呼唤烛台。 Book - 获得了死亡之书。 Invocation - 进入了地狱的最底层。 Amulet - 获得了假的岩德护身符。 Endgame - 到达了元素位面。 Astral - 到达了星界。 Blind - 天生失明。 Deaf - 天生失聪。 Nudist - 从未穿戴任何盔甲。 Pauper - 以一无所有开局。 Ascended - 将护身符送达其最终目的地。 .sp Notes: 成就将按照你在当前游戏中达成时的顺序进行记录并随后显示,而非此处列出的顺序。 每个角色都有九个头衔,分别在经验等级1、3、6、10、14、18、22、26和30时授予。 经验等级1对应的头衔不作为成就记录。 即使因等级下降而降回较低等级,也不会取消相应的成就。 无法保证会出现小说,因此阅读它的成就可能并非总是可获得的(除非通过许愿)。 同样,大房间关卡也并非总是存在。 与小说不同,无法通过“许愿”获得这一机会。 隐藏在矿洞底和推箱子中的“特殊物品”中隐藏的“特殊物品”并非唯一,但被视为探索这些关卡的奖品或奖励,因为探索这些关卡并非通关的必要条件。 找到其他相同的物品不会记录相应的成就。 只要美杜莎(Medusa)因任何原因死亡,即使并非由你直接导致,且仅当她死亡时,该成就才会被记录。 5音符的曲调可以通过反复尝试,用乐器在距离城堡关卡吊桥足够近(但不要太近!)的地方演奏来习得,也可以通过祈祷恩赐获得。 盲人(Blind)、聋人(Deaf)、裸通(Nudist),以及贫民(Pauper)也是行为挑战,且只能通过在游戏开始前,在NETHACKOPTIONS文件或运行时配置文件中设置相应名称的选项来启用。 对于 Blind 和 Deaf,该选项还会强制执行该行为模式。 除非/直到你在地牢中取得相当大的进展,否则这些并不算真正的成就。 9. 选项 由于各种各样玩家的风格和NetHack本身的一些概念,这里有一些你可以自定义设置的选项来决定NetHack的行为。 9.1. 设置选项 选项可以通过很多种方式进行设置。 在游戏中,`O`命令允许你查看所有的选项并且改变他们中的大多数。 你也可以把这些选项放置在配置文件中,或者设置在`NETHACKOPTIONS`环境变量中来自动加载它们。 某些版本的NetHack也有前端程序来让你在游戏启动的时候设置或者对于系统管理员的全局配置。 9.2. 使用配置文件 .hw .nethackrc defaults.nh nethack.exe nethackW.exe %USERPROFILE%\NetHack\ 配置文件的默认名称取决于不同的操作系统。 在UNIX,Linux和macOS上,它是“.nethackrc”并且位于用户的目录下。 这个文件或许不存在,但是它是一个ASCII文本文件并且你可以用任何文本编辑器来创建它。 在Windows上,它是“.nethackrc”并位于文件夹“\%USERPROFILE%\NetHack\”。这个文件或许不存在,但是它是一个ASCII文本文件并且你可以用任何文本编辑器来创建它。 在第一次运行了NetHack之后,你将会发现一个名为“.nethackrc.template”的文件在“\%USERPROFILE%\NetHack\”.中。 如果你没有创建配置文件,NetHack将会使用模版配置文件来创建一个简单的配置文件来供你使用。 在MS-DOS上,它是“defaults.nh”并位于nethack.exe同目录下。 在配置文件中所有以‘#’开头的行将被视为注释。 空行会被忽略。 任何以‘[’开头,‘]’结尾的行将被视为一个章节标记。(结尾处的“]”后面可以跟上空格,然后是任意以“#”开头的注释。) 章节标记仅在CHOOSE指令之后有效,且其名称不区分大小写。 章节标记后的行属于该章节,直到另一个章节开始、遇到无名的标记或文件结束为止。 章节内的行将被忽略,除非CHOOSE指令已选中该章节。 你可以使用不同的配置声明在配置文件中,其中某些声明可以多次使用。 通常,配置声明使用大写字母书写,紧跟着一个等于符号,再跟着对于该声明指定的设置。 下面是允许使用的声明: OPTIONS options的类型有两种,布尔类型和多值类型。 布尔选项会让设置开启或关闭,而多值类型选项则有多个选项值。 对于布尔选项,在其前缀加上“no”或者‘!’来关闭它。对于混合值选项,选项名称和选项值用冒号来分割。某些选项是持久的,只会在新游戏一开始就应用。 你可以指定多个OPTIONS声明,多个选项可以在一个OPTIONS中用逗号来分隔。 (逗号分隔的选项将会从右到左来处理) 例如(先翻译到这里吧(瘫倒)): Example: OPTIONS=dogname:Fido OPTIONS=!legacy,autopickup,pickup_types:$=/!?+ HACKDIR Default location of files NetHack needs. On Windows HACKDIR defaults to the location of the NetHack.exe or NetHackw.exe file so setting HACKDIR to override that is not usually necessary or recommended. LEVELDIR The location that in-progress level files are stored. Defaults to HACKDIR, must be writable. SAVEDIR The location where saved games are kept. Defaults to HACKDIR, must be writable. BONESDIR The location that bones files are kept. Defaults to HACKDIR, must be writable. LOCKDIR The location that file synchronization locks are stored. Defaults to HACKDIR, must be writable. TROUBLEDIR The location that a record of game aborts and self-diagnosed game problems is kept. Defaults to HACKDIR, must be writable. AUTOCOMPLETE Enable or disable an extended command autocompletion. Autocompletion has no effect for the X11 windowport. You can specify multiple autocompletions. To enable autocompletion, list the extended command. Prefix the command with “!” to disable the autocompletion for that command. Example: AUTOCOMPLETE=zap,!annotate AUTOPICKUP_EXCEPTION Set exceptions to thepickup_typesoption. See the “Configuring Autopickup Exceptions” section. BINDINGS Change the key bindings of some special keys, menu accelerators, extended commands, or mouse buttons. You can specify multiple bindings. Format is key followed by the command, separated by a colon. See the “Changing Key Bindings” section for more information. Example: BIND=^X:getpos.autodescribe CHOOSE Chooses at random one of the comma-separated parameters as an active section name. Lines in other sections are ignored. Example: OPTIONS=color CHOOSE=char A,char B [char A] OPTIONS=role:arc,race:dwa,align:law,gender:fem [char B] OPTIONS=role:wiz,race:elf,align:cha,gender:mal [] #end of CHOOSE OPTIONS=!rest_on_space If [] is present, the preceding section is closed and no new section begins; whatever follows will be common to all sections. Otherwise the last section extends to the end of the options file. MENUCOLOR Highlight menu lines with different colors. See the “Configuring Menu Colors” section. MSGTYPE Change the way messages are shown in the top line. See the “Configuring Message Types” section. ROGUESYMBOLS Custom symbols for the rogue level's symbol set. See SYMBOLS below. SOUND Define a sound mapping. See the “Configuring User Sounds” section. SOUNDDIR Define the directory that contains the sound files. See the “Configuring User Sounds” section. SYMBOLS Override one or more symbols in the symbol set used for all dungeon levels except for the special rogue level. See the “Modifying NetHack Symbols” section. Example: # replace small punctuation (tick marks) with digits SYMBOLS=S_golem:7 WIZKIT Debug mode only: extra items to add to initial inventory. Value is the name of a text file containing a list of item names, one per line, up to a maximum of 128 lines. Each line is processed by the function that handles wishing. Entries are added to the wish history; see the wizwish-command. Example: WIZKIT=/wizkit.txt \" == '~' \ \" dummy paragraph to force some separation [.BR isn't working as intended] .SD n \" begin display without indentation Here is an example of configuration file contents: .ED .SD \*(sD \" string variable sD will expand to either 'i' or 'n' # Set your character's role, race, gender, and alignment. OPTIONS=role:Valkyrie, race:Human, gender:female, align:lawful # # Turn on autopickup, set automatically picked up object types OPTIONS=autopickup,pickup_types:$"=/!?+ # # Map customization OPTIONS=color # Display things in color if possible OPTIONS=lit_corridor # Show lit corridors differently OPTIONS=hilite_pet,hilite_pile # Replace small punctuation (tick marks) with digits OPTIONS=boulder:0 SYMBOLS=S_golem:7 # # No startup splash screen. Windows GUI only. OPTIONS=!splash_screen .ED \ \" another dummy paragraph [.BR 2] 9.3. Using the NETHACKOPTIONS environment variable The NETHACKOPTIONS variable is a comma-separated list of initial values for the various options. Some can only be turned on or off. You turn one of these on by adding the name of the option to the list, and turn it off by typing a ‘!’ or “no” before the name. Others take a character string as a value. You can set string options by typing the option name, a colon or equals sign, and then the value of the string. The value is terminated by the next comma or the end of string. For example, to set up an environment variable so that color is on, legacy is off, character name is set to “Blue Meanie”, and named fruit is set to “lime”, you would enter the command .SD \*(sD % setenv NETHACKOPTIONS "color,\!leg,name:Blue Meanie,fruit:lime" .ED in csh (note the need to escape the ‘!’ since it's special to that shell), or the pair of commands .SD \*(sD $ NETHACKOPTIONS="color,!leg,name:Blue Meanie,fruit:lime" $ export NETHACKOPTIONS .ED in sh, ksh, or bash. The NETHACKOPTIONS value is effectively the same as a single OPTIONS directive in a configuration file. The “OPTIONS=” prefix is implied and comma separated options are processed from right to left. Other types of configuration directives such as BIND or MSGTYPE are not allowed. Instead of a comma-separated list of options, NETHACKOPTIONS can be set to the full name of a configuration file you want to use. If that full name doesn't start with a slash, precede it with ‘@’ (at-sign) to let NetHack know that the rest is intended as a file name. If it does start with ‘/’, the at-sign is optional. 9.4. Customization options Here are explanations of what the various options do. Character strings that are too long may be truncated. Some of the options listed may be inactive in your dungeon. Some options are persistent, and are saved and reloaded along with the game. Changing a persistent option in the configuration file applies only to new games. accessiblemsg Add location or direction information to messages (default is off). acoustics Enable messages about what your character hears (default on). Note that this has nothing to do with your computer's audio capabilities. Persistent. alignment Your starting alignment (align:lawful, align:neutral, or align:chaotic). You may specify just the first letter. Many roles and the non-human races restrict which alignments are allowed. Seerolefor a description of how to use negation to exclude choices. If align is not specified, there is no default value; player will be prompted unless role and/or race forces a choice for alignment. Cannot be set with the ‘O’ command. Persistent. armorstatus Display an extra status condition which summarizes currently worn armor (default off, not supported by all interfaces). For the usual case where more than one piece of armor is worn, a list of letters is shown in the following order: G - gloves; C - cloak; A - suit; U - shirt; H - helmet; B - boots; S - shield. autodescribe Automatically describe the terrain under cursor when asked to get a location on the map (default true). Thewhatis_coordoption controls whether the description includes map coordinates. autodig Automatically dig if you are wielding a digging tool and moving into a place that can be dug (default false). Persistent. autoopen Walking into a closed door attempts to open it (default true). Persistent. autopickup Automatically pick up things onto which you move (default off). Persistent. Seepickup_typesand alsoautopickup_exceptionfor ways to refine the behavior. Note: prior to version 3.7.0, the default forautopickupwas on. autoquiver This option controls what happens when you attempt the ‘f’ (fire) command when nothing is quivered or readied (default false). When true, the computer will fill your quiver or quiver sack or make ready some suitable weapon. Note that it will not take into account the blessed/cursed status, enchantment, damage, or quality of the weapon; you are free to manually fill your quiver or quiver sack or make ready with the ‘Q’ command instead. If no weapon is found or the option is false, the ‘t’ (throw) command is executed instead. Persistent. autounlock Controls what action to take when attempting to walk into a locked door or to loot a locked container. Takes a plus-sign separated list of values: .PS Apply-Key .PL Untrap prompt about whether to attempt to find a trap; it might fail to find one even when present; if it does find one, it will ask whether you want to try to disarm the trap; if you decline, your character will forget that the door or box is trapped; .PL Apply-Key if carrying a key or other unlocking tool, prompt about using it; .PL Kick kick the door (if you omit untrap or decline to attempt untrap and you omit apply-key or you lack a key or you decline to use the key; has no effect on containers); .PL Force try to force a container's lid with your currently wielded weapon (if you omit untrap or decline to attempt untrap and you omit apply-key or you lack a key or you decline to use the key; has no effect on doors); .PL None none of the above; can't be combined with the other choices. .PE Omitting the value is treated as if autounlock:apply-key. Preceding autounlock with ‘!’ or “no” is treated as autounlock:none. Applying a key might set off a trap if the door or container is trapped. Successfully kicking a door will break it and wake up nearby monsters. Successfully forcing a container open will break its lock and might also destroy some of its contents or damage your weapon or both. The default is Apply-Key. Persistent. blind Start the character permanently blind (default false). Persistent. bones Allow saving and loading bones files (default true). Persistent. boulder Set the character used to display boulders (default is the “large rock” class symbol, ‘’). catname Name your starting cat (for example “catname:Morris”). Cannot be set with the ‘O’ command. character Synonym for “role” to pick the type of your character (for example “character:Monk”). Seerolefor more details. checkpoint Save game state after each level change, for possible recovery after program crash (default on). Persistent. cmdassist Have the game provide some additional command assistance for new players if it detects some anticipated mistakes (default on). confirm Have user confirm attacks on pets, shopkeepers, and other peaceable creatures (default on). Persistent. dark_room Show out-of-sight areas of lit rooms (default on). Persistent. deaf Start the character permanently deaf (default false). Persistent. dropped_nopick If this option is on, items you dropped will not be automatically picked up, even ifautopickupis also on and they are inpickup_typesor match a positive autopickup exception (default on). Persistent. disclose Controls what information the program reveals when the game ends. Value is a space separated list of prompting/category pairs (default is “ni na nv ng nc no”, prompt with default response of ‘n’ for each candidate). Persistent. The possibilities are: .CC i "disclose your inventory;" .CC a "disclose your attributes;" .CC v "summarize monsters that have been vanquished;" .CC g "list monster species that have been genocided;" .CC c "display your conduct; also achievements, if any;" .CC o "display dungeon overview." Each disclosure possibility can optionally be preceded by a prefix which lets you refine how it behaves. Here are the valid prefixes: .CC y "prompt you and default to yes on the prompt;" .CC n "prompt you and default to no on the prompt;" .CC + "disclose it without prompting;" .CC - "do not disclose it and do not prompt." The listings of vanquished monsters and of genocided types can be sorted, so there are two additional choices for ‘v’ and ‘g’: .CC ? "prompt you and default to ask on the prompt;" .CC # "disclose it without prompting, ask for sort order." Asking refers to picking one of the orderings from a menu. The ‘+’ disclose without prompting choice, or being prompted and answering ‘y’ rather than ‘a’, will default to showing monsters in the order specified by thesortvanquishedoption. Omitted categories are implicitly added with ‘n’ prefix. Specified categories with omitted prefix implicitly use ‘+’ prefix. Order of the disclosure categories does not matter, program display for end-of-game disclosure follows a set sequence. (for example “disclose:yi na +v -g o”) The example sets inventory to prompt and default to yes, attributes to prompt and default to no, vanquished to disclose without prompting, genocided to not disclose and not prompt, conduct to implicitly prompt and default to no, and overview to disclose without prompting. Note that the vanquished monsters list includes all monsters killed by traps and each other as well as by you. And the dungeon overview shows all levels you had visited but does not reveal things about them that you hadn't discovered. dogname Name your starting dog (for example “dogname:Fang”). Cannot be set with the ‘O’ command. extmenu Changes the extended commands interface to pop-up a menu of available commands. It is keystroke compatible with the traditional interface except that it does not require that you hit Enter. It is implemented for the tty interface (default off). For the X11 interface, which always uses a menu for choosing an extended command, it controls whether the menu shows all available commands (on) or just the subset of commands which have traditionally been considered extended ones (off). female An obsolete synonym for “gender:female”. Cannot be set with the ‘O’ command. fireassist This option controls what happens when you attempt the ‘f’ (fire) and don't have an appropriate launcher, such as a bow or a sling, wielded. If on, you will automatically wield the launcher. Default is on. fixinv An object's inventory letter sticks to it when it's dropped (default on). If this is off, dropping an object shifts all the remaining inventory letters. Persistent. force_invmenu Commands asking for an inventory item show a menu instead of a text query with possible menu letters. Default is off. fruit Name a fruit after something you enjoy eating (for example “fruit:mango”) (default “slime mold”). Basically a nostalgic whimsy that NetHack uses from time to time. You should set this to something you find more appetizing than slime mold. Apples, oranges, pears, bananas, and melons already exist in NetHack, so don't use those. gender Your starting gender (gender:male or gender:female). You may specify just the first letter. Although you can still denote your gender using either of the deprecatedmaleandfemaleoptions, if thegenderoption is also present it will take precedence. Seerolefor a description of how to use negation to exclude choices. If gender is not specified, there is no default value; player will be prompted unless role and/or race forces a choice for gender. Cannot be set with the ‘O’ command. Persistent. goldX When filtering objects based on bless/curse state (BUCX), whether to treat gold pieces as X (unknown bless/curse state, when “on”) or U (known to be uncursed, when “off”, the default). Gold is never blessed or cursed, but it is not described as “uncursed” even when theimplicit_uncursedoption is “off”. help If more information is available for an object looked at with the ‘/’ command, ask if you want to see it (default on). Turning help off makes just looking at things faster, since you aren't interrupted with the “More info?” prompt, but it also means that you might miss some interesting and/or important information. Persistent. herecmd_menu When using a windowport that supports mouse and clicking on yourself or next to you, show a menu of possible actions for the location. Same as “#herecmdmenu” and “#therecmdmenu” commands. hilite_pet Visually distinguish pets from similar animals (default off). The behavior of this option depends on the type of windowing you use. In text windowing, text highlighting or inverse video is often used; with tiles, generally displays a heart symbol near pets. With the tty or curses interface, thepetattroption controls how to highlight pets and setting it will turn thehilite_petoption on or off as warranted. hilite_pile Visually distinguish piles of objects from individual objects (default off). The behavior of this option depends on the type of windowing you use. In text windowing, text highlighting or inverse video is often used; with tiles, generally displays a small plus-symbol beside the object on the top of the pile. hitpointbar Show a hit point bar graph behind your name and title in the status display (default off). The “curses” interface supports it even if the status highlighting feature has been disabled when building the program. The “tty” and “mswin” (aka “Windows GUI”) interfaces support it only if status highlighting is left enabled when building. You don't need to set up any highlighting rules in order to display the bar. If there is one for hitpoints in effect and it specifies color, that color will be used for the bar. However if it specifies video attributes, they will be ignored in favor of inverse. For tty and curses, blink will also be used if the current hitpoint value is at or below the critical HP threshold. The “Qt” interface also supports hitpointbar, by drawing a solid bar above the name and title with a hard-coded color scheme. (As of this writing, having the bar enabled unintentionally inhibits resizing the status panel. To resize that, use the #optionsfull command to toggle the hitpointbar option off, perform the resize while it's off, then use the same command to toggle it back on.) horsename Name your starting horse (for example “horsename:Trigger”). Cannot be set with the ‘O’ command. ignintr Ignore interrupt signals, including breaks (default off). Persistent. implicit_uncursed Omit “uncursed” from object descriptions when it can be deduced from other aspects of the description (default on). Persistent. If you use menu coloring, you may want to turn this off. legacy Display an introductory message when starting the game (default on). Persistent. lit_corridor Show corridor squares seen by night vision or a light source held by your character as lit (default off). Persistent. lootabc When using a menu to interact with a container, use the old ‘a’, ‘b’, and ‘c’ keyboard shortcuts rather than the mnemonics ‘o’, ‘i’, and ‘b’ (default off). Persistent. mail Enable mail delivery during the game (default on). Persistent. male An obsolete synonym for “gender:male”. Cannot be set with the ‘O’ command. mention_decor Give feedback when walking onto various dungeon features such as stairs, fountains, or altars which are ordinarily only described when covered by one or more objects (default off). Cannot be set with the ‘O’ command. Persistent. mention_map Give feedback when interesting map locations change (default off). mention_walls Give feedback when walking against a wall (default off). Persistent. menucolors Enable coloring menu lines (default off). See “Configuring Menu Colors” on how to configure the colors. menustyle Controls the method used when you need to choose various objects (in response to the Drop (aka droptype) command, for instance). The value specified should be the first letter of one of the following: traditional, combination, full, or partial. Default is full. Persistent. Traditional was the only method available for very early versions; it consists of a prompt for object class characters, followed by an object-by-object prompt for all items matching the selected object class(es). Combination starts with a prompt for object class(es) of interest, but then displays a menu of matching objects rather than prompting one-by-one. Full displays a menu of object classes rather than a character prompt, and then a menu of matching objects for selection. (Choosing its ‘A’ (Autoselect-All) choice skips the second menu. To avoid choosing that by accident, set paranoid_confirm:AutoAll to require confirmation.) Partial skips the object class filtering and immediately displays a menu of all objects. menu_deselect_all Key to deselect all items in a menu. Default ‘-’. menu_deselect_page Key to deselect all items on this page of a menu. Default ‘\’. menu_first_page Key to jump to the first page in a menu. Default ‘^’. menu_headings Controls how the headings in a menu are highlighted. Takes a text attribute, or text color and attribute separated by ampersand. For allowed attributes and colors, see “Configuring Menu Colors”. Not all ports can actually display all types. menu_invert_all Key to invert all items in a menu. Default ‘@’. menu_invert_page Key to invert all items on this page of a menu. Default ‘’. \" ~ menu_last_page Key to jump to the last page in a menu. Default ‘|’. menu_next_page Key to go to the next menu page. Default ‘>’. menu_objsyms ." [originally menu_objsyms was a boolean] ." Show object symbols in menu headings in menus where ." the object symbols act as menu accelerators (default off). Inventory and other object menus are normally separated by object class (weapons, armor, and so forth), with a menu header line at the beginning of each group. You can have menus add the display symbol for the class of objects for each header line. You can also add the display symbol for the individual item in each menu entry. For a tiles map, that would be a small rendition of an object's tile. For a text map, it is the same character as is used for the object's class, which would be most useful when there are no headers separating objects among classes. Possible values are .PS "5\ -\ One-or-other" .PL "0\ -\ None" no symbols for either header lines or menu entries; .PL "1\ -\ Headers" show symbols on header lines but not entries; .PL "2\ -\ Entries" show symbols on menu entry lines but not headers; .PL "3\ -\ Both" show symbols on headers and entries; .PL "4\ -\ Conditional" only show symbols for entries if there are no headers; .PL "5\ -\ One-or-other" show symbols on headers, or on entries if no headers. .PE Supported by tty and curses. When setting the value, it can be specified by digit or keyword. The default value is Conditional (4). menu_overlay Do not clear the screen before drawing menus, and align menus to the right edge of the screen. Only for the tty port. (default on) menu_previous_page Key to go to the previous menu page. Default ‘<’. menu_search Key to search for some text and toggle selection state of matching menu items. Default ‘:’. menu_select_all Key to select all items in a menu. Default ‘.’. menu_select_page Key to select all items on this page of a menu. Default ‘,’. menu_shift_left Key to scroll a menu\(emone which has been scrolled right\(emback to the left. Implemented forperm_inventonly by curses and X11. Default ‘{’. menu_shift_right Key to scroll a menu which has text beyond the right edge to the right. Implemented forperm_inventonly by curses and X11. Default ‘}’. ." .lp menu_tab_sep ." Format menu entries using TAB to separate columns (default off). ." Only applicable to some menus, and only useful to some interfaces. ." Debug mode only. mon_movement Show a message when hero notices a monster movement (default is off). monpolycontrol Prompt for new form whenever any monster changes shape (default off). Debug mode only. montelecontrol Prompt for destination whenever any monster gets teleported (default off). Debug mode only. mouse_support Allow use of the mouse for input and travel. Valid settings are: .CC 0 "disabled" .CC 1 "enabled and make OS adjustments to support mouse use" .CC 2 "like 1 but does not make any OS adjustments" Omitting a value is the same as specifying 1 and negatingmouse_supportis the same as specifying 0. msghistory The number of top line messages to keep (and be able to recall with ‘^P’) (default 20). Cannot be set with the ‘O’ command. msg_window Allows you to change the way recalled messages are displayed. Currently it is only supported for tty (all four choices) and for curses (‘f’ and ‘r’ choices, default ‘r’). The possible values are: .CC s "single message (default; only choice prior to 3.4.0);" .CC c "combination, two messages as “single”, then as “full”;" .CC f "full window, oldest message first;" .CC r "full window reversed, newest message first." For backward compatibility, no value needs to be specified (which defaults to “full”), or it can be negated (which defaults to “single”). name Set your character's name (defaults to your user name). You can also set your character's role by appending a dash and one or more letters of the role (that is, by suffixing one of"-A -B -C -H -K -M -P -Ra -Ro -S -T -V -W" ).If"-@"is used for the role, then a random one will be automatically chosen. On some systems, the default is the player's user name; on others, there is no default and the player will be prompted. The former can made to behave like the latter by specifying a generic name such as ``player''. Cannot be set with the ‘O’ command. news Read the NetHack news file, if present (default on). Since the news is shown at the beginning of the game, there's no point in setting this with the ‘O’ command. nudist Start the character with no armor (default false). Persistent. null Send padding nulls to the terminal (default on). Persistent. number_pad Use digit keys instead of letters to move (default 0 or off). Valid settings are: .PS -1 .PL "\ 0" move by letters; “yuhjklbn” \" = constant-width Roman font .PL "\ 1" move by numbers; digit ‘5’ acts as ‘G’ movement prefix .PL "\ 2" like 1 but ‘5’ works as ‘g’ prefix instead of as ‘G’ .PL "\ 3" by numbers using phone key layout; 123 above, 789 below .PL "\ 4" combines 3 with 2; phone layout plus MS-DOS compatibility .PL "-1" by letters but use ‘z’ to go northwest, ‘y’ to zap wands .PE For backward compatibility, omitting a value is the same as specifying 1 and negatingnumber_padis the same as specifying 0. (Settings 2 and 4 are for compatibility with MS-DOS or old PC Hack; in addition to the different behavior for ‘5’, ‘Alt-5’ acts as ‘G’ and ‘Alt-0’ acts as ‘I’. Setting -1 is to accommodate some QWERTZ keyboards which have the location of the ‘y’ and ‘z’ keys swapped.) When moving by numbers, to enter a count prefix for those commands which accept one (such as “12s” to search twelve times), precede it with the letter ‘n’ (“n12s”). packorder Specify the order to list object types in (default “)[%?+!=/(*0_”). The value of this option should be a string containing the symbols for the various object types. Any omitted types are filled in at the end from the previous order. paranoid_confirmation A space separated list of specific situations where alternate prompting is desired. The default is “paranoid_confirmation:pray swim trap”. .PS Were-change .PL Confirm for any prompts which are set to require “yes” rather than ‘y’, also require “no” to reject instead of accepting any non-yes response as no; changes pray and AutoAll to require “yes” or ‘no’ too; .PL quit require “yes” rather than ‘y’ to confirm quitting the game or switching into non-scoring explore mode; .PL die require “yes” rather than ‘y’ to confirm dying (not useful in normal play; applies to explore mode); .PL bones require “yes” rather than ‘y’ to confirm saving bones data when dying in debug mode; .PL attack require “yes” rather than ‘y’ to confirm attacking a peaceful monster; .PL wand-break require “yes” rather than ‘y’ to confirm breaking a wand with the apply command; .PL eating require “yes” rather than ‘y’ to confirm whether to continue eating; .PL Were-change require “yes” rather than ‘y’ to confirm changing form due to lycanthropy when hero has polymorph control; .PL pray require ‘y’ to confirm an attempt to pray rather than immediately praying; on by default; (to require “yes” rather than just ‘y’, set Confirm too); .PL trap require ‘y’ to confirm an attempt to move into or onto a known trap, unless doing so is considered to be harmless; when enabled, this confirmation is also used for moving into visible gas cloud regions; (to require “yes” rather than just ‘y’, set Confirm too); confirmation can be skipped by using the ‘m’ movement prefix; .PL swim prevent walking into water or lava; on by default; (to deliberately step onto/into such terrain when this is set, use the ‘m’ movement prefix when adjacent); .PL AutoAll require confirmation when the ‘A’ (Autoselect-All) choice is selected in object class filtering menus for menustyle:Full; (to require “yes” rather than just ‘y’, set Confirm too); .PL Remove require selection from inventory for ‘R’ and ‘T’ commands even when wearing just one applicable item; .PL all turn on all of the above. .PE By default, the pray, swim, and trap choices are enabled, the others disabled. To disable them without setting any of the other choices, use paranoid_confirmation:none. To keep them enabled while setting any of the others, you can include them in the new list, such as paranoid_confirmation:attack pray swim Remove or you can precede the first entry in the list with a plus sign, paranoid_confirmation:+attack Remove. To remove an entry that has been previously set without removing others, precede the first entry in the list with a minus sign, paranoid_confirmation:-swim. To both add some new entries and remove some old ones, you can use multiple paranoid_confirmation option settings, or you can use the ‘+’ form and list entries to be added by their name and entries to be removed by ‘!’ and name. The positive (no ‘!’) and negative (with ‘!’) entries can be intermixed. pauper Start the character with no possessions (default false). Persistent. Also start with no spells or skills, which are tied to starting equipment. Does not inhibit acquiring and using items, spells, and skills once play has started. perm_invent If true, always display your current inventory in a window (default false). This only makes sense for windowing system interfaces that implement this feature. For those that do, theperminv_modeoption can be used to refine what gets displayed for perm_invent. Setting that to a value other than none while perm_invent is false will change it to true. perminv_mode Augments theperm_inventoption. Value is one of .PS "in-use" .PL "none" behave as if perm_invent is false; .PL "all" show all inventory except for gold; .PL "full" show full inventory including gold; .PL "in-use" only show items which are in use (worn, wielded, lit lamp). .PE Default is none but if perm_invent gets set to true while it is none it will be changed to all. Note: if gold has been equipped in quiver/ammo-pouch then it will be included for all despite that mode normally omitting gold. petattr Specifies one or more text highlighting attributes to use when showing pets on the map. Effectively a superset of thehilite_petboolean option. Curses or tty interface only; value is one of none, bold, dim, underline, italic, blink, and inverse. Some of those choices might not work, depending upon terminal hardware or terminal emulation software. pettype Specify the type of your initial pet, if you are playing a character class that uses multiple types of pets; or choose to have no initial pet at all. Possible values are “cat”, “dog”, “horse”, and “none”. If the choice is not allowed for the role you are currently playing, it will be silently ignored. For example, “horse” will only be honored when playing a knight. Cannot be set with the ‘O’ command. pickup_burden When you pick up an item that would exceed this encumbrance level (Unencumbered, Burdened, streSsed, straiNed, overTaxed, or overLoaded), you will be asked if you want to continue. (Default ‘S’). Persistent. pickup_stolen If this option is on andautopickupis also on, try to pick up things that a monster stole from you, even if they aren't inpickup_typesor match an autopickup exception. Default is on. Persistent. pickup_thrown If this option is on andautopickupis also on, try to pick up things that you threw, even if they aren't inpickup_typesor match an autopickup exception. Default is on. Persistent. pickup_types Specify the object types to be picked up whenautopickupis on. Default is all types. Persistent. The value is a list of object symbols, such as pickup_types:$?! to pick up gold, scrolls, and potions. You can useautopickup_exceptionconfiguration file lines to further refine autopickup behavior. There is no way to set pickup_types to “none”. (Setting it to an empty value reverts to “all”.) If you want to avoid automatically picking up any types of items but do want to have autopickup on in order to have autopickup_exception settings control what you do and don't pick up, you can set pickup_types to ‘.’. That is the type symbol for venom and you won't come across any venom items so won't unintentionally pick such up. pile_limit When walking across a pile of objects on the floor, threshold at which the message “there are few/several/many objects here” is given instead of showing a popup list of those objects. A value of 0 means “no limit” (always list the objects); a value of 1 effectively means “never show the objects” since the pile size will always be at least that big; default value is 5. Persistent. playmode Values are “normal”, “explore”, or “debug”. Allows selection of explore mode (also known as discovery mode) or debug mode (also known as wizard mode) instead of normal play. Debug mode might only be allowed for someone logged in under a particular user name (on multi-user systems) or specifying a particular character name (on single-user systems) or it might be disabled entirely. Requesting it when not allowed or not possible results in explore mode instead. Default is normal play. price_quotes Whenever the game mentions the name of an object you haven't identified yet, it also mentions the range of buy and sell prices you have seen for that item (to help narrow down what it could be). The price shown is the unit price for one item (even when you are looking at a stack of multiple items). Many players may want to turn this on while identifying objects, and then turn it back off again for general play. Default is off. pushweapon Using the ‘w’ (wield) command when already wielding something pushes the old item into your alternate weapon slot (default off). Likewise for the ‘a’ (apply) command if it causes the applied item to become wielded. Persistent. query_menu Use a menu when asked specific yes/no queries, instead of a prompt. quick_farsight When set, usually prevents the “you sense your surroundings” message where play pauses to allow you to browse the map whenever clairvoyance randomly activates. Some situations, such as being underwater or engulfed, ignore this option. It does not affect the clairvoyance spell where pausing to examine revealed objects or monsters is less intrusive. Default is off. Persistent. race Selects your race (for example, race:human). Choices are human, dwarf, elf, gnome, and orc but most roles restrict which of the non-human races are allowed. Seerolefor a description of how to use negation to exclude choices. If race is not specified, there is no default value; player will be prompted unless role forces a choice for race. Cannot be set with the ‘O’ command. Persistent. reroll Allows rerolling your character's starting inventory and attributes (default false). Persistent. Note that rerolling your character is not a recommended way to play if aiming merely to win (a lucky start has a much smaller influence on whether or not you win the game than your actions later in the game). This option exists partly as an acknowledgement that some players will insist on doing so anyway, and partly because rerolling may be necessary for certain types of challenge games. rest_on_space Make the space bar a synonym for the ‘.’ (#wait) command (default off). Persistent. role Pick your type of character (for example, role:Samurai); synonym forcharacter.Seenamefor an alternate method of specifying your role. This option can also be used to limit selection when role is chosen randomly. Use a space-separated list of roles and either negate each one or negate the option itself instead. Negation is accomplished in the same manner as with boolean options, by prefixing the option or its value(s) with ‘!’ or “no”. Examples: OPTIONS=role:!arc !bar !kni OPTIONS=!role:arc bar kni There can be multiple instances of theroleoption if they're all negations. If role is not specified, there is no default value; player will be prompted. Cannot be set with the ‘O’ command. Persistent. roguesymset This option may be used to select one of the named symbol sets found within “symbols” to alter the symbols displayed on the screen on the rogue level. rlecomp When writing out a save file, perform run length compression of the map. Not all ports support run length compression. It has no effect on reading an existing save file. runmode Controls the amount of screen updating for the map window when engaged in multi-turn movement (running via shift+direction or control+direction and so forth, or via the travel command or mouse click). The possible values are: .PS teleport .PL teleport update the map after movement has finished; .PL run update the map after every seven or so steps; .PL walk update the map after each step; .PL crawl like walk, but pause briefly after each step. .PE This option only affects the game's screen display, not the actual results of moving. The default is “run”; versions prior to 3.4.1 used “teleport” only. Whether or not the effect is noticeable will depend upon the window port used or on the type of terminal. Persistent. safe_pet Prevent you from (knowingly) attacking your pets (default on). Persistent. safe_wait Prevents you from waiting or searching when next to a hostile monster (default on). Persistent. sanity_check Evaluate monsters, objects, and map prior to each turn (default off). Debug mode only. scores Control what parts of the score list you are shown at the end (for example “scores:5 top scores/4 around my score/own scores”). Only the first letter of each category (‘t’, ‘a’, or ‘o’) is necessary. Persistent. showdamage Whenever your character takes damage, show a message of the damage taken, and the amount of hit points left. showexp Show your accumulated experience points on bottom line (default off). Persistent. showrace Display yourself as the glyph for your race, rather than the glyph for your role (default off). Note that this setting affects only the appearance of the display, not the way the game treats you. Persistent. showscore Show your approximate accumulated score on bottom line (default off). By default, this feature is suppressed when building the program. Persistent. showvers Include the game's version number on the status lines (default off). Potentially useful if you switch between different versions or variants, or you are making screenshots or streaming video. Using thestatuslines:3option is recommended so that there will be more room available for status information, unless you're using NetHack's Qt interface or your terminal emulator window displays fewer than 25 lines. Persistent. Theversinfooption provides limited control over what informationshowversdisplays. silent Suppress terminal beeps (default on). Persistent. sortdiscoveries Controls the sorting behavior for the output of the ‘\’ and ‘’ commands. Persistent. The possible values are: .PS o .PL o list object types by class, in discovery order within each class; default; .PL s list object types bysortlootclassification: by class, by sub-class within class for classes which have substantial groupings (like helmets, boots, gloves, and so forth for armor), with object types partly-discovered via assigned name coming before fully identified types; .PL c list by class, alphabetically within each class; .PL a list alphabetically across all classes. .PE Can be interactively set via the ‘O’ command or via using the ‘m’ prefix before the ‘\’ or ‘’ command. sortloot Controls the sorting behavior of the pickup lists for inventory and #loot commands and some others. Persistent. The possible values are: .PS none \" note: with proportional font, "none" is wider than "full" or "loot" .PL full always sort the lists; .PL loot only sort the lists that don't use inventory letters, like with the #loot and pickup commands; .PL none show lists the traditional way without sorting; default. .PE sortpack Sort the pack contents by type when displaying inventory (default on). Persistent. sortvanquished Controls the sorting behavior for the output of the #vanquished command and also for the #genocided command. Persistent. The possible values are: .PS C .PL t traditional\(emorder by monster level; ties are broken by internal monster index; default; .PL d order by monster difficulty rating; ties broken by internal index; .PL a order alphabetically, first any unique monsters then all the others; .PL c order by monster class, by low to high level within each class; .PL n order by count, high to low; ties are broken by internal monster index; .PL z order by count, low to high; ties broken by internal index. .PE Can be interactively set via the ‘m O’ command or via using the ‘m’ prefix before either the #vanquished command or the #genocided command. sounds Allow sounds to be emitted from an integrated sound library (default on). sparkle Display a sparkly effect when a monster (including yourself) is hit by an attack to which it is resistant (default on). Persistent. spot_monsters Show a message when hero notices a monster (default is off). standout Boldface monsters and “--More--” (default off). Persistent. statushilites Controls how many turns status hilite behaviors highlight the field. If negated or set to zero, disables status hiliting. See “Configuring Status Hilites” for further information. status_updates Allow updates to the status lines at the bottom of the screen (default true). suppress_alert This option may be set to a NetHack version level to suppress alert notification messages about feature changes for that and prior versions (for example “suppress_alert:3.3.1”). symset This option may be used to select one of the named symbol sets found within “symbols” to alter the symbols displayed on the screen. Use “symset:default” to explicitly select the default symbols. terrainstatus Display an extra status condition describing the spot beneath the hero's feet (default off, not supported by all interfaces). time Show the elapsed game time in turns on bottom line (default off). Persistent. timed_delay When pausing momentarily for display effect, such as with explosions and moving objects, use a timer rather than sending extra characters to the screen. (Applies to “tty” and “curses” interfaces only; “X11” interface always uses a timer-based delay. The default is on if configured into the program.) Persistent. tips Show some helpful tips during gameplay (default on). Persistent. tombstone Draw a tombstone graphic upon your death (default on). Persistent. toptenwin Put the ending display in a NetHack window instead of on stdout (default off). Setting this option makes the score list visible when a windowing version of NetHack is started without a parent window, but it no longer leaves the score list around after game end on a terminal or emulating window. travel Allow the travel command via mouse click (default on). Turning this option off will prevent the game from attempting unintended moves if you make inadvertent mouse clicks on the map window. Does not affect traveling via the ‘_’ (“#travel”) command. Persistent. ." .lp travel_debug ." Display intended path during each step of travel (default off). ." Debug mode only. tutorial Play a tutorial level at the start of the game. Setting this option on or off in the config file will skip the query. verbose Provide more commentary during the game (default on). Persistent. versinfo Controls what theshowversoption displays on the status lines. weaponstatus Display an extra status condition which describes currently wielded weapon (default off, not supported by all interfaces). Some possible displayed values are: bare-hnds - no weapon and no gloves; empty-hnd - no weapon but gloves are worn; dual-weps - wielding two weapons. whatis_coord When using the ‘/’ or ‘;’ commands to look around on the map withautodescribeon, display coordinates after the description. Also works in other situations where you are asked to pick a location. The possible settings are: .CC c "compass (“east” or “3s” or “2n,4w”);" .CC f "full compass (“east” or “3south” or “2north,4west”);" .CC m "map (map column x=0 is not used);" .CC s "screen [row,column] (row is offset to match tty usage);" .CC n "none (no coordinates shown) [default]." Thewhatis_coordoption is also used with the “/m”, “/M”, “/o”, and “/O” sub-commands of ‘/’, where the “none” setting is overridden with “map”. whatis_filter When getting a location on the map, and using the keys to cycle through next and previous targets, allows filtering the possible targets. .CC n "no filtering [default]" .CC v "in view only" .CC a "in same area only" The area-filter tries to be slightly predictive\(emif you're standing on a doorway, it will consider the area on the side of the door you were last moving towards. Filtering can also be changed when getting a location with the “getpos.filter” key. whatis_menu When getting a location on the map, and using a key to cycle through next and previous targets, use a menu instead to pick a target. (default off) whatis_moveskip When getting a location on the map, and using shifted movement keys or meta-digit keys to fast-move, instead of moving 8 units at a time, move by skipping the same glyphs. (default off) windowtype When the program has been built to support multiple interfaces, select which one to use, such as “tty” or “X11” (default depends on build-time settings; use “#version” to check). Cannot be set with the ‘O’ command. When used, it should be the first option set since its value might enable or disable the availability of various other options. For multiple lines in a configuration file, that would be the first non-comment line. For a comma-separated list in NETHACKOPTIONS or an OPTIONS line in a configuration file, that would be the rightmost option in the list. wizweight Augment object descriptions with their objects' weight (default off). Debug mode only. zerocomp When writing out a save file, perform zero-comp compression of the contents. Not all ports support zero-comp compression. It has no effect on reading an existing save file. 9.5. Window Port Customization options Here are explanations of the various options that are used to customize and change the characteristics of the windowtype that you have chosen. Character strings that are too long may be truncated. Not all window ports will adjust for all settings listed here. You can safely add any of these options to your configuration file, and if the window port is capable of adjusting to suit your preferences, it will attempt to do so. If it can't it will silently ignore it. You can find out if an option is supported by the window port that you are currently using by checking to see if it shows up in the Options list. Some options are dynamic and can be specified during the game with the ‘O’ command. align_message Where to align or place the message window (top, bottom, left, or right) align_status Where to align or place the status window (top, bottom, left, or right). ascii_map .hw DECgraphics IBMgraphics \" don't hyphenate these If NetHack can, it should display the map using simple characters (letters and punctuation) rather than tiles graphics. In some cases, characters can be augmented with line-drawing symbols; use thesymsetoption to select a symbol set such as DECgraphics or IBMgraphics if your display supports them. Settingascii_mapto True forcestiled_mapto be False. color If NetHack can, it should display color if it can for different monsters, objects, and dungeon features (default on). eight_bit_tty If NetHack can, it should pass eight-bit character values (for example, specified with thetrapsoption) straight through to your terminal (default off). font_map if NetHack can, it should use a font by the chosen name for the map window. font_menu If NetHack can, it should use a font by the chosen name for menu windows. font_message If NetHack can, it should use a font by the chosen name for the message window. font_status If NetHack can, it should use a font by the chosen name for the status window. font_text If NetHack can, it should use a font by the chosen name for text windows. font_size_map If NetHack can, it should use this size font for the map window. font_size_menu If NetHack can, it should use this size font for menu windows. font_size_message If NetHack can, it should use this size font for the message window. font_size_status If NetHack can, it should use this size font for the status window. font_size_text If NetHack can, it should use this size font for text windows. fullscreen If NetHack can, it should try to display on the entire screen rather than in a window. guicolor Use color text and/or highlighting attributes when displaying some non-map data (such as menu selector letters). Curses interface only; default is on. large_font If NetHack can, it should use a large font. map_mode If NetHack can, it should display the map in the manner specified. player_selection If NetHack can, it should pop up dialog boxes, or use prompts for character selection. popup_dialog If NetHack can, it should pop up dialog boxes for input. preload_tiles If NetHack can, it should preload tiles into memory. For example, in the protected mode MS-DOS version, control whether tiles get pre-loaded into RAM at the start of the game. Doing so enhances performance of the tile graphics, but uses more memory. (default on). Cannot be set with the ‘O’ command. scroll_amount If NetHack can, it should scroll the display by this number of cells when the hero reaches the scroll_margin. scroll_margin If NetHack can, it should scroll the display when the hero or cursor is this number of cells away from the edge of the window. selectsaved If NetHack can, it should display a menu of existing saved games for the player to choose from at game startup, if it can. Not all ports support this option. softkeyboard Display an onscreen keyboard. Handhelds are most likely to support this option. splash_screen If NetHack can, it should display an opening splash screen when it starts up (default yes). statuslines Number of lines for traditional below-the-map status display. Acceptable values are 2 and 3 (default is 2). When set to 3, the tty interface moves some fields around and mainly shows status conditions on their own line. A display capable of showing at least 25 lines is recommended. The value can be toggled back and forth during the game with the ‘O’ command. The curses interface does likewise if thealign_statusoption is set to top or bottom but ignoresstatuslineswhen set to left or right. The Qt interface already displays more than 3 lines for status so uses thestatuslinesvalue differently. A value of 3 renders status in the Qt interface's original format, with the status window spread out vertically. A value of 2 makes status be slightly condensed, moving some fields to different lines to eliminate one whole line, reducing the height needed. (If NetHack has been built using a version of Qt older than qt-5.9,statuslinescan only be set in the run-time configuration file or via NETHACKOPTIONS, not during play with the ‘O’ command.) term_cols\ \ and term_rows Curses interface only. Number of columns and rows to use for the display. Curses will attempt to resize to the values specified but will settle for smaller sizes if they are too big. Default is the current window size. tile_file Specify the name of an alternative tile file to override the default. Note: the X11 interface uses X resources rather than NetHack's options to select an alternate tile file. See NetHack.ad, the sample X “application defaults” file. tile_height Specify the preferred height of each tile in a tile capable port. tile_width Specify the preferred width of each tile in a tile capable port tiled_map If NetHack can, it should display the map using tiles graphics rather than simple characters (letters and punctuation, possibly augmented by line-drawing symbols). Settingtiled_mapto True forcesascii_mapto be False. use_darkgray Use bold black instead of blue for black glyphs (TTY only). use_inverse If NetHack can, it should display inverse when the game specifies it. vary_msgcount If NetHack can, it should display this number of messages at a time in the message window. windowborders Whether to draw boxes around the map, status area, message area, and persistent inventory window if enabled. Curses interface only. Acceptable values are .CC 0 "off, never show borders" .CC 1 "on, always show borders" .CC 2 "auto, on if display is at least (24+2)x(80+2) [default]" .CC 3 "on, except forced off for perm_invent" .CC 4 "auto, except forced off for perm_invent" (The 26x82 size threshold for ‘2’ refers to number of rows and columns of the display. A width of at least 110 columns (80+2+26+2) is needed to show borders ifalign_statusis set to left or right.) The persistent inventory window, when enabled, can grow until it is too big to fit on most displays, resulting in truncation of its contents. If borders are forced on (1) or the display is big enough to show them (2), setting the value to 3 or 4 instead will keep borders for the map, message, and status windows but have room for two additional lines of inventory plus widen each inventory line by two columns. windowcolors If NetHack can, it should display all windows of a particular style with the specified foreground and background colors. Windows GUI and curses windowport only. The format is OPTION=windowcolors:style foreground/background where style is one of “menu”, “message”, “status”, or “text”, and foreground and background are colors, either numeric (hash sign followed by three pairs of hexadecimal digits, #rrggbb), one of the named colors (black, red, green, brown, blue, magenta, cyan, orange, bright-green, yellow, bright-blue, bright-magenta, bright-cyan, white, gray, purple, silver, maroon, fuchsia, lime, olive, navy, teal, aqua), or (for Windows only) one of Windows UI colors (trueblack, activeborder, activecaption, appworkspace, background, btnface, btnshadow, btntext, captiontext, graytext, greytext, highlight, highlighttext, inactiveborder, inactivecaption, menu, menutext, scrollbar, window, windowframe, windowtext). wraptext If NetHack can, it should wrap long lines of text if they don't fit in the visible area of the window. 9.6. Crash Report Options Please note that NetHack does not send any information off your computer unless you manually click submit on a form. OPTION=crash_email:email_address OPTION=crash_name:your_name These options are used only to save you some typing on the crash report and #bugreport forms. OPTION=crash_urlmax:bytes This option is used to limit the length of the URLs generated and is only needed if your browser cannot handle arbitrarily long URLs. 9.7. Platform-specific Customization options Here are explanations of options that are used by specific platforms or ports to customize and change the port behavior. altkeyhandling Select an alternate way to handle keystrokes (Win32 tty NetHack only). The name of the handling type is one of “default”, “ray”, “340”. altmeta On systems where this option is available, it can be set to tell NetHack to convert a two character sequence beginning with ESC into a meta-shifted version of the second character (default off). This conversion is only done for commands, not for other input prompts. Note that typing one or more digits as a count prefix prior to a command\(empreceded by n if thenumber_padoption is set\(emis also subject to this conversion, so attempting to abort the count by typing ESC will leave NetHack waiting for another character to complete the two character sequence. Type a second ESC to finish cancelling such a count. At other prompts a single ESC suffices. BIOS Use BIOS calls to update the screen display quickly and to read the keyboard (allowing the use of arrow keys to move) on machines with an IBM PC compatible BIOS ROM (default off, OS/2, PC, and ST NetHack only). rawio Force raw (non-cbreak) mode for faster output and more bulletproof input (MS-DOS sometimes treats ‘^P’ as a printer toggle without it) (default off, OS/2, PC, and ST NetHack only). Note: DEC Rainbows hang if this is turned on. Cannot be set with the ‘O’ command. subkeyvalue (Win32 tty NetHack only). May be used to alter the value of keystrokes that the operating system returns to NetHack to help compensate for international keyboard issues. OPTIONS=subkeyvalue:171/92 will return 92 to NetHack, if 171 was originally going to be returned. You can use multiple subkeyvalue assignments in the configuration file if needed. Cannot be set with the ‘O’ command. video Set the video mode used (PC NetHack only). Values are “autodetect”, “default”, “vga”, or “vesa”. Setting “vesa” will cause the game to display tiles, using the full capability of the VGA hardware. Setting “vga” will cause the game to display tiles, fixed at 640x480 in 16 colors, a mode that is compatible with all VGA hardware. Third party tilesets will probably not work. Setting “autodetect” attempts “vesa”, then “vga”, and finally sets “default” if neither of those modes works. Cannot be set with the ‘O’ command. video_height Set the VGA mode resolution height (MS-DOS only, with video:vesa) video_width Set the VGA mode resolution width (MS-DOS only, with video:vesa) videocolors Set the color palette for PC systems using NO_TERMS (default 4-2-6-1-5-3-15-12-10-14-9-13-11, (PC NetHack only). The order of colors is red, green, brown, blue, magenta, cyan, bright.white, bright.red, bright.green, yellow, bright.blue, bright.magenta, and bright.cyan. Cannot be set with the ‘O’ command. videoshades Set the intensity level of the three gray scales available (default dark normal light, PC NetHack only). If the game display is difficult to read, try adjusting these scales; if this does not correct the problem, try !color. Cannot be set with the ‘O’ command. 9.8. Regular Expressions Regular expressions are normally POSIX extended regular expressions. It is possible to compile NetHack without regular expression support on a platform where there is no regular expression library. While this is not true of any modern platform, if your NetHack was built this way, patterns are instead glob patterns; regardless, this document refers to both as ‘regular expressions.’ This applies to Autopickup exceptions, Message types, Menu colors, and User sounds. 9.9. Configuring Autopickup Exceptions You can further refine the behavior of theautopickupoption beyond what is available through thepickup_typesoption. By placingautopickup_exceptionlines in your configuration file, you can define patterns to be checked when the game is about to autopickup something. autopickup_exception Sets an exception to thepickup_typesoption. Theautopickup_exceptionoption should be followed by a regular expression to be used as a pattern to match against the singular form of the description of an object at your location. In addition, some characters are treated specially if they occur as the first character in the pattern, specifically: .CC < "always pickup an object that matches rest of pattern;" .CC > "never pickup an object that matches rest of pattern." Theautopickup_exceptionrules are processed in the order in which they appear in your configuration file, thus allowing a later rule to override an earlier rule. Exceptions can be set with the ‘O’ command, but because they are not included in your configuration file, they won't be in effect if you save and then restore your game.autopickup_exceptionrules and not saved with the game. Here are some examples: autopickup_exception="<*arrow" autopickup_exception=">*corpse" autopickup_exception=">* cursed*" The first example above will result in autopickup of any type of arrow. The second example results in the exclusion of any corpse from autopickup. The last example results in the exclusion of items known to be cursed from autopickup. 9.10. Changing Key Bindings It is possible to change the default key bindings of some special commands, menu accelerator keys, and extended commands, by using BIND stanzas in the configuration file. Format is key, followed by the command to bind to, separated by a colon. The key can be a single character (“x”), a control key (“^X”, “C-x”), a meta key (“M-x”), a mouse button, or a three-digit decimal ASCII code. For example: BIND=^X:getpos.autodescribe BIND=\:menu_first_page BIND=v:loot Extended command keys You can bind multiple keys to the same extended command. Unbind a key by using “nothing” as the extended command to bind to. You can also bind the “”, “”, and “” keys. Menu accelerator keys The menu control or accelerator keys can also be rebound via OPTIONS lines in the configuration file. You cannot bind object symbols or selection letters into menu accelerators. Some interfaces only support some of the menu accelerators. Mouse buttons You can bind “mouse1” or “mouse2” to “nothing”, “therecmdmenu”, “clicklook”, or “mouseaction”. Special command keys Below are the special commands you can rebind. Some of them can be bound to same keys with no problems, others are in the same “context”, and if bound to same keys, only one of those commands will be available. Special command can only be bound to a single key. count Prefix key to start a count, to repeat a command this many times. Withnumber_padonly. Default is ‘n’. getdir.help When asked for a direction, the key to show the help. Default is ‘?’. getdir.mouse When asked for a direction, the key to initiate a simulated mouse click. You will be asked to pick a location. Use movement keystrokes to move the cursor around the map, then type the getpos.pick.once key (default ‘,’) or the getpos.pick key (default ‘.’) to finish as if performing a left or right click. Only useful when using the #therecmdmenu command. Default is ‘_’. \" underscore getdir.self When asked for a direction, the key to target yourself. Default is ‘.’. getdir.self2 When asked for a direction, an alternate key to target yourself. Default is ‘s’. getpos.autodescribe When asked for a location, the key to toggle autodescribe. Default is ‘#’. getpos.all.next When asked for a location, the key to go to next closest interesting thing. Default is ‘a’. getpos.all.prev When asked for a location, the key to go to previous closest interesting thing. Default is ‘A’. getpos.door.next When asked for a location, the key to go to next closest door or doorway. Default is ‘d’. getpos.door.prev When asked for a location, the key to go to previous closest door or doorway. Default is ‘D’. getpos.help When asked for a location, the key to show help. Default is ‘?’. getpos.mon.next When asked for a location, the key to go to next closest monster. Default is ‘m’. getpos.mon.prev When asked for a location, the key to go to previous closest monster. Default is ‘M’. getpos.obj.next When asked for a location, the key to go to next closest object. Default is ‘o’. getpos.obj.prev When asked for a location, the key to go to previous closest object. Default is ‘O’. getpos.menu When asked for a location, and using one of the next or previous keys to cycle through targets, toggle showing a menu instead. Default is ‘!’. getpos.moveskip When asked for a location, and using the shifted movement keys or meta-digit keys to fast-move around, move by skipping the same glyphs instead of by 8 units. Default is ‘*’. getpos.filter When asked for a location, change the filtering mode when using one of the next or previous keys to cycle through targets. Toggles between no filtering, in view only, and in the same area only. Default is ‘’. \" double quote getpos.pick When asked for a location, the key to choose the location, and possibly ask for more info. When simulating a mouse click after being asked for a direction (see getdir.mouse above), the key to use to respond as right click. Default is ‘.’. getpos.pick.once When asked for a location, the key to choose the location, and skip asking for more info. When simulating a mouse click after being asked for a direction, the key to respond as left click. Default is ‘,’. getpos.pick.quick When asked for a location, the key to choose the location, skip asking for more info, and exit the location asking loop. Default is ‘;’. getpos.pick.verbose When asked for a location, the key to choose the location, and show more info without asking. Default is ‘:’. getpos.self When asked for a location, the key to go to your location. Default is ‘@’. getpos.unexplored.next When asked for a location, the key to go to next closest unexplored location. Default is ‘x’. getpos.unexplored.prev When asked for a location, the key to go to previous closest unexplored location. Default is ‘X’. getpos.valid When asked for a location, the key to go to show valid target locations. Default is ‘$’. getpos.valid.next When asked for a location, the key to go to next closest valid location. Default is ‘z’. getpos.valid.prev When asked for a location, the key to go to previous closest valid location. Default is ‘Z’. 9.11. Configuring Message Types You can change the way the messages are shown in the message area, when the message matches a user-defined pattern. In general, the configuration file entries to describe the message types look like this: MSGTYPE=type "pattern" .PS "pattern" .PL type how the message should be shown; .PL pattern the pattern to match. .PE The pattern should be a regular expression. Allowed types are: .PS "norep" .PL show show message normally; .PL hide never show the message; .PL stop wait for user with more-prompt; .PL norep show the message once, but not again if no other message is shown in between. .PE Here's an example of message types using NetHack's internal pattern matching facility: MSGTYPE=stop "You feel hungry." MSGTYPE=hide "You displaced *." specifies that whenever a message “You feel hungry” is shown, the user is prompted with more-prompt, and a message matching “You displaced .” is not shown at all. The order of the defined MSGTYPE lines is important; the last matching rule is used. Put the general case first, exceptions below them. 9.12. Configuring Menu Colors Some platforms allow you to define colors used in menu lines when the line matches a user-defined pattern. At this time the tty, curses, win32tty and win32gui interfaces support this. In general, the configuration file entries to describe the menu color mappings look like this: MENUCOLOR="pattern"=color&attribute .PS "menu color" .PL pattern the pattern to match; .PL color the color to use for lines matching the pattern; .PL attribute the attribute to use for lines matching the pattern. The attribute is optional, and if left out, you must also leave out the preceding ampersand. If no attribute is defined, no attribute is used. .PE The pattern should be a regular expression. Allowed colors are black, red, green, brown, blue, magenta, cyan, gray, orange, light-green, yellow, light-blue, light-magenta, light-cyan, and white. And no-color, the default foreground color, which isn't necessarily the same as any of the other colors. Allowed attributes are none, bold, dim, italic, underline, blink, and inverse. “Normal” is a synonym for “none”. Note that the platform used may interpret the attributes any way it wants. Here's an example of menu colors using NetHack's internal pattern matching facility: MENUCOLOR="* blessed *"=green MENUCOLOR="* cursed *"=red MENUCOLOR="* cursed *(being worn)"=red&underline specifies that any menu line with “\ blessed\ ” contained in it will be shown in green color, lines with “\ cursed\ ” will be shown in red, and lines with “\ cursed\ ” followed by “(being worn)” on the same line will be shown in red color and underlined. You can have multiple MENUCOLOR entries in your configuration file, and the last MENUCOLOR line that matches a menu line will be used for the line. Note that if you intend to have one or more color specifications match “\ uncursed\ ”, you will probably want to turn theimplicit_uncursedoption off so that all items known to be uncursed are actually displayed with the “uncursed” description. 9.13. Configuring User Sounds Some platforms allow you to define sound files to be played when a message that matches a user-defined pattern is delivered to the message window. At this time the Qt port and the win32tty and win32gui ports support the use of user sounds. The following configuration file entries are relevant to mapping user sounds to messages: SOUNDDIR The directory that houses the sound files to be played. SOUND An entry that maps a sound file to a user-specified message pattern. Each SOUND entry is broken down into the following parts: .PS "sound index" .PL MESG message window mapping (the only one supported in 3.7.0); .PL msgtype optional; message type to use, see “Configuring Message Types” .PL pattern the pattern to match; .PL "sound file" the sound file to play; .PL volume the volume to be set while playing the sound file; .PL "sound index" optional; the index corresponding to a sound file. .PE The pattern should be a regular expression. For example: SOUNDDIR=C:\nethack\sounds SOUND=MESG "This door is locked" "lock.wav" 100 SOUND=MESG hide "^You miss the " "swing.wav" 75 9.14. Configuring Status Hilites Your copy of NetHack may have been compiled with support for “Status Hilites”. If so, you can customize your game display by setting thresholds to change the color or appearance of fields in the status display. The format for defining status colors is: .SD n OPTION=hilite_status:field-name/behavior/color&attributes .ED For example, the following line in your configuration file will cause the hitpoints field to display in the color red if your hitpoints drop to or below a threshold of 30%: .SD n OPTION=hilite_status:hitpoints/<=30%/red/normal .ED (That example is actually specifying red&normal for <=30% and no-color&normal for >30%.) For another example, the following line in your configuration file will cause wisdom to be displayed red if it drops and green if it rises: .SD n OPTION=hilite_status:wisdom/down/red/up/green .ED Allowed colors are black, red, green, brown, blue, magenta, cyan, gray, orange, light-green, yellow, light-blue, light-magenta, light-cyan, and white. And “no-color”, the default foreground color on the display, which is not necessarily the same as black or white or any of the other colors. Allowed attributes are none, bold, dim, underline, italic, blink, and inverse. “Normal” is a synonym for “none”; they should not be used in combination with any of the other attributes. To specify both a color and an attribute, use ‘&’ to combine them. To specify multiple attributes, use ‘+’ to combine those. For example: “magenta&inverse+dim”. Note that the display may substitute or ignore particular attributes depending upon its capabilities, and in general may interpret the attributes any way it wants. For example, on some display systems a request for bold might yield blink or vice versa. On others, issuing an attribute request while another is already set up will replace the earlier attribute rather than combine with it. Since NetHack issues attribute requests sequentially (at least with the tty interface) rather than all at once, the only way a situation like that can be controlled is to specify just one attribute. You can adjust the appearance of the following status fields: center; c c c. title dungeon-level experience-level strength gold experience dexterity hitpoints HD constitution hitpoints-max time intelligence power hunger wisdom power-max carrying-capacity charisma armor-class condition alignment score The pseudo-field “characteristics” can be used to set all six of Str, Dex, Con, Int, Wis, and Cha at once. “HD” is “hit dice”, an approximation of experience level displayed when polymorphed. “experience”, “time”, and “score” are conditionally displayed depending upon your other option settings. Instead of a behavior, “condition” takes the following condition flags: stone, slime, strngl, foodpois, termill, blind, deaf, stun, conf, hallu, lev, fly, and ride. You can use “major_troubles” as an alias for stone through termill, “minor_troubles” for blind through hallu, “movement” for lev, fly, and ride, and “all” for every condition. Allowed behaviors are “always”, “up”, “down”, “changed”, a percentage or absolute number threshold, or text to match against. For the hitpoints field, the additional behavior “criticalhp” is available. It overrides other behavior rules if hit points are at or below the major problem threshold (which varies depending upon maximum hit points and experience level). * “always” will set the default attributes for that field. * “up”, “down” set the field attributes for when the field value changes upwards or downwards. This attribute times out afterstatushilitesturns. * “changed” sets the field attribute for when the field value changes. This attribute times out afterstatushilitesturns. (If a field has both a “changed” rule and an “up” or “down” rule which matches a change in the field's value, the “up” or “down” one takes precedence.) * percentage sets the field attribute when the field value matches the percentage. It is specified as a number between 0 and 100, followed by ‘%’ (percent sign). If the percentage is prefixed with ‘<=’ or ‘>=’, it also matches when value is below or above the percentage. Use prefix ‘<’ or ‘>’ to match when strictly below or above. (The numeric limit is relaxed slightly for those: >-1% and <101% are allowed.) Only four fields support percentage rules. Percentages for “hitpoints” and “power” are straightforward; they're based on the corresponding maximum field. Percentage highlight rules are also allowed for “experience level” and “experience points” (valid when theshowexpoption is enabled). For those, the percentage is based on the progress from the start of the current experience level to the start of the next level. So if level 2 starts at 20 points and level 3 starts at 40 points, having 30 points is 50% and 35 points is 75%. 100% is unattainable for experience because you'll gain a level and the calculations will be reset for that new level, but a rule for =100% is allowed and matches the special case of being exactly 1 experience point short of the next level. * absolute value sets the attribute when the field value matches that number. The number must be 0 or higher, except for “armor-class’ which allows negative values, and may optionally be preceded by ‘=’. If the number is preceded by ‘<=’ or ‘>=’ instead, it also matches when value is below or above. If the prefix is ‘<’ or ‘>’, only match when strictly above or below. * criticalhp only applies to the hitpoints field and only when current hit points are below a threshold (which varies by maximum hit points and experience level). When the threshold is met, a criticalhp rule takes precedence over all other hitpoints rules. * text match sets the attribute when the field value matches the text. Text matches can only be used for “alignment”, “carrying-capacity”, “hunger”, “dungeon-level”, and “title”. For title, only the role's rank title is tested; the character's name is ignored. The in-game options menu can help you determine the correct syntax for a configuration file. The whole feature can be disabled by setting optionstatushilitesto 0. Example hilites: OPTION=hilite_status: gold/up/yellow/down/brown OPTION=hilite_status: characteristics/up/green/down/red OPTION=hilite_status: hitpoints/100%/gray&normal OPTION=hilite_status: hitpoints/<100%/green&normal OPTION=hilite_status: hitpoints/<66%/yellow&normal OPTION=hilite_status: hitpoints/<50%/orange&normal OPTION=hilite_status: hitpoints/<33%/red&bold OPTION=hilite_status: hitpoints/<15%/red&inverse OPTION=hilite_status: condition/major/orange&inverse OPTION=hilite_status: condition/lev+fly/red&inverse 9.15. Modifying NetHack Symbols NetHack can load entire symbol sets from the symbol file. The options that are used to select a particular symbol set from the symbol file are: symset Set the name of the symbol set that you want to load. roguesymset Set the name of the symbol set that you want to load for display on the rogue level. You can also override one or more symbols using the SYMBOLS and ROGUESYMBOLS configuration file options. Symbols are specified as name:value pairs. Note that NetHack escape-processes the value string in conventional C fashion. This means that \ is a prefix to take the following character literally. Thus \ needs to be represented as \. The special prefix form \m switches on the meta bit in the symbol value, and the ^ prefix causes the following character to be treated as a control character. center; l s s l1fCR l1 l. NetHack Symbols \ \ Symbol Name Description \_ \_ \_ \ S_air (air) _ S_altar (altar) S_amulet (amulet) A S_angel (angelic being) a S_ant (ant or other insect) ^ S_anti_magic_trap (anti-magic field) [ S_armor (suit or piece of armor) [ S_armour (suit or piece of armor) ^ S_arrow_trap (arrow trap) 0 S_ball (iron ball) # S_bars (iron bars) B S_bat (bat or bird) ^ S_bear_trap (bear trap) - S_blcorn (bottom left corner) b S_blob (blob) + S_book (spellbook) ) S_boomleft (boomerang open left) ( S_boomright (boomerang open right) S_boulder (boulder) - S_brcorn (bottom right corner) > S_brdnladder (branch ladder down) > S_brdnstair (branch staircase down) < S_brupladder (branch ladder up) < S_brupstair (branch staircase up) C S_centaur (centaur) _ S_chain (iron chain) # S_cloud (cloud) c S_cockatrice (cockatrice) $ S_coin (pile of coins) # S_corr (corridor) - S_crwall (wall) # S_darkroom (dark room) ^ S_dart_trap (dart trap) & S_demon (major demon) * S_digbeam (dig beam) > S_dnladder (ladder down) > S_dnstair (staircase down) d S_dog (dog or other canine) D S_dragon (dragon) ; S_eel (sea monster) E S_elemental (elemental) # S_engrcorr (engraving in a corridor) S_engroom (engraving in a room) / S_expl_tl (explosion top left) - S_expl_tc (explosion top center) \ S_expl_tr (explosion top right) | S_expl_ml (explosion middle left) \ S_expl_mc (explosion middle center) | S_expl_mr (explosion middle right) \ S_expl_bl (explosion bottom left) - S_expl_bc (explosion bottom center) / S_expl_br (explosion bottom right) e S_eye (eye or sphere) ^ S_falling_rock_trap (falling rock trap) f S_feline (cat or other feline) ^ S_fire_trap (fire trap) ! S_flashbeam (flash beam) % S_food (piece of food) { S_fountain (fountain) F S_fungus (fungus or mold) * S_gem (gem or rock) \ S_ghost (ghost) H S_giant (giant humanoid) G S_gnome (gnome) ' S_golem (golem) | S_grave (grave) g S_gremlin (gremlin) - S_hbeam (horizontal beam [zap animation]) # S_hcdbridge (horizontal raised drawbridge) + S_hcdoor (closed door in horizontal wall) . S_hodbridge (horizontal lowered drawbridge) | S_hodoor (open door in horizontal wall) ^ S_hole (hole) @ S_human (human or elf) h S_humanoid (humanoid) - S_hwall (horizontal wall) . S_ice (ice) i S_imp (imp or minor demon) I S_invisible (invisible monster) J S_jabberwock (jabberwock) j S_jelly (jelly) k S_kobold (kobold) K S_kop (Keystone Kop) ^ S_land_mine (land mine) } S_lava (molten lava) } S_lavawall (wall of lava) l S_leprechaun (leprechaun) ^ S_level_teleporter (level teleporter) L S_lich (lich) y S_light (light) # S_litcorr (lit corridor) : S_lizard (lizard) \ S_lslant (diagonal beam [zap animation]) ^ S_magic_portal (magic portal) ^ S_magic_trap (magic trap) m S_mimic (mimic) ] S_mimic_def (mimic) M S_mummy (mummy) N S_naga (naga) . S_ndoor (doorway without door) n S_nymph (nymph) O S_ogre (ogre) o S_orc (orc) p S_piercer (piercer) ^ S_pit (pit) # S_poisoncloud (poison cloud) ^ S_polymorph_trap (polymorph trap) } S_pool (water) ! S_potion (potion) P S_pudding (pudding or ooze) q S_quadruped (quadruped) Q S_quantmech (quantum mechanic) = S_ring (ring) S_rock (boulder or statue) r S_rodent (rodent) ^ S_rolling_boulder_trap (rolling boulder trap) . S_room (floor of a room) / S_rslant (diagonal beam [zap animation]) ^ S_rust_trap (rust trap) R S_rustmonst (rust monster or disenchanter) ? S_scroll (scroll) # S_sink (sink) ^ S_sleeping_gas_trap (sleeping gas trap) S S_snake (snake) s S_spider (arachnid or centipede) ^ S_spiked_pit (spiked pit) ^ S_squeaky_board (squeaky board) 0 S_ss1 (magic shield 1 of 4) # S_ss2 (magic shield 2 of 4) @ S_ss3 (magic shield 3 of 4) * S_ss4 (magic shield 4 of 4) ^ S_statue_trap (statue trap) \ S_stone (solid rock) ] S_strange_obj (strange object) - S_sw_bc (swallow bottom center) \ S_sw_bl (swallow bottom left) / S_sw_br (swallow bottom right) | S_sw_ml (swallow middle left) | S_sw_mr (swallow middle right) - S_sw_tc (swallow top center) / S_sw_tl (swallow top left) \ S_sw_tr (swallow top right) - S_tdwall (wall) ^ S_teleportation_trap (teleportation trap) \ S_throne (opulent throne) - S_tlcorn (top left corner) | S_tlwall (wall) ( S_tool (useful item (pick-axe, key, lamp...)) ^ S_trap_door (trap door) t S_trapper (trapper or lurker above) - S_trcorn (top right corner) # S_tree (tree) T S_troll (troll) | S_trwall (wall) - S_tuwall (wall) U S_umber (umber hulk) \ S_unexplored (unexplored terrain) u S_unicorn (unicorn or horse) < S_upladder (ladder up) < S_upstair (staircase up) V S_vampire (vampire) | S_vbeam (vertical beam [zap animation]) # S_vcdbridge (vertical raised drawbridge) + S_vcdoor (closed door in vertical wall) . S_venom (splash of venom) ^ S_vibrating_square (vibrating square) . S_vodbridge (vertical lowered drawbridge) - S_vodoor (open door in vertical wall) v S_vortex (vortex) | S_vwall (vertical wall) / S_wand (wand) } S_water (water) ) S_weapon (weapon) S_web (web) w S_worm (worm) S_worm_tail (long worm tail) W S_wraith (wraith) x S_xan (xan or other extraordinary insect) X S_xorn (xorn) Y S_yeti (apelike creature) Z S_zombie (zombie) z S_zruty (zruty) \ S_pet_override (any pet if ACCESSIBILITY=1 is set) \ S_hero_override (hero if ACCESSIBILITY=1 is set) .hw sysconf Notes: * Several symbols in this table appear to be blank. They are the space character, except for S_pet_override and S_hero_override which don't have any default value and can only be used if enabled in the “sysconf” file. * S_rock is misleadingly named; rocks and stones use S_gem. Statues and boulders are the rock being referred to, but since version 3.6.0, statues are displayed as the monster they depict. So S_rock is only used for boulders and not used at all if overridden by the more specific S_boulder. 9.16. Customizing Map Glyph Representations Using Unicode If your platform or terminal supports the display of UTF-8 character sequences, you can customize your game display by assigning Unicode codepoint values and red-green-blue colors to glyph representations. The customizations can be specified for use with a symset that has a UTF8 handler within the symbols file such as the enhanced1 set, or individually within your nethack.rc file. The format for defining a glyph representation is: .SD n OPTIONS=glyph:glyphid/U+nnnn/R-G-B .ED The window port that is active needs to provide support for displaying UTF-8 character sequences and explicit red-green-blue colors in order for the glyph representation to be visible. For example, the following line in your configuration file will cause the glyph representation for glyphid G_pool to use Unicode codepoint U+224B and the color represented by R-G-B value 0-0-160: .SD n OPTIONS=glyph:G_pool/U+224B/0-0-160 .ED The list of acceptable glyphid's can be produced by nethack --dumpglyphids. Individual NetHack glyphs can be specified using the G_ prefix, or you can use an S_ symbol for a glyphid and store the custom representation for all NetHack glyphs that would map to that particular symbol. You will need to select a symset with a UTF8 handler to enable the display of the customizations, such as the Enhanced symset. 9.17. Configuring NetHack for Play by the Blind NetHack can be set up to use only standard ASCII characters for making maps of the dungeons. This makes even the MS-DOS versions of NetHack (which use special line-drawing characters by default) completely accessible to the blind who use speech and/or Braille access technologies. Players will require a good working knowledge of their screen-reader's review features, and will have to know how to navigate horizontally and vertically character by character. They will also find the search capabilities of their screen-readers to be quite valuable. Be certain to examine this Guidebook before playing so you have an idea what the screen layout is like. You'll also need to be able to locate the PC cursor. It is always where your character is located. Merely searching for an @-sign will not always find your character since there are other humanoids represented by the same sign. Your screen-reader should also have a function which gives you the row and column of your review cursor and the PC cursor. These co-ordinates are often useful in giving players a better sense of the overall location of items on the screen. NetHack can also be compiled with support for sending the game messages to an external program, such as a text-to-speech synthesizer. If the “#version” extended command shows “external program as a message handler”, your NetHack has been compiled with the capability. When compiling NetHack from source on Linux and other POSIX systems, define MSGHANDLER to enable it. To use the capability, set the environment variable NETHACK_MSGHANDLER to an executable, which will be executed with the game message as the program's only parameter. The most crucial settings to make the game more accessible are: symset:plain Load a symbol set appropriate for use by blind players. menustyle:traditional This will assist in the interface to speech synthesizers. nomenu_overlay Show menus on a cleared screen and aligned to the left edge. number_pad A lot of speech access programs use the number-pad to review the screen. If this is the case, disable thenumber_padoption and use the traditional Rogue-like commands. paranoid_confirmation:swim Prevent walking into water or lava. accessiblemsg Adds direction or location information to messages. spot_monsters Shows a message when hero notices a monster; combine with accessiblemsg. mon_movement Shows a message when hero notices a monster movement; combine with spot_monsters and accessiblemsg. autodescribe Automatically describe the terrain under the cursor when targeting. mention_map Give feedback messages when interesting map locations change. mention_walls Give feedback messages when walking towards a wall or when travel command was interrupted. whatis_coord:compass When targeting with cursor, describe the cursor position with coordinates relative to your character. whatis_filter:area When targeting with cursor, filter possible locations so only those in the same area (eg. same room, or same corridor) are considered. whatis_moveskip When targeting with cursor and using fast-move, skip the same glyphs instead of moving 8 units at a time. nostatus_updates Prevent updates to the status lines at the bottom of the screen, if your screen-reader reads those lines. The same information can be seen via the “#attributes” command. showdamage Give a message of damage taken and how many hit points are left. 9.18. Global Configuration for System Administrators If NetHack is compiled with the SYSCF option, a system administrator should set up a global configuration; this is a file in the same format as the traditional per-user configuration file (see above). This file should be named sysconf and placed in the same directory as the other NetHack support files. The options recognized in this file are listed below. Any option not set uses a compiled-in default (which may not be appropriate for your system). .lp WIZARDS\ =\ A space-separated list of user names who are allowed to play in debug mode (commonly referred to as wizard mode). A value of a single asterisk (*) allows anyone to start a game in debug mode. .lp SHELLERS\ =\ A list of users who are allowed to use the shell escape command (!). The syntax is the same as WIZARDS. .lp EXPLORERS\ =\ A list of users who are allowed to use the explore mode. The syntax is the same as WIZARDS. .lp MSGHANDLER\ =\ A path and filename of executable. Whenever a message-window message is shown, NetHack runs this program. The program will get the message as the only parameter. .lp MAXPLAYERS\ =\ Limit the maximum number of games that can be running at the same time. .lp SUPPORT\ =\ A string explaining how to get local support (no default value). .lp RECOVER\ =\ A string explaining how to recover a game on this system (no default value). .lp SEDUCE\ =\ 0 or 1 to disable or enable, respectively, the SEDUCE option. When disabled, incubi and succubi behave like nymphs. .lp CHECK_PLNAME\ =\ Setting this to 1 will make the EXPLORERS, WIZARDS, and SHELLERS check for the player name instead of the user's login name. .lp CHECK_SAVE_UID\ =\ 0 or 1 to disable or enable, respectively, the UID (used identification number) checking for save files (to verify that the user who is restoring is the same one who saved). The following four options affect the score file: .lp PERSMAX\ =\ Maximum number of entries for one person. .lp ENTRYMAX\ =\ Maximum number of entries in the score file. .lp POINTSMIN\ =\ Minimum number of points to get an entry in the score file. .lp PERS_IS_UID\ =\ 0 or 1 to use user names or numeric userids, respectively, to identify unique people for the score file. .lp HIDEUSAGE\ =\ 0 or 1 to control whether the help menu entry for command line usage is shown or suppressed. .lp MAX_STATUENAME_RANK\ =\ Maximum number of score file entries to use for random statue names (default is 10). .lp ACCESSIBILITY\ =\ 0 or 1 to disable or enable, respectively, the ability for players to set S_pet_override and S_hero_override symbols in their configuration file. .lp PORTABLE_DEVICE_PATHS\ =\ 0 or 1 Windows OS only, the game will look for all of its external files, and write to all of its output files in one place rather than at the standard locations. .lp DUMPLOGFILE\ =\ A filename where the end-of-game dumplog is saved. Not defining this will prevent dumplog from being created. Only available if your game is compiled with DUMPLOG. Allows the following placeholders: .in +4n .PS %M .PL %% literal ‘%’ .PL %v version (eg. “3.7.0-0”) .PL %u game UID .PL %t game start time, UNIX timestamp format .PL %T current time, UNIX timestamp format .PL %d game start time, YYYYMMDDhhmmss format .PL %D current time, YYYYMMDDhhmmss format .PL %n player name .PL %N first character of player name .PE .in -4n .lp LIVELOG\ =\ A bit-mask of types of events that should be written to the livelog file if one is present. The sample sysconf file accompanying the program contains a comment which lists the meaning of the various bits used. Intended for server systems supporting simultaneous play by multiple players (to be clear, each one running a separate single player game), for displaying their game progress to observers. Only relevant if the program was built with LIVELOG enabled. When available, it should be left commented out on single player installations because over time the file could grow to be extremely large unless it is actively maintained. .lp CRASHREPORTURL\ =\ If set to https://www.nethack.org/links/cr-37BETA.html and support is compiled in, brings up a browser window pre-populated with the information needed to report a problem if the game panics or ends up in an internally inconsistent state, or if the #bugreport command is invoked. 10. Scoring NetHack maintains a list of the top scores or scorers on your machine, depending on how it is set up. In the latter case, each account on the machine can post only one non-winning score on this list. If you score higher than someone else on this list, or better your previous score, you will be inserted in the proper place under your current name. How many scores are kept can also be set up when NetHack is compiled. Your score is chiefly based upon how much experience you gained, how much loot you accumulated, how deep you explored, and how the game ended. If you quit the game, you escape with all of your gold intact. If, however, you get killed in the Mazes of Menace, the guild will only hear about 90% of your gold when your corpse is discovered (adventurers have been known to collect finder's fees). So, consider whether you want to take one last hit at that monster and possibly live, or quit and stop with whatever you have. If you quit, you keep all your gold, but if you swing and live, you might find more. If you just want to see what the current top players/games list is, you can type nethack -s all on most versions. 11. Explore mode NetHack is an intricate and difficult game. Novices might falter in fear, aware of their ignorance of the means to survive. Well, fear not. Your dungeon comes equipped with an “explore” or “discovery” mode that enables you to keep old save files and cheat death, at the paltry cost of not getting on the high score list. There are two ways of enabling explore mode. One is to start the game with the-Xcommand-line switch or with theplaymode:exploreoption. The other is to issue the “#exploremode” extended command while already playing the game. Starting a new game in explore mode provides your character with a wand of wishing in initial inventory; switching during play does not. The other benefits of explore mode are left for the trepid reader to discover. 11.1. Debug mode Debug mode, also known as wizard mode, is undocumented aside from this brief description and the various “debug mode only” commands listed among the command descriptions. It is intended for tracking down problems within the program rather than to provide god-like powers to your character, and players who attempt debugging are expected to figure out how to use it themselves. It is initiated by starting the game with the-Dcommand-line switch or with theplaymode:debugoption. For some systems, the player must be logged in under a particular user name to be allowed to use debug mode; for others, the hero must be given a particular character name (but may be any role; there's no connection between “wizard mode” and the Wizard role). Attempting to start a game in debug mode when not allowed or not available will result in falling back to explore mode instead. .hn Credits The original hack game was modeled on the Berkeley UNIX rogue game. Large portions of this document were shamelessly cribbed from A Guide to the Dungeons of Doom, by Michael C. Toy and Kenneth C. R. C. Arnold. Small portions were adapted from Further Exploration of the Dungeons of Doom, by Ken Arromdee. NetHack is the product of literally scores of people's work. Main events in the course of the game development are described below: Jay Fenlason wrote the original Hack, with help from Kenny Woodland, Mike Thome, and Jon Payne. Andries Brouwer did a major re-write while at Stichting Mathematisch Centrum (now Centrum Wiskunde & Informatica), transforming Hack into a very different game. He published the Hack source code for use on UNIX systems by posting that to Usenet newsgroup net.sources (later renamed comp.sources) releasing version 1.0 in December of 1984, then versions 1.0.1, 1.0.2, and finally 1.0.3 in July of 1985. Usenet newsgroup net.games.hack (later renamed rec.games.hack, eventually replaced by rec.games.roguelike.nethack) was created for discussing it. Don G. Kneller ported Hack 1.0.3 to Microsoft C and MS-DOS, producing PC HACK 1.01e, added support for DEC Rainbow graphics in version 1.03g, and went on to produce at least four more versions (3.0, 3.2, 3.51, and 3.6; note that these are old Hack version numbers, not contemporary NetHack ones). R. Black ported PC HACK 3.51 to Lattice C and the Atari 520/1040ST, producing ST Hack 1.03. Mike Stephenson merged these various versions back together, incorporating many of the added features, and produced NetHack version 1.4 in 1987. He then coordinated a cast of thousands in enhancing and debugging NetHack 1.4 and released NetHack versions 2.2 and 2.3. Like Hack, they were released by posting their source code to Usenet where they remained available in various archives accessible via ftp and uucp after expiring from the newsgroup. Later, Mike coordinated a major re-write of the game, heading a team which included Ken Arromdee, Jean-Christophe Collet, Steve Creps, Eric Hendrickson, Izchak Miller, Eric S. Raymond, John Rupley, Mike Threepoint, and Janet Walz, to produce NetHack 3.0c. NetHack 3.0 was ported to the Atari by Eric R. Smith, to OS/2 by Timo Hakulinen, and to VMS by David Gentzel. The three of them and Kevin Darcy later joined the main NetHack Development Team to produce subsequent revisions of 3.0. Olaf Seibert ported NetHack 2.3 and 3.0 to the Amiga. Norm Meluch, Stephen Spackman and Pierre Martineau designed overlay code for PC NetHack 3.0. Johnny Lee ported NetHack 3.0 to the Macintosh. Along with various other Dungeoneers, they continued to enhance the PC, Macintosh, and Amiga ports through the later revisions of 3.0. Version 3.0 went through ten relatively rapidly released “patch-level” revisions. Versions at the time were known as 3.0 for the base release and variously as “3.0a” through “3.0j”, “3.0\ patchlevel\ 1” through “3.0\ patchlevel\ 10”, or “3.0pl1” through “3.0pl10” rather than 3.0.0 and 3.0.1 through 3.0.10; the three component numbering scheme began to be used with 3.1.0. Headed by Mike Stephenson and coordinated by Izchak Miller and Janet Walz, the NetHack Development Team which now included Ken Arromdee, David Cohrs, Jean-Christophe Collet, Kevin Darcy, Matt Day, Timo Hakulinen, Steve Linhart, Dean Luick, Pat Rankin, Eric Raymond, and Eric Smith undertook a radical revision of 3.0. They re-structured the game's design, and re-wrote major parts of the code. They added multiple dungeons, a new display, special individual character quests, a new endgame and many other new features, and produced NetHack 3.1. Version 3.1.0 was released in January of 1993. Ken Lorber, Gregg Wonderly and Greg Olson, with help from Richard Addison, Mike Passaretti, and Olaf Seibert, developed NetHack 3.1 for the Amiga. Norm Meluch and Kevin Smolkowski, with help from Carl Schelin, Stephen Spackman, Steve VanDevender, and Paul Winner, ported NetHack 3.1 to the PC. Jon W{tte and Hao-yang Wang, with help from Ross Brown, Mike Engber, David Hairston, Michael Hamel, Jonathan Handler, Johnny Lee, Tim Lennan, Rob Menke, and Andy Swanson, developed NetHack 3.1 for the Macintosh, porting it for MPW. Building on their development, Bart House added a Think C port. Timo Hakulinen ported NetHack 3.1 to OS/2. Eric Smith ported NetHack 3.1 to the Atari. Pat Rankin, with help from Joshua Delahunty, was responsible for the VMS version of NetHack 3.1. Michael Allison ported NetHack 3.1 to Windows NT. Dean Luick, with help from David Cohrs, developed NetHack 3.1 for X11. It drew the map as text rather than graphically but included nh10.bdf, an optionally used custom X11 font which has tiny images in place of letters and punctuation, a precursor of tiles. Those images don't extend to individual monster and object types, just replacements for monster and object classes (so one custom image for all “a” insects and another for all “[” armor and so forth, not separate images for beetles and ants or for cloaks and boots). Warwick Allison wrote a graphically displayed version of NetHack for the Atari where the tiny pictures were described as “icons” and were distinct for specific types of monsters and objects rather than just their classes. He contributed them to the NetHack Development Team which rechristened them “tiles”, original usage which has subsequently been picked up by various other games. NetHack's tiles support was then implemented on other platforms (initially MS-DOS but eventually Windows, Qt, and X11 too). The 3.2 NetHack Development Team, comprised of Michael Allison, Ken Arromdee, David Cohrs, Jessie Collet, Steve Creps, Kevin Darcy, Timo Hakulinen, Steve Linhart, Dean Luick, Pat Rankin, Eric Smith, Mike Stephenson, Janet Walz, and Paul Winner, released version 3.2.0 in April of 1996. Version 3.2 marked the tenth anniversary of the formation of the development team. In a testament to their dedication to the game, all thirteen members of the original NetHack Development Team remained on the team at the start of work on that release. During the interval between the release of 3.1.3 and 3.2.0, one of the founding members of the NetHack Development Team, Dr. Izchak Miller, was diagnosed with cancer and passed away. That release of the game was dedicated to him by the development and porting teams. Version 3.2 proved to be more stable than previous versions. Many bugs were fixed, abuses eliminated, and game features tuned for better game play. During the lifespan of NetHack 3.1 and 3.2, several enthusiasts of the game added their own modifications to the game and made these “variants” publicly available: Tom Proudfoot and Yuval Oren created NetHack++, which was quickly renamed NetHack-- when some people incorrectly assumed that it was a conversion of the C source code to C++. Working independently, Stephen White wrote NetHack Plus. Tom Proudfoot later merged NetHack Plus and his own NetHack-- to produce SLASH. Larry Stewart-Zerba and Warwick Allison improved the spell casting system with the Wizard Patch. Warwick Allison also ported NetHack to use the Qt interface. Warren Cheung combined SLASH with the Wizard Patch to produce Slash'EM, and with the help of Kevin Hugo, added more features. Kevin later joined the NetHack Development Team and incorporated the best of these ideas into NetHack 3.3. The final update to 3.2 was the bug fix release 3.2.3, which was released simultaneously with 3.3.0 in December 1999 just in time for the Year 2000. Because of the newer version, 3.2.3 was released as a source code patch only, without any ready-to-play distribution for systems that usually had such. (To anyone considering resurrecting an old version: all versions before 3.2.3 had a Y2K bug. The high scores file and the log file contained dates which were formatted using a two-digit year, and 1999's year 99 was followed by 2000's year 100. That got written out successfully but it unintentionally introduced an extra column in the file layout which prevented score entries from being read back in correctly, interfering with insertion of new high scores and with retrieval of old character names to use for random ghost and statue names in the current game.) The 3.3 NetHack Development Team, consisting of Michael Allison, Ken Arromdee, David Cohrs, Jessie Collet, Steve Creps, Kevin Darcy, Timo Hakulinen, Kevin Hugo, Steve Linhart, Ken Lorber, Dean Luick, Pat Rankin, Eric Smith, Mike Stephenson, Janet Walz, and Paul Winner, released 3.3.0 in December 1999 and 3.3.1 in August of 2000. Version 3.3 offered many firsts. It was the first version to separate race and profession. The Elf class was removed in preference to an elf race, and the races of dwarves, gnomes, and orcs made their first appearance in the game alongside the familiar human race. Monk and Ranger roles joined Archeologists, Barbarians, Cavemen, Healers, Knights, Priests, Rogues, Samurai, Tourists, Valkyries and of course, Wizards. It was also the first version to allow you to ride a steed, and was the first version to have a publicly available web-site listing all the bugs that had been discovered. Despite that constantly growing bug list, 3.3 proved stable enough to last for more than a year and a half. The 3.4 NetHack Development Team initially consisted of Michael Allison, Ken Arromdee, David Cohrs, Jessie Collet, Kevin Hugo, Ken Lorber, Dean Luick, Pat Rankin, Mike Stephenson, Janet Walz, and Paul Winner, with Warwick Allison joining just before the release of NetHack 3.4.0 in March 2002. As with version 3.3, various people contributed to the game as a whole as well as supporting ports on the different platforms that NetHack runs on: Pat Rankin maintained 3.4 for VMS. Michael Allison maintained NetHack 3.4 for the MS-DOS platform. Paul Winner and Yitzhak Sapir provided encouragement. Dean Luick, Mark Modrall, and Kevin Hugo maintained and enhanced the Macintosh port of 3.4. Michael Allison, David Cohrs, Alex Kompel, Dion Nicolaas, and Yitzhak Sapir maintained and enhanced 3.4 for the Microsoft Windows platform. Alex Kompel contributed a new graphical interface for the Windows port. Alex Kompel also contributed a Windows CE port for 3.4.1. Ron Van Iwaarden was the sole maintainer of NetHack for OS/2 the past several releases. Unfortunately Ron's last OS/2 machine stopped working in early 2006. A great many thanks to Ron for keeping NetHack alive on OS/2 all these years. Janne Salmijarvi and Teemu Suikki maintained and enhanced the Amiga port of 3.4 after Janne Salmijarvi resurrected it for 3.3.1. Christian “Marvin” Bressler maintained 3.4 for the Atari after he resurrected it for 3.3.1. The release of NetHack 3.4.3 in December 2003 marked the beginning of a long release hiatus. 3.4.3 proved to be a remarkably stable version that provided continued enjoyment by the community for more than a decade. The NetHack Development Team slowly and quietly continued to work on the game behind the scenes during the tenure of 3.4.3. It was during that same period that several new variants emerged within the NetHack community. Notably sporkhack by Derek S. Ray, unnethack by Patric Mueller, nitrohack and its successors originally by Daniel Thaler and then by Alex Smith, and Dynahack by Tung Nguyen. Some of those variants continue to be developed, maintained, and enjoyed by the community to this day. In September 2014, an interim snapshot of the code under development was released publicly by other parties. Since that code was a work-in-progress and had not gone through the process of debugging it as a suitable release, it was decided that the version numbers present on that code snapshot would be retired and never used in an official NetHack release. An announcement was posted on the NetHack Development Team's official .UR nethack.org website to that effect, stating that there would never be a 3.4.4, 3.5, or 3.5.0 official release version. In January 2015, preparation began for the release of NetHack 3.6. At the beginning of development for what would eventually get released as 3.6.0, the NetHack Development Team consisted of Warwick Allison, Michael Allison, Ken Arromdee, David Cohrs, Jessie Collet, Ken Lorber, Dean Luick, Pat Rankin, Mike Stephenson, Janet Walz, and Paul Winner. In early 2015, ahead of the release of 3.6.0, new members Sean Hunt, Pasi Kallinen, and Derek S. Ray joined the NetHack Development Team. Near the end of the development of 3.6.0, one of the significant inspirations for many of the humorous and fun features found in the game, author Terry Pratchett, passed away. NetHack 3.6.0 introduced a tribute to him. 3.6.0 was released in December 2015, and merged work done by the development team since the release of 3.4.3 with some of the beloved community patches. Many bugs were fixed and some code was restructured. The NetHack Development Team, as well as Steve VanDevender and Kevin Smolkowski, ensured that NetHack 3.6 continued to operate on various UNIX flavors and maintained the X11 interface. Ken Lorber, Haoyang Wang, Pat Rankin, and Dean Luick maintained the port of NetHack 3.6 for MacOS. Michael Allison, David Cohrs, Bart House, Pasi Kallinen, Alex Kompel, Dion Nicolaas, Derek S. Ray and Yitzhak Sapir maintained the port of NetHack 3.6 for Microsoft Windows. Pat Rankin attempted to keep the VMS port running for NetHack 3.6, hindered by limited access. Kevin Smolkowski has updated and tested it for the most recent version of OpenVMS (V8.4 as of this writing) on Alpha and Integrity (aka Itanium aka IA64) but not VAX. Ray Chason resurrected the MS-DOS port for 3.6 and contributed the necessary updates to the community at large. In late April 2018, several hundred bug fixes for 3.6.0 and some new features were assembled and released as NetHack 3.6.1. The NetHack Development Team at the time of release of 3.6.1 consisted of Warwick Allison, Michael Allison, Ken Arromdee, David Cohrs, Jessie Collet, Pasi Kallinen, Ken Lorber, Dean Luick, Patric Mueller, Pat Rankin, Derek S. Ray, Alex Smith, Mike Stephenson, Janet Walz, and Paul Winner. In early May 2019, another 320 bug fixes along with some enhancements and the adopted curses window port, were released as 3.6.2. Bart House, who had contributed to the game as a porting team participant for decades, joined the NetHack Development Team in late May 2019. NetHack 3.6.3 was released on December 5, 2019 containing over 190 bug fixes to NetHack 3.6.2. NetHack 3.6.4 was released on December 18, 2019 containing a security fix and a few bug fixes. NetHack 3.6.5 was released on January 27, 2020 containing some security fixes and a small number of bug fixes. NetHack 3.6.6 was released on March 8, 2020 containing a security fix and some bug fixes. NetHack 3.6.7 was released on February 16, 2023 containing a security fix and some bug fixes. The official NetHack web site is maintained by Ken Lorber at .UR https://www.nethack.org/ . 11.2. Special Thanks On behalf of the NetHack community, thank you very much once again to M. Drew Streib and Pasi Kallinen for providing a public NetHack server at nethack.alt.org. Thanks to Keith Simpson and Andy Thomson for hardfought.org. Thanks to all those unnamed dungeoneers who invest their time and effort into annual NetHack tournaments such as Junethack, The November NetHack Tournament, and in days past, devnull.net (gone for now, but not forgotten). 11.3. Dungeoneers From time to time, some depraved individual out there in netland sends a particularly intriguing modification to help out with the game. The NetHack Development Team sometimes makes note of the names of the worst of these miscreants in this, the list of Dungeoneers: center; c2 c2 c. Adam Aronow Irina Rempt-Drijfhout Mike Gallop Alex Kompel Izchak Miller Mike Passaretti Alex Smith J. Ali Harlow Mike Stephenson Andreas Dorn Janet Walz Mikko Juola Andy Church Janne Salmijarvi Nathan Eady Andy Swanson Jean-Christophe Collet Norm Meluch Andy Thomson Jeff Bailey Olaf Seibert Ari Huttunen Jochen Erwied Pasi Kallinen Bart House John Kallen Pat Rankin Benson I. Margulies John Rupley Patric Mueller Bill Dyer John S. Bien Paul Winner Boudewijn Waijers Johnny Lee Pierre Martineau Bruce Cox Jon W{tte Ralf Brown Bruce Holloway Jonathan Handler Ray Chason Bruce Mewborne Joshua Delahunty Richard Addison Cameron Root Karl Garrison Richard Beigel Carl Schelin Keizo Yamamoto Richard P. Hughey Chris Russo Keith Simpson Rob Menke David Cohrs Ken Arnold Robin Bandy David Damerell Ken Arromdee Robin Johnson David Gentzel Ken Lorber Roderick Schertler David Hairston Ken Washikita Roland McGrath Dean Luick Kestrel Gregorich-Trevor Ron Van Iwaarden Del Lamb Kevin Darcy Ronnen Miller Derek S. Ray Kevin Hugo Ross Brown Deron Meranda Kevin Sitze Sascha Wostmann Dion Nicolaas Kevin Smolkowski Scott Bigham Dylan O'Donnell Kevin Sweet Scott R. Turner Eric Backus Lars Huttar Sean Hunt Eric Hendrickson Leon Arnott Stephen Spackman Eric R. Smith M. Drew Streib Stefan Thielscher Eric S. Raymond Malcolm Ryan Stephen White Erik Andersen Mark Gooderum Steve Creps Fredrik Ljungdahl Mark Modrall Steve Linhart Frederick Roeber Marvin Bressler Steve VanDevender G. Branden Robinson Matthew Day Teemu Suikki Gil Neiger Merlyn LeRoy Tim Lennan Greg Laskin Michael Allison Timo Hakulinen Greg Olson Michael Feir Tom Almy Gregg Wonderly Michael Hamel Tom West Hao-yang Wang Michael Meyer Warren Cheung Helge Hafting Michael Sokolov Warwick Allison Ingo Paschke Mike Engber Yitzhak Sapir