Source:NetHack 3.4.0/permonst.h

Below is the full text to permonst.h from the source code of NetHack 3.4.0. To link to a particular line, write [[NetHack 3.4.0/permonst.h#line123 ]], for example.

Warning! This is the source code from an old release. For the latest release, see Source code

1.   /*	SCCS Id: @(#)permonst.h 3.4	1999/07/02	*/ 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.    /* NetHack may be freely redistributed. See license for details. */ 4.     5.    #ifndef PERMONST_H 6.   #define PERMONST_H 7.    8.    /*	This structure covers all attack forms. 9.    *	aatyp is the gross attack type (eg. claw, bite, breath, ...) 10.   *	adtyp is the damage type (eg. physical, fire, cold, spell, ...) 11.   *	damn is the number of hit dice of damage from the attack. 12.   *	damd is the number of sides on each die. 13.   *  14.    *	Some attacks can do no points of damage. Additionally, some can 15.   *	have special effects *and* do damage as well. If damn and damd 16.   *	are set, they may have a special meaning. For example, if set 17.   *	for a blinding attack, they determine the amount of time blinded. 18.   */  19.    20.   struct attack { 21.  	uchar		aatyp; 22.  	uchar		adtyp, damn, damd; 23.  };  24.    25.   /*	Max # of attacks for any given monster. 26.   */  27.    28.   #define NATTK		6 29.   30.   /*	Weight of a human body 31.   */  32.    33.   #define WT_HUMAN	1450 34.   35.   #ifndef ALIGN_H 36.  #include "align.h"  37. #endif 38.  #include "monattk.h"  39. #include "monflag.h" 40. 41.  struct permonst { 42.  	const char	*mname;			/* full name */ 43.  	char		mlet;			/* symbol */ 44.  	schar		mlevel,			/* base monster level */ 45.  			mmove,			/* move speed */ 46.  			ac,			/* (base) armor class */ 47.  			mr;			/* (base) magic resistance */ 48.  	aligntyp	maligntyp;		/* basic monster alignment */ 49.  	unsigned short	geno;			/* creation/geno mask value */ 50.  	struct	attack	mattk[NATTK];		/* attacks matrix */ 51.  	unsigned short	cwt,			/* weight of corpse */ 52.  			cnutrit;		/* its nutritional value */ 53.  	short		pxlth;			/* length of extension */ 54.  	uchar		msound;			/* noise it makes (6 bits) */ 55.  	uchar		msize;			/* physical size (3 bits) */ 56.  	uchar		mresists;		/* resistances */ 57.  	uchar		mconveys;		/* conveyed by eating */ 58.  	unsigned long	mflags1,		/* boolean bitflags */ 59.  			mflags2;		/* more boolean bitflags */ 60.  	unsigned short	mflags3;		/* yet more boolean bitflags */ 61.  # ifdef TEXTCOLOR 62.  	uchar		mcolor;			/* color to use */ 63.  # endif 64.  };  65.    66.   extern NEARDATA struct permonst 67.  		mons[];		/* the master list of monster types */ 68.   69.   #define VERY_SLOW 3 70.  #define SLOW_SPEED 9 71.  #define NORMAL_SPEED 12 /* movement rates */ 72.  #define FAST_SPEED 15 73.  #define VERY_FAST 24 74.   75.   #define NON_PM		PM_PLAYERMON		/* "not a monster" */ 76.  #define LOW_PM		(NON_PM+1)		/* first monster in mons[] */ 77.  #define SPECIAL_PM	PM_LONG_WORM_TAIL	/* [normal] < ~ < [special] */ 78.  	/* mons[SPECIAL_PM] through mons[NUMMONS-1], inclusive, are 79.  	   never generated randomly and cannot be polymorphed into */ 80.   81.   #endif /* PERMONST_H */