Bug Hall of Fame
Sometimes, bugs appear in NetHack or a variant that break the game in a completely ludicrous way. Such bugs are preserved here for posterity.
Commonly accepted characteristics of Hall of Fame bugs include:
- The gameplay implications of the bug are hilarious in the context of normal play.
- If a "silliness mode" were added to the game, the bug would be re-implemented for the sake of having it in that mode.
- The Vorpal Exploit: The game did not correctly re-roll the d20 it uses when calculating whether a thrown weapon will hit, meaning that the to-hit roll of a thrown weapon would always be the same until the player took some other action to reroll the die (such as making a melee attack). Vorpal Blade also uses the to-hit roll to decide whether it makes a decapitation attack. Together, this allowed the player to melee with Vorpal Blade until getting a decapitation, after which all attacks made by throwing Vorpal Blade would have a guaranteed decapitation, until the next melee attack. Once discovered, this bug was also found to exist in all NetHack variants, including SLASH'EM. In GruntHack, the bug works the same way with weapons that have the vorpal object property.
- NetHack 3.1.0 had a "ludicrous bug" where Yeenoghu's confusion attack would fall through due to a missing break statement, causing it to run the code that handles Death's melee attack. This allowed Yeenoghu to instakill players without magic resistance and drain maximum HP with his melee attacks. This bug went unreported for three major versions of the game because of a misplaced source code comment that made it look like intended behavior. It was removed in 3.4.0.
- Branchport skip: In NetHack 3.4.3, the player could skip most part of the ascension run with the Eye of the Aethiopica, because the branchporting code did not care if their mount was carrying the amulet. The character could drop the amulet, then wait until their pet would pick it up, then quickly mount it and invoke branchporting to sokoban or the mines. The pet would drop the amulet again after a few turns.
- Time distortion bug: In NetHack 3.4.3, sinking into lava would make any action (for example looking in ones' inventory) cost time. This was bug C343-231.
- Amulet delivery service: In Nethack 3.4.3, covetous monsters (for example, Asmodeus), would teleport to the High Priest of Moloch in Moloch's Sanctum, fight and kill them, pick up the Amulet of Yendor, and then teleport back to you. Players would bring a strong covetous monster to the sanctum on purpose and let it fetch the amulet for them. This reduced the time spent in Moloch's Sanctum to about 40 turns, without the character ever having to move away from the upstairs and only having to fight a single monster. This was spoiler bug SC343-19.
- Generalized Sting: A mistake in the new string-handling code caused all attempts to name an item with an artifact name to be accidentally sent down the Sting/Orcrist codepath, meaning that if the player had an item with the same base type as an artifact and gave it the same name, they'd create the artifact.
- AC was changed to Defence, a quantity starting at 0 and increasing. However, when the player's stats were zeroed, the Defence stat was never changed from the default zero. Unfortunately, Defence is stored on the AC scale internally, so the "0" in the player's stat array would actually be interpreted as 0 AC, i.e. 10 Def.
- Tame demons gated in hostile ones when they attacked, causing a lot of grief for players with demon pets.
- Unquitting: if you managed to hang the game while in its post-game state (which is not hard to do), the game would get confused and revert the quit, allowing you to continue to play as if you had saved instead of quitting. With the DYWYPI information, this allowed the player to get free identification, enlightenment, conducts, et cetera, on demand with no impact to the game.
- The originally-deployed version of dNetHack did not correctly handle to-hit bonuses during melee combat. This caused the player's to-hit modifier to increase or decrease by a few points every time they attacked in melee, eventually rolling over from -128 to +127. As a result, during dNetHack's first Junethack outing players experienced runs of 'bad luck' during which their characters were unable to hit targets in melee, followed by runs of 'good luck' during which they couldn't miss.
- Also during dNethack's original Junethack outing, ranged monster spellcasting was implemented in the middle of the tournament due to the author's mistaken belief that it was present in vanilla NetHack, and therefore its absence in dNetHack was due to a bug.
- For almost 2 years, monsters in FIQHack regenerated HP twice as fast as the player, rather than being equally fast. Given how fast players regenerate HP lategame (before FIQHack addressed HP regeneration rate later on), this could get a bit out of hand.
- It used to be possible for samurai player monsters on the samurai quest to read scrolls of genocide and instantly kill the player.
- At one time, reading a non-blessed scroll of earth would cause an infinite number of boulders to fall on you.
- Bones levels from dungeon level 20 or later in the main dungeon could erroneously be saved as being from dungeon level 2. Then, new adventurers could load these bones when they entered dungeon level 2.
- Player speed was completely broken for a while: on each turn, you would get faster and faster with each turn, until you would have around 9 turns of free movement on the 10th turn. But every 11th turn, you would become paralyzed for 11 turns.
- Natural HP regeneration was somehow removed for all characters.
- Artifacts in inventory blasted you twice whenever something checked your inventory.
- The blessed scroll of wishing allowed you to wish for wands with 127 charges in the normal game (this was intended to be possible only in wizard mode).
- The Bell of Opening could fail to generate, making the game unwinnable.
- The version deployed during Junethack 2016 had a bug where most sources of healing, when used on the player, would have a 50% chance of unconditionally healing the player back to full HP. This included the very common scroll of healing, making the game much easier when the player had a high max HP.
- In some old version it used to be possible to get two Amulets of Yendor due to two different boss monsters on Moloch's sanctum both being generated with one. If the player picked up both, then dropped one, level teleportation became possible again, allowing the player to skip the entire ascension run if they wanted. And to top it off, Rodney would not harass the player anymore either.
- Artifacts with the "protection" effect, e.g. the Burned Moth Relay, would give 2 extra points of AC every time the player saved and reloaded. This allowed the player to reach a naked AC of -128, and on the next save it would roll over to +126 (-128, +127, +126).
- AceHacks multiplayer mode would teleport a character to an otherwise inaccessible "waiting room" area above the top Sokoban level on save. When a player restored the game again, the character would be teleported to their old location. Note that this was a literal teleport - if the character was in a shop carrying unpaid items, the shopkeeper would consider it a theft and would be angry when the game was restored.
- In objects.c, the base AC of armor is unintuitively expressed as the value your AC would be if you wore it with no other armor (e.g. plate mail's AC is coded as 3 because it gives -7 to AC, and 10 - 7 = 3). When the devnull tournament added the Waldo Challenge, it added bobble hats which were intended to be useless armor which was only there for flavor. However, it was given an AC of 0 in objects.c, likely because whoever implemented it didn't know that base AC counts down from 10. The effect was that a +0 bobble hat granted 10 AC when worn.