]> granicus.if.org Git - nethack/commitdiff
mextra changes
authornethack.allison <nethack.allison>
Fri, 6 Jan 2006 05:46:03 +0000 (05:46 +0000)
committernethack.allison <nethack.allison>
Fri, 6 Jan 2006 05:46:03 +0000 (05:46 +0000)
Note: The CVS repository was tagged with NETHACK_PRE_MEXTRA
prior to application of this patch to allow easy withdrawal if necessary.

Adds a new mextra structure type that has a set
of pointers to various types of monster structures
including:
   mname, egd, epri, eshk, emin, edog

Replaces the mextra bits in the monst structure
with a single pointer called mtmp->mextra of type
(struct mextra *).
The pointer can be null if there are no additional
structures attached. The mextra structure is not
adjacent to the monst structure.

Reduces the in-memory footprint of the monst that
has no other structures attached, at the cost
of adding 6 extra long ints per monster to
the save file

The new mextra structure has the mextra fields
independent of each other, not overlapping as was
the case with previous NetHack versions.
This patch doesn't do anything to capitalize on
that difference however.

Consolidates vault.h, epri.h, eshk.h, emin.h and edog.h
into mextra.h

Adds a macro for checking for whether a monster has
a name:
has_name(monst)

This fixes the magic trap panic
   expels() -> spoteffects() -> dotrap() ->
domagictrap() -> tamedog()
because the monst no longer varies in size so no
replacement is required.

39 files changed:
Files
include/extern.h
include/hack.h
include/monst.h
include/patchlevel.h
include/permonst.h
src/apply.c
src/cmd.c
src/dig.c
src/do_name.c
src/dog.c
src/dogmove.c
src/dokick.c
src/dothrow.c
src/eat.c
src/end.c
src/makemon.c
src/mhitm.c
src/mhitu.c
src/minion.c
src/mkobj.c
src/mon.c
src/monst.c
src/mplayer.c
src/muse.c
src/music.c
src/pline.c
src/pray.c
src/priest.c
src/restore.c
src/save.c
src/shk.c
src/shknam.c
src/sounds.c
src/steed.c
src/timeout.c
src/trap.c
src/vault.c
src/zap.c

diff --git a/Files b/Files
index 3799cd1dad234be351cbf1bde52efaf0dbb55197..5ab0105cb09e0719a2aef0993a28667341c8a705 100644 (file)
--- a/Files
+++ b/Files
@@ -34,18 +34,17 @@ include:
 align.h         amiconf.h       artifact.h      artilist.h      attrib.h
 beconf.h        botl.h          color.h         config.h        config1.h
 context.h       coord.h         decl.h          def_os2.h       dgn_file.h
-display.h       dlb.h           dungeon.h       edog.h          emin.h
-engrave.h       epri.h          eshk.h          extern.h        flag.h
-func_tab.h      global.h        hack.h          lev.h           mail.h
-mfndpos.h       micro.h         mkroom.h        monattk.h       mondata.h
-monflag.h       monst.h         monsym.h        nhlan.h         ntconf.h
-obj.h           objclass.h      os2conf.h       patchlevel.h    pcconf.h
-permonst.h      prop.h          qtext.h         quest.h         rect.h
-region.h        rm.h            skills.h        sp_lev.h        spell.h
-system.h        tcap.h          timeout.h       tosconf.h       tradstdc.h
-trampoli.h      trap.h          unixconf.h      vault.h         vision.h
-vmsconf.h       wceconf.h       winami.h        winprocs.h      wintype.h
-you.h           youprop.h
+display.h       dlb.h           dungeon.h       engrave.h       extern.h        
+flag.h          func_tab.h      global.h        hack.h          lev.h
+mail.h          mextra.h        mfndpos.h       micro.h         mkroom.h
+monattk.h       mondata.h       monflag.h       monst.h         monsym.h
+nhlan.h         ntconf.h        obj.h           objclass.h      os2conf.h
+patchlevel.h    pcconf.h        permonst.h      prop.h          qtext.h
+quest.h         rect.h          region.h        rm.h            skills.h
+sp_lev.h        spell.h         system.h        tcap.h          timeout.h
+tosconf.h       tradstdc.h      trampoli.h      trap.h          unixconf.h
+vision.h        vmsconf.h       wceconf.h       winami.h        winprocs.h
+wintype.h       you.h           youprop.h
 (file for tty versions)
 wintty.h
 (files for X versions)
index ff9d4a4effcf39f11714ba0765038cc75d5b3126..485ef24185ecc7205f762305785d23552cde87db 100644 (file)
@@ -426,6 +426,8 @@ E void FDECL(adj_abon, (struct obj *,SCHAR_P));
 
 /* ### dog.c ### */
 
+E void FDECL(newedog, (struct monst *));
+E void FDECL(free_edog, (struct monst *));
 E void FDECL(initedog, (struct monst *));
 E struct monst *FDECL(make_familiar, (struct obj *,XCHAR_P,XCHAR_P,BOOLEAN_P));
 E struct monst *NDECL(makedog);
@@ -436,7 +438,7 @@ E void FDECL(mon_catchup_elapsed_time, (struct monst *,long));
 E void FDECL(keepdogs, (BOOLEAN_P));
 E void FDECL(migrate_to_level, (struct monst *,XCHAR_P,XCHAR_P,coord *));
 E int FDECL(dogfood, (struct monst *,struct obj *));
-E struct monst *FDECL(tamedog, (struct monst *,struct obj *));
+E boolean FDECL(tamedog, (struct monst *,struct obj *));
 E void FDECL(abuse_dog, (struct monst *));
 E void FDECL(wary_dog, (struct monst *, BOOLEAN_P));
 
@@ -962,6 +964,7 @@ E void FDECL(readmail, (struct obj *));
 
 /* ### makemon.c ### */
 
+E void FDECL(dealloc_monst, (struct monst *));
 E boolean FDECL(is_home_elemental, (struct permonst *));
 E struct monst *FDECL(clone_mon, (struct monst *,XCHAR_P,XCHAR_P));
 E int FDECL(monhp_per_lvl, (struct monst *));
@@ -1027,6 +1030,8 @@ E int FDECL(doseduce, (struct monst *));
 
 /* ### minion.c ### */
 
+E void FDECL(newemin, (struct monst *));
+E void FDECL(free_emin, (struct monst *));
 E int FDECL(msummon, (struct monst *));
 E void FDECL(summon_minion, (ALIGNTYP_P,BOOLEAN_P));
 E int FDECL(demon_talk, (struct monst *));
@@ -1686,6 +1691,8 @@ E void FDECL(ghod_hitsu, (struct monst *));
 E void NDECL(angry_priest);
 E void NDECL(clearpriests);
 E void FDECL(restpriest, (struct monst *,BOOLEAN_P));
+E void FDECL(newepri, (struct monst *));
+E void FDECL(free_epri, (struct monst *));
 
 /* ### quest.c ### */
 
@@ -1774,6 +1781,7 @@ E void FDECL(getlev, (int,int,XCHAR_P,BOOLEAN_P));
 E void FDECL(get_plname_from_file, (int, char *));
 E void NDECL(minit);
 E boolean FDECL(lookup_id_mapping, (unsigned, unsigned *));
+E struct monst *FDECL(buffer_to_mon, (genericptr_t));
 E void FDECL(mread, (int,genericptr_t,unsigned int));
 #ifndef GOLDOBJ
 E void FDECL(put_gold_back, (struct obj **,long *));
@@ -1853,6 +1861,7 @@ E void NDECL(co_false);
 #else
 E void FDECL(savelev, (int,XCHAR_P,int));
 #endif
+E genericptr_t FDECL(mon_to_buffer, (struct monst *, int *));
 E void FDECL(bufon, (int));
 E void FDECL(bufoff, (int));
 E void FDECL(bflush, (int));
@@ -1932,6 +1941,8 @@ E char *FDECL(Shk_Your, (char *,struct obj *));
 
 /* ### shknam.c ### */
 
+E void FDECL(neweshk, (struct monst *));
+E void FDECL(free_eshk, (struct monst *));
 E void FDECL(stock_room, (int,struct mkroom *));
 E boolean FDECL(saleable, (struct monst *,struct obj *));
 E int FDECL(get_shop_item, (int));
@@ -2207,6 +2218,8 @@ E int FDECL(hide_privileges, (BOOLEAN_P));
 
 /* ### vault.c ### */
 
+E void FDECL(newegd, (struct monst *));
+E void FDECL(free_egd, (struct monst *));
 E boolean FDECL(grddead, (struct monst *));
 E char FDECL(vault_occupied, (char *));
 E void NDECL(invault);
index 1ae17d998f699ff045314efc3b094876920a766b..8ba14a8b5e76d46b1c1f0be0846315d38b81dd5f 100644 (file)
@@ -163,16 +163,19 @@ NEARDATA extern coord bhitpos;    /* place where throw or zap hits or stops */
 #define NO_SPELL       0
 
 /* flags to control makemon() */
-#define NO_MM_FLAGS      0x00  /* use this rather than plain 0 */
-#define NO_MINVENT       0x01  /* suppress minvent when creating mon */
-#define MM_NOWAIT        0x02  /* don't set STRAT_WAITMASK flags */
-#define MM_EDOG                  0x04  /* add edog structure */
-#define MM_EMIN                  0x08  /* add emin structure */
-#define MM_ANGRY         0x10  /* monster is created angry */
-#define MM_NONAME        0x20  /* monster is not christened */
-#define MM_NOCOUNTBIRTH          0x40  /* don't increment born counter (for revival) */
-#define MM_IGNOREWATER   0x80  /* ignore water when positioning */
-#define MM_ADJACENTOK    0x100 /* it is acceptable to use adjacent coordinates */
+#define NO_MM_FLAGS      0x00000       /* use this rather than plain 0 */
+#define NO_MINVENT       0x00001       /* suppress minvent when creating mon */
+#define MM_NOWAIT        0x00002       /* don't set STRAT_WAITMASK flags */
+#define MM_NOCOUNTBIRTH          0x00004       /* don't increment born counter (for revival) */
+#define MM_IGNOREWATER   0x00008       /* ignore water when positioning */
+#define MM_ADJACENTOK    0x00010       /* it is acceptable to use adjacent coordinates */
+#define MM_ANGRY         0x00020       /* monster is created angry */
+#define MM_NONAME        0x00040       /* monster is not christened */
+#define MM_EGD           0x00100       /* add egd structure */
+#define MM_EPRI                  0x00200       /* add epri structure */
+#define MM_ESHK                  0x00400       /* add eshk structure */
+#define MM_EMIN                  0x00800       /* add emin structure */
+#define MM_EDOG                  0x01000       /* add edog structure */
 
 /* flags for make_corpse() and mkcorpstat() */
 #define CORPSTAT_NONE    0x00
index b575d7e506fcbd0d7d59afc84d6b8f96704e17e6..c25344dfb8a9991d62c2283a039aca48dc0ce6d8 100644 (file)
@@ -1,4 +1,4 @@
-/*     SCCS Id: @(#)monst.h    3.5     2005/07/13      */
+/*     SCCS Id: @(#)monst.h    3.5     2006/01/02      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -33,8 +33,8 @@
 #define MINV_NOLET 0x01
 #define MINV_ALL   0x02
 
-#ifndef ALIGN_H
-#include "align.h"
+#ifndef MEXTRA_H
+#include "mextra.h"
 #endif
 
 struct monst {
@@ -138,40 +138,16 @@ struct monst {
        long misc_worn_check;
        xchar weapon_check;
 
-       uchar mnamelth;         /* length of name (following mxlth) */
-       short mxlth;            /* length of following data */
-       /* in order to prevent alignment problems mextra should
-          be (or follow) a long int */
        int meating;            /* monster is eating timeout */
-       long mextra[1]; /* monster dependent info */
+       struct mextra *mextra;  /* point to mextra struct */
 };
 
-/*
- * Note that mextra[] may correspond to any of a number of structures, which
- * are indicated by some of the other fields.
- *     isgd     ->     struct egd
- *     ispriest ->     struct epri
- *     isshk    ->     struct eshk
- *     isminion ->     struct emin
- *                     (struct epri for roaming priests and angels, which is
- *                      compatible with emin for polymorph purposes)
- *     mtame    ->     struct edog
- *                     (struct epri for guardian angels, which do not eat
- *                      or do other doggy things)
- * Since at most one structure can be indicated in this manner, it is not
- * possible to tame any creatures using the other structures (the only
- * exception being the guardian angels which are tame on creation).
- */
-
-#define newmonst(xl) (struct monst *)alloc((unsigned)(xl) + sizeof(struct monst))
-#define dealloc_monst(mon) free((genericptr_t)(mon))
+#define newmonst() (struct monst *)alloc(sizeof(struct monst))
 
 /* these are in mspeed */
 #define MSLOW 1                /* slow monster */
 #define MFAST 2                /* speeded monster */
 
-#define NAME(mtmp)     (((char *)(mtmp)->mextra) + (mtmp)->mxlth)
-
 #define MON_WEP(mon)   ((mon)->mw)
 #define MON_NOWEP(mon) ((mon)->mw = (struct obj *)0)
 
index 920b463b1adfc78af22277b0d280a5e26057a9de..02873ca3670e3915539e8e947a7e3624dd2452a6 100644 (file)
@@ -13,7 +13,7 @@
  * Incrementing EDITLEVEL can be used to force invalidation of old bones
  * and save files.
  */
-#define EDITLEVEL      24
+#define EDITLEVEL      25
 
 #define COPYRIGHT_BANNER_A \
 "NetHack, Copyright 1985-2005"
index 4f44c11fcc37973c5f7bcdfd94295245d6666b8e..d1beec54a5098aa7a4eed0c9c8a0ac866ad4666b 100644 (file)
@@ -1,4 +1,4 @@
-/*     SCCS Id: @(#)permonst.h 3.5     1999/07/02      */
+/*     SCCS Id: @(#)permonst.h 3.5     2006/01/04      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -50,7 +50,6 @@ struct permonst {
        struct  attack  mattk[NATTK];           /* attacks matrix */
        unsigned short  cwt,                    /* weight of corpse */
                        cnutrit;                /* its nutritional value */
-       short           pxlth;                  /* length of extension */
        uchar           msound;                 /* noise it makes (6 bits) */
        uchar           msize;                  /* physical size (3 bits) */
        uchar           mresists;               /* resistances */
index ceef3750c9c585a894ac4f726da934c785ec5a50..1f5d2babd42255ef998c33adfb30b0ccd9d173f0 100644 (file)
@@ -3,7 +3,6 @@
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
-#include "edog.h"
 
 static const char tools[] = { TOOL_CLASS, WEAPON_CLASS, WAND_CLASS, 0 };
 static const char tools_too[] = { ALL_CLASSES, TOOL_CLASS, POTION_CLASS,
index c59090a9f8fa62ce74e6883f6c764303b1815fff..ef21b077fac2eedce0ce362f5c1e6927544c3730 100644 (file)
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -134,6 +134,7 @@ extern void FDECL(show_borlandc_stats, (winid));
 #ifdef DEBUG_MIGRATING_MONS
 STATIC_PTR int NDECL(wiz_migrate_mons);
 #endif
+STATIC_DCL int FDECL(size_monst, (struct monst *));
 STATIC_DCL void FDECL(count_obj, (struct obj *, long *, long *, BOOLEAN_P, BOOLEAN_P));
 STATIC_DCL void FDECL(obj_chain, (winid, const char *, struct obj *, long *, long *));
 STATIC_DCL void FDECL(mon_invent_chain, (winid, const char *, struct monst *, long *, long *));
@@ -1848,6 +1849,22 @@ contained(win, src, total_count, total_size)
        putstr(win, 0, buf);
 }
 
+STATIC_OVL int
+size_monst(mtmp)
+struct monst *mtmp;
+{
+       int sz = sizeof(struct monst);
+       if (mtmp->mextra) {
+               if (MNAME(mtmp)) sz += strlen(MNAME(mtmp))+1;
+               if (EGD(mtmp)) sz += sizeof(struct egd);
+               if (EPRI(mtmp)) sz += sizeof(struct epri);
+               if (ESHK(mtmp)) sz += sizeof(struct eshk);
+               if (EMIN(mtmp)) sz += sizeof(struct emin);
+               if (EDOG(mtmp)) sz += sizeof(struct edog);
+       }
+       return sz;
+}
+
 STATIC_OVL void
 mon_chain(win, src, chain, total_count, total_size)
        winid win;
@@ -1862,7 +1879,7 @@ mon_chain(win, src, chain, total_count, total_size)
 
        for (count = size = 0, mon = chain; mon; mon = mon->nmon) {
            count++;
-           size += sizeof(struct monst) + mon->mxlth + mon->mnamelth;
+           size += size_monst(mon);
        }
        *total_count += count;
        *total_size += size;
index c3d26e5d99468f632870769904ae9c82c6abcf82..4a2cd240a4778853c90e8cb24cc530924cc2777a 100644 (file)
--- a/src/dig.c
+++ b/src/dig.c
@@ -3,7 +3,7 @@
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
-#include "edog.h"
+
 /* #define DEBUG */    /* turn on for diagnostics */
 
 static NEARDATA boolean did_dig_msg;
index b1354f875f4802c5713c2e9a499339a4941a16e4..b9b11e064c80412c0c399d342680cdef816c600a 100644 (file)
@@ -218,7 +218,6 @@ struct monst *mtmp;
 const char *name;
 {
        int lth;
-       struct monst *mtmp2;
        char buf[PL_PSIZ];
 
        /* dogname & catname are PL_PSIZ arrays; object names have same limit */
@@ -228,19 +227,16 @@ const char *name;
                name = strncpy(buf, name, PL_PSIZ - 1);
                buf[PL_PSIZ - 1] = '\0';
        }
-       if (lth == mtmp->mnamelth) {
-               /* don't need to allocate a new monst struct */
-               if (lth) Strcpy(NAME(mtmp), name);
+       if (has_name(mtmp) && lth == (int)(strlen(MNAME(mtmp)) + 1)) {
+               /* don't need to allocate a new mname */
+               if (lth) Strcpy(MNAME(mtmp), name);
                return mtmp;
        }
-       mtmp2 = newmonst(mtmp->mxlth + lth);
-       *mtmp2 = *mtmp;
-       (void) memcpy((genericptr_t)mtmp2->mextra,
-                     (genericptr_t)mtmp->mextra, mtmp->mxlth);
-       mtmp2->mnamelth = lth;
-       if (lth) Strcpy(NAME(mtmp2), name);
-       replmon(mtmp,mtmp2);
-       return(mtmp2);
+       if (has_name(mtmp)) free((genericptr_t)MNAME(mtmp));
+
+       MNAME(mtmp) = (char *)alloc(lth);
+       if (lth) Strcpy(MNAME(mtmp), name);
+       return(mtmp);
 }
 
 int
@@ -701,8 +697,8 @@ boolean called;
        if (do_hallu) {
            Strcat(buf, rndmonnam());
            name_at_start = FALSE;
-       } else if (mtmp->mnamelth) {
-           char *name = NAME(mtmp);
+       } else if (has_name(mtmp)) {
+           char *name = MNAME(mtmp);
 
            if (mdat == &mons[PM_GHOST]) {
                Sprintf(eos(buf), "%s ghost", s_suffix(name));
@@ -775,7 +771,7 @@ l_monnam(mtmp)
 register struct monst *mtmp;
 {
        return(x_monnam(mtmp, ARTICLE_NONE, (char *)0, 
-               mtmp->mnamelth ? SUPPRESS_SADDLE : 0, TRUE));
+               (has_name(mtmp)) ? SUPPRESS_SADDLE : 0, TRUE));
 }
 
 char *
@@ -783,7 +779,7 @@ mon_nam(mtmp)
 register struct monst *mtmp;
 {
        return(x_monnam(mtmp, ARTICLE_THE, (char *)0,
-               mtmp->mnamelth ? SUPPRESS_SADDLE : 0, FALSE));
+               (has_name(mtmp)) ? SUPPRESS_SADDLE : 0, FALSE));
 }
 
 /* print the name as if mon_nam() was called, but assume that the player
@@ -795,7 +791,7 @@ noit_mon_nam(mtmp)
 register struct monst *mtmp;
 {
        return(x_monnam(mtmp, ARTICLE_THE, (char *)0,
-               mtmp->mnamelth ? (SUPPRESS_SADDLE|SUPPRESS_IT) :
+               (has_name(mtmp)) ? (SUPPRESS_SADDLE|SUPPRESS_IT) :
                    SUPPRESS_IT, FALSE));
 }
 
@@ -835,7 +831,7 @@ struct monst *mtmp;
        int prefix, suppression_flag;
 
        prefix = mtmp->mtame ? ARTICLE_YOUR : ARTICLE_THE;
-       suppression_flag = (mtmp->mnamelth
+       suppression_flag = (has_name(mtmp)
 #ifdef STEED
                            /* "saddled" is redundant when mounted */
                            || mtmp == u.usteed
@@ -851,7 +847,7 @@ register struct monst *mtmp;
 register const char *adj;
 {
        register char *bp = x_monnam(mtmp, ARTICLE_THE, adj,
-               mtmp->mnamelth ? SUPPRESS_SADDLE : 0, FALSE);
+               (has_name(mtmp)) ? SUPPRESS_SADDLE : 0, FALSE);
 
        *bp = highc(*bp);
        return(bp);
@@ -862,7 +858,7 @@ a_monnam(mtmp)
 register struct monst *mtmp;
 {
        return x_monnam(mtmp, ARTICLE_A, (char *)0,
-               mtmp->mnamelth ? SUPPRESS_SADDLE : 0, FALSE);
+               (has_name(mtmp)) ? SUPPRESS_SADDLE : 0, FALSE);
 }
 
 char *
index 0a6294cf4e0d5f51004884ebdf285e73a058d6c2..03e4324cbebf7926ab3a20a2fe490b828962cc1f 100644 (file)
--- a/src/dog.c
+++ b/src/dog.c
@@ -1,12 +1,33 @@
-/*     SCCS Id: @(#)dog.c      3.5     2005/03/17      */
+/*     SCCS Id: @(#)dog.c      3.5     2006/01/03      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
-#include "edog.h"
 
 STATIC_DCL int NDECL(pet_type);
 
+void
+newedog(mtmp)
+struct monst *mtmp;
+{
+       if (!mtmp->mextra) mtmp->mextra = newmextra();
+       if (!EDOG(mtmp)) {
+           EDOG(mtmp) = (struct edog *)alloc(sizeof(struct edog));
+           (void) memset((genericptr_t) EDOG(mtmp), 0, sizeof(struct edog));
+       }
+}
+
+void
+free_edog(mtmp)
+struct monst *mtmp;
+{
+       if (mtmp->mextra && EDOG(mtmp)) {
+               free((genericptr_t) EDOG(mtmp));
+               EDOG(mtmp) = (struct edog *)0;
+       }
+       mtmp->mtame = 0;
+}
+
 void
 initedog(mtmp)
 register struct monst *mtmp;
@@ -764,24 +785,27 @@ register struct obj *obj;
        }
 }
 
-struct monst *
+/*
+ * With the separate mextra structure added in 3.5.x this always
+ * operates on the original mtmp. It now returns TRUE if the taming
+ * succeeded.
+ */
+boolean
 tamedog(mtmp, obj)
 register struct monst *mtmp;
 register struct obj *obj;
 {
-       register struct monst *mtmp2;
-
        /* The Wiz, Medusa and the quest nemeses aren't even made peaceful. */
        if (mtmp->iswiz || mtmp->data == &mons[PM_MEDUSA]
                                || (mtmp->data->mflags3 & M3_WANTSARTI))
-               return((struct monst *)0);
+               return FALSE;
 
        /* worst case, at least it'll be peaceful. */
        mtmp->mpeaceful = 1;
        set_malign(mtmp);
        if(flags.moonphase == FULL_MOON && night() && rn2(6) && obj
                                                && mtmp->data->mlet == S_DOG)
-               return((struct monst *)0);
+               return FALSE;
 
        /* If we cannot tame it, at least it's no longer afraid. */
        mtmp->mflee = 0;
@@ -818,9 +842,9 @@ register struct obj *obj;
                /* eating might have killed it, but that doesn't matter here;
                   a non-null result suppresses "miss" message for thrown
                   food and also implies that the object has been deleted */
-               return mtmp;
+               return TRUE;
            } else
-               return (struct monst *)0;
+               return FALSE;
        }
 
        if (mtmp->mtame || !mtmp->mcanmove ||
@@ -828,35 +852,30 @@ register struct obj *obj;
            mtmp->isshk || mtmp->isgd || mtmp->ispriest || mtmp->isminion ||
            is_covetous(mtmp->data) || is_human(mtmp->data) ||
            (is_demon(mtmp->data) && !is_demon(youmonst.data)) ||
-           (obj && dogfood(mtmp, obj) >= MANFOOD)) return (struct monst *)0;
+           (obj && dogfood(mtmp, obj) >= MANFOOD)) return FALSE;
 
        if (mtmp->m_id == quest_status.leader_m_id)
-           return((struct monst *)0);
+           return FALSE;
 
-       /* make a new monster which has the pet extension */
-       mtmp2 = newmonst(sizeof(struct edog) + mtmp->mnamelth);
-       *mtmp2 = *mtmp;
-       mtmp2->mxlth = sizeof(struct edog);
-       if (mtmp->mnamelth) Strcpy(NAME(mtmp2), NAME(mtmp));
-       initedog(mtmp2);
-       replmon(mtmp, mtmp2);
-       /* `mtmp' is now obsolete */
+       /* add the pet extension */
+       newedog(mtmp);
+       initedog(mtmp);
 
        if (obj) {              /* thrown food */
            /* defer eating until the edog extension has been set up */
-           place_object(obj, mtmp2->mx, mtmp2->my);    /* put on floor */
+           place_object(obj, mtmp->mx, mtmp->my);      /* put on floor */
            /* devour the food (might grow into larger, genocided monster) */
-           if (dog_eat(mtmp2, obj, mtmp2->mx, mtmp2->my, TRUE) == 2)
-               return mtmp2;           /* oops, it died... */
+           if (dog_eat(mtmp, obj, mtmp->mx, mtmp->my, TRUE) == 2)
+               return TRUE;            /* oops, it died... */
            /* `obj' is now obsolete */
        }
 
-       newsym(mtmp2->mx, mtmp2->my);
-       if (attacktype(mtmp2->data, AT_WEAP)) {
-               mtmp2->weapon_check = NEED_HTH_WEAPON;
-               (void) mon_wield_item(mtmp2);
+       newsym(mtmp->mx, mtmp->my);
+       if (attacktype(mtmp->data, AT_WEAP)) {
+               mtmp->weapon_check = NEED_HTH_WEAPON;
+               (void) mon_wield_item(mtmp);
        }
-       return(mtmp2);
+       return TRUE;
 }
 
 /*
index f779f345c65aa518591040fafefb895a08d28370..3675736a015dfc86b3e6a885dbd0eed76cb44628 100644 (file)
@@ -5,7 +5,6 @@
 #include "hack.h"
 
 #include "mfndpos.h"
-#include "edog.h"
 
 extern boolean notonhead;
 
index c76c871f2c0d7d6dea31de761206b3deb6f86498..ba110ecb0870139a9b0c1d1ea1de9d8f3465e3ff 100644 (file)
@@ -3,7 +3,6 @@
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
-#include "eshk.h"
 
 #define is_bigfoot(x)  ((x) == &mons[PM_SASQUATCH])
 #define martial()      (martial_bonus() || is_bigfoot(youmonst.data) || \
index 038822327a1c08c53cdde996eb29dd9a09e91a04..be3f7f9e37f3bd2e2fc486009163fd653e6da8d4 100644 (file)
@@ -5,7 +5,6 @@
 /* Contains code for 't' (throw) */
 
 #include "hack.h"
-#include "edog.h"
 
 STATIC_DCL int FDECL(throw_obj, (struct obj *,int));
 STATIC_DCL void NDECL(autoquiver);
index a48d767c99ee39b1526c635cf7936baa15285c48..86b2167c6262150ea74a926e2542b5f43d3d39e8 100644 (file)
--- a/src/eat.c
+++ b/src/eat.c
@@ -3,7 +3,7 @@
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
-#include "edog.h"
+
 /* #define DEBUG */    /* uncomment to enable new eat code debugging */
 
 #ifdef DEBUG
index 73657647bc9c6d3d3df52076eca882411fc89f70..cb1dbc2363d7ea96f4aca8453bc93a36391a565a 100644 (file)
--- a/src/end.c
+++ b/src/end.c
@@ -5,7 +5,6 @@
 #define NEED_VARARGS   /* comment line for pre-compiled headers */
 
 #include "hack.h"
-#include "eshk.h"
 #include "lev.h"
 #ifndef NO_SIGNAL
 #include <signal.h>
@@ -205,7 +204,7 @@ register struct monst *mtmp;
            killer.format = KILLED_BY;
        }
        /* _the_ <invisible> <distorted> ghost of Dudley */
-       if (mtmp->data == &mons[PM_GHOST] && mtmp->mnamelth) {
+       if (mtmp->data == &mons[PM_GHOST] && has_name(mtmp)) {
                Strcat(buf, "the ");
                killer.format = KILLED_BY;
        }
@@ -216,7 +215,7 @@ register struct monst *mtmp;
 
        if(mtmp->data == &mons[PM_GHOST]) {
                Strcat(buf, "ghost");
-               if (mtmp->mnamelth) Sprintf(eos(buf), " of %s", NAME(mtmp));
+               if (has_name(mtmp)) Sprintf(eos(buf), " of %s", MNAME(mtmp));
        } else if(mtmp->isshk) {
                const char *shknm = shkname(mtmp),
                           *honorific = shkname_is_pname(mtmp) ? "" :
@@ -230,8 +229,8 @@ register struct monst *mtmp;
                Strcat(buf, m_monnam(mtmp));
        } else {
                Strcat(buf, mtmp->data->mname);
-               if (mtmp->mnamelth)
-                   Sprintf(eos(buf), " called %s", NAME(mtmp));
+               if (has_name(mtmp))
+                   Sprintf(eos(buf), " called %s", MNAME(mtmp));
        }
 
        if (multi) Strcat(buf, ", while helpless");
index c4dd7614f7b32fd9726942372fb12ed7b86a7676..2832978b2d49d7c870df83169cd0730188b2de34 100644 (file)
@@ -3,14 +3,13 @@
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
-#include "epri.h"
-#include "emin.h"
-#include "edog.h"
+
 #ifdef REINCARNATION
 #include <ctype.h>
 #endif
 
 STATIC_VAR NEARDATA struct monst zeromonst;
+STATIC_VAR NEARDATA struct mextra zeromextra;
 
 /* this assumes that a human quest leader or nemesis is an archetype
    of the corresponding role; that isn't so for some roles (tourist
@@ -683,8 +682,9 @@ xchar x, y; /* clone's preferred location or 0 (near mon) */
                    return (struct monst *)0;
            }
        }
-       m2 = newmonst(0);
+       m2 = newmonst();
        *m2 = *mon;                     /* copy condition of old monster */
+       m2->mextra = (struct mextra *)0;
        m2->nmon = fmon;
        fmon = m2;
        m2->m_id = context.ident++;
@@ -714,16 +714,14 @@ xchar x, y;       /* clone's preferred location or 0 (near mon) */
        if (mon->isshk) m2->isshk = FALSE;
        if (mon->isgd) m2->isgd = FALSE;
        if (mon->ispriest) m2->ispriest = FALSE;
-       m2->mxlth = 0;
        place_monster(m2, m2->mx, m2->my);
        if (emits_light(m2->data))
            new_light_source(m2->mx, m2->my, emits_light(m2->data),
                             LS_MONSTER, (genericptr_t)m2);
