NAO-flavored Nethack, with alterations to install via Homebrew
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

NetHack 3.4.3, NAO version, for OSX

This repository contains a fork of the repository altered for OSX installation.

Automated installation

The purpose of this repository is to allow a more playable (i.e. heavily patched, but not in a play-altering way) version of Nethack to be easily installed via the Homebrew package manager. Tap my repository of formulae with

% brew tap ffleming/formulae

and then install nethack with

% brew install nethack-nao

Manual installation

  1. Clone the repo

    % git clone
  2. Enter the repo

    % cd nethack-3.4.3-nao-osx
  3. Setup (no autoconf here!)

    % sh sys/unux/ l
  4. Build

    % make
  5. Install

    % sudo make install
  6. Don't forget the manpages!

    % sudo make manpages
  7. Symlink the nethack binary

    % sudo ln -s /opt/nethack/nethack /usr/bin/nethack

New changes

  • Necessary alterations for compiling on OSX
  • Install to /opt/nethack
  • Define SHELL to allow use of ! to drop to a shell
  • A patch against vanilla nethack 3.4.3 for use by Homebrew via brew install nethack
  • Manpages install to /usr/share/man/man6
  • Use the data librarian (define DLB) for a cleaner install
  • You can now pass --version to the nethack binary to print out version information.

The patch

Created with

% diff --exclude=.git* --exclude=*.diff --exclude=*.patch --exclude=Makefile -rupN "$VANILLA_DIR/" "$PATCHED_DIR/" > "$PATCH_FILENAME"

