GruntHack is a variant of NetHack, with the objective of extending and enhancing gameplay that exists in vanilla NetHack. It a compilation of many third-party patches and some of the author's own best work. Some of the changes are similar to those in SLASH'EM or in NetHack brass, but GruntHack takes a different direction from either.
The current release is 0.2.1 beta 1, last build Thu May 18 00:44:24 2017 (at hardfought.org (HDF))
Public servers - the original (running version 0.2.0 alpha 4) is available at http://grunthack.org/. Servers running the current updated release are available at hardfought.org (USA) and em.slashem.me (Europe), with respective IRC channels of #grunthack, #hardfought and #em.slashem.me on Freenode.
This variant was abandoned by its original developer in 2012. In February 2017 the game started receiving updates from community members Tangles, FIQ, jonadab and K2, with suggestions and help from other members. The updates have added some new UI patches and have fixed several long-standing critical bugs (see below). Work is still continuing.
- 1 Third-party patches
- 2 Additional changes from NetHack 3.4.3
Added in 0.1.x
- Astral Escape, by Chi (substantially modified) - Allow players to escape the Astral Plane without ascending.
- Color Alchemy, by Nephi - Dipping potions into each other creates new ones depending on their colors.
- Dark Room, by Clive Crous - Tell apart unexplored and previously-explored dark tiles.
- Dump Character, by Jukka Lahtinen - Dump extended character info to a file when the game ends.
- hpmon, by Ralph Churchill (substanially expanded) - Color HP depending on how much has been lost.
- Grudge, by Nephi - Various monsters attack each other without prior provocation.
- Menucolors, by Pasi Kallinen - Allow menu lines to be colored according to user-configured patterns.
- Sortloot, by Jukka Lahtinen - Items can be sorted alphabetically by description when viewing piles of items.
- use_darkgray, by Michael Deustchmann - Allow black items to be colored dark gray instead of blue on supporting terminals.
- While Helpless, by Pasi Kallinen - Improve "while helpless" death reasons with actual cause, e.g. "while disrobing".
Simple mail support for dgamelaunch is also available.
Added in 0.2.x
- Bones option, from nethack.alt.org - Allows players to set an option to not load bones files.
- Dungeoncolors, by Pasi Kallinen - Allows players to assign colors to dungeon features.
- DYWYPISI?, by Jafet (modified into a compile-time option and a disclosure flag) - Players have the option of showing the identification state of their objects instead of just identifying them; if this is enabled, dump logs will show the identification state of objects.
- Extended Logfile, by Aardvark Joe - Logs more information about games in a separate log file.
- Extinct & showborn, by Wingnut and Jukka Lahtinen - In the endgame genocide listings, monsters that are extinct can also be shown, and the number of monsters generated can be shown in the kills listing.
- fcntl, by Drew Streib and Edoardo Spadolini - Uses fcntl(2) locking on systems that support it.
- Generic item use menu, from AceHack via UnNetHack and nethack.alt.org (slightly modified and expanded) - Selecting an item from the inventory menu provides a menu for some uses of the item.
- Flipped Levels, by Pasi Kallinen (with several bug fixes, and modifications to not trigger on some levels) - When loading a special level, randomly flip the level horizontally and/or vertically.
- Hallucination Objects, by James (only the object names; previously implemented version of this is intact)
- Messagetype-option, by Pasi Kallinen - Allows filtering of and stopping on messages specified by the user.
- Key Rebinding, by Jason Dorje Short (slightly modified) - Allows the input keys to be rebound.
- Monster Targeting, by Pasi Kallinen - When prompted for a target, pressing 'm' and 'M' will cycle through nearby monsters in outgoing and incoming order respectively.
- New C menu, from nethack.alt.org (own implementation) - #name and #call now provide a menu prompting for what the player would like to call (monsters or objects); this can be disabled by the old_C_behaviour option.
- Paranoid, by David Damerell, Jonathan Nieder, Jukka Lahtinen, Stanislav Traykov, and Kristian Glass - Certain prompts, such as quitting the game or attacking a peaceful monster, can be replaced with a more paranoid version requiring a full 'yes' or 'no' input.
- Pickup Thrown, by Roderick Schertler - Allows objects that have been thrown by the player to be automatically picked up, regardless of other autopickup exceptions.
- Quiver Fired, by Pasi Kallinen (slightly modified) - When firing with an empty quiver, the player can be prompted to quiver an additional object rather than simply being provided with a throw menu.
- Show BUC, by Pasi Kallinen - Adds an option to always show the BUC status of an item.
- Show Sym, by Pasi Kallinen - Adds symbols to item selection menus, which can be used to select that class of item.
- Window Edge, by Pasi Kallinen - Allows the alignment of text in windows to be specified by the player.
- Various fixes from nethack.alt.org for the tty window system: always assume clearscreen escape code is available, 100% CPU usage fix when terminal is closed at --more--, cursor keys don't escape from a text entry prompt, no longer crashes in a 20- or 21-line window.
- VS2008 compilation fix, from the NetHack dev team - Allows the game to be built with recent versions of Visual Studio.
Updates in 0.2.1 (March through May 2017)
- spitting monsters (Juiblex, black nagas, cobras) crashing the game was fixed
- vibrating square being generated too close to the edge and causing panic was fixed
- conflict affecting the whole level regardless of distance and line-of-sight was fixed
- door to The Wizard of Yendor's tower (top level) no longer appears on an outside wall if that level is randomly flipped
- auto-opening doors by walking into them (autoopen option)
- MONSTERCOLOR option
- curses interface patch (by Karl Garrisson) w/ extensive bug fixes and updates
- highlighting of object piles (hilite_obj_piles option)
- highlighting of hidden stairs (hilite_hidden_stairs option)
- added dgamelaunch extrainfo support
- Conduct: Elbereth tracking (by Ray Kulhanek)
- Stairs leading to branches are colored yellow (UnNetHack)
- Display items in inventory list (UnNetHack)
- Statuscolors patch (by Shachaf & Oren Ben-Kiki) - works in both tty and curses modes
- HitPointBar (by mrq) - modified to change colors inline with Statuscolors settings
Additional changes from NetHack 3.4.3
Changes include, but aren't limited to the following:
Added in 0.1.x
- Most areas of the status line acquire colours when an important change happens, e.g. your attributes turn green if they've just increased or red if they've decreased.
- In the tty windowing system, areas of the map not in your current line of sight now take on a darker colour.
- Hallucination causes the entire map to take on strange colours (in tty GruntHack) and also distorts your perception of items. Fortunately as it times out its effects are gradually reduced.
Added in 0.2.x
- showrace has been split into showrace (with the vanilla showrace behaviour of only affecting the player) and showmonrace (for racial monsters).
Added in 0.1.x
- Gehennom has been remodelled - instead of a series of mazes, it is now a series of caverns complete with rivers of lava and hordes of demons.
- The Gnomish Mines contain pools of water and the occasional river.
- The Elemental Planes appear in random order in the end game.
Added in 0.2.x
- Some additional Sokoban levels are present.
- You now can obtain one of three rewards from Sokoban. (Whether this is random or not depends on how clever you are.)
- Yeenoghu, Geryon, Dispater, and Demogorgon now have their own fortresses in Gehennom. Gehennom has been extended by five levels to allow room for this.
- Killing the quest leader opens the stairway to the rest of the quest (thus accidental conversion is less likely to render the game permanently unwinnable).
Added in 0.1.x
- Optionally, players can play as a kobold, ogre, or giant, each of which brings unique problems due to their respective sizes.
- The arbitrary alignment restriction on elves has been removed; they can now play any alignment (and can play a few new roles as well).
- You can cast monster spells while polymorphed into a spell-casting form.
- Low dexterity causes fumbling on an intermittent basis. Gauntlets of fumbling and fumble boots set dexterity to 6 as a consequence.
- Wearing greased gauntlets grants "slippery fingers" extrinsically.
- Death messages while immobile now reflect the reason for immobility.
- Death messages while stuck in creature form now reflect the method of death as opposed to plain "stuck in creature form".
- Wizards can identify objects with abnormal magical properties as having a magical aura, e.g. "a magical helm".
Added in 0.2.x
- Several new spells, such as the monster-inspired "touch of death" and "psi bolt" and the deferred "flame sphere" and "freeze sphere".
- Casting a spell successfully adds 50-149 turns until the spell is forgotten; without casting a spell at all, it is now forgotten in 10000 turns instead of 20000.
- When prompted for a direction, entering an invalid direction will now prompt the player again for a direction; cancelling requires the player to press Esc.
- The travel command now finds dungeon features (most notably stairs) even if an item is on top of them.
- If the player is a giant, they can force-move onto a boulder rather than push it.
- If the player is a giant, moving onto a boulder square in Sokoban is prompted for rather than always occurring if the boulder is block.
- There is now a #tip command for emptying out containers on the floor or in your inventory.
Added in 0.1.x
- Some classes of monster can have a race, much as the player does. Some monsters have been merged as a result. showrace now additionally shows the race of monsters as well as yourself.
- Shopkeepers that hate your race will charge extra.
- Monsters that polymorph will revert to original form if killed; their polymorph can also time out.
- Monsters can now use ranged weapons against other monsters, including polearms and monster spells.
- Monsters can use scrolls of remove curse.
- Intelligent pets will actively seek out better equipment to make use of.
- Monsters can use additional types of equipment that grant magical effects just as the player can.
- Monsters actively target your pets as well as you.
- The behaviour of covetous monsters has been improved. Most notably those not capable of teleporting can no longer teleport. If they manage to acquire their desired target they will attempt to flee effectively.
- Monster displacement is implemented. shimmering dragons are re-enabled as a consequence.
- In addition to the shimmering dragons, the vampire mage and vorpal jabberwock are enabled.
- Kings are now guaranteed to appear in throne rooms.
- Pets will not eat if they are not hungry. Unintelligent pets can choke if you overfeed them; intelligent pets can keep food with them.
- Gelatinous cubes and water elementals now have an engulfing attack, making them much more fearsome opponents.
- Puddings have their maximum HP halved when they divide.
- Puddings are now split with edged weapons as opposed to any iron object.
- Messages for monsters missing you are more verbose, explaining what piece of armor stopped the blow.
- Monsters can now become ill and die from their illness.
- Zombies now have a sickness-inducing bite attack, and have a chance of eating your brains on a sucessful hit. If you die to a zombie, you will become a zombie.
- Zombies will now attack any living creature and vice-versa.
- Cancellation now kills all types of golems.
- Dragons now possess an engulfing attack.
- Vorpal jabberwocks now possess the ability to behead as their name would suggest.
Added in 0.2.x
- The beholder's remaining gaze attacks have been implemented; thus the beholder has been enabled.
- There are now queens and ladies in addition to kings and lords. (Suggested by ishanyx in #nethack.)
- Player monsters now have a chance of being randomly generated in the dungeon, and will carry level-appropriate equipment.
- Monster spellcasting has been overhauled - monsters will now cast spells from the pool of player spells, instead of their own unique spells. (This behaviour is optional and controlled by #define COMBINED_SPELLS in config.h.)
- Monsters can now use some additional items (wands and containers particularly).
- If you throw an intelligent pet an item that they are capable of using, they will catch the item and (if applicable) use it immediately.
- Grudge-bearing monsters are now more likely to attack their targets.
- Conversely, covetous monsters are less likely to target other monsters if they do not have an objective in sight.
- Bumping into a peaceful monster while invisible no longer angers it.
- Monsters (and you!) can now be buried in the same manner as objects.
- Water elementals now deal rust damage both passively and actively.
- Non-human, non-elven racial monsters whose base types are symbolised by an '@' now once again respect scary squares.
- Attempting to teleport away a monster with teleport control causes it to choose where it wants to teleport.
- Covetous monsters are much better at path-finding when looking for their targets.
- Non-flying, non-levitating monsters on the Plane of Air are subject to the same movement restrictions as the player.
- Stunned and confused monsters now wobble as the player does in the same circumstances.
- Medusa's passive gaze attack now affects all monsters.
- Farlooking at a monster will reveal equipment they are currently wearing or wielding.
- Monsters with passive fire attacks now deal passive fire damage to objects.
- Monster petrification is now a gradual process for cases where it would be a gradual process for the player under the same circumstances.
Added in 0.1.x
- Non-artifact objects can have additional properties (e.g. ___ of fire resistance).
- Object material is now determined on a per-object basis.
- Foobanes deal additional damaging effects to their targets.
- Hitting monsters with a wielded scroll or wand causes some of the object's magic to be released. Throwing scrolls has a similar effect.
- Hitting a water elemental with a potion of acid causes the potion to explode.
- Potions of gain ability and wands now interact plausibly.
- Unidentified fake Amulets of Yendor cannot be put in containers.
- Some types of explosions now scatter objects (including breaking statues, boulders, and corpses).
- Effects of projectile weapon properties now stack with those of their launcher.
Added in 0.2.0
- Objects can now be invisible, with many associated side effects. (Some cues for this were taken from the Extended Invisible Objects patch by Nephi, but the implementation is entirely original.)
- Exploding a bag of holding no longer destroys the contents of the bag; instead they are scattered throughout the dungeon, as is the player.
- Polymorphing magical items now more reliably yields magical items.
- The Banes now warn of their respective monster classes, if they did not do so previously.
- Dragging a ball and chain around while underwater now causes them to rust away (as would happen if the ball was being carried).
- Two additional item properties have been added: hunger and aggravation.
- Items can now bear the same name as an artifact (no more "While engraving your [hand] slips"). This removes the ability to #name-test objects.
- Behaviour between items with similar purposes with respect to the Planes is now more consistent.
- At least seven candles are now guaranteed to be generated in a lighting store.
- Crossbows now fire a set range regardless of strength; they require high strength to fire mulitple shots.
- Items with abnormal magical properties are now generated more frequently at lower dungeon levels.
- New item: scroll of detect magic. It acts as object detection for magical items (including those with abnormal magical properties), and sets the 'magical' flag for those objects as though the player was a wizard.