(linenum→info "unix/slp.c:2238")

bsd-games/2.17/hack/def.monst.h

    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_ */
Syntax (Markdown)