DynaHack

From NetHackWiki
Jump to navigation Jump to search
Screenshot of DynaHack

DynaHack is a variant of NitroHack maintained by tungtn. It features more content (from UnNetHack) and significant changes to its interface and gameplay compared to NetHack.

It can be downloaded ready-to-play on Windows, and can also be compiled to run on OS X and Linux.

It started life as UnNetHack's content and gameplay transplanted onto NitroHack with its resizing ASCII interface, but has also come to roll in parts of NetHack 4, GruntHack, UnNetHackPlus and a few original changes.

DynaHack is available to play on hardfought.org (HDF).

Contents

Major differences to NetHack

  • Over 80 new special level layouts.
  • Revamped Gehennom with less mazes and more caverns and special levels.
  • Auto-resizing ASCII interface with multi-line message box, inventory side-bar, colored statuses and HP/Pw bars.
  • Item action command menus, selectable from inventory.
  • Detailed monster info with AC, resistances, attacks, etc. (press '/' and target with ';').
  • Automatically-tracked dungeon overview (Ctrl-O) and resistances (Ctrl-X).
  • Auto-unlock for doors and boxes, and auto-loot for boxes after auto-unlocking them.
  • Enhanced travel that walks around peaceful monsters and works in Sokoban.
  • Protection from walking into known traps/water/lava (optional).
  • Random magical equipment, e.g. short sword of fire.
  • Cross-training for related weapon skills.
  • Hitting with a weapon may reveal its enchantment.
  • Better ammo stacking and turn-free weapon swapping for ranged combat.
  • Polearms are no longer restricted in melee combat.
  • Responses to infinite pudding farming and throne farming.
  • Plus a whole lot more...

Changelog

DynaHack 0.6.0 (2016-02-17, 25aaf2a)

DynaHack 0.6.0 marks a large departure from the 0.5.x series by introducing quite a few gameplay and content changes aimed at eliminating tedium, improving fairness, and increasing tactical and strategic variety.

As always, changes in DynaHack tend to lean in favor of the player more often than not, so players of all skill levels will find something to appreciate.

Highlights

  • New body armor and shield skills: grants bonus AC and MC; heavier suits of armor and shields get bigger bonuses and train the skills faster.
  • Magic chests! Any item put into a magic chest can be looted out of any other magic chest in the dungeon, placed at set locations. This eliminates tedious stash consolidation and transporting of items to and from stashes and fixed dungeon resources like altars, shops and water.
  • Mazes completely removed from Gehennom!
  • New resistance system: resistances gained from corpses and crowning only provide partial protection.
  • Reflection no longer reflects breaths (except disintegration).
  • Instant petrification completely replaced with delayed petrification: you will always have a few turns to save yourself from instant death.
  • Drawbridge instant death removed: drawbridges can only be destroyed by force bolts when closed, not open.
  • Extra turn before drowning attack instant death. Players upgrading from an older version of DynaHack should adjust their `msgtype` as described in the Configuration section of this changelog.
  • Zombie corpses may revive (lower chance if playing a priest).
  • Sokoban prizes moved to Mines End, making Sokoban much more optional.
  • Nymph level moved into Town branch; Town shops are larger to compensate.
  • Effect of skills on to-hit and damage raised in general.
  • Items that are spawned with a magical property have a much higher chance of being spawned with additional properties.
  • Slings now get damage bonuses from strength and enchantment.
  • Spells can be aborted at direction, position and item prompts without using power or hunger.
  • New `repeat_prefix` keymap and `repeat_num_auto` option for people accustomed to NetHack's classic number key movement scheme.
  • New `msg_per_line` option: Shows each message on a new line in the message area when enabled.
  • Potion color alchemy improved in favor of players, making it more of an alternative to NetHack's alchemy instead of a nerf.
  • Curses on armor, jewelry and eyewear are now revealed when they are worn instead of when trying to take them off.
  • More messages for things that used to happen silently: uncontrolled teleportation, finding secret doors/corridors while searching, items becoming randomly cursed.
  • Iron bars can be destroyed by acid or eaten by certain monsters.