-       if (m2->mnamelth) {
-           m2->mnamelth = 0; /* or it won't get allocated */
-           m2 = christen_monst(m2, NAME(mon));
+       if (has_name(mon)) {
+               m2 = christen_monst(m2, MNAME(mon));
        } else if (mon->isshk) {
-           m2 = christen_monst(m2, shkname(mon));
+               m2 = christen_monst(m2, shkname(mon));
        }
 
        /* not all clones caused by player are tame or peaceful */
@@ -736,24 +734,17 @@ xchar x, y;       /* clone's preferred location or 0 (near mon) */
 
        newsym(m2->mx,m2->my);  /* display the new monster */
        if (m2->mtame) {
-           struct monst *m3;
-
            if (mon->isminion) {
-               m3 = newmonst(sizeof(struct epri) + mon->mnamelth);
-               *m3 = *m2;
-               m3->mxlth = sizeof(struct epri);
-               if (m2->mnamelth) Strcpy(NAME(m3), NAME(m2));
-               *(EPRI(m3)) = *(EPRI(mon));
-               replmon(m2, m3);
-               m2 = m3;
+               newemin(m2);
+               if (EMIN(mon)) *(EMIN(m2)) = *(EMIN(mon));
+               if (EPRI(mon)) *(EPRI(m2)) = *(EPRI(mon));
            } else {
                /* because m2 is a copy of mon it is tame but not init'ed.
                 * however, tamedog will not re-tame a tame dog, so m2
                 * must be made non-tame to get initialized properly.
                 */
                m2->mtame = 0;
-               if ((m3 = tamedog(m2, (struct obj *)0)) != 0) {
-                   m2 = m3;
+               if (tamedog(m2, (struct obj *)0)) {
                    *(EDOG(m2)) = *(EDOG(mon));
                }
            }
@@ -877,7 +868,7 @@ register int        x, y;
 register int   mmflags;
 {
        register struct monst *mtmp;
-       int mndx, mcham, ct, mitem, xlth;
+       int mndx, mcham, ct, mitem;
        boolean anymon = (!ptr);
        boolean byyou = (x == u.ux && y == u.uy);
        boolean allow_minvent = ((mmflags & NO_MINVENT) == 0);
@@ -948,12 +939,15 @@ register int      mmflags;
                mndx = monsndx(ptr);
        }
        (void) propagate(mndx, countbirth, FALSE);
-       xlth = ptr->pxlth;
-       if (mmflags & MM_EDOG) xlth += sizeof(struct edog);
-       else if (mmflags & MM_EMIN) xlth += sizeof(struct emin);
-       mtmp = newmonst(xlth);
+       mtmp = newmonst();
        *mtmp = zeromonst;              /* clear all entries in structure */
-       (void)memset((genericptr_t)mtmp->mextra, 0, xlth);
+
+       if (mmflags & MM_EGD) newegd(mtmp);
+       if (mmflags & MM_EPRI) newepri(mtmp);
+       if (mmflags & MM_ESHK) neweshk(mtmp);
+       if (mmflags & MM_EMIN) newemin(mtmp);
+       if (mmflags & MM_EDOG) newedog(mtmp);
+
        mtmp->nmon = fmon;
        fmon = mtmp;
        mtmp->m_id = context.ident++;
@@ -962,7 +956,6 @@ register int        mmflags;
        if (mtmp->data->msound == MS_LEADER &&
                quest_info(MS_LEADER) == mndx)
            quest_status.leader_m_id = mtmp->m_id;
-       mtmp->mxlth = xlth;
        mtmp->mnum = mndx;
 
        /* set up level and hit points */
@@ -1102,7 +1095,9 @@ register int      mmflags;
           types; make sure their extended data is initialized to
           something sensible (caller can override these settings) */
        if (mndx == PM_ALIGNED_PRIEST || (mndx == PM_ANGEL && !rn2(3))) {
-           struct emin *eminp = EMIN(mtmp);
+           struct emin *eminp;
+           newemin(mtmp);
+           eminp = EMIN(mtmp);
 
            mtmp->isminion = 1;         /* make priest be a roamer */
            eminp->min_align = rn2(3) - 1;      /* no A_NONE */
@@ -1640,9 +1635,9 @@ struct monst *mtmp;
 
        if (mtmp->ispriest || mtmp->isminion) {
                /* some monsters have individual alignments; check them */
-               if (mtmp->ispriest)
+               if (mtmp->ispriest && EPRI(mtmp))
                        mal = EPRI(mtmp)->shralign;
-               else if (mtmp->isminion)
+               else if (mtmp->isminion && EMIN(mtmp))
                        mal = EMIN(mtmp)->min_align;
                /* unless alignment is none, set mal to -5,0,5 */
                /* (see align.h for valid aligntyp values)     */
index f28f011f83f27a8c067b305174d101d72a01e414..dc8a050c1e7035b7c96982292a051b27c81677bd 100644 (file)
@@ -4,7 +4,6 @@
 
 #include "hack.h"
 #include "artifact.h"
-#include "edog.h"
 
 extern boolean notonhead;
 
index bd34b6161d9728036a220bfee6a01fceb6952bc8..a2a3fe3ead3782406a8aa0d68020f1aa9eba4940 100644 (file)
@@ -2560,7 +2560,6 @@ register struct attack *mattk;
        return 1;
 }
 
-#include "edog.h"
 struct monst *
 cloneu()
 {
index f66cd1b7ddcf0f271e1a7ada24f936be734d61a7..041fcafacf4286760e90f1166ddfebc769d00f32 100644 (file)
@@ -1,10 +1,30 @@
-/*     SCCS Id: @(#)minion.c   3.5     2005/11/01      */
+/*     SCCS Id: @(#)minion.c   3.5     2006/01/03      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
-#include "emin.h"
-#include "epri.h"
+
+void
+newemin(mtmp)
+struct monst *mtmp;
+{
+       if (!mtmp->mextra) mtmp->mextra = newmextra();
+       if (!EMIN(mtmp)) {
+           EMIN(mtmp) = (struct emin *)alloc(sizeof(struct emin));
+           (void) memset((genericptr_t) EMIN(mtmp), 0, sizeof(struct emin));
+       }
+}
+
+void
+free_emin(mtmp)
+struct monst *mtmp;
+{
+       if (mtmp->mextra && EMIN(mtmp)) {
+               free((genericptr_t) EMIN(mtmp));
+               EMIN(mtmp) = (struct emin *)0;
+       }
+       mtmp->isminion = 0;
+}
 
 int
 msummon(mon)           /* mon summons a monster */
@@ -73,7 +93,7 @@ struct monst *mon;
        }
 
        while (cnt > 0) {
-           mtmp = makemon(&mons[dtype], u.ux, u.uy, NO_MM_FLAGS);
+           mtmp = makemon(&mons[dtype], u.ux, u.uy, MM_EMIN);
            if (mtmp) {
                result++;
                /* an angel's alignment should match the summoner */
@@ -117,9 +137,19 @@ boolean talk;
     }
     if (mnum == NON_PM) {
        mon = 0;
-    } else if (mons[mnum].pxlth == 0 || mnum == PM_ANGEL) {
-       mon = makemon(&mons[mnum], u.ux, u.uy,
-                     (mnum == PM_ANGEL) ? NO_MM_FLAGS : MM_EMIN);
+    } else if (mnum == PM_ANGEL) {
+       mon = makemon(&mons[mnum], u.ux, u.uy, MM_EPRI|MM_EMIN);
+       if (mon) {
+           mon->isminion = 1;
+           EMIN(mon)->min_align = alignment;
+           EMIN(mon)->renegade = FALSE;
+           EPRI(mon)->shralign = alignment;
+       }
+    } else if (mnum != PM_SHOPKEEPER && mnum != PM_GUARD &&
+                mnum != PM_ALIGNED_PRIEST && mnum != PM_HIGH_PRIEST) {
+        /* This was mons[mnum].pxlth == 0 but is this restriction
+          appropriate or necessary now that the structures are separate? */
+       mon = makemon(&mons[mnum], u.ux, u.uy, MM_EMIN);
        if (mon) {
            mon->isminion = 1;
            EMIN(mon)->min_align = alignment;
index 5ec8c525b693819685b0fc1c0389329788b2e2c4..a7abd3fedccdc8198a28037aa0f036fdded33799 100644 (file)
@@ -1070,11 +1070,13 @@ struct obj *obj;
 struct monst *mtmp;
 {
        struct obj *otmp;
+       genericptr_t buffer;
        int lth, namelth;
 
-       lth = sizeof(struct monst) + mtmp->mxlth + mtmp->mnamelth;
        namelth = obj->onamelth ? strlen(ONAME(obj)) + 1 : 0;
-       otmp = realloc_obj(obj, lth, (genericptr_t) mtmp, namelth, ONAME(obj));
+       buffer = mon_to_buffer(mtmp, &lth);
+       otmp = realloc_obj(obj, lth, buffer, namelth, ONAME(obj));
+       free(buffer);
        if (otmp && otmp->oxlth) {
                struct monst *mtmp2 = (struct monst *)otmp->oextra;
                if (mtmp->data) mtmp2->mnum = monsndx(mtmp->data);
@@ -1084,6 +1086,7 @@ struct monst *mtmp;
                mtmp2->nmon     = (struct monst *)0;
                mtmp2->data     = (struct permonst *)0;
                mtmp2->minvent  = (struct obj *)0;
+               /* mon_to_buffer() took care of x and mname */
 #ifndef GOLDOBJ
                /* not a pointer but is discarded along with minvent */
                mtmp2->mgold    = 0L;
@@ -1108,11 +1111,7 @@ boolean copyof;
                mtmp = (struct monst *)obj->oextra;
        if (mtmp) {
            if (copyof) {
-               int lth = mtmp->mxlth + mtmp->mnamelth;
-               mnew = newmonst(lth);
-               lth += sizeof(struct monst);
-               (void) memcpy((genericptr_t)mnew,
-                               (genericptr_t)mtmp, lth);
+               mnew = buffer_to_mon((genericptr_t)mtmp);
            } else {
              /* Never insert this returned pointer into mon chains! */
                mnew = mtmp;
index b064c34ae3043ae7695ea8dc4a9429de609c67f6..07db8452048105ffbe7791a1cbd902e9f65378fb 100644 (file)
--- a/src/mon.c
+++ b/src/mon.c
@@ -9,7 +9,6 @@
 
 #include "hack.h"
 #include "mfndpos.h"
-#include "edog.h"
 #include <ctype.h>
 
 STATIC_DCL boolean FDECL(restrap,(struct monst *));
@@ -19,6 +18,7 @@ STATIC_DCL long FDECL(mm_displacement, (struct monst *,struct monst *));
 #endif
 STATIC_DCL int NDECL(pick_animal);
 STATIC_DCL void FDECL(kill_eggs, (struct obj *));
+STATIC_DCL void FDECL(dealloc_mextra, (struct mextra *));
 
 #ifdef REINCARNATION
 #define LEVEL_SPECIFIC_NOCORPSE(mdat) \
@@ -232,19 +232,28 @@ unsigned corpseflags;
                num = d(2,6);
                while (num--)
                        obj = mksobj_at(IRON_CHAIN, x, y, TRUE, FALSE);
-               mtmp->mnamelth = 0;
+               if (has_name(mtmp)) {
+                       free((genericptr_t)MNAME(mtmp));
+                       MNAME(mtmp) = (char *)0;
+               }
                break;
            case PM_GLASS_GOLEM:
                num = d(2,4);   /* very low chance of creating all glass gems */
                while (num--)
                        obj = mksobj_at((LAST_GEM + rnd(9)), x, y, TRUE, FALSE);
-               mtmp->mnamelth = 0;
+               if (has_name(mtmp)) {
+                       free((genericptr_t)MNAME(mtmp));
+                       MNAME(mtmp) = (char *)0;
+               }
                break;
            case PM_CLAY_GOLEM:
                obj = mksobj_at(ROCK, x, y, FALSE, FALSE);
                obj->quan = (long)(rn2(20) + 50);
                obj->owt = weight(obj);
-               mtmp->mnamelth = 0;
+               if (has_name(mtmp)) {
+                       free((genericptr_t)MNAME(mtmp));
+                       MNAME(mtmp) = (char *)0;
+               }
                break;
            case PM_STONE_GOLEM:
                corpstatflags &= ~CORPSTAT_INIT;
@@ -256,24 +265,36 @@ unsigned corpseflags;
                while(num--) {
                        obj = mksobj_at(QUARTERSTAFF, x, y, TRUE, FALSE);
                }
-               mtmp->mnamelth = 0;
+               if (has_name(mtmp)) {
+                       free((genericptr_t)MNAME(mtmp));
+                       MNAME(mtmp) = (char *)0;
+               }
                break;
            case PM_LEATHER_GOLEM:
                num = d(2,4);
                while(num--)
                        obj = mksobj_at(LEATHER_ARMOR, x, y, TRUE, FALSE);
-               mtmp->mnamelth = 0;
+               if (has_name(mtmp)) {
+                       free((genericptr_t)MNAME(mtmp));
+                       MNAME(mtmp) = (char *)0;
+               }
                break;
            case PM_GOLD_GOLEM:
                /* Good luck gives more coins */
                obj = mkgold((long)(200 - rnl(101)), x, y);
-               mtmp->mnamelth = 0;
+               if (has_name(mtmp)) {
+                       free((genericptr_t)MNAME(mtmp));
+                       MNAME(mtmp) = (char *)0;
+               }
                break;
            case PM_PAPER_GOLEM:
                num = rnd(4);
                while (num--)
                        obj = mksobj_at(SCR_BLANK_PAPER, x, y, TRUE, FALSE);
-               mtmp->mnamelth = 0;
+               if (has_name(mtmp)) {
+                       free((genericptr_t)MNAME(mtmp));
+                       MNAME(mtmp) = (char *)0;
+               }
                break;
            default_1:
            default:
@@ -298,8 +319,8 @@ unsigned corpseflags;
           prevent the same attack beam from hitting its corpse */
        if (context.bypasses) bypass_obj(obj);
 
-       if (mtmp->mnamelth)
-           obj = oname(obj, NAME(mtmp));
+       if (has_name(mtmp))
+           obj = oname(obj, MNAME(mtmp));
 
        /* Avoid "It was hidden under a green mold corpse!" 
         *  during Blind combat. An unseen monster referred to as "it"
@@ -1347,6 +1368,29 @@ register struct monst *mon;
        }
 }
 
+void
+dealloc_mextra(x)
+struct mextra *x;
+{
+       if (x) {
+               if (x->mname) free((genericptr_t)x->mname);
+               if (x->egd) free((genericptr_t)x->egd);
+               if (x->epri) free((genericptr_t)x->epri);
+               if (x->eshk) free((genericptr_t)x->eshk);
+               if (x->emin) free((genericptr_t)x->emin);
+               if (x->edog) free((genericptr_t)x->edog);
+       }
+       free((genericptr_t)x);
+}
+
+void
+dealloc_monst(mon)
+struct monst *mon;
+{
+       if (mon->mextra) dealloc_mextra(mon->mextra);
+       free((genericptr_t)mon);
+}
+
 /* remove effects of mtmp from other data structures */
 STATIC_OVL void
 m_detach(mtmp, mptr)
@@ -1704,7 +1748,7 @@ register struct monst *mdef;
                   so that saved monster traits won't retain any stale
                   item-conferred attributes */
                otmp = mkcorpstat(STATUE, mdef, mdef->data, x, y, CORPSTAT_NONE);
-               if (mdef->mnamelth) otmp = oname(otmp, NAME(mdef));
+               if (has_name(mdef)) otmp = oname(otmp, MNAME(mdef));
                while ((obj = oldminvent) != 0) {
                    oldminvent = obj->nobj;
                    (void) add_to_container(otmp, obj);
@@ -1825,9 +1869,9 @@ int dest;
                You("%s %s!", verb,
                    !mtmp->mtame ? mon_nam(mtmp) :
                        x_monnam(mtmp,
-                                mtmp->mnamelth ? ARTICLE_NONE : ARTICLE_THE,
+                                (has_name(mtmp)) ? ARTICLE_NONE : ARTICLE_THE,
                                 "poor",
-                                mtmp->mnamelth ? SUPPRESS_SADDLE : 0,
+                                (has_name(mtmp)) ? SUPPRESS_SADDLE : 0,
                                 FALSE));
            }
        }
@@ -2485,17 +2529,16 @@ boolean msg;            /* "The oldmon turns into a newmon!" */
                if(!rn2(10)) mtmp->female = !mtmp->female;
        }
 
-       if (In_endgame(&u.uz) && is_mplayer(olddata)) {
+       if (In_endgame(&u.uz) && is_mplayer(olddata) && has_name(mtmp)) {
                /* mplayers start out as "Foo the Bar", but some of the
                 * titles are inappropriate when polymorphed, particularly
                 * into the opposite sex.  players don't use ranks when
                 * polymorphed, so dropping the rank for mplayers seems
                 * reasonable.
                 */
-               char *p = index(NAME(mtmp), ' ');
+               char *p = index(MNAME(mtmp), ' ');
                if (p) {
                        *p = '\0';
-                       mtmp->mnamelth = p - NAME(mtmp) + 1;
                }
        }
 
@@ -2579,8 +2622,8 @@ boolean msg;              /* "The oldmon turns into a newmon!" */
        newsym(mtmp->mx,mtmp->my);
 
        if (msg) {
-           uchar save_mnamelth = mtmp->mnamelth;
-           mtmp->mnamelth = 0;
+           char *save_mname = (has_name(mtmp)) ? MNAME(mtmp) : (char *)0;
+           if (mtmp->mextra) MNAME(mtmp) = (char *)0; 
            Strcpy(newname,
                   (mdat == &mons[PM_GREEN_SLIME]) ? "slime" :
                   x_monnam(mtmp, ARTICLE_A, (char *)0,SUPPRESS_SADDLE, FALSE));
@@ -2588,7 +2631,7 @@ boolean msg;              /* "The oldmon turns into a newmon!" */
                    (void) usmellmon(mdat);
            else
                    pline("%s turns into %s!", oldname, newname);
-           mtmp->mnamelth = save_mnamelth;
+           if(mtmp->mextra) MNAME(mtmp) = save_mname;
        }
 
        possibly_unwield(mtmp, polyspot);       /* might lose use of weapon */
index 0685ff81cdf5c4066282f7f91885a720cbd68ee3..6ee3f065c10a3c69bc782f2bcf548d0129ac0393 100644 (file)
@@ -1,4 +1,4 @@
-/*     SCCS Id: @(#)monst.c    3.5     2005/11/02      */
+/*     SCCS Id: @(#)monst.c    3.5     2006/01/04      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -6,10 +6,7 @@
 #include "permonst.h"
 #include "monsym.h"
 #include "dungeon.h"   /* prerequisite for eshk,vault,epri */
-#include "eshk.h"
-#include "vault.h"
-#include "epri.h"
-#include "emin.h"
+#include "mextra.h"
 
 #define NO_ATTK {0,0,0,0}
 
@@ -46,7 +43,7 @@ void NDECL(monst_init);
           {nam,sym,lvl,gen,atk,siz,mr1,mr2,flg1,flg2,flg3,C(col)}
 /* LVL() and SIZ() collect several fields to cut down on # of args for MON() */
 #define LVL(lvl,mov,ac,mr,aln) lvl,mov,ac,mr,aln
-#define SIZ(wt,nut,pxl,snd,siz) wt,nut,pxl,snd,siz
+#define SIZ(wt,nut,snd,siz) wt,nut,snd,siz
 /* ATTK() and A() are to avoid braces and commas within args to MON() */
 #define ATTK(at,ad,n,d) {at,ad,n,d}
 #define A(a1,a2,a3,a4,a5,a6) {a1,a2,a3,a4,a5,a6}
@@ -100,42 +97,42 @@ NEARDATA struct permonst mons[] = {
        LVL(2, 18, 3, 0, 0), (G_GENO|G_SGROUP|3),
        A(ATTK(AT_BITE, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(10, 10, 0, MS_SILENT, MZ_TINY), 0, 0,
+       SIZ(10, 10, MS_SILENT, MZ_TINY), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_OVIPAROUS|M1_CARNIVORE,
        M2_HOSTILE, 0, CLR_BROWN),
     MON("killer bee", S_ANT,
        LVL(1, 18, -1, 0, 0), (G_GENO|G_LGROUP|2),
        A(ATTK(AT_STNG, AD_DRST, 1, 3),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1, 5, 0, MS_BUZZ, MZ_TINY), MR_POISON, MR_POISON,
+       SIZ(1, 5, MS_BUZZ, MZ_TINY), MR_POISON, MR_POISON,
        M1_ANIMAL|M1_FLY|M1_NOHANDS|M1_POIS,
        M2_HOSTILE|M2_FEMALE, 0, CLR_YELLOW),
     MON("soldier ant", S_ANT,
        LVL(3, 18, 3, 0, 0), (G_GENO|G_SGROUP|2),
        A(ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_STNG, AD_DRST, 3, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(20, 5, 0, MS_SILENT, MZ_TINY), MR_POISON, MR_POISON,
+       SIZ(20, 5, MS_SILENT, MZ_TINY), MR_POISON, MR_POISON,
        M1_ANIMAL|M1_NOHANDS|M1_OVIPAROUS|M1_POIS|M1_CARNIVORE,
        M2_HOSTILE, 0, CLR_BLUE),
     MON("fire ant", S_ANT,
        LVL(3, 18, 3, 10, 0), (G_GENO|G_SGROUP|1),
        A(ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_BITE, AD_FIRE, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(30, 10, 0, MS_SILENT, MZ_TINY), MR_FIRE, MR_FIRE,
+       SIZ(30, 10, MS_SILENT, MZ_TINY), MR_FIRE, MR_FIRE,
        M1_ANIMAL|M1_NOHANDS|M1_OVIPAROUS|M1_CARNIVORE,
        M2_HOSTILE, M3_INFRAVISIBLE, CLR_RED),
     MON("giant beetle", S_ANT,
        LVL(5, 6, 4, 0, 0), (G_GENO|3),
        A(ATTK(AT_BITE, AD_PHYS, 3, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(10, 10, 0, MS_SILENT, MZ_LARGE), MR_POISON, MR_POISON,
+       SIZ(10, 10, MS_SILENT, MZ_LARGE), MR_POISON, MR_POISON,
        M1_ANIMAL|M1_NOHANDS|M1_POIS|M1_CARNIVORE,
        M2_HOSTILE, 0, CLR_BLACK),
     MON("queen bee", S_ANT,
        LVL(9, 24, -4, 0, 0), (G_GENO|G_NOGEN),
        A(ATTK(AT_STNG, AD_DRST, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1, 5, 0, MS_BUZZ, MZ_TINY), MR_POISON, MR_POISON,
+       SIZ(1, 5, MS_BUZZ, MZ_TINY), MR_POISON, MR_POISON,
        M1_ANIMAL|M1_FLY|M1_NOHANDS|M1_OVIPAROUS|M1_POIS,
        M2_HOSTILE|M2_FEMALE|M2_PRINCE, 0, HI_LORD),
 /*
@@ -145,7 +142,7 @@ NEARDATA struct permonst mons[] = {
        LVL(1, 3, 8, 0, 0), (G_GENO|2),
        A(ATTK(AT_NONE, AD_ACID, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(30, 10, 0, MS_SILENT, MZ_TINY),
+       SIZ(30, 10, MS_SILENT, MZ_TINY),
        MR_SLEEP|MR_POISON|MR_ACID|MR_STONE, MR_STONE,
        M1_BREATHLESS|M1_AMORPHOUS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|
          M1_MINDLESS|M1_ACID,
@@ -154,7 +151,7 @@ NEARDATA struct permonst mons[] = {
        LVL(5, 1, 8, 0, 0), (G_GENO|2),
        A(ATTK(AT_TUCH, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(200, 100, 0, MS_SILENT, MZ_SMALL),
+       SIZ(200, 100, MS_SILENT, MZ_SMALL),
        MR_SLEEP|MR_POISON, MR_POISON,
        M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS,
        M2_WANDER|M2_HOSTILE|M2_NEUTER, 0, CLR_WHITE),
@@ -162,7 +159,7 @@ NEARDATA struct permonst mons[] = {
        LVL(6, 6, 8, 0, 0), (G_GENO|2),
        A(ATTK(AT_TUCH, AD_PLYS, 2, 4), ATTK(AT_NONE, AD_PLYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 150, 0, MS_SILENT, MZ_LARGE),
+       SIZ(600, 150, MS_SILENT, MZ_LARGE),
        MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON|MR_ACID|MR_STONE,
        MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP,
        M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_OMNIVORE|M1_ACID,
@@ -174,7 +171,7 @@ NEARDATA struct permonst mons[] = {
        LVL(4, 4, 8, 30, 0), (G_GENO|G_SGROUP|1),
        A(ATTK(AT_BITE, AD_PHYS, 1, 2), ATTK(AT_TUCH, AD_STON, 0, 0),
          ATTK(AT_NONE, AD_STON, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(10, 10, 0, MS_HISS, MZ_TINY),
+       SIZ(10, 10, MS_HISS, MZ_TINY),
        MR_POISON|MR_STONE, MR_POISON|MR_STONE,
        M1_ANIMAL|M1_NOHANDS|M1_OMNIVORE, M2_HOSTILE,
        M3_INFRAVISIBLE, CLR_BROWN),
@@ -182,7 +179,7 @@ NEARDATA struct permonst mons[] = {
        LVL(5, 6, 6, 30, 0), (G_GENO|5),
        A(ATTK(AT_BITE, AD_PHYS, 1, 3), ATTK(AT_TUCH, AD_STON, 0, 0),
          ATTK(AT_NONE, AD_STON, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(30, 30, 0, MS_HISS, MZ_SMALL),
+       SIZ(30, 30, MS_HISS, MZ_SMALL),
        MR_POISON|MR_STONE, MR_POISON|MR_STONE,
        M1_ANIMAL|M1_NOHANDS|M1_OMNIVORE|M1_OVIPAROUS, M2_HOSTILE,
        M3_INFRAVISIBLE, CLR_YELLOW),
@@ -190,7 +187,7 @@ NEARDATA struct permonst mons[] = {
        LVL(6, 6, 6, 30, 0), (G_GENO|1),
        A(ATTK(AT_GAZE, AD_FIRE, 2, 6), NO_ATTK,
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), 
-       SIZ(30, 30, 0, MS_HISS, MZ_SMALL),
+       SIZ(30, 30, MS_HISS, MZ_SMALL),
        MR_POISON|MR_FIRE, MR_POISON|MR_FIRE,
        M1_ANIMAL|M1_NOHANDS|M1_OMNIVORE|M1_OVIPAROUS, M2_HOSTILE,
        M3_INFRAVISIBLE, CLR_RED),
@@ -201,104 +198,104 @@ NEARDATA struct permonst mons[] = {
        LVL(0, 12, 7, 0, 0), (G_GENO|G_SGROUP|3),
        A(ATTK(AT_BITE, AD_PHYS, 1, 2),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(300, 250, 0, MS_BARK, MZ_SMALL), 0, 0,
+       SIZ(300, 250, MS_BARK, MZ_SMALL), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_BROWN),
     MON("fox", S_DOG,
        LVL(0, 15, 7, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK,
          NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(300, 250, 0, MS_BARK, MZ_SMALL), 0, 0,
+       SIZ(300, 250, MS_BARK, MZ_SMALL), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_RED),
     MON("coyote", S_DOG,
        LVL(1, 12, 7, 0, 0), (G_GENO|G_SGROUP|1),
        A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK,
          NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(300, 250, 0, MS_BARK, MZ_SMALL), 0, 0,
+       SIZ(300, 250, MS_BARK, MZ_SMALL), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_BROWN),
     MON("werejackal", S_DOG,
        LVL(2, 12, 7, 10, -7), (G_NOGEN|G_NOCORPSE),
        A(ATTK(AT_BITE, AD_WERE, 1, 4), NO_ATTK, NO_ATTK,
          NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(300, 250, 0, MS_BARK, MZ_SMALL), MR_POISON, 0,
+       SIZ(300, 250, MS_BARK, MZ_SMALL), MR_POISON, 0,
        M1_NOHANDS|M1_POIS|M1_REGEN|M1_CARNIVORE,
        M2_NOPOLY|M2_WERE|M2_HOSTILE, M3_INFRAVISIBLE, CLR_BROWN),
     MON("little dog", S_DOG,
        LVL(2, 18, 6, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(150, 150, 0, MS_BARK, MZ_SMALL), 0, 0,
+       SIZ(150, 150, MS_BARK, MZ_SMALL), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_DOMESTIC, M3_INFRAVISIBLE,
        HI_DOMESTIC),
     MON("dingo", S_DOG,
        LVL(4, 16, 5, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 1 ,6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 200, 0, MS_BARK, MZ_MEDIUM), 0, 0,
+       SIZ(400, 200, MS_BARK, MZ_MEDIUM), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_YELLOW),
     MON("dog", S_DOG,
        LVL(4, 16, 5, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 1 ,6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 200, 0, MS_BARK, MZ_MEDIUM), 0, 0,
+       SIZ(400, 200, MS_BARK, MZ_MEDIUM), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_DOMESTIC, M3_INFRAVISIBLE,
        HI_DOMESTIC),
     MON("large dog", S_DOG,
        LVL(6, 15, 4, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(800, 250, 0, MS_BARK, MZ_MEDIUM), 0, 0,
+       SIZ(800, 250, MS_BARK, MZ_MEDIUM), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,
        M2_STRONG|M2_DOMESTIC, M3_INFRAVISIBLE, HI_DOMESTIC),
     MON("wolf", S_DOG,
        LVL(5, 12, 4, 0, 0), (G_GENO|G_SGROUP|2),
        A(ATTK(AT_BITE, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(500, 250, 0, MS_BARK, MZ_MEDIUM), 0, 0,
+       SIZ(500, 250, MS_BARK, MZ_MEDIUM), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_BROWN),
     MON("werewolf", S_DOG,
        LVL(5, 12, 4, 20, -7), (G_NOGEN|G_NOCORPSE),
        A(ATTK(AT_BITE, AD_WERE, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(500, 250, 0, MS_BARK, MZ_MEDIUM), MR_POISON, 0,
+       SIZ(500, 250, MS_BARK, MZ_MEDIUM), MR_POISON, 0,
        M1_NOHANDS|M1_POIS|M1_REGEN|M1_CARNIVORE,
        M2_NOPOLY|M2_WERE|M2_HOSTILE, M3_INFRAVISIBLE, CLR_BROWN),
     MON("winter wolf cub", S_DOG,
        LVL(5, 12, 4, 0, -5), (G_NOHELL|G_GENO|G_SGROUP|2),
        A(ATTK(AT_BITE, AD_PHYS, 1, 8), ATTK(AT_BREA, AD_COLD, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(250, 200, 0, MS_BARK, MZ_SMALL), MR_COLD, MR_COLD,
+       SIZ(250, 200, MS_BARK, MZ_SMALL), MR_COLD, MR_COLD,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, 0, CLR_CYAN),
     MON("warg", S_DOG,
        LVL(7, 12, 4, 0, -5), (G_GENO|G_SGROUP|2),
        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(850, 350, 0, MS_BARK, MZ_MEDIUM), 0, 0,
+       SIZ(850, 350, MS_BARK, MZ_MEDIUM), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_BROWN),
     MON("winter wolf", S_DOG,
        LVL(7, 12, 4, 20, 0), (G_NOHELL|G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_BREA, AD_COLD, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(700, 300, 0, MS_BARK, MZ_LARGE), MR_COLD, MR_COLD,
+       SIZ(700, 300, MS_BARK, MZ_LARGE), MR_COLD, MR_COLD,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG, 0, CLR_CYAN),
     MON("hell hound pup", S_DOG,
        LVL(7, 12, 4, 20, -5), (G_HELL|G_GENO|G_SGROUP|1),
        A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_BREA, AD_FIRE, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(200, 200, 0, MS_BARK, MZ_SMALL), MR_FIRE, MR_FIRE,
+       SIZ(200, 200, MS_BARK, MZ_SMALL), MR_FIRE, MR_FIRE,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_RED),
     MON("hell hound", S_DOG,
        LVL(12, 14, 2, 20, 0), (G_HELL|G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 3, 6), ATTK(AT_BREA, AD_FIRE, 3, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 300, 0, MS_BARK, MZ_MEDIUM), MR_FIRE, MR_FIRE,
+       SIZ(600, 300, MS_BARK, MZ_MEDIUM), MR_FIRE, MR_FIRE,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE|M2_STRONG,
        M3_INFRAVISIBLE, CLR_RED),
 #ifdef CHARON
@@ -306,7 +303,7 @@ NEARDATA struct permonst mons[] = {
        LVL(12, 10, 2, 20, -7), (G_HELL|G_UNIQ|1),
        A(ATTK(AT_BITE, AD_PHYS, 3, 6), ATTK(AT_BITE, AD_PHYS, 3, 6),
          ATTK(AT_BITE, AD_PHYS, 3, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1000, 350, 0, MS_BARK, MZ_LARGE), MR_FIRE, MR_FIRE,
+       SIZ(1000, 350, MS_BARK, MZ_LARGE), MR_FIRE, MR_FIRE,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,
        M2_NOPOLY|M2_HOSTILE|M2_STRONG|M2_PNAME|M2_MALE, M3_INFRAVISIBLE,
        CLR_RED),
@@ -318,35 +315,35 @@ NEARDATA struct permonst mons[] = {
        LVL(1, 3, 10, 0, 0), (G_NOCORPSE|G_GENO|1),
        A(ATTK(AT_BOOM, AD_PHYS, 4, 6), NO_ATTK, NO_ATTK,
          NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(10, 10, 0, MS_SILENT, MZ_SMALL), 0, 0,
+       SIZ(10, 10, MS_SILENT, MZ_SMALL), 0, 0,
        M1_FLY|M1_BREATHLESS|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS,
        M2_HOSTILE|M2_NEUTER, 0, CLR_GRAY),
     MON("floating eye", S_EYE,
        LVL(2, 1, 9, 10, 0), (G_GENO|5),
        A(ATTK(AT_NONE, AD_PLYS, 0,70),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(10, 10, 0, MS_SILENT, MZ_SMALL), 0, 0,
+       SIZ(10, 10, MS_SILENT, MZ_SMALL), 0, 0,
        M1_FLY|M1_AMPHIBIOUS|M1_NOLIMBS|M1_NOHEAD|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, M3_INFRAVISIBLE, CLR_BLUE),
     MON("freezing sphere", S_EYE,
        LVL(6, 13, 4, 0, 0), (G_NOCORPSE|G_NOHELL|G_GENO|2),
        A(ATTK(AT_EXPL, AD_COLD, 4, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(10, 10, 0, MS_SILENT, MZ_SMALL), MR_COLD, MR_COLD,
+       SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_COLD, MR_COLD,
        M1_FLY|M1_BREATHLESS|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, M3_INFRAVISIBLE, CLR_WHITE),
     MON("flaming sphere", S_EYE, 
        LVL(6, 13, 4, 0, 0), (G_NOCORPSE|G_GENO|2),
        A(ATTK(AT_EXPL, AD_FIRE, 4, 6), NO_ATTK, NO_ATTK,
            NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(10, 10, 0, MS_SILENT, MZ_SMALL), MR_FIRE, MR_FIRE,
+       SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_FIRE, MR_FIRE,
        M1_FLY|M1_BREATHLESS|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, M3_INFRAVISIBLE, CLR_RED),
     MON("shocking sphere", S_EYE, 
        LVL(6, 13, 4, 0, 0), (G_NOCORPSE|G_GENO|2),
        A(ATTK(AT_EXPL, AD_ELEC, 4, 6), NO_ATTK, NO_ATTK,
          NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(10, 10, 0, MS_SILENT, MZ_SMALL), MR_ELEC, MR_ELEC,
+       SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_ELEC, MR_ELEC,
        M1_FLY|M1_BREATHLESS|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, M3_INFRAVISIBLE, HI_ZAP),
 #if 0          /* not yet implemented */
@@ -355,7 +352,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_GAZE, AD_SLOW, 0, 0), ATTK(AT_GAZE, AD_SLEE, 2,25),
          ATTK(AT_GAZE, AD_DISN, 0, 0), ATTK(AT_GAZE, AD_STON, 0, 0),
          ATTK(AT_GAZE, AD_CNCL, 2, 4), ATTK(AT_BITE, AD_PHYS, 2, 4)),
-       SIZ(10, 10, 0, MS_SILENT, MZ_SMALL), MR_COLD, 0,
+       SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_COLD, 0,
        M1_FLY|M1_BREATHLESS|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS,
        M2_NOPOLY|M2_HOSTILE|M2_NEUTER, M3_INFRAVISIBLE, CLR_BROWN),
 #endif
@@ -366,49 +363,49 @@ NEARDATA struct permonst mons[] = {
        LVL(2, 18, 6, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(150, 150, 0, MS_MEW, MZ_SMALL), 0, 0,
+       SIZ(150, 150, MS_MEW, MZ_SMALL), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,
        M2_WANDER|M2_DOMESTIC, M3_INFRAVISIBLE, HI_DOMESTIC),
     MON("housecat", S_FELINE,
        LVL(4, 16, 5, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(200, 200, 0, MS_MEW, MZ_SMALL), 0, 0,
+       SIZ(200, 200, MS_MEW, MZ_SMALL), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_DOMESTIC, M3_INFRAVISIBLE,
        HI_DOMESTIC),
     MON("jaguar", S_FELINE,
        LVL(4, 15, 6, 0, 0), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          ATTK(AT_BITE, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 300, 0, MS_GROWL, MZ_LARGE), 0, 0,
+       SIZ(600, 300, MS_GROWL, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_BROWN),
     MON("lynx", S_FELINE, 
        LVL(5, 15, 6, 0, 0), (G_GENO|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          ATTK(AT_BITE, AD_PHYS, 1, 10), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 300, 0, MS_GROWL, MZ_SMALL), 0, 0,
+       SIZ(600, 300, MS_GROWL, MZ_SMALL), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_CYAN),
     MON("panther", S_FELINE, 
        LVL(5, 15, 6, 0, 0), (G_GENO|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
          ATTK(AT_BITE, AD_PHYS, 1, 10), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 300, 0, MS_GROWL, MZ_LARGE), 0, 0,
+       SIZ(600, 300, MS_GROWL, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_BLACK),
     MON("large cat", S_FELINE,
        LVL(6, 15, 4, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(250, 250, 0, MS_MEW, MZ_SMALL), 0, 0,
+       SIZ(250, 250, MS_MEW, MZ_SMALL), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,
        M2_STRONG|M2_DOMESTIC, M3_INFRAVISIBLE, HI_DOMESTIC),
     MON("tiger", S_FELINE,
        LVL(6, 12, 6, 0, 0), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
          ATTK(AT_BITE, AD_PHYS, 1,10), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 300, 0, MS_GROWL, MZ_LARGE), 0, 0,
+       SIZ(600, 300, MS_GROWL, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_YELLOW),
 /*
@@ -419,20 +416,20 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
          ATTK(AT_BITE, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_CURS, 0, 0),
          NO_ATTK, NO_ATTK),
-       SIZ(100, 20, 0, MS_LAUGH, MZ_SMALL), MR_POISON, MR_POISON,
+       SIZ(100, 20, MS_LAUGH, MZ_SMALL), MR_POISON, MR_POISON,
        M1_SWIM|M1_HUMANOID|M1_POIS, M2_STALK, M3_INFRAVISIBLE, CLR_GREEN),
     MON("gargoyle", S_GREMLIN,
        LVL(6, 10, -4, 0, -9), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_PHYS, 2, 6),
          ATTK(AT_BITE, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1000, 200, 0, MS_GRUNT, MZ_HUMAN), MR_STONE, MR_STONE,
+       SIZ(1000, 200, MS_GRUNT, MZ_HUMAN), MR_STONE, MR_STONE,
        M1_HUMANOID|M1_THICK_HIDE|M1_BREATHLESS,
        M2_HOSTILE|M2_STRONG, 0, CLR_BROWN),
     MON("winged gargoyle", S_GREMLIN,
        LVL(9, 15, -2, 0, -12), (G_GENO|1),
        A(ATTK(AT_CLAW, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 3, 6),
          ATTK(AT_BITE, AD_PHYS, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1200, 300, 0, MS_GRUNT, MZ_HUMAN), MR_STONE, MR_STONE,
+       SIZ(1200, 300, MS_GRUNT, MZ_HUMAN), MR_STONE, MR_STONE,
        M1_FLY|M1_HUMANOID|M1_THICK_HIDE|M1_BREATHLESS|M1_OVIPAROUS,
        M2_LORD|M2_HOSTILE|M2_STRONG|M2_MAGIC, 0, HI_LORD),
 /*
@@ -442,14 +439,14 @@ NEARDATA struct permonst mons[] = {
        LVL(1, 9, 10, 0, 6), (G_GENO|2),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(500, 200, 0, MS_HUMANOID, MZ_SMALL), 0, 0,
+       SIZ(500, 200, MS_HUMANOID, MZ_SMALL), 0, 0,
        M1_HUMANOID|M1_OMNIVORE, M2_COLLECT, M3_INFRAVISIBLE|M3_INFRAVISION,
        CLR_GREEN),
     MON("dwarf", S_HUMANOID,
        LVL(2, 6, 10, 10, 4), (G_GENO|3),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(900, 300, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(900, 300, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_TUNNEL|M1_NEEDPICK|M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_DWARF|M2_STRONG|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
@@ -457,14 +454,14 @@ NEARDATA struct permonst mons[] = {
        LVL(3, 9, 5, 0, -6), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1250, 250, 0, MS_GROWL, MZ_LARGE), 0, 0,
+       SIZ(1250, 250, MS_GROWL, MZ_LARGE), 0, 0,
        M1_HUMANOID|M1_OMNIVORE, M2_STRONG|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BROWN),
     MON("dwarf lord", S_HUMANOID,
        LVL(4, 6, 10, 10, 5), (G_GENO|2),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(900, 300, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(900, 300, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_TUNNEL|M1_NEEDPICK|M1_HUMANOID|M1_OMNIVORE,
        M2_DWARF|M2_STRONG|M2_LORD|M2_MALE|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BLUE),
@@ -472,7 +469,7 @@ NEARDATA struct permonst mons[] = {
        LVL(6, 6, 10, 20, 6), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(900, 300, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(900, 300, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_TUNNEL|M1_NEEDPICK|M1_HUMANOID|M1_OMNIVORE,
        M2_DWARF|M2_STRONG|M2_PRINCE|M2_MALE|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, HI_LORD),
@@ -481,7 +478,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 1, 4), ATTK(AT_TENT, AD_DRIN, 2, 1),
          ATTK(AT_TENT, AD_DRIN, 2, 1), ATTK(AT_TENT, AD_DRIN, 2, 1),
          NO_ATTK, NO_ATTK),
-       SIZ(1450, 400, 0, MS_HISS, MZ_HUMAN), 0, 0,
+       SIZ(1450, 400, MS_HISS, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_FLY|M1_SEE_INVIS|M1_OMNIVORE,
        M2_HOSTILE|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_MAGENTA),
@@ -490,7 +487,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_TENT, AD_DRIN, 2, 1),
          ATTK(AT_TENT, AD_DRIN, 2, 1), ATTK(AT_TENT, AD_DRIN, 2, 1),
          ATTK(AT_TENT, AD_DRIN, 2, 1), ATTK(AT_TENT, AD_DRIN, 2, 1)),
-       SIZ(1450, 400, 0, MS_HISS, MZ_HUMAN), 0, 0,
+       SIZ(1450, 400, MS_HISS, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_FLY|M1_SEE_INVIS|M1_OMNIVORE,
        M2_HOSTILE|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_MAGENTA),
@@ -501,26 +498,26 @@ NEARDATA struct permonst mons[] = {
        LVL(1, 3, 7, 0, -7), (G_GENO|G_LGROUP|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
          ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(100, 100, 0, MS_SILENT, MZ_SMALL), MR_SLEEP|MR_POISON, 0,
+       SIZ(100, 100, MS_SILENT, MZ_SMALL), MR_SLEEP|MR_POISON, 0,
        M1_POIS, M2_HOSTILE|M2_STALK, M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
     MON("homunculus", S_IMP,
        LVL(2, 12, 6, 10, -7), (G_GENO|2),
        A(ATTK(AT_BITE, AD_SLEE, 1, 3),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(60, 100, 0, MS_SILENT, MZ_TINY),
+       SIZ(60, 100, MS_SILENT, MZ_TINY),
        MR_SLEEP|MR_POISON, MR_SLEEP|MR_POISON,
        M1_FLY|M1_POIS, M2_STALK, M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GREEN),
     MON("imp", S_IMP,
        LVL(3, 12, 2, 20, -7), (G_GENO|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(20, 10, 0, MS_CUSS, MZ_TINY), 0, 0,
+       SIZ(20, 10, MS_CUSS, MZ_TINY), 0, 0,
        M1_REGEN, M2_WANDER|M2_STALK, M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
     MON("lemure", S_IMP,
        LVL(3, 3, 7, 0, -7), (G_HELL|G_GENO|G_LGROUP|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 3),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(150, 100, 0, MS_SILENT, MZ_MEDIUM),
+       SIZ(150, 100, MS_SILENT, MZ_MEDIUM),
        MR_SLEEP|MR_POISON, MR_SLEEP, M1_POIS|M1_REGEN,
        M2_HOSTILE|M2_WANDER|M2_STALK|M2_NEUTER,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BROWN),
@@ -528,13 +525,13 @@ NEARDATA struct permonst mons[] = {
        LVL(3, 15, 2, 20, -7), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_DRDX, 1, 2), ATTK(AT_CLAW, AD_DRDX, 1, 2),
          ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(200, 200, 0, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
+       SIZ(200, 200, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
        M1_REGEN, M2_STALK, M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BLUE),
     MON("tengu", S_IMP,
        LVL(6, 13, 5, 30, 7), (G_GENO|3),
        A(ATTK(AT_BITE, AD_PHYS, 1, 7),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(300, 200, 0, MS_SQAWK, MZ_SMALL), MR_POISON, MR_POISON,
+       SIZ(300, 200, MS_SQAWK, MZ_SMALL), MR_POISON, MR_POISON,
        M1_TPORT|M1_TPORT_CNTRL, M2_STALK, M3_INFRAVISIBLE|M3_INFRAVISION,
        CLR_CYAN),
 /*
@@ -544,7 +541,7 @@ NEARDATA struct permonst mons[] = {
        LVL(4, 0, 8, 10, 0), (G_GENO|2),
        A(ATTK(AT_NONE, AD_COLD, 0, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(50, 20, 0, MS_SILENT, MZ_MEDIUM),
+       SIZ(50, 20, MS_SILENT, MZ_MEDIUM),
        MR_COLD|MR_POISON, MR_COLD|MR_POISON,
        M1_BREATHLESS|M1_AMORPHOUS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS
          |M1_NOTAKE,
@@ -553,7 +550,7 @@ NEARDATA struct permonst mons[] = {
        LVL(5, 0, 8, 10, 0), (G_GENO|1),
        A(ATTK(AT_NONE, AD_ACID, 0, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(50, 20, 0, MS_SILENT, MZ_MEDIUM), MR_ACID|MR_STONE, 0,
+       SIZ(50, 20, MS_SILENT, MZ_MEDIUM), MR_ACID|MR_STONE, 0,
        M1_BREATHLESS|M1_AMORPHOUS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|
          M1_MINDLESS|M1_ACID|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, 0, CLR_GREEN),
@@ -561,7 +558,7 @@ NEARDATA struct permonst mons[] = {
        LVL(6, 3, 8, 20, 0), (G_GENO|2),
        A(ATTK(AT_ENGL, AD_ACID, 3, 6), ATTK(AT_NONE, AD_ACID, 3, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(50, 20, 0, MS_SILENT, MZ_MEDIUM), MR_ACID|MR_STONE, 0,
+       SIZ(50, 20, MS_SILENT, MZ_MEDIUM), MR_ACID|MR_STONE, 0,
        M1_BREATHLESS|M1_AMORPHOUS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|
          M1_MINDLESS|M1_ACID|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, 0, CLR_BROWN),
@@ -572,21 +569,21 @@ NEARDATA struct permonst mons[] = {
        LVL(0, 6, 10, 0, -2), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 100, 0, MS_ORC, MZ_SMALL), MR_POISON, 0,
+       SIZ(400, 100, MS_ORC, MZ_SMALL), MR_POISON, 0,
        M1_HUMANOID|M1_POIS|M1_OMNIVORE, M2_HOSTILE|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BROWN),
     MON("large kobold", S_KOBOLD,
        LVL(1, 6, 10, 0, -3), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(450, 150, 0, MS_ORC, MZ_SMALL), MR_POISON, 0,
+       SIZ(450, 150, MS_ORC, MZ_SMALL), MR_POISON, 0,
        M1_HUMANOID|M1_POIS|M1_OMNIVORE, M2_HOSTILE|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
     MON("kobold lord", S_KOBOLD,
        LVL(2, 6, 10, 0, -4), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(500, 200, 0, MS_ORC, MZ_SMALL), MR_POISON, 0,
+       SIZ(500, 200, MS_ORC, MZ_SMALL), MR_POISON, 0,
        M1_HUMANOID|M1_POIS|M1_OMNIVORE,
        M2_HOSTILE|M2_LORD|M2_MALE|M2_COLLECT, M3_INFRAVISIBLE|M3_INFRAVISION,
        HI_LORD),
@@ -594,7 +591,7 @@ NEARDATA struct permonst mons[] = {
        LVL(2, 6, 6, 10, -4), (G_GENO|1),
        A(ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(450, 150, 0, MS_ORC, MZ_SMALL), MR_POISON, 0,
+       SIZ(450, 150, MS_ORC, MZ_SMALL), MR_POISON, 0,
        M1_HUMANOID|M1_POIS|M1_OMNIVORE, M2_HOSTILE|M2_MAGIC,
        M3_INFRAVISIBLE|M3_INFRAVISION, HI_ZAP),
 /*
@@ -604,7 +601,7 @@ NEARDATA struct permonst mons[] = {
        LVL(5, 15, 8, 20, 0), (G_GENO|4),
        A(ATTK(AT_CLAW, AD_SGLD, 1, 2),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(60, 30, 0, MS_LAUGH, MZ_TINY), 0, 0,
+       SIZ(60, 30, MS_LAUGH, MZ_TINY), 0, 0,
        M1_HUMANOID|M1_TPORT, M2_HOSTILE|M2_GREEDY, M3_INFRAVISIBLE, CLR_GREEN),
 /*
  * mimics
@@ -613,7 +610,7 @@ NEARDATA struct permonst mons[] = {
        LVL(7, 3, 7, 0, 0), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_PHYS, 3, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(300, 200, 0, MS_SILENT, MZ_MEDIUM), MR_ACID, 0,
+       SIZ(300, 200, MS_SILENT, MZ_MEDIUM), MR_ACID, 0,
        M1_BREATHLESS|M1_AMORPHOUS|M1_HIDE|M1_ANIMAL|M1_NOEYES|
          M1_NOHEAD|M1_NOLIMBS|M1_THICK_HIDE|M1_CARNIVORE,
        M2_HOSTILE, 0, CLR_BROWN),
@@ -621,7 +618,7 @@ NEARDATA struct permonst mons[] = {
        LVL(8, 3, 7, 10, 0), (G_GENO|1),
        A(ATTK(AT_CLAW, AD_STCK, 3, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 400, 0, MS_SILENT, MZ_LARGE), MR_ACID, 0,
+       SIZ(600, 400, MS_SILENT, MZ_LARGE), MR_ACID, 0,
        M1_CLING|M1_BREATHLESS|M1_AMORPHOUS|M1_HIDE|M1_ANIMAL|M1_NOEYES|
          M1_NOHEAD|M1_NOLIMBS|M1_THICK_HIDE|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG, 0, CLR_RED),
@@ -629,7 +626,7 @@ NEARDATA struct permonst mons[] = {
        LVL(9, 3, 7, 20, 0), (G_GENO|1),
        A(ATTK(AT_CLAW, AD_STCK, 3, 6), ATTK(AT_CLAW, AD_STCK, 3, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(800, 500, 0, MS_SILENT, MZ_LARGE), MR_ACID, 0,
+       SIZ(800, 500, MS_SILENT, MZ_LARGE), MR_ACID, 0,
        M1_CLING|M1_BREATHLESS|M1_AMORPHOUS|M1_HIDE|M1_ANIMAL|M1_NOEYES|
          M1_NOHEAD|M1_NOLIMBS|M1_THICK_HIDE|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG, 0, HI_LORD),
@@ -640,21 +637,21 @@ NEARDATA struct permonst mons[] = {
        LVL(3, 12, 9, 20, 0), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 300, 0, MS_SEDUCE, MZ_HUMAN), 0, 0,
+       SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_TPORT, M2_HOSTILE|M2_FEMALE|M2_COLLECT, M3_INFRAVISIBLE,
        CLR_GREEN),
     MON("water nymph", S_NYMPH,
        LVL(3, 12, 9, 20, 0), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 300, 0, MS_SEDUCE, MZ_HUMAN), 0, 0,
+       SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_TPORT|M1_SWIM,
        M2_HOSTILE|M2_FEMALE|M2_COLLECT, M3_INFRAVISIBLE, CLR_BLUE),
     MON("mountain nymph", S_NYMPH,
        LVL(3, 12, 9, 20, 0), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 300, 0, MS_SEDUCE, MZ_HUMAN), 0, 0,
+       SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_TPORT, M2_HOSTILE|M2_FEMALE|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_BROWN),
 /*
@@ -664,14 +661,14 @@ NEARDATA struct permonst mons[] = {
        LVL(0, 6, 10, 0, -3), (G_GENO|2),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 100, 0, MS_ORC, MZ_SMALL), 0, 0,
+       SIZ(400, 100, MS_ORC, MZ_SMALL), 0, 0,
        M1_HUMANOID|M1_OMNIVORE, M2_ORC|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
     MON("hobgoblin", S_ORC,
        LVL(1, 9, 10, 0, -4), (G_GENO|2),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1000, 200, 0, MS_ORC, MZ_HUMAN), 0, 0,
+       SIZ(1000, 200, MS_ORC, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE, M2_ORC|M2_STRONG|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BROWN),
        /* plain "orc" for zombie corpses only; not created at random
@@ -680,42 +677,42 @@ NEARDATA struct permonst mons[] = {
        LVL(1, 9, 10, 0, -3), (G_GENO|G_NOGEN|G_LGROUP),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(850, 150, 0, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID|M1_OMNIVORE,
+       SIZ(850, 150, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_ORC|M2_STRONG|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
     MON("hill orc", S_ORC,
        LVL(2, 9, 10, 0, -4), (G_GENO|G_LGROUP|2),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1000, 200, 0, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID|M1_OMNIVORE,
+       SIZ(1000, 200, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID|M1_OMNIVORE,
        M2_ORC|M2_STRONG|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_YELLOW),
     MON("Mordor orc", S_ORC,
        LVL(3, 5, 10, 0, -5), (G_GENO|G_LGROUP|1),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1200, 200, 0, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID|M1_OMNIVORE,
+       SIZ(1200, 200, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID|M1_OMNIVORE,
        M2_ORC|M2_STRONG|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BLUE),
     MON("Uruk-hai", S_ORC,
        LVL(3, 7, 10, 0, -4), (G_GENO|G_LGROUP|1),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1300, 300, 0, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID|M1_OMNIVORE,
+       SIZ(1300, 300, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID|M1_OMNIVORE,
        M2_ORC|M2_STRONG|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BLACK),
     MON("orc shaman", S_ORC,
        LVL(3, 9, 5, 10, -5), (G_GENO|1),
        A(ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1000, 300, 0, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID|M1_OMNIVORE,
+       SIZ(1000, 300, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID|M1_OMNIVORE,
        M2_ORC|M2_STRONG|M2_GREEDY|M2_JEWELS|M2_MAGIC,
        M3_INFRAVISIBLE|M3_INFRAVISION, HI_ZAP),
     MON("orc-captain", S_ORC,
        LVL(5, 5, 10, 0, -5), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1350, 350, 0, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID|M1_OMNIVORE,
+       SIZ(1350, 350, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID|M1_OMNIVORE,
        M2_ORC|M2_STRONG|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, HI_LORD),
 /*
@@ -725,21 +722,21 @@ NEARDATA struct permonst mons[] = {
        LVL(3, 1, 3, 0, 0), (G_GENO|4),
        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(200, 200, 0, MS_SILENT, MZ_SMALL), 0, 0,
+       SIZ(200, 200, MS_SILENT, MZ_SMALL), 0, 0,
        M1_CLING|M1_HIDE|M1_ANIMAL|M1_NOEYES|M1_NOLIMBS|M1_CARNIVORE|M1_NOTAKE,
        M2_HOSTILE, 0, CLR_GRAY),
     MON("iron piercer", S_PIERCER,
        LVL(5, 1, 0, 0, 0), (G_GENO|2),
        A(ATTK(AT_BITE, AD_PHYS, 3, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 300, 0, MS_SILENT, MZ_MEDIUM), 0, 0,
+       SIZ(400, 300, MS_SILENT, MZ_MEDIUM), 0, 0,
        M1_CLING|M1_HIDE|M1_ANIMAL|M1_NOEYES|M1_NOLIMBS|M1_CARNIVORE|M1_NOTAKE,
        M2_HOSTILE, 0, CLR_CYAN),
     MON("glass piercer", S_PIERCER,
        LVL(7, 1, 0, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 4, 6), NO_ATTK, NO_ATTK,
          NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 300, 0, MS_SILENT, MZ_MEDIUM), MR_ACID, 0,
+       SIZ(400, 300, MS_SILENT, MZ_MEDIUM), MR_ACID, 0,
        M1_CLING|M1_HIDE|M1_ANIMAL|M1_NOEYES|M1_NOLIMBS|M1_CARNIVORE|M1_NOTAKE,
        M2_HOSTILE, 0, CLR_WHITE),
 /*
@@ -749,49 +746,49 @@ NEARDATA struct permonst mons[] = {
        LVL(2, 9, 7, 0, 0), (G_GENO|G_SGROUP|4),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_BITE, AD_PHYS, 1, 3),
          ATTK(AT_BITE, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 100, 0, MS_SILENT, MZ_LARGE), 0, 0,
+       SIZ(400, 100, MS_SILENT, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_OMNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_BROWN),
     MON("mumak", S_QUADRUPED,
        LVL(5, 9, 0, 0, -2), (G_GENO|1),
        A(ATTK(AT_BUTT, AD_PHYS, 4,12), ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2500, 500, 0, MS_ROAR, MZ_LARGE), 0, 0,
+       SIZ(2500, 500, MS_ROAR, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_THICK_HIDE|M1_NOHANDS|M1_HERBIVORE,
        M2_HOSTILE|M2_STRONG, M3_INFRAVISIBLE, CLR_GRAY),
     MON("leocrotta", S_QUADRUPED,
        LVL(6, 18, 4, 10, 0), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_BITE, AD_PHYS, 2, 6),
          ATTK(AT_CLAW, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1200, 500, 0, MS_IMITATE, MZ_LARGE), 0, 0,
+       SIZ(1200, 500, MS_IMITATE, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_OMNIVORE, M2_HOSTILE|M2_STRONG,
        M3_INFRAVISIBLE, CLR_RED),
     MON("wumpus", S_QUADRUPED,
        LVL(8, 3, 2, 10, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 3, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2500, 500, 0, MS_BURBLE, MZ_LARGE), 0, 0,
+       SIZ(2500, 500, MS_BURBLE, MZ_LARGE), 0, 0,
        M1_CLING|M1_ANIMAL|M1_NOHANDS|M1_OMNIVORE,
        M2_HOSTILE|M2_STRONG, M3_INFRAVISIBLE, CLR_CYAN),
     MON("titanothere", S_QUADRUPED,
        LVL(12, 12, 6, 0, 0), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2650, 650, 0, MS_SILENT, MZ_LARGE), 0, 0,
+       SIZ(2650, 650, MS_SILENT, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_THICK_HIDE|M1_NOHANDS|M1_HERBIVORE,
        M2_HOSTILE|M2_STRONG, M3_INFRAVISIBLE, CLR_GRAY),
     MON("baluchitherium", S_QUADRUPED,
        LVL(14, 12, 5, 0, 0), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_PHYS, 5, 4), ATTK(AT_CLAW, AD_PHYS, 5, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(3800, 800, 0, MS_SILENT, MZ_LARGE), 0, 0,
+       SIZ(3800, 800, MS_SILENT, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_THICK_HIDE|M1_NOHANDS|M1_HERBIVORE,
        M2_HOSTILE|M2_STRONG, M3_INFRAVISIBLE, CLR_GRAY),
     MON("mastodon", S_QUADRUPED,
        LVL(20, 12, 5, 0, 0), (G_GENO|1),
        A(ATTK(AT_BUTT, AD_PHYS, 4, 8), ATTK(AT_BUTT, AD_PHYS, 4, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(3800, 800, 0, MS_SILENT, MZ_LARGE), 0, 0,
+       SIZ(3800, 800, MS_SILENT, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_THICK_HIDE|M1_NOHANDS|M1_HERBIVORE,
        M2_HOSTILE|M2_STRONG, M3_INFRAVISIBLE, CLR_BLACK),
 /*
@@ -801,42 +798,42 @@ NEARDATA struct permonst mons[] = {
        LVL(0, 12, 7, 0, 0), (G_GENO|G_SGROUP|1),
        A(ATTK(AT_BITE, AD_PHYS, 1, 3),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(20, 12, 0, MS_SQEEK, MZ_TINY), 0, 0,
+       SIZ(20, 12, MS_SQEEK, MZ_TINY), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_BROWN),
     MON("giant rat", S_RODENT,
        LVL(1, 10, 7, 0, 0), (G_GENO|G_SGROUP|2),
        A(ATTK(AT_BITE, AD_PHYS, 1, 3),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(30, 30, 0, MS_SQEEK, MZ_TINY), 0, 0,
+       SIZ(30, 30, MS_SQEEK, MZ_TINY), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_BROWN),
     MON("rabid rat", S_RODENT,
        LVL(2, 12, 6, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_DRCO, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(30, 5, 0, MS_SQEEK, MZ_TINY), MR_POISON, 0,
+       SIZ(30, 5, MS_SQEEK, MZ_TINY), MR_POISON, 0,
        M1_ANIMAL|M1_NOHANDS|M1_POIS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_BROWN),
     MON("wererat", S_RODENT,
        LVL(2, 12, 6, 10, -7), (G_NOGEN|G_NOCORPSE),
        A(ATTK(AT_BITE, AD_WERE, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(40, 30, 0, MS_SQEEK, MZ_TINY), MR_POISON, 0,
+       SIZ(40, 30, MS_SQEEK, MZ_TINY), MR_POISON, 0,
        M1_NOHANDS|M1_POIS|M1_REGEN|M1_CARNIVORE,
        M2_NOPOLY|M2_WERE|M2_HOSTILE, M3_INFRAVISIBLE, CLR_BROWN),
     MON("rock mole", S_RODENT,
        LVL(3, 3, 0, 20, 0), (G_GENO|2),
        A(ATTK(AT_BITE, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(30, 30, 0, MS_SILENT, MZ_SMALL), 0, 0,
+       SIZ(30, 30, MS_SILENT, MZ_SMALL), 0, 0,
        M1_TUNNEL|M1_ANIMAL|M1_NOHANDS|M1_METALLIVORE,
        M2_HOSTILE|M2_GREEDY|M2_JEWELS|M2_COLLECT, M3_INFRAVISIBLE, CLR_GRAY),
     MON("woodchuck", S_RODENT,
        LVL(3, 3, 0, 20, 0), (G_NOGEN|G_GENO),
        A(ATTK(AT_BITE, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(30, 30, 0, MS_SILENT, MZ_SMALL), 0, 0,
+       SIZ(30, 30, MS_SILENT, MZ_SMALL), 0, 0,
        M1_TUNNEL/*LOGGING*/|M1_ANIMAL|M1_NOHANDS|M1_SWIM|M1_HERBIVORE,
                /* In reality, they tunnel instead of cutting lumber.  Oh, well. */
        M2_WANDER|M2_HOSTILE, M3_INFRAVISIBLE, CLR_BROWN),
@@ -847,28 +844,28 @@ NEARDATA struct permonst mons[] = {
        LVL(1, 12, 3, 0, 0), (G_GENO|G_SGROUP|2),
        A(ATTK(AT_BITE, AD_PHYS, 1, 2),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(50, 50, 0, MS_SILENT, MZ_TINY), MR_POISON, MR_POISON,
+       SIZ(50, 50, MS_SILENT, MZ_TINY), MR_POISON, MR_POISON,
        M1_CONCEAL|M1_ANIMAL|M1_NOHANDS|M1_OVIPAROUS|M1_CARNIVORE,
        M2_HOSTILE, 0, CLR_GRAY),
     MON("centipede", S_SPIDER, 
        LVL(2, 4, 3, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_DRST, 1, 3), NO_ATTK, NO_ATTK,
          NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(50, 50, 0, MS_SILENT, MZ_TINY), MR_POISON, MR_POISON,
+       SIZ(50, 50, MS_SILENT, MZ_TINY), MR_POISON, MR_POISON,
        M1_CONCEAL|M1_ANIMAL|M1_NOHANDS|M1_OVIPAROUS|M1_CARNIVORE,
        M2_HOSTILE, 0, CLR_YELLOW),
     MON("giant spider", S_SPIDER,
        LVL(5, 15, 4, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_DRST, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(100, 100, 0, MS_SILENT, MZ_LARGE), MR_POISON, MR_POISON,
+       SIZ(100, 100, MS_SILENT, MZ_LARGE), MR_POISON, MR_POISON,
        M1_ANIMAL|M1_NOHANDS|M1_OVIPAROUS|M1_POIS|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG, 0, CLR_MAGENTA),
     MON("scorpion", S_SPIDER,
        LVL(5, 15, 3, 0, 0), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 2), ATTK(AT_CLAW, AD_PHYS, 1, 2),
          ATTK(AT_STNG, AD_DRST, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(50, 100, 0, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
+       SIZ(50, 100, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
        M1_CONCEAL|M1_ANIMAL|M1_NOHANDS|M1_OVIPAROUS|M1_POIS|M1_CARNIVORE,
        M2_HOSTILE, 0, CLR_RED),
 /*
@@ -878,14 +875,14 @@ NEARDATA struct permonst mons[] = {
        LVL(10, 3, 3, 0, 0), (G_GENO|2),
        A(ATTK(AT_ENGL, AD_DGST, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(800, 350, 0, MS_SILENT, MZ_HUGE), 0, 0,
+       SIZ(800, 350, MS_SILENT, MZ_HUGE), 0, 0,
        M1_HIDE|M1_FLY|M1_ANIMAL|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_CARNIVORE,
        M2_HOSTILE|M2_STALK|M2_STRONG, 0, CLR_GRAY),
     MON("trapper", S_TRAPPER,
        LVL(12, 3, 3, 0, 0), (G_GENO|2),
        A(ATTK(AT_ENGL, AD_DGST, 1,10),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(800, 350, 0, MS_SILENT, MZ_HUGE), 0, 0,
+       SIZ(800, 350, MS_SILENT, MZ_HUGE), 0, 0,
        M1_HIDE|M1_ANIMAL|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_CARNIVORE,
        M2_HOSTILE|M2_STALK|M2_STRONG, 0, CLR_GREEN),
 /*
@@ -895,42 +892,42 @@ NEARDATA struct permonst mons[] = {
        LVL(3, 16, 6, 0, 0), (G_GENO|2),
        A(ATTK(AT_KICK, AD_PHYS, 1, 6), ATTK(AT_BITE, AD_PHYS, 1, 2),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1300, 250, 0, MS_NEIGH, MZ_MEDIUM), 0, 0,
+       SIZ(1300, 250, MS_NEIGH, MZ_MEDIUM), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_HERBIVORE, M2_WANDER|M2_STRONG|M2_DOMESTIC,
        M3_INFRAVISIBLE, CLR_BROWN),
     MON("white unicorn", S_UNICORN,
        LVL(4, 24, 2, 70, 7), (G_GENO|2),
        A(ATTK(AT_BUTT, AD_PHYS, 1,12), ATTK(AT_KICK, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1300, 300, 0, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
+       SIZ(1300, 300, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
        M1_NOHANDS|M1_HERBIVORE, M2_WANDER|M2_STRONG|M2_JEWELS,
        M3_INFRAVISIBLE, CLR_WHITE),
     MON("gray unicorn", S_UNICORN,
        LVL(4, 24, 2, 70, 0), (G_GENO|1),
        A(ATTK(AT_BUTT, AD_PHYS, 1,12), ATTK(AT_KICK, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1300, 300, 0, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
+       SIZ(1300, 300, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
        M1_NOHANDS|M1_HERBIVORE, M2_WANDER|M2_STRONG|M2_JEWELS,
        M3_INFRAVISIBLE, CLR_GRAY),
     MON("black unicorn", S_UNICORN,
        LVL(4, 24, 2, 70, -7), (G_GENO|1),
        A(ATTK(AT_BUTT, AD_PHYS, 1,12), ATTK(AT_KICK, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1300, 300, 0, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
+       SIZ(1300, 300, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
        M1_NOHANDS|M1_HERBIVORE, M2_WANDER|M2_STRONG|M2_JEWELS,
        M3_INFRAVISIBLE, CLR_BLACK),
     MON("horse", S_UNICORN,
        LVL(5, 20, 5, 0, 0), (G_GENO|2),
        A(ATTK(AT_KICK, AD_PHYS, 1, 8), ATTK(AT_BITE, AD_PHYS, 1, 3),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 300, 0, MS_NEIGH, MZ_LARGE), 0, 0,
+       SIZ(1500, 300, MS_NEIGH, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_HERBIVORE, M2_WANDER|M2_STRONG|M2_DOMESTIC,
        M3_INFRAVISIBLE, CLR_BROWN),
     MON("warhorse", S_UNICORN,
        LVL(7, 24, 4, 0, 0), (G_GENO|2),
        A(ATTK(AT_KICK, AD_PHYS, 1, 10), ATTK(AT_BITE, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1800, 350, 0, MS_NEIGH, MZ_LARGE), 0, 0,
+       SIZ(1800, 350, MS_NEIGH, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_HERBIVORE, M2_WANDER|M2_STRONG|M2_DOMESTIC,
        M3_INFRAVISIBLE, CLR_BROWN),
 /*
@@ -940,7 +937,7 @@ NEARDATA struct permonst mons[] = {
        LVL(3, 1, 0, 0, 0), (G_GENO|G_NOCORPSE|2),
        A(ATTK(AT_ENGL, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, MS_SILENT, MZ_HUGE), MR_SLEEP|MR_POISON|MR_STONE, 0,
+       SIZ(0, 0, MS_SILENT, MZ_HUGE), MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_FLY|M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|
          M1_AMORPHOUS|M1_UNSOLID,
        M2_HOSTILE|M2_NEUTER, 0, CLR_GRAY),
@@ -948,14 +945,14 @@ NEARDATA struct permonst mons[] = {
        LVL(4, 20, 2, 30, 0), (G_GENO|G_NOCORPSE|2),
        A(ATTK(AT_ENGL, AD_BLND, 2, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, MS_SILENT, MZ_HUGE), MR_SLEEP|MR_POISON|MR_STONE, 0,
+       SIZ(0, 0, MS_SILENT, MZ_HUGE), MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_FLY|M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS,
        M2_HOSTILE|M2_NEUTER, 0, CLR_BROWN),
     MON("ice vortex", S_VORTEX,
        LVL(5, 20, 2, 30, 0), (G_NOHELL|G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_ENGL, AD_COLD, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, MS_SILENT, MZ_HUGE),
+       SIZ(0, 0, MS_SILENT, MZ_HUGE),
        MR_COLD|MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_FLY|M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS,
        M2_HOSTILE|M2_NEUTER, M3_INFRAVISIBLE, CLR_CYAN),
@@ -963,7 +960,7 @@ NEARDATA struct permonst mons[] = {
        LVL(6, 20, 2, 30, 0), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_ENGL, AD_ELEC, 1, 6), ATTK(AT_ENGL, AD_DREN, 0, 0),
          ATTK(AT_NONE, AD_ELEC, 0, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, MS_SILENT, MZ_HUGE),
+       SIZ(0, 0, MS_SILENT, MZ_HUGE),
        MR_ELEC|MR_SLEEP|MR_DISINT|MR_POISON|MR_STONE, 0,
        M1_FLY|M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|
          M1_UNSOLID,
@@ -972,7 +969,7 @@ NEARDATA struct permonst mons[] = {
        LVL(7, 22, 2, 30, 0), (G_HELL|G_GENO|G_NOCORPSE|2),
        A(ATTK(AT_ENGL, AD_FIRE, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, MS_SILENT, MZ_HUGE),
+       SIZ(0, 0, MS_SILENT, MZ_HUGE),
        MR_FIRE|MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_FLY|M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|
          M1_UNSOLID,
@@ -981,7 +978,7 @@ NEARDATA struct permonst mons[] = {
        LVL(8, 22, 2, 30, 0), (G_HELL|G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_ENGL, AD_FIRE, 1,10), ATTK(AT_NONE, AD_FIRE, 0, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, MS_SILENT, MZ_HUGE),
+       SIZ(0, 0, MS_SILENT, MZ_HUGE),
        MR_FIRE|MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_FLY|M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|
          M1_UNSOLID,
@@ -993,28 +990,28 @@ NEARDATA struct permonst mons[] = {
        LVL(8, 3, 5, 0, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 250, 0, MS_SILENT, MZ_LARGE), 0, 0,
+       SIZ(600, 250, MS_SILENT, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_SLITHY|M1_NOLIMBS|M1_CARNIVORE|M1_NOTAKE,
        M2_HOSTILE, 0, CLR_BROWN),
     MON("baby purple worm", S_WORM,
        LVL(8, 3, 5, 0, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 250, 0, MS_SILENT, MZ_LARGE), 0, 0,
+       SIZ(600, 250, MS_SILENT, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_SLITHY|M1_NOLIMBS|M1_CARNIVORE, M2_HOSTILE,
        0, CLR_MAGENTA),
     MON("long worm", S_WORM,
        LVL(8, 3, 5, 10, 0), (G_GENO|2),
        A(ATTK(AT_BITE, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_SILENT, MZ_GIGANTIC), 0, 0,
+       SIZ(1500, 500, MS_SILENT, MZ_GIGANTIC), 0, 0,
        M1_ANIMAL|M1_SLITHY|M1_NOLIMBS|M1_OVIPAROUS|M1_CARNIVORE|M1_NOTAKE,
        M2_HOSTILE|M2_STRONG|M2_NASTY, 0, CLR_BROWN),
     MON("purple worm", S_WORM,
        LVL(15, 9, 6, 20, 0), (G_GENO|2),
        A(ATTK(AT_BITE, AD_PHYS, 2, 8), ATTK(AT_ENGL, AD_DGST, 1,10),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2700, 700, 0, MS_SILENT, MZ_GIGANTIC), 0, 0,
+       SIZ(2700, 700, MS_SILENT, MZ_GIGANTIC), 0, 0,
        M1_ANIMAL|M1_SLITHY|M1_NOLIMBS|M1_OVIPAROUS|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY, 0, CLR_MAGENTA),
 /*
@@ -1024,13 +1021,13 @@ NEARDATA struct permonst mons[] = {
        LVL(0, 12, 9, 0, 0), (G_GENO|G_SGROUP|G_NOCORPSE|3),
        A(ATTK(AT_BITE, AD_ELEC, 1, 1),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(15, 10, 0, MS_BUZZ, MZ_TINY), MR_ELEC|MR_POISON, 0,
+       SIZ(15, 10, MS_BUZZ, MZ_TINY), MR_ELEC|MR_POISON, 0,
        M1_ANIMAL, M2_HOSTILE, M3_INFRAVISIBLE, CLR_MAGENTA),
     MON("xan", S_XAN,
        LVL(7, 18, -4, 0, 0), (G_GENO|3),
        A(ATTK(AT_STNG, AD_LEGS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(300, 300, 0, MS_BUZZ, MZ_TINY), MR_POISON, MR_POISON,
+       SIZ(300, 300, MS_BUZZ, MZ_TINY), MR_POISON, MR_POISON,
        M1_FLY|M1_ANIMAL|M1_NOHANDS|M1_POIS, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_RED),
 /*
@@ -1040,7 +1037,7 @@ NEARDATA struct permonst mons[] = {
        LVL(3, 15, 0, 0, 0), (G_NOCORPSE|G_GENO|4),
        A(ATTK(AT_EXPL, AD_BLND, 10,20),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, MS_SILENT, MZ_SMALL),
+       SIZ(0, 0, MS_SILENT, MZ_SMALL),
        MR_FIRE|MR_COLD|MR_ELEC|MR_DISINT|MR_SLEEP|MR_POISON|MR_ACID|
          MR_STONE, 0,
        M1_FLY|M1_BREATHLESS|M1_AMORPHOUS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|
@@ -1050,7 +1047,7 @@ NEARDATA struct permonst mons[] = {
        LVL(5, 15, 0, 0, 0), (G_NOCORPSE|G_GENO|2),
        A(ATTK(AT_EXPL, AD_HALU, 10,12),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, MS_SILENT, MZ_SMALL),
+       SIZ(0, 0, MS_SILENT, MZ_SMALL),
        MR_FIRE|MR_COLD|MR_ELEC|MR_DISINT|MR_SLEEP|MR_POISON|MR_ACID|
          MR_STONE, 0,
        M1_FLY|M1_BREATHLESS|M1_AMORPHOUS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|
@@ -1063,7 +1060,7 @@ NEARDATA struct permonst mons[] = {
        LVL(9, 8, 3, 0, 0), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_PHYS, 3, 4), ATTK(AT_CLAW, AD_PHYS, 3, 4),
          ATTK(AT_BITE, AD_PHYS, 3, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1200, 600, 0, MS_SILENT, MZ_LARGE), 0, 0,
+       SIZ(1200, 600, MS_SILENT, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_HUMANOID|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG, M3_INFRAVISIBLE, CLR_BROWN),
 /*
@@ -1073,7 +1070,7 @@ NEARDATA struct permonst mons[] = {
        LVL(8, 10, 5, 30, 7), (G_NOHELL|G_SGROUP|G_NOCORPSE|1),
        A(ATTK(AT_BITE, AD_DRST, 2, 4), ATTK(AT_BITE, AD_PHYS, 1, 3),
          ATTK(AT_HUGS, AD_WRAP, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(900, 400, 0, MS_HISS, MZ_LARGE), MR_POISON, 0,
+       SIZ(900, 400, MS_HISS, MZ_LARGE), MR_POISON, 0,
        M1_FLY|M1_NOHANDS|M1_SLITHY|M1_POIS,
        M2_MINION|M2_STALK|M2_STRONG|M2_NASTY, M3_INFRAVISIBLE|M3_INFRAVISION,
        CLR_GREEN),
@@ -1081,7 +1078,7 @@ NEARDATA struct permonst mons[] = {
        LVL(10, 8, 0, 30, 7), (G_NOHELL|G_NOCORPSE|1),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          ATTK(AT_KICK, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_IMITATE, MZ_HUMAN),
+       SIZ(WT_HUMAN, 400, MS_IMITATE, MZ_HUMAN),
        MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON, 0,
        M1_HUMANOID|M1_SEE_INVIS,
        M2_MINION|M2_STALK|M2_NASTY|M2_COLLECT, M3_INFRAVISIBLE|M3_INFRAVISION,
@@ -1095,7 +1092,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6), 
          ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_MAGC, AD_MAGM, 2, 6),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, sizeof(struct emin), MS_CUSS, MZ_HUMAN),
+       SIZ(WT_HUMAN, 400, MS_CUSS, MZ_HUMAN),
        MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON, 0,
        M1_FLY|M1_HUMANOID|M1_SEE_INVIS,
        M2_NOPOLY|M2_MINION|M2_STALK|M2_STRONG|M2_NASTY|M2_COLLECT,
@@ -1105,7 +1102,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_KICK, AD_PHYS, 2, 4), ATTK(AT_KICK, AD_PHYS, 2, 4),
          ATTK(AT_BUTT, AD_PHYS, 3, 6), ATTK(AT_MAGC, AD_SPEL, 2, 6),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_NEIGH, MZ_LARGE), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_NEIGH, MZ_LARGE), 0, 0,
        M1_FLY|M1_ANIMAL|M1_NOHANDS|M1_SEE_INVIS,
        M2_NOPOLY|M2_MINION|M2_STALK|M2_STRONG|M2_NASTY|M2_LORD,
        M3_INFRAVISIBLE|M3_INFRAVISION, HI_GOLD),
@@ -1114,7 +1111,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
          ATTK(AT_GAZE, AD_BLND, 2, 6), ATTK(AT_CLAW, AD_PHYS, 1, 8),
          ATTK(AT_MAGC, AD_SPEL, 4, 6), NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_CUSS, MZ_LARGE),
+       SIZ(WT_HUMAN, 400, MS_CUSS, MZ_LARGE),
        MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON, 0,
        M1_FLY|M1_HUMANOID|M1_SEE_INVIS|M1_REGEN,
        M2_NOPOLY|M2_MINION|M2_STALK|M2_STRONG|M2_NASTY|M2_LORD|
@@ -1127,28 +1124,28 @@ NEARDATA struct permonst mons[] = {
        LVL(0, 22, 8, 0, 0), (G_GENO|G_SGROUP|1),
        A(ATTK(AT_BITE, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(20, 20, 0, MS_SQEEK, MZ_TINY), 0, 0,
+       SIZ(20, 20, MS_SQEEK, MZ_TINY), 0, 0,
        M1_FLY|M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_WANDER, M3_INFRAVISIBLE,
        CLR_BROWN),
     MON("giant bat", S_BAT,
        LVL(2, 22, 7, 0, 0), (G_GENO|2),
        A(ATTK(AT_BITE, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(30, 30, 0, MS_SQEEK, MZ_SMALL), 0, 0,
+       SIZ(30, 30, MS_SQEEK, MZ_SMALL), 0, 0,
        M1_FLY|M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,
        M2_WANDER|M2_HOSTILE, M3_INFRAVISIBLE, CLR_RED),
     MON("raven", S_BAT,
        LVL(4, 20, 6, 0, 0), (G_GENO|2),
        A(ATTK(AT_BITE, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_BLND, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(40, 20, 0, MS_SQAWK, MZ_SMALL), 0, 0,
+       SIZ(40, 20, MS_SQAWK, MZ_SMALL), 0, 0,
        M1_FLY|M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,
        M2_WANDER|M2_HOSTILE, M3_INFRAVISIBLE, CLR_BLACK),
     MON("vampire bat", S_BAT,
        LVL(5, 20, 6, 0, 0), (G_GENO|2),
        A(ATTK(AT_BITE, AD_PHYS, 1, 6), ATTK(AT_BITE, AD_DRST, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(30, 20, 0, MS_SQEEK, MZ_SMALL), MR_SLEEP|MR_POISON, 0,
+       SIZ(30, 20, MS_SQEEK, MZ_SMALL), MR_SLEEP|MR_POISON, 0,
        M1_FLY|M1_ANIMAL|M1_NOHANDS|M1_POIS|M1_REGEN|M1_OMNIVORE,
        M2_HOSTILE, M3_INFRAVISIBLE, CLR_BLACK),
 /*
@@ -1158,21 +1155,21 @@ NEARDATA struct permonst mons[] = {
        LVL(4, 18, 4, 0, 0), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_KICK, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2500, 500, 0, MS_HUMANOID, MZ_LARGE), 0, 0,
+       SIZ(2500, 500, MS_HUMANOID, MZ_LARGE), 0, 0,
        M1_HUMANOID|M1_OMNIVORE, M2_STRONG|M2_GREEDY|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_BROWN),
     MON("forest centaur", S_CENTAUR,
        LVL(5, 18, 3, 10, -1), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_KICK, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2550, 600, 0, MS_HUMANOID, MZ_LARGE), 0, 0,
+       SIZ(2550, 600, MS_HUMANOID, MZ_LARGE), 0, 0,
        M1_HUMANOID|M1_OMNIVORE, M2_STRONG|M2_GREEDY|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_GREEN),
     MON("mountain centaur", S_CENTAUR,
        LVL(6, 20, 2, 10, -3), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 1,10), ATTK(AT_KICK, AD_PHYS, 1, 6),
          ATTK(AT_KICK, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2550, 500, 0, MS_HUMANOID, MZ_LARGE), 0, 0,
+       SIZ(2550, 500, MS_HUMANOID, MZ_LARGE), 0, 0,
        M1_HUMANOID|M1_OMNIVORE, M2_STRONG|M2_GREEDY|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_CYAN),
 /*
@@ -1191,14 +1188,14 @@ NEARDATA struct permonst mons[] = {
        LVL(12, 9, 2, 10, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_ROAR, MZ_HUGE), 0, 0,
+       SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_GREEDY|M2_JEWELS, 0, CLR_GRAY),
     MON("baby silver dragon", S_DRAGON,
        LVL(12, 9, 2, 10, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_ROAR, MZ_HUGE), 0, 0,
+       SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_GREEDY|M2_JEWELS, 0, DRAGON_SILVER),
 #if 0  /* DEFERRED */
@@ -1206,7 +1203,7 @@ NEARDATA struct permonst mons[] = {
        LVL(12, 9, 2, 10, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_ROAR, MZ_HUGE), 0, 0,
+       SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_GREEDY|M2_JEWELS, 0, CLR_CYAN),
 #endif
@@ -1214,49 +1211,49 @@ NEARDATA struct permonst mons[] = {
        LVL(12, 9, 2, 10, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_ROAR, MZ_HUGE), MR_FIRE, 0,
+       SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_FIRE, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_GREEDY|M2_JEWELS, M3_INFRAVISIBLE, CLR_RED),
     MON("baby white dragon", S_DRAGON,
        LVL(12, 9, 2, 10, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_ROAR, MZ_HUGE), MR_COLD, 0,
+       SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_COLD, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_GREEDY|M2_JEWELS, 0, CLR_WHITE),
     MON("baby orange dragon", S_DRAGON,
        LVL(12, 9, 2, 10, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_ROAR, MZ_HUGE), MR_SLEEP, 0,
+       SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_SLEEP, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_GREEDY|M2_JEWELS, 0, CLR_ORANGE),
     MON("baby black dragon", S_DRAGON,
        LVL(12, 9, 2, 10, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_ROAR, MZ_HUGE), MR_DISINT, 0,
+       SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_DISINT, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_GREEDY|M2_JEWELS, 0, CLR_BLACK),
     MON("baby blue dragon", S_DRAGON,
        LVL(12, 9, 2, 10, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_ROAR, MZ_HUGE), MR_ELEC, 0,
+       SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_ELEC, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_GREEDY|M2_JEWELS, 0, CLR_BLUE),
     MON("baby green dragon", S_DRAGON,
        LVL(12, 9, 2, 10, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_ROAR, MZ_HUGE), MR_POISON, 0,
+       SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_POISON, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE|M1_POIS,
        M2_HOSTILE|M2_STRONG|M2_GREEDY|M2_JEWELS, 0, CLR_GREEN),
     MON("baby yellow dragon", S_DRAGON,
        LVL(12, 9, 2, 10, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_ROAR, MZ_HUGE), MR_ACID|MR_STONE, 0,
+       SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_ACID|MR_STONE, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE|M1_ACID,
        M2_HOSTILE|M2_STRONG|M2_GREEDY|M2_JEWELS, 0, CLR_YELLOW),
     MON("gray dragon", S_DRAGON,
@@ -1264,7 +1261,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_BREA, AD_MAGM, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
          ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC), 0, 0,
+       SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), 0, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_SEE_INVIS|M1_OVIPAROUS|
          M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_MAGIC, 0, CLR_GRAY),
@@ -1273,7 +1270,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_BREA, AD_COLD, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
          ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC), MR_COLD, 0,
+       SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_COLD, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_SEE_INVIS|M1_OVIPAROUS|
          M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_MAGIC,
@@ -1284,7 +1281,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_BREA, AD_MAGM, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
          ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC), 0, 0,
+       SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), 0, 0,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_SEE_INVIS|M1_OVIPAROUS|
          M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_MAGIC,
@@ -1295,7 +1292,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_BREA, AD_FIRE, 6, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
          ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC), MR_FIRE, MR_FIRE,
+       SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_FIRE, MR_FIRE,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_SEE_INVIS|M1_OVIPAROUS|
          M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_MAGIC,
@@ -1305,7 +1302,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_BREA, AD_COLD, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
          ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC), MR_COLD, MR_COLD,
+       SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_COLD, MR_COLD,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_SEE_INVIS|M1_OVIPAROUS|
          M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_MAGIC, 0, CLR_WHITE),
@@ -1314,7 +1311,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_BREA, AD_SLEE, 4,25), ATTK(AT_BITE, AD_PHYS, 3, 8),
          ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC), MR_SLEEP, MR_SLEEP,
+       SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_SLEEP, MR_SLEEP,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_SEE_INVIS|M1_OVIPAROUS|
          M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_MAGIC,
@@ -1324,7 +1321,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_BREA, AD_DISN, 4,10), ATTK(AT_BITE, AD_PHYS, 3, 8),
          ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC), MR_DISINT, MR_DISINT,
+       SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_DISINT, MR_DISINT,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_SEE_INVIS|M1_OVIPAROUS|
          M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_MAGIC, 0, CLR_BLACK),
@@ -1333,7 +1330,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_BREA, AD_ELEC, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
          ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC), MR_ELEC, MR_ELEC,
+       SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_ELEC, MR_ELEC,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_SEE_INVIS|M1_OVIPAROUS|
          M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_MAGIC, 0, CLR_BLUE),
@@ -1342,7 +1339,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_BREA, AD_DRST, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
          ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC), MR_POISON, MR_POISON,
+       SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_POISON, MR_POISON,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_SEE_INVIS|M1_OVIPAROUS|
          M1_CARNIVORE|M1_POIS,
        M2_HOSTILE|M2_STRONG|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_MAGIC, 0, CLR_GREEN),
@@ -1351,7 +1348,7 @@ NEARDATA struct permonst mons[] = {
        A(ATTK(AT_BREA, AD_ACID, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
          ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC),
+       SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC),
        MR_ACID|MR_STONE, MR_STONE,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_SEE_INVIS|M1_OVIPAROUS|
          M1_CARNIVORE|M1_ACID,
@@ -1364,28 +1361,28 @@ NEARDATA struct permonst mons[] = {
        LVL(8, 12, 3, 0, 0), (G_GENO|3),
        A(ATTK(AT_CLAW, AD_PHYS, 4, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(900, 400, 0, MS_SILENT, MZ_LARGE), 0, 0,
+       SIZ(900, 400, MS_SILENT, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_FLY|M1_SEE_INVIS,
        M2_WANDER|M2_STALK|M2_HOSTILE|M2_STRONG, M3_INFRAVISION, CLR_WHITE),
     MON("air elemental", S_ELEMENTAL,
        LVL(8, 36, 2, 30, 0), (G_NOCORPSE|1),
        A(ATTK(AT_ENGL, AD_PHYS, 1, 10),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, MS_SILENT, MZ_HUGE), MR_POISON|MR_STONE, 0,
+       SIZ(0, 0, MS_SILENT, MZ_HUGE), MR_POISON|MR_STONE, 0,
        M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_UNSOLID|M1_FLY,
        M2_STRONG|M2_NEUTER, 0, CLR_CYAN),
     MON("fire elemental", S_ELEMENTAL,
        LVL(8, 12, 2, 30, 0), (G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_FIRE, 3, 6), ATTK(AT_NONE, AD_FIRE, 0, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, MS_SILENT, MZ_HUGE), MR_FIRE|MR_POISON|MR_STONE, 0,
+       SIZ(0, 0, MS_SILENT, MZ_HUGE), MR_FIRE|MR_POISON|MR_STONE, 0,
        M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_UNSOLID|M1_FLY|M1_NOTAKE,
        M2_STRONG|M2_NEUTER, M3_INFRAVISIBLE, CLR_YELLOW),
     MON("earth elemental", S_ELEMENTAL,
        LVL(8, 6, 2, 30, 0), (G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 4, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2500, 0, 0, MS_SILENT, MZ_HUGE),
+       SIZ(2500, 0, MS_SILENT, MZ_HUGE),
        MR_FIRE|MR_COLD|MR_POISON|MR_STONE, 0,
        M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_BREATHLESS|
          M1_WALLWALK|M1_THICK_HIDE,
@@ -1394,7 +1391,7 @@ NEARDATA struct permonst mons[] = {
        LVL(8, 6, 2, 30, 0), (G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 5, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2500, 0, 0, MS_SILENT, MZ_HUGE), MR_POISON|MR_STONE, 0,
+       SIZ(2500, 0, MS_SILENT, MZ_HUGE), MR_POISON|MR_STONE, 0,
        M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_AMPHIBIOUS|M1_SWIM,
        M2_STRONG|M2_NEUTER, 0, CLR_BLUE),
 /*
@@ -1404,14 +1401,14 @@ NEARDATA struct permonst mons[] = {
        LVL(0, 1, 9, 0, 0), (G_GENO|4),
        A(ATTK(AT_TUCH, AD_STCK, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(20, 200, 0, MS_SILENT, MZ_SMALL), 0, 0,
+       SIZ(20, 200, MS_SILENT, MZ_SMALL), 0, 0,
        M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, 0, CLR_BRIGHT_GREEN),
     MON("brown mold", S_FUNGUS,
        LVL(1, 0, 9, 0, 0), (G_GENO|1),
        A(ATTK(AT_NONE, AD_COLD, 0, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(50, 30, 0, MS_SILENT, MZ_SMALL),
+       SIZ(50, 30, MS_SILENT, MZ_SMALL),
        MR_COLD|MR_POISON, MR_COLD|MR_POISON,
        M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, 0, CLR_BROWN),
@@ -1419,35 +1416,35 @@ NEARDATA struct permonst mons[] = {
        LVL(1, 0, 9, 0, 0), (G_GENO|2),
        A(ATTK(AT_NONE, AD_STUN, 0, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(50, 30, 0, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
+       SIZ(50, 30, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
        M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_POIS|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, 0, CLR_YELLOW),
     MON("green mold", S_FUNGUS,
        LVL(1, 0, 9, 0, 0), (G_GENO|1),
        A(ATTK(AT_NONE, AD_ACID, 0, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(50, 30, 0, MS_SILENT, MZ_SMALL), MR_ACID|MR_STONE, MR_STONE,
+       SIZ(50, 30, MS_SILENT, MZ_SMALL), MR_ACID|MR_STONE, MR_STONE,
        M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_ACID|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, 0, CLR_GREEN),
     MON("red mold", S_FUNGUS,
        LVL(1, 0, 9, 0, 0), (G_GENO|1),
        A(ATTK(AT_NONE, AD_FIRE, 0, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(50, 30, 0, MS_SILENT, MZ_SMALL),
+       SIZ(50, 30, MS_SILENT, MZ_SMALL),
        MR_FIRE|MR_POISON, MR_FIRE|MR_POISON,
        M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, M3_INFRAVISIBLE, CLR_RED),
     MON("shrieker", S_FUNGUS,
        LVL(3, 1, 7, 0, 0), (G_GENO|1),
        A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(100, 100, 0, MS_SHRIEK, MZ_SMALL), MR_POISON, MR_POISON,
+       SIZ(100, 100, MS_SHRIEK, MZ_SMALL), MR_POISON, MR_POISON,
        M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, 0, CLR_MAGENTA),
     MON("violet fungus", S_FUNGUS,
        LVL(3, 1, 7, 0, 0), (G_GENO|2),
        A(ATTK(AT_TUCH, AD_PHYS, 1, 4), ATTK(AT_TUCH, AD_STCK, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(100, 100, 0, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
+       SIZ(100, 100, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
        M1_BREATHLESS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_NOTAKE,
        M2_HOSTILE|M2_NEUTER, 0, CLR_MAGENTA),
 /*
@@ -1457,28 +1454,28 @@ NEARDATA struct permonst mons[] = {
        LVL(1, 6, 10, 4, 0), (G_GENO|G_SGROUP|1),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(650, 100, 0, MS_ORC, MZ_SMALL), 0, 0,
+       SIZ(650, 100, MS_ORC, MZ_SMALL), 0, 0,
        M1_HUMANOID|M1_OMNIVORE, M2_NOPOLY|M2_GNOME|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BROWN),
     MON("gnome lord", S_GNOME,
        LVL(3, 8, 10, 4, 0), (G_GENO|2),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(700, 120, 0, MS_ORC, MZ_SMALL), 0, 0,
+       SIZ(700, 120, MS_ORC, MZ_SMALL), 0, 0,
        M1_HUMANOID|M1_OMNIVORE, M2_GNOME|M2_LORD|M2_MALE|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BLUE),
     MON("gnomish wizard", S_GNOME,
        LVL(3, 10, 4, 10, 0), (G_GENO|1),
        A(ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(700, 120, 0, MS_ORC, MZ_SMALL), 0, 0,
+       SIZ(700, 120, MS_ORC, MZ_SMALL), 0, 0,
        M1_HUMANOID|M1_OMNIVORE, M2_GNOME|M2_MAGIC,
        M3_INFRAVISIBLE|M3_INFRAVISION, HI_ZAP),
     MON("gnome king", S_GNOME,
        LVL(5, 10, 10, 20, 0), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(750, 150, 0, MS_ORC, MZ_SMALL), 0, 0,
+       SIZ(750, 150, MS_ORC, MZ_SMALL), 0, 0,
        M1_HUMANOID|M1_OMNIVORE, M2_GNOME|M2_PRINCE|M2_MALE|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, HI_LORD),
 #ifdef SPLITMON_1
@@ -1507,7 +1504,7 @@ struct permonst _mons2[] = {
        LVL(6, 6, 0, 0, 2), (G_GENO|G_NOGEN|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2,10),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2250, 750, 0, MS_BOAST, MZ_HUGE), 0, 0,
+       SIZ(2250, 750, MS_BOAST, MZ_HUGE), 0, 0,
        M1_HUMANOID|M1_CARNIVORE,
        M2_GIANT|M2_STRONG|M2_ROCKTHROW|M2_NASTY|M2_COLLECT|M2_JEWELS,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
@@ -1515,7 +1512,7 @@ struct permonst _mons2[] = {
        LVL(6, 6, 0, 0, 2), (G_GENO|G_SGROUP|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2,10),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2250, 750, 0, MS_BOAST, MZ_HUGE), 0, 0,
+       SIZ(2250, 750, MS_BOAST, MZ_HUGE), 0, 0,
        M1_HUMANOID|M1_CARNIVORE,
        M2_GIANT|M2_STRONG|M2_ROCKTHROW|M2_NASTY|M2_COLLECT|M2_JEWELS,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
@@ -1523,7 +1520,7 @@ struct permonst _mons2[] = {
        LVL(8, 10, 6, 0, -2), (G_GENO|G_SGROUP|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2200, 700, 0, MS_BOAST, MZ_HUGE), 0, 0,
+       SIZ(2200, 700, MS_BOAST, MZ_HUGE), 0, 0,
        M1_HUMANOID|M1_CARNIVORE,
        M2_GIANT|M2_STRONG|M2_ROCKTHROW|M2_NASTY|M2_COLLECT|M2_JEWELS,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_CYAN),
@@ -1531,7 +1528,7 @@ struct permonst _mons2[] = {
        LVL(9, 12, 4, 5, 2), (G_GENO|G_SGROUP|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2,10),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2250, 750, 0, MS_BOAST, MZ_HUGE), MR_FIRE, MR_FIRE,
+       SIZ(2250, 750, MS_BOAST, MZ_HUGE), MR_FIRE, MR_FIRE,
        M1_HUMANOID|M1_CARNIVORE,
        M2_GIANT|M2_STRONG|M2_ROCKTHROW|M2_NASTY|M2_COLLECT|M2_JEWELS,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_YELLOW),
@@ -1539,7 +1536,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 3, 10, -3), (G_NOHELL|G_GENO|G_SGROUP|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2,12),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2250, 750, 0, MS_BOAST, MZ_HUGE), MR_COLD, MR_COLD,
+       SIZ(2250, 750, MS_BOAST, MZ_HUGE), MR_COLD, MR_COLD,
        M1_HUMANOID|M1_CARNIVORE,
        M2_GIANT|M2_STRONG|M2_ROCKTHROW|M2_NASTY|M2_COLLECT|M2_JEWELS,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_WHITE),
@@ -1547,7 +1544,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 3, 0, 0), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_WEAP, AD_PHYS, 3, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1700, 500, 0, MS_GRUNT, MZ_HUGE), 0, 0,
+       SIZ(1700, 500, MS_GRUNT, MZ_HUGE), 0, 0,
        M1_ANIMAL|M1_HUMANOID|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BROWN),
@@ -1555,7 +1552,7 @@ struct permonst _mons2[] = {
        LVL(16, 12, 3, 10, -3), (G_GENO|G_SGROUP|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 12),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2250, 750, 0, MS_BOAST, MZ_HUGE), MR_ELEC, MR_ELEC,
+       SIZ(2250, 750, MS_BOAST, MZ_HUGE), MR_ELEC, MR_ELEC,
        M1_HUMANOID|M1_CARNIVORE,
        M2_GIANT|M2_STRONG|M2_ROCKTHROW|M2_NASTY|M2_COLLECT|M2_JEWELS,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BLUE),
@@ -1563,7 +1560,7 @@ struct permonst _mons2[] = {
        LVL(16, 18, -3, 70, 9), (1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2300, 900, 0, MS_SPELL, MZ_HUGE), 0, 0,
+       SIZ(2300, 900, MS_SPELL, MZ_HUGE), 0, 0,
        M1_FLY|M1_HUMANOID|M1_OMNIVORE,
        M2_STRONG|M2_ROCKTHROW|M2_NASTY|M2_COLLECT|M2_MAGIC,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_MAGENTA),
@@ -1571,7 +1568,7 @@ struct permonst _mons2[] = {
        LVL(15, 15, 6, 0, 0), (G_GENO|G_NOGEN),
        A(ATTK(AT_CLAW, AD_PHYS, 3,10), ATTK(AT_CLAW, AD_PHYS, 3,10),
          ATTK(AT_BUTT, AD_PHYS, 2, 8), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 700, 0, MS_SILENT, MZ_LARGE), 0, 0,
+       SIZ(1500, 700, MS_SILENT, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_HUMANOID|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY, M3_INFRAVISIBLE|M3_INFRAVISION,
        CLR_BROWN),
@@ -1584,7 +1581,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_BITE, AD_PHYS, 2,10), ATTK(AT_BITE, AD_PHYS, 2,10),
          ATTK(AT_CLAW, AD_PHYS, 2,10), ATTK(AT_CLAW, AD_PHYS, 2,10),
          NO_ATTK, NO_ATTK),
-       SIZ(1300, 600, 0, MS_BURBLE, MZ_LARGE), 0, 0,
+       SIZ(1300, 600, MS_BURBLE, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_FLY|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY|M2_COLLECT, M3_INFRAVISIBLE, CLR_ORANGE),
 #if 0  /* DEFERRED */
@@ -1593,7 +1590,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_BITE, AD_PHYS, 3, 10), ATTK(AT_BITE, AD_PHYS, 3, 10),
          ATTK(AT_CLAW, AD_PHYS, 3, 10), ATTK(AT_CLAW, AD_PHYS, 3, 10),
          NO_ATTK, NO_ATTK),
-       SIZ(1300, 600, 0, MS_BURBLE, MZ_LARGE), 0, 0,
+       SIZ(1300, 600, MS_BURBLE, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_FLY|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY|M2_COLLECT, M3_INFRAVISIBLE, HI_LORD),
 #endif
@@ -1605,28 +1602,28 @@ struct permonst _mons2[] = {
        LVL(1, 6, 10, 10, 9), (G_GENO|G_LGROUP|G_NOGEN),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 200, 0, MS_ARREST, MZ_HUMAN), 0, 0, M1_HUMANOID,
+       SIZ(WT_HUMAN, 200, MS_ARREST, MZ_HUMAN), 0, 0, M1_HUMANOID,
        M2_HUMAN|M2_WANDER|M2_HOSTILE|M2_MALE|M2_COLLECT, M3_INFRAVISIBLE,
        CLR_BLUE),
     MON("Kop Sergeant", S_KOP,
        LVL(2, 8, 10, 10, 10), (G_GENO|G_SGROUP|G_NOGEN),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 200, 0, MS_ARREST, MZ_HUMAN), 0, 0, M1_HUMANOID,
+       SIZ(WT_HUMAN, 200, MS_ARREST, MZ_HUMAN), 0, 0, M1_HUMANOID,
        M2_HUMAN|M2_WANDER|M2_HOSTILE|M2_STRONG|M2_MALE|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_BLUE),
     MON("Kop Lieutenant", S_KOP,
        LVL(3, 10, 10, 20, 11), (G_GENO|G_NOGEN),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 200, 0, MS_ARREST, MZ_HUMAN), 0, 0, M1_HUMANOID,
+       SIZ(WT_HUMAN, 200, MS_ARREST, MZ_HUMAN), 0, 0, M1_HUMANOID,
        M2_HUMAN|M2_WANDER|M2_HOSTILE|M2_STRONG|M2_MALE|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_CYAN),
     MON("Kop Kaptain", S_KOP,
        LVL(4, 12, 10, 20, 12), (G_GENO|G_NOGEN),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 200, 0, MS_ARREST, MZ_HUMAN), 0, 0, M1_HUMANOID,
+       SIZ(WT_HUMAN, 200, MS_ARREST, MZ_HUMAN), 0, 0, M1_HUMANOID,
        M2_HUMAN|M2_WANDER|M2_HOSTILE|M2_STRONG|M2_MALE|M2_COLLECT,
        M3_INFRAVISIBLE, HI_LORD),
 #endif
@@ -1637,7 +1634,7 @@ struct permonst _mons2[] = {
        LVL(11, 6, 0, 30, -9), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_TUCH, AD_COLD, 1,10), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1200, 100, 0, MS_MUMBLE, MZ_HUMAN),
+       SIZ(1200, 100, MS_MUMBLE, MZ_HUMAN),
        MR_COLD|MR_SLEEP|MR_POISON, MR_COLD,
        M1_BREATHLESS|M1_HUMANOID|M1_POIS|M1_REGEN,
        M2_UNDEAD|M2_HOSTILE|M2_MAGIC, M3_INFRAVISION, CLR_BROWN),
@@ -1645,7 +1642,7 @@ struct permonst _mons2[] = {
        LVL(14, 9, -2, 60, -12), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_TUCH, AD_COLD, 3, 4), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1200, 100, 0, MS_MUMBLE, MZ_HUMAN),
+       SIZ(1200, 100, MS_MUMBLE, MZ_HUMAN),
        MR_COLD|MR_SLEEP|MR_POISON, MR_COLD,
        M1_BREATHLESS|M1_HUMANOID|M1_POIS|M1_REGEN,
        M2_UNDEAD|M2_HOSTILE|M2_MAGIC, M3_INFRAVISION, CLR_RED),