Changes implemented by NAO

  • Fixed several bugs:
    • C343-19 Dipping acid in a fountain may not destroy the acid. (Patric Mueller)
    • C343-52 Worn or wielded objects destroyed by dipping into lit potions of oil are not handled properly (Patric Mueller)
    • C343-74 Entering a long running, uninterruptible command after stoning starts will kill you. (Patric Mueller)
    • C343-98 Reset stored ID of quest leader when undead-turned, allowing #chat to work properly. (Steve Melenchuk)
    • C343-100 Game may crash if thrown potion hits bars before a monster. (Patric Mueller)
    • C343-171 Silver weapon damage message is sometimes missing when hero is polymorphed (Patric Mueller)
    • C343-172 Crash could occur when monster uses potion or food to cure stoning or confusion. (Ray Chason)
    • C343-179 If a monster is killed or tamed while over water (or by a drawbridge) while carrying a potion of acid, the game may panic. (Patric Mueller)
    • C343-189 Temple donations and protection lost to gremlin attack interact incorrectly. (Patric Mueller)
    • C343-198 Playing in a 20 or 21 line window can cause the game to crash.
    • C343-218 Applying a wielded cream pie can crash the game.
    • C343-231 Time is distorted while sinking into lava. (Patric Mueller)
    • C343-235 Casting spell of protection gives incorrect message if hero is swallowed or in rock. (Patric Mueller)
    • C343-268 Used up potion of acid may end up in bones file. (Patric Mueller)
    • C343-275 If a lit, wielded, candle or potion of oil burns out, the game may crash.
    • C343-276 If a figurine auto-transforms while wielded or worn, the game may crash.
    • C343-317 Bones data can contain odd characters from player's dogname, catname, or fruit options; this can cause odd terminal-dependent behavior.
    • C343-320 Reading a scroll of mail breaks illiterate conduct.
    • C343-324 Cutting a long worm in two will crash the game if the cut takes the worm to 1 HP or if long worms had become extinct. (Patric Mueller)
    • C343-349 An identify scroll is wasted if space is typed and steps off the end of the inventory list. (Steve Melenchuk)
    • C343-439 Running NetHack in a terminal window with more than 255 rows or columns produces display errors. (Patric Mueller)
    • SC343-11 It's possible to easily find the identity of a high priest on the Astral plane.
    • SC343-12 Hero using telepathy can abuse Call on the Astral Plane.
    • SC343-20 Hangup save while picking up gold in a shop may duplicate the gold. (Patric Mueller)
  • Added the Curses windowport, with a fix for monster detection not waiting for --more--.
  • Added boolean option quiver_fired (Patch by Jukka Lahtinen)
  • Sortloot (by Jukka Lahtinen), with more sorting types from UnNetHack (by Patric Mueller)
  • Pressing cmd key at direction prompt selects previously selected direction. (Patric Mueller, unnethack r844)
  • The impossible-warning tells to save, not quit.
  • Livelog reporting (for IRC, etc)
  • Whereis-file user tracking, from SporkHack, with minor changes.
  • Random player statues takes names from top1000, not top10
  • Several new T-shirt messages, random epitaphs and engravings, hallucinatory monsters
  • Changed 'C' to present a menu, and added old_C_behaviour boolean option to restore vanilla 3.4.3 monster christening behaviour
  • Dungeon colors -patch (Pasi Kallinen)
  • Changed 'X' to toggle twoweapon instead of trying to enter explore mode
  • Extinct and Showborn -patch (Jukka Lahtinen)
  • Paranoid Quit -patch
  • Window edge -patch (Pasi Kallinen)
  • Dumplog -patch (Jukka Lahtinen), with some minor changes
  • Menucolors -patch (Pasi Kallinen)
  • HitPoint Monitor -patch (Ralph Churchill) (removed)
  • Simple Mail -patch, from dgamelaunch
  • Extended Logfile -patch (Aardvark Joe), with some small changes
  • A boolean option 'bones' to disable bone-file loading.
  • Messagetype-option -patch (Pasi Kallinen)
  • A patch to allow server admin to notify players.
  • A patch to allow NetHack output special escape codes (vt_tiledata -boolean option)
  • fcntl locking -patch
  • use_darkgray -patch (Michael Deutschmann)
  • Show BUC -patch (Pasi Kallinen)
  • Show Sym -patch (Pasi Kallinen)
  • While Helpless -patch (Pasi Kallinen)
  • A patch to make RNG prediction harder
  • Make NetHack assume the clearscreen escape code is always available, instead of complaining.
  • Fix 100% CPU usage when terminal closed at a --more--- prompt. (tty windowport)
  • Make cursor keys not escape out of a text entry prompt (tty windowport)
  • Added Pickup thrown -patch (Roderick Schertler)
  • Added a modified version of key rebinding -patch (Jason Dorje Short)
  • Added a generic item use menu (from AceHack, via UnNetHack)
  • Added monster targeting -patch (Pasi Kallinen)
  • Force a screen redraw every 2k turns after the previous screen redraw.
  • Fixed farlooking at food items in curses windowport.
  • Prevent the Book of the Dead from being destroyed when falling into (or walking over) lava without fire resistance. (Steve Melenchuk)
  • Added botl_updates option to prevent status line updates, and extended command #updatestatus to force an update.
  • Added hp_notify option to turn on HP change notifications in the message lines, and hp_notify_fmt to configure the notification format.
  • Changed TTY msghistory maximum to 400.
  • Added Statuscolors -patch. (From UnNetHack)
  • Added hitpointbar (from UnNetHack)
  • Added boolean option msgtype_regex, if true, MSGTYPE-lines use regular expressions instead of globbing.
  • Added boolean option apexception_regex, if true, AUTOPICKUP_EXCEPTION-lines use regular expressions insteaed of globbing.
  • Show shop prices when walking over the items in the shop. Turn off with show_shop_prices option. (from UnNetHack)
  • Added item_use_menu boolean option, to turn off the generic item use menu used via inventory.
  • Added msg_wall_hits boolean option. If true, mentions in the message area whenever you walk against a wall. Useful for blind players.
  • Added item glyphs (colored symbols) to tty menus. (from UnNetHack) Boolean option menu_glyphs to turn them on and off.
  • Fixed option parsing causing buffer overflow. (Found by Matthew Daley)
  • Write extra info file for dgamelaunch use.
  • Prevent artifact naming.
  • Fix several crashes in case makemon() returns null. (From UnNetHack r1067)
  • Record HUP exploits into a file.
  • Fix some crashes related to displaying ball/chain and beam glyphs.
  • Fix a crash with hitpointbar. (From UnNetHack)
  • New boolean option "hilite_hidden_stairs", will try to show item with red background, if stairs are underneath it.
  • New boolean option "hilite_obj_piles", will try to show item piles with blue background.
  • Bugfix: prevent dangling pointer when applying a container that might have been destroyed (Patric Mueller)
  • Added "View discoveries" -option to the #call menu
  • Added MONSTERCOLOR config option (From UnNetHack)
  • Made STATUSCOLOR support exact numbers, eg. STATUSCOLOR=hp.1:red&inverse,hp<8:red,hp>50:grey
  • Fix TTY crashing when a location has more than 32k item stacks
  • Fix impossible() giving out faulty values (Pat Rankin)
  • Curses: Fix 100% CPU usage when terminal was lost at DYWYPI prompt
  • Curses: Fix selecting parts of multiple stacks (Alexander Gabriel)
  • Prevent perm -file lock from staying around when terminal is closed at "Destroy old game" -prompt.
  • Fix a crash when restoring a game when riding and detecting monsters. (Patric Mueller)
  • Fix segfault when teleporting onto a sink while equipping levitation boots. (found by Alex Smith)
  • Fix a crash when picking up an unpaid object from a location shared between two shops. (Patric Mueller)
  • Fix scroll of charging not working when used via item_use_menu.
  • Experimental support for UTF8 graphics. (Patric Mueller)
  • Implement menu_search for windowtype:tty
  • Curses: Actually show the "Destroy old game" -prompt
  • Fix stat abuse of gauntlets of dexterity and helm of brilliance (by Alex Smith)
  • Multiple possible bones files per level (via UnNetHack)