Wikihack
Advertisement

Below is the full text to permonst.h from the source code of SLASH'EM 0.0.7E7F2. To link to a particular line, write [[SLASH'EM 0.0.7E7F2/permonst.h#line123]], for example.

The latest source code for vanilla NetHack is at Source code.


The NetHack General Public License applies to screenshots, source code and other content from NetHack.
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.           unsigned long   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 */
Advertisement