@@ -1653,7 +1650,7 @@ struct permonst _mons2[] = {
        LVL(17, 9, -4, 90, -15), (G_HELL|G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_TUCH, AD_COLD, 3, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1200, 100, 0, MS_MUMBLE, MZ_HUMAN),
+       SIZ(1200, 100, MS_MUMBLE, MZ_HUMAN),
        MR_FIRE|MR_COLD|MR_SLEEP|MR_POISON, MR_FIRE|MR_COLD,
        M1_BREATHLESS|M1_HUMANOID|M1_POIS|M1_REGEN,
        M2_UNDEAD|M2_HOSTILE|M2_MAGIC, M3_WANTSBOOK|M3_INFRAVISION, HI_LORD),
@@ -1661,7 +1658,7 @@ struct permonst _mons2[] = {
        LVL(25, 9, -6, 90, -15), (G_HELL|G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_TUCH, AD_COLD, 5, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1200, 100, 0, MS_MUMBLE, MZ_HUMAN),
+       SIZ(1200, 100, MS_MUMBLE, MZ_HUMAN),
        MR_FIRE|MR_COLD|MR_SLEEP|MR_ELEC|MR_POISON, MR_FIRE|MR_COLD,
        M1_BREATHLESS|M1_HUMANOID|M1_POIS|M1_REGEN,
        M2_UNDEAD|M2_HOSTILE|M2_MAGIC, M3_WANTSBOOK|M3_INFRAVISION, HI_LORD),
