abstract
| - Below is the full text to def.monst.h from the source code of Hack 1.0. To link to a particular line, write [[Hack 1.0/def.monst.h#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1984. */ 2. 3. struct monst { 4. struct monst *nmon; 5. struct permonst *data; 6. unsigned m_id; 7. xchar mx,my; 8. xchar mdx,mdy; /* if mdispl then pos where last displayed */ 9. #define MTSZ 4 10. coord mtrack[MTSZ]; /* monster track */ 11. schar mhp,orig_hp; 12. char mimic; /* undetected mimic - this is its symbol */ 13. Bitfield(mdispl,1); /* mdx,mdy valid */ 14. Bitfield(minvis,1); /* invisible */ 15. Bitfield(cham,1); /* shape-changer */ 16. Bitfield(mhide,1); /* hides beneath objects */ 17. Bitfield(mundetected,1); /* not seen in present hiding place */ 18. Bitfield(mspeed,2); 19. Bitfield(msleep,1); 20. Bitfield(mfroz,1); 21. Bitfield(mconf,1); 22. Bitfield(mflee,1); 23. Bitfield(mcan,1); /* has been cancelled */ 24. Bitfield(mtame,1); /* implies peaceful */ 25. Bitfield(mpeaceful,1); /* does not attack unprovoked */ 26. Bitfield(isshk,1); /* is shopkeeper */ 27. Bitfield(isgd,1); /* is guard */ 28. Bitfield(mcansee,1); /* cansee 1, temp.blinded 0, blind 0 */ 29. Bitfield(mblinded,7); /* cansee 0, temp.blinded n, blind 0 */ 30. Bitfield(mtrapped,1); /* trapped in a pit or bear trap */ 31. Bitfield(mnamelth,6); /* length of name (following mxlth) */ 32. #ifndef NOWORM 33. Bitfield(wormno,5); /* at most 31 worms on any level */ 34. #endif NOWORM 35. unsigned mtrapseen; /* bitmap of traps we've been trapped in */ 36. long mlstmv; /* prevent two moves at once */ 37. struct obj *minvent; 38. long mgold; 39. unsigned mxlth; /* length of following data */ 40. /* in order to prevent alignment problems mextra should 41. be (or follow) a long int */ 42. long mextra[1]; /* monster dependent info */ 43. }; 44. 45. #define newmonst(xl) (struct monst *) alloc((unsigned)(xl) + sizeof(struct monst)) 46. 47. extern struct monst *fmon; 48. #ifndef MKLEV 49. extern struct monst *fallen_down; 50. #endif MKLEV 51. struct monst *m_at(); 52. 53. /* these are in mspeed */ 54. #define MSLOW 1 /* slow monster */ 55. #define MFAST 2 /* speeded monster */ 56. 57. #define NAME(mtmp) (((char *) mtmp->mextra) + mtmp->mxlth)
|