
1: /* $NetBSD: def.monst.h,v 1.7 2003/04/02 18:36:34 jsm Exp $ */ 2: 3: /* 4: * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica, 5: * Amsterdam 6: * All rights reserved. 7: * 8: * Redistribution and use in source and binary forms, with or without 9: * modification, are permitted provided that the following conditions are 10: * met: 11: * 12: * - Redistributions of source code must retain the above copyright notice, 13: * this list of conditions and the following disclaimer. 14: * 15: * - Redistributions in binary form must reproduce the above copyright 16: * notice, this list of conditions and the following disclaimer in the 17: * documentation and/or other materials provided with the distribution. 18: * 19: * - Neither the name of the Stichting Centrum voor Wiskunde en 20: * Informatica, nor the names of its contributors may be used to endorse or 21: * promote products derived from this software without specific prior 22: * written permission. 23: * 24: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 25: * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 26: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 27: * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 28: * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 29: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 30: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 31: * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 32: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 33: * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 34: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35: */ 36: 37: /* 38: * Copyright (c) 1982 Jay Fenlason <hack@gnu.org> 39: * All rights reserved. 40: * 41: * Redistribution and use in source and binary forms, with or without 42: * modification, are permitted provided that the following conditions 43: * are met: 44: * 1. Redistributions of source code must retain the above copyright 45: * notice, this list of conditions and the following disclaimer. 46: * 2. Redistributions in binary form must reproduce the above copyright 47: * notice, this list of conditions and the following disclaimer in the 48: * documentation and/or other materials provided with the distribution. 49: * 3. The name of the author may not be used to endorse or promote products 50: * derived from this software without specific prior written permission. 51: * 52: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 53: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 54: * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 55: * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 56: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 57: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 58: * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 59: * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 60: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 61: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 62: */ 63: 64: #ifndef _DEF_MONST_H_ 65: #define _DEF_MONST_H_ 66: struct monst { 67: struct monst *nmon; 68: const struct permonst *data; 69: unsigned m_id; 70: xchar mx,my; 71: xchar mdx,mdy; /* if mdispl then pos where last displayed */ 72: #define MTSZ 4 73: coord mtrack[MTSZ]; /* monster track */ 74: schar mhp,mhpmax; 75: char mappearance; /* nonzero for undetected 'M's and for '1's */ 76: Bitfield(mimic,1); /* undetected mimic */ 77: Bitfield(mdispl,1); /* mdx,mdy valid */ 78: Bitfield(minvis,1); /* invisible */ 79: Bitfield(cham,1); /* shape-changer */ 80: Bitfield(mhide,1); /* hides beneath objects */ 81: Bitfield(mundetected,1); /* not seen in present hiding place */ 82: Bitfield(mspeed,2); 83: Bitfield(msleep,1); 84: Bitfield(mfroz,1); 85: Bitfield(mconf,1); 86: Bitfield(mflee,1); /* fleeing */ 87: Bitfield(mfleetim,7); /* timeout for mflee */ 88: Bitfield(mcan,1); /* has been cancelled */ 89: Bitfield(mtame,1); /* implies peaceful */ 90: Bitfield(mpeaceful,1); /* does not attack unprovoked */ 91: Bitfield(isshk,1); /* is shopkeeper */ 92: Bitfield(isgd,1); /* is guard */ 93: Bitfield(mcansee,1); /* cansee 1, temp.blinded 0, blind 0 */ 94: Bitfield(mblinded,7); /* cansee 0, temp.blinded n, blind 0 */ 95: Bitfield(mtrapped,1); /* trapped in a pit or bear trap */ 96: Bitfield(mnamelth,6); /* length of name (following mxlth) */ 97: #ifndef NOWORM 98: Bitfield(wormno,5); /* at most 31 worms on any level */ 99: #endif /* NOWORM */ 100: unsigned mtrapseen; /* bitmap of traps we've been trapped in */ 101: long mlstmv; /* prevent two moves at once */ 102: struct obj *minvent; 103: long mgold; 104: unsigned mxlth; /* length of following data */ 105: /* in order to prevent alignment problems mextra should 106: be (or follow) a long int */ 107: long mextra[1]; /* monster dependent info */ 108: }; 109: 110: #define newmonst(xl) (struct monst *) alloc((unsigned)(xl) + sizeof(struct monst)) 111: 112: extern struct monst *fmon; 113: extern struct monst *fallen_down; 114: 115: /* these are in mspeed */ 116: #define MSLOW 1 /* slow monster */ 117: #define MFAST 2 /* speeded monster */ 118: 119: #define NAME(mtmp) (((char *) mtmp->mextra) + mtmp->mxlth) 120: #define MREGEN "TVi1" 121: #define UNDEAD "ZVW " 122: #endif /* _DEF_MONST_H_ */