@@ -1672,21 +1669,21 @@ struct permonst _mons2[] = {
        LVL(3, 8, 6, 20, -2), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 50, 0, MS_SILENT, MZ_SMALL), MR_COLD|MR_SLEEP|MR_POISON, 0,
+       SIZ(400, 50, MS_SILENT, MZ_SMALL), MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_HOSTILE, M3_INFRAVISION, CLR_BROWN),
     MON("gnome mummy", S_MUMMY,
        LVL(4, 10, 6, 20, -3), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(650, 50, 0, MS_SILENT, MZ_SMALL), MR_COLD|MR_SLEEP|MR_POISON, 0,
+       SIZ(650, 50, MS_SILENT, MZ_SMALL), MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_HOSTILE|M2_GNOME, M3_INFRAVISION, CLR_RED),
     MON("orc mummy", S_MUMMY,
        LVL(5, 10, 5, 20, -4), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(850, 75, 0, MS_SILENT, MZ_HUMAN), MR_COLD|MR_SLEEP|MR_POISON, 0,
+       SIZ(850, 75, MS_SILENT, MZ_HUMAN), MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_HOSTILE|M2_ORC|M2_GREEDY|M2_JEWELS, M3_INFRAVISION,
        CLR_GRAY),
@@ -1694,7 +1691,7 @@ struct permonst _mons2[] = {
        LVL(5, 10, 5, 20, -4), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(900, 150, 0, MS_SILENT, MZ_HUMAN), MR_COLD|MR_SLEEP|MR_POISON, 0,
+       SIZ(900, 150, MS_SILENT, MZ_HUMAN), MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_HOSTILE|M2_DWARF|M2_GREEDY|M2_JEWELS, M3_INFRAVISION,
        CLR_RED),
