The Hell Patch, version 3 introduces six new named demons and five new lairs.
Lilith attacks as a succubus, and Sammael as an incubus -- but with a -10 penalty to charisma. The AD_SSEX tag is modified so that the damd field specifies the charisma penalty. This field is 0 for incubi and succubi, and so these demons behave as in unmodified Nethack.
Cthulhu emits mind blasts as a mind flayer, requiring change to the code that triggers mind blasts.
Pazuzu and Lolth require no special changes to the code, other than the entry in monst.c.
Mammon demands a bribe -- but does not disappear permanently when a bribe is accepted. Furthermore, he will even bribe other demons. Changes to the bribe code are required to support Mammon.
The patch modifies fourteen files:
File | Object | Modification |
| dat/data.base | none | New entries for Pazuzu, Lilith, Sammael, Cthulhu, Mammon, and Lolth. |
| dat/dungeon.def | none | Extend Gehennom by one level, to ensure a place for Cthulhu's lair. |
| Place Mammon's lair in the upper parts of Gehennom. | ||
| Place Lolth's lair in the upper parts of Gehennom. | ||
| Place Lilith's lair in Gehennom, deeper than that of Orcus. | ||
| Place Sammael's lair in Gehennom, with the same range of depths as Lilith's lair. | ||
| Place Cthulhu's lair in Gehennom, one level above the vibrating square. | ||
| Adjust fakewiz1 and fakewiz2 for the increased depth of Gehennom, so that their ranges do not include the lair of Cthulhu. | ||
| dat/gehennom.des | none | Define the lairs of Lilith, Sammael, Cthulhu, Mammon, and Lolth. |
| include/decl.h | dungeon_topology | Add the lairs of Lilith, Sammael, Cthulhu, Mammon, and Lolth to the dungeon_topology structure, and provide shorthand macros to access these lairs. |
| include/extern.h | doseduce() | doseduce() now takes a second parameter, which is the charisma penalty. |
| src/dungeon.c | level_map[] | Add the lairs of Lolth, Lilith, Sammael, Cthulhu, and Mammon to the level_map structure. |
| src/mhitu.c | hitmu() | The AD_SSEX case passes the charisma penalty to doseduce(). |
| could_seduce() | Treat Lilith as a succubus, and Sammael as an incubus. | |
| doseduce() |
| |
| mayberem() | Add a third parameter, cha_penalty, which is subtracted from charisma. | |
| src/minion.c | demon_talk() |
|
| src/monmove.c | dochug() | Allow Cthulhu to emit mind-blasts as a mind flayer. |
| src/monst.c | mons[] | Add entries for Pazuzu, Lilith, Sammael, Cthulhu, Mammon, and Lolth. |
| src/sounds.c | domonnoise() | In the MS_SEDUCE case, search for an AD_SSEX attack. If one is found, and could_seduce() returns 1, call doseduce() and pass the charisma penalty. If no AD_SSEX attack is found, or if could_seduce() does not return 1, behave as a nymph. |
| sys/unix/Makefile.top | none | Add cthulhu.lev, lilith.lev, lolth.lev, mammon.lev, and sammael.lev to the list of level files to install. |
| util/makedefs.c | version_id_string() | Modify the version string to indicate that the Hell Patch has been applied. |
| win/share/monsters.txt | none | New tiles for Pazuzu, Lilith, Sammael, Cthulhu, Mammon, and Lolth. Renumber subsequent tiles. |
Ray Chason
rchason at smart.net (All spammers must die!)