SporkHack
SporkHack, at sporkhack.com, is a variant of NetHack 3.4.3 by Derek Ray aimed at game balance. Its stated purpose was to "try to make the game more interesting for experienced/skilled players, while making it no harder...for the newbie." [1]. It can be played on a public server at em.slashem.me (0.6.3) or the latest developed version (0.6.5) at hardfought.org (USA). To discuss, join #sporkhack, #em.slashem.me or #hardfought on freenode.
Development of SporkHack was restarted in July 2017 by community members Tangles and K2. The latest version is now 0.6.5 - last build Wed Aug 9 14:20:40 2017. The repository can be found at https://github.com/NHTangles/sporkhack - the revived development of SporkHack includes bugfixes and functionality enhancement; no changes affecting gameplay or the original authors intent have been made at this time.
From the original developer's announcement on rec.games.roguelike.nethack, 8 July 2007:
- "I've been working on a fork of 3.4.3 that has a number of balance-oriented changes, largely to try to address the problems I've outlined in prior posts as well as just provide a platform for experimental changes. It's been in test among a small group of players for about a month now; it seems time to open it up and see what others think.
- In short, one of the purposes of this fork is to try to make the game more interesting for experienced/skilled players, while making it no harder (or, in a couple cases, slightly easier) for the newbie. It's also going to be an attempt to try to increase variety in the standard 'ascension kit', since right now it is pretty well defined.
- There is a server available for play at this telnet link; the very rough changelog and description can be seen at this webpage. A patch to match the server state will eventually be published on the website as well, once I confirm that the patches will properly apply to a vanilla 3.4.3 distribution.
- There is a channel #sporkhack on irc.freenode.net where discussions take place relatively frequently; there is a bot there, much like #nethack's Rodney, who will announce deaths and ascensions as they occur.
- Please keep in mind that these changes should be considered to be alpha- or beta- level; there may well be bugs, and these bugs may affect your gameplay. I do try to fix bugs found as rapidly as possible, but I can't always update the server immediately since I have others' games to consider as well, especially if I have a patch in the queue that will break savefile compatibility.
- This is a live fork! For the near future, I will still be making a great deal of changes, and if an imbalance is found with existing changes, they are not set in stone -- if something is too hard, I will certainly consider toning it down to a more reasonable level. By the same token, if something I add makes things too easy, I will probably tone _that_ down too.
- I hope you enjoy it."
Major changes
These are the most visible major changes; there have been several changes under the hood that aren't visible for players.
- Levels might generate adjacent rooms (without a corridor in between)
- Gehennom fill levels are mines-style with lava spills, not mazes.
- New special level variants of minetown, bigroom and medusa, and other levels tweaked.
- Caveman quest levels thematically in jungle.
- Knights can be chaotic.
- Elbereth and ring of conflict nerfed.
- New artifact weapons: Keolewa and Dirge.
- Most of the less popular artifacts have new properties
- New items: amulet of power, gnomish armor, boots of molasses, iron safe, gauntlets of fortune, wand of wind.
- New monsters: locust, grey fungus (BEWARE), magical eye, gold dragon, snark, boojum.
- New spells: reflection, repair armor, detect foot.
- Intrinsic resistances are percentages, not binary.
- Dragon scales and dragon scale mails have extra abilities.
lev_comp changes
Sporkhack incorporates the new level compiler patch, but also has several other changes. The differences between vanilla des-file format are:
- No more MAZE; all special levels start with LEVEL:"filename". To mark a level mazelike, you add FLAGS:mazelevel.
- IF [50%] THEN ... ELSE ... ENDIF now uses brackets, so resembles C: IF [50%] { ... } ELSE { ... }
- ROOM (and SUBROOM) contents are inside brackets.
- New command RANDLINE to create random river-like structures: RANDLINE:random,random,'L',lit,25,2
- New command TERRAIN to explicitly set map character(s) in certain locations: TERRAIN:(55,14),'-',unlit
- New command SPILL to create random pool-like structures: SPILL: random, 'L', north, 20, lit
- New command REPLACE_TERRAIN to replace a percentage of one map character with another map character inside an area: REPLACE_TERRAIN:(01,01,74,18), 'P', '.', lit, 15%
- New command EXIT to exit the level creation immediately.
- New command GRAVE to create a grave, with either a specified epitaph, a random one, or no text: GRAVE:(1,2), "Epitaph text goes here"
- Level initialization has three different modes:
- INIT_MAP:solidfill,'X' replaces the now-gone MAZE:"foo",'X'. Also takes an optional light-state parameter.
- INIT_MAP:mazegrid,' ' replaces the now-gone MAZE:"foo",random
- INIT_MAP:mines, ... is the old INIT_MAP
- Map GEOMETRY also accepts an absolute coordinate, for example GEOMETRY:(45,10)
- MAZEWALK can take two optional parameters, a boolean that tells whether the maze should get stocked with standard maze items and monsters, and a map character that is used as the floor of the maze. For example: MAZEWALK:(30,10),west,false,'L'.
- New level flags: "shroud", "mazelike", "stormy" and "graveyard".
- In MAP ... ENDMAP, the character 'x' is "transparent" map character.
- Allows CONTAINER inside another; contents are inside brackets.
- WALLIFY can take an optional region to wallify: WALLIFY:levregion(1,1,70,20)
- OBJECT has several new optional parameters: quantity:X, recharged:X, eroded:X, buried, lit, locked, broken, trapped, invisible, greased.
- MONSTER has several new optional parameters: female, invisible, cancelled, revived, avenge, stunned, confused, fleeing:X, blinded:X, paralyzed:X, seen_traps:X
- Looping: LOOP [50] { ... }
- Switch-statements:
SWITCH [6] { CASE 0: ... BREAK CASE 1: ... BREAK CASE 2: ... BREAK DEFAULT: ... }
- It's possible to define what items a monster gets; the inventory is given inside brackets after the MONSTER-definition.
- It's possible to override normal random monster generation chances; quest levels use this method: MON_GENERATION:86%, (64,"tiger"), (16,"ape"), (10, 'S')
Minor changes
- Addition of the menucolors, statuscolors, and MSGTYPE patches.
- The character generation screen is similar to angband and similar roguelikes.