
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_ */