@@ -1702,7 +1699,7 @@ struct permonst _mons2[] = {
        LVL(6, 12, 4, 30, -5), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 175, 0, MS_SILENT, MZ_HUMAN),
+       SIZ(WT_ELF, 175, MS_SILENT, MZ_HUMAN),
        MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_HOSTILE|M2_ELF, M3_INFRAVISION, CLR_GREEN),
@@ -1710,7 +1707,7 @@ struct permonst _mons2[] = {
        LVL(6, 12, 4, 30, -5), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 200, 0, MS_SILENT, MZ_HUMAN),
+       SIZ(WT_HUMAN, 200, MS_SILENT, MZ_HUMAN),
        MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_HOSTILE, M3_INFRAVISION, CLR_GRAY),
@@ -1718,7 +1715,7 @@ struct permonst _mons2[] = {
        LVL(7, 12, 4, 30, -6), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1700, 250, 0, MS_SILENT, MZ_HUGE),
+       SIZ(1700, 250, MS_SILENT, MZ_HUGE),
        MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_HOSTILE|M2_STRONG, M3_INFRAVISION, CLR_BLUE),
@@ -1726,7 +1723,7 @@ struct permonst _mons2[] = {
        LVL(8, 14, 3, 30, -7), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 3, 4), ATTK(AT_CLAW, AD_PHYS, 3, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2050, 375, 0, MS_SILENT, MZ_HUGE),
+       SIZ(2050, 375, MS_SILENT, MZ_HUGE),
        MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_HOSTILE|M2_GIANT|M2_STRONG|M2_JEWELS, M3_INFRAVISION,
@@ -1738,7 +1735,7 @@ struct permonst _mons2[] = {
        LVL(3, 10, 6, 0, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(500, 100, 0, MS_MUMBLE, MZ_LARGE),
+       SIZ(500, 100, MS_MUMBLE, MZ_LARGE),
        MR_FIRE|MR_POISON, MR_FIRE|MR_POISON,
        M1_NOLIMBS|M1_SLITHY|M1_THICK_HIDE|M1_NOTAKE|M1_OMNIVORE, M2_STRONG,
        M3_INFRAVISIBLE, CLR_RED),
@@ -1746,7 +1743,7 @@ struct permonst _mons2[] = {
        LVL(3, 10, 6, 0, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(500, 100, 0, MS_MUMBLE, MZ_LARGE),
+       SIZ(500, 100, MS_MUMBLE, MZ_LARGE),
        MR_POISON|MR_ACID|MR_STONE, MR_POISON|MR_STONE,
        M1_NOLIMBS|M1_SLITHY|M1_THICK_HIDE|M1_ACID|M1_NOTAKE|M1_CARNIVORE,
        M2_STRONG, 0, CLR_BLACK),
@@ -1754,21 +1751,21 @@ struct permonst _mons2[] = {
        LVL(3, 10, 6, 0, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(500, 100, 0, MS_MUMBLE, MZ_LARGE), MR_POISON, MR_POISON,
+       SIZ(500, 100, MS_MUMBLE, MZ_LARGE), MR_POISON, MR_POISON,
        M1_NOLIMBS|M1_SLITHY|M1_THICK_HIDE|M1_NOTAKE|M1_OMNIVORE,
        M2_STRONG, 0, HI_GOLD),
     MON("guardian naga hatchling", S_NAGA,
        LVL(3, 10, 6, 0, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(500, 100, 0, MS_MUMBLE, MZ_LARGE), MR_POISON, MR_POISON,
+       SIZ(500, 100, MS_MUMBLE, MZ_LARGE), MR_POISON, MR_POISON,
        M1_NOLIMBS|M1_SLITHY|M1_THICK_HIDE|M1_NOTAKE|M1_OMNIVORE,
        M2_STRONG, 0, CLR_GREEN),
     MON("red naga", S_NAGA,
        LVL(6, 12, 4, 0, -4), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_BREA, AD_FIRE, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2600, 400, 0, MS_MUMBLE, MZ_HUGE),
+       SIZ(2600, 400, MS_MUMBLE, MZ_HUGE),
        MR_FIRE|MR_POISON, MR_FIRE|MR_POISON,
        M1_NOLIMBS|M1_SLITHY|M1_THICK_HIDE|M1_OVIPAROUS|M1_NOTAKE|M1_OMNIVORE,
        M2_STRONG, M3_INFRAVISIBLE, CLR_RED),
@@ -1776,7 +1773,7 @@ struct permonst _mons2[] = {
        LVL(8, 14, 2, 10, 4), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_SPIT, AD_ACID, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2600, 400, 0, MS_MUMBLE, MZ_HUGE),
+       SIZ(2600, 400, MS_MUMBLE, MZ_HUGE),
        MR_POISON|MR_ACID|MR_STONE, MR_POISON|MR_STONE,
        M1_NOLIMBS|M1_SLITHY|M1_THICK_HIDE|M1_OVIPAROUS|M1_ACID|M1_NOTAKE|
          M1_CARNIVORE,
@@ -1785,14 +1782,14 @@ struct permonst _mons2[] = {
        LVL(10, 14, 2, 70, 5), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_MAGC, AD_SPEL, 4, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2600, 400, 0, MS_MUMBLE, MZ_HUGE), MR_POISON, MR_POISON,
+       SIZ(2600, 400, MS_MUMBLE, MZ_HUGE), MR_POISON, MR_POISON,
        M1_NOLIMBS|M1_SLITHY|M1_THICK_HIDE|M1_OVIPAROUS|M1_NOTAKE|M1_OMNIVORE,
        M2_STRONG, 0, HI_GOLD),
     MON("guardian naga", S_NAGA,
        LVL(12, 16, 0, 50, 7), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PLYS, 1, 6), ATTK(AT_SPIT, AD_DRST, 1, 6),
          ATTK(AT_HUGS, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2600, 400, 0, MS_MUMBLE, MZ_HUGE), MR_POISON, MR_POISON,
+       SIZ(2600, 400, MS_MUMBLE, MZ_HUGE), MR_POISON, MR_POISON,
        M1_NOLIMBS|M1_SLITHY|M1_THICK_HIDE|M1_OVIPAROUS|M1_POIS|M1_NOTAKE|
          M1_OMNIVORE,
        M2_STRONG, 0, CLR_GREEN),
@@ -1803,21 +1800,21 @@ struct permonst _mons2[] = {
        LVL(5, 10, 5, 0, -3), (G_SGROUP|G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 5),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1600, 500, 0, MS_GRUNT, MZ_LARGE), 0, 0, M1_HUMANOID|M1_CARNIVORE,
+       SIZ(1600, 500, MS_GRUNT, MZ_LARGE), 0, 0, M1_HUMANOID|M1_CARNIVORE,
        M2_STRONG|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BROWN),
     MON("ogre lord", S_OGRE,
        LVL(7, 12, 3, 30, -5), (G_GENO|2),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1700, 700, 0, MS_GRUNT, MZ_LARGE), 0, 0, M1_HUMANOID|M1_CARNIVORE,
