Below is the full text to include/permonst.h from NetHack 3.4.3. To link to a particular line, write [[permonst.h#line123]], for example.
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.
The NetHack General Public License applies to screenshots, source code and other content from NetHack. |
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 */