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

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

    1: /*      $NetBSD: def.objclass.h,v 1.6 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_OBJCLASS_H_
   65: #define _DEF_OBJCLASS_H_
   66: /* definition of a class of objects */
   67: 
   68: struct objclass {
   69:         const char *oc_name;           /* actual name */
   70:         const char *oc_descr;          /* description when name unknown */
   71:         char *oc_uname;                /* called by user */
   72:         Bitfield(oc_name_known,1);
   73:         Bitfield(oc_merge,1);  /* merge otherwise equal objects */
   74:         char oc_olet;
   75:         schar oc_prob;         /* probability for mkobj() */
   76:         schar oc_delay;                /* delay when using such an object */
   77:         uchar oc_weight;
   78:         schar oc_oc1, oc_oc2;
   79:         int oc_oi;
   80: #define nutrition       oc_oi /* for foods */
   81: #define a_ac            oc_oc1    /* for armors - only used in ARM_BONUS */
   82: #define ARM_BONUS(obj)  ((10 - objects[obj->otyp].a_ac) + obj->spe)
   83: #define a_can           oc_oc2   /* for armors */
   84: #define bits            oc_oc1    /* for wands and rings */
   85:                                 /* wands */
   86: #define         NODIR          1
   87: #define         IMMEDIATE      2
   88: #define         RAY            4
   89:                                 /* rings */
   90: #define         SPEC           1        /* +n is meaningful */
   91: #define wldam           oc_oc1   /* for weapons and PICK_AXE */
   92: #define wsdam           oc_oc2   /* for weapons and PICK_AXE */
   93: #define g_val           oc_oi    /* for gems: value on exit */
   94: };
   95: 
   96: extern struct objclass objects[];
   97: 
   98: /* definitions of all object-symbols */
   99: 
  100: #define ILLOBJ_SYM      '\\'
  101: #define AMULET_SYM      '"'
  102: #define FOOD_SYM        '%'
  103: #define WEAPON_SYM      ')'
  104: #define TOOL_SYM        '('
  105: #define BALL_SYM        '0'
  106: #define CHAIN_SYM       '_'
  107: #define ROCK_SYM        '`'
  108: #define ARMOR_SYM       '['
  109: #define POTION_SYM      '!'
  110: #define SCROLL_SYM      '?'
  111: #define WAND_SYM        '/'
  112: #define RING_SYM        '='
  113: #define GEM_SYM         '*'
  114: /* Other places with explicit knowledge of object symbols:
  115:  * ....shk.c:   char shtypes[] = "=/)%?![";
  116:  * mklev.c:     "=/)%?![<>"
  117:  * hack.mkobj.c:        char mkobjstr[] = "))[[!!!!????%%%%/=**";
  118:  * hack.apply.c:   otmp = getobj("0#%", "put in");
  119:  * hack.eat.c:     otmp = getobj("%", "eat");
  120:  * hack.invent.c:          if(index("!%?[)=*(0/\"", sym)){
  121:  * hack.invent.c:    || index("%?!*",otmp->olet))){
  122:  */
  123: #endif /* _DEF_OBJCLASS_H_ */
Syntax (Markdown)