+       SIZ(1700, 700, MS_GRUNT, MZ_LARGE), 0, 0, M1_HUMANOID|M1_CARNIVORE,
        M2_STRONG|M2_LORD|M2_MALE|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
     MON("ogre king", S_OGRE,
        LVL(9, 14, 4, 60, -7), (G_GENO|2),
        A(ATTK(AT_WEAP, AD_PHYS, 3, 5),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1700, 750, 0, MS_GRUNT, MZ_LARGE), 0, 0, M1_HUMANOID|M1_CARNIVORE,
+       SIZ(1700, 750, MS_GRUNT, MZ_LARGE), 0, 0, M1_HUMANOID|M1_CARNIVORE,
        M2_STRONG|M2_PRINCE|M2_MALE|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, HI_LORD),
 /*
@@ -1827,7 +1824,7 @@ struct permonst _mons2[] = {
        LVL(3, 1, 8, 0, 0), (G_GENO|2),
        A(ATTK(AT_BITE, AD_RUST, 2, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(500, 250, 0, MS_SILENT, MZ_MEDIUM),
+       SIZ(500, 250, MS_SILENT, MZ_MEDIUM),
        MR_FIRE|MR_COLD|MR_POISON|MR_ACID|MR_STONE, MR_FIRE|MR_COLD|MR_POISON,
        M1_BREATHLESS|M1_AMORPHOUS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|
          M1_MINDLESS|M1_OMNIVORE|M1_ACID,
@@ -1836,7 +1833,7 @@ struct permonst _mons2[] = {
        LVL(5, 3, 8, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_DCAY, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(500, 250, 0, MS_SILENT, MZ_MEDIUM),
+       SIZ(500, 250, MS_SILENT, MZ_MEDIUM),
        MR_COLD|MR_ELEC|MR_POISON|MR_ACID|MR_STONE, MR_COLD|MR_ELEC|MR_POISON,
        M1_BREATHLESS|M1_AMORPHOUS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|
          M1_MINDLESS|M1_OMNIVORE|M1_ACID,
@@ -1845,7 +1842,7 @@ struct permonst _mons2[] = {
        LVL(6, 6, 6, 0, 0), (G_HELL|G_GENO|1),
        A(ATTK(AT_TUCH, AD_SLIM, 1, 4), ATTK(AT_NONE, AD_SLIM, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 150, 0, MS_SILENT, MZ_LARGE),
+       SIZ(400, 150, MS_SILENT, MZ_LARGE),
        MR_COLD|MR_ELEC|MR_POISON|MR_ACID|MR_STONE, 0,
        M1_BREATHLESS|M1_AMORPHOUS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|
          M1_MINDLESS|M1_OMNIVORE|M1_ACID|M1_POIS,
@@ -1854,7 +1851,7 @@ struct permonst _mons2[] = {
        LVL(10, 6, 6, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_CORR, 3, 8), ATTK(AT_NONE, AD_CORR, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(900, 250, 0, MS_SILENT, MZ_LARGE),
+       SIZ(900, 250, MS_SILENT, MZ_LARGE),
        MR_COLD|MR_ELEC|MR_POISON|MR_ACID|MR_STONE, MR_COLD|MR_ELEC|MR_POISON,
        M1_BREATHLESS|M1_AMORPHOUS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|
          M1_MINDLESS|M1_OMNIVORE|M1_ACID,
@@ -1866,7 +1863,7 @@ struct permonst _mons2[] = {
        LVL(7, 12, 3, 10, 0), (G_GENO|3),
        A(ATTK(AT_CLAW, AD_TLPT, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 20, 0, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
+       SIZ(WT_HUMAN, 20, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
        M1_HUMANOID|M1_OMNIVORE|M1_POIS|M1_TPORT, M2_HOSTILE, M3_INFRAVISIBLE,
        CLR_CYAN),
 /*
@@ -1876,14 +1873,14 @@ struct permonst _mons2[] = {
        LVL(5, 18, 2, 0, 0), (G_GENO|2),
        A(ATTK(AT_TUCH, AD_RUST, 0, 0), ATTK(AT_TUCH, AD_RUST, 0, 0),
          ATTK(AT_NONE, AD_RUST, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1000, 250, 0, MS_SILENT, MZ_MEDIUM), 0, 0,
+       SIZ(1000, 250, MS_SILENT, MZ_MEDIUM), 0, 0,
        M1_SWIM|M1_ANIMAL|M1_NOHANDS|M1_METALLIVORE, M2_HOSTILE,
        M3_INFRAVISIBLE, CLR_BROWN),
     MON("disenchanter", S_RUSTMONST,
        LVL(12, 12, -10, 0, -3), (G_HELL|G_GENO|2),
        A(ATTK(AT_CLAW, AD_ENCH, 4, 4), ATTK(AT_NONE, AD_ENCH, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(750, 200, 0, MS_GROWL, MZ_LARGE), 0, 0,
+       SIZ(750, 200, MS_GROWL, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_CARNIVORE, M2_HOSTILE,
        M3_INFRAVISIBLE, CLR_BLUE),
 /*
@@ -1893,7 +1890,7 @@ struct permonst _mons2[] = {
        LVL(1, 8, 8, 0, 0), (G_LGROUP|G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 1, 2),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(50, 60, 0, MS_HISS, MZ_TINY), 0, 0,
+       SIZ(50, 60, MS_HISS, MZ_TINY), 0, 0,
        M1_SWIM|M1_CONCEAL|M1_NOLIMBS|M1_ANIMAL|M1_SLITHY|M1_OVIPAROUS|
          M1_CARNIVORE|M1_NOTAKE,
        0, 0, CLR_GREEN),
@@ -1901,7 +1898,7 @@ struct permonst _mons2[] = {
        LVL(4, 15, 3, 0, 0), (G_GENO|2),
        A(ATTK(AT_BITE, AD_DRST, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(100, 80, 0, MS_HISS, MZ_SMALL), MR_POISON, MR_POISON,
+       SIZ(100, 80, MS_HISS, MZ_SMALL), MR_POISON, MR_POISON,
        M1_SWIM|M1_CONCEAL|M1_NOLIMBS|M1_ANIMAL|M1_SLITHY|M1_POIS|
          M1_OVIPAROUS|M1_CARNIVORE|M1_NOTAKE,
        M2_HOSTILE, 0, CLR_BROWN),
@@ -1909,7 +1906,7 @@ struct permonst _mons2[] = {
        LVL(4, 15, 3, 0, 0), (G_GENO|G_NOGEN|G_LGROUP),
        A(ATTK(AT_BITE, AD_DRST, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(150, 80, 0, MS_HISS, MZ_SMALL), MR_POISON, MR_POISON,
+       SIZ(150, 80, MS_HISS, MZ_SMALL), MR_POISON, MR_POISON,
        M1_SWIM|M1_CONCEAL|M1_NOLIMBS|M1_ANIMAL|M1_SLITHY|M1_POIS|
          M1_CARNIVORE|M1_OVIPAROUS|M1_NOTAKE,
        M2_HOSTILE, 0, CLR_RED),
@@ -1918,7 +1915,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_BITE, AD_PHYS, 1, 4), ATTK(AT_TUCH, AD_PHYS, 0, 0),
          ATTK(AT_HUGS, AD_WRAP, 1, 4), ATTK(AT_HUGS, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(250, 100, 0, MS_HISS, MZ_LARGE), 0, 0,
+       SIZ(250, 100, MS_HISS, MZ_LARGE), 0, 0,
        M1_SWIM|M1_NOLIMBS|M1_ANIMAL|M1_SLITHY|
          M1_CARNIVORE|M1_OVIPAROUS|M1_NOTAKE,
        M2_HOSTILE|M2_STRONG, M3_INFRAVISION, CLR_MAGENTA),
@@ -1926,7 +1923,7 @@ struct permonst _mons2[] = {
        LVL(6, 15, 2, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_DRST, 1, 4), ATTK(AT_BITE, AD_DRST, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(100, 60, 0, MS_HISS, MZ_MEDIUM),
+       SIZ(100, 60, MS_HISS, MZ_MEDIUM),
        MR_POISON, MR_POISON,
        M1_SWIM|M1_CONCEAL|M1_NOLIMBS|M1_ANIMAL|M1_SLITHY|M1_POIS|
          M1_CARNIVORE|M1_OVIPAROUS|M1_NOTAKE,
@@ -1935,7 +1932,7 @@ struct permonst _mons2[] = {
        LVL(6, 18, 2, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_DRST, 2, 4), ATTK(AT_SPIT, AD_BLND, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(250, 100, 0, MS_HISS, MZ_MEDIUM),
+       SIZ(250, 100, MS_HISS, MZ_MEDIUM),
        MR_POISON, MR_POISON,
        M1_SWIM|M1_CONCEAL|M1_NOLIMBS|M1_ANIMAL|M1_SLITHY|M1_POIS|
          M1_CARNIVORE|M1_OVIPAROUS|M1_NOTAKE,
@@ -1947,7 +1944,7 @@ struct permonst _mons2[] = {
        LVL(7, 12, 4, 0, -3), (G_GENO|2),
        A(ATTK(AT_WEAP, AD_PHYS, 4, 2), ATTK(AT_CLAW, AD_PHYS, 4, 2),
          ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(800, 350, 0, MS_GRUNT, MZ_LARGE), 0, 0,
+       SIZ(800, 350, MS_GRUNT, MZ_LARGE), 0, 0,
        M1_HUMANOID|M1_REGEN|M1_CARNIVORE,
        M2_STRONG|M2_STALK|M2_HOSTILE, M3_INFRAVISIBLE|M3_INFRAVISION,
        CLR_BROWN),
@@ -1955,7 +1952,7 @@ struct permonst _mons2[] = {
        LVL(9, 10, 2, 20, -3), (G_NOHELL|G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_COLD, 2, 6),
          ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1000, 300, 0, MS_GRUNT, MZ_LARGE), MR_COLD, MR_COLD,
+       SIZ(1000, 300, MS_GRUNT, MZ_LARGE), MR_COLD, MR_COLD,
        M1_HUMANOID|M1_REGEN|M1_CARNIVORE,
        M2_STRONG|M2_STALK|M2_HOSTILE, M3_INFRAVISIBLE|M3_INFRAVISION,
        CLR_WHITE),
@@ -1963,7 +1960,7 @@ struct permonst _mons2[] = {
        LVL(9, 12, 0, 0, -3), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 2, 8),
          ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1200, 300, 0, MS_GRUNT, MZ_LARGE), 0, 0,
+       SIZ(1200, 300, MS_GRUNT, MZ_LARGE), 0, 0,
        M1_HUMANOID|M1_REGEN|M1_CARNIVORE,
        M2_STRONG|M2_STALK|M2_HOSTILE|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_CYAN),
@@ -1971,7 +1968,7 @@ struct permonst _mons2[] = {
        LVL(11, 14, 4, 40, -3), (G_NOGEN|G_GENO),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_CLAW, AD_PHYS, 2, 8),
          ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1200, 350, 0, MS_GRUNT, MZ_LARGE), 0, 0,
+       SIZ(1200, 350, MS_GRUNT, MZ_LARGE), 0, 0,
        M1_HUMANOID|M1_REGEN|M1_CARNIVORE|M1_SWIM,
        M2_STRONG|M2_STALK|M2_HOSTILE, M3_INFRAVISIBLE|M3_INFRAVISION,
        CLR_BLUE),
@@ -1979,7 +1976,7 @@ struct permonst _mons2[] = {
        LVL(13, 12, -4, 0, -7), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 2, 8),
          ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 400, 0, MS_GRUNT, MZ_LARGE), 0, 0,
+       SIZ(1500, 400, MS_GRUNT, MZ_LARGE), 0, 0,
        M1_HUMANOID|M1_REGEN|M1_CARNIVORE,
        M2_STRONG|M2_STALK|M2_HOSTILE|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, HI_LORD),
@@ -1991,7 +1988,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_CLAW, AD_PHYS, 3, 4), ATTK(AT_CLAW, AD_PHYS, 3, 4),
          ATTK(AT_BITE, AD_PHYS, 2, 5), ATTK(AT_GAZE, AD_CONF, 0, 0),
          NO_ATTK, NO_ATTK),
-       SIZ(1200, 500, 0, MS_SILENT, MZ_LARGE), 0, 0,
+       SIZ(1200, 500, MS_SILENT, MZ_LARGE), 0, 0,
        M1_TUNNEL|M1_CARNIVORE, M2_STRONG, M3_INFRAVISIBLE, CLR_BROWN),
 /*
  * Vampires
@@ -2000,7 +1997,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 1, 25, -8), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_BITE, AD_DRLI, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP|MR_POISON, 0,
        M1_FLY|M1_BREATHLESS|M1_HUMANOID|M1_POIS|M1_REGEN,
        M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_STRONG|M2_NASTY|M2_SHAPESHIFTER,
        M3_INFRAVISIBLE, CLR_RED),
@@ -2008,7 +2005,7 @@ struct permonst _mons2[] = {
        LVL(12, 14, 0, 50, -9), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 8), ATTK(AT_BITE, AD_DRLI, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP|MR_POISON, 0,
        M1_FLY|M1_BREATHLESS|M1_HUMANOID|M1_POIS|M1_REGEN,
        M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_STRONG|M2_NASTY|M2_LORD|M2_MALE|
          M2_SHAPESHIFTER, M3_INFRAVISIBLE, CLR_BLUE),
@@ -2017,7 +2014,7 @@ struct permonst _mons2[] = {
        LVL(20, 14, -4, 50, -9), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_DRLI, 2, 8), ATTK(AT_BITE, AD_DRLI, 1, 8),
          ATTK(AT_MAGC, AD_SPEL, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP|MR_POISON, 0,
        M1_FLY|M1_BREATHLESS|M1_HUMANOID|M1_POIS|M1_REGEN,
        M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_STRONG|M2_NASTY|M2_LORD|M2_MALE|
          M2_MAGIC|M2_SHAPESHIFTER, M3_INFRAVISIBLE, HI_ZAP),
@@ -2026,7 +2023,7 @@ struct permonst _mons2[] = {
        LVL(14, 18, -3, 80, -10), (G_NOGEN|G_NOCORPSE|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 10), ATTK(AT_BITE, AD_DRLI, 1, 10),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP|MR_POISON, 0,
        M1_FLY|M1_BREATHLESS|M1_HUMANOID|M1_POIS|M1_REGEN,
        M2_NOPOLY|M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_PNAME|M2_STRONG|
          M2_NASTY|M2_PRINCE|M2_MALE|M2_SHAPESHIFTER,
@@ -2038,14 +2035,14 @@ struct permonst _mons2[] = {
        LVL(3, 12, 5, 5, -3), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_WEAP, AD_DRLI, 0, 0), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1200, 0, 0, MS_SPELL, MZ_HUMAN), MR_COLD|MR_SLEEP|MR_POISON, 0,
+       SIZ(1200, 0, MS_SPELL, MZ_HUMAN), MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_HUMANOID,
        M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_COLLECT, 0, CLR_GRAY),
     MON("wraith", S_WRAITH,
        LVL(6, 12, 4, 15, -6), (G_GENO|2),
        A(ATTK(AT_TUCH, AD_DRLI, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, MS_SILENT, MZ_HUMAN),
+       SIZ(0, 0, MS_SILENT, MZ_HUMAN),
        MR_COLD|MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_BREATHLESS|M1_FLY|M1_HUMANOID|M1_UNSOLID,
        M2_UNDEAD|M2_STALK|M2_HOSTILE, 0, CLR_BLACK),
@@ -2053,7 +2050,7 @@ struct permonst _mons2[] = {
        LVL(13, 12, 0, 25, -17), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_WEAP, AD_DRLI, 1, 4), ATTK(AT_BREA, AD_SLEE, 2,25),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 0, 0, MS_SPELL, MZ_HUMAN),
+       SIZ(WT_HUMAN, 0, MS_SPELL, MZ_HUMAN),
        MR_COLD|MR_SLEEP|MR_POISON, 0, M1_BREATHLESS|M1_HUMANOID,
        M2_NOPOLY|M2_UNDEAD|M2_STALK|M2_STRONG|M2_HOSTILE|M2_MALE|M2_COLLECT,
        0, HI_LORD),
@@ -2065,7 +2062,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
          ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_BITE, AD_PHYS, 4, 6),
          NO_ATTK, NO_ATTK),
-       SIZ(1200, 700, 0, MS_ROAR, MZ_MEDIUM),
+       SIZ(1200, 700, MS_ROAR, MZ_MEDIUM),
        MR_FIRE|MR_COLD|MR_STONE, MR_STONE,
        M1_BREATHLESS|M1_WALLWALK|M1_THICK_HIDE|M1_METALLIVORE,
        M2_HOSTILE|M2_STRONG, 0, CLR_BROWN),
@@ -2076,41 +2073,41 @@ struct permonst _mons2[] = {
        LVL(2, 12, 6, 0, 0), (G_GENO|1),
        A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_BITE, AD_PHYS, 1, 3),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(100, 50, 0, MS_GROWL, MZ_SMALL), 0, 0,
+       SIZ(100, 50, MS_GROWL, MZ_SMALL), 0, 0,
        M1_ANIMAL|M1_HUMANOID|M1_CARNIVORE, 0, M3_INFRAVISIBLE, CLR_GRAY),
     MON("ape", S_YETI,
        LVL(4, 12, 6, 0, 0), (G_GENO|G_SGROUP|2),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
          ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1100, 500, 0, MS_GROWL, MZ_LARGE), 0, 0,
+       SIZ(1100, 500, MS_GROWL, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_HUMANOID|M1_CARNIVORE, M2_STRONG, M3_INFRAVISIBLE,
        CLR_BROWN),
     MON("owlbear", S_YETI,
        LVL(5, 12, 5, 0, 0), (G_GENO|3),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
          ATTK(AT_HUGS, AD_PHYS, 2, 8), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1700, 700, 0, MS_ROAR, MZ_LARGE), 0, 0,
+       SIZ(1700, 700, MS_ROAR, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_HUMANOID|M1_CARNIVORE,
        M2_HOSTILE|M2_STRONG|M2_NASTY, M3_INFRAVISIBLE, CLR_BROWN),
     MON("yeti", S_YETI,
        LVL(5, 15, 6, 0, 0), (G_GENO|2),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
          ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1600, 700, 0, MS_GROWL, MZ_LARGE), MR_COLD, MR_COLD,
+       SIZ(1600, 700, MS_GROWL, MZ_LARGE), MR_COLD, MR_COLD,
        M1_ANIMAL|M1_HUMANOID|M1_CARNIVORE, M2_HOSTILE|M2_STRONG,
        M3_INFRAVISIBLE, CLR_WHITE),
     MON("carnivorous ape", S_YETI,
        LVL(6, 12, 6, 0, 0), (G_GENO|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          ATTK(AT_HUGS, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1250, 550, 0, MS_GROWL, MZ_LARGE), 0, 0,
+       SIZ(1250, 550, MS_GROWL, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_HUMANOID|M1_CARNIVORE, M2_HOSTILE|M2_STRONG,
        M3_INFRAVISIBLE, CLR_BLACK),
     MON("sasquatch", S_YETI,
        LVL(7, 15, 6, 0, 2), (G_GENO|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
          ATTK(AT_KICK, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1550, 750, 0, MS_GROWL, MZ_LARGE), 0, 0,
+       SIZ(1550, 750, MS_GROWL, MZ_LARGE), 0, 0,
        M1_ANIMAL|M1_HUMANOID|M1_SEE_INVIS|M1_OMNIVORE, M2_STRONG,
        M3_INFRAVISIBLE, CLR_GRAY),
 /*
@@ -2120,35 +2117,35 @@ struct permonst _mons2[] = {
        LVL(0, 6, 10, 0, -2), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 50, 0, MS_SILENT, MZ_SMALL), MR_COLD|MR_SLEEP|MR_POISON, 0,
+       SIZ(400, 50, MS_SILENT, MZ_SMALL), MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_STALK|M2_HOSTILE, M3_INFRAVISION, CLR_BROWN),
     MON("gnome zombie", S_ZOMBIE,
        LVL(1, 6, 10, 0, -2), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 5),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(650, 50, 0, MS_SILENT, MZ_SMALL), MR_COLD|MR_SLEEP|MR_POISON, 0,
+       SIZ(650, 50, MS_SILENT, MZ_SMALL), MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_GNOME, M3_INFRAVISION, CLR_BROWN),
     MON("orc zombie", S_ZOMBIE,
        LVL(2, 6, 9, 0, -3), (G_GENO|G_SGROUP|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(850, 75, 0, MS_SILENT, MZ_HUMAN), MR_COLD|MR_SLEEP|MR_POISON, 0,
+       SIZ(850, 75, MS_SILENT, MZ_HUMAN), MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_ORC, M3_INFRAVISION, CLR_GRAY),
     MON("dwarf zombie", S_ZOMBIE,
        LVL(2, 6, 9, 0, -3), (G_GENO|G_SGROUP|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(900, 150, 0, MS_SILENT, MZ_HUMAN), MR_COLD|MR_SLEEP|MR_POISON, 0,
+       SIZ(900, 150, MS_SILENT, MZ_HUMAN), MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_DWARF, M3_INFRAVISION, CLR_RED),
     MON("elf zombie", S_ZOMBIE,
        LVL(3, 6, 9, 0, -3), (G_GENO|G_SGROUP|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 7),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 175, 0, MS_SILENT, MZ_HUMAN),
+       SIZ(WT_ELF, 175, MS_SILENT, MZ_HUMAN),
        MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID,
        M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_ELF, M3_INFRAVISION, CLR_GREEN),
@@ -2156,7 +2153,7 @@ struct permonst _mons2[] = {
        LVL(4, 6, 8, 0, -3), (G_GENO|G_SGROUP|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 200, 0, MS_SILENT, MZ_HUMAN),
+       SIZ(WT_HUMAN, 200, MS_SILENT, MZ_HUMAN),
        MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID,
        M2_UNDEAD|M2_STALK|M2_HOSTILE, M3_INFRAVISION, HI_DOMESTIC),
@@ -2164,7 +2161,7 @@ struct permonst _mons2[] = {
        LVL(6, 8, 6, 0, -4), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1,10), ATTK(AT_CLAW, AD_PHYS, 1,10),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1700, 250, 0, MS_SILENT, MZ_HUGE),
+       SIZ(1700, 250, MS_SILENT, MZ_HUGE),
        MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID,
        M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_STRONG, M3_INFRAVISION, CLR_BLUE),
@@ -2172,7 +2169,7 @@ struct permonst _mons2[] = {
        LVL(3, 6, 10, 0, -2), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PLYS, 1, 2), ATTK(AT_CLAW, AD_PHYS, 1, 3),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 50, 0, MS_SILENT, MZ_SMALL),
+       SIZ(400, 50, MS_SILENT, MZ_SMALL),
        MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
        M2_UNDEAD|M2_WANDER|M2_HOSTILE, M3_INFRAVISION, CLR_BLACK),
@@ -2180,7 +2177,7 @@ struct permonst _mons2[] = {
        LVL(8, 8, 6, 0, -4), (G_GENO|G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 8), ATTK(AT_CLAW, AD_PHYS, 2, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2050, 375, 0, MS_SILENT, MZ_HUGE),
+       SIZ(2050, 375, MS_SILENT, MZ_HUGE),
        MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID,
        M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_GIANT|M2_STRONG, M3_INFRAVISION,
@@ -2189,7 +2186,7 @@ struct permonst _mons2[] = {
        LVL(12, 8, 4, 0, 0), (G_NOCORPSE|G_NOGEN),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_TUCH, AD_SLOW, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(300, 5, 0, MS_BONES, MZ_HUMAN),
+       SIZ(300, 5, MS_BONES, MZ_HUMAN),
        MR_COLD|MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_THICK_HIDE,
        M2_UNDEAD|M2_WANDER|M2_HOSTILE|M2_STRONG|M2_COLLECT|M2_NASTY,
@@ -2201,49 +2198,49 @@ struct permonst _mons2[] = {
        LVL(3, 12, 10, 0, 0), (G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 2), ATTK(AT_CLAW, AD_PHYS, 1, 2),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 0, 0, MS_SILENT, MZ_LARGE), MR_COLD|MR_SLEEP|MR_POISON, 0,
+       SIZ(400, 0, MS_SILENT, MZ_LARGE), MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID,
        M2_HOSTILE|M2_NEUTER, 0, CLR_YELLOW),
     MON("paper golem", S_GOLEM,
        LVL(3, 12, 10, 0, 0), (G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 3),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(400, 0, 0, MS_SILENT, MZ_LARGE), MR_COLD|MR_SLEEP|MR_POISON, 0,
+       SIZ(400, 0, MS_SILENT, MZ_LARGE), MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID,
        M2_HOSTILE|M2_NEUTER, 0, HI_PAPER),
     MON("rope golem", S_GOLEM,
        LVL(4, 9, 8, 0, 0), (G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          ATTK(AT_HUGS, AD_PHYS, 6, 1), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(450, 0, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON, 0,
+       SIZ(450, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID,
        M2_HOSTILE|M2_NEUTER, 0, CLR_BROWN),
     MON("gold golem", S_GOLEM,
        LVL(5, 9, 6, 0, 0), (G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 3), ATTK(AT_CLAW, AD_PHYS, 2, 3),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(450, 0, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON|MR_ACID, 0,
+       SIZ(450, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON|MR_ACID, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_THICK_HIDE,
        M2_HOSTILE|M2_NEUTER, 0, HI_GOLD),
     MON("leather golem", S_GOLEM,
        LVL(6, 6, 6, 0, 0), (G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(800, 0, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON, 0,
+       SIZ(800, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID,
        M2_HOSTILE|M2_NEUTER, 0, HI_LEATHER),
     MON("wood golem", S_GOLEM,
        LVL(7, 3, 4, 0, 0), (G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 3, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(900, 0, 0, MS_SILENT, MZ_LARGE), MR_COLD|MR_SLEEP|MR_POISON, 0,
+       SIZ(900, 0, MS_SILENT, MZ_LARGE), MR_COLD|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_THICK_HIDE,
        M2_HOSTILE|M2_NEUTER, 0, HI_WOOD),
     MON("flesh golem", S_GOLEM,
        LVL(9, 8, 9, 30, 0), (1),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 8), ATTK(AT_CLAW, AD_PHYS, 2, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1400, 600, 0, MS_SILENT, MZ_LARGE),
+       SIZ(1400, 600, MS_SILENT, MZ_LARGE),
        MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON,
        MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID,
@@ -2252,28 +2249,28 @@ struct permonst _mons2[] = {
        LVL(11, 7, 7, 40, 0), (G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 3,10),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1550, 0, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON, 0,
+       SIZ(1550, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_THICK_HIDE,
        M2_HOSTILE|M2_STRONG, 0, CLR_BROWN),
     MON("stone golem", S_GOLEM,
        LVL(14, 6, 5, 50, 0), (G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 3, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1900, 0, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON|MR_STONE, 0,
+       SIZ(1900, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_THICK_HIDE,
        M2_HOSTILE|M2_STRONG, 0, CLR_GRAY),
     MON("glass golem", S_GOLEM,
        LVL(16, 6, 1, 50, 0), (G_NOCORPSE|1),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 8), ATTK(AT_CLAW, AD_PHYS, 2, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1800, 0, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON|MR_ACID, 0,
+       SIZ(1800, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON|MR_ACID, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_THICK_HIDE,
        M2_HOSTILE|M2_STRONG, 0, CLR_CYAN),
     MON("iron golem", S_GOLEM,
        LVL(18, 6, 3, 60, 0), (G_NOCORPSE|1),
        A(ATTK(AT_WEAP, AD_PHYS, 4,10), ATTK(AT_BREA, AD_DRST, 4, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2000, 0, 0, MS_SILENT, MZ_LARGE),
+       SIZ(2000, 0, MS_SILENT, MZ_LARGE),
        MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON, 0,
        M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_THICK_HIDE|M1_POIS,
        M2_HOSTILE|M2_STRONG|M2_COLLECT, 0, HI_METAL),
@@ -2284,7 +2281,7 @@ struct permonst _mons2[] = {
        LVL(0, 12, 10, 0, 0), G_NOGEN,          /* for corpses */
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_COLLECT,
        M3_INFRAVISIBLE, HI_DOMESTIC),
@@ -2292,7 +2289,7 @@ struct permonst _mons2[] = {
        LVL(2, 12, 10, 10, -7), (1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_WERE, MZ_HUMAN), MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_WERE, MZ_HUMAN), MR_POISON, 0,
        M1_HUMANOID|M1_POIS|M1_REGEN|M1_OMNIVORE,
        M2_NOPOLY|M2_WERE|M2_HOSTILE|M2_HUMAN|M2_COLLECT, M3_INFRAVISIBLE,
        CLR_BROWN),
@@ -2300,7 +2297,7 @@ struct permonst _mons2[] = {
        LVL(2, 12, 10, 10, -7), (1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_WERE, MZ_HUMAN), MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_WERE, MZ_HUMAN), MR_POISON, 0,
        M1_HUMANOID|M1_POIS|M1_REGEN|M1_OMNIVORE,
        M2_NOPOLY|M2_WERE|M2_HOSTILE|M2_HUMAN|M2_COLLECT, M3_INFRAVISIBLE,
        CLR_RED),
@@ -2308,7 +2305,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 20, -7), (1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_WERE, MZ_HUMAN), MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_WERE, MZ_HUMAN), MR_POISON, 0,
        M1_HUMANOID|M1_POIS|M1_REGEN|M1_OMNIVORE,
        M2_NOPOLY|M2_WERE|M2_HOSTILE|M2_HUMAN|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_ORANGE),
@@ -2316,7 +2313,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 10, 2, -3), G_NOGEN,                /* for corpses */
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 350, 0, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
+       SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
        M1_HUMANOID|M1_OMNIVORE|M1_SEE_INVIS,
        M2_NOPOLY|M2_ELF|M2_STRONG|M2_COLLECT, M3_INFRAVISION|M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -2324,28 +2321,28 @@ struct permonst _mons2[] = {
        LVL(4, 12, 10, 10, -5), (G_GENO|G_SGROUP|2),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 350, 0, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
+       SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
        M1_HUMANOID|M1_OMNIVORE|M1_SEE_INVIS,
        M2_ELF|M2_COLLECT, M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GREEN),
     MON("Green-elf", S_HUMAN,
        LVL(5, 12, 10, 10, -6), (G_GENO|G_SGROUP|2),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 350, 0, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
+       SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
        M1_HUMANOID|M1_OMNIVORE|M1_SEE_INVIS,
        M2_ELF|M2_COLLECT, M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BRIGHT_GREEN),
     MON("Grey-elf", S_HUMAN,
        LVL(6, 12, 10, 10, -7), (G_GENO|G_SGROUP|2),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 350, 0, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
+       SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
        M1_HUMANOID|M1_OMNIVORE|M1_SEE_INVIS,
        M2_ELF|M2_COLLECT, M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
     MON("elf-lord", S_HUMAN,
        LVL(8, 12, 10, 20, -9), (G_GENO|G_SGROUP|2),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 350, 0, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
+       SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
        M1_HUMANOID|M1_OMNIVORE|M1_SEE_INVIS,
        M2_ELF|M2_STRONG|M2_LORD|M2_MALE|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BRIGHT_BLUE),
@@ -2353,7 +2350,7 @@ struct permonst _mons2[] = {
        LVL(9, 12, 10, 25, -10), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 350, 0, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
+       SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
        M1_HUMANOID|M1_OMNIVORE|M1_SEE_INVIS,
        M2_ELF|M2_STRONG|M2_PRINCE|M2_MALE|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, HI_LORD),
@@ -2361,7 +2358,7 @@ struct permonst _mons2[] = {
        LVL(9, 12, 5, 20, 0), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 12),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_IMITATE, MZ_HUMAN), MR_SLEEP, 0,
+       SIZ(WT_HUMAN, 400, MS_IMITATE, MZ_HUMAN), MR_SLEEP, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_HOSTILE|M2_STRONG|M2_COLLECT|M2_SHAPESHIFTER,
        M3_INFRAVISIBLE, HI_DOMESTIC),
@@ -2369,7 +2366,7 @@ struct permonst _mons2[] = {
        LVL(12, 18, 0, 50, 0), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 4, 4), ATTK(AT_WEAP, AD_PHYS, 4, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, sizeof(struct eshk), MS_SELL, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_SELL, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT|M2_MAGIC,
        M3_INFRAVISIBLE, HI_DOMESTIC),
@@ -2377,7 +2374,7 @@ struct permonst _mons2[] = {
        LVL(12, 12, 10, 40, 10), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 4,10),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, sizeof(struct egd), MS_GUARD, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARD, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_MERC|M2_PEACEFUL|M2_STRONG|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_BLUE),
@@ -2385,7 +2382,7 @@ struct permonst _mons2[] = {
        LVL(12, 12, 10, 0, 0), G_NOGEN,          /* for special levels */
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_DJINNI, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_DJINNI, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT,
        M3_INFRAVISIBLE|M3_CLOSE, HI_DOMESTIC),
