Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

NetHack-- 3.1.3 Patch (Fixed, 01/03)

15 views
Skip to first unread message

Chris Herborth

unread,
Aug 25, 1993, 9:40:28 PM8/25/93
to
Submitted-by: cher...@semprini.tdkcs.waterloo.on.ca
Archive-name: NetHack--/part01

Here is the fixed version of the NetHack-- 3.1.3 Patch. Use this
instead of the compressed tar version that I posted a few days ago.
Sorry for the confusion.

NetHack-- is an unauthorised expansion to NetHack. This patch will turn
your NetHack 3.1.3 source code into NetHack-- 3.1.3.

Binary versions are available for the Atari ST/TT/Falcon030, OS/2 2.x,
and DOS (386 or better); check your favourite ftp sites.

-------- 8< -------
#!/bin/sh
# This is NetHack--, a shell archive (produced by shar 3.49)
# To extract the files from this archive, save it to a file, remove
# everything above the "!/bin/sh" line above, and type "sh file_name".
#
# made 08/25/1993 17:31 UTC by cher...@semprini.tdkcs.waterloo.on.ca
# Source directory /usr/acct2/herborth/src/nh31c--patch
#
# existing files will NOT be overwritten unless -c is specified
# This format requires very little intelligence at unshar time.
# "if test", "cat", "rm", "echo", "true", and "sed" may be needed.
#
# This is part 1 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 3053 -rw------- HowToPatch
# 125277 -rw------- NH31C--.Patch
# 6938 -rw------- ReadMe.Too
# 2088 -rw------- blah
#
if test -r _shar_seq_.tmp; then
echo 'Must unpack archives in sequence!'
echo Please unpack part `cat _shar_seq_.tmp` next
exit 1
fi
# ============= HowToPatch ==============
if test -f 'HowToPatch' -a X"$1" != X"-c"; then
echo 'x - skipping HowToPatch (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting HowToPatch (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'HowToPatch' &&
XNetHack-- 3.1.3 - Patching Instructions August 20/93
X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
X
XHere are some instructions on how to patch NetHack 3.1.3 with the
XNetHack-- 3.1.3 patch. The NetHack-- 3.1.3 patch adds over a hundred
Xmonsters, new artifacts, new items, new special rooms, and a list of
XGenocided monsters in your "Discovered Items" screen (when you press
X"\").
X
XNetHack-- 3.1.3 is an unauthorised modification of the NetHack 3.1.3
Xgame. Any bugs introduced into NetHack due to this patch are my
Xproblem, not the Development Team's.
X
XHow to Patch
X
X 1. Get the NetHack 3.1.3 source code. If you haven't got it, read the
X rec.games.hack Frequently Asked Questions (FAQ) for a list of sites
X that carry the NetHack 3.1.3 source code.
X
X 2. Unpack the NetHack 3.1.3 source code and be sure you've got
X everything. The Files file will list all of the files and
X directories you should have.
X
X 3. Copy the files from the NetHack-- 3.1.3 patch into the root
X directory of your NetHack 3.1.3 source directory.
X
X 4. To apply the main NetHack-- 3.1.3 patch, use:
X patch -p1 < NH31C--.Patch
X from the root of your NetHack source directory.
X
X 5. If all goes well, the patch will apply itself, modifying a whole bunch
X of files.
X
X 6. To build NetHack-- 3.1.3, go into sys/{your computer here} and follow
X the instructions in the Install.* file.
X
X 7. You should probably copy the ReadMe.Too file to your NetHack game
X directory (ie, where all the .lev and other files end up) and rename
X it news; you can also trim it down a bit. This will warn people that
X they're playing a modified version of NetHack (you should definitely
X delete the artifact and monster lists so you don't ruin the surprise).
X
XIf you have any problems or find any bugs, I can be reached at:
X
Xcher...@semprini.tdkcs.waterloo.on.ca
Xher...@53iss6.waterloo.ncr.com
X
XA bug in the plain NetHack 3.1.3 source code should be reported to the
XDevelopment Team at:
X
Xnetha...@linc.cis.upenn.edu
X
XDon't bother the Development Team with bugs caused by the NetHack-- 3.1.3
Xpatch; it's my fault and not theirs.
X
XEnjoy!
X-Chris-
X
XBugs Fixed, While You Wait (and wait and wait...)
X~~~~~~~~~~~~~~~~~~~~~~~~~~
X A few days after I announced the immenant release of the NetHack-- 3.1.3
X patch to the world, I lost my patch archive. Argh!
X
X After rebuilding my patch archive from files living on my Atari (which
X necessitated creating a nice Minix partition so I could use long
X mixed-case filenames), I got a bug report; if you robbed a shop,
X NetHack-- 3.1.3 would go into an infinite loop trying to create the
X Keystone Kops. Oops.
X
X So, now, about a month later, I've got my act in gear, and I fixed the
X bug. Now NetHack-- 3.1.3 is ready for the public!
X
X Remember, if you run into any bugs, check to see if you can reproduce
X it under normal NetHack. If you can, send a bug report to nethack-bugs.
X If not, send one to me and I'll see if I can reproduce it.
X
X-Chris-
XAugust 20/93
SHAR_EOF
true || echo 'restore of HowToPatch failed'
rm -f _shar_wnt_.tmp
fi
# ============= NH31C--.Patch ==============
if test -f 'NH31C--.Patch' -a X"$1" != X"-c"; then
echo 'x - skipping NH31C--.Patch (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting NH31C--.Patch (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'NH31C--.Patch' &&
Xdiff -c -r ../nh31c/dat/data.base ./dat/data.base
X*** ../nh31c/dat/data.base Fri Jun 11 14:42:36 1993
X--- ./dat/data.base Fri Aug 20 13:24:44 1993
X***************
X*** 188,193 ****
X--- 188,194 ----
X [ The Charwoman's Shadow, by Lord Dunsany. ]
X gold
X gold piece
X+ pile of gold
X A metal of characteristic yellow colour, the most precious
X metal used as a common commercial medium of exchange. Sym-
X bol, Au; at. no. 79; at. wt. 197.2. It is the most malle-
Xdiff -c -r ../nh31c/include/artilist.h ./include/artilist.h
X*** ../nh31c/include/artilist.h Thu Aug 05 10:26:24 1993
X--- ./include/artilist.h Fri Aug 20 13:24:46 1993
X***************
X*** 135,140 ****
X--- 135,185 ----
X (SPFX_RESTR|SPFX_DFLAG2), 0, M2_UNDEAD,
X PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, 0 ),
X
X+ /* NetHack-- Goodies */
X+ /* Axen */
X+ A( "Icebiter", BATTLE_AXE, (SPFX_RESTR | SPFX_ATTK | SPFX_DEFN), 0, 0,
X+ COLD(5,20), COLD(0,0), NO_CARY, 0, A_LAWFUL, 0 ),
X+
X+ A( "Firebiter", BATTLE_AXE, (SPFX_RESTR | SPFX_ATTK | SPFX_DEFN), 0, 0,
X+ FIRE(5,20), FIRE(0,0), NO_CARY, 0, A_LAWFUL, 0 ),
X+
X+ /* Swords */
X+ A( "Soultheif", RUNESWORD, (SPFX_RESTR | SPFX_ATTK | SPFX_DEFN | SPFX_DRLI),
X+ 0, 0, DRLI(3,3), DRLI(0,0), NO_CARY, 0, A_CHAOTIC, 0 ),
X+
X+ A( "Equalizer", RUNESWORD, (SPFX_RESTR | SPFX_ATTK | SPFX_DEFN | SPFX_WARN),
X+ 0, 0, DRLI(3,3), DRLI(0,0), NO_CARY, 0, A_NEUTRAL, 0 ),
X+
X+ A( "Kopkiller", LONG_SWORD, (SPFX_RESTR | SPFX_DCLAS), 0, S_KOP,
X+ PHYS(5,0), NO_DFNS, NO_CARY, 0, A_CHAOTIC, 0 ),
X+
X+ A( "Deathsword", LONG_SWORD, (SPFX_RESTR | SPFX_DCLAS), 0, S_HUMAN,
X+ PHYS(5,0), NO_DFNS, NO_CARY, 0, A_CHAOTIC, 0 ),
X+
X+ A( "Fungisword", LONG_SWORD, (SPFX_RESTR | SPFX_DCLAS), 0, S_FUNGUS,
X+ PHYS(5,0), NO_DFNS, NO_CARY, 0, A_NEUTRAL, 0 ),
X+
X+ /* Other weapons */
X+ A( "Liontamer", BULLWHIP, (SPFX_RESTR | SPFX_DCLAS), 0, S_FELINE,
X+ PHYS(5,15), NO_DFNS, NO_CARY, TAMING, A_LAWFUL, 'A' ),
X+
X+ A( "Dirk", DAGGER, 0, 0, 0, PHYS(0,5), NO_DFNS, NO_CARY, 0, A_LAWFUL, 0 ),
X+
X+ A( "Elfrist", TWO_HANDED_SWORD, SPFX_DFLAG2, 0, M2_ELF,
X+ PHYS(5,0), NO_DFNS, NO_CARY, 0, A_CHAOTIC, 0 ),
X+
X+ /* Extra goodies - Omega/AD&D [CJH] */
X+ /* Morning star with a ball of fire */
X+ A("Firestar", MORNING_STAR, (SPFX_RESTR | SPFX_ATTK | SPFX_DEFN),
X+ 0, 0, FIRE(5,0), FIRE(0,0), NO_CARY, 0, A_NEUTRAL, 0),
X+ /* A Mace of Disruption for killing those nasty undead. */
X+ A("Disruptor", MACE, (SPFX_RESTR | SPFX_ATTK | SPFX_DEFN | SPFX_DFLAG2 ),
X+ 0, M2_UNDEAD, PHYS(5,0), DRLI(0,0), NO_CARY, 0, A_LAWFUL, 'P'),
X+ /* Sacred staff of a great healer/priest-type guy. */
X+ A("Cuthbert's Cudgel", QUARTERSTAFF, (SPFX_RESTR | SPFX_ATTK | SPFX_DEFN |
X+ SPFX_WARN | SPFX_HALRES | SPFX_REGEN | SPFX_HSPDAM | SPFX_DALIGN),
X+ SPFX_WARN, 0, PHYS(5,0), DRLI(0,0), NO_CARY, 0, A_NEUTRAL, 'P'),
X+
X #ifdef MULDGN
X /*
X * The artifacts for the quest dungeon, all self-willed.
Xdiff -c -r ../nh31c/include/mkroom.h ./include/mkroom.h
X*** ../nh31c/include/mkroom.h Tue Mar 09 12:45:32 1993
X--- ./include/mkroom.h Fri Aug 20 13:24:48 1993
X***************
X*** 58,76 ****
X #define ZOO 8 /* floor covered with treasure and monsters */
X #define DELPHI 9 /* contains Oracle and peripherals */
X #define TEMPLE 10 /* contains a shrine */
X! #define SHOPBASE 11 /* everything above this is a shop */
X! #define ARMORSHOP 12 /* specific shop defines for level compiler */
X! #define SCROLLSHOP 13
X! #define POTIONSHOP 14
X! #define WEAPONSHOP 15
X! #define FOODSHOP 16
X! #define RINGSHOP 17
X! #define WANDSHOP 18
X! #define TOOLSHOP 19
X! #define BOOKSHOP 20
X! #define UNIQUESHOP 21 /* shops here & above not randomly gen'd. */
X! #define CANDLESHOP 21
X! #define MAXRTYPE 21 /* maximum valid room type */
X
X /* Special type for search_special() */
X #define ANY_TYPE (-1)
X--- 58,83 ----
X #define ZOO 8 /* floor covered with treasure and monsters */
X #define DELPHI 9 /* contains Oracle and peripherals */
X #define TEMPLE 10 /* contains a shrine */
X! #define WASPHIVE 11 /* [Tom] Wasp hive.. wasps and gems */
X! #define GIANTCOURT 12 /* [Tom] Court, but with giants */
X! #define LEPRECOURT 13 /* [Tom] Croesus' court */
X! #define BADFOODSHOP 14 /* [Tom] Where bad food goes to rest... */
X! #define REALZOO 15 /* [Tom] A zoo with zoo animals */
X! #define ANTHILL 16 /* [Tom] An anthill */
X! #define ROOMELEVEN 17 /* [Tom] The denizens of Room 11 */
X! #define SHOPBASE 18 /* everything above this is a shop */
X! #define ARMORSHOP 19 /* specific shop defines for level compiler */
X! #define SCROLLSHOP 20
X! #define POTIONSHOP 21
X! #define WEAPONSHOP 22
X! #define FOODSHOP 23
X! #define RINGSHOP 24
X! #define WANDSHOP 25
X! #define TOOLSHOP 26
X! #define BOOKSHOP 27
X! #define UNIQUESHOP 28 /* shops here & above not randomly gen'd. */
X! #define CANDLESHOP 28
X! #define MAXRTYPE 28 /* maximum valid room type */
X
X /* Special type for search_special() */
X #define ANY_TYPE (-1)
Xdiff -c -r ../nh31c/include/monsym.h ./include/monsym.h
X*** ../nh31c/include/monsym.h Mon Jan 25 02:24:36 1993
X--- ./include/monsym.h Fri Aug 20 13:24:50 1993
X***************
X*** 72,79 ****
X #define S_WORM_TAIL 59
X #define S_MIMIC_DEF 60
X
X! #define MAXMCLASSES 61 /* number of monster classes */
X
X #if 0 /* moved to decl.h so that makedefs.c won't see them */
X extern const char def_monsyms[MAXMCLASSES]; /* default class symbols */
X extern uchar monsyms[MAXMCLASSES]; /* current class symbols */
X--- 72,82 ----
X #define S_WORM_TAIL 59
X #define S_MIMIC_DEF 60
X
X! #define S_BADCOINS 61
X! #define S_BADLUNCH 62
X
X+ #define MAXMCLASSES 63 /* number of monster classes */
X+
X #if 0 /* moved to decl.h so that makedefs.c won't see them */
X extern const char def_monsyms[MAXMCLASSES]; /* default class symbols */
X extern uchar monsyms[MAXMCLASSES]; /* current class symbols */
X***************
X*** 145,150 ****
X--- 148,155 ----
X #define DEF_WORM_TAIL '~'
X #define DEF_MIMIC_DEF ']'
X
X+ #define DEF_BADCOINS '$'
X+ #define DEF_BADLUNCH '%'
X
X #define G_UNIQ 0x1000 /* generated only once */
X #define G_NOHELL 0x0800 /* not generated in "hell" */
Xdiff -c -r ../nh31c/include/patchlevel.h ./include/patchlevel.h
X*** ../nh31c/include/patchlevel.h Thu Aug 05 10:26:28 1993
X--- ./include/patchlevel.h Fri Aug 20 13:59:16 1993
X***************
X*** 13,19 ****
X * Incrementing EDITLEVEL can be used to force invalidation of old bones
X * and save files.
X */
X! #define EDITLEVEL 0
X
X /*
X * Patch 3, July 12, 1993
X--- 13,36 ----
X * Incrementing EDITLEVEL can be used to force invalidation of old bones
X * and save files.
X */
X! #define EDITLEVEL 2
X!
X! /*
X! * Patch 3, Edit Level 1, June 14, 1993
X! * - started folding in some of the NetHack-- changes (items, monsters,
X! * and special rooms; I'm leaving out the extra ~20 character classes
X! * because I don't want to create quest levels and artifacts for them
X! * all. Yuval Oren and Tom Proudfoot were responsible for NetHack--,
X! * and I've added a bunch of monsters and a few artifacts. [CJH]
X! * - also carefully applied the patch to my patch by Dan Riley; it
X! * broke the code for 3.1.2 by just patching it in... [CJH]
X! * - applied the fixed NetHack-- 3.1.2 patch to the new NetHack 3.1.3;
X! * no problems or complaints at all [CJH]
X! *
X! * Patch 3, Edit Level 2, August 20, 1993
X! * - found and fixed a nasty shopkeeper bug
X! * - NetHack-- 3.1.3 should now be ready for release [CJH]
X! */
X
X /*
X * Patch 3, July 12, 1993
Xdiff -c -r ../nh31c/src/do_wear.c ./src/do_wear.c
X*** ../nh31c/src/do_wear.c Thu Aug 05 10:23:42 1993
X--- ./src/do_wear.c Fri Aug 20 13:24:56 1993
X***************
X*** 226,231 ****
X--- 226,233 ----
X case ORCISH_CLOAK:
X case DWARVISH_CLOAK:
X case CLOAK_OF_MAGIC_RESISTANCE:
X+ case LAB_COAT:
X+ case EXPENSIVE_SUIT:
X break;
X case CLOAK_OF_INVISIBILITY:
X if (!oldprop && !See_invisible && !Blind) {
X***************
X*** 266,271 ****
X--- 268,279 ----
X return 0;
X }
X break;
X+ case LAB_COAT:
X+ pline("You feel less sterile.");
X+ break;
X+ case EXPENSIVE_SUIT:
X+ pline("You feel cheap.");
X+ break;
X default: impossible("Unknown type of cloak (%d)", uarmc->otyp);
X }
X setworn((struct obj *)0, W_ARMC);
X***************
X*** 629,634 ****
X--- 637,658 ----
X obj->known = TRUE;
X }
X break;
X+ case RIN_GAIN_INTELLIGENCE:
X+ ABON(A_INT) += obj->spe;
X+ flags.botl = 1;
X+ if(obj->spe || objects[RIN_GAIN_INTELLIGENCE].oc_name_known) {
X+ makeknown(RIN_GAIN_INTELLIGENCE);
X+ obj->known = TRUE;
X+ }
X+ break;
X+ case RIN_GAIN_DEXTERITY:
X+ ABON(A_DEX) += obj->spe;
X+ flags.botl = 1;
X+ if(obj->spe || objects[RIN_GAIN_DEXTERITY].oc_name_known) {
X+ makeknown(RIN_GAIN_DEXTERITY);
X+ obj->known = TRUE;
X+ }
X+ break;
X case RIN_INCREASE_DAMAGE:
X u.udaminc += obj->spe;
X break;
X***************
X*** 705,710 ****
X--- 729,742 ----
X break;
X case RIN_GAIN_STRENGTH:
X ABON(A_STR) -= obj->spe;
X+ flags.botl = 1;
X+ break;
X+ case RIN_GAIN_INTELLIGENCE:
X+ ABON(A_INT) -= obj->spe;
X+ flags.botl = 1;
X+ break;
X+ case RIN_GAIN_DEXTERITY:
X+ ABON(A_DEX) -= obj->spe;
X flags.botl = 1;
X break;
X case RIN_INCREASE_DAMAGE:
Xdiff -c -r ../nh31c/src/dokick.c ./src/dokick.c
X*** ../nh31c/src/dokick.c Thu Aug 05 10:23:46 1993
X--- ./src/dokick.c Fri Aug 20 13:25:00 1993
X***************
X*** 260,265 ****
X--- 260,267 ----
X goldreqd = 500L;
X else if (mtmp->data == &mons[PM_CAPTAIN])
X goldreqd = 750L;
X+ else if (mtmp->data == &mons[PM_GENERAL])
X+ goldreqd = 1000L;
X
X if (goldreqd) {
X if (gold->quan > goldreqd +
Xdiff -c -r ../nh31c/src/drawing.c ./src/drawing.c
X*** ../nh31c/src/drawing.c Fri Jun 11 14:36:22 1993
X--- ./src/drawing.c Fri Aug 20 13:25:02 1993
X***************
X*** 152,157 ****
X--- 152,159 ----
X DEF_LIZARD,
X DEF_WORM_TAIL,
X DEF_MIMIC_DEF, /* 60 */
X+ DEF_BADCOINS,
X+ DEF_BADLUNCH
X };
X
X const char *monexplain[MAXMCLASSES] = {
X***************
X*** 178,184 ****
X
X "human", "ghost", "golem",
X "demon", "sea monster", "lizard",
X! "long worm tail", "mimic"
X };
X
X /*
X--- 180,187 ----
X
X "human", "ghost", "golem",
X "demon", "sea monster", "lizard",
X! "long worm tail", "mimic", "gold",
X! "food"
X };
X
X /*
Xdiff -c -r ../nh31c/src/engrave.c ./src/engrave.c
X*** ../nh31c/src/engrave.c Thu Aug 05 10:23:56 1993
X--- ./src/engrave.c Fri Aug 20 13:25:06 1993
X***************
X*** 865,871 ****
X case ENGRAVE:
X multi = -(len/10);
X if ((otmp->oclass == WEAPON_CLASS) &&
X! ((otmp->otyp != ATHAME) || otmp->cursed)) {
X multi = -len;
X maxelen = ((otmp->spe + 3) * 2) + 1;
X /* -2 = 3, -1 = 5, 0 = 7, +1 = 9, +2 = 11
X--- 865,872 ----
X case ENGRAVE:
X multi = -(len/10);
X if ((otmp->oclass == WEAPON_CLASS) &&
X! ((otmp->otyp != ATHAME) || otmp->cursed) &&
X! ((otmp->otyp != SHARPENED_PENCIL) || otmp->cursed)) {
X multi = -len;
X maxelen = ((otmp->spe + 3) * 2) + 1;
X /* -2 = 3, -1 = 5, 0 = 7, +1 = 9, +2 = 11
Xdiff -c -r ../nh31c/src/hack.c ./src/hack.c
X*** ../nh31c/src/hack.c Thu Aug 05 10:24:00 1993
X--- ./src/hack.c Fri Aug 20 13:25:08 1993
X***************
X*** 1220,1226 ****
X if(monstinroom(&mons[PM_SOLDIER], roomno) ||
X monstinroom(&mons[PM_SERGEANT], roomno) ||
X monstinroom(&mons[PM_LIEUTENANT], roomno) ||
X! monstinroom(&mons[PM_CAPTAIN], roomno))
X You("enter a military barracks!");
X else
X You("enter an abandoned barracks.");
X--- 1220,1227 ----
X if(monstinroom(&mons[PM_SOLDIER], roomno) ||
X monstinroom(&mons[PM_SERGEANT], roomno) ||
X monstinroom(&mons[PM_LIEUTENANT], roomno) ||
X! monstinroom(&mons[PM_CAPTAIN], roomno) ||
X! monstinroom(&mons[PM_GENERAL], roomno))
X You("enter a military barracks!");
X else
X You("enter an abandoned barracks.");
Xdiff -c -r ../nh31c/src/makemon.c ./src/makemon.c
X*** ../nh31c/src/makemon.c Thu Aug 05 10:24:08 1993
X--- ./src/makemon.c Fri Aug 20 13:25:12 1993
X***************
X*** 174,179 ****
X--- 174,180 ----
X w1 = rn2(2) ? BROADSWORD : LONG_SWORD;
X break;
X case PM_CAPTAIN:
X+ case PM_GENERAL:
X #endif
X case PM_WATCH_CAPTAIN:
X w1 = rn2(2) ? LONG_SWORD : SILVER_SABER;
X***************
X*** 404,409 ****
X--- 405,441 ----
X (void) mongets(mtmp, LUCERN_HAMMER);
X else (void) mongets(mtmp, AKLYS);
X break;
X+ case 6:
X+ (void) mongets(mtmp, SPEAR);
X+ break;
X+ case 7:
X+ m_initthrow(mtmp, SPEAR, 3);
X+ break;
X+ case 8:
X+ (void) mongets(mtmp, SLING);
X+ m_initthrow(mtmp, ROCK, 12);
X+ break;
X+ case 9:
X+ (void) mongets(mtmp, CLUB);
X+ break;
X+ case 10:
X+ m_initthrow(mtmp, JAVELIN, 5);
X+ break;
X+ case 11:
X+ (void) mongets(mtmp, AXE);
X+ break;
X+ case 12:
X+ (void) mongets(mtmp, SHORT_SWORD);
X+ break;
X+ case 13:
X+ (void) mongets(mtmp, MORNING_STAR);
X+ break;
X+ case 14:
X+ (void) mongets(mtmp, WAR_HAMMER);
X+ break;
X+ case 15:
X+ (void) mongets(mtmp, FLAIL);
X+ break;
X default:
X break;
X }
X***************
X*** 446,451 ****
X--- 478,484 ----
X case PM_SERGEANT: mac = 0; break;
X case PM_LIEUTENANT: mac = -2; break;
X case PM_CAPTAIN: mac = -3; break;
X+ case PM_GENERAL: mac = -5; break;
X # endif
X case PM_WATCHMAN: mac = 3; break;
X case PM_WATCH_CAPTAIN: mac = -2; break;
X***************
X*** 691,696 ****
X--- 724,731 ----
X case S_EEL:
X mtmp->minvis = TRUE;
X break;
X+ case S_BADCOINS:
X+ case S_BADLUNCH:
X case S_LEPRECHAUN:
X mtmp->msleep = TRUE;
X break;
X***************
X*** 1337,1342 ****
X--- 1372,1378 ----
X case PM_CLAY_GOLEM: return 50;
X case PM_STONE_GOLEM: return 60;
X case PM_IRON_GOLEM: return 80;
X+ case PM_MIST_GOLEM: return 60;
X default: return 0;
X }
X }
Xdiff -c -r ../nh31c/src/mhitu.c ./src/mhitu.c
X*** ../nh31c/src/mhitu.c Thu Aug 05 10:24:12 1993
X--- ./src/mhitu.c Fri Aug 20 13:25:16 1993
X***************
X*** 1671,1676 ****
X--- 1671,1682 ----
X make_stunned(HStun + stun, TRUE);
X }
X break;
X+ case AD_TLPT:
X+ if(!mtmp->mcan && canseemon(mtmp) && mtmp->mcansee && rn2(5)) {
X+ pline("%s stares disconcertingly at you!", Monnam(mtmp));
X+ tele();
X+ }
X+ break;
X case AD_BLND:
X if(!mtmp->mcan && canseemon(mtmp) && !defends(AD_BLND, uwep) &&
X distu(mtmp->mx,mtmp->my) <= BOLT_LIM*BOLT_LIM) {
Xdiff -c -r ../nh31c/src/mklev.c ./src/mklev.c
X*** ../nh31c/src/mklev.c Thu Aug 05 10:24:16 1993
X--- ./src/mklev.c Fri Aug 20 13:25:18 1993
X***************
X*** 719,727 ****
X--- 719,733 ----
X else if(depth(&u.uz) > 4 && !rn2(6)) mkroom(COURT);
X else if(depth(&u.uz) > 6 && !rn2(7)) mkroom(ZOO);
X else if(depth(&u.uz) > 8 && !rn2(5)) mkroom(TEMPLE);
X+ else if(depth(&u.uz) > 8 && !rn2(8)) mkroom(REALZOO);
X+ else if(depth(&u.uz) > 8 && !rn2(7)) mkroom(BADFOODSHOP);
X+ else if(depth(&u.uz) > 7 && !rn2(7)) mkroom(ANTHILL);
X else if(depth(&u.uz) > 9 && !rn2(5) &&
X !(mons[PM_KILLER_BEE].geno & (G_GENOD | G_EXTINCT))) mkroom(BEEHIVE);
X else if(depth(&u.uz) > 11 && !rn2(6)) mkroom(MORGUE);
X+ else if(depth(&u.uz) > 13 && !rn2(5)) mkroom(WASPHIVE);
X+ else if(depth(&u.uz) > 13 && !rn2(7)) mkroom(LEPRECOURT);
X+ else if(depth(&u.uz) > 14 && !rn2(5)) mkroom(GIANTCOURT);
X else
X #ifdef ARMY
X if(depth(&u.uz) > 14 && !rn2(4) &&
Xdiff -c -r ../nh31c/src/mkroom.c ./src/mkroom.c
X*** ../nh31c/src/mkroom.c Thu Aug 05 10:24:18 1993
X--- ./src/mkroom.c Fri Aug 20 13:25:24 1993
X***************
X*** 22,27 ****
X--- 22,34 ----
X static void NDECL(mktemple);
X static coord * FDECL(shrine_pos, (int));
X static struct permonst * NDECL(morguemon);
X+ static struct permonst * NDECL(waspmon);
X+ static struct permonst * NDECL(giantmon);
X+ static struct permonst * NDECL(lepremon);
X+ static struct permonst * NDECL(badfoodmon);
X+ static struct permonst * NDECL(realzoomon);
X+ static struct permonst * NDECL(roomelevenmon);
X+ static struct permonst * NDECL(anthillmon);
X #ifdef ARMY
X static struct permonst * NDECL(squadmon);
X #endif
X***************
X*** 59,64 ****
X--- 66,78 ----
X case BARRACKS: mkzoo(BARRACKS); break;
X case SWAMP: mkswamp(); break;
X case TEMPLE: mktemple(); break;
X+ case WASPHIVE: mkzoo(WASPHIVE); break;
X+ case GIANTCOURT: mkzoo(GIANTCOURT); break;
X+ case LEPRECOURT: mkzoo(LEPRECOURT); break;
X+ case BADFOODSHOP: mkzoo(BADFOODSHOP); break;
X+ case REALZOO: mkzoo(REALZOO); break;
X+ case ROOMELEVEN: mkzoo(ROOMELEVEN); break;
X+ case ANTHILL: mkzoo(ANTHILL); break;
X default: impossible("Tried to make a room of type %d.", roomtype);
X }
X }
X***************
X*** 227,232 ****
X--- 241,248 ----
X
X sh = sroom->fdoor;
X switch(type) {
X+ case GIANTCOURT:
X+ case LEPRECOURT:
X case COURT:
X if(level.flags.is_maze_lev) {
X for(tx = sroom->lx; tx <= sroom->hx; tx++)
X***************
X*** 242,247 ****
X--- 258,264 ----
X throne_placed:
X /* TODO: try to ensure the enthroned monster is an M2_PRINCE */
X break;
X+ case WASPHIVE:
X case BEEHIVE:
X tx = sroom->lx + (sroom->hx - sroom->lx + 1)/2;
X ty = sroom->ly + (sroom->hy - sroom->ly + 1)/2;
X***************
X*** 277,286 ****
X--- 294,312 ----
X continue;
X mon = makemon(
X (type == COURT) ? courtmon() :
X+ (type == GIANTCOURT) ? giantmon() :
X+ (type == LEPRECOURT) ? lepremon() :
X #ifdef ARMY
X (type == BARRACKS) ? squadmon() :
X #endif
X (type == MORGUE) ? morguemon() :
X+ (type == WASPHIVE) ? waspmon() :
X+ (type == BADFOODSHOP) ? badfoodmon() :
X+ (type == REALZOO) ? realzoomon() :
X+ (type == ROOMELEVEN) ? roomelevenmon() :
X+ (type == ANTHILL) ?
X+ (sx == tx && sy == ty ? &mons[PM_QUEEN_ANT] :
X+ anthillmon() ) :
X (type == BEEHIVE) ?
X (sx == tx && sy == ty ? &mons[PM_QUEEN_BEE] :
X &mons[PM_KILLER_BEE]) :
X***************
X*** 294,299 ****
X--- 320,326 ----
X }
X }
X switch(type) {
X+ case LEPRECOURT:
X case ZOO:
X if(sroom->doorct)
X {
X***************
X*** 317,333 ****
X if(!rn2(3))
X (void) mksobj_at(LUMP_OF_ROYAL_JELLY, sx, sy, TRUE);
X break;
X #ifdef ARMY
X case BARRACKS:
X if(!rn2(20)) /* the payroll and some loot */
X (void) mksobj_at((rn2(3)) ? LARGE_BOX : CHEST,
X sx, sy, TRUE);
X break;
X- #endif
X }
X }
X switch (type) {
X case COURT:
X levl[tx][ty].typ = THRONE;
X (void) somexy(sroom, &mm);
X mkgold((long) rn1(50 * level_difficulty(),10), mm.x, mm.y);
X--- 344,366 ----
X if(!rn2(3))
X (void) mksobj_at(LUMP_OF_ROYAL_JELLY, sx, sy, TRUE);
X break;
X+ case ROOMELEVEN:
X+ case ANTHILL:
X+ case REALZOO:
X+ case WASPHIVE:
X #ifdef ARMY
X case BARRACKS:
X+ #endif
X if(!rn2(20)) /* the payroll and some loot */
X (void) mksobj_at((rn2(3)) ? LARGE_BOX : CHEST,
X sx, sy, TRUE);
X break;
X }
X }
X switch (type) {
X case COURT:
X+ case LEPRECOURT:
X+ case GIANTCOURT:
X levl[tx][ty].typ = THRONE;
X (void) somexy(sroom, &mm);
X mkgold((long) rn1(50 * level_difficulty(),10), mm.x, mm.y);
X***************
X*** 340,345 ****
X--- 373,379 ----
X break;
X #endif
X case ZOO:
X+ case REALZOO:
X level.flags.has_zoo = 1;
X break;
X case MORGUE:
X***************
X*** 349,354 ****
X--- 383,390 ----
X level.flags.has_swamp = 1;
X break;
X case BEEHIVE:
X+ case WASPHIVE:
X+ case ANTHILL:
X level.flags.has_beehive = 1;
X break;
X }
X***************
X*** 596,601 ****
X--- 632,653 ----
X #endif /* OVL0 */
X #ifdef OVLB
X
X+ /* Giant Court */
X+ struct permonst *
X+ giantmon()
X+ {
X+ int i = rn2(60) + rn2(3*level_difficulty());
X+ return(mkclass(S_GIANT,0));
X+ }
X+
X+ /* Leprechaun court; Croesus taken out because of Fort Luidos */
X+ struct permonst *
X+ lepremon()
X+ {
X+ int i = rn2(60) + rn2(3*level_difficulty());
X+ return(mkclass(S_LEPRECHAUN,0));
X+ }
X+
X struct permonst *
X courtmon()
X {
X***************
X*** 611,624 ****
X else return(mkclass(S_KOBOLD,0));
X }
X
X #ifdef ARMY
X! #define NSTYPES (PM_CAPTAIN-PM_SOLDIER+1)
X
X static struct {
X unsigned pm;
X unsigned prob;
X } squadprob[NSTYPES] = {
X! {PM_SOLDIER, 80}, {PM_SERGEANT, 15}, {PM_LIEUTENANT, 4}, {PM_CAPTAIN, 1}
X };
X
X static struct permonst *
X--- 663,735 ----
X else return(mkclass(S_KOBOLD,0));
X }
X
X+ /* Real zoo; used Archaeologist instead of Zookeeper */
X+ struct permonst *
X+ realzoomon()
X+ {
X+ int i = rn2(60) + rn2(3*level_difficulty());
X+ if (i > 125) return(&mons[PM_JUMBO_THE_ELEPHANT]);
X+ else if (i > 100) return(&mons[PM_MUMAK]);
X+ else if (i > 75) return(&mons[PM_ARCHEOLOGIST]);
X+ else if (i > 60) return(&mons[PM_TIGER]);
X+ else if (i > 50) return(&mons[PM_APE]);
X+ else if (i > 45) return(&mons[PM_PANTHER]);
X+ else if (i > 30) return(&mons[PM_LEOPARD]);
X+ else if (i > 15) return(&mons[PM_JAGUAR]);
X+ else return(&mons[PM_DOG]);
X+ }
X+
X+ /* Room Eleven */
X+ struct permonst *
X+ roomelevenmon()
X+ {
X+ int i = rn2(60);
X+ if (i > 50) return(&mons[PM_BUTCH]);
X+ else if (i > 40) return(&mons[PM_YUVAL]);
X+ else if (i > 30) return(&mons[PM_TOM]);
X+ else return(mkclass(S_FUNGUS,0));
X+ }
X+
X+ /* Anthill */
X+ struct permonst *
X+ anthillmon()
X+ {
X+ int i = rn2(60) + rn2(3*level_difficulty());
X+ if (i > 125) return(&mons[PM_QUEEN_ANT]);
X+ else if (i > 100) return(&mons[PM_SOLDIER_ANT]);
X+ else if (i > 85) return(&mons[PM_BLACK_ANT]);
X+ else if (i > 70) return(&mons[PM_SNOW_ANT]);
X+ else if (i > 55) return(&mons[PM_FIRE_ANT]);
X+ else return(&mons[PM_GIANT_ANT]);
X+ }
X+
X+ /* Wasp hive */
X+ struct permonst *
X+ waspmon()
X+ {
X+ int i = rn2(60) + rn2(3*level_difficulty());
X+ if (i > 100) return(&mons[PM_BLACK_WASP]);
X+ else if (i > 65) return(&mons[PM_GIANT_WASP]);
X+ else return(&mons[PM_YELLOW_JACKET]);
X+ }
X+
X+ /* Bad food */
X+ struct permonst *
X+ badfoodmon()
X+ {
X+ int i = rn2(60) + rn2(3*level_difficulty());
X+ return(mkclass(S_BADLUNCH,0));
X+ }
X+
X #ifdef ARMY
X! #define NSTYPES (PM_GENERAL-PM_SOLDIER+1)
X
X static struct {
X unsigned pm;
X unsigned prob;
X } squadprob[NSTYPES] = {
X! {PM_SOLDIER, 80}, {PM_SERGEANT, 15}, {PM_LIEUTENANT, 4}, {PM_CAPTAIN, 1},
X! {PM_GENERAL, 1}
X };
X
X static struct permonst *
Xdiff -c -r ../nh31c/src/mon.c ./src/mon.c
X*** ../nh31c/src/mon.c Thu Aug 05 10:24:20 1993
X--- ./src/mon.c Fri Aug 20 13:25:26 1993
X***************
X*** 51,56 ****
X--- 51,74 ----
X int mndx = monsndx(mdat);
X
X switch(mndx) {
X+ case PM_KILLER_FOOD_RATION:
X+ (void)mksobj_at(FOOD_RATION,x,y,TRUE);
X+ goto default_1;
X+ case PM_KILLER_TRIPE_RATION:
X+ (void)mksobj_at(TRIPE_RATION,x,y,TRUE);
X+ goto default_1;
X+ case PM_RAVENOUS_CREAM_PIE:
X+ (void)mksobj_at(CREAM_PIE,x,y,TRUE);
X+ goto default_1;
X+ case PM_TOM: /* NetHack-- "author" */
X+ (void)mksobj_at(RIN_AGGRAVATE_MONSTER,x,y,FALSE);
X+ (void)mksobj_at(SCR_MAGIC_MAPPING,x,y,FALSE);
X+ (void)mksobj_at(SCR_MAGIC_MAPPING,x,y,FALSE);
X+ (void)mksobj_at(POT_HALLUCINATION,x,y,FALSE);
X+ goto default_1;
X+ case PM_YUVAL:
X+ (void)mksobj_at(BUGLE,x,y,FALSE);
X+ goto default_1;
X case PM_GRAY_DRAGON:
X case PM_RED_DRAGON:
X case PM_ORANGE_DRAGON:
X***************
X*** 153,158 ****
X--- 171,188 ----
X obj = mksobj_at(LEATHER_ARMOR, x, y, TRUE);
X mtmp->mnamelth = 0;
X break;
X+ case PM_PILE_OF_KILLER_GOLD_COINS:
X+ mkgold(rnd(200),x,y);
X+ /* fall through */
X+ case PM_PILE_OF_CREEPING_GOLD_COINS:
X+ mkgold(rnd(100),x,y);
X+ /* fall through */
X+ case PM_GOLD_MIMIC:
X+ mkgold(rnd(50),x,y);
X+ /* fall through */
X+ case PM_PILE_OF_SILVER_COINS:
X+ mkgold(rnd(25),x,y);
X+ break;
X default_1:
X default:
X if (mdat->geno & G_NOCORPSE)
Xdiff -c -r ../nh31c/src/mondata.c ./src/mondata.c
X*** ../nh31c/src/mondata.c Thu Aug 05 10:24:22 1993
X--- ./src/mondata.c Fri Aug 20 13:25:28 1993
X***************
X*** 359,364 ****
X--- 359,365 ----
X {PM_SOLDIER, PM_SERGEANT},
X {PM_SERGEANT, PM_LIEUTENANT},
X {PM_LIEUTENANT, PM_CAPTAIN},
X+ {PM_CAPTAIN, PM_GENERAL},
X #endif
X {PM_WATCHMAN, PM_WATCH_CAPTAIN},
X {PM_BABY_CROCODILE, PM_CROCODILE},
Xdiff -c -r ../nh31c/src/monst.c ./src/monst.c
X*** ../nh31c/src/monst.c Fri Jun 11 14:37:08 1993
X--- ./src/monst.c Fri Aug 20 13:25:50 1993
X***************
X*** 123,128 ****
X--- 123,138 ----
X 30, 10, 0, MS_SILENT, MZ_TINY, MR_FIRE, MR_FIRE,
X M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE,
X M2_HOSTILE, 0, C(RED) },
X+ { "snow ant", S_ANT, 3, 18, 3, 10, 0, (G_GENO | G_SGROUP | 1),
X+ { { AT_BITE, AD_COLD, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 30, 10, 0, MS_SILENT, MZ_TINY, MR_COLD, MR_COLD,
X+ M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE,
X+ M2_HOSTILE, 0, C(CYAN) },
X+ { "black ant", S_ANT, 3, 18, 3, 10, 0, (G_GENO | G_SGROUP | 1),
X+ { { AT_BITE, AD_ACID, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 30, 10, 0, MS_SILENT, MZ_TINY, MR_ACID, MR_ACID,
X+ M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE | M1_ACID,
X+ M2_HOSTILE, 0, C(BLACK) },
X { "giant beetle", S_ANT, 5, 6, 4, 0, 0, (G_GENO | 3),
X { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK,
X NO_ATTK, NO_ATTK, NO_ATTK },
X***************
X*** 135,140 ****
X--- 145,182 ----
X 1, 5, 0, MS_BUZZ, MZ_TINY, MR_POISON, MR_POISON,
X M1_ANIMAL | M1_FLY | M1_NOHANDS | M1_POIS,
X M2_HOSTILE | M2_FEMALE | M2_PRINCE, 0, C(HI_LORD) },
X+ { "queen ant", S_ANT, 11, 18, 3, 0, 0, (G_GENO | G_NOGEN),
X+ { { AT_BITE, AD_PHYS, 2, 4 }, { AT_STNG, AD_DRST, 3, 4 },
X+ NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 20, 20, 0, MS_SILENT, MZ_TINY, MR_POISON, MR_POISON,
X+ M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_OVIPAROUS | M1_CARNIVORE,
X+ M2_HOSTILE | M2_FEMALE | M2_LORD, 0, C(HI_LORD) },
X+ { "yellow jacket", S_ANT, 3, 18, -1, 0, 0, (G_GENO | 1),
X+ { { AT_STNG, AD_DRST, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 10, 10, 0, MS_BUZZ, MZ_TINY, MR_POISON, MR_POISON,
X+ M1_FLY | M1_CONCEAL | M1_NOHANDS | M1_ANIMAL | M1_OMNIVORE,
X+ M2_HOSTILE, 0, C(YELLOW) },
X+ { "killer beetle", S_ANT, 6, 6, 4, 0, 0, (G_GENO | 1),
X+ { { AT_BITE, AD_PHYS, 3, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 10, 10, 0, MS_SILENT, MZ_MEDIUM, MR_POISON, MR_POISON,
X+ M1_NOHANDS | M1_ANIMAL | M1_POIS | M1_OMNIVORE,
X+ M2_HOSTILE, 0, C(BLACK) },
X+ { "giant wasp", S_ANT, 6, 18, -1, 0, 0, (G_GENO | G_LGROUP | 1),
X+ { { AT_STNG, AD_DRST, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 10, 10, 0, MS_BUZZ, MZ_SMALL, MR_POISON, MR_POISON,
X+ M1_FLY | M1_CONCEAL | M1_NOHANDS | M1_ANIMAL | M1_OMNIVORE | M1_POIS,
X+ M2_HOSTILE, 0, C(RED) },
X+ { "black wasp", S_ANT, 9, 18, -1, 0, 0, (G_GENO | G_LGROUP | 2),
X+ { { AT_STNG, AD_DRST, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 10, 10, 0, MS_BUZZ, MZ_TINY, MR_POISON, MR_POISON,
X+ M1_FLY | M1_CONCEAL | M1_NOHANDS | M1_ANIMAL | M1_OMNIVORE | M1_POIS,
X+ M2_HOSTILE, 0, C(BLACK) },
X+ { "the King Bee", S_ANT, 13, 18, -1, 0, 0, (G_UNIQ | G_NOCORPSE | 1),
X+ { { AT_STNG, AD_DRST, 1, 12 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 10, 10, 0, MS_BUZZ, MZ_SMALL, MR_POISON, MR_POISON,
X+ M1_FLY | M1_NOHANDS | M1_ANIMAL | M1_POIS | M1_OMNIVORE,
X+ M2_NOPOLY | M2_PRINCE | M2_MALE | M2_PNAME | M2_HOSTILE | M2_STALK,
X+ 0, C(HI_LORD) },
X /* blobs */
X { "acid blob", S_BLOB, 1, 3, 8, 0, 0, (G_GENO | 2),
X { { AT_NONE, AD_ACID, 1, 8 }, NO_ATTK, NO_ATTK,
X***************
X*** 143,148 ****
X--- 185,207 ----
X MR_SLEEP | MR_POISON | MR_ACID | MR_STONE, MR_SLEEP | MR_STONE,
X M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
X M1_MINDLESS | M1_ACID, M2_WANDER | M2_NEUTER, 0, C(GREEN) },
X+ { "red blob", S_BLOB, 1, 3, 8, 0, 0, (G_GENO | 1),
X+ { { AT_TUCH, AD_FIRE, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 30, 10, 0, MS_SILENT, MZ_TINY, MR_FIRE | MR_SLEEP, MR_FIRE,
X+ M1_AMORPHOUS | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
X+ M1_MINDLESS | M1_ACID, M2_WANDER | M2_NEUTER, 0, C(RED) },
X+ { "white blob", S_BLOB, 1, 3, 8, 0, 0, (G_GENO | 1),
X+ { { AT_TUCH, AD_SLEE, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 30, 10, 0, MS_SILENT, MZ_TINY, MR_COLD | MR_STONE | MR_SLEEP,
X+ MR_COLD | MR_STONE, M1_AMORPHOUS | M1_BREATHLESS | M1_NOEYES |
X+ M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_ACID, M2_WANDER | M2_NEUTER,
X+ 0, C(WHITE) },
X+ { "blue blob", S_BLOB, 1, 3, 8, 0, 0, (G_GENO | 1),
X+ { { AT_TUCH, AD_ELEC, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 30, 10, 0, MS_SILENT, MZ_TINY, MR_ELEC | MR_STONE | MR_SLEEP,
X+ MR_ELEC | MR_STONE, M1_AMORPHOUS | M1_BREATHLESS | M1_NOEYES |
X+ M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_ACID, M2_WANDER | M2_NEUTER,
X+ 0, C(BLUE) },
X { "quivering blob", S_BLOB, 5, 1, 8, 0, 0, (G_GENO | 2),
X { { AT_TUCH, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK,
X NO_ATTK, NO_ATTK, NO_ATTK },
X***************
X*** 159,164 ****
X--- 218,242 ----
X M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_OMNIVORE |
X M1_ACID, M2_WANDER | M2_HOSTILE | M2_NEUTER,
X 0, C(CYAN) },
X+ { "poisonous blob", S_BLOB, 5, 6, 8, 0, 0, (G_GENO | 1),
X+ { { AT_TUCH, AD_DRST, 1, 12 }, { AT_SPIT, AD_DRST, 1, 4 },
X+ NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 200, 200, 0, MS_SILENT, MZ_SMALL,
X+ MR_SLEEP | MR_POISON, MR_POISON,
X+ M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_OMNIVORE |
X+ M1_POIS, M2_WANDER | M2_HOSTILE | M2_NEUTER, 0, C(BLACK) },
X+ { "gigantic blob", S_BLOB, 10, 1, 8, 0, 0, (G_GENO | 2),
X+ { { AT_ENGL, AD_DISE, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 200, 200, 0, MS_SILENT, MZ_SMALL,
X+ MR_SLEEP | MR_POISON, MR_POISON,
X+ M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_OMNIVORE |
X+ M1_POIS, M2_WANDER | M2_HOSTILE | M2_NEUTER, 0, C(BLACK) },
X+ { "The Blob", S_BLOB, 16, 1, 8, 0, 0, (G_UNIQ | G_NOCORPSE | 1),
X+ { { AT_ENGL, AD_DISE, 1, 12 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 200, 200, 0, MS_SILENT, MZ_SMALL,
X+ MR_SLEEP | MR_POISON, MR_POISON,
X+ M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_OMNIVORE |
X+ M1_POIS, M2_NEUTER | M2_PNAME | M2_HOSTILE | M2_STALK, 0, C(RED) },
X /* cockatrice */
X { "cockatrice", S_COCKATRICE, 5, 6, 6, 30, 0, (G_GENO | 5),
X { { AT_BITE, AD_PHYS, 1, 3 }, { AT_TUCH, AD_STON, 0, 0 },
X***************
X*** 166,177 ****
X--- 244,271 ----
X 30, 30, 0, MS_HISS, MZ_SMALL,
X MR_POISON | MR_STONE, MR_POISON | MR_STONE,
X M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS, M2_HOSTILE, 0, C(YELLOW) },
X+ { "chickatrice", S_COCKATRICE, 2, 3, 3, 15, 0, (G_GENO | G_SGROUP | 1),
X+ { { AT_BITE, AD_PHYS, 1, 3 }, { AT_TUCH, AD_STON, 0, 0 },
X+ NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 30, 30, 0, MS_HISS, MZ_SMALL,
X+ MR_POISON | MR_STONE, MR_POISON | MR_STONE,
X+ M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS, M2_HOSTILE, 0, C(YELLOW) },
X /* dogs and other canines */
X { "jackal", S_DOG, 0, 12, 7, 0, 0, (G_GENO | G_SGROUP | 3),
X { { AT_BITE, AD_PHYS, 1, 2 }, NO_ATTK, NO_ATTK,
X NO_ATTK, NO_ATTK, NO_ATTK },
X 300, 250, 0, MS_BARK, MZ_SMALL, 0, 0,
X M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, C(BROWN) },
X+ { "dingo", S_DOG, 0, 12, 6, 0, 0, (G_GENO | G_SGROUP | 1),
X+ { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 250, 250, 0, MS_BARK, MZ_SMALL, 0, 0,
X+ M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, C(BROWN) },
X+ { "coyote", S_DOG, 1, 12, 6, 0, 0, (G_GENO | G_SGROUP | 1),
X+ { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 250, 250, 0, MS_BARK, MZ_SMALL, 0, 0,
X+ M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, C(BROWN) },
X { "werejackal", S_DOG, 2, 12, 7, 10, -7, G_NOGEN | G_NOCORPSE,
X { { AT_BITE, AD_WERE, 1, 4 }, NO_ATTK, NO_ATTK,
X NO_ATTK, NO_ATTK, NO_ATTK },
X***************
X*** 219,224 ****
X--- 313,333 ----
X 700, 300, 0, MS_BARK, MZ_LARGE, MR_COLD, MR_COLD,
X M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
X M2_HOSTILE | M2_STRONG, 0, C(CYAN) },
X+ { "pit bull", S_DOG, 9, 12, 4, 0, -5,
X+ (G_GENO | G_SGROUP | 2),
X+ { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 350, 350, 0, MS_BARK, MZ_MEDIUM,
X+ 0, 0, M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
X+ M2_HOSTILE | M2_DOMESTIC, 0, C(BLACK) },
X+ { "Wile E. Coyote", S_DOG, 10, 12, 6, 0, 0, (G_UNIQ | G_NOCORPSE | 1),
X+ { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ WT_HUMAN, 250, 0, MS_LAUGH, MZ_HUMAN, 0, 0,
X+ M1_HUMANOID | M1_CARNIVORE | M1_REGEN,
X+ M2_HOSTILE | M2_STALK | M2_PNAME | M2_MALE | M2_NOPOLY | M2_LORD |
X+ M2_GREEDY | M2_JEWELS | M2_COLLECT | M2_MAGIC,
X+ 0, C(BROWN) },
X { "hell hound pup", S_DOG, 7, 12, 4, 20, -5,
X (G_HELL | G_GENO | G_SGROUP | 1),
X { { AT_BITE, AD_PHYS, 2, 6 }, { AT_BREA, AD_FIRE, 2, 6 },
X***************
X*** 248,259 ****
X--- 357,404 ----
X 10, 10, 0, MS_SILENT, MZ_SMALL, 0, 0,
X M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD,
X M2_HOSTILE | M2_NEUTER, 0, C(BLUE) },
X+ { "burning eye", S_EYE, 2, 1, 9, 10, 0, (G_GENO | 1),
X+ { { AT_NONE, AD_FIRE, 1, 6 }, NO_ATTK, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 10, 10, 0, MS_SILENT, MZ_SMALL, MR_FIRE, MR_FIRE,
X+ M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD,
X+ M2_HOSTILE | M2_NEUTER, 0, C(RED) },
X+ { "glowing eye", S_EYE, 6, 13, 4, 0, 0, (G_GENO | 1),
X+ { { AT_GAZE, AD_BLND, 0, 0 }, NO_ATTK, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 10, 10, 0, MS_SILENT, MZ_SMALL, 0, 0,
X+ M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD | M1_POIS,
X+ M2_HOSTILE | M2_NEUTER, 0, C(GREEN) },
X { "freezing sphere", S_EYE, 6, 13, 4, 0, 0, (G_GENO | 2),
X { { AT_EXPL, AD_COLD, 4, 6 }, NO_ATTK, NO_ATTK,
X NO_ATTK, NO_ATTK, NO_ATTK },
X 10, 10, 0, MS_SILENT, MZ_SMALL, MR_COLD, MR_COLD,
X M1_FLY | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
X M2_HOSTILE | M2_NEUTER, 0, C(WHITE) },
X+ { "flaming sphere", S_EYE, 6, 13, 4, 0, 0, (G_GENO | 2),
X+ { { AT_EXPL, AD_FIRE, 4, 6 }, NO_ATTK, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 10, 10, 0, MS_SILENT, MZ_SMALL, MR_FIRE, MR_FIRE,
X+ M1_FLY | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
X+ M2_HOSTILE | M2_NEUTER, 0, C(RED) },
X+ { "bloodshot eye", S_EYE, 6, 13, 4, 0, 0, (G_GENO | 1),
X+ { { AT_NONE, AD_STUN, 0, 0 }, NO_ATTK, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 10, 10, 0, MS_SILENT, MZ_SMALL, 0, 0,
X+ M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD | M1_POIS,
X+ M2_HOSTILE | M2_NEUTER, 0, C(RED) },
X+ { "blinking eye", S_EYE, 6, 13, 4, 0, 0, (G_GENO | 1),
X+ { { AT_GAZE, AD_TLPT, 0, 0 }, NO_ATTK, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 10, 10, 0, MS_SILENT, MZ_SMALL, 0, 0,
X+ M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD | M1_POIS,
X+ M2_HOSTILE | M2_NEUTER, 0, C(BROWN) },
X+ { "beholder", S_EYE, 10, 13, 4, 0, 0, (G_GENO | 1),
X+ { { AT_GAZE, AD_STUN, 0, 0 }, { AT_BITE, AD_PHYS, 3, 4 }, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 10, 10, 0, MS_SILENT, MZ_SMALL, 0, 0,
X+ M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD | M1_TPORT,
X+ M2_HOSTILE | M2_NEUTER, 0, C(HI_LORD) },
X /* felines */
X { "kitten", S_FELINE, 2, 18, 6, 0, 0, (G_GENO | 1),
X { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
X***************
X*** 279,290 ****
X--- 424,465 ----
X 250, 250, 0, MS_MEW, MZ_SMALL, 0, 0,
X M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
X M2_STRONG | M2_DOMESTIC, 0, C(HI_DOMESTIC) },
X+ { "leopard", S_FELINE, 4, 15, 6, 0, 0, (G_GENO | 2),
X+ { { AT_BITE, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
X+ { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 300, 300, 0, MS_GROWL, MZ_LARGE, 0, 0,
X+ M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
X+ M2_HOSTILE, 0, C(YELLOW) },
X+ { "panther", S_FELINE, 6, 12, 6, 0, 0, (G_GENO | 2),
X+ { { AT_BITE, AD_PHYS, 1, 10 }, { AT_CLAW, AD_PHYS, 2, 4 },
X+ { AT_CLAW, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 300, 300, 0, MS_GROWL, MZ_LARGE, 0, 0,
X+ M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
X+ M2_HOSTILE, 0, C(BLACK) },
X { "tiger", S_FELINE, 6, 12, 6, 0, 0, (G_GENO | 2),
X { { AT_CLAW, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 2, 4 },
X { AT_BITE, AD_PHYS, 1, 10 }, NO_ATTK, NO_ATTK, NO_ATTK },
X 600, 300, 0, MS_GROWL, MZ_LARGE, 0, 0,
X M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
X M2_HOSTILE, 0, C(YELLOW) },
X+ { "sabre-toothed cat", S_FELINE, 10, 12, 6, 0, 0, (G_GENO | 2),
X+ { { AT_CLAW, AD_PHYS, 2, 3 }, { AT_CLAW, AD_PHYS, 2, 3 },
X+ { AT_BITE, AD_PHYS, 3, 8 }, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 600, 300, 0, MS_GROWL, MZ_LARGE, 0, 0,
X+ M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
X+ M2_HOSTILE, 0, C(YELLOW) },
X+ { "hellcat", S_FELINE, 13, 15, 6, 0, 0, (G_GENO | 1),
X+ { { AT_CLAW, AD_PHYS, 2, 3 }, { AT_CLAW, AD_PHYS, 2, 3 },
X+ { AT_BITE, AD_PHYS, 3, 8 }, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 600, 300, 0, MS_GROWL, MZ_LARGE, 0, 0,
X+ M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
X+ M2_HOSTILE, 0, C(BROWN) },
X+ { "Rexfelis", S_FELINE, 16, 12, 6, 0, 0, (G_UNIQ | G_NOCORPSE | 1),
X+ { { AT_CLAW, AD_PHYS, 2, 6 }, { AT_CLAW, AD_PHYS, 2, 6 },
X+ { AT_BITE, AD_PHYS, 3, 12 }, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 600, 300, 0, MS_GROWL, MZ_LARGE, 0, 0,
X+ M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
X+ M2_HOSTILE | M2_NOPOLY | M2_PNAME | M2_STALK, 0, C(BROWN) },
X /* gremlins */
X { "gremlin", S_GREMLIN, 5, 12, 2, 25, -9, (G_GENO | 2),
X { { AT_CLAW, AD_PHYS, 1, 6 }, { AT_CLAW, AD_PHYS, 1, 6 },
X***************
X*** 292,303 ****
X--- 467,503 ----
X NO_ATTK, NO_ATTK },
X 100, 20, 0, MS_LAUGH, MZ_SMALL, MR_POISON, 0,
X M1_SWIM | M1_HUMANOID | M1_POIS, M2_STALK, 0, C(GREEN) },
X+ { "gremlin leader", S_GREMLIN, 8, 12, 2, 25, -9, (G_GENO | 2),
X+ { { AT_CLAW, AD_PHYS, 1, 8 }, { AT_CLAW, AD_PHYS, 1, 8 },
X+ { AT_BITE, AD_PHYS, 1, 6 }, { AT_CLAW, AD_CURS, 0, 0 },
X+ NO_ATTK, NO_ATTK },
X+ 100, 30, 0, MS_LAUGH, MZ_SMALL, MR_POISON, 0,
X+ M1_SWIM | M1_HUMANOID | M1_POIS, M2_STALK, 0, C(GREEN) },
X /* humanoids */
X { "hobbit", S_HUMANOID, 1, 9, MARM(10,7), 0, 6, (G_GENO | 2),
X { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
X NO_ATTK, NO_ATTK, NO_ATTK },
X 500, 200, 0, MS_HUMANOID, MZ_SMALL, 0, 0,
X M1_HUMANOID, M2_COLLECT, 0, C(GREEN) },
X+ { "hobbit thief", S_HUMANOID, 2, 9, MARM(10,7), 0, 6, (G_GENO | 1),
X+ { { AT_WEAP, AD_PHYS, 1, 6 }, { AT_TUCH, AD_SGLD, 0, 0 }, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 300, 200, 0, MS_HUMANOID, MZ_SMALL, 0, 0,
X+ M1_HUMANOID, M2_HOSTILE | M2_GREEDY | M2_COLLECT,
X+ 0, C(GREEN) },
X+ { "hobbit bandit", S_HUMANOID, 3, 9, MARM(10,7), 0, 6, (G_GENO | 1),
X+ { { AT_WEAP, AD_PHYS, 1, 6 }, { AT_TUCH, AD_SITM, 0, 0 }, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 200, 200, 0, MS_HUMANOID, MZ_SMALL, 0, 0,
X+ M1_HUMANOID, M2_HOSTILE | M2_GREEDY | M2_COLLECT,
X+ 0, C(GREEN) },
X+ { "Bilbo", S_HUMANOID, 7, 9, MARM(10,7), 0, 6, (G_UNIQ | G_NOCORPSE | 1),
X+ { { AT_WEAP, AD_PHYS, 3, 6 }, { AT_TUCH, AD_SITM, 0, 0 }, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 200, 200, 0, MS_HUMANOID, MZ_SMALL, 0, 0,
X+ M1_HUMANOID,
X+ M2_NOPOLY | M2_HOSTILE | M2_GREEDY | M2_COLLECT | M2_PRINCE | M2_PNAME,
X+ 0, C(GREEN) },
X { "dwarf", S_HUMANOID, 2, 6, MARM(10,4), 10, 4, (G_GENO | 3),
X { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK,
X NO_ATTK, NO_ATTK, NO_ATTK },
X***************
X*** 310,315 ****
X--- 510,532 ----
X NO_ATTK, NO_ATTK, NO_ATTK },
X 1250, 250, 0, MS_GROWL, MZ_LARGE, 0, 0,
X M1_HUMANOID, M2_STRONG | M2_COLLECT, 0, C(BROWN) },
X+ { "huge bugbear", S_HUMANOID, 5, 9, 4, 0, -6, (G_GENO | 1),
X+ { { AT_WEAP, AD_PHYS, 2, 5 }, NO_ATTK, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 1350, 250, 0, MS_GROWL, MZ_LARGE, 0, 0,
X+ M1_HUMANOID, M2_STRONG | M2_COLLECT, 0, C(BROWN) },
X+ { "bugbear chieftan", S_HUMANOID, 7, 9, 3, 0, -6, (G_GENO | 1),
X+ { { AT_WEAP, AD_PHYS, 2, 7 }, NO_ATTK, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 1450, 250, 0, MS_GROWL, MZ_LARGE, 0, 0,
X+ M1_HUMANOID, M2_STRONG | M2_COLLECT, 0, C(BROWN) },
X+ { "dwarven thief", S_HUMANOID, 4, 6, MARM(10,4), 10, 5, (G_GENO | 1),
X+ { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_TUCH, AD_SITM, 0, 0 },
X+ NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 900, 300, 0, MS_HUMANOID, MZ_HUMAN,
X+ 0, 0, M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID,
X+ M2_DWARF | M2_STRONG | M2_LORD | M2_MALE | M2_GREEDY | M2_JEWELS |
X+ M2_COLLECT | M2_HOSTILE, 0, C(BLUE) },
X { "dwarf lord", S_HUMANOID, 4, 6, MARM(10,4), 10, 5, (G_GENO | 2),
X { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
X NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X***************
X*** 317,322 ****
X--- 534,546 ----
X 0, 0, M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID,
X M2_DWARF | M2_STRONG | M2_LORD | M2_MALE | M2_GREEDY | M2_JEWELS |
X M2_COLLECT, 0, C(BLUE) },
X+ { "duergar", S_HUMANOID, 5, 6, MARM(10,4), 10, -6, (G_GENO | 1),
X+ { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
X+ NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 900, 300, 0, MS_HUMANOID, MZ_HUMAN,
X+ 0, 0, M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID,
X+ M2_DWARF | M2_STRONG | M2_LORD | M2_MALE | M2_GREEDY | M2_JEWELS |
X+ M2_COLLECT | M2_HOSTILE, 0, C(BLUE) },
X { "dwarf king", S_HUMANOID, 6, 6, MARM(10,4), 20, 6, (G_GENO | 1),
X { { AT_WEAP, AD_PHYS, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 6 },
X NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X***************
X*** 356,366 ****
X--- 580,600 ----
X 150, 100, 0, MS_SILENT, MZ_MEDIUM, MR_SLEEP | MR_POISON, MR_SLEEP,
X M1_POIS | M1_REGEN, M2_HOSTILE | M2_WANDER | M2_STALK | M2_NEUTER,
X 0, C(BROWN) },
X+ { "dretch", S_IMP, 3, 12, 2, 20, -7, (G_GENO | 1),
X+ { { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 10, 10, 0, MS_CUSS, MZ_TINY, 0, 0,
X+ M1_REGEN, M2_WANDER | M2_STALK, 0, C(RED) },
X { "quasit", S_IMP, 3, 15, 2, 20, -7, (G_GENO | 2),
X { { AT_CLAW, AD_DRDX, 1, 2 }, { AT_CLAW, AD_DRDX, 1, 2 },
X { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK },
X 200, 200, 0, MS_SILENT, MZ_SMALL, MR_POISON, MR_POISON,
X M1_REGEN, M2_STALK, 0, C(BLUE) },
X+ { "rutterkin", S_IMP, 5, 15, 2, 20, -7, (G_GENO | 2),
X+ { { AT_CLAW, AD_DRDX, 1, 2 }, { AT_CLAW, AD_DRDX, 1, 2 },
X+ { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
X+ 200, 200, 0, MS_SILENT, MZ_SMALL, MR_POISON, MR_POISON,
X+ M1_REGEN, M2_STALK, 0, C(BROWN) },
X { "tengu", S_IMP, 6, 13, 5, 30, 7, (G_GENO | 3),
X { { AT_BITE, AD_PHYS, 1, 7 }, NO_ATTK, NO_ATTK,
X NO_ATTK, NO_ATTK, NO_ATTK },
X***************
X*** 374,379 ****
X--- 608,620 ----
X MR_COLD | MR_POISON, MR_COLD | MR_POISON,
X M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
X M1_MINDLESS | M1_OMNIVORE, M2_HOSTILE | M2_NEUTER, 0, C(BLUE) },
X+ { "red jelly", S_JELLY, 4, 0, 8, 10, 0, (G_GENO | 2),
X+ { { AT_NONE, AD_FIRE, 0, 6 }, NO_ATTK, NO_ATTK,
X+ NO_ATTK, NO_ATTK, NO_ATTK },
X+ 50, 20, 0, MS_SILENT, MZ_MEDIUM,
X+ MR_FIRE | MR_POISON, MR_FIRE | MR_POISON,
X+ M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
X+ M1_MINDLESS | M1_OMNIVORE, M2_HOSTILE | M2_NEUTER, 0, C(RED) },
X { "spotted jelly", S_JELLY, 5, 0, 8, 10, 0, (G_GENO | 1),
X { { AT_NONE, AD_ACID, 0, 6 }, NO_ATTK, NO_ATTK,
X NO_ATTK, NO_ATTK, NO_ATTK },
X***************
X*** 388,393 ****
X--- 629,642 ----
SHAR_EOF
true || echo 'restore of NH31C--.Patch failed'
fi
echo 'End of NetHack-- part 1'
echo 'File NH31C--.Patch is continued in part 2'
echo 2 > _shar_seq_.tmp
exit 0

--
-------------------========================================-------------------
cher...@semprini.tdkcs.waterloo.on.ca
Chris Herborth

0 new messages