Character

  • Resistances gained from corpses and crowning only provide partial protection, and resistances from your race/role or from worn equipment are immunities (based on L's partial resistance patch). Exact partial resistance effects:
    • fire, cold, shock: half damage
    • sleep: half duration, doubled chance of awakening in case of combat
    • disintegration: 90% chance of resisting
    • poison: half damage, having any protects against other effects
    • As a side effect of this patch, negative AC and half physical damage resistance no longer reduce damage from fire, cold, shock or acid attacks.
  • Reflection no longer reflects breaths; disintegration breath is treated as a beam to prevent unfair deaths due to this change. The breath graphic has been changed accordingly.
  • Changes to skills:
    • New body armor skill:
      • Body armor skill grants bonus AC and MC for suits of body armor based on their weight and capped by your skill, as well as weight reduction for worn body armor.
      • Grants (weight / 50 - 2) bonus AC for body armor capped at +2 at basic, +4 at skilled and +7 at expert.
      • Grants (weight / 100 - 1) minimum MC for body armor capped at MC1 at basic, MC2 at skilled and MC3 at expert.
      • Reduces weight of worn body armor heavier than leather armor (150wt) according to the difference: 25% at basic, 50% at skilled and 75% at expert, e.g. plate mail (450wt) only weighs 225wt at expert skill. This reduced weight does not affect the AC or MC bonuses above.
      • Trains to expert in between 16k and 24k turns; wearing heavier suits of body armor speeds up training.
      • Maximum skill levels:
        • Expert: Knight, Samurai
        • Skilled: Barbarian, Convict, Priest, Ranger, Valkyrie
        • Basic: Archeologist, Caveman, Rogue, Tourist
        • Restricted: Healer, Monk, Wizard
        • Unlike weapon skills, body armor skill always starts at unskilled.
    • New shield skill:
      • Shield skill grants bonus AC and MC for shields based on their weight and base AC, and is capped by your skill.
      • Grants (weight / 20 + base AC) bonus AC for shields capped at +2 at basic, +4 at skilled and +7 at expert.
      • Grants (base AC + [1 if weight > 50]) minimum MC for shields capped at MC1 at basic, MC2 at skilled and MC3 at expert.
      • Trains to expert in between 11.2k and 16.8k turns; wearing heavier shields speeds up training.
      • Maximum skill levels:
        • Expert: Knight, Priest, Valkyrie
        • Skilled: Archeologist, Barbarian, Ranger, Rogue, Samurai
        • Basic: Caveman, Convict, Tourist
        • Restricted: Healer, Monk, Wizard
        • Unlike weapon skills, shield skill always starts at unskilled.
    • Martial arts and bare-handed combat now get to-hit bonuses from skills just as weapons do (from SporkHack).
    • Allow 1-damage hits to still train relevant skills; in NetHack, hitting with a weapon at unskilled gives -2 to damage, so weapons that couldn't roll at least a 4 on damage wouldn't be trained at all!
    • Accelerate heavyshot skill training: hitting with a heavyshot weapon trains the relevant skill by 1dX points similar to its damage multiplier.
    • Training of spellcasting skills restored to NetHack values: 20/80/180 for basic/skilled/expert (was 100/200/400).
    • Effect of skills on to-hit and damage raised in general (from dNetHack):
      • Expert weapon skill gives +5/+3 to-hit/damage (was +3/+2).
      • Expert two-weapon skill gives -2/+2 to-hit/damage (was -3/+1).
      • Skilled riding gives +2 to damage (was +1).
      • Expert riding gives +2/+5 to-hit/damage (was +0/+2).
      • Restricted weapon skill gives -5 to damage (was -2).
    • Feeling more confident in your skills now interrupts multi-turn actions.
    • Unskilled no longer causes thrown/fired projectiles to slip due to low skill level; this is now limited to restricted skill.
    • Allow monks to reach expert skill in shuriken.
  • Increased sling damage: slings now get the strength damage bonus (otherwise reserved for melee) and sling enchantment affects damage of fired projectiles (normally launcher enchantment only affects to-hit); their damage now even competes with thrown daggers!
  • Change effect of luck on to-hit to +(Luck / 3) across the board (previously it was +Luck to everything except melee; from SporkHack).
  • Spells can be aborted at direction, position and item prompts without using power or hunger.
  • Teleport control allows teleportation to be cancelled without using a turn and in the case of deliberate teleports consuming hunger.
  • Punishment (i.e. being attached to a ball and chain) no longer stops you from displacing pets.
  • Movement at low HP (less than 10, or 5 if polymorphed) is stopped at strained (the same encumbrance that causes HP loss on movement) instead of stressed, which simplifies the relationship between encumbrance, HP loss and stopped movement a bit:
    • Before:
      • Stressed
        • cannot move with less than 10 HP (5 if polymorphed)
      • Strained
        • lose 1 HP every 30 turns if moving
        • lose 1 HP every 3 turns if attacking
    • After:
      • Strained
        • cannot move with less than 10 HP (5 if polymorphed)
        • lose 1 HP every 30 turns if moving
        • lose 1 HP every 3 turns if attacking
  • Rogues start with a +1 short sword (was +0).
  • Samurai start with a +3 wakizashi (was +0), which slightly out-damages their starting +0 katana.
  • Player vampires no longer try to drink blood when biting or abuse dexterity while satiated (from UnNetHack).
  • Player vampires may bite petrifying, sliming or disintegrating monsters if stunned, confused or hallucinating (from UnNetHackPlus).
    • Players polymorphed into mind flayers will stop themselves from biting petrifying, sliming and disintegrating monsters, as long as they are not stunned, confused or hallucinating (from UnNetHackPlus).
  • Prevent player vampires from trying and consequently failing to bite shades.
  • Show message when trying and failing to engulf a huge monster while polymorphed as an engulfing monster (from UnNetHackPlus via UnNetHack).
  • Fix C343-238: "(Unix and VMS only) The 'Who are you?' prompt does not accept digits in the response." The official bug description is inaccurate: it's names that START with a digit that aren't accepted by vault guards, and it applies to all platforms.
  • Fix ring of sustain ability blocking -1 strength change when becoming weak from hunger, allowing it to be exploited to gain strength on demand.
  • Fix off-hand weapon properties remaining after ending two-weapon combat.

Dungeon

  • New dungeon feature: magic chests!
    • Any item placed in a magic chest can be looted out of any other magic chest in the dungeon, removing the need to consolidate stashes.
    • Magic chests are placed in set locations near useful resources such as altars, shops and water, reducing the distance that items need to be hauled to such resources. The set locations are:
      • Minetown
      • Sokoban entry level
      • Fort Ludios
      • Quest home level
      • Castle
      • Valley of the Dead
      • Orcus-town
      • Fake Wizard's Tower
    • Magic chests are fixed to the ground and therefore cannot be tipped.
    • Attempting to put a corpse set to revive into a magic chest will revive it immediately, to prevent exploiting them to get rid of such corpses.
  • New trap type: shuriken traps, which only appear in quest levels of certain roles. Replaces dart traps in monk and samurai quests, and also sometimes for ranger and rogue quests.
  • Changes to quest levels:
    • Add guaranteed tinning kit to the Valkyrie quest home level to give players an alternative to eating giant corpses whole for strength and waiting out the satiation outside of the quest portal.
    • Remove squeeze gap in Caveman quest home level.
    • Redesign Ranger quest home level with a more organic layout and wider corridors (from dNetHack, originally by Khor).
      • Redesign Ranger quest goal level with water, trees and an altar (dNetHack).
  • Changes to standard rooms-and-corridors level generation:
    • Grid room level style (from K-Mod).
    • Raise chance of special rooms-and-corridors level style from 10% to 20%.
  • Changes to Medusa's Island:
    • Give the shortsighted flag to new Medusa's Island levels from UnNetHack, to reduce swarming from ravens/snakes turning those levels into glorified Big Rooms with more water.
    • The shield of reflection in the statue of Perseus now has the same chance of being blessed or cursed as any other item, instead of being cursed or uncursed with the probability based on the map encountered.
  • Changes to Gehennom:
    • Mazes completely removed from Gehennom! Both fill levels and filler around special levels consist of lava caverns.
    • Add demon lairs for Geryon, Dispater, and Yeenoghu (from GruntHack).
  • Changes to the Town branch:
    • Nymph level is now guaranteed and appears between the Town surface and filler levels.
      • Nymph level no longer contains traps (squeaky board or otherwise).
      • 90% of spawns on the Nymph level are nymphs and leprechauns.
    • Town surface level has larger shops.
  • Changes to Vlad's Tower:
    • New entrance level to Vlad's Tower with trees, water, vampires, zombies, ravens and a drawbridge entrance leading to the traditional tower levels (from dNetHack).
  • Changes to the End Game:
    • Moving on the Plane of Air is generally much easier, as it now only stops movement when failing a d20 roll against your dexterity (was previously 75% of the time for all characters).
  • Sokoban prizes moved to Mines End; the end of Sokoban now has a guaranteed sack containing 8 rings and wands (the ring and wand on each level has been removed as a result). This makes Sokoban much more optional in DynaHack than it is in NetHack.
  • Remove lava from one of the versions of the Castle level.
  • Levels between Medusa's Island and the Castle are now water caverns instead of lava caverns, and have less evil monsters.
  • Allow magic mapping of the Valley of the Dead and the last Dragon Caves level.
  • Iron bars can be dissolved by acid (from UnNetHack).
  • Destroying iron bars in Sokoban counts against its shortcut conduct.
  • Drawbridge instant death removed: drawbridges can only be destroyed by force bolts when closed, not open.
  • Prevent magic traps from being created above dungeon level 5.
  • Reduce initial scuffing of randomly-placed engravings to increase the chance that they can be read when they're first encountered.
  • Fix the cosmetic issue of horizontally-flipped levels appearing slightly misaligned in the map area.
  • Fix waking monsters level-wide when entering courts, swamps, morgues, zoos and nymph gardens for the first time without stealth; only monsters in the room being entered have a chance of being woken.
  • Fix tracking of upward branches with `#history`, and make a note when entering any new level and not just deeper ones (from NetHack4).

Wishing

  • Wands of wishing are generated with at least one charge (1-3 instead of 0-2, from UnNetHack 5).
  • Players can wish for up to (and including) 100 projectiles (from UnNetHackPlus via UnNetHack).
  • New alternate spellings recognized by the wish parser:
    • "wolfsbane" (sprig of wolfsbane)
    • "scroll of teleport" (scroll of teleportation)

Items

  • New item: silver short sword (SLASH'EM), d6 damage (d8 vs. large), weight 36.
  • Potion color alchemy improved in favor of players, making it more of an alternative to NetHack's alchemy instead of a nerf:
    • All color-based random potion descriptions are now guaranteed to map to an in-game potion. Previously, with 25 random potions and 37 descriptions for them, some colors would fall into the gap, making it impossible to use them in alchemy and cutting out useful mixtures.
    • Potions of full healing, gain level and gain ability are guaranteed to map to secondary colors (i.e. puce, magenta, orange, amber, emerald, dark green) or the browns (i.e. ochre, brown), so they will always be the outcome of some alchemy combinations.
  • More formal identification for items under certain circumstances:
    • Formal ID tin whistles and magic whistles when used.
    • Formal ID magic flutes and magic harps when used.
    • Formal ID enchant armor scrolls when they turn dragon scales into dragon scale mail.
    • Formal ID rings of stealth and elven cloaks when wearing or taking them off gives or takes away stealth, to make them consistent with elven boots.
  • Changes to the Amulet of Yendor:
    • Amulet of Yendor need only be carried to give hints about nearby magic portals, instead of having to wield or wear it (from SporkHack).
    • Amulet of Yendor has a much higher chance of giving hints about nearby magic portals, and may map/detect them if carried in inventory.
    • Amulet of Yendor no longer teleports when dropped.
  • Guarantee a wand of cancellation in the Castle chest that can be used for blanking scrolls and potions.
  • The shield of reflection now weighs 50 (was 75) due to the introduction of the new shield skill.
  • Wielding or unwielding a weapon of stealth identifies the stealth property on that weapon and gives identifying messages similar to wearing other items that grant stealth.
  • Hitting a monster with a weapon of stealth identifies the stealth property on that weapon.
  • Improve stacking of random candles by removing random chance of them being blessed or cursed (from AceHack). Between wax and tallow candles, and blessed, uncursed and cursed status, an inventory could be filled with 6 different candle stacks, even with DynaHack's improved item stacking!
  • Grant +1 to-hit for all short swords (from K-Mod).
  • Allow knife and stiletto as possible tin-opening tools (from K-Mod).
  • Items that are spawned with a magical property have a much higher chance of being spawned with additional properties.
  • The "magical" prefix on items is only omitted once all properties on it have been identified instead of once any of them have been, making it easier to discover items that have more than one property.
  • Show which hand a ring of levitation was on when a sink forcefully removes it.
  • Rings with enchantment +3 or lower no longer have a chance of exploding when charged, and rings at -5 or lower will only explode from cursed charging (from SporkHack).
    • Remove ring destruction from shock damage.
  • Quest artifacts that are spawned at the final level of the Quest will be generated fixed/erodeproofed.
  • Having free action reduces paralysis from using a crystal ball from 1-10 turns down to 1-2.
  • Land mines and beartraps weigh less (200/100 respectively, previously 300/200; from UnNetHackPlus via UnNetHack).
  • Changes to shuriken:
    • Shuriken no longer break when thrown at monsters.
    • Shuriken now weigh 3 (previously 1) and cost 10 zorkmids (previously 5).
  • Crossbow bolts only break half as often as other projectiles when fired at and hitting monsters.
  • Fire, cold and shock immunity prevent item destruction.
    • Wearing a cloak of protection prevents 80% of all item destruction.
  • Fix prefixes like "magical" and "prize" not appearing on rings, wands, spellbooks and iron balls under certain circumstances.
  • Fix C343-146: "Unseen wand of striking becomes known if zapped by unseen monster and it hits a door."
  • Fix wielding of a cockatrice corpse bare-handed while wearing chromatic dragon scales or scale mail not triggering petrification.
  • Fix leaking of descriptions of prizes selected from level memory with far-look after the prize itself has vanished.
  • Fix contents of containers created on special levels not being included in the initial container weight.
  • Fix completely eroded armor being destroyed by further erosion when greased or erodeproofed.
  • Fix crash when item is unequipped or lost while being equipped (from NetHack4).
    • Fix ring worn message being shown after it is forcefully removed by a sink when wearing a ring of levitation over a sink.

Monsters

  • Instant petrification completely replaced with delayed petrification: you will always have a few turns to save yourself from instant death.
  • Drowning attacks give two turns for players to react before instant death (was one turn); a monster "pulls you towards the water" before it drowns you.
  • Zombie corpses may revive (lower chance if playing a priest).
  • All eels in water can now be seen from afar, like other monsters.
  • Metallivores and disintegrators can eat through iron bars (from UnNetHack).
  • Allow Demogorgon to be bribed.
  • Tone back demon bribery amounts inherited from UnNetHack: demons now only ask for 1000 to 2000 gold.
    • Giving within 80% of the money demanded for a demon bribe succeeds between 25% to 75% of the time depending on how close your offer is to the demanded amount.
  • Tone back 1-to-1 initial monster population difficulty inherited from NetHack4: it is now only like that for the first 10 levels, then 1-to-2 for the remainder. This gives a progression similar to that of NetHack.
  • Tone back on the effect of a monster's level on its raw spell damage; otherwise Asmodeus cold spell-casting attack could do over twice the damage of Master Kaen without cold resistance, which is too much even for overprepared characters.
  • Gnomes that spawn with candles will only get a single candle instead of a whole stack of candles.
  • Pets never displace the player from the stairs when entering a level.
  • Ninja have a 50% chance of being spawned with some shuriken.
  • Remove distintegrators.
  • Nymphs always generate asleep (was 80%).
  • Fix monsters getting your racial armor bonuses instead of theirs.

Interface

  • More messages for things that used to happen silently:
    • Show message when teleported without teleport control.
    • Show message when searching finds secret doors or corridors.
    • Show messages for and reveal BUC of items that are randomly cursed by e.g. the Wizard of Yendor or sitting on a throne with bad luck.
    • Show a message of the identity of whistles and instruments when they are discovered on use.
    • Show message when pets or other monsters grow up (from SLASH'EM Extended).
    • Attacking with a weapon of stealth, as well as with a knife while stealthy, gives a message that you "silently hit" or "silently kill" monsters, hinting at options for fighting without awakening nearby monsters. These messages are new, but the mechanic itself is not.
  • Make wearing and taking off messages more descriptive, e.g. "You finish taking off a +0 leather armor" instead of "You finish taking off your suit."
  • Curses on armor, jewelry and eyewear are now revealed when they are worn instead of when trying to take them off.
  • Skill training progress is now visible in the `#enhance` menu, e.g. "long sword [basic] 20%" means the long sword skill is 20% of the way to advancing to skilled.
    • Mark skills that have reached their maximum as "MAX", and show it as soon as the level is reached.
    • Suppress "0%" in `#enhance` menu for untrained skills.
    • Show skill caps in `#enhance` menu, e.g. "long sword [basic / expert]".
    • Show skill slot cost to enhance skills when choosing a skill from the `#enhance` menu, e.g. "Enhance knife to Basic for 1 slot (2 slots left)? [yn] (n)"
  • Show your character's race, role, gender and alignment when asked to enter a name for that character (based on the same change in NetHack4).
  • Highlight lit light sources in item listings, e.g. inventory sidebar.
  • Adjust `safe_water` and `safe_lava` behavior: they only warn of walking into such hazards in your INPUTTED direction, but won't stop you if stunning or confusion causes you to stumble sideways into them.
  • Show the tombstone on death even if skipping disclosure information.
    • Extend the tombstone by a line for longer death causes, e.g. "petrified by kicking a chickatrice corpse".
  • Allow aborting of position prompts for jumping, polearm pounding, grappling hooks, scrolls of stinking cloud (still consumes the scroll), paying with multiple shopkeepers in sight and spells of fireball and cone of cold.
  • Dungeon `#overview` can toggle showing levels with no notable features.
    • Dungeon `#overview` no longer exits after viewing a single level.
  • Make extended command prompt case insensitive, like NetHack's (from NetHack4).
  • Change default corridor character back to `#` in Unicode graphics mode.
  • Show warning level 0 for very weak monsters when the player has a source of warning (previously these monsters were not shown at all).
  • Pressing escape at "--More--" now shows the last messages in the message area instead of simply cutting them off.
  • Improve numpad key recognition for default PuTTY configuration where application keypad mode is enabled by default.
  • Fix the color of the Wizard's Tower walls when viewed from another level using the `Ctrl-O` dungeon overview.
  • Fix "T - take off" not appearing in the item action menu of meat rings.
  • Fix coordinates reported when getting a position from the player.
  • Fix Rogue level graphics leaking onto other levels when Unicode graphics option is set but Unicode support is not detected.
  • Fix ugly borders in PuTTY by replacing ncurses box drawing characters with Unicode box drawing characters.

Configuration

  • New `repeat_prefix` in the `keymap` option: Custom key to begin entering repeat prefixes for commands, e.g. set to "n" so "n20s" searches for 20 turns.
  • New `repeat_num_auto` option: toggle whether or not pressing a number key automatically begins entering repeat prefixes; people who have a habit of using the top-row number keys for diagonal movement can toggle this option off and map those keys to the movement commands under the `keymap` option.
  • New `msg_per_line` option: Shows each message on a new line in the message area when enabled; can improve readability of messages when the message area is large.
  • "* pulls you towards the water!" mapped to MORE action under `msgtype` submenu option for the message given in the new extra turn before monster drowning attacks.
  • Frames and borders now respect the 'graphics' option, using Unicode box drawing characters in Unicode mode, and ASCII replacements in plain mode.

Miscellaneous

  • Scramble some words in messages on April Fools Day (from NAO).
  • Fix end-of-game scores for non-ascending games being doubled like ascending ones.

Technical

  • xlogfile patch (via NetHack 4).
  • Allow certain directories to be customized on game launch:
    • `-H <dir>` to set the data dir (e.g. nhdat, license)
    • `-V <dir>` to set the var data "playground" dir (e.g. xlogfile, bones)
    • `-U <dir>` to set the user dir (e.g. player saves and config files)
  • Set file permissions on *nix-like operating systems (e.g. Linux and OS X) to 644 for player config files, preserved save log files, dumplogs, `logfile`, `xlogfile` and `record`.
  • Rename launch script for *nix-like operating systems (e.g. Linux and OS X) from `dynahack` to `dynahack.sh` to prevent it from overwriting the actual game or confusing and being ignored by the installation system in case the build system is accidentally set with identical `SHELLDIR` and `BINDIR` paths.
  • Replace `LD_LIBRARY_PATH` in `dynahack.sh` *nix-like launch script with an rpath configured on the `dynahack` binary.
  • Allow `INSTALL_BASE` to be passed to the initial cmake invocation to quickly set `BINDIR`, `LIBDIR`, `DATADIR` and `SHELLDIR` to sensible default paths under it.
  • Clean up timer debugging code a bit.
  • Limit name of character to `PL_NSIZ` bytes.
  • Clear and redraw the screen every 100 turns to stop dgamelaunch from replaying the entire session when trying to spectate a game.
  • Improvements to static builds (i.e. build configured with `ALL_STATIC` enabled):
    • `-fPIC` no longer included with static builds.
    • `libnitrohack.a` no longer installed with static builds, since it's already rolled into the game binary.
  • Treat improperly-truncated save files like crashed ones, instead of trying and failing to load/restore them.
  • Verify integrity of timers and light sources attached to monsters and objects to prevent unloadable save files.
    • Fix timers being transferred into timer chains out-of-order (NetHack 4).
  • Fix warning when leaving bones while wielding an attached heavy iron ball.
  • Fix infinite loop when placing a branch entrance on joined cavern levels.
  • Allow SPILL lev_comp command to accept 0 as a size for e.g. breaking holes in cavern walls.
  • Fix some replay desyncs due to uninitialized data.
  • Prevent random chance of same-race polymorph in wizard mode.
  • lev_comp: New `prize` flag for `OBJECT` statements, denoting objects that should be considered a prize of that level; prizes are ignored by monsters, don't fall down holes, are ignored by autopickup, and picking up a prize causes other prizes on that level to vanish.
  • Fix crash in encumbrance display due to weight underflow e.g. when wishing for 12 million (12 with six zeros) loadstones in wizard mode.
  • Fix "bad fruit" warnings when slime mold is in inventory while inventory sidebar is updated while saving bones.
  • Fix handling of end-of-line comments in `DynaHack.conf` and `curses.conf`.
  • Prevent some potential unbounded reads by placing limits on "%s" format specifiers in `scanf()` family functions used while reading save file headers.
  • Prevent infinite looping for disconnected player input by aborting, in case the hangup signal handler doesn't abort for some reason.
  • Force cursor to be visible after quitting the game.
  • Convert inversed 10-minus-AC D&D-style armor values with just the armor's regular AC value in `src/objects.c`.

DynaHack 0.5.5 (2014-01-16, 78d772a)

DynaHack 0.5.5 was a bugfix release for a potential crash with items contained in statues interacting with the timer-related fixes in the previous releases.

Technical

  • Prevent a crash when the timer-related fixes of the past couple of releases touched items contained in statues due to the latter's failure to correctly set their level.

DynaHack 0.5.4 (2014-01-06, 34706ac)

DynaHack 0.5.4 was a hotfix release for a timer-related issue.

Technical

  • Fix lights and timers failing to follow the items they were attached to when the items were moved between levels, causing affected games to fail to load.

DynaHack 0.5.3 (2013-12-24, 32216b3)

DynaHack 0.5.3 was a bugfix release that fixed a panic when loading a game with timed items in the Advent Calendar as well as a few other bugs, and adds the new `darkmsg` option to control whether past messages are darkened.

Character

  • Fix warning when trying to take off merged dragon skin.

Dungeon

  • Prevent the Advent Calendar exit portal from being created in one of its closets (from UnNetHack).

Items

  • Various `#tip` fixes from the same feature in UnNetHack:
    • Tipping a trapped container triggers the trap.
    • Fix tipping of a zero-charge bag of tricks being used as a normal bag.
    • Prevent autopickup from picking up tipped items.
    • Observe cat when tipping boxes dropped by quantum mechanics.

Configuration

  • `darkmsg` option: toggle whether or not older messages are colored dark blue in the message box.

Miscellaneous

  • Fix blank lines being eaten when viewing license and version history in-game.

Technical

  • Fix billing of items in nested containers and crediting of contained gold in the deep recesses of the shop code that could lead those things suddenly and silently becoming shopkeeper property, even if they didn't typically sell them!
  • Fix utilities updating but failing to rebuild the data files that depended on them; stale data files like the ones packaged with DynaHack 0.5.0 should be a thing of the past.
  • Fix crash when positioning a revived monster on entering a level.
  • Fix panic due to timers failing to find the Advent Calendar level during loading (the last level of the ledger in general), preventing affected games from being loaded.

DynaHack 0.5.2 (2013-10-07, 5f067e7)

DynaHack 0.5.2 was a hotfix release that greatly increased save file integrity and ability to recover save files by fixing cases of incomplete data being logged that were overlooked by NitroHack and NetHack4.

Saves

  • Fix systemic oversight in save code ported from NetHack4 that failed to ensure that diffs of the binary save section were being fully written to the log, leading to save corruption.
  • Fix `autopickup_rules` and `msgtype` failing to ensure that changes to them were being fully written to the log, leading to save corruption.

DynaHack 0.5.1 (2013-09-28, a1289c3)

DynaHack 0.5.1 was a hotfix release to fix a packaging mistake with the Windows release that caused special levels to fail to load.

Configuration

  • Disable `darkroom` by default when `darkgray` is also off by default, since it led to ugly dark blue for almost everything not in direct line-of-sight.

Technical

  • Fix a major packaging mistake with the pre-compiled Windows build where certain special level data files had a version number incompatible with the shipped game executable and thus refusing to load them and show a generic full-level maze instead.

DynaHack 0.5.0 (2013-09-18, 65751e0)

DynaHack 0.5.0 is the first public release of DynaHack. It was originally intended to be a port of UnNetHack using NitroHack instead of NetHack 3.4.3 as a base (in fact it was originally named "UnNitroHack", though no version with that name was ever officially released), but has since taken on a life of its own with interface and reliability improvements from NetHack4, highlights from other NetHack variants such as random magical equipment from GruntHack and monster spoiler info from UnNetHackPlus, plus many of its own changes.

UnNetHack itself is a NetHack variant that features more randomness, challenges, levels and fun, rolling in many community patches, selected changes from other NetHack forks like SporkHack and SLASH'EM, and many original changes.

The majority of changes listed below come from UnNetHack. The remainder are sourced according to the following legend:

  • [NEW] = changes originally made for DynaHack specifically
  • [NH4] = changes ported from NetHack4
  • [Gr] = changes ported from GruntHack
  • [UnP] = changes ported from UnNetHackPlus
  • [KMd] = changes ported from K-Mod

Highlights

  • New vampire starting race.
  • New convict starting role.
  • Over 80 new layouts for special levels.
  • Gehennom now has caves, lava and more special levels mixed with its mazes.
  • Changes to Sokoban:
    • Choice of Sokoban prize: bag (holding), cloak (magic resistance or displacement) or amulet (reflection, life saving or ESP).
    • Sokoban is one level shorter, i.e. 3 levels instead of 4.
    • Sokoban luck penalty removed, cheating is tracked as a conduct instead.
  • New branches: Advent Calendar, Town, Black Market, Dragon Caves.
  • New random rooms: nymph gardens, dilapidated armories, pool rooms.
  • New shops: tin shops, instrument shops, pet stores.
  • New terrain types: dead trees, muddy swamps.
  • New items: chromatic dragon scales, chromatic dragon scale mail, gold dragon scales, gold dragon scale mail, iron safes, Thiefbane, rings of gain intelligence/wisdom/dexterity, tinfoil hats, potions of blood/vampire blood, Luck Blade, The Iron Ball of Liberation.
  • New monsters: One-eyed Sam, chromatic dragon, Tiamat, gold dragon, snow ant, vorpal jabberwock, disintegrator, Aphrodite, Cthulhu, giant turtle, wax golem, enormous rat, rodent of unusual size, miner, prison guard, lava demon, inmate, Robert the Lifer, Warden Arriana, locust.
  • [NEW] New mechanics:
    • [NEW] Heavyshot: Certain thrown/fired weapons get a 1dX multiplier to damage instead of multishot.
    • [NEW] Skill cross-training: high level skills accelerate the training of related lesser skills.
  • [Gr] Random magical properties for weapons, armors and jewelry: fire, frost, thirsty (draining), reflection, telepathy, searching, warning, stealth, fumbling, hunger, aggravation, vorpal (blades only), detonation, speed, oilskin, power, dexterity, brilliance, displacement, clairvoyance.
  • [Gr] Add `#tip` command to empty container contents onto the floor, allowing e.g. reaching holy water in a bag when hands are stuck to a cursed two-handed weapon.
  • Randomized dragon appearances.
  • Wishes made less common/numerous, and wishes not from a wand cannot grant magical items.
  • Weak unique monsters made tougher: Vlad the Impaler, Juiblex.
  • Changes to Elbereth:
    • Monsters that now ignore Elbereth: Vlad the Impaler, quest nemesis, all unique demons.
    • Minotaurs now get scared away by Elbereth.
  • Scrolls of gold detection can no longer be used to detect magic portals.
  • Scrolls of genocide made weaker.
  • Bags of holding scatter their contents instead of destroying them when they blow up.
  • Mysterious Force replaced with no-teleport.
  • Fighting wakes up nearby monsters.
  • Limit pudding farming: puddings split by max HP instead of current HP and never leave death drops.
  • Improvements to weaker artifacts: Banes, Heart of Ahriman.
  • Artifact naming bug fixed.
  • Color alchemy: potions mix by description color instead of base potion type.
  • Poison instadeath replaced with max HP damage.
  • [NEW] Colored walls and floors: Use more colors for special levels, terrain and dungeon features; toggle with `mapcolors` option.
  • [NH4] Known intrinsic tracking: reached by pressing `Ctrl-X`.
  • [UnP] Detailed monster info: select monsters or enter their name with `/` to view speed, base AC, resistances, attacks and more.
  • [NH4] Autoexplore: bound to `v` by default.
  • `msgtype` option: force "--More--" for or hide messages based on patterns.
  • [NEW] Show total weight and available slots of inventory.
  • [NEW] Borders change color when low on HP: <75% yellow, <50% orange, <25% red.
  • [NEW] Show number of turns used after multi-turn actions, e.g. "You finish your dressing maneuver. [6 turns]" (toggle with `delay_msg` option).
  • [NEW] Pressing `??` shows quick command key reference, reorganized to show commands by topic instead of alphabetically.
  • [NEW] Show "(very) rotten" on corpses old enough to give food poisoning.
  • [NH4] Neater, more informative AceHack-style status area.
    • Show dungeon name in the status area.
    • [NEW] Show player race in the 3-line status area.

Character

  • New vampire starting race:
    • Can start as barbarians, convicts, rogues and wizards.
    • Can only feed by biting enemies in combat or drinking potions of blood or vampire blood.
    • Always flies, starts with -5 alignment and -1 luck.
    • Vampires stop themselves from biting monsters that are dangerous on contact, e.g. petrify, slime, disintegrate, Riders.
  • New convict starting role:
    • Can be played as humans, orcs and vampires.
    • Starts with a cursed striped shirt, some rocks, a pet rat and chained to a heavy iron ball that they can wield which uses the flail skill.
    • Enters the dungeon on the verge of hunger, but lasts twice as long at hungry and below.
    • Fights Warden Arriana for The Iron Ball of Liberation.
  • Exotic pets:
    • Rogues may start with a pet monkey.
    • Rangers and cavement may start with a pet wolf or winter wolf cub.
    • Tourists may start with a pet baby crocodile.
  • Cap to-hit accuracy to 75% for weapons at unskilled or non-weapon items.
    • [NEW] Remove luck attribute from to-hit calculations since it was skewing them way too much. Monk to-hit penalty when wearing body armor has been reduced to -10 (from -20) to compensate.
  • Items thrown at restricted/unskilled have a higher chance of slipping.
  • Fighting wakes up nearby monsters, with noise reduced by having stealth and/or using light weapons.
  • Increased 'hits' needed to advance skill levels:
    • basic = 100 (was 20)
    • skilled = 200 (was 80)
    • expert = 400 (was 180)
    • master = 800 (was 320)
    • grand master = 1600 (was 500)
  • [NEW] New mechanics:
    • [NEW] Heavyshot: Crossbows, spears, javelins, shuriken and boomerangs get a 1dX multiplier to damage instead of multishot.
      • [NEW] Elves, dwarves and orcs get +1 heavyshot for throwing spears of their matching race.
      • [NEW] Javelins get +1 heavyshot for basic skill and above, so the bonus is 1/2/3/4 (versus 1/1/2/3) for unskilled/basic/skilled/expert.
    • [NEW] Skill cross-training: high level skills accelerate the training of related lesser skills.
      • Short Blades: dagger, knife, short sword
      • Chopping Blades: axe, pick-axe, broadsword
      • Swords: short sword, broadsword, long sword, two-handed sword, scimitar, saber
      • Bludgeons: club, mace, morning star, flail, hammer, quarterstaff
      • Flails: morning star, flail, whip
      • Polearms: quarterstaff, polearm, spear, javelin, trident, lance, unicorn horn
      • Launchers: bow, sling, crossbow
      • Thrown: javelin, sling, dart, shuriken, boomerang
  • Around 1-in-5 items may be randomly removed when bones are left.
  • Allow quest to be entered at experience level 10 (was 14).
  • Extended Conducts: Birth options can be set to declare conducts and set up characters for them appropriately: ascet, athiest, illiterate, pacifist, nudist, thievery, vegan, vegetarian, zen.
  • Track number of times Elbereth is used as a conduct.
  • Track number of bones levels encoutered and show it with conducts.
  • Track only wearing racial armor as a conduct.
  • The chance of instant death when taking poison damage without resistance is replaced with damage to max HP.
  • DYWYPISI patch: Show unknown properties of items between square brackets when identifying inventory on death.
  • Show more info about the character on death.
  • [NEW] Stacks of daggers in initial inventory start quivered.
  • Put "!" next to spells that are about to be forgotten.
  • 25 strength grants +7 bonus to damage (was +6).
    • Double damage bonus/penalty for two-handed weapons.
  • Grant 1 extra AC for every piece of armor matching your race.
  • Killing your quest leader unlocks the stairs to your role's quest, in case they are angered and won't allow you in otherwise.
  • Reduce instances of amnesia:
    • Scroll of amnesia replaced with scroll of flood.
    • Mind flayers no longer cause amnesia.
    • Only Cthulhu can still inflict amnesia.
  • [NH4] Swapping weapons with `x` is instant instead of taking a turn.
  • [NH4] Allow the quest to be entered before turn 2000; mostly of interest to speedrunners.

Dungeon

  • Heck^2 patch: Mixes caves and special levels with Gehennom's mazes.
    • Gehennom filler levels may sometimes be lava caves.
    • Give hints when walking near the Vibrating Square.
    • Allow digging beams to dig more than one wall in Gehennom, like in the rest of the dungeon.
  • New branches:
    • Advent Calendar, appears early in the dungeon in the days of December leading up to Christmas, with closets with small prizes that unlock for each day.
    • Town, an upward branch whose entrance is just below Sokoban's, and whose end has many random shops.
    • Black Market, a huge megastore reached from a hidden portal near the depth of Medusa's Island, owned by One-eyed Sam who wields Thiefbane.
    • Dragon Caves, found deep in Gehennom, consists of open caves with trees, water, swamps and home to many dragons.
  • Changes to Sokoban:
    • Choice of Sokoban prize: bag (holding), cloak (magic resistance or displacement) or amulet (reflection, life saving or ESP). Picking up one will cause the others to vanish.
      • Sokoban prize have their base item type obscured until picked up to prevent identification meta-gaming.
    • Sokoban is now only 3 levels (was 4).
    • Sokoban luck penalty removed, cheating is tracked as a conduct instead.
  • New Nymph Level, with many nymphs, trees, fountains, squeaky board traps and unique nymph Aphrodite.
  • New level layouts for existing special levels:
    • 6 new layouts for Big Room.
    • 2 new layouts for the Castle.
    • 2 new layouts for Medusa's Island.
    • 27 new layouts for Sokoban.
    • 2 new layouts for Fort Ludios.
    • New layout for Minetown: Orcish Town, walled off by iron bars, the inhabitants killed and has many orcs.
    • New layouts for the Valley of the Dead and the lairs of Asmodeus, Baalzebub and Orcus.
    • Moloch's Sanctum now has lava, iron bars and drawbridges.
  • New random rooms:
    • nymph gardens with trees and fountains
    • dilapidated armories with puddings, `R` class monsters and damaged weapons and armors
    • pool rooms ringed with lava or water
  • New shops:
    • tin shops with tins and sometimes an ice box with corpses
    • instrument shops
    • pet stores with figurines, whistles, tripe, leashes and saddles.
  • New terrain types:
    • dead trees
    • muddy swamps
  • Randomized order for Elemental Planes instead of being fixed to Earth, Air, Fire and Water.
  • Sokoban prize randomized: either final level layout can provide an amulet of reflection or bag of holding.
  • Special levels may appear flipped horizontally or vertically.
    • [NEW] Exclude Sokoban from level flipping.
  • Drawbridge closing fails 1 in 5 times.
    • Huge monsters prevent the drawbridge from closing.
  • Dungeon growths:
    • Trees may grow near other trees over time.
    • Trees randomly drop fruits and eucalyptus leaves.
    • Herbs on the ground and kelp fronds in water may grow over time.
  • New effects when dropping rings of teleportation, polymorph, polymorph control and warning down sinks.
  • Level teleporting beyond the end of a dungeon branch performs a random level teleport instead of teleporting to the lowest possible level from your current position. The main dungeon is an exception: teleporting too deep will place you in the Valley of the Dead.
  • Doors no longer resist being opened.
  • Standard levels may have iron bars.
  • Describe how far players fall down holes and trapdoors instead of giving no message.
  • [NEW] Occasionally connect rooms in standard levels with corridors in star or loop formations.
  • [NEW] Occasionally generate split rooms in standard levels.
  • Entering a co-aligned temple on the Astral Plane will no longer cause monsters to flee.
  • [NEW] Medusa's Island is guaranteed to have a shield of reflection in the statue of Perseus.
  • [NEW] To prevent throne farming, `#loot` on a throne while confused takes time and has a chance of making the throne vanish.
  • Give portal to Fort Ludios a much higher chance of appearing in the dungeon.

Wishing

  • Only wands of wishing can grant wishes for magical items. Other sources (thrones, fountains, magic lamps) can only provide non-magical items.
  • Random wish effect when sitting on thrones replaced with restoration of lost attributes.
  • Wands of wishing are created with less charges; they come recharged once, and have 0 to 2 charges instead of 1 to 3.
  • Due to randomized dragons, wishes for specific dragon armors only work when they have already been formally identified. Wishes for dragon armor by their randomized names are still granted as usual.
  • Prevent wishes from accidentally being cancelled when pressing escape.
  • Allow magic lamps to be wished for and come from polymorphed tools.
  • [UnP] Wishing no longer sets prayer timeout.

Artifacts

  • New artifact: Thiefbane, two-handed sword, 10% chance of beheading `@` class monsters, held by One-eyed Sam, cannot be wished for, reverts to a regular weapon when dropped in bones.
  • Improvements to Bane artifacts:
    • Bane artifacts now have a 1-in-6 chance of cancelling the target monster.
    • Bane artifacts now warn of their target monster.
    • Wielding Demonbane prevents demons from summoning other demons.
    • Wielding Trollsbane grants hungerless regeneration.
    • Wielding Giantslayer grants 18/** strength.
  • The Heart of Ahriman now grants displacement and faster power regeneration instead of stealth.
  • Vorpal Blade does +1d8 damage vs. all monsters (was +1).
  • Fix the artifact naming bug, where trying to give mundane items the names of artifacts could trivially reveal the otherwise randomized base item type.
  • Prevent Magicbane from cancelling monster inventories.
  • [NEW] The Wizard of Yendor can no longer steal your quest artifact; only your quest nemesis can steal it now.
    • [NEW] Carrying your role's quest artifact grants magic resistance.

Items

  • New items:
    • Chromatic dragon scales and chromatic dragon scale mail, grants reflection, resists fire, cold, sleep, disintegration, poison, acid and petrification.
    • Gold dragon scales and gold dragon scale mail, provide permanent light when worn.
    • Iron safes that can be unlocked with stethoscopes.
    • Rings of gain intelligence, wisdom and dexterity.
    • Tinfoil hats that block spellcasting, telepathy, clairvoyance, psychic blasts and the psi bolt monster spell.
    • Potion of blood, provides a bit of nutrition for vampires.
    • Potion of vampire blood, provides nutrition and heals vampires, polymorphs player into a vampire/vampire lord/vampire bat permanently while angering lawful gods.
    • Striped shirt, causes shopkeepers to deny entry to shops if they see it worn, even if you return without it or cover it.
    • Luck Blade, artifact, intelligent chaotic broadsword with +d5 to-hit and +d6 to damage versus all monsters, guaranteed first sacrifice gift for convicts.
    • The Iron Ball of Liberation, convict quest artifact, intelligent neutral 300wt heavy iron ball, grants magic resistance, displacement and automatic searching when carried, grants intrinsic phasing when invoked, chains itself to you when touched or invoked.
  • [Gr] Random magical properties for weapons, armors and jewelry: fire, frost, thirsty (draining), reflection, telepathy, searching, warning, steatlh, fumbling, hunger, aggravation, vorpal (blades only), detonation, speed, oilskin, power, dexterity, brilliance, displacement, clairvoyance.
  • [Gr] Add `#tip` command to empty container contents onto the floor, allowing e.g. reaching holy water in a bag when hands are stuck to a cursed two-handed weapon.
  • Changes to the Amulet of Yendor:
    • Amulet of Yendor may teleport if dropped.
    • Astral escape: Alternate endings if the Amulet of Yendor is invoked on a high altar on the Astral Plane.
    • Mysterious Force removed, holding the Amulet of Yendor instead prevents teleportation.
    • Unique monsters no longer fight each other for the Amulet of Yendor.
  • Changes to weapons:
    • [NEW] Polearms and lances can be used in melee even when unmounted.
    • [NEW] Allow spellcasting when hands are stuck to a cursed quarterstaff.
    • [NEW] Weapon enchantment has a small chance of being revealed on each hit, based on skill and doubled if it is of your race.
  • Changes to armor:
    • Dragon scales now only give 1 AC (was 3), dragon scale mail only give 5 AC (was 9).
    • Dragon scale mail reverts to dragon scales when cancelled.
    • Armor-damaging effects will destroy completely eroded armor.
    • Shields of reflection made 50% heavier and non-magical for wishing purposes.
  • Changes to amulets:
    • Cursed amulets of life saving may fail 1-in-4 times.
    • Amulet of unchanging can no longer be polymorphed.
  • Changes to rings:
    • Auto-ID rings of regeneration when put on at less than max HP.
    • Auto-ID rings dropped down sinks when they give a unique message.
  • Changes to tools:
    • Magic markers are created with 20-79 charges (was 30-99).
    • Improve crystal balls:
      • Blessed crystal balls are easier to use, checking d13 vs. intelligence rather than d20.
      • [NEW] Using a blessed crystal ball or having 18 intelligence prevents it from exploding.
    • Unicorn horns no longer restore lost attributes.
    • Bags of tricks have many more random effects and may be used like sacks once they run out of charges.
    • Candles are more abundant:
      • Add guaranteed candles to the Big Room.
      • Add abandoned lighting shops to Orcus-town.
      • Gnomes may be created with candles.
      • Wax golems drop candles on death.
    • Bags of holding scatter their contents instead of destroying them when they blow up.
    • Stethoscopes can be used to identify eggs on the ground.
    • [NH4] Light source fuel is revealed if the item is identified or gives a fuel-consuming message.
    • [NH4] Mark cursed light sources as cursed when they fail to light.
    • [NH4] Weight of Candelabrum of Invocation includes its attached candles.
  • Changes to scrolls:
    • Scrolls of gold detection detects a random item class instead of traps when read while confused.
    • Scrolls of genocide made weaker:
      • Blessed scrolls of genocide work on a single monster (like old uncursed scrolls).
      • Uncursed scrolls of genocide only kill all of a single monster on the current level.
      • [NEW] Fix new genocide behavior when used against shape changers.
    • Replace scroll of amnesia with scroll of flood that creates pools of water around you when read.
    • Boulders dropped by a scroll of earth hit engulfing monster when read while engulfed.
    • Uncursed scrolls of magic mapping also reveal secret doors, blessed scrolls do that and also detect objects.
    • [NEW] Scrolls of identify always identify 3 to 6 items regardless of blessing or curses, encouraging using them on-the-go instead of saving them en masse for a giant stash, increasing early-game options and reducing back-tracking.
    • [NEW] Water damage may destroy scrolls.
    • [NEW] Scrolls of enchant weapon and enchant armor give the warning vibration for overenchantment for all weapons and armor, not just elven gear.
  • Changes to potions:
    • Color alchemy: potions mix by description color instead of base potion type.
    • Potions of gain ability only raise one attribute, and BUC increases the number of retries when it selects an attribute already at its maximum.
    • [NEW] Pure potions can be dipped into diluted potions of the same type to combine them into a single stack of diluted potions.
    • [NEW] Remove the alchemy tax: dipping potions into each other to create new potions no longer costs a potion.
    • [NEW] Quaffing a potion of enlightenment while polymorphed into a dragon or baby dragon formally identifies its matching scales and scale mail.
  • Changes to wands:
    • Zapping a cursed wand has a 1-in-30 chance of blowing it up (was 1-in-100).
    • Applying wands no longer breaks wands; `#invoke` must be used instead.
    • [NH4] Zapping or engraving an empty wand identifies its charges.
    • [NH4] Formal-ID wands when they give a unique message when engraved.
    • [NEW] Probing a dragon or baby dragon formally identifies its matching scales and scale mail.
  • Sale/price quotes for shops vary per-shopkeeper instead of per-pickup/drop, so no more need to repeatedly pickup and drop items in shops.
  • Many new random item descriptions.
  • Items described as "ceramic/porcelain/quartz" may break if subjected to force.
  • Cursed items may hit the ceiling and fall on your head when thrown.
  • Increase chance of non-zero enchantments on random items.
  • Fix long-standing NetHack bug where uncursed and blessed food weren't getting their grace period against rotting.
  • [NEW] Fix wielded potions of blindness granting resistance to certain sources of blindness, e.g. exploding yellow lights and archon gazes.
  • Prevent the Book of the Dead from being destroyed when falling into lava.
  • [NH4] Charging an item reveals its number of remaining charges.
  • [NEW] Allow items to stack regardless of differing knowledge bits (e.g. BUC, enchantment, rustproofing), improving inventory space usage and allowing things like arrows found to stack with identical ones dropped on an altar.
    • [NH4] Prevent named items from stacking with unnamed items.
  • [NH4] Fix turn usage when applying items, including C343-353: Aborting key or lock pick with escape uses a turn.
  • [NEW] Show "(very) rotten" on corpses old enough to give food poisoning.
  • [NEW] Make rustproofing on items known by default, since all cases of it existing or being applied to items are non-random and known by the player.

Monsters

  • New monsters:
    • One-eyed Sam: Shopkeeper of the Black Market, wields Thiefbane, can break boulders in her way.
    • Chromatic dragon: Rare dragons that resist multiple elements, have random breaths, not a valid random polymorph form, may be found in the new Dragon Caves branch.
    • Tiamat: New name for the caveman quest nemesis.
    • Gold dragon: Permenantly lit fire-breathing dragon, drops scales that are also a permanent source of light.
    • Snow ant: Fire ants but cold.
    • Vorpal jabberwock: Purple `J`, more powerful jabberwock with four 3d10 attacks, two of which have a 1-in-40 chance of decapitating.
    • Disintegrator: Bright green `R`, slow, tunnels, disintegrates weapons/armor/you on contact.
    • Aphrodite: Unique purple `n`, found on the Nymph Level.
    • Cthulhu: Unique purple `h`, now holds the Amulet of Yendor instead of the high priest of Moloch, sucks brains, grabs, gazes to confuse, very high hit dice, high speed and armor, dies as a stinking cloud and revives when it dissipates.
    • Giant turtle: Bright green `:`, blocks vision like a boulder.
    • Wax golem: Has a fire attack, drops candles on death.
    • Enormous rat, rodent of unusual size: upgraded rats.
    • Miner, prison guard, lava demon, inmate: convict quest monsters.
    • Robert the Lifer: convict quest leader.
    • Warden Arriana: convict quest nemesis.
    • Locust: Gray `a`, normal speed, has a sickness-causing sting.
  • Changes to Elbereth:
    • Monsters that now ignore Elbereth: Vlad the Impaler, quest nemesis, all unique demons.
    • Minotaurs now get scared away by Elbereth.
  • Randomized dragon appearances: name and color of dragons map to different elements each game.
    • New dragon names: tatzelworm, amphitere, draken, lindworm, sarkany, sirrush, wyvern, guivre.
  • Changes to Riders:
    • Hide the names of the Riders if further than two spaces away.
    • Riders can smash boulders that block their path.
    • Riders get 108-164 HP (was 10-80).
  • Changes to the Wizard of Yendor:
    • Killing the Wizard of Yendor for the first time increases difficulty of spawned monsters.
    • [NEW] The Wizard of Yendor can no longer steal your quest artifact.
  • Changes to Medusa:
    • Hallucination protects from the petrification of Medusa.
  • Changes to weak unique monsters:
    • Make Vlad the Impaler tougher: 28/24/-8 hit dice, speed and AC (was 14/18/-3), sees invisible.
    • Juiblex take half his current HP when zapped with digging from within instead of being reduced to 1 HP.
  • Changes to demon princes:
    • Raised gold needed to bribe demon princes to 3000-20000 gold (previously you could bribe them with 10 gold if you put the rest in your bag).
  • Changes to quest leaders:
    • Angered quest leaders can smash boulders that block their path.
    • Angered quest leaders can be killed to unlock quest stairs.
    • Quest leaders have more HP than before.
  • Changes to floating eyes:
    • Floating eyes are now colored bright green instead of dark blue.
    • [NEW] Remove 1-in-4 chance of floating eyes paralyzing for 127 turns, halve duration to (hit dice + 1)d35 instead of (hit dice + 1)d70 otherwise.
    • [NEW] High wisdom limits floating eye paralysis to 10 * (20 - wisdom) turns, with a minimum of 10 turns.
  • Changes to mind flayers:
    • Mind flayer attacks no longer cause amnesia.
  • Changes to muggers:
    • Muggers can steal items.
  • Changes to nurses:
    • Nurse hits heal players wielding non-weapon items as if they were empty handed, to match the message given if they are chatted to.
  • Changes to puddings:
    • Limit pudding farming: puddings split by max HP instead of current HP and never leave death drops.
  • Changes to wraiths:
    • [NEW] Wraiths no longer follow you across levels, removing the tedious wraith-luring tactic, particularly given how slow they are.
  • Fix Astral Call bug which could be used to discover the alignments of the high priests from afar and therefore trivially identify the otherwise randomly shuffled temple alignments.
  • Cancelled trolls no longer revive with e.g. the wand, Magicbane, Trollsbane.
  • Monsters can zap wands of cancellation at you to cancel an item in your open inventory.
  • Eating oily corpses may cause slippery fingers.
  • Grudge patch: Monsters that are enemies with each other may fight amongst themselves.
  • Give more HP to big monsters and less HP to small monsters.
  • [NH4] Make initial monster population on levels independent of the character's experience level.
  • [NEW] Fix C343-415: Mail daemons can be created when populating special levels with demons.
  • [NEW] Don't highlight detected monsters.

Interface

  • [NEW] Colored walls and floors: Use more colors for special levels, special rooms, terrain and dungeon features; toggle with `mapcolors` option.
  • [NH4] Known intrinsic tracking: reached by pressing `Ctrl-X`.
    • [NH4] Show attributes in `Ctrl-X` screen.
    • [NH4] Allow kills, genocides/extinctions and conducts to be viewed from the `Ctrl-X` screen.
    • [NH4] Allow `#enhance` to be reached from `Ctrl-X` as well.
  • [UnP] Detailed monster info: select monsters or enter their name with `/` to view speed, base AC, resistances, attacks and more.
  • [NH4] Autoexplore: bound to `v` by default.
    • [NEW] Stop travel and autoexplore when becoming hungry or weak from hunger.
    • [NEW] Prevent starting autoexplore when weak from hunger.
    • [NEW] Fix travel and autoexplore stopping for unrevealed mimics.
    • [NEW] Travel and autoexplore walk around peaceful and stationary monsters.
    • [NEW] Travel and autoexplore ignore previously-read engravings.
    • [NEW] Stop and disallow running, travel and autoexplore when stunned or confused.
    • [NEW] Travel treats boulders like walls in Sokoban and thus no longer tries to move through them.
  • Improvements to item action menus:
    • [NEW] Use mnemonic accelerators for item action menus, e.g. "w - wield".
    • [NEW] Shorter entries, e.g. "wield" instead of "Wield foo as your weapon".
    • [NEW] Add action to view detailed item description.
    • Add action to pay for shop items.
    • [NEW] Add action to name or call an item.
    • [NEW] Add action to allow weapons to be unwielded.
    • [NEW] Add action to `#adjust` the inventory letter of an item.
  • Improvements to status area:
    • [NH4] AceHack-style status area: neater and more informative.
      • [NEW] Show player race in the 3-line status area.
      • Show dungeon name in status area (`dungeon_name` option).
    • [NEW] Status colors: Status effects are highlighted in different colors.
    • [NEW] Attributes color red or green when they decay or improve.
    • [NEW] Turn count changes color based on number of turns since last input.
    • [NH4] Show levitation, unarmed and trapped as statuses.
      • Show "Elbereth" as a status when standing on an active Elbereth space.
      • [NH4] Show "Beartrap" as a status.
      • [NEW] Show "Swamp" as a status when standing in a muddy swamp.
      • [NH4] Show even more statuses: greasy (hands), lame (hurt legs), "strangle", "petrify" (while turning into stone), "held" (by a grabber), "fly".
    • [NH4] Status area describes map location under the cursor when targeting.
  • Unvisited stairs and portals that lead to other branches are noted in `#overview`.
  • Accept "mindflayer" as an alternate spelling of "mind flayer" so monks don't accidentally end up genociding themselves.
  • Stop multi-turn actions if HP or power are fully restored.
    • [NEW] Don't stop autoexplore or travel when HP or Pw are fully restored.
  • `#chat` automatically chooses adjacent monster if there is only one.
  • Autopickup remembers dropped items and leaves them dropped.
  • Piles of multiple items are highlighted on the map.
  • Dim locations outside of line-of-sight.
  • `#loot` no longer asks for which container when there is only one choice.
    • [NEW] `#loot` and `#tip` show multiple container choices in a menu instead of asking for each container in sequence (optional with `paranoid_loot`).
  • `Ctrl-E` to write Elbereth in the the dust with your fingers or wielded athame.
  • Give a reason when the player is unable to two-weapon.
  • Ask when trying to walk into a known trap (optional with `paranoid_trap`).
  • Automatically open doors when walking into them.
    • Automatically ask to unlock doors when walking into locked doors.
  • Spiked pits can be manually entered like pits using `>`.
    • [NEW] Pressing `<` will attempt to escape traps.
  • Being hit by cancellation gives a message: "You are covered in sparkling lights!"
  • Dropping a container on an altar reveals blessings and curses of its contents.
  • Pressing `ff` fires in same direction as last time.
  • [NEW] Quiver thrown items picked up by autopickup and `pickup_thrown` if quiver is empty.
  • [NEW] Fix graphical display of the Rogue level when viewed from `#overview`.
  • [NEW] Suggest `#wipe` when blinded by venom or thrown cream pies.
  • [NEW] Pressing `M` cycles backwards through monsters while targeting.
    • [NEW] Pressing `@` moves the cursor the player while targeting.
    • [NEW] Pressing `^` cycles through traps while targeting.
  • Fix crash at naming dialog with items with very long type names.
  • [NEW] Give corpses the right colors in item lists (e.g. inventory) instead of all being brown.
  • Show level annotation when restoring game.
  • hp_notify: Show message after turns when damage is taken, e.g. "[HP-2=10]" when taking 2 damage and being left with 10 HP.
  • Improve handling of counts in item selection menus.
  • [NEW] "Auto-select every item" now respects other item picking criteria at multi-drop/loot prompts instead of ignoring them.
  • [NEW] Show total weight and available slots of inventory.
  • [NEW] Borders change color when low on HP: <75% yellow, <50% orange, <25% red.
  • [NEW] Show number of turns used after multi-turn actions, e.g. "You finish your dressing maneuver. [6 turns]" (toggle with `delay_msg` option).
  • [NEW] Pressing `??` shows quick command key reference, reorganized to show commands by topic instead of alphabetically.
  • [NEW] `Ctrl-P` message log starts scrolled to the most recent messages.
  • [NEW] Show boulders as `0` by default instead of backtick.
  • [NH4] Recolor/underline monsters with duplicate colors.
  • [NH4] Show "--More--" by screenfuls instead of by lines.
  • [NEW] Don't (ask to) attack peaceful monsters when walking into them by default (customize with `safe_peaceful` option).
  • [NH4] Show number of available skill slots in `#enhance` menu.
    • [NEW] Show skill slot cost to advance skills in `#enhance` menu.
  • [NH4] Stop player from walking into water and/or lava (both optional with new `paranoid_water` and `paranoid_lava` options), can be overridden using `m-<direction>`.
  • Display known-unlocked doors in bright green, known-locked doors in red and known-trapped doors in cyan.
  • Highlight item piles on the map.
  • [NH4] Use red backgrounds for level exits, e.g. stairs, ladders, portals.
  • [NH4] Use comma for selecting the ground for various actions:
    • [NH4] Allow `a,` as a shortcut for `#loot`.
    • [NH4] Require `q,` to quaff from sinks and fountains.
    • [NH4] Comma shows floor items when eating/tinning/sacrificing.
      • [NEW] Show floor items in a menu when eating/tinning/sacrificing.
  • Automatically ask to unlock when looting a locked container.
    • [NEW] Perform `#loot` after successfully auto-unlocking a container, allowing looting to be done with one smooth sequence of inputs.
  • [NEW] Show remaining spell memory in spell lists.
  • [NH4] Wrap long lines of text in various prompts.
  • [NH4] `#adjust`ing an item onto itself merges all identical items onto it once more.
  • [NEW] Improve input handling of counts during prompts.
    • [NEW] Allow `#adjust` to accept a count when it asks for a destination letter, enabling stack-splitting with the `#adjust` command when it is used via the item action menu.

Configuration

  • `msgtype` option: force "--More--" for or hide messages based on patterns.
    • [NEW] Provide a good set of default `msgtype` rules based on stth's MSGTYPE configuration on nethack.alt.org that stops on dangerous or easily missed but important messages.
  • Move option values next to their names instead of across from their descriptions.
  • Show a dialog for all selected options to prevent accidental toggling.
  • Improve prompt safety for certain game-changing actions:
    • `paranoid_hit` option asks for full "yes" to confirm hitting peaceful monsters.
    • `paranoid_quit` option asks for full "yes" when quitting a game or entering explore mode.
    • `paranoid_chat` option to restore classic chat direction behavior.
    • [NEW] `paranoid_loot` option to restore classic loot container behavior.
  • `paranoid_trap` option: control prompt before walking into known traps.
  • `paranoid_loot` option: toggle menu versus sequential prompts when `#loot` and `#tip` have multiple containers to choose from.
  • `pickup_dropped` option: force autopickup to grab explicitly dropped items instead of leaving them.
  • More sensible option defaults across the board.
  • `darkroom` option: toggles dimming of locations outside of line-of-sight.
    • [Gr] Dim remembered items, walls and other dungeon features outside of line-of-sight when `darkroom` is enabled.
  • `spellorder` option: set order for letters used by spell menus.
    • [NEW] Permit letter ranges for `spellorder`, e.g. "a-zA-Z".
  • `pilesize` option: control how many items must be at a stepped-on location before the "things that are here" dialog is shown on small terminals.
  • `mapcolors` option: toggles extra colors for special levels and terrain.
  • [NEW] `menumatch` option: Allow multi-drop/loot item menus to only show e.g. cursed armor when picking "cursed" and "armor", instead of all cursed items and all armor.
  • [NEW] `safe_peaceful` option: Control what happens when moving into peaceful monsters.
  • [KMd] Change `sparkle` option to a number that controls the speed of sparkle animations; higher values make it faster, zero disables sparkle entirely.
  • [NEW] `paranoid_water` and `paranoid_lava` options: control NetHack4's safeties for walking into water and lava respectively.
  • [NEW] `hilite_peaceful` option: toggle if non-tame but peaceful monsters are highlighted the same way pets are for `hilite_pet`.
  • [NEW] Remove the `blink` option.
  • [NH4] Allow remapping of default in-game colors to terminal colors with `terminal.conf` in the configuration directory.
  • [NEW] Remove `use_inverse` option.
  • [NEW] Remove `blink` option, since it was ugly, distracting and no longer needed with the new highlighting and display changes.
  • [NEW] `classic_status` option: Use classic NetHack-style status area instead of the new AceHack-style status area.
  • [NEW] `dungeon_name` option: toggle showing full dungeon name or just the depth in the status area.
  • [NEW] Allow `msgheight` option to be set to 0 to automatically resize to fill the whole terminal height.

Saves

  • [NH4] Put dump files under the game's config directory instead of in the user's home directory in Linux.
    • [NEW] Put dump files in the game's config directory instead of in Documents in Windows.
  • [NH4] Store save deltas of the binary save segment in the save file log on a per-turn basis. This makes save files much larger, but also makes them almost impossible to lose to corruption. Each diff line begins with a `~`.

Miscellaneous

  • Experimental tutorial mode:
    • [NEW] Rewrite and add command summaries to tutorial messages.
    • [NEW] Split tutorial review menu into sections.
    • [NEW] Indicate the latest tutorial message seen in the review menu.
  • Reduced score given when killing the same type of monster repeatedly.
  • Many new random engravings.
  • Many new random hallucinated monster descriptions.
  • Certain items can be read for flavor text: gold, tins, cans of grease, candy bars, credit cards, magic markers, the Orb of Fate, Stormbringer, runed items.
  • Characters that start on Towel Day (May 25) start with a complementary towel.
  • Cream pies get a different name on Pi Day (March 14) or Pi Approximation Day (July 22).
  • Breaking a camera may free the picture-painting demon (homunculus) inside.
  • Randomize creator deity in intro text.
  • Szechuan tins may have a free fortune cookie.
  • Monk-specific greetings when saving and restoring.
  • Hallucination gives random currencies instead of "zorkmids" in messages.
  • [NEW] Fix fleeing monsters getting stuck in corridors.
  • [NH4] Provide more informative in-game database for items.
  • [NH4] Don't allow changing to explore mode mid-game.

Technical

  • [NEW] Add support and detailed instructions for building the game under Cygwin (Linux-like translation layer for Windows) and MinGW (native Windows support).
  • [NEW] Add instructions for building the game for OS X.
  • New bytecode-driven special level compiler.
    • Allow `x` to denote 'transparent' map tiles.
    • Allow changing map regions of non-trivial shapes with selections that can be combined and intersected.
    • Curly braces for commands in rooms, subrooms, IF conditions, containers.
    • Rooms can set doors on a random wall.
    • Evaluate values on a stack instead of using raw structs.
    • Allow much more fine-grained control over OBJECT and MONSTER.
      • Permit custom inventories for MONSTER.
    • More control statements: LOOP, SWITCH.
    • Support rudimentary sub-routines.
    • Control over spawned monster generation on levels with MON_GENERATION.
    • Custom level sounds with SOUNDS command.
    • Permit loading from other files with INCLUDE.
    • New WALLWALK command to surround the inner wall with a chosen terrain.
    • Support for variables: string, int, coord, region, mapchar, monst, obj, array.
      • SHUFFLE command for arrays, replacing RANDOM_OBJECTS, RANDOM_PLACES and RANDOM_MONSTERS.
    • Support for arithmetic expressions.
      • Support dice notation for values, e.g. 1d6.
  • [NEW] Bring back SHOPTYPE environment variable for wizard mode room testing.
  • Add `#rooms` command for testing room layouts in wizard mode.
  • Allow up to five possible bones files per level.
  • [NEW] Fix handling of ball and chain when blind with NitroHack's layered level memory.
  • [NEW] Fix appearance of ridden monsters with NitroHack's display system.
  • [NEW] Fix many crashes and other instances of incorrect behavior due to NitroHack's global `level` pointer being incorrectly used.
  • [NEW] Fix the notorious infinite travel bug.
  • [NH4] Eliminate object migration, deliver objects directly to their destination level instead.
  • [NEW] Ensure correct colors are used for PDCurses no matter how it is built.
  • [NH4] Make the `redraw` command actually redraw the screen.

NitroHack 4.0.4 (2012-02-19, 21b9774)

NitroHack 4.0.4 is mostly a bugfix release. It is the last public release of NitroHack by Daniel Thaler, though it exists on a separate development branch to mainline on its primary Git repository at github.com/DanielT/NitroHack.

It is this version on the stable 4.0.x that DynaHack is based on.

Interface

  • Fix crash when item action menu is cancelled with escape.
  • Fix muddled shop labelling in the `#overview`.

Miscellaneous

  • Fix crash after activating a figurine.
  • Fix random character selection.

NitroHack 4.0.3 (2012-02-13, 3b9a876)

NitroHack 4.0.3 is mostly a bugfix release.

Interface

  • Use more common Unicode characters for branch stairs on Windows.
  • Fix display on Japanese Windows by using the correct code page.

Configuration

  • Fix crash when keymap dialog was brought up a second time.

Miscellaneous

  • Fix C343-72: Confusing messages when you stop levitating while on a flying steed (from UnNetHack).
  • Fix C343-174: Drum of earthquake gives inappropriate message (from UnNetHack).

Technical

  • Fix miscompile of `nh_restore_game` with -O3 due over-eager optimization that ignored the setjmp/longjmp game exit system.
  • Fix bones file-related saving and loading bugs.

NitroHack 4.0.2 (2012-02-05, 22c6cf3)

Dungeon

  • Make the Vibrating Square a trap which becomes visible once it has been discovered (from AceHack).

Items

  • Formal-ID jumping boots, potions of oil and starting inventory at the beginning of each game (from AceHack).
  • Allow 'I' to select unidentified items in loot and menu drop item lists.
  • Show shop price of items while walking over them without #chatting (from UnNetHack).

Interface

  • Unify controls for equipping jewelry with those of armor by allowing `W`ear/`T`ake off as substitutes for `P`ut on/`R`emove.
  • Change default key bindings to AceHack-style:
    • `#adjust`: `Alt-A`
    • `#annotate`: `Ctrl-F`
    • `#chat`: `c` or `Alt-C`
    • `close`: unbound
    • `#enhance`: `Alt-E` or `Ctrl-E`
    • `#invoke`: `V` or `Alt-I`
    • `#monster`: `M` or `Alt-M`
    • `#pray`: `Alt-P`
    • `#twoweapon`: `Alt-2` or `X`
    • `version` and `verhistory`: unbound
    • `wait`: `.` (space no longer bound)
  • Make `#invoke` work like in AceHack, where it can invoke, rub or be used to break wands.
  • Improve space usage of the sidebar for floor items and inventory.

Configuration

  • Change `unicode.conf` format: default entry lines start with `#` while modified lines must start with `!` to be recognized.
  • Provide a default set of autopickup rules that picks up gold, scrolls, rings, wands and potions while leaving unpaid shop items.

Saves

  • Offer to delete damaged save files both locally and online.
  • Improve reliability of attempting to restore corrupted save files.

Network

  • Show the version number of the game running on the server on the main menu.
  • Add an account menu to change password and email address.

Miscellaneous

  • Fix C343-246: Wands can be wrested in zero turns by attempting to engrave with it while levitating.
  • Fix C343-129: Cancelling objects in or near a shop.
  • Fix C343-176: Disintegration breath on monsters is not handled properly (i.e. a steed killed and saved by life saving can be re-saddled).
  • Many bug fixes, particularly to the save system.

Technical

  • Extend drawing info so that dungeon backgrounds can contain two types of symbols: walls/floor/etc. and interactive terrain like stairs/altars/etc.

NitroHack 4.0.1 (2012-01-23, 855e8e6)

NitroHack 4.0.1 is mostly a bugfix release.

Interface

  • Put location info under instead of over the inventory in the sidebar.
  • Start a new line in the message area for every action.
  • Show "Bad command" in the message area rather than in a dialog.
  • Improve shift+hjkl cursor movement near the edges of the map.

Network

  • Allow server admins to send messages to all connected clients.

Miscellaneous

  • Many bug fixes.

NitroHack 4.0.0 (2012-01-15, f980165)

This is the first version of NitroHack publicly released by Daniel Thaler.

Interface

  • New Curses-based text mode interface:
    • Unicode display with customizable display chars
    • arrow/function key recognition
    • multi-line message box
    • improved status area
    • permanent inventory sidebar (if terminal is wide enough)
  • Item action menus: Press the item letter in the inventory for common actions.
  • Main menu that lets you choose to start a new game, restore an existing one, change options and more.
  • Fully configurable keymap.
  • Arrow keys move the cursor in text prompts instead of abruptly killing them.
  • Item lists are sorted based on name, enchantment, BUC, erodeproofing, erosion and greasing.
  • Item class headings show the symbol in item lists.
  • The 'uncursed' status of an item can be explicitly shown in item names.
  • Unexplored locations, stone and dark rooms can be customized to display as different characters on the map.
  • Naming of monsters, items and item types occur via a menu.
  • Much longer message history (20k messages!).
  • Removing armor/jewelry always gives a prompt even if there's only one choice.
  • Open doors automatically when walking into them.

Options

  • All options can now be changed in-game instead of using ".nethackrc".
  • Changes to options made in-game are saved and restored. The underlying files can be found under `~/.config/NitroHack/`.
  • Birth options: Options like ELBERETH, REINCARNATION, SEDUCE and bones files, which previously could only be changed by rebuilding the game, can now be set on beginning a new game.

Items

  • Spellbooks can be read early (while memory of the spell still exists).

Monsters

  • Monsters can be cycled by pressing `m` while targeting.
  • Extinct species are shown along with genocided ones when games end.

Autopickup

  • Autopickup Rules: fine-grained rules to control what autopickup picks up or leaves, e.g. the following rules pick up all food and lizard corpses but no other corpses:
   1. IF name matches "*lizard*" AND type is "food": < GRAB
   2. IF name matches "*corpse*" AND type is "food":   LEAVE >
   3. IF type is "food":                             < GRAB

If no matching rule is found the item is left behind by default.

  • `pickup_thrown` option: Thrown or fired items will always be picked up automatically.

Dungeon overview

  • `#overview`/Ctrl-O shows a list of all remembered levels and major features. Choosing a level views your memory of it.
  • You can `#annotate` a level to describe it, which appears in the overview.

Character history tracking

  • Heroic deeds are logged and can be viewed with the `#history` command:
    • new depth reached
    • experience level gained
    • wishes
    • killing a unique monster
    • life saved
    • crowning
    • artifact gift received
    • basic quest status
    • major oracle consultations
    • performing the invocation
    • gaining/losing the Amulet of Yendor (only if formally identified)

Dumplog

  • When you die, a text file will be created with the following information:
    • final screenshot (in ASCII)
    • character stats
    • inventory and contents of carried containers
    • character attributes
    • known spells
    • skills
    • conducts
    • vanquished opponents
    • final messages
    • dungeon overview
    • heroic deeds (as seen in `#history`)

Interactive replays

  • Saved and finished games can be replayed with a viewer built into the game client. Commands like view inventory can be performed while viewing a replay.

Miscellaneous

  • Improve died-while-helpless descriptions.
  • Fixed about 10% of all known NetHack bugs.

Technical

  • NitroHack network protocol: Supports network play without telnet or ssh. The protocol is based on JSON and makes it easier to implement a browser-based NitroHack client (TODO!).
    • The game is divided into a client and server: the client has a copy of the game for independent local play but can also connect to a server for online play.
  • New save game format: NetHack's save format was mostly just a dump of binary structures to disk. The new format has two sections:
    1. A log of the initial random seed and every game action performed, written continuously as the game is played.
    2. If the game is not being played, a binary save appended after the log. This section uses a fixed-width, fixed-endian architecture and compiler-independent format which resembles NetHack's format but can be loaded on any system the game will run on.
  • Full separation of interface code from game code.
    • The game core has been moved into a library (libnitrohack.so/nitrohack.dll), exposing an API of 23 functions and is largely OS independent.
    • The display code is part of the OS/platform and must provide a list of callbacks (windowprocs) to the game.
    • The core game and display code have no shared global state.
  • Rewritten input system: The game core never requests raw keys from the interface. All interactions happen on an abstract level: the interface sends commands to the game core as strings ("wait", "move", etc.), and the game core may ask for a direction or position, etc.
  • Layered drawing: The game core provides a set of display items for each location instead of just setting the topmost like NetHack. The Curses interface blinks between them; this can be toggled with an option.
  • Mersenne Twister random number generator: Required to make game logs replayable.
  • Re-runnable game core: Several main data structures have been made const, all others are carefully re-initialized when a game is started or restored.
    • This makes it possible to provide the main menu.
    • NitroHack now uses a setjmp/longjmp exception mechanism to escape from deep call-chains when the game ends or panics.
  • Temporary level files and lock files removed.
    • All levels are now kept in memory at all times, making a lot of locking unnecessary, and allowing them to be viewed even from other levels.
    • Only active game logs are locked, and even then only using OS-provided non-file-based locking (fcntl on UNIX and LockFile on Windows).
  • No more support for antique systems and compilers.
    • Dropped operating systems: BE, DOS, Classic Mac, Atari, VMS, Ultrix, etc.
    • Supported compilers has been reduced to gcc, clang and msvc (probably Intel's compiler too).
    • Doing this allowed the removal of lots of crufty code and compat macros, e.g. all current compilers support `void` and `static` so wrapping them in defines is no longer needed.
  • Code cleanups.
    • Number of `#ifdef FOO` has been cut down from 1938 to just 51, making the code much more readable since indentation isn't being interrupted every couple of lines. Compile options that weren't turned into birth options were removed as a result. Functions have been converted to use standard prototypes rather than pre-C89 K&R declarations. Ugly things like prototype widening and follow-on `FOO_P` defines were removed too. Thanks to these changes, tools like `git diff` can now correctly show what function a line is in.
    • All instances of the `register` keyword have been removed since optimizing compilers handle this for us.
    • NEARDATA has been removed since it only made sense on 16-bit computers.
  • New CMake-based build system.
    • This removes the need to manually edit Makefiles and header files just to build the game.
    • Provides safe parallel builds with colorized output on Linux, and generates Visual Studio project files that build without problems on Windows.

External links