@@ -2393,7 +2390,7 @@ struct permonst _mons2[] = {
        LVL(12, 0, 0, 50, 0), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_NONE, AD_MAGM, 0, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_ORACLE, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_ORACLE, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_FEMALE, M3_INFRAVISIBLE, HI_ZAP),
        /* aligned priests always have the epri extension attached;
@@ -2403,7 +2400,7 @@ struct permonst _mons2[] = {
        LVL(12, 12, 10, 50, 0), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 4,10), ATTK(AT_KICK, AD_PHYS, 1, 4),
          ATTK(AT_MAGC, AD_CLRC, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, sizeof(struct epri), MS_PRIEST, MZ_HUMAN),
+       SIZ(WT_HUMAN, 400, MS_PRIEST, MZ_HUMAN),
        MR_ELEC, 0, M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_LORD|M2_PEACEFUL|M2_COLLECT, M3_INFRAVISIBLE,
        CLR_WHITE),
@@ -2413,7 +2410,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 4,10), ATTK(AT_KICK, AD_PHYS, 2, 8),
          ATTK(AT_MAGC, AD_CLRC, 2, 8), ATTK(AT_MAGC, AD_CLRC, 2, 8),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, sizeof(struct epri), MS_PRIEST, MZ_HUMAN),
+       SIZ(WT_HUMAN, 400, MS_PRIEST, MZ_HUMAN),
        MR_FIRE|MR_ELEC|MR_SLEEP|MR_POISON, 0,
        M1_HUMANOID|M1_SEE_INVIS|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_MINION|M2_PRINCE|M2_NASTY|M2_COLLECT|M2_MAGIC,
@@ -2422,7 +2419,7 @@ struct permonst _mons2[] = {
        LVL(6, 10, 10, 0, -2), (G_SGROUP|G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SOLDIER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_MERC|M2_STALK|M2_HOSTILE|M2_STRONG|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_GRAY),
@@ -2430,7 +2427,7 @@ struct permonst _mons2[] = {
        LVL(8, 10, 10, 5, -3), (G_SGROUP|G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SOLDIER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_MERC|M2_STALK|M2_HOSTILE|M2_STRONG|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_RED),
@@ -2438,14 +2435,14 @@ struct permonst _mons2[] = {
        LVL(11, 6, 0, 0, 0), (G_GENO|3),
        A(ATTK(AT_CLAW, AD_HEAL, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_NURSE, MZ_HUMAN), MR_POISON, MR_POISON,
+       SIZ(WT_HUMAN, 400, MS_NURSE, MZ_HUMAN), MR_POISON, MR_POISON,
        M1_HUMANOID|M1_OMNIVORE, M2_NOPOLY|M2_HUMAN|M2_HOSTILE,
        M3_INFRAVISIBLE, HI_DOMESTIC),
     MON("lieutenant", S_HUMAN,
        LVL(10, 10, 10, 15, -4), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 3, 4), ATTK(AT_WEAP, AD_PHYS, 3, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SOLDIER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_MERC|M2_STALK|M2_HOSTILE|M2_STRONG|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_GREEN),
@@ -2453,7 +2450,7 @@ struct permonst _mons2[] = {
        LVL(12, 10, 10, 15, -5), (G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 4, 4), ATTK(AT_WEAP, AD_PHYS, 4, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SOLDIER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_MERC|M2_STALK|M2_HOSTILE|M2_STRONG|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_BLUE),
@@ -2464,7 +2461,7 @@ struct permonst _mons2[] = {
        LVL(6, 10, 10, 0, -2), (G_SGROUP|G_NOGEN|G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SOLDIER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_MERC|M2_STALK|M2_PEACEFUL|M2_STRONG|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_GRAY),
@@ -2472,7 +2469,7 @@ struct permonst _mons2[] = {
        LVL(10, 10, 10, 15, -4), (G_NOGEN|G_GENO|1),
        A(ATTK(AT_WEAP, AD_PHYS, 3, 4), ATTK(AT_WEAP, AD_PHYS, 3, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SOLDIER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_MERC|M2_STALK|M2_PEACEFUL|M2_STRONG|M2_COLLECT,
        M3_INFRAVISIBLE, CLR_GREEN),
@@ -2483,7 +2480,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 1, 8),
          ATTK(AT_GAZE, AD_STON, 0, 0), ATTK(AT_BITE, AD_DRST, 1, 6),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HISS, MZ_LARGE),
+       SIZ(WT_HUMAN, 400, MS_HISS, MZ_LARGE),
        MR_POISON|MR_STONE, MR_POISON|MR_STONE,
        M1_FLY|M1_SWIM|M1_AMPHIBIOUS|M1_HUMANOID|M1_POIS|M1_OMNIVORE,
        M2_NOPOLY|M2_HOSTILE|M2_STRONG|M2_PNAME|M2_FEMALE,
@@ -2492,7 +2489,7 @@ struct permonst _mons2[] = {
        LVL(30, 12, -8, 100, A_NONE), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_CLAW, AD_SAMU, 2,12), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_CUSS, MZ_HUMAN),
+       SIZ(WT_HUMAN, 400, MS_CUSS, MZ_HUMAN),
        MR_FIRE|MR_POISON, MR_FIRE|MR_POISON,
        M1_FLY|M1_BREATHLESS|M1_HUMANOID|M1_REGEN|M1_SEE_INVIS|M1_TPORT|
          M1_TPORT_CNTRL|M1_OMNIVORE,
@@ -2503,7 +2500,7 @@ struct permonst _mons2[] = {
        LVL(20, 15, 0, 40, 15), (G_UNIQ|G_NOGEN),
        A(ATTK(AT_WEAP, AD_PHYS, 4,10),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARD, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARD, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_SEE_INVIS|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STALK|M2_HOSTILE|M2_STRONG|M2_NASTY|M2_PNAME|
          M2_PRINCE|M2_MALE|M2_GREEDY|M2_JEWELS|M2_COLLECT|M2_MAGIC,
@@ -2513,7 +2510,7 @@ struct permonst _mons2[] = {
        LVL(76, 18, -5, 120, 0), (G_HELL|G_NOCORPSE|G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_TUCH, AD_PLYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_FERRY, MZ_HUMAN),
+       SIZ(WT_HUMAN, 400, MS_FERRY, MZ_HUMAN),
        MR_FIRE|MR_COLD|MR_POISON|MR_STONE, 0,
        M1_BREATHLESS|M1_SEE_INVIS|M1_HUMANOID,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_PNAME|M2_MALE|M2_GREEDY|M2_COLLECT,
@@ -2526,7 +2523,7 @@ struct permonst _mons2[] = {
        LVL(10, 3, -5, 50, -5), (G_NOCORPSE|G_NOGEN),
        A(ATTK(AT_TUCH, AD_PHYS, 1, 1),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 0, 0, MS_SILENT, MZ_HUMAN),
+       SIZ(WT_HUMAN, 0, MS_SILENT, MZ_HUMAN),
        MR_COLD|MR_DISINT|MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_FLY|M1_BREATHLESS|M1_WALLWALK|M1_HUMANOID|M1_UNSOLID,
        M2_NOPOLY|M2_UNDEAD|M2_STALK|M2_HOSTILE, M3_INFRAVISION, CLR_GRAY),
@@ -2534,7 +2531,7 @@ struct permonst _mons2[] = {
        LVL(12, 10, 10, 0, 0), (G_NOCORPSE|G_NOGEN),
        A(ATTK(AT_TUCH, AD_PLYS, 2, 6), ATTK(AT_TUCH, AD_SLOW, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 0, 0, MS_WAIL, MZ_HUMAN),
+       SIZ(WT_HUMAN, 0, MS_WAIL, MZ_HUMAN),
        MR_COLD|MR_DISINT|MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_FLY|M1_BREATHLESS|M1_WALLWALK|M1_HUMANOID|M1_UNSOLID|M1_SEE_INVIS,
        M2_NOPOLY|M2_UNDEAD|M2_WANDER|M2_STALK|M2_HOSTILE|M2_NASTY,
@@ -2546,7 +2543,7 @@ struct permonst _mons2[] = {
        LVL(8, 12,-4, 30, -7), (G_NOCORPSE|G_NOGEN),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
          ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_DJINNI, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_DJINNI, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
        M1_HUMANOID|M1_POIS|M1_SWIM,
        M2_NOPOLY|M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BLUE),
@@ -2564,7 +2561,7 @@ struct permonst _mons2[] = {
     MON("succubus", S_DEMON,
        LVL(6, 12, 0, 70, -9), (G_NOCORPSE|1),
        SEDUCTION_ATTACKS,
-       SIZ(WT_HUMAN, 400, 0, MS_SEDUCE, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_SEDUCE, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
        M1_HUMANOID|M1_FLY|M1_POIS,
        M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_FEMALE,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
@@ -2573,14 +2570,14 @@ struct permonst _mons2[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          ATTK(AT_BITE, AD_PHYS, 2, 3), ATTK(AT_STNG, AD_PHYS, 1, 3),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SILENT, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_SILENT, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
        M1_POIS|M1_THICK_HIDE,
        M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY, M3_INFRAVISIBLE|M3_INFRAVISION,
        CLR_BROWN),
     MON("incubus", S_DEMON,
        LVL(6, 12, 0, 70, -9), (G_NOCORPSE|1),
        SEDUCTION_ATTACKS,
-       SIZ(WT_HUMAN, 400, 0, MS_SEDUCE, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_SEDUCE, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
        M1_HUMANOID|M1_FLY|M1_POIS,
        M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_MALE,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
@@ -2591,7 +2588,7 @@ struct permonst _mons2[] = {
        LVL(7, 12, 2, 30, 10), (G_HELL|G_NOCORPSE|G_SGROUP|2),
        A(ATTK(AT_WEAP, AD_DRST, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SILENT, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_SILENT, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
        M1_HUMANOID|M1_POIS,
        M2_NOPOLY|M2_DEMON|M2_STALK|M2_HOSTILE|M2_STRONG|M2_NASTY|M2_FEMALE|
          M2_COLLECT,
@@ -2600,7 +2597,7 @@ struct permonst _mons2[] = {
        LVL(8, 12, 0, 35, 8), (G_HELL|G_NOCORPSE|G_SGROUP|2),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
          ATTK(AT_STNG, AD_PHYS, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SILENT, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_SILENT, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
        M1_POIS|M1_THICK_HIDE, M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
     MON("marilith", S_DEMON,
@@ -2608,7 +2605,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
          ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
          ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4)),
-       SIZ(WT_HUMAN, 400, 0, MS_CUSS, MZ_LARGE), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_CUSS, MZ_LARGE), MR_FIRE|MR_POISON, 0,
        M1_HUMANOID|M1_SLITHY|M1_SEE_INVIS|M1_POIS,
        M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_FEMALE|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
@@ -2617,21 +2614,21 @@ struct permonst _mons2[] = {
        A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          ATTK(AT_CLAW, AD_PHYS, 1, 8), ATTK(AT_CLAW, AD_PHYS, 1, 8),
          ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SILENT, MZ_LARGE), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE|MR_POISON, 0,
        M1_POIS, M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
     MON("hezrou", S_DEMON,
        LVL(9, 6, -2, 55, -10), (G_HELL|G_NOCORPSE|G_SGROUP|2),
        A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
          ATTK(AT_BITE, AD_PHYS, 4, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SILENT, MZ_LARGE), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE|MR_POISON, 0,
        M1_HUMANOID|M1_POIS, M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
     MON("bone devil", S_DEMON,
        LVL(9, 15, -1, 40, -9), (G_HELL|G_NOCORPSE|G_SGROUP|2),
        A(ATTK(AT_WEAP, AD_PHYS, 3, 4), ATTK(AT_STNG, AD_DRST, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SILENT, MZ_LARGE), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE|MR_POISON, 0,
        M1_POIS, M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
     MON("ice devil", S_DEMON,
@@ -2639,7 +2636,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_STNG, AD_COLD, 3, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SILENT, MZ_LARGE),
+       SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE),
        MR_FIRE|MR_COLD|MR_POISON, 0, M1_SEE_INVIS|M1_POIS,
        M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY, M3_INFRAVISIBLE|M3_INFRAVISION,
        CLR_WHITE),
@@ -2648,14 +2645,14 @@ struct permonst _mons2[] = {
        A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
          ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SPELL, MZ_LARGE), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_SPELL, MZ_LARGE), MR_FIRE|MR_POISON, 0,
        M1_HUMANOID|M1_POIS, M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
     MON("pit fiend", S_DEMON,
        LVL(13, 6, -3, 65, -13), (G_HELL|G_NOCORPSE|2),
        A(ATTK(AT_WEAP, AD_PHYS, 4, 2), ATTK(AT_WEAP, AD_PHYS, 4, 2),
          ATTK(AT_HUGS, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GROWL, MZ_LARGE), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_GROWL, MZ_LARGE), MR_FIRE|MR_POISON, 0,
        M1_SEE_INVIS|M1_POIS,
        M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
@@ -2663,14 +2660,14 @@ struct permonst _mons2[] = {
        LVL(13, 12, 4, 60, -5), (G_HELL|G_NOCORPSE|1),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 400, 0, MS_CUSS, MZ_HUMAN), MR_STONE, 0,
+       SIZ(1500, 400, MS_CUSS, MZ_HUMAN), MR_STONE, 0,
        M1_HUMANOID, M2_NOPOLY|M2_STALK|M2_STRONG|M2_COLLECT|M2_SHAPESHIFTER,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
     MON("balrog", S_DEMON,
        LVL(16, 5, -2, 75, -14), (G_HELL|G_NOCORPSE|1),
        A(ATTK(AT_WEAP, AD_PHYS, 8, 4), ATTK(AT_WEAP, AD_PHYS, 4, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SILENT, MZ_LARGE), MR_FIRE|MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE|MR_POISON, 0,
        M1_FLY|M1_SEE_INVIS|M1_POIS,
        M2_DEMON|M2_STALK|M2_HOSTILE|M2_STRONG|M2_NASTY|M2_COLLECT,
        M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
@@ -2681,7 +2678,7 @@ struct permonst _mons2[] = {
        LVL(50, 3, -7, 65, -15), (G_HELL|G_NOCORPSE|G_NOGEN|G_UNIQ),
        A(ATTK(AT_ENGL, AD_DISE, 4,10), ATTK(AT_SPIT, AD_ACID, 3, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 0, 0, MS_GURGLE, MZ_LARGE),
+       SIZ(1500, 0, MS_GURGLE, MZ_LARGE),
        MR_FIRE|MR_POISON|MR_ACID|MR_STONE, 0,
        M1_AMPHIBIOUS|M1_AMORPHOUS|M1_NOHEAD|M1_FLY|M1_SEE_INVIS|M1_ACID|
          M1_POIS,
@@ -2693,7 +2690,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 3, 6), ATTK(AT_WEAP, AD_CONF, 2, 8),
          ATTK(AT_CLAW, AD_PLYS, 1, 6), ATTK(AT_MAGC, AD_MAGM, 2, 6),
          NO_ATTK, NO_ATTK),
-       SIZ(900, 500, 0, MS_ORC, MZ_LARGE), MR_FIRE|MR_POISON, 0,
+       SIZ(900, 500, MS_ORC, MZ_LARGE), MR_FIRE|MR_POISON, 0,
        M1_FLY|M1_SEE_INVIS|M1_POIS,
        M2_NOPOLY|M2_DEMON|M2_STALK|M2_HOSTILE|M2_PNAME|M2_NASTY|M2_LORD|
          M2_MALE|M2_COLLECT,
@@ -2703,7 +2700,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 3, 4),
          ATTK(AT_CLAW, AD_PHYS, 3, 4), ATTK(AT_MAGC, AD_SPEL, 8, 6),
          ATTK(AT_STNG, AD_DRST, 2, 4), NO_ATTK),
-       SIZ(1500, 500, 0, MS_ORC, MZ_HUGE), MR_FIRE|MR_POISON, 0,
+       SIZ(1500, 500, MS_ORC, MZ_HUGE), MR_FIRE|MR_POISON, 0,
        M1_FLY|M1_SEE_INVIS|M1_POIS,
        M2_NOPOLY|M2_DEMON|M2_STALK|M2_HOSTILE|M2_PNAME|M2_NASTY|M2_PRINCE|
          M2_MALE|M2_COLLECT,
@@ -2713,7 +2710,7 @@ struct permonst _mons2[] = {
        LVL(72, 3, -3, 75, 15), (G_HELL|G_NOCORPSE|G_NOGEN|G_UNIQ),
        A(ATTK(AT_CLAW, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 3, 6),
          ATTK(AT_STNG, AD_DRST, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_BRIBE, MZ_HUGE), MR_FIRE|MR_POISON, 0,
+       SIZ(1500, 500, MS_BRIBE, MZ_HUGE), MR_FIRE|MR_POISON, 0,
        M1_FLY|M1_SEE_INVIS|M1_POIS|M1_SLITHY,
        M2_NOPOLY|M2_DEMON|M2_STALK|M2_HOSTILE|M2_PNAME|M2_NASTY|
          M2_PRINCE|M2_MALE,
@@ -2722,7 +2719,7 @@ struct permonst _mons2[] = {
        LVL(78, 15, -2, 80, 15), (G_HELL|G_NOCORPSE|G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 4, 6), ATTK(AT_MAGC, AD_SPEL, 6, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_BRIBE, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
+       SIZ(1500, 500, MS_BRIBE, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
        M1_FLY|M1_SEE_INVIS|M1_POIS|M1_HUMANOID,
        M2_NOPOLY|M2_DEMON|M2_STALK|M2_HOSTILE|M2_PNAME|M2_NASTY|
          M2_PRINCE|M2_MALE|M2_COLLECT,
@@ -2731,7 +2728,7 @@ struct permonst _mons2[] = {
        LVL(89, 9, -5, 85, 20), (G_HELL|G_NOCORPSE|G_NOGEN|G_UNIQ),
        A(ATTK(AT_BITE, AD_DRST, 2, 6), ATTK(AT_GAZE, AD_STUN, 2, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_BRIBE, MZ_LARGE), MR_FIRE|MR_POISON, 0,
+       SIZ(1500, 500, MS_BRIBE, MZ_LARGE), MR_FIRE|MR_POISON, 0,
        M1_FLY|M1_SEE_INVIS|M1_POIS,
        M2_NOPOLY|M2_DEMON|M2_STALK|M2_HOSTILE|M2_PNAME|M2_NASTY|
          M2_PRINCE|M2_MALE,
@@ -2740,7 +2737,7 @@ struct permonst _mons2[] = {
        LVL(105, 12, -7, 90, 20), (G_HELL|G_NOCORPSE|G_NOGEN|G_UNIQ),
        A(ATTK(AT_CLAW, AD_PHYS, 4, 4), ATTK(AT_MAGC, AD_COLD, 6, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_BRIBE, MZ_HUGE), MR_FIRE|MR_COLD|MR_POISON, 0,
+       SIZ(1500, 500, MS_BRIBE, MZ_HUGE), MR_FIRE|MR_COLD|MR_POISON, 0,
        M1_FLY|M1_SEE_INVIS|M1_HUMANOID|M1_POIS,
        M2_NOPOLY|M2_DEMON|M2_STALK|M2_HOSTILE|M2_PNAME|M2_STRONG|
          M2_NASTY|M2_PRINCE|M2_MALE,
@@ -2750,7 +2747,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_MAGC, AD_SPEL, 8, 6), ATTK(AT_STNG, AD_DRLI, 1, 4),
          ATTK(AT_CLAW, AD_DISE, 1, 6), ATTK(AT_CLAW, AD_DISE, 1, 6),
          NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, 0, MS_GROWL, MZ_HUGE), MR_FIRE|MR_POISON, 0,
+       SIZ(1500, 500, MS_GROWL, MZ_HUGE), MR_FIRE|MR_POISON, 0,
        M1_FLY|M1_SEE_INVIS|M1_NOHANDS|M1_POIS,
        M2_NOPOLY|M2_DEMON|M2_STALK|M2_HOSTILE|M2_PNAME|M2_NASTY|
          M2_PRINCE|M2_MALE,
@@ -2761,7 +2758,7 @@ struct permonst _mons2[] = {
        LVL(30, 12, -5, 100, 0), (G_UNIQ|G_NOGEN),
        A(ATTK(AT_TUCH, AD_DETH, 8, 8), ATTK(AT_TUCH, AD_DETH, 8, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 1, 0, MS_RIDER, MZ_HUMAN),
+       SIZ(WT_HUMAN, 1, MS_RIDER, MZ_HUMAN),
        MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_FLY|M1_HUMANOID|M1_REGEN|M1_SEE_INVIS|M1_TPORT_CNTRL,
        M2_NOPOLY|M2_STALK|M2_HOSTILE|M2_PNAME|M2_STRONG|M2_NASTY,
@@ -2770,7 +2767,7 @@ struct permonst _mons2[] = {
        LVL(30, 12, -5, 100, 0), (G_UNIQ|G_NOGEN),
        A(ATTK(AT_TUCH, AD_PEST, 8, 8), ATTK(AT_TUCH, AD_PEST, 8, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 1, 0, MS_RIDER, MZ_HUMAN),
+       SIZ(WT_HUMAN, 1, MS_RIDER, MZ_HUMAN),
        MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_FLY|M1_HUMANOID|M1_REGEN|M1_SEE_INVIS|M1_TPORT_CNTRL,
        M2_NOPOLY|M2_STALK|M2_HOSTILE|M2_PNAME|M2_STRONG|M2_NASTY,
@@ -2779,7 +2776,7 @@ struct permonst _mons2[] = {
        LVL(30, 12, -5, 100, 0), (G_UNIQ|G_NOGEN),
        A(ATTK(AT_TUCH, AD_FAMN, 8, 8), ATTK(AT_TUCH, AD_FAMN, 8, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 1, 0, MS_RIDER, MZ_HUMAN),
+       SIZ(WT_HUMAN, 1, MS_RIDER, MZ_HUMAN),
        MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_FLY|M1_HUMANOID|M1_REGEN|M1_SEE_INVIS|M1_TPORT_CNTRL,
        M2_NOPOLY|M2_STALK|M2_HOSTILE|M2_PNAME|M2_STRONG|M2_NASTY,
@@ -2790,7 +2787,7 @@ struct permonst _mons2[] = {
     MON("mail daemon", S_DEMON,
        LVL(56, 24, 10, 127, 0), (G_NOGEN|G_NOCORPSE),
        A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(600, 300, 0, MS_SILENT, MZ_HUMAN),
+       SIZ(600, 300, MS_SILENT, MZ_HUMAN),
        MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON|MR_STONE, 0,
        M1_FLY|M1_SWIM|M1_BREATHLESS|M1_SEE_INVIS|M1_HUMANOID|M1_POIS,
        M2_NOPOLY|M2_STALK|M2_PEACEFUL, M3_INFRAVISIBLE|M3_INFRAVISION,
@@ -2800,7 +2797,7 @@ struct permonst _mons2[] = {
        LVL(7, 12, 4, 30, 0), (G_NOGEN|G_NOCORPSE),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 400, 0, MS_DJINNI, MZ_HUMAN), MR_POISON|MR_STONE, 0,
+       SIZ(1500, 400, MS_DJINNI, MZ_HUMAN), MR_POISON|MR_STONE, 0,
        M1_HUMANOID|M1_FLY|M1_POIS,
        M2_NOPOLY|M2_STALK|M2_COLLECT, M3_INFRAVISIBLE, CLR_YELLOW),
 /*
@@ -2810,14 +2807,14 @@ struct permonst _mons2[] = {
        LVL(3, 3, 6, 0, 0), (G_GENO|G_NOGEN),
        A(ATTK(AT_STNG, AD_DRST, 3, 3), NO_ATTK,
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(80, 20, 0, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
+       SIZ(80, 20, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
        M1_SWIM|M1_AMPHIBIOUS|M1_SLITHY|M1_NOLIMBS|M1_NOTAKE|M1_POIS,
        M2_HOSTILE, 0, CLR_BLUE),
     MON("piranha", S_EEL,
        LVL(5, 12, 4, 0, 0), (G_GENO|G_NOGEN|G_SGROUP),
        A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK,
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(60, 30, 0, MS_SILENT, MZ_SMALL), 0, 0,
+       SIZ(60, 30, MS_SILENT, MZ_SMALL), 0, 0,
        M1_SWIM|M1_AMPHIBIOUS|M1_ANIMAL|M1_SLITHY|M1_NOLIMBS|
          M1_CARNIVORE|M1_OVIPAROUS|M1_NOTAKE,
        M2_HOSTILE, 0, CLR_RED),
@@ -2825,7 +2822,7 @@ struct permonst _mons2[] = {
        LVL(7, 12, 2, 0, 0), (G_GENO|G_NOGEN),
        A(ATTK(AT_BITE, AD_PHYS, 5, 6), NO_ATTK,
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(500, 350, 0, MS_SILENT, MZ_LARGE), 0, 0,
+       SIZ(500, 350, MS_SILENT, MZ_LARGE), 0, 0,
        M1_SWIM|M1_AMPHIBIOUS|M1_ANIMAL|M1_SLITHY|M1_NOLIMBS|
          M1_CARNIVORE|M1_OVIPAROUS|M1_THICK_HIDE|M1_NOTAKE,
        M2_HOSTILE, 0, CLR_GRAY),
@@ -2833,7 +2830,7 @@ struct permonst _mons2[] = {
        LVL(5, 9, -1, 0, 0), (G_GENO|G_NOGEN),
        A(ATTK(AT_BITE, AD_PHYS, 3, 6), ATTK(AT_TUCH, AD_WRAP, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(200, 250, 0, MS_SILENT, MZ_HUGE), 0, 0,
+       SIZ(200, 250, MS_SILENT, MZ_HUGE), 0, 0,
        M1_SWIM|M1_AMPHIBIOUS|M1_ANIMAL|M1_SLITHY|M1_NOLIMBS|
          M1_CARNIVORE|M1_OVIPAROUS|M1_NOTAKE,
        M2_HOSTILE, M3_INFRAVISIBLE, CLR_CYAN),
@@ -2841,7 +2838,7 @@ struct permonst _mons2[] = {
        LVL(7, 10, -3, 0, 0), (G_GENO|G_NOGEN),
        A(ATTK(AT_BITE, AD_ELEC, 4, 6), ATTK(AT_TUCH, AD_WRAP, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(200, 250, 0, MS_SILENT, MZ_HUGE), MR_ELEC, MR_ELEC,
+       SIZ(200, 250, MS_SILENT, MZ_HUGE), MR_ELEC, MR_ELEC,
        M1_SWIM|M1_AMPHIBIOUS|M1_ANIMAL|M1_SLITHY|M1_NOLIMBS|
          M1_CARNIVORE|M1_OVIPAROUS|M1_NOTAKE,
        M2_HOSTILE, M3_INFRAVISIBLE, CLR_BRIGHT_BLUE),
@@ -2850,7 +2847,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
          ATTK(AT_HUGS, AD_WRAP, 2, 6), ATTK(AT_BITE, AD_PHYS, 5, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(1800, 1000, 0, MS_SILENT, MZ_HUGE), 0, 0,
+       SIZ(1800, 1000, MS_SILENT, MZ_HUGE), 0, 0,
        M1_SWIM|M1_AMPHIBIOUS|M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,
        M2_NOPOLY|M2_HOSTILE|M2_STRONG, M3_INFRAVISIBLE, CLR_RED),
 /*
@@ -2860,46 +2857,46 @@ struct permonst _mons2[] = {
        LVL(0, 6, 8, 0, 0), (G_GENO|5),
        A(ATTK(AT_BITE, AD_PHYS, 1, 2),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(10, 20, 0, MS_SILENT, MZ_TINY), 0, 0,
+       SIZ(10, 20, MS_SILENT, MZ_TINY), 0, 0,
        M1_SWIM|M1_AMPHIBIOUS|M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,
        M2_HOSTILE, 0, CLR_YELLOW),
     MON("gecko", S_LIZARD,
        LVL(1, 6, 8, 0, 0), (G_GENO|5),
        A(ATTK(AT_BITE, AD_PHYS, 1, 3),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(10, 20, 0, MS_SQEEK, MZ_TINY), 0, 0,
+       SIZ(10, 20, MS_SQEEK, MZ_TINY), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, 0, CLR_GREEN),
     MON("iguana", S_LIZARD,
        LVL(2, 6, 7, 0, 0), (G_GENO|5),
        A(ATTK(AT_BITE, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(30, 30, 0, MS_SILENT, MZ_TINY), 0, 0,
+       SIZ(30, 30, MS_SILENT, MZ_TINY), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, 0, CLR_BROWN),
     MON("baby crocodile", S_LIZARD,
        LVL(3, 6, 7, 0, 0), G_GENO,
        A(ATTK(AT_BITE, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(200, 200, 0, MS_SILENT, MZ_MEDIUM), 0, 0,
+       SIZ(200, 200, MS_SILENT, MZ_MEDIUM), 0, 0,
        M1_SWIM|M1_AMPHIBIOUS|M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,
        M2_HOSTILE, 0, CLR_BROWN),
     MON("lizard", S_LIZARD,
        LVL(5, 6, 6, 10, 0), (G_GENO|5),
        A(ATTK(AT_BITE, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(10, 40, 0, MS_SILENT, MZ_TINY), MR_STONE, MR_STONE,
+       SIZ(10, 40, MS_SILENT, MZ_TINY), MR_STONE, MR_STONE,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, 0, CLR_GREEN),
     MON("chameleon", S_LIZARD,
        LVL(6, 5, 6, 10, 0), (G_GENO|2),
        A(ATTK(AT_BITE, AD_PHYS, 4, 2),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(100, 100, 0, MS_SILENT, MZ_TINY), 0, 0,
+       SIZ(100, 100, MS_SILENT, MZ_TINY), 0, 0,
        M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_NOPOLY|M2_HOSTILE|M2_SHAPESHIFTER,
        0, CLR_BROWN),
     MON("crocodile", S_LIZARD,
        LVL(6, 9, 5, 0, 0), (G_GENO|1),
        A(ATTK(AT_BITE, AD_PHYS, 4, 2), ATTK(AT_CLAW, AD_PHYS, 1,12),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_SILENT, MZ_LARGE), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), 0, 0,
        M1_SWIM|M1_AMPHIBIOUS|M1_ANIMAL|M1_THICK_HIDE|M1_NOHANDS|
          M1_OVIPAROUS|M1_CARNIVORE,
        M2_STRONG|M2_HOSTILE, 0, CLR_BROWN),
@@ -2908,7 +2905,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_TUCH, AD_FIRE, 1, 6),
          ATTK(AT_HUGS, AD_PHYS, 2, 6), ATTK(AT_HUGS, AD_FIRE, 3, 6),
          NO_ATTK, NO_ATTK),
-       SIZ(1500, 400, 0, MS_MUMBLE, MZ_HUMAN), MR_SLEEP|MR_FIRE, MR_FIRE,
+       SIZ(1500, 400, MS_MUMBLE, MZ_HUMAN), MR_SLEEP|MR_FIRE, MR_FIRE,
        M1_HUMANOID|M1_SLITHY|M1_THICK_HIDE|M1_POIS,
        M2_STALK|M2_HOSTILE|M2_COLLECT|M2_MAGIC, M3_INFRAVISIBLE, CLR_ORANGE),
 
@@ -2920,7 +2917,7 @@ struct permonst _mons2[] = {
     MON("long worm tail", S_WORM_TAIL,
        LVL(0, 0, 0, 0, 0), (G_NOGEN|G_NOCORPSE|G_UNIQ),
        A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, 0, 0), 0, 0, 0L, M2_NOPOLY, 0, CLR_BROWN),
+       SIZ(0, 0, 0, 0), 0, 0, 0L, M2_NOPOLY, 0, CLR_BROWN),
 
        /* Note:
         * Worm tail must be between the normal monsters and the special
@@ -2936,21 +2933,21 @@ struct permonst _mons2[] = {
        LVL(10, 12, 10, 1, 3), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_TUNNEL|M1_NEEDPICK|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE, HI_DOMESTIC),
     MON("barbarian", S_HUMAN,
        LVL(10, 12, 10, 1, 0), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE, HI_DOMESTIC),
     MON("caveman", S_HUMAN,
        LVL(10, 12, 10, 0, 1), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_MALE|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -2958,7 +2955,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 10, 0, 1), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_FEMALE|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -2966,21 +2963,21 @@ struct permonst _mons2[] = {
        LVL(10, 12, 10, 1, 0), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE, HI_DOMESTIC),
     MON("knight", S_HUMAN,
        LVL(10, 12, 10, 1, 3), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE, HI_DOMESTIC),
     MON("monk", S_HUMAN, 
        LVL(10, 12, 10, 2, 0), G_NOGEN,
        A(ATTK(AT_CLAW, AD_PHYS, 1, 8), ATTK(AT_KICK, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_HERBIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_COLLECT|M2_MALE,
        M3_INFRAVISIBLE, HI_DOMESTIC),
@@ -2988,7 +2985,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 10, 2, 0), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_MALE|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -2996,7 +2993,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 10, 2, 0), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_FEMALE|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3004,7 +3001,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 10, 2, -3), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3012,7 +3009,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 10, 1, -3), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_GREEDY|M2_JEWELS|M2_COLLECT,
        M3_INFRAVISIBLE, HI_DOMESTIC),
@@ -3020,7 +3017,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 10, 1, 3), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE, HI_DOMESTIC),
 #ifdef TOURIST
@@ -3028,7 +3025,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 10, 1, 0), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE, HI_DOMESTIC),
 #endif
@@ -3036,7 +3033,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 10, 1, -1), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), MR_COLD, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), MR_COLD, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_FEMALE|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3044,7 +3041,7 @@ struct permonst _mons2[] = {
        LVL(10, 12, 10, 3, 0), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_COLLECT|M2_MAGIC, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3055,7 +3052,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 0, 30, 20), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
        M1_TUNNEL|M1_NEEDPICK|M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PNAME|M2_PEACEFUL|M2_STRONG|M2_MALE|
          M2_COLLECT|M2_MAGIC,
@@ -3064,7 +3061,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 0, 30, 0), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN), MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), MR_POISON, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PNAME|M2_PEACEFUL|M2_STRONG|M2_MALE|
          M2_COLLECT|M2_MAGIC,
@@ -3073,7 +3070,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 0, 30, 20), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PNAME|M2_PEACEFUL|M2_STRONG|M2_MALE|
          M2_COLLECT|M2_MAGIC,
@@ -3085,7 +3082,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 0, 50, -20), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 350, 0, MS_LEADER, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
+       SIZ(WT_ELF, 350, MS_LEADER, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
        M1_HUMANOID|M1_SEE_INVIS|M1_OMNIVORE,
        M2_NOPOLY|M2_ELF|M2_HUMAN|M2_PNAME|M2_PEACEFUL|M2_STRONG|
          M2_MALE|M2_COLLECT|M2_MAGIC,
@@ -3094,7 +3091,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 0, 50, -20), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 350, 0, MS_LEADER, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
+       SIZ(WT_ELF, 350, MS_LEADER, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
        M1_HUMANOID|M1_SEE_INVIS|M1_OMNIVORE,
        M2_NOPOLY|M2_ELF|M2_HUMAN|M2_PNAME|M2_PEACEFUL|M2_STRONG|
          M2_FEMALE|M2_COLLECT|M2_MAGIC,
@@ -3104,7 +3101,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 0, 40, 0), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN), MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), MR_POISON, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PNAME|M2_PEACEFUL|M2_STRONG|M2_MALE|
          M2_COLLECT|M2_MAGIC,
@@ -3113,7 +3110,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 0, 40, 20), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PNAME|M2_PEACEFUL|M2_STRONG|M2_MALE|
          M2_COLLECT|M2_MAGIC,
@@ -3123,7 +3120,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_CLAW, AD_PHYS, 4, 10), ATTK(AT_KICK, AD_PHYS, 2, 8),
          ATTK(AT_MAGC, AD_CLRC, 2, 8), ATTK(AT_MAGC, AD_CLRC, 2, 8),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN),
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN),
        MR_FIRE|MR_ELEC|MR_SLEEP|MR_POISON, 0,
        M1_HUMANOID|M1_SEE_INVIS|M1_HERBIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_NASTY|M2_MAGIC,
@@ -3133,7 +3130,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 4,10), ATTK(AT_KICK, AD_PHYS, 2, 8),
          ATTK(AT_MAGC, AD_CLRC, 2, 8), ATTK(AT_MAGC, AD_CLRC, 2, 8),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN),
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN),
        MR_FIRE|MR_ELEC|MR_SLEEP|MR_POISON, 0,
        M1_HUMANOID|M1_SEE_INVIS|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT|M2_MAGIC,
@@ -3142,7 +3139,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 0, 30, 0), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE|M1_SEE_INVIS|M1_SWIM|M1_AMPHIBIOUS,
        M2_NOPOLY|M2_HUMAN|M2_PNAME|M2_PEACEFUL|M2_STRONG|M2_MALE|
          M2_COLLECT|M2_MAGIC,
@@ -3153,7 +3150,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 0, 30, -20), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
          ATTK(AT_CLAW, AD_SAMU, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN), MR_STONE, 0,
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), MR_STONE, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_MALE|M2_GREEDY|
          M2_JEWELS|M2_COLLECT|M2_MAGIC,
@@ -3162,7 +3159,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 0, 30, 20), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PNAME|M2_PEACEFUL|M2_STRONG|M2_MALE|
          M2_COLLECT|M2_MAGIC,
@@ -3172,7 +3169,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 10, 20, 0), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PNAME|M2_PEACEFUL|M2_STRONG|M2_MALE|
          M2_COLLECT|M2_MAGIC,
@@ -3182,7 +3179,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 0, 80, 0), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN), MR_COLD, 0,
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), MR_COLD, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_FEMALE|
          M2_COLLECT|M2_MAGIC,
@@ -3191,7 +3188,7 @@ struct permonst _mons2[] = {
        LVL(20, 12, 0, 60, 0), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 2, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_FEMALE|M2_PNAME|M2_PEACEFUL|
          M2_STRONG|M2_COLLECT|M2_MAGIC,
@@ -3204,7 +3201,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 8, 4), ATTK(AT_WEAP, AD_PHYS, 4, 6),
          ATTK(AT_MAGC, AD_SPEL, 0, 0), ATTK(AT_CLAW, AD_SAMU, 2, 6),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_NEMESIS, MZ_LARGE),
+       SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_LARGE),
        MR_FIRE|MR_POISON|MR_STONE, 0, M1_FLY|M1_SEE_INVIS|M1_POIS,
        M2_NOPOLY|M2_DEMON|M2_STALK|M2_HOSTILE|M2_STRONG|M2_NASTY|M2_COLLECT,
        M3_WANTSARTI|M3_WAITFORU|M3_INFRAVISION|M3_INFRAVISIBLE, CLR_RED),
@@ -3213,7 +3210,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          ATTK(AT_MAGC, AD_SPEL, 0, 0), ATTK(AT_CLAW, AD_SAMU, 1, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN), MR_POISON|MR_STONE, 0,
+       SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_POISON|MR_STONE, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PNAME|M2_STRONG|M2_MALE|M2_STALK|M2_HOSTILE|
          M2_NASTY|M2_COLLECT|M2_MAGIC,
@@ -3226,7 +3223,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_BREA, AD_RBRE, 6, 8), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          ATTK(AT_CLAW, AD_SAMU, 2, 8), ATTK(AT_BITE, AD_PHYS, 4, 8),
          ATTK(AT_BITE, AD_PHYS, 4, 8), ATTK(AT_STNG, AD_PHYS, 1, 6)),
-       SIZ(WT_DRAGON, 1700, 0, MS_NEMESIS, MZ_GIGANTIC),
+       SIZ(WT_DRAGON, 1700, MS_NEMESIS, MZ_GIGANTIC),
        MR_FIRE|MR_COLD|MR_SLEEP|MR_DISINT|MR_ELEC|MR_POISON|MR_ACID|MR_STONE,
        MR_FIRE|MR_COLD|MR_SLEEP|MR_DISINT|MR_ELEC|MR_POISON|MR_STONE,
        M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE|M1_SEE_INVIS|M1_POIS,
@@ -3238,7 +3235,7 @@ struct permonst _mons2[] = {
        LVL(15, 12, 10, 0, -15), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
          ATTK(AT_CLAW, AD_SAMU, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(750, 350, 0, MS_NEMESIS, MZ_HUMAN), 0, 0,
+       SIZ(750, 350, MS_NEMESIS, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_ORC|M2_HOSTILE|M2_STRONG|M2_STALK|M2_NASTY|M2_MALE|
          M2_GREEDY|M2_JEWELS|M2_COLLECT|M2_MAGIC,
@@ -3248,7 +3245,7 @@ struct permonst _mons2[] = {
        LVL(18, 12, 0, 0, -15), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 4, 8), ATTK(AT_WEAP, AD_PHYS, 4, 8),
          ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1900, 700, 0, MS_NEMESIS, MZ_HUGE), MR_STONE, 0,
+       SIZ(1900, 700, MS_NEMESIS, MZ_HUGE), MR_STONE, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_GIANT|M2_STRONG|M2_ROCKTHROW|M2_STALK|M2_HOSTILE|
          M2_NASTY|M2_MALE|M2_JEWELS|M2_COLLECT,
@@ -3258,7 +3255,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_BREA, AD_FIRE, 8, 6), ATTK(AT_BITE, AD_PHYS, 4, 8),
          ATTK(AT_MAGC, AD_SPEL, 0, 0), ATTK(AT_CLAW, AD_PHYS, 2, 4),
          ATTK(AT_CLAW, AD_SAMU, 2, 4), NO_ATTK ),
-       SIZ(WT_DRAGON, 1600, 0, MS_NEMESIS, MZ_GIGANTIC),
+       SIZ(WT_DRAGON, 1600, MS_NEMESIS, MZ_GIGANTIC),
        MR_FIRE|MR_STONE, MR_FIRE,
        M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE|M1_SEE_INVIS,
        M2_NOPOLY|M2_PNAME|M2_HOSTILE|M2_STRONG|M2_NASTY|M2_STALK|
@@ -3269,7 +3266,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_CLAW, AD_PHYS, 16, 2), ATTK(AT_CLAW, AD_PHYS, 16, 2),
          ATTK(AT_MAGC, AD_CLRC, 0, 0), ATTK(AT_CLAW, AD_SAMU, 1, 4),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN),
+       SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN),
        MR_POISON|MR_STONE, MR_POISON,
        M1_HUMANOID|M1_HERBIVORE|M1_SEE_INVIS,
        M2_NOPOLY|M2_HUMAN|M2_PNAME|M2_HOSTILE|M2_STRONG|M2_NASTY|
@@ -3280,7 +3277,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 8, 4), ATTK(AT_WEAP, AD_PHYS, 4, 6),
          ATTK(AT_MAGC, AD_SPEL, 0, 0), ATTK(AT_CLAW, AD_SAMU, 2, 6),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_NEMESIS, MZ_LARGE),
+       SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_LARGE),
        MR_FIRE|MR_POISON|MR_STONE, 0, M1_FLY|M1_SEE_INVIS|M1_POIS,
        M2_NOPOLY|M2_DEMON|M2_PNAME|M2_HOSTILE|M2_STRONG|M2_STALK|
          M2_NASTY|M2_COLLECT,
@@ -3289,7 +3286,7 @@ struct permonst _mons2[] = {
        LVL(15, 12, 10, 0, -15), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_SAMU, 2, 6),
          ATTK(AT_STNG, AD_DISE, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(750, 350, 0, MS_NEMESIS, MZ_HUMAN), MR_POISON|MR_STONE, MR_POISON,
+       SIZ(750, 350, MS_NEMESIS, MZ_HUMAN), MR_POISON|MR_STONE, MR_POISON,
        M1_ANIMAL|M1_NOHANDS|M1_OVIPAROUS|M1_POIS|M1_CARNIVORE,
        M2_NOPOLY|M2_PNAME|M2_HOSTILE|M2_STRONG|M2_STALK|M2_NASTY|
          M2_COLLECT|M2_MAGIC,
@@ -3298,7 +3295,7 @@ struct permonst _mons2[] = {
        LVL(15, 12, 0, 30, 18), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_DRST, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 8),
          ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0,
+       SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_HOSTILE|M2_STALK|M2_NASTY|
          M2_COLLECT|M2_MAGIC,
@@ -3310,7 +3307,7 @@ struct permonst _mons2[] = {
        LVL(15, 12, 0, 40, -13), (G_NOGEN|G_UNIQ|G_NOCORPSE),
        A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
          ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0,
+       SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PNAME|M2_HOSTILE|M2_STRONG|M2_STALK|
          M2_NASTY|M2_MALE|M2_COLLECT|M2_MAGIC,
@@ -3324,7 +3321,7 @@ struct permonst _mons2[] = {
        LVL(15, 12, 2, 50, 12), (G_NOGEN|G_UNIQ),
        A(ATTK(AT_WEAP, AD_PHYS, 2,10), ATTK(AT_WEAP, AD_PHYS, 2,10),
          ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(2250, 850, 0, MS_NEMESIS, MZ_HUGE), MR_FIRE|MR_STONE, MR_FIRE,
+       SIZ(2250, 850, MS_NEMESIS, MZ_HUGE), MR_FIRE|MR_STONE, MR_FIRE,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_GIANT|M2_MALE|M2_PNAME|M2_HOSTILE|M2_STALK|
          M2_STRONG|M2_NASTY|M2_ROCKTHROW|M2_JEWELS|M2_COLLECT,
@@ -3334,7 +3331,7 @@ struct permonst _mons2[] = {
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          ATTK(AT_CLAW, AD_SAMU, 1, 4), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0,
+       SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_HOSTILE|M2_STALK|M2_NASTY|
          M2_COLLECT|M2_MAGIC,
@@ -3346,7 +3343,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 10, 3), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
        M1_TUNNEL|M1_NEEDPICK|M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3354,7 +3351,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 10, 0), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), MR_POISON, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3362,7 +3359,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 10, 1), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3371,7 +3368,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 10, -7), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_MAGC, AD_CLRC, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 350, 0, MS_GUARDIAN, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
+       SIZ(WT_ELF, 350, MS_GUARDIAN, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
        M1_HUMANOID|M1_SEE_INVIS|M1_OMNIVORE,
        M2_NOPOLY|M2_ELF|M2_PEACEFUL|M2_COLLECT,
        M3_INFRAVISION|M3_INFRAVISIBLE, HI_DOMESTIC),
@@ -3380,7 +3377,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 10, 3), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), MR_POISON, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), MR_POISON, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3388,7 +3385,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 10, 3), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3396,7 +3393,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 20, 0), G_NOGEN,
        A(ATTK(AT_CLAW, AD_PHYS, 8, 2), ATTK(AT_KICK, AD_STUN, 3, 2),
          ATTK(AT_MAGC, AD_CLRC, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_HERBIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3404,7 +3401,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 20, 0), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_CLRC, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3412,7 +3409,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 10, -7), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 4),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_SEE_INVIS|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT,
        M3_INFRAVISION|M3_INFRAVISIBLE, HI_DOMESTIC),
@@ -3420,7 +3417,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 10, -3), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_GREEDY|M2_COLLECT,
        M3_INFRAVISIBLE, HI_DOMESTIC),
@@ -3428,7 +3425,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 10, 3), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_HOSTILE|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3436,7 +3433,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 10, 3), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3445,7 +3442,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 20, 0), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL | M2_STRONG|M2_COLLECT|M2_MAGIC,
        M3_INFRAVISIBLE, HI_DOMESTIC),
@@ -3454,7 +3451,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 10, -1), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT|M2_FEMALE, M3_INFRAVISIBLE,
        HI_DOMESTIC),
@@ -3462,7 +3459,7 @@ struct permonst _mons2[] = {
        LVL(5, 12, 10, 30, 0), G_NOGEN,
        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), 0, 0,
+       SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
        M1_HUMANOID|M1_OMNIVORE,
        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT|M2_MAGIC,
        M3_INFRAVISIBLE, HI_DOMESTIC),
@@ -3472,7 +3469,7 @@ struct permonst _mons2[] = {
     MON("", 0,
        LVL(0, 0, 0, 0, 0), (0),
        A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(0, 0, 0, 0, 0), 0, 0, 0L, 0L, 0, 0)
+       SIZ(0, 0, 0, 0), 0, 0, 0L, 0L, 0, 0)
 };
 #endif /* !SPLITMON_1 */
 
index d901e92ed508297023cc17c95b4e30b9d69b6b64..6a758444b35ccc1b0974157b5749c978694d9c52 100644 (file)
@@ -50,8 +50,9 @@ dev_name()
            i = rn2(n);
            for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
                if(!is_mplayer(mtmp->data)) continue;
-               if(!strncmp(developers[i], NAME(mtmp),
-                                      strlen(developers[i]))) {
+               if(!strncmp(developers[i],
+                            (has_name(mtmp)) ? MNAME(mtmp) : "",
+                             strlen(developers[i]))) {
                    match = TRUE;
                    break;
                }
index 774b68ec8cb93c5d6c7792ade4baeaaa1d1c8419..c07c028d09330666b7bf6c39691523681c22dafd 100644 (file)
@@ -7,7 +7,6 @@
  */
 
 #include "hack.h"
-#include "edog.h"
 
 extern const int monstr[];
 
index 5e738b266849d330cd4e4303cd550fc9e32938c9..5704ea71823b5b09af2452e100d9aff0ee098f2a 100644 (file)
@@ -321,7 +321,7 @@ do_pit:                 chasm = maketrap(x,y,PIT);
                                    else {
                                        You("destroy %s!", mtmp->mtame ?
                                            x_monnam(mtmp, ARTICLE_THE, "poor",
-                               mtmp->mnamelth ? SUPPRESS_SADDLE : 0, FALSE):
+                               (has_name(mtmp)) ? SUPPRESS_SADDLE : 0, FALSE):
                                            mon_nam(mtmp));
                                    }
                                    xkilled(mtmp,0);
index c9b071a4d92d39118409087231bf1bcf2b16a82a..2edc9bf4aa802c107e76a68f83f6f6de97bd3a75 100644 (file)
@@ -4,9 +4,6 @@
 
 #define NEED_VARARGS /* Uses ... */    /* comment line for pre-compiled headers */
 #include "hack.h"
-#ifdef WIZARD
-#include "edog.h"
-#endif
 
 static boolean no_repeat = FALSE;
 
index 48d5bff92ba1d5ce249645211d2cf65de31abbf1..d7ebf0d77c2ac13870e07f7129cdf256e224f1a0 100644 (file)
@@ -3,7 +3,6 @@
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
-#include "epri.h"
 
 STATIC_PTR int NDECL(prayer_done);
 STATIC_DCL struct obj *NDECL(worst_cursed_item);
index 313b769cde61c6ba93e41895581b8f1c74df7ca8..5774547a912bb6db2bff2e9855f115640b49f15e 100644 (file)
@@ -1,12 +1,9 @@
-/*     SCCS Id: @(#)priest.c   3.5     2005/11/02      */
+/*     SCCS Id: @(#)priest.c   3.5     2006/01/03      */
 /* Copyright (c) Izchak Miller, Steve Linhart, 1989.             */
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
 #include "mfndpos.h"
-#include "eshk.h"
-#include "epri.h"
-#include "emin.h"
 
 /* this matches the categorizations shown by enlightenment */
 #define ALGN_SINNED    (-4)    /* worse than strayed */
 STATIC_DCL boolean FDECL(histemple_at,(struct monst *,XCHAR_P,XCHAR_P));
 STATIC_DCL boolean FDECL(has_shrine,(struct monst *));
 
+void
+newepri(mtmp)
+struct monst *mtmp;
+{
+       if (!mtmp->mextra) mtmp->mextra = newmextra();
+       if (!EPRI(mtmp)) {
+           EPRI(mtmp) = (struct epri *)alloc(sizeof(struct epri));
+           (void) memset((genericptr_t) EPRI(mtmp), 0, sizeof(struct epri));
+       }
+}
+
+void
+free_epri(mtmp)
+struct monst *mtmp;
+{
+       if (mtmp->mextra && EPRI(mtmp)) {
+               free((genericptr_t) EPRI(mtmp));
+               EPRI(mtmp) = (struct epri *)0;
+       }
+       mtmp->ispriest = 0;
+}
+
 /*
  * Move for priests and shopkeepers.  Called from shk_move() and pri_move().
  * Valid returns are  1: moved  0: didn't  -1: let m_move do it  -2: died.
@@ -189,7 +208,7 @@ boolean sanctum;   /* is it the seat of the high priest? */
                (void) rloc(m_at(sx+1, sy), FALSE); /* insurance */
 
        priest = makemon(&mons[sanctum ? PM_HIGH_PRIEST : PM_ALIGNED_PRIEST],
-                        sx + 1, sy, NO_MM_FLAGS);
+                        sx + 1, sy, MM_EPRI);
        if (priest) {
                EPRI(priest)->shroom = (sroom - rooms) + ROOMOFFSET;
                EPRI(priest)->shralign = Amask2align(levl[sx][sy].altarmask);
@@ -549,7 +568,7 @@ boolean peaceful;
 
        if (MON_AT(x, y)) (void) rloc(m_at(x, y), FALSE);       /* insurance */
 
-       if (!(roamer = makemon(ptr, x, y, MM_ADJACENTOK)))
+       if (!(roamer = makemon(ptr, x, y, MM_ADJACENTOK|MM_EMIN)))
                return((struct monst *)0);
 
        EMIN(roamer)->min_align = alignment;
@@ -683,9 +702,15 @@ angry_priest()
            if (!IS_ALTAR(lev->typ) ||
                ((aligntyp)Amask2align(lev->altarmask & AM_MASK) !=
                        EPRI(priest)->shralign)) {
-               priest->ispriest = 0;           /* now a roamer */
-               priest->isminion = 1;           /* but still aligned */
-               /* this overloads EPRI's shroom field, which is now clobbered */
+               if (EPRI(priest)) {
+                       if (!EMIN(priest)) newemin(priest);
+                       priest->ispriest = 0;   /* roamer */
+                                               /* but still aligned */
+                       priest->isminion = 1;
+                       EMIN(priest)->min_align = EPRI(priest)->shralign;
+               }
+               /* this used to overload EPRI's shroom field, which was then clobbered
+                * but not since adding the separate mextra structure */
                EMIN(priest)->renegade = FALSE;
            }
        }
index 6c6222a6477d83af8fd86d171465a969e9e8e806..67a0b4249c7d60a89c8efab60fe553c472959869 100644 (file)
@@ -277,6 +277,80 @@ boolean ghostly, frozen;
        return(first);
 }
 
+/*
+ * used by get_mtraits() in mkobj.c
+ * to retrieve the bundled up OATTACHED_MONST info.
+ */
+struct monst *
+buffer_to_mon(buffer)
+genericptr_t buffer;
+{
+       int lth;
+       struct monst *mtmp;
+       char *spot = (char *)buffer;
+
+       mtmp = newmonst();
+       (void) memcpy((genericptr_t)mtmp, (genericptr_t)spot, sizeof(struct monst));
+       spot += sizeof(struct monst);
+       
+       /* obtain the stored length of the monster name */
+       (void) memcpy((genericptr_t)&lth, (genericptr_t)spot, sizeof(int));
+       spot += sizeof(int);
+       if (lth) {
+               if (!mtmp->mextra) mtmp->mextra = newmextra();
+               MNAME(mtmp) = (char *)alloc(lth);
+               (void) memcpy((genericptr_t)MNAME(mtmp),
+                               (genericptr_t)spot, lth);
+               spot += lth;
+       }
+       /* obtain the length of the egd (guard) structure */
+       (void) memcpy((genericptr_t)&lth, (genericptr_t)spot, sizeof(int));
+       spot += sizeof(int);
+       if (lth) {
+               newegd(mtmp);
+               (void) memcpy((genericptr_t)EGD(mtmp),
+                               (genericptr_t)spot, lth);
+               spot += lth;
+       }
+       /* obtain the length of the epri (priest) structure */
+       (void) memcpy((genericptr_t)&lth, (genericptr_t)spot, sizeof(int));
+       spot += sizeof(int);
+       if (lth) {
+               newepri(mtmp);
+               (void) memcpy((genericptr_t)EPRI(mtmp),
+                               (genericptr_t)spot, lth);
+               spot += lth;
+       }
+       /* obtain the length of the eshk (shopkeeper) structure */
+       (void) memcpy((genericptr_t)&lth, (genericptr_t)spot, sizeof(int));
+       spot += sizeof(int);
+       if (lth) {
+               neweshk(mtmp);
+               (void) memcpy((genericptr_t)ESHK(mtmp),
+                               (genericptr_t)spot, lth);
+               spot += lth;
+       }
+       /* obtain the length of the emin (minion) structure */
+       (void) memcpy((genericptr_t)&lth, (genericptr_t)spot, sizeof(int));
+       spot += sizeof(int);
+       if (lth) {
+               newemin(mtmp);
+               (void) memcpy((genericptr_t)EMIN(mtmp),
+                               (genericptr_t)spot, lth);
+               spot += lth;
+       }
+       /* obtain the length of the edog (mtame) structure */
+       (void) memcpy((genericptr_t)&lth, (genericptr_t)spot, sizeof(int));
+       spot += sizeof(int);
+       if (lth) {
+               newedog(mtmp);
+               (void) memcpy((genericptr_t)EDOG(mtmp),
+                               (genericptr_t)spot, lth);
+               spot += lth;    /* actually not necessary */
+       }
+       return mtmp;
+}
+
 STATIC_OVL struct monst *
 restmonchn(fd, ghostly)
 register int fd;
@@ -284,15 +358,66 @@ boolean ghostly;
 {
        register struct monst *mtmp, *mtmp2 = 0;
        register struct monst *first = (struct monst *)0;
-       int xl, offset;
+       int offset, buflen;
 
        while(1) {
-               mread(fd, (genericptr_t) &xl, sizeof(xl));
-               if(xl == -1) break;
-               mtmp = newmonst(xl);
+               mread(fd, (genericptr_t) &buflen, sizeof(buflen));
+               if(buflen == -1) break;
+               mtmp = newmonst();
+               mread(fd, (genericptr_t) mtmp, sizeof(struct monst));
+               /* any saved mextra pointer is invalid */
+               mtmp->mextra = (struct mextra *)0;
+
+               /* read the length of the name and the name */
+               mread(fd, (genericptr_t) &buflen, sizeof(buflen));
+               if (buflen > 0) {
+                       if (!mtmp->mextra) mtmp->mextra = newmextra();
+                       MNAME(mtmp) = (char *)alloc(buflen);
+                       mread(fd, (genericptr_t) MNAME(mtmp), buflen);
+               }
+
+               /* egd */               
+               mread(fd, (genericptr_t) &buflen, sizeof(buflen));
+               if (buflen > 0) {
+                       newegd(mtmp);
+                       mread(fd, (genericptr_t) EGD(mtmp),
+                                       sizeof(struct egd));
+               }
+
+               /* epri */
+               mread(fd, (genericptr_t) &buflen, sizeof(buflen));
+               if (buflen > 0) {
+                       newepri(mtmp);
+                       mread(fd, (genericptr_t) EPRI(mtmp),
+                                       sizeof(struct epri));
+               }
+
+               /* eshk */
+               mread(fd, (genericptr_t) &buflen, sizeof(buflen));
+               if (buflen > 0) {
+                       neweshk(mtmp);
+                       mread(fd, (genericptr_t) ESHK(mtmp),
+                                       sizeof(struct eshk));
+               }
+
+               /* emin */
+               mread(fd, (genericptr_t) &buflen, sizeof(buflen));
+               if (buflen > 0) {
+                       newemin(mtmp);
+                       mread(fd, (genericptr_t) EMIN(mtmp),
+                                       sizeof(struct emin));
+               }
+
+               /* edog */              
+               mread(fd, (genericptr_t) &buflen, sizeof(buflen));
+               if (buflen > 0) {
+                       newedog(mtmp);
+                       mread(fd, (genericptr_t) EDOG(mtmp),
+                                       sizeof(struct edog));
+               }
+
                if(!first) first = mtmp;
                else mtmp2->nmon = mtmp;
-               mread(fd, (genericptr_t) mtmp, (unsigned) xl + sizeof(struct monst));
                if (ghostly) {
                        unsigned nid = context.ident++;
                        add_id_mapping(mtmp->m_id, nid);
index e7204ab3567a23b8ed25e2e8edb4504b080ca1d0..8af673c92f65b46b09959fa7211b6f7e32df739b 100644 (file)
@@ -1004,21 +1004,97 @@ register struct obj *otmp;
            bwrite(fd, (genericptr_t) &minusone, sizeof(int));
 }
 
+/*
+ * Used by save_mtraits() in mkobj.c to ensure
+ * that all the monst related information is stored in
+ * an OATTACHED_MONST structure.
+ */
+genericptr_t
+mon_to_buffer(mtmp,isize)
+struct monst *mtmp;
+int *isize;
+{
+       char *spot;
+       int lth, k, xlth[6];
+       genericptr_t buffer, xptr[6];
+       struct monst *mbuf;
+
+       lth = sizeof(struct monst);
+
+       /* there is always one sizeof(int) for the name
+           and one for each of the 5 potential mextra fields */
+       for (k = 0; k < 6; ++k) {
+               xlth[k] = 0;
+               xptr[k] = (genericptr_t)0;
+       }
+       if (mtmp->mextra) {
+               if (MNAME(mtmp)) {
+                       xlth[0] = strlen(MNAME(mtmp)) + 1;
+                       xptr[0] = (genericptr_t)MNAME(mtmp);
+               }
+               if (EGD(mtmp)) {
+                       xlth[1] = sizeof(struct egd);
+                       xptr[1] = (genericptr_t)EGD(mtmp);
+               }
+               if (EPRI(mtmp)) {
+                       xlth[2] = sizeof(struct epri);
+                       xptr[2] = (genericptr_t)EPRI(mtmp);
+               }
+               if (ESHK(mtmp)) {
+                       xlth[3] = sizeof(struct eshk);
+                       xptr[3] = (genericptr_t)ESHK(mtmp);
+               }
+               if (EMIN(mtmp)) {
+                       xlth[4] = sizeof(struct emin);
+                       xptr[4] = (genericptr_t)EMIN(mtmp);
+               }
+               if (EDOG(mtmp)) {
+                       xlth[5] = sizeof(struct edog);
+                       xptr[5] = (genericptr_t)EDOG(mtmp);
+               }
+       }
+       for (k = 0; k < 6; ++k) {
+               lth += sizeof(int);
+               lth += xlth[k];
+       }
+       if (isize) *isize = lth;
+
+       buffer = alloc(lth);
+
+       spot = (char *)buffer;
+       (void) memcpy((genericptr_t)spot, (genericptr_t)mtmp,
+                       sizeof(struct monst));
+       spot += sizeof(struct monst);
+
+       mbuf = (struct monst *)buffer;
+       mbuf->mextra = (struct mextra *)0;
+
+       for (k = 0; k < 6; ++k) {
+               lth = xlth[k];
+               (void) memcpy((genericptr_t)spot,
+                               (genericptr_t)&lth, sizeof(lth));
+               spot += sizeof(lth);
+               if (lth > 0 && xptr[k] != 0) {
+                       (void) memcpy((genericptr_t)spot, xptr[k], lth);
+                       spot += lth;
+               }
+       }
+       return (genericptr_t)buffer;
+}
+
 STATIC_OVL void
 savemonchn(fd, mtmp, mode)
 register int fd, mode;
 register struct monst *mtmp;
 {
        register struct monst *mtmp2;
-       unsigned int xl;
-       int minusone = -1;
+       int buflen, minusone = -1, zerobuf = 0;
+       genericptr_t buffer = (genericptr_t)0;
 
        while (mtmp) {
            mtmp2 = mtmp->nmon;
            if (perform_bwrite(mode)) {
                mtmp->mnum = monsndx(mtmp->data);
-               xl = mtmp->mxlth + mtmp->mnamelth;
-               bwrite(fd, (genericptr_t) &xl, sizeof(int));
 #ifndef GOLDOBJ
                if (mtmp->mgold) {
                        struct obj *goldobj = mksobj(GOLD_PIECE, FALSE, FALSE);
@@ -1030,7 +1106,58 @@ register struct monst *mtmp;
                        mtmp->minvent = goldobj;
                }
 #endif
-               bwrite(fd, (genericptr_t) mtmp, xl + sizeof(struct monst));
+               buflen = sizeof(struct monst);
+               bwrite(fd, (genericptr_t) &buflen, sizeof(int));
+#if 0
+               buffer = mon_to_buffer(mtmp, &buflen);
+               bwrite(fd, buffer, buflen);
+#else
+               bwrite(fd, (genericptr_t) mtmp, buflen);
+               if (!mtmp->mextra) {
+                       bwrite(fd, (genericptr_t) &zerobuf, sizeof(int));
+                       bwrite(fd, (genericptr_t) &zerobuf, sizeof(int));
+                       bwrite(fd, (genericptr_t) &zerobuf, sizeof(int));
+                       bwrite(fd, (genericptr_t) &zerobuf, sizeof(int));
+                       bwrite(fd, (genericptr_t) &zerobuf, sizeof(int));
+                       bwrite(fd, (genericptr_t) &zerobuf, sizeof(int));
+               } else {
+                       if (MNAME(mtmp)) buflen = strlen(MNAME(mtmp)) + 1;
+                       else buflen = 0;
+                       bwrite(fd, (genericptr_t) &buflen, sizeof(int));
+                       if (buflen > 0)
+                               bwrite(fd, (genericptr_t) MNAME(mtmp), buflen);
+
+                       if (EGD(mtmp)) buflen = sizeof(struct egd);
+                       else buflen = 0;
+                       bwrite(fd, (genericptr_t) &buflen, sizeof(int));
+                       if (buflen > 0)
+                               bwrite(fd, (genericptr_t) EGD(mtmp), buflen);
+
+                       if (EPRI(mtmp)) buflen = sizeof(struct epri);
+                       else buflen = 0;
+                       bwrite(fd, (genericptr_t) &buflen, sizeof(int));
+                       if (buflen > 0)
+                               bwrite(fd, (genericptr_t) EPRI(mtmp), buflen);
+
+                       if (ESHK(mtmp)) buflen = sizeof(struct eshk);
+                       else buflen = 0;
+                       bwrite(fd, (genericptr_t) &buflen, sizeof(int));
+                       if (buflen > 0)
+                               bwrite(fd, (genericptr_t) ESHK(mtmp), buflen);
+
+                       if (EMIN(mtmp)) buflen = sizeof(struct emin);
+                       else buflen = 0;
+                       bwrite(fd, (genericptr_t) &buflen, sizeof(int));
+                       if (buflen > 0)
+                               bwrite(fd, (genericptr_t) EMIN(mtmp), buflen);
+
+                       if (EDOG(mtmp)) buflen = sizeof(struct edog);
+                       else buflen = 0;
+                       bwrite(fd, (genericptr_t) &buflen, sizeof(int));
+                       if (buflen > 0)
+                               bwrite(fd, (genericptr_t) EDOG(mtmp), buflen);
+               }
+#endif
            }
            if (mtmp->minvent)
                saveobjchn(fd,mtmp->minvent,mode);
index 1792cdeb29feb608c58841dde3b0b38c2b128c8c..29c270dfefb279e0af030335296a863fae8999c5 100644 (file)
--- a/src/shk.c
+++ b/src/shk.c
@@ -3,7 +3,6 @@
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
-#include "eshk.h"
 
 /*#define DEBUG*/
 
index c0cead96434a243858c341fc8ceede6034fd8a75..e8f3f7593cea3ffcc91185718afdb0249c3991b6 100644 (file)
@@ -1,11 +1,10 @@
-/*     SCCS Id: @(#)shknam.c   3.5     2005/12/14      */
+/*     SCCS Id: @(#)shknam.c   3.5     2006/01/03      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
 /* shknam.c -- initialize a shop */
 
 #include "hack.h"
-#include "eshk.h"
 
 STATIC_DCL boolean FDECL(veggy_item, (struct obj *obj,int));
 STATIC_DCL int NDECL(shkveg);
@@ -450,6 +449,28 @@ const char * const *nlp;
        ESHK(shk)->shknam[PL_NSIZ-1] = 0;
 }
 
+void
+neweshk(mtmp)
+struct monst *mtmp;
+{
+       if (!mtmp->mextra) mtmp->mextra = newmextra();
+       if (!ESHK(mtmp)) {
+           ESHK(mtmp) = (struct eshk *)alloc(sizeof(struct eshk));
+           (void) memset((genericptr_t) ESHK(mtmp), 0, sizeof(struct eshk));
+       }
+}
+
+void
+free_eshk(mtmp)
+struct monst *mtmp;
+{
+       if (mtmp->mextra && ESHK(mtmp)) {
+               free((genericptr_t) ESHK(mtmp));
+               ESHK(mtmp) = (struct eshk *)0;
+       }
+       mtmp->isshk = 0;
+}
+
 STATIC_OVL int
 shkinit(shp, sroom)    /* create a new shopkeeper in the given room */
 const struct shclass   *shp;
@@ -507,7 +528,7 @@ struct mkroom       *sroom;
        if(MON_AT(sx, sy)) (void) rloc(m_at(sx, sy), FALSE); /* insurance */
 
        /* now initialize the shopkeeper monster structure */
-       if(!(shk = makemon(&mons[PM_SHOPKEEPER], sx, sy, NO_MM_FLAGS)))
+       if(!(shk = makemon(&mons[PM_SHOPKEEPER], sx, sy, MM_ESHK)))
                return(-1);
        shk->isshk = shk->mpeaceful = 1;
        set_malign(shk);
index 4b29bcd6f26de05118f3d6f5652db3aeb2479c64..ba506674b819848aa4a5596b863b45f71b0e2cc9 100644 (file)
@@ -3,7 +3,7 @@
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
-#include "edog.h"
+
 #ifdef USER_SOUNDS
 # ifdef USER_SOUNDS_REGEX
 #include <sys/types.h>
index fdf8f9fdcf808c69500135e25876712a8a049300..8c696c28e5d872182c3fe44ae0ed61003bdefa15 100644 (file)
@@ -512,7 +512,7 @@ dismount_steed(reason)
                    You("can't. There isn't anywhere for you to stand.");
                    return;
                }
-               if (!mtmp->mnamelth) {
+               if (!has_name(mtmp)) {
                        pline("You've been through the dungeon on %s with no name.",
                                an(mtmp->data->mname));
                        if (Hallucination)
index b262e9ec27d943f37e00cd4220d6d6320ee884d0..ba57add4349f60a491e91e30302c39677b2a7e75 100644 (file)
@@ -470,10 +470,9 @@ long timeout;
                       while it's in your inventory */
                    if ((yours && !silent) ||
                        (carried(egg) && mon->data->mlet == S_DRAGON)) {
-                       if ((mon2 = tamedog(mon, (struct obj *)0)) != 0) {
-                           mon = mon2;
+                       if (tamedog(mon, (struct obj *)0)) {
                            if (carried(egg) && mon->data->mlet != S_DRAGON)
-                               mon->mtame = 20;
+                               mon->mtame = 20;
                        }
                    }
                    if (mvitals[mnum].mvflags & G_EXTINCT)
@@ -680,7 +679,7 @@ slip_or_trip()
            pline("%s %s%s on the ice.",
 #ifdef STEED
                u.usteed ? upstart(x_monnam(u.usteed,
-                               u.usteed->mnamelth ? ARTICLE_NONE : ARTICLE_THE,
+                               (has_name(u.usteed)) ? ARTICLE_NONE : ARTICLE_THE,
                                (char *)0, SUPPRESS_SADDLE, FALSE)) :
 #endif
                "You", rn2(2) ? "slip" : "slide", on_foot ? "" : "s");
index 8b4d6d7243168958d18497ba8fe052bd1aceff42..c4093ea01773d1fdc21a95071d546391a016cb11 100644 (file)
@@ -675,7 +675,7 @@ unsigned trflags;
            u.usteed->mtrapseen |= (1 << (ttype - 1));
            /* suppress article in various steed messages when using its
               name (which won't occur when hallucinating) */
-           if (u.usteed->mnamelth && !Hallucination)
+           if (has_name(u.usteed) && !Hallucination)
                steed_article = ARTICLE_NONE;
        }
 #endif
index 2cce55a0bc79f6372fe338859ad2732b8e98251a..2d0b3a0b8855715fc72dbfd49d867662ba17d090 100644 (file)
@@ -1,9 +1,8 @@
-/*     SCCS Id: @(#)vault.c    3.5     2005/10/28      */
+/*     SCCS Id: @(#)vault.c    3.5     2006/01/03      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
-#include "vault.h"
 
 STATIC_DCL struct monst *NDECL(findgd);
 
@@ -16,6 +15,28 @@ STATIC_DCL boolean FDECL(in_fcorridor, (struct monst *,int,int));
 STATIC_DCL void FDECL(move_gold,(struct obj *,int));
 STATIC_DCL void FDECL(wallify_vault,(struct monst *));
 
+void
+newegd(mtmp)
+struct monst *mtmp;
+{
+       if (!mtmp->mextra) mtmp->mextra = newmextra();
+       if (!EGD(mtmp)) {
+           EGD(mtmp) = (struct egd *)alloc(sizeof(struct egd));
+           (void) memset((genericptr_t) EGD(mtmp), 0, sizeof(struct egd));
+       }
+}
+
+void
+free_egd(mtmp)
+struct monst *mtmp;
+{
+       if (mtmp->mextra && EGD(mtmp)) {
+               free((genericptr_t) EGD(mtmp));
+               EGD(mtmp) = (struct egd *)0;
+       }
+       mtmp->isgd = 0;
+}
+
 STATIC_OVL boolean
 clear_fcorr(grd, forceshow)
 struct monst *grd;
@@ -222,7 +243,7 @@ fnd:
        }
 
        /* make something interesting happen */
-       if(!(guard = makemon(&mons[PM_GUARD], x, y, NO_MM_FLAGS))) return;
+       if(!(guard = makemon(&mons[PM_GUARD], x, y, MM_EGD))) return;
        guard->isgd = 1;
        guard->mpeaceful = 1;
        set_malign(guard);
index 7b8f9f5358e90ce37e0728b518804adde6afb7a5..65d2e2d7da1dcb5e2044db5943bfe226dfff3943 100644 (file)
--- a/src/zap.c
+++ b/src/zap.c
@@ -685,7 +685,7 @@ boolean by_hero;
     /* handle recorporealization of an active ghost */
     if (corpse->oxlth && corpse->oattached == OATTACHED_M_ID) {
        unsigned m_id;
-       struct monst *ghost, *mtmp2;
+       struct monst *ghost;
        struct obj *otmp;
 
        (void) memcpy((genericptr_t)&m_id,
@@ -702,11 +702,9 @@ boolean by_hero;
            }
            /* tame the revived monster if its ghost was tame */
            if (ghost->mtame && !mtmp->mtame) {
-               mtmp2 = tamedog(mtmp, (struct obj *)0);
-               if (mtmp2) {
+               if (tamedog(mtmp, (struct obj *)0)) {
                    /* ghost's edog data is ignored */
-                   mtmp2->mtame = ghost->mtame;
-                   mtmp = mtmp2;
+                   mtmp->mtame = ghost->mtame;
                }
            }
            /* was ghost, now alive, it's all very confusing */